@airtable/blocks 0.0.0-experimental-f52bc4e5e-20250709 → 0.0.0-experimental-75d011284-20250904
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/base/assert_run_context.js +12 -0
- package/dist/cjs/base/index.js +30 -30
- package/dist/cjs/base/models/abstract_model_with_async_data.js +154 -237
- package/dist/cjs/base/models/base.js +188 -267
- package/dist/cjs/base/models/create_aggregators.js +29 -46
- package/dist/cjs/base/models/cursor.js +206 -294
- package/dist/cjs/base/models/field.js +307 -395
- package/dist/cjs/base/models/grouped_record_query_result.js +219 -338
- package/dist/cjs/base/models/linked_records_query_result.js +450 -625
- package/dist/cjs/base/models/models.js +19 -22
- package/dist/cjs/base/models/mutations.js +267 -293
- package/dist/cjs/base/models/object_pool.js +117 -156
- package/dist/cjs/base/models/record.js +191 -256
- package/dist/cjs/base/models/record_coloring.js +6 -6
- package/dist/cjs/base/models/record_query_result.js +351 -435
- package/dist/cjs/base/models/record_store.js +403 -753
- package/dist/cjs/base/models/session.js +125 -153
- package/dist/cjs/base/models/table.js +457 -605
- package/dist/cjs/base/models/table_or_view_query_result.js +656 -920
- package/dist/cjs/base/models/view.js +284 -389
- package/dist/cjs/base/models/view_data_store.js +218 -356
- package/dist/cjs/base/models/view_metadata_query_result.js +109 -157
- package/dist/cjs/base/perform_record_action.js +89 -131
- package/dist/cjs/base/sdk.js +129 -184
- package/dist/cjs/base/settings_button.js +54 -74
- package/dist/cjs/base/types/airtable_interface.js +1 -1
- package/dist/cjs/base/types/mutations.js +5 -11
- package/dist/cjs/base/types/undo_redo.js +1 -1
- package/dist/cjs/base/types/view.js +1 -1
- package/dist/cjs/base/ui/base_provider.js +6 -8
- package/dist/cjs/base/ui/baymax_utils.js +436 -108
- package/dist/cjs/base/ui/block_wrapper.js +81 -106
- package/dist/cjs/base/ui/box.js +34 -60
- package/dist/cjs/base/ui/button.js +44 -74
- package/dist/cjs/base/ui/cell_renderer.js +132 -189
- package/dist/cjs/base/ui/choice_token.js +25 -42
- package/dist/cjs/base/ui/collaborator_token.js +31 -53
- package/dist/cjs/base/ui/color_palette.js +130 -173
- package/dist/cjs/base/ui/color_palette_synced.js +41 -70
- package/dist/cjs/base/ui/confirmation_dialog.js +70 -120
- package/dist/cjs/base/ui/control_sizes.js +24 -22
- package/dist/cjs/base/ui/create_detect_element_resize.js +6 -10
- package/dist/cjs/base/ui/css_helpers.js +1 -1
- package/dist/cjs/base/ui/dialog.js +57 -98
- package/dist/cjs/base/ui/dialog_close_button.js +52 -98
- package/dist/cjs/base/ui/expand_record.js +1 -2
- package/dist/cjs/base/ui/expand_record_list.js +3 -4
- package/dist/cjs/base/ui/expand_record_picker_async.js +28 -57
- package/dist/cjs/base/ui/field_icon.js +15 -33
- package/dist/cjs/base/ui/field_picker.js +25 -70
- package/dist/cjs/base/ui/field_picker_synced.js +18 -40
- package/dist/cjs/base/ui/form_field.js +27 -55
- package/dist/cjs/base/ui/geometry/geometry.js +5 -5
- package/dist/cjs/base/ui/geometry/point.js +10 -12
- package/dist/cjs/base/ui/geometry/rect.js +36 -52
- package/dist/cjs/base/ui/geometry/size.js +10 -12
- package/dist/cjs/base/ui/global_alert.js +31 -52
- package/dist/cjs/base/ui/heading.js +45 -94
- package/dist/cjs/base/ui/icon.js +39 -59
- package/dist/cjs/base/ui/icon_config.js +6 -12
- package/dist/cjs/base/ui/initialize_block.js +16 -35
- package/dist/cjs/base/ui/input.js +62 -101
- package/dist/cjs/base/ui/input_synced.js +17 -40
- package/dist/cjs/base/ui/key_codes.js +2 -3
- package/dist/cjs/base/ui/label.js +30 -55
- package/dist/cjs/base/ui/link.js +54 -87
- package/dist/cjs/base/ui/loader.js +15 -36
- package/dist/cjs/base/ui/modal.js +88 -127
- package/dist/cjs/base/ui/model_picker_select.js +18 -44
- package/dist/cjs/base/ui/popover.js +236 -328
- package/dist/cjs/base/ui/progress_bar.js +34 -47
- package/dist/cjs/base/ui/record_card.js +389 -478
- package/dist/cjs/base/ui/record_card_list.js +150 -224
- package/dist/cjs/base/ui/select.js +60 -116
- package/dist/cjs/base/ui/select_and_select_buttons_helpers.js +15 -39
- package/dist/cjs/base/ui/select_buttons.js +50 -83
- package/dist/cjs/base/ui/select_buttons_synced.js +17 -39
- package/dist/cjs/base/ui/select_synced.js +17 -39
- package/dist/cjs/base/ui/switch.js +42 -71
- package/dist/cjs/base/ui/switch_synced.js +16 -38
- package/dist/cjs/base/ui/synced.js +27 -48
- package/dist/cjs/base/ui/system/all_styles_set.js +4 -12
- package/dist/cjs/base/ui/system/appearance/appearance_set.js +10 -13
- package/dist/cjs/base/ui/system/appearance/background_color.js +3 -6
- package/dist/cjs/base/ui/system/appearance/border.js +3 -6
- package/dist/cjs/base/ui/system/appearance/border_radius.js +3 -6
- package/dist/cjs/base/ui/system/appearance/box_shadow.js +3 -6
- package/dist/cjs/base/ui/system/appearance/opacity.js +3 -6
- package/dist/cjs/base/ui/system/dimensions/dimensions_set.js +11 -13
- package/dist/cjs/base/ui/system/dimensions/height.js +3 -6
- package/dist/cjs/base/ui/system/dimensions/max_height.js +3 -6
- package/dist/cjs/base/ui/system/dimensions/max_width.js +3 -6
- package/dist/cjs/base/ui/system/dimensions/min_height.js +3 -6
- package/dist/cjs/base/ui/system/dimensions/min_width.js +3 -6
- package/dist/cjs/base/ui/system/dimensions/width.js +3 -6
- package/dist/cjs/base/ui/system/display.js +3 -6
- package/dist/cjs/base/ui/system/flex_container/align_content.js +3 -6
- package/dist/cjs/base/ui/system/flex_container/align_items.js +3 -6
- package/dist/cjs/base/ui/system/flex_container/flex_container_set.js +11 -13
- package/dist/cjs/base/ui/system/flex_container/flex_direction.js +3 -6
- package/dist/cjs/base/ui/system/flex_container/flex_wrap.js +3 -6
- package/dist/cjs/base/ui/system/flex_container/justify_content.js +3 -6
- package/dist/cjs/base/ui/system/flex_container/justify_items.js +3 -6
- package/dist/cjs/base/ui/system/flex_item/align_self.js +3 -6
- package/dist/cjs/base/ui/system/flex_item/flex.js +3 -6
- package/dist/cjs/base/ui/system/flex_item/flex_basis.js +3 -6
- package/dist/cjs/base/ui/system/flex_item/flex_grow.js +3 -6
- package/dist/cjs/base/ui/system/flex_item/flex_item_set.js +12 -13
- package/dist/cjs/base/ui/system/flex_item/flex_shrink.js +3 -6
- package/dist/cjs/base/ui/system/flex_item/justify_self.js +3 -6
- package/dist/cjs/base/ui/system/flex_item/order.js +3 -6
- package/dist/cjs/base/ui/system/index.js +104 -416
- package/dist/cjs/base/ui/system/overflow.js +3 -6
- package/dist/cjs/base/ui/system/position/bottom.js +4 -6
- package/dist/cjs/base/ui/system/position/left.js +4 -6
- package/dist/cjs/base/ui/system/position/position.js +3 -6
- package/dist/cjs/base/ui/system/position/position_set.js +11 -13
- package/dist/cjs/base/ui/system/position/right.js +4 -6
- package/dist/cjs/base/ui/system/position/top.js +4 -6
- package/dist/cjs/base/ui/system/position/z_index.js +3 -6
- package/dist/cjs/base/ui/system/spacing/margin.js +4 -6
- package/dist/cjs/base/ui/system/spacing/padding.js +4 -6
- package/dist/cjs/base/ui/system/spacing/spacing_set.js +7 -13
- package/dist/cjs/base/ui/system/typography/font_family.js +3 -6
- package/dist/cjs/base/ui/system/typography/font_size.js +3 -6
- package/dist/cjs/base/ui/system/typography/font_style.js +3 -6
- package/dist/cjs/base/ui/system/typography/font_weight.js +3 -6
- package/dist/cjs/base/ui/system/typography/letter_spacing.js +3 -6
- package/dist/cjs/base/ui/system/typography/line_height.js +3 -6
- package/dist/cjs/base/ui/system/typography/text_align.js +3 -6
- package/dist/cjs/base/ui/system/typography/text_color.js +3 -6
- package/dist/cjs/base/ui/system/typography/text_decoration.js +3 -6
- package/dist/cjs/base/ui/system/typography/text_transform.js +3 -6
- package/dist/cjs/base/ui/system/typography/typography_set.js +15 -13
- package/dist/cjs/base/ui/system/utils/ensure_numbers_are_within_scale.js +3 -4
- package/dist/cjs/base/ui/system/utils/get_style_props_for_responsive_prop.js +47 -87
- package/dist/cjs/base/ui/table_picker.js +18 -42
- package/dist/cjs/base/ui/table_picker_synced.js +17 -39
- package/dist/cjs/base/ui/text.js +40 -73
- package/dist/cjs/base/ui/text_button.js +51 -83
- package/dist/cjs/base/ui/theme/default_theme/button_variants.js +3 -3
- package/dist/cjs/base/ui/theme/default_theme/control_sizes.js +51 -45
- package/dist/cjs/base/ui/theme/default_theme/heading_styles.js +1 -1
- package/dist/cjs/base/ui/theme/default_theme/index.js +9 -15
- package/dist/cjs/base/ui/theme/default_theme/input_variants.js +3 -3
- package/dist/cjs/base/ui/theme/default_theme/link_variants.js +3 -3
- package/dist/cjs/base/ui/theme/default_theme/select_buttons_variants.js +4 -4
- package/dist/cjs/base/ui/theme/default_theme/select_variants.js +8 -17
- package/dist/cjs/base/ui/theme/default_theme/switch_variants.js +23 -29
- package/dist/cjs/base/ui/theme/default_theme/text_button_variants.js +5 -5
- package/dist/cjs/base/ui/theme/default_theme/text_styles.js +1 -1
- package/dist/cjs/base/ui/theme/default_theme/tokens.js +14 -14
- package/dist/cjs/base/ui/theme/theme_context.js +2 -2
- package/dist/cjs/base/ui/theme/use_theme.js +2 -2
- package/dist/cjs/base/ui/tooltip.js +134 -174
- package/dist/cjs/base/ui/types/aria_props.js +1 -23
- package/dist/cjs/base/ui/types/data_attributes_prop.js +1 -18
- package/dist/cjs/base/ui/types/tooltip_anchor_props.js +1 -17
- package/dist/cjs/base/ui/ui.js +48 -49
- package/dist/cjs/base/ui/unstable_standalone_ui.js +27 -27
- package/dist/cjs/base/ui/use_base.js +1 -1
- package/dist/cjs/base/ui/use_cursor.js +5 -4
- package/dist/cjs/base/ui/use_form_field.js +1 -1
- package/dist/cjs/base/ui/use_loadable.js +25 -91
- package/dist/cjs/base/ui/use_record_action_data.js +4 -3
- package/dist/cjs/base/ui/use_records.js +9 -13
- package/dist/cjs/base/ui/use_session.js +1 -1
- package/dist/cjs/base/ui/use_settings_button.js +4 -3
- package/dist/cjs/base/ui/use_styled_system.js +7 -14
- package/dist/cjs/base/ui/use_text_color_for_background_color.js +4 -3
- package/dist/cjs/base/ui/use_view_metadata.js +4 -4
- package/dist/cjs/base/ui/use_viewport.js +2 -2
- package/dist/cjs/base/ui/view_picker.js +26 -70
- package/dist/cjs/base/ui/view_picker_synced.js +18 -40
- package/dist/cjs/base/ui/viewport_constraint.js +67 -114
- package/dist/cjs/base/ui/with_styled_system.js +25 -61
- package/dist/cjs/base/undo_redo.js +21 -32
- package/dist/cjs/base/unstable_testing_utils.js +27 -27
- package/dist/cjs/base/viewport.js +268 -312
- package/dist/cjs/injected/airtable_interface.js +4 -4
- package/dist/cjs/interface/assert_run_context.js +12 -0
- package/dist/cjs/interface/index.js +4 -18
- package/dist/cjs/interface/models/base.js +15 -34
- package/dist/cjs/interface/models/field.js +5 -19
- package/dist/cjs/interface/models/models.js +8 -7
- package/dist/cjs/interface/models/mutations.js +50 -66
- package/dist/cjs/interface/models/record.js +29 -49
- package/dist/cjs/interface/models/record_store.js +25 -57
- package/dist/cjs/interface/models/session.js +2 -16
- package/dist/cjs/interface/models/table.js +66 -95
- package/dist/cjs/interface/sdk.js +61 -87
- package/dist/cjs/interface/types/airtable_interface.js +2 -2
- package/dist/cjs/interface/types/mutations.js +3 -10
- package/dist/cjs/interface/ui/block_wrapper.js +56 -48
- package/dist/cjs/interface/ui/initialize_block.js +13 -28
- package/dist/cjs/interface/ui/ui.js +20 -19
- package/dist/cjs/interface/ui/use_base.js +1 -1
- package/dist/cjs/interface/ui/use_custom_properties.js +19 -35
- package/dist/cjs/interface/ui/use_records.js +6 -5
- package/dist/cjs/interface/ui/use_run_info.js +2 -2
- package/dist/cjs/interface/ui/use_session.js +1 -1
- package/dist/cjs/shared/color_utils.js +9 -16
- package/dist/cjs/shared/colors.js +2 -2
- package/dist/cjs/shared/error_utils.js +9 -11
- package/dist/cjs/shared/event_tracker.js +3 -3
- package/dist/cjs/shared/global_config.js +337 -449
- package/dist/cjs/shared/models/abstract_model.js +72 -97
- package/dist/cjs/shared/models/base_core.js +394 -514
- package/dist/cjs/shared/models/field_core.js +236 -279
- package/dist/cjs/shared/models/mutations_core.js +283 -379
- package/dist/cjs/shared/models/record_core.js +174 -231
- package/dist/cjs/shared/models/record_store_core.js +119 -172
- package/dist/cjs/shared/models/session_core.js +116 -170
- package/dist/cjs/shared/models/table_core.js +1258 -1501
- package/dist/cjs/shared/private_utils.js +54 -124
- package/dist/cjs/shared/sdk_core.js +68 -70
- package/dist/cjs/shared/types/field_core.js +1 -1
- package/dist/cjs/shared/types/mutation_constants.js +4 -4
- package/dist/cjs/shared/types/mutations_core.js +1 -1
- package/dist/cjs/shared/types/permission_levels.js +1 -1
- package/dist/cjs/shared/ui/global_config_synced_component_helpers.js +9 -9
- package/dist/cjs/shared/ui/loader.js +14 -35
- package/dist/cjs/shared/ui/remote_utils.js +5 -7
- package/dist/cjs/shared/ui/sdk_context.js +4 -8
- package/dist/cjs/shared/ui/use_array_identity.js +2 -2
- package/dist/cjs/shared/ui/use_base.js +6 -5
- package/dist/cjs/shared/ui/use_color_scheme.js +3 -8
- package/dist/cjs/shared/ui/use_global_config.js +5 -4
- package/dist/cjs/shared/ui/use_session.js +6 -5
- package/dist/cjs/shared/ui/use_synced.js +7 -5
- package/dist/cjs/shared/ui/use_watchable.js +13 -42
- package/dist/cjs/shared/ui/with_hooks.js +6 -13
- package/dist/cjs/shared/unstable_private_utils.js +4 -6
- package/dist/cjs/shared/warning.js +5 -5
- package/dist/cjs/shared/watchable.js +110 -176
- package/dist/cjs/stats/block_stats.js +62 -85
- package/dist/cjs/testing/base/abstract_mock_airtable_interface.js +208 -0
- package/dist/cjs/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/models.d.ts +1 -0
- 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/package.json +13 -13
- 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/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
|
@@ -1,37 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
require("core-js/modules/es.symbol.js");
|
|
4
|
-
require("core-js/modules/es.symbol.description.js");
|
|
5
|
-
require("core-js/modules/es.array.from.js");
|
|
6
|
-
require("core-js/modules/es.array.slice.js");
|
|
7
|
-
require("core-js/modules/es.object.get-own-property-descriptors.js");
|
|
8
|
-
require("core-js/modules/es.regexp.exec.js");
|
|
9
|
-
require("core-js/modules/es.regexp.to-string.js");
|
|
10
|
-
require("core-js/modules/es.weak-map.js");
|
|
11
|
-
require("core-js/modules/web.dom-collections.for-each.js");
|
|
12
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
13
3
|
Object.defineProperty(exports, "__esModule", {
|
|
14
4
|
value: true
|
|
15
5
|
});
|
|
16
6
|
exports.default = void 0;
|
|
17
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
18
|
-
require("core-js/modules/es.array.concat.js");
|
|
19
|
-
require("core-js/modules/es.array.filter.js");
|
|
20
|
-
require("core-js/modules/es.array.iterator.js");
|
|
21
|
-
require("core-js/modules/es.array.map.js");
|
|
22
|
-
require("core-js/modules/es.object.to-string.js");
|
|
23
|
-
require("core-js/modules/es.promise.js");
|
|
24
|
-
require("core-js/modules/es.set.js");
|
|
25
|
-
require("core-js/modules/es.string.starts-with.js");
|
|
26
|
-
require("core-js/modules/web.dom-collections.iterator.js");
|
|
27
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
28
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
29
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
30
|
-
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
31
|
-
var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
|
|
32
|
-
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
33
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
34
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
35
7
|
var _private_utils = require("../../shared/private_utils");
|
|
36
8
|
var _error_utils = require("../../shared/error_utils");
|
|
37
9
|
var _table = _interopRequireWildcard(require("./table"));
|
|
@@ -41,16 +13,13 @@ var _object_pool = _interopRequireDefault(require("./object_pool"));
|
|
|
41
13
|
var _record_store = require("./record_store");
|
|
42
14
|
var _view_data_store = _interopRequireWildcard(require("./view_data_store"));
|
|
43
15
|
var _grouped_record_query_result = _interopRequireDefault(require("./grouped_record_query_result"));
|
|
44
|
-
function
|
|
16
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
17
|
+
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); }
|
|
45
18
|
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; }
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
|
|
49
|
-
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
50
|
-
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
51
|
-
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
|
|
52
|
-
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } /** @module @airtable/blocks/models: RecordQueryResult */ /** */
|
|
19
|
+
/** @module @airtable/blocks/models: RecordQueryResult */ /** */
|
|
20
|
+
|
|
53
21
|
/** @hidden */
|
|
22
|
+
|
|
54
23
|
/**
|
|
55
24
|
* Represents a set of records directly from a view or table. See {@link RecordQueryResult} for main
|
|
56
25
|
* documentation.
|
|
@@ -60,99 +29,85 @@ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.
|
|
|
60
29
|
*
|
|
61
30
|
* @docsPath models/query results/TableOrViewQueryResult
|
|
62
31
|
*/
|
|
63
|
-
|
|
64
|
-
/** @internal */
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
32
|
+
class TableOrViewQueryResult extends _record_query_result.default {
|
|
33
|
+
/** @internal */
|
|
34
|
+
static _className = 'TableOrViewQueryResult';
|
|
35
|
+
|
|
36
|
+
/** @internal */
|
|
37
|
+
|
|
38
|
+
/** @internal */
|
|
39
|
+
|
|
40
|
+
/** @internal */
|
|
41
|
+
|
|
42
|
+
/** @internal */
|
|
43
|
+
|
|
44
|
+
// If custom sorts or groups are specified, we'll use a VisList to handle sorting.
|
|
45
|
+
// If no sorts are specified, we'll use the underlying row order of the source model.
|
|
46
|
+
// Note: we're currently handling visibility tracking for view query results within this class,
|
|
47
|
+
// not in the VisList. In other words, only visible records are added to the visList.
|
|
48
|
+
/** @internal */
|
|
49
|
+
|
|
50
|
+
/** @internal */
|
|
51
|
+
|
|
52
|
+
// These is the groupLevels provided to us by the user when executing a query
|
|
53
|
+
/** @internal */
|
|
54
|
+
|
|
55
|
+
// This is the ordered list of record ids.
|
|
56
|
+
/** @internal */
|
|
57
|
+
|
|
58
|
+
// This is the ordered list of groups.
|
|
59
|
+
/** @internal */
|
|
60
|
+
|
|
61
|
+
// An ordered list of group levels returned to us from hyperbase, this should not be
|
|
62
|
+
// read from directly, but instead via this.data.groupLevels (Writing to this on hyperbase updates).
|
|
63
|
+
// (which check's that this model has not been not deleted)
|
|
64
|
+
/** @internal */
|
|
65
|
+
|
|
66
|
+
// lazily generated set of record ids
|
|
67
|
+
/** @internal */
|
|
68
|
+
_recordIdsSet = null;
|
|
69
|
+
|
|
70
|
+
// NOTE: when a cellValue key (cellValues or cellValuesInField:) is watched, we want
|
|
71
|
+
// to make sure we watch the associated key on the table. However, we need to make
|
|
72
|
+
// sure that we only watch the table once for each key. Otherwise, the callbacks
|
|
73
|
+
// for each key will get called more than once for each change event. This is because
|
|
74
|
+
// Watchable stores references to callbacks for each key, and on each _onChange event
|
|
75
|
+
// calls each callback for that key. If we watch the table more than once, then we'll
|
|
76
|
+
// call _onChange more than once, and each callback will be called more than once, which
|
|
77
|
+
// is undesirable. Instead, we'll store watch counts for each key to make sure we only
|
|
78
|
+
// watch the table once.
|
|
79
|
+
/** @internal */
|
|
80
|
+
|
|
81
|
+
/** @internal */
|
|
82
|
+
|
|
83
|
+
/** @internal */
|
|
84
|
+
constructor(sdk, sourceModel, normalizedOpts) {
|
|
85
|
+
super(sdk, normalizedOpts);
|
|
86
|
+
this._sourceModel = sourceModel;
|
|
87
|
+
this._mostRecentSourceModelLoadPromise = null;
|
|
88
|
+
this._table = normalizedOpts.table;
|
|
89
|
+
const {
|
|
90
|
+
sorts
|
|
91
|
+
} = this._normalizedOpts;
|
|
92
|
+
this._sorts = sorts ?? null;
|
|
120
93
|
// TODO (SeanKeenan): Placeholder until we support groups from normalizedOpts
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
if (
|
|
94
|
+
this._groupLevels = null;
|
|
95
|
+
this._visList = null;
|
|
96
|
+
this._orderedRecordIds = null;
|
|
97
|
+
this._orderedGroups = null;
|
|
98
|
+
this._loadedGroupLevels = null;
|
|
99
|
+
this._cellValueKeyWatchCounts = {};
|
|
100
|
+
let fieldIdsSetToLoadOrNullIfAllFields = null;
|
|
101
|
+
if (this._normalizedOpts.fieldIdsOrNullIfAllFields) {
|
|
129
102
|
fieldIdsSetToLoadOrNullIfAllFields = {};
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
// they're not explicitly requested in the `fields` opt.
|
|
139
|
-
} catch (err) {
|
|
140
|
-
_iterator.e(err);
|
|
141
|
-
} finally {
|
|
142
|
-
_iterator.f();
|
|
143
|
-
}
|
|
144
|
-
if (_this._sorts !== null) {
|
|
145
|
-
var _iterator2 = _createForOfIteratorHelper(_this._sorts),
|
|
146
|
-
_step2;
|
|
147
|
-
try {
|
|
148
|
-
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
149
|
-
var sort = _step2.value;
|
|
150
|
-
fieldIdsSetToLoadOrNullIfAllFields[sort.fieldId] = true;
|
|
151
|
-
}
|
|
152
|
-
} catch (err) {
|
|
153
|
-
_iterator2.e(err);
|
|
154
|
-
} finally {
|
|
155
|
-
_iterator2.f();
|
|
103
|
+
for (const fieldId of this._normalizedOpts.fieldIdsOrNullIfAllFields) {
|
|
104
|
+
fieldIdsSetToLoadOrNullIfAllFields[fieldId] = true;
|
|
105
|
+
}
|
|
106
|
+
// Need to load data for fields we're sorting by, even if
|
|
107
|
+
// they're not explicitly requested in the `fields` opt.
|
|
108
|
+
if (this._sorts !== null) {
|
|
109
|
+
for (const sort of this._sorts) {
|
|
110
|
+
fieldIdsSetToLoadOrNullIfAllFields[sort.fieldId] = true;
|
|
156
111
|
}
|
|
157
112
|
}
|
|
158
113
|
// TODO (SeanKeenan): Comment back in when enabling groups
|
|
@@ -163,851 +118,632 @@ var TableOrViewQueryResult = /*#__PURE__*/function (_RecordQueryResult) {
|
|
|
163
118
|
// }
|
|
164
119
|
// }
|
|
165
120
|
|
|
166
|
-
|
|
121
|
+
const recordColorMode = this._normalizedOpts.recordColorMode;
|
|
167
122
|
if (recordColorMode && recordColorMode.type === _record_coloring.ModeTypes.BY_SELECT_FIELD) {
|
|
168
123
|
fieldIdsSetToLoadOrNullIfAllFields[recordColorMode.selectField.id] = true;
|
|
169
124
|
}
|
|
170
125
|
}
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
Object.seal(
|
|
174
|
-
return _this;
|
|
126
|
+
this._fieldIdsSetToLoadOrNullIfAllFields = fieldIdsSetToLoadOrNullIfAllFields;
|
|
127
|
+
this.__groupedRecordQueryResultPool = new _object_pool.default(_grouped_record_query_result.default);
|
|
128
|
+
Object.seal(this);
|
|
175
129
|
}
|
|
176
130
|
/** @internal */
|
|
177
|
-
(
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
131
|
+
get _dataOrNullIfDeleted() {
|
|
132
|
+
if (this._sourceModel.isDeleted || this._recordStore.isDeleted) {
|
|
133
|
+
return null;
|
|
134
|
+
}
|
|
135
|
+
return {
|
|
136
|
+
recordIds: this._orderedRecordIds,
|
|
137
|
+
groups: this._orderedGroups,
|
|
138
|
+
groupLevels: this._loadedGroupLevels
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
/** @internal */
|
|
142
|
+
// istanbul ignore next
|
|
143
|
+
get __sourceModelId() {
|
|
144
|
+
return this._sourceModel.id;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/** @internal */
|
|
148
|
+
get __poolKey() {
|
|
149
|
+
return `${this._serializedOpts}::${this._sourceModel.id}`;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* @internal (since we may not be able to return parent model instances in the immutable models world)
|
|
154
|
+
* The table that records in this RecordQueryResult are part of
|
|
155
|
+
*/
|
|
156
|
+
get parentTable() {
|
|
157
|
+
return this._table;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* @internal (since we may not be able to return parent model instances in the immutable models world)
|
|
161
|
+
* The view that was used to obtain this RecordQueryResult by calling
|
|
162
|
+
* `view.selectRecords`. Null if the RecordQueryResult was obtained by calling
|
|
163
|
+
* `table.selectRecords`.
|
|
164
|
+
*/
|
|
165
|
+
get parentView() {
|
|
166
|
+
return this._sourceModel instanceof _table.default ? null : this._sourceModel;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* The record IDs in this RecordQueryResult.
|
|
170
|
+
* Throws if data is not loaded yet.
|
|
171
|
+
* Can be watched.
|
|
172
|
+
*/
|
|
173
|
+
get recordIds() {
|
|
174
|
+
// The following statements have been carefully sequenced to ensure
|
|
175
|
+
// that when this method fails, it reports the most salient error.
|
|
176
|
+
const {
|
|
177
|
+
recordIds
|
|
178
|
+
} = this._data; // Throws when the model has been deleted.
|
|
179
|
+
(0, _error_utils.invariant)(this.isDataLoaded, 'RecordQueryResult data is not loaded');
|
|
180
|
+
(0, _error_utils.invariant)(recordIds, 'No recordIds');
|
|
181
|
+
return recordIds;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* The ordered GroupedRecordQueryResult's in this RecordQueryResult.
|
|
185
|
+
* Throws if data is not loaded yet.
|
|
186
|
+
* Can be watched.
|
|
187
|
+
*
|
|
188
|
+
* @hidden
|
|
189
|
+
*/
|
|
190
|
+
get groups() {
|
|
191
|
+
// The following statements have been carefully sequenced to ensure
|
|
192
|
+
// that when this method fails, it reports the most salient error.
|
|
193
|
+
const {
|
|
194
|
+
groups
|
|
195
|
+
} = this._data; // Throws when the model has been deleted.
|
|
196
|
+
(0, _error_utils.invariant)(this.isDataLoaded, 'RecordQueryResult data is not loaded');
|
|
197
|
+
return groups ?? null;
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* The GroupLevels in this RecordQueryResult.
|
|
201
|
+
* Throws if data is not loaded yet.
|
|
202
|
+
* Can be watched.
|
|
203
|
+
*
|
|
204
|
+
* @hidden
|
|
205
|
+
*/
|
|
206
|
+
get groupLevels() {
|
|
207
|
+
const {
|
|
208
|
+
groupLevels
|
|
209
|
+
} = this._data; // Throws when the model has been deleted.
|
|
210
|
+
(0, _error_utils.invariant)(this.isDataLoaded, 'RecordQueryResult data is not loaded');
|
|
211
|
+
return groupLevels ? groupLevels.map(singleLevel => ({
|
|
212
|
+
...singleLevel,
|
|
213
|
+
field: this.parentTable.getFieldById(singleLevel.fieldId)
|
|
214
|
+
})) : null;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* The set of record IDs in this RecordQueryResult.
|
|
218
|
+
* Throws if data is not loaded yet.
|
|
219
|
+
*
|
|
220
|
+
* @internal
|
|
221
|
+
*/
|
|
222
|
+
_getOrGenerateRecordIdsSet() {
|
|
223
|
+
if (!this._recordIdsSet) {
|
|
224
|
+
const recordIdsSet = {};
|
|
225
|
+
for (const recordId of this.recordIds) {
|
|
226
|
+
recordIdsSet[recordId] = true;
|
|
227
|
+
}
|
|
228
|
+
this._recordIdsSet = recordIdsSet;
|
|
229
|
+
}
|
|
230
|
+
return this._recordIdsSet;
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* The fields that were used to create this RecordQueryResult.
|
|
234
|
+
* Null if fields were not specified, which means the RecordQueryResult
|
|
235
|
+
* will load all fields in the table.
|
|
236
|
+
*/
|
|
237
|
+
get fields() {
|
|
238
|
+
const {
|
|
239
|
+
fieldIdsOrNullIfAllFields
|
|
240
|
+
} = this._normalizedOpts;
|
|
241
|
+
if (fieldIdsOrNullIfAllFields) {
|
|
242
|
+
const fields = [];
|
|
243
|
+
// Filter out any deleted fields, since RecordQueryResult is "live".
|
|
244
|
+
// It would be too cumbersome (and defeat part of the purpose of
|
|
245
|
+
// using RecordQueryResult) if the user had to manually watch for deletion
|
|
246
|
+
// on all the fields and recreate the RecordQueryResult.
|
|
247
|
+
for (const fieldId of fieldIdsOrNullIfAllFields) {
|
|
248
|
+
const field = this._table.getFieldByIdIfExists(fieldId);
|
|
249
|
+
if (field !== null) {
|
|
250
|
+
fields.push(field);
|
|
251
|
+
}
|
|
183
252
|
}
|
|
184
|
-
return
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
groupLevels: this._loadedGroupLevels
|
|
188
|
-
};
|
|
253
|
+
return fields;
|
|
254
|
+
} else {
|
|
255
|
+
return null;
|
|
189
256
|
}
|
|
190
|
-
|
|
257
|
+
}
|
|
258
|
+
/** @internal */
|
|
259
|
+
get _cellValuesForSortWatchKeys() {
|
|
260
|
+
return this._sorts ? this._sorts.map(sort => `cellValuesInField:${sort.fieldId}`) : [];
|
|
261
|
+
}
|
|
262
|
+
/** @internal */
|
|
263
|
+
get _cellValuesForGroupWatchKeys() {
|
|
264
|
+
// _groupLevels can not be specified by the user during the query yet
|
|
191
265
|
// istanbul ignore next
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
266
|
+
return this._groupLevels ? this._groupLevels.map(group => `cellValuesInField:${group.fieldId}`) : [];
|
|
267
|
+
}
|
|
268
|
+
/** @internal */
|
|
269
|
+
get _sourceModelRecordIds() {
|
|
270
|
+
return this._sourceModel instanceof _table.default ? this._recordStore.recordIds : this._recordStore.getViewDataStore(this._sourceModel.id).visibleRecordIds;
|
|
271
|
+
}
|
|
272
|
+
/** @internal */
|
|
273
|
+
get _sourceModelGroups() {
|
|
274
|
+
return this._sourceModel instanceof _table.default ? null : this._recordStore.getViewDataStore(this._sourceModel.id).groups;
|
|
275
|
+
}
|
|
276
|
+
/** @internal */
|
|
277
|
+
get _sourceModelGroupLevels() {
|
|
278
|
+
return this._sourceModel instanceof _table.default ? null : this._recordStore.getViewDataStore(this._sourceModel.id).groupLevels;
|
|
279
|
+
}
|
|
280
|
+
/** @internal */
|
|
281
|
+
get _sourceModelRecords() {
|
|
282
|
+
return this._sourceModel instanceof _table.default ? this._recordStore.records : this._recordStore.getViewDataStore(this._sourceModel.id).visibleRecords;
|
|
283
|
+
}
|
|
284
|
+
/** @internal */
|
|
285
|
+
_incrementCellValueKeyWatchCountAndWatchIfNecessary(key, watchCallback) {
|
|
286
|
+
if (!this._cellValueKeyWatchCounts[key]) {
|
|
287
|
+
this._cellValueKeyWatchCounts[key] = 0;
|
|
288
|
+
this._recordStore.watch(key, watchCallback, this);
|
|
196
289
|
}
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
290
|
+
this._cellValueKeyWatchCounts[key]++;
|
|
291
|
+
}
|
|
292
|
+
/** @internal */
|
|
293
|
+
_decrementCellValueKeyWatchCountAndUnwatchIfPossible(key, watchCallback) {
|
|
294
|
+
if (!this._cellValueKeyWatchCounts[key]) {
|
|
295
|
+
// Key isn't watched, so just skip it. This matches behavior of Watchable,
|
|
296
|
+
// where calling unwatch on a key that isn't watched just no-ops.
|
|
297
|
+
return;
|
|
298
|
+
}
|
|
299
|
+
this._cellValueKeyWatchCounts[key]--;
|
|
300
|
+
if (this._cellValueKeyWatchCounts[key] === 0) {
|
|
301
|
+
// We're down to zero watches for this key, so we can actually unwatch it now.
|
|
302
|
+
this._recordStore.unwatch(key, watchCallback, this);
|
|
303
|
+
delete this._cellValueKeyWatchCounts[key];
|
|
203
304
|
}
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
}
|
|
214
|
-
/**
|
|
215
|
-
* @internal (since we may not be able to return parent model instances in the immutable models world)
|
|
216
|
-
* The view that was used to obtain this RecordQueryResult by calling
|
|
217
|
-
* `view.selectRecords`. Null if the RecordQueryResult was obtained by calling
|
|
218
|
-
* `table.selectRecords`.
|
|
219
|
-
*/
|
|
220
|
-
}, {
|
|
221
|
-
key: "parentView",
|
|
222
|
-
get: function get() {
|
|
223
|
-
return this._sourceModel instanceof _table.default ? null : this._sourceModel;
|
|
224
|
-
}
|
|
225
|
-
/**
|
|
226
|
-
* The record IDs in this RecordQueryResult.
|
|
227
|
-
* Throws if data is not loaded yet.
|
|
228
|
-
* Can be watched.
|
|
229
|
-
*/
|
|
230
|
-
}, {
|
|
231
|
-
key: "recordIds",
|
|
232
|
-
get: function get() {
|
|
233
|
-
// The following statements have been carefully sequenced to ensure
|
|
234
|
-
// that when this method fails, it reports the most salient error.
|
|
235
|
-
var recordIds = this._data.recordIds; // Throws when the model has been deleted.
|
|
236
|
-
(0, _error_utils.invariant)(this.isDataLoaded, 'RecordQueryResult data is not loaded');
|
|
237
|
-
(0, _error_utils.invariant)(recordIds, 'No recordIds');
|
|
238
|
-
return recordIds;
|
|
239
|
-
}
|
|
240
|
-
/**
|
|
241
|
-
* The ordered GroupedRecordQueryResult's in this RecordQueryResult.
|
|
242
|
-
* Throws if data is not loaded yet.
|
|
243
|
-
* Can be watched.
|
|
244
|
-
*
|
|
245
|
-
* @hidden
|
|
246
|
-
*/
|
|
247
|
-
}, {
|
|
248
|
-
key: "groups",
|
|
249
|
-
get: function get() {
|
|
250
|
-
// The following statements have been carefully sequenced to ensure
|
|
251
|
-
// that when this method fails, it reports the most salient error.
|
|
252
|
-
var groups = this._data.groups; // Throws when the model has been deleted.
|
|
253
|
-
(0, _error_utils.invariant)(this.isDataLoaded, 'RecordQueryResult data is not loaded');
|
|
254
|
-
return groups !== null && groups !== void 0 ? groups : null;
|
|
255
|
-
}
|
|
256
|
-
/**
|
|
257
|
-
* The GroupLevels in this RecordQueryResult.
|
|
258
|
-
* Throws if data is not loaded yet.
|
|
259
|
-
* Can be watched.
|
|
260
|
-
*
|
|
261
|
-
* @hidden
|
|
262
|
-
*/
|
|
263
|
-
}, {
|
|
264
|
-
key: "groupLevels",
|
|
265
|
-
get: function get() {
|
|
266
|
-
var groupLevels = this._data.groupLevels; // Throws when the model has been deleted.
|
|
267
|
-
(0, _error_utils.invariant)(this.isDataLoaded, 'RecordQueryResult data is not loaded');
|
|
268
|
-
return groupLevels ? groupLevels.map(singleLevel => _objectSpread(_objectSpread({}, singleLevel), {}, {
|
|
269
|
-
field: this.parentTable.getFieldById(singleLevel.fieldId)
|
|
270
|
-
})) : null;
|
|
271
|
-
}
|
|
272
|
-
/**
|
|
273
|
-
* The set of record IDs in this RecordQueryResult.
|
|
274
|
-
* Throws if data is not loaded yet.
|
|
275
|
-
*
|
|
276
|
-
* @internal
|
|
277
|
-
*/
|
|
278
|
-
}, {
|
|
279
|
-
key: "_getOrGenerateRecordIdsSet",
|
|
280
|
-
value: function _getOrGenerateRecordIdsSet() {
|
|
281
|
-
if (!this._recordIdsSet) {
|
|
282
|
-
var recordIdsSet = {};
|
|
283
|
-
var _iterator3 = _createForOfIteratorHelper(this.recordIds),
|
|
284
|
-
_step3;
|
|
285
|
-
try {
|
|
286
|
-
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
287
|
-
var recordId = _step3.value;
|
|
288
|
-
recordIdsSet[recordId] = true;
|
|
289
|
-
}
|
|
290
|
-
} catch (err) {
|
|
291
|
-
_iterator3.e(err);
|
|
292
|
-
} finally {
|
|
293
|
-
_iterator3.f();
|
|
305
|
+
}
|
|
306
|
+
/** @inheritdoc */
|
|
307
|
+
watch(keys, callback, context) {
|
|
308
|
+
const validKeys = super.watch(keys, callback, context);
|
|
309
|
+
for (const key of validKeys) {
|
|
310
|
+
if (key.startsWith(_record_query_result.default.WatchableCellValuesInFieldKeyPrefix)) {
|
|
311
|
+
const fieldId = key.substring(_record_query_result.default.WatchableCellValuesInFieldKeyPrefix.length);
|
|
312
|
+
if (this._fieldIdsSetToLoadOrNullIfAllFields && !(0, _private_utils.has)(this._fieldIdsSetToLoadOrNullIfAllFields, fieldId)) {
|
|
313
|
+
throw (0, _error_utils.spawnError)("Can't watch field because it wasn't included in RecordQueryResult fields: %s", fieldId);
|
|
294
314
|
}
|
|
295
|
-
this.
|
|
315
|
+
this._incrementCellValueKeyWatchCountAndWatchIfNecessary(key, this._onCellValuesInFieldChanged);
|
|
296
316
|
}
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
* Null if fields were not specified, which means the RecordQueryResult
|
|
302
|
-
* will load all fields in the table.
|
|
303
|
-
*/
|
|
304
|
-
}, {
|
|
305
|
-
key: "fields",
|
|
306
|
-
get: function get() {
|
|
307
|
-
var fieldIdsOrNullIfAllFields = this._normalizedOpts.fieldIdsOrNullIfAllFields;
|
|
308
|
-
if (fieldIdsOrNullIfAllFields) {
|
|
309
|
-
var fields = [];
|
|
310
|
-
// Filter out any deleted fields, since RecordQueryResult is "live".
|
|
311
|
-
// It would be too cumbersome (and defeat part of the purpose of
|
|
312
|
-
// using RecordQueryResult) if the user had to manually watch for deletion
|
|
313
|
-
// on all the fields and recreate the RecordQueryResult.
|
|
314
|
-
var _iterator4 = _createForOfIteratorHelper(fieldIdsOrNullIfAllFields),
|
|
315
|
-
_step4;
|
|
316
|
-
try {
|
|
317
|
-
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
318
|
-
var fieldId = _step4.value;
|
|
319
|
-
var field = this._table.getFieldByIdIfExists(fieldId);
|
|
320
|
-
if (field !== null) {
|
|
321
|
-
fields.push(field);
|
|
322
|
-
}
|
|
317
|
+
if (key === _record_query_result.default.WatchableKeys.cellValues) {
|
|
318
|
+
if (this._fieldIdsSetToLoadOrNullIfAllFields) {
|
|
319
|
+
for (const fieldId of Object.keys(this._fieldIdsSetToLoadOrNullIfAllFields)) {
|
|
320
|
+
this._incrementCellValueKeyWatchCountAndWatchIfNecessary(_record_query_result.default.WatchableCellValuesInFieldKeyPrefix + fieldId, this._onCellValuesChanged);
|
|
323
321
|
}
|
|
324
|
-
}
|
|
325
|
-
|
|
326
|
-
} finally {
|
|
327
|
-
_iterator4.f();
|
|
322
|
+
} else {
|
|
323
|
+
this._incrementCellValueKeyWatchCountAndWatchIfNecessary(key, this._onCellValuesChanged);
|
|
328
324
|
}
|
|
329
|
-
return fields;
|
|
330
|
-
} else {
|
|
331
|
-
return null;
|
|
332
|
-
}
|
|
333
|
-
}
|
|
334
|
-
/** @internal */
|
|
335
|
-
}, {
|
|
336
|
-
key: "_cellValuesForSortWatchKeys",
|
|
337
|
-
get: function get() {
|
|
338
|
-
return this._sorts ? this._sorts.map(sort => "cellValuesInField:".concat(sort.fieldId)) : [];
|
|
339
|
-
}
|
|
340
|
-
/** @internal */
|
|
341
|
-
}, {
|
|
342
|
-
key: "_cellValuesForGroupWatchKeys",
|
|
343
|
-
get: function get() {
|
|
344
|
-
// _groupLevels can not be specified by the user during the query yet
|
|
345
|
-
// istanbul ignore next
|
|
346
|
-
return this._groupLevels ? this._groupLevels.map(group => "cellValuesInField:".concat(group.fieldId)) : [];
|
|
347
|
-
}
|
|
348
|
-
/** @internal */
|
|
349
|
-
}, {
|
|
350
|
-
key: "_sourceModelRecordIds",
|
|
351
|
-
get: function get() {
|
|
352
|
-
return this._sourceModel instanceof _table.default ? this._recordStore.recordIds : this._recordStore.getViewDataStore(this._sourceModel.id).visibleRecordIds;
|
|
353
|
-
}
|
|
354
|
-
/** @internal */
|
|
355
|
-
}, {
|
|
356
|
-
key: "_sourceModelGroups",
|
|
357
|
-
get: function get() {
|
|
358
|
-
return this._sourceModel instanceof _table.default ? null : this._recordStore.getViewDataStore(this._sourceModel.id).groups;
|
|
359
|
-
}
|
|
360
|
-
/** @internal */
|
|
361
|
-
}, {
|
|
362
|
-
key: "_sourceModelGroupLevels",
|
|
363
|
-
get: function get() {
|
|
364
|
-
return this._sourceModel instanceof _table.default ? null : this._recordStore.getViewDataStore(this._sourceModel.id).groupLevels;
|
|
365
|
-
}
|
|
366
|
-
/** @internal */
|
|
367
|
-
}, {
|
|
368
|
-
key: "_sourceModelRecords",
|
|
369
|
-
get: function get() {
|
|
370
|
-
return this._sourceModel instanceof _table.default ? this._recordStore.records : this._recordStore.getViewDataStore(this._sourceModel.id).visibleRecords;
|
|
371
|
-
}
|
|
372
|
-
/** @internal */
|
|
373
|
-
}, {
|
|
374
|
-
key: "_incrementCellValueKeyWatchCountAndWatchIfNecessary",
|
|
375
|
-
value: function _incrementCellValueKeyWatchCountAndWatchIfNecessary(key, watchCallback) {
|
|
376
|
-
if (!this._cellValueKeyWatchCounts[key]) {
|
|
377
|
-
this._cellValueKeyWatchCounts[key] = 0;
|
|
378
|
-
this._recordStore.watch(key, watchCallback, this);
|
|
379
|
-
}
|
|
380
|
-
this._cellValueKeyWatchCounts[key]++;
|
|
381
|
-
}
|
|
382
|
-
/** @internal */
|
|
383
|
-
}, {
|
|
384
|
-
key: "_decrementCellValueKeyWatchCountAndUnwatchIfPossible",
|
|
385
|
-
value: function _decrementCellValueKeyWatchCountAndUnwatchIfPossible(key, watchCallback) {
|
|
386
|
-
if (!this._cellValueKeyWatchCounts[key]) {
|
|
387
|
-
// Key isn't watched, so just skip it. This matches behavior of Watchable,
|
|
388
|
-
// where calling unwatch on a key that isn't watched just no-ops.
|
|
389
|
-
return;
|
|
390
|
-
}
|
|
391
|
-
this._cellValueKeyWatchCounts[key]--;
|
|
392
|
-
if (this._cellValueKeyWatchCounts[key] === 0) {
|
|
393
|
-
// We're down to zero watches for this key, so we can actually unwatch it now.
|
|
394
|
-
this._recordStore.unwatch(key, watchCallback, this);
|
|
395
|
-
delete this._cellValueKeyWatchCounts[key];
|
|
396
325
|
}
|
|
397
326
|
}
|
|
398
|
-
|
|
399
|
-
}
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
throw (0, _error_utils.spawnError)("Can't watch field because it wasn't included in RecordQueryResult fields: %s", fieldId);
|
|
412
|
-
}
|
|
413
|
-
this._incrementCellValueKeyWatchCountAndWatchIfNecessary(key, this._onCellValuesInFieldChanged);
|
|
414
|
-
}
|
|
415
|
-
if (key === _record_query_result.default.WatchableKeys.cellValues) {
|
|
416
|
-
if (this._fieldIdsSetToLoadOrNullIfAllFields) {
|
|
417
|
-
for (var _i = 0, _Object$keys = Object.keys(this._fieldIdsSetToLoadOrNullIfAllFields); _i < _Object$keys.length; _i++) {
|
|
418
|
-
var _fieldId = _Object$keys[_i];
|
|
419
|
-
this._incrementCellValueKeyWatchCountAndWatchIfNecessary(_record_query_result.default.WatchableCellValuesInFieldKeyPrefix + _fieldId, this._onCellValuesChanged);
|
|
420
|
-
}
|
|
421
|
-
} else {
|
|
422
|
-
this._incrementCellValueKeyWatchCountAndWatchIfNecessary(key, this._onCellValuesChanged);
|
|
423
|
-
}
|
|
424
|
-
}
|
|
425
|
-
}
|
|
426
|
-
} catch (err) {
|
|
427
|
-
_iterator5.e(err);
|
|
428
|
-
} finally {
|
|
429
|
-
_iterator5.f();
|
|
430
|
-
}
|
|
431
|
-
return validKeys;
|
|
432
|
-
}
|
|
433
|
-
/** @inheritdoc */
|
|
434
|
-
}, {
|
|
435
|
-
key: "unwatch",
|
|
436
|
-
value: function unwatch(keys, callback, context) {
|
|
437
|
-
var validKeys = (0, _get2.default)((0, _getPrototypeOf2.default)(TableOrViewQueryResult.prototype), "unwatch", this).call(this, keys, callback, context);
|
|
438
|
-
var _iterator6 = _createForOfIteratorHelper(validKeys),
|
|
439
|
-
_step6;
|
|
440
|
-
try {
|
|
441
|
-
for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
|
|
442
|
-
var key = _step6.value;
|
|
443
|
-
if (key.startsWith(_record_query_result.default.WatchableCellValuesInFieldKeyPrefix)) {
|
|
444
|
-
this._decrementCellValueKeyWatchCountAndUnwatchIfPossible(key, this._onCellValuesInFieldChanged);
|
|
445
|
-
}
|
|
446
|
-
if (key === _record_query_result.default.WatchableKeys.cellValues) {
|
|
447
|
-
if (this._fieldIdsSetToLoadOrNullIfAllFields) {
|
|
448
|
-
for (var _i2 = 0, _Object$keys2 = Object.keys(this._fieldIdsSetToLoadOrNullIfAllFields); _i2 < _Object$keys2.length; _i2++) {
|
|
449
|
-
var fieldId = _Object$keys2[_i2];
|
|
450
|
-
this._decrementCellValueKeyWatchCountAndUnwatchIfPossible(_record_query_result.default.WatchableCellValuesInFieldKeyPrefix + fieldId, this._onCellValuesChanged);
|
|
451
|
-
}
|
|
452
|
-
} else {
|
|
453
|
-
this._decrementCellValueKeyWatchCountAndUnwatchIfPossible(key, this._onCellValuesChanged);
|
|
454
|
-
}
|
|
327
|
+
return validKeys;
|
|
328
|
+
}
|
|
329
|
+
/** @inheritdoc */
|
|
330
|
+
unwatch(keys, callback, context) {
|
|
331
|
+
const validKeys = super.unwatch(keys, callback, context);
|
|
332
|
+
for (const key of validKeys) {
|
|
333
|
+
if (key.startsWith(_record_query_result.default.WatchableCellValuesInFieldKeyPrefix)) {
|
|
334
|
+
this._decrementCellValueKeyWatchCountAndUnwatchIfPossible(key, this._onCellValuesInFieldChanged);
|
|
335
|
+
}
|
|
336
|
+
if (key === _record_query_result.default.WatchableKeys.cellValues) {
|
|
337
|
+
if (this._fieldIdsSetToLoadOrNullIfAllFields) {
|
|
338
|
+
for (const fieldId of Object.keys(this._fieldIdsSetToLoadOrNullIfAllFields)) {
|
|
339
|
+
this._decrementCellValueKeyWatchCountAndUnwatchIfPossible(_record_query_result.default.WatchableCellValuesInFieldKeyPrefix + fieldId, this._onCellValuesChanged);
|
|
455
340
|
}
|
|
341
|
+
} else {
|
|
342
|
+
this._decrementCellValueKeyWatchCountAndUnwatchIfPossible(key, this._onCellValuesChanged);
|
|
456
343
|
}
|
|
457
|
-
} catch (err) {
|
|
458
|
-
_iterator6.e(err);
|
|
459
|
-
} finally {
|
|
460
|
-
_iterator6.f();
|
|
461
344
|
}
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
if (this._sourceModel instanceof _table.default) {
|
|
486
|
-
if (this._fieldIdsSetToLoadOrNullIfAllFields) {
|
|
487
|
-
sourceModelLoadPromise = this._recordStore.loadRecordMetadataAsync();
|
|
488
|
-
} else {
|
|
489
|
-
// table.loadDataAsync is a superset of loadRecordMetadataAsync,
|
|
490
|
-
// so no need to load record metadata again.
|
|
491
|
-
sourceModelLoadPromise = null;
|
|
492
|
-
}
|
|
493
|
-
} else {
|
|
494
|
-
sourceModelLoadPromise = this._recordStore.getViewDataStore(this._sourceModel.id).loadDataAsync();
|
|
495
|
-
}
|
|
496
|
-
this._mostRecentSourceModelLoadPromise = Promise.all([sourceModelLoadPromise, cellValuesInFieldsLoadPromise, this._loadRecordColorsAsync()]);
|
|
497
|
-
_context.next = 7;
|
|
498
|
-
return (0, _get2.default)((0, _getPrototypeOf2.default)(TableOrViewQueryResult.prototype), "loadDataAsync", this).call(this);
|
|
499
|
-
case 7:
|
|
500
|
-
case "end":
|
|
501
|
-
return _context.stop();
|
|
502
|
-
}
|
|
503
|
-
}, _callee, this);
|
|
504
|
-
}));
|
|
505
|
-
function loadDataAsync() {
|
|
506
|
-
return _loadDataAsync2.apply(this, arguments);
|
|
507
|
-
}
|
|
508
|
-
return loadDataAsync;
|
|
509
|
-
}()
|
|
510
|
-
/**
|
|
511
|
-
* @internal
|
|
512
|
-
*/
|
|
513
|
-
)
|
|
514
|
-
}, {
|
|
515
|
-
key: "_getChangedKeysOnLoad",
|
|
516
|
-
value: function _getChangedKeysOnLoad() {
|
|
517
|
-
var changedKeys = [_record_query_result.default.WatchableKeys.records, _record_query_result.default.WatchableKeys.recordIds, _record_query_result.default.WatchableKeys.cellValues, _record_query_result.default.WatchableKeys.groups, _record_query_result.default.WatchableKeys.groupLevels];
|
|
518
|
-
var fieldIds = this._normalizedOpts.fieldIdsOrNullIfAllFields || this._table.fields.map(field => field.id);
|
|
519
|
-
var _iterator7 = _createForOfIteratorHelper(fieldIds),
|
|
520
|
-
_step7;
|
|
521
|
-
try {
|
|
522
|
-
for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
|
|
523
|
-
var fieldId = _step7.value;
|
|
524
|
-
changedKeys.push(_record_query_result.default.WatchableCellValuesInFieldKeyPrefix + fieldId);
|
|
525
|
-
}
|
|
526
|
-
} catch (err) {
|
|
527
|
-
_iterator7.e(err);
|
|
528
|
-
} finally {
|
|
529
|
-
_iterator7.f();
|
|
345
|
+
}
|
|
346
|
+
return validKeys;
|
|
347
|
+
}
|
|
348
|
+
/** @inheritdoc */
|
|
349
|
+
async loadDataAsync() {
|
|
350
|
+
let sourceModelLoadPromise;
|
|
351
|
+
let cellValuesInFieldsLoadPromise;
|
|
352
|
+
if (this._sourceModel.isDeleted) {
|
|
353
|
+
throw this._spawnErrorForDeletion();
|
|
354
|
+
}
|
|
355
|
+
if (this._fieldIdsSetToLoadOrNullIfAllFields) {
|
|
356
|
+
cellValuesInFieldsLoadPromise = this._recordStore.loadCellValuesInFieldIdsAsync(Object.keys(this._fieldIdsSetToLoadOrNullIfAllFields));
|
|
357
|
+
} else {
|
|
358
|
+
// Load all fields.
|
|
359
|
+
cellValuesInFieldsLoadPromise = this._recordStore.loadDataAsync();
|
|
360
|
+
}
|
|
361
|
+
if (this._sourceModel instanceof _table.default) {
|
|
362
|
+
if (this._fieldIdsSetToLoadOrNullIfAllFields) {
|
|
363
|
+
sourceModelLoadPromise = this._recordStore.loadRecordMetadataAsync();
|
|
364
|
+
} else {
|
|
365
|
+
// table.loadDataAsync is a superset of loadRecordMetadataAsync,
|
|
366
|
+
// so no need to load record metadata again.
|
|
367
|
+
sourceModelLoadPromise = null;
|
|
530
368
|
}
|
|
531
|
-
|
|
369
|
+
} else {
|
|
370
|
+
sourceModelLoadPromise = this._recordStore.getViewDataStore(this._sourceModel.id).loadDataAsync();
|
|
532
371
|
}
|
|
372
|
+
this._mostRecentSourceModelLoadPromise = Promise.all([sourceModelLoadPromise, cellValuesInFieldsLoadPromise, this._loadRecordColorsAsync()]);
|
|
373
|
+
await super.loadDataAsync();
|
|
374
|
+
}
|
|
533
375
|
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
}
|
|
576
|
-
}
|
|
577
|
-
} catch (err) {
|
|
578
|
-
_iterator8.e(err);
|
|
579
|
-
} finally {
|
|
580
|
-
_iterator8.f();
|
|
581
|
-
}
|
|
582
|
-
}
|
|
583
|
-
return _context2.abrupt("return", this._getChangedKeysOnLoad());
|
|
584
|
-
case 14:
|
|
585
|
-
case "end":
|
|
586
|
-
return _context2.stop();
|
|
587
|
-
}
|
|
588
|
-
}, _callee2, this);
|
|
589
|
-
}));
|
|
590
|
-
function _loadDataAsync() {
|
|
591
|
-
return _loadDataAsync3.apply(this, arguments);
|
|
592
|
-
}
|
|
593
|
-
return _loadDataAsync;
|
|
594
|
-
}() /** @inheritdoc */)
|
|
595
|
-
}, {
|
|
596
|
-
key: "unloadData",
|
|
597
|
-
value: function unloadData() {
|
|
598
|
-
(0, _get2.default)((0, _getPrototypeOf2.default)(TableOrViewQueryResult.prototype), "unloadData", this).call(this);
|
|
599
|
-
if (this._sourceModel instanceof _table.default) {
|
|
600
|
-
if (this._fieldIdsSetToLoadOrNullIfAllFields) {
|
|
601
|
-
this._recordStore.unloadRecordMetadata();
|
|
602
|
-
} else {
|
|
603
|
-
this._recordStore.unloadData();
|
|
604
|
-
}
|
|
605
|
-
} else {
|
|
606
|
-
// If the view is deleted, we can't get a data store for it.
|
|
607
|
-
if (!this._sourceModel.isDeleted) {
|
|
608
|
-
this._recordStore.getViewDataStore(this._sourceModel.id).unloadData();
|
|
376
|
+
/**
|
|
377
|
+
* @internal
|
|
378
|
+
*/
|
|
379
|
+
_getChangedKeysOnLoad() {
|
|
380
|
+
const changedKeys = [_record_query_result.default.WatchableKeys.records, _record_query_result.default.WatchableKeys.recordIds, _record_query_result.default.WatchableKeys.cellValues, _record_query_result.default.WatchableKeys.groups, _record_query_result.default.WatchableKeys.groupLevels];
|
|
381
|
+
const fieldIds = this._normalizedOpts.fieldIdsOrNullIfAllFields || this._table.fields.map(field => field.id);
|
|
382
|
+
for (const fieldId of fieldIds) {
|
|
383
|
+
changedKeys.push(_record_query_result.default.WatchableCellValuesInFieldKeyPrefix + fieldId);
|
|
384
|
+
}
|
|
385
|
+
return changedKeys;
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
/** @internal */
|
|
389
|
+
async _loadDataAsync() {
|
|
390
|
+
this._table.__tableOrViewQueryResultPool.registerObjectForReuseStrong(this);
|
|
391
|
+
(0, _error_utils.invariant)(this._mostRecentSourceModelLoadPromise, 'No source model load promises');
|
|
392
|
+
await this._mostRecentSourceModelLoadPromise;
|
|
393
|
+
if (this._sorts) {
|
|
394
|
+
this._replaceVisList();
|
|
395
|
+
}
|
|
396
|
+
this._orderedRecordIds = this._generateOrderedRecordIds();
|
|
397
|
+
this._orderedGroups = this._generateAndLoadOrderedGroups();
|
|
398
|
+
// The server provided value and developer supplied value are the same, no conversion needed
|
|
399
|
+
this._loadedGroupLevels = this._sourceModelGroupLevels;
|
|
400
|
+
if (this._sourceModel instanceof _table.default) {
|
|
401
|
+
this._recordStore.watch(_record_store.WatchableRecordStoreKeys.records, this._onRecordsChanged, this);
|
|
402
|
+
} else {
|
|
403
|
+
const viewDataStore = this._recordStore.getViewDataStore(this._sourceModel.id);
|
|
404
|
+
viewDataStore.watch(_view_data_store.WatchableViewDataStoreKeys.visibleRecords, this._onRecordsChanged, this);
|
|
405
|
+
viewDataStore.watch(_view_data_store.WatchableViewDataStoreKeys.groups, this._onGroupsChanged, this);
|
|
406
|
+
viewDataStore.watch(_view_data_store.WatchableViewDataStoreKeys.groupLevels, this._onGroupLevelsChanged, this);
|
|
407
|
+
}
|
|
408
|
+
this._recordStore.watch(this._cellValuesForSortWatchKeys, this._onCellValuesForSortChanged, this);
|
|
409
|
+
this._recordStore.watch(this._cellValuesForGroupWatchKeys, this._onCellValuesForGroupChanged, this);
|
|
410
|
+
this._table.watch(_table.WatchableTableKeys.fields, this._onTableFieldsChanged, this);
|
|
411
|
+
if (this._sorts) {
|
|
412
|
+
for (const sort of this._sorts) {
|
|
413
|
+
const field = this._table.getFieldByIdIfExists(sort.fieldId);
|
|
414
|
+
if (field) {
|
|
415
|
+
field.watch('type', this._onFieldConfigChanged, this);
|
|
416
|
+
field.watch('options', this._onFieldConfigChanged, this);
|
|
609
417
|
}
|
|
610
418
|
}
|
|
419
|
+
}
|
|
420
|
+
return this._getChangedKeysOnLoad();
|
|
421
|
+
}
|
|
422
|
+
/** @inheritdoc */
|
|
423
|
+
unloadData() {
|
|
424
|
+
super.unloadData();
|
|
425
|
+
if (this._sourceModel instanceof _table.default) {
|
|
611
426
|
if (this._fieldIdsSetToLoadOrNullIfAllFields) {
|
|
612
|
-
this._recordStore.
|
|
613
|
-
}
|
|
614
|
-
this._unloadRecordColors();
|
|
615
|
-
}
|
|
616
|
-
/** @internal */
|
|
617
|
-
}, {
|
|
618
|
-
key: "_unloadData",
|
|
619
|
-
value: function _unloadData() {
|
|
620
|
-
this._mostRecentSourceModelLoadPromise = null;
|
|
621
|
-
if (this._sourceModel instanceof _table.default) {
|
|
622
|
-
this._recordStore.unwatch(_record_store.WatchableRecordStoreKeys.records, this._onRecordsChanged, this);
|
|
427
|
+
this._recordStore.unloadRecordMetadata();
|
|
623
428
|
} else {
|
|
624
|
-
|
|
625
|
-
var viewDataStore = this._recordStore.getViewDataStore(this._sourceModel.id);
|
|
626
|
-
viewDataStore.unwatch(_view_data_store.WatchableViewDataStoreKeys.visibleRecords, this._onRecordsChanged, this);
|
|
627
|
-
viewDataStore.unwatch(_view_data_store.WatchableViewDataStoreKeys.groups, this._onGroupsChanged, this);
|
|
628
|
-
viewDataStore.unwatch(_view_data_store.WatchableViewDataStoreKeys.groupLevels, this._onGroupLevelsChanged, this);
|
|
629
|
-
}
|
|
429
|
+
this._recordStore.unloadData();
|
|
630
430
|
}
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
this.
|
|
634
|
-
|
|
635
|
-
// If the table is deleted, can't call getFieldById on it below.
|
|
636
|
-
if (!this._table.isDeleted && this._sorts) {
|
|
637
|
-
var _iterator9 = _createForOfIteratorHelper(this._sorts),
|
|
638
|
-
_step9;
|
|
639
|
-
try {
|
|
640
|
-
for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {
|
|
641
|
-
var sort = _step9.value;
|
|
642
|
-
var field = this._table.getFieldByIdIfExists(sort.fieldId);
|
|
643
|
-
if (field) {
|
|
644
|
-
field.unwatch('type', this._onFieldConfigChanged, this);
|
|
645
|
-
field.unwatch('options', this._onFieldConfigChanged, this);
|
|
646
|
-
}
|
|
647
|
-
}
|
|
648
|
-
} catch (err) {
|
|
649
|
-
_iterator9.e(err);
|
|
650
|
-
} finally {
|
|
651
|
-
_iterator9.f();
|
|
652
|
-
}
|
|
431
|
+
} else {
|
|
432
|
+
// If the view is deleted, we can't get a data store for it.
|
|
433
|
+
if (!this._sourceModel.isDeleted) {
|
|
434
|
+
this._recordStore.getViewDataStore(this._sourceModel.id).unloadData();
|
|
653
435
|
}
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
this.
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
436
|
+
}
|
|
437
|
+
if (this._fieldIdsSetToLoadOrNullIfAllFields) {
|
|
438
|
+
this._recordStore.unloadCellValuesInFieldIds(Object.keys(this._fieldIdsSetToLoadOrNullIfAllFields));
|
|
439
|
+
}
|
|
440
|
+
this._unloadRecordColors();
|
|
441
|
+
}
|
|
442
|
+
/** @internal */
|
|
443
|
+
_unloadData() {
|
|
444
|
+
this._mostRecentSourceModelLoadPromise = null;
|
|
445
|
+
if (this._sourceModel instanceof _table.default) {
|
|
446
|
+
this._recordStore.unwatch(_record_store.WatchableRecordStoreKeys.records, this._onRecordsChanged, this);
|
|
447
|
+
} else {
|
|
448
|
+
if (!this._sourceModel.isDeleted) {
|
|
449
|
+
const viewDataStore = this._recordStore.getViewDataStore(this._sourceModel.id);
|
|
450
|
+
viewDataStore.unwatch(_view_data_store.WatchableViewDataStoreKeys.visibleRecords, this._onRecordsChanged, this);
|
|
451
|
+
viewDataStore.unwatch(_view_data_store.WatchableViewDataStoreKeys.groups, this._onGroupsChanged, this);
|
|
452
|
+
viewDataStore.unwatch(_view_data_store.WatchableViewDataStoreKeys.groupLevels, this._onGroupLevelsChanged, this);
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
this._recordStore.unwatch(this._cellValuesForSortWatchKeys, this._onCellValuesForSortChanged, this);
|
|
456
|
+
this._recordStore.unwatch(this._cellValuesForGroupWatchKeys, this._onCellValuesForGroupChanged, this);
|
|
457
|
+
this._table.unwatch(_table.WatchableTableKeys.fields, this._onTableFieldsChanged, this);
|
|
458
|
+
|
|
459
|
+
// If the table is deleted, can't call getFieldById on it below.
|
|
460
|
+
if (!this._table.isDeleted && this._sorts) {
|
|
461
|
+
for (const sort of this._sorts) {
|
|
462
|
+
const field = this._table.getFieldByIdIfExists(sort.fieldId);
|
|
463
|
+
if (field) {
|
|
464
|
+
field.unwatch('type', this._onFieldConfigChanged, this);
|
|
465
|
+
field.unwatch('options', this._onFieldConfigChanged, this);
|
|
674
466
|
}
|
|
675
|
-
} catch (err) {
|
|
676
|
-
_iterator10.e(err);
|
|
677
|
-
} finally {
|
|
678
|
-
_iterator10.f();
|
|
679
467
|
}
|
|
680
468
|
}
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
}
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
469
|
+
this._unloadOrderedGroupsIfNeeded();
|
|
470
|
+
this._visList = null;
|
|
471
|
+
this._orderedRecordIds = null;
|
|
472
|
+
this._recordIdsSet = null;
|
|
473
|
+
this._table.__tableOrViewQueryResultPool.unregisterObjectForReuseStrong(this);
|
|
474
|
+
}
|
|
475
|
+
/** @internal */
|
|
476
|
+
_addRecordIdsToVisList(recordIds) {
|
|
477
|
+
const visList = this._visList;
|
|
478
|
+
(0, _error_utils.invariant)(visList, 'No vis list');
|
|
479
|
+
for (const recordId of recordIds) {
|
|
480
|
+
const record = this._recordStore.getRecordByIdIfExists(recordId);
|
|
481
|
+
(0, _error_utils.invariant)(record, 'Record missing in table');
|
|
482
|
+
visList.addRecordData(record._data);
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
/** @internal */
|
|
486
|
+
_onGroupLevelsChanged(model, key, updates) {
|
|
487
|
+
this._loadedGroupLevels = this._sourceModelGroupLevels;
|
|
488
|
+
this._unloadRemovedGroupsAndLoadNewGroupsAndTriggerWatches();
|
|
489
|
+
this._onChange(_record_query_result.default.WatchableKeys.groupLevels);
|
|
490
|
+
}
|
|
491
|
+
/** @internal */
|
|
492
|
+
_onGroupsChanged(model, key, updates) {
|
|
493
|
+
this._unloadRemovedGroupsAndLoadNewGroupsAndTriggerWatches();
|
|
494
|
+
}
|
|
495
|
+
/** @internal */
|
|
496
|
+
_onRecordsChanged(model, key, updates) {
|
|
497
|
+
if (model instanceof _view_data_store.default) {
|
|
498
|
+
// For a view model, we don't get updates sent with the onChange event,
|
|
499
|
+
// so we need to manually generate updates based on the old and new
|
|
500
|
+
// recordIds.
|
|
501
|
+
(0, _error_utils.invariant)(this._orderedRecordIds, '_orderedRecordIds unset');
|
|
502
|
+
const visibleRecordIds = this._recordStore.getViewDataStore(model.viewId).visibleRecordIds;
|
|
503
|
+
const addedRecordIds = (0, _private_utils.arrayDifference)(visibleRecordIds, this._orderedRecordIds);
|
|
504
|
+
const removedRecordIds = (0, _private_utils.arrayDifference)(this._orderedRecordIds, visibleRecordIds);
|
|
505
|
+
updates = {
|
|
506
|
+
addedRecordIds,
|
|
507
|
+
removedRecordIds
|
|
508
|
+
};
|
|
509
|
+
}
|
|
510
|
+
if (!updates) {
|
|
511
|
+
// If there are no updates, do nothing, since we'll handle the initial
|
|
512
|
+
// callback when the record set is loaded (and we don't want to fire
|
|
513
|
+
// a records change twice with no data).
|
|
514
|
+
return;
|
|
515
|
+
}
|
|
516
|
+
const {
|
|
517
|
+
addedRecordIds,
|
|
518
|
+
removedRecordIds
|
|
519
|
+
} = updates;
|
|
520
|
+
if (this._sorts) {
|
|
521
|
+
const visList = this._visList;
|
|
522
|
+
(0, _error_utils.invariant)(visList, 'No vis list');
|
|
523
|
+
if (removedRecordIds.length > 0) {
|
|
524
|
+
visList.removeRecordIds(removedRecordIds);
|
|
711
525
|
}
|
|
712
|
-
if (
|
|
713
|
-
|
|
714
|
-
// callback when the record set is loaded (and we don't want to fire
|
|
715
|
-
// a records change twice with no data).
|
|
716
|
-
return;
|
|
526
|
+
if (addedRecordIds.length > 0) {
|
|
527
|
+
this._addRecordIdsToVisList(addedRecordIds);
|
|
717
528
|
}
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
var visList = this._visList;
|
|
723
|
-
(0, _error_utils.invariant)(visList, 'No vis list');
|
|
724
|
-
if (removedRecordIds.length > 0) {
|
|
725
|
-
visList.removeRecordIds(removedRecordIds);
|
|
726
|
-
}
|
|
727
|
-
if (addedRecordIds.length > 0) {
|
|
728
|
-
this._addRecordIdsToVisList(addedRecordIds);
|
|
729
|
-
}
|
|
529
|
+
}
|
|
530
|
+
if (this._recordIdsSet) {
|
|
531
|
+
for (const recordId of addedRecordIds) {
|
|
532
|
+
this._recordIdsSet[recordId] = true;
|
|
730
533
|
}
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
_step11;
|
|
734
|
-
try {
|
|
735
|
-
for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {
|
|
736
|
-
var recordId = _step11.value;
|
|
737
|
-
this._recordIdsSet[recordId] = true;
|
|
738
|
-
}
|
|
739
|
-
} catch (err) {
|
|
740
|
-
_iterator11.e(err);
|
|
741
|
-
} finally {
|
|
742
|
-
_iterator11.f();
|
|
743
|
-
}
|
|
744
|
-
var _iterator12 = _createForOfIteratorHelper(removedRecordIds),
|
|
745
|
-
_step12;
|
|
746
|
-
try {
|
|
747
|
-
for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {
|
|
748
|
-
var _recordId = _step12.value;
|
|
749
|
-
this._recordIdsSet[_recordId] = undefined;
|
|
750
|
-
}
|
|
751
|
-
} catch (err) {
|
|
752
|
-
_iterator12.e(err);
|
|
753
|
-
} finally {
|
|
754
|
-
_iterator12.f();
|
|
755
|
-
}
|
|
534
|
+
for (const recordId of removedRecordIds) {
|
|
535
|
+
this._recordIdsSet[recordId] = undefined;
|
|
756
536
|
}
|
|
537
|
+
}
|
|
757
538
|
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
539
|
+
// Now that we've applied our changes (if applicable), let's regenerate our recordIds.
|
|
540
|
+
this._orderedRecordIds = this._generateOrderedRecordIds();
|
|
541
|
+
this._onChange(_record_query_result.default.WatchableKeys.records, updates);
|
|
542
|
+
this._onChange(_record_query_result.default.WatchableKeys.recordIds, updates);
|
|
543
|
+
}
|
|
544
|
+
/** @internal */
|
|
545
|
+
// istanbul ignore next
|
|
546
|
+
_onCellValuesForGroupChanged(recordStore, key, recordIds, fieldId) {
|
|
547
|
+
// TODO(SeanKeenan): This isn't yet required as we don't yet support
|
|
548
|
+
// specifying groups for a custom query, and this will only be called
|
|
549
|
+
// if we specify groups (same as _onCellValuesForSortChanged)
|
|
550
|
+
// This functionality and _onCellValuesForSortChanged should be
|
|
551
|
+
// identical, but testing, validation, and careful thought is required.
|
|
552
|
+
}
|
|
553
|
+
/** @internal */
|
|
554
|
+
_onCellValuesForSortChanged(recordStore, key, recordIds, fieldId) {
|
|
555
|
+
if (!recordIds || !fieldId) {
|
|
556
|
+
// If there are no updates, do nothing, since we'll handle the initial
|
|
557
|
+
// callback when the record set is loaded (and we don't want to fire
|
|
558
|
+
// a records change twice with no data).
|
|
559
|
+
return;
|
|
762
560
|
}
|
|
763
|
-
/** @internal */
|
|
764
|
-
// istanbul ignore next
|
|
765
|
-
}, {
|
|
766
|
-
key: "_onCellValuesForGroupChanged",
|
|
767
|
-
value: function _onCellValuesForGroupChanged(recordStore, key, recordIds, fieldId) {
|
|
768
|
-
// TODO(SeanKeenan): This isn't yet required as we don't yet support
|
|
769
|
-
// specifying groups for a custom query, and this will only be called
|
|
770
|
-
// if we specify groups (same as _onCellValuesForSortChanged)
|
|
771
|
-
// This functionality and _onCellValuesForSortChanged should be
|
|
772
|
-
// identical, but testing, validation, and careful thought is required.
|
|
773
|
-
}
|
|
774
|
-
/** @internal */
|
|
775
|
-
}, {
|
|
776
|
-
key: "_onCellValuesForSortChanged",
|
|
777
|
-
value: function _onCellValuesForSortChanged(recordStore, key, recordIds, fieldId) {
|
|
778
|
-
if (!recordIds || !fieldId) {
|
|
779
|
-
// If there are no updates, do nothing, since we'll handle the initial
|
|
780
|
-
// callback when the record set is loaded (and we don't want to fire
|
|
781
|
-
// a records change twice with no data).
|
|
782
|
-
return;
|
|
783
|
-
}
|
|
784
561
|
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
562
|
+
// NOTE: this will only ever be called if we have sorts, so it's safe to assert that we have
|
|
563
|
+
// a vis list here.
|
|
564
|
+
const visList = this._visList;
|
|
565
|
+
(0, _error_utils.invariant)(visList, 'No vis list');
|
|
566
|
+
(0, _error_utils.invariant)(recordIds.length > 0, 'field ID set without a corresponding record ID');
|
|
567
|
+
|
|
568
|
+
// Only move recordIds that are already in the visList.
|
|
569
|
+
// It's possible to have recordId that is not currently in the visList since
|
|
570
|
+
// this callback can run before onRecordsChanged. (eg. when a deleted record is
|
|
571
|
+
// restored, this is triggered for that record but the record is not yet in the visList:
|
|
572
|
+
// onRecordsChanged actually adds it)
|
|
573
|
+
// Note: cell value changes that result in the records being filtered out trigger
|
|
574
|
+
// onRecordsChanged on the View model, so we don't have to worry about that here.
|
|
575
|
+
const visListRecordIdsSet = new Set(visList.getOrderedRecordIds());
|
|
576
|
+
const recordIdsToMove = recordIds.filter(recordId => visListRecordIdsSet.has(recordId));
|
|
577
|
+
visList.removeRecordIds(recordIdsToMove);
|
|
578
|
+
this._addRecordIdsToVisList(recordIdsToMove);
|
|
579
|
+
this._orderedRecordIds = this._generateOrderedRecordIds();
|
|
580
|
+
const changeData = {
|
|
581
|
+
addedRecordIds: [],
|
|
582
|
+
removedRecordIds: []
|
|
583
|
+
};
|
|
584
|
+
this._onChange(_record_query_result.default.WatchableKeys.records, changeData);
|
|
585
|
+
this._onChange(_record_query_result.default.WatchableKeys.recordIds, changeData);
|
|
586
|
+
}
|
|
587
|
+
/** @internal */
|
|
588
|
+
_onFieldConfigChanged(_field, _key) {
|
|
589
|
+
// Field config changed for a field we rely on, so we need to replace our vis list.
|
|
590
|
+
// NOTE: this will only ever be called if we have sorts, so it's safe to assume we
|
|
591
|
+
// are using a vis list here.
|
|
592
|
+
this._replaceVisList();
|
|
593
|
+
this._orderedRecordIds = this._generateOrderedRecordIds();
|
|
594
|
+
}
|
|
595
|
+
/** @internal */
|
|
596
|
+
_onTableFieldsChanged(table, key, updates) {
|
|
597
|
+
if (!this._sorts) {
|
|
598
|
+
// If we don't have any sorts, we don't have to do anything in response to field changes.
|
|
599
|
+
return;
|
|
600
|
+
}
|
|
601
|
+
const {
|
|
602
|
+
addedFieldIds,
|
|
603
|
+
removedFieldIds
|
|
604
|
+
} = updates;
|
|
605
|
+
const fieldIdsSet = new Set(this._sorts.map(sort => sort.fieldId));
|
|
790
606
|
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
//
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
607
|
+
// Check if any fields that we rely on were created or deleted. If they were,
|
|
608
|
+
// replace our vis list.
|
|
609
|
+
// NOTE: we need to check for created, since a field that we rely on can be
|
|
610
|
+
// deleted and then undeleted.
|
|
611
|
+
let wereAnyFieldsCreatedOrDeleted = false;
|
|
612
|
+
for (const fieldId of addedFieldIds) {
|
|
613
|
+
// If a field that we rely on was created (i.e. it was undeleted), we need to
|
|
614
|
+
// make sure we're watching it's config.
|
|
615
|
+
if (fieldIdsSet.has(fieldId)) {
|
|
616
|
+
wereAnyFieldsCreatedOrDeleted = true;
|
|
617
|
+
const field = this._table.getFieldByIdIfExists(fieldId);
|
|
618
|
+
(0, _error_utils.invariant)(field, 'Created field does not exist');
|
|
619
|
+
field.watch('type', this._onFieldConfigChanged, this);
|
|
620
|
+
field.watch('options', this._onFieldConfigChanged, this);
|
|
621
|
+
}
|
|
622
|
+
}
|
|
623
|
+
|
|
624
|
+
// coverage analysis
|
|
625
|
+
// istanbul ignore else
|
|
626
|
+
if (!wereAnyFieldsCreatedOrDeleted) {
|
|
627
|
+
wereAnyFieldsCreatedOrDeleted = removedFieldIds.some(fieldId => fieldIdsSet.has(fieldId));
|
|
628
|
+
}
|
|
629
|
+
if (wereAnyFieldsCreatedOrDeleted) {
|
|
630
|
+
// One of the fields we're relying on was deleted,
|
|
631
|
+
this._replaceVisList();
|
|
802
632
|
this._orderedRecordIds = this._generateOrderedRecordIds();
|
|
803
|
-
|
|
633
|
+
|
|
634
|
+
// Make sure we fire onChange events since the order may have changed
|
|
635
|
+
// as a result.
|
|
636
|
+
const changeData = {
|
|
804
637
|
addedRecordIds: [],
|
|
805
638
|
removedRecordIds: []
|
|
806
639
|
};
|
|
807
640
|
this._onChange(_record_query_result.default.WatchableKeys.records, changeData);
|
|
808
641
|
this._onChange(_record_query_result.default.WatchableKeys.recordIds, changeData);
|
|
809
|
-
}
|
|
810
|
-
/** @internal */
|
|
811
|
-
}, {
|
|
812
|
-
key: "_onFieldConfigChanged",
|
|
813
|
-
value: function _onFieldConfigChanged(_field, _key) {
|
|
814
|
-
// Field config changed for a field we rely on, so we need to replace our vis list.
|
|
815
|
-
// NOTE: this will only ever be called if we have sorts, so it's safe to assume we
|
|
816
|
-
// are using a vis list here.
|
|
817
|
-
this._replaceVisList();
|
|
818
|
-
this._orderedRecordIds = this._generateOrderedRecordIds();
|
|
819
|
-
}
|
|
820
|
-
/** @internal */
|
|
821
|
-
}, {
|
|
822
|
-
key: "_onTableFieldsChanged",
|
|
823
|
-
value: function _onTableFieldsChanged(table, key, updates) {
|
|
824
|
-
if (!this._sorts) {
|
|
825
|
-
// If we don't have any sorts, we don't have to do anything in response to field changes.
|
|
826
|
-
return;
|
|
827
|
-
}
|
|
828
|
-
var addedFieldIds = updates.addedFieldIds,
|
|
829
|
-
removedFieldIds = updates.removedFieldIds;
|
|
830
|
-
var fieldIdsSet = new Set(this._sorts.map(sort => sort.fieldId));
|
|
831
642
|
|
|
832
|
-
//
|
|
833
|
-
//
|
|
834
|
-
// NOTE: we need to check for created, since a field that we rely on can be
|
|
835
|
-
// deleted and then undeleted.
|
|
836
|
-
var wereAnyFieldsCreatedOrDeleted = false;
|
|
837
|
-
var _iterator13 = _createForOfIteratorHelper(addedFieldIds),
|
|
838
|
-
_step13;
|
|
839
|
-
try {
|
|
840
|
-
for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) {
|
|
841
|
-
var fieldId = _step13.value;
|
|
842
|
-
// If a field that we rely on was created (i.e. it was undeleted), we need to
|
|
843
|
-
// make sure we're watching it's config.
|
|
844
|
-
if (fieldIdsSet.has(fieldId)) {
|
|
845
|
-
wereAnyFieldsCreatedOrDeleted = true;
|
|
846
|
-
var field = this._table.getFieldByIdIfExists(fieldId);
|
|
847
|
-
(0, _error_utils.invariant)(field, 'Created field does not exist');
|
|
848
|
-
field.watch('type', this._onFieldConfigChanged, this);
|
|
849
|
-
field.watch('options', this._onFieldConfigChanged, this);
|
|
850
|
-
}
|
|
851
|
-
}
|
|
852
|
-
|
|
853
|
-
// coverage analysis
|
|
854
|
-
// istanbul ignore else
|
|
855
|
-
} catch (err) {
|
|
856
|
-
_iterator13.e(err);
|
|
857
|
-
} finally {
|
|
858
|
-
_iterator13.f();
|
|
859
|
-
}
|
|
860
|
-
if (!wereAnyFieldsCreatedOrDeleted) {
|
|
861
|
-
wereAnyFieldsCreatedOrDeleted = removedFieldIds.some(fieldId => fieldIdsSet.has(fieldId));
|
|
862
|
-
}
|
|
863
|
-
if (wereAnyFieldsCreatedOrDeleted) {
|
|
864
|
-
// One of the fields we're relying on was deleted,
|
|
865
|
-
this._replaceVisList();
|
|
866
|
-
this._orderedRecordIds = this._generateOrderedRecordIds();
|
|
867
|
-
|
|
868
|
-
// Make sure we fire onChange events since the order may have changed
|
|
869
|
-
// as a result.
|
|
870
|
-
var changeData = {
|
|
871
|
-
addedRecordIds: [],
|
|
872
|
-
removedRecordIds: []
|
|
873
|
-
};
|
|
874
|
-
this._onChange(_record_query_result.default.WatchableKeys.records, changeData);
|
|
875
|
-
this._onChange(_record_query_result.default.WatchableKeys.recordIds, changeData);
|
|
876
|
-
|
|
877
|
-
// We do not unload/reload groupQueryResults if it's field is deleted as
|
|
878
|
-
// it is responsible for failing to load if the field doesn't exist
|
|
879
|
-
}
|
|
643
|
+
// We do not unload/reload groupQueryResults if it's field is deleted as
|
|
644
|
+
// it is responsible for failing to load if the field doesn't exist
|
|
880
645
|
}
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
if (this._sorts) {
|
|
910
|
-
(0, _error_utils.invariant)(this._visList, 'Cannot generate record ids without a vis list');
|
|
911
|
-
return this._visList.getOrderedRecordIds();
|
|
912
|
-
} else {
|
|
913
|
-
return this._sourceModelRecordIds;
|
|
914
|
-
}
|
|
646
|
+
}
|
|
647
|
+
/** @internal */
|
|
648
|
+
_onCellValuesChanged(table, key, updates) {
|
|
649
|
+
if (!updates) {
|
|
650
|
+
// If there are no updates, do nothing, since we'll handle the initial
|
|
651
|
+
// callback when the record set is loaded (and we don't want to fire
|
|
652
|
+
// a cellValues change twice with no data).
|
|
653
|
+
return;
|
|
654
|
+
}
|
|
655
|
+
this._onChange(_record_query_result.default.WatchableKeys.cellValues, updates);
|
|
656
|
+
}
|
|
657
|
+
/** @internal */
|
|
658
|
+
_onCellValuesInFieldChanged(table, key, recordIds, fieldId) {
|
|
659
|
+
if (!recordIds && !fieldId) {
|
|
660
|
+
// If there are no updates, do nothing, since we'll handle the initial
|
|
661
|
+
// callback when the record set is loaded (and we don't want to fire
|
|
662
|
+
// a cellValuesInField change twice with no data).
|
|
663
|
+
return;
|
|
664
|
+
}
|
|
665
|
+
this._onChange(key, recordIds, fieldId);
|
|
666
|
+
}
|
|
667
|
+
/** @internal */
|
|
668
|
+
_generateOrderedRecordIds() {
|
|
669
|
+
if (this._sorts) {
|
|
670
|
+
(0, _error_utils.invariant)(this._visList, 'Cannot generate record ids without a vis list');
|
|
671
|
+
return this._visList.getOrderedRecordIds();
|
|
672
|
+
} else {
|
|
673
|
+
return this._sourceModelRecordIds;
|
|
915
674
|
}
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
return null;
|
|
929
|
-
}
|
|
930
|
-
return this._sourceModelGroups.map(groupData => {
|
|
931
|
-
var group = this.__groupedRecordQueryResultPool.getObjectForReuse(this, groupData, groupLevels, this._normalizedOpts, this._sdk);
|
|
932
|
-
// Don't await the loading, let others check isDataLoaded.
|
|
933
|
-
// (it doesn't take any time anyway). Loading also strong retains.
|
|
934
|
-
group.loadDataAsync();
|
|
935
|
-
return group;
|
|
936
|
-
});
|
|
675
|
+
}
|
|
676
|
+
/** @internal */
|
|
677
|
+
_generateAndLoadOrderedGroups() {
|
|
678
|
+
// istanbul ignore next
|
|
679
|
+
if (this._groupLevels) {
|
|
680
|
+
(0, _error_utils.invariant)(this._visList, 'Cannot generate record ids without a vis list');
|
|
681
|
+
throw (0, _error_utils.spawnError)('custom group configs not supported');
|
|
682
|
+
} else {
|
|
683
|
+
// Get the group from the view itself
|
|
684
|
+
const groupLevels = this._sourceModelGroupLevels;
|
|
685
|
+
if (!this._sourceModelGroups || !groupLevels) {
|
|
686
|
+
return null;
|
|
937
687
|
}
|
|
688
|
+
return this._sourceModelGroups.map(groupData => {
|
|
689
|
+
const group = this.__groupedRecordQueryResultPool.getObjectForReuse(this, groupData, groupLevels, this._normalizedOpts, this._sdk);
|
|
690
|
+
// Don't await the loading, let others check isDataLoaded.
|
|
691
|
+
// (it doesn't take any time anyway). Loading also strong retains.
|
|
692
|
+
group.loadDataAsync();
|
|
693
|
+
return group;
|
|
694
|
+
});
|
|
938
695
|
}
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
_step14;
|
|
946
|
-
try {
|
|
947
|
-
for (_iterator14.s(); !(_step14 = _iterator14.n()).done;) {
|
|
948
|
-
var group = _step14.value;
|
|
949
|
-
group.unloadData();
|
|
950
|
-
}
|
|
951
|
-
} catch (err) {
|
|
952
|
-
_iterator14.e(err);
|
|
953
|
-
} finally {
|
|
954
|
-
_iterator14.f();
|
|
955
|
-
}
|
|
696
|
+
}
|
|
697
|
+
/** @internal */
|
|
698
|
+
_unloadOrderedGroupsIfNeeded() {
|
|
699
|
+
if (this._orderedGroups) {
|
|
700
|
+
for (const group of this._orderedGroups) {
|
|
701
|
+
group.unloadData();
|
|
956
702
|
}
|
|
957
703
|
}
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
/** @internal */
|
|
988
|
-
}, {
|
|
989
|
-
key: "_getSortsWithDeletedFieldsFiltered",
|
|
990
|
-
value: function _getSortsWithDeletedFieldsFiltered() {
|
|
991
|
-
(0, _error_utils.invariant)(this._sorts, 'No sorts');
|
|
704
|
+
}
|
|
705
|
+
/**
|
|
706
|
+
* If groupings change then some groups will need to be created, and some removed
|
|
707
|
+
* This (TODO: will) handle the diffing necessary to unload, and reload only the changed groups.
|
|
708
|
+
* Also triggers the WatchableKeys.group, as by necessity this will have changed.
|
|
709
|
+
*
|
|
710
|
+
* @internal
|
|
711
|
+
*/
|
|
712
|
+
// TODO: (SeanKeenan) Properly diff and only unload groups that need to be unloaded
|
|
713
|
+
// In the meantime it's not too expensive to just unload everything, and GroupedRecordQueryResults
|
|
714
|
+
// don't yet properly watch changes relevant to updating, so this isn't too bad.
|
|
715
|
+
// (They do invalidate their recordId caches, which is some very cheap work that we could remove)
|
|
716
|
+
_unloadRemovedGroupsAndLoadNewGroupsAndTriggerWatches() {
|
|
717
|
+
this._unloadOrderedGroupsIfNeeded();
|
|
718
|
+
this._orderedGroups = this._generateAndLoadOrderedGroups();
|
|
719
|
+
this._onChange(_record_query_result.default.WatchableKeys.groups);
|
|
720
|
+
}
|
|
721
|
+
/** @internal */
|
|
722
|
+
_replaceVisList() {
|
|
723
|
+
const airtableInterface = this._sdk.__airtableInterface;
|
|
724
|
+
const appInterface = this._sdk.__appInterface;
|
|
725
|
+
const recordDatas = this._sourceModelRecords.map(record => record._data);
|
|
726
|
+
const fieldDatas = this._table.fields.map(field => field._data);
|
|
727
|
+
const filteredSorts = this._getSortsWithDeletedFieldsFiltered();
|
|
728
|
+
this._visList = airtableInterface.createVisList(appInterface, recordDatas, fieldDatas, filteredSorts);
|
|
729
|
+
}
|
|
730
|
+
/** @internal */
|
|
731
|
+
_getSortsWithDeletedFieldsFiltered() {
|
|
732
|
+
(0, _error_utils.invariant)(this._sorts, 'No sorts');
|
|
992
733
|
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
}
|
|
1009
|
-
}]);
|
|
1010
|
-
}(_record_query_result.default);
|
|
1011
|
-
/** @internal */
|
|
1012
|
-
(0, _defineProperty2.default)(TableOrViewQueryResult, "_className", 'TableOrViewQueryResult');
|
|
734
|
+
// Filter out any sorts levels that rely on deleted fields.
|
|
735
|
+
// NOTE: we keep deleted fields around (rather than filtering them out
|
|
736
|
+
// in realtime) in case a field gets undeleted, in which case we want to
|
|
737
|
+
// keep using it.
|
|
738
|
+
return this._sorts.filter(sort => {
|
|
739
|
+
const field = this._table.getFieldByIdIfExists(sort.fieldId);
|
|
740
|
+
return !!field;
|
|
741
|
+
});
|
|
742
|
+
}
|
|
743
|
+
/** @internal */
|
|
744
|
+
_spawnErrorForDeletion() {
|
|
745
|
+
const sourceModelName = this._sourceModel instanceof _table.default ? 'table' : 'view';
|
|
746
|
+
return (0, _error_utils.spawnError)("RecordQueryResult's underlying %s has been deleted", sourceModelName);
|
|
747
|
+
}
|
|
748
|
+
}
|
|
1013
749
|
var _default = exports.default = TableOrViewQueryResult;
|