@univerjs/sheets-formula-ui 0.18.0 → 0.19.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.
- package/lib/cjs/index.js +3 -65
- package/lib/es/index.js +3 -65
- package/lib/index.js +3 -65
- package/lib/types/commands/{operations/editor-formula.operation.d.ts → utils/reference-absolute.d.ts} +5 -10
- package/lib/types/controllers/formula-clipboard.controller.d.ts +1 -1
- package/lib/types/controllers/shortcuts/prompt.shortcut.d.ts +0 -8
- package/lib/types/index.d.ts +0 -1
- package/lib/umd/index.js +3 -65
- package/package.json +14 -14
package/lib/cjs/index.js
CHANGED
|
@@ -1,65 +1,3 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require(`@univerjs/core`),t=require(`@univerjs/sheets-ui`),n=require(`@univerjs/engine-formula`),r=require(`rxjs`),i=require(`@univerjs/docs-ui`),a=require(`@univerjs/engine-render`),o=require(`@univerjs/sheets`),s=require(`@univerjs/sheets-formula`),c=require(`@univerjs/ui`),l=require(`react`),u=require(`react/jsx-runtime`),d=require(`@univerjs/design`),f=require(`@univerjs/icons`),p=require(`@univerjs/docs`),m=require(`rxjs/operators`);const h={id:`sheet.command.copy-formula-only`,type:e.CommandType.COMMAND,handler:async e=>e.get(t.ISheetClipboardService).copy({copyHookType:t.PREDEFINED_HOOK_NAME_COPY.SPECIAL_COPY_FORMULA_ONLY})},g={id:`sheet.command.paste-formula`,type:e.CommandType.COMMAND,handler:async n=>n.get(e.ICommandService).executeCommand(t.SheetPasteCommand.id,{value:t.PREDEFINED_HOOK_NAME_PASTE.SPECIAL_PASTE_FORMULA})},_={id:`formula-ui.operation.select-editor-formula`,type:e.CommandType.OPERATION,handler:(e,t)=>!0};function v(e){"@babel/helpers - typeof";return v=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},v(e)}function y(e,t){if(v(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(v(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function b(e){var t=y(e,`string`);return v(t)==`symbol`?t:t+``}function x(e,t,n){return(t=b(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function S(e,t){return function(n,r){t(n,r,e)}}function C(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}const w=`FORMULA_PROMPT_ACTIVATED`,T=(0,e.createIdentifier)(`formula-ui.prompt-service`);let E=class{constructor(e){this._contextService=e,x(this,`_search$`,new r.Subject),x(this,`_help$`,new r.Subject),x(this,`_navigate$`,new r.Subject),x(this,`_accept$`,new r.Subject),x(this,`_acceptFormulaName$`,new r.Subject),x(this,`search$`,this._search$.asObservable()),x(this,`help$`,this._help$.asObservable()),x(this,`navigate$`,this._navigate$.asObservable()),x(this,`accept$`,this._accept$.asObservable()),x(this,`acceptFormulaName$`,this._acceptFormulaName$.asObservable()),x(this,`_searching`,!1),x(this,`_helping`,!1),x(this,`_sequenceNodes`,[]),x(this,`_isLockedOnSelectionChangeRefString`,!1),x(this,`_isLockedOnSelectionInsertRefString`,!1)}dispose(){this._search$.complete(),this._help$.complete(),this._navigate$.complete(),this._accept$.complete(),this._acceptFormulaName$.complete(),this._sequenceNodes=[]}search(e){this._contextService.setContextValue(w,e.visible),this._searching=e.visible,this._search$.next(e)}isSearching(){return this._searching}help(e){this._helping=e.visible,this._help$.next(e)}isHelping(){return this._helping}navigate(e){this._navigate$.next(e)}accept(e){this._accept$.next(e)}acceptFormulaName(e){this._acceptFormulaName$.next(e)}getSequenceNodes(){return[...this._sequenceNodes]}setSequenceNodes(e){this._sequenceNodes=e}clearSequenceNodes(){this._sequenceNodes=[]}getCurrentSequenceNode(e){return this._sequenceNodes[this.getCurrentSequenceNodeIndex(e)]}getCurrentSequenceNodeByIndex(e){return this._sequenceNodes[e]}getCurrentSequenceNodeIndex(e){let t=0,n=this._sequenceNodes[0];for(let r=0,i=this._sequenceNodes.length;r<i;r++){let i=this._sequenceNodes[r];if(typeof i==`string`)t++;else{let{endIndex:e}=i;t=e}if(e<=t)return typeof n==`string`&&e!==0?r+1:r}return this._sequenceNodes.length}updateSequenceRef(e,t){let r=this._sequenceNodes[e];if(typeof r==`string`||r.nodeType!==n.sequenceNodeType.REFERENCE)return;let i=t.length-r.token.length,a={...r};a.token=t,a.endIndex+=i,this._sequenceNodes[e]=a;for(let t=e+1,n=this._sequenceNodes.length;t<n;t++){let e=this._sequenceNodes[t];if(typeof e==`string`)continue;let n={...e};n.startIndex+=i,n.endIndex+=i,this._sequenceNodes[t]=n}}insertSequenceRef(e,t){let r=t.length,i=this.getCurrentSequenceNodeIndex(e);this._sequenceNodes.splice(i,0,{token:t,startIndex:e,endIndex:e+r-1,nodeType:n.sequenceNodeType.REFERENCE});for(let e=i+1,t=this._sequenceNodes.length;e<t;e++){let t=this._sequenceNodes[e];if(typeof t==`string`)continue;let n={...t};n.startIndex+=r,n.endIndex+=r,this._sequenceNodes[e]=n}}insertSequenceString(e,t){let n=this.getCurrentSequenceNodeIndex(e),r=t.split(``);this._sequenceNodes.splice(n,0,...r);let i=r.length;for(let e=n+i,t=this._sequenceNodes.length;e<t;e++){let t=this._sequenceNodes[e];if(typeof t==`string`)continue;let n={...t};n.startIndex+=i,n.endIndex+=i,this._sequenceNodes[e]=n}}enableLockedSelectionChange(){this._isLockedOnSelectionChangeRefString=!0}disableLockedSelectionChange(){this._isLockedOnSelectionChangeRefString=!1}isLockedSelectionChange(){return this._isLockedOnSelectionChangeRefString}enableLockedSelectionInsert(){this._isLockedOnSelectionInsertRefString=!0}disableLockedSelectionInsert(){this._isLockedOnSelectionInsertRefString=!1}isLockedSelectionInsert(){return this._isLockedOnSelectionInsertRefString}};E=C([S(0,e.IContextService)],E);const D={id:`formula-ui.operation.help-function`,type:e.CommandType.OPERATION,handler:async(e,t)=>(e.get(T).help(t),!0)},O={id:`formula-ui.operation.insert-function`,type:e.CommandType.OPERATION,handler:async(r,c)=>{let l=r.get(o.SheetsSelectionsService),u=r.get(i.IEditorService),d=l.getCurrentSelections();if(!d||!d.length)return!1;let f=(0,o.getSheetCommandTarget)(r.get(e.IUniverInstanceService));if(!f)return!1;let{worksheet:p,unitId:m,subUnitId:h}=f,g=p.getCellMatrix(),{value:_}=c,v=r.get(e.ICommandService);r.get(t.IEditorBridgeService);let y=[],b=[],x=null,S=0,C=0,w=``;if(d.length===1&&(N(d[0].range)||P(d[0].range)&&F(g,d[0].range))){var T,E;let{range:e,primary:t}=d[0],r=(T=t==null?void 0:t.actualRow)==null?e.startRow:T,i=(E=t==null?void 0:t.actualColumn)==null?e.startColumn:E;x=e,S=r,C=i;let a=k(g,r,i);a&&(w=(0,n.serializeRange)(a))}else d.some(e=>{let{range:t,primary:r}=e;if(F(g,t)){var i,a;let e=(i=r==null?void 0:r.actualRow)==null?t.startRow:i,o=(a=r==null?void 0:r.actualColumn)==null?t.startColumn:a,s=k(g,e,o);if(!s)return x=t,S=e,C=o,!0;let c=`=${_}(${(0,n.serializeRange)(s)})`;y.push({range:t,primary:{row:e,column:o},formula:c})}else{let{startRow:e,startColumn:r,endRow:i,endColumn:a}=t;if(e===i){let o=ee(g,e,a,p.getColumnCount()-1),s=`=${_}(${(0,n.serializeRange)({startRow:e,endRow:i,startColumn:r,endColumn:o===a?a-1:a})})`;b.push({range:t,primary:{row:e,column:o},formula:s})}else{let o=-1;for(let e=r;e<=a;e++){let t=I(g,e,i,p.getRowCount()-1);o=Math.max(o,t)}let s=o===i?i-1:i;for(let i=r;i<=a;i++){let r=`=${_}(${(0,n.serializeRange)({startRow:e,endRow:s,startColumn:i,endColumn:i})})`;b.push({range:t,primary:{row:o,column:i},formula:r})}}}return!1});if(x){let n=(0,o.getCellAtRowCol)(S,C,p),r={unitId:m,subUnitId:h,selections:[{range:e.Rectangle.clone(x),primary:{startRow:n.startRow,startColumn:n.startColumn,endRow:n.endRow,endColumn:n.endColumn,actualRow:S,actualColumn:C,isMerged:n.isMerged,isMergedMainCell:n.startRow===S&&n.startColumn===C}}]};await v.executeCommand(o.SetSelectionsOperation.id,r);let i=u.getEditor(e.DOCS_NORMAL_EDITOR_UNIT_ID_KEY),s=u.getEditor(e.DOCS_FORMULA_BAR_EDITOR_UNIT_ID_KEY);v.syncExecuteCommand(t.SetCellEditVisibleOperation.id,{visible:!0,unitId:m,eventType:a.DeviceInputEventType.Dblclick});let c=`=${_}(${w}`;i==null||i.replaceText(c),s==null||s.replaceText(c,!1)}return y.length===0&&b.length===0?!1:v.executeCommand(s.InsertFunctionCommand.id,{list:y,listOfRangeHasNumber:b})}};function k(e,t,n){let r=A(e,t,n);if(r!==t)return{startRow:r,endRow:t-1,startColumn:n,endColumn:n};let i=j(e,t,n);return i===n?null:{startRow:t,endRow:t,startColumn:i,endColumn:n-1}}function A(e,t,n){let r=!1;if(t===0)return t;for(let i=t-1;i>=0;i--){let t=e.getValue(i,n);if(M(t)&&!r){if(i===0)return 0;r=!0}else if(r&&!M(t))return i+1;else if(r&&i===0)return 0}return t}function j(e,t,n){let r=!1;if(n===0)return n;for(let i=n-1;i>=0;i--){let n=e.getValue(t,i);if(M(n)&&!r){if(i===0)return 0;r=!0}else if(r&&!M(n))return i+1;else if(r&&i===0)return 0}return n}function M(t){if(t!=null&&t.p){let n=t==null?void 0:t.p.body;if(n==null)return!1;let r=n.dataStream;return(0,e.isRealNum)(r.substring(r.length-2,r.length)===e.DEFAULT_EMPTY_DOCUMENT_VALUE?r.substring(0,r.length-2):r)}return t&&(t.t===e.CellValueType.NUMBER||(0,e.getCellValueType)(t)===e.CellValueType.NUMBER)}function N(e){return e.startRow===e.endRow&&e.startColumn===e.endColumn}function P(e){return e.startRow!==e.endRow&&e.startColumn!==e.endColumn}function F(e,t){for(let n=t.startRow;n<=t.endRow;n++)for(let r=t.startColumn;r<=t.endColumn;r++)if(M(e.getValue(n,r)))return!1;return!0}function ee(e,t,n,r){for(let i=n;i<=r;i++)if(!e.getValue(t,i))return i;return r}function I(e,t,n,r){for(let i=n;i<=r;i++)if(!e.getValue(i,t))return i;return r}const te=`SHEET_FORMULA_UI_PLUGIN`,ne=`${te}_MORE_FUNCTIONS_COMPONENT`,L={id:`formula-ui.operation.more-functions`,type:e.CommandType.OPERATION,handler:async e=>(e.get(c.ISidebarService).open({header:{title:`formula.insert.tooltip`},children:{label:ne}}),!0)},re={id:`formula-ui.operation.change-ref-to-absolute`,type:e.CommandType.OPERATION,handler:async e=>!0},R={id:`formula-ui.operation.search-function`,type:e.CommandType.OPERATION,handler:async(e,t)=>(e.get(T).search(t),!0)};let z=class extends e.Disposable{constructor(e,t,n,r){super(),this._sheetInterceptorService=e,this._univerInstanceService=t,this._formulaDataModel=n,this._lexerTreeBuilder=r,this._initialize()}_initialize(){this.disposeWithMe(this._sheetInterceptorService.interceptCommand({getMutations:e=>e.id===o.ReorderRangeCommand.id?this._reorderFormula(e.params):{redos:[],undos:[]}}))}_reorderFormula(t){let n=[],r=[],{unitId:i,subUnitId:a,range:s,order:c}=t,l=this._univerInstanceService.getUniverSheetInstance(i),u=l==null?void 0:l.getSheetBySheetId(a);if(!u)return{redos:n,undos:r};let d=u.getCellMatrix(),f=new e.ObjectMatrix,p=new e.ObjectMatrix,m=!1;return e.Range.foreach(s,(t,n)=>{let r=t;c.hasOwnProperty(t)&&(r=c[t]);let o=d.getValue(r,n);if(o!=null&&o.f||o!=null&&o.si){m=!0;let s=this._formulaDataModel.getFormulaStringByCell(r,n,a,i),c=this._lexerTreeBuilder.moveFormulaRefOffset(s,0,t-r),l=e.Tools.deepClone(o);l.f=c,l.si=null,f.setValue(t,n,l)}else f.setValue(t,n,o);p.setValue(t,n,d.getValue(t,n))}),m?(n.push({id:o.SetRangeValuesMutation.id,params:{unitId:i,subUnitId:a,cellValue:f.getMatrix()}}),r.push({id:o.SetRangeValuesMutation.id,params:{unitId:i,subUnitId:a,cellValue:p.getMatrix()}}),{redos:n,undos:r}):{redos:n,undos:r}}};z=C([S(0,(0,e.Inject)(o.SheetInterceptorService)),S(1,(0,e.Inject)(e.IUniverInstanceService)),S(2,(0,e.Inject)(n.FormulaDataModel)),S(3,(0,e.Inject)(n.LexerTreeBuilder))],z);var B=`@univerjs/sheets-formula-ui`,ie=`0.18.0`;const ae=`sheets-formula-ui.base.config`;Symbol(ae);const V={},oe=`SHEET_FORMULA_ALERT`,se={[n.ErrorType.DIV_BY_ZERO]:`divByZero`,[n.ErrorType.NAME]:`name`,[n.ErrorType.VALUE]:`value`,[n.ErrorType.NUM]:`num`,[n.ErrorType.NA]:`na`,[n.ErrorType.CYCLE]:`cycle`,[n.ErrorType.REF]:`ref`,[n.ErrorType.SPILL]:`spill`,[n.ErrorType.CALC]:`calc`,[n.ErrorType.ERROR]:`error`,[n.ErrorType.CONNECT]:`connect`,[n.ErrorType.NULL]:`null`};let H=class extends e.Disposable{constructor(e,t,n,r,i,a){super(),this._context=e,this._hoverManagerService=t,this._cellAlertManagerService=n,this._localeService=r,this._formulaDataModel=i,this._zenZoneService=a,this._init()}_init(){this._initCellAlertPopup(),this._initZenService()}_initCellAlertPopup(){this.disposeWithMe(this._hoverManagerService.currentCell$.pipe((0,r.debounceTime)(100)).subscribe(r=>{if(r){var i;let o=this._context.unit.getActiveSheet();if(!o)return this._hideAlert();let s=o.getCell(r.location.row,r.location.col),c=(i=this._formulaDataModel.getArrayFormulaCellData())==null||(i=i[r.location.unitId])==null||(i=i[r.location.subUnitId])==null||(i=i[r.location.row])==null?void 0:i[r.location.col];if((0,e.isICellData)(s)){var a;let e=(0,n.extractFormulaError)(s,!!c);if(!e){this._hideAlert();return}let i=this._cellAlertManagerService.currentAlert.get(oe),o=i==null||(a=i.alert)==null?void 0:a.location;if(o&&o.row===r.location.row&&o.col===r.location.col&&o.subUnitId===r.location.subUnitId&&o.unitId===r.location.unitId){this._hideAlert();return}this._cellAlertManagerService.showAlert({type:t.CellAlertType.ERROR,title:this._localeService.t(`formula.error.title`),message:this._localeService.t(`formula.error.${se[e]}`),location:r.location,width:200,height:74,key:oe});return}}this._hideAlert()}))}_initZenService(){this.disposeWithMe(this._zenZoneService.visible$.subscribe(e=>{e&&this._hideAlert()}))}_hideAlert(){this._cellAlertManagerService.removeAlert(oe)}};H=C([S(1,(0,e.Inject)(t.HoverManagerService)),S(2,(0,e.Inject)(t.CellAlertManagerService)),S(3,(0,e.Inject)(e.LocaleService)),S(4,(0,e.Inject)(n.FormulaDataModel)),S(5,c.IZenZoneService)],H);let U=class extends e.Disposable{constructor(e,t,n,r,i){super(),this._univerInstanceService=e,this._lexerTreeBuilder=t,this._sheetClipboardService=n,this._injector=r,this._formulaDataModel=i,this._initialize()}_initialize(){this._registerClipboardHook()}_registerClipboardHook(){this.disposeWithMe(this._sheetClipboardService.addClipboardHook(this._copyFormulaOnlyHook())),this.disposeWithMe(this._sheetClipboardService.addClipboardHook(this._pasteFormulaHook())),this.disposeWithMe(this._sheetClipboardService.addClipboardHook(this._pasteWithFormulaHook()))}_copyFormulaOnlyHook(){let n=this,r=null;return{id:t.PREDEFINED_HOOK_NAME_COPY.SPECIAL_COPY_FORMULA_ONLY,priority:10,onBeforeCopy(e,t){r=n._getWorksheet(e,t)},onCopyCellContent(t,i){if(!r)return``;let a=r.getCellRaw(t,i);return a?(0,e.isFormulaString)(a.f)?a.f:(0,e.isFormulaId)(a.si)&&n._formulaDataModel.getFormulaStringByCell(t,i,r.getSheetId(),r.getUnitId())||``:``},onAfterCopy(){r=null},getFilteredOutRows(e,t,r){let i=n._getWorksheet(e,t);if(!i)return[];let{startRow:a,endRow:o}=r,s=[];for(let e=a;e<=o;e++)i.getRowFiltered(e)&&s.push(e);return s},handleMatrixOnCell(t,i,a,o,s,c,l){let u=s.getValue(t,i);if(r&&u&&((0,e.isFormulaString)(u.f)||(0,e.isFormulaId)(u.si))){let s=(0,e.isFormulaString)(u.f)?u.f:n._formulaDataModel.getFormulaStringByCell(t,i,r.getSheetId(),r.getUnitId());c.setValue(a,o,{...(0,e.getEmptyCell)(),f:s}),l.setValue(a,o,{...(0,e.getEmptyCell)(),f:s,displayV:s})}else s.setValue(t,i,(0,e.getEmptyCell)()),c.setValue(a,o,(0,e.getEmptyCell)()),l.setValue(a,o,(0,e.getEmptyCell)())}}}_pasteFormulaHook(){return{id:t.PREDEFINED_HOOK_NAME_PASTE.SPECIAL_PASTE_FORMULA,priority:10,specialPasteInfo:{label:`specialPaste.formula`},onPasteCells:(e,t,n,r)=>this._onPasteCells(e,t,n,r,!0)}}_pasteWithFormulaHook(){return{id:`default-paste-formula`,priority:10,onPasteCells:(e,t,n,r)=>this._onPasteCells(e,t,n,r,!1)}}_getWorkbook(t){return t?this._univerInstanceService.getUnit(t,e.UniverInstanceType.UNIVER_SHEET):this._univerInstanceService.getCurrentUnitOfType(e.UniverInstanceType.UNIVER_SHEET)}_getWorksheet(e,t){let n=this._getWorkbook(e);return t?n==null?void 0:n.getSheetBySheetId(t):n==null?void 0:n.getActiveSheet()}_onPasteCells(e,n,r,i,a){var o;if([t.PREDEFINED_HOOK_NAME_PASTE.SPECIAL_PASTE_FORMAT,t.PREDEFINED_HOOK_NAME_PASTE.SPECIAL_PASTE_COL_WIDTH].includes(i.pasteType))return{undos:[],redos:[]};let s=this._getWorkbook(),c=n.unitId||(s==null?void 0:s.getUnitId()),l=n.subUnitId||(s==null||(o=s.getActiveSheet())==null?void 0:o.getSheetId());if(!c||!l)return{undos:[],redos:[]};let u=n.range,d=r,f={copyType:i.copyType||t.COPY_TYPE.COPY,copyRange:e==null?void 0:e.range,pasteType:i.pasteType};return this._injector.invoke(t=>W(c,l,u,d,t,f,this._lexerTreeBuilder,this._formulaDataModel,a,e))}};U=C([S(0,e.IUniverInstanceService),S(1,(0,e.Inject)(n.LexerTreeBuilder)),S(2,t.ISheetClipboardService),S(3,(0,e.Inject)(e.Injector)),S(4,(0,e.Inject)(n.FormulaDataModel))],U);function W(e,t,n,r,i,a,s,c,l=!1,u){let d=[],f=[],p=ce(e,t,n,r,a,s,c,u);if(!p.hasValue())return{undos:[],redos:[]};let m={unitId:e,subUnitId:t,cellValue:p.getData()};d.push({id:o.SetRangeValuesMutation.id,params:m});let h=(0,o.SetRangeValuesUndoMutationFactory)(i,m);return f.push({id:o.SetRangeValuesMutation.id,params:h}),{undos:f,redos:d}}function ce(e,n,r,i,a,o,s,c){return c?a.pasteType===t.PREDEFINED_HOOK_NAME_PASTE.SPECIAL_PASTE_VALUE?ue(e,n,r,i,s,c):a.pasteType===t.PREDEFINED_HOOK_NAME_PASTE.SPECIAL_PASTE_FORMULA?G(e,n,r,i,o,s,c):de(e,n,r,i,a.copyType,o,s,c):le(e,n,r,i,s)}function le(t,n,r,i,a){let o=new e.ObjectMatrix,s=a.getSheetFormulaData(t,n);return i.forValue((t,n,i)=>{var a;let c=r.rows[t],l=r.cols[n],u={};(0,e.isFormulaString)(i.v)?(u.v=null,u.f=`${i.v}`,u.si=null,u.p=null,o.setValue(c,l,u)):!(s==null||(a=s[c])==null)&&a[l]&&(u.v=i.v,u.f=null,u.si=null,u.p=null,o.setValue(c,l,u))}),o}function ue(t,n,r,i,a,o){var s;let c=new e.ObjectMatrix,l=(s=a.getArrayFormulaCellData())==null||(s=s[o.unitId])==null?void 0:s[o.subUnitId],u=a.getSheetFormulaData(t,n);return i.forValue((t,n,i)=>{var a,s;let d=o.range.rows[t%o.range.rows.length],f=o.range.cols[n%o.range.cols.length],p=r.rows[t],m=r.cols[n],h={};if((0,e.isFormulaString)(i.f)||(0,e.isFormulaId)(i.si))h.v=i.v,h.f=null,h.si=null,h.p=null,c.setValue(p,m,h);else if(!(l==null||(a=l[d])==null)&&a[f])h.v=l[d][f].v,h.f=null,h.si=null,h.p=null,c.setValue(p,m,h);else if(!(u==null||(s=u[p])==null)&&s[m]){if(h.v=i.v,h.f=null,h.si=null,h.p=null,i.p){let e=fe(i);e&&(h.v=e)}c.setValue(p,m,h)}}),c}function G(t,n,r,i,a,o,s){let c=new e.ObjectMatrix,l=new Map;return i.forValue((i,u,d)=>{let f=r.rows[i],p=r.cols[u],m={};if((0,e.isFormulaId)(d.si)){if(s.unitId!==t||s.subUnitId!==n){let e=o.getFormulaStringByCell(s.range.rows[i%s.range.rows.length],s.range.cols[u%s.range.cols.length],s.subUnitId,s.unitId),t=r.cols[u]-s.range.cols[u%s.range.cols.length],n=r.rows[i]-s.range.rows[i%s.range.rows.length],c=a.moveFormulaRefOffset(e||``,t,n);m.si=null,m.f=c}else m.si=d.si,m.f=null;m.v=null,m.p=null,c.setValue(f,p,m)}else if((0,e.isFormulaString)(d.f)){let t=`${i%s.range.rows.length}_${u%s.range.cols.length}`,n=l.get(t);if(n)m.si=n,m.f=null;else{n=(0,e.generateRandomId)(6),l.set(t,n);let o=r.cols[u]-s.range.cols[u%s.range.cols.length],c=r.rows[i]-s.range.rows[i%s.range.rows.length],f=a.moveFormulaRefOffset(d.f||``,o,c);m.si=n,m.f=f}m.v=null,m.p=null,c.setValue(f,p,m)}else{if(m.v=d.v,m.f=null,m.si=null,m.p=null,d.p){let e=fe(d);e&&(m.v=e)}c.setValue(f,p,m)}}),c}function de(n,r,i,a,o,s,c,l){let u=new e.ObjectMatrix,d=new Map,f=c.getSheetFormulaData(n,r),p=[];return o===t.COPY_TYPE.CUT?a.forValue((t,n,r)=>{let a=i.rows[t],o=i.cols[n],s={};(0,e.isFormulaId)(r.si)?((0,e.isFormulaString)(r.f)?(p.push(r.si),s.f=r.f,s.si=r.si):p.includes(r.si)?(s.f=null,s.si=r.si):(s.f=c.getFormulaStringByCell(l.range.rows[t%l.range.rows.length],l.range.cols[n%l.range.cols.length],l.subUnitId,l.unitId),s.si=null),s.v=null,s.p=null,u.setValue(a,o,s)):(0,e.isFormulaString)(r.f)&&(s.f=r.f,s.si=null,s.v=null,s.p=null,u.setValue(a,o,s))}):a.forValue((t,a,o)=>{var p;let m=i.rows[t],h=i.cols[a],g={};if((0,e.isFormulaId)(o.si)){if(l.unitId!==n||l.subUnitId!==r){let e=c.getFormulaStringByCell(l.range.rows[t%l.range.rows.length],l.range.cols[a%l.range.cols.length],l.subUnitId,l.unitId),n=i.cols[a]-l.range.cols[a%l.range.cols.length],r=i.rows[t]-l.range.rows[t%l.range.rows.length],o=s.moveFormulaRefOffset(e||``,n,r);g.si=null,g.f=o}else g.si=o.si,g.f=null;g.v=null,g.p=null,u.setValue(m,h,g)}else if((0,e.isFormulaString)(o.f)){let n=`${t%l.range.rows.length}_${a%l.range.cols.length}`,r=d.get(n);if(r)g.si=r,g.f=null;else{r=(0,e.generateRandomId)(6),d.set(n,r);let c=i.cols[a]-l.range.cols[a%l.range.cols.length],u=i.rows[t]-l.range.rows[t%l.range.rows.length],f=s.moveFormulaRefOffset(o.f||``,c,u);g.si=r,g.f=f}g.v=null,g.p=null,u.setValue(m,h,g)}else !(f==null||(p=f[m])==null)&&p[h]&&(g.v=o.v,g.f=null,g.si=null,g.p=o.p,u.setValue(m,h,g))}),p.length>0&&new e.ObjectMatrix(f).forValue((e,t,n)=>{if(!(l.range.rows.includes(e)&&l.range.cols.includes(t))&&!(i.rows.includes(e)&&i.cols.includes(t))&&p.includes(n==null?void 0:n.si)){let n=c.getFormulaStringByCell(e,t,l.subUnitId,l.unitId);u.setValue(e,t,{f:n,si:null,v:null,p:null})}}),u}function fe(t){if(t!=null&&t.p){let n=t==null?void 0:t.p.body;if(n==null)return;let r=n.dataStream;return r.substring(r.length-2,r.length)===e.DEFAULT_EMPTY_DOCUMENT_VALUE?r.substring(0,r.length-2):r}}let pe=class extends e.Disposable{constructor(e,t,n,r,i,a,o,s){super(),this._context=e,this._sheetInterceptorService=t,this._formulaDataModel=n,this._themeService=r,this._renderManagerService=i,this._sheetSkeletonManagerService=a,this._commandService=o,this._logService=s,x(this,`_previousShape`,void 0),x(this,`_skeleton`,void 0),this._initSkeletonChangeListener(),this._initInterceptorEditorStart(),this._commandExecutedListener()}_initSkeletonChangeListener(){this.disposeWithMe(this._sheetSkeletonManagerService.currentSkeleton$.subscribe(e=>{if(e==null)this._logService.debug(`[FormulaEditorShowController]: should not receive currentSkeleton$ as null!`);else{var t;let{skeleton:n}=e,r=(t=this._skeleton)==null||(t=t.worksheet)==null?void 0:t.getSheetId();if(this._changeRuntime(n),r!==n.worksheet.getSheetId())this._removeArrayFormulaRangeShape();else{let{unitId:t,sheetId:n}=e;this._updateArrayFormulaRangeShape(t,n)}}}))}_changeRuntime(e){this._skeleton=e}_initInterceptorEditorStart(){this.disposeWithMe((0,e.toDisposable)(this._sheetInterceptorService.writeCellInterceptor.intercept(o.BEFORE_CELL_EDIT,{handler:(e,t,n)=>{var r,i;let{row:a,col:o,unitId:s,subUnitId:c,worksheet:l}=t,u=this._formulaDataModel.getArrayFormulaRange(),d=this._formulaDataModel.getArrayFormulaCellData();if(this._removeArrayFormulaRangeShape(),e==null)return n(e);let f=null,p=this._formulaDataModel.getFormulaStringByCell(a,o,c,s);if(p!==null&&(f={f:p}),e.v!=null&&e.v!==``&&((r=d[s])==null||(r=r[c])==null||(r=r[a])==null?void 0:r[o])==null)return f?{...e,...f}:n(e);let m=u==null||(i=u[s])==null?void 0:i[c];return m!=null&&(f=this._displayArrayFormulaRangeShape(m,a,o,s,c,l,f)),f?{...e,...f}:n(e)}})))}_commandExecutedListener(){this.disposeWithMe(this._commandService.onCommandExecuted((e,t)=>{(e.id===n.SetFormulaCalculationResultMutation.id||e.id===n.SetArrayFormulaDataMutation.id&&t&&t.remove)&&this._removeArrayFormulaRangeShape()})),this.disposeWithMe(this._commandService.beforeCommandExecuted(e=>{o.SetWorksheetRowAutoHeightMutation.id===e.id&&requestIdleCallback(()=>{let{unitId:t,subUnitId:n,rowsAutoHeightInfo:r}=e.params;this._refreshArrayFormulaRangeShapeByRow(t,n,r)})}))}_displayArrayFormulaRangeShape(t,r,i,a,o,s,c){return new e.ObjectMatrix(t).forValue((e,t,o)=>{if(o==null)return!0;let{startRow:l,startColumn:u,endRow:d,endColumn:f}=o;if(e===r&&t===i)return this._createArrayFormulaRangeShape(o,a),!1;if(r>=l&&r<=d&&i>=u&&i<=f){let e=s.getCell(l,u);return(e==null?void 0:e.v)===n.ErrorType.SPILL||(e==null?void 0:e.f)==null?void 0:(c==null&&(c={f:e.f,isInArrayFormulaRange:!0}),this._createArrayFormulaRangeShape(o,a),!1)}}),c}_createArrayFormulaRangeShape(n,r){let i=this._renderManagerService.getRenderById(r),a=this._sheetSkeletonManagerService.getCurrentSkeleton();if(!i||!a)return;let{scene:o}=i;if(!o)return;let s=(0,t.attachSelectionWithCoord)({range:n,primary:null,style:{strokeWidth:1,stroke:this._themeService.getColorFromTheme(`primary.600`),fill:new e.ColorKit(this._themeService.getColorFromTheme(`white`)).setAlpha(0).toString(),widgets:{}}},a),{rowHeaderWidth:c,columnHeaderHeight:l}=a,u=new t.SelectionControl(o,t.SELECTION_SHAPE_DEPTH.FORMULA_EDITOR_SHOW,this._themeService,{highlightHeader:!1,rowHeaderWidth:c,columnHeaderHeight:l});u.updateRangeBySelectionWithCoord(s),u.setEvent(!1),this._previousShape=u}_removeArrayFormulaRangeShape(){this._previousShape!=null&&(this._previousShape.dispose(),this._previousShape=null)}_refreshArrayFormulaRangeShape(e,t){if(this._previousShape){let{startRow:t,endRow:n,startColumn:r,endColumn:i}=this._previousShape.getRange(),a={startRow:t,endRow:n,startColumn:r,endColumn:i};this._removeArrayFormulaRangeShape(),this._createArrayFormulaRangeShape(a,e)}}_checkCurrentSheet(e,t){let n=this._sheetSkeletonManagerService.getCurrentSkeleton();if(!n)return!1;let r=n.worksheet;return r?r.unitId===e&&r.getSheetId()===t:!1}_updateArrayFormulaRangeShape(e,t){this._checkCurrentSheet(e,t)&&this._previousShape&&this._refreshArrayFormulaRangeShape(e)}_refreshArrayFormulaRangeShapeByRow(e,t,n){if(!this._checkCurrentSheet(e,t)||!this._previousShape)return;let{startRow:r,endRow:i,startColumn:a,endColumn:o}=this._previousShape.getRange();for(let t=0;t<n.length;t++){let{row:s}=n[t];if(r>=s){let t={startRow:r,endRow:i,startColumn:a,endColumn:o};this._refreshArrayFormulaRangeShape(e,t);break}}}};pe=C([S(1,(0,e.Inject)(o.SheetInterceptorService)),S(2,(0,e.Inject)(n.FormulaDataModel)),S(3,(0,e.Inject)(e.ThemeService)),S(4,a.IRenderManagerService),S(5,(0,e.Inject)(t.SheetSkeletonManagerService)),S(6,e.ICommandService),S(7,e.ILogService)],pe);const me={tl:{size:6,color:`#409f11`}};let he=class extends e.RxDisposable{constructor(t,r){super(),this._sheetInterceptorService=t,this._formulaDataModel=r,this.disposeWithMe(this._sheetInterceptorService.intercept(o.INTERCEPTOR_POINT.CELL_CONTENT,{effect:e.InterceptorEffectEnum.Style,handler:(e,t,r)=>{var i;let a=(i=this._formulaDataModel.getArrayFormulaCellData())==null||(i=i[t.unitId])==null||(i=i[t.subUnitId])==null||(i=i[t.row])==null?void 0:i[t.col];return!(0,n.extractFormulaError)(e,!!a)||!e?r(e):(e===t.rawData&&(e={...t.rawData}),e.markers={...e==null?void 0:e.markers,...me},r(e))},priority:10}))}};he=C([S(0,(0,e.Inject)(o.SheetInterceptorService)),S(1,(0,e.Inject)(n.FormulaDataModel))],he);function ge(t){let n=[`SUMIF`,`SUM`,`AVERAGE`,`IF`,`COUNT`,`SIN`,`MAX`],r=n.map(e=>({label:{name:e,selectable:!1},value:e}));try{let e=t.get(s.IDescriptionService),i=n.filter(t=>!!e.getFunctionInfo(t));i.length>0&&(r=i.map(e=>({label:{name:e,selectable:!1},value:e})))}catch{}return{id:`${O.id}.common`,commandId:O.id,title:`formula.insert.common`,tooltip:`formula.insert.tooltip`,icon:`FunctionIcon`,type:c.MenuItemType.SELECTOR,selections:r,hidden$:(0,c.getMenuHiddenObservable)(t,e.UniverInstanceType.UNIVER_SHEET)}}function K(t,n,r){return function(i){let a=[];try{a=i.get(s.IDescriptionService).getSearchListByType(t).map(({name:e})=>({label:{name:e,selectable:!1},value:e}))}catch{a=[]}return{id:`${O.id}.${n}`,commandId:O.id,title:`formula.functionType.${n}`,tooltip:`formula.insert.tooltip`,icon:r,type:c.MenuItemType.SELECTOR,selections:a,hidden$:(0,c.getMenuHiddenObservable)(i,e.UniverInstanceType.UNIVER_SHEET)}}}const _e=K(n.FunctionType.Financial,`financial`),ve=K(n.FunctionType.Logical,`logical`),ye=K(n.FunctionType.Text,`text`),be=K(n.FunctionType.Date,`date`),xe=K(n.FunctionType.Lookup,`lookup`),q=K(n.FunctionType.Math,`math`),J=K(n.FunctionType.Statistical,`statistical`),Se=K(n.FunctionType.Engineering,`engineering`),Ce=K(n.FunctionType.Information,`information`),we=K(n.FunctionType.Database,`database`);function Y(n){return{id:L.id,title:`formula.moreFunctions.allFunctions`,tooltip:`formula.insert.tooltip`,type:c.MenuItemType.BUTTON,hidden$:(0,c.getMenuHiddenObservable)(n,e.UniverInstanceType.UNIVER_SHEET),disabled$:(0,t.getCurrentRangeDisable$)(n,{workbookTypes:[o.WorkbookEditablePermission],worksheetTypes:[o.WorksheetEditPermission,o.WorksheetSetCellValuePermission],rangeTypes:[o.RangeProtectionPermissionEditPoint]})}}function Te(n){return{id:h.id,type:c.MenuItemType.BUTTON,title:`formula.operation.copyFormulaOnly`,disabled$:(0,t.getCurrentRangeDisable$)(n,{workbookTypes:[o.WorkbookCopyPermission],worksheetTypes:[o.WorksheetCopyPermission],rangeTypes:[o.RangeProtectionPermissionViewPoint]}),hidden$:(0,c.getMenuHiddenObservable)(n,e.UniverInstanceType.UNIVER_SHEET)}}function Ee(n){return{id:g.id,type:c.MenuItemType.BUTTON,title:`formula.operation.pasteFormula`,disabled$:(0,t.menuClipboardDisabledObservable)(n).pipe((0,r.combineLatestWith)((0,t.getCurrentRangeDisable$)(n,{workbookTypes:[o.WorkbookEditablePermission],rangeTypes:[o.RangeProtectionPermissionEditPoint],worksheetTypes:[o.WorksheetSetCellValuePermission,o.WorksheetEditPermission]})),(0,r.map)(([e,t])=>e||t)),hidden$:(0,c.getMenuHiddenObservable)(n,e.UniverInstanceType.UNIVER_SHEET)}}const De={[c.RibbonFormulasGroup.BASIC]:{[`${O.id}.common`]:{order:0,menuItemFactory:ge,[L.id]:{order:0,menuItemFactory:Y}},[`${O.id}.financial`]:{order:1,menuItemFactory:_e,[L.id]:{order:0,menuItemFactory:Y}},[`${O.id}.logical`]:{order:2,menuItemFactory:ve,[L.id]:{order:0,menuItemFactory:Y}},[`${O.id}.text`]:{order:3,menuItemFactory:ye,[L.id]:{order:0,menuItemFactory:Y}},[`${O.id}.date`]:{order:4,menuItemFactory:be,[L.id]:{order:0,menuItemFactory:Y}},[`${O.id}.lookup`]:{order:5,menuItemFactory:xe,[L.id]:{order:0,menuItemFactory:Y}},[`${O.id}.math`]:{order:6,menuItemFactory:q,[L.id]:{order:0,menuItemFactory:Y}},[`${O.id}.statistical`]:{order:7,menuItemFactory:J,[L.id]:{order:0,menuItemFactory:Y}},[`${O.id}.engineering`]:{order:8,menuItemFactory:Se,[L.id]:{order:0,menuItemFactory:Y}},[`${O.id}.information`]:{order:9,menuItemFactory:Ce,[L.id]:{order:0,menuItemFactory:Y}},[`${O.id}.database`]:{order:10,menuItemFactory:we,[L.id]:{order:0,menuItemFactory:Y}}},[t.COPY_SPECIAL_MENU_ID]:{[h.id]:{order:0,menuItemFactory:Te}},[t.PASTE_SPECIAL_MENU_ID]:{[g.id]:{order:4,menuItemFactory:Ee}}};function Oe(){let t=(0,c.useDependency)(s.TriggerCalculationController),r=(0,c.useDependency)(e.ICommandService);return(0,u.jsx)(c.ProgressBar,{progress:(0,c.useObservable)(t.progress$),onTerminate:(0,l.useCallback)(()=>{r.executeCommand(n.SetFormulaCalculationStopMutation.id)},[r]),onClearProgress:(0,l.useCallback)(()=>{t.clearProgress()},[t])})}function ke(e,t){return Object.keys(n.FunctionType).filter(e=>isNaN(Number(e))&&e!==`DefinedName`&&e!==`Table`&&(t||e!==`User`)).map(t=>({label:e.t(`formula.functionType.${t.toLocaleLowerCase()}`),value:`${n.FunctionType[t]}`}))}function Ae(e){if(!e.require&&!e.repeat)return`[${e.name}]`;if(e.require&&!e.repeat)return e.name;if(!e.require&&e.repeat)return`[${e.name},...]`;if(e.require&&e.repeat)return`${e.name},...`}function je(e){let{prefix:t,value:n}=e;return(0,u.jsxs)(`div`,{children:[(0,u.jsxs)(`span`,{children:[t,`(`]}),n&&n.map((e,t)=>(0,u.jsxs)(`span`,{children:[(0,u.jsx)(`span`,{children:Ae(e)}),t===n.length-1?``:`,`]},t)),`)`]})}function Me(e){let{className:t,value:n,title:r}=e;return(0,u.jsxs)(`div`,{className:`univer-mb-2 univer-text-xs`,children:[(0,u.jsx)(`div`,{className:(0,d.clsx)(`
|
|
2
|
-
univer-mb-2 univer-font-medium univer-text-gray-500
|
|
3
|
-
dark:!univer-text-gray-300
|
|
4
|
-
`,t),children:r}),(0,u.jsx)(`div`,{className:`
|
|
5
|
-
univer-break-all univer-text-gray-900
|
|
6
|
-
dark:!univer-text-white
|
|
7
|
-
`,children:n})]})}function Ne(e){let{functionInfo:t,onChange:n}=e;if(!t)return null;let[r,i]=(0,l.useState)([]),[a,o]=(0,l.useState)(t.functionParameter),[s,c]=(0,l.useState)(-1);return(0,u.jsxs)(`div`,{children:[(0,u.jsx)(`div`,{className:(0,d.clsx)(`univer-h-[364px] univer-overflow-y-auto`,d.scrollbarClassName),children:a.map((e,t)=>(0,u.jsxs)(`div`,{children:[(0,u.jsx)(`div`,{className:`univer-text-sm`,children:e.name}),(0,u.jsx)(`div`,{className:`univer-mb-2 univer-mt-1`})]},t))}),(0,u.jsx)(`div`,{className:(0,d.clsx)(`univer-flex-1 univer-p-3`,d.borderLeftClassName),children:(0,u.jsx)(Me,{title:s===-1?(0,u.jsx)(je,{prefix:t.functionName,value:a}):a[s].name,value:s===-1?t.description:a[s].detail})})]})}function Pe(t){var n;let r=(n=(0,c.useDependency)(e.IConfigService).getConfig(s.PLUGIN_CONFIG_KEY_BASE))==null?void 0:n.function,{onChange:i}=t,[a,o]=(0,l.useState)(``),[p,m]=(0,l.useState)([]),[h,g]=(0,l.useState)(0),[_,v]=(0,l.useState)(`-1`),[y,b]=(0,l.useState)(0),[x,S]=(0,l.useState)(null),C=(0,c.useDependency)(s.IDescriptionService),w=(0,c.useDependency)(e.LocaleService),T=(0,c.useObservable)((0,c.useDependency)(c.ISidebarService).sidebarOptions$),E=ke(w,!!r).filter(e=>C.getSearchListByType(Number(e.value)).length>0);E.unshift({label:w.t(`formula.moreFunctions.allFunctions`),value:`-1`});let D=w.t(`formula.prompt.required`),O=w.t(`formula.prompt.optional`);(0,l.useEffect)(()=>{j(`-1`)},[]),(0,l.useEffect)(()=>{A(0)},[p]),(0,l.useEffect)(()=>{T!=null&&T.visible&&(o(``),m([]),g(0),v(`-1`),b(0),S(null),j(`-1`))},[T]);let k=e=>{if(a.trim()===``)return e;let t=RegExp(`(${a.toLocaleUpperCase()})`);return e.split(t).filter(Boolean).map((e,n)=>e.match(t)?(0,u.jsx)(`span`,{className:`univer-text-red-500`,children:e},n):e)},A=e=>{if(p.length===0){S(null),i(null);return}b(e);let t=C.getFunctionInfo(p[e].name);if(!t){S(null),i(null);return}S(t),i(t)};function j(e){v(e),m(C.getSearchListByType(+e))}function M(e){o(e),m(C.getSearchListByName(e))}function N(e){if(e.stopPropagation(),e.key===`ArrowDown`){let e=h+1;g(e===p.length?0:e)}else if(e.key===`ArrowUp`){let e=h-1;g(e===-1?p.length-1:e)}else e.key===`Enter`&&A(h)}let P=e=>{g(e)},F=()=>{g(-1)};return(0,u.jsxs)(`div`,{children:[(0,u.jsxs)(`div`,{className:`univer-flex univer-items-center univer-justify-between univer-gap-2`,children:[(0,u.jsx)(d.Select,{value:_,options:E,onChange:j}),(0,u.jsx)(d.Input,{placeholder:w.t(`formula.moreFunctions.searchFunctionPlaceholder`),onKeyDown:N,value:a,onChange:M,size:`small`,allowClear:!0})]}),p.length>0&&(0,u.jsx)(`ul`,{className:(0,d.clsx)(`
|
|
8
|
-
univer-mb-0 univer-mt-2 univer-box-border univer-max-h-72 univer-w-full univer-select-none
|
|
9
|
-
univer-list-none univer-overflow-y-auto univer-rounded univer-p-3 univer-outline-none
|
|
10
|
-
`,d.borderClassName,d.scrollbarClassName),onKeyDown:N,tabIndex:-1,children:p.map(({name:e},t)=>(0,u.jsxs)(`li`,{className:(0,d.clsx)(`
|
|
11
|
-
univer-relative univer-box-border univer-cursor-pointer univer-rounded univer-px-7
|
|
12
|
-
univer-py-1 univer-text-sm univer-text-gray-900 univer-transition-colors
|
|
13
|
-
dark:!univer-text-white
|
|
14
|
-
`,{"univer-bg-gray-200 dark:!univer-bg-gray-600":h===t}),onMouseEnter:()=>P(t),onMouseLeave:F,onClick:()=>A(t),children:[y===t&&(0,u.jsx)(f.CheckMarkIcon,{className:`
|
|
15
|
-
univer-absolute univer-left-1.5 univer-top-1/2 univer-inline-flex
|
|
16
|
-
-univer-translate-y-1/2 univer-text-base univer-text-primary-600
|
|
17
|
-
`}),(0,u.jsx)(`span`,{className:`univer-block`,children:k(e)})]},t))}),x&&(0,u.jsxs)(`div`,{className:(0,d.clsx)(`univer-mx-0 univer-my-2 univer-overflow-y-auto`,d.scrollbarClassName),children:[(0,u.jsx)(Me,{title:x.functionName,value:x.description}),(0,u.jsx)(Me,{title:w.t(`formula.moreFunctions.syntax`),value:(0,u.jsx)(je,{prefix:x.functionName,value:x.functionParameter})}),(0,u.jsx)(Me,{title:w.t(`formula.prompt.helpExample`),value:`${x.functionName}(${x.functionParameter.map(e=>e.example).join(`,`)})`}),x.functionParameter&&x.functionParameter.map(e=>(0,u.jsx)(Me,{title:e.name,value:`${e.require?D:O} ${e.detail}`},e.name))]})]})}function Fe(){let n=(0,t.useActiveWorkbook)(),[r,s]=(0,l.useState)(!0),[f,p]=(0,l.useState)(!1),[m,h]=(0,l.useState)(null);(0,c.useDependency)(t.IEditorBridgeService);let g=(0,c.useDependency)(e.LocaleService),_=(0,c.useDependency)(i.IEditorService),v=(0,c.useDependency)(e.IUniverInstanceService),y=(0,c.useDependency)(e.ICommandService);function b(){s(!r),p(!f)}function x(){let n=(0,o.getSheetCommandTarget)(v);if(!n)return;y.executeCommand(t.SetCellEditVisibleOperation.id,{visible:!0,unitId:n.unitId,eventType:a.DeviceInputEventType.Dblclick});let r=_.getEditor(e.DOCS_NORMAL_EDITOR_UNIT_ID_KEY),i=_.getEditor(e.DOCS_FORMULA_BAR_EDITOR_UNIT_ID_KEY),s=`=${m==null?void 0:m.functionName}(`;r==null||r.replaceText(s),i==null||i.replaceText(s,!1)}return(0,u.jsxs)(`div`,{"data-u-comp":`sheets-formula-functions-panel`,className:`univer-box-border univer-flex univer-h-full univer-flex-col univer-justify-between univer-py-2`,children:[r&&(0,u.jsx)(Pe,{onChange:h}),f&&(0,u.jsx)(Ne,{functionInfo:m,onChange:()=>{}}),(0,u.jsxs)(`div`,{className:`univer-flex univer-justify-end`,children:[f&&(0,u.jsx)(d.Button,{variant:`primary`,onClick:b,className:`univer-mb-5 univer-ml-4 univer-mr-0 univer-mt-0`,children:g.t(`formula.moreFunctions.next`)}),f&&(0,u.jsx)(d.Button,{onClick:b,className:`univer-mb-5 univer-ml-4 univer-mr-0 univer-mt-0`,children:g.t(`formula.moreFunctions.prev`)}),r&&!!n&&(0,u.jsx)(d.Button,{disabled:!m,variant:`primary`,onClick:x,className:`univer-mb-5 univer-ml-4 univer-mr-0 univer-mt-0`,children:g.t(`formula.moreFunctions.confirm`)})]})]})}function Ie(t){return t.getContextValue(e.FOCUSING_DOC)&&t.getContextValue(e.FOCUSING_UNIVER_EDITOR)}const Le=[c.KeyCode.ARROW_DOWN,c.KeyCode.ARROW_UP,c.KeyCode.ARROW_LEFT,c.KeyCode.ARROW_RIGHT],Re=[...Le,c.KeyCode.ENTER,c.KeyCode.TAB,c.KeyCode.ESC];function ze(){let e=[];for(let n of Re)e.push({id:_.id,binding:n,preconditions:e=>(0,t.whenFormulaEditorActivated)(e),staticParameters:{eventType:a.DeviceInputEventType.Keyboard,keycode:n}});return e}function Be(){let e=[];for(let n of Le)e.push({id:_.id,binding:n|c.MetaKeys.SHIFT,preconditions:e=>(0,t.whenFormulaEditorActivated)(e),staticParameters:{eventType:a.DeviceInputEventType.Keyboard,keycode:n,metaKey:c.MetaKeys.SHIFT}});return e}function Ve(){let e=[];for(let n of Le)e.push({id:_.id,binding:n|c.MetaKeys.CTRL_COMMAND,preconditions:e=>(0,t.whenFormulaEditorActivated)(e),staticParameters:{eventType:a.DeviceInputEventType.Keyboard,keycode:n,metaKey:c.MetaKeys.CTRL_COMMAND}});return e}function He(){let e=[];for(let n of Le)e.push({id:_.id,binding:n|c.MetaKeys.SHIFT|c.MetaKeys.CTRL_COMMAND,preconditions:e=>(0,t.whenFormulaEditorActivated)(e),staticParameters:{eventType:a.DeviceInputEventType.Keyboard,keycode:n,metaKey:`meta_key_ctrl_And_Shift`}});return e}const Ue={id:re.id,binding:c.KeyCode.F4,preconditions:e=>(0,t.whenFormulaEditorActivated)(e)};function We(){let e=[];for(let t of[c.KeyCode.ENTER,c.KeyCode.TAB,c.KeyCode.ARROW_DOWN,c.KeyCode.ARROW_UP])e.push({id:_.id,binding:t,preconditions:e=>Ie(e),staticParameters:{eventType:a.DeviceInputEventType.Keyboard,keycode:t,isSingleEditor:!0}});return e}const Ge={id:s.QuickSumCommand.id,binding:c.MetaKeys.ALT|c.KeyCode.EQUAL,preconditions:t.whenSheetEditorFocused,mac:c.MetaKeys.CTRL_COMMAND|c.MetaKeys.ALT|c.KeyCode.EQUAL,description:`shortcut.sheets-formula-ui.quick-sum`,group:`4_sheet-edit`};let Ke=class extends e.Disposable{constructor(e,t,n,r,i,a,o){super(),this._injector=e,this._menuManagerService=t,this._commandService=n,this._shortcutService=r,this._uiPartsService=i,this._renderManagerService=a,this._componentManager=o,this._initialize()}_initialize(){this._registerCommands(),this._registerMenus(),this._registerShortcuts(),this._registerComponents(),this._registerRenderModules()}_registerMenus(){this._menuManagerService.mergeMenu(De)}_registerCommands(){[h,g,O,L,R,D,_,re].forEach(e=>this.disposeWithMe(this._commandService.registerCommand(e)))}_registerShortcuts(){[...ze(),...Be(),...Ve(),...He(),...We(),Ge,Ue].forEach(e=>{this.disposeWithMe(this._shortcutService.registerShortcut(e))})}_registerComponents(){this.disposeWithMe(this._uiPartsService.registerComponent(t.SheetsUIPart.FORMULA_AUX,()=>(0,c.connectInjector)(Oe,this._injector))),this._componentManager.register(ne,Fe)}_registerRenderModules(){this.disposeWithMe(this._renderManagerService.registerRenderModule(e.UniverInstanceType.UNIVER_SHEET,[pe]))}};Ke=C([S(0,(0,e.Inject)(e.Injector)),S(1,c.IMenuManagerService),S(2,e.ICommandService),S(3,c.IShortcutService),S(4,c.IUIPartsService),S(5,a.IRenderManagerService),S(6,(0,e.Inject)(c.ComponentManager))],Ke);let qe=class extends e.Disposable{constructor(n,r,i){super(),this._imageFormulaCellInterceptorController=n,this._renderManagerService=r,this._univerInstanceService=i,this._imageFormulaCellInterceptorController.registerRefreshRenderFunction(()=>{let n=this._univerInstanceService.getCurrentUnitOfType(e.UniverInstanceType.UNIVER_SHEET);if(!n)return;let r=this._renderManagerService.getRenderById(n.getUnitId());if(!r)return;r.with(t.SheetSkeletonManagerService).reCalculate();let i=r.mainComponent;i&&i.makeDirty()})}};qe=C([S(0,(0,e.Inject)(s.ImageFormulaCellInterceptorController)),S(1,a.IRenderManagerService),S(2,e.IUniverInstanceService)],qe);var Je=class{constructor(){x(this,`_currentSelector$`,new r.BehaviorSubject(null)),x(this,`currentSelector$`,this._currentSelector$.asObservable())}showRangeSelectorDialog(e){let t=e.callback,n=new Promise(n=>{e.callback=e=>{n(e),t(e)}});return this._currentSelector$.next(e),n}};let X=class extends t.BaseSelectionRenderService{constructor(e,t,n,r,i,a,o){super(t,n,r,i,a),this._context=e,this._contextService=a,this._refSelectionsService=o,x(this,`_workbookSelections`,void 0),x(this,`_eventDisposables`,void 0),this._workbookSelections=this._refSelectionsService.getWorkbookSelections(this._context.unitId),this._initSelectionChangeListener(),this._initSkeletonChangeListener(),this._initUserActionSyncListener(),this._setSelectionStyle(Ye(this._themeService)),this._remainLastEnabled=!0,this._highlightHeader=!1}getLocation(){return this._skeleton.getLocation()}setRemainLastEnabled(e){this._remainLastEnabled=e}setSkipLastEnabled(e){this._skipLastEnabled=e}clearLastSelection(){let e=this._selectionControls[this._selectionControls.length-1];e&&(e.dispose(),this._selectionControls.pop())}enableSelectionChanging(){return this._disableSelectionChanging(),this._eventDisposables=this._initCanvasEventListeners(),(0,e.toDisposable)(()=>this._disableSelectionChanging())}_disableSelectionChanging(){var e;(e=this._eventDisposables)==null||e.dispose(),this._eventDisposables=null}disableSelectionChanging(){this._disableSelectionChanging()}_initCanvasEventListeners(){let{spreadsheetRowHeader:n,spreadsheetColumnHeader:r,spreadsheet:i,spreadsheetLeftTopPlaceholder:o}=this._getSheetObject(),{scene:s}=this._context,c=new e.DisposableCollection;return c.add(i==null?void 0:i.onPointerDown$.subscribeEvent((t,n)=>{this.inRefSelectionMode()&&(this._onPointerDown(t,i.zIndex+1,e.RANGE_TYPE.NORMAL,this._getActiveViewport(t)),t.button!==2&&n.stopPropagation())})),c.add(n==null?void 0:n.onPointerDown$.subscribeEvent((n,r)=>{if(!this.inRefSelectionMode())return;let o=this._sheetSkeletonManagerService.getCurrent().skeleton,{row:c}=(0,t.getCoordByOffset)(n.offsetX,n.offsetY,s,o);(0,t.checkInHeaderRanges)(this._workbookSelections.getCurrentSelections(),c,e.RANGE_TYPE.ROW)||(this._onPointerDown(n,(i.zIndex||1)+1,e.RANGE_TYPE.ROW,this._getActiveViewport(n),a.ScrollTimerType.Y),n.button!==2&&r.stopPropagation())})),c.add(r==null?void 0:r.onPointerDown$.subscribeEvent((n,r)=>{if(!this.inRefSelectionMode())return;let o=this._sheetSkeletonManagerService.getCurrent().skeleton,{column:c}=(0,t.getCoordByOffset)(n.offsetX,n.offsetY,s,o);(0,t.checkInHeaderRanges)(this._workbookSelections.getCurrentSelections(),c,e.RANGE_TYPE.COLUMN)||(this._onPointerDown(n,(i.zIndex||1)+1,e.RANGE_TYPE.COLUMN,this._getActiveViewport(n),a.ScrollTimerType.X),n.button!==2&&r.stopPropagation())})),c.add(o==null?void 0:o.onPointerDown$.subscribeEvent((e,n)=>{if(this._reset(),!this.inRefSelectionMode())return;let r=this._sheetSkeletonManagerService.getCurrent().skeleton,i=(0,t.getAllSelection)(r);this._addSelectionControlByModelData(i),this._selectionMoveStart$.next(this.getSelectionDataWithStyle());let a=s.onPointerUp$.subscribeEvent(()=>{a.unsubscribe(),this._selectionMoveEnd$.next(this.getSelectionDataWithStyle())});e.button!==2&&n.stopPropagation()})),c}_addSelectionControlByModelData(e){var n;let r=this._skeleton,i=(n=e.style)==null?(0,t.genNormalSelectionStyle)(this._themeService):n,a=this._scene;return e.style=i,this.newSelectionControl(a,r,e)}_initSelectionChangeListener(){this.disposeWithMe(this._refSelectionsService.selectionSet$.subscribe(e=>{this._reset(),this._skeleton&&this.resetSelectionsByModelData(e||[])}))}_initUserActionSyncListener(){this.disposeWithMe(this.selectionMoveStart$.subscribe(e=>{this._updateSelections(e,o.SelectionMoveType.MOVE_START)})),this.disposeWithMe(this.selectionMoving$.subscribe(e=>{this._updateSelections(e,o.SelectionMoveType.MOVING)})),this.disposeWithMe(this.selectionMoveEnd$.subscribe(e=>{this._updateSelections(e,o.SelectionMoveType.MOVE_END)}))}_updateSelections(e,t){let n=this._context.unit.getActiveSheet().getSheetId();e.length!==0&&this._workbookSelections.setSelections(n,e.map(e=>(0,o.convertSelectionDataToRange)(e)),t)}_initSkeletonChangeListener(){this.disposeWithMe(this._sheetSkeletonManagerService.currentSkeleton$.subscribe(e=>{var t;if(!e)return;let{skeleton:n}=e,{scene:r}=this._context,i=r.getViewport(a.SHEET_VIEWPORT_KEY.VIEW_MAIN);this._skeleton&&((t=this._skeleton.worksheet)==null?void 0:t.getSheetId())!==n.worksheet.getSheetId()&&this._reset(),this._changeRuntime(n,r,i);let o=this._workbookSelections.getCurrentSelections();this.resetSelectionsByModelData(o)}))}_getActiveViewport(e){let t=this._getSheetObject();return t==null?void 0:t.scene.getActiveViewportByCoord(a.Vector2.FromArray([e.offsetX,e.offsetY]))}_getSheetObject(){return(0,t.getSheetObject)(this._context.unit,this._context)}_onPointerDown(n,r=0,i=e.RANGE_TYPE.NORMAL,o,s=a.ScrollTimerType.ALL){var c;this._rangeType=i;let l=this._skeleton,u=this._scene;if(!u||!l)return;o&&(this._activeViewport=o);let{offsetX:d,offsetY:f}=n,p=u.getViewport(a.SHEET_VIEWPORT_KEY.VIEW_MAIN);if(!p)return;let m=u.getCoordRelativeToViewport(a.Vector2.FromArray([d,f])),{x:h,y:g}=m;this._startViewportPosX=h,this._startViewportPosY=g;let _=u.getScrollXYInfoByViewport(m),{scaleX:v,scaleY:y}=u.getAncestorScale(),b=this._skeleton.getCellByOffset(h,g,v,y,_);if(!b)return;switch(i){case e.RANGE_TYPE.NORMAL:break;case e.RANGE_TYPE.ROW:b.startColumn=0,b.endColumn=this._skeleton.getColumnCount()-1;break;case e.RANGE_TYPE.COLUMN:b.startRow=0,b.endRow=this._skeleton.getRowCount()-1;break;case e.RANGE_TYPE.ALL:b.startRow=0,b.startColumn=0,b.endRow=this._skeleton.getRowCount()-1,b.endColumn=this._skeleton.getColumnCount()-1}let x={range:b,primary:b,style:null};(b.isMerged||b.isMergedMainCell)&&(x={range:{...b,startRow:b.startRow,endRow:b.startRow,startColumn:b.startColumn,endColumn:b.startColumn},primary:{...b,actualRow:b.startRow,actualColumn:b.startColumn,startRow:b.startRow,endRow:b.startRow,startColumn:b.startColumn,endColumn:b.startColumn},style:null}),x.range.rangeType=i;let S=(0,t.attachSelectionWithCoord)(x,this._skeleton);this._startRangeWhenPointerDown={...S.rangeWithCoord};let C={...S.rangeWithCoord,rangeType:i},w=this.getActiveSelectionControl(),T=this.getSelectionControls();for(let t of T){if(n.button===2&&e.Rectangle.contains(t.model,C)){w=t;return}if(t.model.isEqual(C)){w=t;break}}this._checkClearPreviousControls(n);let E=w==null?void 0:w.model.currentCell,D=n.shiftKey&&E,O=this._remainLastEnabled&&!n.ctrlKey&&!n.shiftKey&&!this._skipLastEnabled&&!this._singleSelectionEnabled;D&&E?this._makeSelectionByTwoCells(E,C,l,i,w):O&&w?w.updateRangeBySelectionWithCoord(S):w=this.newSelectionControl(u,l,x);for(let e=0;e<this.getSelectionControls().length-1;e++)this.getSelectionControls()[e].clearHighlight();this._selectionMoveStart$.next(this.getSelectionDataWithStyle()),u.disableObjectsEvent(),this._clearUpdatingListeners(),this._addEndingListeners(),(c=u.getTransformer())==null||c.clearSelectedObjects(),this._setupPointerMoveListener(p,w,i,s,h,g),this._escapeShortcutDisposable=this._shortcutService.forceEscape(),this._scenePointerUpSub=u.onPointerUp$.subscribeEvent(()=>{var e;this._clearUpdatingListeners(),this._selectionMoveEnd$.next(this.getSelectionDataWithStyle()),(e=this._escapeShortcutDisposable)==null||e.dispose(),this._escapeShortcutDisposable=null})}newSelectionControl(e,n,r){let i=this.getSelectionControls().length,{rowHeaderWidth:a,columnHeaderHeight:o}=n,s=new t.SelectionControl(e,i,this._themeService,{highlightHeader:this._highlightHeader,enableAutoFill:!1,rowHeaderWidth:a,columnHeaderHeight:o}),c=(0,t.attachSelectionWithCoord)(r,n);return s.updateRangeBySelectionWithCoord(c),this._selectionControls.push(s),s.setControlExtension({skeleton:n,scene:e,themeService:this._themeService,injector:this._injector,selectionHooks:{selectionMoveEnd:()=>{this._selectionMoveEnd$.next(this.getSelectionDataWithStyle())}}}),s}};X=C([S(1,(0,e.Inject)(e.Injector)),S(2,(0,e.Inject)(e.ThemeService)),S(3,c.IShortcutService),S(4,(0,e.Inject)(t.SheetSkeletonManagerService)),S(5,e.IContextService),S(6,o.IRefSelectionsService)],X);function Ye(e){let n=(0,t.genNormalSelectionStyle)(e);return n.widgets={tl:!0,tc:!0,tr:!0,ml:!0,mr:!0,bl:!0,bc:!0,br:!0},n}const Xe=(e,t,n=!0)=>{let r=-1;return e.reduce((e,i,a)=>{if(e.isFinish)return e;let o=e.currentIndex;if(typeof i!=`string`)e.currentIndex+=i.token.length;else{let t=i.length;e.currentIndex+=t}return(n?e.currentIndex===t:t>o&&t<=e.currentIndex)&&(r=a,e.isFinish=!0),e},{currentIndex:0,isFinish:!1}),r},Ze=(e,t)=>{let r=e[t],i=-1;if(!r||typeof r==`string`||r.nodeType!==n.sequenceNodeType.REFERENCE)return-1;for(let r=0;r<=t;r++){let t=e[r];typeof t!=`string`&&t.nodeType===n.sequenceNodeType.REFERENCE&&i++}return i},Qe=(e,t=100)=>{(0,l.useEffect)(()=>{let n=null,r=()=>{n===null&&(n=window.setTimeout(()=>{e(),n=null},t))};return window.addEventListener(`scroll`,r),window.addEventListener(`resize`,r),()=>{n!==null&&clearTimeout(n),window.removeEventListener(`scroll`,r),window.removeEventListener(`resize`,r)}},[e,t])};function $e(t,n,a){let o=(0,c.useDependency)(i.IEditorService),s=(0,l.useMemo)(()=>new r.BehaviorSubject({left:-999,top:-999,right:-999,bottom:-999}),[]),u=(0,c.useDependency)(c.ISidebarService),d=(0,c.useDependency)(e.IUniverInstanceService),f=(0,c.useEvent)(()=>{var e;let n=o.getEditor(t);if(!n)return;let r=n.getBoundingClientRect(),{marginTop:i=0,marginBottom:a=0}=n.getDocumentData().documentStyle,c=n.getSkeleton();if(!c)return;let l=(e=c.getSkeletonData())==null?void 0:e.pages[0].height,{left:u,top:d,right:f,bottom:p}=r;d+=i,p=l?d+l:p-a;let m=s.getValue();if(!(m.left===u&&m.top===d&&m.right===f&&m.bottom===p))return s.next({left:u-1,right:f+1,top:d-1,bottom:p+1}),r});return(0,l.useEffect)(()=>{n&&f()},[t,o,d.unitAdded$,f,n,...a==null?[]:a]),Qe(f),(0,l.useEffect)(()=>{let e=u.scrollEvent$.pipe((0,r.throttleTime)(100)).subscribe(f);return()=>{e.unsubscribe()}},[]),[s,f]}const Z=e=>{let t=(0,l.useRef)(e);return t.current=e,t},et=(e,t,i)=>{let a=(0,c.useDependency)(T),o=(0,c.useDependency)(s.IDescriptionService),u=(0,c.useDependency)(n.LexerTreeBuilder),[d,f]=(0,l.useState)(),[p,m]=(0,l.useState)(-1),[h,g]=(0,l.useState)(!0),_=Z(h),v=(0,l.useRef)(t);v.current=t;let y=()=>{f(void 0),m(-1),g(!1)};return(0,l.useEffect)(()=>{let e=u.sequenceNodesBuilder(t.slice(1));a.setSequenceNodes(e==null?[]:e)},[t]),(0,l.useEffect)(()=>{if(i&&e){let e=i.selectionChange$.pipe((0,r.debounceTime)(50)).subscribe(e=>{if(e.textRanges.length===1){let[t]=e.textRanges;if(t.collapsed&&_.current){let{startOffset:e}=t,r=a.getCurrentSequenceNodeIndex(e-2),i=a.getCurrentSequenceNodeByIndex(r),s=a.getCurrentSequenceNodeByIndex(r+1);if(i)if(typeof i!=`string`&&i.nodeType===3&&!o.hasDefinedNameDescription(i.token.trim())&&s===n.matchToken.OPEN_BRACKET){f(o.getFunctionInfo(i.token)),m(-1);return}else{let t=u.getFunctionAndParameter(`${v.current}A`,e-1);if(t){let{functionName:e,paramIndex:n}=t;f(o.getFunctionInfo(e)),m(n);return}}}}f(void 0),m(-1)}),t=i.selectionChange$.pipe((0,r.filter)(e=>e.textRanges.length===1),(0,r.map)(e=>e.textRanges[0].startOffset),(0,r.distinctUntilChanged)()).subscribe(()=>{g(!0)});return()=>{e.unsubscribe(),t.unsubscribe()}}},[i,e]),(0,l.useEffect)(()=>{e||y()},[e]),{functionInfo:d,paramIndex:p,reset:y}},tt=({onClick:e})=>(0,u.jsx)(`div`,{className:`
|
|
18
|
-
univer-z-[15] univer-box-border univer-h-[18px] univer-cursor-pointer univer-overflow-visible
|
|
19
|
-
univer-whitespace-nowrap univer-rounded-l univer-border univer-border-r-0 univer-border-gray-600
|
|
20
|
-
univer-bg-primary-600 univer-p-0.5 univer-text-xs univer-font-bold univer-leading-[13px] univer-text-white
|
|
21
|
-
`,onClick:e,children:`?`}),nt=({className:e,title:t,value:n})=>(0,u.jsxs)(`div`,{className:`univer-my-2`,children:[(0,u.jsx)(`div`,{className:(0,d.clsx)(`
|
|
22
|
-
univer-mb-2 univer-text-sm univer-font-medium univer-text-gray-900
|
|
23
|
-
dark:!univer-text-white
|
|
24
|
-
`,e),children:t}),(0,u.jsx)(`div`,{className:`univer-whitespace-pre-wrap univer-break-words univer-text-xs univer-text-gray-500`,children:n})]}),rt=e=>{let{prefix:t,value:n,active:r,onClick:i}=e;return(0,u.jsxs)(`div`,{children:[(0,u.jsxs)(`span`,{children:[t,`(`]}),n&&n.map((e,t)=>(0,u.jsxs)(`span`,{children:[(0,u.jsx)(`span`,{className:r===t?`univer-text-primary-500`:``,onClick:()=>i(t),children:Ae(e)}),t===n.length-1?``:`,`]},e.name)),`)`]})},it=()=>{};function at(n){let{onParamsSwitch:r=it,onClose:i=it,isFocus:a,editor:o,formulaText:s}=n,{functionInfo:p,paramIndex:m,reset:h}=et(a,s,o),g=(0,c.useDependency)(t.IEditorBridgeService),_=!(0,c.useObservable)(g.helpFunctionVisible$),[v,y]=(0,l.useState)(!1),b=(0,c.useDependency)(e.LocaleService),x=b.t(`formula.prompt.required`),S=b.t(`formula.prompt.optional`),[C]=$e(o.getEditorId(),!!p,[p,m]);function w(e){r&&r(e)}let T=(0,c.useEvent)(e=>{g.helpFunctionVisible$.next(!e)});return p?_?(0,u.jsx)(c.RectPopup,{portal:!0,anchorRect$:C,direction:`left-center`,children:(0,u.jsx)(tt,{onClick:()=>T(!1)})},`hidden`):(0,u.jsx)(c.RectPopup,{portal:!0,onClickOutside:()=>h(),anchorRect$:C,direction:`vertical`,children:(0,u.jsxs)(`div`,{className:(0,d.clsx)(`
|
|
25
|
-
univer-m-0 univer-box-border univer-w-[250px] univer-select-none univer-list-none
|
|
26
|
-
univer-rounded-lg univer-bg-white univer-leading-5 univer-shadow-md univer-outline-none
|
|
27
|
-
dark:!univer-bg-gray-900
|
|
28
|
-
`,d.borderClassName),children:[(0,u.jsxs)(`div`,{className:(0,d.clsx)(`
|
|
29
|
-
univer-box-border univer-flex univer-items-center univer-justify-between univer-px-4
|
|
30
|
-
univer-py-3 univer-text-xs univer-font-medium univer-text-gray-900
|
|
31
|
-
dark:!univer-text-white
|
|
32
|
-
`,d.borderTopClassName),style:{overflowWrap:`anywhere`},children:[(0,u.jsx)(rt,{prefix:p.functionName,value:p.functionParameter,active:m,onClick:w}),(0,u.jsxs)(`div`,{className:`univer-flex`,children:[(0,u.jsx)(`div`,{className:`
|
|
33
|
-
univer-ml-2 univer-flex univer-size-6 univer-cursor-pointer univer-items-center
|
|
34
|
-
univer-justify-center univer-rounded univer-bg-transparent univer-p-0
|
|
35
|
-
univer-text-xs univer-text-gray-500 univer-outline-none univer-transition-colors
|
|
36
|
-
hover:univer-bg-gray-200
|
|
37
|
-
dark:hover:!univer-bg-gray-600
|
|
38
|
-
`,style:{transform:v?`rotateZ(-90deg)`:`rotateZ(90deg)`},onClick:()=>y(!v),children:(0,u.jsx)(f.MoreIcon,{})}),(0,u.jsx)(`div`,{className:`
|
|
39
|
-
univer-ml-2 univer-flex univer-size-6 univer-cursor-pointer univer-items-center
|
|
40
|
-
univer-justify-center univer-rounded univer-bg-transparent univer-p-0
|
|
41
|
-
univer-text-xs univer-text-gray-600 univer-outline-none univer-transition-colors
|
|
42
|
-
hover:univer-bg-gray-300
|
|
43
|
-
dark:!univer-text-gray-200
|
|
44
|
-
dark:hover:!univer-bg-gray-600
|
|
45
|
-
`,onClick:()=>{T(!0),i()},children:(0,u.jsx)(f.CloseIcon,{})})]})]}),(0,u.jsx)(`div`,{className:(0,d.clsx)(`
|
|
46
|
-
univer-box-border univer-max-h-[350px] univer-overflow-y-auto univer-px-4 univer-pb-3
|
|
47
|
-
univer-pt-0
|
|
48
|
-
`,d.scrollbarClassName),style:{height:v?`unset`:0,padding:v?`revert-layer`:0},children:(0,u.jsxs)(`div`,{className:`univer-mt-3`,children:[(0,u.jsx)(nt,{title:b.t(`formula.prompt.helpExample`),value:`${p.functionName}(${p.functionParameter.map(e=>e.example).join(`,`)})`}),(0,u.jsx)(nt,{title:b.t(`formula.prompt.helpAbstract`),value:p.description}),p&&p.functionParameter&&p.functionParameter.map((e,t)=>(0,u.jsx)(nt,{className:m===t?`univer-text-primary-500`:``,title:e.name,value:`${e.require?x:S} ${e.detail}`},t))]})})]})},`show`):null}const ot=t=>{let n=(0,c.useDependency)(i.IEditorService);return(0,c.useEvent)(r=>{if(t){n.focus(t.getEditorId());let o=[...t.getSelectionRanges()];if(e.Tools.isDefine(r))t.setSelectionRanges([{startOffset:r,endOffset:r}]);else if(!o.length&&!t.docSelectionRenderService.isOnPointerEvent){var i,a;let e=(i=(a=t.getDocumentData().body)==null?void 0:a.dataStream)==null?`\r
|
|
49
|
-
`:i,n=Math.max(e.length-2,0);t.setSelectionRanges([{startOffset:n,endOffset:n}])}else t.setSelectionRanges(o)}})};function st(t){var n,r;let i=t.get(e.IUniverInstanceService).getCurrentUniverDocInstance();if(i!=null&&i.getBody())return{dataStream:(n=(r=i.getBody())==null?void 0:r.dataStream)==null?``:n,offset:0}}let Q=function(e){return e[e.NOT_SELECT=0]=`NOT_SELECT`,e[e.NEED_ADD=1]=`NEED_ADD`,e[e.CAN_EDIT=2]=`CAN_EDIT`,e[e.EDIT_OTHER_SHEET_REFERENCE=3]=`EDIT_OTHER_SHEET_REFERENCE`,e[e.EDIT_OTHER_WORKBOOK_REFERENCE=4]=`EDIT_OTHER_WORKBOOK_REFERENCE`,e}({});function ct(t){var o;let{editorId:s,isFocus:u,disableOnClick:d,unitId:f,subUnitId:m}=t,h=(0,c.useDependency)(a.IRenderManagerService),g=(0,c.useDependency)(e.IUniverInstanceService),_=h.getRenderById(f),v=h.getRenderById(s),y=v==null?void 0:v.with(i.DocSelectionRenderService),b=(0,c.useDependency)(p.DocSelectionManagerService),x=(0,c.useDependency)(e.Injector),[S,C]=(0,l.useState)(Q.NOT_SELECT),w=(0,c.useDependency)(n.LexerTreeBuilder),T=(0,l.useRef)(!0),E=_==null?void 0:_.with(X),D=Z(S),O=g.getUnit(f,e.UniverInstanceType.UNIVER_SHEET),k=O==null?void 0:O.getSheetBySheetId(m),A=(0,c.useEvent)(e=>{E&&E.setSkipLastEnabled(e===Q.NEED_ADD||e===Q.EDIT_OTHER_SHEET_REFERENCE||e===Q.EDIT_OTHER_WORKBOOK_REFERENCE),D.current=e,C(e)}),j=(0,c.useEvent)(()=>{var t,r;let i=g.getCurrentUnitOfType(e.UniverInstanceType.UNIVER_SHEET);if(!i)return;let a=i.getActiveSheet(),o=y==null?void 0:y.getActiveTextRange(),s=o!=null&&o.collapsed?o.startOffset:-1,c=st(x);if(!c)return;let l=c==null||(t=c.dataStream)==null?void 0:t.slice(0,-2),u=((r=w.sequenceNodesBuilder(l))==null?[]:r).map(e=>typeof e==`object`?e.nodeType===n.sequenceNodeType.REFERENCE?{...e,range:(0,n.deserializeRangeWithSheetWithCache)(e.token)}:{...e,range:void 0}:e),d=l[s-1],f=l[s],p=u.find(e=>typeof e==`object`&&e.nodeType===n.sequenceNodeType.REFERENCE&&s===e.endIndex+2),m=d&&(0,n.matchRefDrawToken)(d)&&(!f||(0,n.isFormulaLexerToken)(f)&&f!==n.matchToken.OPEN_BRACKET),h=!!p;if((l==null?void 0:l.substring(0,1))===`=`&&(m||h))if(h){var _;if(T.current)return;let{sheetName:t,unitId:n}=p.range,r=(_=g.getCurrentUnitOfType(e.UniverInstanceType.UNIVER_SHEET))==null?void 0:_.getUnitId();n&&n!==r?A(Q.EDIT_OTHER_WORKBOOK_REFERENCE):!t&&a.getSheetId()===(k==null?void 0:k.getSheetId())||t===a.getName()?A(Q.CAN_EDIT):A(Q.EDIT_OTHER_SHEET_REFERENCE)}else T.current=!1,A(Q.NEED_ADD);else A(Q.NOT_SELECT)});return(0,l.useEffect)(()=>{let e=b.textSelection$.pipe((0,r.filter)(e=>e.unitId===s)).subscribe(()=>{j()});return()=>e.unsubscribe()},[j,b.textSelection$,s]),(0,l.useEffect)(()=>{u||(A(Q.NOT_SELECT),T.current=!0)},[u,A]),(0,l.useEffect)(()=>{var e;if(!d)return;let t=v==null||(e=v.mainComponent)==null?void 0:e.onPointerDown$.subscribeEvent(()=>{A(Q.NOT_SELECT),T.current=!0});return()=>t==null?void 0:t.unsubscribe()},[d,v==null||(o=v.mainComponent)==null?void 0:o.onPointerDown$,A]),(0,l.useEffect)(()=>{if(!u)return;let t=O==null?void 0:O.activeSheet$.subscribe(()=>{j()}),n=g.getCurrentTypeOfUnit$(e.UniverInstanceType.UNIVER_SHEET).subscribe(()=>{j()});return()=>{t==null||t.unsubscribe(),n==null||n.unsubscribe()}},[j,u,O==null?void 0:O.activeSheet$,g.getCurrentTypeOfUnit$]),{isSelecting:S,isSelectingRef:D}}const lt=()=>{let e=(0,c.useDependency)(n.LexerTreeBuilder);return(0,l.useCallback)(t=>e.sequenceNodesBuilder(t)||[],[e])};function ut(t,n,r){return{id:r,strokeWidth:1,stroke:n,fill:new e.ColorKit(n).setAlpha(.05).toRgbString(),widgets:{tl:!0,tc:!0,tr:!0,ml:!0,mr:!0,bl:!0,bc:!0,br:!0},widgetSize:6,widgetStrokeWidth:1,widgetStroke:t.getColorFromTheme(`white`)}}function dt(t){var r;let{unitId:i,subUnitId:a,currentWorkbook:s,refSelections:c,editor:l,refSelectionsService:u,refSelectionsRenderService:d,sheetSkeletonManagerService:f,themeService:p,univerInstanceService:m}=t,h=s.getUnitId(),g=m.getUnit(i,e.UniverInstanceType.UNIVER_SHEET),_=g==null?void 0:g.getActiveSheet(),v=[];if(!g||!_){u.setSelections(v);return}let y=_.getSheetId(),b=e=>{var t;return g==null||(t=g.getSheetBySheetName(e))==null?void 0:t.getSheetId()};if(!(!(f==null||(r=f.getWorksheetSkeleton(y))==null)&&r.skeleton))return;let x=[];for(let e=0,t=c.length;e<t;e++){let{themeColor:t,token:r,refIndex:s,endIndex:l}=c[e],{unitId:u,sheetName:d,range:f}=(0,n.deserializeRangeWithSheet)(r),m=b(d);if(!m&&d||h!==i&&u!==h||u&&u!==h||m&&m!==y||!m&&y!==a)continue;let g=(0,o.setEndForRange)(f,_.getRowCount(),_.getColumnCount());g.unitId=i,g.sheetId=y,v.push({range:g,primary:null,style:ut(p,t,s.toString())}),x.push(l)}if(l){var S;let e=(S=l.getSelectionRanges())==null||(S=S[0])==null?void 0:S.startOffset,t=x.findIndex(t=>t+2===e);t===-1?d==null||d.resetActiveSelectionIndex():d==null||d.setActiveSelectionIndex(t)}return v}function ft(n,r){let i=(0,c.useDependency)(e.IUniverInstanceService),s=(0,c.useDependency)(e.ThemeService),u=(0,c.useDependency)(o.IRefSelectionsService),d=(0,c.useDependency)(a.IRenderManagerService),f=(0,c.useObservable)((0,l.useMemo)(()=>i.getCurrentTypeOfUnit$(e.UniverInstanceType.UNIVER_SHEET),[i])),p=f?d.getRenderById(f.getUnitId()):null,m=p==null?void 0:p.with(X),h=p==null?void 0:p.with(t.SheetSkeletonManagerService),g=(0,c.useEvent)((t,a)=>{let o=i.getCurrentUnitOfType(e.UniverInstanceType.UNIVER_SHEET);if(!o||m!=null&&m.selectionMoving)return;let c=dt({unitId:n,subUnitId:r,currentWorkbook:o,refSelections:t,editor:a,refSelectionsService:u,refSelectionsRenderService:m,sheetSkeletonManagerService:h,themeService:s,univerInstanceService:i});c&&(((m==null?void 0:m.getSelectionControls())||[]).length===c.length?m==null||m.resetSelectionsByModelData(c):u.setSelections(c))});return(0,l.useEffect)(()=>()=>{m==null||m.resetActiveSelectionIndex()},[m]),g}function pt(t=``){let n=(0,c.useDependency)(s.IDescriptionService),r=mt(),a=(0,c.useDependency)(e.ICommandService),o=(0,l.useMemo)(()=>t.length,[t]);return(0,c.useEvent)((s,c,l=!0,u)=>{let d=s.getDocumentData(),f=s.getEditorId();if(!d)return[];let p=d.body;if(!p)return[];let m=p.dataStream.slice(0,p.dataStream.length-2),h={dataStream:``,...d.body};if(!m.startsWith(t))return[];if(c==null||c.length===0)return h.textRuns=[],a.syncExecuteCommand(i.ReplaceTextRunsCommand.id,{unitId:f,body:(0,e.getBodySlice)(h,0,h.dataStream.length-2)}),[];{let{textRuns:d,refSelections:p}=ht(n,r,c);o&&d.forEach(e=>{e.ed+=o,e.st+=o}),h.textRuns=[{st:0,ed:1,ts:{fs:11}},...d],h.dataStream=`${t}${c.reduce((e,t)=>typeof t==`string`?`${e}${t}`:`${e}${t.token}`,``)}\r\n`;let m;if(l){m=s.getSelectionRanges();let e=h.dataStream.length-2+o;m.forEach(t=>{t.startOffset=Math.max(0,Math.min(t.startOffset,e)),t.endOffset=Math.max(0,Math.min(t.endOffset,e))})}return a.syncExecuteCommand(i.ReplaceTextRunsCommand.id,{unitId:f,body:(0,e.getBodySlice)(h,0,h.dataStream.length-2),textRanges:u==null?m:u}),p}})}function mt(){let t=(0,c.useDependency)(e.ThemeService);return(0,l.useMemo)(()=>({formulaRefColors:[t.getColorFromTheme(`loop-color.1`),t.getColorFromTheme(`loop-color.2`),t.getColorFromTheme(`loop-color.3`),t.getColorFromTheme(`loop-color.4`),t.getColorFromTheme(`loop-color.5`),t.getColorFromTheme(`loop-color.6`),t.getColorFromTheme(`loop-color.7`),t.getColorFromTheme(`loop-color.8`),t.getColorFromTheme(`loop-color.9`),t.getColorFromTheme(`loop-color.10`),t.getColorFromTheme(`loop-color.11`),t.getColorFromTheme(`loop-color.12`)].map(e=>t.isValidThemeColor(e)?t.getColorFromTheme(e):e),numberColor:t.getColorFromTheme(`blue.700`),stringColor:t.getColorFromTheme(`jiqing.800`),plainTextColor:t.getColorFromTheme(`black`)}),[t.getCurrentTheme()])}function ht(e,t,r){let{formulaRefColors:i,numberColor:a,stringColor:o,plainTextColor:s}=t,c=[],l=[],u=new Map,d=0;for(let t=0,f=r.length;t<f;t++){let f=r[t];if(typeof f==`string`){let e=c[c.length-1],t=e?e.ed:0,n=t+f.length;c.push({st:t,ed:n,ts:{cl:{rgb:s},fs:11}});continue}if(e.hasDefinedNameDescription(f.token.trim())){c.push({st:f.startIndex,ed:f.endIndex+1,ts:{cl:{rgb:s},fs:11}});continue}let{startIndex:p,endIndex:m,nodeType:h,token:g}=f,_=``;h===n.sequenceNodeType.REFERENCE?(u.has(g)?_=u.get(g):(_=i[d%i.length],u.set(g,_),d++),l.push({refIndex:t,themeColor:_,token:g,startIndex:f.startIndex,endIndex:f.endIndex,index:l.length})):h===n.sequenceNodeType.NUMBER?_=a:(h===n.sequenceNodeType.STRING||h===n.sequenceNodeType.ARRAY)&&(_=o),_&&_.length>0?c.push({st:p,ed:m+1,ts:{cl:{rgb:_},fs:11}}):c.push({st:p,ed:m+1,ts:{cl:{rgb:s},fs:11}})}return{textRuns:c,refSelections:l}}const gt=(n,r,o,s)=>{let u=(0,c.useDependency)(e.ICommandService),d=(0,c.useDependency)(c.IShortcutService),f=(0,l.useRef)(r);f.current=r;let p=(0,l.useRef)(s);p.current=s,(0,l.useEffect)(()=>{if(!o||!n)return;let r=`sheet.formula-embedding-editor.${o.getEditorId()}`,s=new e.DisposableCollection,l=(t,n)=>{if(p.current){p.current(t,n);return}let r=e.Direction.LEFT;t===c.KeyCode.ARROW_DOWN?r=e.Direction.DOWN:t===c.KeyCode.ARROW_UP?r=e.Direction.UP:t===c.KeyCode.ARROW_RIGHT&&(r=e.Direction.RIGHT),n===c.MetaKeys.SHIFT?u.executeCommand(i.MoveSelectionOperation.id,{direction:r}):u.executeCommand(i.MoveCursorOperation.id,{direction:r})},m=(n,r)=>{let i=e.Direction.DOWN;n===c.KeyCode.ARROW_DOWN?i=e.Direction.DOWN:n===c.KeyCode.ARROW_UP?i=e.Direction.UP:n===c.KeyCode.ARROW_LEFT?i=e.Direction.LEFT:n===c.KeyCode.ARROW_RIGHT&&(i=e.Direction.RIGHT),f.current?r===c.MetaKeys.CTRL_COMMAND?u.executeCommand(t.MoveSelectionCommand.id,{direction:i,jumpOver:t.JumpOver.moveGap,extra:`formula-editor`,fromCurrentSelection:f.current===Q.NEED_ADD||f.current===Q.EDIT_OTHER_SHEET_REFERENCE}):r===c.MetaKeys.SHIFT?u.executeCommand(t.ExpandSelectionCommand.id,{direction:i,extra:`formula-editor`}):r===(c.MetaKeys.CTRL_COMMAND|c.MetaKeys.SHIFT)?u.executeCommand(t.ExpandSelectionCommand.id,{direction:i,jumpOver:t.JumpOver.moveGap,extra:`formula-editor`}):u.executeCommand(t.MoveSelectionCommand.id,{direction:i,extra:`formula-editor`,fromCurrentSelection:f.current===Q.NEED_ADD||f.current===Q.EDIT_OTHER_SHEET_REFERENCE}):l(n,r)};return s.add(u.registerCommand({id:r,type:e.CommandType.OPERATION,handler(e,t){let{keyCode:n,metaKey:r}=t;m(n,r)}})),[{keyCode:c.KeyCode.ARROW_DOWN},{keyCode:c.KeyCode.ARROW_LEFT},{keyCode:c.KeyCode.ARROW_RIGHT},{keyCode:c.KeyCode.ARROW_UP},{keyCode:c.KeyCode.ARROW_DOWN,metaKey:c.MetaKeys.SHIFT},{keyCode:c.KeyCode.ARROW_LEFT,metaKey:c.MetaKeys.SHIFT},{keyCode:c.KeyCode.ARROW_RIGHT,metaKey:c.MetaKeys.SHIFT},{keyCode:c.KeyCode.ARROW_UP,metaKey:c.MetaKeys.SHIFT},{keyCode:c.KeyCode.ARROW_DOWN,metaKey:c.MetaKeys.CTRL_COMMAND},{keyCode:c.KeyCode.ARROW_LEFT,metaKey:c.MetaKeys.CTRL_COMMAND},{keyCode:c.KeyCode.ARROW_RIGHT,metaKey:c.MetaKeys.CTRL_COMMAND},{keyCode:c.KeyCode.ARROW_UP,metaKey:c.MetaKeys.CTRL_COMMAND},{keyCode:c.KeyCode.ARROW_DOWN,metaKey:c.MetaKeys.CTRL_COMMAND|c.MetaKeys.SHIFT},{keyCode:c.KeyCode.ARROW_LEFT,metaKey:c.MetaKeys.CTRL_COMMAND|c.MetaKeys.SHIFT},{keyCode:c.KeyCode.ARROW_RIGHT,metaKey:c.MetaKeys.CTRL_COMMAND|c.MetaKeys.SHIFT},{keyCode:c.KeyCode.ARROW_UP,metaKey:c.MetaKeys.CTRL_COMMAND|c.MetaKeys.SHIFT}].map(({keyCode:e,metaKey:t})=>({id:r,binding:t?e|t:e,preconditions:()=>!0,priority:900,staticParameters:{eventType:a.DeviceInputEventType.Keyboard,keyCode:e,metaKey:t}})).forEach(e=>{s.add(d.registerShortcut(e))}),()=>{s.dispose()}},[u,o,n,d])},_t=(t,n,r,i,s=!0)=>{var u;let d=(0,c.useDependency)(a.IRenderManagerService),f=(0,c.useDependency)(e.IContextService),p=(0,c.useDependency)(c.IContextMenuService),m=(0,c.useDependency)(o.IRefSelectionsService),h=(0,c.useDependency)(e.IUniverInstanceService),g=(0,c.useObservable)((0,l.useMemo)(()=>h.getCurrentTypeOfUnit$(e.UniverInstanceType.UNIVER_SHEET),[h])),_=d.getRenderById((u=g==null?void 0:g.getUnitId())==null?``:u),v=_==null?void 0:_.with(X);(0,l.useLayoutEffect)(()=>{if(t)return f.setContextValue(e.EDITOR_ACTIVATED,!0),s&&p.disable(),()=>{let t=h.getCurrentUnitOfType(e.UniverInstanceType.UNIVER_DOC);(t==null?void 0:t.getUnitId())===i&&f.setContextValue(e.EDITOR_ACTIVATED,!1),s&&p.enable(),m.clear()}},[f,t,m,s,i]),(0,l.useLayoutEffect)(()=>{if(t&&n){let e=v==null?void 0:v.enableSelectionChanging();return f.setContextValue(o.REF_SELECTIONS_ENABLED,!0),()=>{f.setContextValue(o.REF_SELECTIONS_ENABLED,!1),e==null||e.dispose()}}},[f,t,v,n]),(0,l.useEffect)(()=>{t&&(v==null||v.setSkipLastEnabled(!1))},[t,v])},vt=(t,n,r)=>{let i=(0,c.useDependency)(e.IUniverInstanceService),a=(0,c.useDependency)(o.SheetsSelectionsService);return(0,l.useCallback)(()=>{if(t){let t=[...a.getWorkbookSelections(n).getSelectionsOfWorksheet(r)],o=i.getCurrentUnitForType(e.UniverInstanceType.UNIVER_SHEET),s=o==null?void 0:o.getActiveSheet();(o==null?void 0:o.getUnitId())!==n&&i.setCurrentUnitForType(n),s&&s.getSheetId()===r&&a.setSelections(t)}},[t,a,r,n,i])},yt=e=>e.reduce((e,t)=>typeof t==`string`?e+t.length:e+t.token.length,0),bt=e=>e.map(e=>typeof e==`string`?e:e.token).join(``),xt=(e,t=!1,r=``,i=!1)=>!t&&!i?e.map(e=>(0,n.serializeRange)(e.range)):e.map(e=>i?(0,n.serializeRangeToRefString)(e):e.sheetName!==``&&e.sheetName!==r?(0,n.serializeRangeWithSheet)(e.sheetName,e.range):(0,n.serializeRange)(e.range)),St=e=>{var t,n,r;let{editor:i,lexerTreeBuilder:a}=e,o=i==null?void 0:i.getSelectionRanges();if((o==null?void 0:o.length)!==1)return;let s=o[0].startOffset-1,c=((t=i==null||(n=i.getDocumentData().body)==null?void 0:n.dataStream)==null?`\r
|
|
50
|
-
`:t).slice(0,-2),l=(r=a.sequenceNodesBuilder(c.slice(1)))==null?[]:r,u=Xe(l,s,!1);return{nodeIndex:u,updatingRefIndex:Ze(l,u),sequenceNodes:l,offset:s}},Ct=(()=>{}),wt=(i,s,u,d,f,h,g,_,v,y=Ct)=>{var b;let x=(0,c.useDependency)(a.IRenderManagerService),S=(0,c.useDependency)(e.IUniverInstanceService),C=(0,c.useDependency)(e.ICommandService),w=(0,c.useDependency)(p.DocSelectionManagerService),T=(0,c.useDependency)(e.ThemeService),E=(0,c.useDependency)(n.LexerTreeBuilder),D=S.getUnit(d),O=(0,c.useEvent)((e,t)=>{var n,r;return(n=(r=S.getUnit(e))==null||(r=r.getSheetBySheetId(t))==null?void 0:r.getName())==null?``:n}),k=(0,l.useMemo)(()=>O(d,f),[O,f,d]),A=(0,c.useObservable)(D==null?void 0:D.activeSheet$),j=Z({activeSheet:A,sheetName:k}),M=(0,c.useObservable)((0,l.useMemo)(()=>S.getCurrentTypeOfUnit$(e.UniverInstanceType.UNIVER_SHEET),[S])),N=x.getRenderById((b=M==null?void 0:M.getUnitId())==null?``:b),P=N==null?void 0:N.with(X),F=N==null?void 0:N.with(t.SheetSkeletonManagerService),ee=(0,c.useDependency)(o.IRefSelectionsService),I=(0,c.useEvent)((e,t,r)=>{let i=St({editor:v,lexerTreeBuilder:E});if(!i)return;let{nodeIndex:a,updatingRefIndex:o,sequenceNodes:s,offset:c}=i;if(u.current===Q.NEED_ADD)if(c!==0){var l,p,m;if(a===-1&&s.length)return;let r=e[e.length-1],i=s.splice(a+1),o=(l=r.sheetId)==null?f:l,c={range:r,unitId:(p=r.unitId)==null?M.getUnitId():p,sheetName:O((m=r.unitId)==null?M.getUnitId():m,o)},u=o!==f,h=(M==null?void 0:M.getUnitId())!==d,_=xt([c],g&&(u||h),k,h);s.push({token:_[0],nodeType:n.sequenceNodeType.REFERENCE}),y(bt([...s,...i]),yt(s),t)}else{var h,_,b;let r=e[e.length-1],i=(h=r.sheetId)==null?f:h,a={range:r,unitId:(_=r.unitId)==null?M.getUnitId():_,sheetName:O((b=r.unitId)==null?M.getUnitId():b,i)},o=i!==f,c=(M==null?void 0:M.getUnitId())!==d,l=xt([a],g&&(o||c),k,c);s.unshift({token:l[0],nodeType:n.sequenceNodeType.REFERENCE}),y(bt(s),l[0].length,t)}else if(u.current===Q.EDIT_OTHER_SHEET_REFERENCE||u.current===Q.EDIT_OTHER_WORKBOOK_REFERENCE){let r=e.pop();if(!r)return;let i=s[a];if(typeof i==`object`&&i.nodeType===n.sequenceNodeType.REFERENCE){let e=i.token;if((M==null?void 0:M.getUnitId())!==d){var x;i.token=(0,n.serializeRangeWithSpreadsheet)((x=M==null?void 0:M.getUnitId())==null?``:x,k,r)}else i.token=k===(A==null?void 0:A.getName())?(0,n.serializeRange)(r):(0,n.serializeRangeWithSheet)(A.getName(),r);let a=c+(i.token.length-e.length);y((0,n.generateStringWithSequence)(s),a,t)}}else{let i=[...e];if(!r&&o!==-1){let e=i.pop();e&&i.splice(o,0,e)}let c=0,l=s.map(e=>{if(typeof e==`string`)return e;if(e.nodeType===n.sequenceNodeType.REFERENCE){var t,r,a;let s=(0,n.deserializeRangeWithSheet)(e.token);if(s.sheetName||(s.sheetName=k),(s.unitId||d)!==(M==null?void 0:M.getUnitId()))return e.token;if(g){var o;if(((o=j.current.activeSheet)==null?void 0:o.getName())!==s.sheetName)return e.token}let l=i[c];if(c++,!l)return``;let u=(t=l.sheetId)==null?f:t,p={range:l,unitId:(r=l.unitId)==null?M.getUnitId():r,sheetName:O((a=l.unitId)==null?M.getUnitId():a,u)},m=(M==null?void 0:M.getUnitId())!==d;return xt([p],g&&(u!==f||m),k,m)[0]}return e.token}),u=``,p;l.forEach((e,t)=>{u+=e,t===a&&(p=u.length)});let m=[];for(let t=c;t<=e.length-1;t++){var S,C,w;let n=e[t],r=(S=n.sheetId)==null?f:S,i={range:n,unitId:(C=n.unitId)==null?M.getUnitId():C,sheetName:O((w=n.unitId)==null?M.getUnitId():w,r)},a=(M==null?void 0:M.getUnitId())!==d,o=xt([i],g&&(r!==f||a),k,a);m.push(o[0])}let h=s[s.length-1],_=h&&(typeof h==`string`?!1:h.nodeType===n.sequenceNodeType.REFERENCE),v=`${u}${m.length&&_?`,`:``}${m.join(`,`)}`;y(v,!m.length&&p?p:v.length,t)}});(0,l.useEffect)(()=>{if(P&&i){let t=!0,n=0,r=(e,r)=>{if(t){t=!1,n=e.length;return}let i=e.length>n;r&&(n=e.length),I(e.map(e=>e.rangeWithCoord),r,i)},i=new e.DisposableCollection;return i.add(P.selectionMoving$.subscribe(e=>{r(e,!1)})),i.add(P.selectionMoveEnd$.subscribe(e=>{r(e,!0)})),()=>{i.dispose()}}},[i,I,P]),(0,l.useEffect)(()=>{if(s&&P&&v){let t=new e.DisposableCollection,n=()=>{t.dispose(),P.getSelectionControls().forEach((e,n)=>{t.add(e.selectionScaling$.subscribe(e=>{let t=P.getSelectionDataWithStyle().map(e=>e.rangeWithCoord),r=t[n];e.sheetId=r.sheetId,e.unitId=r.unitId,t[n]=e,I(t,!1)})),t.add(e.selectionMoving$.subscribe(e=>{let t=P.getSelectionDataWithStyle().map(e=>e.rangeWithCoord),r=t[n];e.sheetId=r.sheetId,e.unitId=r.unitId,t[n]=e,I(t,!0)}))})},i=(0,r.merge)(v.input$,ee.selectionSet$,P.selectionMoveEnd$).pipe((0,m.debounceTime)(50)).subscribe(()=>{n()});return()=>{i.unsubscribe(),t.dispose()}}},[v,s,I,P,ee.selectionSet$]),P==null||P.getSelectionDataWithStyle(),(0,l.useEffect)(()=>{if(_){let t=C.onCommandExecuted(t=>{if(t.id!==o.SetSelectionsOperation.id)return;let n=t.params;if(n.extra===`formula-editor`&&n.selections.length){let t=n.selections[n.selections.length-1];if(t){var r;let{range:i,primary:a}=t;(a!=null&&a.isMergedMainCell||a!=null&&a.isMerged)&&e.Rectangle.contains(a,i)&&(i.startRow=a.startRow,i.endRow=a.startRow,i.startColumn=a.startColumn,i.endColumn=a.startColumn),i.unitId=n.unitId,i.sheetId=n.subUnitId;let o=u.current===Q.NEED_ADD,s=((r=P==null?void 0:P.getSelectionDataWithStyle())==null?[]:r).map(e=>e.rangeWithCoord);o?s.push(i):s[s.length-1]=i,I(s,!0)}}});return()=>{t.dispose()}}},[C,v,u,E,_,I,P]),(0,l.useEffect)(()=>{if(!v)return;let e=w.textSelection$.subscribe(e=>{e.unitId===v.getEditorId()&&dt({unitId:d,subUnitId:f,refSelections:h.current,editor:v,refSelectionsService:ee,refSelectionsRenderService:P,sheetSkeletonManagerService:F,themeService:T,univerInstanceService:S,currentWorkbook:M})});return()=>e.unsubscribe()},[w.textSelection$,v,h,P,ee,F,f,T,d,S])},Tt=(t,n,r,s,u,d)=>{let f=(0,c.useDependency)(e.ICommandService),p=(0,c.useDependency)(i.IEditorService),m=(0,c.useDependency)(a.IRenderManagerService).getRenderById(n),h=(0,c.useDependency)(e.IUniverInstanceService),g=m==null?void 0:m.with(X);(0,l.useEffect)(()=>{if(t&&g)if(r){let t=()=>{let e=g.getSelectionControls().length;for(let t=1;t<=e;t++)g.clearLastSelection();return setTimeout(()=>{d()},30)},n=f.onCommandExecuted(e=>{e.id===o.SetWorksheetActiveOperation.id&&t()}),r=h.getCurrentTypeOfUnit$(e.UniverInstanceType.UNIVER_SHEET).subscribe(e=>{t()});return()=>{n.dispose(),r.unsubscribe()}}else{let t=f.beforeCommandExecuted(t=>{if(t.id===o.SetWorksheetActiveOperation.id){s(!1),u(),d();let t=p.getEditor(e.DOCS_NORMAL_EDITOR_UNIT_ID_KEY);t==null||t.focus()}});return()=>{t.dispose()}}},[t,g])},Et=(e,t,r)=>{let i=(0,c.useDependency)(n.LexerTreeBuilder),a=(0,l.useRef)(!0);(0,l.useEffect)(()=>{if(e){let e=setTimeout(()=>{a.current=!1},500);return()=>{clearTimeout(e)}}},[e]),(0,l.useEffect)(()=>{a.current||t&&t(i.checkIfAddBracket(r)===0&&r.startsWith(n.operatorToken.EQUALS),`${r}`)},[r,t])},Dt=(e,t=[],i)=>{let a=(0,c.useDependency)(s.IDescriptionService),[o,u]=(0,l.useState)([]),[d,f]=(0,l.useState)(``),p=(0,l.useRef)(-1),m=Z({nodes:t}),h=()=>{u([]),f(``),p.current=-1};return(0,l.useEffect)(()=>{if(i&&e){let e=i.input$.pipe((0,r.debounceTime)(300)).subscribe(()=>{let e=i.getSelectionRanges();if(e.length===1){let t=m.current.nodes,r=e[0];if(r.collapsed){let e=Xe(t,r.startOffset-1,!1);p.current=e;let i=t[e];if(i&&typeof i!=`string`&&i.nodeType===n.sequenceNodeType.FUNCTION){p.current=e;let t=i.token;u(a.getSearchListByNameFirstLetter(t)),f(t);return}}}p.current=-1,f(``),u(e=>e!=null&&e.length?[]:e)});return()=>{e.unsubscribe()}}},[i,e]),(0,l.useEffect)(()=>{e||h()},[e]),{searchList:o,searchText:d,handlerFormulaReplace:(e,t)=>{let r=[...m.current.nodes];if(p.current!==-1){let i=r.splice(p.current+1),a=r.pop()||``,o=(typeof a==`string`?a.length:a.token.length)-e.length;return r.push(e),i[0]!==n.matchToken.OPEN_BRACKET&&t!==n.FunctionType.DefinedName&&(r.push(n.matchToken.OPEN_BRACKET),o--),{text:bt([...r,...i]),offset:o}}},reset:h}},Ot=()=>{},kt=(0,l.forwardRef)(At);function At(t,n){let{isFocus:r,sequenceNodes:i,onSelect:o,editor:s,onClose:f=Ot}=t,p=s.getEditorId(),m=(0,c.useDependency)(c.IShortcutService),h=(0,c.useDependency)(e.ICommandService),{searchList:g,searchText:_,handlerFormulaReplace:v,reset:y}=Dt(r,i,s),b=(0,l.useMemo)(()=>!!g.length,[g]),x=(0,l.useRef)(void 0),[S,C]=(0,l.useState)(0),w=(0,l.useRef)(!1),[T]=$e(p,b,[_,g]),E=Z({searchList:g,active:S}),D=(e,t)=>{let n=v(e,t);n&&(y(),o(n))};function O(e){w.current&&C(e)}function k(){w.current&&C(-1)}(0,l.useEffect)(()=>{if(!g.length)return;let t=`sheet.formula-embedding-editor.search_function.${p}`,n=new e.DisposableCollection,r=e=>{let{searchList:t,active:n}=E.current;switch(e){case c.KeyCode.ARROW_UP:C(e=>{let t=Math.max(0,e-1);return A(t),t});break;case c.KeyCode.ARROW_DOWN:C(e=>{let n=Math.min(t.length-1,e+1);return A(n),n});break;case c.KeyCode.TAB:case c.KeyCode.ENTER:{let e=t[n];D(e.name,e.functionType);break}case c.KeyCode.ESC:y(),f();break}};return n.add(h.registerCommand({id:t,type:e.CommandType.OPERATION,handler(e,t){let{keyCode:n}=t;r(n)}})),[c.KeyCode.ARROW_UP,c.KeyCode.ARROW_DOWN,c.KeyCode.ENTER,c.KeyCode.ESC,c.KeyCode.TAB].map(e=>({id:t,binding:e,preconditions:()=>!0,priority:1e3,staticParameters:{eventType:a.DeviceInputEventType.Keyboard,keyCode:e}})).forEach(e=>{n.add(m.registerShortcut(e))}),()=>{n.dispose()}},[g]);function A(e){let t=x.current;if(!t)return;let n=t.children[e];if(!n)return;let r=t.getBoundingClientRect().top,i=t.offsetHeight,a=n.getBoundingClientRect(),o=a.top,s=a.height;if(o>=0&&o>r&&o-r+s<=i)return;let c=n.offsetTop-(i-s)/2;t.scrollTo({top:c,behavior:`smooth`})}let j=(0,l.useMemo)(()=>{let e=``;return()=>{clearTimeout(e),w.current=!0,e=setTimeout(()=>{w.current=!1},300)}},[]);return g.length>0&&b&&(0,u.jsx)(c.RectPopup,{portal:!0,anchorRect$:T,direction:`vertical`,children:(0,u.jsx)(`ul`,{ref:e=>{x.current=e,n&&(n.current=e)},"data-u-comp":`sheets-formula-editor`,className:(0,d.clsx)(`
|
|
51
|
-
univer-m-0 univer-box-border univer-max-h-[400px] univer-w-[250px] univer-list-none
|
|
52
|
-
univer-overflow-y-auto univer-rounded-lg univer-bg-white univer-p-2 univer-leading-5 univer-shadow-md
|
|
53
|
-
univer-outline-none
|
|
54
|
-
dark:!univer-bg-gray-900
|
|
55
|
-
`,d.borderClassName,d.scrollbarClassName),children:g.map((e,t)=>(0,u.jsxs)(`li`,{className:(0,d.clsx)(`
|
|
56
|
-
univer-box-border univer-cursor-pointer univer-rounded univer-px-2 univer-py-1
|
|
57
|
-
univer-text-gray-900 univer-transition-colors
|
|
58
|
-
dark:!univer-text-white
|
|
59
|
-
`,{"univer-bg-gray-200 dark:!univer-bg-gray-600":S===t}),onMouseEnter:()=>O(t),onMouseLeave:k,onMouseMove:j,onClick:()=>{D(e.name,e.functionType),s&&s.focus()},children:[(0,u.jsxs)(`span`,{className:`univer-block univer-truncate univer-text-xs`,children:[(0,u.jsx)(`span`,{className:`univer-text-red-500`,children:e.name.substring(0,_.length)}),(0,u.jsx)(`span`,{children:e.name.slice(_.length)})]}),(0,u.jsx)(`span`,{className:`univer-block univer-text-xs univer-text-gray-400`,children:e.desc})]},e.name))})})}const jt=e=>e.startsWith(n.operatorToken.EQUALS)?e.slice(1):``,Mt=()=>{},Nt=(0,l.forwardRef)((n,r)=>{var o,s,f,p;let{errorText:m,initValue:h,unitId:g,subUnitId:_,isFocus:v=!0,isSupportAcrossSheet:y=!1,onFocus:b=Mt,onBlur:x=Mt,onChange:S,onVerify:C,className:w,editorId:T,moveCursor:E=!0,onFormulaSelectingChange:D,keyboardEventConfig:O,onMoveInEditor:k,resetSelectionOnBlur:A=!0,autoScrollbar:j=!0,isSingle:M=!0,disableSelectionOnClick:N=!1,autofocus:P=!0,disableContextMenu:F,style:ee}=n,I=(0,c.useDependency)(i.IEditorService),te=(0,l.useRef)(null),ne=(0,c.useEvent)(S);(0,l.useImperativeHandle)(r,()=>({isClickOutSide:e=>te.current?!te.current.contains(e.target):!1}));let L=(0,c.useEvent)(D),re=(0,l.useRef)(null),R=(0,l.useRef)(void 0),z=R.current,[B,ie]=(0,l.useState)(v),ae=(0,l.useRef)(null),V=(0,l.useMemo)(()=>T==null?(0,e.createInternalEditorID)(`${t.EMBEDDING_FORMULA_EDITOR}-${(0,e.generateRandomId)(4)}`):T,[]),oe=(0,l.useMemo)(()=>m!==void 0,[m]),se=(0,c.useDependency)(e.IUniverInstanceService),H=se.getUnit(V);(0,c.useObservable)(H==null?void 0:H.change$);let U=lt(),W=e.BuildTextUtils.transform.getPlainText((o=H==null||(s=H.getBody())==null?void 0:s.dataStream)==null?``:o),ce=Z(W),le=(0,l.useMemo)(()=>jt(W),[W]),ue=(0,l.useMemo)(()=>U(le),[le,U]),{isSelecting:G,isSelectingRef:de}=ct({unitId:g,subUnitId:_,editorId:V,isFocus:B,disableOnClick:N}),fe=(0,l.useRef)(``),pe=(0,c.useDependency)(a.IRenderManagerService).getRenderById(V),me=pe==null?void 0:pe.with(i.DocSelectionRenderService),he=me==null?void 0:me.isFocusing,ge=(0,c.useObservable)((0,l.useMemo)(()=>se.getCurrentTypeOfUnit$(e.UniverInstanceType.UNIVER_DOC),[se])),K=(ge==null?void 0:ge.getUnitId())===V,_e=(0,l.useRef)([]),ve=G,ye=(f=(p=(0,c.useDependency)(e.IConfigService).getConfig(`sheets-formula-ui.base.config`))==null?void 0:p.functionScreenTips)==null?!0:f;(0,c.useUpdateEffect)(()=>{ne(W)},[W,ne]);let be=pt(`=`),xe=ft(g,_),q=(0,c.useEvent)((e,t=!0,n,r)=>{if(!R.current)return;fe.current=e;let i=e[0]===`=`?e.slice(1):``,a=U(i),o=a.reduce((e,t)=>typeof t==`object`?`${e}${t.token}`:`${e}${t}`,``),s=be(R.current,o===i?a:[],t,r);if(_e.current=s,n){let e=r==null?z==null?void 0:z.getSelectionRanges():r;if((e==null?void 0:e.length)!==1)return;let t=Ze(a,Xe(a,e[0].startOffset-1,!1));if(t>=0){let e=s.splice(t,1)[0];e&&s.push(e)}xe(B?s:[],R.current)}});(0,l.useEffect)(()=>{B&&q(W,!1,!0)},[B]),(0,l.useEffect)(()=>{if(B){if(fe.current===W)return;q(W,!1,!0)}},[W]),Et(B,C,W);let J=ot(z),Se=vt(B,g,_);(0,l.useEffect)(()=>{var e;L(G,(e=me==null?void 0:me.isFocusing)==null?!0:e)},[L,G]),(0,i.useKeyboardEvent)(B,O,z),(0,l.useLayoutEffect)(()=>{let e;return ae.current&&(e=I.register({autofocus:P,editorUnitId:V,initialSnapshot:{id:V,body:{dataStream:`${h}\r\n`,textRuns:[],customBlocks:[],customDecorations:[],customRanges:[]},documentStyle:{}}},ae.current),R.current=I.getEditor(V),q(h,!1,!0)),()=>{e==null||e.dispose()}},[]),(0,l.useLayoutEffect)(()=>{v?(ie(v),J()):(A&&(z==null||z.blur(),Se()),ie(v))},[v,z,J,Se,A]);let{checkScrollBar:Ce}=(0,i.useResize)(z,M,j);_t(B,!!(G&&K),g,V,F),gt(!!(B&&he&&E),ve,z,k);let we=(0,c.useEvent)((e,t,n)=>{if(!he)return;let r=t===-1?void 0:[{startOffset:t+1,endOffset:t+1,collapsed:!0}];q(`=${e}`,!0,n,r),n&&(J(),t!==-1&&setTimeout(()=>{let e={startOffset:t+1,endOffset:t+1},n=z==null?void 0:z.render.with(i.DocBackScrollRenderController);n==null||n.scrollToRange({...e,collapsed:!0})},50),Ce())});wt(B&&!!(G&&K),B,de,g,_,_e,y,!!ve,z,we),Tt(B&&!!(G&&K),g,y,ie,x,()=>{q(ce.current,!1,!0)});let Y=e=>{if(e){let t=z==null?void 0:z.getSelectionRanges();if(t&&t.length===1){let n=t[0];if(n.collapsed){let t=e.offset;setTimeout(()=>{z==null||z.setSelectionRanges([{startOffset:n.startOffset-t,endOffset:n.endOffset-t}])},30)}}J(),q(`=${e.text}`)}},Te=()=>{ie(!0),b(),J()};return(0,u.jsxs)(`div`,{className:w,children:[(0,u.jsx)(`div`,{ref:te,className:(0,d.clsx)(`
|
|
60
|
-
univer-relative univer-box-border univer-flex univer-size-full univer-items-center
|
|
61
|
-
univer-justify-around univer-gap-2 univer-rounded-none univer-p-0 univer-ring-1
|
|
62
|
-
`,{"univer-ring-primary-500":B,"univer-ring-red-500":oe}),children:(0,u.jsx)(`div`,{ref:ae,className:`univer-relative univer-size-full`,onMouseUp:Te})}),m!==void 0&&(0,u.jsx)(`div`,{className:`univer-my-1 univer-text-xs univer-text-red-500`,children:m}),ye&&z&&le!==``&&(0,u.jsx)(at,{editor:z,isFocus:B,formulaText:W,onClose:()=>J()}),ye&&!!z&&(0,u.jsx)(kt,{isFocus:B,sequenceNodes:ue,onSelect:Y,ref:re,editor:z})]})});function Pt(r,i,a,o){var s;let u=(0,c.useDependency)(n.LexerTreeBuilder),d=pt(``),f=(0,c.useObservable)(r==null||(s=r.getDocumentDataModel())==null?void 0:s.change$),[p,m]=(0,l.useState)([]),h=(0,c.useDependency)(t.IMarkSelectionService),g=(0,l.useRef)(``),_=(0,c.useDependency)(e.IUniverInstanceService);return(0,l.useEffect)(()=>{if(!r)return;let e=r.getDocumentDataModel().getPlainText();if(g.current===e)return;g.current=e;let t=u.sequenceNodesBuilder(e);m(t==null?[]:t)},[f,r,u]),(0,l.useEffect)(()=>{if(!r)return;if(!i){var t,a;let e=r.getDocumentData();r.setDocumentData({...e,body:{...e.body,dataStream:(t=(a=e.body)==null?void 0:a.dataStream)==null?``:t,textRuns:[]}});return}let s=d(r,p,!1),c=new e.DisposableCollection;return s.forEach(t=>{let r=(0,n.deserializeRangeWithSheet)(t.token),i=_.getCurrentUnitForType(e.UniverInstanceType.UNIVER_SHEET),a=i==null?void 0:i.getActiveSheet();if(!r.sheetName&&o!==(a==null?void 0:a.getSheetId())||r.sheetName&&(a==null?void 0:a.getName())!==r.sheetName)return;let s=new e.ColorKit(t.themeColor).toRgb(),l=h.addShape({range:r.range,style:{stroke:t.themeColor,fill:`rgba(${s.r}, ${s.g}, ${s.b}, 0.1)`,strokeDash:12},primary:null});l&&c.add(()=>h.removeShape(l))}),()=>{c.dispose()}},[r,i,d,h,p]),{sequenceNodes:p}}function Ft(t){let n=(0,c.useDependency)(o.SheetsSelectionsService),{supportAcrossSheet:r=!1,keepSheetReference:i=!1,unitId:a,subUnitId:s,onChange:u}=t,d=(0,c.useDependency)(e.IUniverInstanceService).getUnit(a,e.UniverInstanceType.UNIVER_SHEET),f=(0,c.useEvent)(u),p=(0,c.useEvent)((e,t)=>{let n=d==null?void 0:d.getActiveSheet();if(!n||!r&&n.getSheetId()!==s||!(e!=null&&e.length))return;let o=i?n.getName():n.getSheetId()===s?``:n.getName();f(e.map(e=>({range:e.range,unitId:a,sheetName:o})),t)});(0,l.useEffect)(()=>{let t=new e.DisposableCollection;return t.add(n.selectionMoveStart$.subscribe(e=>{p(e,!0)})),t.add(n.selectionMoving$.subscribe(e=>{p(e,!1)})),t.add(n.selectionMoveEnd$.subscribe(e=>{p(e,!1)})),()=>{t.dispose()}},[p,n.selectionMoveEnd$,n.selectionMoveStart$,n.selectionMoving$])}const It=e=>!e.some(e=>{if(typeof e==`string`){if(e!==n.matchToken.COMMA)return!0}else if(e.nodeType!==n.sequenceNodeType.REFERENCE)return!0;return!1}),Lt=e=>{if(e.endColumn<e.startColumn){let t=e.endColumn;e.endColumn=e.startColumn,e.startColumn=t}if(e.endRow<e.startRow){let t=e.endRow;e.endRow=e.startRow,e.startRow=t}return e};function Rt(t){let{visible:r,initialValue:i,unitId:a,subUnitId:o,maxRangeCount:s=1/0,supportAcrossSheet:p,keepSheetReference:m,onConfirm:h,onClose:g,onShowBySelection:_}=t,v=(0,c.useDependency)(e.LocaleService),y=(0,c.useDependency)(n.LexerTreeBuilder),[b,x]=(0,l.useState)([]),[S,C]=(0,l.useState)(0),w=(0,l.useRef)(null);(0,l.useEffect)(()=>{if(r&&i.length){let e=i.map(e=>e.sheetName?(0,n.serializeRangeWithSheet)(e.sheetName,e.range):(0,n.serializeRange)(e.range));x(e),C(e.length-1)}else x([``]),C(0)},[r]);let T=(e,t)=>{let n=[...b];n[e]=t,x(n)},E=()=>{x([...b,``]),C(b.length)},D=e=>{b.splice(e,1),x([...b])};return Ft({unitId:a,subUnitId:o,supportAcrossSheet:p,keepSheetReference:m,onChange:(e,t)=>{if(!r&&_!=null&&_(e))return;let i=new Set(b),a=e.map(e=>e.sheetName?(0,n.serializeRangeWithSheet)(e.sheetName,e.range):(0,n.serializeRange)(e.range)),o=a.filter(e=>!i.has(e));if(!o.length)return;let c=[...b];if(a.length>1){t||c.splice(S,1),c.push(...o);let e=c.slice(0,s);x(e),C(e.length-1),requestAnimationFrame(()=>{var e;(e=w.current)==null||e.scrollTo({top:w.current.scrollHeight})})}else c.splice(S,1,...o),x(c.slice(0,s)),C(S+o.length-1)}}),(0,u.jsx)(d.Dialog,{width:`328px`,open:r,title:v.t(`rangeSelector.title`),draggable:!0,mask:!1,maskClosable:!1,footer:(0,u.jsxs)(`footer`,{className:`univer-flex univer-gap-2`,children:[(0,u.jsx)(d.Button,{onClick:g,children:v.t(`rangeSelector.cancel`)}),(0,u.jsx)(d.Button,{variant:`primary`,onClick:()=>{h(b.filter(e=>{let t=y.sequenceNodesBuilder(e);return t&&t.length===1&&typeof t[0]!=`string`&&t[0].nodeType===n.sequenceNodeType.REFERENCE}).map(e=>(0,n.deserializeRangeWithSheet)(e)).map(e=>({...e,range:Lt(e.range)})))},children:v.t(`rangeSelector.confirm`)})]}),onClose:g,children:(0,u.jsxs)(`div`,{ref:w,className:(0,d.clsx)(`-univer-mx-6 univer-max-h-60 univer-overflow-y-auto univer-px-6`,d.scrollbarClassName),children:[b.map((e,t)=>(0,u.jsxs)(`div`,{className:`univer-mb-2 univer-flex univer-items-center univer-gap-4`,children:[(0,u.jsx)(d.Input,{className:(0,d.clsx)(`univer-w-full`,{"univer-border-primary-600":S===t}),placeholder:v.t(`rangeSelector.placeHolder`),onFocus:()=>C(t),value:e,onChange:e=>T(t,e)}),b.length>1&&(0,u.jsx)(f.DeleteIcon,{className:`univer-cursor-pointer`,onClick:()=>D(t)})]},t)),b.length<s&&(0,u.jsx)(`div`,{children:(0,u.jsxs)(d.Button,{variant:`link`,onClick:E,children:[(0,u.jsx)(f.IncreaseIcon,{}),(0,u.jsx)(`span`,{children:v.t(`rangeSelector.addAnotherRange`)})]})})]})})}function zt(e){return e.split(n.matchToken.COMMA).filter(e=>!!e).map(e=>(0,n.deserializeRangeWithSheet)(e))}function Bt(e){return e.map(e=>e.sheetName?(0,n.serializeRangeWithSheet)(e.sheetName,e.range):(0,n.serializeRange)(e.range)).join(n.matchToken.COMMA)}function Vt(t){let[n,r]=(0,l.useState)(null),{onVerify:a,selectorRef:s,unitId:p,subUnitId:m,maxRangeCount:h,supportAcrossSheet:g,keepSheetReference:_,autoFocus:v,onChange:y,onRangeSelectorDialogVisibleChange:b,onClickOutside:x,onFocusChange:S,forceShowDialogWhenSelectionChanged:C,hideEditor:w,resetRange:T}=t,[E,D]=(0,l.useState)(v==null?!1:v),[O,k]=(0,l.useState)(!1),[A,j]=(0,l.useState)([]),M=(0,c.useDependency)(e.LocaleService),N=(0,c.useDependency)(i.IEditorService),{sequenceNodes:P}=Pt(n,E,p,m),F=Z(P),ee=(0,c.useDependency)(e.ICommandService),I=(0,c.useEvent)(()=>{n==null||n.setSelectionRanges([]),n==null||n.blur(),N.blur()}),te=(0,c.useEvent)(()=>{var e,t;I(),j(zt((e=n==null||(t=n.getDocumentDataModel())==null?void 0:t.getPlainText())==null?``:e)),k(!0)});return(0,l.useEffect)(()=>{s&&(s.current={get editor(){return n},focus(){N.focus(n.getEditorId())},blur:I,verify:()=>It(F.current),showDialog:e=>{I(),j(e),k(!0)},hideDialog:()=>{j([]),k(!1)},getValue:()=>{var e,t;return(e=n==null||(t=n.getDocumentDataModel())==null?void 0:t.getPlainText())==null?``:e}})},[I,n,N,s,F]),(0,l.useEffect)(()=>{var e,t;a==null||a(It(P),(e=n==null||(t=n.getDocumentDataModel())==null?void 0:t.getPlainText())==null?``:e)},[P]),(0,l.useEffect)(()=>{b==null||b(O)},[O]),(0,l.useEffect)(()=>{if(O&&T)return()=>{let e={unitId:p,subUnitId:m,selections:T};ee.executeCommand(o.SetSelectionsOperation.id,e)}},[O]),(0,u.jsxs)(u.Fragment,{children:[w?null:(0,u.jsx)(i.RichTextEditor,{isSingle:!0,...t,onFocusChange:(e,t)=>{D(e),S==null||S(e,t)},editorRef:r,onClickOutside:()=>{D(!1),I(),x==null||x()},icon:(0,u.jsx)(d.Tooltip,{title:M.t(`rangeSelector.buttonTooltip`),placement:`bottom`,children:(0,u.jsx)(f.SelectRangeIcon,{className:`
|
|
63
|
-
univer-cursor-pointer
|
|
64
|
-
dark:!univer-text-gray-300
|
|
65
|
-
`,onClick:te})})}),(0,u.jsx)(Rt,{initialValue:A,unitId:p,subUnitId:m,visible:O,maxRangeCount:h,onConfirm:t=>{let r=Bt(t),i=e.RichTextBuilder.newEmptyData();i.body.dataStream=r,n==null||n.replaceText(r,!1),y==null||y(i,r),k(!1),j([]),requestAnimationFrame(()=>{I()})},onClose:()=>{k(!1),j([])},supportAcrossSheet:g,keepSheetReference:_,onShowBySelection:e=>E||C?(j(e),k(!0),!1):!0})]})}const Ht=()=>{var e,t;let r=(0,c.useObservable)((0,c.useDependency)(Je).currentSelector$),i=(0,l.useRef)(null);return(0,l.useEffect)(()=>{if(r){var e,t;return(e=i.current)==null||e.showDialog((t=r.initialValue)==null?[]:t),()=>{var e;(e=i.current)==null||e.hideDialog()}}},[r]),(0,u.jsx)(Vt,{unitId:(e=r==null?void 0:r.unitId)==null?``:e,subUnitId:(t=r==null?void 0:r.subUnitId)==null?``:t,hideEditor:!0,selectorRef:i,onChange:(e,t)=>{var i;r==null||r.callback((i=t==null?void 0:t.split(`,`).map(e=>(0,n.deserializeRangeWithSheet)(e)))==null?[]:i)}})};let $=class extends e.Plugin{constructor(t=V,n,r,i,a){super(),this._config=t,this._injector=n,this._renderManagerService=r,this._configService=i,this._uiPartsService=a;let{menu:o,...s}=(0,e.merge)(V,this._config);o&&this._configService.setConfig(`menu`,o,{merge:!0}),this._configService.setConfig(ae,s,{merge:!0})}onStarting(){(0,e.registerDependencies)(this._injector,[[T,{useClass:E}],[Je],[Ke],[U],[pe],[he],[z],[qe]]),this._initUIPart()}onReady(){[[X]].forEach(t=>{this.disposeWithMe(this._renderManagerService.registerRenderModule(e.UniverInstanceType.UNIVER_SHEET,t))})}onRendered(){[[H]].forEach(t=>{this.disposeWithMe(this._renderManagerService.registerRenderModule(e.UniverInstanceType.UNIVER_SHEET,t))}),(0,e.touchDependencies)(this._injector,[[Ke],[U],[he],[qe]])}onSteady(){this._injector.get(z)}_initUIPart(){let e=this._injector.get(c.ComponentManager);this.disposeWithMe(e.register(t.RANGE_SELECTOR_COMPONENT_KEY,Vt)),this.disposeWithMe(e.register(t.EMBEDDING_FORMULA_EDITOR_COMPONENT_KEY,Nt)),this.disposeWithMe(this._uiPartsService.registerComponent(c.BuiltInUIPart.GLOBAL,()=>(0,c.connectInjector)(Ht,this._injector)))}};x($,`pluginName`,te),x($,`packageName`,B),x($,`version`,ie),x($,`type`,e.UniverInstanceType.UNIVER_SHEET),$=C([(0,e.DependentOn)(s.UniverSheetsFormulaPlugin),S(1,(0,e.Inject)(e.Injector)),S(2,a.IRenderManagerService),S(3,e.IConfigService),S(4,c.IUIPartsService)],$),exports.FORMULA_PROMPT_ACTIVATED=w,exports.FormulaEditor=Nt,Object.defineProperty(exports,`FormulaReorderController`,{enumerable:!0,get:function(){return z}}),exports.GlobalRangeSelectorService=Je,exports.HelpFunctionOperation=D,exports.InsertFunctionOperation=O,exports.MoreFunctionsOperation=L,exports.RangeSelector=Vt,Object.defineProperty(exports,`RefSelectionsRenderService`,{enumerable:!0,get:function(){return X}}),exports.ReferenceAbsoluteOperation=re,exports.SearchFunctionOperation=R,exports.SelectEditorFormulaOperation=_,exports.SheetCopyFormulaOnlyCommand=h,exports.SheetOnlyPasteFormulaCommand=g,Object.defineProperty(exports,`UniverSheetsFormulaUIPlugin`,{enumerable:!0,get:function(){return $}});
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require(`@univerjs/core`),t=require(`@univerjs/sheets-ui`),n=require(`@univerjs/engine-formula`),r=require(`rxjs`),i=require(`@univerjs/docs-ui`),a=require(`@univerjs/engine-render`),o=require(`@univerjs/sheets`),s=require(`@univerjs/sheets-formula`),c=require(`@univerjs/ui`),l=require(`@univerjs/docs`),u=require(`react`),d=require(`react/jsx-runtime`),f=require(`@univerjs/design`),p=require(`@univerjs/icons`),m=require(`rxjs/operators`);const h={id:`sheet.command.copy-formula-only`,type:e.CommandType.COMMAND,handler:async e=>e.get(t.ISheetClipboardService).copy({copyHookType:t.PREDEFINED_HOOK_NAME_COPY.SPECIAL_COPY_FORMULA_ONLY})},g={id:`sheet.command.paste-formula`,type:e.CommandType.COMMAND,handler:async n=>n.get(e.ICommandService).executeCommand(t.SheetPasteCommand.id,{value:t.PREDEFINED_HOOK_NAME_PASTE.SPECIAL_PASTE_FORMULA})};function _(e){"@babel/helpers - typeof";return _=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},_(e)}function v(e,t){if(_(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(_(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function y(e){var t=v(e,`string`);return _(t)==`symbol`?t:t+``}function b(e,t,n){return(t=y(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function x(e,t){return function(n,r){t(n,r,e)}}function S(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}const C=`FORMULA_PROMPT_ACTIVATED`,w=(0,e.createIdentifier)(`formula-ui.prompt-service`);let T=class{constructor(e){this._contextService=e,b(this,`_search$`,new r.Subject),b(this,`_help$`,new r.Subject),b(this,`_navigate$`,new r.Subject),b(this,`_accept$`,new r.Subject),b(this,`_acceptFormulaName$`,new r.Subject),b(this,`search$`,this._search$.asObservable()),b(this,`help$`,this._help$.asObservable()),b(this,`navigate$`,this._navigate$.asObservable()),b(this,`accept$`,this._accept$.asObservable()),b(this,`acceptFormulaName$`,this._acceptFormulaName$.asObservable()),b(this,`_searching`,!1),b(this,`_helping`,!1),b(this,`_sequenceNodes`,[]),b(this,`_isLockedOnSelectionChangeRefString`,!1),b(this,`_isLockedOnSelectionInsertRefString`,!1)}dispose(){this._search$.complete(),this._help$.complete(),this._navigate$.complete(),this._accept$.complete(),this._acceptFormulaName$.complete(),this._sequenceNodes=[]}search(e){this._contextService.setContextValue(C,e.visible),this._searching=e.visible,this._search$.next(e)}isSearching(){return this._searching}help(e){this._helping=e.visible,this._help$.next(e)}isHelping(){return this._helping}navigate(e){this._navigate$.next(e)}accept(e){this._accept$.next(e)}acceptFormulaName(e){this._acceptFormulaName$.next(e)}getSequenceNodes(){return[...this._sequenceNodes]}setSequenceNodes(e){this._sequenceNodes=e}clearSequenceNodes(){this._sequenceNodes=[]}getCurrentSequenceNode(e){return this._sequenceNodes[this.getCurrentSequenceNodeIndex(e)]}getCurrentSequenceNodeByIndex(e){return this._sequenceNodes[e]}getCurrentSequenceNodeIndex(e){let t=0,n=this._sequenceNodes[0];for(let r=0,i=this._sequenceNodes.length;r<i;r++){let i=this._sequenceNodes[r];if(typeof i==`string`)t++;else{let{endIndex:e}=i;t=e}if(e<=t)return typeof n==`string`&&e!==0?r+1:r}return this._sequenceNodes.length}updateSequenceRef(e,t){let r=this._sequenceNodes[e];if(typeof r==`string`||r.nodeType!==n.sequenceNodeType.REFERENCE)return;let i=t.length-r.token.length,a={...r};a.token=t,a.endIndex+=i,this._sequenceNodes[e]=a;for(let t=e+1,n=this._sequenceNodes.length;t<n;t++){let e=this._sequenceNodes[t];if(typeof e==`string`)continue;let n={...e};n.startIndex+=i,n.endIndex+=i,this._sequenceNodes[t]=n}}insertSequenceRef(e,t){let r=t.length,i=this.getCurrentSequenceNodeIndex(e);this._sequenceNodes.splice(i,0,{token:t,startIndex:e,endIndex:e+r-1,nodeType:n.sequenceNodeType.REFERENCE});for(let e=i+1,t=this._sequenceNodes.length;e<t;e++){let t=this._sequenceNodes[e];if(typeof t==`string`)continue;let n={...t};n.startIndex+=r,n.endIndex+=r,this._sequenceNodes[e]=n}}insertSequenceString(e,t){let n=this.getCurrentSequenceNodeIndex(e),r=t.split(``);this._sequenceNodes.splice(n,0,...r);let i=r.length;for(let e=n+i,t=this._sequenceNodes.length;e<t;e++){let t=this._sequenceNodes[e];if(typeof t==`string`)continue;let n={...t};n.startIndex+=i,n.endIndex+=i,this._sequenceNodes[e]=n}}enableLockedSelectionChange(){this._isLockedOnSelectionChangeRefString=!0}disableLockedSelectionChange(){this._isLockedOnSelectionChangeRefString=!1}isLockedSelectionChange(){return this._isLockedOnSelectionChangeRefString}enableLockedSelectionInsert(){this._isLockedOnSelectionInsertRefString=!0}disableLockedSelectionInsert(){this._isLockedOnSelectionInsertRefString=!1}isLockedSelectionInsert(){return this._isLockedOnSelectionInsertRefString}};T=S([x(0,e.IContextService)],T);const E={id:`formula-ui.operation.help-function`,type:e.CommandType.OPERATION,handler:async(e,t)=>(e.get(w).help(t),!0)},D={id:`formula-ui.operation.insert-function`,type:e.CommandType.OPERATION,handler:async(r,c)=>{let l=r.get(o.SheetsSelectionsService),u=r.get(i.IEditorService),d=l.getCurrentSelections();if(!d||!d.length)return!1;let f=(0,o.getSheetCommandTarget)(r.get(e.IUniverInstanceService));if(!f)return!1;let{worksheet:p,unitId:m,subUnitId:h}=f,g=p.getCellMatrix(),{value:_}=c,v=r.get(e.ICommandService);r.get(t.IEditorBridgeService);let y=[],b=[],x=null,S=0,C=0,w=``;if(d.length===1&&(M(d[0].range)||N(d[0].range)&&P(g,d[0].range))){var T,E;let{range:e,primary:t}=d[0],r=(T=t==null?void 0:t.actualRow)==null?e.startRow:T,i=(E=t==null?void 0:t.actualColumn)==null?e.startColumn:E;x=e,S=r,C=i;let a=O(g,r,i);a&&(w=(0,n.serializeRange)(a))}else d.some(e=>{let{range:t,primary:r}=e;if(P(g,t)){var i,a;let e=(i=r==null?void 0:r.actualRow)==null?t.startRow:i,o=(a=r==null?void 0:r.actualColumn)==null?t.startColumn:a,s=O(g,e,o);if(!s)return x=t,S=e,C=o,!0;let c=`=${_}(${(0,n.serializeRange)(s)})`;y.push({range:t,primary:{row:e,column:o},formula:c})}else{let{startRow:e,startColumn:r,endRow:i,endColumn:a}=t;if(e===i){let o=F(g,e,a,p.getColumnCount()-1),s=`=${_}(${(0,n.serializeRange)({startRow:e,endRow:i,startColumn:r,endColumn:o===a?a-1:a})})`;b.push({range:t,primary:{row:e,column:o},formula:s})}else{let o=-1;for(let e=r;e<=a;e++){let t=ee(g,e,i,p.getRowCount()-1);o=Math.max(o,t)}let s=o===i?i-1:i;for(let i=r;i<=a;i++){let r=`=${_}(${(0,n.serializeRange)({startRow:e,endRow:s,startColumn:i,endColumn:i})})`;b.push({range:t,primary:{row:o,column:i},formula:r})}}}return!1});if(x){let n=(0,o.getCellAtRowCol)(S,C,p),r={unitId:m,subUnitId:h,selections:[{range:e.Rectangle.clone(x),primary:{startRow:n.startRow,startColumn:n.startColumn,endRow:n.endRow,endColumn:n.endColumn,actualRow:S,actualColumn:C,isMerged:n.isMerged,isMergedMainCell:n.startRow===S&&n.startColumn===C}}]};await v.executeCommand(o.SetSelectionsOperation.id,r);let i=u.getEditor(e.DOCS_NORMAL_EDITOR_UNIT_ID_KEY),s=u.getEditor(e.DOCS_FORMULA_BAR_EDITOR_UNIT_ID_KEY);v.syncExecuteCommand(t.SetCellEditVisibleOperation.id,{visible:!0,unitId:m,eventType:a.DeviceInputEventType.Dblclick});let c=`=${_}(${w}`;i==null||i.replaceText(c),s==null||s.replaceText(c,!1)}return y.length===0&&b.length===0?!1:v.executeCommand(s.InsertFunctionCommand.id,{list:y,listOfRangeHasNumber:b})}};function O(e,t,n){let r=k(e,t,n);if(r!==t)return{startRow:r,endRow:t-1,startColumn:n,endColumn:n};let i=A(e,t,n);return i===n?null:{startRow:t,endRow:t,startColumn:i,endColumn:n-1}}function k(e,t,n){let r=!1;if(t===0)return t;for(let i=t-1;i>=0;i--){let t=e.getValue(i,n);if(j(t)&&!r){if(i===0)return 0;r=!0}else if(r&&!j(t))return i+1;else if(r&&i===0)return 0}return t}function A(e,t,n){let r=!1;if(n===0)return n;for(let i=n-1;i>=0;i--){let n=e.getValue(t,i);if(j(n)&&!r){if(i===0)return 0;r=!0}else if(r&&!j(n))return i+1;else if(r&&i===0)return 0}return n}function j(t){if(t!=null&&t.p){let n=t==null?void 0:t.p.body;if(n==null)return!1;let r=n.dataStream;return(0,e.isRealNum)(r.substring(r.length-2,r.length)===e.DEFAULT_EMPTY_DOCUMENT_VALUE?r.substring(0,r.length-2):r)}return t&&(t.t===e.CellValueType.NUMBER||(0,e.getCellValueType)(t)===e.CellValueType.NUMBER)}function M(e){return e.startRow===e.endRow&&e.startColumn===e.endColumn}function N(e){return e.startRow!==e.endRow&&e.startColumn!==e.endColumn}function P(e,t){for(let n=t.startRow;n<=t.endRow;n++)for(let r=t.startColumn;r<=t.endColumn;r++)if(j(e.getValue(n,r)))return!1;return!0}function F(e,t,n,r){for(let i=n;i<=r;i++)if(!e.getValue(t,i))return i;return r}function ee(e,t,n,r){for(let i=n;i<=r;i++)if(!e.getValue(i,t))return i;return r}const I=`SHEET_FORMULA_UI_PLUGIN`,te=`${I}_MORE_FUNCTIONS_COMPONENT`,L={id:`formula-ui.operation.more-functions`,type:e.CommandType.OPERATION,handler:async e=>(e.get(c.ISidebarService).open({header:{title:`formula.insert.tooltip`},children:{label:te}}),!0)},ne=/^\$?[A-Za-z]+\$?\d+$/;function re(e,t,r){if(!t.startsWith(`=`)||t.length<=1)return null;let i=e.sequenceNodesBuilder(t);if(!(i!=null&&i.length))return null;let a=Math.min(Math.max(r,0),t.length),o=a-1;if(o<0)return null;let s=i.find(e=>typeof e==`string`||e.nodeType!==n.sequenceNodeType.REFERENCE?!1:o>=e.startIndex&&o<=e.endIndex+1);if(!s||typeof s==`string`)return null;let c=R(s,o-s.startIndex);return c==null||c.token===s.token?null:{formulaText:`=${(0,n.generateStringWithSequence)(i.map(e=>e===s?{...e,token:c.token,endIndex:e.startIndex+c.token.length-1}:e))}`,cursorOffset:ie(a,s.startIndex+1,s.endIndex+2,c.token.length,c)}}function R(t,r){let i=(0,n.deserializeRangeWithSheetWithCache)(t.token);if(i==null)return null;let{range:a}=i;if(a.rangeType===e.RANGE_TYPE.ROW||a.rangeType===e.RANGE_TYPE.COLUMN)return{token:(0,n.serializeRangeToRefString)({...i,range:{...a,startAbsoluteRefType:a.startAbsoluteRefType===e.AbsoluteRefType.NONE?e.AbsoluteRefType.ALL:e.AbsoluteRefType.NONE,endAbsoluteRefType:a.endAbsoluteRefType===e.AbsoluteRefType.NONE?e.AbsoluteRefType.ALL:e.AbsoluteRefType.NONE}}),referenceTarget:`both`,previousSeparatorOffset:null,nextSeparatorOffset:null};let{refBody:o}=(0,n.handleRefStringInfo)(t.token),s=o.split(`:`),c=s.length===2?t.token.indexOf(`:`):null;if(s.some(e=>!ne.test(e)))return null;let l=s.length===2,u=l?z(t.token,o,r):`start`,d={...a};if(u===`start`||u===`both`){let e=B((0,n.getAbsoluteRefTypeWithSingleString)(s[0]));d.startAbsoluteRefType=e,l||(d.endAbsoluteRefType=e)}(u===`end`||u===`both`)&&(d.endAbsoluteRefType=B((0,n.getAbsoluteRefTypeWithSingleString)(s[1])));let f=(0,n.serializeRangeToRefString)({...i,range:d});return{token:f,referenceTarget:u,previousSeparatorOffset:c,nextSeparatorOffset:s.length===2?f.indexOf(`:`):null}}function z(e,t,n){let r=e.length-t.length+t.indexOf(`:`);return n===r||n===r+1?`both`:n<r?`start`:`end`}function B(t){switch(t){case e.AbsoluteRefType.NONE:return e.AbsoluteRefType.ALL;case e.AbsoluteRefType.ALL:return e.AbsoluteRefType.ROW;case e.AbsoluteRefType.ROW:return e.AbsoluteRefType.COLUMN;case e.AbsoluteRefType.COLUMN:default:return e.AbsoluteRefType.NONE}}function ie(e,t,n,r,i){if(i.referenceTarget===`both`&&i.previousSeparatorOffset!=null&&i.nextSeparatorOffset!=null){let n=t+i.previousSeparatorOffset,r=t+i.nextSeparatorOffset;if(e===n)return r;if(e===n+1)return r+1}if(e<=t)return e;let a=r-(n-t);if(e>=n)return e+a;let o=e-t;return t+Math.min(o,r)}const ae={id:`formula-ui.operation.change-ref-to-absolute`,type:e.CommandType.OPERATION,handler:async t=>{var r,a;let o=t.get(i.IEditorService),s=t.get(l.DocSelectionManagerService),c=t.get(n.LexerTreeBuilder),u=o.getFocusEditor();if(!u)return!1;let d=u.getEditorId();if(d!==e.DOCS_NORMAL_EDITOR_UNIT_ID_KEY&&d!==e.DOCS_FORMULA_BAR_EDITOR_UNIT_ID_KEY)return!1;let f=s.getActiveTextRange();if(!f)return!1;let p=re(c,e.BuildTextUtils.transform.getPlainText((r=(a=u.getDocumentData().body)==null?void 0:a.dataStream)==null?``:r),f.endOffset);return p?(u.replaceText(p.formulaText,[{startOffset:p.cursorOffset,endOffset:p.cursorOffset,collapsed:!0}]),!0):!1}},V={id:`formula-ui.operation.search-function`,type:e.CommandType.OPERATION,handler:async(e,t)=>(e.get(w).search(t),!0)};let oe=class extends e.Disposable{constructor(e,t,n,r){super(),this._sheetInterceptorService=e,this._univerInstanceService=t,this._formulaDataModel=n,this._lexerTreeBuilder=r,this._initialize()}_initialize(){this.disposeWithMe(this._sheetInterceptorService.interceptCommand({getMutations:e=>e.id===o.ReorderRangeCommand.id?this._reorderFormula(e.params):{redos:[],undos:[]}}))}_reorderFormula(t){let n=[],r=[],{unitId:i,subUnitId:a,range:s,order:c}=t,l=this._univerInstanceService.getUniverSheetInstance(i),u=l==null?void 0:l.getSheetBySheetId(a);if(!u)return{redos:n,undos:r};let d=u.getCellMatrix(),f=new e.ObjectMatrix,p=new e.ObjectMatrix,m=!1;return e.Range.foreach(s,(t,n)=>{let r=t;c.hasOwnProperty(t)&&(r=c[t]);let o=d.getValue(r,n);if(o!=null&&o.f||o!=null&&o.si){m=!0;let s=this._formulaDataModel.getFormulaStringByCell(r,n,a,i),c=this._lexerTreeBuilder.moveFormulaRefOffset(s,0,t-r),l=e.Tools.deepClone(o);l.f=c,l.si=null,f.setValue(t,n,l)}else f.setValue(t,n,o);p.setValue(t,n,d.getValue(t,n))}),m?(n.push({id:o.SetRangeValuesMutation.id,params:{unitId:i,subUnitId:a,cellValue:f.getMatrix()}}),r.push({id:o.SetRangeValuesMutation.id,params:{unitId:i,subUnitId:a,cellValue:p.getMatrix()}}),{redos:n,undos:r}):{redos:n,undos:r}}};oe=S([x(0,(0,e.Inject)(o.SheetInterceptorService)),x(1,(0,e.Inject)(e.IUniverInstanceService)),x(2,(0,e.Inject)(n.FormulaDataModel)),x(3,(0,e.Inject)(n.LexerTreeBuilder))],oe);var se=`@univerjs/sheets-formula-ui`,ce=`0.19.0`;const le=`sheets-formula-ui.base.config`;Symbol(le);const H={},ue=`SHEET_FORMULA_ALERT`,de={[n.ErrorType.DIV_BY_ZERO]:`divByZero`,[n.ErrorType.NAME]:`name`,[n.ErrorType.VALUE]:`value`,[n.ErrorType.NUM]:`num`,[n.ErrorType.NA]:`na`,[n.ErrorType.CYCLE]:`cycle`,[n.ErrorType.REF]:`ref`,[n.ErrorType.SPILL]:`spill`,[n.ErrorType.CALC]:`calc`,[n.ErrorType.ERROR]:`error`,[n.ErrorType.CONNECT]:`connect`,[n.ErrorType.NULL]:`null`};let fe=class extends e.Disposable{constructor(e,t,n,r,i,a){super(),this._context=e,this._hoverManagerService=t,this._cellAlertManagerService=n,this._localeService=r,this._formulaDataModel=i,this._zenZoneService=a,this._init()}_init(){this._initCellAlertPopup(),this._initZenService()}_initCellAlertPopup(){this.disposeWithMe(this._hoverManagerService.currentCell$.pipe((0,r.debounceTime)(100)).subscribe(r=>{if(r){var i;let o=this._context.unit.getActiveSheet();if(!o)return this._hideAlert();let s=o.getCell(r.location.row,r.location.col),c=(i=this._formulaDataModel.getArrayFormulaCellData())==null||(i=i[r.location.unitId])==null||(i=i[r.location.subUnitId])==null||(i=i[r.location.row])==null?void 0:i[r.location.col];if((0,e.isICellData)(s)){var a;let e=(0,n.extractFormulaError)(s,!!c);if(!e){this._hideAlert();return}let i=this._cellAlertManagerService.currentAlert.get(ue),o=i==null||(a=i.alert)==null?void 0:a.location;if(o&&o.row===r.location.row&&o.col===r.location.col&&o.subUnitId===r.location.subUnitId&&o.unitId===r.location.unitId){this._hideAlert();return}this._cellAlertManagerService.showAlert({type:t.CellAlertType.ERROR,title:this._localeService.t(`formula.error.title`),message:this._localeService.t(`formula.error.${de[e]}`),location:r.location,width:200,height:74,key:ue});return}}this._hideAlert()}))}_initZenService(){this.disposeWithMe(this._zenZoneService.visible$.subscribe(e=>{e&&this._hideAlert()}))}_hideAlert(){this._cellAlertManagerService.removeAlert(ue)}};fe=S([x(1,(0,e.Inject)(t.HoverManagerService)),x(2,(0,e.Inject)(t.CellAlertManagerService)),x(3,(0,e.Inject)(e.LocaleService)),x(4,(0,e.Inject)(n.FormulaDataModel)),x(5,c.IZenZoneService)],fe);let U=class extends e.Disposable{constructor(e,t,n,r,i){super(),this._univerInstanceService=e,this._lexerTreeBuilder=t,this._sheetClipboardService=n,this._injector=r,this._formulaDataModel=i,this._initialize()}_initialize(){this._registerClipboardHook()}_registerClipboardHook(){this.disposeWithMe(this._sheetClipboardService.addClipboardHook(this._copyFormulaOnlyHook())),this.disposeWithMe(this._sheetClipboardService.addClipboardHook(this._pasteFormulaHook())),this.disposeWithMe(this._sheetClipboardService.addClipboardHook(this._pasteWithFormulaHook()))}_copyFormulaOnlyHook(){let n=this,r=null;return{id:t.PREDEFINED_HOOK_NAME_COPY.SPECIAL_COPY_FORMULA_ONLY,priority:10,onBeforeCopy(e,t){r=n._getWorksheet(e,t)},onCopyCellContent(t,i){if(!r)return``;let a=r.getCellRaw(t,i);return a?(0,e.isFormulaString)(a.f)?a.f:(0,e.isFormulaId)(a.si)&&n._formulaDataModel.getFormulaStringByCell(t,i,r.getSheetId(),r.getUnitId())||``:``},onAfterCopy(){r=null},getFilteredOutRows(e,t,r){let i=n._getWorksheet(e,t);if(!i)return[];let{startRow:a,endRow:o}=r,s=[];for(let e=a;e<=o;e++)i.getRowFiltered(e)&&s.push(e);return s},handleMatrixOnCell(t,i,a,o,s,c,l){let u=s.getValue(t,i);if(r&&u&&((0,e.isFormulaString)(u.f)||(0,e.isFormulaId)(u.si))){let s=(0,e.isFormulaString)(u.f)?u.f:n._formulaDataModel.getFormulaStringByCell(t,i,r.getSheetId(),r.getUnitId());c.setValue(a,o,{...(0,e.getEmptyCell)(),f:s}),l.setValue(a,o,{...(0,e.getEmptyCell)(),f:s,displayV:s})}else s.setValue(t,i,(0,e.getEmptyCell)()),c.setValue(a,o,(0,e.getEmptyCell)()),l.setValue(a,o,(0,e.getEmptyCell)())}}}_pasteFormulaHook(){return{id:t.PREDEFINED_HOOK_NAME_PASTE.SPECIAL_PASTE_FORMULA,priority:10,specialPasteInfo:{label:`specialPaste.formula`},onPasteCells:(e,t,n,r)=>this._onPasteCells(e,t,n,r,!0)}}_pasteWithFormulaHook(){return{id:`default-paste-formula`,priority:10,onPasteCells:(e,t,n,r)=>this._onPasteCells(e,t,n,r,!1)}}_getWorkbook(t){return t?this._univerInstanceService.getUnit(t,e.UniverInstanceType.UNIVER_SHEET):this._univerInstanceService.getCurrentUnitOfType(e.UniverInstanceType.UNIVER_SHEET)}_getWorksheet(e,t){let n=this._getWorkbook(e);return t?n==null?void 0:n.getSheetBySheetId(t):n==null?void 0:n.getActiveSheet()}_onPasteCells(e,n,r,i,a){var o;if([t.PREDEFINED_HOOK_NAME_PASTE.SPECIAL_PASTE_FORMAT,t.PREDEFINED_HOOK_NAME_PASTE.SPECIAL_PASTE_COL_WIDTH].includes(i.pasteType)||i.copyType===t.COPY_TYPE.CUT&&!a)return{undos:[],redos:[]};let s=this._getWorkbook(),c=n.unitId||(s==null?void 0:s.getUnitId()),l=n.subUnitId||(s==null||(o=s.getActiveSheet())==null?void 0:o.getSheetId());if(!c||!l)return{undos:[],redos:[]};let u=n.range,d=r,f={copyType:i.copyType||t.COPY_TYPE.COPY,copyRange:e==null?void 0:e.range,pasteType:i.pasteType};return this._injector.invoke(t=>pe(c,l,u,d,t,f,this._lexerTreeBuilder,this._formulaDataModel,a,e))}};U=S([x(0,e.IUniverInstanceService),x(1,(0,e.Inject)(n.LexerTreeBuilder)),x(2,t.ISheetClipboardService),x(3,(0,e.Inject)(e.Injector)),x(4,(0,e.Inject)(n.FormulaDataModel))],U);function pe(e,t,n,r,i,a,s,c,l=!1,u){let d=[],f=[],p=me(e,t,n,r,a,s,c,u);if(!p.hasValue())return{undos:[],redos:[]};let m={unitId:e,subUnitId:t,cellValue:p.getData()};d.push({id:o.SetRangeValuesMutation.id,params:m});let h=(0,o.SetRangeValuesUndoMutationFactory)(i,m);return f.push({id:o.SetRangeValuesMutation.id,params:h}),{undos:f,redos:d}}function me(e,n,r,i,a,o,s,c){return c?a.pasteType===t.PREDEFINED_HOOK_NAME_PASTE.SPECIAL_PASTE_VALUE?ge(e,n,r,i,s,c):a.pasteType===t.PREDEFINED_HOOK_NAME_PASTE.SPECIAL_PASTE_FORMULA?_e(e,n,r,i,o,s,c):ve(e,n,r,i,a.copyType,o,s,c):he(e,n,r,i,s)}function he(t,n,r,i,a){let o=new e.ObjectMatrix,s=a.getSheetFormulaData(t,n);return i.forValue((t,n,i)=>{var a;let c=r.rows[t],l=r.cols[n],u={};(0,e.isFormulaString)(i.v)?(u.v=null,u.f=`${i.v}`,u.si=null,u.p=null,o.setValue(c,l,u)):!(s==null||(a=s[c])==null)&&a[l]&&(u.v=i.v,u.f=null,u.si=null,u.p=null,o.setValue(c,l,u))}),o}function ge(t,n,r,i,a,o){var s;let c=new e.ObjectMatrix,l=(s=a.getArrayFormulaCellData())==null||(s=s[o.unitId])==null?void 0:s[o.subUnitId],u=a.getSheetFormulaData(t,n);return i.forValue((t,n,i)=>{var a,s;let d=o.range.rows[t%o.range.rows.length],f=o.range.cols[n%o.range.cols.length],p=r.rows[t],m=r.cols[n],h={};if((0,e.isFormulaString)(i.f)||(0,e.isFormulaId)(i.si))h.v=i.v,h.f=null,h.si=null,h.p=null,c.setValue(p,m,h);else if(!(l==null||(a=l[d])==null)&&a[f])h.v=l[d][f].v,h.f=null,h.si=null,h.p=null,c.setValue(p,m,h);else if(!(u==null||(s=u[p])==null)&&s[m]){if(h.v=i.v,h.f=null,h.si=null,h.p=null,i.p){let e=ye(i);e&&(h.v=e)}c.setValue(p,m,h)}}),c}function _e(t,n,r,i,a,o,s){let c=new e.ObjectMatrix,l=new Map;return i.forValue((i,u,d)=>{let f=r.rows[i],p=r.cols[u],m={};if((0,e.isFormulaId)(d.si)){if(s.unitId!==t||s.subUnitId!==n){let e=o.getFormulaStringByCell(s.range.rows[i%s.range.rows.length],s.range.cols[u%s.range.cols.length],s.subUnitId,s.unitId),t=r.cols[u]-s.range.cols[u%s.range.cols.length],n=r.rows[i]-s.range.rows[i%s.range.rows.length],c=a.moveFormulaRefOffset(e||``,t,n);m.si=null,m.f=c}else m.si=d.si,m.f=null;m.v=null,m.p=null,c.setValue(f,p,m)}else if((0,e.isFormulaString)(d.f)){let t=`${i%s.range.rows.length}_${u%s.range.cols.length}`,n=l.get(t);if(n)m.si=n,m.f=null;else{n=(0,e.generateRandomId)(6),l.set(t,n);let o=r.cols[u]-s.range.cols[u%s.range.cols.length],c=r.rows[i]-s.range.rows[i%s.range.rows.length],f=a.moveFormulaRefOffset(d.f||``,o,c);m.si=n,m.f=f}m.v=null,m.p=null,c.setValue(f,p,m)}else{if(m.v=d.v,m.f=null,m.si=null,m.p=null,d.p){let e=ye(d);e&&(m.v=e)}c.setValue(f,p,m)}}),c}function ve(n,r,i,a,o,s,c,l){let u=new e.ObjectMatrix,d=new Map,f=c.getSheetFormulaData(n,r),p=[];return o===t.COPY_TYPE.CUT?a.forValue((t,n,r)=>{let a=i.rows[t],o=i.cols[n],s={};(0,e.isFormulaId)(r.si)?((0,e.isFormulaString)(r.f)?(p.push(r.si),s.f=r.f,s.si=r.si):p.includes(r.si)?(s.f=null,s.si=r.si):(s.f=c.getFormulaStringByCell(l.range.rows[t%l.range.rows.length],l.range.cols[n%l.range.cols.length],l.subUnitId,l.unitId),s.si=null),s.v=null,s.p=null,u.setValue(a,o,s)):(0,e.isFormulaString)(r.f)&&(s.f=r.f,s.si=null,s.v=null,s.p=null,u.setValue(a,o,s))}):a.forValue((t,a,o)=>{var p;let m=i.rows[t],h=i.cols[a],g={};if((0,e.isFormulaId)(o.si)){if(l.unitId!==n||l.subUnitId!==r){let e=c.getFormulaStringByCell(l.range.rows[t%l.range.rows.length],l.range.cols[a%l.range.cols.length],l.subUnitId,l.unitId),n=i.cols[a]-l.range.cols[a%l.range.cols.length],r=i.rows[t]-l.range.rows[t%l.range.rows.length],o=s.moveFormulaRefOffset(e||``,n,r);g.si=null,g.f=o}else g.si=o.si,g.f=null;g.v=null,g.p=null,u.setValue(m,h,g)}else if((0,e.isFormulaString)(o.f)){let n=`${t%l.range.rows.length}_${a%l.range.cols.length}`,r=d.get(n);if(r)g.si=r,g.f=null;else{r=(0,e.generateRandomId)(6),d.set(n,r);let c=i.cols[a]-l.range.cols[a%l.range.cols.length],u=i.rows[t]-l.range.rows[t%l.range.rows.length],f=s.moveFormulaRefOffset(o.f||``,c,u);g.si=r,g.f=f}g.v=null,g.p=null,u.setValue(m,h,g)}else !(f==null||(p=f[m])==null)&&p[h]&&(g.v=o.v,g.f=null,g.si=null,g.p=o.p,u.setValue(m,h,g))}),p.length>0&&new e.ObjectMatrix(f).forValue((e,t,n)=>{if(!(l.range.rows.includes(e)&&l.range.cols.includes(t))&&!(i.rows.includes(e)&&i.cols.includes(t))&&p.includes(n==null?void 0:n.si)){let n=c.getFormulaStringByCell(e,t,l.subUnitId,l.unitId);u.setValue(e,t,{f:n,si:null,v:null,p:null})}}),u}function ye(t){if(t!=null&&t.p){let n=t==null?void 0:t.p.body;if(n==null)return;let r=n.dataStream;return r.substring(r.length-2,r.length)===e.DEFAULT_EMPTY_DOCUMENT_VALUE?r.substring(0,r.length-2):r}}let W=class extends e.Disposable{constructor(e,t,n,r,i,a,o,s){super(),this._context=e,this._sheetInterceptorService=t,this._formulaDataModel=n,this._themeService=r,this._renderManagerService=i,this._sheetSkeletonManagerService=a,this._commandService=o,this._logService=s,b(this,`_previousShape`,void 0),b(this,`_skeleton`,void 0),this._initSkeletonChangeListener(),this._initInterceptorEditorStart(),this._commandExecutedListener()}_initSkeletonChangeListener(){this.disposeWithMe(this._sheetSkeletonManagerService.currentSkeleton$.subscribe(e=>{if(e==null)this._logService.debug(`[FormulaEditorShowController]: should not receive currentSkeleton$ as null!`);else{var t;let{skeleton:n}=e,r=(t=this._skeleton)==null||(t=t.worksheet)==null?void 0:t.getSheetId();if(this._changeRuntime(n),r!==n.worksheet.getSheetId())this._removeArrayFormulaRangeShape();else{let{unitId:t,sheetId:n}=e;this._updateArrayFormulaRangeShape(t,n)}}}))}_changeRuntime(e){this._skeleton=e}_initInterceptorEditorStart(){this.disposeWithMe((0,e.toDisposable)(this._sheetInterceptorService.writeCellInterceptor.intercept(o.BEFORE_CELL_EDIT,{handler:(e,t,n)=>{var r,i;let{row:a,col:o,unitId:s,subUnitId:c,worksheet:l}=t,u=this._formulaDataModel.getArrayFormulaRange(),d=this._formulaDataModel.getArrayFormulaCellData();if(this._removeArrayFormulaRangeShape(),e==null)return n(e);let f=null,p=this._formulaDataModel.getFormulaStringByCell(a,o,c,s);if(p!==null&&(f={f:p}),e.v!=null&&e.v!==``&&((r=d[s])==null||(r=r[c])==null||(r=r[a])==null?void 0:r[o])==null)return f?{...e,...f}:n(e);let m=u==null||(i=u[s])==null?void 0:i[c];return m!=null&&(f=this._displayArrayFormulaRangeShape(m,a,o,s,c,l,f)),f?{...e,...f}:n(e)}})))}_commandExecutedListener(){this.disposeWithMe(this._commandService.onCommandExecuted((e,t)=>{(e.id===n.SetFormulaCalculationResultMutation.id||e.id===n.SetArrayFormulaDataMutation.id&&t&&t.remove)&&this._removeArrayFormulaRangeShape()})),this.disposeWithMe(this._commandService.beforeCommandExecuted(e=>{o.SetWorksheetRowAutoHeightMutation.id===e.id&&requestIdleCallback(()=>{let{unitId:t,subUnitId:n,rowsAutoHeightInfo:r}=e.params;this._refreshArrayFormulaRangeShapeByRow(t,n,r)})}))}_displayArrayFormulaRangeShape(t,r,i,a,o,s,c){return new e.ObjectMatrix(t).forValue((e,t,o)=>{if(o==null)return!0;let{startRow:l,startColumn:u,endRow:d,endColumn:f}=o;if(e===r&&t===i)return this._createArrayFormulaRangeShape(o,a),!1;if(r>=l&&r<=d&&i>=u&&i<=f){let e=s.getCell(l,u);return(e==null?void 0:e.v)===n.ErrorType.SPILL||(e==null?void 0:e.f)==null?void 0:(c==null&&(c={f:e.f,isInArrayFormulaRange:!0}),this._createArrayFormulaRangeShape(o,a),!1)}}),c}_createArrayFormulaRangeShape(n,r){let i=this._renderManagerService.getRenderById(r),a=this._sheetSkeletonManagerService.getCurrentSkeleton();if(!i||!a)return;let{scene:o}=i;if(!o)return;let s=(0,t.attachSelectionWithCoord)({range:n,primary:null,style:{strokeWidth:1,stroke:this._themeService.getColorFromTheme(`primary.600`),fill:new e.ColorKit(this._themeService.getColorFromTheme(`white`)).setAlpha(0).toString(),widgets:{}}},a),{rowHeaderWidth:c,columnHeaderHeight:l}=a,u=new t.SelectionControl(o,t.SELECTION_SHAPE_DEPTH.FORMULA_EDITOR_SHOW,this._themeService,{highlightHeader:!1,rowHeaderWidth:c,columnHeaderHeight:l});u.updateRangeBySelectionWithCoord(s),u.setEvent(!1),this._previousShape=u}_removeArrayFormulaRangeShape(){this._previousShape!=null&&(this._previousShape.dispose(),this._previousShape=null)}_refreshArrayFormulaRangeShape(e,t){if(this._previousShape){let{startRow:t,endRow:n,startColumn:r,endColumn:i}=this._previousShape.getRange(),a={startRow:t,endRow:n,startColumn:r,endColumn:i};this._removeArrayFormulaRangeShape(),this._createArrayFormulaRangeShape(a,e)}}_checkCurrentSheet(e,t){let n=this._sheetSkeletonManagerService.getCurrentSkeleton();if(!n)return!1;let r=n.worksheet;return r?r.unitId===e&&r.getSheetId()===t:!1}_updateArrayFormulaRangeShape(e,t){this._checkCurrentSheet(e,t)&&this._previousShape&&this._refreshArrayFormulaRangeShape(e)}_refreshArrayFormulaRangeShapeByRow(e,t,n){if(!this._checkCurrentSheet(e,t)||!this._previousShape)return;let{startRow:r,endRow:i,startColumn:a,endColumn:o}=this._previousShape.getRange();for(let t=0;t<n.length;t++){let{row:s}=n[t];if(r>=s){let t={startRow:r,endRow:i,startColumn:a,endColumn:o};this._refreshArrayFormulaRangeShape(e,t);break}}}};W=S([x(1,(0,e.Inject)(o.SheetInterceptorService)),x(2,(0,e.Inject)(n.FormulaDataModel)),x(3,(0,e.Inject)(e.ThemeService)),x(4,a.IRenderManagerService),x(5,(0,e.Inject)(t.SheetSkeletonManagerService)),x(6,e.ICommandService),x(7,e.ILogService)],W);const be={tl:{size:6,color:`#409f11`}};let G=class extends e.RxDisposable{constructor(t,r){super(),this._sheetInterceptorService=t,this._formulaDataModel=r,this.disposeWithMe(this._sheetInterceptorService.intercept(o.INTERCEPTOR_POINT.CELL_CONTENT,{effect:e.InterceptorEffectEnum.Style,handler:(e,t,r)=>{var i;let a=(i=this._formulaDataModel.getArrayFormulaCellData())==null||(i=i[t.unitId])==null||(i=i[t.subUnitId])==null||(i=i[t.row])==null?void 0:i[t.col];return!(0,n.extractFormulaError)(e,!!a)||!e?r(e):(e===t.rawData&&(e={...t.rawData}),e.markers={...e==null?void 0:e.markers,...be},r(e))},priority:10}))}};G=S([x(0,(0,e.Inject)(o.SheetInterceptorService)),x(1,(0,e.Inject)(n.FormulaDataModel))],G);function xe(t){let n=[`SUMIF`,`SUM`,`AVERAGE`,`IF`,`COUNT`,`SIN`,`MAX`],r=n.map(e=>({label:{name:e,selectable:!1},value:e}));try{let e=t.get(s.IDescriptionService),i=n.filter(t=>!!e.getFunctionInfo(t));i.length>0&&(r=i.map(e=>({label:{name:e,selectable:!1},value:e})))}catch{}return{id:`${D.id}.common`,commandId:D.id,title:`formula.insert.common`,tooltip:`formula.insert.tooltip`,icon:`FunctionIcon`,type:c.MenuItemType.SELECTOR,selections:r,hidden$:(0,c.getMenuHiddenObservable)(t,e.UniverInstanceType.UNIVER_SHEET)}}function K(t,n,r){return function(i){let a=[];try{a=i.get(s.IDescriptionService).getSearchListByType(t).map(({name:e})=>({label:{name:e,selectable:!1},value:e}))}catch{a=[]}return{id:`${D.id}.${n}`,commandId:D.id,title:`formula.functionType.${n}`,tooltip:`formula.insert.tooltip`,icon:r,type:c.MenuItemType.SELECTOR,selections:a,hidden$:(0,c.getMenuHiddenObservable)(i,e.UniverInstanceType.UNIVER_SHEET)}}}const q=K(n.FunctionType.Financial,`financial`),J=K(n.FunctionType.Logical,`logical`),Se=K(n.FunctionType.Text,`text`),Ce=K(n.FunctionType.Date,`date`),we=K(n.FunctionType.Lookup,`lookup`),Te=K(n.FunctionType.Math,`math`),Ee=K(n.FunctionType.Statistical,`statistical`),De=K(n.FunctionType.Engineering,`engineering`),Oe=K(n.FunctionType.Information,`information`),ke=K(n.FunctionType.Database,`database`);function Y(n){return{id:L.id,title:`formula.moreFunctions.allFunctions`,tooltip:`formula.insert.tooltip`,type:c.MenuItemType.BUTTON,hidden$:(0,c.getMenuHiddenObservable)(n,e.UniverInstanceType.UNIVER_SHEET),disabled$:(0,t.getCurrentRangeDisable$)(n,{workbookTypes:[o.WorkbookEditablePermission],worksheetTypes:[o.WorksheetEditPermission,o.WorksheetSetCellValuePermission],rangeTypes:[o.RangeProtectionPermissionEditPoint]})}}function Ae(n){return{id:h.id,type:c.MenuItemType.BUTTON,title:`formula.operation.copyFormulaOnly`,disabled$:(0,t.getCurrentRangeDisable$)(n,{workbookTypes:[o.WorkbookCopyPermission],worksheetTypes:[o.WorksheetCopyPermission],rangeTypes:[o.RangeProtectionPermissionViewPoint]}),hidden$:(0,c.getMenuHiddenObservable)(n,e.UniverInstanceType.UNIVER_SHEET)}}function je(n){return{id:g.id,type:c.MenuItemType.BUTTON,title:`formula.operation.pasteFormula`,disabled$:(0,t.menuClipboardDisabledObservable)(n).pipe((0,r.combineLatestWith)((0,t.getCurrentRangeDisable$)(n,{workbookTypes:[o.WorkbookEditablePermission],rangeTypes:[o.RangeProtectionPermissionEditPoint],worksheetTypes:[o.WorksheetSetCellValuePermission,o.WorksheetEditPermission]})),(0,r.map)(([e,t])=>e||t)),hidden$:(0,c.getMenuHiddenObservable)(n,e.UniverInstanceType.UNIVER_SHEET)}}const Me={[c.RibbonFormulasGroup.BASIC]:{[`${D.id}.common`]:{order:0,menuItemFactory:xe,[L.id]:{order:0,menuItemFactory:Y}},[`${D.id}.financial`]:{order:1,menuItemFactory:q,[L.id]:{order:0,menuItemFactory:Y}},[`${D.id}.logical`]:{order:2,menuItemFactory:J,[L.id]:{order:0,menuItemFactory:Y}},[`${D.id}.text`]:{order:3,menuItemFactory:Se,[L.id]:{order:0,menuItemFactory:Y}},[`${D.id}.date`]:{order:4,menuItemFactory:Ce,[L.id]:{order:0,menuItemFactory:Y}},[`${D.id}.lookup`]:{order:5,menuItemFactory:we,[L.id]:{order:0,menuItemFactory:Y}},[`${D.id}.math`]:{order:6,menuItemFactory:Te,[L.id]:{order:0,menuItemFactory:Y}},[`${D.id}.statistical`]:{order:7,menuItemFactory:Ee,[L.id]:{order:0,menuItemFactory:Y}},[`${D.id}.engineering`]:{order:8,menuItemFactory:De,[L.id]:{order:0,menuItemFactory:Y}},[`${D.id}.information`]:{order:9,menuItemFactory:Oe,[L.id]:{order:0,menuItemFactory:Y}},[`${D.id}.database`]:{order:10,menuItemFactory:ke,[L.id]:{order:0,menuItemFactory:Y}}},[t.COPY_SPECIAL_MENU_ID]:{[h.id]:{order:0,menuItemFactory:Ae}},[t.PASTE_SPECIAL_MENU_ID]:{[g.id]:{order:4,menuItemFactory:je}}};function Ne(){let t=(0,c.useDependency)(s.TriggerCalculationController),r=(0,c.useDependency)(e.ICommandService);return(0,d.jsx)(c.ProgressBar,{progress:(0,c.useObservable)(t.progress$),onTerminate:(0,u.useCallback)(()=>{r.executeCommand(n.SetFormulaCalculationStopMutation.id)},[r]),onClearProgress:(0,u.useCallback)(()=>{t.clearProgress()},[t])})}function Pe(e,t){return Object.keys(n.FunctionType).filter(e=>isNaN(Number(e))&&e!==`DefinedName`&&e!==`Table`&&(t||e!==`User`)).map(t=>({label:e.t(`formula.functionType.${t.toLocaleLowerCase()}`),value:`${n.FunctionType[t]}`}))}function Fe(e){if(!e.require&&!e.repeat)return`[${e.name}]`;if(e.require&&!e.repeat)return e.name;if(!e.require&&e.repeat)return`[${e.name},...]`;if(e.require&&e.repeat)return`${e.name},...`}function Ie(e){let{prefix:t,value:n}=e;return(0,d.jsxs)(`div`,{children:[(0,d.jsxs)(`span`,{children:[t,`(`]}),n&&n.map((e,t)=>(0,d.jsxs)(`span`,{children:[(0,d.jsx)(`span`,{children:Fe(e)}),t===n.length-1?``:`,`]},t)),`)`]})}function Le(e){let{className:t,value:n,title:r}=e;return(0,d.jsxs)(`div`,{className:`univer-mb-2 univer-text-xs`,children:[(0,d.jsx)(`div`,{className:(0,f.clsx)(`univer-mb-2 univer-font-medium univer-text-gray-500 dark:!univer-text-gray-300`,t),children:r}),(0,d.jsx)(`div`,{className:`univer-break-all univer-text-gray-900 dark:!univer-text-white`,children:n})]})}function Re(e){let{functionInfo:t,onChange:n}=e;if(!t)return null;let[r,i]=(0,u.useState)([]),[a,o]=(0,u.useState)(t.functionParameter),[s,c]=(0,u.useState)(-1);return(0,d.jsxs)(`div`,{children:[(0,d.jsx)(`div`,{className:(0,f.clsx)(`univer-h-[364px] univer-overflow-y-auto`,f.scrollbarClassName),children:a.map((e,t)=>(0,d.jsxs)(`div`,{children:[(0,d.jsx)(`div`,{className:`univer-text-sm`,children:e.name}),(0,d.jsx)(`div`,{className:`univer-mb-2 univer-mt-1`})]},t))}),(0,d.jsx)(`div`,{className:(0,f.clsx)(`univer-flex-1 univer-p-3`,f.borderLeftClassName),children:(0,d.jsx)(Le,{title:s===-1?(0,d.jsx)(Ie,{prefix:t.functionName,value:a}):a[s].name,value:s===-1?t.description:a[s].detail})})]})}function ze(t){var n;let r=(n=(0,c.useDependency)(e.IConfigService).getConfig(s.PLUGIN_CONFIG_KEY_BASE))==null?void 0:n.function,{onChange:i}=t,[a,o]=(0,u.useState)(``),[l,m]=(0,u.useState)([]),[h,g]=(0,u.useState)(0),[_,v]=(0,u.useState)(`-1`),[y,b]=(0,u.useState)(0),[x,S]=(0,u.useState)(null),C=(0,c.useDependency)(s.IDescriptionService),w=(0,c.useDependency)(e.LocaleService),T=(0,c.useObservable)((0,c.useDependency)(c.ISidebarService).sidebarOptions$),E=Pe(w,!!r).filter(e=>C.getSearchListByType(Number(e.value)).length>0);E.unshift({label:w.t(`formula.moreFunctions.allFunctions`),value:`-1`});let D=w.t(`formula.prompt.required`),O=w.t(`formula.prompt.optional`);(0,u.useEffect)(()=>{j(`-1`)},[]),(0,u.useEffect)(()=>{A(0)},[l]),(0,u.useEffect)(()=>{T!=null&&T.visible&&(o(``),m([]),g(0),v(`-1`),b(0),S(null),j(`-1`))},[T]);let k=e=>{if(a.trim()===``)return e;let t=RegExp(`(${a.toLocaleUpperCase()})`);return e.split(t).filter(Boolean).map((e,n)=>e.match(t)?(0,d.jsx)(`span`,{className:`univer-text-red-500`,children:e},n):e)},A=e=>{if(l.length===0){S(null),i(null);return}b(e);let t=C.getFunctionInfo(l[e].name);if(!t){S(null),i(null);return}S(t),i(t)};function j(e){v(e),m(C.getSearchListByType(+e))}function M(e){o(e),m(C.getSearchListByName(e))}function N(e){if(e.stopPropagation(),e.key===`ArrowDown`){let e=h+1;g(e===l.length?0:e)}else if(e.key===`ArrowUp`){let e=h-1;g(e===-1?l.length-1:e)}else e.key===`Enter`&&A(h)}let P=e=>{g(e)},F=()=>{g(-1)};return(0,d.jsxs)(`div`,{children:[(0,d.jsxs)(`div`,{className:`univer-flex univer-items-center univer-justify-between univer-gap-2`,children:[(0,d.jsx)(f.Select,{value:_,options:E,onChange:j}),(0,d.jsx)(f.Input,{placeholder:w.t(`formula.moreFunctions.searchFunctionPlaceholder`),onKeyDown:N,value:a,onChange:M,size:`small`,allowClear:!0})]}),l.length>0&&(0,d.jsx)(`ul`,{className:(0,f.clsx)(`univer-mb-0 univer-mt-2 univer-box-border univer-max-h-72 univer-w-full univer-select-none univer-list-none univer-overflow-y-auto univer-rounded univer-p-3 univer-outline-none`,f.borderClassName,f.scrollbarClassName),onKeyDown:N,tabIndex:-1,children:l.map(({name:e},t)=>(0,d.jsxs)(`li`,{className:(0,f.clsx)(`univer-relative univer-box-border univer-cursor-pointer univer-rounded univer-px-7 univer-py-1 univer-text-sm univer-text-gray-900 univer-transition-colors dark:!univer-text-white`,{"univer-bg-gray-200 dark:!univer-bg-gray-600":h===t}),onMouseEnter:()=>P(t),onMouseLeave:F,onClick:()=>A(t),children:[y===t&&(0,d.jsx)(p.CheckMarkIcon,{className:`univer-absolute univer-left-1.5 univer-top-1/2 univer-inline-flex -univer-translate-y-1/2 univer-text-base univer-text-primary-600`}),(0,d.jsx)(`span`,{className:`univer-block`,children:k(e)})]},t))}),x&&(0,d.jsxs)(`div`,{className:(0,f.clsx)(`univer-mx-0 univer-my-2 univer-overflow-y-auto`,f.scrollbarClassName),children:[(0,d.jsx)(Le,{title:x.functionName,value:x.description}),(0,d.jsx)(Le,{title:w.t(`formula.moreFunctions.syntax`),value:(0,d.jsx)(Ie,{prefix:x.functionName,value:x.functionParameter})}),(0,d.jsx)(Le,{title:w.t(`formula.prompt.helpExample`),value:`${x.functionName}(${x.functionParameter.map(e=>e.example).join(`,`)})`}),x.functionParameter&&x.functionParameter.map(e=>(0,d.jsx)(Le,{title:e.name,value:`${e.require?D:O} ${e.detail}`},e.name))]})]})}function Be(){let n=(0,t.useActiveWorkbook)(),[r,s]=(0,u.useState)(!0),[l,p]=(0,u.useState)(!1),[m,h]=(0,u.useState)(null);(0,c.useDependency)(t.IEditorBridgeService);let g=(0,c.useDependency)(e.LocaleService),_=(0,c.useDependency)(i.IEditorService),v=(0,c.useDependency)(e.IUniverInstanceService),y=(0,c.useDependency)(e.ICommandService);function b(){s(!r),p(!l)}function x(){let n=(0,o.getSheetCommandTarget)(v);if(!n)return;y.executeCommand(t.SetCellEditVisibleOperation.id,{visible:!0,unitId:n.unitId,eventType:a.DeviceInputEventType.Dblclick});let r=_.getEditor(e.DOCS_NORMAL_EDITOR_UNIT_ID_KEY),i=_.getEditor(e.DOCS_FORMULA_BAR_EDITOR_UNIT_ID_KEY),s=`=${m==null?void 0:m.functionName}(`;r==null||r.replaceText(s),i==null||i.replaceText(s,!1)}return(0,d.jsxs)(`div`,{"data-u-comp":`sheets-formula-functions-panel`,className:`univer-box-border univer-flex univer-h-full univer-flex-col univer-justify-between univer-py-2`,children:[r&&(0,d.jsx)(ze,{onChange:h}),l&&(0,d.jsx)(Re,{functionInfo:m,onChange:()=>{}}),(0,d.jsxs)(`div`,{className:`univer-flex univer-justify-end`,children:[l&&(0,d.jsx)(f.Button,{variant:`primary`,onClick:b,className:`univer-mb-5 univer-ml-4 univer-mr-0 univer-mt-0`,children:g.t(`formula.moreFunctions.next`)}),l&&(0,d.jsx)(f.Button,{onClick:b,className:`univer-mb-5 univer-ml-4 univer-mr-0 univer-mt-0`,children:g.t(`formula.moreFunctions.prev`)}),r&&!!n&&(0,d.jsx)(f.Button,{disabled:!m,variant:`primary`,onClick:x,className:`univer-mb-5 univer-ml-4 univer-mr-0 univer-mt-0`,children:g.t(`formula.moreFunctions.confirm`)})]})]})}const Ve={id:ae.id,binding:c.KeyCode.F4,preconditions:e=>(0,t.whenSheetEditorActivated)(e)},He={id:s.QuickSumCommand.id,binding:c.MetaKeys.ALT|c.KeyCode.EQUAL,preconditions:t.whenSheetEditorFocused,mac:c.MetaKeys.CTRL_COMMAND|c.MetaKeys.ALT|c.KeyCode.EQUAL,description:`shortcut.sheets-formula-ui.quick-sum`,group:`4_sheet-edit`};let Ue=class extends e.Disposable{constructor(e,t,n,r,i,a,o){super(),this._injector=e,this._menuManagerService=t,this._commandService=n,this._shortcutService=r,this._uiPartsService=i,this._renderManagerService=a,this._componentManager=o,this._initialize()}_initialize(){this._registerCommands(),this._registerMenus(),this._registerShortcuts(),this._registerComponents(),this._registerRenderModules()}_registerMenus(){this._menuManagerService.mergeMenu(Me)}_registerCommands(){[h,g,D,L,V,E,ae].forEach(e=>this.disposeWithMe(this._commandService.registerCommand(e)))}_registerShortcuts(){[He,Ve].forEach(e=>{this.disposeWithMe(this._shortcutService.registerShortcut(e))})}_registerComponents(){this.disposeWithMe(this._uiPartsService.registerComponent(t.SheetsUIPart.FORMULA_AUX,()=>(0,c.connectInjector)(Ne,this._injector))),this._componentManager.register(te,Be)}_registerRenderModules(){this.disposeWithMe(this._renderManagerService.registerRenderModule(e.UniverInstanceType.UNIVER_SHEET,[W]))}};Ue=S([x(0,(0,e.Inject)(e.Injector)),x(1,c.IMenuManagerService),x(2,e.ICommandService),x(3,c.IShortcutService),x(4,c.IUIPartsService),x(5,a.IRenderManagerService),x(6,(0,e.Inject)(c.ComponentManager))],Ue);let We=class extends e.Disposable{constructor(n,r,i){super(),this._imageFormulaCellInterceptorController=n,this._renderManagerService=r,this._univerInstanceService=i,this._imageFormulaCellInterceptorController.registerRefreshRenderFunction(()=>{let n=this._univerInstanceService.getCurrentUnitOfType(e.UniverInstanceType.UNIVER_SHEET);if(!n)return;let r=this._renderManagerService.getRenderById(n.getUnitId());if(!r)return;r.with(t.SheetSkeletonManagerService).reCalculate();let i=r.mainComponent;i&&i.makeDirty()})}};We=S([x(0,(0,e.Inject)(s.ImageFormulaCellInterceptorController)),x(1,a.IRenderManagerService),x(2,e.IUniverInstanceService)],We);var Ge=class{constructor(){b(this,`_currentSelector$`,new r.BehaviorSubject(null)),b(this,`currentSelector$`,this._currentSelector$.asObservable())}showRangeSelectorDialog(e){let t=e.callback,n=new Promise(n=>{e.callback=e=>{n(e),t(e)}});return this._currentSelector$.next(e),n}};let X=class extends t.BaseSelectionRenderService{constructor(e,t,n,r,i,a,o){super(t,n,r,i,a),this._context=e,this._contextService=a,this._refSelectionsService=o,b(this,`_workbookSelections`,void 0),b(this,`_eventDisposables`,void 0),this._workbookSelections=this._refSelectionsService.getWorkbookSelections(this._context.unitId),this._initSelectionChangeListener(),this._initSkeletonChangeListener(),this._initUserActionSyncListener(),this._setSelectionStyle(Ke(this._themeService)),this._remainLastEnabled=!0,this._highlightHeader=!1}getLocation(){return this._skeleton.getLocation()}setRemainLastEnabled(e){this._remainLastEnabled=e}setSkipLastEnabled(e){this._skipLastEnabled=e}clearLastSelection(){let e=this._selectionControls[this._selectionControls.length-1];e&&(e.dispose(),this._selectionControls.pop())}enableSelectionChanging(){return this._disableSelectionChanging(),this._eventDisposables=this._initCanvasEventListeners(),(0,e.toDisposable)(()=>this._disableSelectionChanging())}_disableSelectionChanging(){var e;(e=this._eventDisposables)==null||e.dispose(),this._eventDisposables=null}disableSelectionChanging(){this._disableSelectionChanging()}_initCanvasEventListeners(){let{spreadsheetRowHeader:n,spreadsheetColumnHeader:r,spreadsheet:i,spreadsheetLeftTopPlaceholder:o}=this._getSheetObject(),{scene:s}=this._context,c=new e.DisposableCollection;return c.add(i==null?void 0:i.onPointerDown$.subscribeEvent((t,n)=>{this.inRefSelectionMode()&&(this._onPointerDown(t,i.zIndex+1,e.RANGE_TYPE.NORMAL,this._getActiveViewport(t)),t.button!==2&&n.stopPropagation())})),c.add(n==null?void 0:n.onPointerDown$.subscribeEvent((n,r)=>{if(!this.inRefSelectionMode())return;let o=this._sheetSkeletonManagerService.getCurrent().skeleton,{row:c}=(0,t.getCoordByOffset)(n.offsetX,n.offsetY,s,o);(0,t.checkInHeaderRanges)(this._workbookSelections.getCurrentSelections(),c,e.RANGE_TYPE.ROW)||(this._onPointerDown(n,(i.zIndex||1)+1,e.RANGE_TYPE.ROW,this._getActiveViewport(n),a.ScrollTimerType.Y),n.button!==2&&r.stopPropagation())})),c.add(r==null?void 0:r.onPointerDown$.subscribeEvent((n,r)=>{if(!this.inRefSelectionMode())return;let o=this._sheetSkeletonManagerService.getCurrent().skeleton,{column:c}=(0,t.getCoordByOffset)(n.offsetX,n.offsetY,s,o);(0,t.checkInHeaderRanges)(this._workbookSelections.getCurrentSelections(),c,e.RANGE_TYPE.COLUMN)||(this._onPointerDown(n,(i.zIndex||1)+1,e.RANGE_TYPE.COLUMN,this._getActiveViewport(n),a.ScrollTimerType.X),n.button!==2&&r.stopPropagation())})),c.add(o==null?void 0:o.onPointerDown$.subscribeEvent((e,n)=>{if(this._reset(),!this.inRefSelectionMode())return;let r=this._sheetSkeletonManagerService.getCurrent().skeleton,i=(0,t.getAllSelection)(r);this._addSelectionControlByModelData(i),this._selectionMoveStart$.next(this.getSelectionDataWithStyle());let a=s.onPointerUp$.subscribeEvent(()=>{a.unsubscribe(),this._selectionMoveEnd$.next(this.getSelectionDataWithStyle())});e.button!==2&&n.stopPropagation()})),c}_addSelectionControlByModelData(e){var n;let r=this._skeleton,i=(n=e.style)==null?(0,t.genNormalSelectionStyle)(this._themeService):n,a=this._scene;return e.style=i,this.newSelectionControl(a,r,e)}_initSelectionChangeListener(){this.disposeWithMe(this._refSelectionsService.selectionSet$.subscribe(e=>{this._reset(),this._skeleton&&this.resetSelectionsByModelData(e||[])}))}_initUserActionSyncListener(){this.disposeWithMe(this.selectionMoveStart$.subscribe(e=>{this._updateSelections(e,o.SelectionMoveType.MOVE_START)})),this.disposeWithMe(this.selectionMoving$.subscribe(e=>{this._updateSelections(e,o.SelectionMoveType.MOVING)})),this.disposeWithMe(this.selectionMoveEnd$.subscribe(e=>{this._updateSelections(e,o.SelectionMoveType.MOVE_END)}))}_updateSelections(e,t){let n=this._context.unit.getActiveSheet().getSheetId();e.length!==0&&this._workbookSelections.setSelections(n,e.map(e=>(0,o.convertSelectionDataToRange)(e)),t)}_initSkeletonChangeListener(){this.disposeWithMe(this._sheetSkeletonManagerService.currentSkeleton$.subscribe(e=>{var t;if(!e)return;let{skeleton:n}=e,{scene:r}=this._context,i=r.getViewport(a.SHEET_VIEWPORT_KEY.VIEW_MAIN);this._skeleton&&((t=this._skeleton.worksheet)==null?void 0:t.getSheetId())!==n.worksheet.getSheetId()&&this._reset(),this._changeRuntime(n,r,i);let o=this._workbookSelections.getCurrentSelections();this.resetSelectionsByModelData(o)}))}_getActiveViewport(e){let t=this._getSheetObject();return t==null?void 0:t.scene.getActiveViewportByCoord(a.Vector2.FromArray([e.offsetX,e.offsetY]))}_getSheetObject(){return(0,t.getSheetObject)(this._context.unit,this._context)}_onPointerDown(n,r=0,i=e.RANGE_TYPE.NORMAL,o,s=a.ScrollTimerType.ALL){var c;this._rangeType=i;let l=this._skeleton,u=this._scene;if(!u||!l)return;o&&(this._activeViewport=o);let{offsetX:d,offsetY:f}=n,p=u.getViewport(a.SHEET_VIEWPORT_KEY.VIEW_MAIN);if(!p)return;let m=u.getCoordRelativeToViewport(a.Vector2.FromArray([d,f])),{x:h,y:g}=m;this._startViewportPosX=h,this._startViewportPosY=g;let _=u.getScrollXYInfoByViewport(m),{scaleX:v,scaleY:y}=u.getAncestorScale(),b=this._skeleton.getCellByOffset(h,g,v,y,_);if(!b)return;switch(i){case e.RANGE_TYPE.NORMAL:break;case e.RANGE_TYPE.ROW:b.startColumn=0,b.endColumn=this._skeleton.getColumnCount()-1;break;case e.RANGE_TYPE.COLUMN:b.startRow=0,b.endRow=this._skeleton.getRowCount()-1;break;case e.RANGE_TYPE.ALL:b.startRow=0,b.startColumn=0,b.endRow=this._skeleton.getRowCount()-1,b.endColumn=this._skeleton.getColumnCount()-1}let x={range:b,primary:b,style:null};(b.isMerged||b.isMergedMainCell)&&(x={range:{...b,startRow:b.startRow,endRow:b.startRow,startColumn:b.startColumn,endColumn:b.startColumn},primary:{...b,actualRow:b.startRow,actualColumn:b.startColumn,startRow:b.startRow,endRow:b.startRow,startColumn:b.startColumn,endColumn:b.startColumn},style:null}),x.range.rangeType=i;let S=(0,t.attachSelectionWithCoord)(x,this._skeleton);this._startRangeWhenPointerDown={...S.rangeWithCoord};let C={...S.rangeWithCoord,rangeType:i},w=this.getActiveSelectionControl(),T=this.getSelectionControls();for(let t of T){if(n.button===2&&e.Rectangle.contains(t.model,C)){w=t;return}if(t.model.isEqual(C)){w=t;break}}this._checkClearPreviousControls(n);let E=w==null?void 0:w.model.currentCell,D=n.shiftKey&&E,O=this._remainLastEnabled&&!n.ctrlKey&&!n.shiftKey&&!this._skipLastEnabled&&!this._singleSelectionEnabled;D&&E?this._makeSelectionByTwoCells(E,C,l,i,w):O&&w?w.updateRangeBySelectionWithCoord(S):w=this.newSelectionControl(u,l,x);for(let e=0;e<this.getSelectionControls().length-1;e++)this.getSelectionControls()[e].clearHighlight();this._selectionMoveStart$.next(this.getSelectionDataWithStyle()),u.disableObjectsEvent(),this._clearUpdatingListeners(),this._addEndingListeners(),(c=u.getTransformer())==null||c.clearSelectedObjects(),this._setupPointerMoveListener(p,w,i,s,h,g),this._escapeShortcutDisposable=this._shortcutService.forceEscape(),this._scenePointerUpSub=u.onPointerUp$.subscribeEvent(()=>{var e;this._clearUpdatingListeners(),this._selectionMoveEnd$.next(this.getSelectionDataWithStyle()),(e=this._escapeShortcutDisposable)==null||e.dispose(),this._escapeShortcutDisposable=null})}newSelectionControl(e,n,r){let i=this.getSelectionControls().length,{rowHeaderWidth:a,columnHeaderHeight:o}=n,s=new t.SelectionControl(e,i,this._themeService,{highlightHeader:this._highlightHeader,enableAutoFill:!1,rowHeaderWidth:a,columnHeaderHeight:o}),c=(0,t.attachSelectionWithCoord)(r,n);return s.updateRangeBySelectionWithCoord(c),this._selectionControls.push(s),s.setControlExtension({skeleton:n,scene:e,themeService:this._themeService,injector:this._injector,selectionHooks:{selectionMoveEnd:()=>{this._selectionMoveEnd$.next(this.getSelectionDataWithStyle())}}}),s}};X=S([x(1,(0,e.Inject)(e.Injector)),x(2,(0,e.Inject)(e.ThemeService)),x(3,c.IShortcutService),x(4,(0,e.Inject)(t.SheetSkeletonManagerService)),x(5,e.IContextService),x(6,o.IRefSelectionsService)],X);function Ke(e){let n=(0,t.genNormalSelectionStyle)(e);return n.widgets={tl:!0,tc:!0,tr:!0,ml:!0,mr:!0,bl:!0,bc:!0,br:!0},n}const qe=(e,t,n=!0)=>{let r=-1;return e.reduce((e,i,a)=>{if(e.isFinish)return e;let o=e.currentIndex;if(typeof i!=`string`)e.currentIndex+=i.token.length;else{let t=i.length;e.currentIndex+=t}return(n?e.currentIndex===t:t>o&&t<=e.currentIndex)&&(r=a,e.isFinish=!0),e},{currentIndex:0,isFinish:!1}),r},Je=(e,t)=>{let r=e[t],i=-1;if(!r||typeof r==`string`||r.nodeType!==n.sequenceNodeType.REFERENCE)return-1;for(let r=0;r<=t;r++){let t=e[r];typeof t!=`string`&&t.nodeType===n.sequenceNodeType.REFERENCE&&i++}return i},Ye=(e,t=100)=>{(0,u.useEffect)(()=>{let n=null,r=()=>{n===null&&(n=window.setTimeout(()=>{e(),n=null},t))};return window.addEventListener(`scroll`,r),window.addEventListener(`resize`,r),()=>{n!==null&&clearTimeout(n),window.removeEventListener(`scroll`,r),window.removeEventListener(`resize`,r)}},[e,t])};function Xe(t,n,a){let o=(0,c.useDependency)(i.IEditorService),s=(0,u.useMemo)(()=>new r.BehaviorSubject({left:-999,top:-999,right:-999,bottom:-999}),[]),l=(0,c.useDependency)(c.ISidebarService),d=(0,c.useDependency)(e.IUniverInstanceService),f=(0,c.useEvent)(()=>{var e;let n=o.getEditor(t);if(!n)return;let r=n.getBoundingClientRect(),{marginTop:i=0,marginBottom:a=0}=n.getDocumentData().documentStyle,c=n.getSkeleton();if(!c)return;let l=(e=c.getSkeletonData())==null?void 0:e.pages[0].height,{left:u,top:d,right:f,bottom:p}=r;d+=i,p=l?d+l:p-a;let m=s.getValue();if(!(m.left===u&&m.top===d&&m.right===f&&m.bottom===p))return s.next({left:u-1,right:f+1,top:d-1,bottom:p+1}),r});return(0,u.useEffect)(()=>{n&&f()},[t,o,d.unitAdded$,f,n,...a==null?[]:a]),Ye(f),(0,u.useEffect)(()=>{let e=l.scrollEvent$.pipe((0,r.throttleTime)(100)).subscribe(f);return()=>{e.unsubscribe()}},[]),[s,f]}const Z=e=>{let t=(0,u.useRef)(e);return t.current=e,t},Ze=(e,t,i)=>{let a=(0,c.useDependency)(w),o=(0,c.useDependency)(s.IDescriptionService),l=(0,c.useDependency)(n.LexerTreeBuilder),[d,f]=(0,u.useState)(),[p,m]=(0,u.useState)(-1),[h,g]=(0,u.useState)(!0),_=Z(h),v=(0,u.useRef)(t);v.current=t;let y=()=>{f(void 0),m(-1),g(!1)};return(0,u.useEffect)(()=>{let e=l.sequenceNodesBuilder(t.slice(1));a.setSequenceNodes(e==null?[]:e)},[t]),(0,u.useEffect)(()=>{if(i&&e){let e=i.selectionChange$.pipe((0,r.debounceTime)(50)).subscribe(e=>{if(e.textRanges.length===1){let[t]=e.textRanges;if(t.collapsed&&_.current){let{startOffset:e}=t,r=a.getCurrentSequenceNodeIndex(e-2),i=a.getCurrentSequenceNodeByIndex(r),s=a.getCurrentSequenceNodeByIndex(r+1);if(i)if(typeof i!=`string`&&i.nodeType===3&&!o.hasDefinedNameDescription(i.token.trim())&&s===n.matchToken.OPEN_BRACKET){f(o.getFunctionInfo(i.token)),m(-1);return}else{let t=l.getFunctionAndParameter(`${v.current}A`,e-1);if(t){let{functionName:e,paramIndex:n}=t;f(o.getFunctionInfo(e)),m(n);return}}}}f(void 0),m(-1)}),t=i.selectionChange$.pipe((0,r.filter)(e=>e.textRanges.length===1),(0,r.map)(e=>e.textRanges[0].startOffset),(0,r.distinctUntilChanged)()).subscribe(()=>{g(!0)});return()=>{e.unsubscribe(),t.unsubscribe()}}},[i,e]),(0,u.useEffect)(()=>{e||y()},[e]),{functionInfo:d,paramIndex:p,reset:y}},Qe=({onClick:e})=>(0,d.jsx)(`div`,{className:`univer-z-[15] univer-box-border univer-h-[18px] univer-cursor-pointer univer-overflow-visible univer-whitespace-nowrap univer-rounded-l univer-border univer-border-r-0 univer-border-gray-600 univer-bg-primary-600 univer-p-0.5 univer-text-xs univer-font-bold univer-leading-[13px] univer-text-white`,onClick:e,children:`?`}),$e=({className:e,title:t,value:n})=>(0,d.jsxs)(`div`,{className:`univer-my-2`,children:[(0,d.jsx)(`div`,{className:(0,f.clsx)(`univer-mb-2 univer-text-sm univer-font-medium univer-text-gray-900 dark:!univer-text-white`,e),children:t}),(0,d.jsx)(`div`,{className:`univer-whitespace-pre-wrap univer-break-words univer-text-xs univer-text-gray-500`,children:n})]}),et=e=>{let{prefix:t,value:n,active:r,onClick:i}=e;return(0,d.jsxs)(`div`,{children:[(0,d.jsxs)(`span`,{children:[t,`(`]}),n&&n.map((e,t)=>(0,d.jsxs)(`span`,{children:[(0,d.jsx)(`span`,{className:r===t?`univer-text-primary-500`:``,onClick:()=>i(t),children:Fe(e)}),t===n.length-1?``:`,`]},e.name)),`)`]})},tt=()=>{};function nt(n){let{onParamsSwitch:r=tt,onClose:i=tt,isFocus:a,editor:o,formulaText:s}=n,{functionInfo:l,paramIndex:m,reset:h}=Ze(a,s,o),g=(0,c.useDependency)(t.IEditorBridgeService),_=!(0,c.useObservable)(g.helpFunctionVisible$),[v,y]=(0,u.useState)(!1),b=(0,c.useDependency)(e.LocaleService),x=b.t(`formula.prompt.required`),S=b.t(`formula.prompt.optional`),[C]=Xe(o.getEditorId(),!!l,[l,m]);function w(e){r&&r(e)}let T=(0,c.useEvent)(e=>{g.helpFunctionVisible$.next(!e)});return l?_?(0,d.jsx)(c.RectPopup,{portal:!0,anchorRect$:C,direction:`left-center`,children:(0,d.jsx)(Qe,{onClick:()=>T(!1)})},`hidden`):(0,d.jsx)(c.RectPopup,{portal:!0,onClickOutside:()=>h(),anchorRect$:C,direction:`vertical`,children:(0,d.jsxs)(`div`,{className:(0,f.clsx)(`univer-m-0 univer-box-border univer-w-[250px] univer-select-none univer-list-none univer-rounded-lg univer-bg-white univer-leading-5 univer-shadow-md univer-outline-none dark:!univer-bg-gray-900`,f.borderClassName),children:[(0,d.jsxs)(`div`,{className:(0,f.clsx)(`univer-box-border univer-flex univer-items-center univer-justify-between univer-px-4 univer-py-3 univer-text-xs univer-font-medium univer-text-gray-900 dark:!univer-text-white`,f.borderTopClassName),style:{overflowWrap:`anywhere`},children:[(0,d.jsx)(et,{prefix:l.functionName,value:l.functionParameter,active:m,onClick:w}),(0,d.jsxs)(`div`,{className:`univer-flex`,children:[(0,d.jsx)(`div`,{className:`univer-ml-2 univer-flex univer-size-6 univer-cursor-pointer univer-items-center univer-justify-center univer-rounded univer-bg-transparent univer-p-0 univer-text-xs univer-text-gray-500 univer-outline-none univer-transition-colors hover:univer-bg-gray-200 dark:hover:!univer-bg-gray-600`,style:{transform:v?`rotateZ(-90deg)`:`rotateZ(90deg)`},onClick:()=>y(!v),children:(0,d.jsx)(p.MoreIcon,{})}),(0,d.jsx)(`div`,{className:`univer-ml-2 univer-flex univer-size-6 univer-cursor-pointer univer-items-center univer-justify-center univer-rounded univer-bg-transparent univer-p-0 univer-text-xs univer-text-gray-600 univer-outline-none univer-transition-colors hover:univer-bg-gray-300 dark:!univer-text-gray-200 dark:hover:!univer-bg-gray-600`,onClick:()=>{T(!0),i()},children:(0,d.jsx)(p.CloseIcon,{})})]})]}),(0,d.jsx)(`div`,{className:(0,f.clsx)(`univer-box-border univer-max-h-[350px] univer-overflow-y-auto univer-px-4 univer-pb-3 univer-pt-0`,f.scrollbarClassName),style:{height:v?`unset`:0,padding:v?`revert-layer`:0},children:(0,d.jsxs)(`div`,{className:`univer-mt-3`,children:[(0,d.jsx)($e,{title:b.t(`formula.prompt.helpExample`),value:`${l.functionName}(${l.functionParameter.map(e=>e.example).join(`,`)})`}),(0,d.jsx)($e,{title:b.t(`formula.prompt.helpAbstract`),value:l.description}),l&&l.functionParameter&&l.functionParameter.map((e,t)=>(0,d.jsx)($e,{className:m===t?`univer-text-primary-500`:``,title:e.name,value:`${e.require?x:S} ${e.detail}`},t))]})})]})},`show`):null}const rt=t=>{let n=(0,c.useDependency)(i.IEditorService);return(0,c.useEvent)(r=>{if(t){n.focus(t.getEditorId());let o=[...t.getSelectionRanges()];if(e.Tools.isDefine(r))t.setSelectionRanges([{startOffset:r,endOffset:r}]);else if(!o.length&&!t.docSelectionRenderService.isOnPointerEvent){var i,a;let e=(i=(a=t.getDocumentData().body)==null?void 0:a.dataStream)==null?`\r
|
|
2
|
+
`:i,n=Math.max(e.length-2,0);t.setSelectionRanges([{startOffset:n,endOffset:n}])}else t.setSelectionRanges(o)}})};function it(t){var n,r;let i=t.get(e.IUniverInstanceService).getCurrentUniverDocInstance();if(i!=null&&i.getBody())return{dataStream:(n=(r=i.getBody())==null?void 0:r.dataStream)==null?``:n,offset:0}}let Q=function(e){return e[e.NOT_SELECT=0]=`NOT_SELECT`,e[e.NEED_ADD=1]=`NEED_ADD`,e[e.CAN_EDIT=2]=`CAN_EDIT`,e[e.EDIT_OTHER_SHEET_REFERENCE=3]=`EDIT_OTHER_SHEET_REFERENCE`,e[e.EDIT_OTHER_WORKBOOK_REFERENCE=4]=`EDIT_OTHER_WORKBOOK_REFERENCE`,e}({});function at(t){var o;let{editorId:s,isFocus:d,disableOnClick:f,unitId:p,subUnitId:m}=t,h=(0,c.useDependency)(a.IRenderManagerService),g=(0,c.useDependency)(e.IUniverInstanceService),_=h.getRenderById(p),v=h.getRenderById(s),y=v==null?void 0:v.with(i.DocSelectionRenderService),b=(0,c.useDependency)(l.DocSelectionManagerService),x=(0,c.useDependency)(e.Injector),[S,C]=(0,u.useState)(Q.NOT_SELECT),w=(0,c.useDependency)(n.LexerTreeBuilder),T=(0,u.useRef)(!0),E=_==null?void 0:_.with(X),D=Z(S),O=g.getUnit(p,e.UniverInstanceType.UNIVER_SHEET),k=O==null?void 0:O.getSheetBySheetId(m),A=(0,c.useEvent)(e=>{E&&E.setSkipLastEnabled(e===Q.NEED_ADD||e===Q.EDIT_OTHER_SHEET_REFERENCE||e===Q.EDIT_OTHER_WORKBOOK_REFERENCE),D.current=e,C(e)}),j=(0,c.useEvent)(()=>{var t,r;let i=g.getCurrentUnitOfType(e.UniverInstanceType.UNIVER_SHEET);if(!i)return;let a=i.getActiveSheet(),o=y==null?void 0:y.getActiveTextRange(),s=o!=null&&o.collapsed?o.startOffset:-1,c=it(x);if(!c)return;let l=c==null||(t=c.dataStream)==null?void 0:t.slice(0,-2),u=((r=w.sequenceNodesBuilder(l))==null?[]:r).map(e=>typeof e==`object`?e.nodeType===n.sequenceNodeType.REFERENCE?{...e,range:(0,n.deserializeRangeWithSheetWithCache)(e.token)}:{...e,range:void 0}:e),d=l[s-1],f=l[s],p=u.find(e=>typeof e==`object`&&e.nodeType===n.sequenceNodeType.REFERENCE&&s===e.endIndex+2),m=d&&(0,n.matchRefDrawToken)(d)&&(!f||(0,n.isFormulaLexerToken)(f)&&f!==n.matchToken.OPEN_BRACKET),h=!!p;if((l==null?void 0:l.substring(0,1))===`=`&&(m||h))if(h){var _;if(T.current)return;let{sheetName:t,unitId:n}=p.range,r=(_=g.getCurrentUnitOfType(e.UniverInstanceType.UNIVER_SHEET))==null?void 0:_.getUnitId();n&&n!==r?A(Q.EDIT_OTHER_WORKBOOK_REFERENCE):!t&&a.getSheetId()===(k==null?void 0:k.getSheetId())||t===a.getName()?A(Q.CAN_EDIT):A(Q.EDIT_OTHER_SHEET_REFERENCE)}else T.current=!1,A(Q.NEED_ADD);else A(Q.NOT_SELECT)});return(0,u.useEffect)(()=>{let e=b.textSelection$.pipe((0,r.filter)(e=>e.unitId===s)).subscribe(()=>{j()});return()=>e.unsubscribe()},[j,b.textSelection$,s]),(0,u.useEffect)(()=>{d||(A(Q.NOT_SELECT),T.current=!0)},[d,A]),(0,u.useEffect)(()=>{var e;if(!f)return;let t=v==null||(e=v.mainComponent)==null?void 0:e.onPointerDown$.subscribeEvent(()=>{A(Q.NOT_SELECT),T.current=!0});return()=>t==null?void 0:t.unsubscribe()},[f,v==null||(o=v.mainComponent)==null?void 0:o.onPointerDown$,A]),(0,u.useEffect)(()=>{if(!d)return;let t=O==null?void 0:O.activeSheet$.subscribe(()=>{j()}),n=g.getCurrentTypeOfUnit$(e.UniverInstanceType.UNIVER_SHEET).subscribe(()=>{j()});return()=>{t==null||t.unsubscribe(),n==null||n.unsubscribe()}},[j,d,O==null?void 0:O.activeSheet$,g.getCurrentTypeOfUnit$]),{isSelecting:S,isSelectingRef:D}}const ot=()=>{let e=(0,c.useDependency)(n.LexerTreeBuilder);return(0,u.useCallback)(t=>e.sequenceNodesBuilder(t)||[],[e])};function st(t,n,r){return{id:r,strokeWidth:1,stroke:n,fill:new e.ColorKit(n).setAlpha(.05).toRgbString(),widgets:{tl:!0,tc:!0,tr:!0,ml:!0,mr:!0,bl:!0,bc:!0,br:!0},widgetSize:6,widgetStrokeWidth:1,widgetStroke:t.getColorFromTheme(`white`)}}function ct(t){var r;let{unitId:i,subUnitId:a,currentWorkbook:s,refSelections:c,editor:l,refSelectionsService:u,refSelectionsRenderService:d,sheetSkeletonManagerService:f,themeService:p,univerInstanceService:m}=t,h=s.getUnitId(),g=m.getUnit(i,e.UniverInstanceType.UNIVER_SHEET),_=g==null?void 0:g.getActiveSheet(),v=[];if(!g||!_){u.setSelections(v);return}let y=_.getSheetId(),b=e=>{var t;return g==null||(t=g.getSheetBySheetName(e))==null?void 0:t.getSheetId()};if(!(!(f==null||(r=f.getWorksheetSkeleton(y))==null)&&r.skeleton))return;let x=[];for(let e=0,t=c.length;e<t;e++){let{themeColor:t,token:r,refIndex:s,endIndex:l}=c[e],{unitId:u,sheetName:d,range:f}=(0,n.deserializeRangeWithSheet)(r),m=b(d);if(!m&&d||h!==i&&u!==h||u&&u!==h||m&&m!==y||!m&&y!==a)continue;let g=(0,o.setEndForRange)(f,_.getRowCount(),_.getColumnCount());g.unitId=i,g.sheetId=y,v.push({range:g,primary:null,style:st(p,t,s.toString())}),x.push(l)}if(l){var S;let e=(S=l.getSelectionRanges())==null||(S=S[0])==null?void 0:S.startOffset,t=x.findIndex(t=>t+2===e);t===-1?d==null||d.resetActiveSelectionIndex():d==null||d.setActiveSelectionIndex(t)}return v}function lt(n,r){let i=(0,c.useDependency)(e.IUniverInstanceService),s=(0,c.useDependency)(e.ThemeService),l=(0,c.useDependency)(o.IRefSelectionsService),d=(0,c.useDependency)(a.IRenderManagerService),f=(0,c.useObservable)((0,u.useMemo)(()=>i.getCurrentTypeOfUnit$(e.UniverInstanceType.UNIVER_SHEET),[i])),p=f?d.getRenderById(f.getUnitId()):null,m=p==null?void 0:p.with(X),h=p==null?void 0:p.with(t.SheetSkeletonManagerService),g=(0,c.useEvent)((t,a)=>{let o=i.getCurrentUnitOfType(e.UniverInstanceType.UNIVER_SHEET);if(!o||m!=null&&m.selectionMoving)return;let c=ct({unitId:n,subUnitId:r,currentWorkbook:o,refSelections:t,editor:a,refSelectionsService:l,refSelectionsRenderService:m,sheetSkeletonManagerService:h,themeService:s,univerInstanceService:i});c&&(((m==null?void 0:m.getSelectionControls())||[]).length===c.length?m==null||m.resetSelectionsByModelData(c):l.setSelections(c))});return(0,u.useEffect)(()=>()=>{m==null||m.resetActiveSelectionIndex()},[m]),g}function ut(t=``){let n=(0,c.useDependency)(s.IDescriptionService),r=dt(),a=(0,c.useDependency)(e.ICommandService),o=(0,u.useMemo)(()=>t.length,[t]);return(0,c.useEvent)((s,c,l=!0,u)=>{let d=s.getDocumentData(),f=s.getEditorId();if(!d)return[];let p=d.body;if(!p)return[];let m=p.dataStream.slice(0,p.dataStream.length-2),h={dataStream:``,...d.body};if(!m.startsWith(t))return[];if(c==null||c.length===0)return h.textRuns=[],a.syncExecuteCommand(i.ReplaceTextRunsCommand.id,{unitId:f,body:(0,e.getBodySlice)(h,0,h.dataStream.length-2)}),[];{let{textRuns:d,refSelections:p}=ft(n,r,c);o&&d.forEach(e=>{e.ed+=o,e.st+=o}),h.textRuns=[{st:0,ed:1,ts:{fs:11}},...d],h.dataStream=`${t}${c.reduce((e,t)=>typeof t==`string`?`${e}${t}`:`${e}${t.token}`,``)}\r\n`;let m;if(l){m=s.getSelectionRanges();let e=h.dataStream.length-2+o;m.forEach(t=>{t.startOffset=Math.max(0,Math.min(t.startOffset,e)),t.endOffset=Math.max(0,Math.min(t.endOffset,e))})}return a.syncExecuteCommand(i.ReplaceTextRunsCommand.id,{unitId:f,body:(0,e.getBodySlice)(h,0,h.dataStream.length-2),textRanges:u==null?m:u}),p}})}function dt(){let t=(0,c.useDependency)(e.ThemeService);return(0,u.useMemo)(()=>({formulaRefColors:[t.getColorFromTheme(`loop-color.1`),t.getColorFromTheme(`loop-color.2`),t.getColorFromTheme(`loop-color.3`),t.getColorFromTheme(`loop-color.4`),t.getColorFromTheme(`loop-color.5`),t.getColorFromTheme(`loop-color.6`),t.getColorFromTheme(`loop-color.7`),t.getColorFromTheme(`loop-color.8`),t.getColorFromTheme(`loop-color.9`),t.getColorFromTheme(`loop-color.10`),t.getColorFromTheme(`loop-color.11`),t.getColorFromTheme(`loop-color.12`)].map(e=>t.isValidThemeColor(e)?t.getColorFromTheme(e):e),numberColor:t.getColorFromTheme(`blue.700`),stringColor:t.getColorFromTheme(`jiqing.800`),plainTextColor:t.getColorFromTheme(`black`)}),[t.getCurrentTheme()])}function ft(e,t,r){let{formulaRefColors:i,numberColor:a,stringColor:o,plainTextColor:s}=t,c=[],l=[],u=new Map,d=0;for(let t=0,f=r.length;t<f;t++){let f=r[t];if(typeof f==`string`){let e=c[c.length-1],t=e?e.ed:0,n=t+f.length;c.push({st:t,ed:n,ts:{cl:{rgb:s},fs:11}});continue}if(e.hasDefinedNameDescription(f.token.trim())){c.push({st:f.startIndex,ed:f.endIndex+1,ts:{cl:{rgb:s},fs:11}});continue}let{startIndex:p,endIndex:m,nodeType:h,token:g}=f,_=``;h===n.sequenceNodeType.REFERENCE?(u.has(g)?_=u.get(g):(_=i[d%i.length],u.set(g,_),d++),l.push({refIndex:t,themeColor:_,token:g,startIndex:f.startIndex,endIndex:f.endIndex,index:l.length})):h===n.sequenceNodeType.NUMBER?_=a:(h===n.sequenceNodeType.STRING||h===n.sequenceNodeType.ARRAY)&&(_=o),_&&_.length>0?c.push({st:p,ed:m+1,ts:{cl:{rgb:_},fs:11}}):c.push({st:p,ed:m+1,ts:{cl:{rgb:s},fs:11}})}return{textRuns:c,refSelections:l}}const pt=(n,r,o,s)=>{let l=(0,c.useDependency)(e.ICommandService),d=(0,c.useDependency)(c.IShortcutService),f=(0,u.useRef)(r);f.current=r;let p=(0,u.useRef)(s);p.current=s,(0,u.useEffect)(()=>{if(!o||!n)return;let r=`sheet.formula-embedding-editor.${o.getEditorId()}`,s=new e.DisposableCollection,u=(t,n)=>{if(p.current){p.current(t,n);return}let r=e.Direction.LEFT;t===c.KeyCode.ARROW_DOWN?r=e.Direction.DOWN:t===c.KeyCode.ARROW_UP?r=e.Direction.UP:t===c.KeyCode.ARROW_RIGHT&&(r=e.Direction.RIGHT),n===c.MetaKeys.SHIFT?l.executeCommand(i.MoveSelectionOperation.id,{direction:r}):l.executeCommand(i.MoveCursorOperation.id,{direction:r})},m=(n,r)=>{let i=e.Direction.DOWN;n===c.KeyCode.ARROW_DOWN?i=e.Direction.DOWN:n===c.KeyCode.ARROW_UP?i=e.Direction.UP:n===c.KeyCode.ARROW_LEFT?i=e.Direction.LEFT:n===c.KeyCode.ARROW_RIGHT&&(i=e.Direction.RIGHT),f.current?r===c.MetaKeys.CTRL_COMMAND?l.executeCommand(t.MoveSelectionCommand.id,{direction:i,jumpOver:t.JumpOver.moveGap,extra:`formula-editor`,fromCurrentSelection:f.current===Q.NEED_ADD||f.current===Q.EDIT_OTHER_SHEET_REFERENCE}):r===c.MetaKeys.SHIFT?l.executeCommand(t.ExpandSelectionCommand.id,{direction:i,extra:`formula-editor`}):r===(c.MetaKeys.CTRL_COMMAND|c.MetaKeys.SHIFT)?l.executeCommand(t.ExpandSelectionCommand.id,{direction:i,jumpOver:t.JumpOver.moveGap,extra:`formula-editor`}):l.executeCommand(t.MoveSelectionCommand.id,{direction:i,extra:`formula-editor`,fromCurrentSelection:f.current===Q.NEED_ADD||f.current===Q.EDIT_OTHER_SHEET_REFERENCE}):u(n,r)};return s.add(l.registerCommand({id:r,type:e.CommandType.OPERATION,handler(e,t){let{keyCode:n,metaKey:r}=t;m(n,r)}})),[{keyCode:c.KeyCode.ARROW_DOWN},{keyCode:c.KeyCode.ARROW_LEFT},{keyCode:c.KeyCode.ARROW_RIGHT},{keyCode:c.KeyCode.ARROW_UP},{keyCode:c.KeyCode.ARROW_DOWN,metaKey:c.MetaKeys.SHIFT},{keyCode:c.KeyCode.ARROW_LEFT,metaKey:c.MetaKeys.SHIFT},{keyCode:c.KeyCode.ARROW_RIGHT,metaKey:c.MetaKeys.SHIFT},{keyCode:c.KeyCode.ARROW_UP,metaKey:c.MetaKeys.SHIFT},{keyCode:c.KeyCode.ARROW_DOWN,metaKey:c.MetaKeys.CTRL_COMMAND},{keyCode:c.KeyCode.ARROW_LEFT,metaKey:c.MetaKeys.CTRL_COMMAND},{keyCode:c.KeyCode.ARROW_RIGHT,metaKey:c.MetaKeys.CTRL_COMMAND},{keyCode:c.KeyCode.ARROW_UP,metaKey:c.MetaKeys.CTRL_COMMAND},{keyCode:c.KeyCode.ARROW_DOWN,metaKey:c.MetaKeys.CTRL_COMMAND|c.MetaKeys.SHIFT},{keyCode:c.KeyCode.ARROW_LEFT,metaKey:c.MetaKeys.CTRL_COMMAND|c.MetaKeys.SHIFT},{keyCode:c.KeyCode.ARROW_RIGHT,metaKey:c.MetaKeys.CTRL_COMMAND|c.MetaKeys.SHIFT},{keyCode:c.KeyCode.ARROW_UP,metaKey:c.MetaKeys.CTRL_COMMAND|c.MetaKeys.SHIFT}].map(({keyCode:e,metaKey:t})=>({id:r,binding:t?e|t:e,preconditions:()=>!0,priority:900,staticParameters:{eventType:a.DeviceInputEventType.Keyboard,keyCode:e,metaKey:t}})).forEach(e=>{s.add(d.registerShortcut(e))}),()=>{s.dispose()}},[l,o,n,d])},mt=(t,n,r,i,s=!0)=>{var l;let d=(0,c.useDependency)(a.IRenderManagerService),f=(0,c.useDependency)(e.IContextService),p=(0,c.useDependency)(c.IContextMenuService),m=(0,c.useDependency)(o.IRefSelectionsService),h=(0,c.useDependency)(e.IUniverInstanceService),g=(0,c.useObservable)((0,u.useMemo)(()=>h.getCurrentTypeOfUnit$(e.UniverInstanceType.UNIVER_SHEET),[h])),_=d.getRenderById((l=g==null?void 0:g.getUnitId())==null?``:l),v=_==null?void 0:_.with(X);(0,u.useLayoutEffect)(()=>{if(t)return f.setContextValue(e.EDITOR_ACTIVATED,!0),s&&p.disable(),()=>{let t=h.getCurrentUnitOfType(e.UniverInstanceType.UNIVER_DOC);(t==null?void 0:t.getUnitId())===i&&f.setContextValue(e.EDITOR_ACTIVATED,!1),s&&p.enable(),m.clear()}},[f,t,m,s,i]),(0,u.useLayoutEffect)(()=>{if(t&&n){let e=v==null?void 0:v.enableSelectionChanging();return f.setContextValue(o.REF_SELECTIONS_ENABLED,!0),()=>{f.setContextValue(o.REF_SELECTIONS_ENABLED,!1),e==null||e.dispose()}}},[f,t,v,n]),(0,u.useEffect)(()=>{t&&(v==null||v.setSkipLastEnabled(!1))},[t,v])},ht=(t,n,r)=>{let i=(0,c.useDependency)(e.IUniverInstanceService),a=(0,c.useDependency)(o.SheetsSelectionsService);return(0,u.useCallback)(()=>{if(t){let t=[...a.getWorkbookSelections(n).getSelectionsOfWorksheet(r)],o=i.getCurrentUnitForType(e.UniverInstanceType.UNIVER_SHEET),s=o==null?void 0:o.getActiveSheet();(o==null?void 0:o.getUnitId())!==n&&i.setCurrentUnitForType(n),s&&s.getSheetId()===r&&a.setSelections(t)}},[t,a,r,n,i])},gt=e=>e.reduce((e,t)=>typeof t==`string`?e+t.length:e+t.token.length,0),_t=e=>e.map(e=>typeof e==`string`?e:e.token).join(``),vt=(e,t=!1,r=``,i=!1)=>!t&&!i?e.map(e=>(0,n.serializeRange)(e.range)):e.map(e=>i?(0,n.serializeRangeToRefString)(e):e.sheetName!==``&&e.sheetName!==r?(0,n.serializeRangeWithSheet)(e.sheetName,e.range):(0,n.serializeRange)(e.range)),yt=e=>{var t,n,r;let{editor:i,lexerTreeBuilder:a}=e,o=i==null?void 0:i.getSelectionRanges();if((o==null?void 0:o.length)!==1)return;let s=o[0].startOffset-1,c=((t=i==null||(n=i.getDocumentData().body)==null?void 0:n.dataStream)==null?`\r
|
|
3
|
+
`:t).slice(0,-2),l=(r=a.sequenceNodesBuilder(c.slice(1)))==null?[]:r,u=qe(l,s,!1);return{nodeIndex:u,updatingRefIndex:Je(l,u),sequenceNodes:l,offset:s}},bt=(()=>{}),xt=(i,s,d,f,p,h,g,_,v,y=bt)=>{var b;let x=(0,c.useDependency)(a.IRenderManagerService),S=(0,c.useDependency)(e.IUniverInstanceService),C=(0,c.useDependency)(e.ICommandService),w=(0,c.useDependency)(l.DocSelectionManagerService),T=(0,c.useDependency)(e.ThemeService),E=(0,c.useDependency)(n.LexerTreeBuilder),D=S.getUnit(f),O=(0,c.useEvent)((e,t)=>{var n,r;return(n=(r=S.getUnit(e))==null||(r=r.getSheetBySheetId(t))==null?void 0:r.getName())==null?``:n}),k=(0,u.useMemo)(()=>O(f,p),[O,p,f]),A=(0,c.useObservable)(D==null?void 0:D.activeSheet$),j=Z({activeSheet:A,sheetName:k}),M=(0,c.useObservable)((0,u.useMemo)(()=>S.getCurrentTypeOfUnit$(e.UniverInstanceType.UNIVER_SHEET),[S])),N=x.getRenderById((b=M==null?void 0:M.getUnitId())==null?``:b),P=N==null?void 0:N.with(X),F=N==null?void 0:N.with(t.SheetSkeletonManagerService),ee=(0,c.useDependency)(o.IRefSelectionsService),I=(0,c.useEvent)((e,t,r)=>{let i=yt({editor:v,lexerTreeBuilder:E});if(!i)return;let{nodeIndex:a,updatingRefIndex:o,sequenceNodes:s,offset:c}=i;if(d.current===Q.NEED_ADD)if(c!==0){var l,u,m;if(a===-1&&s.length)return;let r=e[e.length-1],i=s.splice(a+1),o=(l=r.sheetId)==null?p:l,c={range:r,unitId:(u=r.unitId)==null?M.getUnitId():u,sheetName:O((m=r.unitId)==null?M.getUnitId():m,o)},d=o!==p,h=(M==null?void 0:M.getUnitId())!==f,_=vt([c],g&&(d||h),k,h);s.push({token:_[0],nodeType:n.sequenceNodeType.REFERENCE}),y(_t([...s,...i]),gt(s),t)}else{var h,_,b;let r=e[e.length-1],i=(h=r.sheetId)==null?p:h,a={range:r,unitId:(_=r.unitId)==null?M.getUnitId():_,sheetName:O((b=r.unitId)==null?M.getUnitId():b,i)},o=i!==p,c=(M==null?void 0:M.getUnitId())!==f,l=vt([a],g&&(o||c),k,c);s.unshift({token:l[0],nodeType:n.sequenceNodeType.REFERENCE}),y(_t(s),l[0].length,t)}else if(d.current===Q.EDIT_OTHER_SHEET_REFERENCE||d.current===Q.EDIT_OTHER_WORKBOOK_REFERENCE){let r=e.pop();if(!r)return;let i=s[a];if(typeof i==`object`&&i.nodeType===n.sequenceNodeType.REFERENCE){let e=i.token;if((M==null?void 0:M.getUnitId())!==f){var x;i.token=(0,n.serializeRangeWithSpreadsheet)((x=M==null?void 0:M.getUnitId())==null?``:x,k,r)}else i.token=k===(A==null?void 0:A.getName())?(0,n.serializeRange)(r):(0,n.serializeRangeWithSheet)(A.getName(),r);let a=c+(i.token.length-e.length);y((0,n.generateStringWithSequence)(s),a,t)}}else{let i=[...e];if(!r&&o!==-1){let e=i.pop();e&&i.splice(o,0,e)}let c=0,l=s.map(e=>{if(typeof e==`string`)return e;if(e.nodeType===n.sequenceNodeType.REFERENCE){var t,r,a;let s=(0,n.deserializeRangeWithSheet)(e.token);if(s.sheetName||(s.sheetName=k),(s.unitId||f)!==(M==null?void 0:M.getUnitId()))return e.token;if(g){var o;if(((o=j.current.activeSheet)==null?void 0:o.getName())!==s.sheetName)return e.token}let l=i[c];if(c++,!l)return``;let u=(t=l.sheetId)==null?p:t,d={range:l,unitId:(r=l.unitId)==null?M.getUnitId():r,sheetName:O((a=l.unitId)==null?M.getUnitId():a,u)},m=(M==null?void 0:M.getUnitId())!==f;return vt([d],g&&(u!==p||m),k,m)[0]}return e.token}),u=``,d;l.forEach((e,t)=>{u+=e,t===a&&(d=u.length)});let m=[];for(let t=c;t<=e.length-1;t++){var S,C,w;let n=e[t],r=(S=n.sheetId)==null?p:S,i={range:n,unitId:(C=n.unitId)==null?M.getUnitId():C,sheetName:O((w=n.unitId)==null?M.getUnitId():w,r)},a=(M==null?void 0:M.getUnitId())!==f,o=vt([i],g&&(r!==p||a),k,a);m.push(o[0])}let h=s[s.length-1],_=h&&(typeof h==`string`?!1:h.nodeType===n.sequenceNodeType.REFERENCE),v=`${u}${m.length&&_?`,`:``}${m.join(`,`)}`;y(v,!m.length&&d?d:v.length,t)}});(0,u.useEffect)(()=>{if(P&&i){let t=!0,n=0,r=(e,r)=>{if(t){t=!1,n=e.length;return}let i=e.length>n;r&&(n=e.length),I(e.map(e=>e.rangeWithCoord),r,i)},i=new e.DisposableCollection;return i.add(P.selectionMoving$.subscribe(e=>{r(e,!1)})),i.add(P.selectionMoveEnd$.subscribe(e=>{r(e,!0)})),()=>{i.dispose()}}},[i,I,P]),(0,u.useEffect)(()=>{if(s&&P&&v){let t=new e.DisposableCollection,n=()=>{t.dispose(),P.getSelectionControls().forEach((e,n)=>{t.add(e.selectionScaling$.subscribe(e=>{let t=P.getSelectionDataWithStyle().map(e=>e.rangeWithCoord),r=t[n];e.sheetId=r.sheetId,e.unitId=r.unitId,t[n]=e,I(t,!1)})),t.add(e.selectionMoving$.subscribe(e=>{let t=P.getSelectionDataWithStyle().map(e=>e.rangeWithCoord),r=t[n];e.sheetId=r.sheetId,e.unitId=r.unitId,t[n]=e,I(t,!0)}))})},i=(0,r.merge)(v.input$,ee.selectionSet$,P.selectionMoveEnd$).pipe((0,m.debounceTime)(50)).subscribe(()=>{n()});return()=>{i.unsubscribe(),t.dispose()}}},[v,s,I,P,ee.selectionSet$]),P==null||P.getSelectionDataWithStyle(),(0,u.useEffect)(()=>{if(_){let t=C.onCommandExecuted(t=>{if(t.id!==o.SetSelectionsOperation.id)return;let n=t.params;if(n.extra===`formula-editor`&&n.selections.length){let t=n.selections[n.selections.length-1];if(t){var r;let{range:i,primary:a}=t;(a!=null&&a.isMergedMainCell||a!=null&&a.isMerged)&&e.Rectangle.contains(a,i)&&(i.startRow=a.startRow,i.endRow=a.startRow,i.startColumn=a.startColumn,i.endColumn=a.startColumn),i.unitId=n.unitId,i.sheetId=n.subUnitId;let o=d.current===Q.NEED_ADD,s=((r=P==null?void 0:P.getSelectionDataWithStyle())==null?[]:r).map(e=>e.rangeWithCoord);o?s.push(i):s[s.length-1]=i,I(s,!0)}}});return()=>{t.dispose()}}},[C,v,d,E,_,I,P]),(0,u.useEffect)(()=>{if(!v)return;let e=w.textSelection$.subscribe(e=>{e.unitId===v.getEditorId()&&ct({unitId:f,subUnitId:p,refSelections:h.current,editor:v,refSelectionsService:ee,refSelectionsRenderService:P,sheetSkeletonManagerService:F,themeService:T,univerInstanceService:S,currentWorkbook:M})});return()=>e.unsubscribe()},[w.textSelection$,v,h,P,ee,F,p,T,f,S])},St=(t,n,r,s,l,d)=>{let f=(0,c.useDependency)(e.ICommandService),p=(0,c.useDependency)(i.IEditorService),m=(0,c.useDependency)(a.IRenderManagerService).getRenderById(n),h=(0,c.useDependency)(e.IUniverInstanceService),g=m==null?void 0:m.with(X);(0,u.useEffect)(()=>{if(t&&g)if(r){let t=()=>{let e=g.getSelectionControls().length;for(let t=1;t<=e;t++)g.clearLastSelection();return setTimeout(()=>{d()},30)},n=f.onCommandExecuted(e=>{e.id===o.SetWorksheetActiveOperation.id&&t()}),r=h.getCurrentTypeOfUnit$(e.UniverInstanceType.UNIVER_SHEET).subscribe(e=>{t()});return()=>{n.dispose(),r.unsubscribe()}}else{let t=f.beforeCommandExecuted(t=>{if(t.id===o.SetWorksheetActiveOperation.id){s(!1),l(),d();let t=p.getEditor(e.DOCS_NORMAL_EDITOR_UNIT_ID_KEY);t==null||t.focus()}});return()=>{t.dispose()}}},[t,g])},Ct=(e,t,r)=>{let i=(0,c.useDependency)(n.LexerTreeBuilder),a=(0,u.useRef)(!0);(0,u.useEffect)(()=>{if(e){let e=setTimeout(()=>{a.current=!1},500);return()=>{clearTimeout(e)}}},[e]),(0,u.useEffect)(()=>{a.current||t&&t(i.checkIfAddBracket(r)===0&&r.startsWith(n.operatorToken.EQUALS),`${r}`)},[r,t])},wt=(e,t=[],i)=>{let a=(0,c.useDependency)(s.IDescriptionService),[o,l]=(0,u.useState)([]),[d,f]=(0,u.useState)(``),p=(0,u.useRef)(-1),m=Z({nodes:t}),h=()=>{l([]),f(``),p.current=-1};return(0,u.useEffect)(()=>{if(i&&e){let e=i.input$.pipe((0,r.debounceTime)(300)).subscribe(()=>{let e=i.getSelectionRanges();if(e.length===1){let t=m.current.nodes,r=e[0];if(r.collapsed){let e=qe(t,r.startOffset-1,!1);p.current=e;let i=t[e];if(i&&typeof i!=`string`&&i.nodeType===n.sequenceNodeType.FUNCTION){p.current=e;let t=i.token;l(a.getSearchListByNameFirstLetter(t)),f(t);return}}}p.current=-1,f(``),l(e=>e!=null&&e.length?[]:e)});return()=>{e.unsubscribe()}}},[i,e]),(0,u.useEffect)(()=>{e||h()},[e]),{searchList:o,searchText:d,handlerFormulaReplace:(e,t)=>{let r=[...m.current.nodes];if(p.current!==-1){let i=r.splice(p.current+1),a=r.pop()||``,o=(typeof a==`string`?a.length:a.token.length)-e.length;return r.push(e),i[0]!==n.matchToken.OPEN_BRACKET&&t!==n.FunctionType.DefinedName&&(r.push(n.matchToken.OPEN_BRACKET),o--),{text:_t([...r,...i]),offset:o}}},reset:h}},Tt=()=>{},Et=(0,u.forwardRef)(Dt);function Dt(t,n){let{isFocus:r,sequenceNodes:i,onSelect:o,editor:s,onClose:l=Tt}=t,p=s.getEditorId(),m=(0,c.useDependency)(c.IShortcutService),h=(0,c.useDependency)(e.ICommandService),{searchList:g,searchText:_,handlerFormulaReplace:v,reset:y}=wt(r,i,s),b=(0,u.useMemo)(()=>!!g.length,[g]),x=(0,u.useRef)(void 0),[S,C]=(0,u.useState)(0),w=(0,u.useRef)(!1),[T]=Xe(p,b,[_,g]),E=Z({searchList:g,active:S}),D=(e,t)=>{let n=v(e,t);n&&(y(),o(n))};function O(e){w.current&&C(e)}function k(){w.current&&C(-1)}(0,u.useEffect)(()=>{if(!g.length)return;let t=`sheet.formula-embedding-editor.search_function.${p}`,n=new e.DisposableCollection,r=e=>{let{searchList:t,active:n}=E.current;switch(e){case c.KeyCode.ARROW_UP:C(e=>{let t=Math.max(0,e-1);return A(t),t});break;case c.KeyCode.ARROW_DOWN:C(e=>{let n=Math.min(t.length-1,e+1);return A(n),n});break;case c.KeyCode.TAB:case c.KeyCode.ENTER:{let e=t[n];D(e.name,e.functionType);break}case c.KeyCode.ESC:y(),l();break}};return n.add(h.registerCommand({id:t,type:e.CommandType.OPERATION,handler(e,t){let{keyCode:n}=t;r(n)}})),[c.KeyCode.ARROW_UP,c.KeyCode.ARROW_DOWN,c.KeyCode.ENTER,c.KeyCode.ESC,c.KeyCode.TAB].map(e=>({id:t,binding:e,preconditions:()=>!0,priority:1e3,staticParameters:{eventType:a.DeviceInputEventType.Keyboard,keyCode:e}})).forEach(e=>{n.add(m.registerShortcut(e))}),()=>{n.dispose()}},[g]);function A(e){let t=x.current;if(!t)return;let n=t.children[e];if(!n)return;let r=t.getBoundingClientRect().top,i=t.offsetHeight,a=n.getBoundingClientRect(),o=a.top,s=a.height;if(o>=0&&o>r&&o-r+s<=i)return;let c=n.offsetTop-(i-s)/2;t.scrollTo({top:c,behavior:`smooth`})}let j=(0,u.useMemo)(()=>{let e=``;return()=>{clearTimeout(e),w.current=!0,e=setTimeout(()=>{w.current=!1},300)}},[]);return g.length>0&&b&&(0,d.jsx)(c.RectPopup,{portal:!0,anchorRect$:T,direction:`vertical`,children:(0,d.jsx)(`ul`,{ref:e=>{x.current=e,n&&(n.current=e)},"data-u-comp":`sheets-formula-editor`,className:(0,f.clsx)(`univer-m-0 univer-box-border univer-max-h-[400px] univer-w-[250px] univer-list-none univer-overflow-y-auto univer-rounded-lg univer-bg-white univer-p-2 univer-leading-5 univer-shadow-md univer-outline-none dark:!univer-bg-gray-900`,f.borderClassName,f.scrollbarClassName),children:g.map((e,t)=>(0,d.jsxs)(`li`,{className:(0,f.clsx)(`univer-box-border univer-cursor-pointer univer-rounded univer-px-2 univer-py-1 univer-text-gray-900 univer-transition-colors dark:!univer-text-white`,{"univer-bg-gray-200 dark:!univer-bg-gray-600":S===t}),onMouseEnter:()=>O(t),onMouseLeave:k,onMouseMove:j,onClick:()=>{D(e.name,e.functionType),s&&s.focus()},children:[(0,d.jsxs)(`span`,{className:`univer-block univer-truncate univer-text-xs`,children:[(0,d.jsx)(`span`,{className:`univer-text-red-500`,children:e.name.substring(0,_.length)}),(0,d.jsx)(`span`,{children:e.name.slice(_.length)})]}),(0,d.jsx)(`span`,{className:`univer-block univer-text-xs univer-text-gray-400`,children:e.desc})]},e.name))})})}const Ot=e=>e.startsWith(n.operatorToken.EQUALS)?e.slice(1):``,kt=()=>{},At=(0,u.forwardRef)((n,r)=>{var o,s,l,p;let{errorText:m,initValue:h,unitId:g,subUnitId:_,isFocus:v=!0,isSupportAcrossSheet:y=!1,onFocus:b=kt,onBlur:x=kt,onChange:S,onVerify:C,className:w,editorId:T,moveCursor:E=!0,onFormulaSelectingChange:D,keyboardEventConfig:O,onMoveInEditor:k,resetSelectionOnBlur:A=!0,autoScrollbar:j=!0,isSingle:M=!0,disableSelectionOnClick:N=!1,autofocus:P=!0,disableContextMenu:F,style:ee}=n,I=(0,c.useDependency)(i.IEditorService),te=(0,u.useRef)(null),L=(0,c.useEvent)(S);(0,u.useImperativeHandle)(r,()=>({isClickOutSide:e=>te.current?!te.current.contains(e.target):!1}));let ne=(0,c.useEvent)(D),re=(0,u.useRef)(null),R=(0,u.useRef)(void 0),z=R.current,[B,ie]=(0,u.useState)(v),ae=(0,u.useRef)(null),V=(0,u.useMemo)(()=>T==null?(0,e.createInternalEditorID)(`${t.EMBEDDING_FORMULA_EDITOR}-${(0,e.generateRandomId)(4)}`):T,[]),oe=(0,u.useMemo)(()=>m!==void 0,[m]),se=(0,c.useDependency)(e.IUniverInstanceService),ce=se.getUnit(V);(0,c.useObservable)(ce==null?void 0:ce.change$);let le=ot(),H=e.BuildTextUtils.transform.getPlainText((o=ce==null||(s=ce.getBody())==null?void 0:s.dataStream)==null?``:o),ue=Z(H),de=(0,u.useMemo)(()=>Ot(H),[H]),fe=(0,u.useMemo)(()=>le(de),[de,le]),{isSelecting:U,isSelectingRef:pe}=at({unitId:g,subUnitId:_,editorId:V,isFocus:B,disableOnClick:N}),me=(0,u.useRef)(``),he=(0,c.useDependency)(a.IRenderManagerService).getRenderById(V),ge=he==null?void 0:he.with(i.DocSelectionRenderService),_e=ge==null?void 0:ge.isFocusing,ve=(0,c.useObservable)((0,u.useMemo)(()=>se.getCurrentTypeOfUnit$(e.UniverInstanceType.UNIVER_DOC),[se])),ye=(ve==null?void 0:ve.getUnitId())===V,W=(0,u.useRef)([]),be=U,G=(l=(p=(0,c.useDependency)(e.IConfigService).getConfig(`sheets-formula-ui.base.config`))==null?void 0:p.functionScreenTips)==null?!0:l;(0,c.useUpdateEffect)(()=>{L(H)},[H,L]);let xe=ut(`=`),K=lt(g,_),q=(0,c.useEvent)((e,t=!0,n,r)=>{if(!R.current)return;me.current=e;let i=e[0]===`=`?e.slice(1):``,a=le(i),o=a.reduce((e,t)=>typeof t==`object`?`${e}${t.token}`:`${e}${t}`,``),s=xe(R.current,o===i?a:[],t,r);if(W.current=s,n){let e=r==null?z==null?void 0:z.getSelectionRanges():r;if((e==null?void 0:e.length)!==1)return;let t=Je(a,qe(a,e[0].startOffset-1,!1));if(t>=0){let e=s.splice(t,1)[0];e&&s.push(e)}K(B?s:[],R.current)}});(0,u.useEffect)(()=>{B&&q(H,!1,!0)},[B]),(0,u.useEffect)(()=>{if(B){if(me.current===H)return;q(H,!1,!0)}},[H]),Ct(B,C,H);let J=rt(z),Se=ht(B,g,_);(0,u.useEffect)(()=>{var e;ne(U,(e=ge==null?void 0:ge.isFocusing)==null?!0:e)},[ne,U]),(0,i.useKeyboardEvent)(B,O,z),(0,u.useLayoutEffect)(()=>{let e;return ae.current&&(e=I.register({autofocus:P,editorUnitId:V,initialSnapshot:{id:V,body:{dataStream:`${h}\r\n`,textRuns:[],customBlocks:[],customDecorations:[],customRanges:[]},documentStyle:{}}},ae.current),R.current=I.getEditor(V),q(h,!1,!0)),()=>{e==null||e.dispose()}},[]),(0,u.useLayoutEffect)(()=>{v?(ie(v),J()):(A&&(z==null||z.blur(),Se()),ie(v))},[v,z,J,Se,A]);let{checkScrollBar:Ce}=(0,i.useResize)(z,M,j);mt(B,!!(U&&ye),g,V,F),pt(!!(B&&_e&&E),be,z,k);let we=(0,c.useEvent)((e,t,n)=>{if(!_e)return;let r=t===-1?void 0:[{startOffset:t+1,endOffset:t+1,collapsed:!0}];q(`=${e}`,!0,n,r),n&&(J(),t!==-1&&setTimeout(()=>{let e={startOffset:t+1,endOffset:t+1},n=z==null?void 0:z.render.with(i.DocBackScrollRenderController);n==null||n.scrollToRange({...e,collapsed:!0})},50),Ce())});xt(B&&!!(U&&ye),B,pe,g,_,W,y,!!be,z,we),St(B&&!!(U&&ye),g,y,ie,x,()=>{q(ue.current,!1,!0)});let Te=e=>{if(e){let t=z==null?void 0:z.getSelectionRanges();if(t&&t.length===1){let n=t[0];if(n.collapsed){let t=e.offset;setTimeout(()=>{z==null||z.setSelectionRanges([{startOffset:n.startOffset-t,endOffset:n.endOffset-t}])},30)}}J(),q(`=${e.text}`)}},Ee=()=>{ie(!0),b(),J()};return(0,d.jsxs)(`div`,{className:w,children:[(0,d.jsx)(`div`,{ref:te,className:(0,f.clsx)(`univer-relative univer-box-border univer-flex univer-size-full univer-items-center univer-justify-around univer-gap-2 univer-rounded-none univer-p-0 univer-ring-1`,{"univer-ring-primary-500":B,"univer-ring-red-500":oe}),children:(0,d.jsx)(`div`,{ref:ae,className:`univer-relative univer-size-full`,onMouseUp:Ee})}),m!==void 0&&(0,d.jsx)(`div`,{className:`univer-my-1 univer-text-xs univer-text-red-500`,children:m}),G&&z&&de!==``&&(0,d.jsx)(nt,{editor:z,isFocus:B,formulaText:H,onClose:()=>J()}),G&&!!z&&(0,d.jsx)(Et,{isFocus:B,sequenceNodes:fe,onSelect:Te,ref:re,editor:z})]})});function jt(r,i,a,o){var s;let l=(0,c.useDependency)(n.LexerTreeBuilder),d=ut(``),f=(0,c.useObservable)(r==null||(s=r.getDocumentDataModel())==null?void 0:s.change$),[p,m]=(0,u.useState)([]),h=(0,c.useDependency)(t.IMarkSelectionService),g=(0,u.useRef)(``),_=(0,c.useDependency)(e.IUniverInstanceService);return(0,u.useEffect)(()=>{if(!r)return;let e=r.getDocumentDataModel().getPlainText();if(g.current===e)return;g.current=e;let t=l.sequenceNodesBuilder(e);m(t==null?[]:t)},[f,r,l]),(0,u.useEffect)(()=>{if(!r)return;if(!i){var t,a;let e=r.getDocumentData();r.setDocumentData({...e,body:{...e.body,dataStream:(t=(a=e.body)==null?void 0:a.dataStream)==null?``:t,textRuns:[]}});return}let s=d(r,p,!1),c=new e.DisposableCollection;return s.forEach(t=>{let r=(0,n.deserializeRangeWithSheet)(t.token),i=_.getCurrentUnitForType(e.UniverInstanceType.UNIVER_SHEET),a=i==null?void 0:i.getActiveSheet();if(!r.sheetName&&o!==(a==null?void 0:a.getSheetId())||r.sheetName&&(a==null?void 0:a.getName())!==r.sheetName)return;let s=new e.ColorKit(t.themeColor).toRgb(),l=h.addShape({range:r.range,style:{stroke:t.themeColor,fill:`rgba(${s.r}, ${s.g}, ${s.b}, 0.1)`,strokeDash:12},primary:null});l&&c.add(()=>h.removeShape(l))}),()=>{c.dispose()}},[r,i,d,h,p]),{sequenceNodes:p}}function Mt(t){let n=(0,c.useDependency)(o.SheetsSelectionsService),{supportAcrossSheet:r=!1,keepSheetReference:i=!1,unitId:a,subUnitId:s,onChange:l}=t,d=(0,c.useDependency)(e.IUniverInstanceService).getUnit(a,e.UniverInstanceType.UNIVER_SHEET),f=(0,c.useEvent)(l),p=(0,c.useEvent)((e,t)=>{let n=d==null?void 0:d.getActiveSheet();if(!n||!r&&n.getSheetId()!==s||!(e!=null&&e.length))return;let o=i?n.getName():n.getSheetId()===s?``:n.getName();f(e.map(e=>({range:e.range,unitId:a,sheetName:o})),t)});(0,u.useEffect)(()=>{let t=new e.DisposableCollection;return t.add(n.selectionMoveStart$.subscribe(e=>{p(e,!0)})),t.add(n.selectionMoving$.subscribe(e=>{p(e,!1)})),t.add(n.selectionMoveEnd$.subscribe(e=>{p(e,!1)})),()=>{t.dispose()}},[p,n.selectionMoveEnd$,n.selectionMoveStart$,n.selectionMoving$])}const Nt=e=>!e.some(e=>{if(typeof e==`string`){if(e!==n.matchToken.COMMA)return!0}else if(e.nodeType!==n.sequenceNodeType.REFERENCE)return!0;return!1}),Pt=e=>{if(e.endColumn<e.startColumn){let t=e.endColumn;e.endColumn=e.startColumn,e.startColumn=t}if(e.endRow<e.startRow){let t=e.endRow;e.endRow=e.startRow,e.startRow=t}return e};function Ft(t){let{visible:r,initialValue:i,unitId:a,subUnitId:o,maxRangeCount:s=1/0,supportAcrossSheet:l,keepSheetReference:m,onConfirm:h,onClose:g,onShowBySelection:_}=t,v=(0,c.useDependency)(e.LocaleService),y=(0,c.useDependency)(n.LexerTreeBuilder),[b,x]=(0,u.useState)([]),[S,C]=(0,u.useState)(0),w=(0,u.useRef)(null);(0,u.useEffect)(()=>{if(r&&i.length){let e=i.map(e=>e.sheetName?(0,n.serializeRangeWithSheet)(e.sheetName,e.range):(0,n.serializeRange)(e.range));x(e),C(e.length-1)}else x([``]),C(0)},[r]);let T=(e,t)=>{let n=[...b];n[e]=t,x(n)},E=()=>{x([...b,``]),C(b.length)},D=e=>{b.splice(e,1),x([...b])};return Mt({unitId:a,subUnitId:o,supportAcrossSheet:l,keepSheetReference:m,onChange:(e,t)=>{if(!r&&_!=null&&_(e))return;let i=new Set(b),a=e.map(e=>e.sheetName?(0,n.serializeRangeWithSheet)(e.sheetName,e.range):(0,n.serializeRange)(e.range)),o=a.filter(e=>!i.has(e));if(!o.length)return;let c=[...b];if(a.length>1){t||c.splice(S,1),c.push(...o);let e=c.slice(0,s);x(e),C(e.length-1),requestAnimationFrame(()=>{var e;(e=w.current)==null||e.scrollTo({top:w.current.scrollHeight})})}else c.splice(S,1,...o),x(c.slice(0,s)),C(S+o.length-1)}}),(0,d.jsx)(f.Dialog,{width:`328px`,open:r,title:v.t(`rangeSelector.title`),draggable:!0,mask:!1,maskClosable:!1,footer:(0,d.jsxs)(`footer`,{className:`univer-flex univer-gap-2`,children:[(0,d.jsx)(f.Button,{onClick:g,children:v.t(`rangeSelector.cancel`)}),(0,d.jsx)(f.Button,{variant:`primary`,onClick:()=>{h(b.filter(e=>{let t=y.sequenceNodesBuilder(e);return t&&t.length===1&&typeof t[0]!=`string`&&t[0].nodeType===n.sequenceNodeType.REFERENCE}).map(e=>(0,n.deserializeRangeWithSheet)(e)).map(e=>({...e,range:Pt(e.range)})))},children:v.t(`rangeSelector.confirm`)})]}),onClose:g,children:(0,d.jsxs)(`div`,{ref:w,className:(0,f.clsx)(`-univer-mx-6 univer-max-h-60 univer-overflow-y-auto univer-px-6`,f.scrollbarClassName),children:[b.map((e,t)=>(0,d.jsxs)(`div`,{className:`univer-mb-2 univer-flex univer-items-center univer-gap-4`,children:[(0,d.jsx)(f.Input,{className:(0,f.clsx)(`univer-w-full`,{"univer-border-primary-600":S===t}),placeholder:v.t(`rangeSelector.placeHolder`),onFocus:()=>C(t),value:e,onChange:e=>T(t,e)}),b.length>1&&(0,d.jsx)(p.DeleteIcon,{className:`univer-cursor-pointer`,onClick:()=>D(t)})]},t)),b.length<s&&(0,d.jsx)(`div`,{children:(0,d.jsxs)(f.Button,{variant:`link`,onClick:E,children:[(0,d.jsx)(p.IncreaseIcon,{}),(0,d.jsx)(`span`,{children:v.t(`rangeSelector.addAnotherRange`)})]})})]})})}function It(e){return e.split(n.matchToken.COMMA).filter(e=>!!e).map(e=>(0,n.deserializeRangeWithSheet)(e))}function Lt(e){return e.map(e=>e.sheetName?(0,n.serializeRangeWithSheet)(e.sheetName,e.range):(0,n.serializeRange)(e.range)).join(n.matchToken.COMMA)}function Rt(t){let[n,r]=(0,u.useState)(null),{onVerify:a,selectorRef:s,unitId:l,subUnitId:m,maxRangeCount:h,supportAcrossSheet:g,keepSheetReference:_,autoFocus:v,onChange:y,onRangeSelectorDialogVisibleChange:b,onClickOutside:x,onFocusChange:S,forceShowDialogWhenSelectionChanged:C,hideEditor:w,resetRange:T}=t,[E,D]=(0,u.useState)(v==null?!1:v),[O,k]=(0,u.useState)(!1),[A,j]=(0,u.useState)([]),M=(0,c.useDependency)(e.LocaleService),N=(0,c.useDependency)(i.IEditorService),{sequenceNodes:P}=jt(n,E,l,m),F=Z(P),ee=(0,c.useDependency)(e.ICommandService),I=(0,c.useEvent)(()=>{n==null||n.setSelectionRanges([]),n==null||n.blur(),N.blur()}),te=(0,c.useEvent)(()=>{var e,t;I(),j(It((e=n==null||(t=n.getDocumentDataModel())==null?void 0:t.getPlainText())==null?``:e)),k(!0)});return(0,u.useEffect)(()=>{s&&(s.current={get editor(){return n},focus(){N.focus(n.getEditorId())},blur:I,verify:()=>Nt(F.current),showDialog:e=>{I(),j(e),k(!0)},hideDialog:()=>{j([]),k(!1)},getValue:()=>{var e,t;return(e=n==null||(t=n.getDocumentDataModel())==null?void 0:t.getPlainText())==null?``:e}})},[I,n,N,s,F]),(0,u.useEffect)(()=>{var e,t;a==null||a(Nt(P),(e=n==null||(t=n.getDocumentDataModel())==null?void 0:t.getPlainText())==null?``:e)},[P]),(0,u.useEffect)(()=>{b==null||b(O)},[O]),(0,u.useEffect)(()=>{if(O&&T)return()=>{let e={unitId:l,subUnitId:m,selections:T};ee.executeCommand(o.SetSelectionsOperation.id,e)}},[O]),(0,d.jsxs)(d.Fragment,{children:[w?null:(0,d.jsx)(i.RichTextEditor,{isSingle:!0,...t,onFocusChange:(e,t)=>{D(e),S==null||S(e,t)},editorRef:r,onClickOutside:()=>{D(!1),I(),x==null||x()},icon:(0,d.jsx)(f.Tooltip,{title:M.t(`rangeSelector.buttonTooltip`),placement:`bottom`,children:(0,d.jsx)(p.SelectRangeIcon,{className:`univer-cursor-pointer dark:!univer-text-gray-300`,onClick:te})})}),(0,d.jsx)(Ft,{initialValue:A,unitId:l,subUnitId:m,visible:O,maxRangeCount:h,onConfirm:t=>{let r=Lt(t),i=e.RichTextBuilder.newEmptyData();i.body.dataStream=r,n==null||n.replaceText(r,!1),y==null||y(i,r),k(!1),j([]),requestAnimationFrame(()=>{I()})},onClose:()=>{k(!1),j([])},supportAcrossSheet:g,keepSheetReference:_,onShowBySelection:e=>E||C?(j(e),k(!0),!1):!0})]})}const zt=()=>{var e,t;let r=(0,c.useObservable)((0,c.useDependency)(Ge).currentSelector$),i=(0,u.useRef)(null);return(0,u.useEffect)(()=>{if(r){var e,t;return(e=i.current)==null||e.showDialog((t=r.initialValue)==null?[]:t),()=>{var e;(e=i.current)==null||e.hideDialog()}}},[r]),(0,d.jsx)(Rt,{unitId:(e=r==null?void 0:r.unitId)==null?``:e,subUnitId:(t=r==null?void 0:r.subUnitId)==null?``:t,hideEditor:!0,selectorRef:i,onChange:(e,t)=>{var i;r==null||r.callback((i=t==null?void 0:t.split(`,`).map(e=>(0,n.deserializeRangeWithSheet)(e)))==null?[]:i)}})};let $=class extends e.Plugin{constructor(t=H,n,r,i,a){super(),this._config=t,this._injector=n,this._renderManagerService=r,this._configService=i,this._uiPartsService=a;let{menu:o,...s}=(0,e.merge)(H,this._config);o&&this._configService.setConfig(`menu`,o,{merge:!0}),this._configService.setConfig(le,s,{merge:!0})}onStarting(){(0,e.registerDependencies)(this._injector,[[w,{useClass:T}],[Ge],[Ue],[U],[W],[G],[oe],[We]]),this._initUIPart()}onReady(){[[X]].forEach(t=>{this.disposeWithMe(this._renderManagerService.registerRenderModule(e.UniverInstanceType.UNIVER_SHEET,t))})}onRendered(){[[fe]].forEach(t=>{this.disposeWithMe(this._renderManagerService.registerRenderModule(e.UniverInstanceType.UNIVER_SHEET,t))}),(0,e.touchDependencies)(this._injector,[[Ue],[U],[G],[We]])}onSteady(){this._injector.get(oe)}_initUIPart(){let e=this._injector.get(c.ComponentManager);this.disposeWithMe(e.register(t.RANGE_SELECTOR_COMPONENT_KEY,Rt)),this.disposeWithMe(e.register(t.EMBEDDING_FORMULA_EDITOR_COMPONENT_KEY,At)),this.disposeWithMe(this._uiPartsService.registerComponent(c.BuiltInUIPart.GLOBAL,()=>(0,c.connectInjector)(zt,this._injector)))}};b($,`pluginName`,I),b($,`packageName`,se),b($,`version`,ce),b($,`type`,e.UniverInstanceType.UNIVER_SHEET),$=S([(0,e.DependentOn)(s.UniverSheetsFormulaPlugin),x(1,(0,e.Inject)(e.Injector)),x(2,a.IRenderManagerService),x(3,e.IConfigService),x(4,c.IUIPartsService)],$),exports.FORMULA_PROMPT_ACTIVATED=C,exports.FormulaEditor=At,Object.defineProperty(exports,`FormulaReorderController`,{enumerable:!0,get:function(){return oe}}),exports.GlobalRangeSelectorService=Ge,exports.HelpFunctionOperation=E,exports.InsertFunctionOperation=D,exports.MoreFunctionsOperation=L,exports.RangeSelector=Rt,Object.defineProperty(exports,`RefSelectionsRenderService`,{enumerable:!0,get:function(){return X}}),exports.ReferenceAbsoluteOperation=ae,exports.SearchFunctionOperation=V,exports.SheetCopyFormulaOnlyCommand=h,exports.SheetOnlyPasteFormulaCommand=g,Object.defineProperty(exports,`UniverSheetsFormulaUIPlugin`,{enumerable:!0,get:function(){return $}});
|