@univerjs/sheets-data-validation 0.1.8 → 0.1.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/cjs/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var Jt=Object.defineProperty;var ea=(i,o,e)=>o in i?Jt(i,o,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[o]=e;var _=(i,o,e)=>(ea(i,typeof o!="symbol"?o+"":o,e),e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("@univerjs/core"),O=require("@wendellhu/redi"),R=require("@univerjs/data-validation"),B=require("@univerjs/ui"),P=require("@univerjs/sheets-ui"),z=require("@univerjs/engine-render"),re=require("@univerjs/sheets"),C=require("react"),A=require("@wendellhu/redi/react-bindings"),E=require("@univerjs/design"),se=require("@univerjs/engine-formula"),_e=require("rxjs"),Se=require("dayjs"),ta=require("clsx"),ke=require("@univerjs/sheets-formula"),Qe=require("rxjs/operators");var Ct={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 ta=D,aa=Symbol.for("react.element"),ra=Symbol.for("react.fragment"),oa=Object.prototype.hasOwnProperty,na=ta.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,ia={key:!0,ref:!0,__self:!0,__source:!0};function Ct(i,o,e){var t,a={},r=null,n=null;e!==void 0&&(r=""+e),o.key!==void 0&&(r=""+o.key),o.ref!==void 0&&(n=o.ref);for(t in o)oa.call(o,t)&&!ia.hasOwnProperty(t)&&(a[t]=o[t]);if(i&&i.defaultProps)for(t in o=i.defaultProps,o)a[t]===void 0&&(a[t]=o[t]);return{$$typeof:aa,type:i,key:r,ref:n,props:a,_owner:na.current}}Ye.Fragment=ra;Ye.jsx=Ct;Ye.jsxs=Ct;Ot.exports=Ye;var f=Ot.exports;function sa(){const i=A.useDependency(Se),o=B.useObservable(i.activeDropdown$,i.activeDropdown),e=A.useDependency(B.ComponentManager);if(!o)return null;const{location:t,componentKey:a}=o,r=e.get(a),n=`${t.unitId}-${t.subUnitId}-${t.row}-${t.col}`;if(!r)return null;const l=()=>{i.hideDropdown()};return f.jsx(r,{location:t,hideFn:l},n)}const yt="sheet.ui.dropdown";var la=Object.defineProperty,da=Object.getOwnPropertyDescriptor,ca=(i,o,e,t)=>{for(var a=t>1?void 0:t?da(o,e):o,r=i.length-1,n;r>=0;r--)(n=i[r])&&(a=(t?n(o,e,a):n(a))||a);return t&&a&&la(o,e,a),a},he=(i,o)=>(e,t)=>o(e,t,i);let Se=class extends s.Disposable{constructor(o,e,t,a,r,n,l){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._sheetSkeletonManagerService=t,this._dataValidatorRegistryService=a,this._zenZoneService=r,this._renderManagerService=n,this._dataValidationModel=l,this._init()}get activeDropdown(){return this._activeDropdown}_init(){this.disposeWithMe(this._zenZoneService.visible$.subscribe(o=>{this._zenVisible=o,o&&this.hideDropdown()}))}showDropdown(o){const{location:e}=o,{row:t,col:a}=e;if(this._currentPopup&&this._currentPopup.dispose(),this._zenVisible)return;this._activeDropdown=o,this._activeDropdown$.next(this._activeDropdown);const r=this._renderManagerService.getRenderById(s.DOCS_FORMULA_BAR_EDITOR_UNIT_ID_KEY),n=this._canvasPopupManagerService.attachPopupToCell(t,a,{componentKey:yt,onClickOutside:()=>{this.hideDropdown()},offset:[0,3],excludeOutside:[r==null?void 0:r.engine.getCanvasElement()].filter(Boolean)});if(!n)throw new Error("[DataValidationDropdownManagerService]: cannot show dropdown!");const l=new s.DisposableCollection;l.add(n),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 n=this._univerInstanceService.getUniverSheetInstance(o);if(!n)return;const l=n.getSheetBySheetId(e);if(!l)return;const c=this._dataValidationModel.ensureManager(o,e).getRuleByLocation(t,a);if(!this._sheetSkeletonManagerService.getOrCreateSkeleton({unitId:o,sheetId:e})||!c)return;const m=this._dataValidatorRegistryService.getValidatorItem(c.type);if(!m||!m.dropdown){this.hideDropdown();return}this.showDropdown({location:{workbook:n,worksheet:l,row:t,col:a,unitId:o,subUnitId:e},componentKey:m.dropdown,onHide:r})}};Se=ca([he(0,V.Inject(P.SheetCanvasPopManagerService)),he(1,s.IUniverInstanceService),he(2,V.Inject(P.SheetSkeletonManagerService)),he(3,V.Inject(R.DataValidatorRegistryService)),he(4,B.IZenZoneService),he(5,z.IRenderManagerService),he(6,V.Inject(R.DataValidationModel))],Se);class Re extends s.Disposable{constructor(){super(...arguments);_(this,"_open$",new ve.BehaviorSubject(!1));_(this,"_activeRule");_(this,"_activeRule$",new ve.BehaviorSubject(void 0));_(this,"open$",this._open$.pipe(ve.distinctUntilChanged()));_(this,"activeRule$",this._activeRule$.asObservable())}get activeRule(){return this._activeRule}get isOpen(){return this._open$.getValue()}dispose(){this._open$.next(!1),this._open$.complete()}open(){this._open$.next(!0)}close(){this._open$.next(!1)}setActiveRule(e){this._activeRule=e,this._activeRule$.next(e)}}const Et="DataValidationPanel",we={id:"data-validation.operation.open-validation-panel",type:s.CommandType.OPERATION,handler(i,o){if(!o)return!1;const{ruleId:e,isAdd:t}=o,a=i.get(Re),r=i.get(R.DataValidationModel),n=i.get(s.IUniverInstanceService),l=i.get(B.ISidebarService),d=ae.getSheetCommandTarget(n);if(!d)return!1;const{unitId:c,subUnitId:u}=d,m=e?r.getRuleById(c,u,e):void 0;return a.open(),a.setActiveRule(m&&{unitId:c,subUnitId:u,rule:m}),l.open({header:{title:t?"dataValidation.panel.addTitle":"dataValidation.panel.title"},children:{label:Et},width:312}),!0}},Ft={id:"data-validation.operation.close-validation-panel",type:s.CommandType.OPERATION,handler(i){return i.get(Re).close(),!0}},ua={id:"data-validation.operation.toggle-validation-panel",type:s.CommandType.OPERATION,handler(i){const o=i.get(s.ICommandService),e=i.get(Re);return e.open(),e.isOpen?o.executeCommand(Ft.id):o.executeCommand(we.id),!0}},ze={type:s.CommandType.OPERATION,id:"sheet.operation.show-data-validation-dropdown",handler(i,o){if(!o)return!1;const e=i.get(Se),{unitId:t,subUnitId:a,row:r,column:n}=o,l=e.activeDropdown,d=l==null?void 0:l.location;return d&&d.unitId===t&&d.subUnitId===a&&d.row===r&&d.col===n||e.showDataValidationDropdown(t,a,r,n),!0}},wt={type:s.CommandType.OPERATION,id:"sheet.operation.hide-data-validation-dropdown",handler(i,o){return o?(i.get(Se).hideDropdown(),!0):!1}};function Ie(i,o,e){const t=[],a=[];return e.forEach(r=>{switch(r.type){case"delete":t.push({id:R.RemoveDataValidationMutation.id,params:{unitId:i,subUnitId:o,ruleId:r.rule.uid}}),a.unshift({id:R.AddDataValidationMutation.id,params:{unitId:i,subUnitId:o,rule:r.rule,index:r.index}});break;case"update":{t.push({id:R.UpdateDataValidationMutation.id,params:{unitId:i,subUnitId:o,ruleId:r.ruleId,payload:{type:R.UpdateRuleType.RANGE,payload:r.newRanges}}}),a.unshift({id:R.UpdateDataValidationMutation.id,params:{unitId:i,subUnitId:o,ruleId:r.ruleId,payload:{type:R.UpdateRuleType.RANGE,payload:r.oldRanges}}});break}case"add":{t.push({id:R.AddDataValidationMutation.id,params:{unitId:i,subUnitId:o,rule:r.rule}}),a.unshift({id:R.RemoveDataValidationMutation.id,params:{unitId:i,subUnitId:o,ruleId:r.rule.uid}});break}}}),{redoMutations:t,undoMutations:a}}const ht={type:s.CommandType.COMMAND,id:"sheets.command.updateDataValidationRuleRange",async handler(i,o){if(!o)return!1;const{unitId:e,subUnitId:t,ranges:a,ruleId:r}=o,n=i.get(R.DataValidationModel),l=i.get(s.ICommandService),d=i.get(s.IUndoRedoService),c=n.ensureManager(e,t),u=c.getRuleById(r);if(!u)return!1;const m=u.ranges,p=c.getRuleObjectMatrix().clone();p.updateRange(r,m,a);const h=p.diff(c.getDataValidations()),{redoMutations:g,undoMutations:v}=Ie(e,t,h);return d.pushUndoRedo({undoMutations:v,redoMutations:g,unitID:e}),await s.sequenceExecuteAsync(g,l),!0}},Ge={type:s.CommandType.COMMAND,id:"sheets.command.addDataValidation",async handler(i,o){if(!o)return!1;const{unitId:e,subUnitId:t,rule:a}=o,r=i.get(R.DataValidationModel),n=i.get(s.ICommandService),l=i.get(s.IUndoRedoService),d=r.ensureManager(e,t),c=d.getRuleObjectMatrix().clone();c.addRule(a);const u=c.diff(d.getDataValidations()),m={unitId:e,subUnitId:t,rule:a},{redoMutations:p,undoMutations:h}=Ie(e,t,u);return p.push({id:R.AddDataValidationMutation.id,params:m}),h.unshift({id:R.RemoveDataValidationMutation.id,params:{unitId:e,subUnitId:t,ruleId:a.uid}}),l.pushUndoRedo({unitID:e,redoMutations:p,undoMutations:h}),await s.sequenceExecuteAsync(p,n),!0}},pt={type:s.CommandType.COMMAND,id:"data-validation.command.addRuleAndOpen",async handler(i){const o=i.get(s.IUniverInstanceService),e=ae.getSheetCommandTarget(o);if(!e)return!1;const{workbook:t,worksheet:a}=e,r=R.createDefaultNewRule(i),n=i.get(s.ICommandService),l=t.getUnitId(),d=a.getSheetId(),c={rule:r,unitId:l,subUnitId:d};return await n.executeCommand(Ge.id,c)?(n.executeCommand(we.id,{ruleId:r.uid,isAdd:!0}),!0):!1}};var te=function(){return te=Object.assign||function(i){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)&&(i[a]=o[a])}return i},te.apply(this,arguments)},ma=function(i,o){var e={};for(var t in i)Object.prototype.hasOwnProperty.call(i,t)&&o.indexOf(t)<0&&(e[t]=i[t]);if(i!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,t=Object.getOwnPropertySymbols(i);a<t.length;a++)o.indexOf(t[a])<0&&Object.prototype.propertyIsEnumerable.call(i,t[a])&&(e[t[a]]=i[t[a]]);return e},me=D.forwardRef(function(i,o){var e=i.icon,t=i.id,a=i.className,r=i.extend,n=ma(i,["icon","id","className","extend"]),l="univerjs-icon univerjs-icon-".concat(t," ").concat(a||"").trim(),d=D.useRef("_".concat(fa()));return Tt(e,"".concat(t),{defIds:e.defIds,idSuffix:d.current},te({ref:o,className:l},n),r)});function Tt(i,o,e,t,a){return D.createElement(i.tag,te(te({key:o},ha(i,e,a)),t),(pa(i,e).children||[]).map(function(r,n){return Tt(r,"".concat(o,"-").concat(i.tag,"-").concat(n),e,void 0,a)}))}function ha(i,o,e){var t=te({},i.attrs);e!=null&&e.colorChannel1&&t.fill==="colorChannel1"&&(t.fill=e.colorChannel1);var a=o.defIds;return!a||a.length===0||(i.tag==="use"&&t["xlink:href"]&&(t["xlink:href"]=t["xlink:href"]+o.idSuffix),Object.entries(t).forEach(function(r){var n=r[0],l=r[1];typeof l=="string"&&(t[n]=l.replace(/url\(#(.*)\)/,"url(#$1".concat(o.idSuffix,")")))})),t}function pa(i,o){var e,t=o.defIds;return!t||t.length===0?i:i.tag==="defs"&&(!((e=i.children)===null||e===void 0)&&e.length)?te(te({},i),{children:i.children.map(function(a){return typeof a.attrs.id=="string"&&t&&t.indexOf(a.attrs.id)>-1?te(te({},a),{attrs:te(te({},a.attrs),{id:a.attrs.id+o.idSuffix})}):a})}):i}function fa(){return Math.random().toString(36).substring(2,8)}me.displayName="UniverIcon";var ga={tag:"svg",attrs:{fill:"none",viewBox:"0 0 16 16",width:"1em",height:"1em"},children:[{tag:"path",attrs:{fill:"currentColor",d:"M14.44 3.57291C14.698 3.83093 14.698 4.24927 14.44 4.50729L6.44342 12.5037C6.28721 12.6599 6.03395 12.6599 5.87774 12.5037L1.55992 8.18578C1.3019 7.92776 1.3019 7.50942 1.55993 7.2514C1.81795 6.99338 2.23629 6.99338 2.49431 7.25141L6.01916 10.7763C6.09727 10.8544 6.2239 10.8544 6.30201 10.7763L13.5056 3.57291C13.7636 3.31489 14.1819 3.31489 14.44 3.57291Z",fillRule:"evenodd",clipRule:"evenodd"}}]},Lt=D.forwardRef(function(i,o){return D.createElement(me,Object.assign({},i,{id:"check-mark-single",ref:o,icon:ga}))});Lt.displayName="CheckMarkSingle";const va=Lt;var _a={tag:"svg",attrs:{fill:"none",viewBox:"0 0 17 17",width:"1em",height:"1em"},children:[{tag:"path",attrs:{stroke:"currentColor",d:"M6.06964 2.57153H2.73631C2.36812 2.57153 2.06964 2.87001 2.06964 3.2382V6.57153C2.06964 6.93973 2.36812 7.2382 2.73631 7.2382H6.06964C6.43784 7.2382 6.73631 6.93973 6.73631 6.57153V3.2382C6.73631 2.87001 6.43784 2.57153 6.06964 2.57153zM6.06964 9.90479H2.73631C2.36812 9.90479 2.06964 10.2033 2.06964 10.5715V13.9048C2.06964 14.273 2.36812 14.5715 2.73631 14.5715H6.06964C6.43784 14.5715 6.73631 14.273 6.73631 13.9048V10.5715C6.73631 10.2033 6.43784 9.90479 6.06964 9.90479z",strokeLinejoin:"round",strokeWidth:1.33}},{tag:"path",attrs:{stroke:"currentColor",d:"M9.20471 5.06981L11.2023 6.73445 14.2047 3.73213M13.7047 10.238L9.70465 14.238M9.70477 10.238L13.7048 14.238",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.33}}]},bt=D.forwardRef(function(i,o){return D.createElement(me,Object.assign({},i,{id:"data-validation-single",ref:o,icon:_a}))});bt.displayName="DataValidationSingle";var Sa={tag:"svg",attrs:{fill:"none",viewBox:"0 0 16 16",width:"1em",height:"1em"},children:[{tag:"path",attrs:{fill:"currentColor",d:"M6.78662 6.17993C7.12169 6.17993 7.39331 6.45156 7.39331 6.78662V10.7301C7.39331 11.0652 7.12169 11.3368 6.78662 11.3368 6.45156 11.3368 6.17993 11.0652 6.17993 10.7301V6.78662C6.17993 6.45156 6.45156 6.17993 6.78662 6.17993zM9.82007 6.78662C9.82007 6.45156 9.54844 6.17993 9.21338 6.17993 8.87831 6.17993 8.60669 6.45156 8.60669 6.78662V10.7301C8.60669 11.0652 8.87831 11.3368 9.21338 11.3368 9.54844 11.3368 9.82007 11.0652 9.82007 10.7301V6.78662z"}},{tag:"path",attrs:{fill:"currentColor",d:"M6.57094 1.32642C6.34938 1.32642 6.14544 1.44719 6.03894 1.64148L5.21395 3.14648H1.93311C1.59804 3.14648 1.32642 3.41811 1.32642 3.75317C1.32642 4.08824 1.59804 4.35986 1.93311 4.35986H2.84314V14.0669C2.84314 14.402 3.11476 14.6736 3.44983 14.6736H12.5502C12.8852 14.6736 13.1569 14.402 13.1569 14.0669V4.35986H14.0669C14.402 4.35986 14.6736 4.08824 14.6736 3.75317C14.6736 3.41811 14.402 3.14648 14.0669 3.14648H10.7895L9.98357 1.64602C9.87785 1.4492 9.67252 1.32642 9.44911 1.32642H6.57094ZM9.4122 3.14648L9.08632 2.53979H6.93024L6.59767 3.14648H9.4122ZM4.05652 4.35986V13.4602H11.9435V4.35986H4.05652Z",fillRule:"evenodd",clipRule:"evenodd"}}]},At=D.forwardRef(function(i,o){return D.createElement(me,Object.assign({},i,{id:"delete-single",ref:o,icon:Sa}))});At.displayName="DeleteSingle";const Nt=At;var Ra={tag:"svg",attrs:{fill:"none",viewBox:"0 0 16 16",width:"1em",height:"1em"},children:[{tag:"mask",attrs:{id:"mask0_102_249",style:{maskType:"alpha"},width:16,height:16,x:0,y:0,maskUnits:"userSpaceOnUse"},children:[{tag:"path",attrs:{fill:"#D9D9D9",d:"M0 0H16V16H0z"}}]},{tag:"g",attrs:{mask:"url(#mask0_102_249)"},children:[{tag:"path",attrs:{fill:"currentColor",d:"M8.74717 2.0944C8.74717 1.68671 8.41279 1.3562 8.00032 1.3562C7.58785 1.3562 7.25347 1.68671 7.25347 2.0944V7.26186H2.02541C1.61294 7.26186 1.27856 7.59237 1.27856 8.00007C1.27856 8.40777 1.61294 8.73827 2.02541 8.73827H7.25347V13.9057C7.25347 14.3134 7.58785 14.6439 8.00032 14.6439C8.41279 14.6439 8.74717 14.3134 8.74717 13.9057V8.73827H13.975C14.3874 8.73827 14.7218 8.40777 14.7218 8.00007C14.7218 7.59237 14.3874 7.26186 13.975 7.26186H8.74717V2.0944Z"}}]}]},Ut=D.forwardRef(function(i,o){return D.createElement(me,Object.assign({},i,{id:"increase-single",ref:o,icon:Ra}))});Ut.displayName="IncreaseSingle";const Va=Ut;var Ma={tag:"svg",attrs:{fill:"none",viewBox:"0 0 16 16",width:"1em",height:"1em"},children:[{tag:"mask",attrs:{id:"mask0_102_556",style:{maskType:"alpha"},width:16,height:16,x:0,y:0,maskUnits:"userSpaceOnUse"},children:[{tag:"path",attrs:{fill:"#D9D9D9",d:"M0 0H16V16H0z"}}]},{tag:"g",attrs:{mask:"url(#mask0_102_556)"},children:[{tag:"path",attrs:{fill:"currentColor",d:"M0.629584 3.99986C1.13729 3.4922 1.9604 3.49224 2.46806 3.99995L7.57569 9.10806C7.81 9.3424 8.18992 9.3424 8.42424 9.10808L13.5323 3.99998C14.04 3.4923 14.8631 3.4923 15.3708 3.99998C15.8785 4.50766 15.8785 5.33078 15.3708 5.83846L9.41415 11.7951C8.63307 12.5762 7.36669 12.5762 6.58565 11.7951L0.629497 5.83834C0.121839 5.33063 0.121879 4.50752 0.629584 3.99986Z",fillRule:"evenodd",clipRule:"evenodd"}}]}]},jt=D.forwardRef(function(i,o){return D.createElement(me,Object.assign({},i,{id:"more-down-single",ref:o,icon:Ma}))});jt.displayName="MoreDownSingle";const Da=jt;var Ia={tag:"svg",attrs:{fill:"none",viewBox:"0 0 16 16",width:"1em",height:"1em"},children:[{tag:"mask",attrs:{id:"mask0_506_5",style:{maskType:"alpha"},width:16,height:16,x:0,y:0,maskUnits:"userSpaceOnUse"},children:[{tag:"path",attrs:{fill:"#D9D9D9",d:"M16 16H32V32H16z",transform:"rotate(180 16 16)"}}]},{tag:"g",attrs:{mask:"url(#mask0_506_5)"},children:[{tag:"path",attrs:{fill:"currentColor",d:"M15.3704 12.0001C14.8627 12.5078 14.0396 12.5078 13.5319 12.0001L8.42431 6.89194C8.19 6.6576 7.81008 6.6576 7.57576 6.89192L2.46766 12C1.95998 12.5077 1.13687 12.5077 0.629185 12C0.121504 11.4923 0.121504 10.6692 0.629185 10.1615L6.58585 4.20487C7.36693 3.4238 8.63331 3.42383 9.41435 4.20494L15.3705 10.1617C15.8782 10.6694 15.8781 11.4925 15.3704 12.0001Z",fillRule:"evenodd",clipRule:"evenodd"}}]}]},Pt=D.forwardRef(function(i,o){return D.createElement(me,Object.assign({},i,{id:"more-up-single",ref:o,icon:Ia}))});Pt.displayName="MoreUpSingle";const Oa=Pt;var Ca={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"}}]}]},xt=D.forwardRef(function(i,o){return D.createElement(me,Object.assign({},i,{id:"sequence-single",ref:o,icon:Ca}))});xt.displayName="SequenceSingle";const ya=xt,Ea="univer-data-validation-options-button",Fa="univer-data-validation-options-button-icon",Ke={dataValidationOptionsButton:Ea,dataValidationOptionsButtonIcon:Fa};function wa(i){var c;const o=A.useDependency(s.LocaleService),e=A.useDependency(B.ComponentManager),{value:t,onChange:a,extraComponent:r}=i,[n,l]=D.useState(!1),d=r?e.get(r):null;return f.jsxs(f.Fragment,{children:[f.jsxs("div",{className:Ke.dataValidationOptionsButton,onClick:()=>l(!n),children:[o.t("dataValidation.panel.options"),n?f.jsx(Oa,{className:Ke.dataValidationOptionsButtonIcon}):f.jsx(Da,{className:Ke.dataValidationOptionsButtonIcon})]}),n&&f.jsxs(f.Fragment,{children:[d?f.jsx(d,{value:t,onChange:a}):null,f.jsx(I.FormLayout,{label:o.t("dataValidation.panel.invalid"),children:f.jsxs(I.RadioGroup,{value:`${(c=t.errorStyle)!=null?c:s.DataValidationErrorStyle.WARNING}`,onChange:u=>a({...t,errorStyle:+u}),children:[f.jsx(I.Radio,{value:`${s.DataValidationErrorStyle.WARNING}`,children:o.t("dataValidation.panel.showWarning")}),f.jsx(I.Radio,{value:`${s.DataValidationErrorStyle.STOP}`,children:o.t("dataValidation.panel.rejectInput")})]})}),f.jsx(I.FormLayout,{label:o.t("dataValidation.panel.messageInfo"),children:f.jsx(I.Checkbox,{checked:t.showInputMessage,onChange:()=>a({...t,showInputMessage:!t.showInputMessage}),children:o.t("dataValidation.panel.showInfo")})}),t.showInputMessage?f.jsx(I.FormLayout,{children:f.jsx(I.Input,{value:t.error,onChange:u=>a({...t,error:u})})}):null]})]})}const Ta="univer-data-validation-detail-form-item",La="univer-data-validation-detail-buttons",ba="univer-data-validation-detail-button",Ve={dataValidationDetailFormItem:Ta,dataValidationDetailButtons:La,dataValidationDetailButton:ba},Aa=i=>s.debounce(async(o,e,t,a)=>{const r=await i.executeCommand(o,e,t);a==null||a(r)},275);function Na(){const[i,o]=D.useState(0),e=A.useDependency(Re),t=B.useObservable(e.activeRule$,e.activeRule),{unitId:a,subUnitId:r,rule:n}=t||{},l=n.uid,d=A.useDependency(R.DataValidatorRegistryService),c=A.useDependency(B.ComponentManager),u=A.useDependency(s.ICommandService),m=A.useDependency(R.DataValidationModel),p=A.useDependency(s.LocaleService),[h,g]=D.useState(n),v=d.getValidatorItem(h.type),[S,M]=D.useState(!1),O=d.getValidatorsByScope(R.DataValidatorRegistryScope.SHEET),[y,C]=D.useState(()=>h.ranges.map(F=>({unitId:"",sheetId:"",range:F}))),E=D.useMemo(()=>Aa(u),[u]);if(D.useEffect(()=>{u.onCommandExecuted(F=>{(F.id===s.UndoCommand.id||F.id===s.RedoCommand.id)&&setTimeout(()=>{const W=m.getRuleById(a,r,l);o(Z=>Z+1),W&&(g(W),C(W.ranges.map(Z=>({unitId:"",sheetId:"",range:Z}))))},20)})},[u,m,l,r,a]),!v)return null;const w=v.operators,b=v.operatorNames,$=h.operator?R.TWO_FORMULA_OPERATOR_COUNT.includes(h.operator):!1,T=()=>{v.validatorFormula(h).success?e.setActiveRule(null):M(!0)},U=B.useEvent(F=>{if(s.isUnitRangesEqual(F,y))return;C(F);const W=F.filter(Q=>(!Q.unitId||Q.unitId===a)&&(!Q.sheetId||Q.sheetId===r)).map(Q=>Q.range);if(g({...h,ranges:W}),W.length===0)return;const Z={unitId:a,subUnitId:r,ruleId:l,ranges:W};E(ht.id,Z)}),H=F=>{if(s.shallowEqual(F,R.getRuleSetting(h)))return;g({...h,...F});const W={unitId:a,subUnitId:r,ruleId:l,setting:F};E(R.UpdateDataValidationSettingCommand.id,W,void 0)},x=async()=>{await u.executeCommand(R.RemoveDataValidationCommand.id,{ruleId:l,unitId:a,subUnitId:r}),e.setActiveRule(null)},j={type:h.type,operator:h.operator,formula1:h.formula1,formula2:h.formula2,allowBlank:h.allowBlank},N=F=>{const W=d.getValidatorItem(F);if(!W)return;const Z=W.operators,Q=m.getRuleById(a,r,l),L=F===(Q==null?void 0:Q.type)?{...Q}:{...h,type:F,operator:Z[0],formula1:void 0,formula2:void 0};g(L),u.executeCommand(R.UpdateDataValidationSettingCommand.id,{unitId:a,subUnitId:r,ruleId:h.uid,setting:R.getRuleSetting(L)})},k=c.get(v.formulaInput),Y=y.map(F=>se.serializeRange(F.range)).join(","),X=R.getRuleOptions(h),oe=F=>{s.shallowEqual(F,R.getRuleOptions(h))||(g({...h,...F}),E(R.UpdateDataValidationOptionsCommand.id,{unitId:a,subUnitId:r,ruleId:l,options:F}))};return f.jsxs("div",{children:[f.jsx(I.FormLayout,{label:p.t("dataValidation.panel.range"),children:f.jsx(B.RangeSelector,{className:Ve.dataValidationDetailFormItem,value:Y,id:s.createInternalEditorID("data-validation-detail"),openForSheetUnitId:a,openForSheetSubUnitId:r,onChange:F=>{F.some(W=>!s.isValidRange(W.range)||W.range.endColumn<W.range.startColumn||W.range.endRow<W.range.startRow)||U(F)}},i)}),f.jsx(I.FormLayout,{label:p.t("dataValidation.panel.type"),children:f.jsx(I.Select,{options:O==null?void 0:O.map(F=>({label:p.t(F.title),value:F.id})),value:h.type,onChange:N,className:Ve.dataValidationDetailFormItem})}),w!=null&&w.length?f.jsx(I.FormLayout,{label:p.t("dataValidation.panel.operator"),children:f.jsx(I.Select,{options:w.map((F,W)=>({value:`${F}`,label:b[W]})),value:`${h.operator}`,onChange:F=>{H({...j,operator:F})},className:Ve.dataValidationDetailFormItem})}):null,k?f.jsx(k,{isTwoFormula:$,value:{formula1:h.formula1,formula2:h.formula2},onChange:F=>{H({...j,...F})},showError:S,validResult:v.validatorFormula(h),unitId:a,subUnitId:r,ruleId:l},i):null,f.jsx(wa,{value:X,onChange:oe,extraComponent:v.optionsInput}),f.jsxs("div",{className:Ve.dataValidationDetailButtons,children:[f.jsx(I.Button,{className:Ve.dataValidationDetailButton,onClick:x,children:p.t("dataValidation.panel.removeRule")}),f.jsx(I.Button,{className:Ve.dataValidationDetailButton,type:"primary",onClick:T,children:p.t("dataValidation.panel.done")})]})]})}const Ua="univer-data-validation-item-container",ja="univer-data-validation-item-title",Pa="univer-data-validation-item-content",xa="univer-data-validation-item-icon",Le={dataValidationItemContainer:Ua,dataValidationItemTitle:ja,dataValidationItemContent:Pa,dataValidationItemIcon:xa},Ba=i=>{const{rule:o,onClick:e,unitId:t,subUnitId:a}=i,r=A.useDependency(R.DataValidatorRegistryService),n=A.useDependency(s.ICommandService),l=A.useDependency(P.IMarkSelectionService),d=r.getValidatorItem(o.type),c=D.useRef(),[u,m]=D.useState(!1),p=h=>{n.executeCommand(R.RemoveDataValidationCommand.id,{ruleId:o.uid,unitId:t,subUnitId:a}),h.stopPropagation()};return D.useEffect(()=>()=>{var h;c.current&&((h=c.current)==null||h.forEach(g=>{g&&l.removeShape(g)}))},[l]),f.jsxs("div",{className:Le.dataValidationItemContainer,onClick:e,onMouseEnter:()=>{m(!0),c.current=o.ranges.map(h=>l.addShape({range:h,style:{hasAutoFill:!1,fill:"rgba(73, 184, 17, 0.05)",strokeWidth:1,stroke:"#49B811",widgets:{}},primary:{startColumn:h.startColumn,endColumn:h.endColumn,startRow:h.startRow,endRow:h.endRow,actualRow:h.startRow,actualColumn:h.startColumn,isMerged:!1,isMergedMainCell:!1}}))},onMouseLeave:()=>{var h;m(!1),(h=c.current)==null||h.forEach(g=>{g&&l.removeShape(g)}),c.current=void 0},children:[f.jsx("div",{className:Le.dataValidationItemTitle,children:d==null?void 0:d.generateRuleName(o)}),f.jsx("div",{className:Le.dataValidationItemContent,children:o.ranges.map(h=>se.serializeRange(h)).join(",")}),u?f.jsx("div",{className:Le.dataValidationItemIcon,onClick:p,children:f.jsx(Nt,{})}):null]})},$a="univer-data-validation-list-buttons",Ha="univer-data-validation-list-button",Ze={dataValidationListButtons:$a,dataValidationListButton:Ha},Wa=D.memo(()=>{var v;const i=A.useDependency(s.IUniverInstanceService),o=A.useDependency(R.DataValidationModel),e=A.useDependency(s.ICommandService),t=A.useDependency(V.Injector),a=A.useDependency(Re),r=B.useObservable(()=>i.getCurrentTypeOfUnit$(s.UniverInstanceType.UNIVER_SHEET),void 0,!0,[]),n=A.useDependency(s.LocaleService),[l,d]=D.useState([]),c=(v=B.useObservable(r.activeSheet$,r.getActiveSheet()))!=null?v:r.getActiveSheet(),u=r.getUnitId(),m=c.getSheetId(),p=o.ensureManager(u,m);D.useEffect(()=>{d(p.getDataValidations());const S=p.dataValidations$.subscribe(M=>{d([...M])});return()=>{S.unsubscribe()}},[p]);const h=async()=>{const S=R.createDefaultNewRule(t),M={unitId:u,subUnitId:m,rule:S};await e.executeCommand(Ge.id,M),a.setActiveRule({unitId:u,subUnitId:m,rule:S})},g=()=>{e.executeCommand(R.RemoveAllDataValidationCommand.id,{unitId:u,subUnitId:m})};return f.jsxs("div",{children:[l.map(S=>f.jsx(Ba,{unitId:u,subUnitId:m,onClick:()=>a.setActiveRule({unitId:u,subUnitId:m,rule:S}),rule:S},S.uid)),f.jsxs("div",{className:Ze.dataValidationListButtons,children:[l.length?f.jsx(I.Button,{className:Ze.dataValidationListButton,onClick:g,children:n.t("dataValidation.panel.removeAll")}):null,f.jsx(I.Button,{className:Ze.dataValidationListButton,type:"primary",onClick:h,children:n.t("dataValidation.panel.add")})]})]})}),ka=()=>{const i=A.useDependency(Re),o=B.useObservable(i.activeRule$,i.activeRule);return o?f.jsx(Na,{},o.rule.uid):f.jsx(Wa,{})};function J(i){if(i===null)return"";if(i!=null&&i.p){const o=i==null?void 0:i.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 i==null?void 0:i.v}function Bt(i){return i.filter(Boolean).join(",")}function De(i){return i.split(",").filter(Boolean)}function qa(i){const o=J(i);return o==null?"":o.toString()}const Xe="SHEET_DATA_VALIDATION_PLUGIN",ge="#ECECEC",Ya="univer-dv-list-dropdown",za="univer-dv-list-dropdown-title",Ga="univer-dv-list-dropdown-list",Xa="univer-dv-list-dropdown-list-container",Qa="univer-dv-list-dropdown-selected-icon",Ka="univer-dv-list-dropdown-item-container",Za="univer-dv-list-dropdown-item",Ja="univer-dv-list-dropdown-split",er="univer-dv-list-dropdown-edit",le={dvListDropdown:Ya,dvListDropdownTitle:za,dvListDropdownList:Ga,dvListDropdownListContainer:Xa,dvListDropdownSelectedIcon:Qa,dvListDropdownItemContainer:Ka,dvListDropdownItem:Za,dvListDropdownSplit:Ja,dvListDropdownEdit:er},tr=i=>{const{value:o,onChange:e,multiple:t,options:a,title:r,onEdit:n,style:l}=i;return f.jsxs("div",{className:le.dvListDropdown,style:l,children:[f.jsx("div",{className:le.dvListDropdownTitle,children:r}),f.jsx("div",{className:le.dvListDropdownList,children:f.jsx(I.Scrollbar,{children:f.jsx("div",{className:le.dvListDropdownListContainer,children:a.map((d,c)=>{const u=o.indexOf(d.value)>-1,m=()=>{let p;u?p=new Set(o.filter(g=>g!==d.value)):p=new Set(t?[...o,d.value]:[d.value]);const h=[];a.forEach(g=>{p.has(g.value)&&h.push(g.value)}),e(h)};return f.jsxs("div",{className:le.dvListDropdownItemContainer,onClick:m,children:[f.jsx("div",{className:le.dvListDropdownItem,style:{background:d.color||ge},children:d.label}),f.jsx("div",{className:le.dvListDropdownSelectedIcon,children:u?f.jsx(va,{}):null})]},c)})})})}),f.jsx("div",{className:le.dvListDropdownSplit}),f.jsx("div",{className:le.dvListDropdownEdit,children:f.jsx("a",{onClick:n,children:"编辑"})})]})};function ar(i){var $,T;const{location:o,hideFn:e}=i,{worksheet:t,row:a,col:r,unitId:n,subUnitId:l}=o,d=A.useDependency(s.ICommandService),c=A.useDependency(s.LocaleService),[u,m]=D.useState(""),p=A.useDependency(P.IEditorBridgeService),h=I.RectPopup.useContext(),g=h.right-h.left;if(!t)return null;const v=t.getCell(a,r),S=($=v==null?void 0:v.dataValidation)==null?void 0:$.rule,M=(T=v==null?void 0:v.dataValidation)==null?void 0:T.validator,O=(S==null?void 0:S.renderMode)===s.DataValidationRenderMode.CUSTOM||(S==null?void 0:S.renderMode)===void 0;if(!v||!S||!M)return;const y=S.type===s.DataValidationType.LIST_MULTIPLE,C=M.getListWithColor(S,n,l),E=u||qa(v),w=De(E),b=()=>{d.executeCommand(we.id,{ruleId:S.uid}),e()};return f.jsx(tr,{style:{minWidth:g,maxWidth:Math.max(g,200)},title:y?c.t("dataValidation.listMultiple.dropdown"):c.t("dataValidation.list.dropdown"),value:w,multiple:y,onChange:U=>{const H=Bt(U),x={unitId:n,subUnitId:l,range:{startColumn:r,endColumn:r,startRow:a,endRow:a},value:{v:H,p:null,f:null,si:null}};p.isVisible()&&p.changeVisible({visible:!1,keycode:B.KeyCode.ESC,eventType:z.DeviceInputEventType.Keyboard}),d.executeCommand(ae.SetRangeValuesCommand.id,x),m(H),y||e()},options:C.map(U=>({label:U.label,value:U.label,color:O?U.color:"transparent"})),onEdit:b})}const rr="univer-dv-date-dropdown",or={dvDateDropdown:rr};function nr(i){var M,O,y;const{location:o,hideFn:e}=i,{worksheet:t,row:a,col:r,unitId:n,subUnitId:l}=o,d=A.useDependency(s.ICommandService),[c,u]=D.useState();if(!t)return null;const m=t.getCell(a,r),p=(M=m==null?void 0:m.dataValidation)==null?void 0:M.rule,h=(O=m==null?void 0:m.dataValidation)==null?void 0:O.validator;if(!m||!p||!h)return;const g=J(m),v=(y=h.transformDate(g))!=null?y:_e(),S=v.isValid()?v:_e();return f.jsx("div",{className:or.dvDateDropdown,children:f.jsx(I.DatePanel,{pickerValue:c!=null?c:S,onSelect:C=>{const E=C.format("YYYY/MM/DD");d.executeCommand(ae.SetRangeValuesCommand.id,{unitId:n,subUnitId:l,range:{startColumn:r,endColumn:r,startRow:a,endRow:a},value:{v:E,p:null,f:null,si:null}}),e()},onPanelChange:C=>{u(C)}})})}const $t="data-validation.list.dropdown",Ht="data-validation.date.dropdown";function ir(i){var d;const{unitId:o,subUnitId:e,value:t,onChange:a,showError:r,validResult:n}=i,l=r?n==null?void 0:n.formula1:"";return f.jsx(I.FormLayout,{error:l,children:f.jsx(B.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 sr="univer-data-validation-formula",lr="univer-data-validation-formula-and",dr="univer-data-validation-formula-list-item",cr="univer-data-validation-formula-list-item-icon",ur="univer-data-validation-formula-list-item-drag",mr="univer-data-validation-formula-list-add",hr="univer-data-validation-formula-color-select",pr="univer-data-validation-formula-color-select-panel",fr="univer-data-validation-formula-color-item",K={dataValidationFormula:sr,dataValidationFormulaAnd:lr,dataValidationFormulaListItem:dr,dataValidationFormulaListItemIcon:cr,dataValidationFormulaListItemDrag:ur,dataValidationFormulaListAdd:mr,dataValidationFormulaColorSelect:hr,dataValidationFormulaColorSelectPanel:pr,dataValidationFormulaColorItem:fr},gr=i=>{const{isTwoFormula:o=!1,value:e,onChange:t,showError:a,validResult:r}=i,n=A.useDependency(s.LocaleService),l=a?r==null?void 0:r.formula1:"",d=a?r==null?void 0:r.formula2:"";return o?f.jsxs(f.Fragment,{children:[f.jsx(I.FormLayout,{error:l,children:f.jsx(I.Input,{className:K.dataValidationFormula,placeholder:n.t("dataValidation.panel.formulaPlaceholder"),value:e==null?void 0:e.formula1,onChange:c=>{t==null||t({...e,formula1:c})}})}),f.jsx("div",{className:K.dataValidationFormulaAnd,children:n.t("dataValidation.panel.formulaAnd")}),f.jsx(I.FormLayout,{error:d,children:f.jsx(I.Input,{className:K.dataValidationFormula,placeholder:n.t("dataValidation.panel.formulaPlaceholder"),value:e==null?void 0:e.formula2,onChange:c=>{t==null||t({...e,formula2:c})}})})]}):f.jsx(I.FormLayout,{error:l,children:f.jsx(I.Input,{className:K.dataValidationFormula,placeholder:n.t("dataValidation.panel.formulaPlaceholder"),value:e==null?void 0:e.formula1,onChange:c=>{t==null||t({formula1:c})}})})},vr=["#FFFFFF","#FEE7E7","#FEF0E6","#EFFBD0","#E4F4FE","#E8ECFD","#F1EAFA","#FDE8F3","#E5E5E5","#FDCECE","#FDC49B","#DEF6A2","#9FDAFF","#D0D9FB","#E3D5F6","#FBD0E8","#656565","#FE4B4B","#FF8C51","#8BBB11","#0B9EFB","#3A60F7","#9E6DE3","#F248A6"],_r=i=>{const{value:o,onChange:e,disabled:t}=i,[a,r]=D.useState(!1);return f.jsx(I.Select,{disabled:t,open:a,onDropdownVisibleChange:r,dropdownStyle:{width:112},className:K.dataValidationFormulaColorSelect,value:o,onChange:e,labelRender:n=>f.jsx("div",{className:K.dataValidationFormulaColorItem,style:{background:n.value}}),dropdownRender:()=>f.jsx("div",{className:K.dataValidationFormulaColorSelectPanel,children:vr.map(n=>f.jsx("div",{onClick:()=>{e(n),r(!1)},className:K.dataValidationFormulaColorItem,style:{background:n}},n))})})},vt=i=>{const{item:o,commonProps:e,style:t}=i,{onItemChange:a,onItemDelete:r}=e;return f.jsxs("div",{className:K.dataValidationFormulaListItem,style:t,children:[o.isRef?null:f.jsx("div",{className:ea(K.dataValidationFormulaListItemDrag,"draggableHandle"),children:f.jsx(ya,{})}),f.jsx(_r,{value:o.color,onChange:n=>{a(o.id,o.label,n)}}),f.jsx(I.Input,{disabled:o.isRef,value:o.label,onChange:n=>{a(o.id,n,o.color)}}),o.isRef?null:f.jsx("div",{className:K.dataValidationFormulaListItemIcon,children:f.jsx(Nt,{onClick:()=>r(o.id)})})]})};function Sr(i){const{value:o,onChange:e=()=>{},unitId:t,subUnitId:a,validResult:r,showError:n,ruleId:l}=i,{formula1:d="",formula2:c=""}=o||{},u=D.useRef(null),[m,p]=D.useState(()=>s.isFormulaString(d)?"1":"0"),[h,g]=D.useState(m==="1"?d:"="),[v,S]=D.useState(m==="1"?d:"="),M=A.useDependency(s.LocaleService),O=A.useDependency(R.DataValidatorRegistryService),y=A.useDependency(R.DataValidationModel),[C,E]=D.useState(()=>c.split(",")),w=O.getValidatorItem(s.DataValidationType.LIST),[b,$]=D.useState([]),[T,U]=D.useState(""),H=n?r==null?void 0:r.formula1:"",x=B.useObservable(y.ruleChange$),j=B.useEvent(e);D.useEffect(()=>{(async()=>{await new Promise(q=>{setTimeout(()=>q(!0),100)});const L=y.getRuleById(t,a,l),G=L==null?void 0:L.formula1;if(s.isFormulaString(G)&&w&&L){const q=await w.getListAsync(L,t,a);$(q)}})()},[y,x,w,l,a,t]),D.useEffect(()=>{s.isFormulaString(d)&&d!==v&&(g(d),S(v))},[v,d]);const[N,k]=D.useState(()=>{const L=m!=="1"?De(d):[],G=c.split(",");return L.map((q,ee)=>({label:q,color:G[ee]||ge,isRef:!1,id:s.Tools.generateRandomId(4)}))}),Y=(L,G,q)=>{const ee=N.find(Ce=>Ce.id===L);ee&&(ee.label=G,ee.color=q,k([...N]))},X=L=>{const G=N.findIndex(q=>q.id===L);G!==-1&&(N.splice(G,1),k([...N]))},oe=c.split(","),F=D.useMemo(()=>b.map((L,G)=>({label:L,color:oe[G]||ge,id:`${G}`,isRef:!0})),[oe,b]),W=(L,G,q)=>{const ee=[...C];ee[+L]=q,E(ee),j({formula1:d,formula2:ee.join(",")})},Z=()=>{k([...N,{label:"",color:ge,isRef:!1,id:s.Tools.generateRandomId(4)}])};D.useEffect(()=>{const L=new Set,G=[];N.map(q=>({labelList:q.label.split(","),item:q})).forEach(({item:q,labelList:ee})=>{ee.forEach(Ce=>{L.has(Ce)||(L.add(Ce),G.push({label:Ce,color:q.color}))})}),j({formula1:Bt(G.map(q=>q.label)),formula2:G.map(q=>q.color===ge?"":q.color).join(",")})},[N,j]);const Q=D.useMemo(()=>async L=>{if(!s.isFormulaString(L)){j==null||j({formula1:"",formula2:c});return}j==null||j({formula1:s.isFormulaString(L)?L:"",formula2:c})},[c,j]);return f.jsxs(f.Fragment,{children:[f.jsx(I.FormLayout,{label:M.t("dataValidation.list.options"),children:f.jsxs(I.RadioGroup,{value:m,onChange:L=>p(L),children:[f.jsx(I.Radio,{value:"0",children:M.t("dataValidation.list.customOptions")}),f.jsx(I.Radio,{value:"1",children:M.t("dataValidation.list.refOptions")})]})}),m==="1"?f.jsxs(f.Fragment,{children:[f.jsx(I.FormLayout,{error:H||T,children:f.jsx(B.TextEditor,{id:s.createInternalEditorID(`list-ref-range-${t}-${a}`),value:h,openForSheetUnitId:t,openForSheetSubUnitId:a,onlyInputFormula:!0,onChange:async L=>{const G=L!=null?L:"";S(G),Q(G)}})}),f.jsx(I.FormLayout,{children:f.jsx("div",{ref:u,children:F.map(L=>f.jsx(vt,{item:L,commonProps:{onItemChange:W},style:{marginBottom:12}},L.id))})})]}):f.jsx(I.FormLayout,{error:H,children:f.jsxs("div",{ref:u,style:{marginTop:"-12px"},children:[f.jsx(I.DraggableList,{list:N,onListChange:k,rowHeight:32,margin:[0,12],draggableHandle:".draggableHandle",itemRender:L=>f.jsx(vt,{item:L,commonProps:{onItemChange:Y,onItemDelete:X}},L.id),idKey:"id"}),f.jsxs("a",{className:K.dataValidationFormulaListAdd,onClick:Z,children:[f.jsx(Va,{}),M.t("dataValidation.list.add")]})]})})]})}function Rr(i){const{value:o,onChange:e,showError:t,validResult:a}=i,r=A.useDependency(s.LocaleService),n=t?a==null?void 0:a.formula1:"",l=t?a==null?void 0:a.formula2:"",[d,c]=D.useState(!((o==null?void 0:o.formula1)===void 0&&(o==null?void 0:o.formula2)===void 0));return f.jsxs(f.Fragment,{children:[f.jsx(I.FormLayout,{children:f.jsx(I.Checkbox,{checked:d,onChange:u=>{u?c(!0):(c(!1),e==null||e({...o,formula1:void 0,formula2:void 0}))},children:r.t("dataValidation.checkbox.tips")})}),d?f.jsx(I.FormLayout,{label:r.t("dataValidation.checkbox.checked"),error:n,children:f.jsx(I.Input,{className:K.dataValidationFormula,placeholder:r.t("dataValidation.panel.formulaPlaceholder"),value:o==null?void 0:o.formula1,onChange:u=>{e==null||e({...o,formula1:u})}})}):null,d?f.jsx(I.FormLayout,{label:r.t("dataValidation.checkbox.unchecked"),error:l,children:f.jsx(I.Input,{className:K.dataValidationFormula,placeholder:r.t("dataValidation.panel.formulaPlaceholder"),value:o==null?void 0:o.formula2,onChange:u=>{e==null||e({...o,formula2:u})}})}):null]})}const Wt="data-validation.custom-formula-input",Te="data-validation.formula-input",kt="data-validation.list-formula-input",qt="data-validation.checkbox-formula-input",Vr=[[Wt,ir],[Te,gr],[kt,Sr],[qt,Rr]],Mr="LIST_RENDER_MODE_OPTION_INPUT";function He(i){var a;const{value:o,onChange:e}=i,t=A.useDependency(s.LocaleService);return f.jsx(I.FormLayout,{label:t.t("dataValidation.renderMode.label"),children:f.jsxs(I.RadioGroup,{value:`${(a=o.renderMode)!=null?a:s.DataValidationRenderMode.CUSTOM}`,onChange:r=>e({...o,renderMode:+r}),children:[f.jsx(I.Radio,{value:`${s.DataValidationRenderMode.CUSTOM}`,children:t.t("dataValidation.renderMode.chip")}),f.jsx(I.Radio,{value:`${s.DataValidationRenderMode.ARROW}`,children:t.t("dataValidation.renderMode.arrow")}),f.jsx(I.Radio,{value:`${s.DataValidationRenderMode.TEXT}`,children:t.t("dataValidation.renderMode.text")})]})})}He.componentKey=Mr;const Yt="data-validation-single",ft="sheet.menu.data-validation";function Dr(i){return{id:ft,type:B.MenuItemType.SUBITEMS,positions:[B.MenuPosition.TOOLBAR_START],group:B.MenuGroup.TOOLBAR_FORMULAS_INSERT,icon:Yt,tooltip:"dataValidation.title",hidden$:B.getMenuHiddenObservable(i,s.UniverInstanceType.UNIVER_SHEET)}}function Ir(i){return{id:we.id,title:"dataValidation.panel.title",type:B.MenuItemType.BUTTON,positions:[ft]}}function Or(i){return{id:pt.id,title:"dataValidation.panel.add",type:B.MenuItemType.BUTTON,positions:[ft]}}var Cr=Object.defineProperty,yr=Object.getOwnPropertyDescriptor,Er=(i,o,e,t)=>{for(var a=t>1?void 0:t?yr(o,e):o,r=i.length-1,n;r>=0;r--)(n=i[r])&&(a=(t?n(o,e,a):n(a))||a);return t&&a&&Cr(o,e,a),a},re=(i,o)=>(e,t)=>o(e,t,i);const Fr={tr:{size:6,color:"#fe4b4b"}};exports.DataValidationRenderController=class extends s.RxDisposable{constructor(o,e,t,a,r,n,l,d,c,u,m){super(),this._componentManager=o,this._menuService=e,this._dataValidationModel=t,this._sheetSkeletonManagerService=a,this._renderManagerService=r,this._univerInstanceService=n,this._dataValidatorRegistryService=l,this._editorBridgeService=d,this._dropdownManagerService=c,this._sheetInterceptorService=u,this._injector=m,this._init()}_init(){this._initComponents(),this._initMenu(),this._initSkeletonChange(),this._initDropdown(),this._initViewModelIntercept()}_initMenu(){[Dr,Ir,Or].forEach(o=>{this.disposeWithMe(this._menuService.addMenuItem(o(this._injector)))})}_initComponents(){[[Et,ka],[yt,sa],[$t,ar],[Ht,nr],[He.componentKey,He],...Vr].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:n}=e,l=this._univerInstanceService.getUniverSheetInstance(t);if(!l)return;const c=this._dataValidationModel.ensureManager(t,a).getRuleByLocation(r,n);if(!c)return;const u=this._dataValidatorRegistryService.getValidatorItem(c.type);if(!(u!=null&&u.dropdown))return;const m=l.getActiveSheet(),p=this._dropdownManagerService.activeDropdown,h=p==null?void 0:p.location;if(h&&h.unitId===t&&h.subUnitId===a&&h.row===r&&h.col===n)return;this._dropdownManagerService.showDropdown({location:{unitId:t,subUnitId:a,row:r,col:n,workbook:l,worksheet:m},componentKey:u.dropdown,onHide:()=>{}})}}))}_initSkeletonChange(){const o=()=>{const e=this._univerInstanceService.getCurrentUnitForType(s.UniverInstanceType.UNIVER_SHEET);if(!e)return;const t=e.getUnitId(),a=e.getActiveSheet().getSheetId(),r=this._sheetSkeletonManagerService.getOrCreateSkeleton({unitId:t,sheetId:a}),n=this._renderManagerService.getRenderById(t);r==null||r.makeDirty(!0),r==null||r.calculate(),n&&n.mainComponent.makeForceDirty()};this.disposeWithMe(this._dataValidationModel.ruleChange$.subscribe(()=>{o()})),this.disposeWithMe(this._dataValidationModel.validStatusChange$.subscribe(()=>{o()}))}_initViewModelIntercept(){this.disposeWithMe(this._sheetInterceptorService.intercept(ae.INTERCEPTOR_POINT.CELL_CONTENT,{handler:(o,e,t)=>{var y,C,E,w;const{row:a,col:r,unitId:n,subUnitId:l}=e,d=this._dataValidationModel.ensureManager(n,l),c=(y=this._sheetSkeletonManagerService.getCurrent())==null?void 0:y.skeleton;if(!d||!c)return t(o);const u=e.workbook.getStyles(),m=(typeof(o==null?void 0:o.s)=="string"?u.get(o==null?void 0:o.s):o==null?void 0:o.s)||{},p=d.getRuleIdByLocation(a,r);if(!p)return t(o);const h=d.getRuleById(p);if(!h)return t(o);const g=e.worksheet.getCellRaw(e.row,e.col),v=this._dataValidationModel.validator(J(g),h,e),S=this._dataValidatorRegistryService.getValidatorItem(h.type),M=J(o);let O={};if((h.type===s.DataValidationType.LIST||h.type===s.DataValidationType.LIST_MULTIPLE)&&(O={interceptorStyle:{...o==null?void 0:o.interceptorStyle,tb:(C=m.tb!==s.WrapStrategy.OVERFLOW?m.tb:s.WrapStrategy.CLIP)!=null?C:s.WrapStrategy.WRAP}}),h.type===s.DataValidationType.CHECKBOX){const{formula2:b}=S.parseFormulaSync(h,e.unitId,e.subUnitId);M||(O={v:b,t:1,p:null,interceptorStyle:{...o==null?void 0:o.interceptorStyle,tb:s.WrapStrategy.CLIP}})}if(h.type===s.DataValidationType.LIST&&(h.renderMode===s.DataValidationRenderMode.ARROW||h.renderMode===s.DataValidationRenderMode.TEXT)){const b=S.getListWithColorMap(h),$=`${(E=J(o))!=null?E:""}`,T=b[$];T&&(O={...O,interceptorStyle:{...O.interceptorStyle,bg:{rgb:T}}})}return t({...o,...O,dataValidation:{ruleId:p,validStatus:v,rule:h,validator:S},markers:{...o==null?void 0:o.markers,...v===s.DataValidationStatus.INVALID?Fr:null},customRender:[...(w=o==null?void 0:o.customRender)!=null?w:[],...S!=null&&S.canvasRender?[S.canvasRender]:[]],fontRenderExtension:{...o==null?void 0:o.fontRenderExtension,isSkip:S==null?void 0:S.skipDefaultFontRender(h,M,e)},interceptorStyle:{...o==null?void 0:o.interceptorStyle,...O.interceptorStyle},get interceptorAutoHeight(){var T,U,H,x;const b=c.mergeData.find(j=>{const{startColumn:N,startRow:k,endColumn:Y,endRow:X}=j;return a>=k&&r>=N&&a<=X&&r<=Y}),$={data:{...o,dataValidation:{ruleId:p,validStatus:v,rule:h,validator:S}},style:c.getsStyles().getStyleByCell(o),primaryWithCoord:c.getCellByIndex((T=b==null?void 0:b.startRow)!=null?T:a,(U=b==null?void 0:b.startColumn)!=null?U:r),unitId:n,subUnitId:l,row:a,col:r};return(x=(H=S==null?void 0:S.canvasRender)==null?void 0:H.calcCellAutoHeight)==null?void 0:x.call(H,$)}})}}))}};exports.DataValidationRenderController=Er([s.OnLifecycle(s.LifecycleStages.Rendered,exports.DataValidationRenderController),re(0,V.Inject(B.ComponentManager)),re(1,B.IMenuService),re(2,V.Inject(R.DataValidationModel)),re(3,V.Inject(P.SheetSkeletonManagerService)),re(4,z.IRenderManagerService),re(5,s.IUniverInstanceService),re(6,V.Inject(R.DataValidatorRegistryService)),re(7,P.IEditorBridgeService),re(8,V.Inject(Se)),re(9,V.Inject(ae.SheetInterceptorService)),re(10,V.Inject(V.Injector))],exports.DataValidationRenderController);var wr=Object.defineProperty,Tr=Object.getOwnPropertyDescriptor,Lr=(i,o,e,t)=>{for(var a=t>1?void 0:t?Tr(o,e):o,r=i.length-1,n;r>=0;r--)(n=i[r])&&(a=(t?n(o,e,a):n(a))||a);return t&&a&&wr(o,e,a),a},br=(i,o)=>(e,t)=>o(e,t,i);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=Lr([br(0,V.Inject(R.DataValidationModel))],exports.SheetDataValidationService);class Oe{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 n=this._ensureCache(o,e);r.forEach(l=>{s.Range.foreach(l,(d,c)=>{const u=n.getValue(d,c);u&&(u.temp=!0)})}),a.forEach(l=>{s.Range.foreach(l,(d,c)=>{const u=n.getValue(d,c);u&&u.ruleId===t?u.temp=!1:n.setValue(d,c,void 0)})}),r.forEach(l=>{s.Range.foreach(l,(d,c)=>{const u=n.getValue(d,c);u&&u.temp===!0&&n.realDeleteValue(d,c)})})}markRangeDirty(o,e,t){const a=this._ensureCache(o,e);t.forEach(r=>{s.Range.foreach(r,(n,l)=>{a.setValue(n,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,(n,l)=>{a.realDeleteValue(n,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 Ar=Object.defineProperty,Nr=Object.getOwnPropertyDescriptor,Ur=(i,o,e,t)=>{for(var a=t>1?void 0:t?Nr(o,e):o,r=i.length-1,n;r>=0;r--)(n=i[r])&&(a=(t?n(o,e,a):n(a))||a);return t&&a&&Ar(o,e,a),a},be=(i,o)=>(e,t)=>o(e,t,i);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 n=a[r],{formulaCellMap:l,ruleFormulaMap:d}=this._ensureMaps(t,r),c=this._dataValidationModel.ensureManager(t,r);n.forEach(u=>{var g,v;const m=d.get((g=u.extra)==null?void 0:g.ruleId),p=l.get(u.formulaId),h=c.getRuleById((v=u.extra)==null?void 0:v.ruleId);h&&m&&!m.isTransformable&&this._dataValidationCacheService.markRangeDirty(t,r,h.ranges),p&&this._dataValidationCacheService.markCellDirty(t,r,p.row,p.column)})}}}))}_ensureMaps(e,t){let a=this._formulaMap.get(e),r=this._ruleFormulaMap.get(e),n=this._formulaCellMap.get(e);(!a||!r||!n)&&(a=new Map,r=new Map,n=new Map,this._formulaMap.set(e,a),this._ruleFormulaMap.set(e,r),this._formulaCellMap.set(e,n));let l=a.get(t),d=r.get(t),c=n.get(t);return(!l||!d||!c)&&(l=new s.ObjectMatrix,a.set(t,l),d=new Map,r.set(t,d),c=new Map,n.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:n,ruleFormulaMap:l}=this._ensureMaps(e,t),d=this._dataValidationModel.getRuleById(e,t,a),c=new Set,u=l.get(a);!d||!u||(l.delete(a),d.ranges.forEach(m=>{s.Range.foreach(m,(p,h)=>{const g=r.getValue(p,h);if(g&&g.ruleId===a){const{formulaId:v}=g;r.realDeleteValue(p,h),c.add(v),n.delete(v)}})}),this._registerOtherFormulaService.deleteFormula(e,t,Array.from(c.values())))}_addFormulaByRange(e,t,a,r,n){const{formulaMap:l,ruleFormulaMap:d,formulaCellMap:c}=this._ensureMaps(e,t);if(!r)return;const u=se.isFormulaTransformable(this._lexerTreeBuilder,r),m=n[0].startRow,p=n[0].startColumn;let h;u?n.forEach(g=>{s.Range.foreach(g,(v,S)=>{const M=se.transformFormula(this._lexerTreeBuilder,r,m,p,v,S),O=this._registerFormula(e,t,a,M);l.setValue(v,S,{formulaId:O,ruleId:a}),c.set(O,{row:v,column:S})})}):(h=this._registerFormula(e,t,a,r),n.forEach(g=>{s.Range.foreach(g,(v,S)=>{l.setValue(v,S,{formulaId:h,ruleId:a})})})),d.set(a,{formula:r,originCol:p,originRow:m,isTransformable:u,formulaId:h})}addRule(e,t,a){const{ranges:r,formula1:n,uid:l,type:d}=a;d!==s.DataValidationType.CUSTOM||!n||!s.isFormulaString(n)||this._addFormulaByRange(e,t,l,n,r)}updateRuleRanges(e,t,a,r,n){const{formulaMap:l,ruleFormulaMap:d,formulaCellMap:c}=this._ensureMaps(e,t),u=d.get(a);if(!u)return;const{formula:m,originCol:p,originRow:h,isTransformable:g,formulaId:v}=u,S=new Set;r.forEach(M=>{s.Range.foreach(M,(O,y)=>{const C=l.getValue(O,y);C&&C.ruleId===a&&(C.temp=!0)})}),n.forEach(M=>{s.Range.foreach(M,(O,y)=>{var E;const C=(E=l.getValue(O,y))!=null?E:{};if(C.ruleId!==a){const w=d.get(C.ruleId);if(w!=null&&w.isTransformable&&S.add(C.formulaId),g){const b=se.transformFormula(this._lexerTreeBuilder,m,h,p,O,y),$=this._registerFormula(e,t,a,b);l.setValue(O,y,{ruleId:a,formulaId:$}),c.set($,{row:O,column:y})}else l.setValue(O,y,{ruleId:a,formulaId:v})}else C.temp=!1})}),r.forEach(M=>{s.Range.foreach(M,(O,y)=>{const C=l.getValue(O,y);C&&C.ruleId===a&&C.temp===!0&&(l.realDeleteValue(O,y),g&&S.add(C.formulaId))})}),S.forEach(M=>{c.delete(M)}),this._registerOtherFormulaService.deleteFormula(e,t,Array.from(S.values()))}updateRuleFormula(e,t,a,r,n){const{ruleFormulaMap:l}=this._ensureMaps(e,t),d=l.get(a);(!d||d.formula!==n)&&this._addFormulaByRange(e,t,a,n,r)}getCellFormulaValue(e,t,a,r){const{formulaMap:n}=this._ensureMaps(e,t),l=n.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=Ur([be(0,V.Inject(qe.RegisterOtherFormulaService)),be(1,V.Inject(se.LexerTreeBuilder)),be(2,V.Inject(R.DataValidationModel)),be(3,V.Inject(Oe))],exports.DataValidationCustomFormulaService);function ce(i){var o,e;return(e=(o=i==null?void 0:i[0])==null?void 0:o[0])==null?void 0:e.v}class jr extends R.BaseDataValidator{constructor(){super(...arguments);_(this,"id",s.DataValidationType.CUSTOM);_(this,"title","dataValidation.custom.title");_(this,"operators",[]);_(this,"scopes",["sheet"]);_(this,"formulaInput",Wt);_(this,"_customFormulaService",this.injector.get(exports.DataValidationCustomFormulaService))}validatorFormula(e){const t=s.isFormulaString(e.formula1);return{success:t,formula1:t?"":this.localeService.t("dataValidation.validFail.formula")}}async parseFormula(e,t,a){return{formula1:void 0,formula2:void 0}}async isValidType(e,t,a){const{column:r,row:n,unitId:l,subUnitId:d}=e,c=await this._customFormulaService.getCellFormulaValue(l,d,n,r);return!!ce(c==null?void 0:c.result)}generateRuleErrorMessage(e){return this.localeService.t("dataValidation.custom.error")}}var Pr=Object.defineProperty,xr=Object.getOwnPropertyDescriptor,Br=(i,o,e,t)=>{for(var a=t>1?void 0:t?xr(o,e):o,r=i.length-1,n;r>=0;r--)(n=i[r])&&(a=(t?n(o,e,a):n(a))||a);return t&&a&&Pr(o,e,a),a},Je=(i,o)=>(e,t)=>o(e,t,i);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 n=a[r],l=this._ensureRuleFormulaMap(t,r),d=this._dataValidationModel.ensureManager(t,r);n.forEach(c=>{var u,m;if(l.get((u=c.extra)==null?void 0:u.ruleId)){const p=d.getRuleById((m=c.extra)==null?void 0:m.ruleId);p&&this._dataValidationCacheService.markRangeDirty(t,r,p.ranges)}})}}}))}_ensureRuleFormulaMap(e,t){let a=this._formulaRuleMap.get(e);a||(a=new Map,this._formulaRuleMap.set(e,a));let r=a.get(t);return r||(r=new Map,a.set(t,r)),r}addRule(e,t,a,r,n){const l=s.isFormulaString(r),d=s.isFormulaString(n);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,n,{ruleId:a});u[1]={id:m,text:n}}c.set(a,u)}removeRule(e,t,a){const n=this._ensureRuleFormulaMap(e,t).get(a);if(!n)return;const[l,d]=n,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,n){const d=this._ensureRuleFormulaMap(e,t).get(a);if(!d){this.addRule(e,t,a,r,n);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)!==n)if(u&&this._registerOtherFormulaService.deleteFormula(e,t,[u.id]),s.isFormulaString(n)){const m=this._registerOtherFormulaService.registerFormula(e,t,n,{ruleId:a});d[1]={text:n,id:m}}else d[1]=void 0}getRuleFormulaResult(e,t,a){const n=this._ensureRuleFormulaMap(e,t).get(a);if(!n)return Promise.resolve(null);const l=async d=>d&&this._registerOtherFormulaService.getFormulaValue(e,t,d.id);return Promise.all([l(n[0]),l(n[1])])}getRuleFormulaResultSync(e,t,a){const n=this._ensureRuleFormulaMap(e,t).get(a);if(n)return n.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=Br([Je(0,V.Inject(qe.RegisterOtherFormulaService)),Je(1,V.Inject(Oe)),Je(2,V.Inject(R.DataValidationModel))],exports.DataValidationFormulaService);var $r=Object.defineProperty,Hr=Object.getOwnPropertyDescriptor,Wr=(i,o,e,t)=>{for(var a=t>1?void 0:t?Hr(o,e):o,r=i.length-1,n;r>=0;r--)(n=i[r])&&(a=(t?n(o,e,a):n(a))||a);return t&&a&&$r(o,e,a),a},et=(i,o)=>(e,t)=>o(e,t,i);const Ae=6;let lt=class{constructor(i,o,e){this._commandService=i,this._formulaService=o,this._themeService=e}_calc(i,o){var c,u,m;const{vt:e,ht:t}=o||{},a=i.endX-i.startX-Ae*2,r=i.endY-i.startY,n=((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-n);break;default:d=0+(r-n)/2;break}switch(t){case s.HorizontalAlign.LEFT:l=Ae;break;case s.HorizontalAlign.RIGHT:l=Ae+(a-n);break;default:l=Ae+(a-n)/2;break}return{left:i.startX+l,top:i.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(){}async _parseFormula(i,o,e){var n,l;const{formula1:t=Ee,formula2:a=Be}=i,r=await this._formulaService.getRuleFormulaResult(o,e,i.uid);return{formula1:s.isFormulaString(t)?ce((n=r==null?void 0:r[0])==null?void 0:n.result):t,formula2:s.isFormulaString(a)?ce((l=r==null?void 0:r[1])==null?void 0:l.result):a}}drawWith(i,o){var T,U,H,x,j;const{style:e,data:t,primaryWithCoord:a,unitId:r,subUnitId:n}=o,l=a.isMergedMainCell?a.mergeInfo:a,d=J(t),c=(T=t.dataValidation)==null?void 0:T.rule,u=(U=t.dataValidation)==null?void 0:U.validator;if(!c||!u)return;const m=this._themeService.getCurrentTheme();if(!u.skipDefaultFontRender(c,d,{unitId:r,subUnitId:n}))return;const{formula1:p=Ee}=c,h=this._calc(l,e),{a:g,d:v}=i.getTransform(),S=z.fixLineWidthByScale(h.left,g),M=z.fixLineWidthByScale(h.top,v),O=z.Transform.create().composeMatrix({left:S,top:M,scaleX:1,scaleY:1,angle:0,skewX:0,skewY:0,flipX:!1,flipY:!1}),y=l.endX-l.startX,C=l.endY-l.startY;i.save(),i.beginPath(),i.rect(l.startX,l.startY,y,C),i.clip();const E=O.getMatrix();i.transform(E[0],E[1],E[2],E[3],E[4],E[5]);const w=((H=e==null?void 0:e.fs)!=null?H:10)*1.6,b=String(d)===String(p),$=m.hyacinth500;z.Checkbox.drawWith(i,{checked:b,width:w,height:w,fill:(j=(x=e==null?void 0:e.cl)==null?void 0:x.rgb)!=null?j:$}),i.restore()}isHit(i,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,n=t.left,l=t.left+t.width,{x:d,y:c}=i;return d<=l&&d>=n&&c<=r&&c>=a}async onPointerDown(i,o){var p,h;if(o.button===2)return;const{primaryWithCoord:e,unitId:t,subUnitId:a,data:r}=i,n=J(r),l=(p=r.dataValidation)==null?void 0:p.rule,d=(h=r.dataValidation)==null?void 0:h.validator;if(!l||!d||!d.skipDefaultFontRender(l,n,{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(n)===String(c)?u:c,p:null}};this._commandService.executeCommand(ae.SetRangeValuesCommand.id,m)}};lt=Wr([et(0,s.ICommandService),et(1,V.Inject(exports.DataValidationFormulaService)),et(2,V.Inject(s.ThemeService))],lt);const Ee=1,Be=0;class kr extends R.BaseDataValidator{constructor(){super(...arguments);_(this,"id",s.DataValidationType.CHECKBOX);_(this,"title","dataValidation.checkbox.title");_(this,"operators",[]);_(this,"scopes",["sheet"]);_(this,"formulaInput",qt);_(this,"canvasRender",this.injector.createInstance(lt));_(this,"_formulaService",this.injector.get(exports.DataValidationFormulaService))}skipDefaultFontRender(e,t,a){const{formula1:r,formula2:n}=this.parseFormulaSync(e,a.unitId,a.subUnitId),l=`${t!=null?t:""}`;return!l||l===`${r}`||l===`${n}`}validatorFormula(e){const{formula1:t=Ee,formula2:a=Be}=e,r=!s.Tools.isBlank(t),n=!s.Tools.isBlank(a);return{success:r&&n,formula1:r?"":this.localeService.t("dataValidation.validFail.common"),formula2:n?"":this.localeService.t("dataValidation.validFail.common")}}async parseFormula(e,t,a){var d,c;const{formula1:r=Ee,formula2:n=Be}=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(n)?ce((c=l==null?void 0:l[1])==null?void 0:c.result):n}}parseFormulaSync(e,t,a){var d,c;const{formula1:r=Ee,formula2:n=Be}=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(n)?ce((c=l==null?void 0:l[1])==null?void 0:c.result):n}}async isValidType(e,t,a){const{value:r,unitId:n,subUnitId:l}=e,{formula1:d,formula2:c}=await this.parseFormula(a,n,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 Fe=[s.DataValidationOperator.BETWEEN,s.DataValidationOperator.NOT_BETWEEN],tt=86400;function qr(i,o=!0){if(o&&i>=0){if(i===0)return[1900,1,0];if(i===60)return[1900,2,29];if(i<60)return[1900,i<32?1:2,(i-1)%31+1]}let e=i+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),n=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,n|0]}const Yr=i=>{let o=i|0;const e=tt*(i-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,n,l]=qr(i,!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,n-1,l),m.setUTCHours(d,c,u),m.getTime()},zr={[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 Gr={[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"},Xr={[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"},_t="{FORMULA1}",St="{FORMULA2}",Rt=i=>_e(i).isValid(),Ne=i=>{if(!(i==null||typeof i=="boolean"))return typeof i=="number"||!Number.isNaN(+i)?_e(Yr(+i)):_e(i)};class Qr 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",Te);_(this,"dropdown",Ht);_(this,"_formulaService",this.injector.get(exports.DataValidationFormulaService));_(this,"transformDate",Ne)}async parseFormula(e,t,a){var d,c;const r=await this._formulaService.getRuleFormulaResult(t,a,e.uid),{formula1:n,formula2:l}=e;return{formula1:Ne(s.isFormulaString(n)?ce((d=r==null?void 0:r[0])==null?void 0:d.result):n),formula2:Ne(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"?_e(t).isValid():typeof t=="number"}_validatorSingleFormula(e){return!s.Tools.isBlank(e)&&(s.isFormulaString(e)||!Number.isNaN(+e)||!!e&&_e(e).isValid())}validatorFormula(e){const t=e.operator;if(!t)return{success:!1};const a=this._validatorSingleFormula(e.formula1),r=this.localeService.t("dataValidation.validFail.date");if(Fe.includes(t)){const l=this._validatorSingleFormula(e.formula2);return{success:a&&l,formula1:a?void 0:r,formula2:l?void 0:r}}return{success:a,formula1:a?void 0:r}}transform(e,t,a){const{value:r}=e;return{...e,value:Ne(r)}}async validatorIsEqual(e,t,a){const{value:r}=e,{formula1:n}=t;return n?r.isSame(n):!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:n}=t;if(!r||!n)return!1;const l=r.isAfter(n)?n:r,d=l===r?n: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:n}=t;if(!r||!n)return!1;const l=r.isAfter(n)?r:n,d=l===r?n: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(Fe.includes(e.operator)){if(s.Tools.isBlank(e.formula1)||s.Tools.isBlank(e.formula2))return"";if(!Rt(e.formula1)||!Rt(e.formula2))return""}else if(s.Tools.isBlank(e.formula1))return""}get operatorNames(){return this.operators.map(e=>this.localeService.t(zr[e]))}generateRuleName(e){var a,r;if(!e.operator)return this.titleStr;const t=this.localeService.t(Gr[e.operator]).replace(_t,(a=e.formula1)!=null?a:"").replace(St,(r=e.formula2)!=null?r:"");return`${this.titleStr} ${t}`}generateRuleErrorMessage(e){var a,r;return e.operator?`${this.localeService.t(Xr[e.operator]).replace(_t,(a=e.formula1)!=null?a:"").replace(St,(r=e.formula2)!=null?r:"")}`:this.titleStr}}var Kr=Object.defineProperty,Zr=Object.getOwnPropertyDescriptor,Jr=(i,o,e,t)=>{for(var a=t>1?void 0:t?Zr(o,e):o,r=i.length-1,n;r>=0;r--)(n=i[r])&&(a=(t?n(o,e,a):n(a))||a);return t&&a&&Kr(o,e,a),a},Ue=(i,o)=>(e,t)=>o(e,t,i);const Me=4,eo=6,ne=14,pe=6,de=2,to="#565656",Vt=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 ao(i,o){const e=i.length;return{id:"d",body:{dataStream:`${i}${s.DEFAULT_EMPTY_DOCUMENT_VALUE}`,textRuns:[{ts:{fs:11,ff:void 0,it:s.BooleanNumber.FALSE,bl:s.BooleanNumber.FALSE,ul:{s:s.BooleanNumber.FALSE},st:{s:s.BooleanNumber.FALSE},ol:{s:s.BooleanNumber.FALSE},cl:void 0,...o,bg:void 0,bd:void 0},st:0,ed:e}]},documentStyle:{pageSize:{width:Number.POSITIVE_INFINITY,height:Number.POSITIVE_INFINITY}}}}function dt(i,o,e){const t=ao(i,e),a=new s.DocumentDataModel(t),r=new z.DocumentViewModel(a);return{documentSkeleton:z.DocumentSkeleton.create(r,o),docModel:a,docViewModel:r}}function Mt(i,o,e){const{documentSkeleton:t,docModel:a,docViewModel:r}=dt(i,o,e);return{documents:new z.Documents(`DOCUMENTS_${s.Tools.generateRandomId()}`,t,{pageMarginLeft:0,pageMarginTop:0}),documentSkeleton:t,docModel:a,docViewModel:r}}var st;let ct=(st=class{constructor(i,o,e,t){_(this,"_dropdownInfoMap",new Map);_(this,"zIndex");_(this,"onPointerEnter");_(this,"onPointerLeave");this._localeService=i,this._commandService=o,this._dataValidationModel=e,this._dataValidatorRegistryService=t}_ensureMap(i){let o=this._dropdownInfoMap.get(i);return o||(o=new Map,this._dropdownInfoMap.set(i,o)),o}_generateKey(i,o){return`${i}.${o}`}_drawDownIcon(i,o,e,t,a){const r=e-ne+4;let n=4;switch(a){case s.VerticalAlign.MIDDLE:n=(t-ne)/2+4;break;case s.VerticalAlign.BOTTOM:n=t-ne+4;break}i.save(),i.translateWithPrecision(o.startX+r,o.startY+n),i.fillStyle="#565656",i.fill(Vt),i.restore()}drawWith(i,o,e){var b,$;const{primaryWithCoord:t,row:a,col:r,style:n,data:l,subUnitId:d}=o,c=t.isMergedMainCell?t.mergeInfo:t,u=c.endX-c.startX,m=c.endY-c.startY,p=this._ensureMap(d),h=this._generateKey(a,r),g=(b=l.dataValidation)==null?void 0:b.rule,v=($=l.dataValidation)==null?void 0:$.validator;if(!g||!v||!v.skipDefaultFontRender(g))return;const S=v.getListWithColor(g),M=J(l),O=`${M!=null?M:""}`,y=S.find(T=>T.label===O);let{tb:C,vt:E,ht:w}=n||{};if(C=C!=null?C:s.WrapStrategy.WRAP,E=E!=null?E:s.VerticalAlign.TOP,w=w!=null?w:s.HorizontalAlign.LEFT,g.renderMode===s.DataValidationRenderMode.ARROW){this._drawDownIcon(i,c,u,m,E),i.save(),i.translateWithPrecision(c.startX,c.startY),i.beginPath(),i.rect(0,0,u,m),i.clip();const T=u-ne,{documentSkeleton:U,documents:H,docModel:x}=Mt(O,this._localeService,n);C===s.WrapStrategy.WRAP&&x.updateDocumentDataPageSize(T),U.calculate(),U.getActualSize();const j=z.getDocsSkeletonPageSize(U),{height:N,width:k}=j;let Y=0;switch(E){case s.VerticalAlign.BOTTOM:Y=m-de-N;break;case s.VerticalAlign.MIDDLE:Y=(m-de-N)/2;break;default:Y=de;break}let X=0;switch(w){case s.HorizontalAlign.CENTER:X=(T-k)/2;break;case s.HorizontalAlign.RIGHT:X=T-k;break}i.translate(0,Y),i.save(),i.translateWithPrecision(Me,0),i.beginPath(),i.rect(0,0,T,N),i.clip(),H.render(i),i.translateWithPrecision(X,0),i.restore(),i.restore(),p.set(h,{left:c.endX+e.rowHeaderWidth-ne,top:c.startY+e.columnHeaderHeight,width:ne,height:m})}else{i.save(),i.translateWithPrecision(c.startX,c.startY),i.beginPath(),i.rect(0,0,u,m),i.clip();const T=u-pe*2-Me-ne,{documentSkeleton:U,documents:H,docModel:x}=Mt(O,this._localeService,n);C===s.WrapStrategy.WRAP&&x.updateDocumentDataPageSize(T),U.calculate();const j=z.getDocsSkeletonPageSize(U),{height:N,width:k}=j;let Y=0;switch(E){case s.VerticalAlign.BOTTOM:Y=m-de-N;break;case s.VerticalAlign.MIDDLE:Y=(m-de-N)/2;break;default:Y=de;break}let X=0;switch(w){case s.HorizontalAlign.CENTER:X=(T-k)/2;break;case s.HorizontalAlign.RIGHT:X=T-k;break}i.translate(pe,Y);const oe=u-pe*2,F=N;z.Rect.drawWith(i,{width:oe,height:F,fill:(y==null?void 0:y.color)||ge,radius:8}),i.save(),i.translateWithPrecision(Me,0),i.beginPath(),i.rect(0,0,T,N),i.clip(),i.translateWithPrecision(X,0),H.render(i),i.restore(),i.translate(T+Me+4,(N-eo)/2),i.fillStyle=to,i.fill(Vt),i.restore(),p.set(h,{left:c.startX+pe+e.rowHeaderWidth,top:c.startY+Y+e.columnHeaderHeight,width:oe,height:F})}}calcCellAutoHeight(i){var u;const{primaryWithCoord:o,style:e,data:t}=i,a=o.isMergedMainCell?o.mergeInfo:o,r=a.endX-a.startX,n=J(t),l=`${n!=null?n:""}`,d=(u=t.dataValidation)==null?void 0:u.rule;if(!d||d.renderMode===s.DataValidationRenderMode.TEXT)return;let{tb:c}=e||{};if(c=c!=null?c:s.WrapStrategy.WRAP,d.renderMode===s.DataValidationRenderMode.ARROW){const m=r-ne,{documentSkeleton:p,docModel:h}=dt(l,this._localeService,e);c===s.WrapStrategy.WRAP&&h.updateDocumentDataPageSize(m),p.calculate(),p.getActualSize();const g=z.getDocsSkeletonPageSize(p),{height:v}=g;return v}else{const m=r-pe*2-Me-ne,{documentSkeleton:p,docModel:h}=dt(l,this._localeService,e);c===s.WrapStrategy.WRAP&&h.updateDocumentDataPageSize(m),p.calculate(),p.getActualSize();const g=z.getDocsSkeletonPageSize(p),{height:v}=g;return v+de*2}}isHit(i,o){const{data:e,subUnitId:t,row:a,col:r}=o,l=this._ensureMap(t).get(this._generateKey(a,r));if(!e.dataValidation||!l)return!1;const{top:c,left:u,width:m,height:p}=l,{x:h,y:g}=i;return h>=u&&h<=u+m&&g>=c&&g<=c+p}onPointerDown(i,o){if(o.button===2)return;const{unitId:e,subUnitId:t,row:a,col:r}=i,n={unitId:e,subUnitId:t,row:a,column:r};this._commandService.executeCommand(ze.id,n)}},_(st,"padding",{l:pe+Me,r:ne+pe,t:de,b:de}),st);ct=Jr([Ue(0,V.Inject(s.LocaleService)),Ue(1,s.ICommandService),Ue(2,V.Inject(R.DataValidationModel)),Ue(3,V.Inject(R.DataValidatorRegistryService))],ct);function at(i){if(!i)return[];const o=new Set;return i.forEach(e=>{e.forEach(t=>{const a=J(t);a!=null&&o.add(a.toString())})}),[...o]}const ro=["if","indirect","choose","offset"];function oo(i,o){if(!s.isFormulaString(i)||se.isReferenceString(i.slice(1)))return!0;const t=o.sequenceNodesBuilder(i);return t&&t.some(a=>typeof a=="object"&&a.nodeType===se.sequenceNodeType.FUNCTION&&ro.indexOf(a.token.toLowerCase())>-1)}class zt extends R.BaseDataValidator{constructor(){super(...arguments);_(this,"formulaService",this.injector.get(exports.DataValidationFormulaService));_(this,"_lexer",this.injector.get(se.LexerTreeBuilder));_(this,"id",s.DataValidationType.LIST);_(this,"title","dataValidation.list.title");_(this,"operators",[]);_(this,"scopes",["sheet"]);_(this,"formulaInput",kt);_(this,"canvasRender",this.injector.createInstance(ct));_(this,"dropdown",$t);_(this,"optionsInput",He.componentKey)}skipDefaultFontRender(e){return e.renderMode!==s.DataValidationRenderMode.TEXT}validatorFormula(e){var r;const t=!s.Tools.isBlank(e.formula1),a=oo((r=e.formula1)!=null?r:"",this._lexer);return{success:!!(t&&a),formula1:t?a?void 0:this.localeService.t("dataValidation.validFail.listInvalid"):this.localeService.t("dataValidation.validFail.list")}}parseCellValue(e){const t=e.toString();return De(t)}async parseFormula(e,t,a){var l;const{formula1:r=""}=e,n=await this.formulaService.getRuleFormulaResult(t,a,e.uid);return{formula1:s.isFormulaString(r)?at((l=n==null?void 0:n[0])==null?void 0:l.result):De(r),formula2:void 0}}async isValidType(e,t,a){const{value:r}=e,{formula1:n=[]}=t;return this.parseCellValue(r).every(d=>n.includes(d))}generateRuleName(){return this.localeService.t("dataValidation.list.name")}generateRuleErrorMessage(){return this.localeService.t("dataValidation.list.error")}getList(e,t,a){var p,h,g;const{formula1:r=""}=e,n=this.injector.get(s.IUniverInstanceService),l=(p=t?n.getUniverSheetInstance(t):void 0)!=null?p:n.getCurrentUnitForType(s.UniverInstanceType.UNIVER_SHEET);if(!l)return[];const d=(h=a?l.getSheetBySheetId(a):void 0)!=null?h:l.getActiveSheet(),c=l.getUnitId(),u=d.getSheetId(),m=this.formulaService.getRuleFormulaResultSync(c,u,e.uid);return s.isFormulaString(r)?at((g=m==null?void 0:m[0])==null?void 0:g.result):De(r)}async getListAsync(e,t,a){var p,h,g;const{formula1:r=""}=e,n=this.injector.get(s.IUniverInstanceService),l=(p=t?n.getUniverSheetInstance(t):void 0)!=null?p:n.getCurrentUnitForType(s.UniverInstanceType.UNIVER_SHEET);if(!l)return[];const d=(h=a?l.getSheetBySheetId(a):void 0)!=null?h:l.getActiveSheet(),c=l.getUnitId(),u=d.getSheetId(),m=await this.formulaService.getRuleFormulaResult(c,u,e.uid);return s.isFormulaString(r)?at((g=m==null?void 0:m[0])==null?void 0:g.result):De(r)}getListWithColor(e,t,a){const r=this.getList(e,t,a),n=(e.formula2||"").split(",");return r.map((l,d)=>({label:l,color:n[d]}))}getListWithColorMap(e,t,a){const r=this.getListWithColor(e,t,a),n={};return r.forEach(l=>{l.color&&(n[l.label]=l.color)}),n}}function We(i){let o=i;return typeof i=="string"?((i.startsWith("¥")||i.startsWith("$"))&&(o=i.slice(1)),+o):+i}class no extends R.BaseDataValidator{constructor(){super(...arguments);_(this,"_formulaService",this.injector.get(exports.DataValidationFormulaService));_(this,"id",s.DataValidationType.DECIMAL);_(this,"title",this.localeService.t("dataValidation.decimal.title"));_(this,"operators",[s.DataValidationOperator.BETWEEN,s.DataValidationOperator.EQUAL,s.DataValidationOperator.GREATER_THAN,s.DataValidationOperator.GREATER_THAN_OR_EQUAL,s.DataValidationOperator.LESS_THAN,s.DataValidationOperator.LESS_THAN_OR_EQUAL,s.DataValidationOperator.NOT_BETWEEN,s.DataValidationOperator.NOT_EQUAL]);_(this,"scopes",["sheet"]);_(this,"formulaInput",Te);_(this,"dropDownInput")}_isFormulaOrNumber(e){return!s.Tools.isBlank(e)&&(s.isFormulaString(e)||!Number.isNaN(+e))}async isValidType(e,t,a){const{value:r}=e;return!Number.isNaN(We(r))}transform(e,t,a){const{value:r}=e;return{...e,value:We(r)}}_parseNumber(e){return e==null?Number.NaN:+e}async parseFormula(e,t,a){var c,u,m,p,h,g,v,S;const r=await this._formulaService.getRuleFormulaResult(t,a,e.uid),{formula1:n,formula2:l}=e;return{formula1:this._parseNumber(s.isFormulaString(n)?(p=(m=(u=(c=r==null?void 0:r[0])==null?void 0:c.result)==null?void 0:u[0])==null?void 0:m[0])==null?void 0:p.v:n),formula2:this._parseNumber(s.isFormulaString(l)?(S=(v=(g=(h=r==null?void 0:r[1])==null?void 0:h.result)==null?void 0:g[0])==null?void 0:v[0])==null?void 0:S.v:l)}}validatorFormula(e){const t=e.operator;if(!t)return{success:!1};const a=s.Tools.isDefine(e.formula1)&&this._isFormulaOrNumber(e.formula1),r=s.Tools.isDefine(e.formula2)&&this._isFormulaOrNumber(e.formula2),n=Fe.includes(t),l=this.localeService.t("dataValidation.validFail.number");return n?{success:a&&r,formula1:a?void 0:l,formula2:r?void 0:l}:{success:a,formula1:a?"":l}}async validatorIsEqual(e,t,a){const{formula1:r}=t,{value:n}=e;return Number.isNaN(r)?!0:n===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:n}=t;if(Number.isNaN(r)||Number.isNaN(n))return!0;const l=Math.min(r,n),d=Math.max(r,n);return e.value>=l&&e.value<=d}async validatorIsNotBetween(e,t,a){const{formula1:r,formula2:n}=t;if(Number.isNaN(r)||Number.isNaN(n))return!0;const l=Math.min(r,n),d=Math.max(r,n);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 io="{FORMULA1}",so="{FORMULA2}";class lo 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",Te);_(this,"_formulaService",this.injector.get(exports.DataValidationFormulaService))}_isFormulaOrInt(e){return!s.Tools.isBlank(e)&&(s.isFormulaString(e)||!Number.isNaN(+e)&&Number.isInteger(+e))}validatorFormula(e){const t=e.operator;if(!t)return{success:!1};const a=s.Tools.isDefine(e.formula1)&&this._isFormulaOrInt(e.formula1),r=s.Tools.isDefine(e.formula2)&&this._isFormulaOrInt(e.formula2),n=Fe.includes(t),l=this.localeService.t("dataValidation.validFail.number");return n?{success:a&&r,formula1:a?void 0:l,formula2:r?void 0:l}:{success:a,formula1:l}}_parseNumber(e){return e==null?Number.NaN:+e}_isValidFormula(e){return!Number.isNaN(e)}async parseFormula(e,t,a){var d,c,u,m,p,h,g,v;const r=await this._formulaService.getRuleFormulaResult(t,a,e.uid),{formula1:n,formula2:l}=e;return{formula1:this._parseNumber(s.isFormulaString(n)?(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:n),formula2:this._parseNumber(s.isFormulaString(l)?(v=(g=(h=(p=r==null?void 0:r[1])==null?void 0:p.result)==null?void 0:h[0])==null?void 0:g[0])==null?void 0:v.v:l)}}transform(e,t,a){return{...e,value:e.value.toString().length}}async isValidType(e,t,a){const{value:r}=e;return typeof r=="string"||typeof r=="number"}async validatorIsEqual(e,t,a){const{formula1:r}=t;return s.Tools.isDefine(r)?e.value===r:!1}async validatorIsNotEqual(e,t,a){const{formula1:r}=t;return s.Tools.isDefine(r)?e.value!==r:!1}async validatorIsBetween(e,t,a){const{formula1:r,formula2:n}=t,{value:l}=e;if(!this._isValidFormula(r)||!this._isValidFormula(n))return!1;const d=Math.max(r,n),c=Math.min(r,n);return l>=c&&l<=d}async validatorIsNotBetween(e,t,a){const{formula1:r,formula2:n}=t,{value:l}=e;if(!this._isValidFormula(r)||!this._isValidFormula(n))return!1;const d=Math.max(r,n),c=Math.min(r,n);return l>=c&&l<=d}async validatorIsGreaterThan(e,t,a){const{formula1:r}=t,{value:n}=e;return this._isValidFormula(r)?n>r:!1}async validatorIsGreaterThanOrEqual(e,t,a){const{formula1:r}=t,{value:n}=e;return this._isValidFormula(r)?n>=r:!1}async validatorIsLessThan(e,t,a){const{formula1:r}=t,{value:n}=e;return this._isValidFormula(r)?n<r:!1}async validatorIsLessThanOrEqual(e,t,a){const{formula1:r}=t,{value:n}=e;return this._isValidFormula(r)?n<=r:!1}generateRuleErrorMessage(e){var a,r;return e.operator?`${this.localeService.t(R.TextLengthErrorTitleMap[e.operator]).replace(io,(a=e.formula1)!=null?a:"").replace(so,(r=e.formula2)!=null?r:"")}`:this.titleStr}}class co extends R.BaseDataValidator{constructor(){super(...arguments);_(this,"_formulaService",this.injector.get(exports.DataValidationFormulaService));_(this,"id",s.DataValidationType.WHOLE);_(this,"title",this.localeService.t("dataValidation.whole.title"));_(this,"operators",[s.DataValidationOperator.BETWEEN,s.DataValidationOperator.EQUAL,s.DataValidationOperator.GREATER_THAN,s.DataValidationOperator.GREATER_THAN_OR_EQUAL,s.DataValidationOperator.LESS_THAN,s.DataValidationOperator.LESS_THAN_OR_EQUAL,s.DataValidationOperator.NOT_BETWEEN,s.DataValidationOperator.NOT_EQUAL]);_(this,"scopes",["sheet"]);_(this,"formulaInput",Te);_(this,"dropDownInput")}_isFormulaOrInt(e){return!s.Tools.isBlank(e)&&(s.isFormulaString(e)||!Number.isNaN(+e)&&Number.isInteger(+e))}async isValidType(e,t,a){const{value:r}=e,n=We(r);return!Number.isNaN(n)&&Number.isInteger(n)}transform(e,t,a){const{value:r}=e;return{...e,value:We(r)}}_parseNumber(e){return e==null?Number.NaN:+e}async parseFormula(e,t,a){var c,u,m,p,h,g,v,S;const r=await this._formulaService.getRuleFormulaResult(t,a,e.uid),{formula1:n,formula2:l}=e;return{formula1:this._parseNumber(s.isFormulaString(n)?(p=(m=(u=(c=r==null?void 0:r[0])==null?void 0:c.result)==null?void 0:u[0])==null?void 0:m[0])==null?void 0:p.v:n),formula2:this._parseNumber(s.isFormulaString(l)?(S=(v=(g=(h=r==null?void 0:r[1])==null?void 0:h.result)==null?void 0:g[0])==null?void 0:v[0])==null?void 0:S.v:l)}}validatorFormula(e){const t=e.operator;if(!t)return{success:!1};const a=s.Tools.isDefine(e.formula1)&&this._isFormulaOrInt(e.formula1),r=s.Tools.isDefine(e.formula2)&&this._isFormulaOrInt(e.formula2),n=Fe.includes(t),l=this.localeService.t("dataValidation.validFail.number");return n?{success:a&&r,formula1:a?void 0:l,formula2:r?void 0:l}:{success:a,formula1:l}}async validatorIsEqual(e,t,a){const{formula1:r}=t,{value:n}=e;return Number.isNaN(r)?!0:n===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:n}=t;if(Number.isNaN(r)||Number.isNaN(n))return!0;const l=Math.min(r,n),d=Math.max(r,n);return e.value>=l&&e.value<=d}async validatorIsNotBetween(e,t,a){const{formula1:r,formula2:n}=t;if(Number.isNaN(r)||Number.isNaN(n))return!0;const l=Math.min(r,n),d=Math.max(r,n);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 Gt=4,uo=0,rt=4,Xt=4,ut=6,ke=6,fe=14;function mo(i,o){const e=z.FontCache.getTextSize(i,o),t=e.width+Gt*2,{ba:a,bd:r}=e,n=a+r;return{width:t,height:n+uo*2,ba:a}}function Dt(i,o,e,t){const a=e-fe-ut,r=t-ke*2,n=i.map(u=>({layout:mo(u,o),text:u}));let l;const d=[];n.forEach(u=>{const{layout:m}=u,{width:p,height:h}=m;!l||l.width+p+rt>a?(l={width:p,height:h,items:[{...u,left:0}]},d.push(l)):(l.items.push({...u,left:l.width+rt}),l.width=l.width+p+rt)});let c=0;return d.forEach((u,m)=>{m===d.length-1?c+=u.height:c+=u.height+Xt}),{lines:d,totalHeight:c,contentWidth:a,contentHeight:r,cellAutoHeight:c+ke*2}}const ho=8;class po extends z.Shape{static drawWith(o,e){const{fontFamily:t,fontString:a,fontSize:r,info:n,fill:l,color:d}=e,{layout:c,text:u}=n;o.save(),z.Rect.drawWith(o,{width:c.width,height:c.height,radius:ho,fill:l||ge}),o.translateWithPrecision(Gt,c.ba),o.font=a,o.fillStyle=d,o.fillText(u,0,0),o.restore()}}var fo=Object.defineProperty,go=Object.getOwnPropertyDescriptor,vo=(i,o,e,t)=>{for(var a=t>1?void 0:t?go(o,e):o,r=i.length-1,n;r>=0;r--)(n=i[r])&&(a=(t?n(o,e,a):n(a))||a);return t&&a&&fo(o,e,a),a},_o=(i,o)=>(e,t)=>o(e,t,i);const So=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 mt=class{constructor(i){_(this,"zIndex");_(this,"_dropdownInfoMap",new Map);this._commandService=i}_ensureMap(i){let o=this._dropdownInfoMap.get(i);return o||(o=new Map,this._dropdownInfoMap.set(i,o)),o}_generateKey(i,o){return`${i}.${o}`}_drawDownIcon(i,o,e,t,a){const r=e-fe+4;let n=4;switch(a){case s.VerticalAlign.MIDDLE:n=(t-fe)/2+4;break;case s.VerticalAlign.BOTTOM:n=t-fe+4;break}i.save(),i.translateWithPrecision(o.startX+r,o.startY+n),i.fillStyle="#565656",i.fill(So),i.restore()}drawWith(i,o,e,t){var N,k;const{primaryWithCoord:a,row:r,col:n,style:l,data:d,subUnitId:c}=o,u=a.isMergedMainCell?a.mergeInfo:a,m=d.dataValidation,p=u.endX-u.startX,h=u.endY-u.startY,g=this._ensureMap(c),v=this._generateKey(r,n);if(!m)return;const{cl:S}=l||{},M=(N=typeof S=="object"?S==null?void 0:S.rgb:S)!=null?N:"#000",O=z.getFontStyleString(l!=null?l:void 0),{rule:y,validator:C}=m,E=C,{vt:w,ht:b}=l||{},$=w!=null?w:s.VerticalAlign.MIDDLE,T=(k=J(d))!=null?k:"",U=E.parseCellValue(T),H=E.getListWithColorMap(y),x=Dt(U,O,p,h);this._drawDownIcon(i,u,p,h,$),i.save(),i.translateWithPrecision(u.startX,u.startY),i.beginPath(),i.rect(0,0,p-fe,h),i.clip(),i.translateWithPrecision(ut,ke);let j=0;switch($){case s.VerticalAlign.MIDDLE:j=(x.contentHeight-x.totalHeight)/2;break;case s.VerticalAlign.BOTTOM:j=x.contentHeight-x.totalHeight;break}i.translateWithPrecision(0,j),x.lines.forEach((Y,X)=>{i.save();const{width:oe,height:F,items:W}=Y;let Z=0;switch(b){case s.HorizontalAlign.RIGHT:Z=x.contentWidth-oe;break;case s.HorizontalAlign.CENTER:Z=(x.contentWidth-oe)/2;break}i.translate(Z,X*(F+Xt)),W.forEach(Q=>{i.save(),i.translateWithPrecision(Q.left,0),po.drawWith(i,{...O,info:Q,color:M,fill:H[Q.text]}),i.restore()}),i.restore()}),i.restore(),g.set(v,{left:u.startX,top:u.startY,width:x.contentWidth+ut+fe,height:x.contentHeight+ke*2})}calcCellAutoHeight(i){var g;const{primaryWithCoord:o,style:e,data:t}=i,a=o.isMergedMainCell?o.mergeInfo:o,r=t.dataValidation;if(!r)return;const n=a.endX-a.startX,l=a.endY-a.startY,d=(g=J(t))!=null?g:"",{validator:c}=r,m=c.parseCellValue(d),p=z.getFontStyleString(e!=null?e:void 0);return Dt(m,p,n,l).cellAutoHeight}isHit(i,o){const{primaryWithCoord:e}=o,t=e.isMergedMainCell?e.mergeInfo:e,{endX:a}=t,{x:r}=i;return r>=a-fe&&r<=a}onPointerDown(i,o){if(o.button===2)return;const{unitId:e,subUnitId:t,row:a,col:r}=i,n={unitId:e,subUnitId:t,row:a,column:r};this._commandService.executeCommand(ze.id,n)}};mt=vo([_o(0,s.ICommandService)],mt);class Ro extends zt{constructor(){super(...arguments);_(this,"id",s.DataValidationType.LIST_MULTIPLE);_(this,"title","dataValidation.listMultiple.title");_(this,"canvasRender",this.injector.createInstance(mt))}skipDefaultFontRender(){return!0}}var Vo=Object.defineProperty,Mo=Object.getOwnPropertyDescriptor,Do=(i,o,e,t)=>{for(var a=t>1?void 0:t?Mo(o,e):o,r=i.length-1,n;r>=0;r--)(n=i[r])&&(a=(t?n(o,e,a):n(a))||a);return t&&a&&Vo(o,e,a),a},ue=(i,o)=>(e,t)=>o(e,t,i);exports.DataValidationController=class extends s.RxDisposable{constructor(o,e,t,a,r,n,l,d){super(),this._univerInstanceService=o,this._sheetDataValidationService=e,this._dataValidatorRegistryService=t,this._injector=a,this._componentManger=r,this._selectionManagerService=n,this._sheetInterceptorService=l,this._dataValidationModel=d,this._init()}_init(){this._registerValidators(),this._initInstanceChange(),this._componentManger.register(Yt,bt),this._initCommandInterceptor()}_registerValidators(){[no,co,lo,Qr,kr,zt,Ro,jr].forEach(o=>{const e=this._injector.createInstance(o);this.disposeWithMe(this._dataValidatorRegistryService.register(e)),this.disposeWithMe({dispose:()=>{this._injector.delete(o)}})})}_initInstanceChange(){const o=new s.DisposableCollection;this._univerInstanceService.getCurrentTypeOfUnit$(s.UniverInstanceType.UNIVER_SHEET).subscribe(e=>{o.dispose(),e&&(this._sheetDataValidationService.switchCurrent(e.getUnitId(),e.getActiveSheet().getSheetId()),o.add(s.toDisposable(e.activeSheet$.subscribe(t=>{if(t){const a=e.getUnitId(),r=t.getSheetId();this._sheetDataValidationService.switchCurrent(a,r)}}))))}),this.disposeWithMe(o)}_initCommandInterceptor(){this._sheetInterceptorService.interceptCommand({getMutations:o=>{if(o.id===ae.ClearSelectionAllCommand.id){const e=this._univerInstanceService.getCurrentUnitForType(s.UniverInstanceType.UNIVER_SHEET),t=e.getUnitId(),r=e.getActiveSheet().getSheetId(),n=this._selectionManagerService.getSelectionRanges(),l=this._dataValidationModel.ensureManager(t,r),d=l.getRuleObjectMatrix().clone();n&&d.removeRange(n);const c=d.diff(l.getDataValidations()),{redoMutations:u,undoMutations:m}=Ie(t,r,c);return{undos:m,redos:u}}return{undos:[],redos:[]}}})}};exports.DataValidationController=Do([s.OnLifecycle(s.LifecycleStages.Rendered,exports.DataValidationController),ue(0,s.IUniverInstanceService),ue(1,V.Inject(exports.SheetDataValidationService)),ue(2,V.Inject(R.DataValidatorRegistryService)),ue(3,V.Inject(V.Injector)),ue(4,V.Inject(B.ComponentManager)),ue(5,V.Inject(ae.SelectionManagerService)),ue(6,V.Inject(ae.SheetInterceptorService)),ue(7,V.Inject(R.DataValidationModel))],exports.DataValidationController);var Io=Object.defineProperty,Oo=Object.getOwnPropertyDescriptor,Co=(i,o,e,t)=>{for(var a=t>1?void 0:t?Oo(o,e):o,r=i.length-1,n;r>=0;r--)(n=i[r])&&(a=(t?n(o,e,a):n(a))||a);return t&&a&&Io(o,e,a),a},je=(i,o)=>(e,t)=>o(e,t,i);const ot="SHEET_DATA_VALIDATION_ALERT";exports.DataValidationAlertController=class extends s.Disposable{constructor(o,e,t,a){super(),this._hoverManagerService=o,this._cellAlertManagerService=e,this._univerInstanceService=t,this._localeService=a,this._init()}_init(){this._initCellAlertPopup()}_initCellAlertPopup(){this.disposeWithMe(this._hoverManagerService.currentCell$.subscribe(o=>{var e,t;if(o){const n=this._univerInstanceService.getCurrentUnitForType(s.UniverInstanceType.UNIVER_SHEET).getActiveSheet().getCell(o.location.row,o.location.col);if(((e=n==null?void 0:n.dataValidation)==null?void 0:e.validStatus)===s.DataValidationStatus.INVALID){const l=this._cellAlertManagerService.currentAlert.get(ot),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=n.dataValidation.validator,u=n.dataValidation.rule;if(!c)return;this._cellAlertManagerService.showAlert({type:P.CellAlertType.ERROR,title:this._localeService.t("dataValidation.error.title"),message:c==null?void 0:c.generateRuleErrorMessage(u),location:o.location,width:200,height:74,key:ot});return}}this._cellAlertManagerService.removeAlert(ot)}))}};exports.DataValidationAlertController=Co([s.OnLifecycle(s.LifecycleStages.Rendered,exports.DataValidationAlertController),je(0,V.Inject(P.HoverManagerService)),je(1,V.Inject(P.CellAlertManagerService)),je(2,s.IUniverInstanceService),je(3,V.Inject(s.LocaleService))],exports.DataValidationAlertController);var yo=Object.defineProperty,Eo=Object.getOwnPropertyDescriptor,Fo=(i,o,e,t)=>{for(var a=t>1?void 0:t?Eo(o,e):o,r=i.length-1,n;r>=0;r--)(n=i[r])&&(a=(t?n(o,e,a):n(a))||a);return t&&a&&yo(o,e,a),a},ie=(i,o)=>(e,t)=>o(e,t,i);exports.DataValidationRefRangeController=class extends s.Disposable{constructor(e,t,a,r,n,l,d,c,u,m){super();_(this,"_disposableMap",new Map);_(this,"registerRule",(e,t,a)=>{this.register(e,t,a),this.registerFormula(e,t,a)});this._dataValidationModel=e,this._univerInstanceService=t,this._injector=a,this._sheetSkeletonManagerService=r,this._refRangeService=n,this._dataValidationCustomFormulaService=l,this._dataValidationFormulaService=d,this._formulaRefRangeService=c,this._commandService=u,this._dataValidationCacheService=m,this._initRefRange()}_getIdWithUnitId(e,t,a){return`${e}_${t}_${a}`}registerFormula(e,t,a){var c;const r=a.uid,n=this._getIdWithUnitId(e,t,r),l=(c=this._disposableMap.get(n))!=null?c:new Set,d=(u,m)=>{const p=this._dataValidationModel.getRuleById(e,t,r);if(!p)return{redos:[],undos:[]};const h=p[u];if(!h||h===m)return{redos:[],undos:[]};const g={unitId:e,subUnitId:t,ruleId:a.uid,payload:{type:R.UpdateRuleType.SETTING,payload:{type:p.type,formula1:p.formula1,formula2:p.formula2,[u]:m}}},v={unitId:e,subUnitId:t,ruleId:a.uid,payload:{type:R.UpdateRuleType.SETTING,payload:{type:p.type,formula1:p.formula1,formula2:p.formula2}}},S=[{id:R.UpdateDataValidationMutation.id,params:g}],M=[{id:R.UpdateDataValidationMutation.id,params:v}];return{redos:S,undos:M}};if(a.type===s.DataValidationType.CUSTOM){const u=this._dataValidationCustomFormulaService.getRuleFormulaInfo(e,t,r);if(u){const m=this._formulaRefRangeService.registerFormula(u.formula,p=>d("formula1",p));l.add(()=>m.dispose())}}if(a.type!==s.DataValidationType.CUSTOM){const u=this._dataValidationFormulaService.getRuleFormulaInfo(e,t,r);if(u){const[m,p]=u;if(m){const h=this._formulaRefRangeService.registerFormula(m.text,g=>d("formula1",g));l.add(()=>h.dispose())}if(p){const h=this._formulaRefRangeService.registerFormula(p.text,g=>d("formula1",g));l.add(()=>h.dispose())}}}}register(e,t,a){var c;const r=u=>{const m=[...a.ranges],h=m.map(v=>ae.handleCommonDefaultRangeChangeWithEffectRefCommands(v,u)).filter(v=>!!v).flat();if(s.isRangesEqual(h,m))return{redos:[],undos:[]};if(h.length){const v={unitId:e,subUnitId:t,ruleId:a.uid,payload:{type:R.UpdateRuleType.RANGE,payload:h}},S=[{id:R.UpdateDataValidationMutation.id,params:v}],M=[{id:R.UpdateDataValidationMutation.id,params:{unitId:e,subUnitId:t,ruleId:a.uid,payload:{type:R.UpdateRuleType.RANGE,payload:m}}}];return{redos:S,undos:M}}else{const v={unitId:e,subUnitId:t,ruleId:a.uid},S=[{id:R.RemoveDataValidationMutation.id,params:v}],M=R.removeDataValidationUndoFactory(this._injector,v);return{redos:S,undos:M}}},n=[];a.ranges.forEach(u=>{const m=this._refRangeService.registerRefRange(u,r,e,t);n.push(()=>m.dispose())});const l=this._getIdWithUnitId(e,t,a.uid),d=(c=this._disposableMap.get(l))!=null?c:new Set;d.add(()=>n.forEach(u=>u())),this._disposableMap.set(l,d)}_initRefRange(){this.disposeWithMe(ve.merge(this._sheetSkeletonManagerService.currentSkeleton$.pipe(Qe.map(e=>e==null?void 0:e.sheetId),Qe.distinctUntilChanged())).pipe(Qe.switchMap(()=>new ve.Observable(e=>{const t=new s.DisposableCollection;return e.next(t),()=>{t.dispose()}}))).subscribe(e=>{e.add(s.toDisposable(this._dataValidationModel.ruleChange$.subscribe(t=>{const{unitId:a,subUnitId:r,rule:n}=t;switch(t.type){case"add":{const l=t.rule;this.registerRule(t.unitId,t.subUnitId,l);break}case"remove":{const l=this._disposableMap.get(this._getIdWithUnitId(a,r,n.uid));l&&l.forEach(d=>d());break}case"update":{const l=t.rule,d=this._disposableMap.get(this._getIdWithUnitId(a,r,l.uid));d&&d.forEach(c=>c()),this.registerRule(t.unitId,t.subUnitId,l);break}}})))})),this.disposeWithMe(s.toDisposable(()=>{this._disposableMap.forEach(e=>{e.forEach(t=>t())}),this._disposableMap.clear()}))}};exports.DataValidationRefRangeController=Fo([s.OnLifecycle(s.LifecycleStages.Ready,exports.DataValidationRefRangeController),ie(0,V.Inject(R.DataValidationModel)),ie(1,V.Inject(s.IUniverInstanceService)),ie(2,V.Inject(V.Injector)),ie(3,V.Inject(P.SheetSkeletonManagerService)),ie(4,V.Inject(ae.RefRangeService)),ie(5,V.Inject(exports.DataValidationCustomFormulaService)),ie(6,V.Inject(exports.DataValidationFormulaService)),ie(7,V.Inject(qe.FormulaRefRangeService)),ie(8,s.ICommandService),ie(9,V.Inject(Oe))],exports.DataValidationRefRangeController);const Qt={dataValidation:{title:"Data validation",validFail:{common:"Please input value or formula",number:"Please input number or formula",formula:"Please input formula",integer:"Please input integer or formula",date:"Please input date or formula",list:"Please input options",listInvalid:"The list source must be a delimited list or a reference to a single row or column"},panel:{title:"Data validation management",addTitle:"Create new data validation",removeAll:"Remove All",add:"Create Data validation",range:"Ranges",type:"Type",options:"Advance options",operator:"Operator",removeRule:"Remove",done:"Done",formulaPlaceholder:"Please input value or formula",formulaAnd:"and",invalid:"Invalid",showWarning:"Show warning",rejectInput:"Reject input",messageInfo:"Helper message",showInfo:"Show help text for a selected cell"},operators:{between:"between",greaterThan:"greater than",greaterThanOrEqual:"greater than or equal",lessThan:"less than",lessThanOrEqual:"less than or equal",equal:"equal",notEqual:"not equal",notBetween:"not between"},ruleName:{between:"is between {FORMULA1} and {FORMULA2}",greaterThan:"is greater than {FORMULA1}",greaterThanOrEqual:"is greater than or equal to {FORMULA1}",lessThan:"is less than {FORMULA1}",lessThanOrEqual:"is less than or equal to {FORMULA1}",equal:"is equal to {FORMULA1}",notEqual:"is not equal to {FORMULA1}",notBetween:"is not between {FORMULA1} and {FORMULA2}"},errorMsg:{between:"Value must be between {FORMULA1} and {FORMULA2}",greaterThan:"Value must be greater than {FORMULA1}",greaterThanOrEqual:"Value must be greater than or equal to {FORMULA1}",lessThan:"Value must be less than {FORMULA1}",lessThanOrEqual:"Value must be less than or equal to {FORMULA1}",equal:"Value must be equal to {FORMULA1}",notEqual:"Value must be not equal to {FORMULA1}",notBetween:"Value must be not between {FORMULA1} and {FORMULA2}"},date:{title:"Date",operators:{between:"between",greaterThan:"after",greaterThanOrEqual:"on or after",lessThan:"before",lessThanOrEqual:"on or before",equal:"equal",notEqual:"not equal",notBetween:"not between"},ruleName:{between:"is between {FORMULA1} and {FORMULA2}",greaterThan:"is after {FORMULA1}",greaterThanOrEqual:"is on or after {FORMULA1}",lessThan:"is before {FORMULA1}",lessThanOrEqual:"is on or before {FORMULA1}",equal:"is {FORMULA1}",notEqual:"is not {FORMULA1}",notBetween:"is not between {FORMULA1}"},errorMsg:{between:"Value must be between {FORMULA1} and {FORMULA2}",greaterThan:"Value must be after {FORMULA1}",greaterThanOrEqual:"Value must be on or after {FORMULA1}",lessThan:"Value must be before {FORMULA1}",lessThanOrEqual:"Value must be on or before {FORMULA1}",equal:"Value must be {FORMULA1}",notEqual:"Value must be not {FORMULA1}",notBetween:"Value must be not between {FORMULA1}"}},list:{title:"Dropdown",name:"Value contains one from range",error:"Input must fall within specified range",emptyError:"Please enter a value",add:"Add",dropdown:"Select",options:"Options",customOptions:"Custom",refOptions:"From a range",formulaError:"The list source must be a delimited list of data, or a reference to a single row or column."},listMultiple:{title:"Dropdown-Multiple",dropdown:"Multiple select"},textLength:{title:"Text length",errorMsg:{between:"Text length must be between {FORMULA1} and {FORMULA2}",greaterThan:"Text length must be after {FORMULA1}",greaterThanOrEqual:"Text length must be on or after {FORMULA1}",lessThan:"Text length must be before {FORMULA1}",lessThanOrEqual:"Text length must be on or before {FORMULA1}",equal:"Text length must be {FORMULA1}",notEqual:"Text length must be not {FORMULA1}",notBetween:"Text length must be not between {FORMULA1}"}},decimal:{title:"Number"},whole:{title:"Integer"},checkbox:{title:"Checkbox",error:"This cell's contents violate its validation rule",tips:"Use custom values within cells",checked:"Selected value",unchecked:"Unselected value"},custom:{title:"Custom formula",error:"This cell's contents violate its validation rule",validFail:"Please input a valid formula"},alert:{title:"Error",ok:"OK"},error:{title:"Invalid:"},renderMode:{arrow:"Arrow",chip:"Chip",text:"Plain text",label:"Display style"}}},Kt={dataValidation:{title:"数据验证",validFail:{common:"请输入值或公式",number:"请输入合法的数字或公式",formula:"请输入合法的公式或公式",integer:"请输入合法的整数或公式",date:"请输入合法的日期或公式",list:"请输入至少一个合法选项",listInvalid:"列表源必须是分隔列表或对单行或列的引用。"},panel:{title:"管理数据验证",addTitle:"新建数据验证",removeAll:"全部删除",add:"新建规则",range:"应用范围",type:"条件类型",options:"高级设置",operator:"数据",removeRule:"删除规则",done:"确认",formulaPlaceholder:"请输入值或公式",formulaAnd:"与",invalid:"数据无效时",showWarning:"显示警告",rejectInput:"拒绝输入",messageInfo:"文字提示",showInfo:"显示所选单元格的提示文字"},operators:{between:"介于",greaterThan:"大于",greaterThanOrEqual:"大于或等于",lessThan:"小于",lessThanOrEqual:"小于或等于",equal:"等于",notEqual:"不等于",notBetween:"未介于"},ruleName:{between:"介于 {FORMULA1} 和 {FORMULA2} 之间",greaterThan:"大于 {FORMULA1}",greaterThanOrEqual:"大于或等于 {FORMULA1}",lessThan:"小于 {FORMULA1}",lessThanOrEqual:"小于或等于 {FORMULA1}",equal:"等于 {FORMULA1}",notEqual:"不等于 {FORMULA1}",notBetween:"在 {FORMULA1} 和 {FORMULA2} 范围之外"},errorMsg:{between:"值必须介于 {FORMULA1} 和 {FORMULA2} 之间",greaterThan:"值必须大于 {FORMULA1}",greaterThanOrEqual:"值必须大于或等于 {FORMULA1}",lessThan:"值必须小于 {FORMULA1}",lessThanOrEqual:"值必须小于或等于 {FORMULA1}",equal:"值必须等于 {FORMULA1}",notEqual:"值必须不等于 {FORMULA1}",notBetween:"值必须在 {FORMULA1} 和 {FORMULA2} 范围之外"},date:{title:"日期",operators:{between:"介于",greaterThan:"晚于",greaterThanOrEqual:"晚于或等于",lessThan:"早于",lessThanOrEqual:"早于或等于",equal:"等于",notEqual:"不等于",notBetween:"未介于"},ruleName:{between:"介于 {FORMULA1} 和 {FORMULA2} 之间",greaterThan:"晚于 {FORMULA1}",greaterThanOrEqual:"晚于或等于 {FORMULA1}",lessThan:"早于 {FORMULA1}",lessThanOrEqual:"早于或等于 {FORMULA1}",equal:"等于 {FORMULA1}",notEqual:"不等于 {FORMULA1}",notBetween:"在 {FORMULA1} 和 {FORMULA2} 范围之外"},errorMsg:{between:"日期必须介于 {FORMULA1} 和 {FORMULA2} 之间",greaterThan:"日期必须晚于 {FORMULA1}",greaterThanOrEqual:"日期必须晚于或等于 {FORMULA1}",lessThan:"日期必须早于 {FORMULA1}",lessThanOrEqual:"早于或等于 {FORMULA1}",equal:"日期必须等于 {FORMULA1}",notEqual:"日期必须不等于 {FORMULA1}",notBetween:"日期必须在 {FORMULA1} 和 {FORMULA2} 范围之外"}},list:{title:"下拉菜单",name:"值必须是列表中的值",error:"输入必须在指定的范围内",emptyError:"请输入一个值",add:"添加选项",dropdown:"单选",options:"选项来源",customOptions:"自定义",refOptions:"引用数据",formulaError:"列表源必须是划定分界后的数据列表,或是对单一行或一列的引用。"},listMultiple:{title:"下拉菜单-多选",dropdown:"多选"},textLength:{title:"文本长度",errorMsg:{between:"文本长度必须介于 {FORMULA1} 和 {FORMULA2} 之间",greaterThan:"文本长度必须大于 {FORMULA1}",greaterThanOrEqual:"文本长度必须大于或等于 {FORMULA1}",lessThan:"文本长度必须小于 {FORMULA1}",lessThanOrEqual:"文本长度必须小于或等于 {FORMULA1}",equal:"文本长度必须等于 {FORMULA1}",notEqual:"文本长度必须不等于 {FORMULA1}",notBetween:"文本长度必须在 {FORMULA1} 和 {FORMULA2} 范围之外"}},decimal:{title:"数字"},whole:{title:"整数"},checkbox:{title:"复选框",error:"此单元格的内容违反了验证规则",tips:"在单元格内使用自定义值",checked:"选中值",unchecked:"未选中值"},custom:{title:"自定义公式",error:"此单元格的内容违反了验证规则",validFail:"请输入合法的公式"},alert:{title:"提示",ok:"确定"},error:{title:"无效:"},renderMode:{arrow:"箭头",chip:"条状标签",text:"纯文本",label:"显示样式"}}};var wo=Object.defineProperty,To=Object.getOwnPropertyDescriptor,Lo=(i,o,e,t)=>{for(var a=t>1?void 0:t?To(o,e):o,r=i.length-1,n;r>=0;r--)(n=i[r])&&(a=(t?n(o,e,a):n(a))||a);return t&&a&&wo(o,e,a),a},It=(i,o)=>(e,t)=>o(e,t,i);exports.DataValidationAutoFillController=class extends s.Disposable{constructor(o,e){super(),this._autoFillService=o,this._dataValidationModel=e,this._initAutoFill()}_initAutoFill(){const o=()=>({redos:[],undos:[]}),e=a=>{const{source:r,target:n,unitId:l,subUnitId:d}=a,c=this._dataValidationModel.ensureManager(l,d),u=c.getRuleObjectMatrix().clone(),m=P.virtualizeDiscreteRanges([r,n]),[p,h]=m.ranges,{mapFunc:g}=m,v={row:p.startRow,col:p.startColumn};P.getAutoFillRepeatRange(p,h).forEach(C=>{const E=C.repeatStartCell,w=C.relativeRange,b={startRow:v.row,startColumn:v.col,endColumn:v.col,endRow:v.row},$={startRow:E.row,startColumn:E.col,endColumn:E.col,endRow:E.row};s.Range.foreach(w,(T,U)=>{const H=s.Rectangle.getPositionRange({startRow:T,startColumn:U,endColumn:U,endRow:T},b),{row:x,col:j}=g(H.startRow,H.startColumn),N=c.getRuleIdByLocation(x,j);if(N){const k=s.Rectangle.getPositionRange({startRow:T,startColumn:U,endColumn:U,endRow:T},$),{row:Y,col:X}=g(k.startRow,k.startColumn);u.setValue(Y,X,N)}})});const M=u.diff(c.getDataValidations()),{redoMutations:O,undoMutations:y}=Ie(l,d,M);return{undos:y,redos:O}},t={id:Xe,onFillData:(a,r,n)=>n===P.APPLY_TYPE.COPY||n===P.APPLY_TYPE.ONLY_FORMAT||n===P.APPLY_TYPE.SERIES?e(a):o()};this.disposeWithMe(this._autoFillService.addHook(t))}};exports.DataValidationAutoFillController=Lo([s.OnLifecycle(s.LifecycleStages.Ready,exports.DataValidationAutoFillController),It(0,P.IAutoFillService),It(1,V.Inject(R.DataValidationModel))],exports.DataValidationAutoFillController);var bo=Object.defineProperty,Ao=Object.getOwnPropertyDescriptor,No=(i,o,e,t)=>{for(var a=t>1?void 0:t?Ao(o,e):o,r=i.length-1,n;r>=0;r--)(n=i[r])&&(a=(t?n(o,e,a):n(a))||a);return t&&a&&bo(o,e,a),a},nt=(i,o)=>(e,t)=>o(e,t,i);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:Xe,onBeforeCopy:(e,t,a)=>this._collect(e,t,a),onPasteCells:(e,t,a,r)=>{const{copyType:n=P.COPY_TYPE.COPY,pasteType:l}=r,{range:d}=e||{},{range:c,unitId:u,subUnitId:m}=t;return this._generateMutations(c,{copyType:n,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 n=this._dataValidationModel.ensureManager(e,t),l={get:this._injector.get.bind(this._injector)},d=P.rangeToDiscreteRange(a,l,e,t);if(!d)return;const{rows:c,cols:u}=d;c.forEach((m,p)=>{u.forEach((h,g)=>{const v=n.getRuleIdByLocation(m,h);r.setValue(p,g,v!=null?v:"")})})}_generateMutations(e,t){if(!this._copyInfo)return{redos:[],undos:[]};if(t.copyType===P.COPY_TYPE.CUT)return this._copyInfo=null,{redos:[],undos:[]};if(!this._copyInfo||!this._copyInfo.matrix.getSizeOf()||!t.copyRange)return{redos:[],undos:[]};if([P.PREDEFINED_HOOK_NAME.SPECIAL_PASTE_COL_WIDTH,P.PREDEFINED_HOOK_NAME.SPECIAL_PASTE_VALUE,P.PREDEFINED_HOOK_NAME.SPECIAL_PASTE_FORMAT,qe.SPECIAL_PASTE_FORMULA].includes(t.pasteType))return{redos:[],undos:[]};const{unitId:a,subUnitId:r}=this._copyInfo;if(t.unitId!==a||r!==t.subUnitId){const n=this._dataValidationModel.ensureManager(a,r),l=this._dataValidationModel.ensureManager(t.unitId,t.subUnitId),d=l.getRuleObjectMatrix().clone(),{ranges:[c,u],mapFunc:m}=P.virtualizeDiscreteRanges([t.copyRange,e]),p=P.getRepeatRange(c,u,!0),h=new Map;p.forEach(({startRange:S})=>{var M;(M=this._copyInfo)==null||M.matrix.forValue((O,y,C)=>{const E=s.Rectangle.getPositionRange({startRow:O,endRow:O,startColumn:y,endColumn:y},S),w=`${r}-${C}`,b=n.getRuleById(C);!l.getRuleById(w)&&b&&h.set(w,{...b,uid:w});const{row:$,col:T}=m(E.startRow,E.startColumn);d.setValue($,T,w)})});const{redoMutations:g,undoMutations:v}=Ie(t.unitId,t.subUnitId,d.diffWithAddition(l.getDataValidations(),h.values()));return{redos:g,undos:v}}else{const n=this._dataValidationModel.ensureManager(a,r),l=n.getRuleObjectMatrix().clone(),{ranges:[d,c],mapFunc:u}=P.virtualizeDiscreteRanges([t.copyRange,e]);P.getRepeatRange(d,c,!0).forEach(({startRange:g})=>{var v;(v=this._copyInfo)==null||v.matrix.forValue((S,M,O)=>{const y=s.Rectangle.getPositionRange({startRow:S,endRow:S,startColumn:M,endColumn:M},g),{row:C,col:E}=u(y.startRow,y.startColumn);l.setValue(C,E,O)})});const{redoMutations:p,undoMutations:h}=Ie(a,r,l.diff(n.getDataValidations()));return{redos:p,undos:h}}}};exports.DataValidationCopyPasteController=No([s.OnLifecycle(s.LifecycleStages.Ready,exports.DataValidationCopyPasteController),nt(0,P.ISheetClipboardService),nt(1,V.Inject(R.DataValidationModel)),nt(2,V.Inject(V.Injector))],exports.DataValidationCopyPasteController);class gt{constructor(o){_(this,"value");this.value=o}addRule(o){const e=o.uid;o.ranges.forEach(t=>{s.Range.foreach(t,(a,r)=>{this.value.setValue(a,r,e)})})}removeRange(o){o.forEach(e=>{s.Range.foreach(e,(t,a)=>{this.value.realDeleteValue(t,a)})})}removeRule(o){o.ranges.forEach(e=>{s.Range.foreach(e,(t,a)=>{this.value.setValue(t,a,"")})})}updateRange(o,e,t){const a=`${o}$`;e.forEach(r=>{s.Range.foreach(r,(n,l)=>{this.value.getValue(n,l)===o&&this.value.setValue(n,l,a)})}),t.forEach(r=>{s.Range.foreach(r,(n,l)=>{this.value.setValue(n,l,o)})}),e.forEach(r=>{s.Range.foreach(r,(n,l)=>{this.value.getValue(n,l)===a&&this.value.realDeleteValue(n,l)})})}diff(o){const e=[];let t=0;return o.forEach((a,r)=>{const n=s.queryObjectMatrix(this.value,d=>d===a.uid),l=a.ranges;(n.length!==l.length||n.some((d,c)=>!s.Rectangle.equals(d,l[c])))&&e.push({type:"update",ruleId:a.uid,oldRanges:l,newRanges:n}),n.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,n)=>{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:n-a}),a++)}),Array.from(e).forEach(r=>{const n=s.queryObjectMatrix(this.value,l=>l===r.uid);t.push({type:"add",rule:{...r,ranges:n}})}),t}clone(){return new gt(new s.ObjectMatrix(this.value.clone()))}getValue(o,e){return this.value.getValue(o,e)}setValue(o,e,t){return this.value.setValue(o,e,t)}}class Uo 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(Oe),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 n=new s.ObjectMatrix;a==null||a.forEach(l=>{const d=l.uid;l.ranges.forEach(c=>{s.Range.foreach(c,(u,m)=>{n.setValue(u,m,d)})})}),a==null||a.forEach(l=>{this._dataValidationRefRangeController.register(e,t,l)}),this._ruleMatrix=new gt(n)}_addRuleSideEffect(e){var r;const{unitId:t,subUnitId:a}=this;(e.type===s.DataValidationType.LIST||e.type===s.DataValidationType.LIST_MULTIPLE)&&se.isReferenceString((r=e.formula1)!=null?r:"")&&(e.formula1=`=${e.formula1}`),this._ruleMatrix.addRule(e),this._dataValidationCacheService.addRule(t,a,e),this._dataValidationFormulaService.addRule(t,a,e.uid,e.formula1,e.formula2),this._dataValidationCustomFormulaService.addRule(t,a,e)}addRule(e,t){(Array.isArray(e)?e:[e]).forEach(r=>{this._addRuleSideEffect(r)}),super.addRule(e,t)}updateRule(e,t){const a=this.getRuleById(e);if(!a)throw new Error(`Rule not found! id: ${e}`);return t.type===R.UpdateRuleType.RANGE?(this._ruleMatrix.updateRange(e,a.ranges,t.payload),this._dataValidationCacheService.updateRuleRanges(this.unitId,this.subUnitId,e,t.payload,a.ranges),this._dataValidationCustomFormulaService.updateRuleRanges(this.unitId,this.subUnitId,e,a.ranges,t.payload)):t.type===R.UpdateRuleType.SETTING&&(this._dataValidationCacheService.markRangeDirty(this.unitId,this.subUnitId,a.ranges),this._dataValidationFormulaService.updateRuleFormulaText(this.unitId,this.subUnitId,e,t.payload.formula1,t.payload.formula2),this._dataValidationCustomFormulaService.updateRuleFormula(this.unitId,this.subUnitId,e,a.ranges,t.payload.formula1)),super.updateRule(e,t)}removeRule(e){const t=this.getRuleById(e);t&&(this._ruleMatrix.removeRule(t),this._dataValidationCacheService.removeRule(this.unitId,this.subUnitId,t)),super.removeRule(e)}getRuleIdByLocation(e,t){return this._ruleMatrix.getValue(e,t)}getRuleByLocation(e,t){const a=this.getRuleIdByLocation(e,t);if(a)return this.getRuleById(a)}validator(e,t,a,r){const{col:n,row:l,unitId:d,subUnitId:c}=a,u=t.uid,m=this._dataValidatorRegistryService.getValidatorItem(t.type);if(m){const p=this._cache.getValue(l,n);return!p||p.value!==e?(this._cache.setValue(l,n,{value:e,status:s.DataValidationStatus.VALIDATING,ruleId:u}),m.validator({value:e,unitId:d,subUnitId:c,row:l,column:n},t).then(h=>{const g=h?s.DataValidationStatus.VALID:s.DataValidationStatus.INVALID;this._cache.setValue(l,n,{value:e,status:g,ruleId:u}),r(g)}),s.DataValidationStatus.VALIDATING):p.status}else return s.DataValidationStatus.VALID}getRuleErrorMsg(e){const t=this.getRuleById(e);if(!t)return"";const a=this._dataValidatorRegistryService.getValidatorItem(t.type);return t.error?t.error:a?a.getRuleFinalError(t):""}getRuleObjectMatrix(){return this._ruleMatrix}}var jo=Object.defineProperty,Po=Object.getOwnPropertyDescriptor,xo=(i,o,e,t)=>{for(var a=t>1?void 0:t?Po(o,e):o,r=i.length-1,n;r>=0;r--)(n=i[r])&&(a=(t?n(o,e,a):n(a))||a);return t&&a&&jo(o,e,a),a},Pe=(i,o)=>(e,t)=>o(e,t,i);let $e=class extends s.Disposable{constructor(i,o,e,t){super(),this._resourceManagerService=i,this._univerInstanceService=o,this._dataValidationModel=e,this._injector=t,this._initDataValidationDataSource()}_createSheetDataValidationManager(i,o){return new Uo(i,o,[],this._injector)}_initDataValidationDataSource(){this._dataValidationModel.setManagerCreator(this._createSheetDataValidationManager.bind(this))}};$e=xo([s.OnLifecycle(s.LifecycleStages.Starting,$e),Pe(0,s.IResourceManagerService),Pe(1,s.IUniverInstanceService),Pe(2,V.Inject(R.DataValidationModel)),Pe(3,V.Inject(V.Injector))],$e);var Bo=Object.defineProperty,$o=Object.getOwnPropertyDescriptor,Ho=(i,o,e,t)=>{for(var a=t>1?void 0:t?$o(o,e):o,r=i.length-1,n;r>=0;r--)(n=i[r])&&(a=(t?n(o,e,a):n(a))||a);return t&&a&&Bo(o,e,a),a},ye=(i,o)=>(e,t)=>o(e,t,i);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:n,col:l,unitId:d,subUnitId:c}=e,u=this._dataValidationModel.ensureManager(d,c),m=u.getRuleIdByLocation(n,l),p=m?u.getRuleById(m):void 0;if(!p||p.errorStyle!==s.DataValidationErrorStyle.STOP)return t(Promise.resolve(a));const h=await this._dataValidatorRegistryService.getValidatorItem(p.type);if(!h||await h.validator({value:J(a),row:n,column:l,unitId:d,subUnitId:c},p))return t(Promise.resolve(a));const v=r.getCellRaw(n,l);return this._dialogService.open({width:368,title:{title:this._localeService.t("dataValidation.alert.title")},id:"reject-input-dialog",children:{title:h.generateRuleErrorMessage(p)},footer:{title:D.createElement(I.Button,{type:"primary",onClick:()=>this._dialogService.close("reject-input-dialog")},this._localeService.t("dataValidation.alert.ok"))},onClose:()=>{this._dialogService.close("reject-input-dialog")}}),t(Promise.resolve(v))}})}};exports.DataValidationRejectInputController=Ho([s.OnLifecycle(s.LifecycleStages.Ready,exports.DataValidationRejectInputController),ye(0,P.IEditorBridgeService),ye(1,V.Inject(R.DataValidationModel)),ye(2,V.Inject(R.DataValidatorRegistryService)),ye(3,B.IDialogService),ye(4,V.Inject(s.LocaleService))],exports.DataValidationRejectInputController);var Wo=Object.defineProperty,ko=Object.getOwnPropertyDescriptor,qo=(i,o,e,t)=>{for(var a=t>1?void 0:t?ko(o,e):o,r=i.length-1,n;r>=0;r--)(n=i[r])&&(a=(t?n(o,e,a):n(a))||a);return t&&a&&Wo(o,e,a),a},it=(i,o)=>(e,t)=>o(e,t,i),xe;exports.UniverSheetsDataValidationPlugin=(xe=class extends s.Plugin{constructor(o,e,t,a){super(),this._injector=e,this._commandService=t,this._localeService=a}onStarting(o){[[Re],[exports.SheetDataValidationService],[Oe],[exports.DataValidationFormulaService],[exports.DataValidationCustomFormulaService],[Se],[$e],[exports.DataValidationController],[exports.DataValidationRenderController],[exports.DataValidationAlertController],[exports.DataValidationRefRangeController],[exports.DataValidationAutoFillController],[exports.DataValidationCopyPasteController],[exports.DataValidationRejectInputController]].forEach(e=>{o.add(e)}),[Ge,pt,ht,ze,wt,Ft,we,ua].forEach(e=>{this._commandService.registerCommand(e)}),this._localeService.load({zhCN:Kt,enUS:Qt})}},_(xe,"pluginName",Xe),_(xe,"type",s.UniverInstanceType.UNIVER_SHEET),xe);exports.UniverSheetsDataValidationPlugin=qo([it(1,V.Inject(V.Injector)),it(2,s.ICommandService),it(3,V.Inject(s.LocaleService))],exports.UniverSheetsDataValidationPlugin);Object.defineProperty(exports,"ICommandService",{enumerable:!0,get:()=>s.ICommandService});Object.defineProperty(exports,"LocaleService",{enumerable:!0,get:()=>s.LocaleService});Object.defineProperty(exports,"Plugin",{enumerable:!0,get:()=>s.Plugin});exports.AddSheetDataValidationAndOpenCommand=pt;exports.AddSheetDataValidationCommand=Ge;exports.DATA_VALIDATION_PLUGIN_NAME=Xe;exports.DataValidationCacheService=Oe;exports.HideDataValidationDropdown=wt;exports.ShowDataValidationDropdown=ze;exports.UpdateSheetDataValidationRangeCommand=ht;exports.enUS=Qt;exports.zhCN=Kt;
|
|
9
|
+
*/var aa=C,ra=Symbol.for("react.element"),oa=Symbol.for("react.fragment"),na=Object.prototype.hasOwnProperty,ia=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,sa={key:!0,ref:!0,__self:!0,__source:!0};function Et(i,o,e){var t,a={},r=null,n=null;e!==void 0&&(r=""+e),o.key!==void 0&&(r=""+o.key),o.ref!==void 0&&(n=o.ref);for(t in o)na.call(o,t)&&!sa.hasOwnProperty(t)&&(a[t]=o[t]);if(i&&i.defaultProps)for(t in o=i.defaultProps,o)a[t]===void 0&&(a[t]=o[t]);return{$$typeof:ra,type:i,key:r,ref:n,props:a,_owner:ia.current}}qe.Fragment=oa;qe.jsx=Et;qe.jsxs=Et;Ct.exports=qe;var f=Ct.exports;function la(){const i=A.useDependency(Re),o=B.useObservable(i.activeDropdown$,i.activeDropdown),e=A.useDependency(B.ComponentManager);if(!o)return null;const{location:t,componentKey:a}=o,r=e.get(a),n=`${t.unitId}-${t.subUnitId}-${t.row}-${t.col}`;if(!r)return null;const l=()=>{i.hideDropdown()};return f.jsx(r,{location:t,hideFn:l},n)}const yt="sheet.ui.dropdown";var da=Object.defineProperty,ca=Object.getOwnPropertyDescriptor,ua=(i,o,e,t)=>{for(var a=t>1?void 0:t?ca(o,e):o,r=i.length-1,n;r>=0;r--)(n=i[r])&&(a=(t?n(o,e,a):n(a))||a);return t&&a&&da(o,e,a),a},pe=(i,o)=>(e,t)=>o(e,t,i);let Re=class extends s.Disposable{constructor(o,e,t,a,r,n,l){super();_(this,"_activeDropdown");_(this,"_activeDropdown$",new _e.Subject);_(this,"_currentPopup",null);_(this,"activeDropdown$",this._activeDropdown$.asObservable());_(this,"_zenVisible",!1);this._canvasPopupManagerService=o,this._univerInstanceService=e,this._sheetSkeletonManagerService=t,this._dataValidatorRegistryService=a,this._zenZoneService=r,this._renderManagerService=n,this._dataValidationModel=l,this._init()}get activeDropdown(){return this._activeDropdown}_init(){this.disposeWithMe(this._zenZoneService.visible$.subscribe(o=>{this._zenVisible=o,o&&this.hideDropdown()}))}showDropdown(o){const{location:e}=o,{row:t,col:a}=e;if(this._currentPopup&&this._currentPopup.dispose(),this._zenVisible)return;this._activeDropdown=o,this._activeDropdown$.next(this._activeDropdown);const r=this._renderManagerService.getRenderById(s.DOCS_FORMULA_BAR_EDITOR_UNIT_ID_KEY),n=this._canvasPopupManagerService.attachPopupToCell(t,a,{componentKey:yt,onClickOutside:()=>{this.hideDropdown()},offset:[0,3],excludeOutside:[r==null?void 0:r.engine.getCanvasElement()].filter(Boolean)});if(!n)throw new Error("[DataValidationDropdownManagerService]: cannot show dropdown!");const l=new s.DisposableCollection;l.add(n),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 n=this._univerInstanceService.getUniverSheetInstance(o);if(!n)return;const l=n.getSheetBySheetId(e);if(!l)return;const c=this._dataValidationModel.ensureManager(o,e).getRuleByLocation(t,a);if(!this._sheetSkeletonManagerService.getOrCreateSkeleton({unitId:o,sheetId:e})||!c)return;const h=this._dataValidatorRegistryService.getValidatorItem(c.type);if(!h||!h.dropdown){this.hideDropdown();return}this.showDropdown({location:{workbook:n,worksheet:l,row:t,col:a,unitId:o,subUnitId:e},componentKey:h.dropdown,onHide:r})}};Re=ua([pe(0,O.Inject(P.SheetCanvasPopManagerService)),pe(1,s.IUniverInstanceService),pe(2,O.Inject(P.SheetSkeletonManagerService)),pe(3,O.Inject(R.DataValidatorRegistryService)),pe(4,B.IZenZoneService),pe(5,z.IRenderManagerService),pe(6,O.Inject(R.DataValidationModel))],Re);class Ve extends s.Disposable{constructor(){super(...arguments);_(this,"_open$",new _e.BehaviorSubject(!1));_(this,"_activeRule");_(this,"_activeRule$",new _e.BehaviorSubject(void 0));_(this,"open$",this._open$.pipe(_e.distinctUntilChanged()));_(this,"activeRule$",this._activeRule$.asObservable())}get activeRule(){return this._activeRule}get isOpen(){return this._open$.getValue()}dispose(){this._open$.next(!1),this._open$.complete()}open(){this._open$.next(!0)}close(){this._open$.next(!1)}setActiveRule(e){this._activeRule=e,this._activeRule$.next(e)}}const Ft="DataValidationPanel",we={id:"data-validation.operation.open-validation-panel",type:s.CommandType.OPERATION,handler(i,o){if(!o)return!1;const{ruleId:e,isAdd:t}=o,a=i.get(Ve),r=i.get(R.DataValidationModel),n=i.get(s.IUniverInstanceService),l=i.get(B.ISidebarService),d=re.getSheetCommandTarget(n);if(!d)return!1;const{unitId:c,subUnitId:u}=d,h=e?r.getRuleById(c,u,e):void 0;return a.open(),a.setActiveRule(h&&{unitId:c,subUnitId:u,rule:h}),l.open({header:{title:t?"dataValidation.panel.addTitle":"dataValidation.panel.title"},children:{label:Ft},width:312}),!0}},wt={id:"data-validation.operation.close-validation-panel",type:s.CommandType.OPERATION,handler(i){return i.get(Ve).close(),!0}},ma={id:"data-validation.operation.toggle-validation-panel",type:s.CommandType.OPERATION,handler(i){const o=i.get(s.ICommandService),e=i.get(Ve);return e.open(),e.isOpen?o.executeCommand(wt.id):o.executeCommand(we.id),!0}},Ye={type:s.CommandType.OPERATION,id:"sheet.operation.show-data-validation-dropdown",handler(i,o){if(!o)return!1;const e=i.get(Re),{unitId:t,subUnitId:a,row:r,column:n}=o,l=e.activeDropdown,d=l==null?void 0:l.location;return d&&d.unitId===t&&d.subUnitId===a&&d.row===r&&d.col===n||e.showDataValidationDropdown(t,a,r,n),!0}},Tt={type:s.CommandType.OPERATION,id:"sheet.operation.hide-data-validation-dropdown",handler(i,o){return o?(i.get(Re).hideDropdown(),!0):!1}};function Ie(i,o,e){const t=[],a=[];return e.forEach(r=>{switch(r.type){case"delete":t.push({id:R.RemoveDataValidationMutation.id,params:{unitId:i,subUnitId:o,ruleId:r.rule.uid}}),a.unshift({id:R.AddDataValidationMutation.id,params:{unitId:i,subUnitId:o,rule:r.rule,index:r.index}});break;case"update":{t.push({id:R.UpdateDataValidationMutation.id,params:{unitId:i,subUnitId:o,ruleId:r.ruleId,payload:{type:R.UpdateRuleType.RANGE,payload:r.newRanges}}}),a.unshift({id:R.UpdateDataValidationMutation.id,params:{unitId:i,subUnitId:o,ruleId:r.ruleId,payload:{type:R.UpdateRuleType.RANGE,payload:r.oldRanges}}});break}case"add":{t.push({id:R.AddDataValidationMutation.id,params:{unitId:i,subUnitId:o,rule:r.rule}}),a.unshift({id:R.RemoveDataValidationMutation.id,params:{unitId:i,subUnitId:o,ruleId:r.rule.uid}});break}}}),{redoMutations:t,undoMutations:a}}const ht={type:s.CommandType.COMMAND,id:"sheets.command.updateDataValidationRuleRange",async handler(i,o){if(!o)return!1;const{unitId:e,subUnitId:t,ranges:a,ruleId:r}=o,n=i.get(R.DataValidationModel),l=i.get(s.ICommandService),d=i.get(s.IUndoRedoService),c=n.ensureManager(e,t),u=c.getRuleById(r);if(!u)return!1;const h=u.ranges,p=c.getRuleObjectMatrix().clone();p.updateRange(r,h,a);const m=p.diff(c.getDataValidations()),{redoMutations:v,undoMutations:g}=Ie(e,t,m);return d.pushUndoRedo({undoMutations:g,redoMutations:v,unitID:e}),await s.sequenceExecuteAsync(v,l),!0}},Ge={type:s.CommandType.COMMAND,id:"sheets.command.addDataValidation",async handler(i,o){if(!o)return!1;const{unitId:e,subUnitId:t,rule:a}=o,r=i.get(R.DataValidationModel),n=i.get(s.ICommandService),l=i.get(s.IUndoRedoService),d=r.ensureManager(e,t),c=d.getRuleObjectMatrix().clone();c.addRule(a);const u=c.diff(d.getDataValidations()),h={unitId:e,subUnitId:t,rule:a},{redoMutations:p,undoMutations:m}=Ie(e,t,u);return p.push({id:R.AddDataValidationMutation.id,params:h}),m.unshift({id:R.RemoveDataValidationMutation.id,params:{unitId:e,subUnitId:t,ruleId:a.uid}}),l.pushUndoRedo({unitID:e,redoMutations:p,undoMutations:m}),await s.sequenceExecuteAsync(p,n),!0}},pt={type:s.CommandType.COMMAND,id:"data-validation.command.addRuleAndOpen",async handler(i){const o=i.get(s.IUniverInstanceService),e=re.getSheetCommandTarget(o);if(!e)return!1;const{workbook:t,worksheet:a}=e,r=R.createDefaultNewRule(i),n=i.get(s.ICommandService),l=t.getUnitId(),d=a.getSheetId(),c={rule:r,unitId:l,subUnitId:d};return await n.executeCommand(Ge.id,c)?(n.executeCommand(we.id,{ruleId:r.uid,isAdd:!0}),!0):!1}};var ae=function(){return ae=Object.assign||function(i){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)&&(i[a]=o[a])}return i},ae.apply(this,arguments)},ha=function(i,o){var e={};for(var t in i)Object.prototype.hasOwnProperty.call(i,t)&&o.indexOf(t)<0&&(e[t]=i[t]);if(i!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,t=Object.getOwnPropertySymbols(i);a<t.length;a++)o.indexOf(t[a])<0&&Object.prototype.propertyIsEnumerable.call(i,t[a])&&(e[t[a]]=i[t[a]]);return e},he=C.forwardRef(function(i,o){var e=i.icon,t=i.id,a=i.className,r=i.extend,n=ha(i,["icon","id","className","extend"]),l="univerjs-icon univerjs-icon-".concat(t," ").concat(a||"").trim(),d=C.useRef("_".concat(ga()));return Lt(e,"".concat(t),{defIds:e.defIds,idSuffix:d.current},ae({ref:o,className:l},n),r)});function Lt(i,o,e,t,a){return C.createElement(i.tag,ae(ae({key:o},pa(i,e,a)),t),(fa(i,e).children||[]).map(function(r,n){return Lt(r,"".concat(o,"-").concat(i.tag,"-").concat(n),e,void 0,a)}))}function pa(i,o,e){var t=ae({},i.attrs);e!=null&&e.colorChannel1&&t.fill==="colorChannel1"&&(t.fill=e.colorChannel1);var a=o.defIds;return!a||a.length===0||(i.tag==="use"&&t["xlink:href"]&&(t["xlink:href"]=t["xlink:href"]+o.idSuffix),Object.entries(t).forEach(function(r){var n=r[0],l=r[1];typeof l=="string"&&(t[n]=l.replace(/url\(#(.*)\)/,"url(#$1".concat(o.idSuffix,")")))})),t}function fa(i,o){var e,t=o.defIds;return!t||t.length===0?i:i.tag==="defs"&&(!((e=i.children)===null||e===void 0)&&e.length)?ae(ae({},i),{children:i.children.map(function(a){return typeof a.attrs.id=="string"&&t&&t.indexOf(a.attrs.id)>-1?ae(ae({},a),{attrs:ae(ae({},a.attrs),{id:a.attrs.id+o.idSuffix})}):a})}):i}function ga(){return Math.random().toString(36).substring(2,8)}he.displayName="UniverIcon";var va={tag:"svg",attrs:{fill:"none",viewBox:"0 0 16 16",width:"1em",height:"1em"},children:[{tag:"path",attrs:{fill:"currentColor",d:"M14.44 3.57291C14.698 3.83093 14.698 4.24927 14.44 4.50729L6.44342 12.5037C6.28721 12.6599 6.03395 12.6599 5.87774 12.5037L1.55992 8.18578C1.3019 7.92776 1.3019 7.50942 1.55993 7.2514C1.81795 6.99338 2.23629 6.99338 2.49431 7.25141L6.01916 10.7763C6.09727 10.8544 6.2239 10.8544 6.30201 10.7763L13.5056 3.57291C13.7636 3.31489 14.1819 3.31489 14.44 3.57291Z",fillRule:"evenodd",clipRule:"evenodd"}}]},bt=C.forwardRef(function(i,o){return C.createElement(he,Object.assign({},i,{id:"check-mark-single",ref:o,icon:va}))});bt.displayName="CheckMarkSingle";const _a=bt;var Sa={tag:"svg",attrs:{fill:"none",viewBox:"0 0 17 17",width:"1em",height:"1em"},children:[{tag:"path",attrs:{stroke:"currentColor",d:"M6.06964 2.57153H2.73631C2.36812 2.57153 2.06964 2.87001 2.06964 3.2382V6.57153C2.06964 6.93973 2.36812 7.2382 2.73631 7.2382H6.06964C6.43784 7.2382 6.73631 6.93973 6.73631 6.57153V3.2382C6.73631 2.87001 6.43784 2.57153 6.06964 2.57153zM6.06964 9.90479H2.73631C2.36812 9.90479 2.06964 10.2033 2.06964 10.5715V13.9048C2.06964 14.273 2.36812 14.5715 2.73631 14.5715H6.06964C6.43784 14.5715 6.73631 14.273 6.73631 13.9048V10.5715C6.73631 10.2033 6.43784 9.90479 6.06964 9.90479z",strokeLinejoin:"round",strokeWidth:1.33}},{tag:"path",attrs:{stroke:"currentColor",d:"M9.20471 5.06981L11.2023 6.73445 14.2047 3.73213M13.7047 10.238L9.70465 14.238M9.70477 10.238L13.7048 14.238",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.33}}]},At=C.forwardRef(function(i,o){return C.createElement(he,Object.assign({},i,{id:"data-validation-single",ref:o,icon:Sa}))});At.displayName="DataValidationSingle";var Ra={tag:"svg",attrs:{fill:"none",viewBox:"0 0 16 16",width:"1em",height:"1em"},children:[{tag:"path",attrs:{fill:"currentColor",d:"M6.78662 6.17993C7.12169 6.17993 7.39331 6.45156 7.39331 6.78662V10.7301C7.39331 11.0652 7.12169 11.3368 6.78662 11.3368 6.45156 11.3368 6.17993 11.0652 6.17993 10.7301V6.78662C6.17993 6.45156 6.45156 6.17993 6.78662 6.17993zM9.82007 6.78662C9.82007 6.45156 9.54844 6.17993 9.21338 6.17993 8.87831 6.17993 8.60669 6.45156 8.60669 6.78662V10.7301C8.60669 11.0652 8.87831 11.3368 9.21338 11.3368 9.54844 11.3368 9.82007 11.0652 9.82007 10.7301V6.78662z"}},{tag:"path",attrs:{fill:"currentColor",d:"M6.57094 1.32642C6.34938 1.32642 6.14544 1.44719 6.03894 1.64148L5.21395 3.14648H1.93311C1.59804 3.14648 1.32642 3.41811 1.32642 3.75317C1.32642 4.08824 1.59804 4.35986 1.93311 4.35986H2.84314V14.0669C2.84314 14.402 3.11476 14.6736 3.44983 14.6736H12.5502C12.8852 14.6736 13.1569 14.402 13.1569 14.0669V4.35986H14.0669C14.402 4.35986 14.6736 4.08824 14.6736 3.75317C14.6736 3.41811 14.402 3.14648 14.0669 3.14648H10.7895L9.98357 1.64602C9.87785 1.4492 9.67252 1.32642 9.44911 1.32642H6.57094ZM9.4122 3.14648L9.08632 2.53979H6.93024L6.59767 3.14648H9.4122ZM4.05652 4.35986V13.4602H11.9435V4.35986H4.05652Z",fillRule:"evenodd",clipRule:"evenodd"}}]},Nt=C.forwardRef(function(i,o){return C.createElement(he,Object.assign({},i,{id:"delete-single",ref:o,icon:Ra}))});Nt.displayName="DeleteSingle";const Ut=Nt;var Va={tag:"svg",attrs:{fill:"none",viewBox:"0 0 16 16",width:"1em",height:"1em"},children:[{tag:"mask",attrs:{id:"mask0_102_249",style:{maskType:"alpha"},width:16,height:16,x:0,y:0,maskUnits:"userSpaceOnUse"},children:[{tag:"path",attrs:{fill:"#D9D9D9",d:"M0 0H16V16H0z"}}]},{tag:"g",attrs:{mask:"url(#mask0_102_249)"},children:[{tag:"path",attrs:{fill:"currentColor",d:"M8.74717 2.0944C8.74717 1.68671 8.41279 1.3562 8.00032 1.3562C7.58785 1.3562 7.25347 1.68671 7.25347 2.0944V7.26186H2.02541C1.61294 7.26186 1.27856 7.59237 1.27856 8.00007C1.27856 8.40777 1.61294 8.73827 2.02541 8.73827H7.25347V13.9057C7.25347 14.3134 7.58785 14.6439 8.00032 14.6439C8.41279 14.6439 8.74717 14.3134 8.74717 13.9057V8.73827H13.975C14.3874 8.73827 14.7218 8.40777 14.7218 8.00007C14.7218 7.59237 14.3874 7.26186 13.975 7.26186H8.74717V2.0944Z"}}]}]},jt=C.forwardRef(function(i,o){return C.createElement(he,Object.assign({},i,{id:"increase-single",ref:o,icon:Va}))});jt.displayName="IncreaseSingle";const Da=jt;var Ma={tag:"svg",attrs:{fill:"none",viewBox:"0 0 16 16",width:"1em",height:"1em"},children:[{tag:"mask",attrs:{id:"mask0_102_556",style:{maskType:"alpha"},width:16,height:16,x:0,y:0,maskUnits:"userSpaceOnUse"},children:[{tag:"path",attrs:{fill:"#D9D9D9",d:"M0 0H16V16H0z"}}]},{tag:"g",attrs:{mask:"url(#mask0_102_556)"},children:[{tag:"path",attrs:{fill:"currentColor",d:"M0.629584 3.99986C1.13729 3.4922 1.9604 3.49224 2.46806 3.99995L7.57569 9.10806C7.81 9.3424 8.18992 9.3424 8.42424 9.10808L13.5323 3.99998C14.04 3.4923 14.8631 3.4923 15.3708 3.99998C15.8785 4.50766 15.8785 5.33078 15.3708 5.83846L9.41415 11.7951C8.63307 12.5762 7.36669 12.5762 6.58565 11.7951L0.629497 5.83834C0.121839 5.33063 0.121879 4.50752 0.629584 3.99986Z",fillRule:"evenodd",clipRule:"evenodd"}}]}]},Pt=C.forwardRef(function(i,o){return C.createElement(he,Object.assign({},i,{id:"more-down-single",ref:o,icon:Ma}))});Pt.displayName="MoreDownSingle";const Oa=Pt;var Ia={tag:"svg",attrs:{fill:"none",viewBox:"0 0 16 16",width:"1em",height:"1em"},children:[{tag:"mask",attrs:{id:"mask0_506_5",style:{maskType:"alpha"},width:16,height:16,x:0,y:0,maskUnits:"userSpaceOnUse"},children:[{tag:"path",attrs:{fill:"#D9D9D9",d:"M16 16H32V32H16z",transform:"rotate(180 16 16)"}}]},{tag:"g",attrs:{mask:"url(#mask0_506_5)"},children:[{tag:"path",attrs:{fill:"currentColor",d:"M15.3704 12.0001C14.8627 12.5078 14.0396 12.5078 13.5319 12.0001L8.42431 6.89194C8.19 6.6576 7.81008 6.6576 7.57576 6.89192L2.46766 12C1.95998 12.5077 1.13687 12.5077 0.629185 12C0.121504 11.4923 0.121504 10.6692 0.629185 10.1615L6.58585 4.20487C7.36693 3.4238 8.63331 3.42383 9.41435 4.20494L15.3705 10.1617C15.8782 10.6694 15.8781 11.4925 15.3704 12.0001Z",fillRule:"evenodd",clipRule:"evenodd"}}]}]},xt=C.forwardRef(function(i,o){return C.createElement(he,Object.assign({},i,{id:"more-up-single",ref:o,icon:Ia}))});xt.displayName="MoreUpSingle";const Ca=xt;var Ea={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"}}]}]},Bt=C.forwardRef(function(i,o){return C.createElement(he,Object.assign({},i,{id:"sequence-single",ref:o,icon:Ea}))});Bt.displayName="SequenceSingle";const ya=Bt,Fa="univer-data-validation-options-button",wa="univer-data-validation-options-button-icon",Ke={dataValidationOptionsButton:Fa,dataValidationOptionsButtonIcon:wa};function Ta(i){var c;const o=A.useDependency(s.LocaleService),e=A.useDependency(B.ComponentManager),{value:t,onChange:a,extraComponent:r}=i,[n,l]=C.useState(!1),d=r?e.get(r):null;return f.jsxs(f.Fragment,{children:[f.jsxs("div",{className:Ke.dataValidationOptionsButton,onClick:()=>l(!n),children:[o.t("dataValidation.panel.options"),n?f.jsx(Ca,{className:Ke.dataValidationOptionsButtonIcon}):f.jsx(Oa,{className:Ke.dataValidationOptionsButtonIcon})]}),n&&f.jsxs(f.Fragment,{children:[d?f.jsx(d,{value:t,onChange:a}):null,f.jsx(E.FormLayout,{label:o.t("dataValidation.panel.invalid"),children:f.jsxs(E.RadioGroup,{value:`${(c=t.errorStyle)!=null?c:s.DataValidationErrorStyle.WARNING}`,onChange:u=>a({...t,errorStyle:+u}),children:[f.jsx(E.Radio,{value:`${s.DataValidationErrorStyle.WARNING}`,children:o.t("dataValidation.panel.showWarning")}),f.jsx(E.Radio,{value:`${s.DataValidationErrorStyle.STOP}`,children:o.t("dataValidation.panel.rejectInput")})]})}),f.jsx(E.FormLayout,{label:o.t("dataValidation.panel.messageInfo"),children:f.jsx(E.Checkbox,{checked:t.showInputMessage,onChange:()=>a({...t,showInputMessage:!t.showInputMessage}),children:o.t("dataValidation.panel.showInfo")})}),t.showInputMessage?f.jsx(E.FormLayout,{children:f.jsx(E.Input,{value:t.error,onChange:u=>a({...t,error:u})})}):null]})]})}const La="univer-data-validation-detail-form-item",ba="univer-data-validation-detail-buttons",Aa="univer-data-validation-detail-button",De={dataValidationDetailFormItem:La,dataValidationDetailButtons:ba,dataValidationDetailButton:Aa},Na=i=>s.debounce(async(o,e,t,a)=>{const r=await i.executeCommand(o,e,t);a==null||a(r)},275);function Ua(){const[i,o]=C.useState(0),e=A.useDependency(Ve),t=B.useObservable(e.activeRule$,e.activeRule),{unitId:a,subUnitId:r,rule:n}=t||{},l=n.uid,d=A.useDependency(R.DataValidatorRegistryService),c=A.useDependency(B.ComponentManager),u=A.useDependency(s.ICommandService),h=A.useDependency(R.DataValidationModel),p=A.useDependency(s.LocaleService),[m,v]=C.useState(n),g=d.getValidatorItem(m.type),[S,V]=C.useState(!1),M=d.getValidatorsByScope(R.DataValidatorRegistryScope.SHEET),[D,I]=C.useState(()=>m.ranges.map(w=>({unitId:"",sheetId:"",range:w}))),F=C.useMemo(()=>Na(u),[u]);if(C.useEffect(()=>{u.onCommandExecuted(w=>{(w.id===s.UndoCommand.id||w.id===s.RedoCommand.id)&&setTimeout(()=>{const L=h.getRuleById(a,r,l);o(Q=>Q+1),L&&(v(L),I(L.ranges.map(Q=>({unitId:"",sheetId:"",range:Q}))))},20)})},[u,h,l,r,a]),!g)return null;const T=g.operators,b=g.operatorNames,$=m.operator?R.TWO_FORMULA_OPERATOR_COUNT.includes(m.operator):!1,U=()=>{g.validatorFormula(m).success?e.setActiveRule(null):V(!0)},j=B.useEvent(w=>{if(s.isUnitRangesEqual(w,D))return;I(w);const L=w.filter(W=>(!W.unitId||W.unitId===a)&&(!W.sheetId||W.sheetId===r)).map(W=>W.range);if(v({...m,ranges:L}),L.length===0)return;const Q={unitId:a,subUnitId:r,ruleId:l,ranges:L};F(ht.id,Q)}),N=w=>{if(s.shallowEqual(w,R.getRuleSetting(m)))return;v({...m,...w});const L={unitId:a,subUnitId:r,ruleId:l,setting:w};F(R.UpdateDataValidationSettingCommand.id,L,void 0)},Y=async()=>{await u.executeCommand(R.RemoveDataValidationCommand.id,{ruleId:l,unitId:a,subUnitId:r}),e.setActiveRule(null)},H={type:m.type,operator:m.operator,formula1:m.formula1,formula2:m.formula2,allowBlank:m.allowBlank},G=w=>{const L=d.getValidatorItem(w);if(!L)return;const Q=L.operators,W=h.getRuleById(a,r,l),y=w===(W==null?void 0:W.type)?{...W}:{...m,type:w,operator:Q[0],formula1:void 0,formula2:void 0};v(y),u.executeCommand(R.UpdateDataValidationSettingCommand.id,{unitId:a,subUnitId:r,ruleId:m.uid,setting:R.getRuleSetting(y)})},x=c.get(g.formulaInput),K=D.map(w=>se.serializeRange(w.range)).join(","),ee=R.getRuleOptions(m),X=w=>{s.shallowEqual(w,R.getRuleOptions(m))||(v({...m,...w}),F(R.UpdateDataValidationOptionsCommand.id,{unitId:a,subUnitId:r,ruleId:l,options:w}))};return f.jsxs("div",{children:[f.jsx(E.FormLayout,{label:p.t("dataValidation.panel.range"),children:f.jsx(B.RangeSelector,{className:De.dataValidationDetailFormItem,value:K,id:s.createInternalEditorID("data-validation-detail"),openForSheetUnitId:a,openForSheetSubUnitId:r,onChange:w=>{w.some(L=>!s.isValidRange(L.range)||L.range.endColumn<L.range.startColumn||L.range.endRow<L.range.startRow)||j(w)}},i)}),f.jsx(E.FormLayout,{label:p.t("dataValidation.panel.type"),children:f.jsx(E.Select,{options:M==null?void 0:M.map(w=>({label:p.t(w.title),value:w.id})),value:m.type,onChange:G,className:De.dataValidationDetailFormItem})}),T!=null&&T.length?f.jsx(E.FormLayout,{label:p.t("dataValidation.panel.operator"),children:f.jsx(E.Select,{options:T.map((w,L)=>({value:`${w}`,label:b[L]})),value:`${m.operator}`,onChange:w=>{N({...H,operator:w})},className:De.dataValidationDetailFormItem})}):null,x?f.jsx(x,{isTwoFormula:$,value:{formula1:m.formula1,formula2:m.formula2},onChange:w=>{N({...H,...w})},showError:S,validResult:g.validatorFormula(m),unitId:a,subUnitId:r,ruleId:l},i):null,f.jsx(Ta,{value:ee,onChange:X,extraComponent:g.optionsInput}),f.jsxs("div",{className:De.dataValidationDetailButtons,children:[f.jsx(E.Button,{className:De.dataValidationDetailButton,onClick:Y,children:p.t("dataValidation.panel.removeRule")}),f.jsx(E.Button,{className:De.dataValidationDetailButton,type:"primary",onClick:U,children:p.t("dataValidation.panel.done")})]})]})}const ja="univer-data-validation-item-container",Pa="univer-data-validation-item-title",xa="univer-data-validation-item-content",Ba="univer-data-validation-item-icon",Le={dataValidationItemContainer:ja,dataValidationItemTitle:Pa,dataValidationItemContent:xa,dataValidationItemIcon:Ba},$a=i=>{const{rule:o,onClick:e,unitId:t,subUnitId:a}=i,r=A.useDependency(R.DataValidatorRegistryService),n=A.useDependency(s.ICommandService),l=A.useDependency(P.IMarkSelectionService),d=r.getValidatorItem(o.type),c=C.useRef(),[u,h]=C.useState(!1),p=m=>{n.executeCommand(R.RemoveDataValidationCommand.id,{ruleId:o.uid,unitId:t,subUnitId:a}),m.stopPropagation()};return C.useEffect(()=>()=>{var m;c.current&&((m=c.current)==null||m.forEach(v=>{v&&l.removeShape(v)}))},[l]),f.jsxs("div",{className:Le.dataValidationItemContainer,onClick:e,onMouseEnter:()=>{h(!0),c.current=o.ranges.map(m=>l.addShape({range:m,style:{hasAutoFill:!1,fill:"rgba(73, 184, 17, 0.05)",strokeWidth:1,stroke:"#49B811",widgets:{}},primary:{startColumn:m.startColumn,endColumn:m.endColumn,startRow:m.startRow,endRow:m.endRow,actualRow:m.startRow,actualColumn:m.startColumn,isMerged:!1,isMergedMainCell:!1}}))},onMouseLeave:()=>{var m;h(!1),(m=c.current)==null||m.forEach(v=>{v&&l.removeShape(v)}),c.current=void 0},children:[f.jsx("div",{className:Le.dataValidationItemTitle,children:d==null?void 0:d.generateRuleName(o)}),f.jsx("div",{className:Le.dataValidationItemContent,children:o.ranges.map(m=>se.serializeRange(m)).join(",")}),u?f.jsx("div",{className:Le.dataValidationItemIcon,onClick:p,children:f.jsx(Ut,{})}):null]})},Ha="univer-data-validation-list-buttons",Wa="univer-data-validation-list-button",Ze={dataValidationListButtons:Ha,dataValidationListButton:Wa},ka=C.memo(()=>{var g;const i=A.useDependency(s.IUniverInstanceService),o=A.useDependency(R.DataValidationModel),e=A.useDependency(s.ICommandService),t=A.useDependency(O.Injector),a=A.useDependency(Ve),r=B.useObservable(()=>i.getCurrentTypeOfUnit$(s.UniverInstanceType.UNIVER_SHEET),void 0,!0,[]),n=A.useDependency(s.LocaleService),[l,d]=C.useState([]),c=(g=B.useObservable(r.activeSheet$,r.getActiveSheet()))!=null?g:r.getActiveSheet(),u=r.getUnitId(),h=c.getSheetId(),p=o.ensureManager(u,h);C.useEffect(()=>{d(p.getDataValidations());const S=p.dataValidations$.subscribe(V=>{d([...V])});return()=>{S.unsubscribe()}},[p]);const m=async()=>{const S=R.createDefaultNewRule(t),V={unitId:u,subUnitId:h,rule:S};await e.executeCommand(Ge.id,V),a.setActiveRule({unitId:u,subUnitId:h,rule:S})},v=()=>{e.executeCommand(R.RemoveAllDataValidationCommand.id,{unitId:u,subUnitId:h})};return f.jsxs("div",{children:[l.map(S=>f.jsx($a,{unitId:u,subUnitId:h,onClick:()=>a.setActiveRule({unitId:u,subUnitId:h,rule:S}),rule:S},S.uid)),f.jsxs("div",{className:Ze.dataValidationListButtons,children:[l.length?f.jsx(E.Button,{className:Ze.dataValidationListButton,onClick:v,children:n.t("dataValidation.panel.removeAll")}):null,f.jsx(E.Button,{className:Ze.dataValidationListButton,type:"primary",onClick:m,children:n.t("dataValidation.panel.add")})]})]})}),qa=()=>{const i=A.useDependency(Ve),o=B.useObservable(i.activeRule$,i.activeRule);return o?f.jsx(Ua,{},o.rule.uid):f.jsx(ka,{})};function te(i){if(i===null)return"";if(i!=null&&i.p){const o=i==null?void 0:i.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 i==null?void 0:i.v}function $t(i){return i.filter(Boolean).join(",")}function Oe(i){return i.split(",").filter(Boolean)}function Ya(i){const o=te(i);return o==null?"":o.toString()}const ze="SHEET_DATA_VALIDATION_PLUGIN",ve="#ECECEC",Ga="univer-dv-list-dropdown",za="univer-dv-list-dropdown-title",Xa="univer-dv-list-dropdown-list",Qa="univer-dv-list-dropdown-list-container",Ka="univer-dv-list-dropdown-selected-icon",Za="univer-dv-list-dropdown-item-container",Ja="univer-dv-list-dropdown-item",er="univer-dv-list-dropdown-split",tr="univer-dv-list-dropdown-edit",de={dvListDropdown:Ga,dvListDropdownTitle:za,dvListDropdownList:Xa,dvListDropdownListContainer:Qa,dvListDropdownSelectedIcon:Ka,dvListDropdownItemContainer:Za,dvListDropdownItem:Ja,dvListDropdownSplit:er,dvListDropdownEdit:tr},ar=i=>{const{value:o,onChange:e,multiple:t,options:a,title:r,onEdit:n,style:l}=i;return f.jsxs("div",{className:de.dvListDropdown,style:l,children:[f.jsx("div",{className:de.dvListDropdownTitle,children:r}),f.jsx("div",{className:de.dvListDropdownList,children:f.jsx(E.Scrollbar,{children:f.jsx("div",{className:de.dvListDropdownListContainer,children:a.map((d,c)=>{const u=o.indexOf(d.value)>-1,h=()=>{let p;u?p=new Set(o.filter(v=>v!==d.value)):p=new Set(t?[...o,d.value]:[d.value]);const m=[];a.forEach(v=>{p.has(v.value)&&m.push(v.value)}),e(m)};return f.jsxs("div",{className:de.dvListDropdownItemContainer,onClick:h,children:[f.jsx("div",{className:de.dvListDropdownItem,style:{background:d.color||ve},children:d.label}),f.jsx("div",{className:de.dvListDropdownSelectedIcon,children:u?f.jsx(_a,{}):null})]},c)})})})}),f.jsx("div",{className:de.dvListDropdownSplit}),f.jsx("div",{className:de.dvListDropdownEdit,children:f.jsx("a",{onClick:n,children:"编辑"})})]})};function rr(i){var $,U;const{location:o,hideFn:e}=i,{worksheet:t,row:a,col:r,unitId:n,subUnitId:l}=o,d=A.useDependency(s.ICommandService),c=A.useDependency(s.LocaleService),[u,h]=C.useState(""),p=A.useDependency(P.IEditorBridgeService),m=E.RectPopup.useContext(),v=m.right-m.left;if(!t)return null;const g=t.getCell(a,r),S=($=g==null?void 0:g.dataValidation)==null?void 0:$.rule,V=(U=g==null?void 0:g.dataValidation)==null?void 0:U.validator,M=(S==null?void 0:S.renderMode)===s.DataValidationRenderMode.CUSTOM||(S==null?void 0:S.renderMode)===void 0;if(!g||!S||!V)return;const D=S.type===s.DataValidationType.LIST_MULTIPLE,I=V.getListWithColor(S,n,l),F=u||Ya(g),T=Oe(F),b=()=>{d.executeCommand(we.id,{ruleId:S.uid}),e()};return f.jsx(ar,{style:{minWidth:v,maxWidth:Math.max(v,200)},title:D?c.t("dataValidation.listMultiple.dropdown"):c.t("dataValidation.list.dropdown"),value:T,multiple:D,onChange:j=>{const N=$t(j),Y={unitId:n,subUnitId:l,range:{startColumn:r,endColumn:r,startRow:a,endRow:a},value:{v:N,p:null,f:null,si:null}};p.isVisible()&&p.changeVisible({visible:!1,keycode:B.KeyCode.ESC,eventType:z.DeviceInputEventType.Keyboard}),d.executeCommand(re.SetRangeValuesCommand.id,Y),h(N),D||e()},options:I.map(j=>({label:j.label,value:j.label,color:M?j.color:"transparent"})),onEdit:b})}var or=Object.defineProperty,nr=Object.getOwnPropertyDescriptor,ir=(i,o,e,t)=>{for(var a=t>1?void 0:t?nr(o,e):o,r=i.length-1,n;r>=0;r--)(n=i[r])&&(a=(t?n(o,e,a):n(a))||a);return t&&a&&or(o,e,a),a},Ee=(i,o)=>(e,t)=>o(e,t,i);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:n,col:l,unitId:d,subUnitId:c}=e,u=this._dataValidationModel.ensureManager(d,c),h=u.getRuleIdByLocation(n,l),p=h?u.getRuleById(h):void 0;if(!p||p.errorStyle!==s.DataValidationErrorStyle.STOP)return t(Promise.resolve(a));const m=await this._dataValidatorRegistryService.getValidatorItem(p.type);if(!m||await m.validator({value:te(a),row:n,column:l,unitId:d,subUnitId:c},p))return t(Promise.resolve(a));const g=r.getCellRaw(n,l);return this._dialogService.open({width:368,title:{title:this._localeService.t("dataValidation.alert.title")},id:"reject-input-dialog",children:{title:m.getRuleFinalError(p)},footer:{title:C.createElement(E.Button,{type:"primary",onClick:()=>this._dialogService.close("reject-input-dialog")},this._localeService.t("dataValidation.alert.ok"))},onClose:()=>{this._dialogService.close("reject-input-dialog")}}),t(Promise.resolve(g))}})}showReject(o){this._dialogService.open({width:368,title:{title:this._localeService.t("dataValidation.alert.title")},id:"reject-input-dialog",children:{title:o},footer:{title:C.createElement(E.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=ir([s.OnLifecycle(s.LifecycleStages.Ready,exports.DataValidationRejectInputController),Ee(0,P.IEditorBridgeService),Ee(1,O.Inject(R.DataValidationModel)),Ee(2,O.Inject(R.DataValidatorRegistryService)),Ee(3,B.IDialogService),Ee(4,O.Inject(s.LocaleService))],exports.DataValidationRejectInputController);const sr="univer-dv-date-dropdown",lr={dvDateDropdown:sr};function dr(i){var M,D,I;const{location:o,hideFn:e}=i,{worksheet:t,row:a,col:r,unitId:n,subUnitId:l}=o,d=A.useDependency(s.ICommandService),c=A.useDependency(exports.DataValidationRejectInputController),[u,h]=C.useState();if(!t)return null;const p=t.getCell(a,r),m=(M=p==null?void 0:p.dataValidation)==null?void 0:M.rule,v=(D=p==null?void 0:p.dataValidation)==null?void 0:D.validator;if(!p||!m||!v)return;const g=te(p),S=(I=v.transformDate(g))!=null?I:Se(),V=S.isValid()?S:Se();return f.jsx("div",{className:lr.dvDateDropdown,children:f.jsx(E.DatePanel,{pickerValue:u!=null?u:V,onSelect:async F=>{const T=F.format("YYYY/MM/DD");m.errorStyle!==s.DataValidationErrorStyle.STOP||await v.validator({value:T,unitId:n,subUnitId:l,row:a,column:r},m)?d.executeCommand(re.SetRangeValuesCommand.id,{unitId:n,subUnitId:l,range:{startColumn:r,endColumn:r,startRow:a,endRow:a},value:{v:T,p:null,f:null,si:null}}):c.showReject(v.getRuleFinalError(m)),e()},onPanelChange:F=>{h(F)}})})}const Ht="data-validation.list.dropdown",Wt="data-validation.date.dropdown";function cr(i){var d;const{unitId:o,subUnitId:e,value:t,onChange:a,showError:r,validResult:n}=i,l=r?n==null?void 0:n.formula1:"";return f.jsx(E.FormLayout,{error:l,children:f.jsx(B.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 ur="univer-data-validation-formula",mr="univer-data-validation-formula-and",hr="univer-data-validation-formula-list-item",pr="univer-data-validation-formula-list-item-icon",fr="univer-data-validation-formula-list-item-drag",gr="univer-data-validation-formula-list-add",vr="univer-data-validation-formula-color-select",_r="univer-data-validation-formula-color-select-panel",Sr="univer-data-validation-formula-color-item",J={dataValidationFormula:ur,dataValidationFormulaAnd:mr,dataValidationFormulaListItem:hr,dataValidationFormulaListItemIcon:pr,dataValidationFormulaListItemDrag:fr,dataValidationFormulaListAdd:gr,dataValidationFormulaColorSelect:vr,dataValidationFormulaColorSelectPanel:_r,dataValidationFormulaColorItem:Sr},Rr=i=>{const{isTwoFormula:o=!1,value:e,onChange:t,showError:a,validResult:r}=i,n=A.useDependency(s.LocaleService),l=a?r==null?void 0:r.formula1:"",d=a?r==null?void 0:r.formula2:"";return o?f.jsxs(f.Fragment,{children:[f.jsx(E.FormLayout,{error:l,children:f.jsx(E.Input,{className:J.dataValidationFormula,placeholder:n.t("dataValidation.panel.formulaPlaceholder"),value:e==null?void 0:e.formula1,onChange:c=>{t==null||t({...e,formula1:c})}})}),f.jsx("div",{className:J.dataValidationFormulaAnd,children:n.t("dataValidation.panel.formulaAnd")}),f.jsx(E.FormLayout,{error:d,children:f.jsx(E.Input,{className:J.dataValidationFormula,placeholder:n.t("dataValidation.panel.formulaPlaceholder"),value:e==null?void 0:e.formula2,onChange:c=>{t==null||t({...e,formula2:c})}})})]}):f.jsx(E.FormLayout,{error:l,children:f.jsx(E.Input,{className:J.dataValidationFormula,placeholder:n.t("dataValidation.panel.formulaPlaceholder"),value:e==null?void 0:e.formula1,onChange:c=>{t==null||t({formula1:c})}})})},Vr=["#FFFFFF","#FEE7E7","#FEF0E6","#EFFBD0","#E4F4FE","#E8ECFD","#F1EAFA","#FDE8F3","#E5E5E5","#FDCECE","#FDC49B","#DEF6A2","#9FDAFF","#D0D9FB","#E3D5F6","#FBD0E8","#656565","#FE4B4B","#FF8C51","#8BBB11","#0B9EFB","#3A60F7","#9E6DE3","#F248A6"],Dr=i=>{const{value:o,onChange:e,disabled:t}=i,[a,r]=C.useState(!1);return f.jsx(E.Select,{disabled:t,open:a,onDropdownVisibleChange:r,dropdownStyle:{width:112},className:J.dataValidationFormulaColorSelect,value:o,onChange:e,labelRender:n=>f.jsx("div",{className:J.dataValidationFormulaColorItem,style:{background:n.value}}),dropdownRender:()=>f.jsx("div",{className:J.dataValidationFormulaColorSelectPanel,children:Vr.map(n=>f.jsx("div",{onClick:()=>{e(n),r(!1)},className:J.dataValidationFormulaColorItem,style:{background:n}},n))})})},vt=i=>{const{item:o,commonProps:e,style:t}=i,{onItemChange:a,onItemDelete:r}=e;return f.jsxs("div",{className:J.dataValidationFormulaListItem,style:t,children:[o.isRef?null:f.jsx("div",{className:ta(J.dataValidationFormulaListItemDrag,"draggableHandle"),children:f.jsx(ya,{})}),f.jsx(Dr,{value:o.color,onChange:n=>{a(o.id,o.label,n)}}),f.jsx(E.Input,{disabled:o.isRef,value:o.label,onChange:n=>{a(o.id,n,o.color)}}),o.isRef?null:f.jsx("div",{className:J.dataValidationFormulaListItemIcon,children:f.jsx(Ut,{onClick:()=>r(o.id)})})]})};function Mr(i){const{value:o,onChange:e=()=>{},unitId:t,subUnitId:a,validResult:r,showError:n,ruleId:l}=i,{formula1:d="",formula2:c=""}=o||{},u=C.useRef(null),[h,p]=C.useState(()=>s.isFormulaString(d)?"1":"0"),[m,v]=C.useState(h==="1"?d:"="),[g,S]=C.useState(h==="1"?d:"="),V=A.useDependency(s.LocaleService),M=A.useDependency(R.DataValidatorRegistryService),D=A.useDependency(R.DataValidationModel),[I,F]=C.useState(()=>c.split(",")),T=M.getValidatorItem(s.DataValidationType.LIST),[b,$]=C.useState([]),[U,j]=C.useState(""),N=n?r==null?void 0:r.formula1:"",Y=B.useObservable(D.ruleChange$),H=B.useEvent(e);C.useEffect(()=>{(async()=>{await new Promise(k=>{setTimeout(()=>k(!0),100)});const y=D.getRuleById(t,a,l),q=y==null?void 0:y.formula1;if(s.isFormulaString(q)&&T&&y){const k=await T.getListAsync(y,t,a);$(k)}})()},[D,Y,T,l,a,t]),C.useEffect(()=>{s.isFormulaString(d)&&d!==g&&(v(d),S(g))},[g,d]);const[G,x]=C.useState(()=>{const y=h!=="1"?Oe(d):[],q=c.split(",");return y.map((k,Z)=>({label:k,color:q[Z]||ve,isRef:!1,id:s.Tools.generateRandomId(4)}))}),K=(y,q,k)=>{const Z=G.find(le=>le.id===y);Z&&(Z.label=q,Z.color=k,x([...G]))},ee=y=>{const q=G.findIndex(k=>k.id===y);q!==-1&&(G.splice(q,1),x([...G]))},X=c.split(","),w=C.useMemo(()=>b.map((y,q)=>({label:y,color:X[q]||ve,id:`${q}`,isRef:!0})),[X,b]),L=(y,q,k)=>{const Z=[...I];Z[+y]=k,F(Z),H({formula1:d,formula2:Z.join(",")})},Q=()=>{x([...G,{label:"",color:ve,isRef:!1,id:s.Tools.generateRandomId(4)}])};C.useEffect(()=>{if(h==="1")return;const y=new Set,q=[];G.map(k=>({labelList:k.label.split(","),item:k})).forEach(({item:k,labelList:Z})=>{Z.forEach(le=>{y.has(le)||(y.add(le),q.push({label:le,color:k.color}))})}),H({formula1:$t(q.map(k=>k.label)),formula2:q.map(k=>k.color===ve?"":k.color).join(",")})},[G,H,h,g,I]);const W=C.useMemo(()=>async y=>{if(!s.isFormulaString(y)){H==null||H({formula1:"",formula2:c});return}H==null||H({formula1:s.isFormulaString(y)?y:"",formula2:c})},[c,H]);return f.jsxs(f.Fragment,{children:[f.jsx(E.FormLayout,{label:V.t("dataValidation.list.options"),children:f.jsxs(E.RadioGroup,{value:h,onChange:y=>{p(y),v(g),y==="1"&&H({formula1:g==="="?"":g,formula2:I.join(",")})},children:[f.jsx(E.Radio,{value:"0",children:V.t("dataValidation.list.customOptions")}),f.jsx(E.Radio,{value:"1",children:V.t("dataValidation.list.refOptions")})]})}),h==="1"?f.jsxs(f.Fragment,{children:[f.jsx(E.FormLayout,{error:N||U,children:f.jsx(B.TextEditor,{id:s.createInternalEditorID(`list-ref-range-${t}-${a}`),value:m,openForSheetUnitId:t,openForSheetSubUnitId:a,onlyInputFormula:!0,onChange:async y=>{const q=y!=null?y:"";S(q),W(q)}})}),f.jsx(E.FormLayout,{children:f.jsx("div",{ref:u,children:w.map(y=>f.jsx(vt,{item:y,commonProps:{onItemChange:L},style:{marginBottom:12}},y.id))})})]}):f.jsx(E.FormLayout,{error:N,children:f.jsxs("div",{ref:u,style:{marginTop:"-12px"},children:[f.jsx(E.DraggableList,{list:G,onListChange:x,rowHeight:32,margin:[0,12],draggableHandle:".draggableHandle",itemRender:y=>f.jsx(vt,{item:y,commonProps:{onItemChange:K,onItemDelete:ee}},y.id),idKey:"id"}),f.jsxs("a",{className:J.dataValidationFormulaListAdd,onClick:Q,children:[f.jsx(Da,{}),V.t("dataValidation.list.add")]})]})})]})}function Or(i){const{value:o,onChange:e,showError:t,validResult:a}=i,r=A.useDependency(s.LocaleService),n=t?a==null?void 0:a.formula1:"",l=t?a==null?void 0:a.formula2:"",[d,c]=C.useState(!((o==null?void 0:o.formula1)===void 0&&(o==null?void 0:o.formula2)===void 0));return f.jsxs(f.Fragment,{children:[f.jsx(E.FormLayout,{children:f.jsx(E.Checkbox,{checked:d,onChange:u=>{u?c(!0):(c(!1),e==null||e({...o,formula1:void 0,formula2:void 0}))},children:r.t("dataValidation.checkbox.tips")})}),d?f.jsx(E.FormLayout,{label:r.t("dataValidation.checkbox.checked"),error:n,children:f.jsx(E.Input,{className:J.dataValidationFormula,placeholder:r.t("dataValidation.panel.formulaPlaceholder"),value:o==null?void 0:o.formula1,onChange:u=>{e==null||e({...o,formula1:u})}})}):null,d?f.jsx(E.FormLayout,{label:r.t("dataValidation.checkbox.unchecked"),error:l,children:f.jsx(E.Input,{className:J.dataValidationFormula,placeholder:r.t("dataValidation.panel.formulaPlaceholder"),value:o==null?void 0:o.formula2,onChange:u=>{e==null||e({...o,formula2:u})}})}):null]})}const kt="data-validation.custom-formula-input",Te="data-validation.formula-input",qt="data-validation.list-formula-input",Yt="data-validation.checkbox-formula-input",Ir=[[kt,cr],[Te,Rr],[qt,Mr],[Yt,Or]],Cr="LIST_RENDER_MODE_OPTION_INPUT";function $e(i){var a;const{value:o,onChange:e}=i,t=A.useDependency(s.LocaleService);return f.jsx(E.FormLayout,{label:t.t("dataValidation.renderMode.label"),children:f.jsxs(E.RadioGroup,{value:`${(a=o.renderMode)!=null?a:s.DataValidationRenderMode.CUSTOM}`,onChange:r=>e({...o,renderMode:+r}),children:[f.jsx(E.Radio,{value:`${s.DataValidationRenderMode.CUSTOM}`,children:t.t("dataValidation.renderMode.chip")}),f.jsx(E.Radio,{value:`${s.DataValidationRenderMode.ARROW}`,children:t.t("dataValidation.renderMode.arrow")}),f.jsx(E.Radio,{value:`${s.DataValidationRenderMode.TEXT}`,children:t.t("dataValidation.renderMode.text")})]})})}$e.componentKey=Cr;const Gt="data-validation-single",ft="sheet.menu.data-validation";function Er(i){return{id:ft,type:B.MenuItemType.SUBITEMS,positions:[B.MenuPosition.TOOLBAR_START],group:B.MenuGroup.TOOLBAR_FORMULAS_INSERT,icon:Gt,tooltip:"dataValidation.title",hidden$:B.getMenuHiddenObservable(i,s.UniverInstanceType.UNIVER_SHEET)}}function yr(i){return{id:we.id,title:"dataValidation.panel.title",type:B.MenuItemType.BUTTON,positions:[ft]}}function Fr(i){return{id:pt.id,title:"dataValidation.panel.add",type:B.MenuItemType.BUTTON,positions:[ft]}}var wr=Object.defineProperty,Tr=Object.getOwnPropertyDescriptor,Lr=(i,o,e,t)=>{for(var a=t>1?void 0:t?Tr(o,e):o,r=i.length-1,n;r>=0;r--)(n=i[r])&&(a=(t?n(o,e,a):n(a))||a);return t&&a&&wr(o,e,a),a},oe=(i,o)=>(e,t)=>o(e,t,i);const br={tr:{size:6,color:"#fe4b4b"}};exports.DataValidationRenderController=class extends s.RxDisposable{constructor(o,e,t,a,r,n,l,d,c,u,h){super(),this._componentManager=o,this._menuService=e,this._dataValidationModel=t,this._sheetSkeletonManagerService=a,this._renderManagerService=r,this._univerInstanceService=n,this._dataValidatorRegistryService=l,this._editorBridgeService=d,this._dropdownManagerService=c,this._sheetInterceptorService=u,this._injector=h,this._init()}_init(){this._initComponents(),this._initMenu(),this._initSkeletonChange(),this._initDropdown(),this._initViewModelIntercept()}_initMenu(){[Er,yr,Fr].forEach(o=>{this.disposeWithMe(this._menuService.addMenuItem(o(this._injector)))})}_initComponents(){[[Ft,qa],[yt,la],[Ht,rr],[Wt,dr],[$e.componentKey,$e],...Ir].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:n}=e,l=this._univerInstanceService.getUniverSheetInstance(t);if(!l)return;const c=this._dataValidationModel.ensureManager(t,a).getRuleByLocation(r,n);if(!c)return;const u=this._dataValidatorRegistryService.getValidatorItem(c.type);if(!(u!=null&&u.dropdown))return;const h=l.getActiveSheet(),p=this._dropdownManagerService.activeDropdown,m=p==null?void 0:p.location;if(m&&m.unitId===t&&m.subUnitId===a&&m.row===r&&m.col===n)return;this._dropdownManagerService.showDropdown({location:{unitId:t,subUnitId:a,row:r,col:n,workbook:l,worksheet:h},componentKey:u.dropdown,onHide:()=>{}})}}))}_initSkeletonChange(){const o=()=>{const e=this._univerInstanceService.getCurrentUnitForType(s.UniverInstanceType.UNIVER_SHEET);if(!e)return;const t=e.getUnitId(),a=e.getActiveSheet().getSheetId(),r=this._sheetSkeletonManagerService.getOrCreateSkeleton({unitId:t,sheetId:a}),n=this._renderManagerService.getRenderById(t);r==null||r.makeDirty(!0),r==null||r.calculate(),n&&n.mainComponent.makeForceDirty()};this.disposeWithMe(this._dataValidationModel.ruleChange$.subscribe(()=>{o()})),this.disposeWithMe(this._dataValidationModel.validStatusChange$.subscribe(()=>{o()}))}_initViewModelIntercept(){this.disposeWithMe(this._sheetInterceptorService.intercept(re.INTERCEPTOR_POINT.CELL_CONTENT,{handler:(o,e,t)=>{var D,I,F,T;const{row:a,col:r,unitId:n,subUnitId:l}=e,d=this._dataValidationModel.ensureManager(n,l),c=(D=this._sheetSkeletonManagerService.getCurrent())==null?void 0:D.skeleton;if(!d||!c)return t(o);const u=e.workbook.getStyles(),h=(typeof(o==null?void 0:o.s)=="string"?u.get(o==null?void 0:o.s):o==null?void 0:o.s)||{},p=d.getRuleIdByLocation(a,r);if(!p)return t(o);const m=d.getRuleById(p);if(!m)return t(o);const v=e.worksheet.getCellRaw(e.row,e.col),g=this._dataValidationModel.validator(te(v),m,e),S=this._dataValidatorRegistryService.getValidatorItem(m.type),V=te(o);let M={};if((m.type===s.DataValidationType.LIST||m.type===s.DataValidationType.LIST_MULTIPLE)&&(M={interceptorStyle:{...o==null?void 0:o.interceptorStyle,tb:(I=h.tb!==s.WrapStrategy.OVERFLOW?h.tb:s.WrapStrategy.CLIP)!=null?I:s.WrapStrategy.WRAP}}),m.type===s.DataValidationType.CHECKBOX){const{formula2:b}=S.parseFormulaSync(m,e.unitId,e.subUnitId);V||(M={v:b,t:1,p:null,interceptorStyle:{...o==null?void 0:o.interceptorStyle,tb:s.WrapStrategy.CLIP}})}if(m.type===s.DataValidationType.LIST&&(m.renderMode===s.DataValidationRenderMode.ARROW||m.renderMode===s.DataValidationRenderMode.TEXT)){const b=S.getListWithColorMap(m),$=`${(F=te(o))!=null?F:""}`,U=b[$];U&&(M={...M,interceptorStyle:{...M.interceptorStyle,bg:{rgb:U}}})}return t({...o,...M,dataValidation:{ruleId:p,validStatus:g,rule:m,validator:S},markers:{...o==null?void 0:o.markers,...g===s.DataValidationStatus.INVALID?br:null},customRender:[...(T=o==null?void 0:o.customRender)!=null?T:[],...S!=null&&S.canvasRender?[S.canvasRender]:[]],fontRenderExtension:{...o==null?void 0:o.fontRenderExtension,isSkip:S==null?void 0:S.skipDefaultFontRender(m,V,e)},interceptorStyle:{...o==null?void 0:o.interceptorStyle,...M.interceptorStyle},get interceptorAutoHeight(){var U,j,N,Y;const b=c.mergeData.find(H=>{const{startColumn:G,startRow:x,endColumn:K,endRow:ee}=H;return a>=x&&r>=G&&a<=ee&&r<=K}),$={data:{...o,dataValidation:{ruleId:p,validStatus:g,rule:m,validator:S}},style:c.getsStyles().getStyleByCell(o),primaryWithCoord:c.getCellByIndex((U=b==null?void 0:b.startRow)!=null?U:a,(j=b==null?void 0:b.startColumn)!=null?j:r),unitId:n,subUnitId:l,row:a,col:r};return(Y=(N=S==null?void 0:S.canvasRender)==null?void 0:N.calcCellAutoHeight)==null?void 0:Y.call(N,$)}})}}))}};exports.DataValidationRenderController=Lr([s.OnLifecycle(s.LifecycleStages.Rendered,exports.DataValidationRenderController),oe(0,O.Inject(B.ComponentManager)),oe(1,B.IMenuService),oe(2,O.Inject(R.DataValidationModel)),oe(3,O.Inject(P.SheetSkeletonManagerService)),oe(4,z.IRenderManagerService),oe(5,s.IUniverInstanceService),oe(6,O.Inject(R.DataValidatorRegistryService)),oe(7,P.IEditorBridgeService),oe(8,O.Inject(Re)),oe(9,O.Inject(re.SheetInterceptorService)),oe(10,O.Inject(O.Injector))],exports.DataValidationRenderController);var Ar=Object.defineProperty,Nr=Object.getOwnPropertyDescriptor,Ur=(i,o,e,t)=>{for(var a=t>1?void 0:t?Nr(o,e):o,r=i.length-1,n;r>=0;r--)(n=i[r])&&(a=(t?n(o,e,a):n(a))||a);return t&&a&&Ar(o,e,a),a},jr=(i,o)=>(e,t)=>o(e,t,i);exports.SheetDataValidationService=class{constructor(o){_(this,"_currentManager");_(this,"_currentManager$",new _e.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=Ur([jr(0,O.Inject(R.DataValidationModel))],exports.SheetDataValidationService);class Ce{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 n=this._ensureCache(o,e);r.forEach(l=>{s.Range.foreach(l,(d,c)=>{const u=n.getValue(d,c);u&&(u.temp=!0)})}),a.forEach(l=>{s.Range.foreach(l,(d,c)=>{const u=n.getValue(d,c);u&&u.ruleId===t?u.temp=!1:n.setValue(d,c,void 0)})}),r.forEach(l=>{s.Range.foreach(l,(d,c)=>{const u=n.getValue(d,c);u&&u.temp===!0&&n.realDeleteValue(d,c)})})}markRangeDirty(o,e,t){const a=this._ensureCache(o,e);t.forEach(r=>{s.Range.foreach(r,(n,l)=>{a.setValue(n,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,(n,l)=>{a.realDeleteValue(n,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,xr=Object.getOwnPropertyDescriptor,Br=(i,o,e,t)=>{for(var a=t>1?void 0:t?xr(o,e):o,r=i.length-1,n;r>=0;r--)(n=i[r])&&(a=(t?n(o,e,a):n(a))||a);return t&&a&&Pr(o,e,a),a},be=(i,o)=>(e,t)=>o(e,t,i);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 n=a[r],{formulaCellMap:l,ruleFormulaMap:d}=this._ensureMaps(t,r),c=this._dataValidationModel.ensureManager(t,r);n.forEach(u=>{var v,g;const h=d.get((v=u.extra)==null?void 0:v.ruleId),p=l.get(u.formulaId),m=c.getRuleById((g=u.extra)==null?void 0:g.ruleId);m&&h&&!h.isTransformable&&this._dataValidationCacheService.markRangeDirty(t,r,m.ranges),p&&this._dataValidationCacheService.markCellDirty(t,r,p.row,p.column)})}}}))}_ensureMaps(e,t){let a=this._formulaMap.get(e),r=this._ruleFormulaMap.get(e),n=this._formulaCellMap.get(e);(!a||!r||!n)&&(a=new Map,r=new Map,n=new Map,this._formulaMap.set(e,a),this._ruleFormulaMap.set(e,r),this._formulaCellMap.set(e,n));let l=a.get(t),d=r.get(t),c=n.get(t);return(!l||!d||!c)&&(l=new s.ObjectMatrix,a.set(t,l),d=new Map,r.set(t,d),c=new Map,n.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:n,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,(p,m)=>{const v=r.getValue(p,m);if(v&&v.ruleId===a){const{formulaId:g}=v;r.realDeleteValue(p,m),c.add(g),n.delete(g)}})}),this._registerOtherFormulaService.deleteFormula(e,t,Array.from(c.values())))}_addFormulaByRange(e,t,a,r,n){const{formulaMap:l,ruleFormulaMap:d,formulaCellMap:c}=this._ensureMaps(e,t);if(!r)return;const u=se.isFormulaTransformable(this._lexerTreeBuilder,r),h=n[0].startRow,p=n[0].startColumn;let m;u?n.forEach(v=>{s.Range.foreach(v,(g,S)=>{const V=se.transformFormula(this._lexerTreeBuilder,r,h,p,g,S),M=this._registerFormula(e,t,a,V);l.setValue(g,S,{formulaId:M,ruleId:a}),c.set(M,{row:g,column:S})})}):(m=this._registerFormula(e,t,a,r),n.forEach(v=>{s.Range.foreach(v,(g,S)=>{l.setValue(g,S,{formulaId:m,ruleId:a})})})),d.set(a,{formula:r,originCol:p,originRow:h,isTransformable:u,formulaId:m})}addRule(e,t,a){const{ranges:r,formula1:n,uid:l,type:d}=a;d!==s.DataValidationType.CUSTOM||!n||!s.isFormulaString(n)||this._addFormulaByRange(e,t,l,n,r)}updateRuleRanges(e,t,a,r,n){const{formulaMap:l,ruleFormulaMap:d,formulaCellMap:c}=this._ensureMaps(e,t),u=d.get(a);if(!u)return;const{formula:h,originCol:p,originRow:m,isTransformable:v,formulaId:g}=u,S=new Set;r.forEach(V=>{s.Range.foreach(V,(M,D)=>{const I=l.getValue(M,D);I&&I.ruleId===a&&(I.temp=!0)})}),n.forEach(V=>{s.Range.foreach(V,(M,D)=>{var F;const I=(F=l.getValue(M,D))!=null?F:{};if(I.ruleId!==a){const T=d.get(I.ruleId);if(T!=null&&T.isTransformable&&S.add(I.formulaId),v){const b=se.transformFormula(this._lexerTreeBuilder,h,m,p,M,D),$=this._registerFormula(e,t,a,b);l.setValue(M,D,{ruleId:a,formulaId:$}),c.set($,{row:M,column:D})}else l.setValue(M,D,{ruleId:a,formulaId:g})}else I.temp=!1})}),r.forEach(V=>{s.Range.foreach(V,(M,D)=>{const I=l.getValue(M,D);I&&I.ruleId===a&&I.temp===!0&&(l.realDeleteValue(M,D),v&&S.add(I.formulaId))})}),S.forEach(V=>{c.delete(V)}),this._registerOtherFormulaService.deleteFormula(e,t,Array.from(S.values()))}updateRuleFormula(e,t,a,r,n){const{ruleFormulaMap:l}=this._ensureMaps(e,t),d=l.get(a);(!d||d.formula!==n)&&this._addFormulaByRange(e,t,a,n,r)}getCellFormulaValue(e,t,a,r){const{formulaMap:n}=this._ensureMaps(e,t),l=n.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=Br([be(0,O.Inject(ke.RegisterOtherFormulaService)),be(1,O.Inject(se.LexerTreeBuilder)),be(2,O.Inject(R.DataValidationModel)),be(3,O.Inject(Ce))],exports.DataValidationCustomFormulaService);function ue(i){var o,e;return(e=(o=i==null?void 0:i[0])==null?void 0:o[0])==null?void 0:e.v}class $r extends R.BaseDataValidator{constructor(){super(...arguments);_(this,"id",s.DataValidationType.CUSTOM);_(this,"title","dataValidation.custom.title");_(this,"operators",[]);_(this,"scopes",["sheet"]);_(this,"formulaInput",kt);_(this,"_customFormulaService",this.injector.get(exports.DataValidationCustomFormulaService))}validatorFormula(e){const t=s.isFormulaString(e.formula1);return{success:t,formula1:t?"":this.localeService.t("dataValidation.validFail.formula")}}async parseFormula(e,t,a){return{formula1:void 0,formula2:void 0}}async isValidType(e,t,a){const{column:r,row:n,unitId:l,subUnitId:d}=e,c=await this._customFormulaService.getCellFormulaValue(l,d,n,r);return!!ue(c==null?void 0:c.result)}generateRuleErrorMessage(e){return this.localeService.t("dataValidation.custom.error")}}var Hr=Object.defineProperty,Wr=Object.getOwnPropertyDescriptor,kr=(i,o,e,t)=>{for(var a=t>1?void 0:t?Wr(o,e):o,r=i.length-1,n;r>=0;r--)(n=i[r])&&(a=(t?n(o,e,a):n(a))||a);return t&&a&&Hr(o,e,a),a},Je=(i,o)=>(e,t)=>o(e,t,i);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 n=a[r],l=this._ensureRuleFormulaMap(t,r),d=this._dataValidationModel.ensureManager(t,r);n.forEach(c=>{var u,h;if(l.get((u=c.extra)==null?void 0:u.ruleId)){const p=d.getRuleById((h=c.extra)==null?void 0:h.ruleId);p&&this._dataValidationCacheService.markRangeDirty(t,r,p.ranges)}})}}}))}_ensureRuleFormulaMap(e,t){let a=this._formulaRuleMap.get(e);a||(a=new Map,this._formulaRuleMap.set(e,a));let r=a.get(t);return r||(r=new Map,a.set(t,r)),r}addRule(e,t,a,r,n){const l=s.isFormulaString(r),d=s.isFormulaString(n);if(!l&&!d)return;const c=this._ensureRuleFormulaMap(e,t),u=[void 0,void 0];if(l){const h=this._registerOtherFormulaService.registerFormula(e,t,r,{ruleId:a});u[0]={id:h,text:r}}if(d){const h=this._registerOtherFormulaService.registerFormula(e,t,n,{ruleId:a});u[1]={id:h,text:n}}c.set(a,u)}removeRule(e,t,a){const n=this._ensureRuleFormulaMap(e,t).get(a);if(!n)return;const[l,d]=n,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,n){const d=this._ensureRuleFormulaMap(e,t).get(a);if(!d){this.addRule(e,t,a,r,n);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 h=this._registerOtherFormulaService.registerFormula(e,t,r,{ruleId:a});d[0]={text:r,id:h}}else d[0]=void 0;if((u==null?void 0:u.text)!==n)if(u&&this._registerOtherFormulaService.deleteFormula(e,t,[u.id]),s.isFormulaString(n)){const h=this._registerOtherFormulaService.registerFormula(e,t,n,{ruleId:a});d[1]={text:n,id:h}}else d[1]=void 0}getRuleFormulaResult(e,t,a){const n=this._ensureRuleFormulaMap(e,t).get(a);if(!n)return Promise.resolve(null);const l=async d=>d&&this._registerOtherFormulaService.getFormulaValue(e,t,d.id);return Promise.all([l(n[0]),l(n[1])])}getRuleFormulaResultSync(e,t,a){const n=this._ensureRuleFormulaMap(e,t).get(a);if(n)return n.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=kr([Je(0,O.Inject(ke.RegisterOtherFormulaService)),Je(1,O.Inject(Ce)),Je(2,O.Inject(R.DataValidationModel))],exports.DataValidationFormulaService);var qr=Object.defineProperty,Yr=Object.getOwnPropertyDescriptor,Gr=(i,o,e,t)=>{for(var a=t>1?void 0:t?Yr(o,e):o,r=i.length-1,n;r>=0;r--)(n=i[r])&&(a=(t?n(o,e,a):n(a))||a);return t&&a&&qr(o,e,a),a},et=(i,o)=>(e,t)=>o(e,t,i);const Ae=6;let lt=class{constructor(i,o,e){this._commandService=i,this._formulaService=o,this._themeService=e}_calc(i,o){var c,u,h;const{vt:e,ht:t}=o||{},a=i.endX-i.startX-Ae*2,r=i.endY-i.startY,n=((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-n);break;default:d=0+(r-n)/2;break}switch(t){case s.HorizontalAlign.LEFT:l=Ae;break;case s.HorizontalAlign.RIGHT:l=Ae+(a-n);break;default:l=Ae+(a-n)/2;break}return{left:i.startX+l,top:i.startY+d,width:((u=o==null?void 0:o.fs)!=null?u:10)*1.6,height:((h=o==null?void 0:o.fs)!=null?h:10)*1.6}}calcCellAutoHeight(){}async _parseFormula(i,o,e){var n,l;const{formula1:t=ye,formula2:a=xe}=i,r=await this._formulaService.getRuleFormulaResult(o,e,i.uid);return{formula1:s.isFormulaString(t)?ue((n=r==null?void 0:r[0])==null?void 0:n.result):t,formula2:s.isFormulaString(a)?ue((l=r==null?void 0:r[1])==null?void 0:l.result):a}}drawWith(i,o){var U,j,N,Y,H;const{style:e,data:t,primaryWithCoord:a,unitId:r,subUnitId:n}=o,l=a.isMergedMainCell?a.mergeInfo:a,d=te(t),c=(U=t.dataValidation)==null?void 0:U.rule,u=(j=t.dataValidation)==null?void 0:j.validator;if(!c||!u)return;const h=this._themeService.getCurrentTheme();if(!u.skipDefaultFontRender(c,d,{unitId:r,subUnitId:n}))return;const{formula1:p=ye}=c,m=this._calc(l,e),{a:v,d:g}=i.getTransform(),S=z.fixLineWidthByScale(m.left,v),V=z.fixLineWidthByScale(m.top,g),M=z.Transform.create().composeMatrix({left:S,top:V,scaleX:1,scaleY:1,angle:0,skewX:0,skewY:0,flipX:!1,flipY:!1}),D=l.endX-l.startX,I=l.endY-l.startY;i.save(),i.beginPath(),i.rect(l.startX,l.startY,D,I),i.clip();const F=M.getMatrix();i.transform(F[0],F[1],F[2],F[3],F[4],F[5]);const T=((N=e==null?void 0:e.fs)!=null?N:10)*1.6,b=String(d)===String(p),$=h.hyacinth500;z.Checkbox.drawWith(i,{checked:b,width:T,height:T,fill:(H=(Y=e==null?void 0:e.cl)==null?void 0:Y.rgb)!=null?H:$}),i.restore()}isHit(i,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,n=t.left,l=t.left+t.width,{x:d,y:c}=i;return d<=l&&d>=n&&c<=r&&c>=a}async onPointerDown(i,o){var p,m;if(o.button===2)return;const{primaryWithCoord:e,unitId:t,subUnitId:a,data:r}=i,n=te(r),l=(p=r.dataValidation)==null?void 0:p.rule,d=(m=r.dataValidation)==null?void 0:m.validator;if(!l||!d||!d.skipDefaultFontRender(l,n,{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(n)===String(c)?u:c,p:null}};this._commandService.executeCommand(re.SetRangeValuesCommand.id,h)}};lt=Gr([et(0,s.ICommandService),et(1,O.Inject(exports.DataValidationFormulaService)),et(2,O.Inject(s.ThemeService))],lt);const ye=1,xe=0;class zr extends R.BaseDataValidator{constructor(){super(...arguments);_(this,"id",s.DataValidationType.CHECKBOX);_(this,"title","dataValidation.checkbox.title");_(this,"operators",[]);_(this,"scopes",["sheet"]);_(this,"formulaInput",Yt);_(this,"canvasRender",this.injector.createInstance(lt));_(this,"_formulaService",this.injector.get(exports.DataValidationFormulaService))}skipDefaultFontRender(e,t,a){const{formula1:r,formula2:n}=this.parseFormulaSync(e,a.unitId,a.subUnitId),l=`${t!=null?t:""}`;return!l||l===`${r}`||l===`${n}`}validatorFormula(e){const{formula1:t=ye,formula2:a=xe}=e,r=!s.Tools.isBlank(t),n=!s.Tools.isBlank(a);return{success:r&&n,formula1:r?"":this.localeService.t("dataValidation.validFail.common"),formula2:n?"":this.localeService.t("dataValidation.validFail.common")}}async parseFormula(e,t,a){var d,c;const{formula1:r=ye,formula2:n=xe}=e,l=await this._formulaService.getRuleFormulaResult(t,a,e.uid);return{formula1:s.isFormulaString(r)?ue((d=l==null?void 0:l[0])==null?void 0:d.result):r,formula2:s.isFormulaString(n)?ue((c=l==null?void 0:l[1])==null?void 0:c.result):n}}parseFormulaSync(e,t,a){var d,c;const{formula1:r=ye,formula2:n=xe}=e,l=this._formulaService.getRuleFormulaResultSync(t,a,e.uid);return{formula1:s.isFormulaString(r)?ue((d=l==null?void 0:l[0])==null?void 0:d.result):r,formula2:s.isFormulaString(n)?ue((c=l==null?void 0:l[1])==null?void 0:c.result):n}}async isValidType(e,t,a){const{value:r,unitId:n,subUnitId:l}=e,{formula1:d,formula2:c}=await this.parseFormula(a,n,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 Fe=[s.DataValidationOperator.BETWEEN,s.DataValidationOperator.NOT_BETWEEN],tt=86400;function Xr(i,o=!0){if(o&&i>=0){if(i===0)return[1900,1,0];if(i===60)return[1900,2,29];if(i<60)return[1900,i<32?1:2,(i-1)%31+1]}let e=i+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),n=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,n|0]}const Qr=i=>{let o=i|0;const e=tt*(i-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,n,l]=Xr(i,!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(r,n-1,l),h.setUTCHours(d,c,u),h.getTime()},Kr={[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 Zr={[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"},Jr={[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"},_t="{FORMULA1}",St="{FORMULA2}",Rt=i=>Se(i).isValid(),Ne=i=>{if(!(i==null||typeof i=="boolean"))return typeof i=="number"||!Number.isNaN(+i)?Se(Qr(+i)):Se(i)};class eo 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",Te);_(this,"dropdown",Wt);_(this,"_formulaService",this.injector.get(exports.DataValidationFormulaService));_(this,"transformDate",Ne)}async parseFormula(e,t,a){var d,c;const r=await this._formulaService.getRuleFormulaResult(t,a,e.uid),{formula1:n,formula2:l}=e;return{formula1:Ne(s.isFormulaString(n)?ue((d=r==null?void 0:r[0])==null?void 0:d.result):n),formula2:Ne(s.isFormulaString(l)?ue((c=r==null?void 0:r[1])==null?void 0:c.result):l)}}async isValidType(e){const{value:t}=e;return typeof t=="string"?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){const t=e.operator;if(!t)return{success:!1};const a=this._validatorSingleFormula(e.formula1),r=this.localeService.t("dataValidation.validFail.date");if(Fe.includes(t)){const l=this._validatorSingleFormula(e.formula2);return{success:a&&l,formula1:a?void 0:r,formula2:l?void 0:r}}return{success:a,formula1:a?void 0:r}}transform(e,t,a){const{value:r}=e;return{...e,value:Ne(r)}}async validatorIsEqual(e,t,a){const{value:r}=e,{formula1:n}=t;return n?r.isSame(n):!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:n}=t;if(!r||!n)return!1;const l=r.isAfter(n)?n:r,d=l===r?n: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:n}=t;if(!r||!n)return!1;const l=r.isAfter(n)?n:r,d=l===r?n: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(Fe.includes(e.operator)){if(s.Tools.isBlank(e.formula1)||s.Tools.isBlank(e.formula2))return"";if(!Rt(e.formula1)||!Rt(e.formula2))return""}else if(s.Tools.isBlank(e.formula1))return""}get operatorNames(){return this.operators.map(e=>this.localeService.t(Kr[e]))}generateRuleName(e){var a,r;if(!e.operator)return this.titleStr;const t=this.localeService.t(Zr[e.operator]).replace(_t,(a=e.formula1)!=null?a:"").replace(St,(r=e.formula2)!=null?r:"");return`${this.titleStr} ${t}`}generateRuleErrorMessage(e){var a,r;return e.operator?`${this.localeService.t(Jr[e.operator]).replace(_t,(a=e.formula1)!=null?a:"").replace(St,(r=e.formula2)!=null?r:"")}`:this.titleStr}}var to=Object.defineProperty,ao=Object.getOwnPropertyDescriptor,ro=(i,o,e,t)=>{for(var a=t>1?void 0:t?ao(o,e):o,r=i.length-1,n;r>=0;r--)(n=i[r])&&(a=(t?n(o,e,a):n(a))||a);return t&&a&&to(o,e,a),a},Vt=(i,o)=>(e,t)=>o(e,t,i);const Me=4,oo=6,ne=14,fe=6,ce=2,no="#565656",Dt=new Path2D("M3.32201 4.84556C3.14417 5.05148 2.85583 5.05148 2.67799 4.84556L0.134292 1.90016C-0.152586 1.56798 0.0505937 1 0.456301 1L5.5437 1C5.94941 1 6.15259 1.56798 5.86571 1.90016L3.32201 4.84556Z");function io(i,o){const e=i.length;return{id:"d",body:{dataStream:`${i}${s.DEFAULT_EMPTY_DOCUMENT_VALUE}`,textRuns:[{ts:{fs:11,ff:void 0,it:s.BooleanNumber.FALSE,bl:s.BooleanNumber.FALSE,ul:{s:s.BooleanNumber.FALSE},st:{s:s.BooleanNumber.FALSE},ol:{s:s.BooleanNumber.FALSE},cl:void 0,...o,bg:void 0,bd:void 0},st:0,ed:e}]},documentStyle:{pageSize:{width:Number.POSITIVE_INFINITY,height:Number.POSITIVE_INFINITY}}}}function dt(i,o,e){const t=io(i,e),a=new s.DocumentDataModel(t),r=new z.DocumentViewModel(a);return{documentSkeleton:z.DocumentSkeleton.create(r,o),docModel:a,docViewModel:r}}function Mt(i,o,e){const{documentSkeleton:t,docModel:a,docViewModel:r}=dt(i,o,e);return{documents:new z.Documents(`DOCUMENTS_${s.Tools.generateRandomId()}`,t,{pageMarginLeft:0,pageMarginTop:0}),documentSkeleton:t,docModel:a,docViewModel:r}}var st;let ct=(st=class{constructor(i,o){_(this,"_dropdownInfoMap",new Map);_(this,"zIndex");_(this,"onPointerEnter");_(this,"onPointerLeave");this._localeService=i,this._commandService=o}_ensureMap(i){let o=this._dropdownInfoMap.get(i);return o||(o=new Map,this._dropdownInfoMap.set(i,o)),o}_generateKey(i,o){return`${i}.${o}`}_drawDownIcon(i,o,e,t,a){const r=e-ne+4;let n=4;switch(a){case s.VerticalAlign.MIDDLE:n=(t-ne)/2+4;break;case s.VerticalAlign.BOTTOM:n=t-ne+4;break}i.save(),i.translateWithPrecision(o.startX+r,o.startY+n),i.fillStyle="#565656",i.fill(Dt),i.restore()}drawWith(i,o,e){var H,G;const{primaryWithCoord:t,row:a,col:r,style:n,data:l,subUnitId:d}=o,c=t.isMergedMainCell?t.mergeInfo:t,u=(H=l.dataValidation)==null?void 0:H.rule,h=(G=l.dataValidation)==null?void 0:G.validator,p=l.fontRenderExtension,{leftOffset:m=0,rightOffset:v=0,topOffset:g=0,downOffset:S=0}=p||{};if(!u||!h||!h.skipDefaultFontRender(u))return;const V={startX:c.startX+m,endX:c.endX-v,startY:c.startY+g,endY:c.endY-S},M=V.endX-V.startX,D=V.endY-V.startY,I=this._ensureMap(d),F=this._generateKey(a,r),T=h.getListWithColor(u),b=te(l),$=`${b!=null?b:""}`,U=T.find(x=>x.label===$);let{tb:j,vt:N,ht:Y}=n||{};if(j=j!=null?j:s.WrapStrategy.WRAP,N=N!=null?N:s.VerticalAlign.TOP,Y=Y!=null?Y:s.HorizontalAlign.LEFT,u.renderMode===s.DataValidationRenderMode.ARROW){this._drawDownIcon(i,V,M,D,N),i.save(),i.translateWithPrecision(V.startX,V.startY),i.beginPath(),i.rect(0,0,M,D),i.clip();const x=M-ne,{documentSkeleton:K,documents:ee,docModel:X}=Mt($,this._localeService,n);j===s.WrapStrategy.WRAP&&X.updateDocumentDataPageSize(x),K.calculate(),K.getActualSize();const w=z.getDocsSkeletonPageSize(K),{height:L,width:Q}=w;let W=0;switch(N){case s.VerticalAlign.BOTTOM:W=D-ce-L;break;case s.VerticalAlign.MIDDLE:W=(D-ce-L)/2;break;default:W=ce;break}let y=0;switch(Y){case s.HorizontalAlign.CENTER:y=(x-Q)/2;break;case s.HorizontalAlign.RIGHT:y=x-Q;break}i.translate(0,W),i.save(),i.translateWithPrecision(Me,0),i.beginPath(),i.rect(0,0,x,L),i.clip(),ee.render(i),i.translateWithPrecision(y,0),i.restore(),i.restore(),I.set(F,{left:V.endX+e.rowHeaderWidth-ne,top:V.startY+e.columnHeaderHeight,width:ne,height:D})}else{i.save(),i.translateWithPrecision(V.startX,V.startY),i.beginPath(),i.rect(0,0,M,D),i.clip();const x=M-fe*2-Me-ne,{documentSkeleton:K,documents:ee,docModel:X}=Mt($,this._localeService,n);j===s.WrapStrategy.WRAP&&X.updateDocumentDataPageSize(x),K.calculate();const w=z.getDocsSkeletonPageSize(K),{height:L,width:Q}=w;let W=0;switch(N){case s.VerticalAlign.BOTTOM:W=D-ce-L;break;case s.VerticalAlign.MIDDLE:W=(D-ce-L)/2;break;default:W=ce;break}let y=0;switch(Y){case s.HorizontalAlign.CENTER:y=(x-Q)/2;break;case s.HorizontalAlign.RIGHT:y=x-Q;break}i.translate(fe,W);const q=M-fe*2,k=L;z.Rect.drawWith(i,{width:q,height:k,fill:(U==null?void 0:U.color)||ve,radius:8}),i.save(),i.translateWithPrecision(Me,0),i.beginPath(),i.rect(0,0,x,L),i.clip(),i.translateWithPrecision(y,0),ee.render(i),i.restore(),i.translate(x+Me+4,(L-oo)/2),i.fillStyle=no,i.fill(Dt),i.restore(),I.set(F,{left:V.startX+fe+e.rowHeaderWidth,top:V.startY+W+e.columnHeaderHeight,width:q,height:k})}}calcCellAutoHeight(i){var S;const{primaryWithCoord:o,style:e,data:t}=i,a=o.isMergedMainCell?o.mergeInfo:o,r=t.fontRenderExtension,{leftOffset:n=0,rightOffset:l=0,topOffset:d=0,downOffset:c=0}=r||{},u=(S=t.dataValidation)==null?void 0:S.rule;if(!u||u.renderMode===s.DataValidationRenderMode.TEXT)return;const h={startX:a.startX+n,endX:a.endX-l,startY:a.startY+d,endY:a.endY-c},p=h.endX-h.startX,m=te(t),v=`${m!=null?m:""}`;let{tb:g}=e||{};if(g=g!=null?g:s.WrapStrategy.WRAP,u.renderMode===s.DataValidationRenderMode.ARROW){const V=p-ne,{documentSkeleton:M,docModel:D}=dt(v,this._localeService,e);g===s.WrapStrategy.WRAP&&D.updateDocumentDataPageSize(V),M.calculate(),M.getActualSize();const I=z.getDocsSkeletonPageSize(M),{height:F}=I;return F}else{const V=p-fe*2-Me-ne,{documentSkeleton:M,docModel:D}=dt(v,this._localeService,e);g===s.WrapStrategy.WRAP&&D.updateDocumentDataPageSize(V),M.calculate();const I=z.getDocsSkeletonPageSize(M),{height:F}=I;return F+ce*2}}isHit(i,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:h,height:p}=l,{x:m,y:v}=i;return m>=u&&m<=u+h&&v>=c&&v<=c+p}onPointerDown(i,o){if(o.button===2)return;const{unitId:e,subUnitId:t,row:a,col:r}=i,n={unitId:e,subUnitId:t,row:a,column:r};this._commandService.executeCommand(Ye.id,n)}},_(st,"padding",{l:fe+Me,r:ne+fe,t:ce,b:ce}),st);ct=ro([Vt(0,O.Inject(s.LocaleService)),Vt(1,s.ICommandService)],ct);function at(i){if(!i)return[];const o=new Set;return i.forEach(e=>{e.forEach(t=>{const a=te(t);a!=null&&o.add(a.toString())})}),[...o]}const so=["if","indirect","choose","offset"];function lo(i,o){if(!s.isFormulaString(i)||se.isReferenceString(i.slice(1)))return!0;const t=o.sequenceNodesBuilder(i);return t&&t.some(a=>typeof a=="object"&&a.nodeType===se.sequenceNodeType.FUNCTION&&so.indexOf(a.token.toLowerCase())>-1)}class zt extends R.BaseDataValidator{constructor(){super(...arguments);_(this,"formulaService",this.injector.get(exports.DataValidationFormulaService));_(this,"_lexer",this.injector.get(se.LexerTreeBuilder));_(this,"id",s.DataValidationType.LIST);_(this,"title","dataValidation.list.title");_(this,"operators",[]);_(this,"scopes",["sheet"]);_(this,"formulaInput",qt);_(this,"canvasRender",this.injector.createInstance(ct));_(this,"dropdown",Ht);_(this,"optionsInput",$e.componentKey)}skipDefaultFontRender(e){return e.renderMode!==s.DataValidationRenderMode.TEXT}validatorFormula(e){var r;const t=!s.Tools.isBlank(e.formula1),a=lo((r=e.formula1)!=null?r:"",this._lexer);return{success:!!(t&&a),formula1:t?a?void 0:this.localeService.t("dataValidation.validFail.listInvalid"):this.localeService.t("dataValidation.validFail.list")}}parseCellValue(e){const t=e.toString();return Oe(t)}async parseFormula(e,t,a){var l;const{formula1:r=""}=e,n=await this.formulaService.getRuleFormulaResult(t,a,e.uid);return{formula1:s.isFormulaString(r)?at((l=n==null?void 0:n[0])==null?void 0:l.result):Oe(r),formula2:void 0}}async isValidType(e,t,a){const{value:r}=e,{formula1:n=[]}=t;return this.parseCellValue(r).every(d=>n.includes(d))}generateRuleName(){return this.localeService.t("dataValidation.list.name")}generateRuleErrorMessage(){return this.localeService.t("dataValidation.list.error")}getList(e,t,a){var p,m,v;const{formula1:r=""}=e,n=this.injector.get(s.IUniverInstanceService),l=(p=t?n.getUniverSheetInstance(t):void 0)!=null?p:n.getCurrentUnitForType(s.UniverInstanceType.UNIVER_SHEET);if(!l)return[];const d=(m=a?l.getSheetBySheetId(a):void 0)!=null?m:l.getActiveSheet(),c=l.getUnitId(),u=d.getSheetId(),h=this.formulaService.getRuleFormulaResultSync(c,u,e.uid);return s.isFormulaString(r)?at((v=h==null?void 0:h[0])==null?void 0:v.result):Oe(r)}async getListAsync(e,t,a){var p,m,v;const{formula1:r=""}=e,n=this.injector.get(s.IUniverInstanceService),l=(p=t?n.getUniverSheetInstance(t):void 0)!=null?p:n.getCurrentUnitForType(s.UniverInstanceType.UNIVER_SHEET);if(!l)return[];const d=(m=a?l.getSheetBySheetId(a):void 0)!=null?m:l.getActiveSheet(),c=l.getUnitId(),u=d.getSheetId(),h=await this.formulaService.getRuleFormulaResult(c,u,e.uid);return s.isFormulaString(r)?at((v=h==null?void 0:h[0])==null?void 0:v.result):Oe(r)}getListWithColor(e,t,a){const r=this.getList(e,t,a),n=(e.formula2||"").split(",");return r.map((l,d)=>({label:l,color:n[d]}))}getListWithColorMap(e,t,a){const r=this.getListWithColor(e,t,a),n={};return r.forEach(l=>{l.color&&(n[l.label]=l.color)}),n}}function He(i){let o=i;return typeof i=="string"?((i.startsWith("¥")||i.startsWith("$"))&&(o=i.slice(1)),+o):+i}class co extends R.BaseDataValidator{constructor(){super(...arguments);_(this,"_formulaService",this.injector.get(exports.DataValidationFormulaService));_(this,"id",s.DataValidationType.DECIMAL);_(this,"title",this.localeService.t("dataValidation.decimal.title"));_(this,"operators",[s.DataValidationOperator.BETWEEN,s.DataValidationOperator.EQUAL,s.DataValidationOperator.GREATER_THAN,s.DataValidationOperator.GREATER_THAN_OR_EQUAL,s.DataValidationOperator.LESS_THAN,s.DataValidationOperator.LESS_THAN_OR_EQUAL,s.DataValidationOperator.NOT_BETWEEN,s.DataValidationOperator.NOT_EQUAL]);_(this,"scopes",["sheet"]);_(this,"formulaInput",Te);_(this,"dropDownInput")}_isFormulaOrNumber(e){return!s.Tools.isBlank(e)&&(s.isFormulaString(e)||!Number.isNaN(+e))}async isValidType(e,t,a){const{value:r}=e;return!Number.isNaN(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,h,p,m,v,g,S;const r=await this._formulaService.getRuleFormulaResult(t,a,e.uid),{formula1:n,formula2:l}=e;return{formula1:this._parseNumber(s.isFormulaString(n)?(p=(h=(u=(c=r==null?void 0:r[0])==null?void 0:c.result)==null?void 0:u[0])==null?void 0:h[0])==null?void 0:p.v:n),formula2:this._parseNumber(s.isFormulaString(l)?(S=(g=(v=(m=r==null?void 0:r[1])==null?void 0:m.result)==null?void 0:v[0])==null?void 0:g[0])==null?void 0:S.v:l)}}validatorFormula(e){const t=e.operator;if(!t)return{success:!1};const a=s.Tools.isDefine(e.formula1)&&this._isFormulaOrNumber(e.formula1),r=s.Tools.isDefine(e.formula2)&&this._isFormulaOrNumber(e.formula2),n=Fe.includes(t),l=this.localeService.t("dataValidation.validFail.number");return n?{success:a&&r,formula1:a?void 0:l,formula2:r?void 0:l}:{success:a,formula1:a?"":l}}async validatorIsEqual(e,t,a){const{formula1:r}=t,{value:n}=e;return Number.isNaN(r)?!0:n===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:n}=t;if(Number.isNaN(r)||Number.isNaN(n))return!0;const l=Math.min(r,n),d=Math.max(r,n);return e.value>=l&&e.value<=d}async validatorIsNotBetween(e,t,a){const{formula1:r,formula2:n}=t;if(Number.isNaN(r)||Number.isNaN(n))return!0;const l=Math.min(r,n),d=Math.max(r,n);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 uo="{FORMULA1}",mo="{FORMULA2}";class ho 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",Te);_(this,"_formulaService",this.injector.get(exports.DataValidationFormulaService))}_isFormulaOrInt(e){return!s.Tools.isBlank(e)&&(s.isFormulaString(e)||!Number.isNaN(+e)&&Number.isInteger(+e))}validatorFormula(e){const t=e.operator;if(!t)return{success:!1};const a=s.Tools.isDefine(e.formula1)&&this._isFormulaOrInt(e.formula1),r=s.Tools.isDefine(e.formula2)&&this._isFormulaOrInt(e.formula2),n=Fe.includes(t),l=this.localeService.t("dataValidation.validFail.number");return n?{success:a&&r,formula1:a?void 0:l,formula2:r?void 0:l}:{success:a,formula1:l}}_parseNumber(e){return e==null?Number.NaN:+e}_isValidFormula(e){return!Number.isNaN(e)}async parseFormula(e,t,a){var d,c,u,h,p,m,v,g;const r=await this._formulaService.getRuleFormulaResult(t,a,e.uid),{formula1:n,formula2:l}=e;return{formula1:this._parseNumber(s.isFormulaString(n)?(h=(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:h.v:n),formula2:this._parseNumber(s.isFormulaString(l)?(g=(v=(m=(p=r==null?void 0:r[1])==null?void 0:p.result)==null?void 0:m[0])==null?void 0:v[0])==null?void 0:g.v:l)}}transform(e,t,a){return{...e,value:e.value.toString().length}}async isValidType(e,t,a){const{value:r}=e;return typeof r=="string"||typeof r=="number"}async validatorIsEqual(e,t,a){const{formula1:r}=t;return s.Tools.isDefine(r)?e.value===r:!1}async validatorIsNotEqual(e,t,a){const{formula1:r}=t;return s.Tools.isDefine(r)?e.value!==r:!1}async validatorIsBetween(e,t,a){const{formula1:r,formula2:n}=t,{value:l}=e;if(!this._isValidFormula(r)||!this._isValidFormula(n))return!1;const d=Math.max(r,n),c=Math.min(r,n);return l>=c&&l<=d}async validatorIsNotBetween(e,t,a){const{formula1:r,formula2:n}=t,{value:l}=e;if(!this._isValidFormula(r)||!this._isValidFormula(n))return!1;const d=Math.max(r,n),c=Math.min(r,n);return l<c||l>d}async validatorIsGreaterThan(e,t,a){const{formula1:r}=t,{value:n}=e;return this._isValidFormula(r)?n>r:!1}async validatorIsGreaterThanOrEqual(e,t,a){const{formula1:r}=t,{value:n}=e;return this._isValidFormula(r)?n>=r:!1}async validatorIsLessThan(e,t,a){const{formula1:r}=t,{value:n}=e;return this._isValidFormula(r)?n<r:!1}async validatorIsLessThanOrEqual(e,t,a){const{formula1:r}=t,{value:n}=e;return this._isValidFormula(r)?n<=r:!1}generateRuleErrorMessage(e){var a,r;return e.operator?`${this.localeService.t(R.TextLengthErrorTitleMap[e.operator]).replace(uo,(a=e.formula1)!=null?a:"").replace(mo,(r=e.formula2)!=null?r:"")}`:this.titleStr}}class po extends R.BaseDataValidator{constructor(){super(...arguments);_(this,"_formulaService",this.injector.get(exports.DataValidationFormulaService));_(this,"id",s.DataValidationType.WHOLE);_(this,"title",this.localeService.t("dataValidation.whole.title"));_(this,"operators",[s.DataValidationOperator.BETWEEN,s.DataValidationOperator.EQUAL,s.DataValidationOperator.GREATER_THAN,s.DataValidationOperator.GREATER_THAN_OR_EQUAL,s.DataValidationOperator.LESS_THAN,s.DataValidationOperator.LESS_THAN_OR_EQUAL,s.DataValidationOperator.NOT_BETWEEN,s.DataValidationOperator.NOT_EQUAL]);_(this,"scopes",["sheet"]);_(this,"formulaInput",Te);_(this,"dropDownInput")}_isFormulaOrInt(e){return!s.Tools.isBlank(e)&&(s.isFormulaString(e)||!Number.isNaN(+e)&&Number.isInteger(+e))}async isValidType(e,t,a){const{value:r}=e,n=He(r);return!Number.isNaN(n)&&Number.isInteger(n)}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,h,p,m,v,g,S;const r=await this._formulaService.getRuleFormulaResult(t,a,e.uid),{formula1:n,formula2:l}=e;return{formula1:this._parseNumber(s.isFormulaString(n)?(p=(h=(u=(c=r==null?void 0:r[0])==null?void 0:c.result)==null?void 0:u[0])==null?void 0:h[0])==null?void 0:p.v:n),formula2:this._parseNumber(s.isFormulaString(l)?(S=(g=(v=(m=r==null?void 0:r[1])==null?void 0:m.result)==null?void 0:v[0])==null?void 0:g[0])==null?void 0:S.v:l)}}validatorFormula(e){const t=e.operator;if(!t)return{success:!1};const a=s.Tools.isDefine(e.formula1)&&this._isFormulaOrInt(e.formula1),r=s.Tools.isDefine(e.formula2)&&this._isFormulaOrInt(e.formula2),n=Fe.includes(t),l=this.localeService.t("dataValidation.validFail.number");return n?{success:a&&r,formula1:a?void 0:l,formula2:r?void 0:l}:{success:a,formula1:l}}async validatorIsEqual(e,t,a){const{formula1:r}=t,{value:n}=e;return Number.isNaN(r)?!0:n===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:n}=t;if(Number.isNaN(r)||Number.isNaN(n))return!0;const l=Math.min(r,n),d=Math.max(r,n);return e.value>=l&&e.value<=d}async validatorIsNotBetween(e,t,a){const{formula1:r,formula2:n}=t;if(Number.isNaN(r)||Number.isNaN(n))return!0;const l=Math.min(r,n),d=Math.max(r,n);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 Xt=4,fo=0,rt=4,Qt=4,ut=6,We=6,ge=14;function go(i,o){const e=z.FontCache.getTextSize(i,o),t=e.width+Xt*2,{ba:a,bd:r}=e,n=a+r;return{width:t,height:n+fo*2,ba:a}}function Ot(i,o,e,t){const a=e-ge-ut,r=t-We*2,n=i.map(u=>({layout:go(u,o),text:u}));let l;const d=[];n.forEach(u=>{const{layout:h}=u,{width:p,height:m}=h;!l||l.width+p+rt>a?(l={width:p,height:m,items:[{...u,left:0}]},d.push(l)):(l.items.push({...u,left:l.width+rt}),l.width=l.width+p+rt)});let c=0;return d.forEach((u,h)=>{h===d.length-1?c+=u.height:c+=u.height+Qt}),{lines:d,totalHeight:c,contentWidth:a,contentHeight:r,cellAutoHeight:c+We*2}}const vo=8;class _o extends z.Shape{static drawWith(o,e){const{fontFamily:t,fontString:a,fontSize:r,info:n,fill:l,color:d}=e,{layout:c,text:u}=n;o.save(),z.Rect.drawWith(o,{width:c.width,height:c.height,radius:vo,fill:l||ve}),o.translateWithPrecision(Xt,c.ba),o.font=a,o.fillStyle=d,o.fillText(u,0,0),o.restore()}}var So=Object.defineProperty,Ro=Object.getOwnPropertyDescriptor,Vo=(i,o,e,t)=>{for(var a=t>1?void 0:t?Ro(o,e):o,r=i.length-1,n;r>=0;r--)(n=i[r])&&(a=(t?n(o,e,a):n(a))||a);return t&&a&&So(o,e,a),a},Do=(i,o)=>(e,t)=>o(e,t,i);const Mo=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 mt=class{constructor(i){_(this,"zIndex");_(this,"_dropdownInfoMap",new Map);this._commandService=i}_ensureMap(i){let o=this._dropdownInfoMap.get(i);return o||(o=new Map,this._dropdownInfoMap.set(i,o)),o}_generateKey(i,o){return`${i}.${o}`}_drawDownIcon(i,o,e,t,a){const r=e-ge+4;let n=4;switch(a){case s.VerticalAlign.MIDDLE:n=(t-ge)/2+4;break;case s.VerticalAlign.BOTTOM:n=t-ge+4;break}i.save(),i.translateWithPrecision(o.startX+r,o.startY+n),i.fillStyle="#565656",i.fill(Mo),i.restore()}drawWith(i,o,e,t){var L,Q;const{primaryWithCoord:a,row:r,col:n,style:l,data:d,subUnitId:c}=o,u=a.isMergedMainCell?a.mergeInfo:a,h=d.fontRenderExtension,{leftOffset:p=0,rightOffset:m=0,topOffset:v=0,downOffset:g=0}=h||{},S=d.dataValidation,V=this._ensureMap(c),M=this._generateKey(r,n);if(!S)return;const D={startX:u.startX+p,endX:u.endX-m,startY:u.startY+v,endY:u.endY-g},I=D.endX-D.startX,F=D.endY-D.startY,{cl:T}=l||{},b=(L=typeof T=="object"?T==null?void 0:T.rgb:T)!=null?L:"#000",$=z.getFontStyleString(l!=null?l:void 0),{rule:U,validator:j}=S,N=j,{vt:Y,ht:H}=l||{},G=Y!=null?Y:s.VerticalAlign.MIDDLE,x=(Q=te(d))!=null?Q:"",K=N.parseCellValue(x),ee=N.getListWithColorMap(U),X=Ot(K,$,I,F);this._drawDownIcon(i,D,I,F,G),i.save(),i.translateWithPrecision(D.startX,D.startY),i.beginPath(),i.rect(0,0,I-ge,F),i.clip(),i.translateWithPrecision(ut,We);let w=0;switch(G){case s.VerticalAlign.MIDDLE:w=(X.contentHeight-X.totalHeight)/2;break;case s.VerticalAlign.BOTTOM:w=X.contentHeight-X.totalHeight;break}i.translateWithPrecision(0,w),X.lines.forEach((W,y)=>{i.save();const{width:q,height:k,items:Z}=W;let le=0;switch(H){case s.HorizontalAlign.RIGHT:le=X.contentWidth-q;break;case s.HorizontalAlign.CENTER:le=(X.contentWidth-q)/2;break}i.translate(le,y*(k+Qt)),Z.forEach(Xe=>{i.save(),i.translateWithPrecision(Xe.left,0),_o.drawWith(i,{...$,info:Xe,color:b,fill:ee[Xe.text]}),i.restore()}),i.restore()}),i.restore(),V.set(M,{left:D.startX,top:D.startY,width:X.contentWidth+ut+ge,height:X.contentHeight+We*2})}calcCellAutoHeight(i){var I;const{primaryWithCoord:o,style:e,data:t}=i,a=t.fontRenderExtension,{leftOffset:r=0,rightOffset:n=0,topOffset:l=0,downOffset:d=0}=a||{},c=o.isMergedMainCell?o.mergeInfo:o,u={startX:c.startX+r,endX:c.endX-n,startY:c.startY+l,endY:c.endY-d},h=t.dataValidation;if(!h)return;const p=u.endX-u.startX,m=u.endY-u.startY,v=(I=te(t))!=null?I:"",{validator:g}=h,V=g.parseCellValue(v),M=z.getFontStyleString(e!=null?e:void 0);return Ot(V,M,p,m).cellAutoHeight}isHit(i,o){const{primaryWithCoord:e}=o,t=e.isMergedMainCell?e.mergeInfo:e,{endX:a}=t,{x:r}=i;return r>=a-ge&&r<=a}onPointerDown(i,o){if(o.button===2)return;const{unitId:e,subUnitId:t,row:a,col:r}=i,n={unitId:e,subUnitId:t,row:a,column:r};this._commandService.executeCommand(Ye.id,n)}};mt=Vo([Do(0,s.ICommandService)],mt);class Oo extends zt{constructor(){super(...arguments);_(this,"id",s.DataValidationType.LIST_MULTIPLE);_(this,"title","dataValidation.listMultiple.title");_(this,"canvasRender",this.injector.createInstance(mt))}skipDefaultFontRender(){return!0}}var Io=Object.defineProperty,Co=Object.getOwnPropertyDescriptor,Eo=(i,o,e,t)=>{for(var a=t>1?void 0:t?Co(o,e):o,r=i.length-1,n;r>=0;r--)(n=i[r])&&(a=(t?n(o,e,a):n(a))||a);return t&&a&&Io(o,e,a),a},me=(i,o)=>(e,t)=>o(e,t,i);exports.DataValidationController=class extends s.RxDisposable{constructor(o,e,t,a,r,n,l,d){super(),this._univerInstanceService=o,this._sheetDataValidationService=e,this._dataValidatorRegistryService=t,this._injector=a,this._componentManger=r,this._selectionManagerService=n,this._sheetInterceptorService=l,this._dataValidationModel=d,this._init()}_init(){this._registerValidators(),this._initInstanceChange(),this._componentManger.register(Gt,At),this._initCommandInterceptor()}_registerValidators(){[co,po,ho,eo,zr,zt,Oo,$r].forEach(o=>{const e=this._injector.createInstance(o);this.disposeWithMe(this._dataValidatorRegistryService.register(e)),this.disposeWithMe({dispose:()=>{this._injector.delete(o)}})})}_initInstanceChange(){const o=new s.DisposableCollection;this._univerInstanceService.getCurrentTypeOfUnit$(s.UniverInstanceType.UNIVER_SHEET).subscribe(e=>{o.dispose(),e&&(this._sheetDataValidationService.switchCurrent(e.getUnitId(),e.getActiveSheet().getSheetId()),o.add(s.toDisposable(e.activeSheet$.subscribe(t=>{if(t){const a=e.getUnitId(),r=t.getSheetId();this._sheetDataValidationService.switchCurrent(a,r)}}))))}),this.disposeWithMe(o)}_initCommandInterceptor(){this._sheetInterceptorService.interceptCommand({getMutations:o=>{if(o.id===re.ClearSelectionAllCommand.id){const e=this._univerInstanceService.getCurrentUnitForType(s.UniverInstanceType.UNIVER_SHEET),t=e.getUnitId(),r=e.getActiveSheet().getSheetId(),n=this._selectionManagerService.getSelectionRanges(),l=this._dataValidationModel.ensureManager(t,r),d=l.getRuleObjectMatrix().clone();n&&d.removeRange(n);const c=d.diff(l.getDataValidations()),{redoMutations:u,undoMutations:h}=Ie(t,r,c);return{undos:h,redos:u}}return{undos:[],redos:[]}}})}};exports.DataValidationController=Eo([s.OnLifecycle(s.LifecycleStages.Rendered,exports.DataValidationController),me(0,s.IUniverInstanceService),me(1,O.Inject(exports.SheetDataValidationService)),me(2,O.Inject(R.DataValidatorRegistryService)),me(3,O.Inject(O.Injector)),me(4,O.Inject(B.ComponentManager)),me(5,O.Inject(re.SelectionManagerService)),me(6,O.Inject(re.SheetInterceptorService)),me(7,O.Inject(R.DataValidationModel))],exports.DataValidationController);var yo=Object.defineProperty,Fo=Object.getOwnPropertyDescriptor,wo=(i,o,e,t)=>{for(var a=t>1?void 0:t?Fo(o,e):o,r=i.length-1,n;r>=0;r--)(n=i[r])&&(a=(t?n(o,e,a):n(a))||a);return t&&a&&yo(o,e,a),a},Ue=(i,o)=>(e,t)=>o(e,t,i);const ot="SHEET_DATA_VALIDATION_ALERT";exports.DataValidationAlertController=class extends s.Disposable{constructor(o,e,t,a){super(),this._hoverManagerService=o,this._cellAlertManagerService=e,this._univerInstanceService=t,this._localeService=a,this._init()}_init(){this._initCellAlertPopup()}_initCellAlertPopup(){this.disposeWithMe(this._hoverManagerService.currentCell$.subscribe(o=>{var e,t;if(o){const n=this._univerInstanceService.getCurrentUnitForType(s.UniverInstanceType.UNIVER_SHEET).getActiveSheet().getCell(o.location.row,o.location.col);if(((e=n==null?void 0:n.dataValidation)==null?void 0:e.validStatus)===s.DataValidationStatus.INVALID){const l=this._cellAlertManagerService.currentAlert.get(ot),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=n.dataValidation.validator,u=n.dataValidation.rule;if(!c)return;this._cellAlertManagerService.showAlert({type:P.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:ot});return}}this._cellAlertManagerService.removeAlert(ot)}))}};exports.DataValidationAlertController=wo([s.OnLifecycle(s.LifecycleStages.Rendered,exports.DataValidationAlertController),Ue(0,O.Inject(P.HoverManagerService)),Ue(1,O.Inject(P.CellAlertManagerService)),Ue(2,s.IUniverInstanceService),Ue(3,O.Inject(s.LocaleService))],exports.DataValidationAlertController);var To=Object.defineProperty,Lo=Object.getOwnPropertyDescriptor,bo=(i,o,e,t)=>{for(var a=t>1?void 0:t?Lo(o,e):o,r=i.length-1,n;r>=0;r--)(n=i[r])&&(a=(t?n(o,e,a):n(a))||a);return t&&a&&To(o,e,a),a},ie=(i,o)=>(e,t)=>o(e,t,i);exports.DataValidationRefRangeController=class extends s.Disposable{constructor(e,t,a,r,n,l,d,c,u,h){super();_(this,"_disposableMap",new Map);_(this,"registerRule",(e,t,a)=>{this.register(e,t,a),this.registerFormula(e,t,a)});this._dataValidationModel=e,this._univerInstanceService=t,this._injector=a,this._sheetSkeletonManagerService=r,this._refRangeService=n,this._dataValidationCustomFormulaService=l,this._dataValidationFormulaService=d,this._formulaRefRangeService=c,this._commandService=u,this._dataValidationCacheService=h,this._initRefRange()}_getIdWithUnitId(e,t,a){return`${e}_${t}_${a}`}registerFormula(e,t,a){var c;const r=a.uid,n=this._getIdWithUnitId(e,t,r),l=(c=this._disposableMap.get(n))!=null?c:new Set,d=(u,h)=>{const p=this._dataValidationModel.getRuleById(e,t,r);if(!p)return{redos:[],undos:[]};const m=p[u];if(!m||m===h)return{redos:[],undos:[]};const v={unitId:e,subUnitId:t,ruleId:a.uid,payload:{type:R.UpdateRuleType.SETTING,payload:{type:p.type,formula1:p.formula1,formula2:p.formula2,[u]:h}}},g={unitId:e,subUnitId:t,ruleId:a.uid,payload:{type:R.UpdateRuleType.SETTING,payload:{type:p.type,formula1:p.formula1,formula2:p.formula2}}},S=[{id:R.UpdateDataValidationMutation.id,params:v}],V=[{id:R.UpdateDataValidationMutation.id,params:g}];return{redos:S,undos:V}};if(a.type===s.DataValidationType.CUSTOM){const u=this._dataValidationCustomFormulaService.getRuleFormulaInfo(e,t,r);if(u){const h=this._formulaRefRangeService.registerFormula(u.formula,p=>d("formula1",p));l.add(()=>h.dispose())}}if(a.type!==s.DataValidationType.CUSTOM){const u=this._dataValidationFormulaService.getRuleFormulaInfo(e,t,r);if(u){const[h,p]=u;if(h){const m=this._formulaRefRangeService.registerFormula(h.text,v=>d("formula1",v));l.add(()=>m.dispose())}if(p){const m=this._formulaRefRangeService.registerFormula(p.text,v=>d("formula1",v));l.add(()=>m.dispose())}}}}register(e,t,a){var c;const r=u=>{const h=[...a.ranges],m=h.map(g=>re.handleCommonDefaultRangeChangeWithEffectRefCommands(g,u)).filter(g=>!!g).flat();if(s.isRangesEqual(m,h))return{redos:[],undos:[]};if(m.length){const g={unitId:e,subUnitId:t,ruleId:a.uid,payload:{type:R.UpdateRuleType.RANGE,payload:m}},S=[{id:R.UpdateDataValidationMutation.id,params:g}],V=[{id:R.UpdateDataValidationMutation.id,params:{unitId:e,subUnitId:t,ruleId:a.uid,payload:{type:R.UpdateRuleType.RANGE,payload:h}}}];return{redos:S,undos:V}}else{const g={unitId:e,subUnitId:t,ruleId:a.uid},S=[{id:R.RemoveDataValidationMutation.id,params:g}],V=R.removeDataValidationUndoFactory(this._injector,g);return{redos:S,undos:V}}},n=[];a.ranges.forEach(u=>{const h=this._refRangeService.registerRefRange(u,r,e,t);n.push(()=>h.dispose())});const l=this._getIdWithUnitId(e,t,a.uid),d=(c=this._disposableMap.get(l))!=null?c:new Set;d.add(()=>n.forEach(u=>u())),this._disposableMap.set(l,d)}_initRefRange(){this.disposeWithMe(_e.merge(this._sheetSkeletonManagerService.currentSkeleton$.pipe(Qe.map(e=>e==null?void 0:e.sheetId),Qe.distinctUntilChanged())).pipe(Qe.switchMap(()=>new _e.Observable(e=>{const t=new s.DisposableCollection;return e.next(t),()=>{t.dispose()}}))).subscribe(e=>{e.add(s.toDisposable(this._dataValidationModel.ruleChange$.subscribe(t=>{const{unitId:a,subUnitId:r,rule:n}=t;switch(t.type){case"add":{const l=t.rule;this.registerRule(t.unitId,t.subUnitId,l);break}case"remove":{const l=this._disposableMap.get(this._getIdWithUnitId(a,r,n.uid));l&&l.forEach(d=>d());break}case"update":{const l=t.rule,d=this._disposableMap.get(this._getIdWithUnitId(a,r,l.uid));d&&d.forEach(c=>c()),this.registerRule(t.unitId,t.subUnitId,l);break}}})))})),this.disposeWithMe(s.toDisposable(()=>{this._disposableMap.forEach(e=>{e.forEach(t=>t())}),this._disposableMap.clear()}))}};exports.DataValidationRefRangeController=bo([s.OnLifecycle(s.LifecycleStages.Ready,exports.DataValidationRefRangeController),ie(0,O.Inject(R.DataValidationModel)),ie(1,O.Inject(s.IUniverInstanceService)),ie(2,O.Inject(O.Injector)),ie(3,O.Inject(P.SheetSkeletonManagerService)),ie(4,O.Inject(re.RefRangeService)),ie(5,O.Inject(exports.DataValidationCustomFormulaService)),ie(6,O.Inject(exports.DataValidationFormulaService)),ie(7,O.Inject(ke.FormulaRefRangeService)),ie(8,s.ICommandService),ie(9,O.Inject(Ce))],exports.DataValidationRefRangeController);const Kt={dataValidation:{title:"Data validation",validFail:{common:"Please input value or formula",number:"Please input number or formula",formula:"Please input formula",integer:"Please input integer or formula",date:"Please input date or formula",list:"Please input options",listInvalid:"The list source must be a delimited list or a reference to a single row or column"},panel:{title:"Data validation management",addTitle:"Create new data validation",removeAll:"Remove All",add:"Create Data validation",range:"Ranges",type:"Type",options:"Advance options",operator:"Operator",removeRule:"Remove",done:"Done",formulaPlaceholder:"Please input value or formula",formulaAnd:"and",invalid:"Invalid",showWarning:"Show warning",rejectInput:"Reject input",messageInfo:"Helper message",showInfo:"Show help text for a selected cell"},operators:{between:"between",greaterThan:"greater than",greaterThanOrEqual:"greater than or equal",lessThan:"less than",lessThanOrEqual:"less than or equal",equal:"equal",notEqual:"not equal",notBetween:"not between"},ruleName:{between:"is between {FORMULA1} and {FORMULA2}",greaterThan:"is greater than {FORMULA1}",greaterThanOrEqual:"is greater than or equal to {FORMULA1}",lessThan:"is less than {FORMULA1}",lessThanOrEqual:"is less than or equal to {FORMULA1}",equal:"is equal to {FORMULA1}",notEqual:"is not equal to {FORMULA1}",notBetween:"is not between {FORMULA1} and {FORMULA2}"},errorMsg:{between:"Value must be between {FORMULA1} and {FORMULA2}",greaterThan:"Value must be greater than {FORMULA1}",greaterThanOrEqual:"Value must be greater than or equal to {FORMULA1}",lessThan:"Value must be less than {FORMULA1}",lessThanOrEqual:"Value must be less than or equal to {FORMULA1}",equal:"Value must be equal to {FORMULA1}",notEqual:"Value must be not equal to {FORMULA1}",notBetween:"Value must be not between {FORMULA1} and {FORMULA2}"},date:{title:"Date",operators:{between:"between",greaterThan:"after",greaterThanOrEqual:"on or after",lessThan:"before",lessThanOrEqual:"on or before",equal:"equal",notEqual:"not equal",notBetween:"not between"},ruleName:{between:"is between {FORMULA1} and {FORMULA2}",greaterThan:"is after {FORMULA1}",greaterThanOrEqual:"is on or after {FORMULA1}",lessThan:"is before {FORMULA1}",lessThanOrEqual:"is on or before {FORMULA1}",equal:"is {FORMULA1}",notEqual:"is not {FORMULA1}",notBetween:"is not between {FORMULA1}"},errorMsg:{between:"Value must be between {FORMULA1} and {FORMULA2}",greaterThan:"Value must be after {FORMULA1}",greaterThanOrEqual:"Value must be on or after {FORMULA1}",lessThan:"Value must be before {FORMULA1}",lessThanOrEqual:"Value must be on or before {FORMULA1}",equal:"Value must be {FORMULA1}",notEqual:"Value must be not {FORMULA1}",notBetween:"Value must be not between {FORMULA1}"}},list:{title:"Dropdown",name:"Value contains one from range",error:"Input must fall within specified range",emptyError:"Please enter a value",add:"Add",dropdown:"Select",options:"Options",customOptions:"Custom",refOptions:"From a range",formulaError:"The list source must be a delimited list of data, or a reference to a single row or column."},listMultiple:{title:"Dropdown-Multiple",dropdown:"Multiple select"},textLength:{title:"Text length",errorMsg:{between:"Text length must be between {FORMULA1} and {FORMULA2}",greaterThan:"Text length must be after {FORMULA1}",greaterThanOrEqual:"Text length must be on or after {FORMULA1}",lessThan:"Text length must be before {FORMULA1}",lessThanOrEqual:"Text length must be on or before {FORMULA1}",equal:"Text length must be {FORMULA1}",notEqual:"Text length must be not {FORMULA1}",notBetween:"Text length must be not between {FORMULA1}"}},decimal:{title:"Number"},whole:{title:"Integer"},checkbox:{title:"Checkbox",error:"This cell's contents violate its validation rule",tips:"Use custom values within cells",checked:"Selected value",unchecked:"Unselected value"},custom:{title:"Custom formula",error:"This cell's contents violate its validation rule",validFail:"Please input a valid formula"},alert:{title:"Error",ok:"OK"},error:{title:"Invalid:"},renderMode:{arrow:"Arrow",chip:"Chip",text:"Plain text",label:"Display style"}}},Zt={dataValidation:{title:"数据验证",validFail:{common:"请输入值或公式",number:"请输入合法的数字或公式",formula:"请输入合法的公式或公式",integer:"请输入合法的整数或公式",date:"请输入合法的日期或公式",list:"请输入至少一个合法选项",listInvalid:"列表源必须是分隔列表或对单行或列的引用。"},panel:{title:"管理数据验证",addTitle:"新建数据验证",removeAll:"全部删除",add:"新建规则",range:"应用范围",type:"条件类型",options:"高级设置",operator:"数据",removeRule:"删除规则",done:"确认",formulaPlaceholder:"请输入值或公式",formulaAnd:"与",invalid:"数据无效时",showWarning:"显示警告",rejectInput:"拒绝输入",messageInfo:"文字提示",showInfo:"显示所选单元格的提示文字"},operators:{between:"介于",greaterThan:"大于",greaterThanOrEqual:"大于或等于",lessThan:"小于",lessThanOrEqual:"小于或等于",equal:"等于",notEqual:"不等于",notBetween:"未介于"},ruleName:{between:"介于 {FORMULA1} 和 {FORMULA2} 之间",greaterThan:"大于 {FORMULA1}",greaterThanOrEqual:"大于或等于 {FORMULA1}",lessThan:"小于 {FORMULA1}",lessThanOrEqual:"小于或等于 {FORMULA1}",equal:"等于 {FORMULA1}",notEqual:"不等于 {FORMULA1}",notBetween:"在 {FORMULA1} 和 {FORMULA2} 范围之外"},errorMsg:{between:"值必须介于 {FORMULA1} 和 {FORMULA2} 之间",greaterThan:"值必须大于 {FORMULA1}",greaterThanOrEqual:"值必须大于或等于 {FORMULA1}",lessThan:"值必须小于 {FORMULA1}",lessThanOrEqual:"值必须小于或等于 {FORMULA1}",equal:"值必须等于 {FORMULA1}",notEqual:"值必须不等于 {FORMULA1}",notBetween:"值必须在 {FORMULA1} 和 {FORMULA2} 范围之外"},date:{title:"日期",operators:{between:"介于",greaterThan:"晚于",greaterThanOrEqual:"晚于或等于",lessThan:"早于",lessThanOrEqual:"早于或等于",equal:"等于",notEqual:"不等于",notBetween:"未介于"},ruleName:{between:"介于 {FORMULA1} 和 {FORMULA2} 之间",greaterThan:"晚于 {FORMULA1}",greaterThanOrEqual:"晚于或等于 {FORMULA1}",lessThan:"早于 {FORMULA1}",lessThanOrEqual:"早于或等于 {FORMULA1}",equal:"等于 {FORMULA1}",notEqual:"不等于 {FORMULA1}",notBetween:"在 {FORMULA1} 和 {FORMULA2} 范围之外"},errorMsg:{between:"日期必须介于 {FORMULA1} 和 {FORMULA2} 之间",greaterThan:"日期必须晚于 {FORMULA1}",greaterThanOrEqual:"日期必须晚于或等于 {FORMULA1}",lessThan:"日期必须早于 {FORMULA1}",lessThanOrEqual:"早于或等于 {FORMULA1}",equal:"日期必须等于 {FORMULA1}",notEqual:"日期必须不等于 {FORMULA1}",notBetween:"日期必须在 {FORMULA1} 和 {FORMULA2} 范围之外"}},list:{title:"下拉菜单",name:"值必须是列表中的值",error:"输入必须在指定的范围内",emptyError:"请输入一个值",add:"添加选项",dropdown:"单选",options:"选项来源",customOptions:"自定义",refOptions:"引用数据",formulaError:"列表源必须是划定分界后的数据列表,或是对单一行或一列的引用。"},listMultiple:{title:"下拉菜单-多选",dropdown:"多选"},textLength:{title:"文本长度",errorMsg:{between:"文本长度必须介于 {FORMULA1} 和 {FORMULA2} 之间",greaterThan:"文本长度必须大于 {FORMULA1}",greaterThanOrEqual:"文本长度必须大于或等于 {FORMULA1}",lessThan:"文本长度必须小于 {FORMULA1}",lessThanOrEqual:"文本长度必须小于或等于 {FORMULA1}",equal:"文本长度必须等于 {FORMULA1}",notEqual:"文本长度必须不等于 {FORMULA1}",notBetween:"文本长度必须在 {FORMULA1} 和 {FORMULA2} 范围之外"}},decimal:{title:"数字"},whole:{title:"整数"},checkbox:{title:"复选框",error:"此单元格的内容违反了验证规则",tips:"在单元格内使用自定义值",checked:"选中值",unchecked:"未选中值"},custom:{title:"自定义公式",error:"此单元格的内容违反了验证规则",validFail:"请输入合法的公式"},alert:{title:"提示",ok:"确定"},error:{title:"无效:"},renderMode:{arrow:"箭头",chip:"条状标签",text:"纯文本",label:"显示样式"}}};var Ao=Object.defineProperty,No=Object.getOwnPropertyDescriptor,Uo=(i,o,e,t)=>{for(var a=t>1?void 0:t?No(o,e):o,r=i.length-1,n;r>=0;r--)(n=i[r])&&(a=(t?n(o,e,a):n(a))||a);return t&&a&&Ao(o,e,a),a},It=(i,o)=>(e,t)=>o(e,t,i);exports.DataValidationAutoFillController=class extends s.Disposable{constructor(o,e){super(),this._autoFillService=o,this._dataValidationModel=e,this._initAutoFill()}_initAutoFill(){const o=()=>({redos:[],undos:[]}),e=a=>{const{source:r,target:n,unitId:l,subUnitId:d}=a,c=this._dataValidationModel.ensureManager(l,d),u=c.getRuleObjectMatrix().clone(),h=P.virtualizeDiscreteRanges([r,n]),[p,m]=h.ranges,{mapFunc:v}=h,g={row:p.startRow,col:p.startColumn};P.getAutoFillRepeatRange(p,m).forEach(I=>{const F=I.repeatStartCell,T=I.relativeRange,b={startRow:g.row,startColumn:g.col,endColumn:g.col,endRow:g.row},$={startRow:F.row,startColumn:F.col,endColumn:F.col,endRow:F.row};s.Range.foreach(T,(U,j)=>{const N=s.Rectangle.getPositionRange({startRow:U,startColumn:j,endColumn:j,endRow:U},b),{row:Y,col:H}=v(N.startRow,N.startColumn),G=c.getRuleIdByLocation(Y,H);if(G){const x=s.Rectangle.getPositionRange({startRow:U,startColumn:j,endColumn:j,endRow:U},$),{row:K,col:ee}=v(x.startRow,x.startColumn);u.setValue(K,ee,G)}})});const V=u.diff(c.getDataValidations()),{redoMutations:M,undoMutations:D}=Ie(l,d,V);return{undos:D,redos:M}},t={id:ze,onFillData:(a,r,n)=>n===P.APPLY_TYPE.COPY||n===P.APPLY_TYPE.ONLY_FORMAT||n===P.APPLY_TYPE.SERIES?e(a):o()};this.disposeWithMe(this._autoFillService.addHook(t))}};exports.DataValidationAutoFillController=Uo([s.OnLifecycle(s.LifecycleStages.Ready,exports.DataValidationAutoFillController),It(0,P.IAutoFillService),It(1,O.Inject(R.DataValidationModel))],exports.DataValidationAutoFillController);var jo=Object.defineProperty,Po=Object.getOwnPropertyDescriptor,xo=(i,o,e,t)=>{for(var a=t>1?void 0:t?Po(o,e):o,r=i.length-1,n;r>=0;r--)(n=i[r])&&(a=(t?n(o,e,a):n(a))||a);return t&&a&&jo(o,e,a),a},nt=(i,o)=>(e,t)=>o(e,t,i);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:ze,onBeforeCopy:(e,t,a)=>this._collect(e,t,a),onPasteCells:(e,t,a,r)=>{const{copyType:n=P.COPY_TYPE.COPY,pasteType:l}=r,{range:d}=e||{},{range:c,unitId:u,subUnitId:h}=t;return this._generateMutations(c,{copyType:n,pasteType:l,copyRange:d,unitId:u,subUnitId:h})}})}_collect(e,t,a){const r=new s.ObjectMatrix;this._copyInfo={unitId:e,subUnitId:t,matrix:r};const n=this._dataValidationModel.ensureManager(e,t),l={get:this._injector.get.bind(this._injector)},d=P.rangeToDiscreteRange(a,l,e,t);if(!d)return;const{rows:c,cols:u}=d;c.forEach((h,p)=>{u.forEach((m,v)=>{const g=n.getRuleIdByLocation(h,m);r.setValue(p,v,g!=null?g:"")})})}_generateMutations(e,t){if(!this._copyInfo)return{redos:[],undos:[]};if(t.copyType===P.COPY_TYPE.CUT)return this._copyInfo=null,{redos:[],undos:[]};if(!this._copyInfo||!this._copyInfo.matrix.getSizeOf()||!t.copyRange)return{redos:[],undos:[]};if([P.PREDEFINED_HOOK_NAME.SPECIAL_PASTE_COL_WIDTH,P.PREDEFINED_HOOK_NAME.SPECIAL_PASTE_VALUE,P.PREDEFINED_HOOK_NAME.SPECIAL_PASTE_FORMAT,ke.SPECIAL_PASTE_FORMULA].includes(t.pasteType))return{redos:[],undos:[]};const{unitId:a,subUnitId:r}=this._copyInfo;if(t.unitId!==a||r!==t.subUnitId){const n=this._dataValidationModel.ensureManager(a,r),l=this._dataValidationModel.ensureManager(t.unitId,t.subUnitId),d=l.getRuleObjectMatrix().clone(),{ranges:[c,u],mapFunc:h}=P.virtualizeDiscreteRanges([t.copyRange,e]),p=P.getRepeatRange(c,u,!0),m=new Map;p.forEach(({startRange:S})=>{var V;(V=this._copyInfo)==null||V.matrix.forValue((M,D,I)=>{const F=s.Rectangle.getPositionRange({startRow:M,endRow:M,startColumn:D,endColumn:D},S),T=`${r}-${I}`,b=n.getRuleById(I);!l.getRuleById(T)&&b&&m.set(T,{...b,uid:T});const{row:$,col:U}=h(F.startRow,F.startColumn);d.setValue($,U,T)})});const{redoMutations:v,undoMutations:g}=Ie(t.unitId,t.subUnitId,d.diffWithAddition(l.getDataValidations(),m.values()));return{redos:v,undos:g}}else{const n=this._dataValidationModel.ensureManager(a,r),l=n.getRuleObjectMatrix().clone(),{ranges:[d,c],mapFunc:u}=P.virtualizeDiscreteRanges([t.copyRange,e]);P.getRepeatRange(d,c,!0).forEach(({startRange:v})=>{var g;(g=this._copyInfo)==null||g.matrix.forValue((S,V,M)=>{const D=s.Rectangle.getPositionRange({startRow:S,endRow:S,startColumn:V,endColumn:V},v),{row:I,col:F}=u(D.startRow,D.startColumn);l.setValue(I,F,M)})});const{redoMutations:p,undoMutations:m}=Ie(a,r,l.diff(n.getDataValidations()));return{redos:p,undos:m}}}};exports.DataValidationCopyPasteController=xo([s.OnLifecycle(s.LifecycleStages.Ready,exports.DataValidationCopyPasteController),nt(0,P.ISheetClipboardService),nt(1,O.Inject(R.DataValidationModel)),nt(2,O.Inject(O.Injector))],exports.DataValidationCopyPasteController);class gt{constructor(o){_(this,"value");this.value=o}addRule(o){const e=o.uid;o.ranges.forEach(t=>{s.Range.foreach(t,(a,r)=>{this.value.setValue(a,r,e)})})}removeRange(o){o.forEach(e=>{s.Range.foreach(e,(t,a)=>{this.value.realDeleteValue(t,a)})})}removeRule(o){o.ranges.forEach(e=>{s.Range.foreach(e,(t,a)=>{this.value.setValue(t,a,"")})})}updateRange(o,e,t){const a=`${o}$`;e.forEach(r=>{s.Range.foreach(r,(n,l)=>{this.value.getValue(n,l)===o&&this.value.setValue(n,l,a)})}),t.forEach(r=>{s.Range.foreach(r,(n,l)=>{this.value.setValue(n,l,o)})}),e.forEach(r=>{s.Range.foreach(r,(n,l)=>{this.value.getValue(n,l)===a&&this.value.realDeleteValue(n,l)})})}diff(o){const e=[];let t=0;return o.forEach((a,r)=>{const n=s.queryObjectMatrix(this.value,d=>d===a.uid),l=a.ranges;(n.length!==l.length||n.some((d,c)=>!s.Rectangle.equals(d,l[c])))&&e.push({type:"update",ruleId:a.uid,oldRanges:l,newRanges:n}),n.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,n)=>{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:n-a}),a++)}),Array.from(e).forEach(r=>{const n=s.queryObjectMatrix(this.value,l=>l===r.uid);t.push({type:"add",rule:{...r,ranges:n}})}),t}clone(){return new gt(new s.ObjectMatrix(this.value.clone()))}getValue(o,e){return this.value.getValue(o,e)}setValue(o,e,t){return this.value.setValue(o,e,t)}}class Bo 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(Ce),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 n=new s.ObjectMatrix;a==null||a.forEach(l=>{const d=l.uid;l.ranges.forEach(c=>{s.Range.foreach(c,(u,h)=>{n.setValue(u,h,d)})})}),a==null||a.forEach(l=>{this._dataValidationRefRangeController.register(e,t,l)}),this._ruleMatrix=new gt(n)}_addRuleSideEffect(e){var r;const{unitId:t,subUnitId:a}=this;(e.type===s.DataValidationType.LIST||e.type===s.DataValidationType.LIST_MULTIPLE)&&se.isReferenceString((r=e.formula1)!=null?r:"")&&(e.formula1=`=${e.formula1}`),this._ruleMatrix.addRule(e),this._dataValidationCacheService.addRule(t,a,e),this._dataValidationFormulaService.addRule(t,a,e.uid,e.formula1,e.formula2),this._dataValidationCustomFormulaService.addRule(t,a,e)}addRule(e,t){(Array.isArray(e)?e:[e]).forEach(r=>{this._addRuleSideEffect(r)}),super.addRule(e,t)}updateRule(e,t){const a=this.getRuleById(e);if(!a)throw new Error(`Rule not found! id: ${e}`);return t.type===R.UpdateRuleType.RANGE?(this._ruleMatrix.updateRange(e,a.ranges,t.payload),this._dataValidationCacheService.updateRuleRanges(this.unitId,this.subUnitId,e,t.payload,a.ranges),this._dataValidationCustomFormulaService.updateRuleRanges(this.unitId,this.subUnitId,e,a.ranges,t.payload)):t.type===R.UpdateRuleType.SETTING&&(this._dataValidationCacheService.markRangeDirty(this.unitId,this.subUnitId,a.ranges),this._dataValidationFormulaService.updateRuleFormulaText(this.unitId,this.subUnitId,e,t.payload.formula1,t.payload.formula2),this._dataValidationCustomFormulaService.updateRuleFormula(this.unitId,this.subUnitId,e,a.ranges,t.payload.formula1)),super.updateRule(e,t)}removeRule(e){const t=this.getRuleById(e);t&&(this._ruleMatrix.removeRule(t),this._dataValidationCacheService.removeRule(this.unitId,this.subUnitId,t)),super.removeRule(e)}getRuleIdByLocation(e,t){return this._ruleMatrix.getValue(e,t)}getRuleByLocation(e,t){const a=this.getRuleIdByLocation(e,t);if(a)return this.getRuleById(a)}validator(e,t,a,r){const{col:n,row:l,unitId:d,subUnitId:c}=a,u=t.uid,h=this._dataValidatorRegistryService.getValidatorItem(t.type);if(h){const p=this._cache.getValue(l,n);return!p||p.value!==e?(this._cache.setValue(l,n,{value:e,status:s.DataValidationStatus.VALIDATING,ruleId:u}),h.validator({value:e,unitId:d,subUnitId:c,row:l,column:n},t).then(m=>{const v=m?s.DataValidationStatus.VALID:s.DataValidationStatus.INVALID;this._cache.setValue(l,n,{value:e,status:v,ruleId:u}),r(v)}),s.DataValidationStatus.VALIDATING):p.status}else return s.DataValidationStatus.VALID}getRuleErrorMsg(e){const t=this.getRuleById(e);if(!t)return"";const a=this._dataValidatorRegistryService.getValidatorItem(t.type);return t.error?t.error:a?a.getRuleFinalError(t):""}getRuleObjectMatrix(){return this._ruleMatrix}}var $o=Object.defineProperty,Ho=Object.getOwnPropertyDescriptor,Wo=(i,o,e,t)=>{for(var a=t>1?void 0:t?Ho(o,e):o,r=i.length-1,n;r>=0;r--)(n=i[r])&&(a=(t?n(o,e,a):n(a))||a);return t&&a&&$o(o,e,a),a},je=(i,o)=>(e,t)=>o(e,t,i);let Be=class extends s.Disposable{constructor(i,o,e,t){super(),this._resourceManagerService=i,this._univerInstanceService=o,this._dataValidationModel=e,this._injector=t,this._initDataValidationDataSource()}_createSheetDataValidationManager(i,o){return new Bo(i,o,[],this._injector)}_initDataValidationDataSource(){this._dataValidationModel.setManagerCreator(this._createSheetDataValidationManager.bind(this))}};Be=Wo([s.OnLifecycle(s.LifecycleStages.Starting,Be),je(0,s.IResourceManagerService),je(1,s.IUniverInstanceService),je(2,O.Inject(R.DataValidationModel)),je(3,O.Inject(O.Injector))],Be);var ko=Object.defineProperty,qo=Object.getOwnPropertyDescriptor,Yo=(i,o,e,t)=>{for(var a=t>1?void 0:t?qo(o,e):o,r=i.length-1,n;r>=0;r--)(n=i[r])&&(a=(t?n(o,e,a):n(a))||a);return t&&a&&ko(o,e,a),a},it=(i,o)=>(e,t)=>o(e,t,i),Pe;exports.UniverSheetsDataValidationPlugin=(Pe=class extends s.Plugin{constructor(o,e,t,a){super(),this._injector=e,this._commandService=t,this._localeService=a}onStarting(o){[[Ve],[exports.SheetDataValidationService],[Ce],[exports.DataValidationFormulaService],[exports.DataValidationCustomFormulaService],[Re],[Be],[exports.DataValidationController],[exports.DataValidationRenderController],[exports.DataValidationAlertController],[exports.DataValidationRefRangeController],[exports.DataValidationAutoFillController],[exports.DataValidationCopyPasteController],[exports.DataValidationRejectInputController]].forEach(e=>{o.add(e)}),[Ge,pt,ht,Ye,Tt,wt,we,ma].forEach(e=>{this._commandService.registerCommand(e)}),this._localeService.load({zhCN:Zt,enUS:Kt})}},_(Pe,"pluginName",ze),_(Pe,"type",s.UniverInstanceType.UNIVER_SHEET),Pe);exports.UniverSheetsDataValidationPlugin=Yo([it(1,O.Inject(O.Injector)),it(2,s.ICommandService),it(3,O.Inject(s.LocaleService))],exports.UniverSheetsDataValidationPlugin);Object.defineProperty(exports,"ICommandService",{enumerable:!0,get:()=>s.ICommandService});Object.defineProperty(exports,"LocaleService",{enumerable:!0,get:()=>s.LocaleService});Object.defineProperty(exports,"Plugin",{enumerable:!0,get:()=>s.Plugin});exports.AddSheetDataValidationAndOpenCommand=pt;exports.AddSheetDataValidationCommand=Ge;exports.DATA_VALIDATION_PLUGIN_NAME=ze;exports.DataValidationCacheService=Ce;exports.HideDataValidationDropdown=Tt;exports.ShowDataValidationDropdown=Ye;exports.UpdateSheetDataValidationRangeCommand=ht;exports.enUS=Kt;exports.zhCN=Zt;
|