@univerjs/sheets-data-validation 0.1.16 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/index.js +2 -2
- package/lib/es/index.js +3630 -3266
- package/lib/index.css +1 -1
- package/lib/locale/en-US.json +4 -1
- package/lib/locale/ru-RU.json +4 -1
- package/lib/locale/zh-CN.json +5 -2
- package/lib/types/commands/commands/data-validation.command.d.ts +14 -2
- package/lib/types/controllers/dv-auto-fill.controller.d.ts +3 -1
- package/lib/types/controllers/dv-render.controller.d.ts +16 -5
- package/lib/types/index.d.ts +3 -3
- package/lib/types/locale/zh-CN.d.ts +3 -0
- package/lib/types/mobile-plugin.d.ts +14 -0
- package/lib/types/models/sheet-data-validation-manager.d.ts +2 -1
- package/lib/types/utils/get-cell-data-origin.d.ts +1 -0
- package/lib/types/validators/checkbox-validator.d.ts +4 -2
- package/lib/umd/index.js +2 -2
- package/package.json +26 -26
package/lib/cjs/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var ga=Object.defineProperty;var va=(n,r,e)=>r in n?ga(n,r,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[r]=e;var _=(n,r,e)=>va(n,typeof r!="symbol"?r+"":r,e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("@univerjs/core"),y=require("@wendellhu/redi"),V=require("@univerjs/data-validation"),j=require("@univerjs/sheets"),A=require("@univerjs/sheets-ui"),q=require("@univerjs/ui"),K=require("@univerjs/engine-render"),O=require("react"),H=require("@wendellhu/redi/react-bindings"),T=require("@univerjs/design"),oe=require("@univerjs/engine-formula"),Se=require("rxjs"),Dt=require("@univerjs/sheets-formula"),Sa=require("clsx"),Ve=require("dayjs");var Ut={exports:{}},Qe={};/**
|
|
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 ia=w,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 bt(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}}qe.Fragment=la;qe.jsx=bt;qe.jsxs=bt;Ft.exports=qe;var v=Ft.exports;function ma(){const n=P.useDependency(Ve),o=W.useObservable(n.activeDropdown$,n.activeDropdown),e=P.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 v.jsx(r,{location:t,hideFn:l},i)}const Nt="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},Re=(n,o)=>(e,t)=>o(e,t,n);let Ve=class extends s.Disposable{constructor(o,e,t,a,r,i){super();_(this,"_activeDropdown");_(this,"_activeDropdown$",new ve.Subject);_(this,"_currentPopup",null);_(this,"activeDropdown$",this._activeDropdown$.asObservable());_(this,"_zenVisible",!1);this._canvasPopupManagerService=o,this._univerInstanceService=e,this._dataValidatorRegistryService=t,this._zenZoneService=a,this._renderManagerService=r,this._dataValidationModel=i,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:Nt,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(!c)return;const u=this._dataValidatorRegistryService.getValidatorItem(c.type);if(!u||!u.dropdown){this.hideDropdown();return}this.showDropdown({location:{workbook:i,worksheet:l,row:t,col:a,unitId:o,subUnitId:e},componentKey:u.dropdown,onHide:r})}};Ve=fa([Re(0,y.Inject(A.SheetCanvasPopManagerService)),Re(1,s.IUniverInstanceService),Re(2,y.Inject(R.DataValidatorRegistryService)),Re(3,W.IZenZoneService),Re(4,K.IRenderManagerService),Re(5,y.Inject(R.DataValidationModel))],Ve);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},Rt=(n,o)=>(e,t)=>o(e,t,n);let ue=class extends s.Disposable{constructor(o,e){super();_(this,"_open$",new ve.BehaviorSubject(!1));_(this,"open$",this._open$.pipe(ve.distinctUntilChanged()));_(this,"_activeRule");_(this,"_activeRule$",new ve.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(ve.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)}};ue=_a([Rt(0,s.IUniverInstanceService),Rt(1,W.ISidebarService)],ue);const Lt="DataValidationPanel",Te={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(ue),r=n.get(R.DataValidationModel),i=n.get(s.IUniverInstanceService),l=n.get(W.ISidebarService),d=H.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 h=l.open({header:{title:t?"dataValidation.panel.addTitle":"dataValidation.panel.title"},children:{label:Lt},width:312,onClose:()=>a.close()});return a.setCloseDisposable(h),!0}},Pt={id:"data-validation.operation.close-validation-panel",type:s.CommandType.OPERATION,handler(n){return n.get(ue).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(ue);return e.open(),e.isOpen?o.executeCommand(Pt.id):o.executeCommand(Te.id),!0}},Ge={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}},At={type:s.CommandType.OPERATION,id:"sheet.operation.hide-data-validation-dropdown",handler(n,o){return o?(n.get(Ve).hideDropdown(),!0):!1}};function Me(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 Xe={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,h=c.getRuleObjectMatrix().clone();h.updateRange(r,m,a);const p=h.diff(c.getDataValidations()),{redoMutations:g,undoMutations:f}=Me(e,t,p);return d.pushUndoRedo({undoMutations:f,redoMutations:g,unitID:e}),await s.sequenceExecuteAsync(g,l),!0}},ze={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:h,undoMutations:p}=Me(e,t,u);return h.push({id:R.AddDataValidationMutation.id,params:m}),p.unshift({id:R.RemoveDataValidationMutation.id,params:{unitId:e,subUnitId:t,ruleId:a.uid}}),l.pushUndoRedo({unitID:e,redoMutations:h,undoMutations:p}),await s.sequenceExecuteAsync(h,i),!0}},vt={type:s.CommandType.COMMAND,id:"data-validation.command.addRuleAndOpen",async handler(n){const o=n.get(s.IUniverInstanceService),e=H.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(ze.id,c)?(i.executeCommand(Te.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},pe=w.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=w.useRef("_".concat(Ca()));return jt(e,"".concat(t),{defIds:e.defIds,idSuffix:d.current},ne({ref:o,className:l},i),r)});function jt(n,o,e,t,a){return w.createElement(n.tag,ne(ne({key:o},Ra(n,e,a)),t),(Da(n,e).children||[]).map(function(r,i){return jt(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)}pe.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"}}]},xt=w.forwardRef(function(n,o){return w.createElement(pe,Object.assign({},n,{id:"check-mark-single",ref:o,icon:Ia}))});xt.displayName="CheckMarkSingle";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"}}]},Ut=w.forwardRef(function(n,o){return w.createElement(pe,Object.assign({},n,{id:"data-validation-single",ref:o,icon:ya}))});Ut.displayName="DataValidationSingle";var Ma={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=w.forwardRef(function(n,o){return w.createElement(pe,Object.assign({},n,{id:"delete-single",ref:o,icon:Ma}))});_t.displayName="DeleteSingle";var wa={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"}}]},Bt=w.forwardRef(function(n,o){return w.createElement(pe,Object.assign({},n,{id:"increase-single",ref:o,icon:wa}))});Bt.displayName="IncreaseSingle";var Oa={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"}}]},$t=w.forwardRef(function(n,o){return w.createElement(pe,Object.assign({},n,{id:"more-down-single",ref:o,icon:Oa}))});$t.displayName="MoreDownSingle";var Ea={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"}}]},Wt=w.forwardRef(function(n,o){return w.createElement(pe,Object.assign({},n,{id:"more-up-single",ref:o,icon:Ea}))});Wt.displayName="MoreUpSingle";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"}}]}]},Ht=w.forwardRef(function(n,o){return w.createElement(pe,Object.assign({},n,{id:"sequence-single",ref:o,icon:Ta}))});Ht.displayName="SequenceSingle";const Fa="univer-data-validation-options-button",ba="univer-data-validation-options-button-icon",Ke={dataValidationOptionsButton:Fa,dataValidationOptionsButtonIcon:ba};function Na(n){var c;const o=P.useDependency(s.LocaleService),e=P.useDependency(W.ComponentManager),{value:t,onChange:a,extraComponent:r}=n,[i,l]=w.useState(!1),d=r?e.get(r):null;return v.jsxs(v.Fragment,{children:[v.jsxs("div",{className:Ke.dataValidationOptionsButton,onClick:()=>l(!i),children:[o.t("dataValidation.panel.options"),i?v.jsx(Wt,{className:Ke.dataValidationOptionsButtonIcon}):v.jsx($t,{className:Ke.dataValidationOptionsButtonIcon})]}),i&&v.jsxs(v.Fragment,{children:[d?v.jsx(d,{value:t,onChange:a}):null,v.jsx(O.FormLayout,{label:o.t("dataValidation.panel.invalid"),children:v.jsxs(O.RadioGroup,{value:`${(c=t.errorStyle)!=null?c:s.DataValidationErrorStyle.WARNING}`,onChange:u=>a({...t,errorStyle:+u}),children:[v.jsx(O.Radio,{value:`${s.DataValidationErrorStyle.WARNING}`,children:o.t("dataValidation.panel.showWarning")}),v.jsx(O.Radio,{value:`${s.DataValidationErrorStyle.STOP}`,children:o.t("dataValidation.panel.rejectInput")})]})}),v.jsx(O.FormLayout,{label:o.t("dataValidation.panel.messageInfo"),children:v.jsx(O.Checkbox,{checked:t.showInputMessage,onChange:()=>a({...t,showInputMessage:!t.showInputMessage}),children:o.t("dataValidation.panel.showInfo")})}),t.showInputMessage?v.jsx(O.FormLayout,{children:v.jsx(O.Input,{value:t.error,onChange:u=>a({...t,error:u})})}):null]})]})}const La="univer-data-validation-detail-form-item",Pa="univer-data-validation-detail-buttons",Aa="univer-data-validation-detail-button",De={dataValidationDetailFormItem:La,dataValidationDetailButtons:Pa,dataValidationDetailButton:Aa},ja=n=>s.debounce(async(o,e,t,a)=>{const r=await n.executeCommand(o,e,t);a==null||a(r)},275);function xa(){const[n,o]=w.useState(0),e=P.useDependency(ue),t=W.useObservable(e.activeRule$,e.activeRule),{unitId:a,subUnitId:r,rule:i}=t||{},l=i.uid,d=P.useDependency(R.DataValidatorRegistryService),c=P.useDependency(W.ComponentManager),u=P.useDependency(s.ICommandService),m=P.useDependency(R.DataValidationModel),h=P.useDependency(s.LocaleService),[p,g]=w.useState(i),f=d.getValidatorItem(p.type),[C,S]=w.useState(!1),D=d.getValidatorsByScope(R.DataValidatorRegistryScope.SHEET),[V,I]=w.useState(()=>p.ranges.map(M=>({unitId:"",sheetId:"",range:M}))),E=w.useMemo(()=>ja(u),[u]);if(w.useEffect(()=>{u.onCommandExecuted(M=>{(M.id===s.UndoCommand.id||M.id===s.RedoCommand.id)&&setTimeout(()=>{const L=m.getRuleById(a,r,l);o(Z=>Z+1),L&&(g(L),I(L.ranges.map(Z=>({unitId:"",sheetId:"",range:Z}))))},20)})},[u,m,l,r,a]),!f)return null;const F=f.operators,U=f.operatorNames,x=p.operator?R.TWO_FORMULA_OPERATOR_COUNT.includes(p.operator):!1,G=()=>{f.validatorFormula(p,a,r).success?e.setActiveRule(null):S(!0)},j=W.useEvent(M=>{if(s.isUnitRangesEqual(M,V))return;I(M);const L=M.filter(Q=>(!Q.unitId||Q.unitId===a)&&(!Q.sheetId||Q.sheetId===r)).map(Q=>Q.range);if(g({...p,ranges:L}),L.length===0)return;const Z={unitId:a,subUnitId:r,ruleId:l,ranges:L};E(Xe.id,Z)}),b=M=>{if(s.shallowEqual(M,R.getRuleSetting(p)))return;g({...p,...M});const L={unitId:a,subUnitId:r,ruleId:l,setting:M};E(R.UpdateDataValidationSettingCommand.id,L,void 0)},B=async()=>{await u.executeCommand(R.RemoveDataValidationCommand.id,{ruleId:l,unitId:a,subUnitId:r}),e.setActiveRule(null)},z={type:p.type,operator:p.operator,formula1:p.formula1,formula2:p.formula2,allowBlank:p.allowBlank},$=M=>{const L=d.getValidatorItem(M);if(!L)return;const Z=L.operators,Q=m.getRuleById(a,r,l),ie=M===(Q==null?void 0:Q.type)?{...Q}:{...p,type:M,operator:Z[0],formula1:void 0,formula2:void 0};g(ie),u.executeCommand(R.UpdateDataValidationSettingCommand.id,{unitId:a,subUnitId:r,ruleId:p.uid,setting:R.getRuleSetting(ie)})},N=c.get(f.formulaInput),Y=w.useMemo(()=>V.map(M=>ae.serializeRange(M.range)).join(","),[]),J=R.getRuleOptions(p),k=M=>{s.shallowEqual(M,R.getRuleOptions(p))||(g({...p,...M}),E(R.UpdateDataValidationOptionsCommand.id,{unitId:a,subUnitId:r,ruleId:l,options:M}))};return v.jsxs("div",{children:[v.jsx(O.FormLayout,{label:h.t("dataValidation.panel.range"),children:v.jsx(W.RangeSelector,{className:De.dataValidationDetailFormItem,value:Y,id:s.createInternalEditorID("data-validation-detail"),openForSheetUnitId:a,openForSheetSubUnitId:r,onChange:M=>{M.some(L=>!s.isValidRange(L.range)||L.range.endColumn<L.range.startColumn||L.range.endRow<L.range.startRow)||j(M)}},n)}),v.jsx(O.FormLayout,{label:h.t("dataValidation.panel.type"),children:v.jsx(O.Select,{options:D==null?void 0:D.map(M=>({label:h.t(M.title),value:M.id})),value:p.type,onChange:$,className:De.dataValidationDetailFormItem})}),F!=null&&F.length?v.jsx(O.FormLayout,{label:h.t("dataValidation.panel.operator"),children:v.jsx(O.Select,{options:F.map((M,L)=>({value:`${M}`,label:U[L]})),value:`${p.operator}`,onChange:M=>{b({...z,operator:M})},className:De.dataValidationDetailFormItem})}):null,N?v.jsx(N,{isTwoFormula:x,value:{formula1:p.formula1,formula2:p.formula2},onChange:M=>{b({...z,...M})},showError:C,validResult:f.validatorFormula(p,a,r),unitId:a,subUnitId:r,ruleId:l},n):null,v.jsx(Na,{value:J,onChange:k,extraComponent:f.optionsInput}),v.jsxs("div",{className:De.dataValidationDetailButtons,children:[v.jsx(O.Button,{className:De.dataValidationDetailButton,onClick:B,children:h.t("dataValidation.panel.removeRule")}),v.jsx(O.Button,{className:De.dataValidationDetailButton,type:"primary",onClick:G,children:h.t("dataValidation.panel.done")})]})]})}var Be=(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.Delete=42]="Delete",n[n.UNRECOGNIZED=-1]="UNRECOGNIZED",n))(Be||{});const Ua="univer-data-validation-item-container",Ba="univer-data-validation-item-title",$a="univer-data-validation-item-content",Wa="univer-data-validation-item-icon",be={dataValidationItemContainer:Ua,dataValidationItemTitle:Ba,dataValidationItemContent:$a,dataValidationItemIcon:Wa},Ha=n=>{const{rule:o,onClick:e,unitId:t,subUnitId:a,disable:r}=n,i=P.useDependency(R.DataValidatorRegistryService),l=P.useDependency(s.ICommandService),d=P.useDependency(A.IMarkSelectionService),c=i.getValidatorItem(o.type),u=w.useRef(),[m,h]=w.useState(!1),p=g=>{l.executeCommand(R.RemoveDataValidationCommand.id,{ruleId:o.uid,unitId:t,subUnitId:a}),g.stopPropagation()};return w.useEffect(()=>()=>{var g;u.current&&((g=u.current)==null||g.forEach(f=>{f&&d.removeShape(f)}))},[d]),v.jsxs("div",{className:be.dataValidationItemContainer,onClick:e,onMouseEnter:()=>{r||(h(!0),u.current=o.ranges.map(g=>d.addShape({range:g,style:{hasAutoFill:!1,fill:"rgba(73, 184, 17, 0.05)",strokeWidth:1,stroke:"#49B811",widgets:{}},primary:{startColumn:g.startColumn,endColumn:g.endColumn,startRow:g.startRow,endRow:g.endRow,actualRow:g.startRow,actualColumn:g.startColumn,isMerged:!1,isMergedMainCell:!1}})))},onMouseLeave:()=>{var g;h(!1),(g=u.current)==null||g.forEach(f=>{f&&d.removeShape(f)}),u.current=void 0},children:[v.jsx("div",{className:be.dataValidationItemTitle,children:c==null?void 0:c.generateRuleName(o)}),v.jsx("div",{className:be.dataValidationItemContent,children:o.ranges.map(g=>ae.serializeRange(g)).join(",")}),m?v.jsx("div",{className:be.dataValidationItemIcon,onClick:p,children:v.jsx(_t,{})}):null]})};var ka=Object.defineProperty,Ya=Object.getOwnPropertyDescriptor,qa=(n,o,e,t)=>{for(var a=t>1?void 0:t?Ya(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&&ka(o,e,a),a},Ga=(n,o)=>(e,t)=>o(e,t,n);exports.SheetDataValidationService=class{constructor(o){_(this,"_currentManager");_(this,"_currentManager$",new ve.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=qa([Ga(0,y.Inject(R.DataValidationModel))],exports.SheetDataValidationService);function Xa(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 v.jsx(O.FormLayout,{error:l,children:v.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 za="univer-data-validation-formula",Qa="univer-data-validation-formula-and",Ka="univer-data-validation-formula-list-item",Za="univer-data-validation-formula-list-item-icon",Ja="univer-data-validation-formula-list-item-drag",er="univer-data-validation-formula-list-add",tr="univer-data-validation-formula-color-select",ar="univer-data-validation-formula-color-select-panel",rr="univer-data-validation-formula-color-item",te={dataValidationFormula:za,dataValidationFormulaAnd:Qa,dataValidationFormulaListItem:Ka,dataValidationFormulaListItemIcon:Za,dataValidationFormulaListItemDrag:Ja,dataValidationFormulaListAdd:er,dataValidationFormulaColorSelect:tr,dataValidationFormulaColorSelectPanel:ar,dataValidationFormulaColorItem:rr},or=n=>{const{isTwoFormula:o=!1,value:e,onChange:t,showError:a,validResult:r}=n,i=P.useDependency(s.LocaleService),l=a?r==null?void 0:r.formula1:"",d=a?r==null?void 0:r.formula2:"";return o?v.jsxs(v.Fragment,{children:[v.jsx(O.FormLayout,{error:l,children:v.jsx(O.Input,{className:te.dataValidationFormula,placeholder:i.t("dataValidation.panel.formulaPlaceholder"),value:e==null?void 0:e.formula1,onChange:c=>{t==null||t({...e,formula1:c})}})}),v.jsx("div",{className:te.dataValidationFormulaAnd,children:i.t("dataValidation.panel.formulaAnd")}),v.jsx(O.FormLayout,{error:d,children:v.jsx(O.Input,{className:te.dataValidationFormula,placeholder:i.t("dataValidation.panel.formulaPlaceholder"),value:e==null?void 0:e.formula2,onChange:c=>{t==null||t({...e,formula2:c})}})})]}):v.jsx(O.FormLayout,{error:l,children:v.jsx(O.Input,{className:te.dataValidationFormula,placeholder:i.t("dataValidation.panel.formulaPlaceholder"),value:e==null?void 0:e.formula1,onChange:c=>{t==null||t({formula1:c})}})})};function re(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 kt(n){return n.filter(Boolean).join(",")}function ye(n){return n.split(",").filter(Boolean)}function nr(n){const o=re(n);return o==null?"":o.toString()}const Qe="SHEET_DATA_VALIDATION_PLUGIN",_e="#ECECEC";var ir=Object.defineProperty,sr=Object.getOwnPropertyDescriptor,lr=(n,o,e,t)=>{for(var a=t>1?void 0:t?sr(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&&ir(o,e,a),a},Ze=(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=ae.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 C=u==null?void 0:u.getSheetId();if(!this._permissionService.getPermissionPoint(new H.WorksheetViewPermission(m,C).id))return!1}if(!u)return!1;const{startRow:h,endRow:p,startColumn:g,endColumn:f}=d.range;for(let C=h;C<=p;C++)for(let S=g;S<=f;S++){const D=(a=(t=u.getCell(C,S))==null?void 0:t.selectionProtection)==null?void 0:a[0];if((D==null?void 0:D[Be.View])===!1)return!1}}return!0}};exports.DataValidationFormulaController=lr([s.OnLifecycle(s.LifecycleStages.Rendered,exports.DataValidationFormulaController),Ze(0,s.IUniverInstanceService),Ze(1,s.IPermissionService),Ze(2,y.Inject(ae.LexerTreeBuilder))],exports.DataValidationFormulaController);const dr=["#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]=w.useState(!1);return v.jsx(O.Select,{disabled:t,open:a,onDropdownVisibleChange:r,dropdownStyle:{width:112},className:te.dataValidationFormulaColorSelect,value:o,onChange:e,labelRender:i=>v.jsx("div",{className:te.dataValidationFormulaColorItem,style:{background:i.value,marginTop:5}}),dropdownRender:()=>v.jsx("div",{className:te.dataValidationFormulaColorSelectPanel,children:dr.map(i=>v.jsx("div",{onClick:()=>{e(i),r(!1)},className:te.dataValidationFormulaColorItem,style:{background:i}},i))})})},Dt=n=>{const{item:o,commonProps:e,style:t}=n,{onItemChange:a,onItemDelete:r}=e;return v.jsxs("div",{className:te.dataValidationFormulaListItem,style:t,children:[o.isRef?null:v.jsx("div",{className:na(te.dataValidationFormulaListItemDrag,"draggableHandle"),children:v.jsx(Ht,{})}),v.jsx(cr,{value:o.color,onChange:i=>{a(o.id,o.label,i)}}),v.jsx(O.Input,{disabled:o.isRef,value:o.label,onChange:i=>{a(o.id,i,o.color)}}),o.isRef?null:v.jsx("div",{className:te.dataValidationFormulaListItemIcon,children:v.jsx(_t,{onClick:()=>r(o.id)})})]})};function ur(n){const{value:o,onChange:e=()=>{},unitId:t,subUnitId:a,validResult:r,showError:i,ruleId:l}=n,{formula1:d="",formula2:c=""}=o||{},u=w.useRef(null),[m,h]=w.useState(()=>s.isFormulaString(d)?"1":"0"),[p,g]=w.useState(m==="1"?d:"="),[f,C]=w.useState(m==="1"?d:"="),S=P.useDependency(s.LocaleService),D=P.useDependency(R.DataValidatorRegistryService),V=P.useDependency(R.DataValidationModel),I=P.useDependency(exports.DataValidationFormulaController),[E,F]=w.useState(()=>c.split(",")),U=D.getValidatorItem(s.DataValidationType.LIST),[x,G]=w.useState([]),[j,b]=w.useState(""),B=i?r==null?void 0:r.formula1:"",z=W.useObservable(V.ruleChange$),$=W.useEvent(e);w.useEffect(()=>{(async()=>{await new Promise(X=>{setTimeout(()=>X(!0),100)});const T=V.getRuleById(t,a,l),q=T==null?void 0:T.formula1;if(s.isFormulaString(q)&&U&&T){const X=await U.getListAsync(T,t,a);G(X)}})()},[V,z,U,l,a,t]),w.useEffect(()=>{s.isFormulaString(d)&&d!==f&&(g(d),C(f))},[f,d]);const[N,Y]=w.useState(()=>{const T=m!=="1"?ye(d):[],q=c.split(",");return T.map((X,ee)=>({label:X,color:q[ee]||_e,isRef:!1,id:s.Tools.generateRandomId(4)}))}),J=(T,q,X)=>{const ee=N.find(le=>le.id===T);ee&&(ee.label=q,ee.color=X,Y([...N]))},k=T=>{const q=N.findIndex(X=>X.id===T);q!==-1&&(N.splice(q,1),Y([...N]))},M=c.split(","),L=w.useMemo(()=>x.map((T,q)=>({label:T,color:M[q]||_e,id:`${q}`,isRef:!0})),[M,x]),Z=(T,q,X)=>{const ee=[...E];ee[+T]=X,F(ee),$({formula1:d,formula2:ee.join(",")})},Q=()=>{Y([...N,{label:"",color:_e,isRef:!1,id:s.Tools.generateRandomId(4)}])};w.useEffect(()=>{if(m==="1")return;const T=new Set,q=[];N.map(X=>({labelList:X.label.split(","),item:X})).forEach(({item:X,labelList:ee})=>{ee.forEach(le=>{T.has(le)||(T.add(le),q.push({label:le,color:X.color}))})}),$({formula1:kt(q.map(X=>X.label)),formula2:q.map(X=>X.color===_e?"":X.color).join(",")})},[N,$,m,f,E]);const ie=w.useMemo(()=>async T=>{if(!s.isFormulaString(T)){$==null||$({formula1:"",formula2:c});return}I.getFormulaRefCheck(T)?($==null||$({formula1:s.isFormulaString(T)?T:"",formula2:c}),b("")):($==null||$({formula1:"",formula2:c}),g("="),b(S.t("dataValidation.validFail.formulaError")))},[c,$]);return v.jsxs(v.Fragment,{children:[v.jsx(O.FormLayout,{label:S.t("dataValidation.list.options"),children:v.jsxs(O.RadioGroup,{value:m,onChange:T=>{h(T),g(f),T==="1"&&$({formula1:f==="="?"":f,formula2:E.join(",")})},children:[v.jsx(O.Radio,{value:"0",children:S.t("dataValidation.list.customOptions")}),v.jsx(O.Radio,{value:"1",children:S.t("dataValidation.list.refOptions")})]})}),m==="1"?v.jsxs(v.Fragment,{children:[v.jsx(O.FormLayout,{error:B||j,children:v.jsx(W.TextEditor,{id:s.createInternalEditorID(`list-ref-range-${t}-${a}`),value:p,openForSheetUnitId:t,openForSheetSubUnitId:a,onlyInputFormula:!0,onChange:async T=>{const q=T!=null?T:"";C(q),ie(q)}})}),v.jsx(O.FormLayout,{children:v.jsx("div",{ref:u,children:L.map(T=>v.jsx(Dt,{item:T,commonProps:{onItemChange:Z},style:{marginBottom:12}},T.id))})})]}):v.jsx(O.FormLayout,{error:B,children:v.jsxs("div",{ref:u,style:{marginTop:"-12px"},children:[v.jsx(O.DraggableList,{list:N,onListChange:Y,rowHeight:32,margin:[0,12],draggableHandle:".draggableHandle",itemRender:T=>v.jsx(Dt,{item:T,commonProps:{onItemChange:J,onItemDelete:k}},T.id),idKey:"id"}),v.jsxs("a",{className:te.dataValidationFormulaListAdd,onClick:Q,children:[v.jsx(Bt,{}),S.t("dataValidation.list.add")]})]})})]})}function mr(n){const{value:o,onChange:e,showError:t,validResult:a}=n,r=P.useDependency(s.LocaleService),i=t?a==null?void 0:a.formula1:"",l=t?a==null?void 0:a.formula2:"",[d,c]=w.useState(!((o==null?void 0:o.formula1)===void 0&&(o==null?void 0:o.formula2)===void 0));return v.jsxs(v.Fragment,{children:[v.jsx(O.FormLayout,{children:v.jsx(O.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?v.jsx(O.FormLayout,{label:r.t("dataValidation.checkbox.checked"),error:i,children:v.jsx(O.Input,{className:te.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?v.jsx(O.FormLayout,{label:r.t("dataValidation.checkbox.unchecked"),error:l,children:v.jsx(O.Input,{className:te.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 Yt="data-validation.custom-formula-input",Fe="data-validation.formula-input",qt="data-validation.list-formula-input",Gt="data-validation.checkbox-formula-input",hr=[[Yt,Xa],[Fe,or],[qt,ur],[Gt,mr]];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 pr=Object.defineProperty,fr=Object.getOwnPropertyDescriptor,gr=(n,o,e,t)=>{for(var a=t>1?void 0:t?fr(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},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 g,f;const m=d.get((g=u.extra)==null?void 0:g.ruleId),h=l.get(u.formulaId),p=c.getRuleById((f=u.extra)==null?void 0:f.ruleId);p&&m&&!m.isTransformable&&this._dataValidationCacheService.markRangeDirty(t,r,p.ranges),h&&this._dataValidationCacheService.markCellDirty(t,r,h.row,h.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,(h,p)=>{const g=r.getValue(h,p);if(g&&g.ruleId===a){const{formulaId:f}=g;r.realDeleteValue(h,p),c.add(f),i.delete(f)}})}),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=ae.isFormulaTransformable(this._lexerTreeBuilder,r),m=i[0].startRow,h=i[0].startColumn;let p;u?i.forEach(g=>{s.Range.foreach(g,(f,C)=>{const S=ae.transformFormula(this._lexerTreeBuilder,r,m,h,f,C),D=this._registerFormula(e,t,a,S);l.setValue(f,C,{formulaId:D,ruleId:a}),c.set(D,{row:f,column:C})})}):(p=this._registerFormula(e,t,a,r),i.forEach(g=>{s.Range.foreach(g,(f,C)=>{l.setValue(f,C,{formulaId:p,ruleId:a})})})),d.set(a,{formula:r,originCol:h,originRow:m,isTransformable:u,formulaId:p})}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:h,originRow:p,isTransformable:g,formulaId:f}=u,C=new Set;r.forEach(S=>{s.Range.foreach(S,(D,V)=>{const I=l.getValue(D,V);I&&I.ruleId===a&&(I.temp=!0)})}),i.forEach(S=>{s.Range.foreach(S,(D,V)=>{var E;const I=(E=l.getValue(D,V))!=null?E:{};if(I.ruleId!==a){const F=d.get(I.ruleId);if(F!=null&&F.isTransformable&&C.add(I.formulaId),g){const U=ae.transformFormula(this._lexerTreeBuilder,m,p,h,D,V),x=this._registerFormula(e,t,a,U);l.setValue(D,V,{ruleId:a,formulaId:x}),c.set(x,{row:D,column:V})}else l.setValue(D,V,{ruleId:a,formulaId:f})}else I.temp=!1})}),r.forEach(S=>{s.Range.foreach(S,(D,V)=>{const I=l.getValue(D,V);I&&I.ruleId===a&&I.temp===!0&&(l.realDeleteValue(D,V),g&&C.add(I.formulaId))})}),C.forEach(S=>{c.delete(S)}),this._registerOtherFormulaService.deleteFormula(e,t,Array.from(C.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=gr([Ne(0,y.Inject(Ye.RegisterOtherFormulaService)),Ne(1,y.Inject(ae.LexerTreeBuilder)),Ne(2,y.Inject(R.DataValidationModel)),Ne(3,y.Inject(we))],exports.DataValidationCustomFormulaService);function ce(n){var o,e;return(e=(o=n==null?void 0:n[0])==null?void 0:o[0])==null?void 0:e.v}class vr extends R.BaseDataValidator{constructor(){super(...arguments);_(this,"id",s.DataValidationType.CUSTOM);_(this,"title","dataValidation.custom.title");_(this,"operators",[]);_(this,"scopes",["sheet"]);_(this,"formulaInput",Yt);_(this,"_customFormulaService",this.injector.get(exports.DataValidationCustomFormulaService))}validatorFormula(e,t,a){const r=s.isFormulaString(e.formula1);return{success:r,formula1:r?"":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!!ce(c==null?void 0:c.result)}generateRuleErrorMessage(e){return this.localeService.t("dataValidation.custom.error")}}var _r=Object.defineProperty,Sr=Object.getOwnPropertyDescriptor,Vr=(n,o,e,t)=>{for(var a=t>1?void 0:t?Sr(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&&_r(o,e,a),a},Je=(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 h=d.getRuleById((m=c.extra)==null?void 0:m.ruleId);h&&this._dataValidationCacheService.markRangeDirty(t,r,h.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=Vr([Je(0,y.Inject(Ye.RegisterOtherFormulaService)),Je(1,y.Inject(we)),Je(2,y.Inject(R.DataValidationModel))],exports.DataValidationFormulaService);var Rr=Object.defineProperty,Dr=Object.getOwnPropertyDescriptor,Cr=(n,o,e,t)=>{for(var a=t>1?void 0:t?Dr(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&&Rr(o,e,a),a},et=(n,o)=>(e,t)=>o(e,t,n);const Le=6;let mt=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=$e,formula2:a=ht}=n,r=await this._formulaService.getRuleFormulaResult(o,e,n.uid);return{formula1:s.isFormulaString(t)?ce((i=r==null?void 0:r[0])==null?void 0:i.result):t,formula2:s.isFormulaString(a)?ce((l=r==null?void 0:r[1])==null?void 0:l.result):a}}drawWith(n,o){var G,j,b,B,z;const{style:e,data:t,primaryWithCoord:a,unitId:r,subUnitId:i}=o,l=a.isMergedMainCell?a.mergeInfo:a,d=re(t),c=(G=t.dataValidation)==null?void 0:G.rule,u=(j=t.dataValidation)==null?void 0:j.validator;if(!c||!u)return;const m=this._themeService.getCurrentTheme();if(!u.skipDefaultFontRender(c,d,{unitId:r,subUnitId:i}))return;const{formula1:h=$e}=c,p=this._calc(l,e),{a:g,d:f}=n.getTransform(),C=K.fixLineWidthByScale(p.left,g),S=K.fixLineWidthByScale(p.top,f),D=K.Transform.create().composeMatrix({left:C,top:S,scaleX:1,scaleY:1,angle:0,skewX:0,skewY:0,flipX:!1,flipY:!1}),V=l.endX-l.startX,I=l.endY-l.startY;n.save(),n.beginPath(),n.rect(l.startX,l.startY,V,I),n.clip();const E=D.getMatrix();n.transform(E[0],E[1],E[2],E[3],E[4],E[5]);const F=((b=e==null?void 0:e.fs)!=null?b:10)*1.6,U=String(d)===String(h),x=m.hyacinth500;K.Checkbox.drawWith(n,{checked:U,width:F,height:F,fill:(z=(B=e==null?void 0:e.cl)==null?void 0:B.rgb)!=null?z:x}),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 h,p;if(o.button===2)return;const{primaryWithCoord:e,unitId:t,subUnitId:a,data:r}=n,i=re(r),l=(h=r.dataValidation)==null?void 0:h.rule,d=(p=r.dataValidation)==null?void 0:p.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(H.SetRangeValuesCommand.id,m)}};mt=Cr([et(0,s.ICommandService),et(1,y.Inject(exports.DataValidationFormulaService)),et(2,y.Inject(s.ThemeService))],mt);const $e=1,ht=0;class Ir 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(mt));_(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,t,a){const{formula1:r,formula2:i}=e,l=!s.Tools.isBlank(r),d=!s.Tools.isBlank(i),c=r===i;return{success:l&&d&&!c||!l&&!d,formula1:l?c?this.localeService.t("dataValidation.validFail.checkboxEqual"):"":this.localeService.t("dataValidation.validFail.common"),formula2:d?c?this.localeService.t("dataValidation.validFail.checkboxEqual"):"":this.localeService.t("dataValidation.validFail.common")}}async parseFormula(e,t,a){var d,c;const{formula1:r=$e,formula2:i=ht}=e,l=await this._formulaService.getRuleFormulaResult(t,a,e.uid);return{formula1:s.isFormulaString(r)?ce((d=l==null?void 0:l[0])==null?void 0:d.result):r,formula2:s.isFormulaString(i)?ce((c=l==null?void 0:l[1])==null?void 0:c.result):i}}parseFormulaSync(e,t,a){var d,c;const{formula1:r=$e,formula2:i=ht}=e,l=this._formulaService.getRuleFormulaResultSync(t,a,e.uid);return{formula1:s.isFormulaString(r)?ce((d=l==null?void 0:l[0])==null?void 0:d.result):r,formula2:s.isFormulaString(i)?ce((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],tt=86400;function yr(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 Mr=n=>{let o=n|0;const e=tt*(n-o);let t=Math.floor(e);e-t>.9999&&(t+=1,t===tt&&(t=0,o+=1));const a=t<0?tt+t:t,[r,i,l]=yr(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()},wr={[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 Or={[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"},Er={[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"},Ct="{FORMULA1}",It="{FORMULA2}",yt=n=>Se(n).isValid(),Pe=n=>{if(!(n==null||typeof n=="boolean"))return typeof n=="number"||!Number.isNaN(+n)?Se(Mr(+n)):Se(n)};class Tr 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",Fe);_(this,"dropdown",ea);_(this,"_formulaService",this.injector.get(exports.DataValidationFormulaService));_(this,"transformDate",Pe)}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:Pe(s.isFormulaString(i)?ce((d=r==null?void 0:r[0])==null?void 0:d.result):i),formula2:Pe(s.isFormulaString(l)?ce((c=r==null?void 0:r[1])==null?void 0:c.result):l)}}async isValidType(e){const{value:t}=e;return typeof t=="string"?Se(t).isValid():typeof t=="number"}_validatorSingleFormula(e){return!s.Tools.isBlank(e)&&(s.isFormulaString(e)||!Number.isNaN(+e)||!!e&&Se(e).isValid())}validatorFormula(e,t,a){const r=e.operator;if(!r)return{success:!1};const i=this._validatorSingleFormula(e.formula1),l=this.localeService.t("dataValidation.validFail.date");if(Ee.includes(r)){const c=this._validatorSingleFormula(e.formula2);return{success:i&&c,formula1:i?void 0:l,formula2:c?void 0:l}}return{success:i,formula1:i?void 0:l}}transform(e,t,a){const{value:r}=e;return{...e,value:Pe(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(wr[e]))}generateRuleName(e){var a,r;if(!e.operator)return this.titleStr;const t=this.localeService.t(Or[e.operator]).replace(Ct,(a=e.formula1)!=null?a:"").replace(It,(r=e.formula2)!=null?r:"");return`${this.titleStr} ${t}`}generateRuleErrorMessage(e){var a,r;return e.operator?`${this.localeService.t(Er[e.operator]).replace(Ct,(a=e.formula1)!=null?a:"").replace(It,(r=e.formula2)!=null?r:"")}`:this.titleStr}}var Fr=Object.defineProperty,br=Object.getOwnPropertyDescriptor,Nr=(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&&Fr(o,e,a),a},Mt=(n,o)=>(e,t)=>o(e,t,n);const Ce=4,Lr=6,se=14,fe=6,he=4,Pr="#565656",wt=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 Ar(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 Xt(n,o,e){const t=Ar(n,e),a=new s.DocumentDataModel(t),r=new K.DocumentViewModel(a);return{documentSkeleton:K.DocumentSkeleton.create(r,o),docModel:a,docViewModel:r}}function at(n,o,e){const{documentSkeleton:t,docModel:a,docViewModel:r}=Xt(n,o,e);return{documents:new K.Documents(`DOCUMENTS_${s.Tools.generateRandomId()}`,t,{pageMarginLeft:0,pageMarginTop:0}),documentSkeleton:t,docModel:a,docViewModel:r}}function Ot(n,o,e,t,a,r){let i=0;switch(a){case s.VerticalAlign.BOTTOM:i=o-he*2-t+he;break;case s.VerticalAlign.MIDDLE:i=(o-he*2-t)/2+he;break;default:i=he;break}let l=0;switch(r){case s.HorizontalAlign.CENTER:l=(n-e)/2;break;case s.HorizontalAlign.RIGHT:l=n-e;break}return{paddingLeft:l,paddingTop:i}}var ut;let pt=(ut=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=9;switch(a){case s.VerticalAlign.MIDDLE:i=(t-se)/2+4;break;case s.VerticalAlign.BOTTOM:i=t-se-1;break}n.save(),n.translateWithPrecision(o.startX+r,o.startY+i),n.fillStyle="#565656",n.fill(wt),n.restore()}drawWith(n,o,e){var z,$;const{primaryWithCoord:t,row:a,col:r,style:i,data:l,subUnitId:d}=o,c=t.isMergedMainCell?t.mergeInfo:t,u=(z=l.dataValidation)==null?void 0:z.rule,m=($=l.dataValidation)==null?void 0:$.validator,h=l.fontRenderExtension,{leftOffset:p=0,rightOffset:g=0,topOffset:f=0,downOffset:C=0}=h||{};if(!u||!m||!m.skipDefaultFontRender(u))return;const S={startX:c.startX+p,endX:c.endX-g,startY:c.startY+f,endY:c.endY-C},D=S.endX-S.startX,V=S.endY-S.startY,I=this._ensureMap(d),E=this._generateKey(a,r),F=m.getListWithColor(u),U=re(l),x=`${U!=null?U:""}`,G=F.find(N=>N.label===x);let{tb:j,vt:b,ht:B}=i||{};if(j=j!=null?j:s.WrapStrategy.WRAP,b=b!=null?b:s.VerticalAlign.BOTTOM,B=B!=null?B:s.HorizontalAlign.LEFT,u.renderMode===s.DataValidationRenderMode.ARROW){this._drawDownIcon(n,S,D,V,b),n.save(),n.translateWithPrecision(S.startX,S.startY),n.beginPath(),n.rect(0,0,D,V),n.clip();const N=D-se,{documentSkeleton:Y,documents:J,docModel:k}=at(x,this._localeService,i);j===s.WrapStrategy.WRAP&&k.updateDocumentDataPageSize(Math.max(N,1)),Y.calculate(),Y.getActualSize();const M=K.getDocsSkeletonPageSize(Y),{height:L,width:Z}=M,{paddingTop:Q,paddingLeft:ie}=Ot(N,V,Z,L,b,B);n.translate(0,Q),n.save(),n.translateWithPrecision(Ce,0),n.beginPath(),n.rect(0,0,N,L),n.clip(),J.render(n),n.translateWithPrecision(ie,0),n.restore(),n.restore(),I.set(E,{left:S.endX+e.rowHeaderWidth-se,top:S.startY+e.columnHeaderHeight,width:se,height:V})}else{n.save(),n.translateWithPrecision(S.startX,S.startY),n.beginPath(),n.rect(0,0,D,V),n.clip();const N=D-fe*2-Ce-se,{documentSkeleton:Y,documents:J,docModel:k}=at(x,this._localeService,i);j===s.WrapStrategy.WRAP&&k.updateDocumentDataPageSize(Math.max(N,1)),Y.calculate();const M=K.getDocsSkeletonPageSize(Y),{height:L,width:Z}=M,{paddingTop:Q,paddingLeft:ie}=Ot(N,V,Z,L,b,B);n.translate(fe,Q);const T=Math.max(D-fe*2,1),q=L;K.Rect.drawWith(n,{width:T,height:q,fill:(G==null?void 0:G.color)||_e,radius:8}),n.save(),n.translateWithPrecision(Ce,0),n.beginPath(),n.rect(0,0,N,L),n.clip(),n.translateWithPrecision(ie,0),J.render(n),n.restore(),n.translate(N+Ce+4,(L-Lr)/2),n.fillStyle=Pr,n.fill(wt),n.restore(),I.set(E,{left:S.startX+fe+e.rowHeaderWidth,top:S.startY+Q+e.columnHeaderHeight,width:T,height:q})}}calcCellAutoHeight(n){var C;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=(C=t.dataValidation)==null?void 0:C.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},h=m.endX-m.startX,p=re(t),g=`${p!=null?p:""}`;let{tb:f}=e||{};if(f=f!=null?f:s.WrapStrategy.WRAP,u.renderMode===s.DataValidationRenderMode.ARROW){const S=h-se,{documentSkeleton:D,docModel:V}=at(g,this._localeService,e);f===s.WrapStrategy.WRAP&&V.updateDocumentDataPageSize(Math.max(S,1)),D.calculate(),D.getActualSize();const I=K.getDocsSkeletonPageSize(D),{height:E}=I;return E}else{const S=h-fe*2-Ce-se,{documentSkeleton:D,docModel:V}=Xt(g,this._localeService,e);f===s.WrapStrategy.WRAP&&V.updateDocumentDataPageSize(Math.max(S,1)),D.calculate();const I=K.getDocsSkeletonPageSize(D),{height:E}=I;return E+he*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:h}=l,{x:p,y:g}=n;return p>=u&&p<=u+m&&g>=c&&g<=c+h}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(Ge.id,i)}},_(ut,"padding",{l:fe+Ce,r:se+fe,t:he,b:he}),ut);pt=Nr([Mt(0,y.Inject(s.LocaleService)),Mt(1,s.ICommandService)],pt);const jr="LIST_RENDER_MODE_OPTION_INPUT";function We(n){var a;const{value:o,onChange:e}=n,t=P.useDependency(s.LocaleService);return v.jsx(O.FormLayout,{label:t.t("dataValidation.renderMode.label"),children:v.jsxs(O.RadioGroup,{value:`${(a=o.renderMode)!=null?a:s.DataValidationRenderMode.CUSTOM}`,onChange:r=>e({...o,renderMode:+r}),children:[v.jsx(O.Radio,{value:`${s.DataValidationRenderMode.CUSTOM}`,children:t.t("dataValidation.renderMode.chip")}),v.jsx(O.Radio,{value:`${s.DataValidationRenderMode.ARROW}`,children:t.t("dataValidation.renderMode.arrow")}),v.jsx(O.Radio,{value:`${s.DataValidationRenderMode.TEXT}`,children:t.t("dataValidation.renderMode.text")})]})})}We.componentKey=jr;function rt(n){if(!n)return[];const o=new Set;return n.forEach(e=>{e.forEach(t=>{const a=re(t);a!=null&&o.add(a.toString())})}),[...o]}const xr=["if","indirect","choose","offset"];function Ur(n,o){if(!s.isFormulaString(n)||ae.isReferenceString(n.slice(1)))return!0;const t=o.sequenceNodesBuilder(n);return t&&t.some(a=>typeof a=="object"&&a.nodeType===ae.sequenceNodeType.FUNCTION&&xr.indexOf(a.token.toLowerCase())>-1)}function Br(n,o){const{formula1:e="",ranges:t}=n;if(ae.isReferenceString(e.slice(1))){const r=ae.deserializeRangeWithSheet(e.slice(1));if((!r.sheetName||r.sheetName===o)&&t.some(i=>s.Rectangle.intersects(i,r.range)))return!0}return!1}class zt extends R.BaseDataValidator{constructor(){super(...arguments);_(this,"formulaService",this.injector.get(exports.DataValidationFormulaService));_(this,"_lexer",this.injector.get(ae.LexerTreeBuilder));_(this,"_univerInstanceService",this.injector.get(s.IUniverInstanceService));_(this,"id",s.DataValidationType.LIST);_(this,"title","dataValidation.list.title");_(this,"operators",[]);_(this,"scopes",["sheet"]);_(this,"formulaInput",qt);_(this,"canvasRender",this.injector.createInstance(pt));_(this,"dropdown",Jt);_(this,"optionsInput",We.componentKey)}skipDefaultFontRender(e){return e.renderMode!==s.DataValidationRenderMode.TEXT}validatorFormula(e,t,a){var c,u,m;const r=!s.Tools.isBlank(e.formula1),i=Ur((c=e.formula1)!=null?c:"",this._lexer),l=(m=(u=this._univerInstanceService.getUnit(t,s.UniverInstanceType.UNIVER_SHEET))==null?void 0:u.getSheetBySheetId(a))==null?void 0:m.getName(),d=Br(e,l!=null?l:"");return{success:!!(r&&i&&!d),formula1:r?i?d?this.localeService.t("dataValidation.validFail.listIntersects"):void 0:this.localeService.t("dataValidation.validFail.listInvalid"):this.localeService.t("dataValidation.validFail.list")}}parseCellValue(e){const t=e.toString();return ye(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)?rt((l=i==null?void 0:i[0])==null?void 0:l.result):ye(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 h,p,g;const{formula1:r=""}=e,i=this.injector.get(s.IUniverInstanceService),l=(h=t?i.getUniverSheetInstance(t):void 0)!=null?h:i.getCurrentUnitForType(s.UniverInstanceType.UNIVER_SHEET);if(!l)return[];const d=(p=a?l.getSheetBySheetId(a):void 0)!=null?p:l.getActiveSheet();if(!d)return[];const c=l.getUnitId(),u=d.getSheetId(),m=this.formulaService.getRuleFormulaResultSync(c,u,e.uid);return s.isFormulaString(r)?rt((g=m==null?void 0:m[0])==null?void 0:g.result):ye(r)}async getListAsync(e,t,a){var h,p,g;const{formula1:r=""}=e,i=this.injector.get(s.IUniverInstanceService),l=(h=t?i.getUniverSheetInstance(t):void 0)!=null?h:i.getCurrentUnitForType(s.UniverInstanceType.UNIVER_SHEET);if(!l)return[];const d=(p=a?l.getSheetBySheetId(a):void 0)!=null?p:l.getActiveSheet();if(!d)return[];const c=l.getUnitId(),u=d.getSheetId(),m=await this.formulaService.getRuleFormulaResult(c,u,e.uid);return s.isFormulaString(r)?rt((g=m==null?void 0:m[0])==null?void 0:g.result):ye(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 He(n){let o=n;return typeof n=="string"?((n.startsWith("¥")||n.startsWith("$"))&&(o=n.slice(1)),+o):+n}class $r extends R.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",Fe);_(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(He(r))}transform(e,t,a){const{value:r}=e;return{...e,value:He(r)}}_parseNumber(e){return e==null?Number.NaN:+e}async parseFormula(e,t,a){var c,u,m,h,p,g,f,C;const r=await this._formulaService.getRuleFormulaResult(t,a,e.uid),{formula1:i,formula2:l}=e;return{formula1:this._parseNumber(s.isFormulaString(i)?(h=(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:h.v:i),formula2:this._parseNumber(s.isFormulaString(l)?(C=(f=(g=(p=r==null?void 0:r[1])==null?void 0:p.result)==null?void 0:g[0])==null?void 0:f[0])==null?void 0:C.v:l)}}validatorFormula(e,t,a){const r=e.operator;if(!r)return{success:!1};const i=s.Tools.isDefine(e.formula1)&&this._isFormulaOrNumber(e.formula1),l=s.Tools.isDefine(e.formula2)&&this._isFormulaOrNumber(e.formula2),d=Ee.includes(r),c=this.localeService.t("dataValidation.validFail.number");return d?{success:i&&l,formula1:i?void 0:c,formula2:l?void 0:c}:{success:i,formula1:i?"":c}}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 Wr="{FORMULA1}",Hr="{FORMULA2}";class kr 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",Fe);_(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,t,a){const r=e.operator;if(!r)return{success:!1};const i=s.Tools.isDefine(e.formula1)&&this._isFormulaOrInt(e.formula1),l=s.Tools.isDefine(e.formula2)&&this._isFormulaOrInt(e.formula2),d=Ee.includes(r),c=this.localeService.t("dataValidation.validFail.number");return d?{success:i&&l,formula1:i?void 0:c,formula2:l?void 0:c}:{success:i,formula1:c}}_parseNumber(e){return e==null?Number.NaN:+e}_isValidFormula(e){return!Number.isNaN(e)}async parseFormula(e,t,a){var d,c,u,m,h,p,g,f;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)?(f=(g=(p=(h=r==null?void 0:r[1])==null?void 0:h.result)==null?void 0:p[0])==null?void 0:g[0])==null?void 0:f.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(Wr,(a=e.formula1)!=null?a:"").replace(Hr,(r=e.formula2)!=null?r:"")}`:this.titleStr}}class Yr extends R.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",Fe);_(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=He(r);return!Number.isNaN(i)&&Number.isInteger(i)}transform(e,t,a){const{value:r}=e;return{...e,value:He(r)}}_parseNumber(e){return e==null?Number.NaN:+e}async parseFormula(e,t,a){var c,u,m,h,p,g,f,C;const r=await this._formulaService.getRuleFormulaResult(t,a,e.uid),{formula1:i,formula2:l}=e;return{formula1:this._parseNumber(s.isFormulaString(i)?(h=(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:h.v:i),formula2:this._parseNumber(s.isFormulaString(l)?(C=(f=(g=(p=r==null?void 0:r[1])==null?void 0:p.result)==null?void 0:g[0])==null?void 0:f[0])==null?void 0:C.v:l)}}validatorFormula(e,t,a){const r=e.operator;if(!r)return{success:!1};const i=s.Tools.isDefine(e.formula1)&&this._isFormulaOrInt(e.formula1),l=s.Tools.isDefine(e.formula2)&&this._isFormulaOrInt(e.formula2),d=Ee.includes(r),c=this.localeService.t("dataValidation.validFail.number");return d?{success:i&&l,formula1:i?void 0:c,formula2:l?void 0:c}:{success:i,formula1:c}}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,qr=0,ot=4,Kt=4,ft=6,ke=6,ge=14;function Gr(n,o){const e=K.FontCache.getTextSize(n,o),t=e.width+Qt*2,{ba:a,bd:r}=e,i=a+r;return{width:t,height:i+qr*2,ba:a}}function Et(n,o,e,t){const a=e-ge-ft,r=t-ke*2,i=n.map(u=>({layout:Gr(u,o),text:u}));let l;const d=[];i.forEach(u=>{const{layout:m}=u,{width:h,height:p}=m;!l||l.width+h+ot>a?(l={width:h,height:p,items:[{...u,left:0}]},d.push(l)):(l.items.push({...u,left:l.width+ot}),l.width=l.width+h+ot)});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+ke*2}}const Xr=8;class zr extends K.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(),K.Rect.drawWith(o,{width:c.width,height:c.height,radius:Xr,fill:l||_e}),o.translateWithPrecision(Qt,c.ba),o.font=a,o.fillStyle=d,o.fillText(u,0,0),o.restore()}}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},Jr=(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 gt=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-ge+4;let i=4;switch(a){case s.VerticalAlign.MIDDLE:i=(t-ge)/2+4;break;case s.VerticalAlign.BOTTOM:i=t-ge+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,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:h=0,rightOffset:p=0,topOffset:g=0,downOffset:f=0}=m||{},C=d.dataValidation,S=this._ensureMap(c),D=this._generateKey(r,i);if(!C)return;const V={startX:u.startX+h,endX:u.endX-p,startY:u.startY+g,endY:u.endY-f},I=V.endX-V.startX,E=V.endY-V.startY,{cl:F}=l||{},U=(L=typeof F=="object"?F==null?void 0:F.rgb:F)!=null?L:"#000",x=K.getFontStyleString(l!=null?l:void 0),{rule:G,validator:j}=C,b=j,{vt:B,ht:z}=l||{},$=B!=null?B:s.VerticalAlign.MIDDLE,N=(Z=re(d))!=null?Z:"",Y=b.parseCellValue(N),J=b.getListWithColorMap(G),k=Et(Y,x,I,E);this._drawDownIcon(n,V,I,E,$),n.save(),n.translateWithPrecision(V.startX,V.startY),n.beginPath(),n.rect(0,0,I-ge,E),n.clip(),n.translateWithPrecision(ft,ke);let M=0;switch($){case s.VerticalAlign.MIDDLE:M=(k.contentHeight-k.totalHeight)/2;break;case s.VerticalAlign.BOTTOM:M=k.contentHeight-k.totalHeight;break}n.translateWithPrecision(0,M),k.lines.forEach((Q,ie)=>{n.save();const{width:T,height:q,items:X}=Q;let ee=0;switch(z){case s.HorizontalAlign.RIGHT:ee=k.contentWidth-T;break;case s.HorizontalAlign.CENTER:ee=(k.contentWidth-T)/2;break}n.translate(ee,ie*(q+Kt)),X.forEach(le=>{n.save(),n.translateWithPrecision(le.left,0),zr.drawWith(n,{...x,info:le,color:U,fill:J[le.text]}),n.restore()}),n.restore()}),n.restore(),S.set(D,{left:V.startX,top:V.startY,width:k.contentWidth+ft+ge,height:k.contentHeight+ke*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 h=u.endX-u.startX,p=u.endY-u.startY,g=(I=re(t))!=null?I:"",{validator:f}=m,S=f.parseCellValue(g),D=K.getFontStyleString(e!=null?e:void 0);return Et(S,D,h,p).cellAutoHeight}isHit(n,o){const{primaryWithCoord:e}=o,t=e.isMergedMainCell?e.mergeInfo:e,{endX:a}=t,{x:r}=n;return r>=a-ge&&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(Ge.id,i)}};gt=Zr([Jr(0,s.ICommandService)],gt);class to extends zt{constructor(){super(...arguments);_(this,"id",s.DataValidationType.LIST_MULTIPLE);_(this,"title","dataValidation.listMultiple.title");_(this,"canvasRender",this.injector.createInstance(gt))}skipDefaultFontRender(){return!0}}const Zt="data-validation-single",St="sheet.menu.data-validation";function ao(n){return{id:St,type:W.MenuItemType.SUBITEMS,positions:[W.MenuPosition.TOOLBAR_START],group:W.MenuGroup.TOOLBAR_FORMULAS_INSERT,icon:Zt,tooltip:"dataValidation.title",hidden$:W.getMenuHiddenObservable(n,s.UniverInstanceType.UNIVER_SHEET),disabled$:A.getCurrentRangeDisable$(n,{workbookTypes:[H.WorkbookEditablePermission],worksheetTypes:[H.WorksheetSetCellStylePermission,H.WorksheetEditPermission],rangeTypes:[H.RangeProtectionPermissionEditPoint]})}}function ro(n){return{id:Te.id,title:"dataValidation.panel.title",type:W.MenuItemType.BUTTON,positions:[St]}}function oo(n){return{id:vt.id,title:"dataValidation.panel.add",type:W.MenuItemType.BUTTON,positions:[St]}}var no=Object.defineProperty,io=Object.getOwnPropertyDescriptor,so=(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&&no(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,Ut),this._initCommandInterceptor()}_registerValidators(){[$r,Yr,kr,Tr,Ir,zt,to,vr].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=>{if(o.dispose(),!e)return;const t=e.getActiveSheet();t&&(this._sheetDataValidationService.switchCurrent(e.getUnitId(),t.getSheetId()),o.add(s.toDisposable(e.activeSheet$.subscribe(a=>{if(a){const r=e.getUnitId(),i=a.getSheetId();this._sheetDataValidationService.switchCurrent(r,i)}}))))}),this.disposeWithMe(o)}_initCommandInterceptor(){this._sheetInterceptorService.interceptCommand({getMutations:o=>{if(o.id===H.ClearSelectionAllCommand.id){const e=this._univerInstanceService.getCurrentUnitForType(s.UniverInstanceType.UNIVER_SHEET),t=e.getUnitId(),a=e.getActiveSheet();if(!a)throw new Error("No active sheet found");const r=a.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}=Me(t,r,c);return{undos:m,redos:u}}return{undos:[],redos:[]}}})}};exports.DataValidationController=so([s.OnLifecycle(s.LifecycleStages.Rendered,exports.DataValidationController),me(0,s.IUniverInstanceService),me(1,y.Inject(exports.SheetDataValidationService)),me(2,y.Inject(R.DataValidatorRegistryService)),me(3,y.Inject(y.Injector)),me(4,y.Inject(W.ComponentManager)),me(5,y.Inject(H.SelectionManagerService)),me(6,y.Inject(H.SheetInterceptorService)),me(7,y.Inject(R.DataValidationModel))],exports.DataValidationController);const lo="univer-data-validation-list-buttons",co="univer-data-validation-list-button",nt={dataValidationListButtons:lo,dataValidationListButton:co};function uo(){const n=P.useDependency(s.IUniverInstanceService),o=W.useObservable(()=>n.getCurrentTypeOfUnit$(s.UniverInstanceType.UNIVER_SHEET),void 0,void 0,[]);return o?v.jsx(mo,{workbook:o}):null}function mo(n){const o=P.useDependency(R.DataValidationModel),e=P.useDependency(s.IUniverInstanceService),t=P.useDependency(s.ICommandService),a=P.useDependency(y.Injector),r=P.useDependency(ue);P.useDependency(exports.DataValidationController);const i=P.useDependency(s.LocaleService),[l,d]=w.useState([]),{workbook:c}=n,u=W.useObservable(c.activeSheet$,void 0,!0),m=c.getUnitId(),h=u==null?void 0:u.getSheetId(),p=o.ensureManager(m,h);w.useEffect(()=>{d(p.getDataValidations());const V=p.dataValidations$.subscribe(I=>{d([...I])});return()=>{V.unsubscribe()}},[p]);const g=async()=>{const V=R.createDefaultNewRule(a),I={unitId:m,subUnitId:h,rule:V};await t.executeCommand(ze.id,I),r.setActiveRule({unitId:m,subUnitId:h,rule:V})},f=()=>{t.executeCommand(R.RemoveAllDataValidationCommand.id,{unitId:m,subUnitId:h})},S=(V=>{const E=e.getCurrentUnitForType(s.UniverInstanceType.UNIVER_SHEET).getActiveSheet();return V.map(U=>{const{ranges:x}=U;return(x==null?void 0:x.some(j=>{var N,Y;const{startRow:b,startColumn:B,endRow:z,endColumn:$}=j;for(let J=b;J<=z;J++)for(let k=B;k<=$;k++){const M=(Y=(N=E==null?void 0:E.getCell(J,k))==null?void 0:N.selectionProtection)==null?void 0:Y[0];if((M==null?void 0:M[Be.Edit])===!1||(M==null?void 0:M[Be.View])===!1)return!0}return!1}))?{...U,disable:!0}:{...U}})})(l),D=S==null?void 0:S.some(V=>V.disable);return v.jsxs("div",{children:[S==null?void 0:S.map(V=>{var I;return v.jsx(Ha,{unitId:m,subUnitId:h,onClick:()=>{V.disable||r.setActiveRule({unitId:m,subUnitId:h,rule:V})},rule:V,disable:(I=V.disable)!=null?I:!1},V.uid)}),v.jsxs("div",{className:nt.dataValidationListButtons,children:[l.length&&!D?v.jsx(O.Button,{className:nt.dataValidationListButton,onClick:f,children:i.t("dataValidation.panel.removeAll")}):null,v.jsx(O.Button,{className:nt.dataValidationListButton,type:"primary",onClick:g,children:i.t("dataValidation.panel.add")})]})]})}const ho=()=>{const n=P.useDependency(ue),o=W.useObservable(n.activeRule$,n.activeRule);return o?v.jsx(xa,{},o.rule.uid):v.jsx(uo,{})},po="univer-dv-list-dropdown",fo="univer-dv-list-dropdown-title",go="univer-dv-list-dropdown-list",vo="univer-dv-list-dropdown-list-container",_o="univer-dv-list-dropdown-selected-icon",So="univer-dv-list-dropdown-item-container",Vo="univer-dv-list-dropdown-item",Ro="univer-dv-list-dropdown-split",Do="univer-dv-list-dropdown-edit",de={dvListDropdown:po,dvListDropdownTitle:fo,dvListDropdownList:go,dvListDropdownListContainer:vo,dvListDropdownSelectedIcon:_o,dvListDropdownItemContainer:So,dvListDropdownItem:Vo,dvListDropdownSplit:Ro,dvListDropdownEdit:Do},Co=n=>{const{value:o,onChange:e,multiple:t,options:a,title:r,onEdit:i,style:l}=n;return v.jsxs("div",{className:de.dvListDropdown,style:l,children:[v.jsx("div",{className:de.dvListDropdownTitle,children:r}),v.jsx("div",{className:de.dvListDropdownList,children:v.jsx(O.Scrollbar,{children:v.jsx("div",{className:de.dvListDropdownListContainer,children:a.map((d,c)=>{const u=o.indexOf(d.value)>-1,m=()=>{let h;u?h=new Set(o.filter(g=>g!==d.value)):h=new Set(t?[...o,d.value]:[d.value]);const p=[];a.forEach(g=>{h.has(g.value)&&p.push(g.value)}),e(p)};return v.jsxs("div",{className:de.dvListDropdownItemContainer,onClick:m,children:[v.jsx("div",{className:de.dvListDropdownItem,style:{background:d.color||_e},children:d.label}),v.jsx("div",{className:de.dvListDropdownSelectedIcon,children:u?v.jsx(xt,{}):null})]},c)})})})}),v.jsx("div",{className:de.dvListDropdownSplit}),v.jsx("div",{className:de.dvListDropdownEdit,children:v.jsx("a",{onClick:i,children:"编辑"})})]})};function Io(n){var x,G;const{location:o,hideFn:e}=n,{worksheet:t,row:a,col:r,unitId:i,subUnitId:l}=o,d=P.useDependency(s.ICommandService),c=P.useDependency(s.LocaleService),[u,m]=w.useState(""),h=P.useDependency(A.IEditorBridgeService),p=O.RectPopup.useContext(),g=p.right-p.left;if(!t)return null;const f=t.getCell(a,r),C=(x=f==null?void 0:f.dataValidation)==null?void 0:x.rule,S=(G=f==null?void 0:f.dataValidation)==null?void 0:G.validator,D=(C==null?void 0:C.renderMode)===s.DataValidationRenderMode.CUSTOM||(C==null?void 0:C.renderMode)===void 0;if(!f||!C||!S)return;const V=C.type===s.DataValidationType.LIST_MULTIPLE,I=S.getListWithColor(C,i,l),E=u||nr(f),F=ye(E),U=()=>{d.executeCommand(Te.id,{ruleId:C.uid}),e()};return v.jsx(Co,{style:{minWidth:g,maxWidth:Math.max(g,200)},title:V?c.t("dataValidation.listMultiple.dropdown"):c.t("dataValidation.list.dropdown"),value:F,multiple:V,onChange:j=>{const b=kt(j),B={unitId:i,subUnitId:l,range:{startColumn:r,endColumn:r,startRow:a,endRow:a},value:{v:b,p:null,f:null,si:null}};h.isVisible()&&h.changeVisible({visible:!1,keycode:W.KeyCode.ESC,eventType:K.DeviceInputEventType.Keyboard}),d.executeCommand(H.SetRangeValuesCommand.id,B),m(b),V||e()},options:I.map(j=>({label:j.label,value:j.label,color:D?j.color:"transparent"})),onEdit:U})}var yo=Object.defineProperty,Mo=Object.getOwnPropertyDescriptor,wo=(n,o,e,t)=>{for(var a=t>1?void 0:t?Mo(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},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),h=m?u.getRuleById(m):void 0;if(!h||h.errorStyle!==s.DataValidationErrorStyle.STOP)return t(Promise.resolve(a));const p=await this._dataValidatorRegistryService.getValidatorItem(h.type);if(!p||await p.validator({value:re(a),row:i,column:l,unitId:d,subUnitId:c},h))return t(Promise.resolve(a));const f=r.getCellRaw(i,l);return this._dialogService.open({width:368,title:{title:this._localeService.t("dataValidation.alert.title")},id:"reject-input-dialog",children:{title:p.getRuleFinalError(h)},footer:{title:w.createElement(O.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(f))}})}showReject(o){this._dialogService.open({width:368,title:{title:this._localeService.t("dataValidation.alert.title")},id:"reject-input-dialog",children:{title:o},footer:{title:w.createElement(O.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=wo([s.OnLifecycle(s.LifecycleStages.Ready,exports.DataValidationRejectInputController),Oe(0,A.IEditorBridgeService),Oe(1,y.Inject(R.DataValidationModel)),Oe(2,y.Inject(R.DataValidatorRegistryService)),Oe(3,W.IDialogService),Oe(4,y.Inject(s.LocaleService))],exports.DataValidationRejectInputController);const Oo="univer-dv-date-dropdown",Eo={dvDateDropdown:Oo};function To(n){var D,V,I;const{location:o,hideFn:e}=n,{worksheet:t,row:a,col:r,unitId:i,subUnitId:l}=o,d=P.useDependency(s.ICommandService),c=P.useDependency(exports.DataValidationRejectInputController),[u,m]=w.useState();if(!t)return null;const h=t.getCell(a,r),p=(D=h==null?void 0:h.dataValidation)==null?void 0:D.rule,g=(V=h==null?void 0:h.dataValidation)==null?void 0:V.validator;if(!h||!p||!g)return;const f=re(h),C=(I=g.transformDate(f))!=null?I:Se(),S=C.isValid()?C:Se();return v.jsx("div",{className:Eo.dvDateDropdown,children:v.jsx(O.DatePanel,{pickerValue:u!=null?u:S,onSelect:async E=>{const F=E.format("YYYY/MM/DD");p.errorStyle!==s.DataValidationErrorStyle.STOP||await g.validator({value:F,unitId:i,subUnitId:l,row:a,column:r},p)?d.executeCommand(H.SetRangeValuesCommand.id,{unitId:i,subUnitId:l,range:{startColumn:r,endColumn:r,startRow:a,endRow:a},value:{v:F,p:null,f:null,si:null}}):c.showReject(g.getRuleFinalError(p)),e()},onPanelChange:E=>{m(E)}})})}const Jt="data-validation.list.dropdown",ea="data-validation.date.dropdown";var Fo=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&&Fo(o,e,a),a},oe=(n,o)=>(e,t)=>o(e,t,n);const Lo={},Po={tr:{size:6,color:"#fe4b4b"}};exports.SheetsDataValidationRenderController=class extends s.RxDisposable{constructor(o,e,t,a,r,i,l,d,c,u,m,h,p){super(),this._config=o,this._commandService=e,this._editorBridgeService=t,this._menuService=a,this._renderManagerService=r,this._univerInstanceService=i,this._autoHeightController=l,this._componentManager=d,this._dropdownManagerService=c,this._dataValidationModel=u,this._dataValidatorRegistryService=m,this._injector=h,this._sheetInterceptorService=p,this._initComponents(),this._initMenu(),this._initSkeletonChange(),this._initDropdown(),this._initViewModelIntercept(),this._initAutoHeight()}_initMenu(){const{menu:o={}}=this._config;[ao,ro,oo].forEach(e=>{this.disposeWithMe(this._menuService.addMenuItem(e(this._injector),o))})}_initComponents(){[[Lt,ho],[Nt,ma],[Jt,Io],[ea,To],[We.componentKey,We],...hr].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();if(!m)return;const h=this._dropdownManagerService.activeDropdown,p=h==null?void 0:h.location;if(p&&p.unitId===t&&p.subUnitId===a&&p.row===r&&p.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=()=>{var l,d,c;const e=this._univerInstanceService.getCurrentUnitForType(s.UniverInstanceType.UNIVER_SHEET);if(!e)return;const t=e.getUnitId(),a=(l=e.getActiveSheet())==null?void 0:l.getSheetId();if(!a)return;const r=(c=(d=this._renderManagerService.getRenderById(t))==null?void 0:d.with(A.SheetSkeletonManagerService).getUnitSkeleton(t,a))==null?void 0:c.skeleton,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(H.INTERCEPTOR_POINT.CELL_CONTENT,{priority:200,handler:(o,e,t)=>{var E,F,U,x,G,j;const{row:a,col:r,unitId:i,subUnitId:l,workbook:d,worksheet:c}=e,u=this._dataValidationModel.ensureManager(i,l);if(!u)return t(o);const m=(F=(E=this._renderManagerService.getRenderById(i))==null?void 0:E.with(A.SheetSkeletonManagerService).getUnitSkeleton(i,l))==null?void 0:F.skeleton;if(!m)return t(o);const h=e.workbook.getStyles(),p=(typeof(o==null?void 0:o.s)=="string"?h.get(o==null?void 0:o.s):o==null?void 0:o.s)||{},g=u.getRuleIdByLocation(a,r);if(!g)return t(o);const f=u.getRuleById(g);if(!f)return t(o);const C=c.getCellRaw(e.row,e.col),S=this._dataValidationModel.validator(re(C),f,e),D=this._dataValidatorRegistryService.getValidatorItem(f.type),V=re(o);let I={};if((f.type===s.DataValidationType.LIST||f.type===s.DataValidationType.LIST_MULTIPLE)&&(I={interceptorStyle:{...o==null?void 0:o.interceptorStyle,tb:(U=p.tb!==s.WrapStrategy.OVERFLOW?p.tb:s.WrapStrategy.CLIP)!=null?U:s.WrapStrategy.WRAP}}),f.type===s.DataValidationType.CHECKBOX){const{formula2:b}=D.parseFormulaSync(f,e.unitId,e.subUnitId);V||(I={v:b,t:1,p:null,interceptorStyle:{...o==null?void 0:o.interceptorStyle,tb:s.WrapStrategy.CLIP}})}if(f.type===s.DataValidationType.LIST&&(f.renderMode===s.DataValidationRenderMode.ARROW||f.renderMode===s.DataValidationRenderMode.TEXT)){const b=D.getListWithColorMap(f),B=`${(x=re(o))!=null?x:""}`,z=b[B];z&&(I={...I,interceptorStyle:{...I.interceptorStyle,bg:{rgb:z}}})}return t({...o,...I,dataValidation:{ruleId:g,validStatus:S,rule:f,validator:D},markers:{...o==null?void 0:o.markers,...S===s.DataValidationStatus.INVALID?Po:null},customRender:[...(G=o==null?void 0:o.customRender)!=null?G:[],...D!=null&&D.canvasRender?[D.canvasRender]:[]],fontRenderExtension:{...o==null?void 0:o.fontRenderExtension,isSkip:D==null?void 0:D.skipDefaultFontRender(f,V,e)},interceptorStyle:{...o==null?void 0:o.interceptorStyle,...I.interceptorStyle},get interceptorAutoHeight(){var z,$,N,Y;const b=m.mergeData.find(J=>{const{startColumn:k,startRow:M,endColumn:L,endRow:Z}=J;return a>=M&&r>=k&&a<=Z&&r<=L}),B={data:{...o,dataValidation:{ruleId:g,validStatus:S,rule:f,validator:D}},style:m.getsStyles().getStyleByCell(o),primaryWithCoord:m.getCellByIndex((z=b==null?void 0:b.startRow)!=null?z:a,($=b==null?void 0:b.startColumn)!=null?$:r),unitId:i,subUnitId:l,row:a,col:r,workbook:d,worksheet:c};return(Y=(N=D==null?void 0:D.canvasRender)==null?void 0:N.calcCellAutoHeight)==null?void 0:Y.call(N,B)},coverable:((j=o==null?void 0:o.coverable)!=null?j:!0)&&!(f.type===s.DataValidationType.LIST||f.type===s.DataValidationType.LIST_MULTIPLE)})}}))}_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.SheetsDataValidationRenderController=No([s.OnLifecycle(s.LifecycleStages.Rendered,exports.SheetsDataValidationRenderController),oe(1,s.ICommandService),oe(2,A.IEditorBridgeService),oe(3,W.IMenuService),oe(4,K.IRenderManagerService),oe(5,s.IUniverInstanceService),oe(6,y.Inject(A.AutoHeightController)),oe(7,y.Inject(W.ComponentManager)),oe(8,y.Inject(Ve)),oe(9,y.Inject(R.DataValidationModel)),oe(10,y.Inject(R.DataValidatorRegistryService)),oe(11,y.Inject(y.Injector)),oe(12,y.Inject(H.SheetInterceptorService))],exports.SheetsDataValidationRenderController);var Ao=Object.defineProperty,jo=Object.getOwnPropertyDescriptor,xo=(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&&Ao(o,e,a),a},Ae=(n,o)=>(e,t)=>o(e,t,n);const it="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(ve.debounceTime(100)).subscribe(o=>{var e,t;if(o){const r=this._univerInstanceService.getCurrentUnitForType(s.UniverInstanceType.UNIVER_SHEET).getActiveSheet();if(!r)return;const i=r.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(it),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:A.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:it});return}}this._cellAlertManagerService.removeAlert(it)}))}};exports.DataValidationAlertController=xo([s.OnLifecycle(s.LifecycleStages.Rendered,exports.DataValidationAlertController),Ae(0,y.Inject(A.HoverManagerService)),Ae(1,y.Inject(A.CellAlertManagerService)),Ae(2,s.IUniverInstanceService),Ae(3,y.Inject(s.LocaleService))],exports.DataValidationAlertController);var Uo=Object.defineProperty,Bo=Object.getOwnPropertyDescriptor,$o=(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&&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){super();_(this,"_disposableMap",new Map);_(this,"registerRule",(e,t,a)=>{this.register(e,t,a),this.registerFormula(e,t,a)});this._dataValidationModel=e,this._injector=t,this._refRangeService=a,this._dataValidationCustomFormulaService=r,this._dataValidationFormulaService=i,this._formulaRefRangeService=l,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 h=this._dataValidationModel.getRuleById(e,t,r);if(!h)return{redos:[],undos:[]};const p=h[u];if(!p||p===m)return{redos:[],undos:[]};const g={unitId:e,subUnitId:t,ruleId:a.uid,payload:{type:R.UpdateRuleType.SETTING,payload:{type:h.type,formula1:h.formula1,formula2:h.formula2,[u]:m}}},f={unitId:e,subUnitId:t,ruleId:a.uid,payload:{type:R.UpdateRuleType.SETTING,payload:{type:h.type,formula1:h.formula1,formula2:h.formula2}}},C=[{id:R.UpdateDataValidationMutation.id,params:g}],S=[{id:R.UpdateDataValidationMutation.id,params:f}];return{redos:C,undos:S}};if(a.type===s.DataValidationType.CUSTOM){const u=this._dataValidationCustomFormulaService.getRuleFormulaInfo(e,t,r);if(u){const m=this._formulaRefRangeService.registerFormula(u.formula,h=>d("formula1",h));l.add(()=>m.dispose())}}if(a.type!==s.DataValidationType.CUSTOM){const u=this._dataValidationFormulaService.getRuleFormulaInfo(e,t,r);if(u){const[m,h]=u;if(m){const p=this._formulaRefRangeService.registerFormula(m.text,g=>d("formula1",g));l.add(()=>p.dispose())}if(h){const p=this._formulaRefRangeService.registerFormula(h.text,g=>d("formula1",g));l.add(()=>p.dispose())}}}}register(e,t,a){var c;const r=u=>{const m=[...a.ranges],p=m.map(f=>H.handleCommonDefaultRangeChangeWithEffectRefCommands(f,u)).filter(f=>!!f).flat();if(s.isRangesEqual(p,m))return{redos:[],undos:[]};if(p.length){const f={unitId:e,subUnitId:t,ruleId:a.uid,payload:{type:R.UpdateRuleType.RANGE,payload:p}},C=[{id:R.UpdateDataValidationMutation.id,params:f}],S=[{id:R.UpdateDataValidationMutation.id,params:{unitId:e,subUnitId:t,ruleId:a.uid,payload:{type:R.UpdateRuleType.RANGE,payload:m}}}];return{redos:C,undos:S}}else{const f={unitId:e,subUnitId:t,ruleId:a.uid},C=[{id:R.RemoveDataValidationMutation.id,params:f}],S=R.removeDataValidationUndoFactory(this._injector,f);return{redos:C,undos:S}}},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(this._dataValidationModel.ruleChange$.subscribe(e=>{const{unitId:t,subUnitId:a,rule:r}=e;switch(e.type){case"add":{const i=e.rule;this.registerRule(e.unitId,e.subUnitId,i);break}case"remove":{const i=this._disposableMap.get(this._getIdWithUnitId(t,a,r.uid));i&&i.forEach(l=>l());break}case"update":{const i=e.rule,l=this._disposableMap.get(this._getIdWithUnitId(t,a,i.uid));l&&l.forEach(d=>d()),this.registerRule(e.unitId,e.subUnitId,i);break}}})),this.disposeWithMe(s.toDisposable(()=>{this._disposableMap.forEach(e=>{e.forEach(t=>t())}),this._disposableMap.clear()}))}};exports.DataValidationRefRangeController=$o([s.OnLifecycle(s.LifecycleStages.Ready,exports.DataValidationRefRangeController),Ie(0,y.Inject(R.DataValidationModel)),Ie(1,y.Inject(y.Injector)),Ie(2,y.Inject(H.RefRangeService)),Ie(3,y.Inject(exports.DataValidationCustomFormulaService)),Ie(4,y.Inject(exports.DataValidationFormulaService)),Ie(5,y.Inject(Ye.FormulaRefRangeService))],exports.DataValidationRefRangeController);var Wo=Object.defineProperty,Ho=Object.getOwnPropertyDescriptor,ko=(n,o,e,t)=>{for(var a=t>1?void 0:t?Ho(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&&Wo(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=r=>{const{source:i,target:l,unitId:d,subUnitId:c}=r,u=this._dataValidationModel.ensureManager(d,c),m=u.getRuleObjectMatrix().clone(),h=A.virtualizeDiscreteRanges([i,l]),[p,g]=h.ranges,{mapFunc:f}=h,C={row:p.startRow,col:p.startColumn};A.getAutoFillRepeatRange(p,g).forEach(E=>{const F=E.repeatStartCell,U=E.relativeRange,x={startRow:C.row,startColumn:C.col,endColumn:C.col,endRow:C.row},G={startRow:F.row,startColumn:F.col,endColumn:F.col,endRow:F.row};s.Range.foreach(U,(j,b)=>{const B=s.Rectangle.getPositionRange({startRow:j,startColumn:b,endColumn:b,endRow:j},x),{row:z,col:$}=f(B.startRow,B.startColumn),N=u.getRuleIdByLocation(z,$);if(N){const Y=s.Rectangle.getPositionRange({startRow:j,startColumn:b,endColumn:b,endRow:j},G),{row:J,col:k}=f(Y.startRow,Y.startColumn);m.setValue(J,k,N)}})});const D=m.diff(u.getDataValidations()),{redoMutations:V,undoMutations:I}=Me(d,c,D);return{undos:I,redos:V}},t=[s.DataValidationType.CHECKBOX],a={id:Qe,onBeforeFillData:r=>{const{source:i,unitId:l,subUnitId:d}=r,c=this._dataValidationModel.ensureManager(l,d);for(const u of i.rows)for(const m of i.cols){const h=c.getRuleByLocation(u,m);if(h&&t.indexOf(h.type)>-1){this._autoFillService.setDisableApplyType(A.APPLY_TYPE.SERIES,!0);return}}},onFillData:(r,i,l)=>l===A.APPLY_TYPE.COPY||l===A.APPLY_TYPE.ONLY_FORMAT||l===A.APPLY_TYPE.SERIES?e(r):o(),onAfterFillData:()=>{this._autoFillService.setDisableApplyType(A.APPLY_TYPE.SERIES,!1)}};this.disposeWithMe(this._autoFillService.addHook(a))}};exports.DataValidationAutoFillController=ko([s.OnLifecycle(s.LifecycleStages.Ready,exports.DataValidationAutoFillController),Tt(0,A.IAutoFillService),Tt(1,y.Inject(R.DataValidationModel))],exports.DataValidationAutoFillController);var Yo=Object.defineProperty,qo=Object.getOwnPropertyDescriptor,Go=(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&&Yo(o,e,a),a},st=(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:Qe,onBeforeCopy:(e,t,a)=>this._collect(e,t,a),onPasteCells:(e,t,a,r)=>{const{copyType:i=A.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=A.rangeToDiscreteRange(a,l,e,t);if(!d)return;const{rows:c,cols:u}=d;c.forEach((m,h)=>{u.forEach((p,g)=>{const f=i.getRuleIdByLocation(m,p);r.setValue(h,g,f!=null?f:"")})})}_generateMutations(e,t){if(!this._copyInfo)return{redos:[],undos:[]};if(t.copyType===A.COPY_TYPE.CUT)return this._copyInfo=null,{redos:[],undos:[]};if(!this._copyInfo||!this._copyInfo.matrix.getSizeOf()||!t.copyRange)return{redos:[],undos:[]};if([A.PREDEFINED_HOOK_NAME.SPECIAL_PASTE_COL_WIDTH,A.PREDEFINED_HOOK_NAME.SPECIAL_PASTE_VALUE,A.PREDEFINED_HOOK_NAME.SPECIAL_PASTE_FORMAT,Ye.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}=A.virtualizeDiscreteRanges([t.copyRange,e]),h=A.getRepeatRange(c,u,!0),p=new Map;h.forEach(({startRange:C})=>{var S;(S=this._copyInfo)==null||S.matrix.forValue((D,V,I)=>{const E=s.Rectangle.getPositionRange({startRow:D,endRow:D,startColumn:V,endColumn:V},C),F=`${r}-${I}`,U=i.getRuleById(I);!l.getRuleById(F)&&U&&p.set(F,{...U,uid:F});const{row:x,col:G}=m(E.startRow,E.startColumn);d.setValue(x,G,F)})});const{redoMutations:g,undoMutations:f}=Me(t.unitId,t.subUnitId,d.diffWithAddition(l.getDataValidations(),p.values()));return{redos:g,undos:f}}else{const i=this._dataValidationModel.ensureManager(a,r),l=i.getRuleObjectMatrix().clone(),{ranges:[d,c],mapFunc:u}=A.virtualizeDiscreteRanges([t.copyRange,e]);A.getRepeatRange(d,c,!0).forEach(({startRange:g})=>{var f;(f=this._copyInfo)==null||f.matrix.forValue((C,S,D)=>{const V=s.Rectangle.getPositionRange({startRow:C,endRow:C,startColumn:S,endColumn:S},g),{row:I,col:E}=u(V.startRow,V.startColumn);l.setValue(I,E,D)})});const{redoMutations:h,undoMutations:p}=Me(a,r,l.diff(i.getDataValidations()));return{redos:h,undos:p}}}};exports.DataValidationCopyPasteController=Go([s.OnLifecycle(s.LifecycleStages.Ready,exports.DataValidationCopyPasteController),st(0,A.ISheetClipboardService),st(1,y.Inject(R.DataValidationModel)),st(2,y.Inject(y.Injector))],exports.DataValidationCopyPasteController);class Vt{constructor(o,e){_(this,"value");this._worksheet=e,this.value=o}addRule(o){const e=o.uid;o.ranges.forEach(t=>{s.Range.foreach(s.Range.transformRange(t,this._worksheet),(a,r)=>{this.value.setValue(a,r,e)})})}removeRange(o){o.forEach(e=>{s.Range.foreach(s.Range.transformRange(e,this._worksheet),(t,a)=>{this.value.realDeleteValue(t,a)})})}removeRule(o){o.ranges.forEach(e=>{s.Range.foreach(s.Range.transformRange(e,this._worksheet),(t,a)=>{this.value.setValue(t,a,"")})})}updateRange(o,e,t){const a=`${o}$`,r=e.map(l=>s.Range.transformRange(l,this._worksheet)),i=t.map(l=>s.Range.transformRange(l,this._worksheet));r.forEach(l=>{s.Range.foreach(l,(d,c)=>{this.value.getValue(d,c)===o&&this.value.setValue(d,c,a)})}),i.forEach(l=>{s.Range.foreach(l,(d,c)=>{this.value.setValue(d,c,o)})}),r.forEach(l=>{s.Range.foreach(l,(d,c)=>{this.value.getValue(d,c)===a&&this.value.realDeleteValue(d,c)})})}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 Vt(new s.ObjectMatrix(this.value.clone()),this._worksheet)}getValue(o,e){return this.value.getValue(o,e)}setValue(o,e,t){return this.value.setValue(o,e,t)}}class Xo 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(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 l=this._injector.get(s.IUniverInstanceService).getUnit(e,s.UniverInstanceType.UNIVER_SHEET).getSheetBySheetId(t),d=new s.ObjectMatrix;a==null||a.forEach(c=>{const u=c.uid;c.ranges.forEach(m=>{s.Range.foreach(m,(h,p)=>{d.setValue(h,p,u)})})}),a==null||a.forEach(c=>{this._dataValidationRefRangeController.register(e,t,c)}),this._ruleMatrix=new Vt(d,l)}_addRuleSideEffect(e){var r;const{unitId:t,subUnitId:a}=this;(e.type===s.DataValidationType.LIST||e.type===s.DataValidationType.LIST_MULTIPLE)&&ae.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 h=this._cache.getValue(l,i);return!h||h.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(p=>{const g=p?s.DataValidationStatus.VALID:s.DataValidationStatus.INVALID;this._cache.setValue(l,i,{value:e,status:g,ruleId:u}),r(g,!0)}),s.DataValidationStatus.VALIDATING):(r(h.status,!1),h.status)}else return r(s.DataValidationStatus.VALID,!1),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 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},je=(n,o)=>(e,t)=>o(e,t,n);let xe=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 Xo(n,o,[],this._injector)}_initDataValidationDataSource(){this._dataValidationModel.setManagerCreator(this._createSheetDataValidationManager.bind(this))}};xe=Ko([s.OnLifecycle(s.LifecycleStages.Starting,xe),je(0,s.IResourceManagerService),je(1,s.IUniverInstanceService),je(2,y.Inject(R.DataValidationModel)),je(3,y.Inject(y.Injector))],xe);var Zo=Object.defineProperty,Jo=Object.getOwnPropertyDescriptor,en=(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&&Zo(o,e,a),a},lt=(n,o)=>(e,t)=>o(e,t,n);let Ue=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===R.AddDataValidationCommand.id&&(this._sheetPermissionInterceptorBaseController.permissionCheckWithRanges({workbookTypes:[H.WorkbookEditablePermission],rangeTypes:[H.RangeProtectionPermissionEditPoint],worksheetTypes:[H.WorksheetEditPermission,H.WorksheetSetCellStylePermission]})||this._sheetPermissionInterceptorBaseController.haveNotPermissionHandle(this._localeService.t("permission.dialog.setStyleErr"))),n.id===Xe.id&&(this._sheetPermissionInterceptorBaseController.permissionCheckWithRanges({workbookTypes:[H.WorkbookEditablePermission],rangeTypes:[H.RangeProtectionPermissionEditPoint],worksheetTypes:[H.WorksheetEditPermission,H.WorksheetSetCellStylePermission]},n.params.ranges)||this._sheetPermissionInterceptorBaseController.haveNotPermissionHandle(this._localeService.t("permission.dialog.setStyleErr")))}))}};Ue=en([s.OnLifecycle(s.LifecycleStages.Ready,Ue),lt(0,y.Inject(s.LocaleService)),lt(1,s.ICommandService),lt(2,y.Inject(A.SheetPermissionInterceptorBaseController))],Ue);var tn=Object.defineProperty,an=Object.getOwnPropertyDescriptor,rn=(n,o,e,t)=>{for(var a=t>1?void 0:t?an(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&&tn(o,e,a),a},dt=(n,o)=>(e,t)=>o(e,t,n);exports.SheetsDataValidationValidatorService=class{constructor(o,e,t){this._univerInstanceService=o,this._dataValidationModel=e,this._dataValidationCacheService=t}async validatorCell(o,e,t,a){const r=this._univerInstanceService.getUnit(o,s.UniverInstanceType.UNIVER_SHEET);if(!r)throw new Error(`cannot find current workbook, unitId: ${o}`);const i=r.getSheetBySheetId(e);if(!i)throw new Error(`cannot find current worksheet, sheetId: ${e}`);const l=i.getCellRaw(t,a),d=this._dataValidationModel.ensureManager(o,e),c=d.getRuleByLocation(t,a);return c?new Promise(u=>{d.validator(re(l),c,{unitId:o,subUnitId:e,row:t,col:a},u)}):s.DataValidationStatus.VALID}async validatorWorksheet(o,e){const a=this._dataValidationModel.ensureManager(o,e).getDataValidations();return await Promise.all(a.map(r=>Promise.all(r.ranges.map(i=>{const l=[];return s.Range.foreach(i,(d,c)=>{l.push(this.validatorCell(o,e,d,c))}),l})))),this._dataValidationCacheService.ensureCache(o,e)}async validatorWorkbook(o){const e=this._dataValidationModel.getSubUnitIds(o),t=await Promise.all(e.map(r=>this.validatorWorksheet(o,r))),a={};return t.forEach((r,i)=>{a[e[i]]=r}),a}};exports.SheetsDataValidationValidatorService=rn([dt(0,s.IUniverInstanceService),dt(1,y.Inject(R.DataValidationModel)),dt(2,y.Inject(we))],exports.SheetsDataValidationValidatorService);var ta=Object.defineProperty,on=Object.getOwnPropertyDescriptor,nn=(n,o,e)=>o in n?ta(n,o,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[o]=e,sn=(n,o,e,t)=>{for(var a=t>1?void 0:t?on(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&&ta(o,e,a),a},ct=(n,o)=>(e,t)=>o(e,t,n),aa=(n,o,e)=>nn(n,typeof o!="symbol"?o+"":o,e);exports.UniverSheetsDataValidationPlugin=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({},Lo,this._config)}onStarting(o){[[ue],[exports.SheetDataValidationService],[we],[exports.DataValidationFormulaService],[exports.DataValidationCustomFormulaService],[Ve],[exports.SheetsDataValidationValidatorService],[xe],[exports.DataValidationController],[exports.SheetsDataValidationRenderController,{useFactory:()=>this._injector.createInstance(exports.SheetsDataValidationRenderController,this._config)}],[exports.DataValidationAlertController],[exports.DataValidationRefRangeController],[Ue],[exports.DataValidationAutoFillController],[exports.DataValidationCopyPasteController],[exports.DataValidationFormulaController],[exports.DataValidationRejectInputController]].forEach(e=>{o.add(e)}),[ze,vt,Xe,Ge,At,Pt,Te,Sa].forEach(e=>{this._commandService.registerCommand(e)})}};aa(exports.UniverSheetsDataValidationPlugin,"pluginName",Qe);aa(exports.UniverSheetsDataValidationPlugin,"type",s.UniverInstanceType.UNIVER_SHEET);exports.UniverSheetsDataValidationPlugin=sn([s.DependentOn(R.UniverDataValidationPlugin,H.UniverSheetsPlugin,A.UniverSheetsUIPlugin),ct(1,y.Inject(y.Injector)),ct(2,s.ICommandService),ct(3,y.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=vt;exports.AddSheetDataValidationCommand=ze;exports.DATA_VALIDATION_PLUGIN_NAME=Qe;exports.DataValidationCacheService=we;exports.HideDataValidationDropdown=At;exports.ShowDataValidationDropdown=Ge;exports.UpdateSheetDataValidationRangeCommand=Xe;
|
|
9
|
+
*/var _a=O,Va=Symbol.for("react.element"),Ra=Symbol.for("react.fragment"),Da=Object.prototype.hasOwnProperty,Ia=_a.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,Ca={key:!0,ref:!0,__self:!0,__source:!0};function xt(n,r,e){var t,a={},o=null,i=null;e!==void 0&&(o=""+e),r.key!==void 0&&(o=""+r.key),r.ref!==void 0&&(i=r.ref);for(t in r)Da.call(r,t)&&!Ca.hasOwnProperty(t)&&(a[t]=r[t]);if(n&&n.defaultProps)for(t in r=n.defaultProps,r)a[t]===void 0&&(a[t]=r[t]);return{$$typeof:Va,type:n,key:o,ref:i,props:a,_owner:Ia.current}}Qe.Fragment=Ra;Qe.jsx=xt;Qe.jsxs=xt;Ut.exports=Qe;var v=Ut.exports;function ya(){const n=H.useDependency(pe),r=q.useObservable(n.activeDropdown$,n.activeDropdown),e=H.useDependency(q.ComponentManager);if(!r)return null;const{location:t,componentKey:a}=r,o=e.get(a),i=`${t.unitId}-${t.subUnitId}-${t.row}-${t.col}`;if(!o)return null;const l=()=>{n.hideDropdown()};return v.jsx(o,{location:t,hideFn:l},i)}const Bt="sheet.ui.dropdown";var Ma=Object.defineProperty,wa=Object.getOwnPropertyDescriptor,Oa=(n,r,e,t)=>{for(var a=t>1?void 0:t?wa(r,e):r,o=n.length-1,i;o>=0;o--)(i=n[o])&&(a=(t?i(r,e,a):i(a))||a);return t&&a&&Ma(r,e,a),a},Ie=(n,r)=>(e,t)=>r(e,t,n);let pe=class extends s.Disposable{constructor(r,e,t,a,o,i){super();_(this,"_activeDropdown");_(this,"_activeDropdown$",new Se.Subject);_(this,"_currentPopup",null);_(this,"activeDropdown$",this._activeDropdown$.asObservable());_(this,"_zenVisible",!1);this._canvasPopupManagerService=r,this._univerInstanceService=e,this._dataValidatorRegistryService=t,this._zenZoneService=a,this._renderManagerService=o,this._dataValidationModel=i,this._init()}get activeDropdown(){return this._activeDropdown}_init(){this.disposeWithMe(this._zenZoneService.visible$.subscribe(r=>{this._zenVisible=r,r&&this.hideDropdown()}))}showDropdown(r){const{location:e}=r,{row:t,col:a}=e;if(this._currentPopup&&this._currentPopup.dispose(),this._zenVisible)return;this._activeDropdown=r,this._activeDropdown$.next(this._activeDropdown);const o=this._renderManagerService.getRenderById(s.DOCS_FORMULA_BAR_EDITOR_UNIT_ID_KEY),i=this._canvasPopupManagerService.attachPopupToCell(t,a,{componentKey:Bt,onClickOutside:()=>{this.hideDropdown()},offset:[0,3],excludeOutside:[o==null?void 0:o.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(r,e,t,a,o){const i=this._univerInstanceService.getUniverSheetInstance(r);if(!i)return;const l=i.getSheetBySheetId(e);if(!l)return;const c=this._dataValidationModel.ensureManager(r,e).getRuleByLocation(t,a);if(!c)return;const u=this._dataValidatorRegistryService.getValidatorItem(c.type);if(!u||!u.dropdown){this.hideDropdown();return}this.showDropdown({location:{workbook:i,worksheet:l,row:t,col:a,unitId:r,subUnitId:e},componentKey:u.dropdown,onHide:o})}};pe=Oa([Ie(0,y.Inject(A.SheetCanvasPopManagerService)),Ie(1,s.IUniverInstanceService),Ie(2,y.Inject(V.DataValidatorRegistryService)),Ie(3,q.IZenZoneService),Ie(4,K.IRenderManagerService),Ie(5,y.Inject(V.DataValidationModel))],pe);var Ta=Object.defineProperty,Ea=Object.getOwnPropertyDescriptor,Fa=(n,r,e,t)=>{for(var a=t>1?void 0:t?Ea(r,e):r,o=n.length-1,i;o>=0;o--)(i=n[o])&&(a=(t?i(r,e,a):i(a))||a);return t&&a&&Ta(r,e,a),a},Ot=(n,r)=>(e,t)=>r(e,t,n);let le=class extends s.Disposable{constructor(r,e){super();_(this,"_open$",new Se.BehaviorSubject(!1));_(this,"open$",this._open$.pipe(Se.distinctUntilChanged()));_(this,"_activeRule");_(this,"_activeRule$",new Se.BehaviorSubject(void 0));_(this,"activeRule$",this._activeRule$.asObservable());_(this,"_closeDisposable",null);this._univerInstanceService=r,this._sidebarService=e,this.disposeWithMe(this._univerInstanceService.getCurrentTypeOfUnit$(s.UniverInstanceType.UNIVER_SHEET).pipe(Se.filter(t=>!t)).subscribe(()=>{this.close()}))}get activeRule(){return this._activeRule}get isOpen(){return this._open$.getValue()}dispose(){var r;super.dispose(),this._open$.next(!1),this._open$.complete(),(r=this._closeDisposable)==null||r.dispose()}open(){this._open$.next(!0)}close(){var r;this._open$.next(!1),(r=this._closeDisposable)==null||r.dispose()}setCloseDisposable(r){this._closeDisposable=s.toDisposable(()=>{r.dispose(),this._closeDisposable=null})}setActiveRule(r){this._activeRule=r,this._activeRule$.next(r)}};le=Fa([Ot(0,s.IUniverInstanceService),Ot(1,q.ISidebarService)],le);const $t="DataValidationPanel",Re={id:"data-validation.operation.open-validation-panel",type:s.CommandType.OPERATION,handler(n,r){if(!r)return!1;const{ruleId:e,isAdd:t}=r,a=n.get(le),o=n.get(V.DataValidationModel),i=n.get(s.IUniverInstanceService),l=n.get(q.ISidebarService),d=j.getSheetCommandTarget(i);if(!d)return!1;const{unitId:c,subUnitId:u}=d,h=e?o.getRuleById(c,u,e):void 0;a.open(),a.setActiveRule(h&&{unitId:c,subUnitId:u,rule:h});const m=l.open({header:{title:t?"dataValidation.panel.addTitle":"dataValidation.panel.title"},children:{label:$t},width:312,onClose:()=>a.close()});return a.setCloseDisposable(m),!0}},Ze={id:"data-validation.operation.close-validation-panel",type:s.CommandType.OPERATION,handler(n){return n.get(le).close(),!0}},It={id:"data-validation.operation.toggle-validation-panel",type:s.CommandType.OPERATION,handler(n){const r=n.get(s.ICommandService),e=n.get(le);return e.open(),e.isOpen?r.executeCommand(Ze.id):r.executeCommand(Re.id),!0}},Ae={type:s.CommandType.OPERATION,id:"sheet.operation.show-data-validation-dropdown",handler(n,r){if(!r)return!1;const e=n.get(pe),{unitId:t,subUnitId:a,row:o,column:i}=r,l=e.activeDropdown,d=l==null?void 0:l.location;return d&&d.unitId===t&&d.subUnitId===a&&d.row===o&&d.col===i||e.showDataValidationDropdown(t,a,o,i),!0}},Ct={type:s.CommandType.OPERATION,id:"sheet.operation.hide-data-validation-dropdown",handler(n,r){return r?(n.get(pe).hideDropdown(),!0):!1}};class De{constructor(){_(this,"_cacheMatrix",new Map)}_ensureCache(r,e){let t=this._cacheMatrix.get(r);t||(t=new Map,this._cacheMatrix.set(r,t));let a=t.get(e);return a||(a=new s.ObjectMatrix,t.set(e,a)),a}ensureCache(r,e){return this._ensureCache(r,e)}addRule(r,e,t){this.markRangeDirty(r,e,t.ranges)}removeRule(r,e,t){this._deleteRange(r,e,t.ranges)}updateRuleRanges(r,e,t,a,o){const i=this._ensureCache(r,e);o.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)})}),o.forEach(l=>{s.Range.foreach(l,(d,c)=>{const u=i.getValue(d,c);u&&u.temp===!0&&i.realDeleteValue(d,c)})})}markRangeDirty(r,e,t){const a=this._ensureCache(r,e);t.forEach(o=>{s.Range.foreach(o,(i,l)=>{a.setValue(i,l,void 0)})})}markCellDirty(r,e,t,a){this._ensureCache(r,e).setValue(t,a,void 0)}_deleteRange(r,e,t){const a=this._ensureCache(r,e);t.forEach(o=>{s.Range.foreach(o,(i,l)=>{a.realDeleteValue(i,l)})})}getValue(r,e,t,a){return this._ensureCache(r,e).getValue(t,a)}setValue(r,e,t,a,o){return this._ensureCache(r,e).setValue(t,a,o)}}var ba=Object.defineProperty,Na=Object.getOwnPropertyDescriptor,La=(n,r,e,t)=>{for(var a=t>1?void 0:t?Na(r,e):r,o=n.length-1,i;o>=0;o--)(i=n[o])&&(a=(t?i(r,e,a):i(a))||a);return t&&a&&ba(r,e,a),a},et=(n,r)=>(e,t)=>r(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 o in a){const i=a[o],l=this._ensureRuleFormulaMap(t,o),d=this._dataValidationModel.ensureManager(t,o);i.forEach(c=>{var u,h;if(l.get((u=c.extra)==null?void 0:u.ruleId)){const m=d.getRuleById((h=c.extra)==null?void 0:h.ruleId);m&&this._dataValidationCacheService.markRangeDirty(t,o,m.ranges)}})}}}))}_ensureRuleFormulaMap(e,t){let a=this._formulaRuleMap.get(e);a||(a=new Map,this._formulaRuleMap.set(e,a));let o=a.get(t);return o||(o=new Map,a.set(t,o)),o}addRule(e,t,a,o,i){const l=s.isFormulaString(o),d=s.isFormulaString(i);if(!l&&!d)return;const c=this._ensureRuleFormulaMap(e,t),u=[void 0,void 0];if(l){const h=this._registerOtherFormulaService.registerFormula(e,t,o,{ruleId:a});u[0]={id:h,text:o}}if(d){const h=this._registerOtherFormulaService.registerFormula(e,t,i,{ruleId:a});u[1]={id:h,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,o,i){const d=this._ensureRuleFormulaMap(e,t).get(a);if(!d){this.addRule(e,t,a,o,i);return}const[c,u]=d;if((c==null?void 0:c.text)!==o)if(c&&this._registerOtherFormulaService.deleteFormula(e,t,[c.id]),s.isFormulaString(o)){const h=this._registerOtherFormulaService.registerFormula(e,t,o,{ruleId:a});d[0]={text:o,id:h}}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 h=this._registerOtherFormulaService.registerFormula(e,t,i,{ruleId:a});d[1]={text:i,id:h}}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=La([et(0,y.Inject(Dt.RegisterOtherFormulaService)),et(1,y.Inject(De)),et(2,y.Inject(V.DataValidationModel))],exports.DataValidationFormulaService);function ue(n){var r,e;return(e=(r=n==null?void 0:n[0])==null?void 0:r[0])==null?void 0:e.v}function te(n){if(n===null)return"";if(n!=null&&n.p){const r=n==null?void 0:n.p.body;if(r==null)return"";const e=r.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 Wt(n){var r;return String((r=te(n))!=null?r:"")}var Pa=Object.defineProperty,Aa=Object.getOwnPropertyDescriptor,ja=(n,r,e,t)=>{for(var a=t>1?void 0:t?Aa(r,e):r,o=n.length-1,i;o>=0;o--)(i=n[o])&&(a=(t?i(r,e,a):i(a))||a);return t&&a&&Pa(r,e,a),a},tt=(n,r)=>(e,t)=>r(e,t,n);const $e=6;let vt=class{constructor(n,r,e){this._commandService=n,this._formulaService=r,this._themeService=e}_calc(n,r){var c,u,h;const{vt:e,ht:t}=r||{},a=n.endX-n.startX-$e*2,o=n.endY-n.startY,i=((c=r==null?void 0:r.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+(o-i);break;default:d=0+(o-i)/2;break}switch(t){case s.HorizontalAlign.LEFT:l=$e;break;case s.HorizontalAlign.RIGHT:l=$e+(a-i);break;default:l=$e+(a-i)/2;break}return{left:n.startX+l,top:n.startY+d,width:((u=r==null?void 0:r.fs)!=null?u:10)*1.6,height:((h=r==null?void 0:r.fs)!=null?h:10)*1.6}}calcCellAutoHeight(n){var e;const{style:r}=n;return((e=r==null?void 0:r.fs)!=null?e:10)*1.6}async _parseFormula(n,r,e){var i,l;const{formula1:t=Ne,formula2:a=Le}=n,o=await this._formulaService.getRuleFormulaResult(r,e,n.uid);return{formula1:s.isFormulaString(t)?ue((i=o==null?void 0:o[0])==null?void 0:i.result):t,formula2:s.isFormulaString(a)?ue((l=o==null?void 0:o[1])==null?void 0:l.result):a}}drawWith(n,r){var P,F,$,k,L;const{style:e,data:t,primaryWithCoord:a,unitId:o,subUnitId:i}=r,l=a.isMergedMainCell?a.mergeInfo:a,d=te(t),c=(P=t.dataValidation)==null?void 0:P.rule,u=(F=t.dataValidation)==null?void 0:F.validator;if(!c||!u)return;const h=this._themeService.getCurrentTheme();if(!u.skipDefaultFontRender(c,d,{unitId:o,subUnitId:i}))return;const m=u.parseFormulaSync(c,o,i),{formula1:p}=m,g=this._calc(l,e),{a:f,d:D}=n.getTransform(),S=K.fixLineWidthByScale(g.left,f),I=K.fixLineWidthByScale(g.top,D),R=K.Transform.create().composeMatrix({left:S,top:I,scaleX:1,scaleY:1,angle:0,skewX:0,skewY:0,flipX:!1,flipY:!1}),C=l.endX-l.startX,w=l.endY-l.startY;n.save(),n.beginPath(),n.rect(l.startX,l.startY,C,w),n.clip();const E=R.getMatrix();n.transform(E[0],E[1],E[2],E[3],E[4],E[5]);const U=(($=e==null?void 0:e.fs)!=null?$:10)*1.6,x=String(d)===String(p),W=h.hyacinth500;K.Checkbox.drawWith(n,{checked:x,width:U,height:U,fill:(L=(k=e==null?void 0:e.cl)==null?void 0:k.rgb)!=null?L:W}),n.restore()}isHit(n,r){const e=r.primaryWithCoord.isMergedMainCell?r.primaryWithCoord.mergeInfo:r.primaryWithCoord,t=this._calc(e,r.style),a=t.top,o=t.top+t.height,i=t.left,l=t.left+t.width,{x:d,y:c}=n;return d<=l&&d>=i&&c<=o&&c>=a}async onPointerDown(n,r){var m,p;if(r.button===2)return;const{primaryWithCoord:e,unitId:t,subUnitId:a,data:o}=n,i=te(o),l=(m=o.dataValidation)==null?void 0:m.rule,d=(p=o.dataValidation)==null?void 0:p.validator;if(!l||!d||!d.skipDefaultFontRender(l,i,{unitId:t,subUnitId:a}))return;const{formula1:c,formula2:u}=await this._parseFormula(l,t,a),h={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(j.SetRangeValuesCommand.id,h)}};vt=ja([tt(0,s.ICommandService),tt(1,y.Inject(exports.DataValidationFormulaService)),tt(2,y.Inject(s.ThemeService))],vt);function Ua(n){var d;const{unitId:r,subUnitId:e,value:t,onChange:a,showError:o,validResult:i}=n,l=o?i==null?void 0:i.formula1:"";return v.jsx(T.FormLayout,{error:l,children:v.jsx(q.TextEditor,{value:(d=t==null?void 0:t.formula1)!=null?d:"",id:s.createInternalEditorID(`dataValidation-custom-formula-${r}-${e}`),onChange:c=>{a==null||a({...t,formula1:c!=null?c:""})},onlyInputFormula:!0,openForSheetUnitId:r,openForSheetSubUnitId:e})})}const xa="univer-data-validation-formula",Ba="univer-data-validation-formula-and",$a="univer-data-validation-formula-list-item",Wa="univer-data-validation-formula-list-item-icon",Ha="univer-data-validation-formula-list-item-drag",ka="univer-data-validation-formula-list-add",Ya="univer-data-validation-formula-color-select",qa="univer-data-validation-formula-color-select-panel",Xa="univer-data-validation-formula-color-item",re={dataValidationFormula:xa,dataValidationFormulaAnd:Ba,dataValidationFormulaListItem:$a,dataValidationFormulaListItemIcon:Wa,dataValidationFormulaListItemDrag:Ha,dataValidationFormulaListAdd:ka,dataValidationFormulaColorSelect:Ya,dataValidationFormulaColorSelectPanel:qa,dataValidationFormulaColorItem:Xa},Ga=n=>{const{isTwoFormula:r=!1,value:e,onChange:t,showError:a,validResult:o}=n,i=H.useDependency(s.LocaleService),l=a?o==null?void 0:o.formula1:"",d=a?o==null?void 0:o.formula2:"";return r?v.jsxs(v.Fragment,{children:[v.jsx(T.FormLayout,{error:l,children:v.jsx(T.Input,{className:re.dataValidationFormula,placeholder:i.t("dataValidation.panel.formulaPlaceholder"),value:e==null?void 0:e.formula1,onChange:c=>{t==null||t({...e,formula1:c})}})}),v.jsx("div",{className:re.dataValidationFormulaAnd,children:i.t("dataValidation.panel.formulaAnd")}),v.jsx(T.FormLayout,{error:d,children:v.jsx(T.Input,{className:re.dataValidationFormula,placeholder:i.t("dataValidation.panel.formulaPlaceholder"),value:e==null?void 0:e.formula2,onChange:c=>{t==null||t({...e,formula2:c})}})})]}):v.jsx(T.FormLayout,{error:l,children:v.jsx(T.Input,{className:re.dataValidationFormula,placeholder:i.t("dataValidation.panel.formulaPlaceholder"),value:e==null?void 0:e.formula1,onChange:c=>{t==null||t({formula1:c})}})})};var ne=function(){return ne=Object.assign||function(n){for(var r,e=1,t=arguments.length;e<t;e++){r=arguments[e];for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(n[a]=r[a])}return n},ne.apply(this,arguments)},za=function(n,r){var e={};for(var t in n)Object.prototype.hasOwnProperty.call(n,t)&&r.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++)r.indexOf(t[a])<0&&Object.prototype.propertyIsEnumerable.call(n,t[a])&&(e[t[a]]=n[t[a]]);return e},fe=O.forwardRef(function(n,r){var e=n.icon,t=n.id,a=n.className,o=n.extend,i=za(n,["icon","id","className","extend"]),l="univerjs-icon univerjs-icon-".concat(t," ").concat(a||"").trim(),d=O.useRef("_".concat(Za()));return Ht(e,"".concat(t),{defIds:e.defIds,idSuffix:d.current},ne({ref:r,className:l},i),o)});function Ht(n,r,e,t,a){return O.createElement(n.tag,ne(ne({key:r},Ka(n,e,a)),t),(Qa(n,e).children||[]).map(function(o,i){return Ht(o,"".concat(r,"-").concat(n.tag,"-").concat(i),e,void 0,a)}))}function Ka(n,r,e){var t=ne({},n.attrs);e!=null&&e.colorChannel1&&t.fill==="colorChannel1"&&(t.fill=e.colorChannel1);var a=r.defIds;return!a||a.length===0||(n.tag==="use"&&t["xlink:href"]&&(t["xlink:href"]=t["xlink:href"]+r.idSuffix),Object.entries(t).forEach(function(o){var i=o[0],l=o[1];typeof l=="string"&&(t[i]=l.replace(/url\(#(.*)\)/,"url(#$1".concat(r.idSuffix,")")))})),t}function Qa(n,r){var e,t=r.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+r.idSuffix})}):a})}):n}function Za(){return Math.random().toString(36).substring(2,8)}fe.displayName="UniverIcon";var Ja={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"}}]},kt=O.forwardRef(function(n,r){return O.createElement(fe,Object.assign({},n,{id:"check-mark-single",ref:r,icon:Ja}))});kt.displayName="CheckMarkSingle";var er={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"}}]},Yt=O.forwardRef(function(n,r){return O.createElement(fe,Object.assign({},n,{id:"data-validation-single",ref:r,icon:er}))});Yt.displayName="DataValidationSingle";var tr={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"}}]},yt=O.forwardRef(function(n,r){return O.createElement(fe,Object.assign({},n,{id:"delete-single",ref:r,icon:tr}))});yt.displayName="DeleteSingle";var ar={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"}}]},qt=O.forwardRef(function(n,r){return O.createElement(fe,Object.assign({},n,{id:"increase-single",ref:r,icon:ar}))});qt.displayName="IncreaseSingle";var rr={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"}}]},Xt=O.forwardRef(function(n,r){return O.createElement(fe,Object.assign({},n,{id:"more-down-single",ref:r,icon:rr}))});Xt.displayName="MoreDownSingle";var or={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"}}]},Gt=O.forwardRef(function(n,r){return O.createElement(fe,Object.assign({},n,{id:"more-up-single",ref:r,icon:or}))});Gt.displayName="MoreUpSingle";var nr={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"}}]}]},zt=O.forwardRef(function(n,r){return O.createElement(fe,Object.assign({},n,{id:"sequence-single",ref:r,icon:nr}))});zt.displayName="SequenceSingle";function Kt(n){return n.filter(Boolean).join(",")}function we(n){return n.split(",").filter(Boolean)}function ir(n){const r=te(n);return r==null?"":r.toString()}const je="SHEET_DATA_VALIDATION_PLUGIN",_e="#ECECEC";var Xe=(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.Delete=42]="Delete",n[n.UNRECOGNIZED=-1]="UNRECOGNIZED",n))(Xe||{}),sr=Object.defineProperty,lr=Object.getOwnPropertyDescriptor,dr=(n,r,e,t)=>{for(var a=t>1?void 0:t?lr(r,e):r,o=n.length-1,i;o>=0;o--)(i=n[o])&&(a=(t?i(r,e,a):i(a))||a);return t&&a&&sr(r,e,a),a},at=(n,r)=>(e,t)=>r(e,t,n);exports.DataValidationFormulaController=class extends s.Disposable{constructor(r,e,t){super(),this._univerInstanceService=r,this._permissionService=e,this._lexerTreeBuilder=t}getFormulaRefCheck(r){var t,a;const e=this._lexerTreeBuilder.sequenceNodesBuilder(r);if(!e)return!0;for(let o=0;o<e.length;o++){const i=e[o];if(typeof i=="string")continue;const{token:l}=i,d=oe.deserializeRangeWithSheet(l),c=this._univerInstanceService.getCurrentUnitForType(s.UniverInstanceType.UNIVER_SHEET);let u=c.getActiveSheet();const h=c.getUnitId();if(d.sheetName){if(u=c.getSheetBySheetName(d.sheetName),!u)return!1;const D=u==null?void 0:u.getSheetId();if(!this._permissionService.getPermissionPoint(new j.WorksheetViewPermission(h,D).id))return!1}if(!u)return!1;const{startRow:m,endRow:p,startColumn:g,endColumn:f}=d.range;for(let D=m;D<=p;D++)for(let S=g;S<=f;S++){const I=(a=(t=u.getCell(D,S))==null?void 0:t.selectionProtection)==null?void 0:a[0];if((I==null?void 0:I[Xe.View])===!1)return!1}}return!0}};exports.DataValidationFormulaController=dr([s.OnLifecycle(s.LifecycleStages.Rendered,exports.DataValidationFormulaController),at(0,s.IUniverInstanceService),at(1,s.IPermissionService),at(2,y.Inject(oe.LexerTreeBuilder))],exports.DataValidationFormulaController);const cr=["#FFFFFF","#FEE7E7","#FEF0E6","#EFFBD0","#E4F4FE","#E8ECFD","#F1EAFA","#FDE8F3","#E5E5E5","#FDCECE","#FDC49B","#DEF6A2","#9FDAFF","#D0D9FB","#E3D5F6","#FBD0E8","#656565","#FE4B4B","#FF8C51","#8BBB11","#0B9EFB","#3A60F7","#9E6DE3","#F248A6"],ur=n=>{const{value:r,onChange:e,disabled:t}=n,[a,o]=O.useState(!1);return v.jsx(T.Select,{disabled:t,open:a,onDropdownVisibleChange:o,dropdownStyle:{width:112},className:re.dataValidationFormulaColorSelect,value:r,onChange:e,labelRender:i=>v.jsx("div",{className:re.dataValidationFormulaColorItem,style:{background:i.value,marginTop:5}}),dropdownRender:()=>v.jsx("div",{className:re.dataValidationFormulaColorSelectPanel,children:cr.map(i=>v.jsx("div",{onClick:()=>{e(i),o(!1)},className:re.dataValidationFormulaColorItem,style:{background:i}},i))})})},Tt=n=>{const{item:r,commonProps:e,style:t}=n,{onItemChange:a,onItemDelete:o}=e;return v.jsxs("div",{className:re.dataValidationFormulaListItem,style:t,children:[r.isRef?null:v.jsx("div",{className:Sa(re.dataValidationFormulaListItemDrag,"draggableHandle"),children:v.jsx(zt,{})}),v.jsx(ur,{value:r.color,onChange:i=>{a(r.id,r.label,i)}}),v.jsx(T.Input,{disabled:r.isRef,value:r.label,onChange:i=>{a(r.id,i,r.color)}}),r.isRef?null:v.jsx("div",{className:re.dataValidationFormulaListItemIcon,children:v.jsx(yt,{onClick:()=>o(r.id)})})]})};function hr(n){const{value:r,onChange:e=()=>{},unitId:t,subUnitId:a,validResult:o,showError:i,ruleId:l}=n,{formula1:d="",formula2:c=""}=r||{},u=O.useRef(null),[h,m]=O.useState(()=>s.isFormulaString(d)?"1":"0"),[p,g]=O.useState(h==="1"?d:"="),[f,D]=O.useState(h==="1"?d:"="),S=H.useDependency(s.LocaleService),I=H.useDependency(V.DataValidatorRegistryService),R=H.useDependency(V.DataValidationModel),C=H.useDependency(exports.DataValidationFormulaController),[w,E]=O.useState(()=>c.split(",")),U=I.getValidatorItem(s.DataValidationType.LIST),[x,W]=O.useState([]),[P,F]=O.useState(""),$=i?o==null?void 0:o.formula1:"",k=q.useObservable(R.ruleChange$),L=q.useEvent(e);O.useEffect(()=>{(async()=>{await new Promise(z=>{setTimeout(()=>z(!0),100)});const b=R.getRuleById(t,a,l),G=b==null?void 0:b.formula1;if(s.isFormulaString(G)&&U&&b){const z=await U.getListAsync(b,t,a);W(z)}})()},[R,k,U,l,a,t]),O.useEffect(()=>{s.isFormulaString(d)&&d!==f&&(g(d),D(f))},[f,d]);const[N,Y]=O.useState(()=>{const b=h!=="1"?we(d):[],G=c.split(",");return b.map((z,ae)=>({label:z,color:G[ae]||_e,isRef:!1,id:s.Tools.generateRandomId(4)}))}),Z=(b,G,z)=>{const ae=N.find(de=>de.id===b);ae&&(ae.label=G,ae.color=z,Y([...N]))},X=b=>{const G=N.findIndex(z=>z.id===b);G!==-1&&(N.splice(G,1),Y([...N]))},M=c.split(","),B=O.useMemo(()=>x.map((b,G)=>({label:b,color:M[G]||_e,id:`${G}`,isRef:!0})),[M,x]),ee=(b,G,z)=>{const ae=[...w];ae[+b]=z,E(ae),L({formula1:d,formula2:ae.join(",")})},Q=()=>{Y([...N,{label:"",color:_e,isRef:!1,id:s.Tools.generateRandomId(4)}])};O.useEffect(()=>{if(h==="1")return;const b=new Set,G=[];N.map(z=>({labelList:z.label.split(","),item:z})).forEach(({item:z,labelList:ae})=>{ae.forEach(de=>{b.has(de)||(b.add(de),G.push({label:de,color:z.color}))})}),L({formula1:Kt(G.map(z=>z.label)),formula2:G.map(z=>z.color===_e?"":z.color).join(",")})},[N,L,h,f,w]);const ie=O.useMemo(()=>async b=>{if(!s.isFormulaString(b)){L==null||L({formula1:"",formula2:c});return}C.getFormulaRefCheck(b)?(L==null||L({formula1:s.isFormulaString(b)?b:"",formula2:c}),F("")):(L==null||L({formula1:"",formula2:c}),g("="),F(S.t("dataValidation.validFail.formulaError")))},[c,L]);return v.jsxs(v.Fragment,{children:[v.jsx(T.FormLayout,{label:S.t("dataValidation.list.options"),children:v.jsxs(T.RadioGroup,{value:h,onChange:b=>{m(b),g(f),b==="1"&&L({formula1:f==="="?"":f,formula2:w.join(",")})},children:[v.jsx(T.Radio,{value:"0",children:S.t("dataValidation.list.customOptions")}),v.jsx(T.Radio,{value:"1",children:S.t("dataValidation.list.refOptions")})]})}),h==="1"?v.jsxs(v.Fragment,{children:[v.jsx(T.FormLayout,{error:$||P,children:v.jsx(q.TextEditor,{id:s.createInternalEditorID(`list-ref-range-${t}-${a}`),value:p,openForSheetUnitId:t,openForSheetSubUnitId:a,onlyInputFormula:!0,onChange:async b=>{const G=b!=null?b:"";D(G),ie(G)}})}),v.jsx(T.FormLayout,{children:v.jsx("div",{ref:u,children:B.map(b=>v.jsx(Tt,{item:b,commonProps:{onItemChange:ee},style:{marginBottom:12}},b.id))})})]}):v.jsx(T.FormLayout,{error:$,children:v.jsxs("div",{ref:u,style:{marginTop:"-12px"},children:[v.jsx(T.DraggableList,{list:N,onListChange:Y,rowHeight:32,margin:[0,12],draggableHandle:".draggableHandle",itemRender:b=>v.jsx(Tt,{item:b,commonProps:{onItemChange:Z,onItemDelete:X}},b.id),idKey:"id"}),v.jsxs("a",{className:re.dataValidationFormulaListAdd,onClick:Q,children:[v.jsx(qt,{}),S.t("dataValidation.list.add")]})]})})]})}function mr(n){const{value:r,onChange:e,showError:t,validResult:a}=n,o=H.useDependency(s.LocaleService),i=t?a==null?void 0:a.formula1:"",l=t?a==null?void 0:a.formula2:"",[d,c]=O.useState(!((r==null?void 0:r.formula1)===void 0&&(r==null?void 0:r.formula2)===void 0));return v.jsxs(v.Fragment,{children:[v.jsx(T.FormLayout,{children:v.jsx(T.Checkbox,{checked:d,onChange:u=>{u?c(!0):(c(!1),e==null||e({...r,formula1:void 0,formula2:void 0}))},children:o.t("dataValidation.checkbox.tips")})}),d?v.jsx(T.FormLayout,{label:o.t("dataValidation.checkbox.checked"),error:i,children:v.jsx(T.Input,{className:re.dataValidationFormula,placeholder:o.t("dataValidation.panel.valuePlaceholder"),value:r==null?void 0:r.formula1,onChange:u=>{e==null||e({...r,formula1:u||void 0})}})}):null,d?v.jsx(T.FormLayout,{label:o.t("dataValidation.checkbox.unchecked"),error:l,children:v.jsx(T.Input,{className:re.dataValidationFormula,placeholder:o.t("dataValidation.panel.valuePlaceholder"),value:r==null?void 0:r.formula2,onChange:u=>{e==null||e({...r,formula2:u||void 0})}})}):null]})}const Qt="data-validation.custom-formula-input",Ue="data-validation.formula-input",Zt="data-validation.list-formula-input",Jt="data-validation.checkbox-formula-input",pr=[[Qt,Ua],[Ue,Ga],[Zt,hr],[Jt,mr]],Ne=1,Le=0;function Et(n,r){return s.Tools.isBlank(n)?r.t("dataValidation.validFail.value"):s.isFormulaString(n)?r.t("dataValidation.validFail.primitive"):""}class fr extends V.BaseDataValidator{constructor(){super(...arguments);_(this,"id",s.DataValidationType.CHECKBOX);_(this,"title","dataValidation.checkbox.title");_(this,"operators",[]);_(this,"scopes",["sheet"]);_(this,"formulaInput",Jt);_(this,"canvasRender",this.injector.createInstance(vt));_(this,"_formulaService",this.injector.get(exports.DataValidationFormulaService))}skipDefaultFontRender(e,t,a){const{formula1:o,formula2:i}=this.parseFormulaSync(e,a.unitId,a.subUnitId),l=`${t!=null?t:""}`;return!l||l===`${o}`||l===`${i}`}validatorFormula(e,t,a){const{formula1:o,formula2:i}=e,l=o===i;if(s.Tools.isBlank(o)&&s.Tools.isBlank(i))return{success:!0};if(l)return{success:!1,formula1:this.localeService.t("dataValidation.validFail.checkboxEqual"),formula2:this.localeService.t("dataValidation.validFail.checkboxEqual")};const d=Et(o,this.localeService),c=Et(i,this.localeService);return{success:!d&&!c,formula1:d,formula2:c}}async parseFormula(e,t,a){var d,c;const{formula1:o=Ne,formula2:i=Le}=e,l=await this._formulaService.getRuleFormulaResult(t,a,e.uid);return{formula1:s.isFormulaString(o)?ue((d=l==null?void 0:l[0])==null?void 0:d.result):o,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:o=Ne,formula2:i=Le}=e,l=this._formulaService.getRuleFormulaResultSync(t,a,e.uid);return{formula1:s.isFormulaString(o)?ue((d=l==null?void 0:l[0])==null?void 0:d.result):o,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:o,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(o)&&(String(o)===String(d)||String(o)===String(c))}generateRuleErrorMessage(e){return this.localeService.t("dataValidation.checkbox.error")}}const Pe=[s.DataValidationOperator.BETWEEN,s.DataValidationOperator.NOT_BETWEEN],rt=86400;function gr(n,r=!0){if(r&&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 o=Math.floor(80*e/2447),i=e-Math.floor(2447*o/80);e=Math.floor(o/11);const l=o+2-12*e;return[100*(t-49)+a+e|0,l|0,i|0]}const vr=n=>{let r=n|0;const e=rt*(n-r);let t=Math.floor(e);e-t>.9999&&(t+=1,t===rt&&(t=0,r+=1));const a=t<0?rt+t:t,[o,i,l]=gr(n,!0),d=Math.floor(a/60/60)%60,c=Math.floor(a/60)%60,u=Math.floor(a)%60,h=new Date(0);return h.setUTCFullYear(o,i-1,l),h.setUTCHours(d,c,u),h.getTime()},Sr={[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 _r={[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"},Vr={[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"},Ft="{FORMULA1}",bt="{FORMULA2}",Nt=n=>Ve(n).isValid(),We=n=>{if(!(n==null||typeof n=="boolean"))return typeof n=="number"||!Number.isNaN(+n)?Ve(vr(+n)):Ve(n)};class Rr extends V.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",Ue);_(this,"dropdown",na);_(this,"_formulaService",this.injector.get(exports.DataValidationFormulaService));_(this,"transformDate",We)}async parseFormula(e,t,a){var d,c;const o=await this._formulaService.getRuleFormulaResult(t,a,e.uid),{formula1:i,formula2:l}=e;return{formula1:We(s.isFormulaString(i)?ue((d=o==null?void 0:o[0])==null?void 0:d.result):i),formula2:We(s.isFormulaString(l)?ue((c=o==null?void 0:o[1])==null?void 0:c.result):l)}}async isValidType(e){const{value:t}=e;return typeof t=="string"?Ve(t).isValid():typeof t=="number"}_validatorSingleFormula(e){return!s.Tools.isBlank(e)&&(s.isFormulaString(e)||!Number.isNaN(+e)||!!e&&Ve(e).isValid())}validatorFormula(e,t,a){const o=e.operator;if(!o)return{success:!1};const i=this._validatorSingleFormula(e.formula1),l=this.localeService.t("dataValidation.validFail.date");if(Pe.includes(o)){const c=this._validatorSingleFormula(e.formula2);return{success:i&&c,formula1:i?void 0:l,formula2:c?void 0:l}}return{success:i,formula1:i?void 0:l}}transform(e,t,a){const{value:o}=e;return{...e,value:We(o)}}async validatorIsEqual(e,t,a){const{value:o}=e,{formula1:i}=t;return i?o.isSame(i):!0}async validatorIsNotEqual(e,t){const{value:a}=e,{formula1:o}=t;return o?!a.isSame(o):!0}async validatorIsBetween(e,t){const{value:a}=e,{formula1:o,formula2:i}=t;if(!o||!i)return!1;const l=o.isAfter(i)?i:o,d=l===o?i:o;return(a.isAfter(l)||a.isSame(l))&&(a.isBefore(d)||a.isSame(d))}async validatorIsNotBetween(e,t){const{value:a}=e,{formula1:o,formula2:i}=t;if(!o||!i)return!1;const l=o.isAfter(i)?i:o,d=l===o?i:o;return a.isBefore(l)||a.isAfter(d)}async validatorIsGreaterThan(e,t){const{value:a}=e,{formula1:o}=t;return o?a.isAfter(o):!0}async validatorIsGreaterThanOrEqual(e,t){const{value:a}=e,{formula1:o}=t;return o?a.isAfter(o)||a.isSame(o):!0}async validatorIsLessThan(e,t){const{value:a}=e,{formula1:o}=t;return o?a.isBefore(o)||a.isSame(o):!0}async validatorIsLessThanOrEqual(e,t){const{value:a}=e,{formula1:o}=t;return o?a.isBefore(o)||a.isSame(o):!0}validatorFormulaValue(e){if(!s.Tools.isDefine(e.operator))return;if(Pe.includes(e.operator)){if(s.Tools.isBlank(e.formula1)||s.Tools.isBlank(e.formula2))return"";if(!Nt(e.formula1)||!Nt(e.formula2))return""}else if(s.Tools.isBlank(e.formula1))return""}get operatorNames(){return this.operators.map(e=>this.localeService.t(Sr[e]))}generateRuleName(e){var a,o;if(!e.operator)return this.titleStr;const t=this.localeService.t(_r[e.operator]).replace(Ft,(a=e.formula1)!=null?a:"").replace(bt,(o=e.formula2)!=null?o:"");return`${this.titleStr} ${t}`}generateRuleErrorMessage(e){var a,o;return e.operator?`${this.localeService.t(Vr[e.operator]).replace(Ft,(a=e.formula1)!=null?a:"").replace(bt,(o=e.formula2)!=null?o:"")}`:this.titleStr}}var Dr=Object.defineProperty,Ir=Object.getOwnPropertyDescriptor,Cr=(n,r,e,t)=>{for(var a=t>1?void 0:t?Ir(r,e):r,o=n.length-1,i;o>=0;o--)(i=n[o])&&(a=(t?i(r,e,a):i(a))||a);return t&&a&&Dr(r,e,a),a},Lt=(n,r)=>(e,t)=>r(e,t,n);const Ce=4,yr=6,se=14,ge=6,me=4,Mr="#565656",Pt=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 wr(n,r){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,...r,bg:void 0,bd:void 0},st:0,ed:e}]},documentStyle:{pageSize:{width:Number.POSITIVE_INFINITY,height:Number.POSITIVE_INFINITY}}}}function ea(n,r,e){const t=wr(n,e),a=new s.DocumentDataModel(t),o=new K.DocumentViewModel(a);return{documentSkeleton:K.DocumentSkeleton.create(o,r),docModel:a,docViewModel:o}}function ot(n,r,e){const{documentSkeleton:t,docModel:a,docViewModel:o}=ea(n,r,e);return{documents:new K.Documents(`DOCUMENTS_${s.Tools.generateRandomId()}`,t,{pageMarginLeft:0,pageMarginTop:0}),documentSkeleton:t,docModel:a,docViewModel:o}}function At(n,r,e,t,a,o){let i=0;switch(a){case s.VerticalAlign.BOTTOM:i=r-me*2-t+me;break;case s.VerticalAlign.MIDDLE:i=(r-me*2-t)/2+me;break;default:i=me;break}let l=0;switch(o){case s.HorizontalAlign.CENTER:l=(n-e)/2;break;case s.HorizontalAlign.RIGHT:l=n-e;break}return{paddingLeft:l,paddingTop:i}}var gt;let St=(gt=class{constructor(n,r){_(this,"_dropdownInfoMap",new Map);_(this,"zIndex");_(this,"onPointerEnter");_(this,"onPointerLeave");this._localeService=n,this._commandService=r}_ensureMap(n){let r=this._dropdownInfoMap.get(n);return r||(r=new Map,this._dropdownInfoMap.set(n,r)),r}_generateKey(n,r){return`${n}.${r}`}_drawDownIcon(n,r,e,t,a){const o=e-se+4;let i=9;switch(a){case s.VerticalAlign.MIDDLE:i=(t-se)/2+4;break;case s.VerticalAlign.BOTTOM:i=t-se-1;break}n.save(),n.translateWithPrecision(r.startX+o,r.startY+i),n.fillStyle="#565656",n.fill(Pt),n.restore()}drawWith(n,r,e){var k,L;const{primaryWithCoord:t,row:a,col:o,style:i,data:l,subUnitId:d}=r,c=t.isMergedMainCell?t.mergeInfo:t,u=(k=l.dataValidation)==null?void 0:k.rule,h=(L=l.dataValidation)==null?void 0:L.validator,m=l.fontRenderExtension,{leftOffset:p=0,rightOffset:g=0,topOffset:f=0,downOffset:D=0}=m||{};if(!u||!h||!h.skipDefaultFontRender(u))return;const S={startX:c.startX+p,endX:c.endX-g,startY:c.startY+f,endY:c.endY-D},I=S.endX-S.startX,R=S.endY-S.startY,C=this._ensureMap(d),w=this._generateKey(a,o),E=h.getListWithColor(u),U=te(l),x=`${U!=null?U:""}`,W=E.find(N=>N.label===x);let{tb:P,vt:F,ht:$}=i||{};if(P=P!=null?P:s.WrapStrategy.WRAP,F=F!=null?F:s.VerticalAlign.BOTTOM,$=$!=null?$:s.HorizontalAlign.LEFT,u.renderMode===s.DataValidationRenderMode.ARROW){this._drawDownIcon(n,S,I,R,F),n.save(),n.translateWithPrecision(S.startX,S.startY),n.beginPath(),n.rect(0,0,I,R),n.clip();const N=I-se,{documentSkeleton:Y,documents:Z,docModel:X}=ot(x,this._localeService,i);P===s.WrapStrategy.WRAP&&X.updateDocumentDataPageSize(Math.max(N,1)),Y.calculate(),Y.getActualSize();const M=K.getDocsSkeletonPageSize(Y),{height:B,width:ee}=M,{paddingTop:Q,paddingLeft:ie}=At(N,R,ee,B,F,$);n.translate(0,Q),n.save(),n.translateWithPrecision(Ce,0),n.beginPath(),n.rect(0,0,N,B),n.clip(),Z.render(n),n.translateWithPrecision(ie,0),n.restore(),n.restore(),C.set(w,{left:S.endX+e.rowHeaderWidth-se,top:S.startY+e.columnHeaderHeight,width:se,height:R})}else{n.save(),n.translateWithPrecision(S.startX,S.startY),n.beginPath(),n.rect(0,0,I,R),n.clip();const N=I-ge*2-Ce-se,{documentSkeleton:Y,documents:Z,docModel:X}=ot(x,this._localeService,i);P===s.WrapStrategy.WRAP&&X.updateDocumentDataPageSize(Math.max(N,1)),Y.calculate();const M=K.getDocsSkeletonPageSize(Y),{height:B,width:ee}=M,{paddingTop:Q,paddingLeft:ie}=At(N,R,ee,B,F,$);n.translate(ge,Q);const b=Math.max(I-ge*2,1),G=B;K.Rect.drawWith(n,{width:b,height:G,fill:(W==null?void 0:W.color)||_e,radius:8}),n.save(),n.translateWithPrecision(Ce,0),n.beginPath(),n.rect(0,0,N,B),n.clip(),n.translateWithPrecision(ie,0),Z.render(n),n.restore(),n.translate(N+Ce+4,(B-yr)/2),n.fillStyle=Mr,n.fill(Pt),n.restore(),C.set(w,{left:S.startX+ge+e.rowHeaderWidth,top:S.startY+Q+e.columnHeaderHeight,width:b,height:G})}}calcCellAutoHeight(n){var D;const{primaryWithCoord:r,style:e,data:t}=n,a=r.isMergedMainCell?r.mergeInfo:r,o=t.fontRenderExtension,{leftOffset:i=0,rightOffset:l=0,topOffset:d=0,downOffset:c=0}=o||{},u=(D=t.dataValidation)==null?void 0:D.rule;if(!u||u.renderMode===s.DataValidationRenderMode.TEXT)return;const h={startX:a.startX+i,endX:a.endX-l,startY:a.startY+d,endY:a.endY-c},m=h.endX-h.startX,p=te(t),g=`${p!=null?p:""}`;let{tb:f}=e||{};if(f=f!=null?f:s.WrapStrategy.WRAP,u.renderMode===s.DataValidationRenderMode.ARROW){const S=m-se,{documentSkeleton:I,docModel:R}=ot(g,this._localeService,e);f===s.WrapStrategy.WRAP&&R.updateDocumentDataPageSize(Math.max(S,1)),I.calculate(),I.getActualSize();const C=K.getDocsSkeletonPageSize(I),{height:w}=C;return w}else{const S=m-ge*2-Ce-se,{documentSkeleton:I,docModel:R}=ea(g,this._localeService,e);f===s.WrapStrategy.WRAP&&R.updateDocumentDataPageSize(Math.max(S,1)),I.calculate();const C=K.getDocsSkeletonPageSize(I),{height:w}=C;return w+me*2}}isHit(n,r){const{data:e,subUnitId:t,row:a,col:o}=r,l=this._ensureMap(t).get(this._generateKey(a,o)),d=e.dataValidation;if(!d||!l||d.rule.renderMode===s.DataValidationRenderMode.TEXT)return!1;const{top:c,left:u,width:h,height:m}=l,{x:p,y:g}=n;return p>=u&&p<=u+h&&g>=c&&g<=c+m}onPointerDown(n,r){if(r.button===2)return;const{unitId:e,subUnitId:t,row:a,col:o}=n,i={unitId:e,subUnitId:t,row:a,column:o};this._commandService.executeCommand(Ae.id,i)}},_(gt,"padding",{l:ge+Ce,r:se+ge,t:me,b:me}),gt);St=Cr([Lt(0,y.Inject(s.LocaleService)),Lt(1,s.ICommandService)],St);const Or="LIST_RENDER_MODE_OPTION_INPUT";function Ge(n){var a;const{value:r,onChange:e}=n,t=H.useDependency(s.LocaleService);return v.jsx(T.FormLayout,{label:t.t("dataValidation.renderMode.label"),children:v.jsxs(T.RadioGroup,{value:`${(a=r.renderMode)!=null?a:s.DataValidationRenderMode.CUSTOM}`,onChange:o=>e({...r,renderMode:+o}),children:[v.jsx(T.Radio,{value:`${s.DataValidationRenderMode.CUSTOM}`,children:t.t("dataValidation.renderMode.chip")}),v.jsx(T.Radio,{value:`${s.DataValidationRenderMode.ARROW}`,children:t.t("dataValidation.renderMode.arrow")}),v.jsx(T.Radio,{value:`${s.DataValidationRenderMode.TEXT}`,children:t.t("dataValidation.renderMode.text")})]})})}Ge.componentKey=Or;function nt(n){if(!n)return[];const r=new Set;return n.forEach(e=>{e.forEach(t=>{const a=te(t);a!=null&&r.add(a.toString())})}),[...r]}const Tr=["if","indirect","choose","offset"];function Er(n,r){if(!s.isFormulaString(n)||oe.isReferenceString(n.slice(1)))return!0;const t=r.sequenceNodesBuilder(n);return t&&t.some(a=>typeof a=="object"&&a.nodeType===oe.sequenceNodeType.FUNCTION&&Tr.indexOf(a.token.toLowerCase())>-1)}function Fr(n,r){const{formula1:e="",ranges:t}=n;if(oe.isReferenceString(e.slice(1))){const o=oe.deserializeRangeWithSheet(e.slice(1));if((!o.sheetName||o.sheetName===r)&&t.some(i=>s.Rectangle.intersects(i,o.range)))return!0}return!1}class ta extends V.BaseDataValidator{constructor(){super(...arguments);_(this,"formulaService",this.injector.get(exports.DataValidationFormulaService));_(this,"_lexer",this.injector.get(oe.LexerTreeBuilder));_(this,"_univerInstanceService",this.injector.get(s.IUniverInstanceService));_(this,"id",s.DataValidationType.LIST);_(this,"title","dataValidation.list.title");_(this,"operators",[]);_(this,"scopes",["sheet"]);_(this,"formulaInput",Zt);_(this,"canvasRender",this.injector.createInstance(St));_(this,"dropdown",oa);_(this,"optionsInput",Ge.componentKey)}skipDefaultFontRender(e){return e.renderMode!==s.DataValidationRenderMode.TEXT}validatorFormula(e,t,a){var c,u,h;const o=!s.Tools.isBlank(e.formula1),i=Er((c=e.formula1)!=null?c:"",this._lexer),l=(h=(u=this._univerInstanceService.getUnit(t,s.UniverInstanceType.UNIVER_SHEET))==null?void 0:u.getSheetBySheetId(a))==null?void 0:h.getName(),d=Fr(e,l!=null?l:"");return{success:!!(o&&i&&!d),formula1:o?i?d?this.localeService.t("dataValidation.validFail.listIntersects"):void 0:this.localeService.t("dataValidation.validFail.listInvalid"):this.localeService.t("dataValidation.validFail.list")}}parseCellValue(e){const t=e.toString();return we(t)}async parseFormula(e,t,a){var l;const{formula1:o=""}=e,i=await this.formulaService.getRuleFormulaResult(t,a,e.uid);return{formula1:s.isFormulaString(o)?nt((l=i==null?void 0:i[0])==null?void 0:l.result):we(o),formula2:void 0}}async isValidType(e,t,a){const{value:o}=e,{formula1:i=[]}=t;return this.parseCellValue(o).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 m,p,g;const{formula1:o=""}=e,i=this.injector.get(s.IUniverInstanceService),l=(m=t?i.getUniverSheetInstance(t):void 0)!=null?m:i.getCurrentUnitForType(s.UniverInstanceType.UNIVER_SHEET);if(!l)return[];const d=(p=a?l.getSheetBySheetId(a):void 0)!=null?p:l.getActiveSheet();if(!d)return[];const c=l.getUnitId(),u=d.getSheetId(),h=this.formulaService.getRuleFormulaResultSync(c,u,e.uid);return s.isFormulaString(o)?nt((g=h==null?void 0:h[0])==null?void 0:g.result):we(o)}async getListAsync(e,t,a){var m,p,g;const{formula1:o=""}=e,i=this.injector.get(s.IUniverInstanceService),l=(m=t?i.getUniverSheetInstance(t):void 0)!=null?m:i.getCurrentUnitForType(s.UniverInstanceType.UNIVER_SHEET);if(!l)return[];const d=(p=a?l.getSheetBySheetId(a):void 0)!=null?p:l.getActiveSheet();if(!d)return[];const c=l.getUnitId(),u=d.getSheetId(),h=await this.formulaService.getRuleFormulaResult(c,u,e.uid);return s.isFormulaString(o)?nt((g=h==null?void 0:h[0])==null?void 0:g.result):we(o)}getListWithColor(e,t,a){const o=this.getList(e,t,a),i=(e.formula2||"").split(",");return o.map((l,d)=>({label:l,color:i[d]}))}getListWithColorMap(e,t,a){const o=this.getListWithColor(e,t,a),i={};return o.forEach(l=>{l.color&&(i[l.label]=l.color)}),i}}function ze(n){let r=n;return typeof n=="string"?((n.startsWith("¥")||n.startsWith("$"))&&(r=n.slice(1)),+r):+n}class br extends V.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",Ue);_(this,"dropDownInput")}_isFormulaOrNumber(e){return!s.Tools.isBlank(e)&&(s.isFormulaString(e)||!Number.isNaN(+e))}async isValidType(e,t,a){const{value:o}=e;return!Number.isNaN(ze(o))}transform(e,t,a){const{value:o}=e;return{...e,value:ze(o)}}_parseNumber(e){return e==null?Number.NaN:+e}async parseFormula(e,t,a){var c,u,h,m,p,g,f,D;const o=await this._formulaService.getRuleFormulaResult(t,a,e.uid),{formula1:i,formula2:l}=e;return{formula1:this._parseNumber(s.isFormulaString(i)?(m=(h=(u=(c=o==null?void 0:o[0])==null?void 0:c.result)==null?void 0:u[0])==null?void 0:h[0])==null?void 0:m.v:i),formula2:this._parseNumber(s.isFormulaString(l)?(D=(f=(g=(p=o==null?void 0:o[1])==null?void 0:p.result)==null?void 0:g[0])==null?void 0:f[0])==null?void 0:D.v:l)}}validatorFormula(e,t,a){const o=e.operator;if(!o)return{success:!1};const i=s.Tools.isDefine(e.formula1)&&this._isFormulaOrNumber(e.formula1),l=s.Tools.isDefine(e.formula2)&&this._isFormulaOrNumber(e.formula2),d=Pe.includes(o),c=this.localeService.t("dataValidation.validFail.number");return d?{success:i&&l,formula1:i?void 0:c,formula2:l?void 0:c}:{success:i,formula1:i?"":c}}async validatorIsEqual(e,t,a){const{formula1:o}=t,{value:i}=e;return Number.isNaN(o)?!0:i===o}async validatorIsNotEqual(e,t,a){const{formula1:o}=t;return Number.isNaN(o)?!0:e.value!==o}async validatorIsBetween(e,t,a){const{formula1:o,formula2:i}=t;if(Number.isNaN(o)||Number.isNaN(i))return!0;const l=Math.min(o,i),d=Math.max(o,i);return e.value>=l&&e.value<=d}async validatorIsNotBetween(e,t,a){const{formula1:o,formula2:i}=t;if(Number.isNaN(o)||Number.isNaN(i))return!0;const l=Math.min(o,i),d=Math.max(o,i);return e.value<l||e.value>d}async validatorIsGreaterThan(e,t,a){const{formula1:o}=t;return Number.isNaN(o)?!0:e.value>o}async validatorIsGreaterThanOrEqual(e,t,a){const{formula1:o}=t;return Number.isNaN(o)?!0:e.value>=o}async validatorIsLessThan(e,t,a){const{formula1:o}=t;return Number.isNaN(o)?!0:e.value<o}async validatorIsLessThanOrEqual(e,t,a){const{formula1:o}=t;return Number.isNaN(o)?!0:e.value<=o}}const Nr="{FORMULA1}",Lr="{FORMULA2}";class Pr extends V.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",Ue);_(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,t,a){const o=e.operator;if(!o)return{success:!1};const i=s.Tools.isDefine(e.formula1)&&this._isFormulaOrInt(e.formula1),l=s.Tools.isDefine(e.formula2)&&this._isFormulaOrInt(e.formula2),d=Pe.includes(o),c=this.localeService.t("dataValidation.validFail.number");return d?{success:i&&l,formula1:i?void 0:c,formula2:l?void 0:c}:{success:i,formula1:c}}_parseNumber(e){return e==null?Number.NaN:+e}_isValidFormula(e){return!Number.isNaN(e)}async parseFormula(e,t,a){var d,c,u,h,m,p,g,f;const o=await this._formulaService.getRuleFormulaResult(t,a,e.uid),{formula1:i,formula2:l}=e;return{formula1:this._parseNumber(s.isFormulaString(i)?(h=(u=(c=(d=o==null?void 0:o[0])==null?void 0:d.result)==null?void 0:c[0])==null?void 0:u[0])==null?void 0:h.v:i),formula2:this._parseNumber(s.isFormulaString(l)?(f=(g=(p=(m=o==null?void 0:o[1])==null?void 0:m.result)==null?void 0:p[0])==null?void 0:g[0])==null?void 0:f.v:l)}}transform(e,t,a){return{...e,value:e.value.toString().length}}async isValidType(e,t,a){const{value:o}=e;return typeof o=="string"||typeof o=="number"}async validatorIsEqual(e,t,a){const{formula1:o}=t;return s.Tools.isDefine(o)?e.value===o:!1}async validatorIsNotEqual(e,t,a){const{formula1:o}=t;return s.Tools.isDefine(o)?e.value!==o:!1}async validatorIsBetween(e,t,a){const{formula1:o,formula2:i}=t,{value:l}=e;if(!this._isValidFormula(o)||!this._isValidFormula(i))return!1;const d=Math.max(o,i),c=Math.min(o,i);return l>=c&&l<=d}async validatorIsNotBetween(e,t,a){const{formula1:o,formula2:i}=t,{value:l}=e;if(!this._isValidFormula(o)||!this._isValidFormula(i))return!1;const d=Math.max(o,i),c=Math.min(o,i);return l<c||l>d}async validatorIsGreaterThan(e,t,a){const{formula1:o}=t,{value:i}=e;return this._isValidFormula(o)?i>o:!1}async validatorIsGreaterThanOrEqual(e,t,a){const{formula1:o}=t,{value:i}=e;return this._isValidFormula(o)?i>=o:!1}async validatorIsLessThan(e,t,a){const{formula1:o}=t,{value:i}=e;return this._isValidFormula(o)?i<o:!1}async validatorIsLessThanOrEqual(e,t,a){const{formula1:o}=t,{value:i}=e;return this._isValidFormula(o)?i<=o:!1}generateRuleErrorMessage(e){var a,o;return e.operator?`${this.localeService.t(V.TextLengthErrorTitleMap[e.operator]).replace(Nr,(a=e.formula1)!=null?a:"").replace(Lr,(o=e.formula2)!=null?o:"")}`:this.titleStr}}function aa(n){var e,t;return n?n.p?!((t=(e=n.p.body)==null?void 0:e.dataStream)!=null?t:"").slice(0,-2).trim():s.Tools.isBlank(n.v):!0}function Oe(n,r,e,t){const a=[],o=[],l=t.get(V.DataValidationModel).ensureManager(n,r),d=t.get(s.IUniverInstanceService),c=j.getSheetCommandTarget(d,{unitId:n,subUnitId:r});if(!c)return{redoMutations:a,undoMutations:o};const{worksheet:u}=c,h=new s.ObjectMatrix;function m(f,D){f.forEach(S=>{s.Range.foreach(S,(I,R)=>{const C=u.getCellRaw(I,R),w=Wt(C);(aa(C)||w===D)&&h.setValue(I,R,{v:D,p:null})})})}e.forEach(f=>{switch(f.type){case"delete":a.push({id:V.RemoveDataValidationMutation.id,params:{unitId:n,subUnitId:r,ruleId:f.rule.uid}}),o.unshift({id:V.AddDataValidationMutation.id,params:{unitId:n,subUnitId:r,rule:f.rule,index:f.index}});break;case"update":{a.push({id:V.UpdateDataValidationMutation.id,params:{unitId:n,subUnitId:r,ruleId:f.ruleId,payload:{type:V.UpdateRuleType.RANGE,payload:f.newRanges}}}),o.unshift({id:V.UpdateDataValidationMutation.id,params:{unitId:n,subUnitId:r,ruleId:f.ruleId,payload:{type:V.UpdateRuleType.RANGE,payload:f.oldRanges}}});const D=l.getRuleById(f.ruleId);if(D&&D.type===s.DataValidationType.CHECKBOX){const I=l.getValidator(s.DataValidationType.CHECKBOX).parseFormulaSync(D,n,r);m(f.newRanges,I.formula2)}break}case"add":{if(a.push({id:V.AddDataValidationMutation.id,params:{unitId:n,subUnitId:r,rule:f.rule}}),o.unshift({id:V.RemoveDataValidationMutation.id,params:{unitId:n,subUnitId:r,ruleId:f.rule.uid}}),f.rule.type===s.DataValidationType.CHECKBOX){const S=l.getValidator(s.DataValidationType.CHECKBOX).parseFormulaSync(f.rule,n,r);m(f.rule.ranges,S.formula2)}break}}});const p={id:j.SetRangeValuesMutation.id,params:{unitId:n,subUnitId:r,cellValue:h.getData()}},g={id:j.SetRangeValuesMutation.id,params:j.SetRangeValuesUndoMutationFactory(t,p.params)};return a.push(p),o.push(g),{redoMutations:a,undoMutations:o}}const xe={type:s.CommandType.COMMAND,id:"sheet.command.updateDataValidationRuleRange",async handler(n,r){if(!r)return!1;const{unitId:e,subUnitId:t,ranges:a,ruleId:o}=r,i=n.get(V.DataValidationModel),l=n.get(s.ICommandService),d=n.get(s.IUndoRedoService),c=i.ensureManager(e,t),u=c.getRuleById(o);if(!u)return!1;const h=u.ranges,m=c.getRuleObjectMatrix().clone();m.updateRange(o,h,a);const p=m.diff(c.getDataValidations()),{redoMutations:g,undoMutations:f}=Oe(e,t,p,n);return d.pushUndoRedo({undoMutations:f,redoMutations:g,unitID:e}),await s.sequenceExecuteAsync(g,l),!0}},Be={type:s.CommandType.COMMAND,id:"sheet.command.addDataValidation",async handler(n,r){if(!r)return!1;const{unitId:e,subUnitId:t,rule:a}=r,o=n.get(V.DataValidationModel),i=n.get(s.ICommandService),l=n.get(s.IUndoRedoService),d=o.ensureManager(e,t),c=d.getRuleObjectMatrix().clone();c.addRule(a);const u=c.diff(d.getDataValidations()),h={unitId:e,subUnitId:t,rule:a},{redoMutations:m,undoMutations:p}=Oe(e,t,u,n);return m.push({id:V.AddDataValidationMutation.id,params:h}),p.unshift({id:V.RemoveDataValidationMutation.id,params:{unitId:e,subUnitId:t,ruleId:a.uid}}),l.pushUndoRedo({unitID:e,redoMutations:m,undoMutations:p}),await s.sequenceExecuteAsync(m,i),!0}},Je={type:s.CommandType.COMMAND,id:"data-validation.command.addRuleAndOpen",async handler(n){const r=n.get(s.IUniverInstanceService),e=j.getSheetCommandTarget(r);if(!e)return!1;const{workbook:t,worksheet:a}=e,o=V.createDefaultNewRule(n),i=n.get(s.ICommandService),l=t.getUnitId(),d=a.getSheetId(),c={rule:o,unitId:l,subUnitId:d};return await i.executeCommand(Be.id,c)?(i.executeCommand(Re.id,{ruleId:o.uid,isAdd:!0}),!0):!1}},_t={type:s.CommandType.COMMAND,id:"sheets.command.update-data-validation-setting",handler(n,r){if(!r)return!1;const e=n.get(s.ICommandService),t=n.get(s.IUndoRedoService),a=n.get(V.DataValidationModel),o=n.get(V.DataValidatorRegistryService),{unitId:i,subUnitId:l,ruleId:d,setting:c}=r,u=o.getValidatorItem(c.type);if(!u)return!1;const h=a.getRuleById(i,l,d);if(!h||!u.validatorFormula({...h,...c},i,l).success)return!1;const m={unitId:i,subUnitId:l,ruleId:d,payload:{type:V.UpdateRuleType.SETTING,payload:c}},p=[{id:V.UpdateDataValidationMutation.id,params:m}],g={unitId:i,subUnitId:l,ruleId:d,payload:{type:V.UpdateRuleType.SETTING,payload:V.getRuleSetting(h)}},f=[{id:V.UpdateDataValidationMutation.id,params:g}];if(c.type===s.DataValidationType.CHECKBOX){const S=h.ranges,I=n.get(s.IUniverInstanceService),R=j.getSheetCommandTarget(I,{unitId:i,subUnitId:l});if(R){const C=new s.ObjectMatrix,{worksheet:w}=R,{formula2:E=Le,formula1:U=Ne}=h,{formula2:x=Le,formula1:W=Ne}=c;S.forEach($=>{s.Range.foreach($,(k,L)=>{const N=w.getCellRaw(k,L),Y=Wt(N);aa(N)||Y===String(E)?C.setValue(k,L,{v:x,p:null}):Y===String(U)&&C.setValue(k,L,{v:W,p:null})})});const P={id:j.SetRangeValuesMutation.id,params:{unitId:i,subUnitId:l,cellValue:C.getData()}},F={id:j.SetRangeValuesMutation.id,params:j.SetRangeValuesUndoMutationFactory(n,P.params)};p.push(P),f.push(F)}}return s.sequenceExecute(p,e).result?(t.pushUndoRedo({unitID:i,redoMutations:p,undoMutations:f}),!0):!1}},ra={type:s.CommandType.COMMAND,id:"sheets.command.update-data-validation-options",handler(n,r){if(!r)return!1;const e=n.get(s.ICommandService),t=n.get(s.IUndoRedoService),a=n.get(V.DataValidationModel),{unitId:o,subUnitId:i,ruleId:l,options:d}=r,c=a.getRuleById(o,i,l);if(!c)return!1;const u={unitId:o,subUnitId:i,ruleId:l,payload:{type:V.UpdateRuleType.OPTIONS,payload:d}},h=[{id:V.UpdateDataValidationMutation.id,params:u}],m={unitId:o,subUnitId:i,ruleId:l,payload:{type:V.UpdateRuleType.OPTIONS,payload:V.getRuleOptions(c)}},p=[{id:V.UpdateDataValidationMutation.id,params:m}];return t.pushUndoRedo({unitID:o,redoMutations:h,undoMutations:p}),e.executeCommand(V.UpdateDataValidationMutation.id,u),!0}},Ar="univer-data-validation-options-button",jr="univer-data-validation-options-button-icon",it={dataValidationOptionsButton:Ar,dataValidationOptionsButtonIcon:jr};function Ur(n){var c;const r=H.useDependency(s.LocaleService),e=H.useDependency(q.ComponentManager),{value:t,onChange:a,extraComponent:o}=n,[i,l]=O.useState(!1),d=o?e.get(o):null;return v.jsxs(v.Fragment,{children:[v.jsxs("div",{className:it.dataValidationOptionsButton,onClick:()=>l(!i),children:[r.t("dataValidation.panel.options"),i?v.jsx(Gt,{className:it.dataValidationOptionsButtonIcon}):v.jsx(Xt,{className:it.dataValidationOptionsButtonIcon})]}),i&&v.jsxs(v.Fragment,{children:[d?v.jsx(d,{value:t,onChange:a}):null,v.jsx(T.FormLayout,{label:r.t("dataValidation.panel.invalid"),children:v.jsxs(T.RadioGroup,{value:`${(c=t.errorStyle)!=null?c:s.DataValidationErrorStyle.WARNING}`,onChange:u=>a({...t,errorStyle:+u}),children:[v.jsx(T.Radio,{value:`${s.DataValidationErrorStyle.WARNING}`,children:r.t("dataValidation.panel.showWarning")}),v.jsx(T.Radio,{value:`${s.DataValidationErrorStyle.STOP}`,children:r.t("dataValidation.panel.rejectInput")})]})}),v.jsx(T.FormLayout,{label:r.t("dataValidation.panel.messageInfo"),children:v.jsx(T.Checkbox,{checked:t.showInputMessage,onChange:()=>a({...t,showInputMessage:!t.showInputMessage}),children:r.t("dataValidation.panel.showInfo")})}),t.showInputMessage?v.jsx(T.FormLayout,{children:v.jsx(T.Input,{value:t.error,onChange:u=>a({...t,error:u})})}):null]})]})}const xr="univer-data-validation-detail-form-item",Br="univer-data-validation-detail-buttons",$r="univer-data-validation-detail-button",ye={dataValidationDetailFormItem:xr,dataValidationDetailButtons:Br,dataValidationDetailButton:$r},Wr=n=>s.debounce(async(r,e,t,a)=>{const o=await n.executeCommand(r,e,t);a==null||a(o)},275);function Hr(){const[n,r]=O.useState(0),e=H.useDependency(le),t=q.useObservable(e.activeRule$,e.activeRule),{unitId:a,subUnitId:o,rule:i}=t||{},l=i.uid,d=H.useDependency(V.DataValidatorRegistryService),c=H.useDependency(q.ComponentManager),u=H.useDependency(s.ICommandService),h=H.useDependency(V.DataValidationModel),m=H.useDependency(s.LocaleService),[p,g]=O.useState(i),f=d.getValidatorItem(p.type),[D,S]=O.useState(!1),I=d.getValidatorsByScope(V.DataValidatorRegistryScope.SHEET),[R,C]=O.useState(()=>p.ranges.map(M=>({unitId:"",sheetId:"",range:M}))),w=O.useMemo(()=>Wr(u),[u]);if(O.useEffect(()=>{u.onCommandExecuted(M=>{(M.id===s.UndoCommand.id||M.id===s.RedoCommand.id)&&setTimeout(()=>{const B=h.getRuleById(a,o,l);r(ee=>ee+1),B&&(g(B),C(B.ranges.map(ee=>({unitId:"",sheetId:"",range:ee}))))},20)})},[u,h,l,o,a]),!f)return null;const E=f.operators,U=f.operatorNames,x=p.operator?V.TWO_FORMULA_OPERATOR_COUNT.includes(p.operator):!1,W=()=>{f.validatorFormula(p,a,o).success?e.setActiveRule(null):S(!0)},P=q.useEvent(M=>{if(s.isUnitRangesEqual(M,R))return;C(M);const B=M.filter(Q=>(!Q.unitId||Q.unitId===a)&&(!Q.sheetId||Q.sheetId===o)).map(Q=>Q.range);if(g({...p,ranges:B}),B.length===0)return;const ee={unitId:a,subUnitId:o,ruleId:l,ranges:B};w(xe.id,ee)}),F=M=>{if(s.shallowEqual(M,V.getRuleSetting(p)))return;g({...p,...M});const B={unitId:a,subUnitId:o,ruleId:l,setting:M};w(_t.id,B,void 0)},$=async()=>{await u.executeCommand(V.RemoveDataValidationCommand.id,{ruleId:l,unitId:a,subUnitId:o}),e.setActiveRule(null)},k={type:p.type,operator:p.operator,formula1:p.formula1,formula2:p.formula2,allowBlank:p.allowBlank},L=M=>{const B=d.getValidatorItem(M);if(!B)return;const ee=B.operators,Q=h.getRuleById(a,o,l),ie=M===(Q==null?void 0:Q.type)?{...Q}:{...p,type:M,operator:ee[0],formula1:void 0,formula2:void 0};g(ie),u.executeCommand(_t.id,{unitId:a,subUnitId:o,ruleId:p.uid,setting:V.getRuleSetting(ie)})},N=c.get(f.formulaInput),Y=O.useMemo(()=>R.map(M=>oe.serializeRange(M.range)).join(","),[]),Z=V.getRuleOptions(p),X=M=>{s.shallowEqual(M,V.getRuleOptions(p))||(g({...p,...M}),w(ra.id,{unitId:a,subUnitId:o,ruleId:l,options:M}))};return v.jsxs("div",{children:[v.jsx(T.FormLayout,{label:m.t("dataValidation.panel.range"),children:v.jsx(q.RangeSelector,{className:ye.dataValidationDetailFormItem,value:Y,id:s.createInternalEditorID("data-validation-detail"),openForSheetUnitId:a,openForSheetSubUnitId:o,onChange:M=>{M.some(B=>!s.isValidRange(B.range)||B.range.endColumn<B.range.startColumn||B.range.endRow<B.range.startRow)||P(M)}},n)}),v.jsx(T.FormLayout,{label:m.t("dataValidation.panel.type"),children:v.jsx(T.Select,{options:I==null?void 0:I.map(M=>({label:m.t(M.title),value:M.id})),value:p.type,onChange:L,className:ye.dataValidationDetailFormItem})}),E!=null&&E.length?v.jsx(T.FormLayout,{label:m.t("dataValidation.panel.operator"),children:v.jsx(T.Select,{options:E.map((M,B)=>({value:`${M}`,label:U[B]})),value:`${p.operator}`,onChange:M=>{F({...k,operator:M})},className:ye.dataValidationDetailFormItem})}):null,N?v.jsx(N,{isTwoFormula:x,value:{formula1:p.formula1,formula2:p.formula2},onChange:M=>{F({...k,...M})},showError:D,validResult:f.validatorFormula(p,a,o),unitId:a,subUnitId:o,ruleId:l},n):null,v.jsx(Ur,{value:Z,onChange:X,extraComponent:f.optionsInput}),v.jsxs("div",{className:ye.dataValidationDetailButtons,children:[v.jsx(T.Button,{className:ye.dataValidationDetailButton,onClick:$,children:m.t("dataValidation.panel.removeRule")}),v.jsx(T.Button,{className:ye.dataValidationDetailButton,type:"primary",onClick:W,children:m.t("dataValidation.panel.done")})]})]})}const kr="univer-data-validation-item-container",Yr="univer-data-validation-item-title",qr="univer-data-validation-item-content",Xr="univer-data-validation-item-icon",He={dataValidationItemContainer:kr,dataValidationItemTitle:Yr,dataValidationItemContent:qr,dataValidationItemIcon:Xr},Gr=n=>{const{rule:r,onClick:e,unitId:t,subUnitId:a,disable:o}=n,i=H.useDependency(V.DataValidatorRegistryService),l=H.useDependency(s.ICommandService),d=H.useDependency(A.IMarkSelectionService),c=i.getValidatorItem(r.type),u=O.useRef(),[h,m]=O.useState(!1),p=g=>{l.executeCommand(V.RemoveDataValidationCommand.id,{ruleId:r.uid,unitId:t,subUnitId:a}),g.stopPropagation()};return O.useEffect(()=>()=>{var g;u.current&&((g=u.current)==null||g.forEach(f=>{f&&d.removeShape(f)}))},[d]),v.jsxs("div",{className:He.dataValidationItemContainer,onClick:e,onMouseEnter:()=>{o||(m(!0),u.current=r.ranges.map(g=>d.addShape({range:g,style:{hasAutoFill:!1,fill:"rgba(73, 184, 17, 0.05)",strokeWidth:1,stroke:"#49B811",widgets:{}},primary:{startColumn:g.startColumn,endColumn:g.endColumn,startRow:g.startRow,endRow:g.endRow,actualRow:g.startRow,actualColumn:g.startColumn,isMerged:!1,isMergedMainCell:!1}})))},onMouseLeave:()=>{var g;m(!1),(g=u.current)==null||g.forEach(f=>{f&&d.removeShape(f)}),u.current=void 0},children:[v.jsx("div",{className:He.dataValidationItemTitle,children:c==null?void 0:c.generateRuleName(r)}),v.jsx("div",{className:He.dataValidationItemContent,children:r.ranges.map(g=>oe.serializeRange(g)).join(",")}),h?v.jsx("div",{className:He.dataValidationItemIcon,onClick:p,children:v.jsx(yt,{})}):null]})},zr="univer-data-validation-list-buttons",Kr="univer-data-validation-list-button",st={dataValidationListButtons:zr,dataValidationListButton:Kr};function Qr(){const n=H.useDependency(s.IUniverInstanceService),r=q.useObservable(()=>n.getCurrentTypeOfUnit$(s.UniverInstanceType.UNIVER_SHEET),void 0,void 0,[]);return r?v.jsx(Zr,{workbook:r}):null}function Zr(n){const r=H.useDependency(V.DataValidationModel),e=H.useDependency(s.IUniverInstanceService),t=H.useDependency(s.ICommandService),a=H.useDependency(y.Injector),o=H.useDependency(le),i=H.useDependency(s.LocaleService),[l,d]=O.useState([]),{workbook:c}=n,u=q.useObservable(c.activeSheet$,void 0,!0),h=c.getUnitId(),m=u==null?void 0:u.getSheetId(),p=r.ensureManager(h,m);O.useEffect(()=>{d(p.getDataValidations());const R=p.dataValidations$.subscribe(C=>{d([...C])});return()=>{R.unsubscribe()}},[p]);const g=async()=>{const R=V.createDefaultNewRule(a),C={unitId:h,subUnitId:m,rule:R};await t.executeCommand(Be.id,C),o.setActiveRule({unitId:h,subUnitId:m,rule:R})},f=()=>{t.executeCommand(V.RemoveAllDataValidationCommand.id,{unitId:h,subUnitId:m})},S=(R=>{const w=e.getCurrentUnitForType(s.UniverInstanceType.UNIVER_SHEET).getActiveSheet();return R.map(U=>{const{ranges:x}=U;return(x==null?void 0:x.some(P=>{var N,Y;const{startRow:F,startColumn:$,endRow:k,endColumn:L}=P;for(let Z=F;Z<=k;Z++)for(let X=$;X<=L;X++){const M=(Y=(N=w==null?void 0:w.getCell(Z,X))==null?void 0:N.selectionProtection)==null?void 0:Y[0];if((M==null?void 0:M[Xe.Edit])===!1||(M==null?void 0:M[Xe.View])===!1)return!0}return!1}))?{...U,disable:!0}:{...U}})})(l),I=S==null?void 0:S.some(R=>R.disable);return v.jsxs("div",{children:[S==null?void 0:S.map(R=>{var C;return v.jsx(Gr,{unitId:h,subUnitId:m,onClick:()=>{R.disable||o.setActiveRule({unitId:h,subUnitId:m,rule:R})},rule:R,disable:(C=R.disable)!=null?C:!1},R.uid)}),v.jsxs("div",{className:st.dataValidationListButtons,children:[l.length&&!I?v.jsx(T.Button,{className:st.dataValidationListButton,onClick:f,children:i.t("dataValidation.panel.removeAll")}):null,v.jsx(T.Button,{className:st.dataValidationListButton,type:"primary",onClick:g,children:i.t("dataValidation.panel.add")})]})]})}const Jr=()=>{const n=H.useDependency(le),r=q.useObservable(n.activeRule$,n.activeRule);return r?v.jsx(Hr,{},r.rule.uid):v.jsx(Qr,{})},eo="univer-dv-list-dropdown",to="univer-dv-list-dropdown-title",ao="univer-dv-list-dropdown-list",ro="univer-dv-list-dropdown-list-container",oo="univer-dv-list-dropdown-selected-icon",no="univer-dv-list-dropdown-item-container",io="univer-dv-list-dropdown-item",so="univer-dv-list-dropdown-split",lo="univer-dv-list-dropdown-edit",ce={dvListDropdown:eo,dvListDropdownTitle:to,dvListDropdownList:ao,dvListDropdownListContainer:ro,dvListDropdownSelectedIcon:oo,dvListDropdownItemContainer:no,dvListDropdownItem:io,dvListDropdownSplit:so,dvListDropdownEdit:lo},co=n=>{const{value:r,onChange:e,multiple:t,options:a,title:o,onEdit:i,style:l}=n;return v.jsxs("div",{className:ce.dvListDropdown,style:l,children:[v.jsx("div",{className:ce.dvListDropdownTitle,children:o}),v.jsx("div",{className:ce.dvListDropdownList,children:v.jsx(T.Scrollbar,{children:v.jsx("div",{className:ce.dvListDropdownListContainer,children:a.map((d,c)=>{const u=r.indexOf(d.value)>-1,h=()=>{let m;u?m=new Set(r.filter(g=>g!==d.value)):m=new Set(t?[...r,d.value]:[d.value]);const p=[];a.forEach(g=>{m.has(g.value)&&p.push(g.value)}),e(p)};return v.jsxs("div",{className:ce.dvListDropdownItemContainer,onClick:h,children:[v.jsx("div",{className:ce.dvListDropdownItem,style:{background:d.color||_e},children:d.label}),v.jsx("div",{className:ce.dvListDropdownSelectedIcon,children:u?v.jsx(kt,{}):null})]},c)})})})}),v.jsx("div",{className:ce.dvListDropdownSplit}),v.jsx("div",{className:ce.dvListDropdownEdit,children:v.jsx("a",{onClick:i,children:"编辑"})})]})};function uo(n){var x,W;const{location:r,hideFn:e}=n,{worksheet:t,row:a,col:o,unitId:i,subUnitId:l}=r,d=H.useDependency(s.ICommandService),c=H.useDependency(s.LocaleService),[u,h]=O.useState(""),m=H.useDependency(A.IEditorBridgeService),p=T.RectPopup.useContext(),g=p.right-p.left;if(!t)return null;const f=t.getCell(a,o),D=(x=f==null?void 0:f.dataValidation)==null?void 0:x.rule,S=(W=f==null?void 0:f.dataValidation)==null?void 0:W.validator,I=(D==null?void 0:D.renderMode)===s.DataValidationRenderMode.CUSTOM||(D==null?void 0:D.renderMode)===void 0;if(!f||!D||!S)return;const R=D.type===s.DataValidationType.LIST_MULTIPLE,C=S.getListWithColor(D,i,l),w=u||ir(f),E=we(w),U=()=>{d.executeCommand(Re.id,{ruleId:D.uid}),e()};return v.jsx(co,{style:{minWidth:g,maxWidth:Math.max(g,200)},title:R?c.t("dataValidation.listMultiple.dropdown"):c.t("dataValidation.list.dropdown"),value:E,multiple:R,onChange:P=>{const F=Kt(P),$={unitId:i,subUnitId:l,range:{startColumn:o,endColumn:o,startRow:a,endRow:a},value:{v:F,p:null,f:null,si:null}};m.isVisible()&&m.changeVisible({visible:!1,keycode:q.KeyCode.ESC,eventType:K.DeviceInputEventType.Keyboard}),d.executeCommand(j.SetRangeValuesCommand.id,$),h(F),R||e()},options:C.map(P=>({label:P.label,value:P.label,color:I?P.color:"transparent"})),onEdit:U})}var ho=Object.defineProperty,mo=Object.getOwnPropertyDescriptor,po=(n,r,e,t)=>{for(var a=t>1?void 0:t?mo(r,e):r,o=n.length-1,i;o>=0;o--)(i=n[o])&&(a=(t?i(r,e,a):i(a))||a);return t&&a&&ho(r,e,a),a},Te=(n,r)=>(e,t)=>r(e,t,n);exports.DataValidationRejectInputController=class extends s.Disposable{constructor(r,e,t,a,o){super(),this._editorBridgeService=r,this._dataValidationModel=e,this._dataValidatorRegistryService=t,this._dialogService=a,this._localeService=o,this._initEditorBridgeInterceptor()}_initEditorBridgeInterceptor(){this._editorBridgeService.interceptor.intercept(this._editorBridgeService.interceptor.getInterceptPoints().AFTER_CELL_EDIT_ASYNC,{handler:async(r,e,t)=>{const a=await r,{worksheet:o,row:i,col:l,unitId:d,subUnitId:c}=e,u=this._dataValidationModel.ensureManager(d,c),h=u.getRuleIdByLocation(i,l),m=h?u.getRuleById(h):void 0;if(!m||m.errorStyle!==s.DataValidationErrorStyle.STOP)return t(Promise.resolve(a));const p=await this._dataValidatorRegistryService.getValidatorItem(m.type);if(!p||await p.validator({value:te(a),row:i,column:l,unitId:d,subUnitId:c},m))return t(Promise.resolve(a));const f=o.getCellRaw(i,l);return this._dialogService.open({width:368,title:{title:this._localeService.t("dataValidation.alert.title")},id:"reject-input-dialog",children:{title:p.getRuleFinalError(m)},footer:{title:O.createElement(T.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(f))}})}showReject(r){this._dialogService.open({width:368,title:{title:this._localeService.t("dataValidation.alert.title")},id:"reject-input-dialog",children:{title:r},footer:{title:O.createElement(T.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=po([s.OnLifecycle(s.LifecycleStages.Ready,exports.DataValidationRejectInputController),Te(0,A.IEditorBridgeService),Te(1,y.Inject(V.DataValidationModel)),Te(2,y.Inject(V.DataValidatorRegistryService)),Te(3,q.IDialogService),Te(4,y.Inject(s.LocaleService))],exports.DataValidationRejectInputController);const fo="univer-dv-date-dropdown",go={dvDateDropdown:fo};function vo(n){var I,R,C;const{location:r,hideFn:e}=n,{worksheet:t,row:a,col:o,unitId:i,subUnitId:l}=r,d=H.useDependency(s.ICommandService),c=H.useDependency(exports.DataValidationRejectInputController),[u,h]=O.useState();if(!t)return null;const m=t.getCell(a,o),p=(I=m==null?void 0:m.dataValidation)==null?void 0:I.rule,g=(R=m==null?void 0:m.dataValidation)==null?void 0:R.validator;if(!m||!p||!g)return;const f=te(m),D=(C=g.transformDate(f))!=null?C:Ve(),S=D.isValid()?D:Ve();return v.jsx("div",{className:go.dvDateDropdown,children:v.jsx(T.DatePanel,{pickerValue:u!=null?u:S,onSelect:async w=>{const E=w.format("YYYY/MM/DD");p.errorStyle!==s.DataValidationErrorStyle.STOP||await g.validator({value:E,unitId:i,subUnitId:l,row:a,column:o},p)?d.executeCommand(j.SetRangeValuesCommand.id,{unitId:i,subUnitId:l,range:{startColumn:o,endColumn:o,startRow:a,endRow:a},value:{v:E,p:null,f:null,si:null}}):c.showReject(g.getRuleFinalError(p)),e()},onPanelChange:w=>{h(w)}})})}const oa="data-validation.list.dropdown",na="data-validation.date.dropdown",ia="data-validation-single",Mt="sheet.menu.data-validation";function So(n){return{id:Mt,type:q.MenuItemType.SUBITEMS,positions:[q.MenuPosition.TOOLBAR_START],group:q.MenuGroup.TOOLBAR_FORMULAS_INSERT,icon:ia,tooltip:"dataValidation.title",hidden$:q.getMenuHiddenObservable(n,s.UniverInstanceType.UNIVER_SHEET),disabled$:A.getCurrentRangeDisable$(n,{workbookTypes:[j.WorkbookEditablePermission],worksheetTypes:[j.WorksheetSetCellStylePermission,j.WorksheetEditPermission],rangeTypes:[j.RangeProtectionPermissionEditPoint]})}}function _o(n){return{id:Re.id,title:"dataValidation.panel.title",type:q.MenuItemType.BUTTON,positions:[Mt]}}function Vo(n){return{id:Je.id,title:"dataValidation.panel.add",type:q.MenuItemType.BUTTON,positions:[Mt]}}var Ro=Object.defineProperty,Do=Object.getOwnPropertyDescriptor,sa=(n,r,e,t)=>{for(var a=t>1?void 0:t?Do(r,e):r,o=n.length-1,i;o>=0;o--)(i=n[o])&&(a=(t?i(r,e,a):i(a))||a);return t&&a&&Ro(r,e,a),a},J=(n,r)=>(e,t)=>r(e,t,n);const la={},da={tr:{size:6,color:"#fe4b4b"}};exports.SheetsDataValidationRenderController=class extends s.RxDisposable{constructor(r,e,t,a,o,i,l,d,c,u,h,m,p){super(),this._config=r,this._commandService=e,this._menuService=t,this._renderManagerService=a,this._univerInstanceService=o,this._autoHeightController=i,this._componentManager=l,this._dropdownManagerService=d,this._dataValidationModel=c,this._dataValidatorRegistryService=u,this._injector=h,this._sheetInterceptorService=m,this._editorBridgeService=p,this._initComponents(),this._initMenu(),this._initSkeletonChange(),this._initDropdown(),this._initViewModelIntercept(),this._initAutoHeight()}_initMenu(){const{menu:r={}}=this._config;[So,_o,Vo].forEach(e=>{this.disposeWithMe(this._menuService.addMenuItem(e(this._injector),r))})}_initComponents(){[[$t,Jr],[Bt,ya],[oa,uo],[na,vo],[Ge.componentKey,Ge],...pr].forEach(([r,e])=>{this.disposeWithMe(this._componentManager.register(r,e))})}_initDropdown(){this._editorBridgeService&&this.disposeWithMe(this._editorBridgeService.visible$.subscribe(r=>{if(!r.visible)return;const e=this._editorBridgeService.getEditCellState();if(e){const{unitId:t,sheetId:a,row:o,column:i}=e,l=this._univerInstanceService.getUniverSheetInstance(t);if(!l)return;const c=this._dataValidationModel.ensureManager(t,a).getRuleByLocation(o,i);if(!c)return;const u=this._dataValidatorRegistryService.getValidatorItem(c.type);if(!(u!=null&&u.dropdown))return;const h=l.getActiveSheet();if(!h)return;const m=this._dropdownManagerService.activeDropdown,p=m==null?void 0:m.location;if(p&&p.unitId===t&&p.subUnitId===a&&p.row===o&&p.col===i)return;this._dropdownManagerService.showDropdown({location:{unitId:t,subUnitId:a,row:o,col:i,workbook:l,worksheet:h},componentKey:u.dropdown,onHide:()=>{}})}}))}_initSkeletonChange(){const r=()=>{var l,d,c;const e=this._univerInstanceService.getCurrentUnitForType(s.UniverInstanceType.UNIVER_SHEET);if(!e)return;const t=e.getUnitId(),a=(l=e.getActiveSheet())==null?void 0:l.getSheetId();if(!a)return;const o=(c=(d=this._renderManagerService.getRenderById(t))==null?void 0:d.with(A.SheetSkeletonManagerService).getUnitSkeleton(t,a))==null?void 0:c.skeleton,i=this._renderManagerService.getRenderById(t);o==null||o.makeDirty(!0),o==null||o.calculate(),i&&i.mainComponent.makeForceDirty()};this.disposeWithMe(this._dataValidationModel.ruleChange$.subscribe(()=>r())),this.disposeWithMe(this._dataValidationModel.validStatusChange$.subscribe(()=>r()))}_initViewModelIntercept(){this.disposeWithMe(this._sheetInterceptorService.intercept(j.INTERCEPTOR_POINT.CELL_CONTENT,{priority:200,handler:(r,e,t)=>{var w,E,U,x,W,P;const{row:a,col:o,unitId:i,subUnitId:l,workbook:d,worksheet:c}=e,u=this._dataValidationModel.ensureManager(i,l);if(!u)return t(r);const h=(E=(w=this._renderManagerService.getRenderById(i))==null?void 0:w.with(A.SheetSkeletonManagerService).getUnitSkeleton(i,l))==null?void 0:E.skeleton;if(!h)return t(r);const m=e.workbook.getStyles(),p=(typeof(r==null?void 0:r.s)=="string"?m.get(r==null?void 0:r.s):r==null?void 0:r.s)||{},g=u.getRuleIdByLocation(a,o);if(!g)return t(r);const f=u.getRuleById(g);if(!f)return t(r);const D=c.getCellRaw(e.row,e.col),S=this._dataValidationModel.validator(te(D),f,e),I=this._dataValidatorRegistryService.getValidatorItem(f.type),R=te(r);let C={};if((f.type===s.DataValidationType.LIST||f.type===s.DataValidationType.LIST_MULTIPLE)&&(C={interceptorStyle:{...r==null?void 0:r.interceptorStyle,tb:(U=p.tb!==s.WrapStrategy.OVERFLOW?p.tb:s.WrapStrategy.CLIP)!=null?U:s.WrapStrategy.WRAP}}),f.type===s.DataValidationType.CHECKBOX&&(C={interceptorStyle:{...r==null?void 0:r.interceptorStyle,tb:s.WrapStrategy.CLIP}}),f.type===s.DataValidationType.LIST&&(f.renderMode===s.DataValidationRenderMode.ARROW||f.renderMode===s.DataValidationRenderMode.TEXT)){const F=I.getListWithColorMap(f),$=`${(x=te(r))!=null?x:""}`,k=F[$];k&&(C={...C,interceptorStyle:{...C.interceptorStyle,bg:{rgb:k}}})}return t({...r,...C,dataValidation:{ruleId:g,validStatus:S,rule:f,validator:I},markers:{...r==null?void 0:r.markers,...S===s.DataValidationStatus.INVALID?da:null},customRender:[...(W=r==null?void 0:r.customRender)!=null?W:[],...I!=null&&I.canvasRender?[I.canvasRender]:[]],fontRenderExtension:{...r==null?void 0:r.fontRenderExtension,isSkip:I==null?void 0:I.skipDefaultFontRender(f,R,e)},interceptorStyle:{...r==null?void 0:r.interceptorStyle,...C.interceptorStyle},get interceptorAutoHeight(){var k,L,N,Y;const F=h.mergeData.find(Z=>{const{startColumn:X,startRow:M,endColumn:B,endRow:ee}=Z;return a>=M&&o>=X&&a<=ee&&o<=B}),$={data:{...r,dataValidation:{ruleId:g,validStatus:S,rule:f,validator:I}},style:h.getsStyles().getStyleByCell(r),primaryWithCoord:h.getCellByIndex((k=F==null?void 0:F.startRow)!=null?k:a,(L=F==null?void 0:F.startColumn)!=null?L:o),unitId:i,subUnitId:l,row:a,col:o,workbook:d,worksheet:c};return(Y=(N=I==null?void 0:I.canvasRender)==null?void 0:N.calcCellAutoHeight)==null?void 0:Y.call(N,$)},coverable:((P=r==null?void 0:r.coverable)!=null?P:!0)&&!(f.type===s.DataValidationType.LIST||f.type===s.DataValidationType.LIST_MULTIPLE)})}}))}_initAutoHeight(){this._dataValidationModel.ruleChange$.subscribe(r=>{var e;if((e=r.rule)!=null&&e.ranges){const t=this._autoHeightController.getUndoRedoParamsOfAutoHeight(r.rule.ranges);s.sequenceExecute(t.redos,this._commandService)}})}};exports.SheetsDataValidationRenderController=sa([s.OnLifecycle(s.LifecycleStages.Rendered,exports.SheetsDataValidationRenderController),J(1,s.ICommandService),J(2,q.IMenuService),J(3,K.IRenderManagerService),J(4,s.IUniverInstanceService),J(5,y.Inject(A.AutoHeightController)),J(6,y.Inject(q.ComponentManager)),J(7,y.Inject(pe)),J(8,y.Inject(V.DataValidationModel)),J(9,y.Inject(V.DataValidatorRegistryService)),J(10,y.Inject(y.Injector)),J(11,y.Inject(j.SheetInterceptorService)),J(12,y.Optional(A.IEditorBridgeService))],exports.SheetsDataValidationRenderController);let Ee=class extends s.RxDisposable{constructor(n,r,e,t,a,o,i,l){super(),this._config=n,this._commandService=r,this._renderManagerService=e,this._univerInstanceService=t,this._autoHeightController=a,this._dataValidationModel=o,this._dataValidatorRegistryService=i,this._sheetInterceptorService=l,this._initSkeletonChange(),this._initViewModelIntercept(),this._initAutoHeight()}_initSkeletonChange(){const n=()=>{var i,l,d;const r=this._univerInstanceService.getCurrentUnitForType(s.UniverInstanceType.UNIVER_SHEET);if(!r)return;const e=r.getUnitId(),t=(i=r.getActiveSheet())==null?void 0:i.getSheetId();if(!t)return;const a=(d=(l=this._renderManagerService.getRenderById(e))==null?void 0:l.with(A.SheetSkeletonManagerService).getUnitSkeleton(e,t))==null?void 0:d.skeleton,o=this._renderManagerService.getRenderById(e);a==null||a.makeDirty(!0),a==null||a.calculate(),o&&o.mainComponent.makeForceDirty()};this.disposeWithMe(this._dataValidationModel.ruleChange$.subscribe(()=>n())),this.disposeWithMe(this._dataValidationModel.validStatusChange$.subscribe(()=>n()))}_initViewModelIntercept(){this.disposeWithMe(this._sheetInterceptorService.intercept(j.INTERCEPTOR_POINT.CELL_CONTENT,{priority:200,handler:(n,r,e)=>{var C,w,E,U,x;const{row:t,col:a,unitId:o,subUnitId:i,workbook:l,worksheet:d}=r,c=this._dataValidationModel.ensureManager(o,i);if(!c)return e(n);const u=(w=(C=this._renderManagerService.getRenderById(o))==null?void 0:C.with(A.SheetSkeletonManagerService).getUnitSkeleton(o,i))==null?void 0:w.skeleton;if(!u)return e(n);const h=r.workbook.getStyles(),m=(typeof(n==null?void 0:n.s)=="string"?h.get(n==null?void 0:n.s):n==null?void 0:n.s)||{},p=c.getRuleIdByLocation(t,a);if(!p)return e(n);const g=c.getRuleById(p);if(!g)return e(n);const f=r.worksheet.getCellRaw(r.row,r.col),D=this._dataValidationModel.validator(te(f),g,r),S=this._dataValidatorRegistryService.getValidatorItem(g.type),I=te(n);let R={};if((g.type===s.DataValidationType.LIST||g.type===s.DataValidationType.LIST_MULTIPLE)&&(R={interceptorStyle:{...n==null?void 0:n.interceptorStyle,tb:(E=m.tb!==s.WrapStrategy.OVERFLOW?m.tb:s.WrapStrategy.CLIP)!=null?E:s.WrapStrategy.WRAP}}),g.type===s.DataValidationType.CHECKBOX&&(R={interceptorStyle:{...n==null?void 0:n.interceptorStyle,tb:s.WrapStrategy.CLIP}}),g.type===s.DataValidationType.LIST&&(g.renderMode===s.DataValidationRenderMode.ARROW||g.renderMode===s.DataValidationRenderMode.TEXT)){const W=S.getListWithColorMap(g),P=`${(U=te(n))!=null?U:""}`,F=W[P];F&&(R={...R,interceptorStyle:{...R.interceptorStyle,bg:{rgb:F}}})}return e({...n,...R,dataValidation:{ruleId:p,validStatus:D,rule:g,validator:S},markers:{...n==null?void 0:n.markers,...D===s.DataValidationStatus.INVALID?da:null},customRender:[...(x=n==null?void 0:n.customRender)!=null?x:[],...S!=null&&S.canvasRender?[S.canvasRender]:[]],fontRenderExtension:{...n==null?void 0:n.fontRenderExtension,isSkip:S==null?void 0:S.skipDefaultFontRender(g,I,r)},interceptorStyle:{...n==null?void 0:n.interceptorStyle,...R.interceptorStyle},get interceptorAutoHeight(){var F,$,k,L;const W=u.mergeData.find(N=>{const{startColumn:Y,startRow:Z,endColumn:X,endRow:M}=N;return t>=Z&&a>=Y&&t<=M&&a<=X}),P={data:{...n,dataValidation:{ruleId:p,validStatus:D,rule:g,validator:S}},style:u.getsStyles().getStyleByCell(n),primaryWithCoord:u.getCellByIndex((F=W==null?void 0:W.startRow)!=null?F:t,($=W==null?void 0:W.startColumn)!=null?$:a),unitId:o,subUnitId:i,row:t,col:a,worksheet:d,workbook:l};return(L=(k=S==null?void 0:S.canvasRender)==null?void 0:k.calcCellAutoHeight)==null?void 0:L.call(k,P)}})}}))}_initAutoHeight(){this._dataValidationModel.ruleChange$.subscribe(n=>{var r;if((r=n.rule)!=null&&r.ranges){const e=this._autoHeightController.getUndoRedoParamsOfAutoHeight(n.rule.ranges);s.sequenceExecute(e.redos,this._commandService)}})}};Ee=sa([s.OnLifecycle(s.LifecycleStages.Rendered,Ee),J(1,s.ICommandService),J(2,K.IRenderManagerService),J(3,s.IUniverInstanceService),J(4,y.Inject(A.AutoHeightController)),J(5,y.Inject(V.DataValidationModel)),J(6,y.Inject(V.DataValidatorRegistryService)),J(7,y.Inject(j.SheetInterceptorService))],Ee);var Io=Object.defineProperty,Co=Object.getOwnPropertyDescriptor,yo=(n,r,e,t)=>{for(var a=t>1?void 0:t?Co(r,e):r,o=n.length-1,i;o>=0;o--)(i=n[o])&&(a=(t?i(r,e,a):i(a))||a);return t&&a&&Io(r,e,a),a},Mo=(n,r)=>(e,t)=>r(e,t,n);exports.SheetDataValidationService=class{constructor(r){_(this,"_currentManager");_(this,"_currentManager$",new Se.Subject);_(this,"currentManager$",this._currentManager$.asObservable());this._dataValidationModel=r}get currentManager(){return this._currentManager}_ensureManager(r,e){return this._dataValidationModel.ensureManager(r,e)}switchCurrent(r,e){var a,o;if(r===((a=this.currentManager)==null?void 0:a.unitId)&&e===((o=this._currentManager)==null?void 0:o.subUnitId))return;const t=this._ensureManager(r,e);this._currentManager={manager:t,unitId:r,subUnitId:e},this._currentManager$.next(this._currentManager)}get(r,e){return this._ensureManager(r,e)}};exports.SheetDataValidationService=yo([Mo(0,y.Inject(V.DataValidationModel))],exports.SheetDataValidationService);var wo=Object.defineProperty,Oo=Object.getOwnPropertyDescriptor,To=(n,r,e,t)=>{for(var a=t>1?void 0:t?Oo(r,e):r,o=n.length-1,i;o>=0;o--)(i=n[o])&&(a=(t?i(r,e,a):i(a))||a);return t&&a&&wo(r,e,a),a},ke=(n,r)=>(e,t)=>r(e,t,n);exports.DataValidationCustomFormulaService=class extends s.Disposable{constructor(e,t,a,o){super();_(this,"_formulaMap",new Map);_(this,"_ruleFormulaMap",new Map);_(this,"_formulaCellMap",new Map);this._registerOtherFormulaService=e,this._lexerTreeBuilder=t,this._dataValidationModel=a,this._dataValidationCacheService=o,this._initFormulaResultHandler()}_initFormulaResultHandler(){this.disposeWithMe(this._registerOtherFormulaService.formulaResult$.subscribe(e=>{for(const t in e){const a=e[t];for(const o in a){const i=a[o],{formulaCellMap:l,ruleFormulaMap:d}=this._ensureMaps(t,o),c=this._dataValidationModel.ensureManager(t,o);i.forEach(u=>{var g,f;const h=d.get((g=u.extra)==null?void 0:g.ruleId),m=l.get(u.formulaId),p=c.getRuleById((f=u.extra)==null?void 0:f.ruleId);p&&h&&!h.isTransformable&&this._dataValidationCacheService.markRangeDirty(t,o,p.ranges),m&&this._dataValidationCacheService.markCellDirty(t,o,m.row,m.column)})}}}))}_ensureMaps(e,t){let a=this._formulaMap.get(e),o=this._ruleFormulaMap.get(e),i=this._formulaCellMap.get(e);(!a||!o||!i)&&(a=new Map,o=new Map,i=new Map,this._formulaMap.set(e,a),this._ruleFormulaMap.set(e,o),this._formulaCellMap.set(e,i));let l=a.get(t),d=o.get(t),c=i.get(t);return(!l||!d||!c)&&(l=new s.ObjectMatrix,a.set(t,l),d=new Map,o.set(t,d),c=new Map,i.set(t,c)),{formulaMap:l,ruleFormulaMap:d,formulaCellMap:c}}_registerFormula(e,t,a,o){return this._registerOtherFormulaService.registerFormula(e,t,o,{ruleId:a})}deleteByRuleId(e,t,a){const{formulaMap:o,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(h=>{s.Range.foreach(h,(m,p)=>{const g=o.getValue(m,p);if(g&&g.ruleId===a){const{formulaId:f}=g;o.realDeleteValue(m,p),c.add(f),i.delete(f)}})}),this._registerOtherFormulaService.deleteFormula(e,t,Array.from(c.values())))}_addFormulaByRange(e,t,a,o,i){const{formulaMap:l,ruleFormulaMap:d,formulaCellMap:c}=this._ensureMaps(e,t);if(!o)return;const u=oe.isFormulaTransformable(this._lexerTreeBuilder,o),h=i[0].startRow,m=i[0].startColumn;let p;u?i.forEach(g=>{s.Range.foreach(g,(f,D)=>{const S=oe.transformFormula(this._lexerTreeBuilder,o,h,m,f,D),I=this._registerFormula(e,t,a,S);l.setValue(f,D,{formulaId:I,ruleId:a}),c.set(I,{row:f,column:D})})}):(p=this._registerFormula(e,t,a,o),i.forEach(g=>{s.Range.foreach(g,(f,D)=>{l.setValue(f,D,{formulaId:p,ruleId:a})})})),d.set(a,{formula:o,originCol:m,originRow:h,isTransformable:u,formulaId:p})}addRule(e,t,a){const{ranges:o,formula1:i,uid:l,type:d}=a;d!==s.DataValidationType.CUSTOM||!i||!s.isFormulaString(i)||this._addFormulaByRange(e,t,l,i,o)}updateRuleRanges(e,t,a,o,i){const{formulaMap:l,ruleFormulaMap:d,formulaCellMap:c}=this._ensureMaps(e,t),u=d.get(a);if(!u)return;const{formula:h,originCol:m,originRow:p,isTransformable:g,formulaId:f}=u,D=new Set;o.forEach(S=>{s.Range.foreach(S,(I,R)=>{const C=l.getValue(I,R);C&&C.ruleId===a&&(C.temp=!0)})}),i.forEach(S=>{s.Range.foreach(S,(I,R)=>{var w;const C=(w=l.getValue(I,R))!=null?w:{};if(C.ruleId!==a){const E=d.get(C.ruleId);if(E!=null&&E.isTransformable&&D.add(C.formulaId),g){const U=oe.transformFormula(this._lexerTreeBuilder,h,p,m,I,R),x=this._registerFormula(e,t,a,U);l.setValue(I,R,{ruleId:a,formulaId:x}),c.set(x,{row:I,column:R})}else l.setValue(I,R,{ruleId:a,formulaId:f})}else C.temp=!1})}),o.forEach(S=>{s.Range.foreach(S,(I,R)=>{const C=l.getValue(I,R);C&&C.ruleId===a&&C.temp===!0&&(l.realDeleteValue(I,R),g&&D.add(C.formulaId))})}),D.forEach(S=>{c.delete(S)}),this._registerOtherFormulaService.deleteFormula(e,t,Array.from(D.values()))}updateRuleFormula(e,t,a,o,i){const{ruleFormulaMap:l}=this._ensureMaps(e,t),d=l.get(a);(!d||d.formula!==i)&&this._addFormulaByRange(e,t,a,i,o)}getCellFormulaValue(e,t,a,o){const{formulaMap:i}=this._ensureMaps(e,t),l=i.getValue(a,o);return l?this._registerOtherFormulaService.getFormulaValue(e,t,l.formulaId):Promise.resolve(void 0)}getRuleFormulaInfo(e,t,a){const{ruleFormulaMap:o}=this._ensureMaps(e,t);return o.get(a)}};exports.DataValidationCustomFormulaService=To([ke(0,y.Inject(Dt.RegisterOtherFormulaService)),ke(1,y.Inject(oe.LexerTreeBuilder)),ke(2,y.Inject(V.DataValidationModel)),ke(3,y.Inject(De))],exports.DataValidationCustomFormulaService);class Eo extends V.BaseDataValidator{constructor(){super(...arguments);_(this,"id",s.DataValidationType.CUSTOM);_(this,"title","dataValidation.custom.title");_(this,"operators",[]);_(this,"scopes",["sheet"]);_(this,"formulaInput",Qt);_(this,"_customFormulaService",this.injector.get(exports.DataValidationCustomFormulaService))}validatorFormula(e,t,a){const o=s.isFormulaString(e.formula1);return{success:o,formula1:o?"":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:o,row:i,unitId:l,subUnitId:d}=e,c=await this._customFormulaService.getCellFormulaValue(l,d,i,o);return!!ue(c==null?void 0:c.result)}generateRuleErrorMessage(e){return this.localeService.t("dataValidation.custom.error")}}class Fo extends V.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",Ue);_(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:o}=e,i=ze(o);return!Number.isNaN(i)&&Number.isInteger(i)}transform(e,t,a){const{value:o}=e;return{...e,value:ze(o)}}_parseNumber(e){return e==null?Number.NaN:+e}async parseFormula(e,t,a){var c,u,h,m,p,g,f,D;const o=await this._formulaService.getRuleFormulaResult(t,a,e.uid),{formula1:i,formula2:l}=e;return{formula1:this._parseNumber(s.isFormulaString(i)?(m=(h=(u=(c=o==null?void 0:o[0])==null?void 0:c.result)==null?void 0:u[0])==null?void 0:h[0])==null?void 0:m.v:i),formula2:this._parseNumber(s.isFormulaString(l)?(D=(f=(g=(p=o==null?void 0:o[1])==null?void 0:p.result)==null?void 0:g[0])==null?void 0:f[0])==null?void 0:D.v:l)}}validatorFormula(e,t,a){const o=e.operator;if(!o)return{success:!1};const i=s.Tools.isDefine(e.formula1)&&this._isFormulaOrInt(e.formula1),l=s.Tools.isDefine(e.formula2)&&this._isFormulaOrInt(e.formula2),d=Pe.includes(o),c=this.localeService.t("dataValidation.validFail.number");return d?{success:i&&l,formula1:i?void 0:c,formula2:l?void 0:c}:{success:i,formula1:c}}async validatorIsEqual(e,t,a){const{formula1:o}=t,{value:i}=e;return Number.isNaN(o)?!0:i===o}async validatorIsNotEqual(e,t,a){const{formula1:o}=t;return Number.isNaN(o)?!0:e.value!==o}async validatorIsBetween(e,t,a){const{formula1:o,formula2:i}=t;if(Number.isNaN(o)||Number.isNaN(i))return!0;const l=Math.min(o,i),d=Math.max(o,i);return e.value>=l&&e.value<=d}async validatorIsNotBetween(e,t,a){const{formula1:o,formula2:i}=t;if(Number.isNaN(o)||Number.isNaN(i))return!0;const l=Math.min(o,i),d=Math.max(o,i);return e.value<l||e.value>d}async validatorIsGreaterThan(e,t,a){const{formula1:o}=t;return Number.isNaN(o)?!0:e.value>o}async validatorIsGreaterThanOrEqual(e,t,a){const{formula1:o}=t;return Number.isNaN(o)?!0:e.value>=o}async validatorIsLessThan(e,t,a){const{formula1:o}=t;return Number.isNaN(o)?!0:e.value<o}async validatorIsLessThanOrEqual(e,t,a){const{formula1:o}=t;return Number.isNaN(o)?!0:e.value<=o}}const ca=4,bo=0,lt=4,ua=4,Vt=6,Ke=6,ve=14;function No(n,r){const e=K.FontCache.getTextSize(n,r),t=e.width+ca*2,{ba:a,bd:o}=e,i=a+o;return{width:t,height:i+bo*2,ba:a}}function jt(n,r,e,t){const a=e-ve-Vt,o=t-Ke*2,i=n.map(u=>({layout:No(u,r),text:u}));let l;const d=[];i.forEach(u=>{const{layout:h}=u,{width:m,height:p}=h;!l||l.width+m+lt>a?(l={width:m,height:p,items:[{...u,left:0}]},d.push(l)):(l.items.push({...u,left:l.width+lt}),l.width=l.width+m+lt)});let c=0;return d.forEach((u,h)=>{h===d.length-1?c+=u.height:c+=u.height+ua}),{lines:d,totalHeight:c,contentWidth:a,contentHeight:o,cellAutoHeight:c+Ke*2}}const Lo=8;class Po extends K.Shape{static drawWith(r,e){const{fontFamily:t,fontString:a,fontSize:o,info:i,fill:l,color:d}=e,{layout:c,text:u}=i;r.save(),K.Rect.drawWith(r,{width:c.width,height:c.height,radius:Lo,fill:l||_e}),r.translateWithPrecision(ca,c.ba),r.font=a,r.fillStyle=d,r.fillText(u,0,0),r.restore()}}var Ao=Object.defineProperty,jo=Object.getOwnPropertyDescriptor,Uo=(n,r,e,t)=>{for(var a=t>1?void 0:t?jo(r,e):r,o=n.length-1,i;o>=0;o--)(i=n[o])&&(a=(t?i(r,e,a):i(a))||a);return t&&a&&Ao(r,e,a),a},xo=(n,r)=>(e,t)=>r(e,t,n);const Bo=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 Rt=class{constructor(n){_(this,"zIndex");_(this,"_dropdownInfoMap",new Map);this._commandService=n}_ensureMap(n){let r=this._dropdownInfoMap.get(n);return r||(r=new Map,this._dropdownInfoMap.set(n,r)),r}_generateKey(n,r){return`${n}.${r}`}_drawDownIcon(n,r,e,t,a){const o=e-ve+4;let i=4;switch(a){case s.VerticalAlign.MIDDLE:i=(t-ve)/2+4;break;case s.VerticalAlign.BOTTOM:i=t-ve+4;break}n.save(),n.translateWithPrecision(r.startX+o,r.startY+i),n.fillStyle="#565656",n.fill(Bo),n.restore()}drawWith(n,r,e,t){var B,ee;const{primaryWithCoord:a,row:o,col:i,style:l,data:d,subUnitId:c}=r,u=a.isMergedMainCell?a.mergeInfo:a,h=d.fontRenderExtension,{leftOffset:m=0,rightOffset:p=0,topOffset:g=0,downOffset:f=0}=h||{},D=d.dataValidation,S=this._ensureMap(c),I=this._generateKey(o,i);if(!D)return;const R={startX:u.startX+m,endX:u.endX-p,startY:u.startY+g,endY:u.endY-f},C=R.endX-R.startX,w=R.endY-R.startY,{cl:E}=l||{},U=(B=typeof E=="object"?E==null?void 0:E.rgb:E)!=null?B:"#000",x=K.getFontStyleString(l!=null?l:void 0),{rule:W,validator:P}=D,F=P,{vt:$,ht:k}=l||{},L=$!=null?$:s.VerticalAlign.MIDDLE,N=(ee=te(d))!=null?ee:"",Y=F.parseCellValue(N),Z=F.getListWithColorMap(W),X=jt(Y,x,C,w);this._drawDownIcon(n,R,C,w,L),n.save(),n.translateWithPrecision(R.startX,R.startY),n.beginPath(),n.rect(0,0,C-ve,w),n.clip(),n.translateWithPrecision(Vt,Ke);let M=0;switch(L){case s.VerticalAlign.MIDDLE:M=(X.contentHeight-X.totalHeight)/2;break;case s.VerticalAlign.BOTTOM:M=X.contentHeight-X.totalHeight;break}n.translateWithPrecision(0,M),X.lines.forEach((Q,ie)=>{n.save();const{width:b,height:G,items:z}=Q;let ae=0;switch(k){case s.HorizontalAlign.RIGHT:ae=X.contentWidth-b;break;case s.HorizontalAlign.CENTER:ae=(X.contentWidth-b)/2;break}n.translate(ae,ie*(G+ua)),z.forEach(de=>{n.save(),n.translateWithPrecision(de.left,0),Po.drawWith(n,{...x,info:de,color:U,fill:Z[de.text]}),n.restore()}),n.restore()}),n.restore(),S.set(I,{left:R.startX,top:R.startY,width:X.contentWidth+Vt+ve,height:X.contentHeight+Ke*2})}calcCellAutoHeight(n){var C;const{primaryWithCoord:r,style:e,data:t}=n,a=t.fontRenderExtension,{leftOffset:o=0,rightOffset:i=0,topOffset:l=0,downOffset:d=0}=a||{},c=r.isMergedMainCell?r.mergeInfo:r,u={startX:c.startX+o,endX:c.endX-i,startY:c.startY+l,endY:c.endY-d},h=t.dataValidation;if(!h)return;const m=u.endX-u.startX,p=u.endY-u.startY,g=(C=te(t))!=null?C:"",{validator:f}=h,S=f.parseCellValue(g),I=K.getFontStyleString(e!=null?e:void 0);return jt(S,I,m,p).cellAutoHeight}isHit(n,r){const{primaryWithCoord:e}=r,t=e.isMergedMainCell?e.mergeInfo:e,{endX:a}=t,{x:o}=n;return o>=a-ve&&o<=a}onPointerDown(n,r){if(r.button===2)return;const{unitId:e,subUnitId:t,row:a,col:o}=n,i={unitId:e,subUnitId:t,row:a,column:o};this._commandService.executeCommand(Ae.id,i)}};Rt=Uo([xo(0,s.ICommandService)],Rt);class $o extends ta{constructor(){super(...arguments);_(this,"id",s.DataValidationType.LIST_MULTIPLE);_(this,"title","dataValidation.listMultiple.title");_(this,"canvasRender",this.injector.createInstance(Rt))}skipDefaultFontRender(){return!0}}var Wo=Object.defineProperty,Ho=Object.getOwnPropertyDescriptor,ko=(n,r,e,t)=>{for(var a=t>1?void 0:t?Ho(r,e):r,o=n.length-1,i;o>=0;o--)(i=n[o])&&(a=(t?i(r,e,a):i(a))||a);return t&&a&&Wo(r,e,a),a},he=(n,r)=>(e,t)=>r(e,t,n);exports.DataValidationController=class extends s.RxDisposable{constructor(r,e,t,a,o,i,l,d){super(),this._univerInstanceService=r,this._sheetDataValidationService=e,this._dataValidatorRegistryService=t,this._injector=a,this._componentManger=o,this._selectionManagerService=i,this._sheetInterceptorService=l,this._dataValidationModel=d,this._init()}_init(){this._registerValidators(),this._initInstanceChange(),this._componentManger.register(ia,Yt),this._initCommandInterceptor()}_registerValidators(){[br,Fo,Pr,Rr,fr,ta,$o,Eo].forEach(r=>{const e=this._injector.createInstance(r);this.disposeWithMe(this._dataValidatorRegistryService.register(e)),this.disposeWithMe({dispose:()=>{this._injector.delete(r)}})})}_initInstanceChange(){const r=new s.DisposableCollection;this._univerInstanceService.getCurrentTypeOfUnit$(s.UniverInstanceType.UNIVER_SHEET).subscribe(e=>{if(r.dispose(),!e)return;const t=e.getActiveSheet();t&&(this._sheetDataValidationService.switchCurrent(e.getUnitId(),t.getSheetId()),r.add(s.toDisposable(e.activeSheet$.subscribe(a=>{if(a){const o=e.getUnitId(),i=a.getSheetId();this._sheetDataValidationService.switchCurrent(o,i)}}))))}),this.disposeWithMe(r)}_initCommandInterceptor(){this._sheetInterceptorService.interceptCommand({getMutations:r=>{if(r.id===j.ClearSelectionAllCommand.id){const e=this._univerInstanceService.getCurrentUnitForType(s.UniverInstanceType.UNIVER_SHEET),t=e.getUnitId(),a=e.getActiveSheet();if(!a)throw new Error("No active sheet found");const o=a.getSheetId(),i=this._selectionManagerService.getSelectionRanges(),l=this._dataValidationModel.ensureManager(t,o),d=l.getRuleObjectMatrix().clone();i&&d.removeRange(i);const c=d.diff(l.getDataValidations()),{redoMutations:u,undoMutations:h}=Oe(t,o,c,this._injector);return{undos:h,redos:u}}return{undos:[],redos:[]}}})}};exports.DataValidationController=ko([s.OnLifecycle(s.LifecycleStages.Rendered,exports.DataValidationController),he(0,s.IUniverInstanceService),he(1,y.Inject(exports.SheetDataValidationService)),he(2,y.Inject(V.DataValidatorRegistryService)),he(3,y.Inject(y.Injector)),he(4,y.Inject(q.ComponentManager)),he(5,y.Inject(j.SelectionManagerService)),he(6,y.Inject(j.SheetInterceptorService)),he(7,y.Inject(V.DataValidationModel))],exports.DataValidationController);var Yo=Object.defineProperty,qo=Object.getOwnPropertyDescriptor,Xo=(n,r,e,t)=>{for(var a=t>1?void 0:t?qo(r,e):r,o=n.length-1,i;o>=0;o--)(i=n[o])&&(a=(t?i(r,e,a):i(a))||a);return t&&a&&Yo(r,e,a),a},Ye=(n,r)=>(e,t)=>r(e,t,n);const dt="SHEET_DATA_VALIDATION_ALERT";exports.DataValidationAlertController=class extends s.Disposable{constructor(r,e,t,a){super(),this._hoverManagerService=r,this._cellAlertManagerService=e,this._univerInstanceService=t,this._localeService=a,this._init()}_init(){this._initCellAlertPopup()}_initCellAlertPopup(){this.disposeWithMe(this._hoverManagerService.currentCell$.pipe(Se.debounceTime(100)).subscribe(r=>{var e,t;if(r){const o=this._univerInstanceService.getCurrentUnitForType(s.UniverInstanceType.UNIVER_SHEET).getActiveSheet();if(!o)return;const i=o.getCell(r.location.row,r.location.col);if(((e=i==null?void 0:i.dataValidation)==null?void 0:e.validStatus)===s.DataValidationStatus.INVALID){const l=this._cellAlertManagerService.currentAlert.get(dt),d=(t=l==null?void 0:l.alert)==null?void 0:t.location;if(d&&d.row===r.location.row&&d.col===r.location.col&&d.subUnitId===r.location.subUnitId&&d.unitId===r.location.unitId)return;const c=i.dataValidation.validator,u=i.dataValidation.rule;if(!c)return;this._cellAlertManagerService.showAlert({type:A.CellAlertType.ERROR,title:this._localeService.t("dataValidation.error.title"),message:c==null?void 0:c.getRuleFinalError(u),location:r.location,width:200,height:74,key:dt});return}}this._cellAlertManagerService.removeAlert(dt)}))}};exports.DataValidationAlertController=Xo([s.OnLifecycle(s.LifecycleStages.Rendered,exports.DataValidationAlertController),Ye(0,y.Inject(A.HoverManagerService)),Ye(1,y.Inject(A.CellAlertManagerService)),Ye(2,s.IUniverInstanceService),Ye(3,y.Inject(s.LocaleService))],exports.DataValidationAlertController);var Go=Object.defineProperty,zo=Object.getOwnPropertyDescriptor,Ko=(n,r,e,t)=>{for(var a=t>1?void 0:t?zo(r,e):r,o=n.length-1,i;o>=0;o--)(i=n[o])&&(a=(t?i(r,e,a):i(a))||a);return t&&a&&Go(r,e,a),a},Me=(n,r)=>(e,t)=>r(e,t,n);exports.DataValidationRefRangeController=class extends s.Disposable{constructor(e,t,a,o,i,l){super();_(this,"_disposableMap",new Map);_(this,"registerRule",(e,t,a)=>{this.register(e,t,a),this.registerFormula(e,t,a)});this._dataValidationModel=e,this._injector=t,this._refRangeService=a,this._dataValidationCustomFormulaService=o,this._dataValidationFormulaService=i,this._formulaRefRangeService=l,this._initRefRange()}_getIdWithUnitId(e,t,a){return`${e}_${t}_${a}`}registerFormula(e,t,a){var c;const o=a.uid,i=this._getIdWithUnitId(e,t,o),l=(c=this._disposableMap.get(i))!=null?c:new Set,d=(u,h)=>{const m=this._dataValidationModel.getRuleById(e,t,o);if(!m)return{redos:[],undos:[]};const p=m[u];if(!p||p===h)return{redos:[],undos:[]};const g={unitId:e,subUnitId:t,ruleId:a.uid,payload:{type:V.UpdateRuleType.SETTING,payload:{type:m.type,formula1:m.formula1,formula2:m.formula2,[u]:h}}},f={unitId:e,subUnitId:t,ruleId:a.uid,payload:{type:V.UpdateRuleType.SETTING,payload:{type:m.type,formula1:m.formula1,formula2:m.formula2}}},D=[{id:V.UpdateDataValidationMutation.id,params:g}],S=[{id:V.UpdateDataValidationMutation.id,params:f}];return{redos:D,undos:S}};if(a.type===s.DataValidationType.CUSTOM){const u=this._dataValidationCustomFormulaService.getRuleFormulaInfo(e,t,o);if(u){const h=this._formulaRefRangeService.registerFormula(u.formula,m=>d("formula1",m));l.add(()=>h.dispose())}}if(a.type!==s.DataValidationType.CUSTOM){const u=this._dataValidationFormulaService.getRuleFormulaInfo(e,t,o);if(u){const[h,m]=u;if(h){const p=this._formulaRefRangeService.registerFormula(h.text,g=>d("formula1",g));l.add(()=>p.dispose())}if(m){const p=this._formulaRefRangeService.registerFormula(m.text,g=>d("formula1",g));l.add(()=>p.dispose())}}}}register(e,t,a){var c;const o=u=>{const h=[...a.ranges],p=h.map(f=>j.handleCommonDefaultRangeChangeWithEffectRefCommands(f,u)).filter(f=>!!f).flat();if(s.isRangesEqual(p,h))return{redos:[],undos:[]};if(p.length){const f={unitId:e,subUnitId:t,ruleId:a.uid,payload:{type:V.UpdateRuleType.RANGE,payload:p}},D=[{id:V.UpdateDataValidationMutation.id,params:f}],S=[{id:V.UpdateDataValidationMutation.id,params:{unitId:e,subUnitId:t,ruleId:a.uid,payload:{type:V.UpdateRuleType.RANGE,payload:h}}}];return{redos:D,undos:S}}else{const f={unitId:e,subUnitId:t,ruleId:a.uid},D=[{id:V.RemoveDataValidationMutation.id,params:f}],S=V.removeDataValidationUndoFactory(this._injector,f);return{redos:D,undos:S}}},i=[];a.ranges.forEach(u=>{const h=this._refRangeService.registerRefRange(u,o,e,t);i.push(()=>h.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(this._dataValidationModel.ruleChange$.subscribe(e=>{const{unitId:t,subUnitId:a,rule:o}=e;switch(e.type){case"add":{const i=e.rule;this.registerRule(e.unitId,e.subUnitId,i);break}case"remove":{const i=this._disposableMap.get(this._getIdWithUnitId(t,a,o.uid));i&&i.forEach(l=>l());break}case"update":{const i=e.rule,l=this._disposableMap.get(this._getIdWithUnitId(t,a,i.uid));l&&l.forEach(d=>d()),this.registerRule(e.unitId,e.subUnitId,i);break}}})),this.disposeWithMe(s.toDisposable(()=>{this._disposableMap.forEach(e=>{e.forEach(t=>t())}),this._disposableMap.clear()}))}};exports.DataValidationRefRangeController=Ko([s.OnLifecycle(s.LifecycleStages.Ready,exports.DataValidationRefRangeController),Me(0,y.Inject(V.DataValidationModel)),Me(1,y.Inject(y.Injector)),Me(2,y.Inject(j.RefRangeService)),Me(3,y.Inject(exports.DataValidationCustomFormulaService)),Me(4,y.Inject(exports.DataValidationFormulaService)),Me(5,y.Inject(Dt.FormulaRefRangeService))],exports.DataValidationRefRangeController);var Qo=Object.defineProperty,Zo=Object.getOwnPropertyDescriptor,Jo=(n,r,e,t)=>{for(var a=t>1?void 0:t?Zo(r,e):r,o=n.length-1,i;o>=0;o--)(i=n[o])&&(a=(t?i(r,e,a):i(a))||a);return t&&a&&Qo(r,e,a),a},ct=(n,r)=>(e,t)=>r(e,t,n);exports.DataValidationAutoFillController=class extends s.Disposable{constructor(r,e,t){super(),this._autoFillService=r,this._dataValidationModel=e,this._injector=t,this._initAutoFill()}_initAutoFill(){const r=()=>({redos:[],undos:[]}),e=o=>{const{source:i,target:l,unitId:d,subUnitId:c}=o,u=this._dataValidationModel.ensureManager(d,c),h=u.getRuleObjectMatrix().clone(),m=A.virtualizeDiscreteRanges([i,l]),[p,g]=m.ranges,{mapFunc:f}=m,D={row:p.startRow,col:p.startColumn};A.getAutoFillRepeatRange(p,g).forEach(w=>{const E=w.repeatStartCell,U=w.relativeRange,x={startRow:D.row,startColumn:D.col,endColumn:D.col,endRow:D.row},W={startRow:E.row,startColumn:E.col,endColumn:E.col,endRow:E.row};s.Range.foreach(U,(P,F)=>{const $=s.Rectangle.getPositionRange({startRow:P,startColumn:F,endColumn:F,endRow:P},x),{row:k,col:L}=f($.startRow,$.startColumn),N=u.getRuleIdByLocation(k,L);if(N){const Y=s.Rectangle.getPositionRange({startRow:P,startColumn:F,endColumn:F,endRow:P},W),{row:Z,col:X}=f(Y.startRow,Y.startColumn);h.setValue(Z,X,N)}})});const I=h.diff(u.getDataValidations()),{redoMutations:R,undoMutations:C}=Oe(d,c,I,this._injector);return{undos:C,redos:R}},t=[s.DataValidationType.CHECKBOX],a={id:je,onBeforeFillData:o=>{const{source:i,unitId:l,subUnitId:d}=o,c=this._dataValidationModel.ensureManager(l,d);for(const u of i.rows)for(const h of i.cols){const m=c.getRuleByLocation(u,h);if(m&&t.indexOf(m.type)>-1){this._autoFillService.setDisableApplyType(A.APPLY_TYPE.SERIES,!0);return}}},onFillData:(o,i,l)=>l===A.APPLY_TYPE.COPY||l===A.APPLY_TYPE.ONLY_FORMAT||l===A.APPLY_TYPE.SERIES?e(o):r(),onAfterFillData:()=>{}};this.disposeWithMe(this._autoFillService.addHook(a))}};exports.DataValidationAutoFillController=Jo([s.OnLifecycle(s.LifecycleStages.Ready,exports.DataValidationAutoFillController),ct(0,A.IAutoFillService),ct(1,y.Inject(V.DataValidationModel)),ct(2,y.Inject(y.Injector))],exports.DataValidationAutoFillController);var en=Object.defineProperty,tn=Object.getOwnPropertyDescriptor,an=(n,r,e,t)=>{for(var a=t>1?void 0:t?tn(r,e):r,o=n.length-1,i;o>=0;o--)(i=n[o])&&(a=(t?i(r,e,a):i(a))||a);return t&&a&&en(r,e,a),a},ut=(n,r)=>(e,t)=>r(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:je,onBeforeCopy:(e,t,a)=>this._collect(e,t,a),onPasteCells:(e,t,a,o)=>{const{copyType:i=A.COPY_TYPE.COPY,pasteType:l}=o,{range:d}=e||{},{range:c,unitId:u,subUnitId:h}=t;return this._generateMutations(c,{copyType:i,pasteType:l,copyRange:d,unitId:u,subUnitId:h})}})}_collect(e,t,a){const o=new s.ObjectMatrix;this._copyInfo={unitId:e,subUnitId:t,matrix:o};const i=this._dataValidationModel.ensureManager(e,t),l={get:this._injector.get.bind(this._injector)},d=A.rangeToDiscreteRange(a,l,e,t);if(!d)return;const{rows:c,cols:u}=d;c.forEach((h,m)=>{u.forEach((p,g)=>{const f=i.getRuleIdByLocation(h,p);o.setValue(m,g,f!=null?f:"")})})}_generateMutations(e,t){if(!this._copyInfo)return{redos:[],undos:[]};if(t.copyType===A.COPY_TYPE.CUT)return this._copyInfo=null,{redos:[],undos:[]};if(!this._copyInfo||!this._copyInfo.matrix.getSizeOf()||!t.copyRange)return{redos:[],undos:[]};if([A.PREDEFINED_HOOK_NAME.SPECIAL_PASTE_COL_WIDTH,A.PREDEFINED_HOOK_NAME.SPECIAL_PASTE_VALUE,A.PREDEFINED_HOOK_NAME.SPECIAL_PASTE_FORMAT,A.PREDEFINED_HOOK_NAME.SPECIAL_PASTE_FORMULA].includes(t.pasteType))return{redos:[],undos:[]};const{unitId:a,subUnitId:o}=this._copyInfo;if(t.unitId!==a||o!==t.subUnitId){const i=this._dataValidationModel.ensureManager(a,o),l=this._dataValidationModel.ensureManager(t.unitId,t.subUnitId),d=l.getRuleObjectMatrix().clone(),{ranges:[c,u],mapFunc:h}=A.virtualizeDiscreteRanges([t.copyRange,e]),m=A.getRepeatRange(c,u,!0),p=new Map;m.forEach(({startRange:D})=>{var S;(S=this._copyInfo)==null||S.matrix.forValue((I,R,C)=>{const w=s.Rectangle.getPositionRange({startRow:I,endRow:I,startColumn:R,endColumn:R},D),E=`${o}-${C}`,U=i.getRuleById(C);!l.getRuleById(E)&&U&&p.set(E,{...U,uid:E});const{row:x,col:W}=h(w.startRow,w.startColumn);d.setValue(x,W,E)})});const{redoMutations:g,undoMutations:f}=Oe(t.unitId,t.subUnitId,d.diffWithAddition(l.getDataValidations(),p.values()),this._injector);return{redos:g,undos:f}}else{const i=this._dataValidationModel.ensureManager(a,o),l=i.getRuleObjectMatrix().clone(),{ranges:[d,c],mapFunc:u}=A.virtualizeDiscreteRanges([t.copyRange,e]);A.getRepeatRange(d,c,!0).forEach(({startRange:g})=>{var f;(f=this._copyInfo)==null||f.matrix.forValue((D,S,I)=>{const R=s.Rectangle.getPositionRange({startRow:D,endRow:D,startColumn:S,endColumn:S},g),{row:C,col:w}=u(R.startRow,R.startColumn);l.setValue(C,w,I)})});const{redoMutations:m,undoMutations:p}=Oe(a,o,l.diff(i.getDataValidations()),this._injector);return{redos:m,undos:p}}}};exports.DataValidationCopyPasteController=an([s.OnLifecycle(s.LifecycleStages.Ready,exports.DataValidationCopyPasteController),ut(0,A.ISheetClipboardService),ut(1,y.Inject(V.DataValidationModel)),ut(2,y.Inject(y.Injector))],exports.DataValidationCopyPasteController);class wt{constructor(r,e){_(this,"value");this._worksheet=e,this.value=r}addRule(r){const e=r.uid;r.ranges.forEach(t=>{s.Range.foreach(s.Range.transformRange(t,this._worksheet),(a,o)=>{this.value.setValue(a,o,e)})})}removeRange(r){r.forEach(e=>{s.Range.foreach(s.Range.transformRange(e,this._worksheet),(t,a)=>{this.value.realDeleteValue(t,a)})})}removeRule(r){r.ranges.forEach(e=>{s.Range.foreach(s.Range.transformRange(e,this._worksheet),(t,a)=>{this.value.setValue(t,a,"")})})}updateRange(r,e,t){const a=`${r}$`,o=e.map(l=>s.Range.transformRange(l,this._worksheet)),i=t.map(l=>s.Range.transformRange(l,this._worksheet));o.forEach(l=>{s.Range.foreach(l,(d,c)=>{this.value.getValue(d,c)===r&&this.value.setValue(d,c,a)})}),i.forEach(l=>{s.Range.foreach(l,(d,c)=>{this.value.setValue(d,c,r)})}),o.forEach(l=>{s.Range.foreach(l,(d,c)=>{this.value.getValue(d,c)===a&&this.value.realDeleteValue(d,c)})})}diff(r){const e=[];let t=0;return r.forEach((a,o)=>{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:o-t}),t++)}),e}diffWithAddition(r,e){const t=[];let a=0;return r.forEach((o,i)=>{const l=s.queryObjectMatrix(this.value,c=>c===o.uid),d=o.ranges;(l.length!==d.length||l.some((c,u)=>!s.Rectangle.equals(c,d[u])))&&t.push({type:"update",ruleId:o.uid,oldRanges:d,newRanges:l}),l.length===0&&(t.push({type:"delete",rule:o,index:i-a}),a++)}),Array.from(e).forEach(o=>{const i=s.queryObjectMatrix(this.value,l=>l===o.uid);t.push({type:"add",rule:{...o,ranges:i}})}),t}clone(){return new wt(new s.ObjectMatrix(this.value.clone()),this._worksheet)}getValue(r,e){return this.value.getValue(r,e)}setValue(r,e,t){return this.value.setValue(r,e,t)}}class rn extends V.DataValidationManager{constructor(e,t,a,o){super(e,t,a);_(this,"_ruleMatrix");_(this,"_dataValidatorRegistryService");_(this,"_dataValidationCacheService");_(this,"_dataValidationFormulaService");_(this,"_dataValidationCustomFormulaService");_(this,"_cache");_(this,"_dataValidationRefRangeController");this._injector=o,this._dataValidatorRegistryService=this._injector.get(V.DataValidatorRegistryService),this._dataValidationCacheService=this._injector.get(De),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 l=this._injector.get(s.IUniverInstanceService).getUnit(e,s.UniverInstanceType.UNIVER_SHEET).getSheetBySheetId(t),d=new s.ObjectMatrix;a==null||a.forEach(c=>{const u=c.uid;c.ranges.forEach(h=>{s.Range.foreach(h,(m,p)=>{d.setValue(m,p,u)})})}),a==null||a.forEach(c=>{this._dataValidationRefRangeController.register(e,t,c)}),this._ruleMatrix=new wt(d,l)}_addRuleSideEffect(e){var o;const{unitId:t,subUnitId:a}=this;(e.type===s.DataValidationType.LIST||e.type===s.DataValidationType.LIST_MULTIPLE)&&oe.isReferenceString((o=e.formula1)!=null?o:"")&&(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(o=>{this._addRuleSideEffect(o)}),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===V.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===V.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)}getValidator(e){return this._dataValidatorRegistryService.getValidatorItem(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,o){const{col:i,row:l,unitId:d,subUnitId:c}=a,u=t.uid,h=this.getValidator(t.type);if(h){const m=this._cache.getValue(l,i);return!m||m.value!==e?(this._cache.setValue(l,i,{value:e,status:s.DataValidationStatus.VALIDATING,ruleId:u}),h.validator({value:e,unitId:d,subUnitId:c,row:l,column:i},t).then(p=>{const g=p?s.DataValidationStatus.VALID:s.DataValidationStatus.INVALID;this._cache.setValue(l,i,{value:e,status:g,ruleId:u}),o(g,!0)}),s.DataValidationStatus.VALIDATING):(o(m.status,!1),m.status)}else return o(s.DataValidationStatus.VALID,!1),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 on=Object.defineProperty,nn=Object.getOwnPropertyDescriptor,sn=(n,r,e,t)=>{for(var a=t>1?void 0:t?nn(r,e):r,o=n.length-1,i;o>=0;o--)(i=n[o])&&(a=(t?i(r,e,a):i(a))||a);return t&&a&&on(r,e,a),a},qe=(n,r)=>(e,t)=>r(e,t,n);let Fe=class extends s.Disposable{constructor(n,r,e,t){super(),this._resourceManagerService=n,this._univerInstanceService=r,this._dataValidationModel=e,this._injector=t,this._initDataValidationDataSource()}_createSheetDataValidationManager(n,r){return new rn(n,r,[],this._injector)}_initDataValidationDataSource(){this._dataValidationModel.setManagerCreator(this._createSheetDataValidationManager.bind(this))}};Fe=sn([s.OnLifecycle(s.LifecycleStages.Starting,Fe),qe(0,s.IResourceManagerService),qe(1,s.IUniverInstanceService),qe(2,y.Inject(V.DataValidationModel)),qe(3,y.Inject(y.Injector))],Fe);var ln=Object.defineProperty,dn=Object.getOwnPropertyDescriptor,cn=(n,r,e,t)=>{for(var a=t>1?void 0:t?dn(r,e):r,o=n.length-1,i;o>=0;o--)(i=n[o])&&(a=(t?i(r,e,a):i(a))||a);return t&&a&&ln(r,e,a),a},ht=(n,r)=>(e,t)=>r(e,t,n);let be=class extends s.Disposable{constructor(n,r,e){super(),this._localeService=n,this._commandService=r,this._sheetPermissionInterceptorBaseController=e,this._commandExecutedListener()}_commandExecutedListener(){this.disposeWithMe(this._commandService.beforeCommandExecuted(n=>{n.id===V.AddDataValidationCommand.id&&(this._sheetPermissionInterceptorBaseController.permissionCheckWithRanges({workbookTypes:[j.WorkbookEditablePermission],rangeTypes:[j.RangeProtectionPermissionEditPoint],worksheetTypes:[j.WorksheetEditPermission,j.WorksheetSetCellStylePermission]})||this._sheetPermissionInterceptorBaseController.haveNotPermissionHandle(this._localeService.t("permission.dialog.setStyleErr"))),n.id===xe.id&&(this._sheetPermissionInterceptorBaseController.permissionCheckWithRanges({workbookTypes:[j.WorkbookEditablePermission],rangeTypes:[j.RangeProtectionPermissionEditPoint],worksheetTypes:[j.WorksheetEditPermission,j.WorksheetSetCellStylePermission]},n.params.ranges)||this._sheetPermissionInterceptorBaseController.haveNotPermissionHandle(this._localeService.t("permission.dialog.setStyleErr")))}))}};be=cn([s.OnLifecycle(s.LifecycleStages.Ready,be),ht(0,y.Inject(s.LocaleService)),ht(1,s.ICommandService),ht(2,y.Inject(A.SheetPermissionInterceptorBaseController))],be);var un=Object.defineProperty,hn=Object.getOwnPropertyDescriptor,mn=(n,r,e,t)=>{for(var a=t>1?void 0:t?hn(r,e):r,o=n.length-1,i;o>=0;o--)(i=n[o])&&(a=(t?i(r,e,a):i(a))||a);return t&&a&&un(r,e,a),a},mt=(n,r)=>(e,t)=>r(e,t,n);exports.SheetsDataValidationValidatorService=class{constructor(r,e,t){this._univerInstanceService=r,this._dataValidationModel=e,this._dataValidationCacheService=t}async validatorCell(r,e,t,a){const o=this._univerInstanceService.getUnit(r,s.UniverInstanceType.UNIVER_SHEET);if(!o)throw new Error(`cannot find current workbook, unitId: ${r}`);const i=o.getSheetBySheetId(e);if(!i)throw new Error(`cannot find current worksheet, sheetId: ${e}`);const l=i.getCellRaw(t,a),d=this._dataValidationModel.ensureManager(r,e),c=d.getRuleByLocation(t,a);return c?new Promise(u=>{d.validator(te(l),c,{unitId:r,subUnitId:e,row:t,col:a},u)}):s.DataValidationStatus.VALID}async validatorWorksheet(r,e){const a=this._dataValidationModel.ensureManager(r,e).getDataValidations();return await Promise.all(a.map(o=>Promise.all(o.ranges.map(i=>{const l=[];return s.Range.foreach(i,(d,c)=>{l.push(this.validatorCell(r,e,d,c))}),l})))),this._dataValidationCacheService.ensureCache(r,e)}async validatorWorkbook(r){const e=this._dataValidationModel.getSubUnitIds(r),t=await Promise.all(e.map(o=>this.validatorWorksheet(r,o))),a={};return t.forEach((o,i)=>{a[e[i]]=o}),a}};exports.SheetsDataValidationValidatorService=mn([mt(0,s.IUniverInstanceService),mt(1,y.Inject(V.DataValidationModel)),mt(2,y.Inject(De))],exports.SheetsDataValidationValidatorService);var ha=Object.defineProperty,pn=Object.getOwnPropertyDescriptor,fn=(n,r,e)=>r in n?ha(n,r,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[r]=e,gn=(n,r,e,t)=>{for(var a=t>1?void 0:t?pn(r,e):r,o=n.length-1,i;o>=0;o--)(i=n[o])&&(a=(t?i(r,e,a):i(a))||a);return t&&a&&ha(r,e,a),a},pt=(n,r)=>(e,t)=>r(e,t,n),ma=(n,r,e)=>fn(n,typeof r!="symbol"?r+"":r,e);exports.UniverSheetsDataValidationPlugin=class extends s.Plugin{constructor(r={},e,t,a){super(),this._config=r,this._injector=e,this._commandService=t,this._localeService=a,this._config=s.Tools.deepMerge({},la,this._config)}onStarting(r){[[le],[exports.SheetDataValidationService],[De],[exports.DataValidationFormulaService],[exports.DataValidationCustomFormulaService],[pe],[exports.SheetsDataValidationValidatorService],[Fe],[exports.DataValidationController],[exports.SheetsDataValidationRenderController,{useFactory:()=>this._injector.createInstance(exports.SheetsDataValidationRenderController,this._config)}],[exports.DataValidationAlertController],[exports.DataValidationRefRangeController],[be],[exports.DataValidationAutoFillController],[exports.DataValidationCopyPasteController],[exports.DataValidationFormulaController],[exports.DataValidationRejectInputController]].forEach(e=>{r.add(e)}),[Be,Je,xe,_t,ra,Ae,Ct,Ze,Re,It].forEach(e=>{this._commandService.registerCommand(e)})}};ma(exports.UniverSheetsDataValidationPlugin,"pluginName",je);ma(exports.UniverSheetsDataValidationPlugin,"type",s.UniverInstanceType.UNIVER_SHEET);exports.UniverSheetsDataValidationPlugin=gn([s.DependentOn(V.UniverDataValidationPlugin,j.UniverSheetsPlugin,A.UniverSheetsUIPlugin),pt(1,y.Inject(y.Injector)),pt(2,s.ICommandService),pt(3,y.Inject(s.LocaleService))],exports.UniverSheetsDataValidationPlugin);var pa=Object.defineProperty,vn=Object.getOwnPropertyDescriptor,Sn=(n,r,e)=>r in n?pa(n,r,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[r]=e,_n=(n,r,e,t)=>{for(var a=t>1?void 0:t?vn(r,e):r,o=n.length-1,i;o>=0;o--)(i=n[o])&&(a=(t?i(r,e,a):i(a))||a);return t&&a&&pa(r,e,a),a},ft=(n,r)=>(e,t)=>r(e,t,n),fa=(n,r,e)=>Sn(n,typeof r!="symbol"?r+"":r,e);exports.UniverSheetsDataValidationMobilePlugin=class extends s.Plugin{constructor(r={},e,t,a){super(),this._config=r,this._injector=e,this._commandService=t,this._localeService=a,this._config=s.Tools.deepMerge({},la,this._config)}onStarting(r){[[le],[exports.SheetDataValidationService],[De],[exports.DataValidationFormulaService],[exports.DataValidationCustomFormulaService],[pe],[exports.SheetsDataValidationValidatorService],[Fe],[exports.DataValidationController],[Ee,{useFactory:()=>this._injector.createInstance(Ee,this._config)}],[exports.DataValidationAlertController],[exports.DataValidationRefRangeController],[be],[exports.DataValidationCopyPasteController],[exports.DataValidationFormulaController]].forEach(e=>{r.add(e)}),[Be,Je,xe,Ae,Ct,Ze,Re,It].forEach(e=>{this._commandService.registerCommand(e)})}};fa(exports.UniverSheetsDataValidationMobilePlugin,"pluginName",je);fa(exports.UniverSheetsDataValidationMobilePlugin,"type",s.UniverInstanceType.UNIVER_SHEET);exports.UniverSheetsDataValidationMobilePlugin=_n([s.DependentOn(V.UniverDataValidationPlugin,j.UniverSheetsPlugin,A.UniverSheetsUIPlugin),ft(1,y.Inject(y.Injector)),ft(2,s.ICommandService),ft(3,y.Inject(s.LocaleService))],exports.UniverSheetsDataValidationMobilePlugin);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=Je;exports.AddSheetDataValidationCommand=Be;exports.CloseValidationPanelOperation=Ze;exports.DATA_VALIDATION_PLUGIN_NAME=je;exports.DataValidationCacheService=De;exports.HideDataValidationDropdown=Ct;exports.OpenValidationPanelOperation=Re;exports.ShowDataValidationDropdown=Ae;exports.ToggleValidationPanelOperation=It;exports.UpdateSheetDataValidationRangeCommand=xe;
|