logisheets 0.8.0 → 1.1.0

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 (462) hide show
  1. package/dist/src/api/cell.d.ts +3 -2
  2. package/dist/src/api/cell.js +20 -17
  3. package/dist/src/api/craft-calc.d.ts +83 -0
  4. package/dist/src/api/craft-calc.js +223 -0
  5. package/dist/src/api/index.d.ts +1 -0
  6. package/dist/src/api/index.js +1 -0
  7. package/dist/src/api/utils.js +4 -2
  8. package/dist/src/api/workbook.d.ts +105 -4
  9. package/dist/src/api/workbook.js +250 -105
  10. package/dist/src/api/worksheet.d.ts +39 -1
  11. package/dist/src/api/worksheet.js +161 -20
  12. package/dist/src/bindings/action_effect.d.ts +56 -0
  13. package/dist/src/bindings/action_effect.js +96 -1
  14. package/dist/src/bindings/alignment.d.ts +1 -0
  15. package/dist/src/bindings/app_data.d.ts +4 -0
  16. package/dist/src/bindings/appendix.d.ts +5 -0
  17. package/dist/src/bindings/appendix_with_cell.d.ts +8 -0
  18. package/dist/src/bindings/async_func_result.d.ts +10 -0
  19. package/dist/src/bindings/async_func_result.js +19 -1
  20. package/dist/src/bindings/bind_form_schema.d.ts +50 -0
  21. package/dist/src/bindings/bind_form_schema.js +82 -0
  22. package/dist/src/bindings/bind_random_schema.d.ts +23 -0
  23. package/dist/src/bindings/bind_random_schema.js +33 -0
  24. package/dist/src/bindings/block_cell_id.js +0 -1
  25. package/dist/src/bindings/block_cell_info.d.ts +5 -0
  26. package/dist/src/bindings/block_data_row.d.ts +4 -0
  27. package/dist/src/bindings/block_display_info.d.ts +7 -0
  28. package/dist/src/bindings/block_field.d.ts +5 -0
  29. package/dist/src/bindings/block_info.d.ts +8 -0
  30. package/dist/src/bindings/block_info.js +0 -1
  31. package/dist/src/bindings/block_input.d.ts +19 -0
  32. package/dist/src/bindings/block_input.js +40 -2
  33. package/dist/src/bindings/block_line_name_field_update.d.ts +34 -0
  34. package/dist/src/bindings/block_line_name_field_update.js +50 -0
  35. package/dist/src/bindings/block_line_style_update.d.ts +31 -0
  36. package/dist/src/bindings/block_line_style_update.js +47 -0
  37. package/dist/src/bindings/block_schema.d.ts +11 -0
  38. package/dist/src/bindings/block_schema_field_entry.d.ts +8 -0
  39. package/dist/src/bindings/block_schema_key_entry.d.ts +4 -0
  40. package/dist/src/bindings/block_schema_random_entry.d.ts +6 -0
  41. package/dist/src/bindings/block_schema_type.d.ts +1 -0
  42. package/dist/src/bindings/block_style_update.d.ts +19 -0
  43. package/dist/src/bindings/block_style_update.js +40 -1
  44. package/dist/src/bindings/cell_alignment.d.ts +6 -6
  45. package/dist/src/bindings/cell_clear.d.ts +13 -0
  46. package/dist/src/bindings/cell_clear.js +26 -2
  47. package/dist/src/bindings/cell_coordinate.d.ts +4 -0
  48. package/dist/src/bindings/cell_coordinate.js +1 -0
  49. package/dist/src/bindings/cell_coordinate_with_sheet.d.ts +5 -0
  50. package/dist/src/bindings/cell_coordinate_with_sheet.js +1 -0
  51. package/dist/src/bindings/cell_format_brush.d.ts +28 -0
  52. package/dist/src/bindings/cell_format_brush.js +61 -2
  53. package/dist/src/bindings/cell_id.d.ts +6 -3
  54. package/dist/src/bindings/cell_info.d.ts +1 -0
  55. package/dist/src/bindings/cell_input.d.ts +16 -0
  56. package/dist/src/bindings/cell_input.js +33 -2
  57. package/dist/src/bindings/cell_position.js +0 -1
  58. package/dist/src/bindings/cell_protection.js +0 -1
  59. package/dist/src/bindings/cell_ref.d.ts +9 -0
  60. package/dist/src/bindings/cell_ref.js +1 -0
  61. package/dist/src/bindings/cell_style_update.d.ts +16 -0
  62. package/dist/src/bindings/cell_style_update.js +33 -1
  63. package/dist/src/bindings/checkpoint_meta.d.ts +4 -0
  64. package/dist/src/bindings/checkpoint_meta.js +1 -0
  65. package/dist/src/bindings/col_info.js +0 -1
  66. package/dist/src/bindings/color.js +0 -1
  67. package/dist/src/bindings/comment.js +0 -1
  68. package/dist/src/bindings/convert_block.d.ts +30 -0
  69. package/dist/src/bindings/convert_block.js +47 -0
  70. package/dist/src/bindings/create_appendix.d.ts +38 -0
  71. package/dist/src/bindings/create_appendix.js +57 -0
  72. package/dist/src/bindings/create_block.d.ts +31 -0
  73. package/dist/src/bindings/create_block.js +57 -2
  74. package/dist/src/bindings/create_diy_cell.d.ts +18 -0
  75. package/dist/src/bindings/create_diy_cell.js +26 -0
  76. package/dist/src/bindings/create_diy_cell_by_id.d.ts +22 -0
  77. package/dist/src/bindings/create_diy_cell_by_id.js +33 -0
  78. package/dist/src/bindings/create_sheet.d.ts +10 -0
  79. package/dist/src/bindings/create_sheet.js +19 -2
  80. package/dist/src/bindings/ct_border.d.ts +13 -0
  81. package/dist/src/bindings/ct_border.js +1 -0
  82. package/dist/src/bindings/ct_border_pr.d.ts +6 -0
  83. package/dist/src/bindings/ct_border_pr.js +1 -0
  84. package/dist/src/bindings/ct_color.d.ts +7 -0
  85. package/dist/src/bindings/ct_color.js +1 -0
  86. package/dist/src/bindings/ct_fill.d.ts +9 -0
  87. package/dist/src/bindings/ct_fill.js +1 -0
  88. package/dist/src/bindings/ct_font.d.ts +25 -0
  89. package/dist/src/bindings/ct_font.js +1 -0
  90. package/dist/src/bindings/ct_gradient_fill.d.ts +11 -0
  91. package/dist/src/bindings/ct_gradient_fill.js +1 -0
  92. package/dist/src/bindings/ct_gradient_stop.d.ts +5 -0
  93. package/dist/src/bindings/ct_gradient_stop.js +1 -0
  94. package/dist/src/bindings/ct_pattern_fill.d.ts +7 -0
  95. package/dist/src/bindings/ct_pattern_fill.js +1 -0
  96. package/dist/src/bindings/delete_cols.d.ts +13 -0
  97. package/dist/src/bindings/delete_cols.js +26 -2
  98. package/dist/src/bindings/delete_cols_in_block.d.ts +16 -0
  99. package/dist/src/bindings/delete_cols_in_block.js +33 -2
  100. package/dist/src/bindings/delete_rows.d.ts +13 -0
  101. package/dist/src/bindings/delete_rows.js +26 -2
  102. package/dist/src/bindings/delete_rows_in_block.d.ts +16 -0
  103. package/dist/src/bindings/delete_rows_in_block.js +33 -2
  104. package/dist/src/bindings/delete_sheet.d.ts +7 -0
  105. package/dist/src/bindings/delete_sheet.js +12 -2
  106. package/dist/src/bindings/display_window.d.ts +2 -2
  107. package/dist/src/bindings/display_window_request.js +0 -1
  108. package/dist/src/bindings/edit_action.d.ts +4 -2
  109. package/dist/src/bindings/edit_payload.d.ts +146 -33
  110. package/dist/src/bindings/ephemeral_cell_input.d.ts +13 -0
  111. package/dist/src/bindings/ephemeral_cell_input.js +26 -2
  112. package/dist/src/bindings/ephemeral_cell_remove.d.ts +14 -0
  113. package/dist/src/bindings/ephemeral_cell_remove.js +19 -0
  114. package/dist/src/bindings/ephemeral_cell_style_update.d.ts +13 -0
  115. package/dist/src/bindings/ephemeral_cell_style_update.js +26 -1
  116. package/dist/src/bindings/error_message.js +0 -1
  117. package/dist/src/bindings/field_render_entry.d.ts +6 -0
  118. package/dist/src/bindings/field_render_entry.js +1 -0
  119. package/dist/src/bindings/fill.d.ts +4 -2
  120. package/dist/src/bindings/font_family.js +0 -1
  121. package/dist/src/bindings/font_name.js +0 -1
  122. package/dist/src/bindings/font_size.d.ts +3 -0
  123. package/dist/src/bindings/font_size.js +1 -0
  124. package/dist/src/bindings/formula_display_info.d.ts +6 -0
  125. package/dist/src/bindings/formula_display_info.js +1 -0
  126. package/dist/src/bindings/horizontal_alignment.js +0 -1
  127. package/dist/src/bindings/index.d.ts +116 -0
  128. package/dist/src/bindings/index.js +116 -0
  129. package/dist/src/bindings/insert_cols.d.ts +13 -0
  130. package/dist/src/bindings/insert_cols.js +26 -2
  131. package/dist/src/bindings/insert_cols_in_block.d.ts +16 -0
  132. package/dist/src/bindings/insert_cols_in_block.js +33 -2
  133. package/dist/src/bindings/insert_rows.d.ts +13 -0
  134. package/dist/src/bindings/insert_rows.js +26 -2
  135. package/dist/src/bindings/insert_rows_in_block.d.ts +16 -0
  136. package/dist/src/bindings/insert_rows_in_block.js +33 -2
  137. package/dist/src/bindings/int_property.d.ts +3 -0
  138. package/dist/src/bindings/int_property.js +1 -0
  139. package/dist/src/bindings/line_format_brush.d.ts +25 -0
  140. package/dist/src/bindings/line_format_brush.js +54 -2
  141. package/dist/src/bindings/line_style_update.d.ts +19 -0
  142. package/dist/src/bindings/line_style_update.js +40 -1
  143. package/dist/src/bindings/merge_cell.js +0 -1
  144. package/dist/src/bindings/merge_cells.d.ts +19 -0
  145. package/dist/src/bindings/merge_cells.js +40 -2
  146. package/dist/src/bindings/modify_policy.d.ts +1 -0
  147. package/dist/src/bindings/modify_policy.js +1 -0
  148. package/dist/src/bindings/move_block.d.ts +16 -0
  149. package/dist/src/bindings/move_block.js +33 -2
  150. package/dist/src/bindings/move_block_line.d.ts +26 -0
  151. package/dist/src/bindings/move_block_line.js +40 -0
  152. package/dist/src/bindings/msg_sequencer_action_invalid_message.js +0 -1
  153. package/dist/src/bindings/msg_sequencer_init_workbook.js +0 -1
  154. package/dist/src/bindings/msg_sequencer_message.d.ts +6 -3
  155. package/dist/src/bindings/msg_user_message.d.ts +4 -2
  156. package/dist/src/bindings/normal_cell_id.js +0 -1
  157. package/dist/src/bindings/random_schema_unit.d.ts +22 -0
  158. package/dist/src/bindings/random_schema_unit.js +33 -0
  159. package/dist/src/bindings/raw_style.d.ts +13 -0
  160. package/dist/src/bindings/raw_style.js +1 -0
  161. package/dist/src/bindings/remove_appendix.d.ts +26 -0
  162. package/dist/src/bindings/remove_appendix.js +36 -0
  163. package/dist/src/bindings/remove_block.d.ts +10 -0
  164. package/dist/src/bindings/remove_block.js +19 -2
  165. package/dist/src/bindings/remove_diy_cell.d.ts +18 -0
  166. package/dist/src/bindings/remove_diy_cell.js +26 -0
  167. package/dist/src/bindings/remove_diy_cell_by_id.d.ts +22 -0
  168. package/dist/src/bindings/remove_diy_cell_by_id.js +33 -0
  169. package/dist/src/bindings/reorder_block_lines.d.ts +6 -0
  170. package/dist/src/bindings/reorder_block_lines.js +1 -0
  171. package/dist/src/bindings/reproduce_cells.d.ts +23 -0
  172. package/dist/src/bindings/reproduce_cells.js +33 -0
  173. package/dist/src/bindings/reproducible_cell.d.ts +10 -0
  174. package/dist/src/bindings/reproducible_cell.js +1 -0
  175. package/dist/src/bindings/resize_block.d.ts +22 -0
  176. package/dist/src/bindings/resize_block.js +29 -0
  177. package/dist/src/bindings/restore_checkpoint.d.ts +10 -0
  178. package/dist/src/bindings/restore_checkpoint.js +12 -0
  179. package/dist/src/bindings/row_info.js +0 -1
  180. package/dist/src/bindings/rpc_batch_get_cell_coordinate_with_sheet_by_id_params.d.ts +4 -0
  181. package/dist/src/bindings/rpc_batch_get_cell_coordinate_with_sheet_by_id_params.js +1 -0
  182. package/dist/src/bindings/rpc_batch_get_cell_info_by_id_params.d.ts +4 -0
  183. package/dist/src/bindings/rpc_batch_get_cell_info_by_id_params.js +1 -0
  184. package/dist/src/bindings/rpc_calc_condition_params.d.ts +4 -0
  185. package/dist/src/bindings/rpc_calc_condition_params.js +1 -0
  186. package/dist/src/bindings/rpc_check_formula_params.d.ts +3 -0
  187. package/dist/src/bindings/rpc_check_formula_params.js +1 -0
  188. package/dist/src/bindings/rpc_delete_checkpoint_params.d.ts +3 -0
  189. package/dist/src/bindings/rpc_delete_checkpoint_params.js +1 -0
  190. package/dist/src/bindings/rpc_direction.d.ts +1 -0
  191. package/dist/src/bindings/rpc_direction.js +1 -0
  192. package/dist/src/bindings/rpc_export_block_data_params.d.ts +5 -0
  193. package/dist/src/bindings/rpc_export_block_data_params.js +1 -0
  194. package/dist/src/bindings/rpc_get_all_blocks_params.d.ts +4 -0
  195. package/dist/src/bindings/rpc_get_all_blocks_params.js +1 -0
  196. package/dist/src/bindings/rpc_get_available_block_id_params.d.ts +3 -0
  197. package/dist/src/bindings/rpc_get_available_block_id_params.js +1 -0
  198. package/dist/src/bindings/rpc_get_block_col_id_params.d.ts +5 -0
  199. package/dist/src/bindings/rpc_get_block_col_id_params.js +1 -0
  200. package/dist/src/bindings/rpc_get_block_display_window_params.d.ts +4 -0
  201. package/dist/src/bindings/rpc_get_block_display_window_params.js +1 -0
  202. package/dist/src/bindings/rpc_get_block_info_params.d.ts +4 -0
  203. package/dist/src/bindings/rpc_get_block_info_params.js +1 -0
  204. package/dist/src/bindings/rpc_get_block_row_id_params.d.ts +5 -0
  205. package/dist/src/bindings/rpc_get_block_row_id_params.js +1 -0
  206. package/dist/src/bindings/rpc_get_block_values_params.d.ts +6 -0
  207. package/dist/src/bindings/rpc_get_block_values_params.js +1 -0
  208. package/dist/src/bindings/rpc_get_cell_id_by_block_ref_params.d.ts +5 -0
  209. package/dist/src/bindings/rpc_get_cell_id_by_block_ref_params.js +1 -0
  210. package/dist/src/bindings/rpc_get_cell_id_params.d.ts +5 -0
  211. package/dist/src/bindings/rpc_get_cell_id_params.js +1 -0
  212. package/dist/src/bindings/rpc_get_cell_infos_params.d.ts +7 -0
  213. package/dist/src/bindings/rpc_get_cell_infos_params.js +1 -0
  214. package/dist/src/bindings/rpc_get_cell_params.d.ts +5 -0
  215. package/dist/src/bindings/rpc_get_cell_params.js +1 -0
  216. package/dist/src/bindings/rpc_get_cell_position_params.d.ts +5 -0
  217. package/dist/src/bindings/rpc_get_cell_position_params.js +1 -0
  218. package/dist/src/bindings/rpc_get_cells_except_window_params.d.ts +11 -0
  219. package/dist/src/bindings/rpc_get_cells_except_window_params.js +1 -0
  220. package/dist/src/bindings/rpc_get_cells_params.d.ts +7 -0
  221. package/dist/src/bindings/rpc_get_cells_params.js +1 -0
  222. package/dist/src/bindings/rpc_get_col_width_params.d.ts +4 -0
  223. package/dist/src/bindings/rpc_get_col_width_params.js +1 -0
  224. package/dist/src/bindings/rpc_get_data_boundary_params.d.ts +7 -0
  225. package/dist/src/bindings/rpc_get_data_boundary_params.js +1 -0
  226. package/dist/src/bindings/rpc_get_display_units_of_formula_params.d.ts +3 -0
  227. package/dist/src/bindings/rpc_get_display_units_of_formula_params.js +1 -0
  228. package/dist/src/bindings/rpc_get_display_window_params.d.ts +7 -0
  229. package/dist/src/bindings/rpc_get_display_window_params.js +1 -0
  230. package/dist/src/bindings/rpc_get_display_window_with_start_point_params.d.ts +7 -0
  231. package/dist/src/bindings/rpc_get_display_window_with_start_point_params.js +1 -0
  232. package/dist/src/bindings/rpc_get_display_window_within_cell_params.d.ts +7 -0
  233. package/dist/src/bindings/rpc_get_display_window_within_cell_params.js +1 -0
  234. package/dist/src/bindings/rpc_get_diy_cell_id_with_block_id_params.d.ts +6 -0
  235. package/dist/src/bindings/rpc_get_diy_cell_id_with_block_id_params.js +1 -0
  236. package/dist/src/bindings/rpc_get_merged_cells_params.d.ts +7 -0
  237. package/dist/src/bindings/rpc_get_merged_cells_params.js +1 -0
  238. package/dist/src/bindings/rpc_get_next_visible_cell_params.d.ts +7 -0
  239. package/dist/src/bindings/rpc_get_next_visible_cell_params.js +1 -0
  240. package/dist/src/bindings/rpc_get_reproducible_cell_params.d.ts +5 -0
  241. package/dist/src/bindings/rpc_get_reproducible_cell_params.js +1 -0
  242. package/dist/src/bindings/rpc_get_reproducible_cells_params.d.ts +5 -0
  243. package/dist/src/bindings/rpc_get_reproducible_cells_params.js +1 -0
  244. package/dist/src/bindings/rpc_get_row_height_params.d.ts +4 -0
  245. package/dist/src/bindings/rpc_get_row_height_params.js +1 -0
  246. package/dist/src/bindings/rpc_get_row_info_params.d.ts +4 -0
  247. package/dist/src/bindings/rpc_get_row_info_params.js +1 -0
  248. package/dist/src/bindings/rpc_get_shadow_cell_id_params.d.ts +7 -0
  249. package/dist/src/bindings/rpc_get_shadow_cell_id_params.js +1 -0
  250. package/dist/src/bindings/rpc_get_shadow_cell_ids_params.d.ts +7 -0
  251. package/dist/src/bindings/rpc_get_shadow_cell_ids_params.js +1 -0
  252. package/dist/src/bindings/rpc_get_shadow_info_by_id_params.d.ts +3 -0
  253. package/dist/src/bindings/rpc_get_shadow_info_by_id_params.js +1 -0
  254. package/dist/src/bindings/rpc_get_sheet_dimension_params.d.ts +3 -0
  255. package/dist/src/bindings/rpc_get_sheet_dimension_params.js +1 -0
  256. package/dist/src/bindings/rpc_get_sheet_id_params.d.ts +3 -0
  257. package/dist/src/bindings/rpc_get_sheet_id_params.js +1 -0
  258. package/dist/src/bindings/rpc_get_sheet_idx_params.d.ts +3 -0
  259. package/dist/src/bindings/rpc_get_sheet_idx_params.js +1 -0
  260. package/dist/src/bindings/rpc_get_sheet_name_by_idx_params.d.ts +3 -0
  261. package/dist/src/bindings/rpc_get_sheet_name_by_idx_params.js +1 -0
  262. package/dist/src/bindings/rpc_handle_transaction_params.d.ts +4 -0
  263. package/dist/src/bindings/rpc_handle_transaction_params.js +1 -0
  264. package/dist/src/bindings/rpc_load_workbook_params.d.ts +4 -0
  265. package/dist/src/bindings/rpc_load_workbook_params.js +1 -0
  266. package/dist/src/bindings/rpc_lookup_appendix_upward_params.d.ts +8 -0
  267. package/dist/src/bindings/rpc_lookup_appendix_upward_params.js +1 -0
  268. package/dist/src/bindings/rpc_predict_fill_params.d.ts +11 -0
  269. package/dist/src/bindings/rpc_predict_fill_params.js +1 -0
  270. package/dist/src/bindings/rpc_save_checkpoint_params.d.ts +4 -0
  271. package/dist/src/bindings/rpc_save_checkpoint_params.js +1 -0
  272. package/dist/src/bindings/rpc_save_params.d.ts +3 -0
  273. package/dist/src/bindings/rpc_save_params.js +1 -0
  274. package/dist/src/bindings/rpc_toggle_status_params.d.ts +3 -0
  275. package/dist/src/bindings/rpc_toggle_status_params.js +1 -0
  276. package/dist/src/bindings/rpc_transaction.d.ts +6 -0
  277. package/dist/src/bindings/rpc_transaction.js +1 -0
  278. package/dist/src/bindings/rpc_workbook_methods.d.ts +134 -0
  279. package/dist/src/bindings/rpc_workbook_methods.js +1 -0
  280. package/dist/src/bindings/save_file_result.d.ts +4 -0
  281. package/dist/src/bindings/save_file_result.js +1 -0
  282. package/dist/src/bindings/set_col_width.d.ts +13 -0
  283. package/dist/src/bindings/set_col_width.js +26 -2
  284. package/dist/src/bindings/set_row_height.d.ts +13 -0
  285. package/dist/src/bindings/set_row_height.js +26 -2
  286. package/dist/src/bindings/set_sheet_color.d.ts +14 -0
  287. package/dist/src/bindings/set_sheet_color.js +19 -0
  288. package/dist/src/bindings/set_sheet_visible.d.ts +14 -0
  289. package/dist/src/bindings/set_sheet_visible.js +19 -0
  290. package/dist/src/bindings/set_visible.d.ts +16 -0
  291. package/dist/src/bindings/set_visible.js +33 -2
  292. package/dist/src/bindings/shadow_cell_info.d.ts +7 -0
  293. package/dist/src/bindings/shadow_cell_info.js +1 -0
  294. package/dist/src/bindings/shadow_kind.d.ts +1 -0
  295. package/dist/src/bindings/shadow_kind.js +1 -0
  296. package/dist/src/bindings/sheet_cell_id.d.ts +15 -0
  297. package/dist/src/bindings/sheet_cell_id.js +19 -0
  298. package/dist/src/bindings/sheet_col_id.d.ts +14 -0
  299. package/dist/src/bindings/sheet_col_id.js +19 -0
  300. package/dist/src/bindings/sheet_coordinate.d.ts +4 -0
  301. package/dist/src/bindings/sheet_coordinate.js +1 -0
  302. package/dist/src/bindings/sheet_dimension.js +0 -1
  303. package/dist/src/bindings/sheet_info.js +0 -1
  304. package/dist/src/bindings/sheet_rename.d.ts +13 -0
  305. package/dist/src/bindings/sheet_rename.js +22 -2
  306. package/dist/src/bindings/sheet_row_id.d.ts +14 -0
  307. package/dist/src/bindings/sheet_row_id.js +19 -0
  308. package/dist/src/bindings/split_merged_cells.d.ts +13 -0
  309. package/dist/src/bindings/split_merged_cells.js +26 -2
  310. package/dist/src/bindings/st_border_style.js +0 -1
  311. package/dist/src/bindings/st_font_scheme.js +0 -1
  312. package/dist/src/bindings/st_gradient_type.js +0 -1
  313. package/dist/src/bindings/st_horizontal_alignment.d.ts +1 -1
  314. package/dist/src/bindings/st_horizontal_alignment.js +0 -1
  315. package/dist/src/bindings/st_pattern_type.js +0 -1
  316. package/dist/src/bindings/st_underline_values.js +0 -1
  317. package/dist/src/bindings/st_vertical_align_run.js +0 -1
  318. package/dist/src/bindings/st_vertical_alignment.d.ts +1 -1
  319. package/dist/src/bindings/st_vertical_alignment.js +0 -1
  320. package/dist/src/bindings/status_code.d.ts +4 -2
  321. package/dist/src/bindings/style_update_type.d.ts +77 -0
  322. package/dist/src/bindings/style_update_type.js +125 -1
  323. package/dist/src/bindings/task.js +0 -1
  324. package/dist/src/bindings/temp_cell_change.d.ts +8 -0
  325. package/dist/src/bindings/temp_cell_change.js +1 -0
  326. package/dist/src/bindings/temp_status_diff.d.ts +4 -0
  327. package/dist/src/bindings/temp_status_diff.js +1 -0
  328. package/dist/src/bindings/token_type.d.ts +1 -0
  329. package/dist/src/bindings/token_type.js +1 -0
  330. package/dist/src/bindings/token_unit.d.ts +6 -0
  331. package/dist/src/bindings/token_unit.js +1 -0
  332. package/dist/src/bindings/upsert_field_formulas.d.ts +26 -0
  333. package/dist/src/bindings/upsert_field_formulas.js +40 -0
  334. package/dist/src/bindings/upsert_field_render_info.d.ts +19 -0
  335. package/dist/src/bindings/upsert_field_render_info.js +26 -0
  336. package/dist/src/bindings/value.d.ts +8 -4
  337. package/dist/src/bindings/value.js +0 -1
  338. package/dist/src/bindings/vertical_alignment.js +0 -1
  339. package/dist/src/bindings/workbook_file.js +0 -1
  340. package/dist/src/bindings/workbook_update_type.js +0 -1
  341. package/dist/src/client.d.ts +18 -75
  342. package/dist/src/index.d.ts +4 -2
  343. package/dist/src/index.js +4 -1
  344. package/dist/src/layout.d.ts +7 -0
  345. package/dist/src/layout.js +1 -0
  346. package/dist/src/payloads/index.d.ts +1 -65
  347. package/dist/src/payloads/index.js +1 -32
  348. package/dist/src/payloads/set_block_line_name_field.d.ts +34 -0
  349. package/dist/src/payloads/set_block_line_name_field.js +62 -0
  350. package/dist/src/payloads/set_block_line_num_fmt.d.ts +23 -0
  351. package/dist/src/payloads/set_block_line_num_fmt.js +54 -0
  352. package/dist/src/payloads/set_cell_alignment.d.ts +0 -1
  353. package/dist/src/payloads/set_cell_alignment.js +0 -1
  354. package/dist/src/payloads/set_cell_border.d.ts +0 -1
  355. package/dist/src/payloads/set_cell_border.js +0 -1
  356. package/dist/src/payloads/set_cell_font.d.ts +0 -1
  357. package/dist/src/payloads/set_cell_font.js +0 -1
  358. package/dist/src/payloads/{cell_clear.d.ts → set_cell_num_fmt.d.ts} +6 -4
  359. package/dist/src/payloads/{cell_input.js → set_cell_num_fmt.js} +7 -8
  360. package/dist/src/payloads/set_cell_pattern_fill.d.ts +0 -1
  361. package/dist/src/payloads/set_cell_pattern_fill.js +0 -1
  362. package/dist/src/payloads/{split_merged_cells.d.ts → set_cell_wrap_text.d.ts} +6 -4
  363. package/dist/src/payloads/{cell_clear.js → set_cell_wrap_text.js} +9 -2
  364. package/dist/src/payloads/set_field_num_fmt.d.ts +14 -0
  365. package/dist/src/payloads/set_field_num_fmt.js +30 -0
  366. package/dist/src/payloads/set_line_alignment.d.ts +0 -1
  367. package/dist/src/payloads/set_line_alignment.js +0 -1
  368. package/dist/src/payloads/set_line_border.d.ts +0 -1
  369. package/dist/src/payloads/set_line_border.js +0 -1
  370. package/dist/src/payloads/set_line_font.d.ts +0 -1
  371. package/dist/src/payloads/set_line_font.js +0 -1
  372. package/dist/src/payloads/set_line_num_fmt.d.ts +20 -0
  373. package/dist/src/payloads/set_line_num_fmt.js +46 -0
  374. package/dist/src/payloads/set_line_pattern_fill.d.ts +0 -1
  375. package/dist/src/payloads/set_line_pattern_fill.js +0 -1
  376. package/dist/src/payloads/set_line_wrap_text.d.ts +20 -0
  377. package/dist/src/payloads/set_line_wrap_text.js +46 -0
  378. package/dist/src/pure.d.ts +9 -0
  379. package/dist/src/pure.js +20 -0
  380. package/dist/src/types.d.ts +31 -0
  381. package/dist/src/types.js +21 -0
  382. package/dist/src/utils.d.ts +1 -0
  383. package/dist/src/utils.js +22 -0
  384. package/package.json +3 -2
  385. package/dist/src/bindings/cell_formula_value.d.ts +0 -7
  386. package/dist/src/bindings/cell_style.d.ts +0 -6
  387. package/dist/src/bindings/display_patch.d.ts +0 -25
  388. package/dist/src/bindings/display_request.d.ts +0 -4
  389. package/dist/src/bindings/display_request.js +0 -2
  390. package/dist/src/bindings/display_response.d.ts +0 -5
  391. package/dist/src/bindings/sheet_blocks.d.ts +0 -5
  392. package/dist/src/bindings/sheet_col_info.d.ts +0 -6
  393. package/dist/src/bindings/sheet_comments.d.ts +0 -5
  394. package/dist/src/bindings/sheet_merge_cells.d.ts +0 -5
  395. package/dist/src/bindings/sheet_names.d.ts +0 -3
  396. package/dist/src/bindings/sheet_names.js +0 -2
  397. package/dist/src/bindings/sheet_row_info.d.ts +0 -6
  398. package/dist/src/bindings/sheet_styles.d.ts +0 -5
  399. package/dist/src/bindings/sheet_values.d.ts +0 -5
  400. package/dist/src/bindings/style_update.d.ts +0 -7
  401. package/dist/src/payloads/block_input.d.ts +0 -21
  402. package/dist/src/payloads/block_input.js +0 -47
  403. package/dist/src/payloads/cell_format_brush.d.ts +0 -30
  404. package/dist/src/payloads/cell_format_brush.js +0 -71
  405. package/dist/src/payloads/cell_input.d.ts +0 -18
  406. package/dist/src/payloads/create_block.d.ts +0 -24
  407. package/dist/src/payloads/create_block.js +0 -61
  408. package/dist/src/payloads/delete_block_cols.d.ts +0 -18
  409. package/dist/src/payloads/delete_block_cols.js +0 -39
  410. package/dist/src/payloads/delete_block_rows.d.ts +0 -18
  411. package/dist/src/payloads/delete_block_rows.js +0 -39
  412. package/dist/src/payloads/delete_cols.d.ts +0 -15
  413. package/dist/src/payloads/delete_cols.js +0 -31
  414. package/dist/src/payloads/delete_rows.d.ts +0 -15
  415. package/dist/src/payloads/delete_rows.js +0 -31
  416. package/dist/src/payloads/delete_sheet.d.ts +0 -9
  417. package/dist/src/payloads/delete_sheet.js +0 -15
  418. package/dist/src/payloads/insert_block_cols.d.ts +0 -18
  419. package/dist/src/payloads/insert_block_cols.js +0 -39
  420. package/dist/src/payloads/insert_block_rows.d.ts +0 -18
  421. package/dist/src/payloads/insert_block_rows.js +0 -39
  422. package/dist/src/payloads/insert_cols.d.ts +0 -15
  423. package/dist/src/payloads/insert_cols.js +0 -31
  424. package/dist/src/payloads/insert_rows.d.ts +0 -15
  425. package/dist/src/payloads/insert_rows.js +0 -31
  426. package/dist/src/payloads/insert_sheet.d.ts +0 -12
  427. package/dist/src/payloads/insert_sheet.js +0 -23
  428. package/dist/src/payloads/line_format_brush.d.ts +0 -27
  429. package/dist/src/payloads/line_format_brush.js +0 -63
  430. package/dist/src/payloads/merge_cells.d.ts +0 -21
  431. package/dist/src/payloads/merge_cells.js +0 -47
  432. package/dist/src/payloads/move_block.d.ts +0 -18
  433. package/dist/src/payloads/move_block.js +0 -39
  434. package/dist/src/payloads/set_border.d.ts +0 -49
  435. package/dist/src/payloads/set_border.js +0 -97
  436. package/dist/src/payloads/set_col_visible.d.ts +0 -15
  437. package/dist/src/payloads/set_col_visible.js +0 -31
  438. package/dist/src/payloads/set_col_width.d.ts +0 -15
  439. package/dist/src/payloads/set_col_width.js +0 -31
  440. package/dist/src/payloads/set_font.d.ts +0 -46
  441. package/dist/src/payloads/set_font.js +0 -91
  442. package/dist/src/payloads/set_row_height.d.ts +0 -15
  443. package/dist/src/payloads/set_row_height.js +0 -31
  444. package/dist/src/payloads/set_row_visible.d.ts +0 -15
  445. package/dist/src/payloads/set_row_visible.js +0 -31
  446. package/dist/src/payloads/sheet_rename.d.ts +0 -15
  447. package/dist/src/payloads/sheet_rename.js +0 -29
  448. package/dist/src/payloads/split_merged_cells.js +0 -31
  449. package/dist/src/transactions.d.ts +0 -13
  450. package/dist/src/transactions.js +0 -23
  451. /package/dist/src/bindings/{cell_formula_value.js → app_data.js} +0 -0
  452. /package/dist/src/bindings/{cell_style.js → appendix.js} +0 -0
  453. /package/dist/src/bindings/{display_patch.js → appendix_with_cell.js} +0 -0
  454. /package/dist/src/bindings/{display_response.js → block_cell_info.js} +0 -0
  455. /package/dist/src/bindings/{sheet_blocks.js → block_data_row.js} +0 -0
  456. /package/dist/src/bindings/{sheet_col_info.js → block_display_info.js} +0 -0
  457. /package/dist/src/bindings/{sheet_comments.js → block_field.js} +0 -0
  458. /package/dist/src/bindings/{sheet_merge_cells.js → block_schema.js} +0 -0
  459. /package/dist/src/bindings/{sheet_row_info.js → block_schema_field_entry.js} +0 -0
  460. /package/dist/src/bindings/{sheet_styles.js → block_schema_key_entry.js} +0 -0
  461. /package/dist/src/bindings/{sheet_values.js → block_schema_random_entry.js} +0 -0
  462. /package/dist/src/bindings/{style_update.js → block_schema_type.js} +0 -0
@@ -1,42 +1,63 @@
1
- import { block_input, block_line_shift, calc_condition, cell_clear, cell_input, check_bind_block, check_formula, col_delete, col_insert, create_block, create_sheet, delete_sheet, get_all_sheet_info, get_available_block_id, get_sheet_count, get_sheet_id, input_async_result, merge_cells, move_block, new_workbook, read_file, redo, release, row_delete, row_insert, set_cell_alignment, set_cell_border, set_cell_format_brush, set_cell_pattern_fill, set_col_width, set_font, set_line_alignment, set_line_border, set_line_font, set_line_format_brush, set_line_pattern_fill, set_row_height, sheet_rename_by_idx, sheet_rename_by_name, split_merged_cells, transaction_end, transaction_start, undo, } from '../../wasm/logisheets_wasm_server';
2
- import { Transaction } from '../transactions';
1
+ import { handle, input_async_result } from '../../wasm/logisheets_wasm_server';
3
2
  import { Worksheet } from './worksheet';
4
3
  import { Calculator } from './calculator';
4
+ import { isErrorMessage } from './utils';
5
5
  import { BlockManager } from './block_manager';
6
+ function rpc(method, params, bookId
7
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
8
+ ) {
9
+ const msg = params === undefined ? method : { method, value: params };
10
+ return handle(msg, bookId ?? null);
11
+ }
6
12
  export class Workbook {
7
13
  constructor() {
8
- this._id = new_workbook();
14
+ this._id = rpc('newWorkbook');
9
15
  this._blockManager = new BlockManager((sheetIdx, blockId, rowCount, colCount) => {
10
- return check_bind_block(this._id, sheetIdx, blockId, rowCount, colCount);
16
+ return rpc('checkBindBlock', { sheetIdx, blockId, rowCount, colCount }, this._id);
11
17
  }, (sheetIdx) => {
12
- return get_available_block_id(this._id, sheetIdx);
18
+ return rpc('getAvailableBlockId', { sheetIdx }, this._id);
13
19
  });
14
20
  }
21
+ getSheetIdx(sheetId) {
22
+ return rpc('getSheetIdx', { sheetId }, this._id);
23
+ }
24
+ getBlockValues(params) {
25
+ return rpc('getBlockValues', params, this._id);
26
+ }
27
+ getAvailableBlockId(params) {
28
+ return rpc('getAvailableBlockId', params, this._id);
29
+ }
15
30
  /**
16
31
  * @returns the block id if success, otherwise the error message
17
32
  *
18
33
  * It is caller's responsibility to store the block id.
19
34
  */
20
- createBlockForNewCraft(sheetIdx, masterRow, masterCol, rowCount, colCount) {
35
+ createBlockForNewCraft(sheetIdx, masterRow, masterCol, rowCnt, colCnt) {
21
36
  const id = this._blockManager.getAvailableBlockId(sheetIdx);
22
- const effect = this.execTransaction(new Transaction([
23
- {
24
- type: 'createBlock',
25
- sheetIdx,
26
- blockId: id,
27
- masterRow,
28
- masterCol,
29
- rowCnt: rowCount,
30
- colCnt: colCount,
31
- },
32
- ], false));
33
- if ('err' in effect.status) {
37
+ const effect = this.execTransaction({
38
+ payloads: [
39
+ {
40
+ type: 'createBlock',
41
+ value: {
42
+ sheetIdx,
43
+ id,
44
+ masterRow,
45
+ masterCol,
46
+ rowCnt,
47
+ colCnt,
48
+ },
49
+ },
50
+ ],
51
+ undoable: false,
52
+ temp: false,
53
+ });
54
+ if (effect.status.type === 'err') {
34
55
  return {
35
56
  msg: 'failed to create block',
36
- ty: effect.status.err,
57
+ ty: effect.status.value,
37
58
  };
38
59
  }
39
- const bind = this._blockManager.bindBlock(sheetIdx, id, rowCount, colCount);
60
+ const bind = this._blockManager.bindBlock(sheetIdx, id, rowCnt, colCnt);
40
61
  if (!bind) {
41
62
  return {
42
63
  msg: 'failed to bind block',
@@ -46,7 +67,7 @@ export class Workbook {
46
67
  return id;
47
68
  }
48
69
  undo() {
49
- const result = undo(this._id);
70
+ const result = rpc('undo', undefined, this._id);
50
71
  if (result) {
51
72
  this._onCellUpdate();
52
73
  this._onSheetUpdate();
@@ -54,7 +75,7 @@ export class Workbook {
54
75
  return result;
55
76
  }
56
77
  redo() {
57
- const result = redo(this._id);
78
+ const result = rpc('redo', undefined, this._id);
58
79
  if (result) {
59
80
  this._onCellUpdate();
60
81
  this._onSheetUpdate();
@@ -67,24 +88,123 @@ export class Workbook {
67
88
  registerSheetInfoUpdateCallback(callback) {
68
89
  this._sheetInfoUpdatedCallbacks.push(callback);
69
90
  }
91
+ /**
92
+ * Fires after a transaction with sheet indices whose row/column headers
93
+ * changed (i.e. SetRowHeight / SetColWidth payloads). Useful for the UI
94
+ * to know which sheets need their header strip re-rendered.
95
+ */
96
+ registerHeaderUpdatedCallback(callback) {
97
+ this._headerUpdatedCallbacks.push(callback);
98
+ }
99
+ getSheetNameByIdx(idx) {
100
+ return rpc('getSheetNameByIdx', { idx }, this._id);
101
+ }
70
102
  getAllSheetInfo() {
71
- return get_all_sheet_info(this._id);
103
+ return rpc('getAllSheetInfo', undefined, this._id);
72
104
  }
73
105
  checkFormula(f) {
74
- return check_formula(this._id, f);
106
+ return rpc('checkFormula', { formula: f }, this._id);
75
107
  }
76
108
  calcCondition(sheetIdx, f) {
77
- return calc_condition(this._id, sheetIdx, f);
109
+ return rpc('calcCondition', { sheetIdx, condition: f }, this._id);
110
+ }
111
+ /**
112
+ * Resolve a (refName, key, field) triple to a concrete cell, the same
113
+ * way the BLOCKREF formula resolves at evaluation time. Useful for
114
+ * subscribing to block cells without threading sheet/block/row/col
115
+ * coordinates.
116
+ */
117
+ getCellIdByBlockRef(refName, key, field) {
118
+ return rpc('getCellIdByBlockRef', { refName, key, field }, this._id);
119
+ }
120
+ /**
121
+ * Export a block's data as a row-per-key, column-per-field matrix of
122
+ * values. `keyFilter`/`fieldFilter` narrow the rows/columns (omit for
123
+ * all). Columns follow the schema's field order (filtered); pair them with
124
+ * the field metadata from the field manager — including which field is the
125
+ * key — on the caller side.
126
+ */
127
+ exportBlockData(refName, keyFilter, fieldFilter) {
128
+ return rpc('exportBlockData', { refName, keyFilter, fieldFilter }, this._id);
129
+ }
130
+ /**
131
+ * Snapshot of all cell-value differences between the active temp
132
+ * branch and the committed (fork) status. Returns an empty diff
133
+ * when no temp branch is active. Used by the host's diff layer to
134
+ * drive its overlay without needing JS-side snapshot/compare.
135
+ */
136
+ getTempStatusChanges() {
137
+ return rpc('getTempStatusChanges', undefined, this._id);
78
138
  }
79
139
  getSheetId(sheetIdx) {
80
- return get_sheet_id(this._id, sheetIdx);
140
+ return rpc('getSheetId', { sheetIdx }, this._id);
81
141
  }
82
- execTransaction(tx) {
83
- transaction_start(this._id);
84
- tx.payloads.forEach((p) => {
85
- this._addPayload(p);
142
+ getBlockRowId(sheetId, blockId, rowIdx) {
143
+ return rpc('getBlockRowId', { sheetId, blockId, rowIdx }, this._id);
144
+ }
145
+ getBlockColId(sheetId, blockId, colIdx) {
146
+ return rpc('getBlockColId', { sheetId, blockId, colIdx }, this._id);
147
+ }
148
+ getDisplayUnitsOfFormula(f) {
149
+ return rpc('getDisplayUnitsOfFormula', { formula: f }, this._id);
150
+ }
151
+ onCellValueChanged(sheetIdx, rowIdx, colIdx, callback) {
152
+ const cellId = this.getCellId({ sheetIdx, rowIdx, colIdx });
153
+ if (isErrorMessage(cellId)) {
154
+ return cellId;
155
+ }
156
+ this._registerCellValueChangedCallback(cellId, callback);
157
+ }
158
+ onCellRemoved(sheetIdx, rowIdx, colIdx, callback) {
159
+ const cellId = this.getCellId({ sheetIdx, rowIdx, colIdx });
160
+ if (isErrorMessage(cellId)) {
161
+ return cellId;
162
+ }
163
+ this._registerCellRemovedCallback(cellId, callback);
164
+ }
165
+ onShadowCellValueChanged(sheetIdx, rowIdx, colIdx, callback) {
166
+ const shadowId = this.getShadowCellId({
167
+ sheetIdx,
168
+ rowIdx,
169
+ colIdx,
86
170
  });
87
- const result = transaction_end(this._id, tx.undoable);
171
+ if (isErrorMessage(shadowId)) {
172
+ return shadowId;
173
+ }
174
+ this._registerCellValueChangedCallback(shadowId, callback);
175
+ }
176
+ _registerCellRemovedCallback(cellId, callback) {
177
+ if (!this._cellRemovedCallbacks.has(cellId)) {
178
+ this._cellRemovedCallbacks.set(cellId, []);
179
+ }
180
+ this._cellRemovedCallbacks.get(cellId)?.push(callback);
181
+ }
182
+ _registerCellValueChangedCallback(id, callback) {
183
+ if (!this._cellValueChangedCallbacks.has(id)) {
184
+ this._cellValueChangedCallbacks.set(id, []);
185
+ }
186
+ this._cellValueChangedCallbacks.get(id)?.push(callback);
187
+ }
188
+ registerCellValueChangedByCellId(cellId, callback) {
189
+ this._registerCellValueChangedCallback(cellId, callback);
190
+ }
191
+ commitTempStatus() {
192
+ rpc('commitTempStatus', undefined, this._id);
193
+ }
194
+ cleanupTempStatus() {
195
+ rpc('cleanTempStatus', undefined, this._id);
196
+ }
197
+ toggleStatus(useTemp) {
198
+ rpc('toggleStatus', { useTemp }, this._id);
199
+ }
200
+ batchGetCellInfoById(ids) {
201
+ return rpc('batchGetCellInfoById', { ids }, this._id);
202
+ }
203
+ batchGetCellCoordinateWithSheetById(ids) {
204
+ return rpc('batchGetCellCoordinateWithSheetById', { ids }, this._id);
205
+ }
206
+ execTransaction(tx) {
207
+ const result = rpc('handleTransaction', { transaction: tx }, this._id);
88
208
  if (result.asyncTasks.length > 0) {
89
209
  const asyncResult = this._calculator.calc(result.asyncTasks);
90
210
  asyncResult.then((result) => {
@@ -92,8 +212,8 @@ export class Workbook {
92
212
  this._onCellUpdate();
93
213
  });
94
214
  }
95
- if ('ok' in result.status) {
96
- switch (result.status.ok) {
215
+ if (result.status.type === 'ok') {
216
+ switch (result.status.value) {
97
217
  case 'cell':
98
218
  this._onCellUpdate();
99
219
  break;
@@ -112,98 +232,120 @@ export class Workbook {
112
232
  this._onCellUpdate();
113
233
  this._onSheetUpdate();
114
234
  }
235
+ result.valueChanged.forEach((cellId) => {
236
+ this._cellValueChangedCallbacks
237
+ .get(cellId)
238
+ ?.forEach((callback) => {
239
+ callback();
240
+ });
241
+ });
242
+ result.cellRemoved.forEach((cellId) => {
243
+ this._cellRemovedCallbacks.get(cellId)?.forEach((callback) => {
244
+ callback();
245
+ });
246
+ this._cellRemovedCallbacks.delete(cellId);
247
+ this._cellValueChangedCallbacks.delete(cellId);
248
+ });
249
+ if (result.headerUpdated.length > 0) {
250
+ this._headerUpdatedCallbacks.forEach((cb) => cb(result.headerUpdated));
251
+ }
115
252
  }
116
253
  return result;
117
254
  }
118
255
  load(buf, bookName) {
119
- return read_file(this._id, bookName, buf);
256
+ return rpc('loadWorkbook', { content: Array.from(buf), name: bookName }, this._id);
257
+ }
258
+ save(data) {
259
+ return rpc('saveWorkbook', { appData: data }, this._id);
260
+ }
261
+ getAppData() {
262
+ return rpc('getAppData', undefined, this._id);
120
263
  }
121
264
  release() {
122
- release(this._id);
265
+ rpc('release', undefined, this._id);
123
266
  }
124
267
  getSheetCount() {
125
- return get_sheet_count(this._id);
268
+ return rpc('getSheetCount', undefined, this._id);
126
269
  }
127
270
  getWorksheet(idx) {
128
271
  if (idx >= this.getSheetCount())
129
272
  throw Error(`invalid sheet index: ${idx}`);
130
273
  return new Worksheet(this._id, idx);
131
274
  }
275
+ /**
276
+ * Fill-handle drag: predict the contents for `dst` from the source
277
+ * block `src` and commit them as a single (undoable) transaction.
278
+ *
279
+ * The semantics (formula reference shift, arithmetic series, value
280
+ * copy) live in the Rust engine; this just predicts then dispatches.
281
+ * Returns the prediction error if the ranges don't align on one axis.
282
+ */
283
+ fill(sheetIdx, src, dst) {
284
+ const inputs = this.getWorksheet(sheetIdx).predictFill(src, dst);
285
+ if (isErrorMessage(inputs))
286
+ return inputs;
287
+ return this.execTransaction({
288
+ payloads: inputs.map((value) => ({ type: 'cellInput', value })),
289
+ undoable: true,
290
+ temp: false,
291
+ });
292
+ }
132
293
  getWorksheetById(id) {
133
294
  return new Worksheet(this._id, id, false);
134
295
  }
135
296
  registryCustomFunc(customFunc) {
136
297
  this._calculator.registry(customFunc);
137
298
  }
138
- _addPayload(p) {
139
- if (p.type === 'cellInput')
140
- return cell_input(this._id, p.sheetIdx, p.row, p.col, p.input);
141
- if (p.type === 'insertRows')
142
- return row_insert(this._id, p.sheetIdx, p.start, p.cnt);
143
- if (p.type === 'deleteRows')
144
- return row_delete(this._id, p.sheetIdx, p.start, p.cnt);
145
- if (p.type === 'insertCols')
146
- return col_insert(this._id, p.sheetIdx, p.start, p.cnt);
147
- if (p.type === 'deleteCols')
148
- return col_delete(this._id, p.sheetIdx, p.start, p.cnt);
149
- if (p.type === 'createBlock')
150
- return create_block(this._id, p.sheetIdx, p.blockId, p.masterRow, p.masterCol, p.rowCnt, p.colCnt);
151
- if (p.type === 'moveBlock')
152
- return move_block(this._id, p.sheetIdx, p.blockId, p.newMasterRow, p.newMasterCol);
153
- if (p.type === 'setCellBorder')
154
- return set_cell_border(this._id, p.sheetIdx, p.row, p.col, p.leftColor, p.rightColor, p.topColor, p.bottomColor, p.leftBorderType, p.rightBorderType, p.topBorderType, p.bottomBorderType, p.outline, p.diagonalUp, p.diagonalDown);
155
- if (p.type === 'setLineBorder')
156
- return set_line_border(this._id, p.sheetIdx, p.row, p.line, p.leftColor, p.rightColor, p.topColor, p.bottomColor, p.leftBorderType, p.rightBorderType, p.topBorderType, p.bottomBorderType, p.outline, p.diagonalUp, p.diagonalDown);
157
- if (p.type === 'setCellFont')
158
- return set_font(this._id, p.sheetIdx, p.row, p.col, p.bold, p.italic, p.name, p.underline, p.color, p.size, p.outline, p.shadow, p.strike, p.condense);
159
- if (p.type === 'setLineFont')
160
- return set_line_font(this._id, p.sheetIdx, p.from, p.to, p.row, p.bold, p.italic, p.name, p.underline, p.color, p.size, p.outline, p.shadow, p.strike, p.condense);
161
- if (p.type === 'blockInput')
162
- return block_input(this._id, p.sheetIdx, p.blockId, p.row, p.col, p.input);
163
- if (p.type === 'insertBlockCols')
164
- return block_line_shift(this._id, p.sheetIdx, p.blockId, p.colIdx, p.cnt, false, true);
165
- if (p.type === 'insertBlockRows')
166
- return block_line_shift(this._id, p.sheetIdx, p.blockId, p.rowIdx, p.cnt, true, true);
167
- if (p.type === 'deleteBlockRows')
168
- return block_line_shift(this._id, p.sheetIdx, p.blockId, p.rowIdx, p.cnt, true, false);
169
- if (p.type === 'deleteBlockCols')
170
- return block_line_shift(this._id, p.sheetIdx, p.blockId, p.colIdx, p.cnt, true, true);
171
- if (p.type === 'sheetRename') {
172
- if (p.oldName) {
173
- return sheet_rename_by_name(this._id, p.oldName, p.newName);
174
- }
175
- if (p.idx) {
176
- return sheet_rename_by_idx(this._id, p.idx, p.newName);
177
- }
178
- }
179
- if (p.type === 'deleteSheet')
180
- return delete_sheet(this._id, p.sheetIdx);
181
- if (p.type === 'insertSheet')
182
- return create_sheet(this._id, p.sheetIdx, p.name);
183
- if (p.type === 'cellClear')
184
- return cell_clear(this._id, p.sheetIdx, p.row, p.col);
185
- if (p.type === 'setColWidth')
186
- return set_col_width(this._id, p.sheetIdx, p.col, p.width);
187
- if (p.type === 'setRowHeight')
188
- return set_row_height(this._id, p.sheetIdx, p.row, p.height);
189
- if (p.type === 'setLineAlignment')
190
- return set_line_alignment(this._id, p.sheetIdx, p.row, p.from, p.to, p.alignment.horizontal, p.alignment.vertical);
191
- if (p.type === 'setCellAlignment')
192
- return set_cell_alignment(this._id, p.sheetIdx, p.row, p.col, p.alignment.horizontal, p.alignment.vertical);
193
- if (p.type === 'setCellPatternFill')
194
- return set_cell_pattern_fill(this._id, p.sheetIdx, p.row, p.col, p.fgColor, p.bgColor, p.pattern);
195
- if (p.type === 'setLinePatternFill')
196
- return set_line_pattern_fill(this._id, p.sheetIdx, p.row, p.from, p.to, p.fgColor, p.bgColor, p.pattern);
197
- if (p.type === 'mergeCells')
198
- return merge_cells(this._id, p.sheetIdx, p.startRow, p.startCol, p.endRow, p.endCol);
199
- if (p.type === 'splitMergedCells')
200
- return split_merged_cells(this._id, p.sheetIdx, p.row, p.col);
201
- if (p.type === 'cellFormatBrush')
202
- return set_cell_format_brush(this._id, p.srcSheetIdx, p.srcRow, p.srcCol, p.dstSheetIdx, p.dstRowStart, p.dstColStart, p.dstRowEnd, p.dstColEnd);
203
- if (p.type === 'lineFormatBrush')
204
- return set_line_format_brush(this._id, p.srcSheetIdx, p.srcRow, p.srcCol, p.dstSheetIdx, p.row, p.from, p.to);
205
- // eslint-disable-next-line no-console
206
- console.log(`Unimplemented!: ${p.type}`);
299
+ getShadowCellId(params) {
300
+ return rpc('getShadowCellId', params, this._id);
301
+ }
302
+ getShadowCellIds(params) {
303
+ return rpc('getShadowCellIds', params, this._id);
304
+ }
305
+ getShadowInfoById(params) {
306
+ return rpc('getShadowInfoById', params, this._id);
307
+ }
308
+ getCellId(params) {
309
+ return rpc('getCellId', params, this._id);
310
+ }
311
+ getAllBlockFields() {
312
+ return rpc('getAllBlockFields', undefined, this._id);
313
+ }
314
+ /**
315
+ * Enumerate blocks across the workbook.
316
+ *
317
+ * Scope:
318
+ * - `sheetId` set → only that sheet
319
+ * - `sheetIdx` set resolve to sheetId, then that sheet
320
+ * - neither set → every sheet
321
+ * `sheetId` wins if both are set.
322
+ */
323
+ getAllBlocks(params) {
324
+ return rpc('getAllBlocks', {
325
+ sheetIdx: params?.sheetIdx,
326
+ sheetId: params?.sheetId,
327
+ }, this._id);
328
+ }
329
+ // ---- Named checkpoints --------------------------------------------
330
+ //
331
+ // Save / delete / list go through dedicated RPCs (not the
332
+ // transaction pipeline) — they manage session-only checkpoint
333
+ // storage and don't touch sheet state. To restore, send a normal
334
+ // `restoreCheckpoint` payload via handleTransaction; that lands on
335
+ // the undo stack so users can Ctrl-Z to reverse the restore.
336
+ /** Snapshot the current workbook state under `label`. Overwrites
337
+ * any existing checkpoint with the same label. Returns the number
338
+ * of checkpoints currently stored after this save. */
339
+ saveCheckpoint(label, description) {
340
+ return rpc('saveCheckpoint', { label, description }, this._id);
341
+ }
342
+ /** Drop a named checkpoint. Returns `true` if it existed. */
343
+ deleteCheckpoint(label) {
344
+ return rpc('deleteCheckpoint', { label }, this._id);
345
+ }
346
+ /** List all checkpoints (newest first). */
347
+ listCheckpoints() {
348
+ return rpc('listCheckpoints', undefined, this._id);
207
349
  }
208
350
  _inputAsyncResult(r) {
209
351
  return input_async_result(this._id, r);
@@ -220,6 +362,9 @@ export class Workbook {
220
362
  }
221
363
  _cellUpdatedCallbacks = [];
222
364
  _sheetInfoUpdatedCallbacks = [];
365
+ _headerUpdatedCallbacks = [];
366
+ _cellValueChangedCallbacks = new Map();
367
+ _cellRemovedCallbacks = new Map();
223
368
  // The book id which is generated by `WASM`
224
369
  _id;
225
370
  _blockManager;
@@ -1,4 +1,4 @@
1
- import { BlockInfo, CellPosition, ColInfo, DisplayWindow, DisplayWindowWithStartPoint, RowInfo, Style, Value, CellInfo, SheetDimension, MergeCell } from '../bindings';
1
+ import { BlockInfo, CellPosition, ColInfo, DisplayWindow, DisplayWindowWithStartPoint, RowInfo, Style, Value, CellInfo, SheetDimension, MergeCell, AppendixWithCell, ReproducibleCell, SheetCoordinate, CellInput } from '../bindings';
2
2
  import { Cell } from './cell';
3
3
  import { Result } from './utils';
4
4
  export declare class Worksheet {
@@ -7,18 +7,56 @@ export declare class Worksheet {
7
7
  getDisplayWindow(startRow: number, endRow: number, startCol: number, endCol: number): Result<DisplayWindow>;
8
8
  getDisplayWindowWithStartPoint(startX: number, startY: number, height: number, width: number): DisplayWindowWithStartPoint;
9
9
  getCellPosition(row: number, col: number): CellPosition;
10
+ getNextUpwardVisibleCell(row: number, col: number): CellPosition;
11
+ getNextDownwardVisibleCell(row: number, col: number): CellPosition;
12
+ getNextLeftwardVisibleCell(row: number, col: number): CellPosition;
13
+ getNextRightwardVisibleCell(row: number, col: number): CellPosition;
14
+ getUpwardDataBoundary(row: number, col: number): CellPosition;
15
+ getDownwardDataBoundary(row: number, col: number): CellPosition;
16
+ getLeftwardDataBoundary(row: number, col: number): CellPosition;
17
+ getRightwardDataBoundary(row: number, col: number): CellPosition;
10
18
  getDisplayWindowWithCellPosition(row: number, col: number, height: number, width: number): DisplayWindowWithStartPoint;
19
+ getBlockDisplayWindow(blockId: number): Result<DisplayWindow>;
11
20
  getRowHeight(rowIdx: number): Result<number>;
12
21
  getColWidth(colIdx: number): Result<number>;
13
22
  getRowInfo(rowIdx: number): Result<RowInfo>;
14
23
  getColInfo(colIdx: number): Result<ColInfo>;
15
24
  getCellInfo(rowIdx: number, colIdx: number): Result<CellInfo>;
25
+ getReproducibleCell(rowIdx: number, colIdx: number): Result<ReproducibleCell>;
26
+ getReproducibleCells(coordinates: readonly SheetCoordinate[]): Result<readonly ReproducibleCell[]>;
27
+ getCellInfos(startRow: number, startCol: number, endRow: number, endCol: number): Result<readonly CellInfo[]>;
28
+ getCellInfosExceptWindow(startRow: number, startCol: number, endRow: number, endCol: number, windowStartRow: number, windowStartCol: number, windowEndRow: number, windowEndCol: number): Result<readonly CellInfo[]>;
29
+ /**
30
+ * Predict the fill-handle result: given a source block and the target
31
+ * block the user dragged over, returns one `CellInput` per target cell
32
+ * (formula relative-reference shift, arithmetic series, or value copy).
33
+ *
34
+ * This is a pure read-only query — it does not mutate the workbook. The
35
+ * caller wraps the returned inputs in a single transaction (see
36
+ * `Workbook.fill`) so the fill is one undo step. `src` and `dst` must
37
+ * align on a single axis (a pure vertical or horizontal drag).
38
+ */
39
+ predictFill(src: {
40
+ startRow: number;
41
+ startCol: number;
42
+ endRow: number;
43
+ endCol: number;
44
+ }, dst: {
45
+ startRow: number;
46
+ startCol: number;
47
+ endRow: number;
48
+ endCol: number;
49
+ }): Result<readonly CellInput[]>;
50
+ getBlockInfo(blockId: number): BlockInfo;
16
51
  getMergedCells(startRow: number, startCol: number, endRow: number, endCol: number): readonly MergeCell[];
17
52
  getCell(rowIdx: number, colIdx: number): Result<Cell>;
18
53
  getFormula(rowIdx: number, colIdx: number): Result<string>;
19
54
  getStyle(rowIdx: number, colIdx: number): Result<Style>;
20
55
  getValue(rowIdx: number, colIdx: number): Result<Value>;
56
+ getDiyCellIdWithBlockId(blockId: number, row: number, col: number): Result<number>;
57
+ lookupAppendixUpward(blockId: number, row: number, col: number, craftId: string, tag: number): Result<AppendixWithCell>;
21
58
  getFullyCoveredBlocks(rowIdx: number, colIdx: number, rowCnt: number, colCnt: number): Result<BlockInfo[]>;
22
59
  private _id;
23
60
  private _sheetId;
61
+ private _sheetIdx;
24
62
  }