@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,35 +1,9 @@
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.filter.js");
6
- require("core-js/modules/es.array.from.js");
7
- require("core-js/modules/es.array.iterator.js");
8
- require("core-js/modules/es.array.slice.js");
9
- require("core-js/modules/es.object.get-own-property-descriptors.js");
10
- require("core-js/modules/es.regexp.exec.js");
11
- require("core-js/modules/es.regexp.to-string.js");
12
- require("core-js/modules/web.dom-collections.iterator.js");
13
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
14
3
  Object.defineProperty(exports, "__esModule", {
15
4
  value: true
16
5
  });
17
6
  exports.default = exports.WatchableTableKeys = void 0;
18
- require("core-js/modules/es.array.find.js");
19
- require("core-js/modules/es.array.includes.js");
20
- require("core-js/modules/es.object.to-string.js");
21
- require("core-js/modules/es.string.includes.js");
22
- require("core-js/modules/web.dom-collections.for-each.js");
23
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
24
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
25
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
26
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
27
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
28
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
29
- var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
30
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
31
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
32
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
33
7
  var _table_core = require("../../shared/models/table_core");
34
8
  var _error_utils = require("../../shared/error_utils");
35
9
  var _private_utils = require("../../shared/private_utils");
@@ -39,18 +13,15 @@ var _field = _interopRequireDefault(require("./field"));
39
13
  var _table_or_view_query_result = _interopRequireDefault(require("./table_or_view_query_result"));
40
14
  var _view = _interopRequireDefault(require("./view"));
41
15
  var _object_pool = _interopRequireDefault(require("./object_pool"));
42
- 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; } } }; }
43
- 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; } }
44
- 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; }
45
- 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)); }
46
- function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
47
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
48
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /** @module @airtable/blocks/models: Table */ /** */
16
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
17
+ /** @module @airtable/blocks/models: Table */ /** */
18
+
49
19
  // This doesn't follow our enum naming conventions because we want the keys
50
20
  // to mirror the method/getter names on the model class.
51
- var WatchableTableKeys = exports.WatchableTableKeys = Object.freeze(_objectSpread(_objectSpread({}, _table_core.WatchableTableKeysCore), {}, {
21
+ const WatchableTableKeys = exports.WatchableTableKeys = Object.freeze({
22
+ ..._table_core.WatchableTableKeysCore,
52
23
  views: 'views'
53
- }));
24
+ });
54
25
 
55
26
  /**
56
27
  * A key in {@link Table} that can be watched.
@@ -59,610 +30,491 @@ var WatchableTableKeys = exports.WatchableTableKeys = Object.freeze(_objectSprea
59
30
  * - `fields`
60
31
  * - `views`
61
32
  */
33
+
62
34
  /**
63
35
  * Model class representing a table. Every {@link Base} has one or more tables.
64
36
  *
65
37
  * @docsPath models/Table
66
38
  */
67
- var Table = /*#__PURE__*/function (_TableCore) {
39
+ class Table extends _table_core.TableCore {
40
+ /** @internal */
41
+ static _className = 'Table';
68
42
  /** @internal */
69
- function Table(parentBase, recordStore, tableId, sdk) {
70
- var _this;
71
- (0, _classCallCheck2.default)(this, Table);
72
- _this = _callSuper(this, Table, [parentBase, recordStore, tableId, sdk]);
73
- /** @internal */
74
- (0, _defineProperty2.default)(_this, "_viewModelsById", void 0);
75
- /** @internal */
76
- (0, _defineProperty2.default)(_this, "__tableOrViewQueryResultPool", void 0);
77
- _this._viewModelsById = {}; // View instances are lazily created by getViewById.
78
- _this.__tableOrViewQueryResultPool = new _object_pool.default(_table_or_view_query_result.default);
79
- return _this;
43
+ static _isWatchableKey(key) {
44
+ return (0, _private_utils.isEnumValue)(WatchableTableKeys, key);
80
45
  }
46
+ /** @internal */
81
47
 
82
48
  /** @internal */
83
- (0, _inherits2.default)(Table, _TableCore);
84
- return (0, _createClass2.default)(Table, [{
85
- key: "_constructField",
86
- value: function _constructField(fieldId) {
87
- return new _field.default(this.parentBase.__sdk, this, fieldId);
88
- }
89
49
 
90
- /**
91
- * The URL for the table. You can visit this URL in the browser to be taken to the table in the Airtable UI.
92
- *
93
- * @example
94
- * ```js
95
- * console.log(myTable.url);
96
- * // => 'https://airtable.com/appxxxxxxxxxxxxxx/tblxxxxxxxxxxxxxx'
97
- * ```
98
- */
99
- }, {
100
- key: "url",
101
- get: function get() {
102
- return this._sdk.__airtableInterface.urlConstructor.getTableUrl(this.id);
103
- }
50
+ /** @internal */
51
+ constructor(parentBase, recordStore, tableId, sdk) {
52
+ super(parentBase, recordStore, tableId, sdk);
53
+ this._viewModelsById = {}; // View instances are lazily created by getViewById.
54
+ this.__tableOrViewQueryResultPool = new _object_pool.default(_table_or_view_query_result.default);
55
+ }
104
56
 
105
- // Experimental, do not document yet. Allows fetching default cell values for
106
- // a table or view. Before documenting, we should explore making this synchronous.
107
- /**
108
- * @internal
109
- */
110
- // istanbul ignore next
111
- }, {
112
- key: "getDefaultCellValuesByFieldIdAsync",
113
- value: function () {
114
- var _getDefaultCellValuesByFieldIdAsync = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(opts) {
115
- var viewId, cellValuesByFieldId;
116
- return _regenerator.default.wrap(function _callee$(_context) {
117
- while (1) switch (_context.prev = _context.next) {
118
- case 0:
119
- viewId = opts && opts.view ? opts.view.id : null;
120
- _context.next = 3;
121
- return this._sdk.__airtableInterface.fetchDefaultCellValuesByFieldIdAsync(this._id, viewId);
122
- case 3:
123
- cellValuesByFieldId = _context.sent;
124
- return _context.abrupt("return", cellValuesByFieldId);
125
- case 5:
126
- case "end":
127
- return _context.stop();
128
- }
129
- }, _callee, this);
130
- }));
131
- function getDefaultCellValuesByFieldIdAsync(_x) {
132
- return _getDefaultCellValuesByFieldIdAsync.apply(this, arguments);
57
+ /** @internal */
58
+ _constructField(fieldId) {
59
+ return new _field.default(this.parentBase.__sdk, this, fieldId);
60
+ }
61
+
62
+ /**
63
+ * The URL for the table. You can visit this URL in the browser to be taken to the table in the Airtable UI.
64
+ *
65
+ * @example
66
+ * ```js
67
+ * console.log(myTable.url);
68
+ * // => 'https://airtable.com/appxxxxxxxxxxxxxx/tblxxxxxxxxxxxxxx'
69
+ * ```
70
+ */
71
+ get url() {
72
+ return this._sdk.__airtableInterface.urlConstructor.getTableUrl(this.id);
73
+ }
74
+
75
+ // Experimental, do not document yet. Allows fetching default cell values for
76
+ // a table or view. Before documenting, we should explore making this synchronous.
77
+ /**
78
+ * @internal
79
+ */
80
+ // istanbul ignore next
81
+ async getDefaultCellValuesByFieldIdAsync(opts) {
82
+ const viewId = opts && opts.view ? opts.view.id : null;
83
+ const cellValuesByFieldId = await this._sdk.__airtableInterface.fetchDefaultCellValuesByFieldIdAsync(this._id, viewId);
84
+ return cellValuesByFieldId;
85
+ }
86
+
87
+ /**
88
+ * The views in this table. Can be watched to know when views are created,
89
+ * deleted, or reordered.
90
+ *
91
+ * @example
92
+ * ```js
93
+ * console.log(`This table has ${myTable.views.length} views`);
94
+ * ```
95
+ */
96
+ get views() {
97
+ // TODO(kasra): cache and freeze this so it isn't O(n)
98
+ const views = [];
99
+ this._data.viewOrder.forEach(viewId => {
100
+ const view = this.getViewById(viewId);
101
+ views.push(view);
102
+ });
103
+ return views;
104
+ }
105
+ /**
106
+ * Gets the view matching the given ID, or `null` if that view does not exist in this table.
107
+ *
108
+ * @param viewId The ID of the view.
109
+ * @example
110
+ * ```js
111
+ * const viewId = 'viwxxxxxxxxxxxxxx';
112
+ * const view = myTable.getViewByIdIfExists(viewId);
113
+ * if (view !== null) {
114
+ * console.log(view.name);
115
+ * } else {
116
+ * console.log('No view exists with that ID');
117
+ * }
118
+ * ```
119
+ */
120
+ getViewByIdIfExists(viewId) {
121
+ if (!this._data.viewsById[viewId]) {
122
+ return null;
123
+ } else {
124
+ if (!this._viewModelsById[viewId]) {
125
+ this._viewModelsById[viewId] = new _view.default(this._sdk, this, this._recordStore.getViewDataStore(viewId), viewId);
133
126
  }
134
- return getDefaultCellValuesByFieldIdAsync;
135
- }()
136
- /**
137
- * The views in this table. Can be watched to know when views are created,
138
- * deleted, or reordered.
139
- *
140
- * @example
141
- * ```js
142
- * console.log(`This table has ${myTable.views.length} views`);
143
- * ```
144
- */
145
- }, {
146
- key: "views",
147
- get: function get() {
148
- // TODO(kasra): cache and freeze this so it isn't O(n)
149
- var views = [];
150
- this._data.viewOrder.forEach(viewId => {
151
- var view = this.getViewById(viewId);
152
- views.push(view);
153
- });
154
- return views;
127
+ return this._viewModelsById[viewId];
155
128
  }
156
- /**
157
- * Gets the view matching the given ID, or `null` if that view does not exist in this table.
158
- *
159
- * @param viewId The ID of the view.
160
- * @example
161
- * ```js
162
- * const viewId = 'viwxxxxxxxxxxxxxx';
163
- * const view = myTable.getViewByIdIfExists(viewId);
164
- * if (view !== null) {
165
- * console.log(view.name);
166
- * } else {
167
- * console.log('No view exists with that ID');
168
- * }
169
- * ```
170
- */
171
- }, {
172
- key: "getViewByIdIfExists",
173
- value: function getViewByIdIfExists(viewId) {
174
- if (!this._data.viewsById[viewId]) {
175
- return null;
176
- } else {
177
- if (!this._viewModelsById[viewId]) {
178
- this._viewModelsById[viewId] = new _view.default(this._sdk, this, this._recordStore.getViewDataStore(viewId), viewId);
179
- }
180
- return this._viewModelsById[viewId];
181
- }
129
+ }
130
+ /**
131
+ * Gets the view matching the given ID. Throws if that view does not exist in this table. Use
132
+ * {@link getViewByIdIfExists} instead if you are unsure whether a view exists with the given
133
+ * ID.
134
+ *
135
+ * @param viewId The ID of the view.
136
+ * @example
137
+ * ```js
138
+ * const viewId = 'viwxxxxxxxxxxxxxx';
139
+ * const view = myTable.getViewById(viewId);
140
+ * console.log(view.name);
141
+ * // => 'Grid view'
142
+ * ```
143
+ */
144
+ getViewById(viewId) {
145
+ const view = this.getViewByIdIfExists(viewId);
146
+ if (!view) {
147
+ throw (0, _error_utils.spawnError)("No view with ID %s in table '%s'", viewId, this.name);
182
148
  }
183
- /**
184
- * Gets the view matching the given ID. Throws if that view does not exist in this table. Use
185
- * {@link getViewByIdIfExists} instead if you are unsure whether a view exists with the given
186
- * ID.
187
- *
188
- * @param viewId The ID of the view.
189
- * @example
190
- * ```js
191
- * const viewId = 'viwxxxxxxxxxxxxxx';
192
- * const view = myTable.getViewById(viewId);
193
- * console.log(view.name);
194
- * // => 'Grid view'
195
- * ```
196
- */
197
- }, {
198
- key: "getViewById",
199
- value: function getViewById(viewId) {
200
- var view = this.getViewByIdIfExists(viewId);
201
- if (!view) {
202
- throw (0, _error_utils.spawnError)("No view with ID %s in table '%s'", viewId, this.name);
149
+ return view;
150
+ }
151
+ /**
152
+ * Gets the view matching the given name, or `null` if no view exists with that name in this
153
+ * table.
154
+ *
155
+ * @param viewName The name of the view you're looking for.
156
+ * @example
157
+ * ```js
158
+ * const view = myTable.getViewByNameIfExists('Name');
159
+ * if (view !== null) {
160
+ * console.log(view.id);
161
+ * } else {
162
+ * console.log('No view exists with that name');
163
+ * }
164
+ * ```
165
+ */
166
+ getViewByNameIfExists(viewName) {
167
+ for (const [viewId, viewData] of (0, _private_utils.entries)(this._data.viewsById)) {
168
+ if (viewData.name === viewName) {
169
+ return this.getViewByIdIfExists(viewId);
203
170
  }
204
- return view;
205
171
  }
206
- /**
207
- * Gets the view matching the given name, or `null` if no view exists with that name in this
208
- * table.
209
- *
210
- * @param viewName The name of the view you're looking for.
211
- * @example
212
- * ```js
213
- * const view = myTable.getViewByNameIfExists('Name');
214
- * if (view !== null) {
215
- * console.log(view.id);
216
- * } else {
217
- * console.log('No view exists with that name');
218
- * }
219
- * ```
220
- */
221
- }, {
222
- key: "getViewByNameIfExists",
223
- value: function getViewByNameIfExists(viewName) {
224
- var _iterator = _createForOfIteratorHelper((0, _private_utils.entries)(this._data.viewsById)),
225
- _step;
226
- try {
227
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
228
- var _step$value = (0, _slicedToArray2.default)(_step.value, 2),
229
- viewId = _step$value[0],
230
- viewData = _step$value[1];
231
- if (viewData.name === viewName) {
232
- return this.getViewByIdIfExists(viewId);
233
- }
234
- }
235
- } catch (err) {
236
- _iterator.e(err);
237
- } finally {
238
- _iterator.f();
239
- }
240
- return null;
172
+ return null;
173
+ }
174
+ /**
175
+ * Gets the view matching the given name. Throws if no view exists with that name in this table.
176
+ * Use {@link getViewByNameIfExists} instead if you are unsure whether a view exists with the
177
+ * given name.
178
+ *
179
+ * @param viewName The name of the view you're looking for.
180
+ * @example
181
+ * ```js
182
+ * const view = myTable.getViewByName('Name');
183
+ * console.log(view.id);
184
+ * // => 'viwxxxxxxxxxxxxxx'
185
+ * ```
186
+ */
187
+ getViewByName(viewName) {
188
+ const view = this.getViewByNameIfExists(viewName);
189
+ if (!view) {
190
+ throw (0, _error_utils.spawnError)("No view named '%s' in table '%s'", viewName, this.name);
241
191
  }
242
- /**
243
- * Gets the view matching the given name. Throws if no view exists with that name in this table.
244
- * Use {@link getViewByNameIfExists} instead if you are unsure whether a view exists with the
245
- * given name.
246
- *
247
- * @param viewName The name of the view you're looking for.
248
- * @example
249
- * ```js
250
- * const view = myTable.getViewByName('Name');
251
- * console.log(view.id);
252
- * // => 'viwxxxxxxxxxxxxxx'
253
- * ```
254
- */
255
- }, {
256
- key: "getViewByName",
257
- value: function getViewByName(viewName) {
258
- var view = this.getViewByNameIfExists(viewName);
259
- if (!view) {
260
- throw (0, _error_utils.spawnError)("No view named '%s' in table '%s'", viewName, this.name);
261
- }
262
- return view;
192
+ return view;
193
+ }
194
+ /**
195
+ * The view matching the given ID or name. Returns `null` if no matching view exists within
196
+ * this table.
197
+ *
198
+ * This method is convenient when building an extension for a specific base, but for more generic
199
+ * extensions the best practice is to use the {@link getViewByIdIfExists} or
200
+ * {@link getViewByNameIfExists} methods instead.
201
+ *
202
+ * @param viewIdOrName The ID or name of the view you're looking for.
203
+ */
204
+ getViewIfExists(viewIdOrName) {
205
+ return this.getViewByIdIfExists(viewIdOrName) ?? this.getViewByNameIfExists(viewIdOrName);
206
+ }
207
+ /**
208
+ * The view matching the given ID or name. Throws if no matching view exists within this table.
209
+ * Use {@link getViewIfExists} instead if you are unsure whether a view exists with the given
210
+ * name/ID.
211
+ *
212
+ * This method is convenient when building an extension for a specific base, but for more generic
213
+ * extensions the best practice is to use the {@link getViewById} or {@link getViewByName} methods
214
+ * instead.
215
+ *
216
+ * @param viewIdOrName The ID or name of the view you're looking for.
217
+ */
218
+ getView(viewIdOrName) {
219
+ const view = this.getViewIfExists(viewIdOrName);
220
+ if (!view) {
221
+ throw (0, _error_utils.spawnError)("No view with ID or name '%s' in table '%s'", viewIdOrName, this.name);
263
222
  }
264
- /**
265
- * The view matching the given ID or name. Returns `null` if no matching view exists within
266
- * this table.
267
- *
268
- * This method is convenient when building an extension for a specific base, but for more generic
269
- * extensions the best practice is to use the {@link getViewByIdIfExists} or
270
- * {@link getViewByNameIfExists} methods instead.
271
- *
272
- * @param viewIdOrName The ID or name of the view you're looking for.
273
- */
274
- }, {
275
- key: "getViewIfExists",
276
- value: function getViewIfExists(viewIdOrName) {
277
- var _this$getViewByIdIfEx;
278
- return (_this$getViewByIdIfEx = this.getViewByIdIfExists(viewIdOrName)) !== null && _this$getViewByIdIfEx !== void 0 ? _this$getViewByIdIfEx : this.getViewByNameIfExists(viewIdOrName);
223
+ return view;
224
+ }
225
+ /**
226
+ * Select records from the table. Returns a {@link RecordQueryResult}.
227
+ *
228
+ * Consider using {@link useRecords} or {@link useRecordIds} instead, unless you need the
229
+ * features of a QueryResult (e.g. `queryResult.getRecordById`). Record hooks handle
230
+ * loading/unloading and updating your UI automatically, but manually `select`ing records is
231
+ * useful for one-off data processing.
232
+ *
233
+ * @param opts Options for the query, such as sorts and fields.
234
+ * @example
235
+ * ```js
236
+ * import {useBase, useRecords} from '@airtable/blocks/base/ui';
237
+ * import React from 'react';
238
+ *
239
+ * function TodoList() {
240
+ * const base = useBase();
241
+ * const table = base.getTableByName('Tasks');
242
+ *
243
+ * const queryResult = table.selectRecords();
244
+ * const records = useRecords(queryResult);
245
+ *
246
+ * return (
247
+ * <ul>
248
+ * {records.map(record => (
249
+ * <li key={record.id}>
250
+ * {record.name || 'Unnamed record'}
251
+ * </li>
252
+ * ))}
253
+ * </ul>
254
+ * );
255
+ * }
256
+ * ```
257
+ */
258
+ selectRecords(opts) {
259
+ const normalizedOpts = _record_query_result.default._normalizeOpts(this, this._recordStore, opts || {});
260
+ return this.__tableOrViewQueryResultPool.getObjectForReuse(this._sdk, this, normalizedOpts);
261
+ }
262
+ /**
263
+ * Select and load records from the table. Returns a {@link RecordQueryResult} promise where
264
+ * record data has been loaded.
265
+ *
266
+ * Consider using {@link useRecords} or {@link useRecordIds} instead, unless you need the
267
+ * features of a QueryResult (e.g. `queryResult.getRecordById`). Record hooks handle
268
+ * loading/unloading and updating your UI automatically, but manually `select`ing records is
269
+ * useful for one-off data processing.
270
+ *
271
+ * Once you've finished with your query, remember to call `queryResult.unloadData()`.
272
+ *
273
+ * @param opts Options for the query, such as sorts and fields.
274
+ * @example
275
+ * ```js
276
+ * async function logRecordCountAsync(table) {
277
+ * const query = await table.selectRecordsAsync();
278
+ * console.log(query.recordIds.length);
279
+ * query.unloadData();
280
+ * }
281
+ * ```
282
+ */
283
+ async selectRecordsAsync(opts) {
284
+ const queryResult = this.selectRecords(opts);
285
+ await queryResult.loadDataAsync();
286
+ return queryResult;
287
+ }
288
+ /**
289
+ * Returns the first view in the table where the type is one of `allowedViewTypes`, or `null` if
290
+ * no such view exists in the table.
291
+ *
292
+ * @param allowedViewTypes An array of view types or a single view type to match against.
293
+ * @param preferredViewOrViewId If a view or view ID is supplied and that view exists & has the
294
+ * correct type, that view will be returned before checking the other views in the table.
295
+ * @example
296
+ * ```js
297
+ * import {ViewType} from '@airtable/blocks/base/models';
298
+ * const firstCalendarView = myTable.getFirstViewOfType(ViewType.CALENDAR);
299
+ * if (firstCalendarView !== null) {
300
+ * console.log(firstCalendarView.name);
301
+ * } else {
302
+ * console.log('No calendar views exist in the table');
303
+ * }
304
+ * ```
305
+ */
306
+ getFirstViewOfType(allowedViewTypes, preferredViewOrViewId) {
307
+ if (!Array.isArray(allowedViewTypes)) {
308
+ allowedViewTypes = (0, _private_utils.cast)([allowedViewTypes]);
279
309
  }
280
- /**
281
- * The view matching the given ID or name. Throws if no matching view exists within this table.
282
- * Use {@link getViewIfExists} instead if you are unsure whether a view exists with the given
283
- * name/ID.
284
- *
285
- * This method is convenient when building an extension for a specific base, but for more generic
286
- * extensions the best practice is to use the {@link getViewById} or {@link getViewByName} methods
287
- * instead.
288
- *
289
- * @param viewIdOrName The ID or name of the view you're looking for.
290
- */
291
- }, {
292
- key: "getView",
293
- value: function getView(viewIdOrName) {
294
- var view = this.getViewIfExists(viewIdOrName);
295
- if (!view) {
296
- throw (0, _error_utils.spawnError)("No view with ID or name '%s' in table '%s'", viewIdOrName, this.name);
310
+ if (preferredViewOrViewId) {
311
+ const preferredView = this.getViewByIdIfExists(typeof preferredViewOrViewId === 'string' ? preferredViewOrViewId : preferredViewOrViewId.id);
312
+ if (preferredView && allowedViewTypes.includes(preferredView.type)) {
313
+ return preferredView;
297
314
  }
298
- return view;
299
315
  }
300
- /**
301
- * Select records from the table. Returns a {@link RecordQueryResult}.
302
- *
303
- * Consider using {@link useRecords} or {@link useRecordIds} instead, unless you need the
304
- * features of a QueryResult (e.g. `queryResult.getRecordById`). Record hooks handle
305
- * loading/unloading and updating your UI automatically, but manually `select`ing records is
306
- * useful for one-off data processing.
307
- *
308
- * @param opts Options for the query, such as sorts and fields.
309
- * @example
310
- * ```js
311
- * import {useBase, useRecords} from '@airtable/blocks/base/ui';
312
- * import React from 'react';
313
- *
314
- * function TodoList() {
315
- * const base = useBase();
316
- * const table = base.getTableByName('Tasks');
317
- *
318
- * const queryResult = table.selectRecords();
319
- * const records = useRecords(queryResult);
320
- *
321
- * return (
322
- * <ul>
323
- * {records.map(record => (
324
- * <li key={record.id}>
325
- * {record.name || 'Unnamed record'}
326
- * </li>
327
- * ))}
328
- * </ul>
329
- * );
330
- * }
331
- * ```
332
- */
333
- }, {
334
- key: "selectRecords",
335
- value: function selectRecords(opts) {
336
- var normalizedOpts = _record_query_result.default._normalizeOpts(this, this._recordStore, opts || {});
337
- return this.__tableOrViewQueryResultPool.getObjectForReuse(this._sdk, this, normalizedOpts);
338
- }
339
- /**
340
- * Select and load records from the table. Returns a {@link RecordQueryResult} promise where
341
- * record data has been loaded.
342
- *
343
- * Consider using {@link useRecords} or {@link useRecordIds} instead, unless you need the
344
- * features of a QueryResult (e.g. `queryResult.getRecordById`). Record hooks handle
345
- * loading/unloading and updating your UI automatically, but manually `select`ing records is
346
- * useful for one-off data processing.
347
- *
348
- * Once you've finished with your query, remember to call `queryResult.unloadData()`.
349
- *
350
- * @param opts Options for the query, such as sorts and fields.
351
- * @example
352
- * ```js
353
- * async function logRecordCountAsync(table) {
354
- * const query = await table.selectRecordsAsync();
355
- * console.log(query.recordIds.length);
356
- * query.unloadData();
357
- * }
358
- * ```
359
- */
360
- }, {
361
- key: "selectRecordsAsync",
362
- value: (function () {
363
- var _selectRecordsAsync = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(opts) {
364
- var queryResult;
365
- return _regenerator.default.wrap(function _callee2$(_context2) {
366
- while (1) switch (_context2.prev = _context2.next) {
367
- case 0:
368
- queryResult = this.selectRecords(opts);
369
- _context2.next = 3;
370
- return queryResult.loadDataAsync();
371
- case 3:
372
- return _context2.abrupt("return", queryResult);
373
- case 4:
374
- case "end":
375
- return _context2.stop();
376
- }
377
- }, _callee2, this);
378
- }));
379
- function selectRecordsAsync(_x2) {
380
- return _selectRecordsAsync.apply(this, arguments);
316
+ return this.views.find(view => {
317
+ return allowedViewTypes.includes(view.type);
318
+ }) ?? null;
319
+ }
320
+ /**
321
+ * @internal
322
+ */
323
+ __getViewMatching(viewOrViewIdOrViewName) {
324
+ let view;
325
+ if (viewOrViewIdOrViewName instanceof _view.default) {
326
+ if (viewOrViewIdOrViewName.parentTable.id !== this.id) {
327
+ throw (0, _error_utils.spawnError)("View '%s' is from a different table than table '%s'", viewOrViewIdOrViewName.name, this.name);
381
328
  }
382
- return selectRecordsAsync;
383
- }()
384
- /**
385
- * Returns the first view in the table where the type is one of `allowedViewTypes`, or `null` if
386
- * no such view exists in the table.
387
- *
388
- * @param allowedViewTypes An array of view types or a single view type to match against.
389
- * @param preferredViewOrViewId If a view or view ID is supplied and that view exists & has the
390
- * correct type, that view will be returned before checking the other views in the table.
391
- * @example
392
- * ```js
393
- * import {ViewType} from '@airtable/blocks/base/models';
394
- * const firstCalendarView = myTable.getFirstViewOfType(ViewType.CALENDAR);
395
- * if (firstCalendarView !== null) {
396
- * console.log(firstCalendarView.name);
397
- * } else {
398
- * console.log('No calendar views exist in the table');
399
- * }
400
- * ```
401
- */
402
- )
403
- }, {
404
- key: "getFirstViewOfType",
405
- value: function getFirstViewOfType(allowedViewTypes, preferredViewOrViewId) {
406
- var _this$views$find;
407
- if (!Array.isArray(allowedViewTypes)) {
408
- allowedViewTypes = (0, _private_utils.cast)([allowedViewTypes]);
329
+ view = viewOrViewIdOrViewName;
330
+ } else {
331
+ view = this.getViewByIdIfExists(viewOrViewIdOrViewName) || this.getViewByNameIfExists(viewOrViewIdOrViewName);
332
+ if (view === null) {
333
+ throw (0, _error_utils.spawnError)("View '%s' does not exist in table '%s'", viewOrViewIdOrViewName, this.name);
409
334
  }
410
- if (preferredViewOrViewId) {
411
- var preferredView = this.getViewByIdIfExists(typeof preferredViewOrViewId === 'string' ? preferredViewOrViewId : preferredViewOrViewId.id);
412
- if (preferredView && allowedViewTypes.includes(preferredView.type)) {
413
- return preferredView;
414
- }
415
- }
416
- return (_this$views$find = this.views.find(view => {
417
- return allowedViewTypes.includes(view.type);
418
- })) !== null && _this$views$find !== void 0 ? _this$views$find : null;
419
335
  }
420
- /**
421
- * @internal
422
- */
423
- }, {
424
- key: "__getViewMatching",
425
- value: function __getViewMatching(viewOrViewIdOrViewName) {
426
- var view;
427
- if (viewOrViewIdOrViewName instanceof _view.default) {
428
- if (viewOrViewIdOrViewName.parentTable.id !== this.id) {
429
- throw (0, _error_utils.spawnError)("View '%s' is from a different table than table '%s'", viewOrViewIdOrViewName.name, this.name);
430
- }
431
- view = viewOrViewIdOrViewName;
432
- } else {
433
- view = this.getViewByIdIfExists(viewOrViewIdOrViewName) || this.getViewByNameIfExists(viewOrViewIdOrViewName);
434
- if (view === null) {
435
- throw (0, _error_utils.spawnError)("View '%s' does not exist in table '%s'", viewOrViewIdOrViewName, this.name);
436
- }
437
- }
438
- if (view.isDeleted) {
439
- throw (0, _error_utils.spawnError)("View '%s' was deleted from table '%s'", view.name, this.name);
440
- }
441
- return view;
336
+ if (view.isDeleted) {
337
+ throw (0, _error_utils.spawnError)("View '%s' was deleted from table '%s'", view.name, this.name);
442
338
  }
339
+ return view;
340
+ }
443
341
 
444
- /**
445
- * Checks whether the current user has permission to create a field in this table.
446
- *
447
- * Accepts partial input, in the same format as {@link createFieldAsync}.
448
- *
449
- * Returns `{hasPermission: true}` if the current user can update the specified record,
450
- * `{hasPermission: false, reasonDisplayString: string}` otherwise. `reasonDisplayString` may be
451
- * used to display an error message to the user.
452
- *
453
- * @param name name for the field. must be case-insensitive unique for the table
454
- * @param type type for the field
455
- * @param options options for the field. omit for fields without writable options
456
- * @param description description for the field. omit to leave blank
457
- *
458
- * @example
459
- * ```js
460
- * const createFieldCheckResult = table.checkPermissionsForCreateField();
461
- *
462
- * if (!createFieldCheckResult.hasPermission) {
463
- * alert(createFieldCheckResult.reasonDisplayString);
464
- * }
465
- * ```
466
- */
467
- }, {
468
- key: "checkPermissionsForCreateField",
469
- value: function checkPermissionsForCreateField(name, type, options, description) {
470
- return this._sdk.__mutations.checkPermissionsForMutation({
471
- type: _mutations.MutationTypes.CREATE_SINGLE_FIELD,
472
- tableId: this.id,
473
- id: undefined,
474
- // Generated in createFieldAsync.
475
- name,
476
- config: type ? _objectSpread({
477
- type: type
478
- }, options ? {
342
+ /**
343
+ * Checks whether the current user has permission to create a field in this table.
344
+ *
345
+ * Accepts partial input, in the same format as {@link createFieldAsync}.
346
+ *
347
+ * Returns `{hasPermission: true}` if the current user can update the specified record,
348
+ * `{hasPermission: false, reasonDisplayString: string}` otherwise. `reasonDisplayString` may be
349
+ * used to display an error message to the user.
350
+ *
351
+ * @param name name for the field. must be case-insensitive unique for the table
352
+ * @param type type for the field
353
+ * @param options options for the field. omit for fields without writable options
354
+ * @param description description for the field. omit to leave blank
355
+ *
356
+ * @example
357
+ * ```js
358
+ * const createFieldCheckResult = table.checkPermissionsForCreateField();
359
+ *
360
+ * if (!createFieldCheckResult.hasPermission) {
361
+ * alert(createFieldCheckResult.reasonDisplayString);
362
+ * }
363
+ * ```
364
+ */
365
+ checkPermissionsForCreateField(name, type, options, description) {
366
+ return this._sdk.__mutations.checkPermissionsForMutation({
367
+ type: _mutations.MutationTypes.CREATE_SINGLE_FIELD,
368
+ tableId: this.id,
369
+ id: undefined,
370
+ // Generated in createFieldAsync.
371
+ name,
372
+ config: type ? {
373
+ type: type,
374
+ // In field.options we translate options to null when it's undefined (no options),
375
+ // but the mutation expects config to match the PublicApiConfig, where it's
376
+ // not present at all (options: undefined will fail validation).
377
+ ...(options ? {
479
378
  options
480
- } : null) : undefined,
481
- description
482
- });
483
- }
379
+ } : null)
380
+ } : undefined,
381
+ description
382
+ });
383
+ }
484
384
 
485
- /**
486
- * An alias for `checkPermissionsForCreateField(name, type, options, description).hasPermission`.
487
- *
488
- * Checks whether the current user has permission to create a field in this table.
489
- *
490
- * Accepts partial input, in the same format as {@link createFieldAsync}.
491
- *
492
- * @param name name for the field. must be case-insensitive unique for the table
493
- * @param type type for the field
494
- * @param options options for the field. omit for fields without writable options
495
- * @param description description for the field. omit to leave blank
496
- *
497
- * @example
498
- * ```js
499
- * const canCreateField = table.hasPermissionToCreateField();
500
- *
501
- * if (!canCreateField) {
502
- * alert('not allowed!');
503
- * }
504
- * ```
505
- */
506
- }, {
507
- key: "hasPermissionToCreateField",
508
- value: function hasPermissionToCreateField(name, type, options, description) {
509
- return this.checkPermissionsForCreateField(name, type, options, description).hasPermission;
510
- }
385
+ /**
386
+ * An alias for `checkPermissionsForCreateField(name, type, options, description).hasPermission`.
387
+ *
388
+ * Checks whether the current user has permission to create a field in this table.
389
+ *
390
+ * Accepts partial input, in the same format as {@link createFieldAsync}.
391
+ *
392
+ * @param name name for the field. must be case-insensitive unique for the table
393
+ * @param type type for the field
394
+ * @param options options for the field. omit for fields without writable options
395
+ * @param description description for the field. omit to leave blank
396
+ *
397
+ * @example
398
+ * ```js
399
+ * const canCreateField = table.hasPermissionToCreateField();
400
+ *
401
+ * if (!canCreateField) {
402
+ * alert('not allowed!');
403
+ * }
404
+ * ```
405
+ */
406
+ hasPermissionToCreateField(name, type, options, description) {
407
+ return this.checkPermissionsForCreateField(name, type, options, description).hasPermission;
408
+ }
511
409
 
512
- /**
513
- * Creates a new field.
514
- *
515
- * Similar to creating a field from the Airtable UI, the new field will not be visible
516
- * in views that have other hidden fields and views that are publicly shared.
517
- *
518
- * Throws an error if the user does not have permission to create a field, if invalid
519
- * name, type or options are provided, or if creating fields of this type is not supported.
520
- *
521
- * Refer to {@link FieldType} for supported field types, the write format for options, and
522
- * other specifics for certain field types.
523
- *
524
- * This action is asynchronous. Unlike new records, new fields are **not** created
525
- * optimistically locally. You must `await` the returned promise before using the new
526
- * field in your extension.
527
- *
528
- * @param name name for the field. must be case-insensitive unique
529
- * @param type type for the field
530
- * @param options options for the field. omit for fields without writable options
531
- * @param description description for the field. is optional and will be `''` if not specified
532
- * or if specified as `null`.
533
- *
534
- * @example
535
- * ```js
536
- * async function createNewSingleLineTextField(table, name) {
537
- * if (table.hasPermissionToCreateField(name, FieldType.SINGLE_LINE_TEXT)) {
538
- * await table.createFieldAsync(name, FieldType.SINGLE_LINE_TEXT);
539
- * }
540
- * }
541
- *
542
- * async function createNewCheckboxField(table, name) {
543
- * const options = {
544
- * icon: 'check',
545
- * color: 'greenBright',
546
- * };
547
- * if (table.hasPermissionToCreateField(name, FieldType.CHECKBOX, options)) {
548
- * await table.createFieldAsync(name, FieldType.CHECKBOX, options);
549
- * }
550
- * }
551
- *
552
- * async function createNewDateField(table, name) {
553
- * const options = {
554
- * dateFormat: {
555
- * name: 'iso',
556
- * },
557
- * };
558
- * if (table.hasPermissionToCreateField(name, FieldType.DATE, options)) {
559
- * await table.createFieldAsync(name, FieldType.DATE, options);
560
- * }
561
- * }
562
- * ```
563
- */
564
- }, {
565
- key: "createFieldAsync",
566
- value: (function () {
567
- var _createFieldAsync = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(name, type, options, description) {
568
- var fieldId;
569
- return _regenerator.default.wrap(function _callee3$(_context3) {
570
- while (1) switch (_context3.prev = _context3.next) {
571
- case 0:
572
- fieldId = this._sdk.__airtableInterface.idGenerator.generateFieldId();
573
- _context3.next = 3;
574
- return this._sdk.__mutations.applyMutationAsync({
575
- type: _mutations.MutationTypes.CREATE_SINGLE_FIELD,
576
- tableId: this.id,
577
- id: fieldId,
578
- name,
579
- config: _objectSpread({
580
- type: type
581
- }, options ? {
582
- options
583
- } : null),
584
- // Coerce undefined to null so that only old SDKs pass "undefined" for description
585
- // '' is permitted, as we already set empty descriptions to '' when editing descriptions
586
- // from the UI
587
- description: description !== null && description !== void 0 ? description : null
588
- });
589
- case 3:
590
- return _context3.abrupt("return", this.getFieldById(fieldId));
591
- case 4:
592
- case "end":
593
- return _context3.stop();
594
- }
595
- }, _callee3, this);
596
- }));
597
- function createFieldAsync(_x3, _x4, _x5, _x6) {
598
- return _createFieldAsync.apply(this, arguments);
599
- }
600
- return createFieldAsync;
601
- }() /** @internal */)
602
- }, {
603
- key: "__triggerOnChangeForDirtyPaths",
604
- value: function __triggerOnChangeForDirtyPaths(dirtyPaths) {
605
- var didTableSchemaChange = false;
606
- if ((0, _get2.default)((0, _getPrototypeOf2.default)(Table.prototype), "__triggerOnChangeForDirtyPaths", this).call(this, dirtyPaths)) {
607
- didTableSchemaChange = true;
608
- }
609
- if (dirtyPaths.viewOrder) {
610
- this._onChange(WatchableTableKeys.views);
611
- didTableSchemaChange = true;
410
+ /**
411
+ * Creates a new field.
412
+ *
413
+ * Similar to creating a field from the Airtable UI, the new field will not be visible
414
+ * in views that have other hidden fields and views that are publicly shared.
415
+ *
416
+ * Throws an error if the user does not have permission to create a field, if invalid
417
+ * name, type or options are provided, or if creating fields of this type is not supported.
418
+ *
419
+ * Refer to {@link FieldType} for supported field types, the write format for options, and
420
+ * other specifics for certain field types.
421
+ *
422
+ * This action is asynchronous. Unlike new records, new fields are **not** created
423
+ * optimistically locally. You must `await` the returned promise before using the new
424
+ * field in your extension.
425
+ *
426
+ * @param name name for the field. must be case-insensitive unique
427
+ * @param type type for the field
428
+ * @param options options for the field. omit for fields without writable options
429
+ * @param description description for the field. is optional and will be `''` if not specified
430
+ * or if specified as `null`.
431
+ *
432
+ * @example
433
+ * ```js
434
+ * async function createNewSingleLineTextField(table, name) {
435
+ * if (table.hasPermissionToCreateField(name, FieldType.SINGLE_LINE_TEXT)) {
436
+ * await table.createFieldAsync(name, FieldType.SINGLE_LINE_TEXT);
437
+ * }
438
+ * }
439
+ *
440
+ * async function createNewCheckboxField(table, name) {
441
+ * const options = {
442
+ * icon: 'check',
443
+ * color: 'greenBright',
444
+ * };
445
+ * if (table.hasPermissionToCreateField(name, FieldType.CHECKBOX, options)) {
446
+ * await table.createFieldAsync(name, FieldType.CHECKBOX, options);
447
+ * }
448
+ * }
449
+ *
450
+ * async function createNewDateField(table, name) {
451
+ * const options = {
452
+ * dateFormat: {
453
+ * name: 'iso',
454
+ * },
455
+ * };
456
+ * if (table.hasPermissionToCreateField(name, FieldType.DATE, options)) {
457
+ * await table.createFieldAsync(name, FieldType.DATE, options);
458
+ * }
459
+ * }
460
+ * ```
461
+ */
462
+ async createFieldAsync(name, type, options, description) {
463
+ const fieldId = this._sdk.__airtableInterface.idGenerator.generateFieldId();
464
+ await this._sdk.__mutations.applyMutationAsync({
465
+ type: _mutations.MutationTypes.CREATE_SINGLE_FIELD,
466
+ tableId: this.id,
467
+ id: fieldId,
468
+ name,
469
+ config: {
470
+ type: type,
471
+ // In field.options we translate options to null when it's undefined (no options),
472
+ // but the mutation expects config to match the PublicApiConfig, where it's
473
+ // not present at all (options: undefined will fail validation).
474
+ ...(options ? {
475
+ options
476
+ } : null)
477
+ },
478
+ // Coerce undefined to null so that only old SDKs pass "undefined" for description
479
+ // '' is permitted, as we already set empty descriptions to '' when editing descriptions
480
+ // from the UI
481
+ description: description ?? null
482
+ });
483
+ return this.getFieldById(fieldId);
484
+ }
612
485
 
613
- // Clean up deleted views
614
- var _iterator2 = _createForOfIteratorHelper((0, _private_utils.entries)(this._viewModelsById)),
615
- _step2;
616
- try {
617
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
618
- var _step2$value = (0, _slicedToArray2.default)(_step2.value, 2),
619
- viewId = _step2$value[0],
620
- viewModel = _step2$value[1];
621
- if (viewModel.isDeleted) {
622
- delete this._viewModelsById[viewId];
623
- }
624
- }
625
- } catch (err) {
626
- _iterator2.e(err);
627
- } finally {
628
- _iterator2.f();
486
+ /** @internal */
487
+ __triggerOnChangeForDirtyPaths(dirtyPaths) {
488
+ let didTableSchemaChange = false;
489
+ if (super.__triggerOnChangeForDirtyPaths(dirtyPaths)) {
490
+ didTableSchemaChange = true;
491
+ }
492
+ if (dirtyPaths.viewOrder) {
493
+ this._onChange(WatchableTableKeys.views);
494
+ didTableSchemaChange = true;
495
+
496
+ // Clean up deleted views
497
+ for (const [viewId, viewModel] of (0, _private_utils.entries)(this._viewModelsById)) {
498
+ if (viewModel.isDeleted) {
499
+ delete this._viewModelsById[viewId];
629
500
  }
630
501
  }
631
- if (dirtyPaths.viewsById) {
632
- var _iterator3 = _createForOfIteratorHelper((0, _private_utils.entries)(dirtyPaths.viewsById)),
633
- _step3;
634
- try {
635
- for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
636
- var _step3$value = (0, _slicedToArray2.default)(_step3.value, 2),
637
- _viewId = _step3$value[0],
638
- dirtyViewPaths = _step3$value[1];
639
- // Directly access from _viewModelsById to avoid creating
640
- // a view model if it doesn't already exist. If it doesn't exist,
641
- // nothing can be subscribed to any events on it.
642
- var view = this._viewModelsById[_viewId];
643
- if (view) {
644
- var didViewSchemaChange = view.__triggerOnChangeForDirtyPaths(dirtyViewPaths);
645
- if (didViewSchemaChange) {
646
- didTableSchemaChange = true;
647
- }
648
- }
502
+ }
503
+ if (dirtyPaths.viewsById) {
504
+ for (const [viewId, dirtyViewPaths] of (0, _private_utils.entries)(dirtyPaths.viewsById)) {
505
+ // Directly access from _viewModelsById to avoid creating
506
+ // a view model if it doesn't already exist. If it doesn't exist,
507
+ // nothing can be subscribed to any events on it.
508
+ const view = this._viewModelsById[viewId];
509
+ if (view) {
510
+ const didViewSchemaChange = view.__triggerOnChangeForDirtyPaths(dirtyViewPaths);
511
+ if (didViewSchemaChange) {
512
+ didTableSchemaChange = true;
649
513
  }
650
- } catch (err) {
651
- _iterator3.e(err);
652
- } finally {
653
- _iterator3.f();
654
514
  }
655
515
  }
656
- return didTableSchemaChange;
657
- }
658
- }], [{
659
- key: "_isWatchableKey",
660
- value: /** @internal */
661
- function _isWatchableKey(key) {
662
- return (0, _private_utils.isEnumValue)(WatchableTableKeys, key);
663
516
  }
664
- }]);
665
- }(_table_core.TableCore);
666
- /** @internal */
667
- (0, _defineProperty2.default)(Table, "_className", 'Table');
517
+ return didTableSchemaChange;
518
+ }
519
+ }
668
520
  var _default = exports.default = Table;