@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,26 +1,16 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
6
  exports.FieldCore = void 0;
8
- require("core-js/modules/es.symbol.js");
9
- require("core-js/modules/es.symbol.description.js");
10
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
12
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
13
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
14
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
15
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
16
7
  var _field_core = require("../types/field_core");
17
8
  var _private_utils = require("../private_utils");
18
9
  var _abstract_model = _interopRequireDefault(require("./abstract_model"));
19
- 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)); }
20
- 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 }; }
21
11
  // This doesn't follow our enum naming conventions because we want the keys
22
12
  // to mirror the method/getter names on the model class.
23
- var WatchableFieldKeys = Object.freeze({
13
+ const WatchableFieldKeys = Object.freeze({
24
14
  name: 'name',
25
15
  type: 'type',
26
16
  options: 'options',
@@ -37,295 +27,262 @@ var WatchableFieldKeys = Object.freeze({
37
27
  * - `isComputed`
38
28
  * - `description`
39
29
  */
30
+
40
31
  /** @hidden */
41
- var FieldCore = exports.FieldCore = /*#__PURE__*/function (_AbstractModel) {
32
+ class FieldCore extends _abstract_model.default {
33
+ /** @internal */
34
+ static _className = 'FieldCore';
35
+ /** @internal */
36
+ static _isWatchableKey(key) {
37
+ return (0, _private_utils.isEnumValue)(WatchableFieldKeys, key);
38
+ }
39
+ /** @internal */
40
+
41
+ /** @internal */
42
+
42
43
  /**
43
44
  * @internal
44
45
  */
45
- function FieldCore(sdk, parentTable, fieldId) {
46
- var _this;
47
- (0, _classCallCheck2.default)(this, FieldCore);
48
- _this = _callSuper(this, FieldCore, [sdk, fieldId]);
49
- /** @internal */
50
- (0, _defineProperty2.default)(_this, "_parentTable", void 0);
51
- /** @internal */
52
- (0, _defineProperty2.default)(_this, "_cachedFieldTypeConfigOrNull", void 0);
53
- _this._parentTable = parentTable;
54
- _this._cachedFieldTypeConfigOrNull = null;
55
- return _this;
46
+ constructor(sdk, parentTable, fieldId) {
47
+ super(sdk, fieldId);
48
+ this._parentTable = parentTable;
49
+ this._cachedFieldTypeConfigOrNull = null;
56
50
  }
57
51
 
58
52
  /**
59
53
  * @internal
60
54
  */
61
- (0, _inherits2.default)(FieldCore, _AbstractModel);
62
- return (0, _createClass2.default)(FieldCore, [{
63
- key: "_dataOrNullIfDeleted",
64
- get: function get() {
65
- var _tableData$fieldsById;
66
- var tableData = this._baseData.tablesById[this.parentTable.id];
67
- return (_tableData$fieldsById = tableData === null || tableData === void 0 ? void 0 : tableData.fieldsById[this._id]) !== null && _tableData$fieldsById !== void 0 ? _tableData$fieldsById : null;
68
- }
69
- /**
70
- * The table that this field belongs to. Should never change because fields aren't moved between tables.
71
- *
72
- * @internal (since we may not be able to return parent model instances in the immutable models world)
73
- * @example
74
- * ```js
75
- * const field = myTable.getFieldByName('Name');
76
- * console.log(field.parentTable.id === myTable.id);
77
- * // => true
78
- * ```
79
- */
80
- }, {
81
- key: "parentTable",
82
- get: function get() {
83
- return this._parentTable;
84
- }
85
- /**
86
- * The name of the field. Can be watched.
87
- *
88
- * @example
89
- * ```js
90
- * console.log(myField.name);
91
- * // => 'Name'
92
- * ```
93
- */
94
- }, {
95
- key: "name",
96
- get: function get() {
97
- return this._data.name;
98
- }
99
- /**
100
- * The type of the field. Can be watched.
101
- *
102
- * @example
103
- * ```js
104
- * console.log(myField.type);
105
- * // => 'singleLineText'
106
- * ```
107
- */
108
- }, {
109
- key: "type",
110
- get: function get() {
111
- var _this$_getCachedConfi = this._getCachedConfigFromFieldTypeProvider(),
112
- type = _this$_getCachedConfi.type;
113
- // We intend to switch from "lookup" to "multipleLookupValues", but need to support both
114
- // until the transition is complete. See <https://airtable.quip.com/VxaMAmAfUscs> for more.
115
- // @ts-ignore
116
- if (type === 'lookup') {
117
- return _field_core.FieldType.MULTIPLE_LOOKUP_VALUES;
118
- } else {
119
- return type;
120
- }
55
+ get _dataOrNullIfDeleted() {
56
+ const tableData = this._baseData.tablesById[this.parentTable.id];
57
+ return tableData?.fieldsById[this._id] ?? null;
58
+ }
59
+ /**
60
+ * The table that this field belongs to. Should never change because fields aren't moved between tables.
61
+ *
62
+ * @internal (since we may not be able to return parent model instances in the immutable models world)
63
+ * @example
64
+ * ```js
65
+ * const field = myTable.getFieldByName('Name');
66
+ * console.log(field.parentTable.id === myTable.id);
67
+ * // => true
68
+ * ```
69
+ */
70
+ get parentTable() {
71
+ return this._parentTable;
72
+ }
73
+ /**
74
+ * The name of the field. Can be watched.
75
+ *
76
+ * @example
77
+ * ```js
78
+ * console.log(myField.name);
79
+ * // => 'Name'
80
+ * ```
81
+ */
82
+ get name() {
83
+ return this._data.name;
84
+ }
85
+ /**
86
+ * The type of the field. Can be watched.
87
+ *
88
+ * @example
89
+ * ```js
90
+ * console.log(myField.type);
91
+ * // => 'singleLineText'
92
+ * ```
93
+ */
94
+ get type() {
95
+ const {
96
+ type
97
+ } = this._getCachedConfigFromFieldTypeProvider();
98
+ // We intend to switch from "lookup" to "multipleLookupValues", but need to support both
99
+ // until the transition is complete. See <https://airtable.quip.com/VxaMAmAfUscs> for more.
100
+ // @ts-ignore
101
+ if (type === 'lookup') {
102
+ return _field_core.FieldType.MULTIPLE_LOOKUP_VALUES;
103
+ } else {
104
+ return type;
121
105
  }
122
- /**
123
- * The configuration options of the field. The structure of the field's
124
- * options depend on the field's type. `null` if the field has no options.
125
- * See {@link FieldType} for more information on the options for each field
126
- * type. Can be watched.
127
- *
128
- * @see {@link FieldType}
129
- * @example
130
- * ```js
131
- * import {FieldType} from '@airtable/blocks/[placeholder-path]/models';
132
- *
133
- * if (myField.type === FieldType.CURRENCY) {
134
- * console.log(myField.options.symbol);
135
- * // => '$'
136
- * }
137
- * ```
138
- */
139
- }, {
140
- key: "options",
141
- get: function get() {
142
- var _this$_getCachedConfi2 = this._getCachedConfigFromFieldTypeProvider(),
143
- options = _this$_getCachedConfi2.options;
106
+ }
107
+ /**
108
+ * The configuration options of the field. The structure of the field's
109
+ * options depend on the field's type. `null` if the field has no options.
110
+ * See {@link FieldType} for more information on the options for each field
111
+ * type. Can be watched.
112
+ *
113
+ * @see {@link FieldType}
114
+ * @example
115
+ * ```js
116
+ * import {FieldType} from '@airtable/blocks/[placeholder-path]/models';
117
+ *
118
+ * if (myField.type === FieldType.CURRENCY) {
119
+ * console.log(myField.options.symbol);
120
+ * // => '$'
121
+ * }
122
+ * ```
123
+ */
124
+ get options() {
125
+ const {
126
+ options
127
+ } = this._getCachedConfigFromFieldTypeProvider();
144
128
 
145
- // TODO: In the next breaking release freeze (inside of the cache) and replace
146
- // FieldOptions with readonly<FieldOptions>.
147
- // Today this is required because we re-use the fieldTypeProvider.getConfig response.
148
- return options ? (0, _private_utils.cloneDeep)(options) : null;
149
- }
129
+ // TODO: In the next breaking release freeze (inside of the cache) and replace
130
+ // FieldOptions with readonly<FieldOptions>.
131
+ // Today this is required because we re-use the fieldTypeProvider.getConfig response.
132
+ return options ? (0, _private_utils.cloneDeep)(options) : null;
133
+ }
150
134
 
151
- // We use a cached response from FieldTypeProvider because getting the config can
152
- // be an expensive operation. In particular when fieldConfigs are extremely large
153
- // (eg: Select fields with lots of select options)
154
- }, {
155
- key: "_getCachedConfigFromFieldTypeProvider",
156
- value: function _getCachedConfigFromFieldTypeProvider() {
157
- if (this._cachedFieldTypeConfigOrNull !== null) {
158
- return this._cachedFieldTypeConfigOrNull;
159
- }
160
- var airtableInterface = this._sdk.__airtableInterface;
161
- var appInterface = this._sdk.__appInterface;
162
- this._cachedFieldTypeConfigOrNull = airtableInterface.fieldTypeProvider.getConfig(appInterface, this._data, this.parentTable.__getFieldNamesById());
135
+ // We use a cached response from FieldTypeProvider because getting the config can
136
+ // be an expensive operation. In particular when fieldConfigs are extremely large
137
+ // (eg: Select fields with lots of select options)
138
+ _getCachedConfigFromFieldTypeProvider() {
139
+ if (this._cachedFieldTypeConfigOrNull !== null) {
163
140
  return this._cachedFieldTypeConfigOrNull;
164
141
  }
165
- }, {
166
- key: "_clearCachedConfig",
167
- value: function _clearCachedConfig() {
168
- this._cachedFieldTypeConfigOrNull = null;
169
- }
142
+ const airtableInterface = this._sdk.__airtableInterface;
143
+ const appInterface = this._sdk.__appInterface;
144
+ this._cachedFieldTypeConfigOrNull = airtableInterface.fieldTypeProvider.getConfig(appInterface, this._data, this.parentTable.__getFieldNamesById());
145
+ return this._cachedFieldTypeConfigOrNull;
146
+ }
147
+ _clearCachedConfig() {
148
+ this._cachedFieldTypeConfigOrNull = null;
149
+ }
170
150
 
171
- /**
172
- * The type and options of the field to make type narrowing `FieldOptions` easier.
173
- * See {@link FieldType} for more information on the options for each field type.
174
- *
175
- * @see {@link FieldConfig}
176
- * @example
177
- * const fieldConfig = field.config;
178
- * if (fieldConfig.type === FieldType.SINGLE_SELECT) {
179
- * return fieldConfig.options.choices;
180
- * } else if (fieldConfig.type === FieldType.MULTIPLE_LOOKUP_VALUES && fieldConfig.options.isValid) {
181
- * if (fieldConfig.options.result.type === FieldType.SINGLE_SELECT) {
182
- * return fieldConfig.options.result.options.choices;
183
- * }
184
- * }
185
- * return DEFAULT_CHOICES;
186
- */
187
- }, {
188
- key: "config",
189
- get: function get() {
190
- return {
191
- type: this.type,
192
- options: this.options
193
- };
194
- }
151
+ /**
152
+ * The type and options of the field to make type narrowing `FieldOptions` easier.
153
+ * See {@link FieldType} for more information on the options for each field type.
154
+ *
155
+ * @see {@link FieldConfig}
156
+ * @example
157
+ * const fieldConfig = field.config;
158
+ * if (fieldConfig.type === FieldType.SINGLE_SELECT) {
159
+ * return fieldConfig.options.choices;
160
+ * } else if (fieldConfig.type === FieldType.MULTIPLE_LOOKUP_VALUES && fieldConfig.options.isValid) {
161
+ * if (fieldConfig.options.result.type === FieldType.SINGLE_SELECT) {
162
+ * return fieldConfig.options.result.options.choices;
163
+ * }
164
+ * }
165
+ * return DEFAULT_CHOICES;
166
+ */
167
+ get config() {
168
+ return {
169
+ type: this.type,
170
+ options: this.options
171
+ };
172
+ }
173
+
174
+ /**
175
+ * `true` if this field is synced, `false` otherwise. A field is
176
+ * "synced" if it's source is from another airtable base or external data source
177
+ * like Google Calendar, Jira, etc..
178
+ *
179
+ * @hidden
180
+ */
181
+ get isFieldSynced() {
182
+ return this._data.isSynced ?? false;
183
+ }
184
+
185
+ /**
186
+ * `true` if this field is computed, `false` otherwise. A field is
187
+ * "computed" if it's value is not set by user input (e.g. autoNumber, formula,
188
+ * etc.). Can be watched
189
+ *
190
+ * @example
191
+ * ```js
192
+ * console.log(mySingleLineTextField.isComputed);
193
+ * // => false
194
+ * console.log(myAutoNumberField.isComputed);
195
+ * // => true
196
+ * ```
197
+ */
198
+ get isComputed() {
199
+ const airtableInterface = this._sdk.__airtableInterface;
200
+ return airtableInterface.fieldTypeProvider.isComputed(this._data);
201
+ }
202
+ /**
203
+ * `true` if this field is its parent table's primary field, `false` otherwise.
204
+ * Should never change because the primary field of a table cannot change.
205
+ */
206
+ get isPrimaryField() {
207
+ return this.id === this.parentTable.primaryField.id;
208
+ }
209
+
210
+ /**
211
+ * The description of the field, if it has one. Can be watched.
212
+ *
213
+ * @example
214
+ * ```js
215
+ * console.log(myField.description);
216
+ * // => 'This is my field'
217
+ * ```
218
+ */
219
+ get description() {
220
+ return this._data.description;
221
+ }
222
+ /**
223
+ * Attempt to parse a given string and return a valid cell value for the field's current config.
224
+ * Returns `null` if unable to parse the given string.
225
+ *
226
+ * @param string The string to parse.
227
+ * @example
228
+ * ```js
229
+ * const inputString = '42';
230
+ * const cellValue = myNumberField.convertStringToCellValue(inputString);
231
+ * console.log(cellValue === 42);
232
+ * // => true
233
+ * ```
234
+ */
235
+ convertStringToCellValue(string) {
236
+ const airtableInterface = this._sdk.__airtableInterface;
237
+ const appInterface = this._sdk.__appInterface;
238
+ const cellValue = airtableInterface.fieldTypeProvider.convertStringToCellValue(appInterface, string, this._data,
239
+ // The opt parseDateCellValueInColumnTimeZone is used here to ensure date string
240
+ // inputs are interpreted correctly according to the `timeZone` of the dateTime field.
241
+ {
242
+ parseDateCellValueInColumnTimeZone: this.type === _field_core.FieldType.DATE_TIME
243
+ });
195
244
 
196
- /**
197
- * `true` if this field is synced, `false` otherwise. A field is
198
- * "synced" if it's source is from another airtable base or external data source
199
- * like Google Calendar, Jira, etc..
200
- *
201
- * @hidden
202
- */
203
- }, {
204
- key: "isFieldSynced",
205
- get: function get() {
206
- var _this$_data$isSynced;
207
- return (_this$_data$isSynced = this._data.isSynced) !== null && _this$_data$isSynced !== void 0 ? _this$_data$isSynced : false;
245
+ // Temporarily bail out of validating computed values (since validation will crash)
246
+ // while we work out if we actually have to validate or not. Ideally we just delete all
247
+ // the validation
248
+ // TODO(emma): delete me or tidy me up
249
+ if (this.isComputed) {
250
+ return cellValue;
208
251
  }
209
252
 
210
- /**
211
- * `true` if this field is computed, `false` otherwise. A field is
212
- * "computed" if it's value is not set by user input (e.g. autoNumber, formula,
213
- * etc.). Can be watched
214
- *
215
- * @example
216
- * ```js
217
- * console.log(mySingleLineTextField.isComputed);
218
- * // => false
219
- * console.log(myAutoNumberField.isComputed);
220
- * // => true
221
- * ```
222
- */
223
- }, {
224
- key: "isComputed",
225
- get: function get() {
226
- var airtableInterface = this._sdk.__airtableInterface;
227
- return airtableInterface.fieldTypeProvider.isComputed(this._data);
253
+ // TODO(emma): do we need to validate here?
254
+ const validationResult = airtableInterface.fieldTypeProvider.validateCellValueForUpdate(appInterface, cellValue, null, this._data);
255
+ if (validationResult.isValid) {
256
+ return cellValue;
257
+ } else {
258
+ return null;
228
259
  }
229
- /**
230
- * `true` if this field is its parent table's primary field, `false` otherwise.
231
- * Should never change because the primary field of a table cannot change.
232
- */
233
- }, {
234
- key: "isPrimaryField",
235
- get: function get() {
236
- return this.id === this.parentTable.primaryField.id;
260
+ }
261
+ /**
262
+ * @internal
263
+ */
264
+ __triggerOnChangeForDirtyPaths(dirtyPaths) {
265
+ // Always clear the cached config when anything on the field data model changes
266
+ this._clearCachedConfig();
267
+ if (dirtyPaths.name) {
268
+ this._onChange(WatchableFieldKeys.name);
237
269
  }
270
+ if (dirtyPaths.type) {
271
+ this._onChange(WatchableFieldKeys.type);
238
272
 
239
- /**
240
- * The description of the field, if it has one. Can be watched.
241
- *
242
- * @example
243
- * ```js
244
- * console.log(myField.description);
245
- * // => 'This is my field'
246
- * ```
247
- */
248
- }, {
249
- key: "description",
250
- get: function get() {
251
- return this._data.description;
273
+ // TODO: it would be better if we only trigger this when
274
+ // we know isComputed changed.
275
+ this._onChange(WatchableFieldKeys.isComputed);
252
276
  }
253
- /**
254
- * Attempt to parse a given string and return a valid cell value for the field's current config.
255
- * Returns `null` if unable to parse the given string.
256
- *
257
- * @param string The string to parse.
258
- * @example
259
- * ```js
260
- * const inputString = '42';
261
- * const cellValue = myNumberField.convertStringToCellValue(inputString);
262
- * console.log(cellValue === 42);
263
- * // => true
264
- * ```
265
- */
266
- }, {
267
- key: "convertStringToCellValue",
268
- value: function convertStringToCellValue(string) {
269
- var airtableInterface = this._sdk.__airtableInterface;
270
- var appInterface = this._sdk.__appInterface;
271
- var cellValue = airtableInterface.fieldTypeProvider.convertStringToCellValue(appInterface, string, this._data,
272
- // The opt parseDateCellValueInColumnTimeZone is used here to ensure date string
273
- // inputs are interpreted correctly according to the `timeZone` of the dateTime field.
274
- {
275
- parseDateCellValueInColumnTimeZone: this.type === _field_core.FieldType.DATE_TIME
276
- });
277
-
278
- // Temporarily bail out of validating computed values (since validation will crash)
279
- // while we work out if we actually have to validate or not. Ideally we just delete all
280
- // the validation
281
- // TODO(emma): delete me or tidy me up
282
- if (this.isComputed) {
283
- return cellValue;
284
- }
285
-
286
- // TODO(emma): do we need to validate here?
287
- var validationResult = airtableInterface.fieldTypeProvider.validateCellValueForUpdate(appInterface, cellValue, null, this._data);
288
- if (validationResult.isValid) {
289
- return cellValue;
290
- } else {
291
- return null;
292
- }
277
+ if (dirtyPaths.typeOptions) {
278
+ this._onChange(WatchableFieldKeys.options);
293
279
  }
294
- /**
295
- * @internal
296
- */
297
- }, {
298
- key: "__triggerOnChangeForDirtyPaths",
299
- value: function __triggerOnChangeForDirtyPaths(dirtyPaths) {
300
- // Always clear the cached config when anything on the field data model changes
301
- this._clearCachedConfig();
302
- if (dirtyPaths.name) {
303
- this._onChange(WatchableFieldKeys.name);
304
- }
305
- if (dirtyPaths.type) {
306
- this._onChange(WatchableFieldKeys.type);
307
-
308
- // TODO: it would be better if we only trigger this when
309
- // we know isComputed changed.
310
- this._onChange(WatchableFieldKeys.isComputed);
311
- }
312
- if (dirtyPaths.typeOptions) {
313
- this._onChange(WatchableFieldKeys.options);
314
- }
315
- if (dirtyPaths.description) {
316
- this._onChange(WatchableFieldKeys.description);
317
- }
318
- if (dirtyPaths.isSynced) {
319
- this._onChange(WatchableFieldKeys.isFieldSynced);
320
- }
280
+ if (dirtyPaths.description) {
281
+ this._onChange(WatchableFieldKeys.description);
321
282
  }
322
- }], [{
323
- key: "_isWatchableKey",
324
- value: /** @internal */
325
- function _isWatchableKey(key) {
326
- return (0, _private_utils.isEnumValue)(WatchableFieldKeys, key);
283
+ if (dirtyPaths.isSynced) {
284
+ this._onChange(WatchableFieldKeys.isFieldSynced);
327
285
  }
328
- }]);
329
- }(_abstract_model.default);
330
- /** @internal */
331
- (0, _defineProperty2.default)(FieldCore, "_className", 'FieldCore');
286
+ }
287
+ }
288
+ exports.FieldCore = FieldCore;