index.js 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692
  1. var J = Object.defineProperty;
  2. var z = (t, e, r) => e in t ? J(t, e, { enumerable: !0, configurable: !0, writable: !0, value: r }) : t[e] = r;
  3. var c = (t, e, r) => z(t, typeof e != "symbol" ? e + "" : e, r);
  4. import { Disposable as B, Tools as x, ILogService as N, Inject as O, UniverInstanceType as $, IResourceManagerService as K, IUniverInstanceService as Y, toDisposable as X, CommandType as E, ICommandService as T, IUndoRedoService as A, Plugin as Z, merge as k, Injector as G, IConfigService as ee, DataValidationOperator as s, LocaleService as te } from "@univerjs/core";
  5. import { Subject as ae, debounceTime as re, BehaviorSubject as oe } from "rxjs";
  6. function q(t) {
  7. return {
  8. type: t.type,
  9. operator: t.operator,
  10. formula1: t.formula1,
  11. formula2: t.formula2,
  12. allowBlank: t.allowBlank
  13. };
  14. }
  15. function H(t) {
  16. return {
  17. error: t.error,
  18. errorStyle: t.errorStyle,
  19. errorTitle: t.errorTitle,
  20. imeMode: t.imeMode,
  21. prompt: t.prompt,
  22. promptTitle: t.promptTitle,
  23. showDropDown: t.showDropDown,
  24. showErrorMessage: t.showErrorMessage,
  25. showInputMessage: t.showInputMessage,
  26. renderMode: t.renderMode,
  27. bizInfo: t.bizInfo
  28. };
  29. }
  30. var h = /* @__PURE__ */ ((t) => (t[t.SETTING = 0] = "SETTING", t[t.RANGE = 1] = "RANGE", t[t.OPTIONS = 2] = "OPTIONS", t[t.ALL = 3] = "ALL", t))(h || {}), ne = Object.defineProperty, ie = Object.getOwnPropertyDescriptor, se = (t, e, r, a) => {
  31. for (var o = a > 1 ? void 0 : a ? ie(e, r) : e, n = t.length - 1, i; n >= 0; n--)
  32. (i = t[n]) && (o = (a ? i(e, r, o) : i(o)) || o);
  33. return a && o && ne(e, r, o), o;
  34. }, de = (t, e) => (r, a) => e(r, a, t);
  35. let m = class extends B {
  36. constructor(e) {
  37. super();
  38. c(this, "_model", /* @__PURE__ */ new Map());
  39. c(this, "_ruleChange$", new ae());
  40. c(this, "ruleChange$", this._ruleChange$.asObservable());
  41. c(this, "ruleChangeDebounce$", this.ruleChange$.pipe(re(20)));
  42. this._logService = e, this.disposeWithMe({
  43. dispose: () => {
  44. this._ruleChange$.complete();
  45. }
  46. });
  47. }
  48. _ensureMap(e, r) {
  49. this._model.has(e) || this._model.set(e, /* @__PURE__ */ new Map());
  50. const a = this._model.get(e);
  51. if (a.has(r))
  52. return a.get(r);
  53. const o = { map: /* @__PURE__ */ new Map(), list: [] };
  54. return a.set(r, o), o;
  55. }
  56. _addSubUnitRule(e, r, a) {
  57. const { map: o, list: n } = e, l = (Array.isArray(r) ? r : [r]).filter((d) => !o.has(d.uid));
  58. typeof a == "number" && a < n.length ? n.splice(a, 0, ...l) : n.push(...l), l.forEach((d) => {
  59. o.set(d.uid, d);
  60. });
  61. }
  62. _removeSubUnitRule(e, r) {
  63. const { map: a, list: o } = e, n = o.findIndex((i) => i.uid === r);
  64. n > -1 && (o.splice(n, 1), a.delete(r));
  65. }
  66. _updateSubUnitRule(e, r, a) {
  67. const { map: o, list: n } = e, i = o.get(r), l = n.findIndex((u) => r === u.uid);
  68. if (!i)
  69. throw new Error(`Data validation rule is not found, ruleId: ${r}.`);
  70. const d = { ...i };
  71. switch (a.type) {
  72. case h.RANGE: {
  73. d.ranges = a.payload;
  74. break;
  75. }
  76. case h.SETTING: {
  77. Object.assign(d, q(a.payload));
  78. break;
  79. }
  80. case h.OPTIONS: {
  81. Object.assign(d, H(a.payload));
  82. break;
  83. }
  84. case h.ALL: {
  85. Object.assign(d, a.payload);
  86. break;
  87. }
  88. }
  89. return n[l] = d, o.set(r, d), d;
  90. }
  91. _addRuleSideEffect(e, r, a, o) {
  92. if (!this._ensureMap(e, r).map.get(a.uid))
  93. return {
  94. rule: a,
  95. type: "add",
  96. unitId: e,
  97. subUnitId: r,
  98. source: o
  99. };
  100. }
  101. addRule(e, r, a, o, n) {
  102. try {
  103. const i = this._ensureMap(e, r), d = (Array.isArray(a) ? a : [a]).map((u) => this._addRuleSideEffect(e, r, u, o));
  104. this._addSubUnitRule(i, a, n), d.forEach((u) => {
  105. u && this._ruleChange$.next(u);
  106. });
  107. } catch (i) {
  108. this._logService.error(i);
  109. }
  110. }
  111. updateRule(e, r, a, o, n) {
  112. try {
  113. const i = this._ensureMap(e, r), l = x.deepClone(i.map.get(a));
  114. if (!l)
  115. throw new Error(`Data validation rule is not found, ruleId: ${a}.`);
  116. const d = this._updateSubUnitRule(i, a, o);
  117. this._ruleChange$.next({
  118. rule: d,
  119. type: "update",
  120. unitId: e,
  121. subUnitId: r,
  122. source: n,
  123. updatePayload: o,
  124. oldRule: l
  125. });
  126. } catch (i) {
  127. this._logService.error(i);
  128. }
  129. }
  130. removeRule(e, r, a, o) {
  131. try {
  132. const n = this._ensureMap(e, r), i = n.map.get(a);
  133. i && (this._removeSubUnitRule(n, a), this._ruleChange$.next({
  134. rule: i,
  135. type: "remove",
  136. unitId: e,
  137. subUnitId: r,
  138. source: o
  139. }));
  140. } catch (n) {
  141. this._logService.error(n);
  142. }
  143. }
  144. getRuleById(e, r, a) {
  145. return this._ensureMap(e, r).map.get(a);
  146. }
  147. getRuleIndex(e, r, a) {
  148. return this._ensureMap(e, r).list.findIndex((n) => n.uid === a);
  149. }
  150. getRules(e, r) {
  151. return [...this._ensureMap(e, r).list];
  152. }
  153. getUnitRules(e) {
  154. const r = this._model.get(e);
  155. if (!r)
  156. return [];
  157. const a = [];
  158. return r.forEach((o, n) => {
  159. a.push([n, o.list]);
  160. }), a;
  161. }
  162. deleteUnitRules(e) {
  163. this._model.delete(e);
  164. }
  165. getSubUnitIds(e) {
  166. var r, a;
  167. return Array.from((a = (r = this._model.get(e)) == null ? void 0 : r.keys()) != null ? a : []);
  168. }
  169. getAll() {
  170. return Array.from(this._model.keys()).map((e) => [e, this.getUnitRules(e)]);
  171. }
  172. };
  173. m = se([
  174. de(0, N)
  175. ], m);
  176. var le = Object.defineProperty, ue = Object.getOwnPropertyDescriptor, ce = (t, e, r, a) => {
  177. for (var o = a > 1 ? void 0 : a ? ue(e, r) : e, n = t.length - 1, i; n >= 0; n--)
  178. (i = t[n]) && (o = (a ? i(e, r, o) : i(o)) || o);
  179. return a && o && le(e, r, o), o;
  180. }, y = (t, e) => (r, a) => e(r, a, t);
  181. const pe = "SHEET_DATA_VALIDATION_PLUGIN";
  182. let I = class extends B {
  183. constructor(t, e, r) {
  184. super(), this._resourceManagerService = t, this._univerInstanceService = e, this._dataValidationModel = r, this._initSnapshot();
  185. }
  186. _initSnapshot() {
  187. const t = (r) => {
  188. const a = this._dataValidationModel.getUnitRules(r), o = {};
  189. return a ? (a.forEach(([n, i]) => {
  190. o[n] = i;
  191. }), JSON.stringify(o)) : "";
  192. }, e = (r) => {
  193. if (!r)
  194. return {};
  195. try {
  196. return JSON.parse(r);
  197. } catch {
  198. return {};
  199. }
  200. };
  201. this.disposeWithMe(
  202. this._resourceManagerService.registerPluginResource({
  203. pluginName: pe,
  204. businesses: [$.UNIVER_SHEET],
  205. toJson: (r) => t(r),
  206. parseJson: (r) => e(r),
  207. onUnLoad: (r) => {
  208. this._dataValidationModel.deleteUnitRules(r);
  209. },
  210. onLoad: (r, a) => {
  211. Object.keys(a).forEach((o) => {
  212. a[o].forEach((i) => {
  213. this._dataValidationModel.addRule(r, o, i, "patched");
  214. });
  215. });
  216. }
  217. })
  218. );
  219. }
  220. };
  221. I = ce([
  222. y(0, K),
  223. y(1, Y),
  224. y(2, O(m))
  225. ], I);
  226. var me = /* @__PURE__ */ ((t) => (t.SHEET = "sheet", t))(me || {});
  227. class j {
  228. constructor() {
  229. c(this, "_validatorByScopes", /* @__PURE__ */ new Map());
  230. c(this, "_validatorMap", /* @__PURE__ */ new Map());
  231. c(this, "_validatorsChange$", new oe(void 0));
  232. c(this, "validatorsChange$", this._validatorsChange$.asObservable());
  233. }
  234. _addValidatorToScope(e, r) {
  235. this._validatorByScopes.has(r) || this._validatorByScopes.set(r, []);
  236. const a = this._validatorByScopes.get(r);
  237. if (a.findIndex((o) => o.id === e.id) > -1)
  238. throw new Error(`Validator item with the same id ${e.id} has already been added!`);
  239. a.push(e);
  240. }
  241. _removeValidatorFromScope(e, r) {
  242. const a = this._validatorByScopes.get(r);
  243. if (!a)
  244. return;
  245. const o = a.findIndex((n) => n.id === e.id);
  246. o > -1 && a.splice(o, 1);
  247. }
  248. register(e) {
  249. return this._validatorMap.set(e.id, e), Array.isArray(e.scopes) ? e.scopes.forEach((r) => {
  250. this._addValidatorToScope(e, r);
  251. }) : this._addValidatorToScope(e, e.scopes), this._validatorsChange$.next(), X(() => {
  252. this._validatorMap.delete(e.id), Array.isArray(e.scopes) ? e.scopes.forEach((r) => {
  253. this._removeValidatorFromScope(e, r);
  254. }) : this._removeValidatorFromScope(e, e.scopes), this._validatorsChange$.next();
  255. });
  256. }
  257. getValidatorItem(e) {
  258. return this._validatorMap.get(e);
  259. }
  260. getValidatorsByScope(e) {
  261. return this._validatorByScopes.get(e);
  262. }
  263. }
  264. const S = {
  265. type: E.MUTATION,
  266. id: "data-validation.mutation.addRule",
  267. handler(t, e) {
  268. if (!e)
  269. return !1;
  270. const { unitId: r, subUnitId: a, rule: o, index: n, source: i = "command" } = e;
  271. return t.get(m).addRule(r, a, o, i, n), !0;
  272. }
  273. }, v = {
  274. type: E.MUTATION,
  275. id: "data-validation.mutation.removeRule",
  276. handler(t, e) {
  277. if (!e)
  278. return !1;
  279. const { unitId: r, subUnitId: a, ruleId: o, source: n = "command" } = e, i = t.get(m);
  280. return Array.isArray(o) ? o.forEach((l) => {
  281. i.removeRule(r, a, l, n);
  282. }) : i.removeRule(r, a, o, n), !0;
  283. }
  284. }, f = {
  285. type: E.MUTATION,
  286. id: "data-validation.mutation.updateRule",
  287. handler(t, e) {
  288. if (!e)
  289. return !1;
  290. const { unitId: r, subUnitId: a, ruleId: o, payload: n, source: i = "command" } = e;
  291. return t.get(m).updateRule(r, a, o, n, i), !0;
  292. }
  293. }, he = {
  294. type: E.COMMAND,
  295. id: "data-validation.command.addRule",
  296. async handler(t, e) {
  297. if (t.get(N).error("[Deprecated]: `AddDataValidationCommand` is deprecated, please use `AddSheetDataValidationCommand` in `@univerjs/sheets-data-validation` instead!"), !e)
  298. return !1;
  299. const { rule: a, unitId: o, subUnitId: n } = e, i = t.get(T), l = t.get(A), d = {
  300. ...e,
  301. rule: {
  302. ...e.rule,
  303. ranges: [e.rule.range]
  304. }
  305. }, u = [{
  306. id: S.id,
  307. params: d
  308. }], p = [{
  309. id: v.id,
  310. params: {
  311. unitId: o,
  312. subUnitId: n,
  313. ruleId: a.uid
  314. }
  315. }];
  316. return l.pushUndoRedo({
  317. unitID: o,
  318. redoMutations: u,
  319. undoMutations: p
  320. }), await i.executeCommand(S.id, d), !0;
  321. }
  322. }, _e = {
  323. type: E.COMMAND,
  324. id: "data-validation.command.removeRule",
  325. handler(t, e) {
  326. if (t.get(N).error("[Deprecated]: `RemoveDataValidationCommand` is deprecated, please use `RemoveSheetDataValidationCommand` in `@univerjs/sheets-data-validation` instead!"), !e)
  327. return !1;
  328. const { unitId: a, subUnitId: o, ruleId: n } = e, i = t.get(T), l = t.get(A), d = t.get(m), u = [{
  329. id: v.id,
  330. params: e
  331. }], p = [{
  332. id: S.id,
  333. params: {
  334. unitId: a,
  335. subUnitId: o,
  336. rule: {
  337. ...d.getRuleById(a, o, n)
  338. },
  339. index: d.getRuleIndex(a, o, n)
  340. }
  341. }];
  342. return l.pushUndoRedo({
  343. undoMutations: p,
  344. redoMutations: u,
  345. unitID: e.unitId
  346. }), i.executeCommand(v.id, e), !0;
  347. }
  348. }, Ee = {
  349. type: E.COMMAND,
  350. id: "data-validation.command.updateDataValidationSetting",
  351. handler(t, e) {
  352. if (t.get(N).warn("[Deprecated]: `UpdateDataValidationOptionsCommand` is deprecated, please use `UpdateSheetDataValidationOptionsCommand` in `@univerjs/sheets-data-validation` instead!"), !e)
  353. return !1;
  354. const a = t.get(T), o = t.get(A), n = t.get(m), { unitId: i, subUnitId: l, ruleId: d, options: u } = e, p = n.getRuleById(i, l, d);
  355. if (!p)
  356. return !1;
  357. const _ = {
  358. unitId: i,
  359. subUnitId: l,
  360. ruleId: d,
  361. payload: {
  362. type: h.OPTIONS,
  363. payload: u
  364. }
  365. }, g = [{
  366. id: f.id,
  367. params: _
  368. }], M = {
  369. unitId: i,
  370. subUnitId: l,
  371. ruleId: d,
  372. payload: {
  373. type: h.OPTIONS,
  374. payload: H(p)
  375. }
  376. }, R = [{
  377. id: f.id,
  378. params: M
  379. }];
  380. return o.pushUndoRedo({
  381. unitID: i,
  382. redoMutations: g,
  383. undoMutations: R
  384. }), a.executeCommand(f.id, _), !0;
  385. }
  386. }, ge = {
  387. type: E.COMMAND,
  388. id: "data-validation.command.updateDataValidationOptions",
  389. handler(t, e) {
  390. if (t.get(N).error("[Deprecated]: `UpdateDataValidationSettingCommand` is deprecated, please use `UpdateSheetDataValidationSettingCommand` in `@univerjs/sheets-data-validation` instead!"), !e)
  391. return !1;
  392. const a = t.get(T), o = t.get(A), n = t.get(m), i = t.get(j), { unitId: l, subUnitId: d, ruleId: u, setting: p } = e, _ = i.getValidatorItem(p.type);
  393. if (!_)
  394. return !1;
  395. const g = n.getRuleById(l, d, u);
  396. if (!g)
  397. return !1;
  398. const M = { ...g, ...p };
  399. if (!_.validatorFormula(M, l, d).success)
  400. return !1;
  401. const R = {
  402. unitId: l,
  403. subUnitId: d,
  404. ruleId: u,
  405. payload: {
  406. type: h.SETTING,
  407. payload: {
  408. ...p,
  409. ..._.normalizeFormula(M, l, d)
  410. }
  411. }
  412. }, Q = [{
  413. id: f.id,
  414. params: R
  415. }], F = {
  416. unitId: l,
  417. subUnitId: d,
  418. ruleId: u,
  419. payload: {
  420. type: h.SETTING,
  421. payload: q(g)
  422. }
  423. }, W = [{
  424. id: f.id,
  425. params: F
  426. }];
  427. return o.pushUndoRedo({
  428. unitID: l,
  429. redoMutations: Q,
  430. undoMutations: W
  431. }), a.executeCommand(f.id, R), !0;
  432. }
  433. }, fe = {
  434. type: E.COMMAND,
  435. id: "data-validation.command.removeAll",
  436. handler(t, e) {
  437. if (t.get(N).error("[Deprecated]: `RemoveAllDataValidationCommand` is deprecated, please use `RemoveSheetAllDataValidationCommand` in `@univerjs/sheets-data-validation` instead!"), !e)
  438. return !1;
  439. const { unitId: a, subUnitId: o } = e, n = t.get(T), i = t.get(m), l = t.get(A), d = [...i.getRules(a, o)], u = {
  440. unitId: a,
  441. subUnitId: o,
  442. ruleId: d.map((g) => g.uid)
  443. }, p = [{
  444. id: v.id,
  445. params: u
  446. }], _ = [{
  447. id: S.id,
  448. params: {
  449. unitId: a,
  450. subUnitId: o,
  451. rule: d
  452. }
  453. }];
  454. return l.pushUndoRedo({
  455. redoMutations: p,
  456. undoMutations: _,
  457. unitID: a
  458. }), n.executeCommand(v.id, u), !0;
  459. }
  460. }, ve = "data-validation.config", U = {};
  461. var Ne = Object.defineProperty, Te = Object.getOwnPropertyDescriptor, Se = (t, e, r, a) => {
  462. for (var o = a > 1 ? void 0 : a ? Te(e, r) : e, n = t.length - 1, i; n >= 0; n--)
  463. (i = t[n]) && (o = (a ? i(e, r, o) : i(o)) || o);
  464. return a && o && Ne(e, r, o), o;
  465. }, L = (t, e) => (r, a) => e(r, a, t);
  466. const Ae = "UNIVER_DATA_VALIDATION_PLUGIN";
  467. var V;
  468. let D = (V = class extends Z {
  469. constructor(t = U, e, r, a) {
  470. super(), this._config = t, this._injector = e, this._commandService = r, this._configService = a;
  471. const { ...o } = k(
  472. {},
  473. U,
  474. this._config
  475. );
  476. this._configService.setConfig(ve, o);
  477. }
  478. onStarting() {
  479. [
  480. [m],
  481. [j],
  482. [I]
  483. ].forEach((t) => this._injector.add(t)), [
  484. // command
  485. he,
  486. fe,
  487. Ee,
  488. ge,
  489. _e,
  490. // mutation
  491. S,
  492. f,
  493. v
  494. ].forEach((t) => {
  495. this._commandService.registerCommand(t);
  496. });
  497. }
  498. onReady() {
  499. this._injector.get(I);
  500. }
  501. }, c(V, "pluginName", Ae), c(V, "type", $.UNIVER_SHEET), V);
  502. D = Se([
  503. L(1, O(G)),
  504. L(2, T),
  505. L(3, ee)
  506. ], D);
  507. s.BETWEEN + "", s.EQUAL + "", s.GREATER_THAN + "", s.GREATER_THAN_OR_EQUAL + "", s.LESS_THAN + "", s.LESS_THAN_OR_EQUAL + "", s.NOT_BETWEEN + "", s.NOT_EQUAL + "";
  508. const Me = {
  509. [s.BETWEEN]: "dataValidation.ruleName.between",
  510. [s.EQUAL]: "dataValidation.ruleName.equal",
  511. [s.GREATER_THAN]: "dataValidation.ruleName.greaterThan",
  512. [s.GREATER_THAN_OR_EQUAL]: "dataValidation.ruleName.greaterThanOrEqual",
  513. [s.LESS_THAN]: "dataValidation.ruleName.lessThan",
  514. [s.LESS_THAN_OR_EQUAL]: "dataValidation.ruleName.lessThanOrEqual",
  515. [s.NOT_BETWEEN]: "dataValidation.ruleName.notBetween",
  516. [s.NOT_EQUAL]: "dataValidation.ruleName.notEqual"
  517. }, Re = {
  518. [s.BETWEEN]: "dataValidation.errorMsg.between",
  519. [s.EQUAL]: "dataValidation.errorMsg.equal",
  520. [s.GREATER_THAN]: "dataValidation.errorMsg.greaterThan",
  521. [s.GREATER_THAN_OR_EQUAL]: "dataValidation.errorMsg.greaterThanOrEqual",
  522. [s.LESS_THAN]: "dataValidation.errorMsg.lessThan",
  523. [s.LESS_THAN_OR_EQUAL]: "dataValidation.errorMsg.lessThanOrEqual",
  524. [s.NOT_BETWEEN]: "dataValidation.errorMsg.notBetween",
  525. [s.NOT_EQUAL]: "dataValidation.errorMsg.notEqual"
  526. }, we = {
  527. [s.BETWEEN]: "dataValidation.textLength.errorMsg.between",
  528. [s.EQUAL]: "dataValidation.textLength.errorMsg.equal",
  529. [s.GREATER_THAN]: "dataValidation.textLength.errorMsg.greaterThan",
  530. [s.GREATER_THAN_OR_EQUAL]: "dataValidation.textLength.errorMsg.greaterThanOrEqual",
  531. [s.LESS_THAN]: "dataValidation.textLength.errorMsg.lessThan",
  532. [s.LESS_THAN_OR_EQUAL]: "dataValidation.textLength.errorMsg.lessThanOrEqual",
  533. [s.NOT_BETWEEN]: "dataValidation.textLength.errorMsg.notBetween",
  534. [s.NOT_EQUAL]: "dataValidation.textLength.errorMsg.notEqual"
  535. }, be = [
  536. s.BETWEEN,
  537. s.NOT_BETWEEN
  538. ];
  539. var Ve = Object.defineProperty, Oe = Object.getOwnPropertyDescriptor, Ie = (t, e, r, a) => {
  540. for (var o = a > 1 ? void 0 : a ? Oe(e, r) : e, n = t.length - 1, i; n >= 0; n--)
  541. (i = t[n]) && (o = (a ? i(e, r, o) : i(o)) || o);
  542. return a && o && Ve(e, r, o), o;
  543. }, w = (t, e) => (r, a) => e(r, a, t);
  544. const b = "{FORMULA1}", C = "{FORMULA2}", ye = {
  545. [s.BETWEEN]: "dataValidation.operators.between",
  546. [s.EQUAL]: "dataValidation.operators.equal",
  547. [s.GREATER_THAN]: "dataValidation.operators.greaterThan",
  548. [s.GREATER_THAN_OR_EQUAL]: "dataValidation.operators.greaterThanOrEqual",
  549. [s.LESS_THAN]: "dataValidation.operators.lessThan",
  550. [s.LESS_THAN_OR_EQUAL]: "dataValidation.operators.lessThanOrEqual",
  551. [s.NOT_BETWEEN]: "dataValidation.operators.notBetween",
  552. [s.NOT_EQUAL]: "dataValidation.operators.notEqual"
  553. };
  554. let P = class {
  555. // #endregion
  556. constructor(t, e) {
  557. c(this, "offsetFormulaByRange", !0);
  558. // #region UI related
  559. c(this, "formulaInput");
  560. c(this, "canvasRender", null);
  561. c(this, "dropdown");
  562. c(this, "optionsInput");
  563. c(this, "skipDefaultFontRender");
  564. this.localeService = t, this.injector = e;
  565. }
  566. get operatorNames() {
  567. return this.operators.map((t) => this.localeService.t(ye[t]));
  568. }
  569. get titleStr() {
  570. return this.localeService.t(this.title);
  571. }
  572. generateRuleName(t) {
  573. var r, a;
  574. if (!t.operator)
  575. return this.titleStr;
  576. const e = this.localeService.t(Me[t.operator]).replace(b, (r = t.formula1) != null ? r : "").replace(C, (a = t.formula2) != null ? a : "");
  577. return `${this.titleStr} ${e}`;
  578. }
  579. generateRuleErrorMessage(t, e) {
  580. var a, o;
  581. return t.operator ? `${this.localeService.t(Re[t.operator]).replace(b, (a = t.formula1) != null ? a : "").replace(C, (o = t.formula2) != null ? o : "")}` : this.titleStr;
  582. }
  583. getExtraStyle(t, e, r, a, o) {
  584. }
  585. getRuleFinalError(t, e) {
  586. return t.showErrorMessage && t.error ? t.error : this.generateRuleErrorMessage(t, e);
  587. }
  588. isEmptyCellValue(t) {
  589. return t === "" || t === void 0 || t === null;
  590. }
  591. normalizeFormula(t, e, r) {
  592. return {
  593. formula1: t.formula1,
  594. formula2: t.formula2
  595. };
  596. }
  597. async isValidType(t, e, r) {
  598. return !0;
  599. }
  600. transform(t, e, r) {
  601. return t;
  602. }
  603. async validatorIsEqual(t, e, r) {
  604. const { formula1: a } = e, { value: o } = t;
  605. return Number.isNaN(a) ? !0 : o === a;
  606. }
  607. async validatorIsNotEqual(t, e, r) {
  608. const { formula1: a } = e;
  609. return Number.isNaN(a) ? !0 : t.value !== a;
  610. }
  611. async validatorIsBetween(t, e, r) {
  612. const { formula1: a, formula2: o } = e;
  613. if (Number.isNaN(a) || Number.isNaN(o))
  614. return !0;
  615. const n = Math.min(a, o), i = Math.max(a, o);
  616. return t.value >= n && t.value <= i;
  617. }
  618. async validatorIsNotBetween(t, e, r) {
  619. const { formula1: a, formula2: o } = e;
  620. if (Number.isNaN(a) || Number.isNaN(o))
  621. return !0;
  622. const n = Math.min(a, o), i = Math.max(a, o);
  623. return t.value < n || t.value > i;
  624. }
  625. async validatorIsGreaterThan(t, e, r) {
  626. const { formula1: a } = e;
  627. return Number.isNaN(a) ? !0 : t.value > a;
  628. }
  629. async validatorIsGreaterThanOrEqual(t, e, r) {
  630. const { formula1: a } = e;
  631. return Number.isNaN(a) ? !0 : t.value >= a;
  632. }
  633. async validatorIsLessThan(t, e, r) {
  634. const { formula1: a } = e;
  635. return Number.isNaN(a) ? !0 : t.value < a;
  636. }
  637. async validatorIsLessThanOrEqual(t, e, r) {
  638. const { formula1: a } = e;
  639. return Number.isNaN(a) ? !0 : t.value <= a;
  640. }
  641. async validator(t, e) {
  642. const { value: r, unitId: a, subUnitId: o } = t, n = this.isEmptyCellValue(r), { allowBlank: i = !0, operator: l } = e;
  643. if (n)
  644. return i;
  645. const d = await this.parseFormula(e, a, o, t.row, t.column);
  646. if (!d.isFormulaValid || !await this.isValidType(t, d, e))
  647. return !1;
  648. if (!x.isDefine(l))
  649. return !0;
  650. const u = this.transform(t, d, e);
  651. switch (l) {
  652. case s.BETWEEN:
  653. return this.validatorIsBetween(u, d, e);
  654. case s.EQUAL:
  655. return this.validatorIsEqual(u, d, e);
  656. case s.GREATER_THAN:
  657. return this.validatorIsGreaterThan(u, d, e);
  658. case s.GREATER_THAN_OR_EQUAL:
  659. return this.validatorIsGreaterThanOrEqual(u, d, e);
  660. case s.LESS_THAN:
  661. return this.validatorIsLessThan(u, d, e);
  662. case s.LESS_THAN_OR_EQUAL:
  663. return this.validatorIsLessThanOrEqual(u, d, e);
  664. case s.NOT_BETWEEN:
  665. return this.validatorIsNotBetween(u, d, e);
  666. case s.NOT_EQUAL:
  667. return this.validatorIsNotEqual(u, d, e);
  668. default:
  669. throw new Error("Unknown operator.");
  670. }
  671. }
  672. };
  673. P = Ie([
  674. w(0, O(te)),
  675. w(1, O(G))
  676. ], P);
  677. export {
  678. S as AddDataValidationMutation,
  679. P as BaseDataValidator,
  680. m as DataValidationModel,
  681. I as DataValidationResourceController,
  682. me as DataValidatorRegistryScope,
  683. j as DataValidatorRegistryService,
  684. v as RemoveDataValidationMutation,
  685. be as TWO_FORMULA_OPERATOR_COUNT,
  686. we as TextLengthErrorTitleMap,
  687. D as UniverDataValidationPlugin,
  688. f as UpdateDataValidationMutation,
  689. h as UpdateRuleType,
  690. H as getRuleOptions,
  691. q as getRuleSetting
  692. };