@airtable/blocks 0.0.0-experimental-f52bc4e5e-20250709 → 0.0.0-experimental-75d011284-20250904

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (481) hide show
  1. package/dist/cjs/base/assert_run_context.js +12 -0
  2. package/dist/cjs/base/index.js +30 -30
  3. package/dist/cjs/base/models/abstract_model_with_async_data.js +154 -237
  4. package/dist/cjs/base/models/base.js +188 -267
  5. package/dist/cjs/base/models/create_aggregators.js +29 -46
  6. package/dist/cjs/base/models/cursor.js +206 -294
  7. package/dist/cjs/base/models/field.js +307 -395
  8. package/dist/cjs/base/models/grouped_record_query_result.js +219 -338
  9. package/dist/cjs/base/models/linked_records_query_result.js +450 -625
  10. package/dist/cjs/base/models/models.js +19 -22
  11. package/dist/cjs/base/models/mutations.js +267 -293
  12. package/dist/cjs/base/models/object_pool.js +117 -156
  13. package/dist/cjs/base/models/record.js +191 -256
  14. package/dist/cjs/base/models/record_coloring.js +6 -6
  15. package/dist/cjs/base/models/record_query_result.js +351 -435
  16. package/dist/cjs/base/models/record_store.js +403 -753
  17. package/dist/cjs/base/models/session.js +125 -153
  18. package/dist/cjs/base/models/table.js +457 -605
  19. package/dist/cjs/base/models/table_or_view_query_result.js +656 -920
  20. package/dist/cjs/base/models/view.js +284 -389
  21. package/dist/cjs/base/models/view_data_store.js +218 -356
  22. package/dist/cjs/base/models/view_metadata_query_result.js +109 -157
  23. package/dist/cjs/base/perform_record_action.js +89 -131
  24. package/dist/cjs/base/sdk.js +129 -184
  25. package/dist/cjs/base/settings_button.js +54 -74
  26. package/dist/cjs/base/types/airtable_interface.js +1 -1
  27. package/dist/cjs/base/types/mutations.js +5 -11
  28. package/dist/cjs/base/types/undo_redo.js +1 -1
  29. package/dist/cjs/base/types/view.js +1 -1
  30. package/dist/cjs/base/ui/base_provider.js +6 -8
  31. package/dist/cjs/base/ui/baymax_utils.js +436 -108
  32. package/dist/cjs/base/ui/block_wrapper.js +81 -106
  33. package/dist/cjs/base/ui/box.js +34 -60
  34. package/dist/cjs/base/ui/button.js +44 -74
  35. package/dist/cjs/base/ui/cell_renderer.js +132 -189
  36. package/dist/cjs/base/ui/choice_token.js +25 -42
  37. package/dist/cjs/base/ui/collaborator_token.js +31 -53
  38. package/dist/cjs/base/ui/color_palette.js +130 -173
  39. package/dist/cjs/base/ui/color_palette_synced.js +41 -70
  40. package/dist/cjs/base/ui/confirmation_dialog.js +70 -120
  41. package/dist/cjs/base/ui/control_sizes.js +24 -22
  42. package/dist/cjs/base/ui/create_detect_element_resize.js +6 -10
  43. package/dist/cjs/base/ui/css_helpers.js +1 -1
  44. package/dist/cjs/base/ui/dialog.js +57 -98
  45. package/dist/cjs/base/ui/dialog_close_button.js +52 -98
  46. package/dist/cjs/base/ui/expand_record.js +1 -2
  47. package/dist/cjs/base/ui/expand_record_list.js +3 -4
  48. package/dist/cjs/base/ui/expand_record_picker_async.js +28 -57
  49. package/dist/cjs/base/ui/field_icon.js +15 -33
  50. package/dist/cjs/base/ui/field_picker.js +25 -70
  51. package/dist/cjs/base/ui/field_picker_synced.js +18 -40
  52. package/dist/cjs/base/ui/form_field.js +27 -55
  53. package/dist/cjs/base/ui/geometry/geometry.js +5 -5
  54. package/dist/cjs/base/ui/geometry/point.js +10 -12
  55. package/dist/cjs/base/ui/geometry/rect.js +36 -52
  56. package/dist/cjs/base/ui/geometry/size.js +10 -12
  57. package/dist/cjs/base/ui/global_alert.js +31 -52
  58. package/dist/cjs/base/ui/heading.js +45 -94
  59. package/dist/cjs/base/ui/icon.js +39 -59
  60. package/dist/cjs/base/ui/icon_config.js +6 -12
  61. package/dist/cjs/base/ui/initialize_block.js +16 -35
  62. package/dist/cjs/base/ui/input.js +62 -101
  63. package/dist/cjs/base/ui/input_synced.js +17 -40
  64. package/dist/cjs/base/ui/key_codes.js +2 -3
  65. package/dist/cjs/base/ui/label.js +30 -55
  66. package/dist/cjs/base/ui/link.js +54 -87
  67. package/dist/cjs/base/ui/loader.js +15 -36
  68. package/dist/cjs/base/ui/modal.js +88 -127
  69. package/dist/cjs/base/ui/model_picker_select.js +18 -44
  70. package/dist/cjs/base/ui/popover.js +236 -328
  71. package/dist/cjs/base/ui/progress_bar.js +34 -47
  72. package/dist/cjs/base/ui/record_card.js +389 -478
  73. package/dist/cjs/base/ui/record_card_list.js +150 -224
  74. package/dist/cjs/base/ui/select.js +60 -116
  75. package/dist/cjs/base/ui/select_and_select_buttons_helpers.js +15 -39
  76. package/dist/cjs/base/ui/select_buttons.js +50 -83
  77. package/dist/cjs/base/ui/select_buttons_synced.js +17 -39
  78. package/dist/cjs/base/ui/select_synced.js +17 -39
  79. package/dist/cjs/base/ui/switch.js +42 -71
  80. package/dist/cjs/base/ui/switch_synced.js +16 -38
  81. package/dist/cjs/base/ui/synced.js +27 -48
  82. package/dist/cjs/base/ui/system/all_styles_set.js +4 -12
  83. package/dist/cjs/base/ui/system/appearance/appearance_set.js +10 -13
  84. package/dist/cjs/base/ui/system/appearance/background_color.js +3 -6
  85. package/dist/cjs/base/ui/system/appearance/border.js +3 -6
  86. package/dist/cjs/base/ui/system/appearance/border_radius.js +3 -6
  87. package/dist/cjs/base/ui/system/appearance/box_shadow.js +3 -6
  88. package/dist/cjs/base/ui/system/appearance/opacity.js +3 -6
  89. package/dist/cjs/base/ui/system/dimensions/dimensions_set.js +11 -13
  90. package/dist/cjs/base/ui/system/dimensions/height.js +3 -6
  91. package/dist/cjs/base/ui/system/dimensions/max_height.js +3 -6
  92. package/dist/cjs/base/ui/system/dimensions/max_width.js +3 -6
  93. package/dist/cjs/base/ui/system/dimensions/min_height.js +3 -6
  94. package/dist/cjs/base/ui/system/dimensions/min_width.js +3 -6
  95. package/dist/cjs/base/ui/system/dimensions/width.js +3 -6
  96. package/dist/cjs/base/ui/system/display.js +3 -6
  97. package/dist/cjs/base/ui/system/flex_container/align_content.js +3 -6
  98. package/dist/cjs/base/ui/system/flex_container/align_items.js +3 -6
  99. package/dist/cjs/base/ui/system/flex_container/flex_container_set.js +11 -13
  100. package/dist/cjs/base/ui/system/flex_container/flex_direction.js +3 -6
  101. package/dist/cjs/base/ui/system/flex_container/flex_wrap.js +3 -6
  102. package/dist/cjs/base/ui/system/flex_container/justify_content.js +3 -6
  103. package/dist/cjs/base/ui/system/flex_container/justify_items.js +3 -6
  104. package/dist/cjs/base/ui/system/flex_item/align_self.js +3 -6
  105. package/dist/cjs/base/ui/system/flex_item/flex.js +3 -6
  106. package/dist/cjs/base/ui/system/flex_item/flex_basis.js +3 -6
  107. package/dist/cjs/base/ui/system/flex_item/flex_grow.js +3 -6
  108. package/dist/cjs/base/ui/system/flex_item/flex_item_set.js +12 -13
  109. package/dist/cjs/base/ui/system/flex_item/flex_shrink.js +3 -6
  110. package/dist/cjs/base/ui/system/flex_item/justify_self.js +3 -6
  111. package/dist/cjs/base/ui/system/flex_item/order.js +3 -6
  112. package/dist/cjs/base/ui/system/index.js +104 -416
  113. package/dist/cjs/base/ui/system/overflow.js +3 -6
  114. package/dist/cjs/base/ui/system/position/bottom.js +4 -6
  115. package/dist/cjs/base/ui/system/position/left.js +4 -6
  116. package/dist/cjs/base/ui/system/position/position.js +3 -6
  117. package/dist/cjs/base/ui/system/position/position_set.js +11 -13
  118. package/dist/cjs/base/ui/system/position/right.js +4 -6
  119. package/dist/cjs/base/ui/system/position/top.js +4 -6
  120. package/dist/cjs/base/ui/system/position/z_index.js +3 -6
  121. package/dist/cjs/base/ui/system/spacing/margin.js +4 -6
  122. package/dist/cjs/base/ui/system/spacing/padding.js +4 -6
  123. package/dist/cjs/base/ui/system/spacing/spacing_set.js +7 -13
  124. package/dist/cjs/base/ui/system/typography/font_family.js +3 -6
  125. package/dist/cjs/base/ui/system/typography/font_size.js +3 -6
  126. package/dist/cjs/base/ui/system/typography/font_style.js +3 -6
  127. package/dist/cjs/base/ui/system/typography/font_weight.js +3 -6
  128. package/dist/cjs/base/ui/system/typography/letter_spacing.js +3 -6
  129. package/dist/cjs/base/ui/system/typography/line_height.js +3 -6
  130. package/dist/cjs/base/ui/system/typography/text_align.js +3 -6
  131. package/dist/cjs/base/ui/system/typography/text_color.js +3 -6
  132. package/dist/cjs/base/ui/system/typography/text_decoration.js +3 -6
  133. package/dist/cjs/base/ui/system/typography/text_transform.js +3 -6
  134. package/dist/cjs/base/ui/system/typography/typography_set.js +15 -13
  135. package/dist/cjs/base/ui/system/utils/ensure_numbers_are_within_scale.js +3 -4
  136. package/dist/cjs/base/ui/system/utils/get_style_props_for_responsive_prop.js +47 -87
  137. package/dist/cjs/base/ui/table_picker.js +18 -42
  138. package/dist/cjs/base/ui/table_picker_synced.js +17 -39
  139. package/dist/cjs/base/ui/text.js +40 -73
  140. package/dist/cjs/base/ui/text_button.js +51 -83
  141. package/dist/cjs/base/ui/theme/default_theme/button_variants.js +3 -3
  142. package/dist/cjs/base/ui/theme/default_theme/control_sizes.js +51 -45
  143. package/dist/cjs/base/ui/theme/default_theme/heading_styles.js +1 -1
  144. package/dist/cjs/base/ui/theme/default_theme/index.js +9 -15
  145. package/dist/cjs/base/ui/theme/default_theme/input_variants.js +3 -3
  146. package/dist/cjs/base/ui/theme/default_theme/link_variants.js +3 -3
  147. package/dist/cjs/base/ui/theme/default_theme/select_buttons_variants.js +4 -4
  148. package/dist/cjs/base/ui/theme/default_theme/select_variants.js +8 -17
  149. package/dist/cjs/base/ui/theme/default_theme/switch_variants.js +23 -29
  150. package/dist/cjs/base/ui/theme/default_theme/text_button_variants.js +5 -5
  151. package/dist/cjs/base/ui/theme/default_theme/text_styles.js +1 -1
  152. package/dist/cjs/base/ui/theme/default_theme/tokens.js +14 -14
  153. package/dist/cjs/base/ui/theme/theme_context.js +2 -2
  154. package/dist/cjs/base/ui/theme/use_theme.js +2 -2
  155. package/dist/cjs/base/ui/tooltip.js +134 -174
  156. package/dist/cjs/base/ui/types/aria_props.js +1 -23
  157. package/dist/cjs/base/ui/types/data_attributes_prop.js +1 -18
  158. package/dist/cjs/base/ui/types/tooltip_anchor_props.js +1 -17
  159. package/dist/cjs/base/ui/ui.js +48 -49
  160. package/dist/cjs/base/ui/unstable_standalone_ui.js +27 -27
  161. package/dist/cjs/base/ui/use_base.js +1 -1
  162. package/dist/cjs/base/ui/use_cursor.js +5 -4
  163. package/dist/cjs/base/ui/use_form_field.js +1 -1
  164. package/dist/cjs/base/ui/use_loadable.js +25 -91
  165. package/dist/cjs/base/ui/use_record_action_data.js +4 -3
  166. package/dist/cjs/base/ui/use_records.js +9 -13
  167. package/dist/cjs/base/ui/use_session.js +1 -1
  168. package/dist/cjs/base/ui/use_settings_button.js +4 -3
  169. package/dist/cjs/base/ui/use_styled_system.js +7 -14
  170. package/dist/cjs/base/ui/use_text_color_for_background_color.js +4 -3
  171. package/dist/cjs/base/ui/use_view_metadata.js +4 -4
  172. package/dist/cjs/base/ui/use_viewport.js +2 -2
  173. package/dist/cjs/base/ui/view_picker.js +26 -70
  174. package/dist/cjs/base/ui/view_picker_synced.js +18 -40
  175. package/dist/cjs/base/ui/viewport_constraint.js +67 -114
  176. package/dist/cjs/base/ui/with_styled_system.js +25 -61
  177. package/dist/cjs/base/undo_redo.js +21 -32
  178. package/dist/cjs/base/unstable_testing_utils.js +27 -27
  179. package/dist/cjs/base/viewport.js +268 -312
  180. package/dist/cjs/injected/airtable_interface.js +4 -4
  181. package/dist/cjs/interface/assert_run_context.js +12 -0
  182. package/dist/cjs/interface/index.js +4 -18
  183. package/dist/cjs/interface/models/base.js +15 -34
  184. package/dist/cjs/interface/models/field.js +5 -19
  185. package/dist/cjs/interface/models/models.js +8 -7
  186. package/dist/cjs/interface/models/mutations.js +50 -66
  187. package/dist/cjs/interface/models/record.js +29 -49
  188. package/dist/cjs/interface/models/record_store.js +25 -57
  189. package/dist/cjs/interface/models/session.js +2 -16
  190. package/dist/cjs/interface/models/table.js +66 -95
  191. package/dist/cjs/interface/sdk.js +61 -87
  192. package/dist/cjs/interface/types/airtable_interface.js +2 -2
  193. package/dist/cjs/interface/types/mutations.js +3 -10
  194. package/dist/cjs/interface/ui/block_wrapper.js +56 -48
  195. package/dist/cjs/interface/ui/initialize_block.js +13 -28
  196. package/dist/cjs/interface/ui/ui.js +20 -19
  197. package/dist/cjs/interface/ui/use_base.js +1 -1
  198. package/dist/cjs/interface/ui/use_custom_properties.js +19 -35
  199. package/dist/cjs/interface/ui/use_records.js +6 -5
  200. package/dist/cjs/interface/ui/use_run_info.js +2 -2
  201. package/dist/cjs/interface/ui/use_session.js +1 -1
  202. package/dist/cjs/shared/color_utils.js +9 -16
  203. package/dist/cjs/shared/colors.js +2 -2
  204. package/dist/cjs/shared/error_utils.js +9 -11
  205. package/dist/cjs/shared/event_tracker.js +3 -3
  206. package/dist/cjs/shared/global_config.js +337 -449
  207. package/dist/cjs/shared/models/abstract_model.js +72 -97
  208. package/dist/cjs/shared/models/base_core.js +394 -514
  209. package/dist/cjs/shared/models/field_core.js +236 -279
  210. package/dist/cjs/shared/models/mutations_core.js +283 -379
  211. package/dist/cjs/shared/models/record_core.js +174 -231
  212. package/dist/cjs/shared/models/record_store_core.js +119 -172
  213. package/dist/cjs/shared/models/session_core.js +116 -170
  214. package/dist/cjs/shared/models/table_core.js +1258 -1501
  215. package/dist/cjs/shared/private_utils.js +54 -124
  216. package/dist/cjs/shared/sdk_core.js +68 -70
  217. package/dist/cjs/shared/types/field_core.js +1 -1
  218. package/dist/cjs/shared/types/mutation_constants.js +4 -4
  219. package/dist/cjs/shared/types/mutations_core.js +1 -1
  220. package/dist/cjs/shared/types/permission_levels.js +1 -1
  221. package/dist/cjs/shared/ui/global_config_synced_component_helpers.js +9 -9
  222. package/dist/cjs/shared/ui/loader.js +14 -35
  223. package/dist/cjs/shared/ui/remote_utils.js +5 -7
  224. package/dist/cjs/shared/ui/sdk_context.js +4 -8
  225. package/dist/cjs/shared/ui/use_array_identity.js +2 -2
  226. package/dist/cjs/shared/ui/use_base.js +6 -5
  227. package/dist/cjs/shared/ui/use_color_scheme.js +3 -8
  228. package/dist/cjs/shared/ui/use_global_config.js +5 -4
  229. package/dist/cjs/shared/ui/use_session.js +6 -5
  230. package/dist/cjs/shared/ui/use_synced.js +7 -5
  231. package/dist/cjs/shared/ui/use_watchable.js +13 -42
  232. package/dist/cjs/shared/ui/with_hooks.js +6 -13
  233. package/dist/cjs/shared/unstable_private_utils.js +4 -6
  234. package/dist/cjs/shared/warning.js +5 -5
  235. package/dist/cjs/shared/watchable.js +110 -176
  236. package/dist/cjs/stats/block_stats.js +62 -85
  237. package/dist/cjs/testing/base/abstract_mock_airtable_interface.js +208 -0
  238. package/dist/cjs/testing/interface/abstract_mock_airtable_interface.js +124 -0
  239. package/dist/types/src/base/assert_run_context.d.ts +2 -0
  240. package/dist/types/src/base/assert_run_context.d.ts.map +1 -0
  241. package/dist/types/src/base/index.d.ts +1 -0
  242. package/dist/types/src/base/index.d.ts.map +1 -1
  243. package/dist/types/src/base/models/models.d.ts +1 -0
  244. package/dist/types/src/base/models/models.d.ts.map +1 -1
  245. package/dist/types/src/base/models/mutations.d.ts.map +1 -1
  246. package/dist/types/src/base/sdk.d.ts.map +1 -1
  247. package/dist/types/src/base/ui/block_wrapper.d.ts +1 -1
  248. package/dist/types/src/base/ui/box.d.ts.map +1 -1
  249. package/dist/types/src/base/ui/button.d.ts +0 -5
  250. package/dist/types/src/base/ui/button.d.ts.map +1 -1
  251. package/dist/types/src/base/ui/cell_renderer.d.ts +1 -22
  252. package/dist/types/src/base/ui/cell_renderer.d.ts.map +1 -1
  253. package/dist/types/src/base/ui/choice_token.d.ts +1 -21
  254. package/dist/types/src/base/ui/choice_token.d.ts.map +1 -1
  255. package/dist/types/src/base/ui/collaborator_token.d.ts +0 -20
  256. package/dist/types/src/base/ui/collaborator_token.d.ts.map +1 -1
  257. package/dist/types/src/base/ui/color_palette.d.ts +1 -32
  258. package/dist/types/src/base/ui/color_palette.d.ts.map +1 -1
  259. package/dist/types/src/base/ui/color_palette_synced.d.ts +0 -14
  260. package/dist/types/src/base/ui/color_palette_synced.d.ts.map +1 -1
  261. package/dist/types/src/base/ui/confirmation_dialog.d.ts +0 -17
  262. package/dist/types/src/base/ui/confirmation_dialog.d.ts.map +1 -1
  263. package/dist/types/src/base/ui/control_sizes.d.ts +0 -1
  264. package/dist/types/src/base/ui/control_sizes.d.ts.map +1 -1
  265. package/dist/types/src/base/ui/dialog.d.ts +1 -23
  266. package/dist/types/src/base/ui/dialog.d.ts.map +1 -1
  267. package/dist/types/src/base/ui/dialog_close_button.d.ts +2 -24
  268. package/dist/types/src/base/ui/dialog_close_button.d.ts.map +1 -1
  269. package/dist/types/src/base/ui/field_icon.d.ts +1 -17
  270. package/dist/types/src/base/ui/field_icon.d.ts.map +1 -1
  271. package/dist/types/src/base/ui/field_picker.d.ts +0 -23
  272. package/dist/types/src/base/ui/field_picker.d.ts.map +1 -1
  273. package/dist/types/src/base/ui/field_picker_synced.d.ts.map +1 -1
  274. package/dist/types/src/base/ui/form_field.d.ts +0 -4
  275. package/dist/types/src/base/ui/form_field.d.ts.map +1 -1
  276. package/dist/types/src/base/ui/heading.d.ts +1 -1
  277. package/dist/types/src/base/ui/heading.d.ts.map +1 -1
  278. package/dist/types/src/base/ui/icon.d.ts +0 -16
  279. package/dist/types/src/base/ui/icon.d.ts.map +1 -1
  280. package/dist/types/src/base/ui/icon_config.d.ts +50 -51
  281. package/dist/types/src/base/ui/icon_config.d.ts.map +1 -1
  282. package/dist/types/src/base/ui/initialize_block.d.ts.map +1 -1
  283. package/dist/types/src/base/ui/input.d.ts +12 -46
  284. package/dist/types/src/base/ui/input.d.ts.map +1 -1
  285. package/dist/types/src/base/ui/input_synced.d.ts.map +1 -1
  286. package/dist/types/src/base/ui/label.d.ts.map +1 -1
  287. package/dist/types/src/base/ui/link.d.ts +1 -5
  288. package/dist/types/src/base/ui/link.d.ts.map +1 -1
  289. package/dist/types/src/base/ui/loader.d.ts +3 -20
  290. package/dist/types/src/base/ui/loader.d.ts.map +1 -1
  291. package/dist/types/src/base/ui/modal.d.ts +1 -14
  292. package/dist/types/src/base/ui/modal.d.ts.map +1 -1
  293. package/dist/types/src/base/ui/model_picker_select.d.ts.map +1 -1
  294. package/dist/types/src/base/ui/popover.d.ts +1 -17
  295. package/dist/types/src/base/ui/popover.d.ts.map +1 -1
  296. package/dist/types/src/base/ui/progress_bar.d.ts +1 -24
  297. package/dist/types/src/base/ui/progress_bar.d.ts.map +1 -1
  298. package/dist/types/src/base/ui/record_card.d.ts +1 -23
  299. package/dist/types/src/base/ui/record_card.d.ts.map +1 -1
  300. package/dist/types/src/base/ui/record_card_list.d.ts +1 -18
  301. package/dist/types/src/base/ui/record_card_list.d.ts.map +1 -1
  302. package/dist/types/src/base/ui/select.d.ts +0 -44
  303. package/dist/types/src/base/ui/select.d.ts.map +1 -1
  304. package/dist/types/src/base/ui/select_and_select_buttons_helpers.d.ts +0 -2
  305. package/dist/types/src/base/ui/select_and_select_buttons_helpers.d.ts.map +1 -1
  306. package/dist/types/src/base/ui/select_buttons.d.ts +0 -22
  307. package/dist/types/src/base/ui/select_buttons.d.ts.map +1 -1
  308. package/dist/types/src/base/ui/select_buttons_synced.d.ts.map +1 -1
  309. package/dist/types/src/base/ui/select_synced.d.ts.map +1 -1
  310. package/dist/types/src/base/ui/switch.d.ts +0 -22
  311. package/dist/types/src/base/ui/switch.d.ts.map +1 -1
  312. package/dist/types/src/base/ui/switch_synced.d.ts.map +1 -1
  313. package/dist/types/src/base/ui/synced.d.ts +2 -8
  314. package/dist/types/src/base/ui/synced.d.ts.map +1 -1
  315. package/dist/types/src/base/ui/system/all_styles_set.d.ts +0 -3
  316. package/dist/types/src/base/ui/system/all_styles_set.d.ts.map +1 -1
  317. package/dist/types/src/base/ui/system/appearance/appearance_set.d.ts +0 -1
  318. package/dist/types/src/base/ui/system/appearance/appearance_set.d.ts.map +1 -1
  319. package/dist/types/src/base/ui/system/appearance/background_color.d.ts +0 -1
  320. package/dist/types/src/base/ui/system/appearance/background_color.d.ts.map +1 -1
  321. package/dist/types/src/base/ui/system/appearance/border.d.ts +0 -1
  322. package/dist/types/src/base/ui/system/appearance/border.d.ts.map +1 -1
  323. package/dist/types/src/base/ui/system/appearance/border_radius.d.ts +0 -1
  324. package/dist/types/src/base/ui/system/appearance/border_radius.d.ts.map +1 -1
  325. package/dist/types/src/base/ui/system/appearance/box_shadow.d.ts +0 -1
  326. package/dist/types/src/base/ui/system/appearance/box_shadow.d.ts.map +1 -1
  327. package/dist/types/src/base/ui/system/appearance/opacity.d.ts +0 -1
  328. package/dist/types/src/base/ui/system/appearance/opacity.d.ts.map +1 -1
  329. package/dist/types/src/base/ui/system/dimensions/dimensions_set.d.ts +0 -1
  330. package/dist/types/src/base/ui/system/dimensions/dimensions_set.d.ts.map +1 -1
  331. package/dist/types/src/base/ui/system/dimensions/height.d.ts +0 -1
  332. package/dist/types/src/base/ui/system/dimensions/height.d.ts.map +1 -1
  333. package/dist/types/src/base/ui/system/dimensions/max_height.d.ts +0 -1
  334. package/dist/types/src/base/ui/system/dimensions/max_height.d.ts.map +1 -1
  335. package/dist/types/src/base/ui/system/dimensions/max_width.d.ts +0 -1
  336. package/dist/types/src/base/ui/system/dimensions/max_width.d.ts.map +1 -1
  337. package/dist/types/src/base/ui/system/dimensions/min_height.d.ts +0 -1
  338. package/dist/types/src/base/ui/system/dimensions/min_height.d.ts.map +1 -1
  339. package/dist/types/src/base/ui/system/dimensions/min_width.d.ts +0 -1
  340. package/dist/types/src/base/ui/system/dimensions/min_width.d.ts.map +1 -1
  341. package/dist/types/src/base/ui/system/dimensions/width.d.ts +0 -1
  342. package/dist/types/src/base/ui/system/dimensions/width.d.ts.map +1 -1
  343. package/dist/types/src/base/ui/system/display.d.ts +0 -1
  344. package/dist/types/src/base/ui/system/display.d.ts.map +1 -1
  345. package/dist/types/src/base/ui/system/flex_container/align_content.d.ts +0 -1
  346. package/dist/types/src/base/ui/system/flex_container/align_content.d.ts.map +1 -1
  347. package/dist/types/src/base/ui/system/flex_container/align_items.d.ts +0 -1
  348. package/dist/types/src/base/ui/system/flex_container/align_items.d.ts.map +1 -1
  349. package/dist/types/src/base/ui/system/flex_container/flex_container_set.d.ts +0 -1
  350. package/dist/types/src/base/ui/system/flex_container/flex_container_set.d.ts.map +1 -1
  351. package/dist/types/src/base/ui/system/flex_container/flex_direction.d.ts +0 -1
  352. package/dist/types/src/base/ui/system/flex_container/flex_direction.d.ts.map +1 -1
  353. package/dist/types/src/base/ui/system/flex_container/flex_wrap.d.ts +0 -1
  354. package/dist/types/src/base/ui/system/flex_container/flex_wrap.d.ts.map +1 -1
  355. package/dist/types/src/base/ui/system/flex_container/justify_content.d.ts +0 -1
  356. package/dist/types/src/base/ui/system/flex_container/justify_content.d.ts.map +1 -1
  357. package/dist/types/src/base/ui/system/flex_container/justify_items.d.ts +0 -1
  358. package/dist/types/src/base/ui/system/flex_container/justify_items.d.ts.map +1 -1
  359. package/dist/types/src/base/ui/system/flex_item/align_self.d.ts +0 -1
  360. package/dist/types/src/base/ui/system/flex_item/align_self.d.ts.map +1 -1
  361. package/dist/types/src/base/ui/system/flex_item/flex.d.ts +0 -1
  362. package/dist/types/src/base/ui/system/flex_item/flex.d.ts.map +1 -1
  363. package/dist/types/src/base/ui/system/flex_item/flex_basis.d.ts +0 -1
  364. package/dist/types/src/base/ui/system/flex_item/flex_basis.d.ts.map +1 -1
  365. package/dist/types/src/base/ui/system/flex_item/flex_grow.d.ts +0 -1
  366. package/dist/types/src/base/ui/system/flex_item/flex_grow.d.ts.map +1 -1
  367. package/dist/types/src/base/ui/system/flex_item/flex_item_set.d.ts +0 -1
  368. package/dist/types/src/base/ui/system/flex_item/flex_item_set.d.ts.map +1 -1
  369. package/dist/types/src/base/ui/system/flex_item/flex_shrink.d.ts +0 -1
  370. package/dist/types/src/base/ui/system/flex_item/flex_shrink.d.ts.map +1 -1
  371. package/dist/types/src/base/ui/system/flex_item/justify_self.d.ts +0 -1
  372. package/dist/types/src/base/ui/system/flex_item/justify_self.d.ts.map +1 -1
  373. package/dist/types/src/base/ui/system/flex_item/order.d.ts +0 -1
  374. package/dist/types/src/base/ui/system/flex_item/order.d.ts.map +1 -1
  375. package/dist/types/src/base/ui/system/index.d.ts +52 -52
  376. package/dist/types/src/base/ui/system/index.d.ts.map +1 -1
  377. package/dist/types/src/base/ui/system/overflow.d.ts +0 -1
  378. package/dist/types/src/base/ui/system/overflow.d.ts.map +1 -1
  379. package/dist/types/src/base/ui/system/position/bottom.d.ts +0 -1
  380. package/dist/types/src/base/ui/system/position/bottom.d.ts.map +1 -1
  381. package/dist/types/src/base/ui/system/position/left.d.ts +0 -1
  382. package/dist/types/src/base/ui/system/position/left.d.ts.map +1 -1
  383. package/dist/types/src/base/ui/system/position/position.d.ts +0 -1
  384. package/dist/types/src/base/ui/system/position/position.d.ts.map +1 -1
  385. package/dist/types/src/base/ui/system/position/position_set.d.ts +0 -1
  386. package/dist/types/src/base/ui/system/position/position_set.d.ts.map +1 -1
  387. package/dist/types/src/base/ui/system/position/right.d.ts +0 -1
  388. package/dist/types/src/base/ui/system/position/right.d.ts.map +1 -1
  389. package/dist/types/src/base/ui/system/position/top.d.ts +0 -1
  390. package/dist/types/src/base/ui/system/position/top.d.ts.map +1 -1
  391. package/dist/types/src/base/ui/system/position/z_index.d.ts +0 -1
  392. package/dist/types/src/base/ui/system/position/z_index.d.ts.map +1 -1
  393. package/dist/types/src/base/ui/system/spacing/margin.d.ts +0 -1
  394. package/dist/types/src/base/ui/system/spacing/margin.d.ts.map +1 -1
  395. package/dist/types/src/base/ui/system/spacing/padding.d.ts +0 -1
  396. package/dist/types/src/base/ui/system/spacing/padding.d.ts.map +1 -1
  397. package/dist/types/src/base/ui/system/spacing/spacing_set.d.ts +0 -1
  398. package/dist/types/src/base/ui/system/spacing/spacing_set.d.ts.map +1 -1
  399. package/dist/types/src/base/ui/system/typography/font_family.d.ts +0 -1
  400. package/dist/types/src/base/ui/system/typography/font_family.d.ts.map +1 -1
  401. package/dist/types/src/base/ui/system/typography/font_size.d.ts +0 -1
  402. package/dist/types/src/base/ui/system/typography/font_size.d.ts.map +1 -1
  403. package/dist/types/src/base/ui/system/typography/font_style.d.ts +0 -1
  404. package/dist/types/src/base/ui/system/typography/font_style.d.ts.map +1 -1
  405. package/dist/types/src/base/ui/system/typography/font_weight.d.ts +0 -1
  406. package/dist/types/src/base/ui/system/typography/font_weight.d.ts.map +1 -1
  407. package/dist/types/src/base/ui/system/typography/letter_spacing.d.ts +0 -1
  408. package/dist/types/src/base/ui/system/typography/letter_spacing.d.ts.map +1 -1
  409. package/dist/types/src/base/ui/system/typography/line_height.d.ts +0 -1
  410. package/dist/types/src/base/ui/system/typography/line_height.d.ts.map +1 -1
  411. package/dist/types/src/base/ui/system/typography/text_align.d.ts +0 -1
  412. package/dist/types/src/base/ui/system/typography/text_align.d.ts.map +1 -1
  413. package/dist/types/src/base/ui/system/typography/text_color.d.ts +0 -1
  414. package/dist/types/src/base/ui/system/typography/text_color.d.ts.map +1 -1
  415. package/dist/types/src/base/ui/system/typography/text_decoration.d.ts +0 -1
  416. package/dist/types/src/base/ui/system/typography/text_decoration.d.ts.map +1 -1
  417. package/dist/types/src/base/ui/system/typography/text_transform.d.ts +0 -1
  418. package/dist/types/src/base/ui/system/typography/text_transform.d.ts.map +1 -1
  419. package/dist/types/src/base/ui/system/typography/typography_set.d.ts +0 -1
  420. package/dist/types/src/base/ui/system/typography/typography_set.d.ts.map +1 -1
  421. package/dist/types/src/base/ui/table_picker.d.ts +0 -21
  422. package/dist/types/src/base/ui/table_picker.d.ts.map +1 -1
  423. package/dist/types/src/base/ui/table_picker_synced.d.ts.map +1 -1
  424. package/dist/types/src/base/ui/text.d.ts +0 -3
  425. package/dist/types/src/base/ui/text.d.ts.map +1 -1
  426. package/dist/types/src/base/ui/text_button.d.ts +1 -5
  427. package/dist/types/src/base/ui/text_button.d.ts.map +1 -1
  428. package/dist/types/src/base/ui/theme/default_theme/index.d.ts +1 -1
  429. package/dist/types/src/base/ui/theme/theme_context.d.ts +1 -1
  430. package/dist/types/src/base/ui/theme/use_theme.d.ts +1 -1
  431. package/dist/types/src/base/ui/tooltip.d.ts +0 -16
  432. package/dist/types/src/base/ui/tooltip.d.ts.map +1 -1
  433. package/dist/types/src/base/ui/types/aria_props.d.ts.map +1 -1
  434. package/dist/types/src/base/ui/types/data_attributes_prop.d.ts +0 -4
  435. package/dist/types/src/base/ui/types/data_attributes_prop.d.ts.map +1 -1
  436. package/dist/types/src/base/ui/types/tooltip_anchor_props.d.ts +0 -7
  437. package/dist/types/src/base/ui/types/tooltip_anchor_props.d.ts.map +1 -1
  438. package/dist/types/src/base/ui/ui.d.ts +1 -0
  439. package/dist/types/src/base/ui/ui.d.ts.map +1 -1
  440. package/dist/types/src/base/ui/view_picker.d.ts +0 -23
  441. package/dist/types/src/base/ui/view_picker.d.ts.map +1 -1
  442. package/dist/types/src/base/ui/view_picker_synced.d.ts.map +1 -1
  443. package/dist/types/src/base/ui/viewport_constraint.d.ts +1 -14
  444. package/dist/types/src/base/ui/viewport_constraint.d.ts.map +1 -1
  445. package/dist/types/src/base/unstable_testing_utils.d.ts +1 -1
  446. package/dist/types/src/base/unstable_testing_utils.d.ts.map +1 -1
  447. package/dist/types/src/interface/assert_run_context.d.ts +2 -0
  448. package/dist/types/src/interface/assert_run_context.d.ts.map +1 -0
  449. package/dist/types/src/interface/index.d.ts +1 -6
  450. package/dist/types/src/interface/index.d.ts.map +1 -1
  451. package/dist/types/src/interface/models/models.d.ts +1 -0
  452. package/dist/types/src/interface/models/models.d.ts.map +1 -1
  453. package/dist/types/src/interface/models/mutations.d.ts.map +1 -1
  454. package/dist/types/src/interface/ui/initialize_block.d.ts.map +1 -1
  455. package/dist/types/src/interface/ui/ui.d.ts +1 -0
  456. package/dist/types/src/interface/ui/ui.d.ts.map +1 -1
  457. package/dist/types/src/interface/ui/use_custom_properties.d.ts +1 -1
  458. package/dist/types/src/shared/models/mutations_core.d.ts.map +1 -1
  459. package/dist/types/src/shared/private_utils.d.ts +0 -9
  460. package/dist/types/src/shared/private_utils.d.ts.map +1 -1
  461. package/dist/types/src/shared/ui/global_config_synced_component_helpers.d.ts +0 -2
  462. package/dist/types/src/shared/ui/global_config_synced_component_helpers.d.ts.map +1 -1
  463. package/dist/types/src/shared/ui/loader.d.ts.map +1 -1
  464. package/dist/types/src/shared/ui/with_hooks.d.ts +2 -2
  465. package/dist/types/src/shared/ui/with_hooks.d.ts.map +1 -1
  466. package/dist/types/src/testing/{abstract_mock_airtable_interface.d.ts → base/abstract_mock_airtable_interface.d.ts} +13 -13
  467. package/dist/types/src/testing/base/abstract_mock_airtable_interface.d.ts.map +1 -0
  468. package/dist/types/src/testing/interface/abstract_mock_airtable_interface.d.ts +51 -0
  469. package/dist/types/src/testing/interface/abstract_mock_airtable_interface.d.ts.map +1 -0
  470. package/package.json +13 -13
  471. package/dist/cjs/base/ui/system/utils/create_responsive_prop_type.js +0 -19
  472. package/dist/cjs/base/ui/system/utils/create_style_prop_types.js +0 -24
  473. package/dist/cjs/base/ui/system/utils/enum_prop_type_utils.js +0 -35
  474. package/dist/cjs/testing/abstract_mock_airtable_interface.js +0 -277
  475. package/dist/types/src/base/ui/system/utils/create_responsive_prop_type.d.ts +0 -2
  476. package/dist/types/src/base/ui/system/utils/create_responsive_prop_type.d.ts.map +0 -1
  477. package/dist/types/src/base/ui/system/utils/create_style_prop_types.d.ts +0 -4
  478. package/dist/types/src/base/ui/system/utils/create_style_prop_types.d.ts.map +0 -1
  479. package/dist/types/src/base/ui/system/utils/enum_prop_type_utils.d.ts +0 -21
  480. package/dist/types/src/base/ui/system/utils/enum_prop_type_utils.d.ts.map +0 -1
  481. package/dist/types/src/testing/abstract_mock_airtable_interface.d.ts.map +0 -1
@@ -1,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 _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
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
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
47
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
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
- var TableOrViewQueryResult = /*#__PURE__*/function (_RecordQueryResult) {
64
- /** @internal */
65
- function TableOrViewQueryResult(sdk, sourceModel, normalizedOpts) {
66
- var _this;
67
- (0, _classCallCheck2.default)(this, TableOrViewQueryResult);
68
- _this = _callSuper(this, TableOrViewQueryResult, [sdk, normalizedOpts]);
69
- /** @internal */
70
- (0, _defineProperty2.default)(_this, "_sourceModel", void 0);
71
- /** @internal */
72
- (0, _defineProperty2.default)(_this, "_mostRecentSourceModelLoadPromise", void 0);
73
- /** @internal */
74
- (0, _defineProperty2.default)(_this, "_table", void 0);
75
- /** @internal */
76
- (0, _defineProperty2.default)(_this, "_fieldIdsSetToLoadOrNullIfAllFields", void 0);
77
- // If custom sorts or groups are specified, we'll use a VisList to handle sorting.
78
- // If no sorts are specified, we'll use the underlying row order of the source model.
79
- // Note: we're currently handling visibility tracking for view query results within this class,
80
- // not in the VisList. In other words, only visible records are added to the visList.
81
- /** @internal */
82
- (0, _defineProperty2.default)(_this, "_visList", void 0);
83
- /** @internal */
84
- (0, _defineProperty2.default)(_this, "_sorts", void 0);
85
- // These is the groupLevels provided to us by the user when executing a query
86
- /** @internal */
87
- (0, _defineProperty2.default)(_this, "_groupLevels", void 0);
88
- // This is the ordered list of record ids.
89
- /** @internal */
90
- (0, _defineProperty2.default)(_this, "_orderedRecordIds", void 0);
91
- // This is the ordered list of groups.
92
- /** @internal */
93
- (0, _defineProperty2.default)(_this, "_orderedGroups", void 0);
94
- // An ordered list of group levels returned to us from hyperbase, this should not be
95
- // read from directly, but instead via this.data.groupLevels (Writing to this on hyperbase updates).
96
- // (which check's that this model has not been not deleted)
97
- /** @internal */
98
- (0, _defineProperty2.default)(_this, "_loadedGroupLevels", void 0);
99
- // lazily generated set of record ids
100
- /** @internal */
101
- (0, _defineProperty2.default)(_this, "_recordIdsSet", null);
102
- // NOTE: when a cellValue key (cellValues or cellValuesInField:) is watched, we want
103
- // to make sure we watch the associated key on the table. However, we need to make
104
- // sure that we only watch the table once for each key. Otherwise, the callbacks
105
- // for each key will get called more than once for each change event. This is because
106
- // Watchable stores references to callbacks for each key, and on each _onChange event
107
- // calls each callback for that key. If we watch the table more than once, then we'll
108
- // call _onChange more than once, and each callback will be called more than once, which
109
- // is undesirable. Instead, we'll store watch counts for each key to make sure we only
110
- // watch the table once.
111
- /** @internal */
112
- (0, _defineProperty2.default)(_this, "_cellValueKeyWatchCounts", void 0);
113
- /** @internal */
114
- (0, _defineProperty2.default)(_this, "__groupedRecordQueryResultPool", void 0);
115
- _this._sourceModel = sourceModel;
116
- _this._mostRecentSourceModelLoadPromise = null;
117
- _this._table = normalizedOpts.table;
118
- var sorts = _this._normalizedOpts.sorts;
119
- _this._sorts = sorts !== null && sorts !== void 0 ? sorts : null;
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
- _this._groupLevels = null;
122
- _this._visList = null;
123
- _this._orderedRecordIds = null;
124
- _this._orderedGroups = null;
125
- _this._loadedGroupLevels = null;
126
- _this._cellValueKeyWatchCounts = {};
127
- var fieldIdsSetToLoadOrNullIfAllFields = null;
128
- if (_this._normalizedOpts.fieldIdsOrNullIfAllFields) {
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
- var _iterator = _createForOfIteratorHelper(_this._normalizedOpts.fieldIdsOrNullIfAllFields),
131
- _step;
132
- try {
133
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
134
- var fieldId = _step.value;
135
- fieldIdsSetToLoadOrNullIfAllFields[fieldId] = true;
136
- }
137
- // Need to load data for fields we're sorting by, even if
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
- var recordColorMode = _this._normalizedOpts.recordColorMode;
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
- _this._fieldIdsSetToLoadOrNullIfAllFields = fieldIdsSetToLoadOrNullIfAllFields;
172
- _this.__groupedRecordQueryResultPool = new _object_pool.default(_grouped_record_query_result.default);
173
- Object.seal(_this);
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
- (0, _inherits2.default)(TableOrViewQueryResult, _RecordQueryResult);
178
- return (0, _createClass2.default)(TableOrViewQueryResult, [{
179
- key: "_dataOrNullIfDeleted",
180
- get: function get() {
181
- if (this._sourceModel.isDeleted || this._recordStore.isDeleted) {
182
- return null;
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
- recordIds: this._orderedRecordIds,
186
- groups: this._orderedGroups,
187
- groupLevels: this._loadedGroupLevels
188
- };
253
+ return fields;
254
+ } else {
255
+ return null;
189
256
  }
190
- /** @internal */
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
- key: "__sourceModelId",
194
- get: function get() {
195
- return this._sourceModel.id;
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
- /** @internal */
199
- }, {
200
- key: "__poolKey",
201
- get: function get() {
202
- return "".concat(this._serializedOpts, "::").concat(this._sourceModel.id);
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
- * @internal (since we may not be able to return parent model instances in the immutable models world)
207
- * The table that records in this RecordQueryResult are part of
208
- */
209
- }, {
210
- key: "parentTable",
211
- get: function get() {
212
- return this._table;
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._recordIdsSet = recordIdsSet;
315
+ this._incrementCellValueKeyWatchCountAndWatchIfNecessary(key, this._onCellValuesInFieldChanged);
296
316
  }
297
- return this._recordIdsSet;
298
- }
299
- /**
300
- * The fields that were used to create this RecordQueryResult.
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
- } catch (err) {
325
- _iterator4.e(err);
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
- /** @inheritdoc */
399
- }, {
400
- key: "watch",
401
- value: function watch(keys, callback, context) {
402
- var validKeys = (0, _get2.default)((0, _getPrototypeOf2.default)(TableOrViewQueryResult.prototype), "watch", this).call(this, keys, callback, context);
403
- var _iterator5 = _createForOfIteratorHelper(validKeys),
404
- _step5;
405
- try {
406
- for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
407
- var key = _step5.value;
408
- if (key.startsWith(_record_query_result.default.WatchableCellValuesInFieldKeyPrefix)) {
409
- var fieldId = key.substring(_record_query_result.default.WatchableCellValuesInFieldKeyPrefix.length);
410
- if (this._fieldIdsSetToLoadOrNullIfAllFields && !(0, _private_utils.has)(this._fieldIdsSetToLoadOrNullIfAllFields, fieldId)) {
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
- return validKeys;
463
- }
464
- /** @inheritdoc */
465
- }, {
466
- key: "loadDataAsync",
467
- value: (function () {
468
- var _loadDataAsync2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
469
- var sourceModelLoadPromise, cellValuesInFieldsLoadPromise;
470
- return _regenerator.default.wrap(function _callee$(_context) {
471
- while (1) switch (_context.prev = _context.next) {
472
- case 0:
473
- if (!this._sourceModel.isDeleted) {
474
- _context.next = 2;
475
- break;
476
- }
477
- throw this._spawnErrorForDeletion();
478
- case 2:
479
- if (this._fieldIdsSetToLoadOrNullIfAllFields) {
480
- cellValuesInFieldsLoadPromise = this._recordStore.loadCellValuesInFieldIdsAsync(Object.keys(this._fieldIdsSetToLoadOrNullIfAllFields));
481
- } else {
482
- // Load all fields.
483
- cellValuesInFieldsLoadPromise = this._recordStore.loadDataAsync();
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
- return changedKeys;
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
- /** @internal */
535
- }, {
536
- key: "_loadDataAsync",
537
- value: (function () {
538
- var _loadDataAsync3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
539
- var viewDataStore, _iterator8, _step8, sort, field;
540
- return _regenerator.default.wrap(function _callee2$(_context2) {
541
- while (1) switch (_context2.prev = _context2.next) {
542
- case 0:
543
- this._table.__tableOrViewQueryResultPool.registerObjectForReuseStrong(this);
544
- (0, _error_utils.invariant)(this._mostRecentSourceModelLoadPromise, 'No source model load promises');
545
- _context2.next = 4;
546
- return this._mostRecentSourceModelLoadPromise;
547
- case 4:
548
- if (this._sorts) {
549
- this._replaceVisList();
550
- }
551
- this._orderedRecordIds = this._generateOrderedRecordIds();
552
- this._orderedGroups = this._generateAndLoadOrderedGroups();
553
- // The server provided value and developer supplied value are the same, no conversion needed
554
- this._loadedGroupLevels = this._sourceModelGroupLevels;
555
- if (this._sourceModel instanceof _table.default) {
556
- this._recordStore.watch(_record_store.WatchableRecordStoreKeys.records, this._onRecordsChanged, this);
557
- } else {
558
- viewDataStore = this._recordStore.getViewDataStore(this._sourceModel.id);
559
- viewDataStore.watch(_view_data_store.WatchableViewDataStoreKeys.visibleRecords, this._onRecordsChanged, this);
560
- viewDataStore.watch(_view_data_store.WatchableViewDataStoreKeys.groups, this._onGroupsChanged, this);
561
- viewDataStore.watch(_view_data_store.WatchableViewDataStoreKeys.groupLevels, this._onGroupLevelsChanged, this);
562
- }
563
- this._recordStore.watch(this._cellValuesForSortWatchKeys, this._onCellValuesForSortChanged, this);
564
- this._recordStore.watch(this._cellValuesForGroupWatchKeys, this._onCellValuesForGroupChanged, this);
565
- this._table.watch(_table.WatchableTableKeys.fields, this._onTableFieldsChanged, this);
566
- if (this._sorts) {
567
- _iterator8 = _createForOfIteratorHelper(this._sorts);
568
- try {
569
- for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
570
- sort = _step8.value;
571
- field = this._table.getFieldByIdIfExists(sort.fieldId);
572
- if (field) {
573
- field.watch('type', this._onFieldConfigChanged, this);
574
- field.watch('options', this._onFieldConfigChanged, this);
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.unloadCellValuesInFieldIds(Object.keys(this._fieldIdsSetToLoadOrNullIfAllFields));
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
- if (!this._sourceModel.isDeleted) {
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
- this._recordStore.unwatch(this._cellValuesForSortWatchKeys, this._onCellValuesForSortChanged, this);
632
- this._recordStore.unwatch(this._cellValuesForGroupWatchKeys, this._onCellValuesForGroupChanged, this);
633
- this._table.unwatch(_table.WatchableTableKeys.fields, this._onTableFieldsChanged, 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
- this._unloadOrderedGroupsIfNeeded();
655
- this._visList = null;
656
- this._orderedRecordIds = null;
657
- this._recordIdsSet = null;
658
- this._table.__tableOrViewQueryResultPool.unregisterObjectForReuseStrong(this);
659
- }
660
- /** @internal */
661
- }, {
662
- key: "_addRecordIdsToVisList",
663
- value: function _addRecordIdsToVisList(recordIds) {
664
- var visList = this._visList;
665
- (0, _error_utils.invariant)(visList, 'No vis list');
666
- var _iterator10 = _createForOfIteratorHelper(recordIds),
667
- _step10;
668
- try {
669
- for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {
670
- var recordId = _step10.value;
671
- var record = this._recordStore.getRecordByIdIfExists(recordId);
672
- (0, _error_utils.invariant)(record, 'Record missing in table');
673
- visList.addRecordData(record._data);
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
- /** @internal */
682
- }, {
683
- key: "_onGroupLevelsChanged",
684
- value: function _onGroupLevelsChanged(model, key, updates) {
685
- this._loadedGroupLevels = this._sourceModelGroupLevels;
686
- this._unloadRemovedGroupsAndLoadNewGroupsAndTriggerWatches();
687
- this._onChange(_record_query_result.default.WatchableKeys.groupLevels);
688
- }
689
- /** @internal */
690
- }, {
691
- key: "_onGroupsChanged",
692
- value: function _onGroupsChanged(model, key, updates) {
693
- this._unloadRemovedGroupsAndLoadNewGroupsAndTriggerWatches();
694
- }
695
- /** @internal */
696
- }, {
697
- key: "_onRecordsChanged",
698
- value: function _onRecordsChanged(model, key, updates) {
699
- if (model instanceof _view_data_store.default) {
700
- // For a view model, we don't get updates sent with the onChange event,
701
- // so we need to manually generate updates based on the old and new
702
- // recordIds.
703
- (0, _error_utils.invariant)(this._orderedRecordIds, '_orderedRecordIds unset');
704
- var visibleRecordIds = this._recordStore.getViewDataStore(model.viewId).visibleRecordIds;
705
- var _addedRecordIds = (0, _private_utils.arrayDifference)(visibleRecordIds, this._orderedRecordIds);
706
- var _removedRecordIds = (0, _private_utils.arrayDifference)(this._orderedRecordIds, visibleRecordIds);
707
- updates = {
708
- addedRecordIds: _addedRecordIds,
709
- removedRecordIds: _removedRecordIds
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 (!updates) {
713
- // If there are no updates, do nothing, since we'll handle the initial
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
- var _updates = updates,
719
- addedRecordIds = _updates.addedRecordIds,
720
- removedRecordIds = _updates.removedRecordIds;
721
- if (this._sorts) {
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
- if (this._recordIdsSet) {
732
- var _iterator11 = _createForOfIteratorHelper(addedRecordIds),
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
- // Now that we've applied our changes (if applicable), let's regenerate our recordIds.
759
- this._orderedRecordIds = this._generateOrderedRecordIds();
760
- this._onChange(_record_query_result.default.WatchableKeys.records, updates);
761
- this._onChange(_record_query_result.default.WatchableKeys.recordIds, updates);
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
- // NOTE: this will only ever be called if we have sorts, so it's safe to assert that we have
786
- // a vis list here.
787
- var visList = this._visList;
788
- (0, _error_utils.invariant)(visList, 'No vis list');
789
- (0, _error_utils.invariant)(recordIds.length > 0, 'field ID set without a corresponding record ID');
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
- // Only move recordIds that are already in the visList.
792
- // It's possible to have recordId that is not currently in the visList since
793
- // this callback can run before onRecordsChanged. (eg. when a deleted record is
794
- // restored, this is triggered for that record but the record is not yet in the visList:
795
- // onRecordsChanged actually adds it)
796
- // Note: cell value changes that result in the records being filtered out trigger
797
- // onRecordsChanged on the View model, so we don't have to worry about that here.
798
- var visListRecordIdsSet = new Set(visList.getOrderedRecordIds());
799
- var recordIdsToMove = recordIds.filter(recordId => visListRecordIdsSet.has(recordId));
800
- visList.removeRecordIds(recordIdsToMove);
801
- this._addRecordIdsToVisList(recordIdsToMove);
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
- var changeData = {
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
- // Check if any fields that we rely on were created or deleted. If they were,
833
- // replace our vis list.
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
- /** @internal */
882
- }, {
883
- key: "_onCellValuesChanged",
884
- value: function _onCellValuesChanged(table, key, updates) {
885
- if (!updates) {
886
- // If there are no updates, do nothing, since we'll handle the initial
887
- // callback when the record set is loaded (and we don't want to fire
888
- // a cellValues change twice with no data).
889
- return;
890
- }
891
- this._onChange(_record_query_result.default.WatchableKeys.cellValues, updates);
892
- }
893
- /** @internal */
894
- }, {
895
- key: "_onCellValuesInFieldChanged",
896
- value: function _onCellValuesInFieldChanged(table, key, recordIds, fieldId) {
897
- if (!recordIds && !fieldId) {
898
- // If there are no updates, do nothing, since we'll handle the initial
899
- // callback when the record set is loaded (and we don't want to fire
900
- // a cellValuesInField change twice with no data).
901
- return;
902
- }
903
- this._onChange(key, recordIds, fieldId);
904
- }
905
- /** @internal */
906
- }, {
907
- key: "_generateOrderedRecordIds",
908
- value: function _generateOrderedRecordIds() {
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
- /** @internal */
917
- }, {
918
- key: "_generateAndLoadOrderedGroups",
919
- value: function _generateAndLoadOrderedGroups() {
920
- // istanbul ignore next
921
- if (this._groupLevels) {
922
- (0, _error_utils.invariant)(this._visList, 'Cannot generate record ids without a vis list');
923
- throw (0, _error_utils.spawnError)('custom group configs not supported');
924
- } else {
925
- // Get the group from the view itself
926
- var groupLevels = this._sourceModelGroupLevels;
927
- if (!this._sourceModelGroups || !groupLevels) {
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
- /** @internal */
940
- }, {
941
- key: "_unloadOrderedGroupsIfNeeded",
942
- value: function _unloadOrderedGroupsIfNeeded() {
943
- if (this._orderedGroups) {
944
- var _iterator14 = _createForOfIteratorHelper(this._orderedGroups),
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
- * If groupings change then some groups will need to be created, and some removed
960
- * This (TODO: will) handle the diffing necessary to unload, and reload only the changed groups.
961
- * Also triggers the WatchableKeys.group, as by necessity this will have changed.
962
- *
963
- * @internal
964
- */
965
- // TODO: (SeanKeenan) Properly diff and only unload groups that need to be unloaded
966
- // In the meantime it's not too expensive to just unload everything, and GroupedRecordQueryResults
967
- // don't yet properly watch changes relevant to updating, so this isn't too bad.
968
- // (They do invalidate their recordId caches, which is some very cheap work that we could remove)
969
- }, {
970
- key: "_unloadRemovedGroupsAndLoadNewGroupsAndTriggerWatches",
971
- value: function _unloadRemovedGroupsAndLoadNewGroupsAndTriggerWatches() {
972
- this._unloadOrderedGroupsIfNeeded();
973
- this._orderedGroups = this._generateAndLoadOrderedGroups();
974
- this._onChange(_record_query_result.default.WatchableKeys.groups);
975
- }
976
- /** @internal */
977
- }, {
978
- key: "_replaceVisList",
979
- value: function _replaceVisList() {
980
- var airtableInterface = this._sdk.__airtableInterface;
981
- var appInterface = this._sdk.__appInterface;
982
- var recordDatas = this._sourceModelRecords.map(record => record._data);
983
- var fieldDatas = this._table.fields.map(field => field._data);
984
- var filteredSorts = this._getSortsWithDeletedFieldsFiltered();
985
- this._visList = airtableInterface.createVisList(appInterface, recordDatas, fieldDatas, filteredSorts);
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
- // Filter out any sorts levels that rely on deleted fields.
994
- // NOTE: we keep deleted fields around (rather than filtering them out
995
- // in realtime) in case a field gets undeleted, in which case we want to
996
- // keep using it.
997
- return this._sorts.filter(sort => {
998
- var field = this._table.getFieldByIdIfExists(sort.fieldId);
999
- return !!field;
1000
- });
1001
- }
1002
- /** @internal */
1003
- }, {
1004
- key: "_spawnErrorForDeletion",
1005
- value: function _spawnErrorForDeletion() {
1006
- var sourceModelName = this._sourceModel instanceof _table.default ? 'table' : 'view';
1007
- return (0, _error_utils.spawnError)("RecordQueryResult's underlying %s has been deleted", sourceModelName);
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;