11import { rangeTokenize } from "../formulas" ;
22import { Range , RangeAdapter , UID } from "../types" ;
3+ import { CellErrorType } from "../types/errors" ;
4+ import { ApplyRangeChangeResult } from "../types/misc" ;
35import { concat } from "./misc" ;
46import { createInvalidRange , createRangeFromXc , getRangeString } from "./range" ;
57import { rangeReference , splitReference } from "./references" ;
@@ -19,7 +21,7 @@ export function adaptFormulaStringRanges(
1921 continue ;
2022 }
2123 const sheetXC = tokens [ tokenIdx ] . value ;
22- const newSheetXC = adaptStringRange ( defaultSheetId , sheetXC , applyChange ) ;
24+ const newSheetXC = adaptStringRange ( defaultSheetId , sheetXC , applyChange ) . range ;
2325
2426 if ( sheetXC !== newSheetXC ) {
2527 tokens [ tokenIdx ] = {
@@ -35,28 +37,34 @@ export function adaptStringRange(
3537 defaultSheetId : UID ,
3638 sheetXC : string ,
3739 rangeAdapter : RangeAdapter
38- ) : string {
40+ ) : ApplyRangeChangeResult < string > {
3941 const sheetName = splitReference ( sheetXC ) . sheetName ;
4042 if (
4143 sheetName
4244 ? ! isSheetNameEqual ( sheetName , rangeAdapter . sheetName . old )
4345 : defaultSheetId !== rangeAdapter . sheetId
4446 ) {
45- return sheetXC ;
47+ return { changeType : "NONE" , range : sheetXC } ;
4648 }
4749 const sheetId = sheetName ? rangeAdapter . sheetId : defaultSheetId ;
4850
4951 const range = getRange ( sheetXC , sheetId ) ;
5052 if ( range . invalidXc ) {
51- return sheetXC ;
53+ return { changeType : "NONE" , range : sheetXC } ;
5254 }
5355
5456 const change = rangeAdapter . applyChange ( range ) ;
5557 if ( change . changeType === "NONE" || change . changeType === "REMOVE" ) {
56- return sheetXC ;
58+ return { changeType : change . changeType , range : sheetXC } ;
5759 }
58-
59- return getRangeString ( change . range , defaultSheetId , getSheetNameGetter ( rangeAdapter ) ) ;
60+ const rangeStr = getRangeString ( change . range , defaultSheetId , getSheetNameGetter ( rangeAdapter ) ) ;
61+ if ( rangeStr === CellErrorType . InvalidReference ) {
62+ return { changeType : "REMOVE" , range : rangeStr } ;
63+ }
64+ return {
65+ changeType : change . changeType ,
66+ range : rangeStr ,
67+ } ;
6068}
6169
6270function getSheetNameGetter ( applyChange : RangeAdapter ) {
0 commit comments