@airtable/blocks 0.0.0-experimental-c4b2228f4-20250630 → 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 +17 -44
- 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/models/table.d.ts.map +1 -1
- package/dist/types/src/interface/types/field.d.ts +6 -0
- package/dist/types/src/interface/types/field.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/field_core.d.ts +3 -1
- package/dist/types/src/shared/models/field_core.d.ts.map +1 -1
- package/dist/types/src/shared/models/mutations_core.d.ts.map +1 -1
- package/dist/types/src/shared/models/table_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/types/field_core.d.ts +19 -1
- package/dist/types/src/shared/types/field_core.d.ts.map +1 -1
- package/dist/types/src/shared/types/mutations_core.d.ts +8 -4
- package/dist/types/src/shared/types/mutations_core.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/use_watchable.d.ts +4 -2
- package/dist/types/src/shared/ui/use_watchable.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 -92
- 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 -329
- 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 -1530
- 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,326 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _private_utils = require("../../shared/private_utils");
|
|
8
|
+
var _mutations = require("../types/mutations");
|
|
9
|
+
var _abstract_model = _interopRequireDefault(require("../../shared/models/abstract_model"));
|
|
10
|
+
var _object_pool = _interopRequireDefault(require("./object_pool"));
|
|
11
|
+
var _record_query_result = _interopRequireWildcard(require("./record_query_result"));
|
|
12
|
+
var _view_metadata_query_result = _interopRequireDefault(require("./view_metadata_query_result"));
|
|
13
|
+
var RecordColoring = _interopRequireWildcard(require("./record_coloring"));
|
|
14
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
15
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
16
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
17
|
+
/** @module @airtable/blocks/models: View */ /** */
|
|
18
|
+
|
|
19
|
+
// This doesn't follow our enum naming conventions because we want the keys
|
|
20
|
+
// to mirror the method/getter names on the model class.
|
|
21
|
+
const WatchableViewKeys = Object.freeze({
|
|
22
|
+
name: 'name',
|
|
23
|
+
isLockedView: 'isLockedView'
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* A key in {@link View} that can be watched.
|
|
28
|
+
* - `name`
|
|
29
|
+
*/
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* A class that represents an Airtable view. Every {@link Table} has one or more views.
|
|
33
|
+
*
|
|
34
|
+
* @docsPath models/View
|
|
35
|
+
*/
|
|
36
|
+
class View extends _abstract_model.default {
|
|
37
|
+
/** @internal */
|
|
38
|
+
static _className = 'View';
|
|
39
|
+
/** @internal */
|
|
40
|
+
static _isWatchableKey(key) {
|
|
41
|
+
return (0, _private_utils.isEnumValue)(WatchableViewKeys, key);
|
|
42
|
+
}
|
|
43
|
+
/** @internal */
|
|
44
|
+
|
|
45
|
+
/** @internal */
|
|
46
|
+
|
|
47
|
+
/** @internal */
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* @internal
|
|
51
|
+
*/
|
|
52
|
+
constructor(sdk, parentTable, viewDataStore, viewId) {
|
|
53
|
+
super(sdk, viewId);
|
|
54
|
+
this._parentTable = parentTable;
|
|
55
|
+
this._viewDataStore = viewDataStore;
|
|
56
|
+
this.__viewMetadataQueryResultPool = new _object_pool.default(_view_metadata_query_result.default);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* @internal
|
|
61
|
+
*/
|
|
62
|
+
get _dataOrNullIfDeleted() {
|
|
63
|
+
const tableData = this._baseData.tablesById[this.parentTable.id];
|
|
64
|
+
return tableData?.viewsById[this._id] ?? null;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* The table that this view belongs to. Should never change because views aren't moved between tables.
|
|
68
|
+
*
|
|
69
|
+
* @internal (since we may not be able to return parent model instances in the immutable models world)
|
|
70
|
+
* @example
|
|
71
|
+
* ```js
|
|
72
|
+
* const view = myTable.getViewByName('Grid View');
|
|
73
|
+
* console.log(view.parentTable.id === myTable.id);
|
|
74
|
+
* // => true
|
|
75
|
+
* ```
|
|
76
|
+
*/
|
|
77
|
+
get parentTable() {
|
|
78
|
+
return this._parentTable;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* The name of the view. Can be watched.
|
|
82
|
+
*
|
|
83
|
+
* @example
|
|
84
|
+
* ```js
|
|
85
|
+
* console.log(myView.name);
|
|
86
|
+
* // => 'Grid view'
|
|
87
|
+
* ```
|
|
88
|
+
*/
|
|
89
|
+
get name() {
|
|
90
|
+
return this._data.name;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* The type of the view, such as Grid, Calendar, or Kanban. Should never change because view types cannot be modified.
|
|
94
|
+
*
|
|
95
|
+
* @example
|
|
96
|
+
* ```js
|
|
97
|
+
* console.log(myView.type);
|
|
98
|
+
* // => 'kanban'
|
|
99
|
+
* ```
|
|
100
|
+
*/
|
|
101
|
+
get type() {
|
|
102
|
+
return this._data.type;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* If the view is locked. Can be watched.
|
|
106
|
+
*
|
|
107
|
+
* @example
|
|
108
|
+
* ```js
|
|
109
|
+
* console.log(myView.isLockedView);
|
|
110
|
+
* // => false
|
|
111
|
+
* ```
|
|
112
|
+
*/
|
|
113
|
+
get isLockedView() {
|
|
114
|
+
return this._data.isLockedView;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* The URL for the view. You can visit this URL in the browser to be taken to the view in the Airtable UI.
|
|
118
|
+
*
|
|
119
|
+
* @example
|
|
120
|
+
* ```js
|
|
121
|
+
* console.log(myView.url);
|
|
122
|
+
* // => 'https://airtable.com/appxxxxxxxxxxxxxx/tblxxxxxxxxxxxxxx/viwxxxxxxxxxxxxxx'
|
|
123
|
+
* ```
|
|
124
|
+
*/
|
|
125
|
+
get url() {
|
|
126
|
+
return this._sdk.__airtableInterface.urlConstructor.getViewUrl(this.id, this.parentTable.id);
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Select records from the view. Returns a {@link RecordQueryResult}.
|
|
130
|
+
*
|
|
131
|
+
* Consider using {@link useRecords} or {@link useRecordIds} instead, unless you need the
|
|
132
|
+
* features of a QueryResult (e.g. `queryResult.getRecordById`). Record hooks handle
|
|
133
|
+
* loading/unloading and updating your UI automatically, but manually `select`ing records is
|
|
134
|
+
* useful for one-off data processing.
|
|
135
|
+
*
|
|
136
|
+
* @param opts Options for the query, such as sorts, fields, and record coloring. By
|
|
137
|
+
* default, records will be coloured according to the view.
|
|
138
|
+
* @example
|
|
139
|
+
* ```js
|
|
140
|
+
* import {useBase, useRecords} from '@airtable/blocks/base/ui';
|
|
141
|
+
* import React from 'react';
|
|
142
|
+
*
|
|
143
|
+
* function TodoList() {
|
|
144
|
+
* const base = useBase();
|
|
145
|
+
* const table = base.getTableByName('Tasks');
|
|
146
|
+
* const view = table.getViewByName('Grid view');
|
|
147
|
+
*
|
|
148
|
+
* const queryResult = view.selectRecords();
|
|
149
|
+
* const records = useRecords(queryResult);
|
|
150
|
+
*
|
|
151
|
+
* return (
|
|
152
|
+
* <ul>
|
|
153
|
+
* {records.map(record => (
|
|
154
|
+
* <li key={record.id}>
|
|
155
|
+
* {record.name || 'Unnamed record'}
|
|
156
|
+
* </li>
|
|
157
|
+
* ))}
|
|
158
|
+
* </ul>
|
|
159
|
+
* );
|
|
160
|
+
* }
|
|
161
|
+
* ```
|
|
162
|
+
*/
|
|
163
|
+
selectRecords() {
|
|
164
|
+
let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
165
|
+
const normalizedOpts = _record_query_result.default._normalizeOpts(this.parentTable, this._viewDataStore.parentRecordStore, {
|
|
166
|
+
...opts,
|
|
167
|
+
recordColorMode: opts.recordColorMode === undefined ? RecordColoring.modes.byView(this) : opts.recordColorMode
|
|
168
|
+
});
|
|
169
|
+
return this.parentTable.__tableOrViewQueryResultPool.getObjectForReuse(this._sdk, this, normalizedOpts);
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Select and load records from the view. Returns a {@link RecordQueryResult} promise where
|
|
173
|
+
* record data has been loaded.
|
|
174
|
+
*
|
|
175
|
+
* Consider using {@link useRecords} or {@link useRecordIds} instead, unless you need the
|
|
176
|
+
* features of a QueryResult (e.g. `queryResult.getRecordById`). Record hooks handle
|
|
177
|
+
* loading/unloading and updating your UI automatically, but manually `select`ing records is
|
|
178
|
+
* useful for one-off data processing.
|
|
179
|
+
*
|
|
180
|
+
* Once you've finished with your query, remember to call `queryResult.unloadData()`.
|
|
181
|
+
*
|
|
182
|
+
* @param opts Options for the query, such as sorts, fields, and record coloring. By
|
|
183
|
+
* default, records will be coloured according to the view.
|
|
184
|
+
* @example
|
|
185
|
+
* ```js
|
|
186
|
+
* async function getRecordCountAsync(view) {
|
|
187
|
+
* const query = await view.selectRecordsAsync();
|
|
188
|
+
* const recordCount = query.recordIds.length;
|
|
189
|
+
* query.unloadData();
|
|
190
|
+
* return recordCount;
|
|
191
|
+
* }
|
|
192
|
+
* ```
|
|
193
|
+
*/
|
|
194
|
+
async selectRecordsAsync() {
|
|
195
|
+
let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
196
|
+
const queryResult = this.selectRecords(opts);
|
|
197
|
+
await queryResult.loadDataAsync();
|
|
198
|
+
return queryResult;
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Select the field order and visible fields from the view. Returns a
|
|
202
|
+
* {@link ViewMetadataQueryResult}.
|
|
203
|
+
*
|
|
204
|
+
* Consider using {@link useViewMetadata} instead if you're creating a React UI. The
|
|
205
|
+
* {@link useViewMetadata} hook handles loading/unloading and updating your UI automatically,
|
|
206
|
+
* but manually `select`ing data is useful for one-off data processing.
|
|
207
|
+
*
|
|
208
|
+
* @example
|
|
209
|
+
* ```js
|
|
210
|
+
* async function loadMetadataForViewAsync(view) {
|
|
211
|
+
* const viewMetadata = view.selectMetadata();
|
|
212
|
+
* await viewMetadata.loadDataAsync();
|
|
213
|
+
*
|
|
214
|
+
* console.log('Visible fields:');
|
|
215
|
+
* console.log(viewMetadata.visibleFields.map(field => field.name));
|
|
216
|
+
* // => ['Field 1', 'Field 2', 'Field 3']
|
|
217
|
+
*
|
|
218
|
+
* console.log('All fields:');
|
|
219
|
+
* console.log(viewMetadata.allFields.map(field => field.name));
|
|
220
|
+
* // => ['Field 1', 'Field 2', 'Field 3', 'Hidden field 4']
|
|
221
|
+
*
|
|
222
|
+
* viewMetadata.unloadData();
|
|
223
|
+
* }
|
|
224
|
+
* ```
|
|
225
|
+
*/
|
|
226
|
+
selectMetadata() {
|
|
227
|
+
return this.__viewMetadataQueryResultPool.getObjectForReuse(this._sdk, this, this._viewDataStore);
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Select and load the field order and visible fields from the view. Returns a
|
|
231
|
+
* {@link ViewMetadataQueryResult} promise where the metadata has already been loaded.
|
|
232
|
+
*
|
|
233
|
+
* Consider using {@link useViewMetadata} instead if you're creating a React UI. The
|
|
234
|
+
* {@link useViewMetadata} hook handles loading/unloading and updating your UI automatically,
|
|
235
|
+
* but manually `select`ing data is useful for one-off data processing.
|
|
236
|
+
*
|
|
237
|
+
* @example
|
|
238
|
+
* ```js
|
|
239
|
+
* async function loadMetadataForViewAsync(view) {
|
|
240
|
+
* const viewMetadata = await view.selectMetadata();
|
|
241
|
+
*
|
|
242
|
+
* console.log('Visible fields:');
|
|
243
|
+
* console.log(viewMetadata.visibleFields.map(field => field.name));
|
|
244
|
+
* // => ['Field 1', 'Field 2', 'Field 3']
|
|
245
|
+
*
|
|
246
|
+
* console.log('All fields:');
|
|
247
|
+
* console.log(viewMetadata.allFields.map(field => field.name));
|
|
248
|
+
* // => ['Field 1', 'Field 2', 'Field 3', 'Hidden field 4']
|
|
249
|
+
*
|
|
250
|
+
* viewMetadata.unloadData();
|
|
251
|
+
* }
|
|
252
|
+
* ```
|
|
253
|
+
*/
|
|
254
|
+
async selectMetadataAsync() {
|
|
255
|
+
const queryResult = this.selectMetadata();
|
|
256
|
+
await queryResult.loadDataAsync();
|
|
257
|
+
return queryResult;
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
/**
|
|
261
|
+
* Checks whether the current user has permission to update view metadata.
|
|
262
|
+
*
|
|
263
|
+
* @param viewMetadata
|
|
264
|
+
* @hidden
|
|
265
|
+
*/
|
|
266
|
+
checkPermissionsForUpdateMetadata(viewMetadata) {
|
|
267
|
+
const metadata = {
|
|
268
|
+
groupLevels: (0, _record_query_result.normalizeSortsOrGroups)(this.parentTable, viewMetadata.groupLevels)
|
|
269
|
+
};
|
|
270
|
+
return this._sdk.__mutations.checkPermissionsForMutation({
|
|
271
|
+
type: _mutations.MutationTypes.UPDATE_VIEW_METADATA,
|
|
272
|
+
tableId: this.parentTable.id,
|
|
273
|
+
viewId: this.id,
|
|
274
|
+
metadata
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
/**
|
|
279
|
+
* An alias for `checkPermissionsForUpdateMetadata(viewMetadata).hasPermission`.
|
|
280
|
+
*
|
|
281
|
+
* Checks whether the current user has permission to update view metadata.
|
|
282
|
+
*
|
|
283
|
+
* @param viewMetadata
|
|
284
|
+
* @hidden
|
|
285
|
+
*/
|
|
286
|
+
hasPermissionToUpdateMetadata(viewMetadata) {
|
|
287
|
+
return this.checkPermissionsForUpdateMetadata(viewMetadata).hasPermission;
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
/**
|
|
291
|
+
* Updates view metadata, this is currently only supported from block views
|
|
292
|
+
* altering their own view's grouping config.
|
|
293
|
+
*
|
|
294
|
+
* @param ViewMetadataForUpdate
|
|
295
|
+
* @hidden
|
|
296
|
+
*/
|
|
297
|
+
async updateMetadataAsync(viewMetadata) {
|
|
298
|
+
const metadata = {
|
|
299
|
+
groupLevels: (0, _record_query_result.normalizeSortsOrGroups)(this.parentTable, viewMetadata.groupLevels)
|
|
300
|
+
};
|
|
301
|
+
await this._sdk.__mutations.applyMutationAsync({
|
|
302
|
+
type: _mutations.MutationTypes.UPDATE_VIEW_METADATA,
|
|
303
|
+
tableId: this.parentTable.id,
|
|
304
|
+
viewId: this.id,
|
|
305
|
+
metadata
|
|
306
|
+
});
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
/**
|
|
310
|
+
* @internal
|
|
311
|
+
*/
|
|
312
|
+
__triggerOnChangeForDirtyPaths(dirtyPaths) {
|
|
313
|
+
let didViewSchemaChange = false;
|
|
314
|
+
this._viewDataStore.triggerOnChangeForDirtyPaths(dirtyPaths);
|
|
315
|
+
if (dirtyPaths.name) {
|
|
316
|
+
this._onChange(WatchableViewKeys.name);
|
|
317
|
+
didViewSchemaChange = true;
|
|
318
|
+
}
|
|
319
|
+
if (dirtyPaths.isLocked) {
|
|
320
|
+
this._onChange(WatchableViewKeys.isLockedView);
|
|
321
|
+
didViewSchemaChange = true;
|
|
322
|
+
}
|
|
323
|
+
return didViewSchemaChange;
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
var _default = exports.default = View;
|
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = exports.WatchableViewDataStoreKeys = void 0;
|
|
7
|
+
var _private_utils = require("../../shared/private_utils");
|
|
8
|
+
var _error_utils = require("../../shared/error_utils");
|
|
9
|
+
var _abstract_model_with_async_data = _interopRequireDefault(require("./abstract_model_with_async_data"));
|
|
10
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
|
+
const WatchableViewDataStoreKeys = exports.WatchableViewDataStoreKeys = Object.freeze({
|
|
12
|
+
visibleRecords: 'visibleRecords',
|
|
13
|
+
visibleRecordIds: 'visibleRecordIds',
|
|
14
|
+
groups: 'groups',
|
|
15
|
+
groupLevels: 'groupLevels',
|
|
16
|
+
recordColors: 'recordColors',
|
|
17
|
+
allFieldIds: 'allFieldIds',
|
|
18
|
+
visibleFieldIds: 'visibleFieldIds'
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
/** @internal */
|
|
22
|
+
|
|
23
|
+
// ViewDataStore contains loadable data for a specific view. That means the set of visible records,
|
|
24
|
+
// and field order/visibility information. View itself only contains core schema information. The
|
|
25
|
+
// data here doesn't belong in View as it's record data or conditionally loaded.
|
|
26
|
+
/** @internal */
|
|
27
|
+
class ViewDataStore extends _abstract_model_with_async_data.default {
|
|
28
|
+
static _className = 'ViewDataStore';
|
|
29
|
+
static _isWatchableKey(key) {
|
|
30
|
+
return (0, _private_utils.isEnumValue)(WatchableViewDataStoreKeys, key);
|
|
31
|
+
}
|
|
32
|
+
static _shouldLoadDataForKey(key) {
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
constructor(sdk, parentRecordStore, viewId) {
|
|
36
|
+
super(sdk, `${viewId}-ViewDataStore`);
|
|
37
|
+
this.parentRecordStore = parentRecordStore;
|
|
38
|
+
this._airtableInterface = sdk.__airtableInterface;
|
|
39
|
+
this._mostRecentTableLoadPromise = null;
|
|
40
|
+
this.viewId = viewId;
|
|
41
|
+
}
|
|
42
|
+
get _dataOrNullIfDeleted() {
|
|
43
|
+
const tableData = this._baseData.tablesById[this.parentRecordStore.tableId];
|
|
44
|
+
return tableData?.viewsById[this.viewId] ?? null;
|
|
45
|
+
}
|
|
46
|
+
_onChangeIsDataLoaded() {
|
|
47
|
+
// noop
|
|
48
|
+
}
|
|
49
|
+
get isDataLoaded() {
|
|
50
|
+
return this._isDataLoaded && this.parentRecordStore.isRecordMetadataLoaded;
|
|
51
|
+
}
|
|
52
|
+
__onDataDeletion() {
|
|
53
|
+
this._forceUnload();
|
|
54
|
+
}
|
|
55
|
+
async loadDataAsync() {
|
|
56
|
+
// Override this method to also load table data.
|
|
57
|
+
// NOTE: it's important that we call loadDataAsync on the table here and not in
|
|
58
|
+
// _loadDataAsync since we want the retain counts for the view and table to increase/decrease
|
|
59
|
+
// in lock-step. If we load table data in _loadDataAsync, the table's retain
|
|
60
|
+
// count only increments some of the time, which leads to unexpected behavior.
|
|
61
|
+
const tableLoadPromise = this.parentRecordStore.loadRecordMetadataAsync();
|
|
62
|
+
this._mostRecentTableLoadPromise = tableLoadPromise;
|
|
63
|
+
await super.loadDataAsync();
|
|
64
|
+
}
|
|
65
|
+
async _loadDataAsync() {
|
|
66
|
+
// We need to be sure that the table data is loaded *before* we return
|
|
67
|
+
// from this method.
|
|
68
|
+
(0, _error_utils.invariant)(this._mostRecentTableLoadPromise, 'No table load promise');
|
|
69
|
+
const tableLoadPromise = this._mostRecentTableLoadPromise;
|
|
70
|
+
const [viewData] = await Promise.all([this._airtableInterface.fetchAndSubscribeToViewDataAsync(this.parentRecordStore.tableId, this.viewId), tableLoadPromise]);
|
|
71
|
+
this._data.visibleRecordIds = viewData.visibleRecordIds;
|
|
72
|
+
this._data.fieldOrder = viewData.fieldOrder;
|
|
73
|
+
this._data.groups = viewData.groups;
|
|
74
|
+
this._data.groupLevels = viewData.groupLevels;
|
|
75
|
+
this._data.colorsByRecordId = viewData.colorsByRecordId;
|
|
76
|
+
if (this._data.colorsByRecordId) {
|
|
77
|
+
for (const record of this.visibleRecords) {
|
|
78
|
+
if ((0, _private_utils.has)(this._data.colorsByRecordId, record.id)) {
|
|
79
|
+
record.__triggerOnChangeForRecordColorInViewId(this.viewId);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return [WatchableViewDataStoreKeys.visibleRecords, WatchableViewDataStoreKeys.visibleRecordIds, WatchableViewDataStoreKeys.allFieldIds, WatchableViewDataStoreKeys.groups, WatchableViewDataStoreKeys.groupLevels, WatchableViewDataStoreKeys.visibleFieldIds, WatchableViewDataStoreKeys.recordColors];
|
|
84
|
+
}
|
|
85
|
+
unloadData() {
|
|
86
|
+
// Override this method to also unload the table's data.
|
|
87
|
+
// NOTE: it's important that we do this here, since we want the view and table's
|
|
88
|
+
// retain counts to increment/decrement in lock-step. If we unload the table's
|
|
89
|
+
// data in _unloadData, it leads to unexpected behavior.
|
|
90
|
+
super.unloadData();
|
|
91
|
+
this.parentRecordStore.unloadRecordMetadata();
|
|
92
|
+
}
|
|
93
|
+
_unloadData() {
|
|
94
|
+
this._mostRecentTableLoadPromise = null;
|
|
95
|
+
this._airtableInterface.unsubscribeFromViewData(this.parentRecordStore.tableId, this.viewId);
|
|
96
|
+
if (!this.isDeleted) {
|
|
97
|
+
this._data.visibleRecordIds = undefined;
|
|
98
|
+
this._data.groups = undefined;
|
|
99
|
+
this._data.colorsByRecordId = undefined;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
__generateChangesForParentTableAddMultipleRecords(recordIds) {
|
|
103
|
+
const newVisibleRecordIds = [...this.visibleRecordIds, ...recordIds];
|
|
104
|
+
return [{
|
|
105
|
+
path: ['tablesById', this.parentRecordStore.tableId, 'viewsById', this.viewId, 'visibleRecordIds'],
|
|
106
|
+
value: newVisibleRecordIds
|
|
107
|
+
}];
|
|
108
|
+
}
|
|
109
|
+
__generateChangesForParentTableDeleteMultipleRecords(recordIds) {
|
|
110
|
+
const recordIdsToDeleteSet = {};
|
|
111
|
+
for (const recordId of recordIds) {
|
|
112
|
+
recordIdsToDeleteSet[recordId] = true;
|
|
113
|
+
}
|
|
114
|
+
const newVisibleRecordIds = this.visibleRecordIds.filter(recordId => !recordIdsToDeleteSet[recordId]);
|
|
115
|
+
const changePayload = [{
|
|
116
|
+
path: ['tablesById', this.parentRecordStore.tableId, 'viewsById', this.viewId, 'visibleRecordIds'],
|
|
117
|
+
value: newVisibleRecordIds
|
|
118
|
+
}];
|
|
119
|
+
if (this._data.groups) {
|
|
120
|
+
const newGroups = this.__recursivelyRemoveRecordsFromGroupsInPlace((0, _private_utils.cloneDeep)(this._data.groups), recordIdsToDeleteSet);
|
|
121
|
+
changePayload.push({
|
|
122
|
+
path: ['tablesById', this.parentRecordStore.tableId, 'viewsById', this.viewId, 'groups'],
|
|
123
|
+
value: newGroups
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
return changePayload;
|
|
127
|
+
}
|
|
128
|
+
__recursivelyRemoveRecordsFromGroupsInPlace(groups, recordIdsToDeleteSet) {
|
|
129
|
+
if (!groups || groups.length === 0) {
|
|
130
|
+
return groups;
|
|
131
|
+
}
|
|
132
|
+
return groups.map(group => {
|
|
133
|
+
if (group.visibleRecordIds) {
|
|
134
|
+
group.visibleRecordIds = group.visibleRecordIds.filter(id => !recordIdsToDeleteSet[id]);
|
|
135
|
+
}
|
|
136
|
+
this.__recursivelyRemoveRecordsFromGroupsInPlace(group.groups, recordIdsToDeleteSet);
|
|
137
|
+
return group;
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* The record IDs that are not filtered out of this view.
|
|
143
|
+
* Can be watched to know when records are created, deleted, reordered, or
|
|
144
|
+
* filtered in and out of this view.
|
|
145
|
+
*/
|
|
146
|
+
get visibleRecordIds() {
|
|
147
|
+
const visibleRecordIds = this._data.visibleRecordIds;
|
|
148
|
+
(0, _error_utils.invariant)(visibleRecordIds, 'View data is not loaded');
|
|
149
|
+
|
|
150
|
+
// Freeze visibleRecordIds so users can't mutate it.
|
|
151
|
+
// If it changes from liveapp, we get an entire new array which will
|
|
152
|
+
// replace this one, so it's okay to freeze it.
|
|
153
|
+
if (!Object.isFrozen(visibleRecordIds)) {
|
|
154
|
+
Object.freeze(visibleRecordIds);
|
|
155
|
+
}
|
|
156
|
+
return visibleRecordIds;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* The records that are not filtered out of this view.
|
|
161
|
+
* Can be watched to know when records are created, deleted, reordered, or
|
|
162
|
+
* filtered in and out of this view.
|
|
163
|
+
*/
|
|
164
|
+
get visibleRecords() {
|
|
165
|
+
(0, _error_utils.invariant)(this.parentRecordStore.isRecordMetadataLoaded, 'Table data is not loaded');
|
|
166
|
+
const visibleRecordIds = this._data.visibleRecordIds;
|
|
167
|
+
(0, _error_utils.invariant)(visibleRecordIds, 'View data is not loaded');
|
|
168
|
+
return visibleRecordIds.map(recordId => {
|
|
169
|
+
const record = this.parentRecordStore.getRecordByIdIfExists(recordId);
|
|
170
|
+
(0, _error_utils.invariant)(record, 'Record in view does not exist');
|
|
171
|
+
return record;
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* Gets the groups in a view, can be watched to be notified if a record changes groups,
|
|
177
|
+
* if a record is changed/deleted/created, if sort order of groups changes, grouping
|
|
178
|
+
* heirarchy changes, or grouping field changes.
|
|
179
|
+
*
|
|
180
|
+
* @hidden
|
|
181
|
+
*/
|
|
182
|
+
get groups() {
|
|
183
|
+
(0, _error_utils.invariant)(this.parentRecordStore.isRecordMetadataLoaded, 'Table data is not loaded');
|
|
184
|
+
const groups = this._data.groups;
|
|
185
|
+
return groups ?? null;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* Gets the group config for this view, can be watched to know when groupLevels
|
|
190
|
+
* changes (reorder, groups deleted, groups changed, grouped field changes)
|
|
191
|
+
*/
|
|
192
|
+
get groupLevels() {
|
|
193
|
+
(0, _error_utils.invariant)(this.parentRecordStore.isRecordMetadataLoaded, 'Table data is not loaded');
|
|
194
|
+
const groupLevels = this._data.groupLevels;
|
|
195
|
+
return groupLevels ?? null;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
* Get the color name for the specified record in this view, or null if no
|
|
200
|
+
* color is available. Watch with 'recordColors'
|
|
201
|
+
*
|
|
202
|
+
* @param recordOrRecordId the record/record id to get the color for
|
|
203
|
+
*/
|
|
204
|
+
getRecordColor(record) {
|
|
205
|
+
(0, _error_utils.invariant)(this.isDataLoaded, 'View data is not loaded');
|
|
206
|
+
return this._data.colorsByRecordId?.[record.id] ?? null;
|
|
207
|
+
}
|
|
208
|
+
get allFieldIds() {
|
|
209
|
+
const fieldOrder = this._data.fieldOrder;
|
|
210
|
+
(0, _error_utils.invariant)(fieldOrder, 'View data is not loaded');
|
|
211
|
+
return fieldOrder.fieldIds;
|
|
212
|
+
}
|
|
213
|
+
get visibleFieldIds() {
|
|
214
|
+
const fieldOrder = this._data.fieldOrder;
|
|
215
|
+
(0, _error_utils.invariant)(fieldOrder, 'View data is not loaded');
|
|
216
|
+
const {
|
|
217
|
+
fieldIds
|
|
218
|
+
} = fieldOrder;
|
|
219
|
+
return fieldIds.slice(0, fieldOrder.visibleFieldCount);
|
|
220
|
+
}
|
|
221
|
+
triggerOnChangeForDirtyPaths(dirtyPaths) {
|
|
222
|
+
if (dirtyPaths.visibleRecordIds) {
|
|
223
|
+
this._onChange(WatchableViewDataStoreKeys.visibleRecords);
|
|
224
|
+
this._onChange(WatchableViewDataStoreKeys.visibleRecordIds);
|
|
225
|
+
}
|
|
226
|
+
if (dirtyPaths.fieldOrder) {
|
|
227
|
+
this._onChange(WatchableViewDataStoreKeys.allFieldIds);
|
|
228
|
+
// TODO(kasra): only trigger visibleFields if the *visible* field ids changed.
|
|
229
|
+
this._onChange(WatchableViewDataStoreKeys.visibleFieldIds);
|
|
230
|
+
}
|
|
231
|
+
// Technically it's possible for groupLevels changing to cause a groups
|
|
232
|
+
// change since we derive group information from the groupLevels (fieldId)
|
|
233
|
+
if (dirtyPaths.groups || dirtyPaths.groupLevels) {
|
|
234
|
+
this._onChange(WatchableViewDataStoreKeys.groups);
|
|
235
|
+
}
|
|
236
|
+
if (dirtyPaths.groupLevels) {
|
|
237
|
+
this._onChange(WatchableViewDataStoreKeys.groupLevels);
|
|
238
|
+
}
|
|
239
|
+
if (dirtyPaths.colorsByRecordId) {
|
|
240
|
+
const changedRecordIds = dirtyPaths.colorsByRecordId._isDirty ? null : Object.keys(dirtyPaths.colorsByRecordId);
|
|
241
|
+
if (changedRecordIds) {
|
|
242
|
+
// Checking isRecordMetadataLoaded fixes a timing issue:
|
|
243
|
+
// When a new table loads in liveapp, we'll receive the record
|
|
244
|
+
// colors before getting the response to our loadData call.
|
|
245
|
+
// This is a temporary fix: we need a more general solution to
|
|
246
|
+
// avoid processing events associated with subscriptions whose
|
|
247
|
+
// data we haven't received yet.
|
|
248
|
+
if (this.parentRecordStore.isRecordMetadataLoaded) {
|
|
249
|
+
for (const recordId of changedRecordIds) {
|
|
250
|
+
const record = this.parentRecordStore.getRecordByIdIfExists(recordId);
|
|
251
|
+
// Similar to above, we could be receiving the change notification
|
|
252
|
+
// for a record color before receiving the new record itself.
|
|
253
|
+
if (record) {
|
|
254
|
+
record.__triggerOnChangeForRecordColorInViewId(this.viewId);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
this._onChange(WatchableViewDataStoreKeys.recordColors, changedRecordIds);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
/** @internal */
|
|
265
|
+
var _default = exports.default = ViewDataStore;
|