@airtable/blocks 0.0.0-experimental-f52bc4e5e-20250709 → 0.0.0-experimental-3649c7162-20250904
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/base/assert_run_context.js +12 -0
- package/dist/{cjs → esm}/base/index.js +30 -32
- package/dist/esm/base/models/abstract_model_with_async_data.js +190 -0
- package/dist/esm/base/models/base.js +252 -0
- package/dist/esm/base/models/create_aggregators.js +90 -0
- package/dist/esm/base/models/cursor.js +305 -0
- package/dist/esm/base/models/field.js +338 -0
- package/dist/esm/base/models/grouped_record_query_result.js +280 -0
- package/dist/esm/base/models/linked_records_query_result.js +553 -0
- package/dist/{cjs → esm}/base/models/models.js +19 -40
- package/dist/esm/base/models/mutations.js +312 -0
- package/dist/esm/base/models/object_pool.js +145 -0
- package/dist/esm/base/models/record.js +239 -0
- package/dist/{cjs → esm}/base/models/record_coloring.js +6 -6
- package/dist/esm/base/models/record_query_result.js +657 -0
- package/dist/esm/base/models/record_store.js +475 -0
- package/dist/esm/base/models/session.js +154 -0
- package/dist/esm/base/models/table.js +520 -0
- package/dist/esm/base/models/table_or_view_query_result.js +749 -0
- package/dist/esm/base/models/view.js +326 -0
- package/dist/esm/base/models/view_data_store.js +265 -0
- package/dist/esm/base/models/view_metadata_query_result.js +176 -0
- package/dist/esm/base/perform_record_action.js +215 -0
- package/dist/esm/base/sdk.js +178 -0
- package/dist/esm/base/settings_button.js +118 -0
- package/dist/{cjs → esm}/base/types/airtable_interface.js +1 -1
- package/dist/{cjs → esm}/base/types/mutations.js +5 -11
- package/dist/{cjs → esm}/base/types/undo_redo.js +1 -1
- package/dist/{cjs → esm}/base/types/view.js +1 -1
- package/dist/{cjs → esm}/base/ui/base_provider.js +6 -8
- package/dist/esm/base/ui/baymax_utils.js +461 -0
- package/dist/esm/base/ui/block_wrapper.js +118 -0
- package/dist/esm/base/ui/box.js +84 -0
- package/dist/esm/base/ui/button.js +152 -0
- package/dist/esm/base/ui/cell_renderer.js +198 -0
- package/dist/esm/base/ui/choice_token.js +93 -0
- package/dist/esm/base/ui/collaborator_token.js +123 -0
- package/dist/esm/base/ui/color_palette.js +196 -0
- package/dist/esm/base/ui/color_palette_synced.js +69 -0
- package/dist/esm/base/ui/confirmation_dialog.js +103 -0
- package/dist/{cjs → esm}/base/ui/control_sizes.js +24 -22
- package/dist/{cjs → esm}/base/ui/create_detect_element_resize.js +6 -10
- package/dist/{cjs → esm}/base/ui/css_helpers.js +1 -1
- package/dist/esm/base/ui/dialog.js +101 -0
- package/dist/esm/base/ui/dialog_close_button.js +106 -0
- package/dist/{cjs → esm}/base/ui/expand_record.js +1 -2
- package/dist/{cjs → esm}/base/ui/expand_record_list.js +3 -4
- package/dist/esm/base/ui/expand_record_picker_async.js +71 -0
- package/dist/esm/base/ui/field_icon.js +44 -0
- package/dist/esm/base/ui/field_picker.js +98 -0
- package/dist/esm/base/ui/field_picker_synced.js +66 -0
- package/dist/esm/base/ui/form_field.js +109 -0
- package/dist/{cjs → esm}/base/ui/geometry/geometry.js +5 -5
- package/dist/esm/base/ui/geometry/point.js +19 -0
- package/dist/esm/base/ui/geometry/rect.js +51 -0
- package/dist/esm/base/ui/geometry/size.js +19 -0
- package/dist/esm/base/ui/global_alert.js +71 -0
- package/dist/esm/base/ui/heading.js +132 -0
- package/dist/esm/base/ui/icon.js +109 -0
- package/dist/{cjs → esm}/base/ui/icon_config.js +6 -12
- package/dist/{cjs → esm}/base/ui/initialize_block.js +16 -35
- package/dist/esm/base/ui/input.js +161 -0
- package/dist/esm/base/ui/input_synced.js +66 -0
- package/dist/{cjs → esm}/base/ui/key_codes.js +2 -3
- package/dist/esm/base/ui/label.js +80 -0
- package/dist/esm/base/ui/link.js +196 -0
- package/dist/esm/base/ui/loader.js +61 -0
- package/dist/esm/base/ui/modal.js +145 -0
- package/dist/esm/base/ui/model_picker_select.js +57 -0
- package/dist/esm/base/ui/popover.js +315 -0
- package/dist/esm/base/ui/progress_bar.js +115 -0
- package/dist/esm/base/ui/record_card.js +564 -0
- package/dist/esm/base/ui/record_card_list.js +303 -0
- package/dist/esm/base/ui/select.js +191 -0
- package/dist/esm/base/ui/select_and_select_buttons_helpers.js +63 -0
- package/dist/esm/base/ui/select_buttons.js +159 -0
- package/dist/esm/base/ui/select_buttons_synced.js +62 -0
- package/dist/esm/base/ui/select_synced.js +65 -0
- package/dist/esm/base/ui/switch.js +167 -0
- package/dist/esm/base/ui/switch_synced.js +53 -0
- package/dist/esm/base/ui/synced.js +49 -0
- package/dist/{cjs → esm}/base/ui/system/all_styles_set.js +4 -12
- package/dist/esm/base/ui/system/appearance/appearance_set.js +27 -0
- package/dist/esm/base/ui/system/appearance/background_color.js +18 -0
- package/dist/{cjs → esm}/base/ui/system/appearance/border.js +3 -6
- package/dist/esm/base/ui/system/appearance/border_radius.js +18 -0
- package/dist/esm/base/ui/system/appearance/box_shadow.js +18 -0
- package/dist/esm/base/ui/system/appearance/opacity.js +18 -0
- package/dist/esm/base/ui/system/dimensions/dimensions_set.js +29 -0
- package/dist/esm/base/ui/system/dimensions/height.js +18 -0
- package/dist/esm/base/ui/system/dimensions/max_height.js +18 -0
- package/dist/esm/base/ui/system/dimensions/max_width.js +18 -0
- package/dist/esm/base/ui/system/dimensions/min_height.js +18 -0
- package/dist/esm/base/ui/system/dimensions/min_width.js +18 -0
- package/dist/esm/base/ui/system/dimensions/width.js +18 -0
- package/dist/esm/base/ui/system/display.js +19 -0
- package/dist/esm/base/ui/system/flex_container/align_content.js +15 -0
- package/dist/esm/base/ui/system/flex_container/align_items.js +15 -0
- package/dist/esm/base/ui/system/flex_container/flex_container_set.js +29 -0
- package/dist/esm/base/ui/system/flex_container/flex_direction.js +15 -0
- package/dist/esm/base/ui/system/flex_container/flex_wrap.js +15 -0
- package/dist/esm/base/ui/system/flex_container/justify_content.js +15 -0
- package/dist/esm/base/ui/system/flex_container/justify_items.js +16 -0
- package/dist/esm/base/ui/system/flex_item/align_self.js +15 -0
- package/dist/esm/base/ui/system/flex_item/flex.js +15 -0
- package/dist/esm/base/ui/system/flex_item/flex_basis.js +15 -0
- package/dist/esm/base/ui/system/flex_item/flex_grow.js +15 -0
- package/dist/esm/base/ui/system/flex_item/flex_item_set.js +31 -0
- package/dist/esm/base/ui/system/flex_item/flex_shrink.js +15 -0
- package/dist/esm/base/ui/system/flex_item/justify_self.js +16 -0
- package/dist/esm/base/ui/system/flex_item/order.js +15 -0
- package/dist/{cjs → esm}/base/ui/system/index.js +104 -416
- package/dist/esm/base/ui/system/overflow.js +21 -0
- package/dist/{cjs → esm}/base/ui/system/position/bottom.js +4 -6
- package/dist/{cjs → esm}/base/ui/system/position/left.js +4 -6
- package/dist/esm/base/ui/system/position/position.js +15 -0
- package/dist/esm/base/ui/system/position/position_set.js +29 -0
- package/dist/{cjs → esm}/base/ui/system/position/right.js +4 -6
- package/dist/{cjs → esm}/base/ui/system/position/top.js +4 -6
- package/dist/esm/base/ui/system/position/z_index.js +18 -0
- package/dist/{cjs → esm}/base/ui/system/spacing/margin.js +4 -6
- package/dist/{cjs → esm}/base/ui/system/spacing/padding.js +4 -6
- package/dist/esm/base/ui/system/spacing/spacing_set.js +21 -0
- package/dist/esm/base/ui/system/typography/font_family.js +18 -0
- package/dist/esm/base/ui/system/typography/font_size.js +18 -0
- package/dist/esm/base/ui/system/typography/font_style.js +15 -0
- package/dist/esm/base/ui/system/typography/font_weight.js +18 -0
- package/dist/esm/base/ui/system/typography/letter_spacing.js +18 -0
- package/dist/esm/base/ui/system/typography/line_height.js +15 -0
- package/dist/esm/base/ui/system/typography/text_align.js +15 -0
- package/dist/esm/base/ui/system/typography/text_color.js +18 -0
- package/dist/esm/base/ui/system/typography/text_decoration.js +15 -0
- package/dist/esm/base/ui/system/typography/text_transform.js +15 -0
- package/dist/esm/base/ui/system/typography/typography_set.js +37 -0
- package/dist/{cjs → esm}/base/ui/system/utils/ensure_numbers_are_within_scale.js +3 -4
- package/dist/esm/base/ui/system/utils/get_style_props_for_responsive_prop.js +73 -0
- package/dist/esm/base/ui/table_picker.js +71 -0
- package/dist/esm/base/ui/table_picker_synced.js +62 -0
- package/dist/esm/base/ui/text.js +117 -0
- package/dist/esm/base/ui/text_button.js +196 -0
- package/dist/{cjs → esm}/base/ui/theme/default_theme/button_variants.js +3 -3
- package/dist/esm/base/ui/theme/default_theme/control_sizes.js +102 -0
- package/dist/{cjs → esm}/base/ui/theme/default_theme/heading_styles.js +1 -1
- package/dist/{cjs → esm}/base/ui/theme/default_theme/index.js +9 -15
- package/dist/{cjs → esm}/base/ui/theme/default_theme/input_variants.js +3 -3
- package/dist/{cjs → esm}/base/ui/theme/default_theme/link_variants.js +3 -3
- package/dist/{cjs → esm}/base/ui/theme/default_theme/select_buttons_variants.js +4 -4
- package/dist/esm/base/ui/theme/default_theme/select_variants.js +50 -0
- package/dist/esm/base/ui/theme/default_theme/switch_variants.js +85 -0
- package/dist/{cjs → esm}/base/ui/theme/default_theme/text_button_variants.js +5 -5
- package/dist/{cjs → esm}/base/ui/theme/default_theme/text_styles.js +1 -1
- package/dist/{cjs → esm}/base/ui/theme/default_theme/tokens.js +14 -14
- package/dist/{cjs → esm}/base/ui/theme/theme_context.js +2 -2
- package/dist/{cjs → esm}/base/ui/theme/use_theme.js +2 -2
- package/dist/esm/base/ui/tooltip.js +175 -0
- package/dist/{cjs → esm}/base/ui/ui.js +48 -49
- package/dist/{cjs → esm}/base/ui/unstable_standalone_ui.js +27 -27
- package/dist/{cjs → esm}/base/ui/use_base.js +1 -1
- package/dist/{cjs → esm}/base/ui/use_cursor.js +5 -4
- package/dist/{cjs → esm}/base/ui/use_form_field.js +1 -1
- package/dist/{cjs → esm}/base/ui/use_loadable.js +25 -91
- package/dist/{cjs → esm}/base/ui/use_record_action_data.js +4 -3
- package/dist/{cjs → esm}/base/ui/use_records.js +9 -13
- package/dist/{cjs → esm}/base/ui/use_session.js +1 -1
- package/dist/{cjs → esm}/base/ui/use_settings_button.js +4 -3
- package/dist/esm/base/ui/use_styled_system.js +25 -0
- package/dist/{cjs → esm}/base/ui/use_text_color_for_background_color.js +4 -3
- package/dist/{cjs → esm}/base/ui/use_view_metadata.js +4 -4
- package/dist/{cjs → esm}/base/ui/use_viewport.js +2 -2
- package/dist/esm/base/ui/view_picker.js +89 -0
- package/dist/esm/base/ui/view_picker_synced.js +66 -0
- package/dist/esm/base/ui/viewport_constraint.js +129 -0
- package/dist/esm/base/ui/with_styled_system.js +129 -0
- package/dist/esm/base/undo_redo.js +37 -0
- package/dist/{cjs → esm}/base/unstable_testing_utils.js +27 -27
- package/dist/esm/base/viewport.js +353 -0
- package/dist/esm/injected/airtable_interface.js +22 -0
- package/dist/esm/interface/assert_run_context.js +12 -0
- package/dist/esm/interface/index.js +22 -0
- package/dist/esm/interface/models/base.js +35 -0
- package/dist/esm/interface/models/field.js +28 -0
- package/dist/{cjs → esm}/interface/models/models.js +8 -7
- package/dist/esm/interface/models/mutations.js +63 -0
- package/dist/esm/interface/models/record.js +51 -0
- package/dist/esm/interface/models/record_store.js +51 -0
- package/dist/esm/interface/models/session.js +28 -0
- package/dist/esm/interface/models/table.js +97 -0
- package/dist/esm/interface/sdk.js +78 -0
- package/dist/{cjs → esm}/interface/types/airtable_interface.js +2 -2
- package/dist/esm/interface/types/mutations.js +17 -0
- package/dist/esm/interface/ui/block_wrapper.js +69 -0
- package/dist/{cjs → esm}/interface/ui/initialize_block.js +13 -28
- package/dist/{cjs → esm}/interface/ui/ui.js +20 -19
- package/dist/{cjs → esm}/interface/ui/use_base.js +1 -1
- package/dist/{cjs → esm}/interface/ui/use_custom_properties.js +19 -35
- package/dist/{cjs → esm}/interface/ui/use_records.js +6 -5
- package/dist/{cjs → esm}/interface/ui/use_run_info.js +2 -2
- package/dist/{cjs → esm}/interface/ui/use_session.js +1 -1
- package/dist/{cjs → esm}/shared/color_utils.js +9 -16
- package/dist/{cjs → esm}/shared/colors.js +2 -2
- package/dist/{cjs → esm}/shared/error_utils.js +9 -11
- package/dist/{cjs → esm}/shared/event_tracker.js +3 -3
- package/dist/esm/shared/global_config.js +399 -0
- package/dist/esm/shared/models/abstract_model.js +94 -0
- package/dist/esm/shared/models/base_core.js +482 -0
- package/dist/esm/shared/models/field_core.js +288 -0
- package/dist/esm/shared/models/mutations_core.js +343 -0
- package/dist/esm/shared/models/record_core.js +215 -0
- package/dist/esm/shared/models/record_store_core.js +160 -0
- package/dist/esm/shared/models/session_core.js +160 -0
- package/dist/esm/shared/models/table_core.js +1318 -0
- package/dist/{cjs → esm}/shared/private_utils.js +54 -124
- package/dist/esm/shared/sdk_core.js +113 -0
- package/dist/{cjs → esm}/shared/types/field_core.js +1 -1
- package/dist/esm/shared/types/mutation_constants.js +11 -0
- package/dist/{cjs → esm}/shared/types/mutations_core.js +1 -1
- package/dist/{cjs → esm}/shared/types/permission_levels.js +1 -1
- package/dist/esm/shared/types/record.js +1 -0
- package/dist/esm/shared/types/stat.js +1 -0
- package/dist/esm/shared/types/table_core.js +1 -0
- package/dist/{cjs → esm}/shared/ui/global_config_synced_component_helpers.js +9 -9
- package/dist/esm/shared/ui/loader.js +47 -0
- package/dist/{cjs → esm}/shared/ui/remote_utils.js +5 -7
- package/dist/{cjs → esm}/shared/ui/sdk_context.js +4 -8
- package/dist/{cjs → esm}/shared/ui/use_array_identity.js +2 -2
- package/dist/{cjs → esm}/shared/ui/use_base.js +6 -5
- package/dist/{cjs → esm}/shared/ui/use_color_scheme.js +3 -8
- package/dist/{cjs → esm}/shared/ui/use_global_config.js +5 -4
- package/dist/{cjs → esm}/shared/ui/use_session.js +6 -5
- package/dist/{cjs → esm}/shared/ui/use_synced.js +7 -5
- package/dist/{cjs → esm}/shared/ui/use_watchable.js +13 -42
- package/dist/{cjs → esm}/shared/ui/with_hooks.js +6 -13
- package/dist/{cjs → esm}/shared/unstable_private_utils.js +4 -6
- package/dist/{cjs → esm}/shared/warning.js +5 -5
- package/dist/esm/shared/watchable.js +150 -0
- package/dist/esm/stats/block_stats.js +73 -0
- package/dist/esm/testing/base/abstract_mock_airtable_interface.js +208 -0
- package/dist/esm/testing/interface/abstract_mock_airtable_interface.js +124 -0
- package/dist/types/src/base/assert_run_context.d.ts +2 -0
- package/dist/types/src/base/assert_run_context.d.ts.map +1 -0
- package/dist/types/src/base/index.d.ts +1 -0
- package/dist/types/src/base/index.d.ts.map +1 -1
- package/dist/types/src/base/models/base.d.ts +19 -0
- package/dist/types/src/base/models/base.d.ts.map +1 -1
- package/dist/types/src/base/models/create_aggregators.d.ts +3 -4
- package/dist/types/src/base/models/create_aggregators.d.ts.map +1 -1
- package/dist/types/src/base/models/field.d.ts +3 -2
- package/dist/types/src/base/models/field.d.ts.map +1 -1
- package/dist/types/src/base/models/models.d.ts +1 -2
- package/dist/types/src/base/models/models.d.ts.map +1 -1
- package/dist/types/src/base/models/mutations.d.ts.map +1 -1
- package/dist/types/src/base/sdk.d.ts.map +1 -1
- package/dist/types/src/base/ui/block_wrapper.d.ts +1 -1
- package/dist/types/src/base/ui/box.d.ts.map +1 -1
- package/dist/types/src/base/ui/button.d.ts +0 -5
- package/dist/types/src/base/ui/button.d.ts.map +1 -1
- package/dist/types/src/base/ui/cell_renderer.d.ts +1 -22
- package/dist/types/src/base/ui/cell_renderer.d.ts.map +1 -1
- package/dist/types/src/base/ui/choice_token.d.ts +1 -21
- package/dist/types/src/base/ui/choice_token.d.ts.map +1 -1
- package/dist/types/src/base/ui/collaborator_token.d.ts +0 -20
- package/dist/types/src/base/ui/collaborator_token.d.ts.map +1 -1
- package/dist/types/src/base/ui/color_palette.d.ts +1 -32
- package/dist/types/src/base/ui/color_palette.d.ts.map +1 -1
- package/dist/types/src/base/ui/color_palette_synced.d.ts +0 -14
- package/dist/types/src/base/ui/color_palette_synced.d.ts.map +1 -1
- package/dist/types/src/base/ui/confirmation_dialog.d.ts +0 -17
- package/dist/types/src/base/ui/confirmation_dialog.d.ts.map +1 -1
- package/dist/types/src/base/ui/control_sizes.d.ts +0 -1
- package/dist/types/src/base/ui/control_sizes.d.ts.map +1 -1
- package/dist/types/src/base/ui/dialog.d.ts +1 -23
- package/dist/types/src/base/ui/dialog.d.ts.map +1 -1
- package/dist/types/src/base/ui/dialog_close_button.d.ts +2 -24
- package/dist/types/src/base/ui/dialog_close_button.d.ts.map +1 -1
- package/dist/types/src/base/ui/field_icon.d.ts +1 -17
- package/dist/types/src/base/ui/field_icon.d.ts.map +1 -1
- package/dist/types/src/base/ui/field_picker.d.ts +0 -23
- package/dist/types/src/base/ui/field_picker.d.ts.map +1 -1
- package/dist/types/src/base/ui/field_picker_synced.d.ts.map +1 -1
- package/dist/types/src/base/ui/form_field.d.ts +0 -4
- package/dist/types/src/base/ui/form_field.d.ts.map +1 -1
- package/dist/types/src/base/ui/heading.d.ts +1 -1
- package/dist/types/src/base/ui/heading.d.ts.map +1 -1
- package/dist/types/src/base/ui/icon.d.ts +0 -16
- package/dist/types/src/base/ui/icon.d.ts.map +1 -1
- package/dist/types/src/base/ui/icon_config.d.ts +50 -51
- package/dist/types/src/base/ui/icon_config.d.ts.map +1 -1
- package/dist/types/src/base/ui/initialize_block.d.ts.map +1 -1
- package/dist/types/src/base/ui/input.d.ts +12 -46
- package/dist/types/src/base/ui/input.d.ts.map +1 -1
- package/dist/types/src/base/ui/input_synced.d.ts.map +1 -1
- package/dist/types/src/base/ui/label.d.ts.map +1 -1
- package/dist/types/src/base/ui/link.d.ts +1 -5
- package/dist/types/src/base/ui/link.d.ts.map +1 -1
- package/dist/types/src/base/ui/loader.d.ts +3 -20
- package/dist/types/src/base/ui/loader.d.ts.map +1 -1
- package/dist/types/src/base/ui/modal.d.ts +1 -14
- package/dist/types/src/base/ui/modal.d.ts.map +1 -1
- package/dist/types/src/base/ui/model_picker_select.d.ts.map +1 -1
- package/dist/types/src/base/ui/popover.d.ts +1 -17
- package/dist/types/src/base/ui/popover.d.ts.map +1 -1
- package/dist/types/src/base/ui/progress_bar.d.ts +1 -24
- package/dist/types/src/base/ui/progress_bar.d.ts.map +1 -1
- package/dist/types/src/base/ui/record_card.d.ts +1 -23
- package/dist/types/src/base/ui/record_card.d.ts.map +1 -1
- package/dist/types/src/base/ui/record_card_list.d.ts +1 -18
- package/dist/types/src/base/ui/record_card_list.d.ts.map +1 -1
- package/dist/types/src/base/ui/select.d.ts +0 -44
- package/dist/types/src/base/ui/select.d.ts.map +1 -1
- package/dist/types/src/base/ui/select_and_select_buttons_helpers.d.ts +0 -2
- package/dist/types/src/base/ui/select_and_select_buttons_helpers.d.ts.map +1 -1
- package/dist/types/src/base/ui/select_buttons.d.ts +0 -22
- package/dist/types/src/base/ui/select_buttons.d.ts.map +1 -1
- package/dist/types/src/base/ui/select_buttons_synced.d.ts.map +1 -1
- package/dist/types/src/base/ui/select_synced.d.ts.map +1 -1
- package/dist/types/src/base/ui/switch.d.ts +0 -22
- package/dist/types/src/base/ui/switch.d.ts.map +1 -1
- package/dist/types/src/base/ui/switch_synced.d.ts.map +1 -1
- package/dist/types/src/base/ui/synced.d.ts +2 -8
- package/dist/types/src/base/ui/synced.d.ts.map +1 -1
- package/dist/types/src/base/ui/system/all_styles_set.d.ts +0 -3
- package/dist/types/src/base/ui/system/all_styles_set.d.ts.map +1 -1
- package/dist/types/src/base/ui/system/appearance/appearance_set.d.ts +0 -1
- package/dist/types/src/base/ui/system/appearance/appearance_set.d.ts.map +1 -1
- package/dist/types/src/base/ui/system/appearance/background_color.d.ts +0 -1
- package/dist/types/src/base/ui/system/appearance/background_color.d.ts.map +1 -1
- package/dist/types/src/base/ui/system/appearance/border.d.ts +0 -1
- package/dist/types/src/base/ui/system/appearance/border.d.ts.map +1 -1
- package/dist/types/src/base/ui/system/appearance/border_radius.d.ts +0 -1
- package/dist/types/src/base/ui/system/appearance/border_radius.d.ts.map +1 -1
- package/dist/types/src/base/ui/system/appearance/box_shadow.d.ts +0 -1
- package/dist/types/src/base/ui/system/appearance/box_shadow.d.ts.map +1 -1
- package/dist/types/src/base/ui/system/appearance/opacity.d.ts +0 -1
- package/dist/types/src/base/ui/system/appearance/opacity.d.ts.map +1 -1
- package/dist/types/src/base/ui/system/dimensions/dimensions_set.d.ts +0 -1
- package/dist/types/src/base/ui/system/dimensions/dimensions_set.d.ts.map +1 -1
- package/dist/types/src/base/ui/system/dimensions/height.d.ts +0 -1
- package/dist/types/src/base/ui/system/dimensions/height.d.ts.map +1 -1
- package/dist/types/src/base/ui/system/dimensions/max_height.d.ts +0 -1
- package/dist/types/src/base/ui/system/dimensions/max_height.d.ts.map +1 -1
- package/dist/types/src/base/ui/system/dimensions/max_width.d.ts +0 -1
- package/dist/types/src/base/ui/system/dimensions/max_width.d.ts.map +1 -1
- package/dist/types/src/base/ui/system/dimensions/min_height.d.ts +0 -1
- package/dist/types/src/base/ui/system/dimensions/min_height.d.ts.map +1 -1
- package/dist/types/src/base/ui/system/dimensions/min_width.d.ts +0 -1
- package/dist/types/src/base/ui/system/dimensions/min_width.d.ts.map +1 -1
- package/dist/types/src/base/ui/system/dimensions/width.d.ts +0 -1
- package/dist/types/src/base/ui/system/dimensions/width.d.ts.map +1 -1
- package/dist/types/src/base/ui/system/display.d.ts +0 -1
- package/dist/types/src/base/ui/system/display.d.ts.map +1 -1
- package/dist/types/src/base/ui/system/flex_container/align_content.d.ts +0 -1
- package/dist/types/src/base/ui/system/flex_container/align_content.d.ts.map +1 -1
- package/dist/types/src/base/ui/system/flex_container/align_items.d.ts +0 -1
- package/dist/types/src/base/ui/system/flex_container/align_items.d.ts.map +1 -1
- package/dist/types/src/base/ui/system/flex_container/flex_container_set.d.ts +0 -1
- package/dist/types/src/base/ui/system/flex_container/flex_container_set.d.ts.map +1 -1
- package/dist/types/src/base/ui/system/flex_container/flex_direction.d.ts +0 -1
- package/dist/types/src/base/ui/system/flex_container/flex_direction.d.ts.map +1 -1
- package/dist/types/src/base/ui/system/flex_container/flex_wrap.d.ts +0 -1
- package/dist/types/src/base/ui/system/flex_container/flex_wrap.d.ts.map +1 -1
- package/dist/types/src/base/ui/system/flex_container/justify_content.d.ts +0 -1
- package/dist/types/src/base/ui/system/flex_container/justify_content.d.ts.map +1 -1
- package/dist/types/src/base/ui/system/flex_container/justify_items.d.ts +0 -1
- package/dist/types/src/base/ui/system/flex_container/justify_items.d.ts.map +1 -1
- package/dist/types/src/base/ui/system/flex_item/align_self.d.ts +0 -1
- package/dist/types/src/base/ui/system/flex_item/align_self.d.ts.map +1 -1
- package/dist/types/src/base/ui/system/flex_item/flex.d.ts +0 -1
- package/dist/types/src/base/ui/system/flex_item/flex.d.ts.map +1 -1
- package/dist/types/src/base/ui/system/flex_item/flex_basis.d.ts +0 -1
- package/dist/types/src/base/ui/system/flex_item/flex_basis.d.ts.map +1 -1
- package/dist/types/src/base/ui/system/flex_item/flex_grow.d.ts +0 -1
- package/dist/types/src/base/ui/system/flex_item/flex_grow.d.ts.map +1 -1
- package/dist/types/src/base/ui/system/flex_item/flex_item_set.d.ts +0 -1
- package/dist/types/src/base/ui/system/flex_item/flex_item_set.d.ts.map +1 -1
- package/dist/types/src/base/ui/system/flex_item/flex_shrink.d.ts +0 -1
- package/dist/types/src/base/ui/system/flex_item/flex_shrink.d.ts.map +1 -1
- package/dist/types/src/base/ui/system/flex_item/justify_self.d.ts +0 -1
- package/dist/types/src/base/ui/system/flex_item/justify_self.d.ts.map +1 -1
- package/dist/types/src/base/ui/system/flex_item/order.d.ts +0 -1
- package/dist/types/src/base/ui/system/flex_item/order.d.ts.map +1 -1
- package/dist/types/src/base/ui/system/index.d.ts +52 -52
- package/dist/types/src/base/ui/system/index.d.ts.map +1 -1
- package/dist/types/src/base/ui/system/overflow.d.ts +0 -1
- package/dist/types/src/base/ui/system/overflow.d.ts.map +1 -1
- package/dist/types/src/base/ui/system/position/bottom.d.ts +0 -1
- package/dist/types/src/base/ui/system/position/bottom.d.ts.map +1 -1
- package/dist/types/src/base/ui/system/position/left.d.ts +0 -1
- package/dist/types/src/base/ui/system/position/left.d.ts.map +1 -1
- package/dist/types/src/base/ui/system/position/position.d.ts +0 -1
- package/dist/types/src/base/ui/system/position/position.d.ts.map +1 -1
- package/dist/types/src/base/ui/system/position/position_set.d.ts +0 -1
- package/dist/types/src/base/ui/system/position/position_set.d.ts.map +1 -1
- package/dist/types/src/base/ui/system/position/right.d.ts +0 -1
- package/dist/types/src/base/ui/system/position/right.d.ts.map +1 -1
- package/dist/types/src/base/ui/system/position/top.d.ts +0 -1
- package/dist/types/src/base/ui/system/position/top.d.ts.map +1 -1
- package/dist/types/src/base/ui/system/position/z_index.d.ts +0 -1
- package/dist/types/src/base/ui/system/position/z_index.d.ts.map +1 -1
- package/dist/types/src/base/ui/system/spacing/margin.d.ts +0 -1
- package/dist/types/src/base/ui/system/spacing/margin.d.ts.map +1 -1
- package/dist/types/src/base/ui/system/spacing/padding.d.ts +0 -1
- package/dist/types/src/base/ui/system/spacing/padding.d.ts.map +1 -1
- package/dist/types/src/base/ui/system/spacing/spacing_set.d.ts +0 -1
- package/dist/types/src/base/ui/system/spacing/spacing_set.d.ts.map +1 -1
- package/dist/types/src/base/ui/system/typography/font_family.d.ts +0 -1
- package/dist/types/src/base/ui/system/typography/font_family.d.ts.map +1 -1
- package/dist/types/src/base/ui/system/typography/font_size.d.ts +0 -1
- package/dist/types/src/base/ui/system/typography/font_size.d.ts.map +1 -1
- package/dist/types/src/base/ui/system/typography/font_style.d.ts +0 -1
- package/dist/types/src/base/ui/system/typography/font_style.d.ts.map +1 -1
- package/dist/types/src/base/ui/system/typography/font_weight.d.ts +0 -1
- package/dist/types/src/base/ui/system/typography/font_weight.d.ts.map +1 -1
- package/dist/types/src/base/ui/system/typography/letter_spacing.d.ts +0 -1
- package/dist/types/src/base/ui/system/typography/letter_spacing.d.ts.map +1 -1
- package/dist/types/src/base/ui/system/typography/line_height.d.ts +0 -1
- package/dist/types/src/base/ui/system/typography/line_height.d.ts.map +1 -1
- package/dist/types/src/base/ui/system/typography/text_align.d.ts +0 -1
- package/dist/types/src/base/ui/system/typography/text_align.d.ts.map +1 -1
- package/dist/types/src/base/ui/system/typography/text_color.d.ts +0 -1
- package/dist/types/src/base/ui/system/typography/text_color.d.ts.map +1 -1
- package/dist/types/src/base/ui/system/typography/text_decoration.d.ts +0 -1
- package/dist/types/src/base/ui/system/typography/text_decoration.d.ts.map +1 -1
- package/dist/types/src/base/ui/system/typography/text_transform.d.ts +0 -1
- package/dist/types/src/base/ui/system/typography/text_transform.d.ts.map +1 -1
- package/dist/types/src/base/ui/system/typography/typography_set.d.ts +0 -1
- package/dist/types/src/base/ui/system/typography/typography_set.d.ts.map +1 -1
- package/dist/types/src/base/ui/table_picker.d.ts +0 -21
- package/dist/types/src/base/ui/table_picker.d.ts.map +1 -1
- package/dist/types/src/base/ui/table_picker_synced.d.ts.map +1 -1
- package/dist/types/src/base/ui/text.d.ts +0 -3
- package/dist/types/src/base/ui/text.d.ts.map +1 -1
- package/dist/types/src/base/ui/text_button.d.ts +1 -5
- package/dist/types/src/base/ui/text_button.d.ts.map +1 -1
- package/dist/types/src/base/ui/theme/default_theme/index.d.ts +1 -1
- package/dist/types/src/base/ui/theme/theme_context.d.ts +1 -1
- package/dist/types/src/base/ui/theme/use_theme.d.ts +1 -1
- package/dist/types/src/base/ui/tooltip.d.ts +0 -16
- package/dist/types/src/base/ui/tooltip.d.ts.map +1 -1
- package/dist/types/src/base/ui/types/aria_props.d.ts.map +1 -1
- package/dist/types/src/base/ui/types/data_attributes_prop.d.ts +0 -4
- package/dist/types/src/base/ui/types/data_attributes_prop.d.ts.map +1 -1
- package/dist/types/src/base/ui/types/tooltip_anchor_props.d.ts +0 -7
- package/dist/types/src/base/ui/types/tooltip_anchor_props.d.ts.map +1 -1
- package/dist/types/src/base/ui/ui.d.ts +1 -0
- package/dist/types/src/base/ui/ui.d.ts.map +1 -1
- package/dist/types/src/base/ui/view_picker.d.ts +0 -23
- package/dist/types/src/base/ui/view_picker.d.ts.map +1 -1
- package/dist/types/src/base/ui/view_picker_synced.d.ts.map +1 -1
- package/dist/types/src/base/ui/viewport_constraint.d.ts +1 -14
- package/dist/types/src/base/ui/viewport_constraint.d.ts.map +1 -1
- package/dist/types/src/base/unstable_testing_utils.d.ts +1 -1
- package/dist/types/src/base/unstable_testing_utils.d.ts.map +1 -1
- package/dist/types/src/interface/assert_run_context.d.ts +2 -0
- package/dist/types/src/interface/assert_run_context.d.ts.map +1 -0
- package/dist/types/src/interface/index.d.ts +1 -6
- package/dist/types/src/interface/index.d.ts.map +1 -1
- package/dist/types/src/interface/models/models.d.ts +1 -0
- package/dist/types/src/interface/models/models.d.ts.map +1 -1
- package/dist/types/src/interface/models/mutations.d.ts.map +1 -1
- package/dist/types/src/interface/ui/initialize_block.d.ts.map +1 -1
- package/dist/types/src/interface/ui/ui.d.ts +1 -0
- package/dist/types/src/interface/ui/ui.d.ts.map +1 -1
- package/dist/types/src/interface/ui/use_custom_properties.d.ts +1 -1
- package/dist/types/src/shared/models/mutations_core.d.ts.map +1 -1
- package/dist/types/src/shared/private_utils.d.ts +0 -9
- package/dist/types/src/shared/private_utils.d.ts.map +1 -1
- package/dist/types/src/shared/ui/global_config_synced_component_helpers.d.ts +0 -2
- package/dist/types/src/shared/ui/global_config_synced_component_helpers.d.ts.map +1 -1
- package/dist/types/src/shared/ui/loader.d.ts.map +1 -1
- package/dist/types/src/shared/ui/with_hooks.d.ts +2 -2
- package/dist/types/src/shared/ui/with_hooks.d.ts.map +1 -1
- package/dist/types/src/testing/{abstract_mock_airtable_interface.d.ts → base/abstract_mock_airtable_interface.d.ts} +13 -13
- package/dist/types/src/testing/base/abstract_mock_airtable_interface.d.ts.map +1 -0
- package/dist/types/src/testing/interface/abstract_mock_airtable_interface.d.ts +51 -0
- package/dist/types/src/testing/interface/abstract_mock_airtable_interface.d.ts.map +1 -0
- package/models.js +1 -1
- package/package.json +24 -23
- package/types.js +1 -1
- package/dist/cjs/base/models/abstract_model_with_async_data.js +0 -273
- package/dist/cjs/base/models/base.js +0 -306
- package/dist/cjs/base/models/create_aggregators.js +0 -115
- package/dist/cjs/base/models/cursor.js +0 -393
- package/dist/cjs/base/models/field.js +0 -427
- package/dist/cjs/base/models/grouped_record_query_result.js +0 -399
- package/dist/cjs/base/models/linked_records_query_result.js +0 -728
- package/dist/cjs/base/models/mutations.js +0 -338
- package/dist/cjs/base/models/object_pool.js +0 -184
- package/dist/cjs/base/models/record.js +0 -304
- package/dist/cjs/base/models/record_query_result.js +0 -741
- package/dist/cjs/base/models/record_store.js +0 -825
- package/dist/cjs/base/models/session.js +0 -182
- package/dist/cjs/base/models/table.js +0 -668
- package/dist/cjs/base/models/table_or_view_query_result.js +0 -1013
- package/dist/cjs/base/models/view.js +0 -431
- package/dist/cjs/base/models/view_data_store.js +0 -403
- package/dist/cjs/base/models/view_metadata_query_result.js +0 -224
- package/dist/cjs/base/perform_record_action.js +0 -257
- package/dist/cjs/base/sdk.js +0 -233
- package/dist/cjs/base/settings_button.js +0 -138
- package/dist/cjs/base/ui/baymax_utils.js +0 -133
- package/dist/cjs/base/ui/block_wrapper.js +0 -143
- package/dist/cjs/base/ui/box.js +0 -110
- package/dist/cjs/base/ui/button.js +0 -182
- package/dist/cjs/base/ui/cell_renderer.js +0 -255
- package/dist/cjs/base/ui/choice_token.js +0 -110
- package/dist/cjs/base/ui/collaborator_token.js +0 -145
- package/dist/cjs/base/ui/color_palette.js +0 -239
- package/dist/cjs/base/ui/color_palette_synced.js +0 -98
- package/dist/cjs/base/ui/confirmation_dialog.js +0 -153
- package/dist/cjs/base/ui/dialog.js +0 -142
- package/dist/cjs/base/ui/dialog_close_button.js +0 -152
- package/dist/cjs/base/ui/expand_record_picker_async.js +0 -100
- package/dist/cjs/base/ui/field_icon.js +0 -62
- package/dist/cjs/base/ui/field_picker.js +0 -143
- package/dist/cjs/base/ui/field_picker_synced.js +0 -88
- package/dist/cjs/base/ui/form_field.js +0 -137
- package/dist/cjs/base/ui/geometry/point.js +0 -21
- package/dist/cjs/base/ui/geometry/rect.js +0 -67
- package/dist/cjs/base/ui/geometry/size.js +0 -21
- package/dist/cjs/base/ui/global_alert.js +0 -92
- package/dist/cjs/base/ui/heading.js +0 -181
- package/dist/cjs/base/ui/icon.js +0 -129
- package/dist/cjs/base/ui/input.js +0 -200
- package/dist/cjs/base/ui/input_synced.js +0 -89
- package/dist/cjs/base/ui/label.js +0 -105
- package/dist/cjs/base/ui/link.js +0 -229
- package/dist/cjs/base/ui/loader.js +0 -82
- package/dist/cjs/base/ui/modal.js +0 -184
- package/dist/cjs/base/ui/model_picker_select.js +0 -83
- package/dist/cjs/base/ui/popover.js +0 -407
- package/dist/cjs/base/ui/progress_bar.js +0 -128
- package/dist/cjs/base/ui/record_card.js +0 -653
- package/dist/cjs/base/ui/record_card_list.js +0 -377
- package/dist/cjs/base/ui/select.js +0 -247
- package/dist/cjs/base/ui/select_and_select_buttons_helpers.js +0 -87
- package/dist/cjs/base/ui/select_buttons.js +0 -192
- package/dist/cjs/base/ui/select_buttons_synced.js +0 -84
- package/dist/cjs/base/ui/select_synced.js +0 -87
- package/dist/cjs/base/ui/switch.js +0 -196
- package/dist/cjs/base/ui/switch_synced.js +0 -75
- package/dist/cjs/base/ui/synced.js +0 -70
- package/dist/cjs/base/ui/system/appearance/appearance_set.js +0 -30
- package/dist/cjs/base/ui/system/appearance/background_color.js +0 -21
- package/dist/cjs/base/ui/system/appearance/border_radius.js +0 -21
- package/dist/cjs/base/ui/system/appearance/box_shadow.js +0 -21
- package/dist/cjs/base/ui/system/appearance/opacity.js +0 -21
- package/dist/cjs/base/ui/system/dimensions/dimensions_set.js +0 -31
- package/dist/cjs/base/ui/system/dimensions/height.js +0 -21
- package/dist/cjs/base/ui/system/dimensions/max_height.js +0 -21
- package/dist/cjs/base/ui/system/dimensions/max_width.js +0 -21
- package/dist/cjs/base/ui/system/dimensions/min_height.js +0 -21
- package/dist/cjs/base/ui/system/dimensions/min_width.js +0 -21
- package/dist/cjs/base/ui/system/dimensions/width.js +0 -21
- package/dist/cjs/base/ui/system/display.js +0 -22
- package/dist/cjs/base/ui/system/flex_container/align_content.js +0 -18
- package/dist/cjs/base/ui/system/flex_container/align_items.js +0 -18
- package/dist/cjs/base/ui/system/flex_container/flex_container_set.js +0 -31
- package/dist/cjs/base/ui/system/flex_container/flex_direction.js +0 -18
- package/dist/cjs/base/ui/system/flex_container/flex_wrap.js +0 -18
- package/dist/cjs/base/ui/system/flex_container/justify_content.js +0 -18
- package/dist/cjs/base/ui/system/flex_container/justify_items.js +0 -19
- package/dist/cjs/base/ui/system/flex_item/align_self.js +0 -18
- package/dist/cjs/base/ui/system/flex_item/flex.js +0 -18
- package/dist/cjs/base/ui/system/flex_item/flex_basis.js +0 -18
- package/dist/cjs/base/ui/system/flex_item/flex_grow.js +0 -18
- package/dist/cjs/base/ui/system/flex_item/flex_item_set.js +0 -32
- package/dist/cjs/base/ui/system/flex_item/flex_shrink.js +0 -18
- package/dist/cjs/base/ui/system/flex_item/justify_self.js +0 -19
- package/dist/cjs/base/ui/system/flex_item/order.js +0 -18
- package/dist/cjs/base/ui/system/overflow.js +0 -24
- package/dist/cjs/base/ui/system/position/position.js +0 -18
- package/dist/cjs/base/ui/system/position/position_set.js +0 -31
- package/dist/cjs/base/ui/system/position/z_index.js +0 -21
- package/dist/cjs/base/ui/system/spacing/spacing_set.js +0 -27
- package/dist/cjs/base/ui/system/typography/font_family.js +0 -21
- package/dist/cjs/base/ui/system/typography/font_size.js +0 -21
- package/dist/cjs/base/ui/system/typography/font_style.js +0 -18
- package/dist/cjs/base/ui/system/typography/font_weight.js +0 -21
- package/dist/cjs/base/ui/system/typography/letter_spacing.js +0 -21
- package/dist/cjs/base/ui/system/typography/line_height.js +0 -18
- package/dist/cjs/base/ui/system/typography/text_align.js +0 -18
- package/dist/cjs/base/ui/system/typography/text_color.js +0 -21
- package/dist/cjs/base/ui/system/typography/text_decoration.js +0 -18
- package/dist/cjs/base/ui/system/typography/text_transform.js +0 -18
- package/dist/cjs/base/ui/system/typography/typography_set.js +0 -35
- package/dist/cjs/base/ui/system/utils/create_responsive_prop_type.js +0 -19
- package/dist/cjs/base/ui/system/utils/create_style_prop_types.js +0 -24
- package/dist/cjs/base/ui/system/utils/enum_prop_type_utils.js +0 -35
- package/dist/cjs/base/ui/system/utils/get_style_props_for_responsive_prop.js +0 -113
- package/dist/cjs/base/ui/table_picker.js +0 -95
- package/dist/cjs/base/ui/table_picker_synced.js +0 -84
- package/dist/cjs/base/ui/text.js +0 -150
- package/dist/cjs/base/ui/text_button.js +0 -228
- package/dist/cjs/base/ui/theme/default_theme/control_sizes.js +0 -96
- package/dist/cjs/base/ui/theme/default_theme/select_variants.js +0 -59
- package/dist/cjs/base/ui/theme/default_theme/switch_variants.js +0 -91
- package/dist/cjs/base/ui/tooltip.js +0 -215
- package/dist/cjs/base/ui/types/aria_props.js +0 -23
- package/dist/cjs/base/ui/types/data_attributes_prop.js +0 -18
- package/dist/cjs/base/ui/types/tooltip_anchor_props.js +0 -17
- package/dist/cjs/base/ui/use_styled_system.js +0 -32
- package/dist/cjs/base/ui/view_picker.js +0 -133
- package/dist/cjs/base/ui/view_picker_synced.js +0 -88
- package/dist/cjs/base/ui/viewport_constraint.js +0 -176
- package/dist/cjs/base/ui/with_styled_system.js +0 -165
- package/dist/cjs/base/undo_redo.js +0 -48
- package/dist/cjs/base/viewport.js +0 -397
- package/dist/cjs/injected/airtable_interface.js +0 -22
- package/dist/cjs/interface/index.js +0 -36
- package/dist/cjs/interface/models/base.js +0 -54
- package/dist/cjs/interface/models/field.js +0 -42
- package/dist/cjs/interface/models/mutations.js +0 -79
- package/dist/cjs/interface/models/record.js +0 -71
- package/dist/cjs/interface/models/record_store.js +0 -83
- package/dist/cjs/interface/models/session.js +0 -42
- package/dist/cjs/interface/models/table.js +0 -126
- package/dist/cjs/interface/sdk.js +0 -104
- package/dist/cjs/interface/types/mutations.js +0 -24
- package/dist/cjs/interface/ui/block_wrapper.js +0 -61
- package/dist/cjs/shared/global_config.js +0 -511
- package/dist/cjs/shared/models/abstract_model.js +0 -119
- package/dist/cjs/shared/models/base_core.js +0 -602
- package/dist/cjs/shared/models/field_core.js +0 -331
- package/dist/cjs/shared/models/mutations_core.js +0 -439
- package/dist/cjs/shared/models/record_core.js +0 -272
- package/dist/cjs/shared/models/record_store_core.js +0 -213
- package/dist/cjs/shared/models/session_core.js +0 -214
- package/dist/cjs/shared/models/table_core.js +0 -1561
- package/dist/cjs/shared/sdk_core.js +0 -115
- package/dist/cjs/shared/types/mutation_constants.js +0 -11
- package/dist/cjs/shared/ui/loader.js +0 -68
- package/dist/cjs/shared/watchable.js +0 -216
- package/dist/cjs/stats/block_stats.js +0 -96
- package/dist/cjs/testing/abstract_mock_airtable_interface.js +0 -277
- package/dist/types/src/base/ui/system/utils/create_responsive_prop_type.d.ts +0 -2
- package/dist/types/src/base/ui/system/utils/create_responsive_prop_type.d.ts.map +0 -1
- package/dist/types/src/base/ui/system/utils/create_style_prop_types.d.ts +0 -4
- package/dist/types/src/base/ui/system/utils/create_style_prop_types.d.ts.map +0 -1
- package/dist/types/src/base/ui/system/utils/enum_prop_type_utils.d.ts +0 -21
- package/dist/types/src/base/ui/system/utils/enum_prop_type_utils.d.ts.map +0 -1
- package/dist/types/src/testing/abstract_mock_airtable_interface.d.ts.map +0 -1
- /package/dist/{cjs → esm}/base/types/aggregators.js +0 -0
- /package/dist/{cjs → esm}/base/types/backend_fetch_types.js +0 -0
- /package/dist/{cjs → esm}/base/types/base.js +0 -0
- /package/dist/{cjs → esm}/base/types/cursor.js +0 -0
- /package/dist/{cjs → esm}/base/types/field.js +0 -0
- /package/dist/{cjs → esm}/base/types/record.js +0 -0
- /package/dist/{cjs → esm}/base/types/record_action_data.js +0 -0
- /package/dist/{cjs → esm}/base/types/table.js +0 -0
- /package/dist/{cjs → esm}/base/types/viewport.js +0 -0
- /package/dist/{cjs → esm}/base/ui/system/utils/csstype.js +0 -0
- /package/dist/{cjs → esm}/base/ui/system/utils/types.js +0 -0
- /package/dist/{cjs/interface/types/base.js → esm/base/ui/types/aria_props.js} +0 -0
- /package/dist/{cjs/interface/types/field.js → esm/base/ui/types/data_attributes_prop.js} +0 -0
- /package/dist/{cjs/interface/types/record.js → esm/base/ui/types/tooltip_anchor_props.js} +0 -0
- /package/dist/{cjs/interface/types/table.js → esm/interface/types/base.js} +0 -0
- /package/dist/{cjs/sdk_mode.js → esm/interface/types/field.js} +0 -0
- /package/dist/{cjs/shared → esm/interface}/types/record.js +0 -0
- /package/dist/{cjs/shared/types/airtable_interface_core.js → esm/interface/types/table.js} +0 -0
- /package/dist/{cjs → esm}/interface/ui/expand_record.js +0 -0
- /package/dist/{cjs/shared/types/attachment.js → esm/sdk_mode.js} +0 -0
- /package/dist/{cjs/shared/types/base_core.js → esm/shared/types/airtable_interface_core.js} +0 -0
- /package/dist/{cjs/shared/types/collaborator.js → esm/shared/types/attachment.js} +0 -0
- /package/dist/{cjs/shared/types/global_config.js → esm/shared/types/base_core.js} +0 -0
- /package/dist/{cjs/shared/types/hyper_ids.js → esm/shared/types/collaborator.js} +0 -0
- /package/dist/{cjs/shared/types/stat.js → esm/shared/types/global_config.js} +0 -0
- /package/dist/{cjs/shared/types/table_core.js → esm/shared/types/hyper_ids.js} +0 -0
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.FieldCore = void 0;
|
|
7
|
+
var _field_core = require("../types/field_core");
|
|
8
|
+
var _private_utils = require("../private_utils");
|
|
9
|
+
var _abstract_model = _interopRequireDefault(require("./abstract_model"));
|
|
10
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
|
+
// This doesn't follow our enum naming conventions because we want the keys
|
|
12
|
+
// to mirror the method/getter names on the model class.
|
|
13
|
+
const WatchableFieldKeys = Object.freeze({
|
|
14
|
+
name: 'name',
|
|
15
|
+
type: 'type',
|
|
16
|
+
options: 'options',
|
|
17
|
+
isComputed: 'isComputed',
|
|
18
|
+
description: 'description',
|
|
19
|
+
isFieldSynced: 'isFieldSynced'
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* All the watchable keys in a field.
|
|
24
|
+
* - `name`
|
|
25
|
+
* - `type`
|
|
26
|
+
* - `options`
|
|
27
|
+
* - `isComputed`
|
|
28
|
+
* - `description`
|
|
29
|
+
*/
|
|
30
|
+
|
|
31
|
+
/** @hidden */
|
|
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
|
+
|
|
43
|
+
/**
|
|
44
|
+
* @internal
|
|
45
|
+
*/
|
|
46
|
+
constructor(sdk, parentTable, fieldId) {
|
|
47
|
+
super(sdk, fieldId);
|
|
48
|
+
this._parentTable = parentTable;
|
|
49
|
+
this._cachedFieldTypeConfigOrNull = null;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* @internal
|
|
54
|
+
*/
|
|
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;
|
|
105
|
+
}
|
|
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();
|
|
128
|
+
|
|
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
|
+
}
|
|
134
|
+
|
|
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) {
|
|
140
|
+
return this._cachedFieldTypeConfigOrNull;
|
|
141
|
+
}
|
|
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
|
+
}
|
|
150
|
+
|
|
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
|
+
});
|
|
244
|
+
|
|
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;
|
|
251
|
+
}
|
|
252
|
+
|
|
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;
|
|
259
|
+
}
|
|
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);
|
|
269
|
+
}
|
|
270
|
+
if (dirtyPaths.type) {
|
|
271
|
+
this._onChange(WatchableFieldKeys.type);
|
|
272
|
+
|
|
273
|
+
// TODO: it would be better if we only trigger this when
|
|
274
|
+
// we know isComputed changed.
|
|
275
|
+
this._onChange(WatchableFieldKeys.isComputed);
|
|
276
|
+
}
|
|
277
|
+
if (dirtyPaths.typeOptions) {
|
|
278
|
+
this._onChange(WatchableFieldKeys.options);
|
|
279
|
+
}
|
|
280
|
+
if (dirtyPaths.description) {
|
|
281
|
+
this._onChange(WatchableFieldKeys.description);
|
|
282
|
+
}
|
|
283
|
+
if (dirtyPaths.isSynced) {
|
|
284
|
+
this._onChange(WatchableFieldKeys.isFieldSynced);
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
exports.FieldCore = FieldCore;
|
|
@@ -0,0 +1,343 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.MutationsCore = exports.MUTATIONS_MAX_BATCH_SIZE = void 0;
|
|
7
|
+
var _mutations_core = require("../types/mutations_core");
|
|
8
|
+
var _error_utils = require("../error_utils");
|
|
9
|
+
var _private_utils = require("../private_utils");
|
|
10
|
+
// Limit for how many items can be updated from a single batch mutation.
|
|
11
|
+
// This is number of records for MULTIPLE_RECORDS type mutations, and number of global config paths
|
|
12
|
+
// for SET_MULTIPLE_GLOBAL_CONFIG_PATHS.
|
|
13
|
+
// Same limit is enforced liveapp-side
|
|
14
|
+
const MUTATIONS_MAX_BATCH_SIZE = exports.MUTATIONS_MAX_BATCH_SIZE = 50;
|
|
15
|
+
|
|
16
|
+
// Liveapp requests must be under 2mb in size: we enforce a 1.9mb limit here to allow space for
|
|
17
|
+
// the other parts of the request
|
|
18
|
+
const MUTATIONS_MAX_BODY_SIZE = 1.9 * 1024 * 1024;
|
|
19
|
+
const MUTATION_HOLD_FOR_MS = 100;
|
|
20
|
+
|
|
21
|
+
/** @hidden */
|
|
22
|
+
class MutationsCore {
|
|
23
|
+
/** @internal */
|
|
24
|
+
|
|
25
|
+
/** @internal */
|
|
26
|
+
|
|
27
|
+
/** @internal */
|
|
28
|
+
|
|
29
|
+
/** @internal */
|
|
30
|
+
|
|
31
|
+
/** @internal */
|
|
32
|
+
|
|
33
|
+
/** @internal */
|
|
34
|
+
|
|
35
|
+
/** @hidden */
|
|
36
|
+
constructor(sdk, session, base, applyModelChanges, applyGlobalConfigUpdates) {
|
|
37
|
+
this._airtableInterface = sdk.__airtableInterface;
|
|
38
|
+
this._session = session;
|
|
39
|
+
this._sdk = sdk;
|
|
40
|
+
this._base = base;
|
|
41
|
+
this._applyModelChanges = applyModelChanges;
|
|
42
|
+
this._applyGlobalConfigUpdates = applyGlobalConfigUpdates;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/** @hidden */
|
|
46
|
+
async applyMutationAsync(mutation) {
|
|
47
|
+
this._assertMutationIsValid(mutation);
|
|
48
|
+
// Limit check is after validity check so that we display errors for when users pass in
|
|
49
|
+
// objects correctly (eg updating linked records cell value to be a record object) -
|
|
50
|
+
// otherwise the limit check will fail due to circular objects being converted to JSON first
|
|
51
|
+
this._assertMutationUnderLimits(mutation);
|
|
52
|
+
const permissionCheck = this.checkPermissionsForMutation(mutation);
|
|
53
|
+
if (!permissionCheck.hasPermission) {
|
|
54
|
+
throw (0, _error_utils.spawnError)('Cannot apply %s mutation: %s', mutation.type, permissionCheck.reasonDisplayString);
|
|
55
|
+
}
|
|
56
|
+
const didApplyOptimisticUpdates = this._applyOptimisticUpdatesForMutation(mutation);
|
|
57
|
+
try {
|
|
58
|
+
await this._getAirtableInterfaceAsAirtableInterfaceCore().applyMutationAsync(mutation, {
|
|
59
|
+
holdForMs: MUTATION_HOLD_FOR_MS
|
|
60
|
+
});
|
|
61
|
+
} catch (err) {
|
|
62
|
+
if (didApplyOptimisticUpdates) {
|
|
63
|
+
// if we applied optimistic updates, we can't gracefully handle a promise rejection
|
|
64
|
+
// here - we can't un-apply optimistic updates, so the SDK's internal data model is
|
|
65
|
+
// in an unexpected state. Instead of letting this promise get rejected, throw an
|
|
66
|
+
// error after an async gap to crash the block, and make this promise await
|
|
67
|
+
// something that will never resolve so we don't run any of the developers error-
|
|
68
|
+
// handling code.
|
|
69
|
+
setTimeout(() => {
|
|
70
|
+
throw err;
|
|
71
|
+
}, 0);
|
|
72
|
+
await new Promise(() => {});
|
|
73
|
+
} else {
|
|
74
|
+
throw err;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/** @hidden */
|
|
80
|
+
checkPermissionsForMutation(mutation) {
|
|
81
|
+
return this._getAirtableInterfaceAsAirtableInterfaceCore().checkPermissionsForMutation(mutation, this._base.__getBaseData());
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// Not really sure why this is necessary. It seems like all callsites could just use
|
|
85
|
+
// this._airtableInterface directly, but TS complains.
|
|
86
|
+
/** @hidden */
|
|
87
|
+
_getAirtableInterfaceAsAirtableInterfaceCore() {
|
|
88
|
+
return this._airtableInterface;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/** @internal */
|
|
92
|
+
_assertMutationUnderLimits(mutation) {
|
|
93
|
+
// Two limits to check here:
|
|
94
|
+
// - for record-related mutations, it isn't above MUTATIONS_MAX_BATCH_SIZE
|
|
95
|
+
// - mutation payload size won't exceed liveapp request payload size limit
|
|
96
|
+
// Requests are sent as form-encoded utf-8 (1 byte characters)
|
|
97
|
+
if (encodeURIComponent(JSON.stringify(mutation)).length > MUTATIONS_MAX_BODY_SIZE) {
|
|
98
|
+
throw (0, _error_utils.spawnError)('Request exceeds maximum size limit of %s bytes', MUTATIONS_MAX_BODY_SIZE);
|
|
99
|
+
}
|
|
100
|
+
if (this._doesMutationExceedBatchSizeLimit(mutation)) {
|
|
101
|
+
throw (0, _error_utils.spawnError)('Request exceeds maximum batch size limit of %s items', MUTATIONS_MAX_BATCH_SIZE);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/** @internal */
|
|
106
|
+
_applyOptimisticUpdatesForMutation(mutation) {
|
|
107
|
+
// GlobalConfig updates are different to other mutations (on models): for models, we
|
|
108
|
+
// only apply optimistic updates if the relevant models are loaded, whereas for
|
|
109
|
+
// SET_MULTIPLE_GLOBAL_CONFIG_PATHS we always apply optimistic updates.
|
|
110
|
+
if (mutation.type === _mutations_core.MutationTypesCore.SET_MULTIPLE_GLOBAL_CONFIG_PATHS) {
|
|
111
|
+
// Not sure why this cast is necessary, but TS complains without it.
|
|
112
|
+
const _mutation = mutation;
|
|
113
|
+
this._applyGlobalConfigUpdates(_mutation.updates);
|
|
114
|
+
return true;
|
|
115
|
+
}
|
|
116
|
+
const modelChanges = this._getOptimisticModelChangesForMutation(mutation);
|
|
117
|
+
if (modelChanges.length > 0) {
|
|
118
|
+
this._applyModelChanges(modelChanges);
|
|
119
|
+
return true;
|
|
120
|
+
}
|
|
121
|
+
return false;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/** @internal */
|
|
125
|
+
_doesMutationExceedBatchSizeLimit(mutation) {
|
|
126
|
+
switch (mutation.type) {
|
|
127
|
+
case _mutations_core.MutationTypesCore.SET_MULTIPLE_RECORDS_CELL_VALUES:
|
|
128
|
+
case _mutations_core.MutationTypesCore.CREATE_MULTIPLE_RECORDS:
|
|
129
|
+
return mutation.records.length > MUTATIONS_MAX_BATCH_SIZE;
|
|
130
|
+
case _mutations_core.MutationTypesCore.DELETE_MULTIPLE_RECORDS:
|
|
131
|
+
return mutation.recordIds.length > MUTATIONS_MAX_BATCH_SIZE;
|
|
132
|
+
case _mutations_core.MutationTypesCore.SET_MULTIPLE_GLOBAL_CONFIG_PATHS:
|
|
133
|
+
return mutation.updates.length > MUTATIONS_MAX_BATCH_SIZE;
|
|
134
|
+
// The "default" case cannot be reached because this method is only
|
|
135
|
+
// invoked after the mutation type has been validated.
|
|
136
|
+
// istanbul ignore next
|
|
137
|
+
default:
|
|
138
|
+
return false;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/** @internal */
|
|
143
|
+
_assertFieldIsValidForMutation(field) {
|
|
144
|
+
if (field.isComputed) {
|
|
145
|
+
throw (0, _error_utils.spawnError)("Can't set cell values: Field '%s' is computed and cannot be set", field.name);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/** @internal */
|
|
150
|
+
_assertMutationIsValid(mutation) {
|
|
151
|
+
// We call validate the data (including any cell values) because if the data required for
|
|
152
|
+
// us to do that is already loaded in the block, we can error out before applying
|
|
153
|
+
// optimistic updates or sending the update to liveapp. That means that the error is
|
|
154
|
+
// recoverable. Once we apply optimistic updates, if liveapp rejects the update then we
|
|
155
|
+
// can't recover from that - we have to crash the block. We _could_ skip over these
|
|
156
|
+
// validations - it wouldn't cause issues outside of the block frame. But running them
|
|
157
|
+
// gives us slightly more confidence that we can do something other than completely crash
|
|
158
|
+
// the block in the event of an invalid mutation.
|
|
159
|
+
|
|
160
|
+
const appInterface = this._sdk.__appInterface;
|
|
161
|
+
switch (mutation.type) {
|
|
162
|
+
case _mutations_core.MutationTypesCore.SET_MULTIPLE_RECORDS_CELL_VALUES:
|
|
163
|
+
{
|
|
164
|
+
const {
|
|
165
|
+
tableId,
|
|
166
|
+
records
|
|
167
|
+
} = mutation;
|
|
168
|
+
const table = this._base.getTableByIdIfExists(tableId);
|
|
169
|
+
if (!table) {
|
|
170
|
+
throw (0, _error_utils.spawnError)("Can't set cell values: No table with id %s exists", tableId);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
// For every mutation, we check that we're not trying to set fields that we don't support
|
|
174
|
+
// mutations for yet. When record data is loaded, we also check that the record we're
|
|
175
|
+
// updating actually exists and that the cell values are valid.
|
|
176
|
+
const recordStore = this._base.__getRecordStore(tableId);
|
|
177
|
+
const checkedFieldIds = new Set();
|
|
178
|
+
for (const record of records) {
|
|
179
|
+
let existingRecord = null;
|
|
180
|
+
if (this._isRecordStoreReadyForMutations(recordStore)) {
|
|
181
|
+
existingRecord = recordStore.getRecordByIdIfExists(record.id);
|
|
182
|
+
if (!existingRecord) {
|
|
183
|
+
throw (0, _error_utils.spawnError)("Can't set cell values: No record with id %s exists", record.id);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
for (const fieldId of Object.keys(record.cellValuesByFieldId)) {
|
|
187
|
+
const field = table.getFieldByIdIfExists(fieldId);
|
|
188
|
+
if (!field) {
|
|
189
|
+
throw (0, _error_utils.spawnError)("Can't set cell values: No field with id %s exists in table '%s'", fieldId, table.name);
|
|
190
|
+
}
|
|
191
|
+
if (!checkedFieldIds.has(fieldId)) {
|
|
192
|
+
this._assertFieldIsValidForMutation(field);
|
|
193
|
+
checkedFieldIds.add(fieldId);
|
|
194
|
+
}
|
|
195
|
+
if (existingRecord && this._isFieldAvailableForMutation(recordStore, field.id)) {
|
|
196
|
+
const validationResult = this._airtableInterface.fieldTypeProvider.validateCellValueForUpdate(appInterface, record.cellValuesByFieldId[fieldId], existingRecord._getRawCellValue(field), field._data);
|
|
197
|
+
if (!validationResult.isValid) {
|
|
198
|
+
throw (0, _error_utils.spawnError)("Can't set cell values: invalid cell value for field '%s'.\n%s", field.name, validationResult.reason);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
case _mutations_core.MutationTypesCore.DELETE_MULTIPLE_RECORDS:
|
|
206
|
+
{
|
|
207
|
+
const {
|
|
208
|
+
tableId,
|
|
209
|
+
recordIds
|
|
210
|
+
} = mutation;
|
|
211
|
+
const table = this._base.getTableByIdIfExists(tableId);
|
|
212
|
+
if (!table) {
|
|
213
|
+
throw (0, _error_utils.spawnError)("Can't delete records: No table with id %s exists", tableId);
|
|
214
|
+
}
|
|
215
|
+
const recordStore = this._base.__getRecordStore(tableId);
|
|
216
|
+
if (this._isRecordStoreReadyForMutations(recordStore)) {
|
|
217
|
+
for (const recordId of recordIds) {
|
|
218
|
+
const record = recordStore.getRecordByIdIfExists(recordId);
|
|
219
|
+
if (!record) {
|
|
220
|
+
throw (0, _error_utils.spawnError)("Can't delete records: No record with id %s exists in table '%s'", recordId, table.name);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
case _mutations_core.MutationTypesCore.CREATE_MULTIPLE_RECORDS:
|
|
227
|
+
{
|
|
228
|
+
const {
|
|
229
|
+
tableId,
|
|
230
|
+
records
|
|
231
|
+
} = mutation;
|
|
232
|
+
const checkedFieldIds = new Set();
|
|
233
|
+
const table = this._base.getTableByIdIfExists(tableId);
|
|
234
|
+
if (!table) {
|
|
235
|
+
throw (0, _error_utils.spawnError)("Can't create records: No table with id %s exists", tableId);
|
|
236
|
+
}
|
|
237
|
+
for (const record of records) {
|
|
238
|
+
for (const fieldId of Object.keys(record.cellValuesByFieldId)) {
|
|
239
|
+
const field = table.getFieldByIdIfExists(fieldId);
|
|
240
|
+
if (!field) {
|
|
241
|
+
throw (0, _error_utils.spawnError)("Can't create records: No field with id %s exists in table '%s'", fieldId, table.name);
|
|
242
|
+
}
|
|
243
|
+
if (!checkedFieldIds.has(fieldId)) {
|
|
244
|
+
this._assertFieldIsValidForMutation(field);
|
|
245
|
+
checkedFieldIds.add(fieldId);
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
// Current cell value is null since the record doesn't exist.
|
|
249
|
+
const validationResult = this._airtableInterface.fieldTypeProvider.validateCellValueForUpdate(appInterface, record.cellValuesByFieldId[fieldId], null, field._data);
|
|
250
|
+
if (!validationResult.isValid) {
|
|
251
|
+
throw (0, _error_utils.spawnError)("Can't create records: invalid cell value for field '%s'.\n%s", field.name, validationResult.reason);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
return;
|
|
256
|
+
}
|
|
257
|
+
case _mutations_core.MutationTypesCore.SET_MULTIPLE_GLOBAL_CONFIG_PATHS:
|
|
258
|
+
{
|
|
259
|
+
// globalConfig update is a special case: globalConfig handles validation before
|
|
260
|
+
// invoking this mutation, since it relies on internal state to validate the
|
|
261
|
+
// paths being set.
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
default:
|
|
265
|
+
throw (0, _error_utils.spawnError)('unhandled mutation type: %s', mutation.type);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
/** @internal */
|
|
270
|
+
_getOptimisticModelChangesForMutation(mutation) {
|
|
271
|
+
switch (mutation.type) {
|
|
272
|
+
case _mutations_core.MutationTypesCore.SET_MULTIPLE_RECORDS_CELL_VALUES:
|
|
273
|
+
{
|
|
274
|
+
const {
|
|
275
|
+
tableId,
|
|
276
|
+
records
|
|
277
|
+
} = mutation;
|
|
278
|
+
const recordStore = this._base.__getRecordStore(tableId);
|
|
279
|
+
return records.flatMap(record => Object.keys(record.cellValuesByFieldId).filter(fieldId => this._isFieldAvailableForMutation(recordStore, fieldId)).map(fieldId => ({
|
|
280
|
+
path: ['tablesById', tableId, 'recordsById', record.id, 'cellValuesByFieldId', fieldId],
|
|
281
|
+
value: record.cellValuesByFieldId[fieldId]
|
|
282
|
+
})));
|
|
283
|
+
}
|
|
284
|
+
case _mutations_core.MutationTypesCore.DELETE_MULTIPLE_RECORDS:
|
|
285
|
+
{
|
|
286
|
+
const {
|
|
287
|
+
tableId,
|
|
288
|
+
recordIds
|
|
289
|
+
} = mutation;
|
|
290
|
+
return recordIds.map(recordId => ({
|
|
291
|
+
path: ['tablesById', tableId, 'recordsById', recordId],
|
|
292
|
+
value: undefined
|
|
293
|
+
}));
|
|
294
|
+
}
|
|
295
|
+
case _mutations_core.MutationTypesCore.CREATE_MULTIPLE_RECORDS:
|
|
296
|
+
{
|
|
297
|
+
const {
|
|
298
|
+
tableId,
|
|
299
|
+
records
|
|
300
|
+
} = mutation;
|
|
301
|
+
const recordStore = this._base.__getRecordStore(tableId);
|
|
302
|
+
return records.map(record => {
|
|
303
|
+
// Only apply optimistic changes for fields that are "available" for mutation
|
|
304
|
+
const filteredCellValuesByFieldId = {};
|
|
305
|
+
for (const [fieldId, cellValue] of (0, _private_utils.entries)(record.cellValuesByFieldId)) {
|
|
306
|
+
if (this._isFieldAvailableForMutation(recordStore, fieldId)) {
|
|
307
|
+
filteredCellValuesByFieldId[fieldId] = cellValue;
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
return {
|
|
311
|
+
path: ['tablesById', tableId, 'recordsById', record.id],
|
|
312
|
+
value: {
|
|
313
|
+
...this._getDefaultRecordProperties(),
|
|
314
|
+
id: record.id,
|
|
315
|
+
cellValuesByFieldId: filteredCellValuesByFieldId
|
|
316
|
+
}
|
|
317
|
+
};
|
|
318
|
+
});
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
// The following branch is unreachable because this method's only
|
|
322
|
+
// call site is preceded by an explicit guard for this condition.
|
|
323
|
+
// istanbul ignore next
|
|
324
|
+
case _mutations_core.MutationTypesCore.SET_MULTIPLE_GLOBAL_CONFIG_PATHS:
|
|
325
|
+
{
|
|
326
|
+
throw (0, _error_utils.spawnError)('attempting to generate model updates for SET_MULTIPLE_GLOBAL_CONFIG_PATH');
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
// The following branch is unreachable because this method's only
|
|
330
|
+
// call site is preceded by an explicit guard for this condition.
|
|
331
|
+
// istanbul ignore next
|
|
332
|
+
default:
|
|
333
|
+
throw (0, _error_utils.spawnError)('unhandled mutation type: %s', mutation.type);
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
/** @internal */
|
|
338
|
+
|
|
339
|
+
/** @internal */
|
|
340
|
+
|
|
341
|
+
/** @internal */
|
|
342
|
+
}
|
|
343
|
+
exports.MutationsCore = MutationsCore;
|