@univerjs/sheets-data-validation 0.1.11 → 0.1.13

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 CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";var ea=Object.defineProperty;var ta=(n,o,e)=>o in n?ea(n,o,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[o]=e;var _=(n,o,e)=>(ta(n,typeof o!="symbol"?o+"":o,e),e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("@univerjs/core"),O=require("@wendellhu/redi"),R=require("@univerjs/data-validation"),x=require("@univerjs/ui"),U=require("@univerjs/sheets-ui"),z=require("@univerjs/engine-render"),oe=require("@univerjs/sheets"),C=require("react"),b=require("@wendellhu/redi/react-bindings"),F=require("@univerjs/design"),se=require("@univerjs/engine-formula"),pe=require("rxjs"),Re=require("dayjs"),aa=require("clsx"),He=require("@univerjs/sheets-formula"),Xe=require("rxjs/operators");var Ct={exports:{}},We={};/**
1
+ "use strict";var ra=Object.defineProperty;var oa=(n,o,e)=>o in n?ra(n,o,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[o]=e;var _=(n,o,e)=>(oa(n,typeof o!="symbol"?o+"":o,e),e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("@univerjs/core"),I=require("@wendellhu/redi"),D=require("@univerjs/data-validation"),W=require("@univerjs/ui"),x=require("@univerjs/sheets-ui"),Z=require("@univerjs/engine-render"),G=require("@univerjs/sheets"),E=require("react"),N=require("@wendellhu/redi/react-bindings"),w=require("@univerjs/design"),ie=require("@univerjs/engine-formula"),me=require("rxjs"),na=require("clsx"),qe=require("@univerjs/sheets-formula"),Re=require("dayjs"),Je=require("rxjs/operators");var bt={exports:{}},Ge={};/**
2
2
  * @license React
3
3
  * react-jsx-runtime.production.min.js
4
4
  *
@@ -6,4 +6,4 @@
6
6
  *
7
7
  * This source code is licensed under the MIT license found in the
8
8
  * LICENSE file in the root directory of this source tree.
9
- */var ra=C,oa=Symbol.for("react.element"),na=Symbol.for("react.fragment"),ia=Object.prototype.hasOwnProperty,sa=ra.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,la={key:!0,ref:!0,__self:!0,__source:!0};function Et(n,o,e){var t,a={},r=null,i=null;e!==void 0&&(r=""+e),o.key!==void 0&&(r=""+o.key),o.ref!==void 0&&(i=o.ref);for(t in o)ia.call(o,t)&&!la.hasOwnProperty(t)&&(a[t]=o[t]);if(n&&n.defaultProps)for(t in o=n.defaultProps,o)a[t]===void 0&&(a[t]=o[t]);return{$$typeof:oa,type:n,key:r,ref:i,props:a,_owner:sa.current}}We.Fragment=na;We.jsx=Et;We.jsxs=Et;Ct.exports=We;var f=Ct.exports;function da(){const n=b.useDependency(Ve),o=x.useObservable(n.activeDropdown$,n.activeDropdown),e=b.useDependency(x.ComponentManager);if(!o)return null;const{location:t,componentKey:a}=o,r=e.get(a),i=`${t.unitId}-${t.subUnitId}-${t.row}-${t.col}`;if(!r)return null;const l=()=>{n.hideDropdown()};return f.jsx(r,{location:t,hideFn:l},i)}const wt="sheet.ui.dropdown";var ca=Object.defineProperty,ua=Object.getOwnPropertyDescriptor,ha=(n,o,e,t)=>{for(var a=t>1?void 0:t?ua(o,e):o,r=n.length-1,i;r>=0;r--)(i=n[r])&&(a=(t?i(o,e,a):i(a))||a);return t&&a&&ca(o,e,a),a},ge=(n,o)=>(e,t)=>o(e,t,n);let Ve=class extends s.Disposable{constructor(o,e,t,a,r,i,l){super();_(this,"_activeDropdown");_(this,"_activeDropdown$",new pe.Subject);_(this,"_currentPopup",null);_(this,"activeDropdown$",this._activeDropdown$.asObservable());_(this,"_zenVisible",!1);this._canvasPopupManagerService=o,this._univerInstanceService=e,this._sheetSkeletonManagerService=t,this._dataValidatorRegistryService=a,this._zenZoneService=r,this._renderManagerService=i,this._dataValidationModel=l,this._init()}get activeDropdown(){return this._activeDropdown}_init(){this.disposeWithMe(this._zenZoneService.visible$.subscribe(o=>{this._zenVisible=o,o&&this.hideDropdown()}))}showDropdown(o){const{location:e}=o,{row:t,col:a}=e;if(this._currentPopup&&this._currentPopup.dispose(),this._zenVisible)return;this._activeDropdown=o,this._activeDropdown$.next(this._activeDropdown);const r=this._renderManagerService.getRenderById(s.DOCS_FORMULA_BAR_EDITOR_UNIT_ID_KEY),i=this._canvasPopupManagerService.attachPopupToCell(t,a,{componentKey:wt,onClickOutside:()=>{this.hideDropdown()},offset:[0,3],excludeOutside:[r==null?void 0:r.engine.getCanvasElement()].filter(Boolean)});if(!i)throw new Error("[DataValidationDropdownManagerService]: cannot show dropdown!");const l=new s.DisposableCollection;l.add(i),l.add({dispose:()=>{var d,c;(c=(d=this._activeDropdown)==null?void 0:d.onHide)==null||c.call(d)}}),this._currentPopup=l}hideDropdown(){this._activeDropdown&&(this._currentPopup&&this._currentPopup.dispose(),this._currentPopup=null,this._activeDropdown=null,this._activeDropdown$.next(null))}showDataValidationDropdown(o,e,t,a,r){const i=this._univerInstanceService.getUniverSheetInstance(o);if(!i)return;const l=i.getSheetBySheetId(e);if(!l)return;const c=this._dataValidationModel.ensureManager(o,e).getRuleByLocation(t,a);if(!this._sheetSkeletonManagerService.getOrCreateSkeleton({unitId:o,sheetId:e})||!c)return;const m=this._dataValidatorRegistryService.getValidatorItem(c.type);if(!m||!m.dropdown){this.hideDropdown();return}this.showDropdown({location:{workbook:i,worksheet:l,row:t,col:a,unitId:o,subUnitId:e},componentKey:m.dropdown,onHide:r})}};Ve=ha([ge(0,O.Inject(U.SheetCanvasPopManagerService)),ge(1,s.IUniverInstanceService),ge(2,O.Inject(U.SheetSkeletonManagerService)),ge(3,O.Inject(R.DataValidatorRegistryService)),ge(4,x.IZenZoneService),ge(5,z.IRenderManagerService),ge(6,O.Inject(R.DataValidationModel))],Ve);var ma=Object.defineProperty,pa=Object.getOwnPropertyDescriptor,fa=(n,o,e,t)=>{for(var a=t>1?void 0:t?pa(o,e):o,r=n.length-1,i;r>=0;r--)(i=n[r])&&(a=(t?i(o,e,a):i(a))||a);return t&&a&&ma(o,e,a),a},vt=(n,o)=>(e,t)=>o(e,t,n);let he=class extends s.Disposable{constructor(o,e){super();_(this,"_open$",new pe.BehaviorSubject(!1));_(this,"open$",this._open$.pipe(pe.distinctUntilChanged()));_(this,"_activeRule");_(this,"_activeRule$",new pe.BehaviorSubject(void 0));_(this,"activeRule$",this._activeRule$.asObservable());_(this,"_closeDisposable",null);this._univerInstanceService=o,this._sidebarService=e,this.disposeWithMe(this._univerInstanceService.getCurrentTypeOfUnit$(s.UniverInstanceType.UNIVER_SHEET).pipe(pe.filter(t=>!t)).subscribe(()=>{this.close()}))}get activeRule(){return this._activeRule}get isOpen(){return this._open$.getValue()}dispose(){var o;super.dispose(),this._open$.next(!1),this._open$.complete(),(o=this._closeDisposable)==null||o.dispose()}open(){this._open$.next(!0)}close(){var o;this._open$.next(!1),(o=this._closeDisposable)==null||o.dispose()}setCloseDisposable(o){this._closeDisposable=s.toDisposable(()=>{o.dispose(),this._closeDisposable=null})}setActiveRule(o){this._activeRule=o,this._activeRule$.next(o)}};he=fa([vt(0,s.IUniverInstanceService),vt(1,x.ISidebarService)],he);const yt="DataValidationPanel",we={id:"data-validation.operation.open-validation-panel",type:s.CommandType.OPERATION,handler(n,o){if(!o)return!1;const{ruleId:e,isAdd:t}=o,a=n.get(he),r=n.get(R.DataValidationModel),i=n.get(s.IUniverInstanceService),l=n.get(x.ISidebarService),d=oe.getSheetCommandTarget(i);if(!d)return!1;const{unitId:c,subUnitId:u}=d,m=e?r.getRuleById(c,u,e):void 0;a.open(),a.setActiveRule(m&&{unitId:c,subUnitId:u,rule:m});const p=l.open({header:{title:t?"dataValidation.panel.addTitle":"dataValidation.panel.title"},children:{label:yt},width:312,onClose:()=>a.close()});return a.setCloseDisposable(p),!0}},Tt={id:"data-validation.operation.close-validation-panel",type:s.CommandType.OPERATION,handler(n){return n.get(he).close(),!0}},ga={id:"data-validation.operation.toggle-validation-panel",type:s.CommandType.OPERATION,handler(n){const o=n.get(s.ICommandService),e=n.get(he);return e.open(),e.isOpen?o.executeCommand(Tt.id):o.executeCommand(we.id),!0}},ke={type:s.CommandType.OPERATION,id:"sheet.operation.show-data-validation-dropdown",handler(n,o){if(!o)return!1;const e=n.get(Ve),{unitId:t,subUnitId:a,row:r,column:i}=o,l=e.activeDropdown,d=l==null?void 0:l.location;return d&&d.unitId===t&&d.subUnitId===a&&d.row===r&&d.col===i||e.showDataValidationDropdown(t,a,r,i),!0}},Lt={type:s.CommandType.OPERATION,id:"sheet.operation.hide-data-validation-dropdown",handler(n,o){return o?(n.get(Ve).hideDropdown(),!0):!1}};function Ie(n,o,e){const t=[],a=[];return e.forEach(r=>{switch(r.type){case"delete":t.push({id:R.RemoveDataValidationMutation.id,params:{unitId:n,subUnitId:o,ruleId:r.rule.uid}}),a.unshift({id:R.AddDataValidationMutation.id,params:{unitId:n,subUnitId:o,rule:r.rule,index:r.index}});break;case"update":{t.push({id:R.UpdateDataValidationMutation.id,params:{unitId:n,subUnitId:o,ruleId:r.ruleId,payload:{type:R.UpdateRuleType.RANGE,payload:r.newRanges}}}),a.unshift({id:R.UpdateDataValidationMutation.id,params:{unitId:n,subUnitId:o,ruleId:r.ruleId,payload:{type:R.UpdateRuleType.RANGE,payload:r.oldRanges}}});break}case"add":{t.push({id:R.AddDataValidationMutation.id,params:{unitId:n,subUnitId:o,rule:r.rule}}),a.unshift({id:R.RemoveDataValidationMutation.id,params:{unitId:n,subUnitId:o,ruleId:r.rule.uid}});break}}}),{redoMutations:t,undoMutations:a}}const mt={type:s.CommandType.COMMAND,id:"sheet.command.updateDataValidationRuleRange",async handler(n,o){if(!o)return!1;const{unitId:e,subUnitId:t,ranges:a,ruleId:r}=o,i=n.get(R.DataValidationModel),l=n.get(s.ICommandService),d=n.get(s.IUndoRedoService),c=i.ensureManager(e,t),u=c.getRuleById(r);if(!u)return!1;const m=u.ranges,p=c.getRuleObjectMatrix().clone();p.updateRange(r,m,a);const h=p.diff(c.getDataValidations()),{redoMutations:v,undoMutations:g}=Ie(e,t,h);return d.pushUndoRedo({undoMutations:g,redoMutations:v,unitID:e}),await s.sequenceExecuteAsync(v,l),!0}},Ye={type:s.CommandType.COMMAND,id:"sheet.command.addDataValidation",async handler(n,o){if(!o)return!1;const{unitId:e,subUnitId:t,rule:a}=o,r=n.get(R.DataValidationModel),i=n.get(s.ICommandService),l=n.get(s.IUndoRedoService),d=r.ensureManager(e,t),c=d.getRuleObjectMatrix().clone();c.addRule(a);const u=c.diff(d.getDataValidations()),m={unitId:e,subUnitId:t,rule:a},{redoMutations:p,undoMutations:h}=Ie(e,t,u);return p.push({id:R.AddDataValidationMutation.id,params:m}),h.unshift({id:R.RemoveDataValidationMutation.id,params:{unitId:e,subUnitId:t,ruleId:a.uid}}),l.pushUndoRedo({unitID:e,redoMutations:p,undoMutations:h}),await s.sequenceExecuteAsync(p,i),!0}},pt={type:s.CommandType.COMMAND,id:"data-validation.command.addRuleAndOpen",async handler(n){const o=n.get(s.IUniverInstanceService),e=oe.getSheetCommandTarget(o);if(!e)return!1;const{workbook:t,worksheet:a}=e,r=R.createDefaultNewRule(n),i=n.get(s.ICommandService),l=t.getUnitId(),d=a.getSheetId(),c={rule:r,unitId:l,subUnitId:d};return await i.executeCommand(Ye.id,c)?(i.executeCommand(we.id,{ruleId:r.uid,isAdd:!0}),!0):!1}};var re=function(){return re=Object.assign||function(n){for(var o,e=1,t=arguments.length;e<t;e++){o=arguments[e];for(var a in o)Object.prototype.hasOwnProperty.call(o,a)&&(n[a]=o[a])}return n},re.apply(this,arguments)},va=function(n,o){var e={};for(var t in n)Object.prototype.hasOwnProperty.call(n,t)&&o.indexOf(t)<0&&(e[t]=n[t]);if(n!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,t=Object.getOwnPropertySymbols(n);a<t.length;a++)o.indexOf(t[a])<0&&Object.prototype.propertyIsEnumerable.call(n,t[a])&&(e[t[a]]=n[t[a]]);return e},fe=C.forwardRef(function(n,o){var e=n.icon,t=n.id,a=n.className,r=n.extend,i=va(n,["icon","id","className","extend"]),l="univerjs-icon univerjs-icon-".concat(t," ").concat(a||"").trim(),d=C.useRef("_".concat(Ra()));return At(e,"".concat(t),{defIds:e.defIds,idSuffix:d.current},re({ref:o,className:l},i),r)});function At(n,o,e,t,a){return C.createElement(n.tag,re(re({key:o},_a(n,e,a)),t),(Sa(n,e).children||[]).map(function(r,i){return At(r,"".concat(o,"-").concat(n.tag,"-").concat(i),e,void 0,a)}))}function _a(n,o,e){var t=re({},n.attrs);e!=null&&e.colorChannel1&&t.fill==="colorChannel1"&&(t.fill=e.colorChannel1);var a=o.defIds;return!a||a.length===0||(n.tag==="use"&&t["xlink:href"]&&(t["xlink:href"]=t["xlink:href"]+o.idSuffix),Object.entries(t).forEach(function(r){var i=r[0],l=r[1];typeof l=="string"&&(t[i]=l.replace(/url\(#(.*)\)/,"url(#$1".concat(o.idSuffix,")")))})),t}function Sa(n,o){var e,t=o.defIds;return!t||t.length===0?n:n.tag==="defs"&&(!((e=n.children)===null||e===void 0)&&e.length)?re(re({},n),{children:n.children.map(function(a){return typeof a.attrs.id=="string"&&t&&t.indexOf(a.attrs.id)>-1?re(re({},a),{attrs:re(re({},a.attrs),{id:a.attrs.id+o.idSuffix})}):a})}):n}function Ra(){return Math.random().toString(36).substring(2,8)}fe.displayName="UniverIcon";var Va={tag:"svg",attrs:{fill:"none",viewBox:"0 0 16 16",width:"1em",height:"1em"},children:[{tag:"path",attrs:{fill:"currentColor",d:"M14.44 3.57291C14.698 3.83093 14.698 4.24927 14.44 4.50729L6.44342 12.5037C6.28721 12.6599 6.03395 12.6599 5.87774 12.5037L1.55992 8.18578C1.3019 7.92776 1.3019 7.50942 1.55993 7.2514C1.81795 6.99338 2.23629 6.99338 2.49431 7.25141L6.01916 10.7763C6.09727 10.8544 6.2239 10.8544 6.30201 10.7763L13.5056 3.57291C13.7636 3.31489 14.1819 3.31489 14.44 3.57291Z",fillRule:"evenodd",clipRule:"evenodd"}}]},bt=C.forwardRef(function(n,o){return C.createElement(fe,Object.assign({},n,{id:"check-mark-single",ref:o,icon:Va}))});bt.displayName="CheckMarkSingle";const Ma=bt;var Da={tag:"svg",attrs:{fill:"none",viewBox:"0 0 17 17",width:"1em",height:"1em"},children:[{tag:"path",attrs:{stroke:"currentColor",d:"M6.06964 2.57153H2.73631C2.36812 2.57153 2.06964 2.87001 2.06964 3.2382V6.57153C2.06964 6.93973 2.36812 7.2382 2.73631 7.2382H6.06964C6.43784 7.2382 6.73631 6.93973 6.73631 6.57153V3.2382C6.73631 2.87001 6.43784 2.57153 6.06964 2.57153zM6.06964 9.90479H2.73631C2.36812 9.90479 2.06964 10.2033 2.06964 10.5715V13.9048C2.06964 14.273 2.36812 14.5715 2.73631 14.5715H6.06964C6.43784 14.5715 6.73631 14.273 6.73631 13.9048V10.5715C6.73631 10.2033 6.43784 9.90479 6.06964 9.90479z",strokeLinejoin:"round",strokeWidth:1.33}},{tag:"path",attrs:{stroke:"currentColor",d:"M9.20471 5.06981L11.2023 6.73445 14.2047 3.73213M13.7047 10.238L9.70465 14.238M9.70477 10.238L13.7048 14.238",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.33}}]},Nt=C.forwardRef(function(n,o){return C.createElement(fe,Object.assign({},n,{id:"data-validation-single",ref:o,icon:Da}))});Nt.displayName="DataValidationSingle";var Oa={tag:"svg",attrs:{fill:"none",viewBox:"0 0 16 16",width:"1em",height:"1em"},children:[{tag:"path",attrs:{fill:"currentColor",d:"M6.78662 6.17993C7.12169 6.17993 7.39331 6.45156 7.39331 6.78662V10.7301C7.39331 11.0652 7.12169 11.3368 6.78662 11.3368 6.45156 11.3368 6.17993 11.0652 6.17993 10.7301V6.78662C6.17993 6.45156 6.45156 6.17993 6.78662 6.17993zM9.82007 6.78662C9.82007 6.45156 9.54844 6.17993 9.21338 6.17993 8.87831 6.17993 8.60669 6.45156 8.60669 6.78662V10.7301C8.60669 11.0652 8.87831 11.3368 9.21338 11.3368 9.54844 11.3368 9.82007 11.0652 9.82007 10.7301V6.78662z"}},{tag:"path",attrs:{fill:"currentColor",d:"M6.57094 1.32642C6.34938 1.32642 6.14544 1.44719 6.03894 1.64148L5.21395 3.14648H1.93311C1.59804 3.14648 1.32642 3.41811 1.32642 3.75317C1.32642 4.08824 1.59804 4.35986 1.93311 4.35986H2.84314V14.0669C2.84314 14.402 3.11476 14.6736 3.44983 14.6736H12.5502C12.8852 14.6736 13.1569 14.402 13.1569 14.0669V4.35986H14.0669C14.402 4.35986 14.6736 4.08824 14.6736 3.75317C14.6736 3.41811 14.402 3.14648 14.0669 3.14648H10.7895L9.98357 1.64602C9.87785 1.4492 9.67252 1.32642 9.44911 1.32642H6.57094ZM9.4122 3.14648L9.08632 2.53979H6.93024L6.59767 3.14648H9.4122ZM4.05652 4.35986V13.4602H11.9435V4.35986H4.05652Z",fillRule:"evenodd",clipRule:"evenodd"}}]},Ut=C.forwardRef(function(n,o){return C.createElement(fe,Object.assign({},n,{id:"delete-single",ref:o,icon:Oa}))});Ut.displayName="DeleteSingle";const jt=Ut;var Ia={tag:"svg",attrs:{fill:"none",viewBox:"0 0 16 16",width:"1em",height:"1em"},children:[{tag:"mask",attrs:{id:"mask0_102_249",style:{maskType:"alpha"},width:16,height:16,x:0,y:0,maskUnits:"userSpaceOnUse"},children:[{tag:"path",attrs:{fill:"#D9D9D9",d:"M0 0H16V16H0z"}}]},{tag:"g",attrs:{mask:"url(#mask0_102_249)"},children:[{tag:"path",attrs:{fill:"currentColor",d:"M8.74717 2.0944C8.74717 1.68671 8.41279 1.3562 8.00032 1.3562C7.58785 1.3562 7.25347 1.68671 7.25347 2.0944V7.26186H2.02541C1.61294 7.26186 1.27856 7.59237 1.27856 8.00007C1.27856 8.40777 1.61294 8.73827 2.02541 8.73827H7.25347V13.9057C7.25347 14.3134 7.58785 14.6439 8.00032 14.6439C8.41279 14.6439 8.74717 14.3134 8.74717 13.9057V8.73827H13.975C14.3874 8.73827 14.7218 8.40777 14.7218 8.00007C14.7218 7.59237 14.3874 7.26186 13.975 7.26186H8.74717V2.0944Z"}}]}]},Pt=C.forwardRef(function(n,o){return C.createElement(fe,Object.assign({},n,{id:"increase-single",ref:o,icon:Ia}))});Pt.displayName="IncreaseSingle";const Fa=Pt;var Ca={tag:"svg",attrs:{fill:"none",viewBox:"0 0 16 16",width:"1em",height:"1em"},children:[{tag:"mask",attrs:{id:"mask0_102_556",style:{maskType:"alpha"},width:16,height:16,x:0,y:0,maskUnits:"userSpaceOnUse"},children:[{tag:"path",attrs:{fill:"#D9D9D9",d:"M0 0H16V16H0z"}}]},{tag:"g",attrs:{mask:"url(#mask0_102_556)"},children:[{tag:"path",attrs:{fill:"currentColor",d:"M0.629584 3.99986C1.13729 3.4922 1.9604 3.49224 2.46806 3.99995L7.57569 9.10806C7.81 9.3424 8.18992 9.3424 8.42424 9.10808L13.5323 3.99998C14.04 3.4923 14.8631 3.4923 15.3708 3.99998C15.8785 4.50766 15.8785 5.33078 15.3708 5.83846L9.41415 11.7951C8.63307 12.5762 7.36669 12.5762 6.58565 11.7951L0.629497 5.83834C0.121839 5.33063 0.121879 4.50752 0.629584 3.99986Z",fillRule:"evenodd",clipRule:"evenodd"}}]}]},xt=C.forwardRef(function(n,o){return C.createElement(fe,Object.assign({},n,{id:"more-down-single",ref:o,icon:Ca}))});xt.displayName="MoreDownSingle";const Ea=xt;var wa={tag:"svg",attrs:{fill:"none",viewBox:"0 0 16 16",width:"1em",height:"1em"},children:[{tag:"mask",attrs:{id:"mask0_506_5",style:{maskType:"alpha"},width:16,height:16,x:0,y:0,maskUnits:"userSpaceOnUse"},children:[{tag:"path",attrs:{fill:"#D9D9D9",d:"M16 16H32V32H16z",transform:"rotate(180 16 16)"}}]},{tag:"g",attrs:{mask:"url(#mask0_506_5)"},children:[{tag:"path",attrs:{fill:"currentColor",d:"M15.3704 12.0001C14.8627 12.5078 14.0396 12.5078 13.5319 12.0001L8.42431 6.89194C8.19 6.6576 7.81008 6.6576 7.57576 6.89192L2.46766 12C1.95998 12.5077 1.13687 12.5077 0.629185 12C0.121504 11.4923 0.121504 10.6692 0.629185 10.1615L6.58585 4.20487C7.36693 3.4238 8.63331 3.42383 9.41435 4.20494L15.3705 10.1617C15.8782 10.6694 15.8781 11.4925 15.3704 12.0001Z",fillRule:"evenodd",clipRule:"evenodd"}}]}]},Bt=C.forwardRef(function(n,o){return C.createElement(fe,Object.assign({},n,{id:"more-up-single",ref:o,icon:wa}))});Bt.displayName="MoreUpSingle";const ya=Bt;var Ta={tag:"svg",attrs:{fill:"none",viewBox:"0 0 16 16",width:"1em",height:"1em"},children:[{tag:"mask",attrs:{id:"mask0_622_8",style:{maskType:"alpha"},width:16,height:16,x:0,y:0,maskUnits:"userSpaceOnUse"},children:[{tag:"path",attrs:{fill:"#D9D9D9",d:"M0 0H16V16H0z"}}]},{tag:"g",attrs:{fill:"currentColor",mask:"url(#mask0_622_8)"},children:[{tag:"path",attrs:{d:"M6 5C6.55228 5 7 4.55228 7 4 7 3.44772 6.55228 3 6 3 5.44772 3 5 3.44772 5 4 5 4.55228 5.44772 5 6 5zM6 9C6.55228 9 7 8.55229 7 8 7 7.44772 6.55228 7 6 7 5.44772 7 5 7.44772 5 8 5 8.55229 5.44772 9 6 9zM7 12C7 12.5523 6.55228 13 6 13 5.44772 13 5 12.5523 5 12 5 11.4477 5.44772 11 6 11 6.55228 11 7 11.4477 7 12zM10 5C10.5523 5 11 4.55228 11 4 11 3.44772 10.5523 3 10 3 9.44771 3 9 3.44772 9 4 9 4.55228 9.44771 5 10 5zM11 8C11 8.55229 10.5523 9 10 9 9.44771 9 9 8.55229 9 8 9 7.44772 9.44771 7 10 7 10.5523 7 11 7.44772 11 8zM10 13C10.5523 13 11 12.5523 11 12 11 11.4477 10.5523 11 10 11 9.44771 11 9 11.4477 9 12 9 12.5523 9.44771 13 10 13z"}}]}]},$t=C.forwardRef(function(n,o){return C.createElement(fe,Object.assign({},n,{id:"sequence-single",ref:o,icon:Ta}))});$t.displayName="SequenceSingle";const La=$t,Aa="univer-data-validation-options-button",ba="univer-data-validation-options-button-icon",Qe={dataValidationOptionsButton:Aa,dataValidationOptionsButtonIcon:ba};function Na(n){var c;const o=b.useDependency(s.LocaleService),e=b.useDependency(x.ComponentManager),{value:t,onChange:a,extraComponent:r}=n,[i,l]=C.useState(!1),d=r?e.get(r):null;return f.jsxs(f.Fragment,{children:[f.jsxs("div",{className:Qe.dataValidationOptionsButton,onClick:()=>l(!i),children:[o.t("dataValidation.panel.options"),i?f.jsx(ya,{className:Qe.dataValidationOptionsButtonIcon}):f.jsx(Ea,{className:Qe.dataValidationOptionsButtonIcon})]}),i&&f.jsxs(f.Fragment,{children:[d?f.jsx(d,{value:t,onChange:a}):null,f.jsx(F.FormLayout,{label:o.t("dataValidation.panel.invalid"),children:f.jsxs(F.RadioGroup,{value:`${(c=t.errorStyle)!=null?c:s.DataValidationErrorStyle.WARNING}`,onChange:u=>a({...t,errorStyle:+u}),children:[f.jsx(F.Radio,{value:`${s.DataValidationErrorStyle.WARNING}`,children:o.t("dataValidation.panel.showWarning")}),f.jsx(F.Radio,{value:`${s.DataValidationErrorStyle.STOP}`,children:o.t("dataValidation.panel.rejectInput")})]})}),f.jsx(F.FormLayout,{label:o.t("dataValidation.panel.messageInfo"),children:f.jsx(F.Checkbox,{checked:t.showInputMessage,onChange:()=>a({...t,showInputMessage:!t.showInputMessage}),children:o.t("dataValidation.panel.showInfo")})}),t.showInputMessage?f.jsx(F.FormLayout,{children:f.jsx(F.Input,{value:t.error,onChange:u=>a({...t,error:u})})}):null]})]})}const Ua="univer-data-validation-detail-form-item",ja="univer-data-validation-detail-buttons",Pa="univer-data-validation-detail-button",Me={dataValidationDetailFormItem:Ua,dataValidationDetailButtons:ja,dataValidationDetailButton:Pa},xa=n=>s.debounce(async(o,e,t,a)=>{const r=await n.executeCommand(o,e,t);a==null||a(r)},275);function Ba(){const[n,o]=C.useState(0),e=b.useDependency(he),t=x.useObservable(e.activeRule$,e.activeRule),{unitId:a,subUnitId:r,rule:i}=t||{},l=i.uid,d=b.useDependency(R.DataValidatorRegistryService),c=b.useDependency(x.ComponentManager),u=b.useDependency(s.ICommandService),m=b.useDependency(R.DataValidationModel),p=b.useDependency(s.LocaleService),[h,v]=C.useState(i),g=d.getValidatorItem(h.type),[S,V]=C.useState(!1),D=d.getValidatorsByScope(R.DataValidatorRegistryScope.SHEET),[M,I]=C.useState(()=>h.ranges.map(y=>({unitId:"",sheetId:"",range:y}))),w=C.useMemo(()=>xa(u),[u]);if(C.useEffect(()=>{u.onCommandExecuted(y=>{(y.id===s.UndoCommand.id||y.id===s.RedoCommand.id)&&setTimeout(()=>{const L=m.getRuleById(a,r,l);o(Q=>Q+1),L&&(v(L),I(L.ranges.map(Q=>({unitId:"",sheetId:"",range:Q}))))},20)})},[u,m,l,r,a]),!g)return null;const T=g.operators,A=g.operatorNames,$=h.operator?R.TWO_FORMULA_OPERATOR_COUNT.includes(h.operator):!1,j=()=>{g.validatorFormula(h).success?e.setActiveRule(null):V(!0)},P=x.useEvent(y=>{if(s.isUnitRangesEqual(y,M))return;I(y);const L=y.filter(H=>(!H.unitId||H.unitId===a)&&(!H.sheetId||H.sheetId===r)).map(H=>H.range);if(v({...h,ranges:L}),L.length===0)return;const Q={unitId:a,subUnitId:r,ruleId:l,ranges:L};w(mt.id,Q)}),N=y=>{if(s.shallowEqual(y,R.getRuleSetting(h)))return;v({...h,...y});const L={unitId:a,subUnitId:r,ruleId:l,setting:y};w(R.UpdateDataValidationSettingCommand.id,L,void 0)},Y=async()=>{await u.executeCommand(R.RemoveDataValidationCommand.id,{ruleId:l,unitId:a,subUnitId:r}),e.setActiveRule(null)},q={type:h.type,operator:h.operator,formula1:h.formula1,formula2:h.formula2,allowBlank:h.allowBlank},G=y=>{const L=d.getValidatorItem(y);if(!L)return;const Q=L.operators,H=m.getRuleById(a,r,l),E=y===(H==null?void 0:H.type)?{...H}:{...h,type:y,operator:Q[0],formula1:void 0,formula2:void 0};v(E),u.executeCommand(R.UpdateDataValidationSettingCommand.id,{unitId:a,subUnitId:r,ruleId:h.uid,setting:R.getRuleSetting(E)})},B=c.get(g.formulaInput),K=M.map(y=>se.serializeRange(y.range)).join(","),ee=R.getRuleOptions(h),X=y=>{s.shallowEqual(y,R.getRuleOptions(h))||(v({...h,...y}),w(R.UpdateDataValidationOptionsCommand.id,{unitId:a,subUnitId:r,ruleId:l,options:y}))};return f.jsxs("div",{children:[f.jsx(F.FormLayout,{label:p.t("dataValidation.panel.range"),children:f.jsx(x.RangeSelector,{className:Me.dataValidationDetailFormItem,value:K,id:s.createInternalEditorID("data-validation-detail"),openForSheetUnitId:a,openForSheetSubUnitId:r,onChange:y=>{y.some(L=>!s.isValidRange(L.range)||L.range.endColumn<L.range.startColumn||L.range.endRow<L.range.startRow)||P(y)}},n)}),f.jsx(F.FormLayout,{label:p.t("dataValidation.panel.type"),children:f.jsx(F.Select,{options:D==null?void 0:D.map(y=>({label:p.t(y.title),value:y.id})),value:h.type,onChange:G,className:Me.dataValidationDetailFormItem})}),T!=null&&T.length?f.jsx(F.FormLayout,{label:p.t("dataValidation.panel.operator"),children:f.jsx(F.Select,{options:T.map((y,L)=>({value:`${y}`,label:A[L]})),value:`${h.operator}`,onChange:y=>{N({...q,operator:y})},className:Me.dataValidationDetailFormItem})}):null,B?f.jsx(B,{isTwoFormula:$,value:{formula1:h.formula1,formula2:h.formula2},onChange:y=>{N({...q,...y})},showError:S,validResult:g.validatorFormula(h),unitId:a,subUnitId:r,ruleId:l},n):null,f.jsx(Na,{value:ee,onChange:X,extraComponent:g.optionsInput}),f.jsxs("div",{className:Me.dataValidationDetailButtons,children:[f.jsx(F.Button,{className:Me.dataValidationDetailButton,onClick:Y,children:p.t("dataValidation.panel.removeRule")}),f.jsx(F.Button,{className:Me.dataValidationDetailButton,type:"primary",onClick:j,children:p.t("dataValidation.panel.done")})]})]})}const $a="univer-data-validation-item-container",qa="univer-data-validation-item-title",Ha="univer-data-validation-item-content",Wa="univer-data-validation-item-icon",Te={dataValidationItemContainer:$a,dataValidationItemTitle:qa,dataValidationItemContent:Ha,dataValidationItemIcon:Wa},ka=n=>{const{rule:o,onClick:e,unitId:t,subUnitId:a}=n,r=b.useDependency(R.DataValidatorRegistryService),i=b.useDependency(s.ICommandService),l=b.useDependency(U.IMarkSelectionService),d=r.getValidatorItem(o.type),c=C.useRef(),[u,m]=C.useState(!1),p=h=>{i.executeCommand(R.RemoveDataValidationCommand.id,{ruleId:o.uid,unitId:t,subUnitId:a}),h.stopPropagation()};return C.useEffect(()=>()=>{var h;c.current&&((h=c.current)==null||h.forEach(v=>{v&&l.removeShape(v)}))},[l]),f.jsxs("div",{className:Te.dataValidationItemContainer,onClick:e,onMouseEnter:()=>{m(!0),c.current=o.ranges.map(h=>l.addShape({range:h,style:{hasAutoFill:!1,fill:"rgba(73, 184, 17, 0.05)",strokeWidth:1,stroke:"#49B811",widgets:{}},primary:{startColumn:h.startColumn,endColumn:h.endColumn,startRow:h.startRow,endRow:h.endRow,actualRow:h.startRow,actualColumn:h.startColumn,isMerged:!1,isMergedMainCell:!1}}))},onMouseLeave:()=>{var h;m(!1),(h=c.current)==null||h.forEach(v=>{v&&l.removeShape(v)}),c.current=void 0},children:[f.jsx("div",{className:Te.dataValidationItemTitle,children:d==null?void 0:d.generateRuleName(o)}),f.jsx("div",{className:Te.dataValidationItemContent,children:o.ranges.map(h=>se.serializeRange(h)).join(",")}),u?f.jsx("div",{className:Te.dataValidationItemIcon,onClick:p,children:f.jsx(jt,{})}):null]})},Ya="univer-data-validation-list-buttons",Ga="univer-data-validation-list-button",Ke={dataValidationListButtons:Ya,dataValidationListButton:Ga};function za(){const n=b.useDependency(s.IUniverInstanceService),o=x.useObservable(()=>n.getCurrentTypeOfUnit$(s.UniverInstanceType.UNIVER_SHEET),void 0,void 0,[]);return o?f.jsx(Xa,{workbook:o}):null}function Xa(n){const o=b.useDependency(R.DataValidationModel),e=b.useDependency(s.ICommandService),t=b.useDependency(O.Injector),a=b.useDependency(he),r=b.useDependency(s.LocaleService),[i,l]=C.useState([]),{workbook:d}=n,c=x.useObservable(d.activeSheet$,void 0,!0),u=d.getUnitId(),m=c==null?void 0:c.getSheetId(),p=o.ensureManager(u,m);C.useEffect(()=>{l(p.getDataValidations());const g=p.dataValidations$.subscribe(S=>{l([...S])});return()=>{g.unsubscribe()}},[p]);const h=async()=>{const g=R.createDefaultNewRule(t),S={unitId:u,subUnitId:m,rule:g};await e.executeCommand(Ye.id,S),a.setActiveRule({unitId:u,subUnitId:m,rule:g})},v=()=>{e.executeCommand(R.RemoveAllDataValidationCommand.id,{unitId:u,subUnitId:m})};return f.jsxs("div",{children:[i.map(g=>f.jsx(ka,{unitId:u,subUnitId:m,onClick:()=>a.setActiveRule({unitId:u,subUnitId:m,rule:g}),rule:g},g.uid)),f.jsxs("div",{className:Ke.dataValidationListButtons,children:[i.length?f.jsx(F.Button,{className:Ke.dataValidationListButton,onClick:v,children:r.t("dataValidation.panel.removeAll")}):null,f.jsx(F.Button,{className:Ke.dataValidationListButton,type:"primary",onClick:h,children:r.t("dataValidation.panel.add")})]})]})}const Qa=()=>{const n=b.useDependency(he),o=x.useObservable(n.activeRule$,n.activeRule);return o?f.jsx(Ba,{},o.rule.uid):f.jsx(za,{})};function ae(n){if(n===null)return"";if(n!=null&&n.p){const o=n==null?void 0:n.p.body;if(o==null)return"";const e=o.dataStream;return e.substring(e.length-2,e.length)===s.DEFAULT_EMPTY_DOCUMENT_VALUE?e.substring(0,e.length-2):e}return n==null?void 0:n.v}function qt(n){return n.filter(Boolean).join(",")}function Oe(n){return n.split(",").filter(Boolean)}function Ka(n){const o=ae(n);return o==null?"":o.toString()}const Ge="SHEET_DATA_VALIDATION_PLUGIN",Se="#ECECEC",Za="univer-dv-list-dropdown",Ja="univer-dv-list-dropdown-title",er="univer-dv-list-dropdown-list",tr="univer-dv-list-dropdown-list-container",ar="univer-dv-list-dropdown-selected-icon",rr="univer-dv-list-dropdown-item-container",or="univer-dv-list-dropdown-item",nr="univer-dv-list-dropdown-split",ir="univer-dv-list-dropdown-edit",de={dvListDropdown:Za,dvListDropdownTitle:Ja,dvListDropdownList:er,dvListDropdownListContainer:tr,dvListDropdownSelectedIcon:ar,dvListDropdownItemContainer:rr,dvListDropdownItem:or,dvListDropdownSplit:nr,dvListDropdownEdit:ir},sr=n=>{const{value:o,onChange:e,multiple:t,options:a,title:r,onEdit:i,style:l}=n;return f.jsxs("div",{className:de.dvListDropdown,style:l,children:[f.jsx("div",{className:de.dvListDropdownTitle,children:r}),f.jsx("div",{className:de.dvListDropdownList,children:f.jsx(F.Scrollbar,{children:f.jsx("div",{className:de.dvListDropdownListContainer,children:a.map((d,c)=>{const u=o.indexOf(d.value)>-1,m=()=>{let p;u?p=new Set(o.filter(v=>v!==d.value)):p=new Set(t?[...o,d.value]:[d.value]);const h=[];a.forEach(v=>{p.has(v.value)&&h.push(v.value)}),e(h)};return f.jsxs("div",{className:de.dvListDropdownItemContainer,onClick:m,children:[f.jsx("div",{className:de.dvListDropdownItem,style:{background:d.color||Se},children:d.label}),f.jsx("div",{className:de.dvListDropdownSelectedIcon,children:u?f.jsx(Ma,{}):null})]},c)})})})}),f.jsx("div",{className:de.dvListDropdownSplit}),f.jsx("div",{className:de.dvListDropdownEdit,children:f.jsx("a",{onClick:i,children:"编辑"})})]})};function lr(n){var $,j;const{location:o,hideFn:e}=n,{worksheet:t,row:a,col:r,unitId:i,subUnitId:l}=o,d=b.useDependency(s.ICommandService),c=b.useDependency(s.LocaleService),[u,m]=C.useState(""),p=b.useDependency(U.IEditorBridgeService),h=F.RectPopup.useContext(),v=h.right-h.left;if(!t)return null;const g=t.getCell(a,r),S=($=g==null?void 0:g.dataValidation)==null?void 0:$.rule,V=(j=g==null?void 0:g.dataValidation)==null?void 0:j.validator,D=(S==null?void 0:S.renderMode)===s.DataValidationRenderMode.CUSTOM||(S==null?void 0:S.renderMode)===void 0;if(!g||!S||!V)return;const M=S.type===s.DataValidationType.LIST_MULTIPLE,I=V.getListWithColor(S,i,l),w=u||Ka(g),T=Oe(w),A=()=>{d.executeCommand(we.id,{ruleId:S.uid}),e()};return f.jsx(sr,{style:{minWidth:v,maxWidth:Math.max(v,200)},title:M?c.t("dataValidation.listMultiple.dropdown"):c.t("dataValidation.list.dropdown"),value:T,multiple:M,onChange:P=>{const N=qt(P),Y={unitId:i,subUnitId:l,range:{startColumn:r,endColumn:r,startRow:a,endRow:a},value:{v:N,p:null,f:null,si:null}};p.isVisible()&&p.changeVisible({visible:!1,keycode:x.KeyCode.ESC,eventType:z.DeviceInputEventType.Keyboard}),d.executeCommand(oe.SetRangeValuesCommand.id,Y),m(N),M||e()},options:I.map(P=>({label:P.label,value:P.label,color:D?P.color:"transparent"})),onEdit:A})}var dr=Object.defineProperty,cr=Object.getOwnPropertyDescriptor,ur=(n,o,e,t)=>{for(var a=t>1?void 0:t?cr(o,e):o,r=n.length-1,i;r>=0;r--)(i=n[r])&&(a=(t?i(o,e,a):i(a))||a);return t&&a&&dr(o,e,a),a},Ce=(n,o)=>(e,t)=>o(e,t,n);exports.DataValidationRejectInputController=class extends s.Disposable{constructor(o,e,t,a,r){super(),this._editorBridgeService=o,this._dataValidationModel=e,this._dataValidatorRegistryService=t,this._dialogService=a,this._localeService=r,this._initEditorBridgeInterceptor()}_initEditorBridgeInterceptor(){this._editorBridgeService.interceptor.intercept(this._editorBridgeService.interceptor.getInterceptPoints().AFTER_CELL_EDIT_ASYNC,{handler:async(o,e,t)=>{const a=await o,{worksheet:r,row:i,col:l,unitId:d,subUnitId:c}=e,u=this._dataValidationModel.ensureManager(d,c),m=u.getRuleIdByLocation(i,l),p=m?u.getRuleById(m):void 0;if(!p||p.errorStyle!==s.DataValidationErrorStyle.STOP)return t(Promise.resolve(a));const h=await this._dataValidatorRegistryService.getValidatorItem(p.type);if(!h||await h.validator({value:ae(a),row:i,column:l,unitId:d,subUnitId:c},p))return t(Promise.resolve(a));const g=r.getCellRaw(i,l);return this._dialogService.open({width:368,title:{title:this._localeService.t("dataValidation.alert.title")},id:"reject-input-dialog",children:{title:h.getRuleFinalError(p)},footer:{title:C.createElement(F.Button,{type:"primary",onClick:()=>this._dialogService.close("reject-input-dialog")},this._localeService.t("dataValidation.alert.ok"))},onClose:()=>{this._dialogService.close("reject-input-dialog")}}),t(Promise.resolve(g))}})}showReject(o){this._dialogService.open({width:368,title:{title:this._localeService.t("dataValidation.alert.title")},id:"reject-input-dialog",children:{title:o},footer:{title:C.createElement(F.Button,{type:"primary",onClick:()=>this._dialogService.close("reject-input-dialog")},this._localeService.t("dataValidation.alert.ok"))},onClose:()=>{this._dialogService.close("reject-input-dialog")}})}};exports.DataValidationRejectInputController=ur([s.OnLifecycle(s.LifecycleStages.Ready,exports.DataValidationRejectInputController),Ce(0,U.IEditorBridgeService),Ce(1,O.Inject(R.DataValidationModel)),Ce(2,O.Inject(R.DataValidatorRegistryService)),Ce(3,x.IDialogService),Ce(4,O.Inject(s.LocaleService))],exports.DataValidationRejectInputController);const hr="univer-dv-date-dropdown",mr={dvDateDropdown:hr};function pr(n){var D,M,I;const{location:o,hideFn:e}=n,{worksheet:t,row:a,col:r,unitId:i,subUnitId:l}=o,d=b.useDependency(s.ICommandService),c=b.useDependency(exports.DataValidationRejectInputController),[u,m]=C.useState();if(!t)return null;const p=t.getCell(a,r),h=(D=p==null?void 0:p.dataValidation)==null?void 0:D.rule,v=(M=p==null?void 0:p.dataValidation)==null?void 0:M.validator;if(!p||!h||!v)return;const g=ae(p),S=(I=v.transformDate(g))!=null?I:Re(),V=S.isValid()?S:Re();return f.jsx("div",{className:mr.dvDateDropdown,children:f.jsx(F.DatePanel,{pickerValue:u!=null?u:V,onSelect:async w=>{const T=w.format("YYYY/MM/DD");h.errorStyle!==s.DataValidationErrorStyle.STOP||await v.validator({value:T,unitId:i,subUnitId:l,row:a,column:r},h)?d.executeCommand(oe.SetRangeValuesCommand.id,{unitId:i,subUnitId:l,range:{startColumn:r,endColumn:r,startRow:a,endRow:a},value:{v:T,p:null,f:null,si:null}}):c.showReject(v.getRuleFinalError(h)),e()},onPanelChange:w=>{m(w)}})})}const Ht="data-validation.list.dropdown",Wt="data-validation.date.dropdown";function fr(n){var d;const{unitId:o,subUnitId:e,value:t,onChange:a,showError:r,validResult:i}=n,l=r?i==null?void 0:i.formula1:"";return f.jsx(F.FormLayout,{error:l,children:f.jsx(x.TextEditor,{value:(d=t==null?void 0:t.formula1)!=null?d:"",id:s.createInternalEditorID(`dataValidation-custom-formula-${o}-${e}`),onChange:c=>{a==null||a({...t,formula1:c!=null?c:""})},onlyInputFormula:!0,openForSheetUnitId:o,openForSheetSubUnitId:e})})}const gr="univer-data-validation-formula",vr="univer-data-validation-formula-and",_r="univer-data-validation-formula-list-item",Sr="univer-data-validation-formula-list-item-icon",Rr="univer-data-validation-formula-list-item-drag",Vr="univer-data-validation-formula-list-add",Mr="univer-data-validation-formula-color-select",Dr="univer-data-validation-formula-color-select-panel",Or="univer-data-validation-formula-color-item",J={dataValidationFormula:gr,dataValidationFormulaAnd:vr,dataValidationFormulaListItem:_r,dataValidationFormulaListItemIcon:Sr,dataValidationFormulaListItemDrag:Rr,dataValidationFormulaListAdd:Vr,dataValidationFormulaColorSelect:Mr,dataValidationFormulaColorSelectPanel:Dr,dataValidationFormulaColorItem:Or},Ir=n=>{const{isTwoFormula:o=!1,value:e,onChange:t,showError:a,validResult:r}=n,i=b.useDependency(s.LocaleService),l=a?r==null?void 0:r.formula1:"",d=a?r==null?void 0:r.formula2:"";return o?f.jsxs(f.Fragment,{children:[f.jsx(F.FormLayout,{error:l,children:f.jsx(F.Input,{className:J.dataValidationFormula,placeholder:i.t("dataValidation.panel.formulaPlaceholder"),value:e==null?void 0:e.formula1,onChange:c=>{t==null||t({...e,formula1:c})}})}),f.jsx("div",{className:J.dataValidationFormulaAnd,children:i.t("dataValidation.panel.formulaAnd")}),f.jsx(F.FormLayout,{error:d,children:f.jsx(F.Input,{className:J.dataValidationFormula,placeholder:i.t("dataValidation.panel.formulaPlaceholder"),value:e==null?void 0:e.formula2,onChange:c=>{t==null||t({...e,formula2:c})}})})]}):f.jsx(F.FormLayout,{error:l,children:f.jsx(F.Input,{className:J.dataValidationFormula,placeholder:i.t("dataValidation.panel.formulaPlaceholder"),value:e==null?void 0:e.formula1,onChange:c=>{t==null||t({formula1:c})}})})},Fr=["#FFFFFF","#FEE7E7","#FEF0E6","#EFFBD0","#E4F4FE","#E8ECFD","#F1EAFA","#FDE8F3","#E5E5E5","#FDCECE","#FDC49B","#DEF6A2","#9FDAFF","#D0D9FB","#E3D5F6","#FBD0E8","#656565","#FE4B4B","#FF8C51","#8BBB11","#0B9EFB","#3A60F7","#9E6DE3","#F248A6"],Cr=n=>{const{value:o,onChange:e,disabled:t}=n,[a,r]=C.useState(!1);return f.jsx(F.Select,{disabled:t,open:a,onDropdownVisibleChange:r,dropdownStyle:{width:112},className:J.dataValidationFormulaColorSelect,value:o,onChange:e,labelRender:i=>f.jsx("div",{className:J.dataValidationFormulaColorItem,style:{background:i.value}}),dropdownRender:()=>f.jsx("div",{className:J.dataValidationFormulaColorSelectPanel,children:Fr.map(i=>f.jsx("div",{onClick:()=>{e(i),r(!1)},className:J.dataValidationFormulaColorItem,style:{background:i}},i))})})},_t=n=>{const{item:o,commonProps:e,style:t}=n,{onItemChange:a,onItemDelete:r}=e;return f.jsxs("div",{className:J.dataValidationFormulaListItem,style:t,children:[o.isRef?null:f.jsx("div",{className:aa(J.dataValidationFormulaListItemDrag,"draggableHandle"),children:f.jsx(La,{})}),f.jsx(Cr,{value:o.color,onChange:i=>{a(o.id,o.label,i)}}),f.jsx(F.Input,{disabled:o.isRef,value:o.label,onChange:i=>{a(o.id,i,o.color)}}),o.isRef?null:f.jsx("div",{className:J.dataValidationFormulaListItemIcon,children:f.jsx(jt,{onClick:()=>r(o.id)})})]})};function Er(n){const{value:o,onChange:e=()=>{},unitId:t,subUnitId:a,validResult:r,showError:i,ruleId:l}=n,{formula1:d="",formula2:c=""}=o||{},u=C.useRef(null),[m,p]=C.useState(()=>s.isFormulaString(d)?"1":"0"),[h,v]=C.useState(m==="1"?d:"="),[g,S]=C.useState(m==="1"?d:"="),V=b.useDependency(s.LocaleService),D=b.useDependency(R.DataValidatorRegistryService),M=b.useDependency(R.DataValidationModel),[I,w]=C.useState(()=>c.split(",")),T=D.getValidatorItem(s.DataValidationType.LIST),[A,$]=C.useState([]),[j,P]=C.useState(""),N=i?r==null?void 0:r.formula1:"",Y=x.useObservable(M.ruleChange$),q=x.useEvent(e);C.useEffect(()=>{(async()=>{await new Promise(W=>{setTimeout(()=>W(!0),100)});const E=M.getRuleById(t,a,l),k=E==null?void 0:E.formula1;if(s.isFormulaString(k)&&T&&E){const W=await T.getListAsync(E,t,a);$(W)}})()},[M,Y,T,l,a,t]),C.useEffect(()=>{s.isFormulaString(d)&&d!==g&&(v(d),S(g))},[g,d]);const[G,B]=C.useState(()=>{const E=m!=="1"?Oe(d):[],k=c.split(",");return E.map((W,Z)=>({label:W,color:k[Z]||Se,isRef:!1,id:s.Tools.generateRandomId(4)}))}),K=(E,k,W)=>{const Z=G.find(le=>le.id===E);Z&&(Z.label=k,Z.color=W,B([...G]))},ee=E=>{const k=G.findIndex(W=>W.id===E);k!==-1&&(G.splice(k,1),B([...G]))},X=c.split(","),y=C.useMemo(()=>A.map((E,k)=>({label:E,color:X[k]||Se,id:`${k}`,isRef:!0})),[X,A]),L=(E,k,W)=>{const Z=[...I];Z[+E]=W,w(Z),q({formula1:d,formula2:Z.join(",")})},Q=()=>{B([...G,{label:"",color:Se,isRef:!1,id:s.Tools.generateRandomId(4)}])};C.useEffect(()=>{if(m==="1")return;const E=new Set,k=[];G.map(W=>({labelList:W.label.split(","),item:W})).forEach(({item:W,labelList:Z})=>{Z.forEach(le=>{E.has(le)||(E.add(le),k.push({label:le,color:W.color}))})}),q({formula1:qt(k.map(W=>W.label)),formula2:k.map(W=>W.color===Se?"":W.color).join(",")})},[G,q,m,g,I]);const H=C.useMemo(()=>async E=>{if(!s.isFormulaString(E)){q==null||q({formula1:"",formula2:c});return}q==null||q({formula1:s.isFormulaString(E)?E:"",formula2:c})},[c,q]);return f.jsxs(f.Fragment,{children:[f.jsx(F.FormLayout,{label:V.t("dataValidation.list.options"),children:f.jsxs(F.RadioGroup,{value:m,onChange:E=>{p(E),v(g),E==="1"&&q({formula1:g==="="?"":g,formula2:I.join(",")})},children:[f.jsx(F.Radio,{value:"0",children:V.t("dataValidation.list.customOptions")}),f.jsx(F.Radio,{value:"1",children:V.t("dataValidation.list.refOptions")})]})}),m==="1"?f.jsxs(f.Fragment,{children:[f.jsx(F.FormLayout,{error:N||j,children:f.jsx(x.TextEditor,{id:s.createInternalEditorID(`list-ref-range-${t}-${a}`),value:h,openForSheetUnitId:t,openForSheetSubUnitId:a,onlyInputFormula:!0,onChange:async E=>{const k=E!=null?E:"";S(k),H(k)}})}),f.jsx(F.FormLayout,{children:f.jsx("div",{ref:u,children:y.map(E=>f.jsx(_t,{item:E,commonProps:{onItemChange:L},style:{marginBottom:12}},E.id))})})]}):f.jsx(F.FormLayout,{error:N,children:f.jsxs("div",{ref:u,style:{marginTop:"-12px"},children:[f.jsx(F.DraggableList,{list:G,onListChange:B,rowHeight:32,margin:[0,12],draggableHandle:".draggableHandle",itemRender:E=>f.jsx(_t,{item:E,commonProps:{onItemChange:K,onItemDelete:ee}},E.id),idKey:"id"}),f.jsxs("a",{className:J.dataValidationFormulaListAdd,onClick:Q,children:[f.jsx(Fa,{}),V.t("dataValidation.list.add")]})]})})]})}function wr(n){const{value:o,onChange:e,showError:t,validResult:a}=n,r=b.useDependency(s.LocaleService),i=t?a==null?void 0:a.formula1:"",l=t?a==null?void 0:a.formula2:"",[d,c]=C.useState(!((o==null?void 0:o.formula1)===void 0&&(o==null?void 0:o.formula2)===void 0));return f.jsxs(f.Fragment,{children:[f.jsx(F.FormLayout,{children:f.jsx(F.Checkbox,{checked:d,onChange:u=>{u?c(!0):(c(!1),e==null||e({...o,formula1:void 0,formula2:void 0}))},children:r.t("dataValidation.checkbox.tips")})}),d?f.jsx(F.FormLayout,{label:r.t("dataValidation.checkbox.checked"),error:i,children:f.jsx(F.Input,{className:J.dataValidationFormula,placeholder:r.t("dataValidation.panel.formulaPlaceholder"),value:o==null?void 0:o.formula1,onChange:u=>{e==null||e({...o,formula1:u||void 0})}})}):null,d?f.jsx(F.FormLayout,{label:r.t("dataValidation.checkbox.unchecked"),error:l,children:f.jsx(F.Input,{className:J.dataValidationFormula,placeholder:r.t("dataValidation.panel.formulaPlaceholder"),value:o==null?void 0:o.formula2,onChange:u=>{e==null||e({...o,formula2:u||void 0})}})}):null]})}const kt="data-validation.custom-formula-input",ye="data-validation.formula-input",Yt="data-validation.list-formula-input",Gt="data-validation.checkbox-formula-input",yr=[[kt,fr],[ye,Ir],[Yt,Er],[Gt,wr]],Tr="LIST_RENDER_MODE_OPTION_INPUT";function xe(n){var a;const{value:o,onChange:e}=n,t=b.useDependency(s.LocaleService);return f.jsx(F.FormLayout,{label:t.t("dataValidation.renderMode.label"),children:f.jsxs(F.RadioGroup,{value:`${(a=o.renderMode)!=null?a:s.DataValidationRenderMode.CUSTOM}`,onChange:r=>e({...o,renderMode:+r}),children:[f.jsx(F.Radio,{value:`${s.DataValidationRenderMode.CUSTOM}`,children:t.t("dataValidation.renderMode.chip")}),f.jsx(F.Radio,{value:`${s.DataValidationRenderMode.ARROW}`,children:t.t("dataValidation.renderMode.arrow")}),f.jsx(F.Radio,{value:`${s.DataValidationRenderMode.TEXT}`,children:t.t("dataValidation.renderMode.text")})]})})}xe.componentKey=Tr;const zt="data-validation-single",ft="sheet.menu.data-validation";function Lr(n){return{id:ft,type:x.MenuItemType.SUBITEMS,positions:[x.MenuPosition.TOOLBAR_START],group:x.MenuGroup.TOOLBAR_FORMULAS_INSERT,icon:zt,tooltip:"dataValidation.title",hidden$:x.getMenuHiddenObservable(n,s.UniverInstanceType.UNIVER_SHEET)}}function Ar(n){return{id:we.id,title:"dataValidation.panel.title",type:x.MenuItemType.BUTTON,positions:[ft]}}function br(n){return{id:pt.id,title:"dataValidation.panel.add",type:x.MenuItemType.BUTTON,positions:[ft]}}var Nr=Object.defineProperty,Ur=Object.getOwnPropertyDescriptor,jr=(n,o,e,t)=>{for(var a=t>1?void 0:t?Ur(o,e):o,r=n.length-1,i;r>=0;r--)(i=n[r])&&(a=(t?i(o,e,a):i(a))||a);return t&&a&&Nr(o,e,a),a},te=(n,o)=>(e,t)=>o(e,t,n);const Pr={tr:{size:6,color:"#fe4b4b"}};exports.DataValidationRenderController=class extends s.RxDisposable{constructor(o,e,t,a,r,i,l,d,c,u,m,p,h){super(),this._componentManager=o,this._menuService=e,this._dataValidationModel=t,this._sheetSkeletonManagerService=a,this._renderManagerService=r,this._univerInstanceService=i,this._dataValidatorRegistryService=l,this._editorBridgeService=d,this._dropdownManagerService=c,this._sheetInterceptorService=u,this._injector=m,this._autoHeightController=p,this._commandService=h,this._init()}_init(){this._initComponents(),this._initMenu(),this._initSkeletonChange(),this._initDropdown(),this._initViewModelIntercept(),this._initAutoHeight()}_initMenu(){[Lr,Ar,br].forEach(o=>{this.disposeWithMe(this._menuService.addMenuItem(o(this._injector)))})}_initComponents(){[[yt,Qa],[wt,da],[Ht,lr],[Wt,pr],[xe.componentKey,xe],...yr].forEach(([o,e])=>{this.disposeWithMe(this._componentManager.register(o,e))})}_initDropdown(){this.disposeWithMe(this._editorBridgeService.visible$.subscribe(o=>{if(!o.visible)return;const e=this._editorBridgeService.getEditCellState();if(e){const{unitId:t,sheetId:a,row:r,column:i}=e,l=this._univerInstanceService.getUniverSheetInstance(t);if(!l)return;const c=this._dataValidationModel.ensureManager(t,a).getRuleByLocation(r,i);if(!c)return;const u=this._dataValidatorRegistryService.getValidatorItem(c.type);if(!(u!=null&&u.dropdown))return;const m=l.getActiveSheet(),p=this._dropdownManagerService.activeDropdown,h=p==null?void 0:p.location;if(h&&h.unitId===t&&h.subUnitId===a&&h.row===r&&h.col===i)return;this._dropdownManagerService.showDropdown({location:{unitId:t,subUnitId:a,row:r,col:i,workbook:l,worksheet:m},componentKey:u.dropdown,onHide:()=>{}})}}))}_initSkeletonChange(){const o=()=>{const e=this._univerInstanceService.getCurrentUnitForType(s.UniverInstanceType.UNIVER_SHEET);if(!e)return;const t=e.getUnitId(),a=e.getActiveSheet().getSheetId(),r=this._sheetSkeletonManagerService.getOrCreateSkeleton({unitId:t,sheetId:a}),i=this._renderManagerService.getRenderById(t);r==null||r.makeDirty(!0),r==null||r.calculate(),i&&i.mainComponent.makeForceDirty()};this.disposeWithMe(this._dataValidationModel.ruleChange$.subscribe(()=>{o()})),this.disposeWithMe(this._dataValidationModel.validStatusChange$.subscribe(()=>{o()}))}_initViewModelIntercept(){this.disposeWithMe(this._sheetInterceptorService.intercept(oe.INTERCEPTOR_POINT.CELL_CONTENT,{handler:(o,e,t)=>{var M,I,w,T;const{row:a,col:r,unitId:i,subUnitId:l}=e,d=this._dataValidationModel.ensureManager(i,l),c=(M=this._sheetSkeletonManagerService.getCurrent())==null?void 0:M.skeleton;if(!d||!c)return t(o);const u=e.workbook.getStyles(),m=(typeof(o==null?void 0:o.s)=="string"?u.get(o==null?void 0:o.s):o==null?void 0:o.s)||{},p=d.getRuleIdByLocation(a,r);if(!p)return t(o);const h=d.getRuleById(p);if(!h)return t(o);const v=e.worksheet.getCellRaw(e.row,e.col),g=this._dataValidationModel.validator(ae(v),h,e),S=this._dataValidatorRegistryService.getValidatorItem(h.type),V=ae(o);let D={};if((h.type===s.DataValidationType.LIST||h.type===s.DataValidationType.LIST_MULTIPLE)&&(D={interceptorStyle:{...o==null?void 0:o.interceptorStyle,tb:(I=m.tb!==s.WrapStrategy.OVERFLOW?m.tb:s.WrapStrategy.CLIP)!=null?I:s.WrapStrategy.WRAP}}),h.type===s.DataValidationType.CHECKBOX){const{formula2:A}=S.parseFormulaSync(h,e.unitId,e.subUnitId);V||(D={v:A,t:1,p:null,interceptorStyle:{...o==null?void 0:o.interceptorStyle,tb:s.WrapStrategy.CLIP}})}if(h.type===s.DataValidationType.LIST&&(h.renderMode===s.DataValidationRenderMode.ARROW||h.renderMode===s.DataValidationRenderMode.TEXT)){const A=S.getListWithColorMap(h),$=`${(w=ae(o))!=null?w:""}`,j=A[$];j&&(D={...D,interceptorStyle:{...D.interceptorStyle,bg:{rgb:j}}})}return t({...o,...D,dataValidation:{ruleId:p,validStatus:g,rule:h,validator:S},markers:{...o==null?void 0:o.markers,...g===s.DataValidationStatus.INVALID?Pr:null},customRender:[...(T=o==null?void 0:o.customRender)!=null?T:[],...S!=null&&S.canvasRender?[S.canvasRender]:[]],fontRenderExtension:{...o==null?void 0:o.fontRenderExtension,isSkip:S==null?void 0:S.skipDefaultFontRender(h,V,e)},interceptorStyle:{...o==null?void 0:o.interceptorStyle,...D.interceptorStyle},get interceptorAutoHeight(){var j,P,N,Y;const A=c.mergeData.find(q=>{const{startColumn:G,startRow:B,endColumn:K,endRow:ee}=q;return a>=B&&r>=G&&a<=ee&&r<=K}),$={data:{...o,dataValidation:{ruleId:p,validStatus:g,rule:h,validator:S}},style:c.getsStyles().getStyleByCell(o),primaryWithCoord:c.getCellByIndex((j=A==null?void 0:A.startRow)!=null?j:a,(P=A==null?void 0:A.startColumn)!=null?P:r),unitId:i,subUnitId:l,row:a,col:r};return(Y=(N=S==null?void 0:S.canvasRender)==null?void 0:N.calcCellAutoHeight)==null?void 0:Y.call(N,$)}})}}))}_initAutoHeight(){this._dataValidationModel.ruleChange$.subscribe(o=>{var e;if((e=o.rule)!=null&&e.ranges){const t=this._autoHeightController.getUndoRedoParamsOfAutoHeight(o.rule.ranges);s.sequenceExecute(t.redos,this._commandService)}})}};exports.DataValidationRenderController=jr([s.OnLifecycle(s.LifecycleStages.Rendered,exports.DataValidationRenderController),te(0,O.Inject(x.ComponentManager)),te(1,x.IMenuService),te(2,O.Inject(R.DataValidationModel)),te(3,O.Inject(U.SheetSkeletonManagerService)),te(4,z.IRenderManagerService),te(5,s.IUniverInstanceService),te(6,O.Inject(R.DataValidatorRegistryService)),te(7,U.IEditorBridgeService),te(8,O.Inject(Ve)),te(9,O.Inject(oe.SheetInterceptorService)),te(10,O.Inject(O.Injector)),te(11,O.Inject(U.AutoHeightController)),te(12,s.ICommandService)],exports.DataValidationRenderController);var xr=Object.defineProperty,Br=Object.getOwnPropertyDescriptor,$r=(n,o,e,t)=>{for(var a=t>1?void 0:t?Br(o,e):o,r=n.length-1,i;r>=0;r--)(i=n[r])&&(a=(t?i(o,e,a):i(a))||a);return t&&a&&xr(o,e,a),a},qr=(n,o)=>(e,t)=>o(e,t,n);exports.SheetDataValidationService=class{constructor(o){_(this,"_currentManager");_(this,"_currentManager$",new pe.Subject);_(this,"currentManager$",this._currentManager$.asObservable());this._dataValidationModel=o}get currentManager(){return this._currentManager}_ensureManager(o,e){return this._dataValidationModel.ensureManager(o,e)}switchCurrent(o,e){var a,r;if(o===((a=this.currentManager)==null?void 0:a.unitId)&&e===((r=this._currentManager)==null?void 0:r.subUnitId))return;const t=this._ensureManager(o,e);this._currentManager={manager:t,unitId:o,subUnitId:e},this._currentManager$.next(this._currentManager)}get(o,e){return this._ensureManager(o,e)}};exports.SheetDataValidationService=$r([qr(0,O.Inject(R.DataValidationModel))],exports.SheetDataValidationService);class Fe{constructor(){_(this,"_cacheMatrix",new Map)}_ensureCache(o,e){let t=this._cacheMatrix.get(o);t||(t=new Map,this._cacheMatrix.set(o,t));let a=t.get(e);return a||(a=new s.ObjectMatrix,t.set(e,a)),a}ensureCache(o,e){return this._ensureCache(o,e)}addRule(o,e,t){this.markRangeDirty(o,e,t.ranges)}removeRule(o,e,t){this._deleteRange(o,e,t.ranges)}updateRuleRanges(o,e,t,a,r){const i=this._ensureCache(o,e);r.forEach(l=>{s.Range.foreach(l,(d,c)=>{const u=i.getValue(d,c);u&&(u.temp=!0)})}),a.forEach(l=>{s.Range.foreach(l,(d,c)=>{const u=i.getValue(d,c);u&&u.ruleId===t?u.temp=!1:i.setValue(d,c,void 0)})}),r.forEach(l=>{s.Range.foreach(l,(d,c)=>{const u=i.getValue(d,c);u&&u.temp===!0&&i.realDeleteValue(d,c)})})}markRangeDirty(o,e,t){const a=this._ensureCache(o,e);t.forEach(r=>{s.Range.foreach(r,(i,l)=>{a.setValue(i,l,void 0)})})}markCellDirty(o,e,t,a){this._ensureCache(o,e).setValue(t,a,void 0)}_deleteRange(o,e,t){const a=this._ensureCache(o,e);t.forEach(r=>{s.Range.foreach(r,(i,l)=>{a.realDeleteValue(i,l)})})}getValue(o,e,t,a){return this._ensureCache(o,e).getValue(t,a)}setValue(o,e,t,a,r){return this._ensureCache(o,e).setValue(t,a,r)}}var Hr=Object.defineProperty,Wr=Object.getOwnPropertyDescriptor,kr=(n,o,e,t)=>{for(var a=t>1?void 0:t?Wr(o,e):o,r=n.length-1,i;r>=0;r--)(i=n[r])&&(a=(t?i(o,e,a):i(a))||a);return t&&a&&Hr(o,e,a),a},Le=(n,o)=>(e,t)=>o(e,t,n);exports.DataValidationCustomFormulaService=class extends s.Disposable{constructor(e,t,a,r){super();_(this,"_formulaMap",new Map);_(this,"_ruleFormulaMap",new Map);_(this,"_formulaCellMap",new Map);this._registerOtherFormulaService=e,this._lexerTreeBuilder=t,this._dataValidationModel=a,this._dataValidationCacheService=r,this._initFormulaResultHandler()}_initFormulaResultHandler(){this.disposeWithMe(this._registerOtherFormulaService.formulaResult$.subscribe(e=>{for(const t in e){const a=e[t];for(const r in a){const i=a[r],{formulaCellMap:l,ruleFormulaMap:d}=this._ensureMaps(t,r),c=this._dataValidationModel.ensureManager(t,r);i.forEach(u=>{var v,g;const m=d.get((v=u.extra)==null?void 0:v.ruleId),p=l.get(u.formulaId),h=c.getRuleById((g=u.extra)==null?void 0:g.ruleId);h&&m&&!m.isTransformable&&this._dataValidationCacheService.markRangeDirty(t,r,h.ranges),p&&this._dataValidationCacheService.markCellDirty(t,r,p.row,p.column)})}}}))}_ensureMaps(e,t){let a=this._formulaMap.get(e),r=this._ruleFormulaMap.get(e),i=this._formulaCellMap.get(e);(!a||!r||!i)&&(a=new Map,r=new Map,i=new Map,this._formulaMap.set(e,a),this._ruleFormulaMap.set(e,r),this._formulaCellMap.set(e,i));let l=a.get(t),d=r.get(t),c=i.get(t);return(!l||!d||!c)&&(l=new s.ObjectMatrix,a.set(t,l),d=new Map,r.set(t,d),c=new Map,i.set(t,c)),{formulaMap:l,ruleFormulaMap:d,formulaCellMap:c}}_registerFormula(e,t,a,r){return this._registerOtherFormulaService.registerFormula(e,t,r,{ruleId:a})}deleteByRuleId(e,t,a){const{formulaMap:r,formulaCellMap:i,ruleFormulaMap:l}=this._ensureMaps(e,t),d=this._dataValidationModel.getRuleById(e,t,a),c=new Set,u=l.get(a);!d||!u||(l.delete(a),d.ranges.forEach(m=>{s.Range.foreach(m,(p,h)=>{const v=r.getValue(p,h);if(v&&v.ruleId===a){const{formulaId:g}=v;r.realDeleteValue(p,h),c.add(g),i.delete(g)}})}),this._registerOtherFormulaService.deleteFormula(e,t,Array.from(c.values())))}_addFormulaByRange(e,t,a,r,i){const{formulaMap:l,ruleFormulaMap:d,formulaCellMap:c}=this._ensureMaps(e,t);if(!r)return;const u=se.isFormulaTransformable(this._lexerTreeBuilder,r),m=i[0].startRow,p=i[0].startColumn;let h;u?i.forEach(v=>{s.Range.foreach(v,(g,S)=>{const V=se.transformFormula(this._lexerTreeBuilder,r,m,p,g,S),D=this._registerFormula(e,t,a,V);l.setValue(g,S,{formulaId:D,ruleId:a}),c.set(D,{row:g,column:S})})}):(h=this._registerFormula(e,t,a,r),i.forEach(v=>{s.Range.foreach(v,(g,S)=>{l.setValue(g,S,{formulaId:h,ruleId:a})})})),d.set(a,{formula:r,originCol:p,originRow:m,isTransformable:u,formulaId:h})}addRule(e,t,a){const{ranges:r,formula1:i,uid:l,type:d}=a;d!==s.DataValidationType.CUSTOM||!i||!s.isFormulaString(i)||this._addFormulaByRange(e,t,l,i,r)}updateRuleRanges(e,t,a,r,i){const{formulaMap:l,ruleFormulaMap:d,formulaCellMap:c}=this._ensureMaps(e,t),u=d.get(a);if(!u)return;const{formula:m,originCol:p,originRow:h,isTransformable:v,formulaId:g}=u,S=new Set;r.forEach(V=>{s.Range.foreach(V,(D,M)=>{const I=l.getValue(D,M);I&&I.ruleId===a&&(I.temp=!0)})}),i.forEach(V=>{s.Range.foreach(V,(D,M)=>{var w;const I=(w=l.getValue(D,M))!=null?w:{};if(I.ruleId!==a){const T=d.get(I.ruleId);if(T!=null&&T.isTransformable&&S.add(I.formulaId),v){const A=se.transformFormula(this._lexerTreeBuilder,m,h,p,D,M),$=this._registerFormula(e,t,a,A);l.setValue(D,M,{ruleId:a,formulaId:$}),c.set($,{row:D,column:M})}else l.setValue(D,M,{ruleId:a,formulaId:g})}else I.temp=!1})}),r.forEach(V=>{s.Range.foreach(V,(D,M)=>{const I=l.getValue(D,M);I&&I.ruleId===a&&I.temp===!0&&(l.realDeleteValue(D,M),v&&S.add(I.formulaId))})}),S.forEach(V=>{c.delete(V)}),this._registerOtherFormulaService.deleteFormula(e,t,Array.from(S.values()))}updateRuleFormula(e,t,a,r,i){const{ruleFormulaMap:l}=this._ensureMaps(e,t),d=l.get(a);(!d||d.formula!==i)&&this._addFormulaByRange(e,t,a,i,r)}getCellFormulaValue(e,t,a,r){const{formulaMap:i}=this._ensureMaps(e,t),l=i.getValue(a,r);return l?this._registerOtherFormulaService.getFormulaValue(e,t,l.formulaId):Promise.resolve(void 0)}getRuleFormulaInfo(e,t,a){const{ruleFormulaMap:r}=this._ensureMaps(e,t);return r.get(a)}};exports.DataValidationCustomFormulaService=kr([Le(0,O.Inject(He.RegisterOtherFormulaService)),Le(1,O.Inject(se.LexerTreeBuilder)),Le(2,O.Inject(R.DataValidationModel)),Le(3,O.Inject(Fe))],exports.DataValidationCustomFormulaService);function ue(n){var o,e;return(e=(o=n==null?void 0:n[0])==null?void 0:o[0])==null?void 0:e.v}class Yr extends R.BaseDataValidator{constructor(){super(...arguments);_(this,"id",s.DataValidationType.CUSTOM);_(this,"title","dataValidation.custom.title");_(this,"operators",[]);_(this,"scopes",["sheet"]);_(this,"formulaInput",kt);_(this,"_customFormulaService",this.injector.get(exports.DataValidationCustomFormulaService))}validatorFormula(e){const t=s.isFormulaString(e.formula1);return{success:t,formula1:t?"":this.localeService.t("dataValidation.validFail.formula")}}async parseFormula(e,t,a){return{formula1:void 0,formula2:void 0}}async isValidType(e,t,a){const{column:r,row:i,unitId:l,subUnitId:d}=e,c=await this._customFormulaService.getCellFormulaValue(l,d,i,r);return!!ue(c==null?void 0:c.result)}generateRuleErrorMessage(e){return this.localeService.t("dataValidation.custom.error")}}var Gr=Object.defineProperty,zr=Object.getOwnPropertyDescriptor,Xr=(n,o,e,t)=>{for(var a=t>1?void 0:t?zr(o,e):o,r=n.length-1,i;r>=0;r--)(i=n[r])&&(a=(t?i(o,e,a):i(a))||a);return t&&a&&Gr(o,e,a),a},Ze=(n,o)=>(e,t)=>o(e,t,n);exports.DataValidationFormulaService=class extends s.Disposable{constructor(e,t,a){super();_(this,"_formulaRuleMap",new Map);this._registerOtherFormulaService=e,this._dataValidationCacheService=t,this._dataValidationModel=a,this._initFormulaResultHandler()}_initFormulaResultHandler(){this.disposeWithMe(this._registerOtherFormulaService.formulaResult$.subscribe(e=>{for(const t in e){const a=e[t];for(const r in a){const i=a[r],l=this._ensureRuleFormulaMap(t,r),d=this._dataValidationModel.ensureManager(t,r);i.forEach(c=>{var u,m;if(l.get((u=c.extra)==null?void 0:u.ruleId)){const p=d.getRuleById((m=c.extra)==null?void 0:m.ruleId);p&&this._dataValidationCacheService.markRangeDirty(t,r,p.ranges)}})}}}))}_ensureRuleFormulaMap(e,t){let a=this._formulaRuleMap.get(e);a||(a=new Map,this._formulaRuleMap.set(e,a));let r=a.get(t);return r||(r=new Map,a.set(t,r)),r}addRule(e,t,a,r,i){const l=s.isFormulaString(r),d=s.isFormulaString(i);if(!l&&!d)return;const c=this._ensureRuleFormulaMap(e,t),u=[void 0,void 0];if(l){const m=this._registerOtherFormulaService.registerFormula(e,t,r,{ruleId:a});u[0]={id:m,text:r}}if(d){const m=this._registerOtherFormulaService.registerFormula(e,t,i,{ruleId:a});u[1]={id:m,text:i}}c.set(a,u)}removeRule(e,t,a){const i=this._ensureRuleFormulaMap(e,t).get(a);if(!i)return;const[l,d]=i,c=[l==null?void 0:l.id,d==null?void 0:d.id].filter(Boolean);c.length&&this._registerOtherFormulaService.deleteFormula(e,t,c)}updateRuleFormulaText(e,t,a,r,i){const d=this._ensureRuleFormulaMap(e,t).get(a);if(!d){this.addRule(e,t,a,r,i);return}const[c,u]=d;if((c==null?void 0:c.text)!==r)if(c&&this._registerOtherFormulaService.deleteFormula(e,t,[c.id]),s.isFormulaString(r)){const m=this._registerOtherFormulaService.registerFormula(e,t,r,{ruleId:a});d[0]={text:r,id:m}}else d[0]=void 0;if((u==null?void 0:u.text)!==i)if(u&&this._registerOtherFormulaService.deleteFormula(e,t,[u.id]),s.isFormulaString(i)){const m=this._registerOtherFormulaService.registerFormula(e,t,i,{ruleId:a});d[1]={text:i,id:m}}else d[1]=void 0}getRuleFormulaResult(e,t,a){const i=this._ensureRuleFormulaMap(e,t).get(a);if(!i)return Promise.resolve(null);const l=async d=>d&&this._registerOtherFormulaService.getFormulaValue(e,t,d.id);return Promise.all([l(i[0]),l(i[1])])}getRuleFormulaResultSync(e,t,a){const i=this._ensureRuleFormulaMap(e,t).get(a);if(i)return i.map(l=>{if(l)return this._registerOtherFormulaService.getFormulaValueSync(e,t,l.id)})}getRuleFormulaInfo(e,t,a){return this._ensureRuleFormulaMap(e,t).get(a)}};exports.DataValidationFormulaService=Xr([Ze(0,O.Inject(He.RegisterOtherFormulaService)),Ze(1,O.Inject(Fe)),Ze(2,O.Inject(R.DataValidationModel))],exports.DataValidationFormulaService);var Qr=Object.defineProperty,Kr=Object.getOwnPropertyDescriptor,Zr=(n,o,e,t)=>{for(var a=t>1?void 0:t?Kr(o,e):o,r=n.length-1,i;r>=0;r--)(i=n[r])&&(a=(t?i(o,e,a):i(a))||a);return t&&a&&Qr(o,e,a),a},Je=(n,o)=>(e,t)=>o(e,t,n);const Ae=6;let st=class{constructor(n,o,e){this._commandService=n,this._formulaService=o,this._themeService=e}_calc(n,o){var c,u,m;const{vt:e,ht:t}=o||{},a=n.endX-n.startX-Ae*2,r=n.endY-n.startY,i=((c=o==null?void 0:o.fs)!=null?c:10)*1.6;let l=0,d=0;switch(e){case s.VerticalAlign.TOP:d=0;break;case s.VerticalAlign.BOTTOM:d=0+(r-i);break;default:d=0+(r-i)/2;break}switch(t){case s.HorizontalAlign.LEFT:l=Ae;break;case s.HorizontalAlign.RIGHT:l=Ae+(a-i);break;default:l=Ae+(a-i)/2;break}return{left:n.startX+l,top:n.startY+d,width:((u=o==null?void 0:o.fs)!=null?u:10)*1.6,height:((m=o==null?void 0:o.fs)!=null?m:10)*1.6}}calcCellAutoHeight(n){var e;const{style:o}=n;return((e=o==null?void 0:o.fs)!=null?e:10)*1.6}async _parseFormula(n,o,e){var i,l;const{formula1:t=Be,formula2:a=lt}=n,r=await this._formulaService.getRuleFormulaResult(o,e,n.uid);return{formula1:s.isFormulaString(t)?ue((i=r==null?void 0:r[0])==null?void 0:i.result):t,formula2:s.isFormulaString(a)?ue((l=r==null?void 0:r[1])==null?void 0:l.result):a}}drawWith(n,o){var j,P,N,Y,q;const{style:e,data:t,primaryWithCoord:a,unitId:r,subUnitId:i}=o,l=a.isMergedMainCell?a.mergeInfo:a,d=ae(t),c=(j=t.dataValidation)==null?void 0:j.rule,u=(P=t.dataValidation)==null?void 0:P.validator;if(!c||!u)return;const m=this._themeService.getCurrentTheme();if(!u.skipDefaultFontRender(c,d,{unitId:r,subUnitId:i}))return;const{formula1:p=Be}=c,h=this._calc(l,e),{a:v,d:g}=n.getTransform(),S=z.fixLineWidthByScale(h.left,v),V=z.fixLineWidthByScale(h.top,g),D=z.Transform.create().composeMatrix({left:S,top:V,scaleX:1,scaleY:1,angle:0,skewX:0,skewY:0,flipX:!1,flipY:!1}),M=l.endX-l.startX,I=l.endY-l.startY;n.save(),n.beginPath(),n.rect(l.startX,l.startY,M,I),n.clip();const w=D.getMatrix();n.transform(w[0],w[1],w[2],w[3],w[4],w[5]);const T=((N=e==null?void 0:e.fs)!=null?N:10)*1.6,A=String(d)===String(p),$=m.hyacinth500;z.Checkbox.drawWith(n,{checked:A,width:T,height:T,fill:(q=(Y=e==null?void 0:e.cl)==null?void 0:Y.rgb)!=null?q:$}),n.restore()}isHit(n,o){const e=o.primaryWithCoord.isMergedMainCell?o.primaryWithCoord.mergeInfo:o.primaryWithCoord,t=this._calc(e,o.style),a=t.top,r=t.top+t.height,i=t.left,l=t.left+t.width,{x:d,y:c}=n;return d<=l&&d>=i&&c<=r&&c>=a}async onPointerDown(n,o){var p,h;if(o.button===2)return;const{primaryWithCoord:e,unitId:t,subUnitId:a,data:r}=n,i=ae(r),l=(p=r.dataValidation)==null?void 0:p.rule,d=(h=r.dataValidation)==null?void 0:h.validator;if(!l||!d||!d.skipDefaultFontRender(l,i,{unitId:t,subUnitId:a}))return;const{formula1:c,formula2:u}=await this._parseFormula(l,t,a),m={range:{startColumn:e.actualColumn,endColumn:e.actualColumn,startRow:e.actualRow,endRow:e.actualRow},value:{v:String(i)===String(c)?u:c,p:null}};this._commandService.executeCommand(oe.SetRangeValuesCommand.id,m)}};st=Zr([Je(0,s.ICommandService),Je(1,O.Inject(exports.DataValidationFormulaService)),Je(2,O.Inject(s.ThemeService))],st);const Be=1,lt=0;class Jr extends R.BaseDataValidator{constructor(){super(...arguments);_(this,"id",s.DataValidationType.CHECKBOX);_(this,"title","dataValidation.checkbox.title");_(this,"operators",[]);_(this,"scopes",["sheet"]);_(this,"formulaInput",Gt);_(this,"canvasRender",this.injector.createInstance(st));_(this,"_formulaService",this.injector.get(exports.DataValidationFormulaService))}skipDefaultFontRender(e,t,a){const{formula1:r,formula2:i}=this.parseFormulaSync(e,a.unitId,a.subUnitId),l=`${t!=null?t:""}`;return!l||l===`${r}`||l===`${i}`}validatorFormula(e){const{formula1:t,formula2:a}=e,r=!s.Tools.isBlank(t),i=!s.Tools.isBlank(a),l=t===a;return{success:r&&i&&!l||!r&&!i,formula1:r?l?this.localeService.t("dataValidation.validFail.checkboxEqual"):"":this.localeService.t("dataValidation.validFail.common"),formula2:i?l?this.localeService.t("dataValidation.validFail.checkboxEqual"):"":this.localeService.t("dataValidation.validFail.common")}}async parseFormula(e,t,a){var d,c;const{formula1:r=Be,formula2:i=lt}=e,l=await this._formulaService.getRuleFormulaResult(t,a,e.uid);return{formula1:s.isFormulaString(r)?ue((d=l==null?void 0:l[0])==null?void 0:d.result):r,formula2:s.isFormulaString(i)?ue((c=l==null?void 0:l[1])==null?void 0:c.result):i}}parseFormulaSync(e,t,a){var d,c;const{formula1:r=Be,formula2:i=lt}=e,l=this._formulaService.getRuleFormulaResultSync(t,a,e.uid);return{formula1:s.isFormulaString(r)?ue((d=l==null?void 0:l[0])==null?void 0:d.result):r,formula2:s.isFormulaString(i)?ue((c=l==null?void 0:l[1])==null?void 0:c.result):i}}async isValidType(e,t,a){const{value:r,unitId:i,subUnitId:l}=e,{formula1:d,formula2:c}=await this.parseFormula(a,i,l);return!s.Tools.isDefine(d)||!s.Tools.isDefine(c)?!0:s.Tools.isDefine(r)&&(String(r)===String(d)||String(r)===String(c))}generateRuleErrorMessage(e){return this.localeService.t("dataValidation.checkbox.error")}}const Ee=[s.DataValidationOperator.BETWEEN,s.DataValidationOperator.NOT_BETWEEN],et=86400;function eo(n,o=!0){if(o&&n>=0){if(n===0)return[1900,1,0];if(n===60)return[1900,2,29];if(n<60)return[1900,n<32?1:2,(n-1)%31+1]}let e=n+68569+2415019;const t=Math.floor(4*e/146097);e=e-Math.floor((146097*t+3)/4);const a=Math.floor(4e3*(e+1)/1461001);e=e-Math.floor(1461*a/4)+31;const r=Math.floor(80*e/2447),i=e-Math.floor(2447*r/80);e=Math.floor(r/11);const l=r+2-12*e;return[100*(t-49)+a+e|0,l|0,i|0]}const to=n=>{let o=n|0;const e=et*(n-o);let t=Math.floor(e);e-t>.9999&&(t+=1,t===et&&(t=0,o+=1));const a=t<0?et+t:t,[r,i,l]=eo(n,!0),d=Math.floor(a/60/60)%60,c=Math.floor(a/60)%60,u=Math.floor(a)%60,m=new Date(0);return m.setUTCFullYear(r,i-1,l),m.setUTCHours(d,c,u),m.getTime()},ao={[s.DataValidationOperator.BETWEEN]:"dataValidation.date.operators.between",[s.DataValidationOperator.EQUAL]:"dataValidation.date.operators.equal",[s.DataValidationOperator.GREATER_THAN]:"dataValidation.date.operators.greaterThan",[s.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.date.operators.greaterThanOrEqual",[s.DataValidationOperator.LESS_THAN]:"dataValidation.date.operators.lessThan",[s.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.date.operators.lessThanOrEqual",[s.DataValidationOperator.NOT_BETWEEN]:"dataValidation.date.operators.notBetween",[s.DataValidationOperator.NOT_EQUAL]:"dataValidation.date.operators.notEqual"};s.DataValidationOperator.BETWEEN+"",s.DataValidationOperator.EQUAL+"",s.DataValidationOperator.GREATER_THAN+"",s.DataValidationOperator.GREATER_THAN_OR_EQUAL+"",s.DataValidationOperator.LESS_THAN+"",s.DataValidationOperator.LESS_THAN_OR_EQUAL+"",s.DataValidationOperator.NOT_BETWEEN+"",s.DataValidationOperator.NOT_EQUAL+"";const ro={[s.DataValidationOperator.BETWEEN]:"dataValidation.date.ruleName.between",[s.DataValidationOperator.EQUAL]:"dataValidation.date.ruleName.equal",[s.DataValidationOperator.GREATER_THAN]:"dataValidation.date.ruleName.greaterThan",[s.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.date.ruleName.greaterThanOrEqual",[s.DataValidationOperator.LESS_THAN]:"dataValidation.date.ruleName.lessThan",[s.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.date.ruleName.lessThanOrEqual",[s.DataValidationOperator.NOT_BETWEEN]:"dataValidation.date.ruleName.notBetween",[s.DataValidationOperator.NOT_EQUAL]:"dataValidation.date.ruleName.notEqual"},oo={[s.DataValidationOperator.BETWEEN]:"dataValidation.date.errorMsg.between",[s.DataValidationOperator.EQUAL]:"dataValidation.date.errorMsg.equal",[s.DataValidationOperator.GREATER_THAN]:"dataValidation.date.errorMsg.greaterThan",[s.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.date.errorMsg.greaterThanOrEqual",[s.DataValidationOperator.LESS_THAN]:"dataValidation.date.errorMsg.lessThan",[s.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.date.errorMsg.lessThanOrEqual",[s.DataValidationOperator.NOT_BETWEEN]:"dataValidation.date.errorMsg.notBetween",[s.DataValidationOperator.NOT_EQUAL]:"dataValidation.date.errorMsg.notEqual"},St="{FORMULA1}",Rt="{FORMULA2}",Vt=n=>Re(n).isValid(),be=n=>{if(!(n==null||typeof n=="boolean"))return typeof n=="number"||!Number.isNaN(+n)?Re(to(+n)):Re(n)};class no extends R.BaseDataValidator{constructor(){super(...arguments);_(this,"id",s.DataValidationType.DATE);_(this,"title","dataValidation.date.title");_(this,"operators",[s.DataValidationOperator.BETWEEN,s.DataValidationOperator.EQUAL,s.DataValidationOperator.GREATER_THAN,s.DataValidationOperator.GREATER_THAN_OR_EQUAL,s.DataValidationOperator.LESS_THAN,s.DataValidationOperator.LESS_THAN_OR_EQUAL,s.DataValidationOperator.NOT_BETWEEN,s.DataValidationOperator.NOT_EQUAL]);_(this,"scopes",["sheet"]);_(this,"formulaInput",ye);_(this,"dropdown",Wt);_(this,"_formulaService",this.injector.get(exports.DataValidationFormulaService));_(this,"transformDate",be)}async parseFormula(e,t,a){var d,c;const r=await this._formulaService.getRuleFormulaResult(t,a,e.uid),{formula1:i,formula2:l}=e;return{formula1:be(s.isFormulaString(i)?ue((d=r==null?void 0:r[0])==null?void 0:d.result):i),formula2:be(s.isFormulaString(l)?ue((c=r==null?void 0:r[1])==null?void 0:c.result):l)}}async isValidType(e){const{value:t}=e;return typeof t=="string"?Re(t).isValid():typeof t=="number"}_validatorSingleFormula(e){return!s.Tools.isBlank(e)&&(s.isFormulaString(e)||!Number.isNaN(+e)||!!e&&Re(e).isValid())}validatorFormula(e){const t=e.operator;if(!t)return{success:!1};const a=this._validatorSingleFormula(e.formula1),r=this.localeService.t("dataValidation.validFail.date");if(Ee.includes(t)){const l=this._validatorSingleFormula(e.formula2);return{success:a&&l,formula1:a?void 0:r,formula2:l?void 0:r}}return{success:a,formula1:a?void 0:r}}transform(e,t,a){const{value:r}=e;return{...e,value:be(r)}}async validatorIsEqual(e,t,a){const{value:r}=e,{formula1:i}=t;return i?r.isSame(i):!0}async validatorIsNotEqual(e,t){const{value:a}=e,{formula1:r}=t;return r?!a.isSame(r):!0}async validatorIsBetween(e,t){const{value:a}=e,{formula1:r,formula2:i}=t;if(!r||!i)return!1;const l=r.isAfter(i)?i:r,d=l===r?i:r;return(a.isAfter(l)||a.isSame(l))&&(a.isBefore(d)||a.isSame(d))}async validatorIsNotBetween(e,t){const{value:a}=e,{formula1:r,formula2:i}=t;if(!r||!i)return!1;const l=r.isAfter(i)?i:r,d=l===r?i:r;return a.isBefore(l)||a.isAfter(d)}async validatorIsGreaterThan(e,t){const{value:a}=e,{formula1:r}=t;return r?a.isAfter(r):!0}async validatorIsGreaterThanOrEqual(e,t){const{value:a}=e,{formula1:r}=t;return r?a.isAfter(r)||a.isSame(r):!0}async validatorIsLessThan(e,t){const{value:a}=e,{formula1:r}=t;return r?a.isBefore(r)||a.isSame(r):!0}async validatorIsLessThanOrEqual(e,t){const{value:a}=e,{formula1:r}=t;return r?a.isBefore(r)||a.isSame(r):!0}validatorFormulaValue(e){if(!s.Tools.isDefine(e.operator))return;if(Ee.includes(e.operator)){if(s.Tools.isBlank(e.formula1)||s.Tools.isBlank(e.formula2))return"";if(!Vt(e.formula1)||!Vt(e.formula2))return""}else if(s.Tools.isBlank(e.formula1))return""}get operatorNames(){return this.operators.map(e=>this.localeService.t(ao[e]))}generateRuleName(e){var a,r;if(!e.operator)return this.titleStr;const t=this.localeService.t(ro[e.operator]).replace(St,(a=e.formula1)!=null?a:"").replace(Rt,(r=e.formula2)!=null?r:"");return`${this.titleStr} ${t}`}generateRuleErrorMessage(e){var a,r;return e.operator?`${this.localeService.t(oo[e.operator]).replace(St,(a=e.formula1)!=null?a:"").replace(Rt,(r=e.formula2)!=null?r:"")}`:this.titleStr}}var io=Object.defineProperty,so=Object.getOwnPropertyDescriptor,lo=(n,o,e,t)=>{for(var a=t>1?void 0:t?so(o,e):o,r=n.length-1,i;r>=0;r--)(i=n[r])&&(a=(t?i(o,e,a):i(a))||a);return t&&a&&io(o,e,a),a},Mt=(n,o)=>(e,t)=>o(e,t,n);const De=4,co=6,ne=14,ve=6,ce=2,uo="#565656",Dt=new Path2D("M3.32201 4.84556C3.14417 5.05148 2.85583 5.05148 2.67799 4.84556L0.134292 1.90016C-0.152586 1.56798 0.0505937 1 0.456301 1L5.5437 1C5.94941 1 6.15259 1.56798 5.86571 1.90016L3.32201 4.84556Z");function ho(n,o){const e=n.length;return{id:"d",body:{dataStream:`${n}${s.DEFAULT_EMPTY_DOCUMENT_VALUE}`,textRuns:[{ts:{fs:11,ff:void 0,it:s.BooleanNumber.FALSE,bl:s.BooleanNumber.FALSE,ul:{s:s.BooleanNumber.FALSE},st:{s:s.BooleanNumber.FALSE},ol:{s:s.BooleanNumber.FALSE},cl:void 0,...o,bg:void 0,bd:void 0},st:0,ed:e}]},documentStyle:{pageSize:{width:Number.POSITIVE_INFINITY,height:Number.POSITIVE_INFINITY}}}}function dt(n,o,e){const t=ho(n,e),a=new s.DocumentDataModel(t),r=new z.DocumentViewModel(a);return{documentSkeleton:z.DocumentSkeleton.create(r,o),docModel:a,docViewModel:r}}function Ot(n,o,e){const{documentSkeleton:t,docModel:a,docViewModel:r}=dt(n,o,e);return{documents:new z.Documents(`DOCUMENTS_${s.Tools.generateRandomId()}`,t,{pageMarginLeft:0,pageMarginTop:0}),documentSkeleton:t,docModel:a,docViewModel:r}}var it;let ct=(it=class{constructor(n,o){_(this,"_dropdownInfoMap",new Map);_(this,"zIndex");_(this,"onPointerEnter");_(this,"onPointerLeave");this._localeService=n,this._commandService=o}_ensureMap(n){let o=this._dropdownInfoMap.get(n);return o||(o=new Map,this._dropdownInfoMap.set(n,o)),o}_generateKey(n,o){return`${n}.${o}`}_drawDownIcon(n,o,e,t,a){const r=e-ne+4;let i=4;switch(a){case s.VerticalAlign.MIDDLE:i=(t-ne)/2+4;break;case s.VerticalAlign.BOTTOM:i=t-ne+4;break}n.save(),n.translateWithPrecision(o.startX+r,o.startY+i),n.fillStyle="#565656",n.fill(Dt),n.restore()}drawWith(n,o,e){var q,G;const{primaryWithCoord:t,row:a,col:r,style:i,data:l,subUnitId:d}=o,c=t.isMergedMainCell?t.mergeInfo:t,u=(q=l.dataValidation)==null?void 0:q.rule,m=(G=l.dataValidation)==null?void 0:G.validator,p=l.fontRenderExtension,{leftOffset:h=0,rightOffset:v=0,topOffset:g=0,downOffset:S=0}=p||{};if(!u||!m||!m.skipDefaultFontRender(u))return;const V={startX:c.startX+h,endX:c.endX-v,startY:c.startY+g,endY:c.endY-S},D=V.endX-V.startX,M=V.endY-V.startY,I=this._ensureMap(d),w=this._generateKey(a,r),T=m.getListWithColor(u),A=ae(l),$=`${A!=null?A:""}`,j=T.find(B=>B.label===$);let{tb:P,vt:N,ht:Y}=i||{};if(P=P!=null?P:s.WrapStrategy.WRAP,N=N!=null?N:s.VerticalAlign.TOP,Y=Y!=null?Y:s.HorizontalAlign.LEFT,u.renderMode===s.DataValidationRenderMode.ARROW){this._drawDownIcon(n,V,D,M,N),n.save(),n.translateWithPrecision(V.startX,V.startY),n.beginPath(),n.rect(0,0,D,M),n.clip();const B=D-ne,{documentSkeleton:K,documents:ee,docModel:X}=Ot($,this._localeService,i);P===s.WrapStrategy.WRAP&&X.updateDocumentDataPageSize(Math.max(B,1)),K.calculate(),K.getActualSize();const y=z.getDocsSkeletonPageSize(K),{height:L,width:Q}=y;let H=0;switch(N){case s.VerticalAlign.BOTTOM:H=M-ce-L;break;case s.VerticalAlign.MIDDLE:H=(M-ce-L)/2;break;default:H=ce;break}let E=0;switch(Y){case s.HorizontalAlign.CENTER:E=(B-Q)/2;break;case s.HorizontalAlign.RIGHT:E=B-Q;break}n.translate(0,H),n.save(),n.translateWithPrecision(De,0),n.beginPath(),n.rect(0,0,B,L),n.clip(),ee.render(n),n.translateWithPrecision(E,0),n.restore(),n.restore(),I.set(w,{left:V.endX+e.rowHeaderWidth-ne,top:V.startY+e.columnHeaderHeight,width:ne,height:M})}else{n.save(),n.translateWithPrecision(V.startX,V.startY),n.beginPath(),n.rect(0,0,D,M),n.clip();const B=D-ve*2-De-ne,{documentSkeleton:K,documents:ee,docModel:X}=Ot($,this._localeService,i);P===s.WrapStrategy.WRAP&&X.updateDocumentDataPageSize(Math.max(B,1)),K.calculate();const y=z.getDocsSkeletonPageSize(K),{height:L,width:Q}=y;let H=0;switch(N){case s.VerticalAlign.BOTTOM:H=M-ce-L;break;case s.VerticalAlign.MIDDLE:H=(M-ce-L)/2;break;default:H=ce;break}let E=0;switch(Y){case s.HorizontalAlign.CENTER:E=(B-Q)/2;break;case s.HorizontalAlign.RIGHT:E=B-Q;break}n.translate(ve,H);const k=Math.max(D-ve*2,1),W=L;z.Rect.drawWith(n,{width:k,height:W,fill:(j==null?void 0:j.color)||Se,radius:8}),n.save(),n.translateWithPrecision(De,0),n.beginPath(),n.rect(0,0,B,L),n.clip(),n.translateWithPrecision(E,0),ee.render(n),n.restore(),n.translate(B+De+4,(L-co)/2),n.fillStyle=uo,n.fill(Dt),n.restore(),I.set(w,{left:V.startX+ve+e.rowHeaderWidth,top:V.startY+H+e.columnHeaderHeight,width:k,height:W})}}calcCellAutoHeight(n){var S;const{primaryWithCoord:o,style:e,data:t}=n,a=o.isMergedMainCell?o.mergeInfo:o,r=t.fontRenderExtension,{leftOffset:i=0,rightOffset:l=0,topOffset:d=0,downOffset:c=0}=r||{},u=(S=t.dataValidation)==null?void 0:S.rule;if(!u||u.renderMode===s.DataValidationRenderMode.TEXT)return;const m={startX:a.startX+i,endX:a.endX-l,startY:a.startY+d,endY:a.endY-c},p=m.endX-m.startX,h=ae(t),v=`${h!=null?h:""}`;let{tb:g}=e||{};if(g=g!=null?g:s.WrapStrategy.WRAP,u.renderMode===s.DataValidationRenderMode.ARROW){const V=p-ne,{documentSkeleton:D,docModel:M}=dt(v,this._localeService,e);g===s.WrapStrategy.WRAP&&M.updateDocumentDataPageSize(Math.max(V,1)),D.calculate(),D.getActualSize();const I=z.getDocsSkeletonPageSize(D),{height:w}=I;return w}else{const V=p-ve*2-De-ne,{documentSkeleton:D,docModel:M}=dt(v,this._localeService,e);g===s.WrapStrategy.WRAP&&M.updateDocumentDataPageSize(Math.max(V,1)),D.calculate();const I=z.getDocsSkeletonPageSize(D),{height:w}=I;return w+ce*2}}isHit(n,o){const{data:e,subUnitId:t,row:a,col:r}=o,l=this._ensureMap(t).get(this._generateKey(a,r)),d=e.dataValidation;if(!d||!l||d.rule.renderMode===s.DataValidationRenderMode.TEXT)return!1;const{top:c,left:u,width:m,height:p}=l,{x:h,y:v}=n;return h>=u&&h<=u+m&&v>=c&&v<=c+p}onPointerDown(n,o){if(o.button===2)return;const{unitId:e,subUnitId:t,row:a,col:r}=n,i={unitId:e,subUnitId:t,row:a,column:r};this._commandService.executeCommand(ke.id,i)}},_(it,"padding",{l:ve+De,r:ne+ve,t:ce,b:ce}),it);ct=lo([Mt(0,O.Inject(s.LocaleService)),Mt(1,s.ICommandService)],ct);function tt(n){if(!n)return[];const o=new Set;return n.forEach(e=>{e.forEach(t=>{const a=ae(t);a!=null&&o.add(a.toString())})}),[...o]}const mo=["if","indirect","choose","offset"];function po(n,o){if(!s.isFormulaString(n)||se.isReferenceString(n.slice(1)))return!0;const t=o.sequenceNodesBuilder(n);return t&&t.some(a=>typeof a=="object"&&a.nodeType===se.sequenceNodeType.FUNCTION&&mo.indexOf(a.token.toLowerCase())>-1)}class Xt extends R.BaseDataValidator{constructor(){super(...arguments);_(this,"formulaService",this.injector.get(exports.DataValidationFormulaService));_(this,"_lexer",this.injector.get(se.LexerTreeBuilder));_(this,"id",s.DataValidationType.LIST);_(this,"title","dataValidation.list.title");_(this,"operators",[]);_(this,"scopes",["sheet"]);_(this,"formulaInput",Yt);_(this,"canvasRender",this.injector.createInstance(ct));_(this,"dropdown",Ht);_(this,"optionsInput",xe.componentKey)}skipDefaultFontRender(e){return e.renderMode!==s.DataValidationRenderMode.TEXT}validatorFormula(e){var r;const t=!s.Tools.isBlank(e.formula1),a=po((r=e.formula1)!=null?r:"",this._lexer);return{success:!!(t&&a),formula1:t?a?void 0:this.localeService.t("dataValidation.validFail.listInvalid"):this.localeService.t("dataValidation.validFail.list")}}parseCellValue(e){const t=e.toString();return Oe(t)}async parseFormula(e,t,a){var l;const{formula1:r=""}=e,i=await this.formulaService.getRuleFormulaResult(t,a,e.uid);return{formula1:s.isFormulaString(r)?tt((l=i==null?void 0:i[0])==null?void 0:l.result):Oe(r),formula2:void 0}}async isValidType(e,t,a){const{value:r}=e,{formula1:i=[]}=t;return this.parseCellValue(r).every(d=>i.includes(d))}generateRuleName(){return this.localeService.t("dataValidation.list.name")}generateRuleErrorMessage(){return this.localeService.t("dataValidation.list.error")}getList(e,t,a){var p,h,v;const{formula1:r=""}=e,i=this.injector.get(s.IUniverInstanceService),l=(p=t?i.getUniverSheetInstance(t):void 0)!=null?p:i.getCurrentUnitForType(s.UniverInstanceType.UNIVER_SHEET);if(!l)return[];const d=(h=a?l.getSheetBySheetId(a):void 0)!=null?h:l.getActiveSheet(),c=l.getUnitId(),u=d.getSheetId(),m=this.formulaService.getRuleFormulaResultSync(c,u,e.uid);return s.isFormulaString(r)?tt((v=m==null?void 0:m[0])==null?void 0:v.result):Oe(r)}async getListAsync(e,t,a){var p,h,v;const{formula1:r=""}=e,i=this.injector.get(s.IUniverInstanceService),l=(p=t?i.getUniverSheetInstance(t):void 0)!=null?p:i.getCurrentUnitForType(s.UniverInstanceType.UNIVER_SHEET);if(!l)return[];const d=(h=a?l.getSheetBySheetId(a):void 0)!=null?h:l.getActiveSheet(),c=l.getUnitId(),u=d.getSheetId(),m=await this.formulaService.getRuleFormulaResult(c,u,e.uid);return s.isFormulaString(r)?tt((v=m==null?void 0:m[0])==null?void 0:v.result):Oe(r)}getListWithColor(e,t,a){const r=this.getList(e,t,a),i=(e.formula2||"").split(",");return r.map((l,d)=>({label:l,color:i[d]}))}getListWithColorMap(e,t,a){const r=this.getListWithColor(e,t,a),i={};return r.forEach(l=>{l.color&&(i[l.label]=l.color)}),i}}function $e(n){let o=n;return typeof n=="string"?((n.startsWith("¥")||n.startsWith("$"))&&(o=n.slice(1)),+o):+n}class fo extends R.BaseDataValidator{constructor(){super(...arguments);_(this,"_formulaService",this.injector.get(exports.DataValidationFormulaService));_(this,"id",s.DataValidationType.DECIMAL);_(this,"title",this.localeService.t("dataValidation.decimal.title"));_(this,"operators",[s.DataValidationOperator.BETWEEN,s.DataValidationOperator.EQUAL,s.DataValidationOperator.GREATER_THAN,s.DataValidationOperator.GREATER_THAN_OR_EQUAL,s.DataValidationOperator.LESS_THAN,s.DataValidationOperator.LESS_THAN_OR_EQUAL,s.DataValidationOperator.NOT_BETWEEN,s.DataValidationOperator.NOT_EQUAL]);_(this,"scopes",["sheet"]);_(this,"formulaInput",ye);_(this,"dropDownInput")}_isFormulaOrNumber(e){return!s.Tools.isBlank(e)&&(s.isFormulaString(e)||!Number.isNaN(+e))}async isValidType(e,t,a){const{value:r}=e;return!Number.isNaN($e(r))}transform(e,t,a){const{value:r}=e;return{...e,value:$e(r)}}_parseNumber(e){return e==null?Number.NaN:+e}async parseFormula(e,t,a){var c,u,m,p,h,v,g,S;const r=await this._formulaService.getRuleFormulaResult(t,a,e.uid),{formula1:i,formula2:l}=e;return{formula1:this._parseNumber(s.isFormulaString(i)?(p=(m=(u=(c=r==null?void 0:r[0])==null?void 0:c.result)==null?void 0:u[0])==null?void 0:m[0])==null?void 0:p.v:i),formula2:this._parseNumber(s.isFormulaString(l)?(S=(g=(v=(h=r==null?void 0:r[1])==null?void 0:h.result)==null?void 0:v[0])==null?void 0:g[0])==null?void 0:S.v:l)}}validatorFormula(e){const t=e.operator;if(!t)return{success:!1};const a=s.Tools.isDefine(e.formula1)&&this._isFormulaOrNumber(e.formula1),r=s.Tools.isDefine(e.formula2)&&this._isFormulaOrNumber(e.formula2),i=Ee.includes(t),l=this.localeService.t("dataValidation.validFail.number");return i?{success:a&&r,formula1:a?void 0:l,formula2:r?void 0:l}:{success:a,formula1:a?"":l}}async validatorIsEqual(e,t,a){const{formula1:r}=t,{value:i}=e;return Number.isNaN(r)?!0:i===r}async validatorIsNotEqual(e,t,a){const{formula1:r}=t;return Number.isNaN(r)?!0:e.value!==r}async validatorIsBetween(e,t,a){const{formula1:r,formula2:i}=t;if(Number.isNaN(r)||Number.isNaN(i))return!0;const l=Math.min(r,i),d=Math.max(r,i);return e.value>=l&&e.value<=d}async validatorIsNotBetween(e,t,a){const{formula1:r,formula2:i}=t;if(Number.isNaN(r)||Number.isNaN(i))return!0;const l=Math.min(r,i),d=Math.max(r,i);return e.value<l||e.value>d}async validatorIsGreaterThan(e,t,a){const{formula1:r}=t;return Number.isNaN(r)?!0:e.value>r}async validatorIsGreaterThanOrEqual(e,t,a){const{formula1:r}=t;return Number.isNaN(r)?!0:e.value>=r}async validatorIsLessThan(e,t,a){const{formula1:r}=t;return Number.isNaN(r)?!0:e.value<r}async validatorIsLessThanOrEqual(e,t,a){const{formula1:r}=t;return Number.isNaN(r)?!0:e.value<=r}}const go="{FORMULA1}",vo="{FORMULA2}";class _o extends R.BaseDataValidator{constructor(){super(...arguments);_(this,"id",s.DataValidationType.TEXT_LENGTH);_(this,"title","dataValidation.textLength.title");_(this,"operators",[s.DataValidationOperator.BETWEEN,s.DataValidationOperator.EQUAL,s.DataValidationOperator.GREATER_THAN,s.DataValidationOperator.GREATER_THAN_OR_EQUAL,s.DataValidationOperator.LESS_THAN,s.DataValidationOperator.LESS_THAN_OR_EQUAL,s.DataValidationOperator.NOT_BETWEEN,s.DataValidationOperator.NOT_EQUAL]);_(this,"scopes",["sheet"]);_(this,"formulaInput",ye);_(this,"_formulaService",this.injector.get(exports.DataValidationFormulaService))}_isFormulaOrInt(e){return!s.Tools.isBlank(e)&&(s.isFormulaString(e)||!Number.isNaN(+e)&&Number.isInteger(+e))}validatorFormula(e){const t=e.operator;if(!t)return{success:!1};const a=s.Tools.isDefine(e.formula1)&&this._isFormulaOrInt(e.formula1),r=s.Tools.isDefine(e.formula2)&&this._isFormulaOrInt(e.formula2),i=Ee.includes(t),l=this.localeService.t("dataValidation.validFail.number");return i?{success:a&&r,formula1:a?void 0:l,formula2:r?void 0:l}:{success:a,formula1:l}}_parseNumber(e){return e==null?Number.NaN:+e}_isValidFormula(e){return!Number.isNaN(e)}async parseFormula(e,t,a){var d,c,u,m,p,h,v,g;const r=await this._formulaService.getRuleFormulaResult(t,a,e.uid),{formula1:i,formula2:l}=e;return{formula1:this._parseNumber(s.isFormulaString(i)?(m=(u=(c=(d=r==null?void 0:r[0])==null?void 0:d.result)==null?void 0:c[0])==null?void 0:u[0])==null?void 0:m.v:i),formula2:this._parseNumber(s.isFormulaString(l)?(g=(v=(h=(p=r==null?void 0:r[1])==null?void 0:p.result)==null?void 0:h[0])==null?void 0:v[0])==null?void 0:g.v:l)}}transform(e,t,a){return{...e,value:e.value.toString().length}}async isValidType(e,t,a){const{value:r}=e;return typeof r=="string"||typeof r=="number"}async validatorIsEqual(e,t,a){const{formula1:r}=t;return s.Tools.isDefine(r)?e.value===r:!1}async validatorIsNotEqual(e,t,a){const{formula1:r}=t;return s.Tools.isDefine(r)?e.value!==r:!1}async validatorIsBetween(e,t,a){const{formula1:r,formula2:i}=t,{value:l}=e;if(!this._isValidFormula(r)||!this._isValidFormula(i))return!1;const d=Math.max(r,i),c=Math.min(r,i);return l>=c&&l<=d}async validatorIsNotBetween(e,t,a){const{formula1:r,formula2:i}=t,{value:l}=e;if(!this._isValidFormula(r)||!this._isValidFormula(i))return!1;const d=Math.max(r,i),c=Math.min(r,i);return l<c||l>d}async validatorIsGreaterThan(e,t,a){const{formula1:r}=t,{value:i}=e;return this._isValidFormula(r)?i>r:!1}async validatorIsGreaterThanOrEqual(e,t,a){const{formula1:r}=t,{value:i}=e;return this._isValidFormula(r)?i>=r:!1}async validatorIsLessThan(e,t,a){const{formula1:r}=t,{value:i}=e;return this._isValidFormula(r)?i<r:!1}async validatorIsLessThanOrEqual(e,t,a){const{formula1:r}=t,{value:i}=e;return this._isValidFormula(r)?i<=r:!1}generateRuleErrorMessage(e){var a,r;return e.operator?`${this.localeService.t(R.TextLengthErrorTitleMap[e.operator]).replace(go,(a=e.formula1)!=null?a:"").replace(vo,(r=e.formula2)!=null?r:"")}`:this.titleStr}}class So extends R.BaseDataValidator{constructor(){super(...arguments);_(this,"_formulaService",this.injector.get(exports.DataValidationFormulaService));_(this,"id",s.DataValidationType.WHOLE);_(this,"title",this.localeService.t("dataValidation.whole.title"));_(this,"operators",[s.DataValidationOperator.BETWEEN,s.DataValidationOperator.EQUAL,s.DataValidationOperator.GREATER_THAN,s.DataValidationOperator.GREATER_THAN_OR_EQUAL,s.DataValidationOperator.LESS_THAN,s.DataValidationOperator.LESS_THAN_OR_EQUAL,s.DataValidationOperator.NOT_BETWEEN,s.DataValidationOperator.NOT_EQUAL]);_(this,"scopes",["sheet"]);_(this,"formulaInput",ye);_(this,"dropDownInput")}_isFormulaOrInt(e){return!s.Tools.isBlank(e)&&(s.isFormulaString(e)||!Number.isNaN(+e)&&Number.isInteger(+e))}async isValidType(e,t,a){const{value:r}=e,i=$e(r);return!Number.isNaN(i)&&Number.isInteger(i)}transform(e,t,a){const{value:r}=e;return{...e,value:$e(r)}}_parseNumber(e){return e==null?Number.NaN:+e}async parseFormula(e,t,a){var c,u,m,p,h,v,g,S;const r=await this._formulaService.getRuleFormulaResult(t,a,e.uid),{formula1:i,formula2:l}=e;return{formula1:this._parseNumber(s.isFormulaString(i)?(p=(m=(u=(c=r==null?void 0:r[0])==null?void 0:c.result)==null?void 0:u[0])==null?void 0:m[0])==null?void 0:p.v:i),formula2:this._parseNumber(s.isFormulaString(l)?(S=(g=(v=(h=r==null?void 0:r[1])==null?void 0:h.result)==null?void 0:v[0])==null?void 0:g[0])==null?void 0:S.v:l)}}validatorFormula(e){const t=e.operator;if(!t)return{success:!1};const a=s.Tools.isDefine(e.formula1)&&this._isFormulaOrInt(e.formula1),r=s.Tools.isDefine(e.formula2)&&this._isFormulaOrInt(e.formula2),i=Ee.includes(t),l=this.localeService.t("dataValidation.validFail.number");return i?{success:a&&r,formula1:a?void 0:l,formula2:r?void 0:l}:{success:a,formula1:l}}async validatorIsEqual(e,t,a){const{formula1:r}=t,{value:i}=e;return Number.isNaN(r)?!0:i===r}async validatorIsNotEqual(e,t,a){const{formula1:r}=t;return Number.isNaN(r)?!0:e.value!==r}async validatorIsBetween(e,t,a){const{formula1:r,formula2:i}=t;if(Number.isNaN(r)||Number.isNaN(i))return!0;const l=Math.min(r,i),d=Math.max(r,i);return e.value>=l&&e.value<=d}async validatorIsNotBetween(e,t,a){const{formula1:r,formula2:i}=t;if(Number.isNaN(r)||Number.isNaN(i))return!0;const l=Math.min(r,i),d=Math.max(r,i);return e.value<l||e.value>d}async validatorIsGreaterThan(e,t,a){const{formula1:r}=t;return Number.isNaN(r)?!0:e.value>r}async validatorIsGreaterThanOrEqual(e,t,a){const{formula1:r}=t;return Number.isNaN(r)?!0:e.value>=r}async validatorIsLessThan(e,t,a){const{formula1:r}=t;return Number.isNaN(r)?!0:e.value<r}async validatorIsLessThanOrEqual(e,t,a){const{formula1:r}=t;return Number.isNaN(r)?!0:e.value<=r}}const Qt=4,Ro=0,at=4,Kt=4,ut=6,qe=6,_e=14;function Vo(n,o){const e=z.FontCache.getTextSize(n,o),t=e.width+Qt*2,{ba:a,bd:r}=e,i=a+r;return{width:t,height:i+Ro*2,ba:a}}function It(n,o,e,t){const a=e-_e-ut,r=t-qe*2,i=n.map(u=>({layout:Vo(u,o),text:u}));let l;const d=[];i.forEach(u=>{const{layout:m}=u,{width:p,height:h}=m;!l||l.width+p+at>a?(l={width:p,height:h,items:[{...u,left:0}]},d.push(l)):(l.items.push({...u,left:l.width+at}),l.width=l.width+p+at)});let c=0;return d.forEach((u,m)=>{m===d.length-1?c+=u.height:c+=u.height+Kt}),{lines:d,totalHeight:c,contentWidth:a,contentHeight:r,cellAutoHeight:c+qe*2}}const Mo=8;class Do extends z.Shape{static drawWith(o,e){const{fontFamily:t,fontString:a,fontSize:r,info:i,fill:l,color:d}=e,{layout:c,text:u}=i;o.save(),z.Rect.drawWith(o,{width:c.width,height:c.height,radius:Mo,fill:l||Se}),o.translateWithPrecision(Qt,c.ba),o.font=a,o.fillStyle=d,o.fillText(u,0,0),o.restore()}}var Oo=Object.defineProperty,Io=Object.getOwnPropertyDescriptor,Fo=(n,o,e,t)=>{for(var a=t>1?void 0:t?Io(o,e):o,r=n.length-1,i;r>=0;r--)(i=n[r])&&(a=(t?i(o,e,a):i(a))||a);return t&&a&&Oo(o,e,a),a},Co=(n,o)=>(e,t)=>o(e,t,n);const Eo=new Path2D("M3.32201 4.84556C3.14417 5.05148 2.85583 5.05148 2.67799 4.84556L0.134292 1.90016C-0.152586 1.56798 0.0505937 1 0.456301 1L5.5437 1C5.94941 1 6.15259 1.56798 5.86571 1.90016L3.32201 4.84556Z");let ht=class{constructor(n){_(this,"zIndex");_(this,"_dropdownInfoMap",new Map);this._commandService=n}_ensureMap(n){let o=this._dropdownInfoMap.get(n);return o||(o=new Map,this._dropdownInfoMap.set(n,o)),o}_generateKey(n,o){return`${n}.${o}`}_drawDownIcon(n,o,e,t,a){const r=e-_e+4;let i=4;switch(a){case s.VerticalAlign.MIDDLE:i=(t-_e)/2+4;break;case s.VerticalAlign.BOTTOM:i=t-_e+4;break}n.save(),n.translateWithPrecision(o.startX+r,o.startY+i),n.fillStyle="#565656",n.fill(Eo),n.restore()}drawWith(n,o,e,t){var L,Q;const{primaryWithCoord:a,row:r,col:i,style:l,data:d,subUnitId:c}=o,u=a.isMergedMainCell?a.mergeInfo:a,m=d.fontRenderExtension,{leftOffset:p=0,rightOffset:h=0,topOffset:v=0,downOffset:g=0}=m||{},S=d.dataValidation,V=this._ensureMap(c),D=this._generateKey(r,i);if(!S)return;const M={startX:u.startX+p,endX:u.endX-h,startY:u.startY+v,endY:u.endY-g},I=M.endX-M.startX,w=M.endY-M.startY,{cl:T}=l||{},A=(L=typeof T=="object"?T==null?void 0:T.rgb:T)!=null?L:"#000",$=z.getFontStyleString(l!=null?l:void 0),{rule:j,validator:P}=S,N=P,{vt:Y,ht:q}=l||{},G=Y!=null?Y:s.VerticalAlign.MIDDLE,B=(Q=ae(d))!=null?Q:"",K=N.parseCellValue(B),ee=N.getListWithColorMap(j),X=It(K,$,I,w);this._drawDownIcon(n,M,I,w,G),n.save(),n.translateWithPrecision(M.startX,M.startY),n.beginPath(),n.rect(0,0,I-_e,w),n.clip(),n.translateWithPrecision(ut,qe);let y=0;switch(G){case s.VerticalAlign.MIDDLE:y=(X.contentHeight-X.totalHeight)/2;break;case s.VerticalAlign.BOTTOM:y=X.contentHeight-X.totalHeight;break}n.translateWithPrecision(0,y),X.lines.forEach((H,E)=>{n.save();const{width:k,height:W,items:Z}=H;let le=0;switch(q){case s.HorizontalAlign.RIGHT:le=X.contentWidth-k;break;case s.HorizontalAlign.CENTER:le=(X.contentWidth-k)/2;break}n.translate(le,E*(W+Kt)),Z.forEach(ze=>{n.save(),n.translateWithPrecision(ze.left,0),Do.drawWith(n,{...$,info:ze,color:A,fill:ee[ze.text]}),n.restore()}),n.restore()}),n.restore(),V.set(D,{left:M.startX,top:M.startY,width:X.contentWidth+ut+_e,height:X.contentHeight+qe*2})}calcCellAutoHeight(n){var I;const{primaryWithCoord:o,style:e,data:t}=n,a=t.fontRenderExtension,{leftOffset:r=0,rightOffset:i=0,topOffset:l=0,downOffset:d=0}=a||{},c=o.isMergedMainCell?o.mergeInfo:o,u={startX:c.startX+r,endX:c.endX-i,startY:c.startY+l,endY:c.endY-d},m=t.dataValidation;if(!m)return;const p=u.endX-u.startX,h=u.endY-u.startY,v=(I=ae(t))!=null?I:"",{validator:g}=m,V=g.parseCellValue(v),D=z.getFontStyleString(e!=null?e:void 0);return It(V,D,p,h).cellAutoHeight}isHit(n,o){const{primaryWithCoord:e}=o,t=e.isMergedMainCell?e.mergeInfo:e,{endX:a}=t,{x:r}=n;return r>=a-_e&&r<=a}onPointerDown(n,o){if(o.button===2)return;const{unitId:e,subUnitId:t,row:a,col:r}=n,i={unitId:e,subUnitId:t,row:a,column:r};this._commandService.executeCommand(ke.id,i)}};ht=Fo([Co(0,s.ICommandService)],ht);class wo extends Xt{constructor(){super(...arguments);_(this,"id",s.DataValidationType.LIST_MULTIPLE);_(this,"title","dataValidation.listMultiple.title");_(this,"canvasRender",this.injector.createInstance(ht))}skipDefaultFontRender(){return!0}}var yo=Object.defineProperty,To=Object.getOwnPropertyDescriptor,Lo=(n,o,e,t)=>{for(var a=t>1?void 0:t?To(o,e):o,r=n.length-1,i;r>=0;r--)(i=n[r])&&(a=(t?i(o,e,a):i(a))||a);return t&&a&&yo(o,e,a),a},me=(n,o)=>(e,t)=>o(e,t,n);exports.DataValidationController=class extends s.RxDisposable{constructor(o,e,t,a,r,i,l,d){super(),this._univerInstanceService=o,this._sheetDataValidationService=e,this._dataValidatorRegistryService=t,this._injector=a,this._componentManger=r,this._selectionManagerService=i,this._sheetInterceptorService=l,this._dataValidationModel=d,this._init()}_init(){this._registerValidators(),this._initInstanceChange(),this._componentManger.register(zt,Nt),this._initCommandInterceptor()}_registerValidators(){[fo,So,_o,no,Jr,Xt,wo,Yr].forEach(o=>{const e=this._injector.createInstance(o);this.disposeWithMe(this._dataValidatorRegistryService.register(e)),this.disposeWithMe({dispose:()=>{this._injector.delete(o)}})})}_initInstanceChange(){const o=new s.DisposableCollection;this._univerInstanceService.getCurrentTypeOfUnit$(s.UniverInstanceType.UNIVER_SHEET).subscribe(e=>{o.dispose(),e&&(this._sheetDataValidationService.switchCurrent(e.getUnitId(),e.getActiveSheet().getSheetId()),o.add(s.toDisposable(e.activeSheet$.subscribe(t=>{if(t){const a=e.getUnitId(),r=t.getSheetId();this._sheetDataValidationService.switchCurrent(a,r)}}))))}),this.disposeWithMe(o)}_initCommandInterceptor(){this._sheetInterceptorService.interceptCommand({getMutations:o=>{if(o.id===oe.ClearSelectionAllCommand.id){const e=this._univerInstanceService.getCurrentUnitForType(s.UniverInstanceType.UNIVER_SHEET),t=e.getUnitId(),r=e.getActiveSheet().getSheetId(),i=this._selectionManagerService.getSelectionRanges(),l=this._dataValidationModel.ensureManager(t,r),d=l.getRuleObjectMatrix().clone();i&&d.removeRange(i);const c=d.diff(l.getDataValidations()),{redoMutations:u,undoMutations:m}=Ie(t,r,c);return{undos:m,redos:u}}return{undos:[],redos:[]}}})}};exports.DataValidationController=Lo([s.OnLifecycle(s.LifecycleStages.Rendered,exports.DataValidationController),me(0,s.IUniverInstanceService),me(1,O.Inject(exports.SheetDataValidationService)),me(2,O.Inject(R.DataValidatorRegistryService)),me(3,O.Inject(O.Injector)),me(4,O.Inject(x.ComponentManager)),me(5,O.Inject(oe.SelectionManagerService)),me(6,O.Inject(oe.SheetInterceptorService)),me(7,O.Inject(R.DataValidationModel))],exports.DataValidationController);var Ao=Object.defineProperty,bo=Object.getOwnPropertyDescriptor,No=(n,o,e,t)=>{for(var a=t>1?void 0:t?bo(o,e):o,r=n.length-1,i;r>=0;r--)(i=n[r])&&(a=(t?i(o,e,a):i(a))||a);return t&&a&&Ao(o,e,a),a},Ne=(n,o)=>(e,t)=>o(e,t,n);const rt="SHEET_DATA_VALIDATION_ALERT";exports.DataValidationAlertController=class extends s.Disposable{constructor(o,e,t,a){super(),this._hoverManagerService=o,this._cellAlertManagerService=e,this._univerInstanceService=t,this._localeService=a,this._init()}_init(){this._initCellAlertPopup()}_initCellAlertPopup(){this.disposeWithMe(this._hoverManagerService.currentCell$.subscribe(o=>{var e,t;if(o){const i=this._univerInstanceService.getCurrentUnitForType(s.UniverInstanceType.UNIVER_SHEET).getActiveSheet().getCell(o.location.row,o.location.col);if(((e=i==null?void 0:i.dataValidation)==null?void 0:e.validStatus)===s.DataValidationStatus.INVALID){const l=this._cellAlertManagerService.currentAlert.get(rt),d=(t=l==null?void 0:l.alert)==null?void 0:t.location;if(d&&d.row===o.location.row&&d.col===o.location.col&&d.subUnitId===o.location.subUnitId&&d.unitId===o.location.unitId)return;const c=i.dataValidation.validator,u=i.dataValidation.rule;if(!c)return;this._cellAlertManagerService.showAlert({type:U.CellAlertType.ERROR,title:this._localeService.t("dataValidation.error.title"),message:c==null?void 0:c.getRuleFinalError(u),location:o.location,width:200,height:74,key:rt});return}}this._cellAlertManagerService.removeAlert(rt)}))}};exports.DataValidationAlertController=No([s.OnLifecycle(s.LifecycleStages.Rendered,exports.DataValidationAlertController),Ne(0,O.Inject(U.HoverManagerService)),Ne(1,O.Inject(U.CellAlertManagerService)),Ne(2,s.IUniverInstanceService),Ne(3,O.Inject(s.LocaleService))],exports.DataValidationAlertController);var Uo=Object.defineProperty,jo=Object.getOwnPropertyDescriptor,Po=(n,o,e,t)=>{for(var a=t>1?void 0:t?jo(o,e):o,r=n.length-1,i;r>=0;r--)(i=n[r])&&(a=(t?i(o,e,a):i(a))||a);return t&&a&&Uo(o,e,a),a},ie=(n,o)=>(e,t)=>o(e,t,n);exports.DataValidationRefRangeController=class extends s.Disposable{constructor(e,t,a,r,i,l,d,c,u,m){super();_(this,"_disposableMap",new Map);_(this,"registerRule",(e,t,a)=>{this.register(e,t,a),this.registerFormula(e,t,a)});this._dataValidationModel=e,this._univerInstanceService=t,this._injector=a,this._sheetSkeletonManagerService=r,this._refRangeService=i,this._dataValidationCustomFormulaService=l,this._dataValidationFormulaService=d,this._formulaRefRangeService=c,this._commandService=u,this._dataValidationCacheService=m,this._initRefRange()}_getIdWithUnitId(e,t,a){return`${e}_${t}_${a}`}registerFormula(e,t,a){var c;const r=a.uid,i=this._getIdWithUnitId(e,t,r),l=(c=this._disposableMap.get(i))!=null?c:new Set,d=(u,m)=>{const p=this._dataValidationModel.getRuleById(e,t,r);if(!p)return{redos:[],undos:[]};const h=p[u];if(!h||h===m)return{redos:[],undos:[]};const v={unitId:e,subUnitId:t,ruleId:a.uid,payload:{type:R.UpdateRuleType.SETTING,payload:{type:p.type,formula1:p.formula1,formula2:p.formula2,[u]:m}}},g={unitId:e,subUnitId:t,ruleId:a.uid,payload:{type:R.UpdateRuleType.SETTING,payload:{type:p.type,formula1:p.formula1,formula2:p.formula2}}},S=[{id:R.UpdateDataValidationMutation.id,params:v}],V=[{id:R.UpdateDataValidationMutation.id,params:g}];return{redos:S,undos:V}};if(a.type===s.DataValidationType.CUSTOM){const u=this._dataValidationCustomFormulaService.getRuleFormulaInfo(e,t,r);if(u){const m=this._formulaRefRangeService.registerFormula(u.formula,p=>d("formula1",p));l.add(()=>m.dispose())}}if(a.type!==s.DataValidationType.CUSTOM){const u=this._dataValidationFormulaService.getRuleFormulaInfo(e,t,r);if(u){const[m,p]=u;if(m){const h=this._formulaRefRangeService.registerFormula(m.text,v=>d("formula1",v));l.add(()=>h.dispose())}if(p){const h=this._formulaRefRangeService.registerFormula(p.text,v=>d("formula1",v));l.add(()=>h.dispose())}}}}register(e,t,a){var c;const r=u=>{const m=[...a.ranges],h=m.map(g=>oe.handleCommonDefaultRangeChangeWithEffectRefCommands(g,u)).filter(g=>!!g).flat();if(s.isRangesEqual(h,m))return{redos:[],undos:[]};if(h.length){const g={unitId:e,subUnitId:t,ruleId:a.uid,payload:{type:R.UpdateRuleType.RANGE,payload:h}},S=[{id:R.UpdateDataValidationMutation.id,params:g}],V=[{id:R.UpdateDataValidationMutation.id,params:{unitId:e,subUnitId:t,ruleId:a.uid,payload:{type:R.UpdateRuleType.RANGE,payload:m}}}];return{redos:S,undos:V}}else{const g={unitId:e,subUnitId:t,ruleId:a.uid},S=[{id:R.RemoveDataValidationMutation.id,params:g}],V=R.removeDataValidationUndoFactory(this._injector,g);return{redos:S,undos:V}}},i=[];a.ranges.forEach(u=>{const m=this._refRangeService.registerRefRange(u,r,e,t);i.push(()=>m.dispose())});const l=this._getIdWithUnitId(e,t,a.uid),d=(c=this._disposableMap.get(l))!=null?c:new Set;d.add(()=>i.forEach(u=>u())),this._disposableMap.set(l,d)}_initRefRange(){this.disposeWithMe(pe.merge(this._sheetSkeletonManagerService.currentSkeleton$.pipe(Xe.map(e=>e==null?void 0:e.sheetId),Xe.distinctUntilChanged())).pipe(Xe.switchMap(()=>new pe.Observable(e=>{const t=new s.DisposableCollection;return e.next(t),()=>{t.dispose()}}))).subscribe(e=>{e.add(s.toDisposable(this._dataValidationModel.ruleChange$.subscribe(t=>{const{unitId:a,subUnitId:r,rule:i}=t;switch(t.type){case"add":{const l=t.rule;this.registerRule(t.unitId,t.subUnitId,l);break}case"remove":{const l=this._disposableMap.get(this._getIdWithUnitId(a,r,i.uid));l&&l.forEach(d=>d());break}case"update":{const l=t.rule,d=this._disposableMap.get(this._getIdWithUnitId(a,r,l.uid));d&&d.forEach(c=>c()),this.registerRule(t.unitId,t.subUnitId,l);break}}})))})),this.disposeWithMe(s.toDisposable(()=>{this._disposableMap.forEach(e=>{e.forEach(t=>t())}),this._disposableMap.clear()}))}};exports.DataValidationRefRangeController=Po([s.OnLifecycle(s.LifecycleStages.Ready,exports.DataValidationRefRangeController),ie(0,O.Inject(R.DataValidationModel)),ie(1,O.Inject(s.IUniverInstanceService)),ie(2,O.Inject(O.Injector)),ie(3,O.Inject(U.SheetSkeletonManagerService)),ie(4,O.Inject(oe.RefRangeService)),ie(5,O.Inject(exports.DataValidationCustomFormulaService)),ie(6,O.Inject(exports.DataValidationFormulaService)),ie(7,O.Inject(He.FormulaRefRangeService)),ie(8,s.ICommandService),ie(9,O.Inject(Fe))],exports.DataValidationRefRangeController);const Zt={dataValidation:{title:"Data validation",validFail:{common:"Please input value or formula",number:"Please input number or formula",formula:"Please input formula",integer:"Please input integer or formula",date:"Please input date or formula",list:"Please input options",listInvalid:"The list source must be a delimited list or a reference to a single row or column",checkboxEqual:"Enter different values for ticked and unticked cell contents."},panel:{title:"Data validation management",addTitle:"Create new data validation",removeAll:"Remove All",add:"Create Data validation",range:"Ranges",type:"Type",options:"Advance options",operator:"Operator",removeRule:"Remove",done:"Done",formulaPlaceholder:"Please input value or formula",formulaAnd:"and",invalid:"Invalid",showWarning:"Show warning",rejectInput:"Reject input",messageInfo:"Helper message",showInfo:"Show help text for a selected cell"},operators:{between:"between",greaterThan:"greater than",greaterThanOrEqual:"greater than or equal",lessThan:"less than",lessThanOrEqual:"less than or equal",equal:"equal",notEqual:"not equal",notBetween:"not between"},ruleName:{between:"is between {FORMULA1} and {FORMULA2}",greaterThan:"is greater than {FORMULA1}",greaterThanOrEqual:"is greater than or equal to {FORMULA1}",lessThan:"is less than {FORMULA1}",lessThanOrEqual:"is less than or equal to {FORMULA1}",equal:"is equal to {FORMULA1}",notEqual:"is not equal to {FORMULA1}",notBetween:"is not between {FORMULA1} and {FORMULA2}"},errorMsg:{between:"Value must be between {FORMULA1} and {FORMULA2}",greaterThan:"Value must be greater than {FORMULA1}",greaterThanOrEqual:"Value must be greater than or equal to {FORMULA1}",lessThan:"Value must be less than {FORMULA1}",lessThanOrEqual:"Value must be less than or equal to {FORMULA1}",equal:"Value must be equal to {FORMULA1}",notEqual:"Value must be not equal to {FORMULA1}",notBetween:"Value must be not between {FORMULA1} and {FORMULA2}"},date:{title:"Date",operators:{between:"between",greaterThan:"after",greaterThanOrEqual:"on or after",lessThan:"before",lessThanOrEqual:"on or before",equal:"equal",notEqual:"not equal",notBetween:"not between"},ruleName:{between:"is between {FORMULA1} and {FORMULA2}",greaterThan:"is after {FORMULA1}",greaterThanOrEqual:"is on or after {FORMULA1}",lessThan:"is before {FORMULA1}",lessThanOrEqual:"is on or before {FORMULA1}",equal:"is {FORMULA1}",notEqual:"is not {FORMULA1}",notBetween:"is not between {FORMULA1}"},errorMsg:{between:"Value must be between {FORMULA1} and {FORMULA2}",greaterThan:"Value must be after {FORMULA1}",greaterThanOrEqual:"Value must be on or after {FORMULA1}",lessThan:"Value must be before {FORMULA1}",lessThanOrEqual:"Value must be on or before {FORMULA1}",equal:"Value must be {FORMULA1}",notEqual:"Value must be not {FORMULA1}",notBetween:"Value must be not between {FORMULA1}"}},list:{title:"Dropdown",name:"Value contains one from range",error:"Input must fall within specified range",emptyError:"Please enter a value",add:"Add",dropdown:"Select",options:"Options",customOptions:"Custom",refOptions:"From a range",formulaError:"The list source must be a delimited list of data, or a reference to a single row or column."},listMultiple:{title:"Dropdown-Multiple",dropdown:"Multiple select"},textLength:{title:"Text length",errorMsg:{between:"Text length must be between {FORMULA1} and {FORMULA2}",greaterThan:"Text length must be after {FORMULA1}",greaterThanOrEqual:"Text length must be on or after {FORMULA1}",lessThan:"Text length must be before {FORMULA1}",lessThanOrEqual:"Text length must be on or before {FORMULA1}",equal:"Text length must be {FORMULA1}",notEqual:"Text length must be not {FORMULA1}",notBetween:"Text length must be not between {FORMULA1}"}},decimal:{title:"Number"},whole:{title:"Integer"},checkbox:{title:"Checkbox",error:"This cell's contents violate its validation rule",tips:"Use custom values within cells",checked:"Selected value",unchecked:"Unselected value"},custom:{title:"Custom formula",error:"This cell's contents violate its validation rule",validFail:"Please input a valid formula"},alert:{title:"Error",ok:"OK"},error:{title:"Invalid:"},renderMode:{arrow:"Arrow",chip:"Chip",text:"Plain text",label:"Display style"}}},Jt={dataValidation:{title:"数据验证",validFail:{common:"请输入值或公式",number:"请输入合法的数字或公式",formula:"请输入合法的公式或公式",integer:"请输入合法的整数或公式",date:"请输入合法的日期或公式",list:"请输入至少一个合法选项",listInvalid:"列表源必须是分隔列表或对单行或列的引用。",checkboxEqual:"为勾选和未勾选的单元格内容输入不同的值。"},panel:{title:"管理数据验证",addTitle:"新建数据验证",removeAll:"全部删除",add:"新建规则",range:"应用范围",type:"条件类型",options:"高级设置",operator:"数据",removeRule:"删除规则",done:"确认",formulaPlaceholder:"请输入值或公式",formulaAnd:"与",invalid:"数据无效时",showWarning:"显示警告",rejectInput:"拒绝输入",messageInfo:"文字提示",showInfo:"显示所选单元格的提示文字"},operators:{between:"介于",greaterThan:"大于",greaterThanOrEqual:"大于或等于",lessThan:"小于",lessThanOrEqual:"小于或等于",equal:"等于",notEqual:"不等于",notBetween:"未介于"},ruleName:{between:"介于 {FORMULA1} 和 {FORMULA2} 之间",greaterThan:"大于 {FORMULA1}",greaterThanOrEqual:"大于或等于 {FORMULA1}",lessThan:"小于 {FORMULA1}",lessThanOrEqual:"小于或等于 {FORMULA1}",equal:"等于 {FORMULA1}",notEqual:"不等于 {FORMULA1}",notBetween:"在 {FORMULA1} 和 {FORMULA2} 范围之外"},errorMsg:{between:"值必须介于 {FORMULA1} 和 {FORMULA2} 之间",greaterThan:"值必须大于 {FORMULA1}",greaterThanOrEqual:"值必须大于或等于 {FORMULA1}",lessThan:"值必须小于 {FORMULA1}",lessThanOrEqual:"值必须小于或等于 {FORMULA1}",equal:"值必须等于 {FORMULA1}",notEqual:"值必须不等于 {FORMULA1}",notBetween:"值必须在 {FORMULA1} 和 {FORMULA2} 范围之外"},date:{title:"日期",operators:{between:"介于",greaterThan:"晚于",greaterThanOrEqual:"晚于或等于",lessThan:"早于",lessThanOrEqual:"早于或等于",equal:"等于",notEqual:"不等于",notBetween:"未介于"},ruleName:{between:"介于 {FORMULA1} 和 {FORMULA2} 之间",greaterThan:"晚于 {FORMULA1}",greaterThanOrEqual:"晚于或等于 {FORMULA1}",lessThan:"早于 {FORMULA1}",lessThanOrEqual:"早于或等于 {FORMULA1}",equal:"等于 {FORMULA1}",notEqual:"不等于 {FORMULA1}",notBetween:"在 {FORMULA1} 和 {FORMULA2} 范围之外"},errorMsg:{between:"日期必须介于 {FORMULA1} 和 {FORMULA2} 之间",greaterThan:"日期必须晚于 {FORMULA1}",greaterThanOrEqual:"日期必须晚于或等于 {FORMULA1}",lessThan:"日期必须早于 {FORMULA1}",lessThanOrEqual:"早于或等于 {FORMULA1}",equal:"日期必须等于 {FORMULA1}",notEqual:"日期必须不等于 {FORMULA1}",notBetween:"日期必须在 {FORMULA1} 和 {FORMULA2} 范围之外"}},list:{title:"下拉菜单",name:"值必须是列表中的值",error:"输入必须在指定的范围内",emptyError:"请输入一个值",add:"添加选项",dropdown:"单选",options:"选项来源",customOptions:"自定义",refOptions:"引用数据",formulaError:"列表源必须是划定分界后的数据列表,或是对单一行或一列的引用。"},listMultiple:{title:"下拉菜单-多选",dropdown:"多选"},textLength:{title:"文本长度",errorMsg:{between:"文本长度必须介于 {FORMULA1} 和 {FORMULA2} 之间",greaterThan:"文本长度必须大于 {FORMULA1}",greaterThanOrEqual:"文本长度必须大于或等于 {FORMULA1}",lessThan:"文本长度必须小于 {FORMULA1}",lessThanOrEqual:"文本长度必须小于或等于 {FORMULA1}",equal:"文本长度必须等于 {FORMULA1}",notEqual:"文本长度必须不等于 {FORMULA1}",notBetween:"文本长度必须在 {FORMULA1} 和 {FORMULA2} 范围之外"}},decimal:{title:"数字"},whole:{title:"整数"},checkbox:{title:"复选框",error:"此单元格的内容违反了验证规则",tips:"在单元格内使用自定义值",checked:"选中值",unchecked:"未选中值"},custom:{title:"自定义公式",error:"此单元格的内容违反了验证规则",validFail:"请输入合法的公式"},alert:{title:"提示",ok:"确定"},error:{title:"无效:"},renderMode:{arrow:"箭头",chip:"条状标签",text:"纯文本",label:"显示样式"}}},xo={dataValidation:{title:"Проверка данных",validFail:{common:"Пожалуйста, введите значение или формулу",number:"Пожалуйста, введите число или формулу",formula:"Пожалуйста, введите формулу",integer:"Пожалуйста, введите целое число или формулу",date:"Пожалуйста, введите дату или формулу",list:"Пожалуйста, введите параметры",listInvalid:"Источник списка должен быть разделенным списком или ссылкой на одну строку или столбец",checkboxEqual:"Для выбранных и не выбранных ячеек введите разные значения"},panel:{title:"Управление проверкой данных",addTitle:"Создать новую проверку данных",removeAll:"Удалить все",add:"Создать проверку данных",range:"Диапазоны",type:"Тип",options:"Дополнительные параметры",operator:"Оператор",removeRule:"Удалить",done:"Готово",formulaPlaceholder:"Пожалуйста, введите значение или формулу",formulaAnd:"и",invalid:"Недопустимо",showWarning:"Показать предупреждение",rejectInput:"Отклонить ввод",messageInfo:"Сообщение помощи",showInfo:"Показать текст помощи для выбранной ячейки"},operators:{between:"между",greaterThan:"больше чем",greaterThanOrEqual:"больше или равно",lessThan:"меньше чем",lessThanOrEqual:"меньше или равно",equal:"равно",notEqual:"не равно",notBetween:"не между"},ruleName:{between:"между {FORMULA1} и {FORMULA2}",greaterThan:"больше чем {FORMULA1}",greaterThanOrEqual:"больше или равно {FORMULA1}",lessThan:"меньше чем {FORMULA1}",lessThanOrEqual:"меньше или равно {FORMULA1}",equal:"равно {FORMULA1}",notEqual:"не равно {FORMULA1}",notBetween:"не между {FORMULA1} и {FORMULA2}"},errorMsg:{between:"Значение должно быть между {FORMULA1} и {FORMULA2}",greaterThan:"Значение должно быть больше {FORMULA1}",greaterThanOrEqual:"Значение должно быть больше или равно {FORMULA1}",lessThan:"Значение должно быть меньше {FORMULA1}",lessThanOrEqual:"Значение должно быть меньше или равно {FORMULA1}",equal:"Значение должно быть равно {FORMULA1}",notEqual:"Значение должно быть не равно {FORMULA1}",notBetween:"Значение должно быть не между {FORMULA1} и {FORMULA2}"},date:{title:"Дата",operators:{between:"между",greaterThan:"после",greaterThanOrEqual:"в или после",lessThan:"до",lessThanOrEqual:"в или до",equal:"равно",notEqual:"не равно",notBetween:"не между"},ruleName:{between:"между {FORMULA1} и {FORMULA2}",greaterThan:"после {FORMULA1}",greaterThanOrEqual:"в или после {FORMULA1}",lessThan:"до {FORMULA1}",lessThanOrEqual:"в или до {FORMULA1}",equal:"равно {FORMULA1}",notEqual:"не равно {FORMULA1}",notBetween:"не между {FORMULA1}"},errorMsg:{between:"Значение должно быть между {FORMULA1} и {FORMULA2}",greaterThan:"Значение должно быть после {FORMULA1}",greaterThanOrEqual:"Значение должно быть в или после {FORMULA1}",lessThan:"Значение должно быть до {FORMULA1}",lessThanOrEqual:"Значение должно быть в или до {FORMULA1}",equal:"Значение должно быть {FORMULA1}",notEqual:"Значение должно быть не {FORMULA1}",notBetween:"Значение должно быть не между {FORMULA1}"}},list:{title:"Выпадающий список",name:"Значение содержит одно из диапазона",error:"Ввод должен соответствовать указанному диапазону",emptyError:"Пожалуйста, введите значение",add:"Добавить",dropdown:"Выбрать",options:"Параметры",customOptions:"Пользовательские",refOptions:"Из диапазона",formulaError:"Источник списка должен быть разделенным списком данных или ссылкой на одну строку или столбец."},listMultiple:{title:"Выпадающий список - Множественный",dropdown:"Множественный выбор"},textLength:{title:"Длина текста",errorMsg:{between:"Длина текста должна быть между {FORMULA1} и {FORMULA2}",greaterThan:"Длина текста должна быть больше {FORMULA1}",greaterThanOrEqual:"Длина текста должна быть больше или равна {FORMULA1}",lessThan:"Длина текста должна быть меньше {FORMULA1}",lessThanOrEqual:"Длина текста должна быть меньше или равна {FORMULA1}",equal:"Длина текста должна быть равна {FORMULA1}",notEqual:"Длина текста должна быть не равна {FORMULA1}",notBetween:"Длина текста должна быть не между {FORMULA1}"}},decimal:{title:"Число"},whole:{title:"Целое число"},checkbox:{title:"Флажок",error:"Содержимое этой ячейки нарушает правило проверки",tips:"Используйте пользовательские значения в ячейках",checked:"Выбранное значение",unchecked:"Не выбранное значение"},custom:{title:"Пользовательская формула",error:"Содержимое этой ячейки нарушает правило проверки",validFail:"Пожалуйста, введите допустимую формулу"},alert:{title:"Ошибка",ok:"ОК"},error:{title:"Недопустимо:"},renderMode:{arrow:"Стрелка",chip:"Чип",text:"Простой текст",label:"Стиль отображения"}}};var Bo=Object.defineProperty,$o=Object.getOwnPropertyDescriptor,qo=(n,o,e,t)=>{for(var a=t>1?void 0:t?$o(o,e):o,r=n.length-1,i;r>=0;r--)(i=n[r])&&(a=(t?i(o,e,a):i(a))||a);return t&&a&&Bo(o,e,a),a},Ft=(n,o)=>(e,t)=>o(e,t,n);exports.DataValidationAutoFillController=class extends s.Disposable{constructor(o,e){super(),this._autoFillService=o,this._dataValidationModel=e,this._initAutoFill()}_initAutoFill(){const o=()=>({redos:[],undos:[]}),e=a=>{const{source:r,target:i,unitId:l,subUnitId:d}=a,c=this._dataValidationModel.ensureManager(l,d),u=c.getRuleObjectMatrix().clone(),m=U.virtualizeDiscreteRanges([r,i]),[p,h]=m.ranges,{mapFunc:v}=m,g={row:p.startRow,col:p.startColumn};U.getAutoFillRepeatRange(p,h).forEach(I=>{const w=I.repeatStartCell,T=I.relativeRange,A={startRow:g.row,startColumn:g.col,endColumn:g.col,endRow:g.row},$={startRow:w.row,startColumn:w.col,endColumn:w.col,endRow:w.row};s.Range.foreach(T,(j,P)=>{const N=s.Rectangle.getPositionRange({startRow:j,startColumn:P,endColumn:P,endRow:j},A),{row:Y,col:q}=v(N.startRow,N.startColumn),G=c.getRuleIdByLocation(Y,q);if(G){const B=s.Rectangle.getPositionRange({startRow:j,startColumn:P,endColumn:P,endRow:j},$),{row:K,col:ee}=v(B.startRow,B.startColumn);u.setValue(K,ee,G)}})});const V=u.diff(c.getDataValidations()),{redoMutations:D,undoMutations:M}=Ie(l,d,V);return{undos:M,redos:D}},t={id:Ge,onFillData:(a,r,i)=>i===U.APPLY_TYPE.COPY||i===U.APPLY_TYPE.ONLY_FORMAT||i===U.APPLY_TYPE.SERIES?e(a):o()};this.disposeWithMe(this._autoFillService.addHook(t))}};exports.DataValidationAutoFillController=qo([s.OnLifecycle(s.LifecycleStages.Ready,exports.DataValidationAutoFillController),Ft(0,U.IAutoFillService),Ft(1,O.Inject(R.DataValidationModel))],exports.DataValidationAutoFillController);var Ho=Object.defineProperty,Wo=Object.getOwnPropertyDescriptor,ko=(n,o,e,t)=>{for(var a=t>1?void 0:t?Wo(o,e):o,r=n.length-1,i;r>=0;r--)(i=n[r])&&(a=(t?i(o,e,a):i(a))||a);return t&&a&&Ho(o,e,a),a},ot=(n,o)=>(e,t)=>o(e,t,n);exports.DataValidationCopyPasteController=class extends s.Disposable{constructor(e,t,a){super();_(this,"_copyInfo");this._sheetClipboardService=e,this._dataValidationModel=t,this._injector=a,this._initCopyPaste()}_initCopyPaste(){this._sheetClipboardService.addClipboardHook({id:Ge,onBeforeCopy:(e,t,a)=>this._collect(e,t,a),onPasteCells:(e,t,a,r)=>{const{copyType:i=U.COPY_TYPE.COPY,pasteType:l}=r,{range:d}=e||{},{range:c,unitId:u,subUnitId:m}=t;return this._generateMutations(c,{copyType:i,pasteType:l,copyRange:d,unitId:u,subUnitId:m})}})}_collect(e,t,a){const r=new s.ObjectMatrix;this._copyInfo={unitId:e,subUnitId:t,matrix:r};const i=this._dataValidationModel.ensureManager(e,t),l={get:this._injector.get.bind(this._injector)},d=U.rangeToDiscreteRange(a,l,e,t);if(!d)return;const{rows:c,cols:u}=d;c.forEach((m,p)=>{u.forEach((h,v)=>{const g=i.getRuleIdByLocation(m,h);r.setValue(p,v,g!=null?g:"")})})}_generateMutations(e,t){if(!this._copyInfo)return{redos:[],undos:[]};if(t.copyType===U.COPY_TYPE.CUT)return this._copyInfo=null,{redos:[],undos:[]};if(!this._copyInfo||!this._copyInfo.matrix.getSizeOf()||!t.copyRange)return{redos:[],undos:[]};if([U.PREDEFINED_HOOK_NAME.SPECIAL_PASTE_COL_WIDTH,U.PREDEFINED_HOOK_NAME.SPECIAL_PASTE_VALUE,U.PREDEFINED_HOOK_NAME.SPECIAL_PASTE_FORMAT,He.SPECIAL_PASTE_FORMULA].includes(t.pasteType))return{redos:[],undos:[]};const{unitId:a,subUnitId:r}=this._copyInfo;if(t.unitId!==a||r!==t.subUnitId){const i=this._dataValidationModel.ensureManager(a,r),l=this._dataValidationModel.ensureManager(t.unitId,t.subUnitId),d=l.getRuleObjectMatrix().clone(),{ranges:[c,u],mapFunc:m}=U.virtualizeDiscreteRanges([t.copyRange,e]),p=U.getRepeatRange(c,u,!0),h=new Map;p.forEach(({startRange:S})=>{var V;(V=this._copyInfo)==null||V.matrix.forValue((D,M,I)=>{const w=s.Rectangle.getPositionRange({startRow:D,endRow:D,startColumn:M,endColumn:M},S),T=`${r}-${I}`,A=i.getRuleById(I);!l.getRuleById(T)&&A&&h.set(T,{...A,uid:T});const{row:$,col:j}=m(w.startRow,w.startColumn);d.setValue($,j,T)})});const{redoMutations:v,undoMutations:g}=Ie(t.unitId,t.subUnitId,d.diffWithAddition(l.getDataValidations(),h.values()));return{redos:v,undos:g}}else{const i=this._dataValidationModel.ensureManager(a,r),l=i.getRuleObjectMatrix().clone(),{ranges:[d,c],mapFunc:u}=U.virtualizeDiscreteRanges([t.copyRange,e]);U.getRepeatRange(d,c,!0).forEach(({startRange:v})=>{var g;(g=this._copyInfo)==null||g.matrix.forValue((S,V,D)=>{const M=s.Rectangle.getPositionRange({startRow:S,endRow:S,startColumn:V,endColumn:V},v),{row:I,col:w}=u(M.startRow,M.startColumn);l.setValue(I,w,D)})});const{redoMutations:p,undoMutations:h}=Ie(a,r,l.diff(i.getDataValidations()));return{redos:p,undos:h}}}};exports.DataValidationCopyPasteController=ko([s.OnLifecycle(s.LifecycleStages.Ready,exports.DataValidationCopyPasteController),ot(0,U.ISheetClipboardService),ot(1,O.Inject(R.DataValidationModel)),ot(2,O.Inject(O.Injector))],exports.DataValidationCopyPasteController);class gt{constructor(o){_(this,"value");this.value=o}addRule(o){const e=o.uid;o.ranges.forEach(t=>{s.Range.foreach(t,(a,r)=>{this.value.setValue(a,r,e)})})}removeRange(o){o.forEach(e=>{s.Range.foreach(e,(t,a)=>{this.value.realDeleteValue(t,a)})})}removeRule(o){o.ranges.forEach(e=>{s.Range.foreach(e,(t,a)=>{this.value.setValue(t,a,"")})})}updateRange(o,e,t){const a=`${o}$`;e.forEach(r=>{s.Range.foreach(r,(i,l)=>{this.value.getValue(i,l)===o&&this.value.setValue(i,l,a)})}),t.forEach(r=>{s.Range.foreach(r,(i,l)=>{this.value.setValue(i,l,o)})}),e.forEach(r=>{s.Range.foreach(r,(i,l)=>{this.value.getValue(i,l)===a&&this.value.realDeleteValue(i,l)})})}diff(o){const e=[];let t=0;return o.forEach((a,r)=>{const i=s.queryObjectMatrix(this.value,d=>d===a.uid),l=a.ranges;(i.length!==l.length||i.some((d,c)=>!s.Rectangle.equals(d,l[c])))&&e.push({type:"update",ruleId:a.uid,oldRanges:l,newRanges:i}),i.length===0&&(e.push({type:"delete",rule:a,index:r-t}),t++)}),e}diffWithAddition(o,e){const t=[];let a=0;return o.forEach((r,i)=>{const l=s.queryObjectMatrix(this.value,c=>c===r.uid),d=r.ranges;(l.length!==d.length||l.some((c,u)=>!s.Rectangle.equals(c,d[u])))&&t.push({type:"update",ruleId:r.uid,oldRanges:d,newRanges:l}),l.length===0&&(t.push({type:"delete",rule:r,index:i-a}),a++)}),Array.from(e).forEach(r=>{const i=s.queryObjectMatrix(this.value,l=>l===r.uid);t.push({type:"add",rule:{...r,ranges:i}})}),t}clone(){return new gt(new s.ObjectMatrix(this.value.clone()))}getValue(o,e){return this.value.getValue(o,e)}setValue(o,e,t){return this.value.setValue(o,e,t)}}class Yo extends R.DataValidationManager{constructor(e,t,a,r){super(e,t,a);_(this,"_ruleMatrix");_(this,"_dataValidatorRegistryService");_(this,"_dataValidationCacheService");_(this,"_dataValidationFormulaService");_(this,"_dataValidationCustomFormulaService");_(this,"_cache");_(this,"_dataValidationRefRangeController");this._injector=r,this._dataValidatorRegistryService=this._injector.get(R.DataValidatorRegistryService),this._dataValidationCacheService=this._injector.get(Fe),this._dataValidationFormulaService=this._injector.get(exports.DataValidationFormulaService),this._dataValidationCustomFormulaService=this._injector.get(exports.DataValidationCustomFormulaService),this._dataValidationRefRangeController=this._injector.get(exports.DataValidationRefRangeController),this._cache=this._dataValidationCacheService.ensureCache(e,t);const i=new s.ObjectMatrix;a==null||a.forEach(l=>{const d=l.uid;l.ranges.forEach(c=>{s.Range.foreach(c,(u,m)=>{i.setValue(u,m,d)})})}),a==null||a.forEach(l=>{this._dataValidationRefRangeController.register(e,t,l)}),this._ruleMatrix=new gt(i)}_addRuleSideEffect(e){var r;const{unitId:t,subUnitId:a}=this;(e.type===s.DataValidationType.LIST||e.type===s.DataValidationType.LIST_MULTIPLE)&&se.isReferenceString((r=e.formula1)!=null?r:"")&&(e.formula1=`=${e.formula1}`),this._ruleMatrix.addRule(e),this._dataValidationCacheService.addRule(t,a,e),this._dataValidationFormulaService.addRule(t,a,e.uid,e.formula1,e.formula2),this._dataValidationCustomFormulaService.addRule(t,a,e)}addRule(e,t){(Array.isArray(e)?e:[e]).forEach(r=>{this._addRuleSideEffect(r)}),super.addRule(e,t)}updateRule(e,t){const a=this.getRuleById(e);if(!a)throw new Error(`Rule not found! id: ${e}`);return t.type===R.UpdateRuleType.RANGE?(this._ruleMatrix.updateRange(e,a.ranges,t.payload),this._dataValidationCacheService.updateRuleRanges(this.unitId,this.subUnitId,e,t.payload,a.ranges),this._dataValidationCustomFormulaService.updateRuleRanges(this.unitId,this.subUnitId,e,a.ranges,t.payload)):t.type===R.UpdateRuleType.SETTING&&(this._dataValidationCacheService.markRangeDirty(this.unitId,this.subUnitId,a.ranges),this._dataValidationFormulaService.updateRuleFormulaText(this.unitId,this.subUnitId,e,t.payload.formula1,t.payload.formula2),this._dataValidationCustomFormulaService.updateRuleFormula(this.unitId,this.subUnitId,e,a.ranges,t.payload.formula1)),super.updateRule(e,t)}removeRule(e){const t=this.getRuleById(e);t&&(this._ruleMatrix.removeRule(t),this._dataValidationCacheService.removeRule(this.unitId,this.subUnitId,t)),super.removeRule(e)}getRuleIdByLocation(e,t){return this._ruleMatrix.getValue(e,t)}getRuleByLocation(e,t){const a=this.getRuleIdByLocation(e,t);if(a)return this.getRuleById(a)}validator(e,t,a,r){const{col:i,row:l,unitId:d,subUnitId:c}=a,u=t.uid,m=this._dataValidatorRegistryService.getValidatorItem(t.type);if(m){const p=this._cache.getValue(l,i);return!p||p.value!==e?(this._cache.setValue(l,i,{value:e,status:s.DataValidationStatus.VALIDATING,ruleId:u}),m.validator({value:e,unitId:d,subUnitId:c,row:l,column:i},t).then(h=>{const v=h?s.DataValidationStatus.VALID:s.DataValidationStatus.INVALID;this._cache.setValue(l,i,{value:e,status:v,ruleId:u}),r(v)}),s.DataValidationStatus.VALIDATING):p.status}else return s.DataValidationStatus.VALID}getRuleErrorMsg(e){const t=this.getRuleById(e);if(!t)return"";const a=this._dataValidatorRegistryService.getValidatorItem(t.type);return t.error?t.error:a?a.getRuleFinalError(t):""}getRuleObjectMatrix(){return this._ruleMatrix}}var Go=Object.defineProperty,zo=Object.getOwnPropertyDescriptor,Xo=(n,o,e,t)=>{for(var a=t>1?void 0:t?zo(o,e):o,r=n.length-1,i;r>=0;r--)(i=n[r])&&(a=(t?i(o,e,a):i(a))||a);return t&&a&&Go(o,e,a),a},Ue=(n,o)=>(e,t)=>o(e,t,n);let Pe=class extends s.Disposable{constructor(n,o,e,t){super(),this._resourceManagerService=n,this._univerInstanceService=o,this._dataValidationModel=e,this._injector=t,this._initDataValidationDataSource()}_createSheetDataValidationManager(n,o){return new Yo(n,o,[],this._injector)}_initDataValidationDataSource(){this._dataValidationModel.setManagerCreator(this._createSheetDataValidationManager.bind(this))}};Pe=Xo([s.OnLifecycle(s.LifecycleStages.Starting,Pe),Ue(0,s.IResourceManagerService),Ue(1,s.IUniverInstanceService),Ue(2,O.Inject(R.DataValidationModel)),Ue(3,O.Inject(O.Injector))],Pe);var Qo=Object.defineProperty,Ko=Object.getOwnPropertyDescriptor,Zo=(n,o,e,t)=>{for(var a=t>1?void 0:t?Ko(o,e):o,r=n.length-1,i;r>=0;r--)(i=n[r])&&(a=(t?i(o,e,a):i(a))||a);return t&&a&&Qo(o,e,a),a},nt=(n,o)=>(e,t)=>o(e,t,n),je;exports.UniverSheetsDataValidationPlugin=(je=class extends s.Plugin{constructor(o,e,t,a){super(),this._injector=e,this._commandService=t,this._localeService=a}onStarting(o){[[he],[exports.SheetDataValidationService],[Fe],[exports.DataValidationFormulaService],[exports.DataValidationCustomFormulaService],[Ve],[Pe],[exports.DataValidationController],[exports.DataValidationRenderController],[exports.DataValidationAlertController],[exports.DataValidationRefRangeController],[exports.DataValidationAutoFillController],[exports.DataValidationCopyPasteController],[exports.DataValidationRejectInputController]].forEach(e=>{o.add(e)}),[Ye,pt,mt,ke,Lt,Tt,we,ga].forEach(e=>{this._commandService.registerCommand(e)}),this._localeService.load({zhCN:Jt,enUS:Zt})}},_(je,"pluginName",Ge),_(je,"type",s.UniverInstanceType.UNIVER_SHEET),je);exports.UniverSheetsDataValidationPlugin=Zo([nt(1,O.Inject(O.Injector)),nt(2,s.ICommandService),nt(3,O.Inject(s.LocaleService))],exports.UniverSheetsDataValidationPlugin);Object.defineProperty(exports,"ICommandService",{enumerable:!0,get:()=>s.ICommandService});Object.defineProperty(exports,"LocaleService",{enumerable:!0,get:()=>s.LocaleService});Object.defineProperty(exports,"Plugin",{enumerable:!0,get:()=>s.Plugin});exports.AddSheetDataValidationAndOpenCommand=pt;exports.AddSheetDataValidationCommand=Ye;exports.DATA_VALIDATION_PLUGIN_NAME=Ge;exports.DataValidationCacheService=Fe;exports.HideDataValidationDropdown=Lt;exports.ShowDataValidationDropdown=ke;exports.UpdateSheetDataValidationRangeCommand=mt;exports.enUS=Zt;exports.ruRU=xo;exports.zhCN=Jt;
9
+ */var ia=E,sa=Symbol.for("react.element"),la=Symbol.for("react.fragment"),da=Object.prototype.hasOwnProperty,ca=ia.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,ua={key:!0,ref:!0,__self:!0,__source:!0};function Nt(n,o,e){var t,a={},r=null,i=null;e!==void 0&&(r=""+e),o.key!==void 0&&(r=""+o.key),o.ref!==void 0&&(i=o.ref);for(t in o)da.call(o,t)&&!ua.hasOwnProperty(t)&&(a[t]=o[t]);if(n&&n.defaultProps)for(t in o=n.defaultProps,o)a[t]===void 0&&(a[t]=o[t]);return{$$typeof:sa,type:n,key:r,ref:i,props:a,_owner:ca.current}}Ge.Fragment=la;Ge.jsx=Nt;Ge.jsxs=Nt;bt.exports=Ge;var g=bt.exports;function ma(){const n=N.useDependency(De),o=W.useObservable(n.activeDropdown$,n.activeDropdown),e=N.useDependency(W.ComponentManager);if(!o)return null;const{location:t,componentKey:a}=o,r=e.get(a),i=`${t.unitId}-${t.subUnitId}-${t.row}-${t.col}`;if(!r)return null;const l=()=>{n.hideDropdown()};return g.jsx(r,{location:t,hideFn:l},i)}const Lt="sheet.ui.dropdown";var ha=Object.defineProperty,pa=Object.getOwnPropertyDescriptor,fa=(n,o,e,t)=>{for(var a=t>1?void 0:t?pa(o,e):o,r=n.length-1,i;r>=0;r--)(i=n[r])&&(a=(t?i(o,e,a):i(a))||a);return t&&a&&ha(o,e,a),a},ve=(n,o)=>(e,t)=>o(e,t,n);let De=class extends s.Disposable{constructor(o,e,t,a,r,i,l){super();_(this,"_activeDropdown");_(this,"_activeDropdown$",new me.Subject);_(this,"_currentPopup",null);_(this,"activeDropdown$",this._activeDropdown$.asObservable());_(this,"_zenVisible",!1);this._canvasPopupManagerService=o,this._univerInstanceService=e,this._sheetSkeletonManagerService=t,this._dataValidatorRegistryService=a,this._zenZoneService=r,this._renderManagerService=i,this._dataValidationModel=l,this._init()}get activeDropdown(){return this._activeDropdown}_init(){this.disposeWithMe(this._zenZoneService.visible$.subscribe(o=>{this._zenVisible=o,o&&this.hideDropdown()}))}showDropdown(o){const{location:e}=o,{row:t,col:a}=e;if(this._currentPopup&&this._currentPopup.dispose(),this._zenVisible)return;this._activeDropdown=o,this._activeDropdown$.next(this._activeDropdown);const r=this._renderManagerService.getRenderById(s.DOCS_FORMULA_BAR_EDITOR_UNIT_ID_KEY),i=this._canvasPopupManagerService.attachPopupToCell(t,a,{componentKey:Lt,onClickOutside:()=>{this.hideDropdown()},offset:[0,3],excludeOutside:[r==null?void 0:r.engine.getCanvasElement()].filter(Boolean)});if(!i)throw new Error("[DataValidationDropdownManagerService]: cannot show dropdown!");const l=new s.DisposableCollection;l.add(i),l.add({dispose:()=>{var d,c;(c=(d=this._activeDropdown)==null?void 0:d.onHide)==null||c.call(d)}}),this._currentPopup=l}hideDropdown(){this._activeDropdown&&(this._currentPopup&&this._currentPopup.dispose(),this._currentPopup=null,this._activeDropdown=null,this._activeDropdown$.next(null))}showDataValidationDropdown(o,e,t,a,r){const i=this._univerInstanceService.getUniverSheetInstance(o);if(!i)return;const l=i.getSheetBySheetId(e);if(!l)return;const c=this._dataValidationModel.ensureManager(o,e).getRuleByLocation(t,a);if(!this._sheetSkeletonManagerService.getOrCreateSkeleton({unitId:o,sheetId:e})||!c)return;const m=this._dataValidatorRegistryService.getValidatorItem(c.type);if(!m||!m.dropdown){this.hideDropdown();return}this.showDropdown({location:{workbook:i,worksheet:l,row:t,col:a,unitId:o,subUnitId:e},componentKey:m.dropdown,onHide:r})}};De=fa([ve(0,I.Inject(x.SheetCanvasPopManagerService)),ve(1,s.IUniverInstanceService),ve(2,I.Inject(x.SheetSkeletonManagerService)),ve(3,I.Inject(D.DataValidatorRegistryService)),ve(4,W.IZenZoneService),ve(5,Z.IRenderManagerService),ve(6,I.Inject(D.DataValidationModel))],De);var ga=Object.defineProperty,va=Object.getOwnPropertyDescriptor,_a=(n,o,e,t)=>{for(var a=t>1?void 0:t?va(o,e):o,r=n.length-1,i;r>=0;r--)(i=n[r])&&(a=(t?i(o,e,a):i(a))||a);return t&&a&&ga(o,e,a),a},Dt=(n,o)=>(e,t)=>o(e,t,n);let pe=class extends s.Disposable{constructor(o,e){super();_(this,"_open$",new me.BehaviorSubject(!1));_(this,"open$",this._open$.pipe(me.distinctUntilChanged()));_(this,"_activeRule");_(this,"_activeRule$",new me.BehaviorSubject(void 0));_(this,"activeRule$",this._activeRule$.asObservable());_(this,"_closeDisposable",null);this._univerInstanceService=o,this._sidebarService=e,this.disposeWithMe(this._univerInstanceService.getCurrentTypeOfUnit$(s.UniverInstanceType.UNIVER_SHEET).pipe(me.filter(t=>!t)).subscribe(()=>{this.close()}))}get activeRule(){return this._activeRule}get isOpen(){return this._open$.getValue()}dispose(){var o;super.dispose(),this._open$.next(!1),this._open$.complete(),(o=this._closeDisposable)==null||o.dispose()}open(){this._open$.next(!0)}close(){var o;this._open$.next(!1),(o=this._closeDisposable)==null||o.dispose()}setCloseDisposable(o){this._closeDisposable=s.toDisposable(()=>{o.dispose(),this._closeDisposable=null})}setActiveRule(o){this._activeRule=o,this._activeRule$.next(o)}};pe=_a([Dt(0,s.IUniverInstanceService),Dt(1,W.ISidebarService)],pe);const At="DataValidationPanel",Fe={id:"data-validation.operation.open-validation-panel",type:s.CommandType.OPERATION,handler(n,o){if(!o)return!1;const{ruleId:e,isAdd:t}=o,a=n.get(pe),r=n.get(D.DataValidationModel),i=n.get(s.IUniverInstanceService),l=n.get(W.ISidebarService),d=G.getSheetCommandTarget(i);if(!d)return!1;const{unitId:c,subUnitId:u}=d,m=e?r.getRuleById(c,u,e):void 0;a.open(),a.setActiveRule(m&&{unitId:c,subUnitId:u,rule:m});const p=l.open({header:{title:t?"dataValidation.panel.addTitle":"dataValidation.panel.title"},children:{label:At},width:312,onClose:()=>a.close()});return a.setCloseDisposable(p),!0}},Pt={id:"data-validation.operation.close-validation-panel",type:s.CommandType.OPERATION,handler(n){return n.get(pe).close(),!0}},Sa={id:"data-validation.operation.toggle-validation-panel",type:s.CommandType.OPERATION,handler(n){const o=n.get(s.ICommandService),e=n.get(pe);return e.open(),e.isOpen?o.executeCommand(Pt.id):o.executeCommand(Fe.id),!0}},Xe={type:s.CommandType.OPERATION,id:"sheet.operation.show-data-validation-dropdown",handler(n,o){if(!o)return!1;const e=n.get(De),{unitId:t,subUnitId:a,row:r,column:i}=o,l=e.activeDropdown,d=l==null?void 0:l.location;return d&&d.unitId===t&&d.subUnitId===a&&d.row===r&&d.col===i||e.showDataValidationDropdown(t,a,r,i),!0}},jt={type:s.CommandType.OPERATION,id:"sheet.operation.hide-data-validation-dropdown",handler(n,o){return o?(n.get(De).hideDropdown(),!0):!1}};function ye(n,o,e){const t=[],a=[];return e.forEach(r=>{switch(r.type){case"delete":t.push({id:D.RemoveDataValidationMutation.id,params:{unitId:n,subUnitId:o,ruleId:r.rule.uid}}),a.unshift({id:D.AddDataValidationMutation.id,params:{unitId:n,subUnitId:o,rule:r.rule,index:r.index}});break;case"update":{t.push({id:D.UpdateDataValidationMutation.id,params:{unitId:n,subUnitId:o,ruleId:r.ruleId,payload:{type:D.UpdateRuleType.RANGE,payload:r.newRanges}}}),a.unshift({id:D.UpdateDataValidationMutation.id,params:{unitId:n,subUnitId:o,ruleId:r.ruleId,payload:{type:D.UpdateRuleType.RANGE,payload:r.oldRanges}}});break}case"add":{t.push({id:D.AddDataValidationMutation.id,params:{unitId:n,subUnitId:o,rule:r.rule}}),a.unshift({id:D.RemoveDataValidationMutation.id,params:{unitId:n,subUnitId:o,ruleId:r.rule.uid}});break}}}),{redoMutations:t,undoMutations:a}}const ze={type:s.CommandType.COMMAND,id:"sheet.command.updateDataValidationRuleRange",async handler(n,o){if(!o)return!1;const{unitId:e,subUnitId:t,ranges:a,ruleId:r}=o,i=n.get(D.DataValidationModel),l=n.get(s.ICommandService),d=n.get(s.IUndoRedoService),c=i.ensureManager(e,t),u=c.getRuleById(r);if(!u)return!1;const m=u.ranges,p=c.getRuleObjectMatrix().clone();p.updateRange(r,m,a);const h=p.diff(c.getDataValidations()),{redoMutations:f,undoMutations:v}=ye(e,t,h);return d.pushUndoRedo({undoMutations:v,redoMutations:f,unitID:e}),await s.sequenceExecuteAsync(f,l),!0}},Qe={type:s.CommandType.COMMAND,id:"sheet.command.addDataValidation",async handler(n,o){if(!o)return!1;const{unitId:e,subUnitId:t,rule:a}=o,r=n.get(D.DataValidationModel),i=n.get(s.ICommandService),l=n.get(s.IUndoRedoService),d=r.ensureManager(e,t),c=d.getRuleObjectMatrix().clone();c.addRule(a);const u=c.diff(d.getDataValidations()),m={unitId:e,subUnitId:t,rule:a},{redoMutations:p,undoMutations:h}=ye(e,t,u);return p.push({id:D.AddDataValidationMutation.id,params:m}),h.unshift({id:D.RemoveDataValidationMutation.id,params:{unitId:e,subUnitId:t,ruleId:a.uid}}),l.pushUndoRedo({unitID:e,redoMutations:p,undoMutations:h}),await s.sequenceExecuteAsync(p,i),!0}},St={type:s.CommandType.COMMAND,id:"data-validation.command.addRuleAndOpen",async handler(n){const o=n.get(s.IUniverInstanceService),e=G.getSheetCommandTarget(o);if(!e)return!1;const{workbook:t,worksheet:a}=e,r=D.createDefaultNewRule(n),i=n.get(s.ICommandService),l=t.getUnitId(),d=a.getSheetId(),c={rule:r,unitId:l,subUnitId:d};return await i.executeCommand(Qe.id,c)?(i.executeCommand(Fe.id,{ruleId:r.uid,isAdd:!0}),!0):!1}};var ne=function(){return ne=Object.assign||function(n){for(var o,e=1,t=arguments.length;e<t;e++){o=arguments[e];for(var a in o)Object.prototype.hasOwnProperty.call(o,a)&&(n[a]=o[a])}return n},ne.apply(this,arguments)},Va=function(n,o){var e={};for(var t in n)Object.prototype.hasOwnProperty.call(n,t)&&o.indexOf(t)<0&&(e[t]=n[t]);if(n!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,t=Object.getOwnPropertySymbols(n);a<t.length;a++)o.indexOf(t[a])<0&&Object.prototype.propertyIsEnumerable.call(n,t[a])&&(e[t[a]]=n[t[a]]);return e},ge=E.forwardRef(function(n,o){var e=n.icon,t=n.id,a=n.className,r=n.extend,i=Va(n,["icon","id","className","extend"]),l="univerjs-icon univerjs-icon-".concat(t," ").concat(a||"").trim(),d=E.useRef("_".concat(Ca()));return xt(e,"".concat(t),{defIds:e.defIds,idSuffix:d.current},ne({ref:o,className:l},i),r)});function xt(n,o,e,t,a){return E.createElement(n.tag,ne(ne({key:o},Ra(n,e,a)),t),(Da(n,e).children||[]).map(function(r,i){return xt(r,"".concat(o,"-").concat(n.tag,"-").concat(i),e,void 0,a)}))}function Ra(n,o,e){var t=ne({},n.attrs);e!=null&&e.colorChannel1&&t.fill==="colorChannel1"&&(t.fill=e.colorChannel1);var a=o.defIds;return!a||a.length===0||(n.tag==="use"&&t["xlink:href"]&&(t["xlink:href"]=t["xlink:href"]+o.idSuffix),Object.entries(t).forEach(function(r){var i=r[0],l=r[1];typeof l=="string"&&(t[i]=l.replace(/url\(#(.*)\)/,"url(#$1".concat(o.idSuffix,")")))})),t}function Da(n,o){var e,t=o.defIds;return!t||t.length===0?n:n.tag==="defs"&&(!((e=n.children)===null||e===void 0)&&e.length)?ne(ne({},n),{children:n.children.map(function(a){return typeof a.attrs.id=="string"&&t&&t.indexOf(a.attrs.id)>-1?ne(ne({},a),{attrs:ne(ne({},a.attrs),{id:a.attrs.id+o.idSuffix})}):a})}):n}function Ca(){return Math.random().toString(36).substring(2,8)}ge.displayName="UniverIcon";var Ia={tag:"svg",attrs:{fill:"none",viewBox:"0 0 16 16",width:"1em",height:"1em"},children:[{tag:"path",attrs:{fill:"currentColor",d:"M14.1544 3.75557C14.3887 3.98988 14.3887 4.36978 14.1544 4.6041L6.51409 12.2444C6.40157 12.3569 6.24896 12.4201 6.08983 12.4201C5.9307 12.4201 5.77808 12.3569 5.66556 12.2444L1.84541 8.42425C1.6111 8.18993 1.6111 7.81003 1.84541 7.57572C2.07973 7.34141 2.45963 7.34141 2.69394 7.57572L6.08983 10.9716L13.3059 3.75557C13.5402 3.52126 13.9201 3.52126 14.1544 3.75557Z",fillRule:"evenodd",clipRule:"evenodd"}}]},Ut=E.forwardRef(function(n,o){return E.createElement(ge,Object.assign({},n,{id:"check-mark-single",ref:o,icon:Ia}))});Ut.displayName="CheckMarkSingle";const Ma=Ut;var ya={tag:"svg",attrs:{fill:"none",viewBox:"0 0 17 16",width:"1em",height:"1em"},children:[{tag:"path",attrs:{fill:"currentColor",d:"M1.4917 3.07803C1.4917 2.19437 2.20804 1.47803 3.0917 1.47803H5.6917C6.57536 1.47803 7.2917 2.19437 7.2917 3.07803V5.67803C7.2917 6.56168 6.57535 7.27803 5.6917 7.27803H3.0917C2.20804 7.27803 1.4917 6.56168 1.4917 5.67803V3.07803ZM3.0917 2.67803C2.87078 2.67803 2.6917 2.85711 2.6917 3.07803V5.67803C2.6917 5.89894 2.87079 6.07803 3.0917 6.07803H5.6917C5.91261 6.07803 6.0917 5.89894 6.0917 5.67803V3.07803C6.0917 2.85711 5.91261 2.67803 5.6917 2.67803H3.0917Z",fillRule:"evenodd",clipRule:"evenodd"}},{tag:"path",attrs:{fill:"currentColor",d:"M14.6175 2.45279C14.8518 2.68711 14.8518 3.06701 14.6175 3.30132L11.6151 6.30365C11.3957 6.52307 11.0451 6.53897 10.8067 6.34031L8.80915 4.67566C8.55458 4.46352 8.52019 4.08518 8.73233 3.83062 8.94447 3.57605 9.32281 3.54166 9.57737 3.7538L11.154 5.06767 13.769 2.45278C14.0033 2.21847 14.3832 2.21848 14.6175 2.45279zM14.1175 9.19746C14.3518 9.43178 14.3518 9.81168 14.1175 10.046L12.5418 11.6217 14.1175 13.1975C14.3518 13.4318 14.3518 13.8117 14.1175 14.046 13.8832 14.2803 13.5033 14.2803 13.269 14.046L11.6933 12.4703 10.1175 14.046C9.88321 14.2803 9.50331 14.2803 9.269 14.046 9.03468 13.8117 9.03468 13.4318 9.269 13.1975L10.8447 11.6217 9.269 10.046C9.03468 9.81168 9.03468 9.43178 9.269 9.19746 9.50331 8.96315 9.88321 8.96315 10.1175 9.19746L11.6933 10.7732 13.269 9.19746C13.5033 8.96315 13.8832 8.96315 14.1175 9.19746z"}},{tag:"path",attrs:{fill:"currentColor",d:"M3.0917 8.72168C2.20804 8.72168 1.4917 9.43802 1.4917 10.3217V12.9217C1.4917 13.8053 2.20804 14.5217 3.0917 14.5217H5.6917C6.57535 14.5217 7.2917 13.8053 7.2917 12.9217V10.3217C7.2917 9.43802 6.57536 8.72168 5.6917 8.72168H3.0917ZM2.6917 10.3217C2.6917 10.1008 2.87078 9.92168 3.0917 9.92168H5.6917C5.91261 9.92168 6.0917 10.1008 6.0917 10.3217V12.9217C6.0917 13.1426 5.91261 13.3217 5.6917 13.3217H3.0917C2.87079 13.3217 2.6917 13.1426 2.6917 12.9217V10.3217Z",fillRule:"evenodd",clipRule:"evenodd"}}]},Bt=E.forwardRef(function(n,o){return E.createElement(ge,Object.assign({},n,{id:"data-validation-single",ref:o,icon:ya}))});Bt.displayName="DataValidationSingle";var wa={tag:"svg",attrs:{fill:"none",viewBox:"0 0 16 16",width:"1em",height:"1em"},children:[{tag:"path",attrs:{fill:"currentColor",d:"M5.3313 1.4667C5.3313 1.13533 5.59993.866699 5.9313.866699H10.069C10.4004.866699 10.669 1.13533 10.669 1.4667 10.669 1.79807 10.4004 2.0667 10.069 2.0667H5.9313C5.59993 2.0667 5.3313 1.79807 5.3313 1.4667zM1.09985 3.64443C1.09985 3.31306 1.36848 3.04443 1.69985 3.04443H14.2999C14.6312 3.04443 14.8999 3.31306 14.8999 3.64443 14.8999 3.9758 14.6312 4.24443 14.2999 4.24443H1.69985C1.36848 4.24443 1.09985 3.9758 1.09985 3.64443zM6.12398 8.30171C6.35829 8.0674 6.73819 8.0674 6.97251 8.30171L8.00007 9.32928 9.02764 8.30171C9.26195 8.0674 9.64185 8.0674 9.87617 8.30171 10.1105 8.53603 10.1105 8.91593 9.87617 9.15024L8.8486 10.1778 9.87617 11.2054C10.1105 11.4397 10.1105 11.8196 9.87617 12.0539 9.64185 12.2882 9.26195 12.2882 9.02764 12.0539L8.00007 11.0263 6.97251 12.0539C6.73819 12.2882 6.35829 12.2882 6.12398 12.0539 5.88966 11.8196 5.88966 11.4397 6.12398 11.2054L7.15154 10.1778 6.12398 9.15024C5.88966 8.91593 5.88966 8.53603 6.12398 8.30171z"}},{tag:"path",attrs:{fill:"currentColor",d:"M4.75332 5.22217C3.86966 5.22217 3.15332 5.93851 3.15332 6.82217V12.5331C3.15332 13.9691 4.31738 15.1332 5.75332 15.1332H10.2465C11.6825 15.1332 12.8465 13.9691 12.8465 12.5331V6.82217C12.8465 5.93851 12.1302 5.22217 11.2465 5.22217H4.75332ZM4.35332 6.82217C4.35332 6.60125 4.53241 6.42217 4.75332 6.42217H11.2465C11.4674 6.42217 11.6465 6.60125 11.6465 6.82217V12.5331C11.6465 13.3063 11.0197 13.9332 10.2465 13.9332H5.75332C4.98012 13.9332 4.35332 13.3063 4.35332 12.5331V6.82217Z",fillRule:"evenodd",clipRule:"evenodd"}}]},$t=E.forwardRef(function(n,o){return E.createElement(ge,Object.assign({},n,{id:"delete-single",ref:o,icon:wa}))});$t.displayName="DeleteSingle";const Wt=$t;var Oa={tag:"svg",attrs:{fill:"none",viewBox:"0 0 16 16",width:"1em",height:"1em"},children:[{tag:"path",attrs:{fill:"currentColor",d:"M8.6 1.99991C8.60001 1.66854 8.33138 1.39991 8.00001 1.3999C7.66864 1.3999 7.40001 1.66853 7.4 1.9999L7.39996 7.3999H1.9999C1.66853 7.3999 1.3999 7.66853 1.3999 7.9999C1.3999 8.33127 1.66853 8.5999 1.9999 8.5999H7.39995L7.3999 13.9999C7.3999 14.3313 7.66853 14.5999 7.9999 14.5999C8.33127 14.5999 8.5999 14.3313 8.5999 13.9999L8.59995 8.5999H13.9999C14.3313 8.5999 14.5999 8.33127 14.5999 7.9999C14.5999 7.66853 14.3313 7.3999 13.9999 7.3999H8.59996L8.6 1.99991Z"}}]},Ht=E.forwardRef(function(n,o){return E.createElement(ge,Object.assign({},n,{id:"increase-single",ref:o,icon:Oa}))});Ht.displayName="IncreaseSingle";const Ea=Ht;var Fa={tag:"svg",attrs:{fill:"none",viewBox:"0 0 16 16",width:"1em",height:"1em"},children:[{tag:"path",attrs:{fill:"currentColor",d:"M11.3536 6.14645C11.5488 6.34171 11.5488 6.65829 11.3536 6.85355L8.35355 9.85355C8.15829 10.0488 7.84171 10.0488 7.64645 9.85355L4.64645 6.85355C4.45118 6.65829 4.45118 6.34171 4.64645 6.14645C4.84171 5.95118 5.15829 5.95118 5.35355 6.14645L8 8.79289L10.6464 6.14645C10.8417 5.95118 11.1583 5.95118 11.3536 6.14645Z",fillRule:"evenodd",clipRule:"evenodd"}}]},kt=E.forwardRef(function(n,o){return E.createElement(ge,Object.assign({},n,{id:"more-down-single",ref:o,icon:Fa}))});kt.displayName="MoreDownSingle";const Ta=kt;var ba={tag:"svg",attrs:{fill:"none",viewBox:"0 0 16 16",width:"1em",height:"1em"},children:[{tag:"path",attrs:{fill:"currentColor",d:"M4.64645 9.85355C4.45118 9.65829 4.45118 9.34171 4.64645 9.14645L7.64645 6.14645C7.84171 5.95118 8.15829 5.95118 8.35355 6.14645L11.3536 9.14645C11.5488 9.34171 11.5488 9.65829 11.3536 9.85355C11.1583 10.0488 10.8417 10.0488 10.6464 9.85355L8 7.20711L5.35355 9.85355C5.15829 10.0488 4.84171 10.0488 4.64645 9.85355Z",fillRule:"evenodd",clipRule:"evenodd"}}]},Yt=E.forwardRef(function(n,o){return E.createElement(ge,Object.assign({},n,{id:"more-up-single",ref:o,icon:ba}))});Yt.displayName="MoreUpSingle";const Na=Yt;var La={tag:"svg",attrs:{fill:"none",viewBox:"0 0 16 16",width:"1em",height:"1em"},children:[{tag:"mask",attrs:{id:"mask0_622_8",style:{maskType:"alpha"},width:16,height:16,x:0,y:0,maskUnits:"userSpaceOnUse"},children:[{tag:"path",attrs:{fill:"#D9D9D9",d:"M0 0H16V16H0z"}}]},{tag:"g",attrs:{fill:"currentColor",mask:"url(#mask0_622_8)"},children:[{tag:"path",attrs:{d:"M6 5C6.55228 5 7 4.55228 7 4 7 3.44772 6.55228 3 6 3 5.44772 3 5 3.44772 5 4 5 4.55228 5.44772 5 6 5zM6 9C6.55228 9 7 8.55229 7 8 7 7.44772 6.55228 7 6 7 5.44772 7 5 7.44772 5 8 5 8.55229 5.44772 9 6 9zM7 12C7 12.5523 6.55228 13 6 13 5.44772 13 5 12.5523 5 12 5 11.4477 5.44772 11 6 11 6.55228 11 7 11.4477 7 12zM10 5C10.5523 5 11 4.55228 11 4 11 3.44772 10.5523 3 10 3 9.44771 3 9 3.44772 9 4 9 4.55228 9.44771 5 10 5zM11 8C11 8.55229 10.5523 9 10 9 9.44771 9 9 8.55229 9 8 9 7.44772 9.44771 7 10 7 10.5523 7 11 7.44772 11 8zM10 13C10.5523 13 11 12.5523 11 12 11 11.4477 10.5523 11 10 11 9.44771 11 9 11.4477 9 12 9 12.5523 9.44771 13 10 13z"}}]}]},qt=E.forwardRef(function(n,o){return E.createElement(ge,Object.assign({},n,{id:"sequence-single",ref:o,icon:La}))});qt.displayName="SequenceSingle";const Aa=qt,Pa="univer-data-validation-options-button",ja="univer-data-validation-options-button-icon",et={dataValidationOptionsButton:Pa,dataValidationOptionsButtonIcon:ja};function xa(n){var c;const o=N.useDependency(s.LocaleService),e=N.useDependency(W.ComponentManager),{value:t,onChange:a,extraComponent:r}=n,[i,l]=E.useState(!1),d=r?e.get(r):null;return g.jsxs(g.Fragment,{children:[g.jsxs("div",{className:et.dataValidationOptionsButton,onClick:()=>l(!i),children:[o.t("dataValidation.panel.options"),i?g.jsx(Na,{className:et.dataValidationOptionsButtonIcon}):g.jsx(Ta,{className:et.dataValidationOptionsButtonIcon})]}),i&&g.jsxs(g.Fragment,{children:[d?g.jsx(d,{value:t,onChange:a}):null,g.jsx(w.FormLayout,{label:o.t("dataValidation.panel.invalid"),children:g.jsxs(w.RadioGroup,{value:`${(c=t.errorStyle)!=null?c:s.DataValidationErrorStyle.WARNING}`,onChange:u=>a({...t,errorStyle:+u}),children:[g.jsx(w.Radio,{value:`${s.DataValidationErrorStyle.WARNING}`,children:o.t("dataValidation.panel.showWarning")}),g.jsx(w.Radio,{value:`${s.DataValidationErrorStyle.STOP}`,children:o.t("dataValidation.panel.rejectInput")})]})}),g.jsx(w.FormLayout,{label:o.t("dataValidation.panel.messageInfo"),children:g.jsx(w.Checkbox,{checked:t.showInputMessage,onChange:()=>a({...t,showInputMessage:!t.showInputMessage}),children:o.t("dataValidation.panel.showInfo")})}),t.showInputMessage?g.jsx(w.FormLayout,{children:g.jsx(w.Input,{value:t.error,onChange:u=>a({...t,error:u})})}):null]})]})}const Ua="univer-data-validation-detail-form-item",Ba="univer-data-validation-detail-buttons",$a="univer-data-validation-detail-button",Ce={dataValidationDetailFormItem:Ua,dataValidationDetailButtons:Ba,dataValidationDetailButton:$a},Wa=n=>s.debounce(async(o,e,t,a)=>{const r=await n.executeCommand(o,e,t);a==null||a(r)},275);function Ha(){const[n,o]=E.useState(0),e=N.useDependency(pe),t=W.useObservable(e.activeRule$,e.activeRule),{unitId:a,subUnitId:r,rule:i}=t||{},l=i.uid,d=N.useDependency(D.DataValidatorRegistryService),c=N.useDependency(W.ComponentManager),u=N.useDependency(s.ICommandService),m=N.useDependency(D.DataValidationModel),p=N.useDependency(s.LocaleService),[h,f]=E.useState(i),v=d.getValidatorItem(h.type),[S,R]=E.useState(!1),C=d.getValidatorsByScope(D.DataValidatorRegistryScope.SHEET),[V,M]=E.useState(()=>h.ranges.map(y=>({unitId:"",sheetId:"",range:y}))),O=E.useMemo(()=>Wa(u),[u]);if(E.useEffect(()=>{u.onCommandExecuted(y=>{(y.id===s.UndoCommand.id||y.id===s.RedoCommand.id)&&setTimeout(()=>{const B=m.getRuleById(a,r,l);o(X=>X+1),B&&(f(B),M(B.ranges.map(X=>({unitId:"",sheetId:"",range:X}))))},20)})},[u,m,l,r,a]),!v)return null;const T=v.operators,b=v.operatorNames,P=h.operator?D.TWO_FORMULA_OPERATOR_COUNT.includes(h.operator):!1,U=()=>{v.validatorFormula(h).success?e.setActiveRule(null):R(!0)},j=W.useEvent(y=>{if(s.isUnitRangesEqual(y,V))return;M(y);const B=y.filter(z=>(!z.unitId||z.unitId===a)&&(!z.sheetId||z.sheetId===r)).map(z=>z.range);if(f({...h,ranges:B}),B.length===0)return;const X={unitId:a,subUnitId:r,ruleId:l,ranges:B};O(ze.id,X)}),L=y=>{if(s.shallowEqual(y,D.getRuleSetting(h)))return;f({...h,...y});const B={unitId:a,subUnitId:r,ruleId:l,setting:y};O(D.UpdateDataValidationSettingCommand.id,B,void 0)},H=async()=>{await u.executeCommand(D.RemoveDataValidationCommand.id,{ruleId:l,unitId:a,subUnitId:r}),e.setActiveRule(null)},J={type:h.type,operator:h.operator,formula1:h.formula1,formula2:h.formula2,allowBlank:h.allowBlank},A=y=>{const B=d.getValidatorItem(y);if(!B)return;const X=B.operators,z=m.getRuleById(a,r,l),ee=y===(z==null?void 0:z.type)?{...z}:{...h,type:y,operator:X[0],formula1:void 0,formula2:void 0};f(ee),u.executeCommand(D.UpdateDataValidationSettingCommand.id,{unitId:a,subUnitId:r,ruleId:h.uid,setting:D.getRuleSetting(ee)})},Y=c.get(v.formulaInput),$=V.map(y=>ie.serializeRange(y.range)).join(","),K=D.getRuleOptions(h),Q=y=>{s.shallowEqual(y,D.getRuleOptions(h))||(f({...h,...y}),O(D.UpdateDataValidationOptionsCommand.id,{unitId:a,subUnitId:r,ruleId:l,options:y}))};return g.jsxs("div",{children:[g.jsx(w.FormLayout,{label:p.t("dataValidation.panel.range"),children:g.jsx(W.RangeSelector,{className:Ce.dataValidationDetailFormItem,value:$,id:s.createInternalEditorID("data-validation-detail"),openForSheetUnitId:a,openForSheetSubUnitId:r,onChange:y=>{y.some(B=>!s.isValidRange(B.range)||B.range.endColumn<B.range.startColumn||B.range.endRow<B.range.startRow)||j(y)}},n)}),g.jsx(w.FormLayout,{label:p.t("dataValidation.panel.type"),children:g.jsx(w.Select,{options:C==null?void 0:C.map(y=>({label:p.t(y.title),value:y.id})),value:h.type,onChange:A,className:Ce.dataValidationDetailFormItem})}),T!=null&&T.length?g.jsx(w.FormLayout,{label:p.t("dataValidation.panel.operator"),children:g.jsx(w.Select,{options:T.map((y,B)=>({value:`${y}`,label:b[B]})),value:`${h.operator}`,onChange:y=>{L({...J,operator:y})},className:Ce.dataValidationDetailFormItem})}):null,Y?g.jsx(Y,{isTwoFormula:P,value:{formula1:h.formula1,formula2:h.formula2},onChange:y=>{L({...J,...y})},showError:S,validResult:v.validatorFormula(h),unitId:a,subUnitId:r,ruleId:l},n):null,g.jsx(xa,{value:K,onChange:Q,extraComponent:v.optionsInput}),g.jsxs("div",{className:Ce.dataValidationDetailButtons,children:[g.jsx(w.Button,{className:Ce.dataValidationDetailButton,onClick:H,children:p.t("dataValidation.panel.removeRule")}),g.jsx(w.Button,{className:Ce.dataValidationDetailButton,type:"primary",onClick:U,children:p.t("dataValidation.panel.done")})]})]})}var $e=(n=>(n[n.View=0]="View",n[n.Edit=1]="Edit",n[n.ManageCollaborator=2]="ManageCollaborator",n[n.Print=3]="Print",n[n.Duplicate=4]="Duplicate",n[n.Comment=5]="Comment",n[n.Copy=6]="Copy",n[n.Share=7]="Share",n[n.Export=8]="Export",n[n.MoveWorksheet=9]="MoveWorksheet",n[n.DeleteWorksheet=10]="DeleteWorksheet",n[n.HideWorksheet=11]="HideWorksheet",n[n.RenameWorksheet=12]="RenameWorksheet",n[n.CreateWorksheet=13]="CreateWorksheet",n[n.SetWorksheetStyle=14]="SetWorksheetStyle",n[n.EditWorksheetCell=15]="EditWorksheetCell",n[n.InsertHyperlink=16]="InsertHyperlink",n[n.Sort=17]="Sort",n[n.Filter=18]="Filter",n[n.PivotTable=19]="PivotTable",n[n.FloatImg=20]="FloatImg",n[n.History=21]="History",n[n.RwHgtClWdt=22]="RwHgtClWdt",n[n.ViemRwHgtClWdt=23]="ViemRwHgtClWdt",n[n.ViewFilter=24]="ViewFilter",n[n.MoveSheet=25]="MoveSheet",n[n.DeleteSheet=26]="DeleteSheet",n[n.HideSheet=27]="HideSheet",n[n.CopySheet=28]="CopySheet",n[n.RenameSheet=29]="RenameSheet",n[n.CreateSheet=30]="CreateSheet",n[n.SelectProtectedCells=31]="SelectProtectedCells",n[n.SelectUnProtectedCells=32]="SelectUnProtectedCells",n[n.SetCellStyle=33]="SetCellStyle",n[n.SetCellValue=34]="SetCellValue",n[n.SetRowStyle=35]="SetRowStyle",n[n.SetColumnStyle=36]="SetColumnStyle",n[n.InsertRow=37]="InsertRow",n[n.InsertColumn=38]="InsertColumn",n[n.DeleteRow=39]="DeleteRow",n[n.DeleteColumn=40]="DeleteColumn",n[n.EditExtraObject=41]="EditExtraObject",n[n.UNRECOGNIZED=-1]="UNRECOGNIZED",n))($e||{});const ka="univer-data-validation-item-container",Ya="univer-data-validation-item-title",qa="univer-data-validation-item-content",Ga="univer-data-validation-item-icon",be={dataValidationItemContainer:ka,dataValidationItemTitle:Ya,dataValidationItemContent:qa,dataValidationItemIcon:Ga},Xa=n=>{const{rule:o,onClick:e,unitId:t,subUnitId:a,disable:r}=n,i=N.useDependency(D.DataValidatorRegistryService),l=N.useDependency(s.ICommandService),d=N.useDependency(x.IMarkSelectionService),c=i.getValidatorItem(o.type),u=E.useRef(),[m,p]=E.useState(!1),h=f=>{l.executeCommand(D.RemoveDataValidationCommand.id,{ruleId:o.uid,unitId:t,subUnitId:a}),f.stopPropagation()};return E.useEffect(()=>()=>{var f;u.current&&((f=u.current)==null||f.forEach(v=>{v&&d.removeShape(v)}))},[d]),g.jsxs("div",{className:be.dataValidationItemContainer,onClick:e,onMouseEnter:()=>{r||(p(!0),u.current=o.ranges.map(f=>d.addShape({range:f,style:{hasAutoFill:!1,fill:"rgba(73, 184, 17, 0.05)",strokeWidth:1,stroke:"#49B811",widgets:{}},primary:{startColumn:f.startColumn,endColumn:f.endColumn,startRow:f.startRow,endRow:f.endRow,actualRow:f.startRow,actualColumn:f.startColumn,isMerged:!1,isMergedMainCell:!1}})))},onMouseLeave:()=>{var f;p(!1),(f=u.current)==null||f.forEach(v=>{v&&d.removeShape(v)}),u.current=void 0},children:[g.jsx("div",{className:be.dataValidationItemTitle,children:c==null?void 0:c.generateRuleName(o)}),g.jsx("div",{className:be.dataValidationItemContent,children:o.ranges.map(f=>ie.serializeRange(f)).join(",")}),m?g.jsx("div",{className:be.dataValidationItemIcon,onClick:h,children:g.jsx(Wt,{})}):null]})};var za=Object.defineProperty,Qa=Object.getOwnPropertyDescriptor,Ka=(n,o,e,t)=>{for(var a=t>1?void 0:t?Qa(o,e):o,r=n.length-1,i;r>=0;r--)(i=n[r])&&(a=(t?i(o,e,a):i(a))||a);return t&&a&&za(o,e,a),a},Za=(n,o)=>(e,t)=>o(e,t,n);exports.SheetDataValidationService=class{constructor(o){_(this,"_currentManager");_(this,"_currentManager$",new me.Subject);_(this,"currentManager$",this._currentManager$.asObservable());this._dataValidationModel=o}get currentManager(){return this._currentManager}_ensureManager(o,e){return this._dataValidationModel.ensureManager(o,e)}switchCurrent(o,e){var a,r;if(o===((a=this.currentManager)==null?void 0:a.unitId)&&e===((r=this._currentManager)==null?void 0:r.subUnitId))return;const t=this._ensureManager(o,e);this._currentManager={manager:t,unitId:o,subUnitId:e},this._currentManager$.next(this._currentManager)}get(o,e){return this._ensureManager(o,e)}};exports.SheetDataValidationService=Ka([Za(0,I.Inject(D.DataValidationModel))],exports.SheetDataValidationService);function Ja(n){var d;const{unitId:o,subUnitId:e,value:t,onChange:a,showError:r,validResult:i}=n,l=r?i==null?void 0:i.formula1:"";return g.jsx(w.FormLayout,{error:l,children:g.jsx(W.TextEditor,{value:(d=t==null?void 0:t.formula1)!=null?d:"",id:s.createInternalEditorID(`dataValidation-custom-formula-${o}-${e}`),onChange:c=>{a==null||a({...t,formula1:c!=null?c:""})},onlyInputFormula:!0,openForSheetUnitId:o,openForSheetSubUnitId:e})})}const er="univer-data-validation-formula",tr="univer-data-validation-formula-and",ar="univer-data-validation-formula-list-item",rr="univer-data-validation-formula-list-item-icon",or="univer-data-validation-formula-list-item-drag",nr="univer-data-validation-formula-list-add",ir="univer-data-validation-formula-color-select",sr="univer-data-validation-formula-color-select-panel",lr="univer-data-validation-formula-color-item",ae={dataValidationFormula:er,dataValidationFormulaAnd:tr,dataValidationFormulaListItem:ar,dataValidationFormulaListItemIcon:rr,dataValidationFormulaListItemDrag:or,dataValidationFormulaListAdd:nr,dataValidationFormulaColorSelect:ir,dataValidationFormulaColorSelectPanel:sr,dataValidationFormulaColorItem:lr},dr=n=>{const{isTwoFormula:o=!1,value:e,onChange:t,showError:a,validResult:r}=n,i=N.useDependency(s.LocaleService),l=a?r==null?void 0:r.formula1:"",d=a?r==null?void 0:r.formula2:"";return o?g.jsxs(g.Fragment,{children:[g.jsx(w.FormLayout,{error:l,children:g.jsx(w.Input,{className:ae.dataValidationFormula,placeholder:i.t("dataValidation.panel.formulaPlaceholder"),value:e==null?void 0:e.formula1,onChange:c=>{t==null||t({...e,formula1:c})}})}),g.jsx("div",{className:ae.dataValidationFormulaAnd,children:i.t("dataValidation.panel.formulaAnd")}),g.jsx(w.FormLayout,{error:d,children:g.jsx(w.Input,{className:ae.dataValidationFormula,placeholder:i.t("dataValidation.panel.formulaPlaceholder"),value:e==null?void 0:e.formula2,onChange:c=>{t==null||t({...e,formula2:c})}})})]}):g.jsx(w.FormLayout,{error:l,children:g.jsx(w.Input,{className:ae.dataValidationFormula,placeholder:i.t("dataValidation.panel.formulaPlaceholder"),value:e==null?void 0:e.formula1,onChange:c=>{t==null||t({formula1:c})}})})};function oe(n){if(n===null)return"";if(n!=null&&n.p){const o=n==null?void 0:n.p.body;if(o==null)return"";const e=o.dataStream;return e.substring(e.length-2,e.length)===s.DEFAULT_EMPTY_DOCUMENT_VALUE?e.substring(0,e.length-2):e}return n==null?void 0:n.v}function Gt(n){return n.filter(Boolean).join(",")}function Me(n){return n.split(",").filter(Boolean)}function cr(n){const o=oe(n);return o==null?"":o.toString()}const Ke="SHEET_DATA_VALIDATION_PLUGIN",Ve="#ECECEC";var ur=Object.defineProperty,mr=Object.getOwnPropertyDescriptor,hr=(n,o,e,t)=>{for(var a=t>1?void 0:t?mr(o,e):o,r=n.length-1,i;r>=0;r--)(i=n[r])&&(a=(t?i(o,e,a):i(a))||a);return t&&a&&ur(o,e,a),a},tt=(n,o)=>(e,t)=>o(e,t,n);exports.DataValidationFormulaController=class extends s.Disposable{constructor(o,e,t){super(),this._univerInstanceService=o,this._permissionService=e,this._lexerTreeBuilder=t}getFormulaRefCheck(o){var t,a;const e=this._lexerTreeBuilder.sequenceNodesBuilder(o);if(!e)return!0;for(let r=0;r<e.length;r++){const i=e[r];if(typeof i=="string")continue;const{token:l}=i,d=ie.deserializeRangeWithSheet(l),c=this._univerInstanceService.getCurrentUnitForType(s.UniverInstanceType.UNIVER_SHEET);let u=c.getActiveSheet();const m=c.getUnitId();if(d.sheetName){if(u=c.getSheetBySheetName(d.sheetName),!u)return!1;const S=u==null?void 0:u.getSheetId();if(!this._permissionService.getPermissionPoint(new G.WorksheetViewPermission(m,S).id))return!1}if(!u)return!1;const{startRow:p,endRow:h,startColumn:f,endColumn:v}=d.range;for(let S=p;S<=h;S++)for(let R=f;R<=v;R++){const C=(a=(t=u.getCell(S,R))==null?void 0:t.selectionProtection)==null?void 0:a[0];if((C==null?void 0:C[$e.View])===!1)return!1}}return!0}};exports.DataValidationFormulaController=hr([s.OnLifecycle(s.LifecycleStages.Rendered,exports.DataValidationFormulaController),tt(0,s.IUniverInstanceService),tt(1,s.IPermissionService),tt(2,I.Inject(ie.LexerTreeBuilder))],exports.DataValidationFormulaController);const pr=["#FFFFFF","#FEE7E7","#FEF0E6","#EFFBD0","#E4F4FE","#E8ECFD","#F1EAFA","#FDE8F3","#E5E5E5","#FDCECE","#FDC49B","#DEF6A2","#9FDAFF","#D0D9FB","#E3D5F6","#FBD0E8","#656565","#FE4B4B","#FF8C51","#8BBB11","#0B9EFB","#3A60F7","#9E6DE3","#F248A6"],fr=n=>{const{value:o,onChange:e,disabled:t}=n,[a,r]=E.useState(!1);return g.jsx(w.Select,{disabled:t,open:a,onDropdownVisibleChange:r,dropdownStyle:{width:112},className:ae.dataValidationFormulaColorSelect,value:o,onChange:e,labelRender:i=>g.jsx("div",{className:ae.dataValidationFormulaColorItem,style:{background:i.value}}),dropdownRender:()=>g.jsx("div",{className:ae.dataValidationFormulaColorSelectPanel,children:pr.map(i=>g.jsx("div",{onClick:()=>{e(i),r(!1)},className:ae.dataValidationFormulaColorItem,style:{background:i}},i))})})},Ct=n=>{const{item:o,commonProps:e,style:t}=n,{onItemChange:a,onItemDelete:r}=e;return g.jsxs("div",{className:ae.dataValidationFormulaListItem,style:t,children:[o.isRef?null:g.jsx("div",{className:na(ae.dataValidationFormulaListItemDrag,"draggableHandle"),children:g.jsx(Aa,{})}),g.jsx(fr,{value:o.color,onChange:i=>{a(o.id,o.label,i)}}),g.jsx(w.Input,{disabled:o.isRef,value:o.label,onChange:i=>{a(o.id,i,o.color)}}),o.isRef?null:g.jsx("div",{className:ae.dataValidationFormulaListItemIcon,children:g.jsx(Wt,{onClick:()=>r(o.id)})})]})};function gr(n){const{value:o,onChange:e=()=>{},unitId:t,subUnitId:a,validResult:r,showError:i,ruleId:l}=n,{formula1:d="",formula2:c=""}=o||{},u=E.useRef(null),[m,p]=E.useState(()=>s.isFormulaString(d)?"1":"0"),[h,f]=E.useState(m==="1"?d:"="),[v,S]=E.useState(m==="1"?d:"="),R=N.useDependency(s.LocaleService),C=N.useDependency(D.DataValidatorRegistryService),V=N.useDependency(D.DataValidationModel),M=N.useDependency(exports.DataValidationFormulaController),[O,T]=E.useState(()=>c.split(",")),b=C.getValidatorItem(s.DataValidationType.LIST),[P,U]=E.useState([]),[j,L]=E.useState(""),H=i?r==null?void 0:r.formula1:"",J=W.useObservable(V.ruleChange$),A=W.useEvent(e);E.useEffect(()=>{(async()=>{await new Promise(k=>{setTimeout(()=>k(!0),100)});const F=V.getRuleById(t,a,l),q=F==null?void 0:F.formula1;if(s.isFormulaString(q)&&b&&F){const k=await b.getListAsync(F,t,a);U(k)}})()},[V,J,b,l,a,t]),E.useEffect(()=>{s.isFormulaString(d)&&d!==v&&(f(d),S(v))},[v,d]);const[Y,$]=E.useState(()=>{const F=m!=="1"?Me(d):[],q=c.split(",");return F.map((k,te)=>({label:k,color:q[te]||Ve,isRef:!1,id:s.Tools.generateRandomId(4)}))}),K=(F,q,k)=>{const te=Y.find(de=>de.id===F);te&&(te.label=q,te.color=k,$([...Y]))},Q=F=>{const q=Y.findIndex(k=>k.id===F);q!==-1&&(Y.splice(q,1),$([...Y]))},y=c.split(","),B=E.useMemo(()=>P.map((F,q)=>({label:F,color:y[q]||Ve,id:`${q}`,isRef:!0})),[y,P]),X=(F,q,k)=>{const te=[...O];te[+F]=k,T(te),A({formula1:d,formula2:te.join(",")})},z=()=>{$([...Y,{label:"",color:Ve,isRef:!1,id:s.Tools.generateRandomId(4)}])};E.useEffect(()=>{if(m==="1")return;const F=new Set,q=[];Y.map(k=>({labelList:k.label.split(","),item:k})).forEach(({item:k,labelList:te})=>{te.forEach(de=>{F.has(de)||(F.add(de),q.push({label:de,color:k.color}))})}),A({formula1:Gt(q.map(k=>k.label)),formula2:q.map(k=>k.color===Ve?"":k.color).join(",")})},[Y,A,m,v,O]);const ee=E.useMemo(()=>async F=>{if(!s.isFormulaString(F)){A==null||A({formula1:"",formula2:c});return}M.getFormulaRefCheck(F)?(A==null||A({formula1:s.isFormulaString(F)?F:"",formula2:c}),L("")):(A==null||A({formula1:"",formula2:c}),f("="),L(R.t("dataValidation.validFail.formulaError")))},[c,A]);return g.jsxs(g.Fragment,{children:[g.jsx(w.FormLayout,{label:R.t("dataValidation.list.options"),children:g.jsxs(w.RadioGroup,{value:m,onChange:F=>{p(F),f(v),F==="1"&&A({formula1:v==="="?"":v,formula2:O.join(",")})},children:[g.jsx(w.Radio,{value:"0",children:R.t("dataValidation.list.customOptions")}),g.jsx(w.Radio,{value:"1",children:R.t("dataValidation.list.refOptions")})]})}),m==="1"?g.jsxs(g.Fragment,{children:[g.jsx(w.FormLayout,{error:H||j,children:g.jsx(W.TextEditor,{id:s.createInternalEditorID(`list-ref-range-${t}-${a}`),value:h,openForSheetUnitId:t,openForSheetSubUnitId:a,onlyInputFormula:!0,onChange:async F=>{const q=F!=null?F:"";S(q),ee(q)}})}),g.jsx(w.FormLayout,{children:g.jsx("div",{ref:u,children:B.map(F=>g.jsx(Ct,{item:F,commonProps:{onItemChange:X},style:{marginBottom:12}},F.id))})})]}):g.jsx(w.FormLayout,{error:H,children:g.jsxs("div",{ref:u,style:{marginTop:"-12px"},children:[g.jsx(w.DraggableList,{list:Y,onListChange:$,rowHeight:32,margin:[0,12],draggableHandle:".draggableHandle",itemRender:F=>g.jsx(Ct,{item:F,commonProps:{onItemChange:K,onItemDelete:Q}},F.id),idKey:"id"}),g.jsxs("a",{className:ae.dataValidationFormulaListAdd,onClick:z,children:[g.jsx(Ea,{}),R.t("dataValidation.list.add")]})]})})]})}function vr(n){const{value:o,onChange:e,showError:t,validResult:a}=n,r=N.useDependency(s.LocaleService),i=t?a==null?void 0:a.formula1:"",l=t?a==null?void 0:a.formula2:"",[d,c]=E.useState(!((o==null?void 0:o.formula1)===void 0&&(o==null?void 0:o.formula2)===void 0));return g.jsxs(g.Fragment,{children:[g.jsx(w.FormLayout,{children:g.jsx(w.Checkbox,{checked:d,onChange:u=>{u?c(!0):(c(!1),e==null||e({...o,formula1:void 0,formula2:void 0}))},children:r.t("dataValidation.checkbox.tips")})}),d?g.jsx(w.FormLayout,{label:r.t("dataValidation.checkbox.checked"),error:i,children:g.jsx(w.Input,{className:ae.dataValidationFormula,placeholder:r.t("dataValidation.panel.formulaPlaceholder"),value:o==null?void 0:o.formula1,onChange:u=>{e==null||e({...o,formula1:u||void 0})}})}):null,d?g.jsx(w.FormLayout,{label:r.t("dataValidation.checkbox.unchecked"),error:l,children:g.jsx(w.Input,{className:ae.dataValidationFormula,placeholder:r.t("dataValidation.panel.formulaPlaceholder"),value:o==null?void 0:o.formula2,onChange:u=>{e==null||e({...o,formula2:u||void 0})}})}):null]})}const Xt="data-validation.custom-formula-input",Te="data-validation.formula-input",zt="data-validation.list-formula-input",Qt="data-validation.checkbox-formula-input",_r=[[Xt,Ja],[Te,dr],[zt,gr],[Qt,vr]];class we{constructor(){_(this,"_cacheMatrix",new Map)}_ensureCache(o,e){let t=this._cacheMatrix.get(o);t||(t=new Map,this._cacheMatrix.set(o,t));let a=t.get(e);return a||(a=new s.ObjectMatrix,t.set(e,a)),a}ensureCache(o,e){return this._ensureCache(o,e)}addRule(o,e,t){this.markRangeDirty(o,e,t.ranges)}removeRule(o,e,t){this._deleteRange(o,e,t.ranges)}updateRuleRanges(o,e,t,a,r){const i=this._ensureCache(o,e);r.forEach(l=>{s.Range.foreach(l,(d,c)=>{const u=i.getValue(d,c);u&&(u.temp=!0)})}),a.forEach(l=>{s.Range.foreach(l,(d,c)=>{const u=i.getValue(d,c);u&&u.ruleId===t?u.temp=!1:i.setValue(d,c,void 0)})}),r.forEach(l=>{s.Range.foreach(l,(d,c)=>{const u=i.getValue(d,c);u&&u.temp===!0&&i.realDeleteValue(d,c)})})}markRangeDirty(o,e,t){const a=this._ensureCache(o,e);t.forEach(r=>{s.Range.foreach(r,(i,l)=>{a.setValue(i,l,void 0)})})}markCellDirty(o,e,t,a){this._ensureCache(o,e).setValue(t,a,void 0)}_deleteRange(o,e,t){const a=this._ensureCache(o,e);t.forEach(r=>{s.Range.foreach(r,(i,l)=>{a.realDeleteValue(i,l)})})}getValue(o,e,t,a){return this._ensureCache(o,e).getValue(t,a)}setValue(o,e,t,a,r){return this._ensureCache(o,e).setValue(t,a,r)}}var Sr=Object.defineProperty,Vr=Object.getOwnPropertyDescriptor,Rr=(n,o,e,t)=>{for(var a=t>1?void 0:t?Vr(o,e):o,r=n.length-1,i;r>=0;r--)(i=n[r])&&(a=(t?i(o,e,a):i(a))||a);return t&&a&&Sr(o,e,a),a},Ne=(n,o)=>(e,t)=>o(e,t,n);exports.DataValidationCustomFormulaService=class extends s.Disposable{constructor(e,t,a,r){super();_(this,"_formulaMap",new Map);_(this,"_ruleFormulaMap",new Map);_(this,"_formulaCellMap",new Map);this._registerOtherFormulaService=e,this._lexerTreeBuilder=t,this._dataValidationModel=a,this._dataValidationCacheService=r,this._initFormulaResultHandler()}_initFormulaResultHandler(){this.disposeWithMe(this._registerOtherFormulaService.formulaResult$.subscribe(e=>{for(const t in e){const a=e[t];for(const r in a){const i=a[r],{formulaCellMap:l,ruleFormulaMap:d}=this._ensureMaps(t,r),c=this._dataValidationModel.ensureManager(t,r);i.forEach(u=>{var f,v;const m=d.get((f=u.extra)==null?void 0:f.ruleId),p=l.get(u.formulaId),h=c.getRuleById((v=u.extra)==null?void 0:v.ruleId);h&&m&&!m.isTransformable&&this._dataValidationCacheService.markRangeDirty(t,r,h.ranges),p&&this._dataValidationCacheService.markCellDirty(t,r,p.row,p.column)})}}}))}_ensureMaps(e,t){let a=this._formulaMap.get(e),r=this._ruleFormulaMap.get(e),i=this._formulaCellMap.get(e);(!a||!r||!i)&&(a=new Map,r=new Map,i=new Map,this._formulaMap.set(e,a),this._ruleFormulaMap.set(e,r),this._formulaCellMap.set(e,i));let l=a.get(t),d=r.get(t),c=i.get(t);return(!l||!d||!c)&&(l=new s.ObjectMatrix,a.set(t,l),d=new Map,r.set(t,d),c=new Map,i.set(t,c)),{formulaMap:l,ruleFormulaMap:d,formulaCellMap:c}}_registerFormula(e,t,a,r){return this._registerOtherFormulaService.registerFormula(e,t,r,{ruleId:a})}deleteByRuleId(e,t,a){const{formulaMap:r,formulaCellMap:i,ruleFormulaMap:l}=this._ensureMaps(e,t),d=this._dataValidationModel.getRuleById(e,t,a),c=new Set,u=l.get(a);!d||!u||(l.delete(a),d.ranges.forEach(m=>{s.Range.foreach(m,(p,h)=>{const f=r.getValue(p,h);if(f&&f.ruleId===a){const{formulaId:v}=f;r.realDeleteValue(p,h),c.add(v),i.delete(v)}})}),this._registerOtherFormulaService.deleteFormula(e,t,Array.from(c.values())))}_addFormulaByRange(e,t,a,r,i){const{formulaMap:l,ruleFormulaMap:d,formulaCellMap:c}=this._ensureMaps(e,t);if(!r)return;const u=ie.isFormulaTransformable(this._lexerTreeBuilder,r),m=i[0].startRow,p=i[0].startColumn;let h;u?i.forEach(f=>{s.Range.foreach(f,(v,S)=>{const R=ie.transformFormula(this._lexerTreeBuilder,r,m,p,v,S),C=this._registerFormula(e,t,a,R);l.setValue(v,S,{formulaId:C,ruleId:a}),c.set(C,{row:v,column:S})})}):(h=this._registerFormula(e,t,a,r),i.forEach(f=>{s.Range.foreach(f,(v,S)=>{l.setValue(v,S,{formulaId:h,ruleId:a})})})),d.set(a,{formula:r,originCol:p,originRow:m,isTransformable:u,formulaId:h})}addRule(e,t,a){const{ranges:r,formula1:i,uid:l,type:d}=a;d!==s.DataValidationType.CUSTOM||!i||!s.isFormulaString(i)||this._addFormulaByRange(e,t,l,i,r)}updateRuleRanges(e,t,a,r,i){const{formulaMap:l,ruleFormulaMap:d,formulaCellMap:c}=this._ensureMaps(e,t),u=d.get(a);if(!u)return;const{formula:m,originCol:p,originRow:h,isTransformable:f,formulaId:v}=u,S=new Set;r.forEach(R=>{s.Range.foreach(R,(C,V)=>{const M=l.getValue(C,V);M&&M.ruleId===a&&(M.temp=!0)})}),i.forEach(R=>{s.Range.foreach(R,(C,V)=>{var O;const M=(O=l.getValue(C,V))!=null?O:{};if(M.ruleId!==a){const T=d.get(M.ruleId);if(T!=null&&T.isTransformable&&S.add(M.formulaId),f){const b=ie.transformFormula(this._lexerTreeBuilder,m,h,p,C,V),P=this._registerFormula(e,t,a,b);l.setValue(C,V,{ruleId:a,formulaId:P}),c.set(P,{row:C,column:V})}else l.setValue(C,V,{ruleId:a,formulaId:v})}else M.temp=!1})}),r.forEach(R=>{s.Range.foreach(R,(C,V)=>{const M=l.getValue(C,V);M&&M.ruleId===a&&M.temp===!0&&(l.realDeleteValue(C,V),f&&S.add(M.formulaId))})}),S.forEach(R=>{c.delete(R)}),this._registerOtherFormulaService.deleteFormula(e,t,Array.from(S.values()))}updateRuleFormula(e,t,a,r,i){const{ruleFormulaMap:l}=this._ensureMaps(e,t),d=l.get(a);(!d||d.formula!==i)&&this._addFormulaByRange(e,t,a,i,r)}getCellFormulaValue(e,t,a,r){const{formulaMap:i}=this._ensureMaps(e,t),l=i.getValue(a,r);return l?this._registerOtherFormulaService.getFormulaValue(e,t,l.formulaId):Promise.resolve(void 0)}getRuleFormulaInfo(e,t,a){const{ruleFormulaMap:r}=this._ensureMaps(e,t);return r.get(a)}};exports.DataValidationCustomFormulaService=Rr([Ne(0,I.Inject(qe.RegisterOtherFormulaService)),Ne(1,I.Inject(ie.LexerTreeBuilder)),Ne(2,I.Inject(D.DataValidationModel)),Ne(3,I.Inject(we))],exports.DataValidationCustomFormulaService);function he(n){var o,e;return(e=(o=n==null?void 0:n[0])==null?void 0:o[0])==null?void 0:e.v}class Dr extends D.BaseDataValidator{constructor(){super(...arguments);_(this,"id",s.DataValidationType.CUSTOM);_(this,"title","dataValidation.custom.title");_(this,"operators",[]);_(this,"scopes",["sheet"]);_(this,"formulaInput",Xt);_(this,"_customFormulaService",this.injector.get(exports.DataValidationCustomFormulaService))}validatorFormula(e){const t=s.isFormulaString(e.formula1);return{success:t,formula1:t?"":this.localeService.t("dataValidation.validFail.formula")}}async parseFormula(e,t,a){return{formula1:void 0,formula2:void 0}}async isValidType(e,t,a){const{column:r,row:i,unitId:l,subUnitId:d}=e,c=await this._customFormulaService.getCellFormulaValue(l,d,i,r);return!!he(c==null?void 0:c.result)}generateRuleErrorMessage(e){return this.localeService.t("dataValidation.custom.error")}}var Cr=Object.defineProperty,Ir=Object.getOwnPropertyDescriptor,Mr=(n,o,e,t)=>{for(var a=t>1?void 0:t?Ir(o,e):o,r=n.length-1,i;r>=0;r--)(i=n[r])&&(a=(t?i(o,e,a):i(a))||a);return t&&a&&Cr(o,e,a),a},at=(n,o)=>(e,t)=>o(e,t,n);exports.DataValidationFormulaService=class extends s.Disposable{constructor(e,t,a){super();_(this,"_formulaRuleMap",new Map);this._registerOtherFormulaService=e,this._dataValidationCacheService=t,this._dataValidationModel=a,this._initFormulaResultHandler()}_initFormulaResultHandler(){this.disposeWithMe(this._registerOtherFormulaService.formulaResult$.subscribe(e=>{for(const t in e){const a=e[t];for(const r in a){const i=a[r],l=this._ensureRuleFormulaMap(t,r),d=this._dataValidationModel.ensureManager(t,r);i.forEach(c=>{var u,m;if(l.get((u=c.extra)==null?void 0:u.ruleId)){const p=d.getRuleById((m=c.extra)==null?void 0:m.ruleId);p&&this._dataValidationCacheService.markRangeDirty(t,r,p.ranges)}})}}}))}_ensureRuleFormulaMap(e,t){let a=this._formulaRuleMap.get(e);a||(a=new Map,this._formulaRuleMap.set(e,a));let r=a.get(t);return r||(r=new Map,a.set(t,r)),r}addRule(e,t,a,r,i){const l=s.isFormulaString(r),d=s.isFormulaString(i);if(!l&&!d)return;const c=this._ensureRuleFormulaMap(e,t),u=[void 0,void 0];if(l){const m=this._registerOtherFormulaService.registerFormula(e,t,r,{ruleId:a});u[0]={id:m,text:r}}if(d){const m=this._registerOtherFormulaService.registerFormula(e,t,i,{ruleId:a});u[1]={id:m,text:i}}c.set(a,u)}removeRule(e,t,a){const i=this._ensureRuleFormulaMap(e,t).get(a);if(!i)return;const[l,d]=i,c=[l==null?void 0:l.id,d==null?void 0:d.id].filter(Boolean);c.length&&this._registerOtherFormulaService.deleteFormula(e,t,c)}updateRuleFormulaText(e,t,a,r,i){const d=this._ensureRuleFormulaMap(e,t).get(a);if(!d){this.addRule(e,t,a,r,i);return}const[c,u]=d;if((c==null?void 0:c.text)!==r)if(c&&this._registerOtherFormulaService.deleteFormula(e,t,[c.id]),s.isFormulaString(r)){const m=this._registerOtherFormulaService.registerFormula(e,t,r,{ruleId:a});d[0]={text:r,id:m}}else d[0]=void 0;if((u==null?void 0:u.text)!==i)if(u&&this._registerOtherFormulaService.deleteFormula(e,t,[u.id]),s.isFormulaString(i)){const m=this._registerOtherFormulaService.registerFormula(e,t,i,{ruleId:a});d[1]={text:i,id:m}}else d[1]=void 0}getRuleFormulaResult(e,t,a){const i=this._ensureRuleFormulaMap(e,t).get(a);if(!i)return Promise.resolve(null);const l=async d=>d&&this._registerOtherFormulaService.getFormulaValue(e,t,d.id);return Promise.all([l(i[0]),l(i[1])])}getRuleFormulaResultSync(e,t,a){const i=this._ensureRuleFormulaMap(e,t).get(a);if(i)return i.map(l=>{if(l)return this._registerOtherFormulaService.getFormulaValueSync(e,t,l.id)})}getRuleFormulaInfo(e,t,a){return this._ensureRuleFormulaMap(e,t).get(a)}};exports.DataValidationFormulaService=Mr([at(0,I.Inject(qe.RegisterOtherFormulaService)),at(1,I.Inject(we)),at(2,I.Inject(D.DataValidationModel))],exports.DataValidationFormulaService);var yr=Object.defineProperty,wr=Object.getOwnPropertyDescriptor,Or=(n,o,e,t)=>{for(var a=t>1?void 0:t?wr(o,e):o,r=n.length-1,i;r>=0;r--)(i=n[r])&&(a=(t?i(o,e,a):i(a))||a);return t&&a&&yr(o,e,a),a},rt=(n,o)=>(e,t)=>o(e,t,n);const Le=6;let ht=class{constructor(n,o,e){this._commandService=n,this._formulaService=o,this._themeService=e}_calc(n,o){var c,u,m;const{vt:e,ht:t}=o||{},a=n.endX-n.startX-Le*2,r=n.endY-n.startY,i=((c=o==null?void 0:o.fs)!=null?c:10)*1.6;let l=0,d=0;switch(e){case s.VerticalAlign.TOP:d=0;break;case s.VerticalAlign.BOTTOM:d=0+(r-i);break;default:d=0+(r-i)/2;break}switch(t){case s.HorizontalAlign.LEFT:l=Le;break;case s.HorizontalAlign.RIGHT:l=Le+(a-i);break;default:l=Le+(a-i)/2;break}return{left:n.startX+l,top:n.startY+d,width:((u=o==null?void 0:o.fs)!=null?u:10)*1.6,height:((m=o==null?void 0:o.fs)!=null?m:10)*1.6}}calcCellAutoHeight(n){var e;const{style:o}=n;return((e=o==null?void 0:o.fs)!=null?e:10)*1.6}async _parseFormula(n,o,e){var i,l;const{formula1:t=We,formula2:a=pt}=n,r=await this._formulaService.getRuleFormulaResult(o,e,n.uid);return{formula1:s.isFormulaString(t)?he((i=r==null?void 0:r[0])==null?void 0:i.result):t,formula2:s.isFormulaString(a)?he((l=r==null?void 0:r[1])==null?void 0:l.result):a}}drawWith(n,o){var U,j,L,H,J,A;const{style:e,data:t,primaryWithCoord:a,unitId:r,subUnitId:i}=o,l=a.isMergedMainCell?a.mergeInfo:a,d=oe(t),c=(U=t.dataValidation)==null?void 0:U.rule,u=(j=t.dataValidation)==null?void 0:j.validator;if(!c||!u||(L=t.dataValidation)!=null&&L.isSkip)return;const m=this._themeService.getCurrentTheme();if(!u.skipDefaultFontRender(c,d,{unitId:r,subUnitId:i}))return;const{formula1:p=We}=c,h=this._calc(l,e),{a:f,d:v}=n.getTransform(),S=Z.fixLineWidthByScale(h.left,f),R=Z.fixLineWidthByScale(h.top,v),C=Z.Transform.create().composeMatrix({left:S,top:R,scaleX:1,scaleY:1,angle:0,skewX:0,skewY:0,flipX:!1,flipY:!1}),V=l.endX-l.startX,M=l.endY-l.startY;n.save(),n.beginPath(),n.rect(l.startX,l.startY,V,M),n.clip();const O=C.getMatrix();n.transform(O[0],O[1],O[2],O[3],O[4],O[5]);const T=((H=e==null?void 0:e.fs)!=null?H:10)*1.6,b=String(d)===String(p),P=m.hyacinth500;Z.Checkbox.drawWith(n,{checked:b,width:T,height:T,fill:(A=(J=e==null?void 0:e.cl)==null?void 0:J.rgb)!=null?A:P}),n.restore()}isHit(n,o){const e=o.primaryWithCoord.isMergedMainCell?o.primaryWithCoord.mergeInfo:o.primaryWithCoord,t=this._calc(e,o.style),a=t.top,r=t.top+t.height,i=t.left,l=t.left+t.width,{x:d,y:c}=n;return d<=l&&d>=i&&c<=r&&c>=a}async onPointerDown(n,o){var p,h;if(o.button===2)return;const{primaryWithCoord:e,unitId:t,subUnitId:a,data:r}=n,i=oe(r),l=(p=r.dataValidation)==null?void 0:p.rule,d=(h=r.dataValidation)==null?void 0:h.validator;if(!l||!d||!d.skipDefaultFontRender(l,i,{unitId:t,subUnitId:a}))return;const{formula1:c,formula2:u}=await this._parseFormula(l,t,a),m={range:{startColumn:e.actualColumn,endColumn:e.actualColumn,startRow:e.actualRow,endRow:e.actualRow},value:{v:String(i)===String(c)?u:c,p:null}};this._commandService.executeCommand(G.SetRangeValuesCommand.id,m)}};ht=Or([rt(0,s.ICommandService),rt(1,I.Inject(exports.DataValidationFormulaService)),rt(2,I.Inject(s.ThemeService))],ht);const We=1,pt=0;class Er extends D.BaseDataValidator{constructor(){super(...arguments);_(this,"id",s.DataValidationType.CHECKBOX);_(this,"title","dataValidation.checkbox.title");_(this,"operators",[]);_(this,"scopes",["sheet"]);_(this,"formulaInput",Qt);_(this,"canvasRender",this.injector.createInstance(ht));_(this,"_formulaService",this.injector.get(exports.DataValidationFormulaService))}skipDefaultFontRender(e,t,a){const{formula1:r,formula2:i}=this.parseFormulaSync(e,a.unitId,a.subUnitId),l=`${t!=null?t:""}`;return!l||l===`${r}`||l===`${i}`}validatorFormula(e){const{formula1:t,formula2:a}=e,r=!s.Tools.isBlank(t),i=!s.Tools.isBlank(a),l=t===a;return{success:r&&i&&!l||!r&&!i,formula1:r?l?this.localeService.t("dataValidation.validFail.checkboxEqual"):"":this.localeService.t("dataValidation.validFail.common"),formula2:i?l?this.localeService.t("dataValidation.validFail.checkboxEqual"):"":this.localeService.t("dataValidation.validFail.common")}}async parseFormula(e,t,a){var d,c;const{formula1:r=We,formula2:i=pt}=e,l=await this._formulaService.getRuleFormulaResult(t,a,e.uid);return{formula1:s.isFormulaString(r)?he((d=l==null?void 0:l[0])==null?void 0:d.result):r,formula2:s.isFormulaString(i)?he((c=l==null?void 0:l[1])==null?void 0:c.result):i}}parseFormulaSync(e,t,a){var d,c;const{formula1:r=We,formula2:i=pt}=e,l=this._formulaService.getRuleFormulaResultSync(t,a,e.uid);return{formula1:s.isFormulaString(r)?he((d=l==null?void 0:l[0])==null?void 0:d.result):r,formula2:s.isFormulaString(i)?he((c=l==null?void 0:l[1])==null?void 0:c.result):i}}async isValidType(e,t,a){const{value:r,unitId:i,subUnitId:l}=e,{formula1:d,formula2:c}=await this.parseFormula(a,i,l);return!s.Tools.isDefine(d)||!s.Tools.isDefine(c)?!0:s.Tools.isDefine(r)&&(String(r)===String(d)||String(r)===String(c))}generateRuleErrorMessage(e){return this.localeService.t("dataValidation.checkbox.error")}}const Ee=[s.DataValidationOperator.BETWEEN,s.DataValidationOperator.NOT_BETWEEN],ot=86400;function Fr(n,o=!0){if(o&&n>=0){if(n===0)return[1900,1,0];if(n===60)return[1900,2,29];if(n<60)return[1900,n<32?1:2,(n-1)%31+1]}let e=n+68569+2415019;const t=Math.floor(4*e/146097);e=e-Math.floor((146097*t+3)/4);const a=Math.floor(4e3*(e+1)/1461001);e=e-Math.floor(1461*a/4)+31;const r=Math.floor(80*e/2447),i=e-Math.floor(2447*r/80);e=Math.floor(r/11);const l=r+2-12*e;return[100*(t-49)+a+e|0,l|0,i|0]}const Tr=n=>{let o=n|0;const e=ot*(n-o);let t=Math.floor(e);e-t>.9999&&(t+=1,t===ot&&(t=0,o+=1));const a=t<0?ot+t:t,[r,i,l]=Fr(n,!0),d=Math.floor(a/60/60)%60,c=Math.floor(a/60)%60,u=Math.floor(a)%60,m=new Date(0);return m.setUTCFullYear(r,i-1,l),m.setUTCHours(d,c,u),m.getTime()},br={[s.DataValidationOperator.BETWEEN]:"dataValidation.date.operators.between",[s.DataValidationOperator.EQUAL]:"dataValidation.date.operators.equal",[s.DataValidationOperator.GREATER_THAN]:"dataValidation.date.operators.greaterThan",[s.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.date.operators.greaterThanOrEqual",[s.DataValidationOperator.LESS_THAN]:"dataValidation.date.operators.lessThan",[s.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.date.operators.lessThanOrEqual",[s.DataValidationOperator.NOT_BETWEEN]:"dataValidation.date.operators.notBetween",[s.DataValidationOperator.NOT_EQUAL]:"dataValidation.date.operators.notEqual"};s.DataValidationOperator.BETWEEN+"",s.DataValidationOperator.EQUAL+"",s.DataValidationOperator.GREATER_THAN+"",s.DataValidationOperator.GREATER_THAN_OR_EQUAL+"",s.DataValidationOperator.LESS_THAN+"",s.DataValidationOperator.LESS_THAN_OR_EQUAL+"",s.DataValidationOperator.NOT_BETWEEN+"",s.DataValidationOperator.NOT_EQUAL+"";const Nr={[s.DataValidationOperator.BETWEEN]:"dataValidation.date.ruleName.between",[s.DataValidationOperator.EQUAL]:"dataValidation.date.ruleName.equal",[s.DataValidationOperator.GREATER_THAN]:"dataValidation.date.ruleName.greaterThan",[s.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.date.ruleName.greaterThanOrEqual",[s.DataValidationOperator.LESS_THAN]:"dataValidation.date.ruleName.lessThan",[s.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.date.ruleName.lessThanOrEqual",[s.DataValidationOperator.NOT_BETWEEN]:"dataValidation.date.ruleName.notBetween",[s.DataValidationOperator.NOT_EQUAL]:"dataValidation.date.ruleName.notEqual"},Lr={[s.DataValidationOperator.BETWEEN]:"dataValidation.date.errorMsg.between",[s.DataValidationOperator.EQUAL]:"dataValidation.date.errorMsg.equal",[s.DataValidationOperator.GREATER_THAN]:"dataValidation.date.errorMsg.greaterThan",[s.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.date.errorMsg.greaterThanOrEqual",[s.DataValidationOperator.LESS_THAN]:"dataValidation.date.errorMsg.lessThan",[s.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.date.errorMsg.lessThanOrEqual",[s.DataValidationOperator.NOT_BETWEEN]:"dataValidation.date.errorMsg.notBetween",[s.DataValidationOperator.NOT_EQUAL]:"dataValidation.date.errorMsg.notEqual"},It="{FORMULA1}",Mt="{FORMULA2}",yt=n=>Re(n).isValid(),Ae=n=>{if(!(n==null||typeof n=="boolean"))return typeof n=="number"||!Number.isNaN(+n)?Re(Tr(+n)):Re(n)};class Ar extends D.BaseDataValidator{constructor(){super(...arguments);_(this,"id",s.DataValidationType.DATE);_(this,"title","dataValidation.date.title");_(this,"operators",[s.DataValidationOperator.BETWEEN,s.DataValidationOperator.EQUAL,s.DataValidationOperator.GREATER_THAN,s.DataValidationOperator.GREATER_THAN_OR_EQUAL,s.DataValidationOperator.LESS_THAN,s.DataValidationOperator.LESS_THAN_OR_EQUAL,s.DataValidationOperator.NOT_BETWEEN,s.DataValidationOperator.NOT_EQUAL]);_(this,"scopes",["sheet"]);_(this,"formulaInput",Te);_(this,"dropdown",aa);_(this,"_formulaService",this.injector.get(exports.DataValidationFormulaService));_(this,"transformDate",Ae)}async parseFormula(e,t,a){var d,c;const r=await this._formulaService.getRuleFormulaResult(t,a,e.uid),{formula1:i,formula2:l}=e;return{formula1:Ae(s.isFormulaString(i)?he((d=r==null?void 0:r[0])==null?void 0:d.result):i),formula2:Ae(s.isFormulaString(l)?he((c=r==null?void 0:r[1])==null?void 0:c.result):l)}}async isValidType(e){const{value:t}=e;return typeof t=="string"?Re(t).isValid():typeof t=="number"}_validatorSingleFormula(e){return!s.Tools.isBlank(e)&&(s.isFormulaString(e)||!Number.isNaN(+e)||!!e&&Re(e).isValid())}validatorFormula(e){const t=e.operator;if(!t)return{success:!1};const a=this._validatorSingleFormula(e.formula1),r=this.localeService.t("dataValidation.validFail.date");if(Ee.includes(t)){const l=this._validatorSingleFormula(e.formula2);return{success:a&&l,formula1:a?void 0:r,formula2:l?void 0:r}}return{success:a,formula1:a?void 0:r}}transform(e,t,a){const{value:r}=e;return{...e,value:Ae(r)}}async validatorIsEqual(e,t,a){const{value:r}=e,{formula1:i}=t;return i?r.isSame(i):!0}async validatorIsNotEqual(e,t){const{value:a}=e,{formula1:r}=t;return r?!a.isSame(r):!0}async validatorIsBetween(e,t){const{value:a}=e,{formula1:r,formula2:i}=t;if(!r||!i)return!1;const l=r.isAfter(i)?i:r,d=l===r?i:r;return(a.isAfter(l)||a.isSame(l))&&(a.isBefore(d)||a.isSame(d))}async validatorIsNotBetween(e,t){const{value:a}=e,{formula1:r,formula2:i}=t;if(!r||!i)return!1;const l=r.isAfter(i)?i:r,d=l===r?i:r;return a.isBefore(l)||a.isAfter(d)}async validatorIsGreaterThan(e,t){const{value:a}=e,{formula1:r}=t;return r?a.isAfter(r):!0}async validatorIsGreaterThanOrEqual(e,t){const{value:a}=e,{formula1:r}=t;return r?a.isAfter(r)||a.isSame(r):!0}async validatorIsLessThan(e,t){const{value:a}=e,{formula1:r}=t;return r?a.isBefore(r)||a.isSame(r):!0}async validatorIsLessThanOrEqual(e,t){const{value:a}=e,{formula1:r}=t;return r?a.isBefore(r)||a.isSame(r):!0}validatorFormulaValue(e){if(!s.Tools.isDefine(e.operator))return;if(Ee.includes(e.operator)){if(s.Tools.isBlank(e.formula1)||s.Tools.isBlank(e.formula2))return"";if(!yt(e.formula1)||!yt(e.formula2))return""}else if(s.Tools.isBlank(e.formula1))return""}get operatorNames(){return this.operators.map(e=>this.localeService.t(br[e]))}generateRuleName(e){var a,r;if(!e.operator)return this.titleStr;const t=this.localeService.t(Nr[e.operator]).replace(It,(a=e.formula1)!=null?a:"").replace(Mt,(r=e.formula2)!=null?r:"");return`${this.titleStr} ${t}`}generateRuleErrorMessage(e){var a,r;return e.operator?`${this.localeService.t(Lr[e.operator]).replace(It,(a=e.formula1)!=null?a:"").replace(Mt,(r=e.formula2)!=null?r:"")}`:this.titleStr}}var Pr=Object.defineProperty,jr=Object.getOwnPropertyDescriptor,xr=(n,o,e,t)=>{for(var a=t>1?void 0:t?jr(o,e):o,r=n.length-1,i;r>=0;r--)(i=n[r])&&(a=(t?i(o,e,a):i(a))||a);return t&&a&&Pr(o,e,a),a},wt=(n,o)=>(e,t)=>o(e,t,n);const Ie=4,Ur=6,se=14,_e=6,ce=2,Br="#565656",Ot=new Path2D("M3.32201 4.84556C3.14417 5.05148 2.85583 5.05148 2.67799 4.84556L0.134292 1.90016C-0.152586 1.56798 0.0505937 1 0.456301 1L5.5437 1C5.94941 1 6.15259 1.56798 5.86571 1.90016L3.32201 4.84556Z");function $r(n,o){const e=n.length;return{id:"d",body:{dataStream:`${n}${s.DEFAULT_EMPTY_DOCUMENT_VALUE}`,textRuns:[{ts:{fs:11,ff:void 0,it:s.BooleanNumber.FALSE,bl:s.BooleanNumber.FALSE,ul:{s:s.BooleanNumber.FALSE},st:{s:s.BooleanNumber.FALSE},ol:{s:s.BooleanNumber.FALSE},cl:void 0,...o,bg:void 0,bd:void 0},st:0,ed:e}]},documentStyle:{pageSize:{width:Number.POSITIVE_INFINITY,height:Number.POSITIVE_INFINITY}}}}function ft(n,o,e){const t=$r(n,e),a=new s.DocumentDataModel(t),r=new Z.DocumentViewModel(a);return{documentSkeleton:Z.DocumentSkeleton.create(r,o),docModel:a,docViewModel:r}}function Et(n,o,e){const{documentSkeleton:t,docModel:a,docViewModel:r}=ft(n,o,e);return{documents:new Z.Documents(`DOCUMENTS_${s.Tools.generateRandomId()}`,t,{pageMarginLeft:0,pageMarginTop:0}),documentSkeleton:t,docModel:a,docViewModel:r}}var mt;let gt=(mt=class{constructor(n,o){_(this,"_dropdownInfoMap",new Map);_(this,"zIndex");_(this,"onPointerEnter");_(this,"onPointerLeave");this._localeService=n,this._commandService=o}_ensureMap(n){let o=this._dropdownInfoMap.get(n);return o||(o=new Map,this._dropdownInfoMap.set(n,o)),o}_generateKey(n,o){return`${n}.${o}`}_drawDownIcon(n,o,e,t,a){const r=e-se+4;let i=4;switch(a){case s.VerticalAlign.MIDDLE:i=(t-se)/2+4;break;case s.VerticalAlign.BOTTOM:i=t-se+4;break}n.save(),n.translateWithPrecision(o.startX+r,o.startY+i),n.fillStyle="#565656",n.fill(Ot),n.restore()}drawWith(n,o,e){var J,A,Y;const{primaryWithCoord:t,row:a,col:r,style:i,data:l,subUnitId:d}=o,c=t.isMergedMainCell?t.mergeInfo:t,u=(J=l.dataValidation)==null?void 0:J.rule,m=(A=l.dataValidation)==null?void 0:A.validator,p=l.fontRenderExtension,{leftOffset:h=0,rightOffset:f=0,topOffset:v=0,downOffset:S=0}=p||{};if(!u||!m||!m.skipDefaultFontRender(u)||(Y=l.dataValidation)!=null&&Y.isSkip)return;const R={startX:c.startX+h,endX:c.endX-f,startY:c.startY+v,endY:c.endY-S},C=R.endX-R.startX,V=R.endY-R.startY,M=this._ensureMap(d),O=this._generateKey(a,r),T=m.getListWithColor(u),b=oe(l),P=`${b!=null?b:""}`,U=T.find($=>$.label===P);let{tb:j,vt:L,ht:H}=i||{};if(j=j!=null?j:s.WrapStrategy.WRAP,L=L!=null?L:s.VerticalAlign.TOP,H=H!=null?H:s.HorizontalAlign.LEFT,u.renderMode===s.DataValidationRenderMode.ARROW){this._drawDownIcon(n,R,C,V,L),n.save(),n.translateWithPrecision(R.startX,R.startY),n.beginPath(),n.rect(0,0,C,V),n.clip();const $=C-se,{documentSkeleton:K,documents:Q,docModel:y}=Et(P,this._localeService,i);j===s.WrapStrategy.WRAP&&y.updateDocumentDataPageSize(Math.max($,1)),K.calculate(),K.getActualSize();const B=Z.getDocsSkeletonPageSize(K),{height:X,width:z}=B;let ee=0;switch(L){case s.VerticalAlign.BOTTOM:ee=V-ce-X;break;case s.VerticalAlign.MIDDLE:ee=(V-ce-X)/2;break;default:ee=ce;break}let F=0;switch(H){case s.HorizontalAlign.CENTER:F=($-z)/2;break;case s.HorizontalAlign.RIGHT:F=$-z;break}n.translate(0,ee),n.save(),n.translateWithPrecision(Ie,0),n.beginPath(),n.rect(0,0,$,X),n.clip(),Q.render(n),n.translateWithPrecision(F,0),n.restore(),n.restore(),M.set(O,{left:R.endX+e.rowHeaderWidth-se,top:R.startY+e.columnHeaderHeight,width:se,height:V})}else{n.save(),n.translateWithPrecision(R.startX,R.startY),n.beginPath(),n.rect(0,0,C,V),n.clip();const $=C-_e*2-Ie-se,{documentSkeleton:K,documents:Q,docModel:y}=Et(P,this._localeService,i);j===s.WrapStrategy.WRAP&&y.updateDocumentDataPageSize(Math.max($,1)),K.calculate();const B=Z.getDocsSkeletonPageSize(K),{height:X,width:z}=B;let ee=0;switch(L){case s.VerticalAlign.BOTTOM:ee=V-ce-X;break;case s.VerticalAlign.MIDDLE:ee=(V-ce-X)/2;break;default:ee=ce;break}let F=0;switch(H){case s.HorizontalAlign.CENTER:F=($-z)/2;break;case s.HorizontalAlign.RIGHT:F=$-z;break}n.translate(_e,ee);const q=Math.max(C-_e*2,1),k=X;Z.Rect.drawWith(n,{width:q,height:k,fill:(U==null?void 0:U.color)||Ve,radius:8}),n.save(),n.translateWithPrecision(Ie,0),n.beginPath(),n.rect(0,0,$,X),n.clip(),n.translateWithPrecision(F,0),Q.render(n),n.restore(),n.translate($+Ie+4,(X-Ur)/2),n.fillStyle=Br,n.fill(Ot),n.restore(),M.set(O,{left:R.startX+_e+e.rowHeaderWidth,top:R.startY+ee+e.columnHeaderHeight,width:q,height:k})}}calcCellAutoHeight(n){var S;const{primaryWithCoord:o,style:e,data:t}=n,a=o.isMergedMainCell?o.mergeInfo:o,r=t.fontRenderExtension,{leftOffset:i=0,rightOffset:l=0,topOffset:d=0,downOffset:c=0}=r||{},u=(S=t.dataValidation)==null?void 0:S.rule;if(!u||u.renderMode===s.DataValidationRenderMode.TEXT)return;const m={startX:a.startX+i,endX:a.endX-l,startY:a.startY+d,endY:a.endY-c},p=m.endX-m.startX,h=oe(t),f=`${h!=null?h:""}`;let{tb:v}=e||{};if(v=v!=null?v:s.WrapStrategy.WRAP,u.renderMode===s.DataValidationRenderMode.ARROW){const R=p-se,{documentSkeleton:C,docModel:V}=ft(f,this._localeService,e);v===s.WrapStrategy.WRAP&&V.updateDocumentDataPageSize(Math.max(R,1)),C.calculate(),C.getActualSize();const M=Z.getDocsSkeletonPageSize(C),{height:O}=M;return O}else{const R=p-_e*2-Ie-se,{documentSkeleton:C,docModel:V}=ft(f,this._localeService,e);v===s.WrapStrategy.WRAP&&V.updateDocumentDataPageSize(Math.max(R,1)),C.calculate();const M=Z.getDocsSkeletonPageSize(C),{height:O}=M;return O+ce*2}}isHit(n,o){const{data:e,subUnitId:t,row:a,col:r}=o,l=this._ensureMap(t).get(this._generateKey(a,r)),d=e.dataValidation;if(!d||!l||d.rule.renderMode===s.DataValidationRenderMode.TEXT)return!1;const{top:c,left:u,width:m,height:p}=l,{x:h,y:f}=n;return h>=u&&h<=u+m&&f>=c&&f<=c+p}onPointerDown(n,o){if(o.button===2)return;const{unitId:e,subUnitId:t,row:a,col:r}=n,i={unitId:e,subUnitId:t,row:a,column:r};this._commandService.executeCommand(Xe.id,i)}},_(mt,"padding",{l:_e+Ie,r:se+_e,t:ce,b:ce}),mt);gt=xr([wt(0,I.Inject(s.LocaleService)),wt(1,s.ICommandService)],gt);const Wr="LIST_RENDER_MODE_OPTION_INPUT";function He(n){var a;const{value:o,onChange:e}=n,t=N.useDependency(s.LocaleService);return g.jsx(w.FormLayout,{label:t.t("dataValidation.renderMode.label"),children:g.jsxs(w.RadioGroup,{value:`${(a=o.renderMode)!=null?a:s.DataValidationRenderMode.CUSTOM}`,onChange:r=>e({...o,renderMode:+r}),children:[g.jsx(w.Radio,{value:`${s.DataValidationRenderMode.CUSTOM}`,children:t.t("dataValidation.renderMode.chip")}),g.jsx(w.Radio,{value:`${s.DataValidationRenderMode.ARROW}`,children:t.t("dataValidation.renderMode.arrow")}),g.jsx(w.Radio,{value:`${s.DataValidationRenderMode.TEXT}`,children:t.t("dataValidation.renderMode.text")})]})})}He.componentKey=Wr;function nt(n){if(!n)return[];const o=new Set;return n.forEach(e=>{e.forEach(t=>{const a=oe(t);a!=null&&o.add(a.toString())})}),[...o]}const Hr=["if","indirect","choose","offset"];function kr(n,o){if(!s.isFormulaString(n)||ie.isReferenceString(n.slice(1)))return!0;const t=o.sequenceNodesBuilder(n);return t&&t.some(a=>typeof a=="object"&&a.nodeType===ie.sequenceNodeType.FUNCTION&&Hr.indexOf(a.token.toLowerCase())>-1)}class Kt extends D.BaseDataValidator{constructor(){super(...arguments);_(this,"formulaService",this.injector.get(exports.DataValidationFormulaService));_(this,"_lexer",this.injector.get(ie.LexerTreeBuilder));_(this,"id",s.DataValidationType.LIST);_(this,"title","dataValidation.list.title");_(this,"operators",[]);_(this,"scopes",["sheet"]);_(this,"formulaInput",zt);_(this,"canvasRender",this.injector.createInstance(gt));_(this,"dropdown",ta);_(this,"optionsInput",He.componentKey)}skipDefaultFontRender(e){return e.renderMode!==s.DataValidationRenderMode.TEXT}validatorFormula(e){var r;const t=!s.Tools.isBlank(e.formula1),a=kr((r=e.formula1)!=null?r:"",this._lexer);return{success:!!(t&&a),formula1:t?a?void 0:this.localeService.t("dataValidation.validFail.listInvalid"):this.localeService.t("dataValidation.validFail.list")}}parseCellValue(e){const t=e.toString();return Me(t)}async parseFormula(e,t,a){var l;const{formula1:r=""}=e,i=await this.formulaService.getRuleFormulaResult(t,a,e.uid);return{formula1:s.isFormulaString(r)?nt((l=i==null?void 0:i[0])==null?void 0:l.result):Me(r),formula2:void 0}}async isValidType(e,t,a){const{value:r}=e,{formula1:i=[]}=t;return this.parseCellValue(r).every(d=>i.includes(d))}generateRuleName(){return this.localeService.t("dataValidation.list.name")}generateRuleErrorMessage(){return this.localeService.t("dataValidation.list.error")}getList(e,t,a){var p,h,f;const{formula1:r=""}=e,i=this.injector.get(s.IUniverInstanceService),l=(p=t?i.getUniverSheetInstance(t):void 0)!=null?p:i.getCurrentUnitForType(s.UniverInstanceType.UNIVER_SHEET);if(!l)return[];const d=(h=a?l.getSheetBySheetId(a):void 0)!=null?h:l.getActiveSheet(),c=l.getUnitId(),u=d.getSheetId(),m=this.formulaService.getRuleFormulaResultSync(c,u,e.uid);return s.isFormulaString(r)?nt((f=m==null?void 0:m[0])==null?void 0:f.result):Me(r)}async getListAsync(e,t,a){var p,h,f;const{formula1:r=""}=e,i=this.injector.get(s.IUniverInstanceService),l=(p=t?i.getUniverSheetInstance(t):void 0)!=null?p:i.getCurrentUnitForType(s.UniverInstanceType.UNIVER_SHEET);if(!l)return[];const d=(h=a?l.getSheetBySheetId(a):void 0)!=null?h:l.getActiveSheet(),c=l.getUnitId(),u=d.getSheetId(),m=await this.formulaService.getRuleFormulaResult(c,u,e.uid);return s.isFormulaString(r)?nt((f=m==null?void 0:m[0])==null?void 0:f.result):Me(r)}getListWithColor(e,t,a){const r=this.getList(e,t,a),i=(e.formula2||"").split(",");return r.map((l,d)=>({label:l,color:i[d]}))}getListWithColorMap(e,t,a){const r=this.getListWithColor(e,t,a),i={};return r.forEach(l=>{l.color&&(i[l.label]=l.color)}),i}}function ke(n){let o=n;return typeof n=="string"?((n.startsWith("¥")||n.startsWith("$"))&&(o=n.slice(1)),+o):+n}class Yr extends D.BaseDataValidator{constructor(){super(...arguments);_(this,"_formulaService",this.injector.get(exports.DataValidationFormulaService));_(this,"id",s.DataValidationType.DECIMAL);_(this,"title","dataValidation.decimal.title");_(this,"operators",[s.DataValidationOperator.BETWEEN,s.DataValidationOperator.EQUAL,s.DataValidationOperator.GREATER_THAN,s.DataValidationOperator.GREATER_THAN_OR_EQUAL,s.DataValidationOperator.LESS_THAN,s.DataValidationOperator.LESS_THAN_OR_EQUAL,s.DataValidationOperator.NOT_BETWEEN,s.DataValidationOperator.NOT_EQUAL]);_(this,"scopes",["sheet"]);_(this,"formulaInput",Te);_(this,"dropDownInput")}_isFormulaOrNumber(e){return!s.Tools.isBlank(e)&&(s.isFormulaString(e)||!Number.isNaN(+e))}async isValidType(e,t,a){const{value:r}=e;return!Number.isNaN(ke(r))}transform(e,t,a){const{value:r}=e;return{...e,value:ke(r)}}_parseNumber(e){return e==null?Number.NaN:+e}async parseFormula(e,t,a){var c,u,m,p,h,f,v,S;const r=await this._formulaService.getRuleFormulaResult(t,a,e.uid),{formula1:i,formula2:l}=e;return{formula1:this._parseNumber(s.isFormulaString(i)?(p=(m=(u=(c=r==null?void 0:r[0])==null?void 0:c.result)==null?void 0:u[0])==null?void 0:m[0])==null?void 0:p.v:i),formula2:this._parseNumber(s.isFormulaString(l)?(S=(v=(f=(h=r==null?void 0:r[1])==null?void 0:h.result)==null?void 0:f[0])==null?void 0:v[0])==null?void 0:S.v:l)}}validatorFormula(e){const t=e.operator;if(!t)return{success:!1};const a=s.Tools.isDefine(e.formula1)&&this._isFormulaOrNumber(e.formula1),r=s.Tools.isDefine(e.formula2)&&this._isFormulaOrNumber(e.formula2),i=Ee.includes(t),l=this.localeService.t("dataValidation.validFail.number");return i?{success:a&&r,formula1:a?void 0:l,formula2:r?void 0:l}:{success:a,formula1:a?"":l}}async validatorIsEqual(e,t,a){const{formula1:r}=t,{value:i}=e;return Number.isNaN(r)?!0:i===r}async validatorIsNotEqual(e,t,a){const{formula1:r}=t;return Number.isNaN(r)?!0:e.value!==r}async validatorIsBetween(e,t,a){const{formula1:r,formula2:i}=t;if(Number.isNaN(r)||Number.isNaN(i))return!0;const l=Math.min(r,i),d=Math.max(r,i);return e.value>=l&&e.value<=d}async validatorIsNotBetween(e,t,a){const{formula1:r,formula2:i}=t;if(Number.isNaN(r)||Number.isNaN(i))return!0;const l=Math.min(r,i),d=Math.max(r,i);return e.value<l||e.value>d}async validatorIsGreaterThan(e,t,a){const{formula1:r}=t;return Number.isNaN(r)?!0:e.value>r}async validatorIsGreaterThanOrEqual(e,t,a){const{formula1:r}=t;return Number.isNaN(r)?!0:e.value>=r}async validatorIsLessThan(e,t,a){const{formula1:r}=t;return Number.isNaN(r)?!0:e.value<r}async validatorIsLessThanOrEqual(e,t,a){const{formula1:r}=t;return Number.isNaN(r)?!0:e.value<=r}}const qr="{FORMULA1}",Gr="{FORMULA2}";class Xr extends D.BaseDataValidator{constructor(){super(...arguments);_(this,"id",s.DataValidationType.TEXT_LENGTH);_(this,"title","dataValidation.textLength.title");_(this,"operators",[s.DataValidationOperator.BETWEEN,s.DataValidationOperator.EQUAL,s.DataValidationOperator.GREATER_THAN,s.DataValidationOperator.GREATER_THAN_OR_EQUAL,s.DataValidationOperator.LESS_THAN,s.DataValidationOperator.LESS_THAN_OR_EQUAL,s.DataValidationOperator.NOT_BETWEEN,s.DataValidationOperator.NOT_EQUAL]);_(this,"scopes",["sheet"]);_(this,"formulaInput",Te);_(this,"_formulaService",this.injector.get(exports.DataValidationFormulaService))}_isFormulaOrInt(e){return!s.Tools.isBlank(e)&&(s.isFormulaString(e)||!Number.isNaN(+e)&&Number.isInteger(+e))}validatorFormula(e){const t=e.operator;if(!t)return{success:!1};const a=s.Tools.isDefine(e.formula1)&&this._isFormulaOrInt(e.formula1),r=s.Tools.isDefine(e.formula2)&&this._isFormulaOrInt(e.formula2),i=Ee.includes(t),l=this.localeService.t("dataValidation.validFail.number");return i?{success:a&&r,formula1:a?void 0:l,formula2:r?void 0:l}:{success:a,formula1:l}}_parseNumber(e){return e==null?Number.NaN:+e}_isValidFormula(e){return!Number.isNaN(e)}async parseFormula(e,t,a){var d,c,u,m,p,h,f,v;const r=await this._formulaService.getRuleFormulaResult(t,a,e.uid),{formula1:i,formula2:l}=e;return{formula1:this._parseNumber(s.isFormulaString(i)?(m=(u=(c=(d=r==null?void 0:r[0])==null?void 0:d.result)==null?void 0:c[0])==null?void 0:u[0])==null?void 0:m.v:i),formula2:this._parseNumber(s.isFormulaString(l)?(v=(f=(h=(p=r==null?void 0:r[1])==null?void 0:p.result)==null?void 0:h[0])==null?void 0:f[0])==null?void 0:v.v:l)}}transform(e,t,a){return{...e,value:e.value.toString().length}}async isValidType(e,t,a){const{value:r}=e;return typeof r=="string"||typeof r=="number"}async validatorIsEqual(e,t,a){const{formula1:r}=t;return s.Tools.isDefine(r)?e.value===r:!1}async validatorIsNotEqual(e,t,a){const{formula1:r}=t;return s.Tools.isDefine(r)?e.value!==r:!1}async validatorIsBetween(e,t,a){const{formula1:r,formula2:i}=t,{value:l}=e;if(!this._isValidFormula(r)||!this._isValidFormula(i))return!1;const d=Math.max(r,i),c=Math.min(r,i);return l>=c&&l<=d}async validatorIsNotBetween(e,t,a){const{formula1:r,formula2:i}=t,{value:l}=e;if(!this._isValidFormula(r)||!this._isValidFormula(i))return!1;const d=Math.max(r,i),c=Math.min(r,i);return l<c||l>d}async validatorIsGreaterThan(e,t,a){const{formula1:r}=t,{value:i}=e;return this._isValidFormula(r)?i>r:!1}async validatorIsGreaterThanOrEqual(e,t,a){const{formula1:r}=t,{value:i}=e;return this._isValidFormula(r)?i>=r:!1}async validatorIsLessThan(e,t,a){const{formula1:r}=t,{value:i}=e;return this._isValidFormula(r)?i<r:!1}async validatorIsLessThanOrEqual(e,t,a){const{formula1:r}=t,{value:i}=e;return this._isValidFormula(r)?i<=r:!1}generateRuleErrorMessage(e){var a,r;return e.operator?`${this.localeService.t(D.TextLengthErrorTitleMap[e.operator]).replace(qr,(a=e.formula1)!=null?a:"").replace(Gr,(r=e.formula2)!=null?r:"")}`:this.titleStr}}class zr extends D.BaseDataValidator{constructor(){super(...arguments);_(this,"_formulaService",this.injector.get(exports.DataValidationFormulaService));_(this,"id",s.DataValidationType.WHOLE);_(this,"title","dataValidation.whole.title");_(this,"operators",[s.DataValidationOperator.BETWEEN,s.DataValidationOperator.EQUAL,s.DataValidationOperator.GREATER_THAN,s.DataValidationOperator.GREATER_THAN_OR_EQUAL,s.DataValidationOperator.LESS_THAN,s.DataValidationOperator.LESS_THAN_OR_EQUAL,s.DataValidationOperator.NOT_BETWEEN,s.DataValidationOperator.NOT_EQUAL]);_(this,"scopes",["sheet"]);_(this,"formulaInput",Te);_(this,"dropDownInput")}_isFormulaOrInt(e){return!s.Tools.isBlank(e)&&(s.isFormulaString(e)||!Number.isNaN(+e)&&Number.isInteger(+e))}async isValidType(e,t,a){const{value:r}=e,i=ke(r);return!Number.isNaN(i)&&Number.isInteger(i)}transform(e,t,a){const{value:r}=e;return{...e,value:ke(r)}}_parseNumber(e){return e==null?Number.NaN:+e}async parseFormula(e,t,a){var c,u,m,p,h,f,v,S;const r=await this._formulaService.getRuleFormulaResult(t,a,e.uid),{formula1:i,formula2:l}=e;return{formula1:this._parseNumber(s.isFormulaString(i)?(p=(m=(u=(c=r==null?void 0:r[0])==null?void 0:c.result)==null?void 0:u[0])==null?void 0:m[0])==null?void 0:p.v:i),formula2:this._parseNumber(s.isFormulaString(l)?(S=(v=(f=(h=r==null?void 0:r[1])==null?void 0:h.result)==null?void 0:f[0])==null?void 0:v[0])==null?void 0:S.v:l)}}validatorFormula(e){const t=e.operator;if(!t)return{success:!1};const a=s.Tools.isDefine(e.formula1)&&this._isFormulaOrInt(e.formula1),r=s.Tools.isDefine(e.formula2)&&this._isFormulaOrInt(e.formula2),i=Ee.includes(t),l=this.localeService.t("dataValidation.validFail.number");return i?{success:a&&r,formula1:a?void 0:l,formula2:r?void 0:l}:{success:a,formula1:l}}async validatorIsEqual(e,t,a){const{formula1:r}=t,{value:i}=e;return Number.isNaN(r)?!0:i===r}async validatorIsNotEqual(e,t,a){const{formula1:r}=t;return Number.isNaN(r)?!0:e.value!==r}async validatorIsBetween(e,t,a){const{formula1:r,formula2:i}=t;if(Number.isNaN(r)||Number.isNaN(i))return!0;const l=Math.min(r,i),d=Math.max(r,i);return e.value>=l&&e.value<=d}async validatorIsNotBetween(e,t,a){const{formula1:r,formula2:i}=t;if(Number.isNaN(r)||Number.isNaN(i))return!0;const l=Math.min(r,i),d=Math.max(r,i);return e.value<l||e.value>d}async validatorIsGreaterThan(e,t,a){const{formula1:r}=t;return Number.isNaN(r)?!0:e.value>r}async validatorIsGreaterThanOrEqual(e,t,a){const{formula1:r}=t;return Number.isNaN(r)?!0:e.value>=r}async validatorIsLessThan(e,t,a){const{formula1:r}=t;return Number.isNaN(r)?!0:e.value<r}async validatorIsLessThanOrEqual(e,t,a){const{formula1:r}=t;return Number.isNaN(r)?!0:e.value<=r}}const Zt=4,Qr=0,it=4,Jt=4,vt=6,Ye=6,Se=14;function Kr(n,o){const e=Z.FontCache.getTextSize(n,o),t=e.width+Zt*2,{ba:a,bd:r}=e,i=a+r;return{width:t,height:i+Qr*2,ba:a}}function Ft(n,o,e,t){const a=e-Se-vt,r=t-Ye*2,i=n.map(u=>({layout:Kr(u,o),text:u}));let l;const d=[];i.forEach(u=>{const{layout:m}=u,{width:p,height:h}=m;!l||l.width+p+it>a?(l={width:p,height:h,items:[{...u,left:0}]},d.push(l)):(l.items.push({...u,left:l.width+it}),l.width=l.width+p+it)});let c=0;return d.forEach((u,m)=>{m===d.length-1?c+=u.height:c+=u.height+Jt}),{lines:d,totalHeight:c,contentWidth:a,contentHeight:r,cellAutoHeight:c+Ye*2}}const Zr=8;class Jr extends Z.Shape{static drawWith(o,e){const{fontFamily:t,fontString:a,fontSize:r,info:i,fill:l,color:d}=e,{layout:c,text:u}=i;o.save(),Z.Rect.drawWith(o,{width:c.width,height:c.height,radius:Zr,fill:l||Ve}),o.translateWithPrecision(Zt,c.ba),o.font=a,o.fillStyle=d,o.fillText(u,0,0),o.restore()}}var eo=Object.defineProperty,to=Object.getOwnPropertyDescriptor,ao=(n,o,e,t)=>{for(var a=t>1?void 0:t?to(o,e):o,r=n.length-1,i;r>=0;r--)(i=n[r])&&(a=(t?i(o,e,a):i(a))||a);return t&&a&&eo(o,e,a),a},ro=(n,o)=>(e,t)=>o(e,t,n);const oo=new Path2D("M3.32201 4.84556C3.14417 5.05148 2.85583 5.05148 2.67799 4.84556L0.134292 1.90016C-0.152586 1.56798 0.0505937 1 0.456301 1L5.5437 1C5.94941 1 6.15259 1.56798 5.86571 1.90016L3.32201 4.84556Z");let _t=class{constructor(n){_(this,"zIndex");_(this,"_dropdownInfoMap",new Map);this._commandService=n}_ensureMap(n){let o=this._dropdownInfoMap.get(n);return o||(o=new Map,this._dropdownInfoMap.set(n,o)),o}_generateKey(n,o){return`${n}.${o}`}_drawDownIcon(n,o,e,t,a){const r=e-Se+4;let i=4;switch(a){case s.VerticalAlign.MIDDLE:i=(t-Se)/2+4;break;case s.VerticalAlign.BOTTOM:i=t-Se+4;break}n.save(),n.translateWithPrecision(o.startX+r,o.startY+i),n.fillStyle="#565656",n.fill(oo),n.restore()}drawWith(n,o,e,t){var B,X,z;const{primaryWithCoord:a,row:r,col:i,style:l,data:d,subUnitId:c}=o,u=a.isMergedMainCell?a.mergeInfo:a,m=d.fontRenderExtension,{leftOffset:p=0,rightOffset:h=0,topOffset:f=0,downOffset:v=0}=m||{},S=d.dataValidation,R=this._ensureMap(c),C=this._generateKey(r,i);if(!S||(B=d.dataValidation)!=null&&B.isSkip)return;const V={startX:u.startX+p,endX:u.endX-h,startY:u.startY+f,endY:u.endY-v},M=V.endX-V.startX,O=V.endY-V.startY,{cl:T}=l||{},b=(X=typeof T=="object"?T==null?void 0:T.rgb:T)!=null?X:"#000",P=Z.getFontStyleString(l!=null?l:void 0),{rule:U,validator:j}=S,L=j,{vt:H,ht:J}=l||{},A=H!=null?H:s.VerticalAlign.MIDDLE,Y=(z=oe(d))!=null?z:"",$=L.parseCellValue(Y),K=L.getListWithColorMap(U),Q=Ft($,P,M,O);this._drawDownIcon(n,V,M,O,A),n.save(),n.translateWithPrecision(V.startX,V.startY),n.beginPath(),n.rect(0,0,M-Se,O),n.clip(),n.translateWithPrecision(vt,Ye);let y=0;switch(A){case s.VerticalAlign.MIDDLE:y=(Q.contentHeight-Q.totalHeight)/2;break;case s.VerticalAlign.BOTTOM:y=Q.contentHeight-Q.totalHeight;break}n.translateWithPrecision(0,y),Q.lines.forEach((ee,F)=>{n.save();const{width:q,height:k,items:te}=ee;let de=0;switch(J){case s.HorizontalAlign.RIGHT:de=Q.contentWidth-q;break;case s.HorizontalAlign.CENTER:de=(Q.contentWidth-q)/2;break}n.translate(de,F*(k+Jt)),te.forEach(Ze=>{n.save(),n.translateWithPrecision(Ze.left,0),Jr.drawWith(n,{...P,info:Ze,color:b,fill:K[Ze.text]}),n.restore()}),n.restore()}),n.restore(),R.set(C,{left:V.startX,top:V.startY,width:Q.contentWidth+vt+Se,height:Q.contentHeight+Ye*2})}calcCellAutoHeight(n){var M;const{primaryWithCoord:o,style:e,data:t}=n,a=t.fontRenderExtension,{leftOffset:r=0,rightOffset:i=0,topOffset:l=0,downOffset:d=0}=a||{},c=o.isMergedMainCell?o.mergeInfo:o,u={startX:c.startX+r,endX:c.endX-i,startY:c.startY+l,endY:c.endY-d},m=t.dataValidation;if(!m)return;const p=u.endX-u.startX,h=u.endY-u.startY,f=(M=oe(t))!=null?M:"",{validator:v}=m,R=v.parseCellValue(f),C=Z.getFontStyleString(e!=null?e:void 0);return Ft(R,C,p,h).cellAutoHeight}isHit(n,o){const{primaryWithCoord:e}=o,t=e.isMergedMainCell?e.mergeInfo:e,{endX:a}=t,{x:r}=n;return r>=a-Se&&r<=a}onPointerDown(n,o){if(o.button===2)return;const{unitId:e,subUnitId:t,row:a,col:r}=n,i={unitId:e,subUnitId:t,row:a,column:r};this._commandService.executeCommand(Xe.id,i)}};_t=ao([ro(0,s.ICommandService)],_t);class no extends Kt{constructor(){super(...arguments);_(this,"id",s.DataValidationType.LIST_MULTIPLE);_(this,"title","dataValidation.listMultiple.title");_(this,"canvasRender",this.injector.createInstance(_t))}skipDefaultFontRender(){return!0}}const ea="data-validation-single",Vt="sheet.menu.data-validation";function io(n){return{id:Vt,type:W.MenuItemType.SUBITEMS,positions:[W.MenuPosition.TOOLBAR_START],group:W.MenuGroup.TOOLBAR_FORMULAS_INSERT,icon:ea,tooltip:"dataValidation.title",hidden$:W.getMenuHiddenObservable(n,s.UniverInstanceType.UNIVER_SHEET),disabled$:x.getCurrentRangeDisable$(n,{workbookTypes:[G.WorkbookEditablePermission],worksheetTypes:[G.WorksheetSetCellStylePermission,G.WorksheetEditPermission],rangeTypes:[G.RangeProtectionPermissionEditPoint]})}}function so(n){return{id:Fe.id,title:"dataValidation.panel.title",type:W.MenuItemType.BUTTON,positions:[Vt]}}function lo(n){return{id:St.id,title:"dataValidation.panel.add",type:W.MenuItemType.BUTTON,positions:[Vt]}}var co=Object.defineProperty,uo=Object.getOwnPropertyDescriptor,mo=(n,o,e,t)=>{for(var a=t>1?void 0:t?uo(o,e):o,r=n.length-1,i;r>=0;r--)(i=n[r])&&(a=(t?i(o,e,a):i(a))||a);return t&&a&&co(o,e,a),a},fe=(n,o)=>(e,t)=>o(e,t,n);exports.DataValidationController=class extends s.RxDisposable{constructor(o,e,t,a,r,i,l,d){super(),this._univerInstanceService=o,this._sheetDataValidationService=e,this._dataValidatorRegistryService=t,this._injector=a,this._componentManger=r,this._selectionManagerService=i,this._sheetInterceptorService=l,this._dataValidationModel=d,this._init()}_init(){this._registerValidators(),this._initInstanceChange(),this._componentManger.register(ea,Bt),this._initCommandInterceptor()}_registerValidators(){[Yr,zr,Xr,Ar,Er,Kt,no,Dr].forEach(o=>{const e=this._injector.createInstance(o);this.disposeWithMe(this._dataValidatorRegistryService.register(e)),this.disposeWithMe({dispose:()=>{this._injector.delete(o)}})})}_initInstanceChange(){const o=new s.DisposableCollection;this._univerInstanceService.getCurrentTypeOfUnit$(s.UniverInstanceType.UNIVER_SHEET).subscribe(e=>{o.dispose(),e&&(this._sheetDataValidationService.switchCurrent(e.getUnitId(),e.getActiveSheet().getSheetId()),o.add(s.toDisposable(e.activeSheet$.subscribe(t=>{if(t){const a=e.getUnitId(),r=t.getSheetId();this._sheetDataValidationService.switchCurrent(a,r)}}))))}),this.disposeWithMe(o)}_initCommandInterceptor(){this._sheetInterceptorService.interceptCommand({getMutations:o=>{if(o.id===G.ClearSelectionAllCommand.id){const e=this._univerInstanceService.getCurrentUnitForType(s.UniverInstanceType.UNIVER_SHEET),t=e.getUnitId(),r=e.getActiveSheet().getSheetId(),i=this._selectionManagerService.getSelectionRanges(),l=this._dataValidationModel.ensureManager(t,r),d=l.getRuleObjectMatrix().clone();i&&d.removeRange(i);const c=d.diff(l.getDataValidations()),{redoMutations:u,undoMutations:m}=ye(t,r,c);return{undos:m,redos:u}}return{undos:[],redos:[]}}})}};exports.DataValidationController=mo([s.OnLifecycle(s.LifecycleStages.Rendered,exports.DataValidationController),fe(0,s.IUniverInstanceService),fe(1,I.Inject(exports.SheetDataValidationService)),fe(2,I.Inject(D.DataValidatorRegistryService)),fe(3,I.Inject(I.Injector)),fe(4,I.Inject(W.ComponentManager)),fe(5,I.Inject(G.SelectionManagerService)),fe(6,I.Inject(G.SheetInterceptorService)),fe(7,I.Inject(D.DataValidationModel))],exports.DataValidationController);const ho="univer-data-validation-list-buttons",po="univer-data-validation-list-button",st={dataValidationListButtons:ho,dataValidationListButton:po};function fo(){const n=N.useDependency(s.IUniverInstanceService),o=W.useObservable(()=>n.getCurrentTypeOfUnit$(s.UniverInstanceType.UNIVER_SHEET),void 0,void 0,[]);return o?g.jsx(go,{workbook:o}):null}function go(n){const o=N.useDependency(D.DataValidationModel),e=N.useDependency(s.IUniverInstanceService),t=N.useDependency(s.ICommandService),a=N.useDependency(I.Injector),r=N.useDependency(pe);N.useDependency(exports.DataValidationController);const i=N.useDependency(s.LocaleService),[l,d]=E.useState([]),{workbook:c}=n,u=W.useObservable(c.activeSheet$,void 0,!0),m=c.getUnitId(),p=u==null?void 0:u.getSheetId(),h=o.ensureManager(m,p);E.useEffect(()=>{d(h.getDataValidations());const V=h.dataValidations$.subscribe(M=>{d([...M])});return()=>{V.unsubscribe()}},[h]);const f=async()=>{const V=D.createDefaultNewRule(a),M={unitId:m,subUnitId:p,rule:V};await t.executeCommand(Qe.id,M),r.setActiveRule({unitId:m,subUnitId:p,rule:V})},v=()=>{t.executeCommand(D.RemoveAllDataValidationCommand.id,{unitId:m,subUnitId:p})},R=(V=>{const O=e.getCurrentUnitForType(s.UniverInstanceType.UNIVER_SHEET).getActiveSheet();return V.map(b=>{const{ranges:P}=b;return(P==null?void 0:P.some(j=>{var Y,$;const{startRow:L,startColumn:H,endRow:J,endColumn:A}=j;for(let K=L;K<=J;K++)for(let Q=H;Q<=A;Q++){const y=($=(Y=O.getCell(K,Q))==null?void 0:Y.selectionProtection)==null?void 0:$[0];if((y==null?void 0:y[$e.Edit])===!1||(y==null?void 0:y[$e.View])===!1)return!0}return!1}))?{...b,disable:!0}:{...b}})})(l),C=R==null?void 0:R.some(V=>V.disable);return g.jsxs("div",{children:[R==null?void 0:R.map(V=>{var M;return g.jsx(Xa,{unitId:m,subUnitId:p,onClick:()=>{V.disable||r.setActiveRule({unitId:m,subUnitId:p,rule:V})},rule:V,disable:(M=V.disable)!=null?M:!1},V.uid)}),g.jsxs("div",{className:st.dataValidationListButtons,children:[l.length&&!C?g.jsx(w.Button,{className:st.dataValidationListButton,onClick:v,children:i.t("dataValidation.panel.removeAll")}):null,g.jsx(w.Button,{className:st.dataValidationListButton,type:"primary",onClick:f,children:i.t("dataValidation.panel.add")})]})]})}const vo=()=>{const n=N.useDependency(pe),o=W.useObservable(n.activeRule$,n.activeRule);return o?g.jsx(Ha,{},o.rule.uid):g.jsx(fo,{})},_o="univer-dv-list-dropdown",So="univer-dv-list-dropdown-title",Vo="univer-dv-list-dropdown-list",Ro="univer-dv-list-dropdown-list-container",Do="univer-dv-list-dropdown-selected-icon",Co="univer-dv-list-dropdown-item-container",Io="univer-dv-list-dropdown-item",Mo="univer-dv-list-dropdown-split",yo="univer-dv-list-dropdown-edit",ue={dvListDropdown:_o,dvListDropdownTitle:So,dvListDropdownList:Vo,dvListDropdownListContainer:Ro,dvListDropdownSelectedIcon:Do,dvListDropdownItemContainer:Co,dvListDropdownItem:Io,dvListDropdownSplit:Mo,dvListDropdownEdit:yo},wo=n=>{const{value:o,onChange:e,multiple:t,options:a,title:r,onEdit:i,style:l}=n;return g.jsxs("div",{className:ue.dvListDropdown,style:l,children:[g.jsx("div",{className:ue.dvListDropdownTitle,children:r}),g.jsx("div",{className:ue.dvListDropdownList,children:g.jsx(w.Scrollbar,{children:g.jsx("div",{className:ue.dvListDropdownListContainer,children:a.map((d,c)=>{const u=o.indexOf(d.value)>-1,m=()=>{let p;u?p=new Set(o.filter(f=>f!==d.value)):p=new Set(t?[...o,d.value]:[d.value]);const h=[];a.forEach(f=>{p.has(f.value)&&h.push(f.value)}),e(h)};return g.jsxs("div",{className:ue.dvListDropdownItemContainer,onClick:m,children:[g.jsx("div",{className:ue.dvListDropdownItem,style:{background:d.color||Ve},children:d.label}),g.jsx("div",{className:ue.dvListDropdownSelectedIcon,children:u?g.jsx(Ma,{}):null})]},c)})})})}),g.jsx("div",{className:ue.dvListDropdownSplit}),g.jsx("div",{className:ue.dvListDropdownEdit,children:g.jsx("a",{onClick:i,children:"编辑"})})]})};function Oo(n){var P,U;const{location:o,hideFn:e}=n,{worksheet:t,row:a,col:r,unitId:i,subUnitId:l}=o,d=N.useDependency(s.ICommandService),c=N.useDependency(s.LocaleService),[u,m]=E.useState(""),p=N.useDependency(x.IEditorBridgeService),h=w.RectPopup.useContext(),f=h.right-h.left;if(!t)return null;const v=t.getCell(a,r),S=(P=v==null?void 0:v.dataValidation)==null?void 0:P.rule,R=(U=v==null?void 0:v.dataValidation)==null?void 0:U.validator,C=(S==null?void 0:S.renderMode)===s.DataValidationRenderMode.CUSTOM||(S==null?void 0:S.renderMode)===void 0;if(!v||!S||!R)return;const V=S.type===s.DataValidationType.LIST_MULTIPLE,M=R.getListWithColor(S,i,l),O=u||cr(v),T=Me(O),b=()=>{d.executeCommand(Fe.id,{ruleId:S.uid}),e()};return g.jsx(wo,{style:{minWidth:f,maxWidth:Math.max(f,200)},title:V?c.t("dataValidation.listMultiple.dropdown"):c.t("dataValidation.list.dropdown"),value:T,multiple:V,onChange:j=>{const L=Gt(j),H={unitId:i,subUnitId:l,range:{startColumn:r,endColumn:r,startRow:a,endRow:a},value:{v:L,p:null,f:null,si:null}};p.isVisible()&&p.changeVisible({visible:!1,keycode:W.KeyCode.ESC,eventType:Z.DeviceInputEventType.Keyboard}),d.executeCommand(G.SetRangeValuesCommand.id,H),m(L),V||e()},options:M.map(j=>({label:j.label,value:j.label,color:C?j.color:"transparent"})),onEdit:b})}var Eo=Object.defineProperty,Fo=Object.getOwnPropertyDescriptor,To=(n,o,e,t)=>{for(var a=t>1?void 0:t?Fo(o,e):o,r=n.length-1,i;r>=0;r--)(i=n[r])&&(a=(t?i(o,e,a):i(a))||a);return t&&a&&Eo(o,e,a),a},Oe=(n,o)=>(e,t)=>o(e,t,n);exports.DataValidationRejectInputController=class extends s.Disposable{constructor(o,e,t,a,r){super(),this._editorBridgeService=o,this._dataValidationModel=e,this._dataValidatorRegistryService=t,this._dialogService=a,this._localeService=r,this._initEditorBridgeInterceptor()}_initEditorBridgeInterceptor(){this._editorBridgeService.interceptor.intercept(this._editorBridgeService.interceptor.getInterceptPoints().AFTER_CELL_EDIT_ASYNC,{handler:async(o,e,t)=>{const a=await o,{worksheet:r,row:i,col:l,unitId:d,subUnitId:c}=e,u=this._dataValidationModel.ensureManager(d,c),m=u.getRuleIdByLocation(i,l),p=m?u.getRuleById(m):void 0;if(!p||p.errorStyle!==s.DataValidationErrorStyle.STOP)return t(Promise.resolve(a));const h=await this._dataValidatorRegistryService.getValidatorItem(p.type);if(!h||await h.validator({value:oe(a),row:i,column:l,unitId:d,subUnitId:c},p))return t(Promise.resolve(a));const v=r.getCellRaw(i,l);return this._dialogService.open({width:368,title:{title:this._localeService.t("dataValidation.alert.title")},id:"reject-input-dialog",children:{title:h.getRuleFinalError(p)},footer:{title:E.createElement(w.Button,{type:"primary",onClick:()=>this._dialogService.close("reject-input-dialog")},this._localeService.t("dataValidation.alert.ok"))},onClose:()=>{this._dialogService.close("reject-input-dialog")}}),t(Promise.resolve(v))}})}showReject(o){this._dialogService.open({width:368,title:{title:this._localeService.t("dataValidation.alert.title")},id:"reject-input-dialog",children:{title:o},footer:{title:E.createElement(w.Button,{type:"primary",onClick:()=>this._dialogService.close("reject-input-dialog")},this._localeService.t("dataValidation.alert.ok"))},onClose:()=>{this._dialogService.close("reject-input-dialog")}})}};exports.DataValidationRejectInputController=To([s.OnLifecycle(s.LifecycleStages.Ready,exports.DataValidationRejectInputController),Oe(0,x.IEditorBridgeService),Oe(1,I.Inject(D.DataValidationModel)),Oe(2,I.Inject(D.DataValidatorRegistryService)),Oe(3,W.IDialogService),Oe(4,I.Inject(s.LocaleService))],exports.DataValidationRejectInputController);const bo="univer-dv-date-dropdown",No={dvDateDropdown:bo};function Lo(n){var C,V,M;const{location:o,hideFn:e}=n,{worksheet:t,row:a,col:r,unitId:i,subUnitId:l}=o,d=N.useDependency(s.ICommandService),c=N.useDependency(exports.DataValidationRejectInputController),[u,m]=E.useState();if(!t)return null;const p=t.getCell(a,r),h=(C=p==null?void 0:p.dataValidation)==null?void 0:C.rule,f=(V=p==null?void 0:p.dataValidation)==null?void 0:V.validator;if(!p||!h||!f)return;const v=oe(p),S=(M=f.transformDate(v))!=null?M:Re(),R=S.isValid()?S:Re();return g.jsx("div",{className:No.dvDateDropdown,children:g.jsx(w.DatePanel,{pickerValue:u!=null?u:R,onSelect:async O=>{const T=O.format("YYYY/MM/DD");h.errorStyle!==s.DataValidationErrorStyle.STOP||await f.validator({value:T,unitId:i,subUnitId:l,row:a,column:r},h)?d.executeCommand(G.SetRangeValuesCommand.id,{unitId:i,subUnitId:l,range:{startColumn:r,endColumn:r,startRow:a,endRow:a},value:{v:T,p:null,f:null,si:null}}):c.showReject(f.getRuleFinalError(h)),e()},onPanelChange:O=>{m(O)}})})}const ta="data-validation.list.dropdown",aa="data-validation.date.dropdown";var Ao=Object.defineProperty,Po=Object.getOwnPropertyDescriptor,jo=(n,o,e,t)=>{for(var a=t>1?void 0:t?Po(o,e):o,r=n.length-1,i;r>=0;r--)(i=n[r])&&(a=(t?i(o,e,a):i(a))||a);return t&&a&&Ao(o,e,a),a},re=(n,o)=>(e,t)=>o(e,t,n);const xo={},Uo={tr:{size:6,color:"#fe4b4b"}};exports.DataValidationRenderController=class extends s.RxDisposable{constructor(o,e,t,a,r,i,l,d,c,u,m,p,h,f){super(),this._config=o,this._componentManager=e,this._menuService=t,this._dataValidationModel=a,this._sheetSkeletonManagerService=r,this._renderManagerService=i,this._univerInstanceService=l,this._dataValidatorRegistryService=d,this._editorBridgeService=c,this._dropdownManagerService=u,this._sheetInterceptorService=m,this._injector=p,this._autoHeightController=h,this._commandService=f,this._init()}_init(){this._initComponents(),this._initMenu(),this._initSkeletonChange(),this._initDropdown(),this._initViewModelIntercept(),this._initAutoHeight()}_initMenu(){const{menu:o={}}=this._config;[io,so,lo].forEach(e=>{this.disposeWithMe(this._menuService.addMenuItem(e(this._injector),o))})}_initComponents(){[[At,vo],[Lt,ma],[ta,Oo],[aa,Lo],[He.componentKey,He],..._r].forEach(([o,e])=>{this.disposeWithMe(this._componentManager.register(o,e))})}_initDropdown(){this.disposeWithMe(this._editorBridgeService.visible$.subscribe(o=>{if(!o.visible)return;const e=this._editorBridgeService.getEditCellState();if(e){const{unitId:t,sheetId:a,row:r,column:i}=e,l=this._univerInstanceService.getUniverSheetInstance(t);if(!l)return;const c=this._dataValidationModel.ensureManager(t,a).getRuleByLocation(r,i);if(!c)return;const u=this._dataValidatorRegistryService.getValidatorItem(c.type);if(!(u!=null&&u.dropdown))return;const m=l.getActiveSheet(),p=this._dropdownManagerService.activeDropdown,h=p==null?void 0:p.location;if(h&&h.unitId===t&&h.subUnitId===a&&h.row===r&&h.col===i)return;this._dropdownManagerService.showDropdown({location:{unitId:t,subUnitId:a,row:r,col:i,workbook:l,worksheet:m},componentKey:u.dropdown,onHide:()=>{}})}}))}_initSkeletonChange(){const o=()=>{const e=this._univerInstanceService.getCurrentUnitForType(s.UniverInstanceType.UNIVER_SHEET);if(!e)return;const t=e.getUnitId(),a=e.getActiveSheet().getSheetId(),r=this._sheetSkeletonManagerService.getOrCreateSkeleton({unitId:t,sheetId:a}),i=this._renderManagerService.getRenderById(t);r==null||r.makeDirty(!0),r==null||r.calculate(),i&&i.mainComponent.makeForceDirty()};this.disposeWithMe(this._dataValidationModel.ruleChange$.subscribe(()=>{o()})),this.disposeWithMe(this._dataValidationModel.validStatusChange$.subscribe(()=>{o()}))}_initViewModelIntercept(){this.disposeWithMe(this._sheetInterceptorService.intercept(G.INTERCEPTOR_POINT.CELL_CONTENT,{priority:200,handler:(o,e,t)=>{var V,M,O,T;const{row:a,col:r,unitId:i,subUnitId:l}=e,d=this._dataValidationModel.ensureManager(i,l),c=(V=this._sheetSkeletonManagerService.getCurrent())==null?void 0:V.skeleton;if(!d||!c)return t(o);const u=e.workbook.getStyles(),m=(typeof(o==null?void 0:o.s)=="string"?u.get(o==null?void 0:o.s):o==null?void 0:o.s)||{},p=d.getRuleIdByLocation(a,r);if(!p)return t(o);const h=d.getRuleById(p);if(!h)return t(o);const f=e.worksheet.getCellRaw(e.row,e.col),v=this._dataValidationModel.validator(oe(f),h,e),S=this._dataValidatorRegistryService.getValidatorItem(h.type),R=oe(o);let C={};if((h.type===s.DataValidationType.LIST||h.type===s.DataValidationType.LIST_MULTIPLE)&&(C={interceptorStyle:{...o==null?void 0:o.interceptorStyle,tb:(M=m.tb!==s.WrapStrategy.OVERFLOW?m.tb:s.WrapStrategy.CLIP)!=null?M:s.WrapStrategy.WRAP}}),h.type===s.DataValidationType.CHECKBOX){const{formula2:b}=S.parseFormulaSync(h,e.unitId,e.subUnitId);R||(C={v:b,t:1,p:null,interceptorStyle:{...o==null?void 0:o.interceptorStyle,tb:s.WrapStrategy.CLIP}})}if(h.type===s.DataValidationType.LIST&&(h.renderMode===s.DataValidationRenderMode.ARROW||h.renderMode===s.DataValidationRenderMode.TEXT)){const b=S.getListWithColorMap(h),P=`${(O=oe(o))!=null?O:""}`,U=b[P];U&&(C={...C,interceptorStyle:{...C.interceptorStyle,bg:{rgb:U}}})}return t({...o,...C,dataValidation:{ruleId:p,validStatus:v,rule:h,validator:S},markers:{...o==null?void 0:o.markers,...v===s.DataValidationStatus.INVALID?Uo:null},customRender:[...(T=o==null?void 0:o.customRender)!=null?T:[],...S!=null&&S.canvasRender?[S.canvasRender]:[]],fontRenderExtension:{...o==null?void 0:o.fontRenderExtension,isSkip:S==null?void 0:S.skipDefaultFontRender(h,R,e)},interceptorStyle:{...o==null?void 0:o.interceptorStyle,...C.interceptorStyle},get interceptorAutoHeight(){var U,j,L,H;const b=c.mergeData.find(J=>{const{startColumn:A,startRow:Y,endColumn:$,endRow:K}=J;return a>=Y&&r>=A&&a<=K&&r<=$}),P={data:{...o,dataValidation:{ruleId:p,validStatus:v,rule:h,validator:S}},style:c.getsStyles().getStyleByCell(o),primaryWithCoord:c.getCellByIndex((U=b==null?void 0:b.startRow)!=null?U:a,(j=b==null?void 0:b.startColumn)!=null?j:r),unitId:i,subUnitId:l,row:a,col:r};return(H=(L=S==null?void 0:S.canvasRender)==null?void 0:L.calcCellAutoHeight)==null?void 0:H.call(L,P)}})}}))}_initAutoHeight(){this._dataValidationModel.ruleChange$.subscribe(o=>{var e;if((e=o.rule)!=null&&e.ranges){const t=this._autoHeightController.getUndoRedoParamsOfAutoHeight(o.rule.ranges);s.sequenceExecute(t.redos,this._commandService)}})}};exports.DataValidationRenderController=jo([s.OnLifecycle(s.LifecycleStages.Rendered,exports.DataValidationRenderController),re(1,I.Inject(W.ComponentManager)),re(2,W.IMenuService),re(3,I.Inject(D.DataValidationModel)),re(4,I.Inject(x.SheetSkeletonManagerService)),re(5,Z.IRenderManagerService),re(6,s.IUniverInstanceService),re(7,I.Inject(D.DataValidatorRegistryService)),re(8,x.IEditorBridgeService),re(9,I.Inject(De)),re(10,I.Inject(G.SheetInterceptorService)),re(11,I.Inject(I.Injector)),re(12,I.Inject(x.AutoHeightController)),re(13,s.ICommandService)],exports.DataValidationRenderController);var Bo=Object.defineProperty,$o=Object.getOwnPropertyDescriptor,Wo=(n,o,e,t)=>{for(var a=t>1?void 0:t?$o(o,e):o,r=n.length-1,i;r>=0;r--)(i=n[r])&&(a=(t?i(o,e,a):i(a))||a);return t&&a&&Bo(o,e,a),a},Pe=(n,o)=>(e,t)=>o(e,t,n);const lt="SHEET_DATA_VALIDATION_ALERT";exports.DataValidationAlertController=class extends s.Disposable{constructor(o,e,t,a){super(),this._hoverManagerService=o,this._cellAlertManagerService=e,this._univerInstanceService=t,this._localeService=a,this._init()}_init(){this._initCellAlertPopup()}_initCellAlertPopup(){this.disposeWithMe(this._hoverManagerService.currentCell$.pipe(me.debounceTime(100)).subscribe(o=>{var e,t,a;if(o){const l=this._univerInstanceService.getCurrentUnitForType(s.UniverInstanceType.UNIVER_SHEET).getActiveSheet().getCell(o.location.row,o.location.col);if(((e=l==null?void 0:l.dataValidation)==null?void 0:e.validStatus)===s.DataValidationStatus.INVALID){if((t=l.dataValidation)!=null&&t.isSkip)return;const d=this._cellAlertManagerService.currentAlert.get(lt),c=(a=d==null?void 0:d.alert)==null?void 0:a.location;if(c&&c.row===o.location.row&&c.col===o.location.col&&c.subUnitId===o.location.subUnitId&&c.unitId===o.location.unitId)return;const u=l.dataValidation.validator,m=l.dataValidation.rule;if(!u)return;this._cellAlertManagerService.showAlert({type:x.CellAlertType.ERROR,title:this._localeService.t("dataValidation.error.title"),message:u==null?void 0:u.getRuleFinalError(m),location:o.location,width:200,height:74,key:lt});return}}this._cellAlertManagerService.removeAlert(lt)}))}};exports.DataValidationAlertController=Wo([s.OnLifecycle(s.LifecycleStages.Rendered,exports.DataValidationAlertController),Pe(0,I.Inject(x.HoverManagerService)),Pe(1,I.Inject(x.CellAlertManagerService)),Pe(2,s.IUniverInstanceService),Pe(3,I.Inject(s.LocaleService))],exports.DataValidationAlertController);var Ho=Object.defineProperty,ko=Object.getOwnPropertyDescriptor,Yo=(n,o,e,t)=>{for(var a=t>1?void 0:t?ko(o,e):o,r=n.length-1,i;r>=0;r--)(i=n[r])&&(a=(t?i(o,e,a):i(a))||a);return t&&a&&Ho(o,e,a),a},le=(n,o)=>(e,t)=>o(e,t,n);exports.DataValidationRefRangeController=class extends s.Disposable{constructor(e,t,a,r,i,l,d,c,u,m){super();_(this,"_disposableMap",new Map);_(this,"registerRule",(e,t,a)=>{this.register(e,t,a),this.registerFormula(e,t,a)});this._dataValidationModel=e,this._univerInstanceService=t,this._injector=a,this._sheetSkeletonManagerService=r,this._refRangeService=i,this._dataValidationCustomFormulaService=l,this._dataValidationFormulaService=d,this._formulaRefRangeService=c,this._commandService=u,this._dataValidationCacheService=m,this._initRefRange()}_getIdWithUnitId(e,t,a){return`${e}_${t}_${a}`}registerFormula(e,t,a){var c;const r=a.uid,i=this._getIdWithUnitId(e,t,r),l=(c=this._disposableMap.get(i))!=null?c:new Set,d=(u,m)=>{const p=this._dataValidationModel.getRuleById(e,t,r);if(!p)return{redos:[],undos:[]};const h=p[u];if(!h||h===m)return{redos:[],undos:[]};const f={unitId:e,subUnitId:t,ruleId:a.uid,payload:{type:D.UpdateRuleType.SETTING,payload:{type:p.type,formula1:p.formula1,formula2:p.formula2,[u]:m}}},v={unitId:e,subUnitId:t,ruleId:a.uid,payload:{type:D.UpdateRuleType.SETTING,payload:{type:p.type,formula1:p.formula1,formula2:p.formula2}}},S=[{id:D.UpdateDataValidationMutation.id,params:f}],R=[{id:D.UpdateDataValidationMutation.id,params:v}];return{redos:S,undos:R}};if(a.type===s.DataValidationType.CUSTOM){const u=this._dataValidationCustomFormulaService.getRuleFormulaInfo(e,t,r);if(u){const m=this._formulaRefRangeService.registerFormula(u.formula,p=>d("formula1",p));l.add(()=>m.dispose())}}if(a.type!==s.DataValidationType.CUSTOM){const u=this._dataValidationFormulaService.getRuleFormulaInfo(e,t,r);if(u){const[m,p]=u;if(m){const h=this._formulaRefRangeService.registerFormula(m.text,f=>d("formula1",f));l.add(()=>h.dispose())}if(p){const h=this._formulaRefRangeService.registerFormula(p.text,f=>d("formula1",f));l.add(()=>h.dispose())}}}}register(e,t,a){var c;const r=u=>{const m=[...a.ranges],h=m.map(v=>G.handleCommonDefaultRangeChangeWithEffectRefCommands(v,u)).filter(v=>!!v).flat();if(s.isRangesEqual(h,m))return{redos:[],undos:[]};if(h.length){const v={unitId:e,subUnitId:t,ruleId:a.uid,payload:{type:D.UpdateRuleType.RANGE,payload:h}},S=[{id:D.UpdateDataValidationMutation.id,params:v}],R=[{id:D.UpdateDataValidationMutation.id,params:{unitId:e,subUnitId:t,ruleId:a.uid,payload:{type:D.UpdateRuleType.RANGE,payload:m}}}];return{redos:S,undos:R}}else{const v={unitId:e,subUnitId:t,ruleId:a.uid},S=[{id:D.RemoveDataValidationMutation.id,params:v}],R=D.removeDataValidationUndoFactory(this._injector,v);return{redos:S,undos:R}}},i=[];a.ranges.forEach(u=>{const m=this._refRangeService.registerRefRange(u,r,e,t);i.push(()=>m.dispose())});const l=this._getIdWithUnitId(e,t,a.uid),d=(c=this._disposableMap.get(l))!=null?c:new Set;d.add(()=>i.forEach(u=>u())),this._disposableMap.set(l,d)}_initRefRange(){this.disposeWithMe(me.merge(this._sheetSkeletonManagerService.currentSkeleton$.pipe(Je.map(e=>e==null?void 0:e.sheetId),Je.distinctUntilChanged())).pipe(Je.switchMap(()=>new me.Observable(e=>{const t=new s.DisposableCollection;return e.next(t),()=>{t.dispose()}}))).subscribe(e=>{e.add(s.toDisposable(this._dataValidationModel.ruleChange$.subscribe(t=>{const{unitId:a,subUnitId:r,rule:i}=t;switch(t.type){case"add":{const l=t.rule;this.registerRule(t.unitId,t.subUnitId,l);break}case"remove":{const l=this._disposableMap.get(this._getIdWithUnitId(a,r,i.uid));l&&l.forEach(d=>d());break}case"update":{const l=t.rule,d=this._disposableMap.get(this._getIdWithUnitId(a,r,l.uid));d&&d.forEach(c=>c()),this.registerRule(t.unitId,t.subUnitId,l);break}}})))})),this.disposeWithMe(s.toDisposable(()=>{this._disposableMap.forEach(e=>{e.forEach(t=>t())}),this._disposableMap.clear()}))}};exports.DataValidationRefRangeController=Yo([s.OnLifecycle(s.LifecycleStages.Ready,exports.DataValidationRefRangeController),le(0,I.Inject(D.DataValidationModel)),le(1,I.Inject(s.IUniverInstanceService)),le(2,I.Inject(I.Injector)),le(3,I.Inject(x.SheetSkeletonManagerService)),le(4,I.Inject(G.RefRangeService)),le(5,I.Inject(exports.DataValidationCustomFormulaService)),le(6,I.Inject(exports.DataValidationFormulaService)),le(7,I.Inject(qe.FormulaRefRangeService)),le(8,s.ICommandService),le(9,I.Inject(we))],exports.DataValidationRefRangeController);var qo=Object.defineProperty,Go=Object.getOwnPropertyDescriptor,Xo=(n,o,e,t)=>{for(var a=t>1?void 0:t?Go(o,e):o,r=n.length-1,i;r>=0;r--)(i=n[r])&&(a=(t?i(o,e,a):i(a))||a);return t&&a&&qo(o,e,a),a},Tt=(n,o)=>(e,t)=>o(e,t,n);exports.DataValidationAutoFillController=class extends s.Disposable{constructor(o,e){super(),this._autoFillService=o,this._dataValidationModel=e,this._initAutoFill()}_initAutoFill(){const o=()=>({redos:[],undos:[]}),e=a=>{const{source:r,target:i,unitId:l,subUnitId:d}=a,c=this._dataValidationModel.ensureManager(l,d),u=c.getRuleObjectMatrix().clone(),m=x.virtualizeDiscreteRanges([r,i]),[p,h]=m.ranges,{mapFunc:f}=m,v={row:p.startRow,col:p.startColumn};x.getAutoFillRepeatRange(p,h).forEach(M=>{const O=M.repeatStartCell,T=M.relativeRange,b={startRow:v.row,startColumn:v.col,endColumn:v.col,endRow:v.row},P={startRow:O.row,startColumn:O.col,endColumn:O.col,endRow:O.row};s.Range.foreach(T,(U,j)=>{const L=s.Rectangle.getPositionRange({startRow:U,startColumn:j,endColumn:j,endRow:U},b),{row:H,col:J}=f(L.startRow,L.startColumn),A=c.getRuleIdByLocation(H,J);if(A){const Y=s.Rectangle.getPositionRange({startRow:U,startColumn:j,endColumn:j,endRow:U},P),{row:$,col:K}=f(Y.startRow,Y.startColumn);u.setValue($,K,A)}})});const R=u.diff(c.getDataValidations()),{redoMutations:C,undoMutations:V}=ye(l,d,R);return{undos:V,redos:C}},t={id:Ke,onFillData:(a,r,i)=>i===x.APPLY_TYPE.COPY||i===x.APPLY_TYPE.ONLY_FORMAT||i===x.APPLY_TYPE.SERIES?e(a):o()};this.disposeWithMe(this._autoFillService.addHook(t))}};exports.DataValidationAutoFillController=Xo([s.OnLifecycle(s.LifecycleStages.Ready,exports.DataValidationAutoFillController),Tt(0,x.IAutoFillService),Tt(1,I.Inject(D.DataValidationModel))],exports.DataValidationAutoFillController);var zo=Object.defineProperty,Qo=Object.getOwnPropertyDescriptor,Ko=(n,o,e,t)=>{for(var a=t>1?void 0:t?Qo(o,e):o,r=n.length-1,i;r>=0;r--)(i=n[r])&&(a=(t?i(o,e,a):i(a))||a);return t&&a&&zo(o,e,a),a},dt=(n,o)=>(e,t)=>o(e,t,n);exports.DataValidationCopyPasteController=class extends s.Disposable{constructor(e,t,a){super();_(this,"_copyInfo");this._sheetClipboardService=e,this._dataValidationModel=t,this._injector=a,this._initCopyPaste()}_initCopyPaste(){this._sheetClipboardService.addClipboardHook({id:Ke,onBeforeCopy:(e,t,a)=>this._collect(e,t,a),onPasteCells:(e,t,a,r)=>{const{copyType:i=x.COPY_TYPE.COPY,pasteType:l}=r,{range:d}=e||{},{range:c,unitId:u,subUnitId:m}=t;return this._generateMutations(c,{copyType:i,pasteType:l,copyRange:d,unitId:u,subUnitId:m})}})}_collect(e,t,a){const r=new s.ObjectMatrix;this._copyInfo={unitId:e,subUnitId:t,matrix:r};const i=this._dataValidationModel.ensureManager(e,t),l={get:this._injector.get.bind(this._injector)},d=x.rangeToDiscreteRange(a,l,e,t);if(!d)return;const{rows:c,cols:u}=d;c.forEach((m,p)=>{u.forEach((h,f)=>{const v=i.getRuleIdByLocation(m,h);r.setValue(p,f,v!=null?v:"")})})}_generateMutations(e,t){if(!this._copyInfo)return{redos:[],undos:[]};if(t.copyType===x.COPY_TYPE.CUT)return this._copyInfo=null,{redos:[],undos:[]};if(!this._copyInfo||!this._copyInfo.matrix.getSizeOf()||!t.copyRange)return{redos:[],undos:[]};if([x.PREDEFINED_HOOK_NAME.SPECIAL_PASTE_COL_WIDTH,x.PREDEFINED_HOOK_NAME.SPECIAL_PASTE_VALUE,x.PREDEFINED_HOOK_NAME.SPECIAL_PASTE_FORMAT,qe.SPECIAL_PASTE_FORMULA].includes(t.pasteType))return{redos:[],undos:[]};const{unitId:a,subUnitId:r}=this._copyInfo;if(t.unitId!==a||r!==t.subUnitId){const i=this._dataValidationModel.ensureManager(a,r),l=this._dataValidationModel.ensureManager(t.unitId,t.subUnitId),d=l.getRuleObjectMatrix().clone(),{ranges:[c,u],mapFunc:m}=x.virtualizeDiscreteRanges([t.copyRange,e]),p=x.getRepeatRange(c,u,!0),h=new Map;p.forEach(({startRange:S})=>{var R;(R=this._copyInfo)==null||R.matrix.forValue((C,V,M)=>{const O=s.Rectangle.getPositionRange({startRow:C,endRow:C,startColumn:V,endColumn:V},S),T=`${r}-${M}`,b=i.getRuleById(M);!l.getRuleById(T)&&b&&h.set(T,{...b,uid:T});const{row:P,col:U}=m(O.startRow,O.startColumn);d.setValue(P,U,T)})});const{redoMutations:f,undoMutations:v}=ye(t.unitId,t.subUnitId,d.diffWithAddition(l.getDataValidations(),h.values()));return{redos:f,undos:v}}else{const i=this._dataValidationModel.ensureManager(a,r),l=i.getRuleObjectMatrix().clone(),{ranges:[d,c],mapFunc:u}=x.virtualizeDiscreteRanges([t.copyRange,e]);x.getRepeatRange(d,c,!0).forEach(({startRange:f})=>{var v;(v=this._copyInfo)==null||v.matrix.forValue((S,R,C)=>{const V=s.Rectangle.getPositionRange({startRow:S,endRow:S,startColumn:R,endColumn:R},f),{row:M,col:O}=u(V.startRow,V.startColumn);l.setValue(M,O,C)})});const{redoMutations:p,undoMutations:h}=ye(a,r,l.diff(i.getDataValidations()));return{redos:p,undos:h}}}};exports.DataValidationCopyPasteController=Ko([s.OnLifecycle(s.LifecycleStages.Ready,exports.DataValidationCopyPasteController),dt(0,x.ISheetClipboardService),dt(1,I.Inject(D.DataValidationModel)),dt(2,I.Inject(I.Injector))],exports.DataValidationCopyPasteController);class Rt{constructor(o){_(this,"value");this.value=o}addRule(o){const e=o.uid;o.ranges.forEach(t=>{s.Range.foreach(t,(a,r)=>{this.value.setValue(a,r,e)})})}removeRange(o){o.forEach(e=>{s.Range.foreach(e,(t,a)=>{this.value.realDeleteValue(t,a)})})}removeRule(o){o.ranges.forEach(e=>{s.Range.foreach(e,(t,a)=>{this.value.setValue(t,a,"")})})}updateRange(o,e,t){const a=`${o}$`;e.forEach(r=>{s.Range.foreach(r,(i,l)=>{this.value.getValue(i,l)===o&&this.value.setValue(i,l,a)})}),t.forEach(r=>{s.Range.foreach(r,(i,l)=>{this.value.setValue(i,l,o)})}),e.forEach(r=>{s.Range.foreach(r,(i,l)=>{this.value.getValue(i,l)===a&&this.value.realDeleteValue(i,l)})})}diff(o){const e=[];let t=0;return o.forEach((a,r)=>{const i=s.queryObjectMatrix(this.value,d=>d===a.uid),l=a.ranges;(i.length!==l.length||i.some((d,c)=>!s.Rectangle.equals(d,l[c])))&&e.push({type:"update",ruleId:a.uid,oldRanges:l,newRanges:i}),i.length===0&&(e.push({type:"delete",rule:a,index:r-t}),t++)}),e}diffWithAddition(o,e){const t=[];let a=0;return o.forEach((r,i)=>{const l=s.queryObjectMatrix(this.value,c=>c===r.uid),d=r.ranges;(l.length!==d.length||l.some((c,u)=>!s.Rectangle.equals(c,d[u])))&&t.push({type:"update",ruleId:r.uid,oldRanges:d,newRanges:l}),l.length===0&&(t.push({type:"delete",rule:r,index:i-a}),a++)}),Array.from(e).forEach(r=>{const i=s.queryObjectMatrix(this.value,l=>l===r.uid);t.push({type:"add",rule:{...r,ranges:i}})}),t}clone(){return new Rt(new s.ObjectMatrix(this.value.clone()))}getValue(o,e){return this.value.getValue(o,e)}setValue(o,e,t){return this.value.setValue(o,e,t)}}class Zo extends D.DataValidationManager{constructor(e,t,a,r){super(e,t,a);_(this,"_ruleMatrix");_(this,"_dataValidatorRegistryService");_(this,"_dataValidationCacheService");_(this,"_dataValidationFormulaService");_(this,"_dataValidationCustomFormulaService");_(this,"_cache");_(this,"_dataValidationRefRangeController");this._injector=r,this._dataValidatorRegistryService=this._injector.get(D.DataValidatorRegistryService),this._dataValidationCacheService=this._injector.get(we),this._dataValidationFormulaService=this._injector.get(exports.DataValidationFormulaService),this._dataValidationCustomFormulaService=this._injector.get(exports.DataValidationCustomFormulaService),this._dataValidationRefRangeController=this._injector.get(exports.DataValidationRefRangeController),this._cache=this._dataValidationCacheService.ensureCache(e,t);const i=new s.ObjectMatrix;a==null||a.forEach(l=>{const d=l.uid;l.ranges.forEach(c=>{s.Range.foreach(c,(u,m)=>{i.setValue(u,m,d)})})}),a==null||a.forEach(l=>{this._dataValidationRefRangeController.register(e,t,l)}),this._ruleMatrix=new Rt(i)}_addRuleSideEffect(e){var r;const{unitId:t,subUnitId:a}=this;(e.type===s.DataValidationType.LIST||e.type===s.DataValidationType.LIST_MULTIPLE)&&ie.isReferenceString((r=e.formula1)!=null?r:"")&&(e.formula1=`=${e.formula1}`),this._ruleMatrix.addRule(e),this._dataValidationCacheService.addRule(t,a,e),this._dataValidationFormulaService.addRule(t,a,e.uid,e.formula1,e.formula2),this._dataValidationCustomFormulaService.addRule(t,a,e)}addRule(e,t){(Array.isArray(e)?e:[e]).forEach(r=>{this._addRuleSideEffect(r)}),super.addRule(e,t)}updateRule(e,t){const a=this.getRuleById(e);if(!a)throw new Error(`Rule not found! id: ${e}`);return t.type===D.UpdateRuleType.RANGE?(this._ruleMatrix.updateRange(e,a.ranges,t.payload),this._dataValidationCacheService.updateRuleRanges(this.unitId,this.subUnitId,e,t.payload,a.ranges),this._dataValidationCustomFormulaService.updateRuleRanges(this.unitId,this.subUnitId,e,a.ranges,t.payload)):t.type===D.UpdateRuleType.SETTING&&(this._dataValidationCacheService.markRangeDirty(this.unitId,this.subUnitId,a.ranges),this._dataValidationFormulaService.updateRuleFormulaText(this.unitId,this.subUnitId,e,t.payload.formula1,t.payload.formula2),this._dataValidationCustomFormulaService.updateRuleFormula(this.unitId,this.subUnitId,e,a.ranges,t.payload.formula1)),super.updateRule(e,t)}removeRule(e){const t=this.getRuleById(e);t&&(this._ruleMatrix.removeRule(t),this._dataValidationCacheService.removeRule(this.unitId,this.subUnitId,t)),super.removeRule(e)}getRuleIdByLocation(e,t){return this._ruleMatrix.getValue(e,t)}getRuleByLocation(e,t){const a=this.getRuleIdByLocation(e,t);if(a)return this.getRuleById(a)}validator(e,t,a,r){const{col:i,row:l,unitId:d,subUnitId:c}=a,u=t.uid,m=this._dataValidatorRegistryService.getValidatorItem(t.type);if(m){const p=this._cache.getValue(l,i);return!p||p.value!==e?(this._cache.setValue(l,i,{value:e,status:s.DataValidationStatus.VALIDATING,ruleId:u}),m.validator({value:e,unitId:d,subUnitId:c,row:l,column:i},t).then(h=>{const f=h?s.DataValidationStatus.VALID:s.DataValidationStatus.INVALID;this._cache.setValue(l,i,{value:e,status:f,ruleId:u}),r(f)}),s.DataValidationStatus.VALIDATING):p.status}else return s.DataValidationStatus.VALID}getRuleErrorMsg(e){const t=this.getRuleById(e);if(!t)return"";const a=this._dataValidatorRegistryService.getValidatorItem(t.type);return t.error?t.error:a?a.getRuleFinalError(t):""}getRuleObjectMatrix(){return this._ruleMatrix}}var Jo=Object.defineProperty,en=Object.getOwnPropertyDescriptor,tn=(n,o,e,t)=>{for(var a=t>1?void 0:t?en(o,e):o,r=n.length-1,i;r>=0;r--)(i=n[r])&&(a=(t?i(o,e,a):i(a))||a);return t&&a&&Jo(o,e,a),a},je=(n,o)=>(e,t)=>o(e,t,n);let Ue=class extends s.Disposable{constructor(n,o,e,t){super(),this._resourceManagerService=n,this._univerInstanceService=o,this._dataValidationModel=e,this._injector=t,this._initDataValidationDataSource()}_createSheetDataValidationManager(n,o){return new Zo(n,o,[],this._injector)}_initDataValidationDataSource(){this._dataValidationModel.setManagerCreator(this._createSheetDataValidationManager.bind(this))}};Ue=tn([s.OnLifecycle(s.LifecycleStages.Starting,Ue),je(0,s.IResourceManagerService),je(1,s.IUniverInstanceService),je(2,I.Inject(D.DataValidationModel)),je(3,I.Inject(I.Injector))],Ue);var an=Object.defineProperty,rn=Object.getOwnPropertyDescriptor,on=(n,o,e,t)=>{for(var a=t>1?void 0:t?rn(o,e):o,r=n.length-1,i;r>=0;r--)(i=n[r])&&(a=(t?i(o,e,a):i(a))||a);return t&&a&&an(o,e,a),a},ct=(n,o)=>(e,t)=>o(e,t,n);let Be=class extends s.Disposable{constructor(n,o,e){super(),this._localeService=n,this._commandService=o,this._sheetPermissionInterceptorBaseController=e,this._commandExecutedListener()}_commandExecutedListener(){this.disposeWithMe(this._commandService.beforeCommandExecuted(n=>{n.id===D.AddDataValidationCommand.id&&(this._sheetPermissionInterceptorBaseController.permissionCheckWithRanges({workbookTypes:[G.WorkbookEditablePermission],rangeTypes:[G.RangeProtectionPermissionEditPoint],worksheetTypes:[G.WorksheetEditPermission,G.WorksheetSetCellStylePermission]})||this._sheetPermissionInterceptorBaseController.haveNotPermissionHandle(this._localeService.t("permission.dialog.setStyleErr"))),n.id===ze.id&&(this._sheetPermissionInterceptorBaseController.permissionCheckWithRanges({workbookTypes:[G.WorkbookEditablePermission],rangeTypes:[G.RangeProtectionPermissionEditPoint],worksheetTypes:[G.WorksheetEditPermission,G.WorksheetSetCellStylePermission]},n.params.ranges)||this._sheetPermissionInterceptorBaseController.haveNotPermissionHandle(this._localeService.t("permission.dialog.setStyleErr")))}))}};Be=on([s.OnLifecycle(s.LifecycleStages.Ready,Be),ct(0,I.Inject(s.LocaleService)),ct(1,s.ICommandService),ct(2,I.Inject(x.SheetPermissionInterceptorBaseController))],Be);var nn=Object.defineProperty,sn=Object.getOwnPropertyDescriptor,ln=(n,o,e,t)=>{for(var a=t>1?void 0:t?sn(o,e):o,r=n.length-1,i;r>=0;r--)(i=n[r])&&(a=(t?i(o,e,a):i(a))||a);return t&&a&&nn(o,e,a),a},ut=(n,o)=>(e,t)=>o(e,t,n),xe;exports.UniverSheetsDataValidationPlugin=(xe=class extends s.Plugin{constructor(o={},e,t,a){super(),this._config=o,this._injector=e,this._commandService=t,this._localeService=a,this._config=s.Tools.deepMerge({},xo,this._config)}onStarting(o){[[pe],[exports.SheetDataValidationService],[we],[exports.DataValidationFormulaService],[exports.DataValidationCustomFormulaService],[De],[Ue],[exports.DataValidationController],[exports.DataValidationRenderController,{useFactory:()=>this._injector.createInstance(exports.DataValidationRenderController,this._config)}],[exports.DataValidationAlertController],[exports.DataValidationRefRangeController],[Be],[exports.DataValidationAutoFillController],[exports.DataValidationCopyPasteController],[exports.DataValidationFormulaController],[exports.DataValidationRejectInputController]].forEach(e=>{o.add(e)}),[Qe,St,ze,Xe,jt,Pt,Fe,Sa].forEach(e=>{this._commandService.registerCommand(e)})}},_(xe,"pluginName",Ke),_(xe,"type",s.UniverInstanceType.UNIVER_SHEET),xe);exports.UniverSheetsDataValidationPlugin=ln([ut(1,I.Inject(I.Injector)),ut(2,s.ICommandService),ut(3,I.Inject(s.LocaleService))],exports.UniverSheetsDataValidationPlugin);Object.defineProperty(exports,"ICommandService",{enumerable:!0,get:()=>s.ICommandService});Object.defineProperty(exports,"LocaleService",{enumerable:!0,get:()=>s.LocaleService});Object.defineProperty(exports,"Plugin",{enumerable:!0,get:()=>s.Plugin});exports.AddSheetDataValidationAndOpenCommand=St;exports.AddSheetDataValidationCommand=Qe;exports.DATA_VALIDATION_PLUGIN_NAME=Ke;exports.DataValidationCacheService=we;exports.HideDataValidationDropdown=jt;exports.ShowDataValidationDropdown=Xe;exports.UpdateSheetDataValidationRangeCommand=ze;