@univerjs/sheets-conditional-formatting 0.4.2 → 0.5.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/es/index.js CHANGED
@@ -1,16 +1,15 @@
1
- var __defProp = Object.defineProperty;
2
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: !0, configurable: !0, writable: !0, value }) : obj[key] = value;
3
- var __name = (target, value) => __defProp(target, "name", { value, configurable: !0 });
4
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key != "symbol" ? key + "" : key, value);
5
- import { Tools, Inject, Injector, ObjectMatrix, Range, CommandType, ICommandService, Disposable, toDisposable, RefAlias, CellValueType, BooleanNumber, ColorKit, Rectangle, createInterceptorKey, IUniverInstanceService, IResourceManagerService, InterceptorManager, UniverInstanceType, Plugin, IConfigService } from "@univerjs/core";
6
- import { Subject, Observable } from "rxjs";
7
- import { bufferTime, filter, map } from "rxjs/operators";
8
- import { SheetInterceptorService, RemoveSheetCommand, ReorderRangeMutation, MoveRangeMutation, MoveColsMutation, MoveRowsMutation, InsertRowMutation, RemoveRowMutation, RemoveColMutation, InsertColMutation, SetRangeValuesMutation } from "@univerjs/sheets";
9
- import { isObject, SpreadsheetExtensionRegistry, SheetExtension, FIX_ONE_PIXEL_BLUR_OFFSET } from "@univerjs/engine-render";
10
- import { IActiveDirtyManagerService, SetFormulaCalculationResultMutation, SetOtherFormulaMutation, RemoveOtherFormulaMutation, BooleanValue, LexerTreeBuilder, sequenceNodeType, deserializeRangeWithSheet, serializeRange, generateStringWithSequence, ERROR_TYPE_SET } from "@univerjs/engine-formula";
11
- const SHEET_CONDITIONAL_FORMATTING_PLUGIN = "SHEET_CONDITIONAL_FORMATTING_PLUGIN";
12
- var CFTextOperator = /* @__PURE__ */ ((CFTextOperator2) => (CFTextOperator2.beginsWith = "beginsWith", CFTextOperator2.endsWith = "endsWith", CFTextOperator2.containsText = "containsText", CFTextOperator2.notContainsText = "notContainsText", CFTextOperator2.equal = "equal", CFTextOperator2.notEqual = "notEqual", CFTextOperator2.containsBlanks = "containsBlanks", CFTextOperator2.notContainsBlanks = "notContainsBlanks", CFTextOperator2.containsErrors = "containsErrors", CFTextOperator2.notContainsErrors = "notContainsErrors", CFTextOperator2))(CFTextOperator || {}), CFTimePeriodOperator = /* @__PURE__ */ ((CFTimePeriodOperator2) => (CFTimePeriodOperator2.today = "today", CFTimePeriodOperator2.yesterday = "yesterday", CFTimePeriodOperator2.tomorrow = "tomorrow", CFTimePeriodOperator2.last7Days = "last7Days", CFTimePeriodOperator2.thisMonth = "thisMonth", CFTimePeriodOperator2.lastMonth = "lastMonth", CFTimePeriodOperator2.nextMonth = "nextMonth", CFTimePeriodOperator2.thisWeek = "thisWeek", CFTimePeriodOperator2.lastWeek = "lastWeek", CFTimePeriodOperator2.nextWeek = "nextWeek", CFTimePeriodOperator2))(CFTimePeriodOperator || {}), CFNumberOperator = /* @__PURE__ */ ((CFNumberOperator2) => (CFNumberOperator2.greaterThan = "greaterThan", CFNumberOperator2.greaterThanOrEqual = "greaterThanOrEqual", CFNumberOperator2.lessThan = "lessThan", CFNumberOperator2.lessThanOrEqual = "lessThanOrEqual", CFNumberOperator2.notBetween = "notBetween", CFNumberOperator2.between = "between", CFNumberOperator2.equal = "equal", CFNumberOperator2.notEqual = "notEqual", CFNumberOperator2))(CFNumberOperator || {}), CFRuleType = /* @__PURE__ */ ((CFRuleType2) => (CFRuleType2.highlightCell = "highlightCell", CFRuleType2.dataBar = "dataBar", CFRuleType2.colorScale = "colorScale", CFRuleType2.iconSet = "iconSet", CFRuleType2))(CFRuleType || {}), CFSubRuleType = /* @__PURE__ */ ((CFSubRuleType2) => (CFSubRuleType2.uniqueValues = "uniqueValues", CFSubRuleType2.duplicateValues = "duplicateValues", CFSubRuleType2.rank = "rank", CFSubRuleType2.text = "text", CFSubRuleType2.timePeriod = "timePeriod", CFSubRuleType2.number = "number", CFSubRuleType2.average = "average", CFSubRuleType2.formula = "formula", CFSubRuleType2))(CFSubRuleType || {}), CFValueType = /* @__PURE__ */ ((CFValueType2) => (CFValueType2.num = "num", CFValueType2.min = "min", CFValueType2.max = "max", CFValueType2.percent = "percent", CFValueType2.percentile = "percentile", CFValueType2.formula = "formula", CFValueType2))(CFValueType || {});
13
- const DEFAULT_BG_COLOR = "#fff", DEFAULT_FONT_COLOR = "#000000", createDefaultRule = /* @__PURE__ */ __name(() => ({
1
+ var B2 = Object.defineProperty;
2
+ var k2 = (n, i, t) => i in n ? B2(n, i, { enumerable: !0, configurable: !0, writable: !0, value: t }) : n[i] = t;
3
+ var E = (n, i, t) => k2(n, typeof i != "symbol" ? i + "" : i, t);
4
+ import { Tools as Y, Inject as M, Injector as o2, ObjectMatrix as I, Range as R, CommandType as Q, ICommandService as C2, Disposable as x2, toDisposable as V2, RefAlias as U2, CellValueType as B, BooleanNumber as _2, dayjs as x, ColorKit as M2, createInterceptorKey as N2, IUniverInstanceService as O2, IResourceManagerService as T2, InterceptorManager as P2, UniverInstanceType as l2, Rectangle as H, Plugin as $2, IConfigService as W2 } from "@univerjs/core";
5
+ import { Subject as s2, Observable as q2 } from "rxjs";
6
+ import { bufferTime as y2, filter as D2, map as Z2 } from "rxjs/operators";
7
+ import { SheetInterceptorService as j2, RemoveSheetCommand as G2, ReorderRangeMutation as H2, MoveRangeMutation as X2, MoveColsMutation as Y2, MoveRowsMutation as K2, InsertRowMutation as J2, RemoveRowMutation as z2, RemoveColMutation as Q2, InsertColMutation as e0, SetRangeValuesMutation as t0 } from "@univerjs/sheets";
8
+ import { isObject as i0, SpreadsheetExtensionRegistry as R2, SheetExtension as I2, FIX_ONE_PIXEL_BLUR_OFFSET as s0 } from "@univerjs/engine-render";
9
+ import { IActiveDirtyManagerService as n0, SetFormulaCalculationResultMutation as r0, SetOtherFormulaMutation as a0, RemoveOtherFormulaMutation as o0, BooleanValue as w2, ERROR_TYPE_SET as E2 } from "@univerjs/engine-formula";
10
+ const L2 = "SHEET_CONDITIONAL_FORMATTING_PLUGIN";
11
+ var b = /* @__PURE__ */ ((n) => (n.beginsWith = "beginsWith", n.endsWith = "endsWith", n.containsText = "containsText", n.notContainsText = "notContainsText", n.equal = "equal", n.notEqual = "notEqual", n.containsBlanks = "containsBlanks", n.notContainsBlanks = "notContainsBlanks", n.containsErrors = "containsErrors", n.notContainsErrors = "notContainsErrors", n))(b || {}), S = /* @__PURE__ */ ((n) => (n.today = "today", n.yesterday = "yesterday", n.tomorrow = "tomorrow", n.last7Days = "last7Days", n.thisMonth = "thisMonth", n.lastMonth = "lastMonth", n.nextMonth = "nextMonth", n.thisWeek = "thisWeek", n.lastWeek = "lastWeek", n.nextWeek = "nextWeek", n))(S || {}), p = /* @__PURE__ */ ((n) => (n.greaterThan = "greaterThan", n.greaterThanOrEqual = "greaterThanOrEqual", n.lessThan = "lessThan", n.lessThanOrEqual = "lessThanOrEqual", n.notBetween = "notBetween", n.between = "between", n.equal = "equal", n.notEqual = "notEqual", n))(p || {}), L = /* @__PURE__ */ ((n) => (n.highlightCell = "highlightCell", n.dataBar = "dataBar", n.colorScale = "colorScale", n.iconSet = "iconSet", n))(L || {}), _ = /* @__PURE__ */ ((n) => (n.uniqueValues = "uniqueValues", n.duplicateValues = "duplicateValues", n.rank = "rank", n.text = "text", n.timePeriod = "timePeriod", n.number = "number", n.average = "average", n.formula = "formula", n))(_ || {}), U = /* @__PURE__ */ ((n) => (n.num = "num", n.min = "min", n.max = "max", n.percent = "percent", n.percentile = "percentile", n.formula = "formula", n))(U || {});
12
+ const C1 = "#fff", f1 = "#000000", m1 = () => ({
14
13
  cfId: void 0,
15
14
  ranges: [],
16
15
  stopIfTrue: !1,
@@ -20,8 +19,8 @@ const DEFAULT_BG_COLOR = "#fff", DEFAULT_FONT_COLOR = "#000000", createDefaultRu
20
19
  operator: "containsText"
21
20
  /* containsText */
22
21
  }
23
- }), "createDefaultRule"), createDefaultValue = /* @__PURE__ */ __name((subType, operator) => {
24
- switch (subType) {
22
+ }), F1 = (n, i) => {
23
+ switch (n) {
25
24
  case "text": {
26
25
  if ([
27
26
  "beginsWith",
@@ -31,7 +30,7 @@ const DEFAULT_BG_COLOR = "#fff", DEFAULT_FONT_COLOR = "#000000", createDefaultRu
31
30
  "notContainsText",
32
31
  "notEqual"
33
32
  /* notEqual */
34
- ].includes(operator))
33
+ ].includes(i))
35
34
  return "";
36
35
  break;
37
36
  }
@@ -40,11 +39,11 @@ const DEFAULT_BG_COLOR = "#fff", DEFAULT_FONT_COLOR = "#000000", createDefaultRu
40
39
  "between",
41
40
  "notBetween"
42
41
  /* notBetween */
43
- ].includes(operator) ? [10, 100] : 10;
42
+ ].includes(i) ? [10, 100] : 10;
44
43
  }
45
44
  return "";
46
- }, "createDefaultValue"), createDefaultValueByValueType = /* @__PURE__ */ __name((type, defaultValue) => {
47
- switch (type) {
45
+ }, w1 = (n, i) => {
46
+ switch (n) {
48
47
  case "formula":
49
48
  return "=";
50
49
  case "max":
@@ -53,294 +52,292 @@ const DEFAULT_BG_COLOR = "#fff", DEFAULT_FONT_COLOR = "#000000", createDefaultRu
53
52
  case "percent":
54
53
  case "percentile":
55
54
  case "num":
56
- return defaultValue !== void 0 ? defaultValue : 10;
55
+ return i !== void 0 ? i : 10;
57
56
  }
58
57
  return "";
59
- }, "createDefaultValueByValueType"), createCfId = /* @__PURE__ */ __name(() => `${Tools.generateRandomId(8)}`, "createCfId"), findIndexByAnchor = /* @__PURE__ */ __name((anchor, ruleList, get) => {
60
- if (!ruleList)
58
+ }, l0 = () => `${Y.generateRandomId(8)}`, j = (n, i, t) => {
59
+ if (!i)
61
60
  return null;
62
- const anchorIndex = ruleList.findIndex((rule) => get(rule) === anchor.id);
63
- if (anchorIndex < 0)
61
+ const e = i.findIndex((s) => t(s) === n.id);
62
+ if (e < 0)
64
63
  return null;
65
- switch (anchor.type) {
64
+ switch (n.type) {
66
65
  case "after":
67
- return anchorIndex + 1;
66
+ return e + 1;
68
67
  case "before":
69
- return anchorIndex - 1;
68
+ return e - 1;
70
69
  case "self":
71
- return anchorIndex;
70
+ return e;
72
71
  }
73
- }, "findIndexByAnchor"), moveByAnchor = /* @__PURE__ */ __name((start, end, ruleList, get) => {
74
- if (!ruleList)
72
+ }, c0 = (n, i, t, e) => {
73
+ if (!t)
75
74
  return null;
76
- const startIndex = findIndexByAnchor(start, ruleList, get);
77
- let endIndex = findIndexByAnchor(end, ruleList, get);
78
- if (startIndex === null || endIndex === null || startIndex === endIndex)
75
+ const s = j(n, t, e);
76
+ let r = j(i, t, e);
77
+ if (s === null || r === null || s === r)
79
78
  return;
80
- const rule = ruleList.splice(startIndex, 1)[0];
81
- switch (startIndex < endIndex && (endIndex = findIndexByAnchor(end, ruleList, get)), end.type) {
79
+ const a = t.splice(s, 1)[0];
80
+ switch (s < r && (r = j(i, t, e)), i.type) {
82
81
  case "before": {
83
- ruleList.splice(endIndex + 1, 0, rule);
82
+ t.splice(r + 1, 0, a);
84
83
  break;
85
84
  }
86
85
  case "self":
87
86
  case "after": {
88
- ruleList.splice(endIndex, 0, rule);
87
+ t.splice(r, 0, a);
89
88
  break;
90
89
  }
91
90
  }
92
- }, "moveByAnchor"), transformSupportSymmetryAnchor = /* @__PURE__ */ __name((start, end, ruleList, get) => {
93
- if (start.type === "after" && ["after", "before"].includes(end.type))
94
- return [start, end];
95
- const _start = { ...start }, _end = { ...end };
96
- if (_start.type !== "after") {
97
- const index = findIndexByAnchor(_start, ruleList, get);
98
- if (index === null)
91
+ }, u0 = (n, i, t, e) => {
92
+ if (n.type === "after" && ["after", "before"].includes(i.type))
93
+ return [n, i];
94
+ const s = { ...n }, r = { ...i };
95
+ if (s.type !== "after") {
96
+ const a = j(s, t, e);
97
+ if (a === null)
99
98
  return null;
100
- if (index - 1 < 0) {
101
- const nextItem = ruleList[index + 1];
102
- if (nextItem)
103
- _start.id = get(nextItem), _start.type = "before";
99
+ if (a - 1 < 0) {
100
+ const o = t[a + 1];
101
+ if (o)
102
+ s.id = e(o), s.type = "before";
104
103
  else
105
104
  return null;
106
105
  } else {
107
- const id = get(ruleList[index - 1]);
108
- _start.id = id, _start.type = "after";
106
+ const o = e(t[a - 1]);
107
+ s.id = o, s.type = "after";
109
108
  }
110
109
  }
111
- if (!["after", "before"].includes(_end.type)) {
112
- const index = findIndexByAnchor(_end, ruleList, get);
113
- if (index === null)
110
+ if (!["after", "before"].includes(r.type)) {
111
+ const a = j(r, t, e);
112
+ if (a === null)
114
113
  return null;
115
- if (index === 0)
116
- _end.type = "before";
117
- else if (index - 1 >= 0) {
118
- const id = get(ruleList[index - 1]);
119
- _end.id = id, _end.type = "after";
120
- } else if (index + 1 <= ruleList.length - 1) {
121
- const id = get(ruleList[index + 1]);
122
- _end.id = id, _end.type = "before";
114
+ if (a === 0)
115
+ r.type = "before";
116
+ else if (a - 1 >= 0) {
117
+ const o = e(t[a - 1]);
118
+ r.id = o, r.type = "after";
119
+ } else if (a + 1 <= t.length - 1) {
120
+ const o = e(t[a + 1]);
121
+ r.id = o, r.type = "before";
123
122
  } else
124
123
  return null;
125
124
  }
126
- return _start.id === _end.id && _start.type === _end.type ? null : [_start, _end];
127
- }, "transformSupportSymmetryAnchor"), anchorUndoFactory = /* @__PURE__ */ __name((start, end) => {
128
- if (["after", "before"].includes(end.type)) {
129
- if (start.type === "after")
130
- return [end, start];
131
- if (start.type === "before")
132
- return [end, { ...start, type: "self" }];
125
+ return s.id === r.id && s.type === r.type ? null : [s, r];
126
+ }, h0 = (n, i) => {
127
+ if (["after", "before"].includes(i.type)) {
128
+ if (n.type === "after")
129
+ return [i, n];
130
+ if (n.type === "before")
131
+ return [i, { ...n, type: "self" }];
133
132
  }
134
133
  return null;
135
- }, "anchorUndoFactory"), isAnchorEqual = /* @__PURE__ */ __name((anchor1, anchor2) => anchor1.id === anchor2.id && anchor1.type === anchor2.type, "isAnchorEqual");
136
- var __defProp$3 = Object.defineProperty, __getOwnPropDesc$3 = Object.getOwnPropertyDescriptor, __decorateClass$3 = /* @__PURE__ */ __name((decorators, target, key, kind) => {
137
- for (var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$3(target, key) : target, i = decorators.length - 1, decorator; i >= 0; i--)
138
- (decorator = decorators[i]) && (result = (kind ? decorator(target, key, result) : decorator(result)) || result);
139
- return kind && result && __defProp$3(target, key, result), result;
140
- }, "__decorateClass$3"), __decorateParam$3 = /* @__PURE__ */ __name((index, decorator) => (target, key) => decorator(target, key, index), "__decorateParam$3"), _a;
141
- let ConditionalFormattingRuleModel = (_a = class {
142
- constructor(_injector) {
134
+ }, E1 = (n, i) => n.id === i.id && n.type === i.type;
135
+ var d0 = Object.defineProperty, g0 = Object.getOwnPropertyDescriptor, D0 = (n, i, t, e) => {
136
+ for (var s = e > 1 ? void 0 : e ? g0(i, t) : i, r = n.length - 1, a; r >= 0; r--)
137
+ (a = n[r]) && (s = (e ? a(i, t, s) : a(s)) || s);
138
+ return e && s && d0(i, t, s), s;
139
+ }, C0 = (n, i) => (t, e) => i(t, e, n);
140
+ let V = class {
141
+ constructor(n) {
143
142
  // Map<unitID ,<sheetId ,IConditionFormattingRule[]>>
144
- __publicField(this, "_model", /* @__PURE__ */ new Map());
145
- __publicField(this, "_ruleChange$", new Subject());
146
- __publicField(this, "$ruleChange", this._ruleChange$.asObservable().pipe(
147
- bufferTime(16),
148
- filter((list) => !!list.length),
143
+ E(this, "_model", /* @__PURE__ */ new Map());
144
+ E(this, "_ruleChange$", new s2());
145
+ E(this, "$ruleChange", this._ruleChange$.asObservable().pipe(
146
+ y2(16),
147
+ D2((n) => !!n.length),
149
148
  // Operations for aggregated conditional formatting
150
149
  // Adding and then deleting the same conditional format for multiple times will not result in any changes being propagated externally
151
150
  // When multiple settings are applied to the same conditional format, only the last setting will be propagated externally.
152
- (source) => new Observable((observer) => {
153
- source.subscribe({
154
- next: /* @__PURE__ */ __name((ruleList) => {
155
- const createKey = /* @__PURE__ */ __name((item) => `${item.unitId}_${item.subUnitId}_${item.rule.cfId}`, "createKey"), handleCreateAndDelete = /* @__PURE__ */ __name((list) => {
156
- const createIndex = list.findIndex((rule) => rule.type === "add"), deleteIndex = list.findIndex((rule) => rule.type === "delete");
157
- createIndex !== -1 && deleteIndex !== -1 && deleteIndex > createIndex && list.splice(createIndex, deleteIndex - createIndex + 1);
158
- }, "handleCreateAndDelete"), result = ruleList.reduce((a, b, index) => {
159
- const key = createKey(b);
160
- return a[key] || (a[key] = []), a[key].push({ ...b, _index: index }), a;
151
+ (n) => new q2((i) => {
152
+ n.subscribe({
153
+ next: (t) => {
154
+ const e = (o) => `${o.unitId}_${o.subUnitId}_${o.rule.cfId}`, s = (o) => {
155
+ const l = o.findIndex((h) => h.type === "add"), c = o.findIndex((h) => h.type === "delete");
156
+ l !== -1 && c !== -1 && c > l && o.splice(l, c - l + 1);
157
+ }, r = t.reduce((o, l, c) => {
158
+ const h = e(l);
159
+ return o[h] || (o[h] = []), o[h].push({ ...l, _index: c }), o;
161
160
  }, {});
162
- for (const key in result) {
163
- const list = result[key];
164
- list.length >= 2 && handleCreateAndDelete(list);
161
+ for (const o in r) {
162
+ const l = r[o];
163
+ l.length >= 2 && s(l);
165
164
  }
166
- Object.keys(result).reduce((a, key) => {
167
- const list = result[key];
168
- return a.push(...list), a;
169
- }, []).sort((a, b) => a._index - b._index).map((item) => item).forEach((item) => {
170
- observer.next(item);
165
+ Object.keys(r).reduce((o, l) => {
166
+ const c = r[l];
167
+ return o.push(...c), o;
168
+ }, []).sort((o, l) => o._index - l._index).map((o) => o).forEach((o) => {
169
+ i.next(o);
171
170
  });
172
- }, "next"),
173
- error: /* @__PURE__ */ __name((err) => observer.error(err), "error"),
174
- complete: /* @__PURE__ */ __name(() => observer.complete(), "complete")
171
+ },
172
+ error: (t) => i.error(t),
173
+ complete: () => i.complete()
175
174
  });
176
175
  })
177
176
  ));
178
- this._injector = _injector;
179
- }
180
- _ensureList(unitId, subUnitId) {
181
- let list = this.getSubunitRules(unitId, subUnitId);
182
- if (!list) {
183
- list = [];
184
- let unitMap = this._model.get(unitId);
185
- unitMap || (unitMap = /* @__PURE__ */ new Map(), this._model.set(unitId, unitMap)), unitMap.set(subUnitId, list);
177
+ this._injector = n;
178
+ }
179
+ _ensureList(n, i) {
180
+ let t = this.getSubunitRules(n, i);
181
+ if (!t) {
182
+ t = [];
183
+ let e = this._model.get(n);
184
+ e || (e = /* @__PURE__ */ new Map(), this._model.set(n, e)), e.set(i, t);
186
185
  }
187
- return list;
186
+ return t;
188
187
  }
189
- getRule(unitId, subUnitId, cfId) {
190
- const list = this.getSubunitRules(unitId, subUnitId);
191
- return list ? list.find((item) => item.cfId === cfId) : null;
188
+ getRule(n, i, t) {
189
+ const e = this.getSubunitRules(n, i);
190
+ return e ? e.find((s) => s.cfId === t) : null;
192
191
  }
193
- getUnitRules(unitId) {
194
- return this._model.get(unitId) || null;
192
+ getUnitRules(n) {
193
+ return this._model.get(n) || null;
195
194
  }
196
- getSubunitRules(unitId, subUnitId) {
197
- var _a5;
198
- return ((_a5 = this._model.get(unitId)) == null ? void 0 : _a5.get(subUnitId)) || null;
195
+ getSubunitRules(n, i) {
196
+ var e;
197
+ return ((e = this._model.get(n)) == null ? void 0 : e.get(i)) || null;
199
198
  }
200
- deleteRule(unitId, subUnitId, cfId) {
201
- const list = this.getSubunitRules(unitId, subUnitId);
202
- if (list) {
203
- const index = list.findIndex((e) => e.cfId === cfId), rule = list[index];
204
- rule && (list.splice(index, 1), this._ruleChange$.next({ rule, subUnitId, unitId, type: "delete" }));
199
+ deleteRule(n, i, t) {
200
+ const e = this.getSubunitRules(n, i);
201
+ if (e) {
202
+ const s = e.findIndex((a) => a.cfId === t), r = e[s];
203
+ r && (e.splice(s, 1), this._ruleChange$.next({ rule: r, subUnitId: i, unitId: n, type: "delete" }));
205
204
  }
206
205
  }
207
- setRule(unitId, subUnitId, rule, oldCfId) {
208
- const oldRule = this._ensureList(unitId, subUnitId).find((item) => item.cfId === oldCfId);
209
- if (oldRule) {
210
- const cloneRule = Tools.deepClone(oldRule);
211
- Object.assign(oldRule, rule), this._ruleChange$.next({ rule: oldRule, subUnitId, unitId, type: "set", oldRule: cloneRule });
206
+ setRule(n, i, t, e) {
207
+ const r = this._ensureList(n, i).find((a) => a.cfId === e);
208
+ if (r) {
209
+ const a = Y.deepClone(r);
210
+ Object.assign(r, t), this._ruleChange$.next({ rule: r, subUnitId: i, unitId: n, type: "set", oldRule: a });
212
211
  }
213
212
  }
214
- addRule(unitId, subUnitId, rule) {
215
- const list = this._ensureList(unitId, subUnitId);
216
- list.find((item2) => item2.cfId === rule.cfId) || list.unshift(rule), this._ruleChange$.next({ rule, subUnitId, unitId, type: "add" });
213
+ addRule(n, i, t) {
214
+ const e = this._ensureList(n, i);
215
+ e.find((r) => r.cfId === t.cfId) || e.unshift(t), this._ruleChange$.next({ rule: t, subUnitId: i, unitId: n, type: "add" });
217
216
  }
218
217
  /**
219
218
  * example [1,2,3,4,5,6],if you move behind 5 to 2, then cfId=5,targetId=2.
220
219
  * if targetId does not exist, it defaults to top
221
220
  */
222
- moveRulePriority(unitId, subUnitId, start, end) {
223
- const list = this._ensureList(unitId, subUnitId), curIndex = findIndexByAnchor(start, list, (rule2) => rule2.cfId), targetCfIndex = findIndexByAnchor(end, list, (rule2) => rule2.cfId);
224
- if (targetCfIndex === null || curIndex === null || targetCfIndex === curIndex)
221
+ moveRulePriority(n, i, t, e) {
222
+ const s = this._ensureList(n, i), r = j(t, s, (l) => l.cfId), a = j(e, s, (l) => l.cfId);
223
+ if (a === null || r === null || a === r)
225
224
  return;
226
- const rule = list[curIndex];
227
- rule && (moveByAnchor(start, end, list, (rule2) => rule2.cfId), this._ruleChange$.next({ rule, subUnitId, unitId, type: "sort" }));
225
+ const o = s[r];
226
+ o && (c0(t, e, s, (l) => l.cfId), this._ruleChange$.next({ rule: o, subUnitId: i, unitId: n, type: "sort" }));
228
227
  }
229
- createCfId(_unitId, _subUnitId) {
230
- return createCfId();
228
+ createCfId(n, i) {
229
+ return l0();
231
230
  }
232
- deleteUnitId(unitId) {
233
- this._model.delete(unitId);
231
+ deleteUnitId(n) {
232
+ this._model.delete(n);
234
233
  }
235
- }, __name(_a, "ConditionalFormattingRuleModel"), _a);
236
- ConditionalFormattingRuleModel = __decorateClass$3([
237
- __decorateParam$3(0, Inject(Injector))
238
- ], ConditionalFormattingRuleModel);
239
- const _ConditionalFormattingViewModel = class _ConditionalFormattingViewModel {
234
+ };
235
+ V = D0([
236
+ C0(0, M(o2))
237
+ ], V);
238
+ class c2 {
240
239
  constructor() {
241
240
  // Map<unitID ,<sheetId ,ObjectMatrix>>
242
- __publicField(this, "_model", /* @__PURE__ */ new Map());
243
- __publicField(this, "_markDirty$", new Subject());
244
- __publicField(this, "markDirty$", this._markDirty$.asObservable());
245
- }
246
- _ensureMatrix(unitId, subUnitId) {
247
- let _matrix = this.getMatrix(unitId, subUnitId);
248
- if (!_matrix) {
249
- _matrix = new ObjectMatrix();
250
- let unitModel = this._model.get(unitId);
251
- unitModel || (unitModel = /* @__PURE__ */ new Map(), this._model.set(unitId, unitModel)), unitModel.set(subUnitId, _matrix);
241
+ E(this, "_model", /* @__PURE__ */ new Map());
242
+ E(this, "_markDirty$", new s2());
243
+ E(this, "markDirty$", this._markDirty$.asObservable());
244
+ }
245
+ _ensureMatrix(i, t) {
246
+ let e = this.getMatrix(i, t);
247
+ if (!e) {
248
+ e = new I();
249
+ let s = this._model.get(i);
250
+ s || (s = /* @__PURE__ */ new Map(), this._model.set(i, s)), s.set(t, e);
252
251
  }
253
- return _matrix;
254
- }
255
- getMatrix(unitId, subUnitId) {
256
- var _a5;
257
- return (_a5 = this._model.get(unitId)) == null ? void 0 : _a5.get(subUnitId);
258
- }
259
- getCellCf(unitId, subUnitId, row, col, matrix) {
260
- const _matrix = matrix != null ? matrix : this.getMatrix(unitId, subUnitId);
261
- return _matrix ? _matrix.getValue(row, col) : null;
262
- }
263
- setCellCfRuleCache(unitId, subUnitId, row, col, cfId, value) {
264
- const cell2 = this._ensureMatrix(unitId, subUnitId).getValue(row, col), item = cell2 == null ? void 0 : cell2.cfList.find((e) => e.cfId === cfId);
265
- item && (item.ruleCache = value, item.isDirty = !1);
266
- }
267
- deleteCellCf(unitId, subUnitId, row, col, cfId, matrix) {
268
- const _matrix = matrix != null ? matrix : this.getMatrix(unitId, subUnitId);
269
- if (_matrix) {
270
- const cellItem = _matrix.getValue(row, col);
271
- if (cellItem) {
272
- const cfList = cellItem.cfList, index = cfList.findIndex((item) => item.cfId === cfId);
273
- index > -1 && cfList.splice(index, 1), cfList.length || _matrix.realDeleteValue(row, col);
252
+ return e;
253
+ }
254
+ getMatrix(i, t) {
255
+ var e;
256
+ return (e = this._model.get(i)) == null ? void 0 : e.get(t);
257
+ }
258
+ getCellCf(i, t, e, s, r) {
259
+ const a = r != null ? r : this.getMatrix(i, t);
260
+ return a ? a.getValue(e, s) : null;
261
+ }
262
+ setCellCfRuleCache(i, t, e, s, r, a) {
263
+ const l = this._ensureMatrix(i, t).getValue(e, s), c = l == null ? void 0 : l.cfList.find((h) => h.cfId === r);
264
+ c && (c.ruleCache = a, c.isDirty = !1);
265
+ }
266
+ deleteCellCf(i, t, e, s, r, a) {
267
+ const o = a != null ? a : this.getMatrix(i, t);
268
+ if (o) {
269
+ const l = o.getValue(e, s);
270
+ if (l) {
271
+ const c = l.cfList, h = c.findIndex((u) => u.cfId === r);
272
+ h > -1 && c.splice(h, 1), c.length || o.realDeleteValue(e, s);
274
273
  }
275
274
  }
276
275
  }
277
- pushCellCf(unitId, subUnitId, row, col, cfId) {
278
- const _matrix = this._ensureMatrix(unitId, subUnitId);
279
- let cellValue = _matrix.getValue(row, col);
280
- if (!cellValue)
281
- cellValue = { cfList: [{ cfId, isDirty: !0 }] };
276
+ pushCellCf(i, t, e, s, r) {
277
+ const a = this._ensureMatrix(i, t);
278
+ let o = a.getValue(e, s);
279
+ if (!o)
280
+ o = { cfList: [{ cfId: r, isDirty: !0 }] };
282
281
  else {
283
- const cfIdList = cellValue.cfList;
284
- if (cfIdList.findIndex((item) => item.cfId === cfId) > -1)
282
+ const l = o.cfList;
283
+ if (l.findIndex((h) => h.cfId === r) > -1)
285
284
  return;
286
- cfIdList.push({ cfId, isDirty: !0 });
285
+ l.push({ cfId: r, isDirty: !0 });
287
286
  }
288
- _matrix.setValue(row, col, cellValue);
289
- }
290
- sortCellCf(unitId, subUnitId, row, col, cfPriorityMap) {
291
- const cell2 = this.getCellCf(unitId, subUnitId, row, col);
292
- if (cell2) {
293
- const sortResult = cell2.cfList.map((cf) => {
294
- const priority = cfPriorityMap.get(cf.cfId);
295
- return priority === void 0 ? null : { ...cf, priority };
296
- }).filter((item) => !!item).sort((a, b) => a.priority - b.priority);
297
- cell2.cfList = sortResult;
287
+ a.setValue(e, s, o);
288
+ }
289
+ sortCellCf(i, t, e, s, r) {
290
+ const a = this.getCellCf(i, t, e, s);
291
+ if (a) {
292
+ const o = a.cfList.map((l) => {
293
+ const c = r.get(l.cfId);
294
+ return c === void 0 ? null : { ...l, priority: c };
295
+ }).filter((l) => !!l).sort((l, c) => l.priority - c.priority);
296
+ a.cfList = o;
298
297
  }
299
298
  }
300
- markRuleDirty(unitId, subUnitId, rule, row, col) {
301
- const handleCell = /* @__PURE__ */ __name((row2, col2) => {
302
- const cell2 = this.getCellCf(unitId, subUnitId, row2, col2);
303
- if (cell2) {
304
- const ruleItem = cell2.cfList.find((item) => item.cfId === rule.cfId);
305
- ruleItem && (ruleItem.isDirty = !0);
299
+ markRuleDirty(i, t, e, s, r) {
300
+ const a = (o, l) => {
301
+ const c = this.getCellCf(i, t, o, l);
302
+ if (c) {
303
+ const h = c.cfList.find((u) => u.cfId === e.cfId);
304
+ h && (h.isDirty = !0);
306
305
  }
307
- }, "handleCell");
308
- row !== void 0 && col !== void 0 ? (handleCell(row, col), this._markDirty$.next({ rule, unitId, subUnitId })) : (rule.ranges.forEach((range) => {
309
- Range.foreach(range, (row2, col2) => {
310
- handleCell(row2, col2);
306
+ };
307
+ s !== void 0 && r !== void 0 ? (a(s, r), this._markDirty$.next({ rule: e, unitId: i, subUnitId: t })) : (e.ranges.forEach((o) => {
308
+ R.foreach(o, (l, c) => {
309
+ a(l, c);
311
310
  });
312
- }), this._markDirty$.next({ rule, unitId, subUnitId }));
311
+ }), this._markDirty$.next({ rule: e, unitId: i, subUnitId: t }));
313
312
  }
314
- };
315
- __name(_ConditionalFormattingViewModel, "ConditionalFormattingViewModel");
316
- let ConditionalFormattingViewModel = _ConditionalFormattingViewModel;
317
- const feedback = {
313
+ }
314
+ const f0 = {
318
315
  mistake: "data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20viewBox%3D%220%200%2020%2020%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Ccircle%20cx%3D%229.99999%22%20cy%3D%2210%22%20r%3D%227.03704%22%20fill%3D%22%23FE4B4B%22%2F%3E%0A%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M6.87359%206.87332C6.6146%207.13231%206.6146%207.55221%206.87359%207.8112L9.062%209.99961L6.87356%2012.188C6.61457%2012.447%206.61457%2012.8669%206.87356%2013.1259C7.13255%2013.3849%207.55245%2013.3849%207.81144%2013.1259L9.99987%2010.9375L12.1882%2013.1258C12.4472%2013.3848%2012.8671%2013.3848%2013.1261%2013.1258C13.3851%2012.8669%2013.3851%2012.447%2013.1261%2012.188L10.9378%209.99961L13.1261%207.81127C13.3851%207.55228%2013.3851%207.13238%2013.1261%206.87339C12.8671%206.61441%2012.4472%206.61441%2012.1882%206.87339L9.99987%209.06173L7.81147%206.87332C7.55248%206.61433%207.13257%206.61433%206.87359%206.87332Z%22%20fill%3D%22%23FFFFFF%22%2F%3E%0A%3C%2Fsvg%3E%0A",
319
316
  warn: "data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20viewBox%3D%220%200%2020%2020%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Ccircle%20cx%3D%229.99999%22%20cy%3D%2210%22%20r%3D%227.03704%22%20fill%3D%22%23FFBD37%22%2F%3E%0A%3Cpath%20d%3D%22M9.16817%206.67735C9.16646%206.61745%209.1656%206.5875%209.16653%206.56236C9.18103%206.16817%209.49136%205.84883%209.88497%205.82306C9.91008%205.82141%209.94004%205.82141%209.99996%205.82141V5.82141C10.0599%205.82141%2010.0899%205.82141%2010.115%205.82306C10.5086%205.84883%2010.8189%206.16817%2010.8334%206.56236C10.8343%206.5875%2010.8335%206.61745%2010.8318%206.67735L10.7043%2011.131C10.6934%2011.5121%2010.3812%2011.8154%209.99995%2011.8154V11.8154C9.61866%2011.8154%209.30655%2011.5121%209.29564%2011.131L9.16817%206.67735Z%22%20fill%3D%22%23FFFFFF%22%2F%3E%0A%3Crect%20x%3D%229.31488%22%20y%3D%2212.8086%22%20width%3D%221.37006%22%20height%3D%221.37006%22%20rx%3D%220.685032%22%20fill%3D%22%23FFFFFF%22%2F%3E%0A%3C%2Fsvg%3E%0A",
320
317
  correct: "data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20viewBox%3D%220%200%2020%2020%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Cpath%20d%3D%22M17.037%2010C17.037%2013.8865%2013.8864%2017.0371%209.99999%2017.0371C6.11354%2017.0371%202.96295%2013.8865%202.96295%2010C2.96295%206.1136%206.11354%202.96301%209.99999%202.96301C13.8864%202.96301%2017.037%206.1136%2017.037%2010Z%22%20fill%3D%22%2359D01E%22%2F%3E%0A%3Cpath%20d%3D%22M13.9239%207.17477C13.6638%206.91472%2013.2422%206.91472%2012.9821%207.17477L8.74433%2011.4126L7.01786%209.6861C6.75781%209.42606%206.33619%209.42606%206.07614%209.6861C5.81609%209.94615%205.81609%2010.3678%206.07614%2010.6278L8.27349%2012.8252C8.53354%2013.0852%208.95516%2013.0852%209.21521%2012.8252L9.2195%2012.8209L13.9239%208.1165C14.1839%207.85645%2014.1839%207.43482%2013.9239%207.17477Z%22%20fill%3D%22%23FFFFFF%22%2F%3E%0A%3C%2Fsvg%3E%0A"
321
- }, star = {
318
+ }, m0 = {
322
319
  starEmpty: "data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20viewBox%3D%220%200%2020%2020%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Cpath%20d%3D%22M10.3437%203.3312L11.6861%206.67412C11.8451%207.0699%2012.2165%207.33978%2012.6421%207.36863L16.2362%207.61233C16.5693%207.63492%2016.7048%208.05202%2016.4486%208.26608L13.6841%2010.5758C13.3568%2010.8493%2013.215%2011.2859%2013.319%2011.6996L14.1979%2015.1931C14.2793%2015.5168%2013.9245%2015.7746%2013.6418%2015.5971L10.5908%2013.6817C10.2296%2013.4549%209.77045%2013.4549%209.40924%2013.6817L6.35828%2015.5971C6.07553%2015.7746%205.72072%2015.5168%205.80217%2015.1931L6.68105%2011.6996C6.7851%2011.2859%206.64322%2010.8493%206.31592%2010.5758L3.55145%208.26607C3.29525%208.05202%203.43078%207.63492%203.76386%207.61233L7.358%207.36863C7.78352%207.33978%208.15498%207.0699%208.31391%206.67412L9.65633%203.3312C9.78074%203.0214%2010.2193%203.0214%2010.3437%203.3312Z%22%20fill%3D%22%23fff%22%20stroke%3D%22%23FFBD37%22%20stroke-width%3D%220.740741%22%2F%3E%0A%3C%2Fsvg%3E%0A",
323
320
  starIncomplete: "data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20viewBox%3D%220%200%2020%2020%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Cg%20clip-path%3D%22url(%23clip0_613_177)%22%3E%0A%3Cmask%20id%3D%22mask0_613_177%22%20style%3D%22mask-type%3Aalpha%22%20maskUnits%3D%22userSpaceOnUse%22%20x%3D%2210%22%20y%3D%220%22%20width%3D%2210%22%20height%3D%2220%22%3E%0A%3Crect%20x%3D%2210.3704%22%20y%3D%220.37037%22%20width%3D%229.25926%22%20height%3D%2219.2593%22%20fill%3D%22%23C4C4C4%22%20stroke%3D%22%23F7D564%22%20stroke-width%3D%220.740741%22%2F%3E%0A%3C%2Fmask%3E%0A%3Cg%20mask%3D%22url(%23mask0_613_177)%22%3E%0A%3Cpath%20d%3D%22M10.3437%203.3312L11.6861%206.67412C11.845%207.0699%2012.2165%207.33978%2012.642%207.36863L16.2361%207.61233C16.5692%207.63492%2016.7047%208.05202%2016.4485%208.26608L13.6841%2010.5758C13.3568%2010.8493%2013.2149%2011.2859%2013.3189%2011.6996L14.1978%2015.1931C14.2793%2015.5168%2013.9245%2015.7746%2013.6417%2015.5971L10.5908%2013.6817C10.2295%2013.4549%209.77039%2013.4549%209.40918%2013.6817L6.35822%2015.5971C6.07547%2015.7746%205.72066%2015.5168%205.80211%2015.1931L6.68098%2011.6996C6.78504%2011.2859%206.64316%2010.8493%206.31586%2010.5758L3.55139%208.26607C3.29519%208.05202%203.43072%207.63492%203.7638%207.61233L7.35793%207.36863C7.78346%207.33978%208.15491%207.0699%208.31385%206.67412L9.65627%203.3312C9.78068%203.0214%2010.2192%203.0214%2010.3437%203.3312Z%22%20fill%3D%22%23fff%22%20stroke%3D%22%23FFBD37%22%20stroke-width%3D%220.740741%22%2F%3E%0A%3C%2Fg%3E%0A%3Cmask%20id%3D%22mask1_613_177%22%20style%3D%22mask-type%3Aalpha%22%20maskUnits%3D%22userSpaceOnUse%22%20x%3D%220%22%20y%3D%220%22%20width%3D%2210%22%20height%3D%2220%22%3E%0A%3Crect%20width%3D%2210%22%20height%3D%2220%22%20fill%3D%22%23C4C4C4%22%2F%3E%0A%3C%2Fmask%3E%0A%3Cg%20mask%3D%22url(%23mask1_613_177)%22%3E%0A%3Cpath%20d%3D%22M10.3437%203.3312L11.6861%206.67412C11.845%207.0699%2012.2165%207.33978%2012.642%207.36863L16.2361%207.61233C16.5692%207.63492%2016.7047%208.05202%2016.4485%208.26608L13.6841%2010.5758C13.3568%2010.8493%2013.2149%2011.2859%2013.3189%2011.6996L14.1978%2015.1931C14.2793%2015.5168%2013.9245%2015.7746%2013.6417%2015.5971L10.5908%2013.6817C10.2295%2013.4549%209.77039%2013.4549%209.40918%2013.6817L6.35822%2015.5971C6.07547%2015.7746%205.72066%2015.5168%205.80211%2015.1931L6.68098%2011.6996C6.78504%2011.2859%206.64316%2010.8493%206.31586%2010.5758L3.55139%208.26607C3.29519%208.05202%203.43072%207.63492%203.7638%207.61233L7.35793%207.36863C7.78346%207.33978%208.15491%207.0699%208.31385%206.67412L9.65627%203.3312C9.78068%203.0214%2010.2192%203.0214%2010.3437%203.3312Z%22%20fill%3D%22%23FFBD37%22%20stroke%3D%22%23FFBD37%22%20stroke-width%3D%220.740741%22%2F%3E%0A%3C%2Fg%3E%0A%3C%2Fg%3E%0A%3Cdefs%3E%0A%3CclipPath%20id%3D%22clip0_613_177%22%3E%0A%3Crect%20width%3D%2220%22%20height%3D%2220%22%20fill%3D%22white%22%2F%3E%0A%3C%2FclipPath%3E%0A%3C%2Fdefs%3E%0A%3C%2Fsvg%3E%0A",
324
321
  starFull: "data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20viewBox%3D%220%200%2020%2020%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Cpath%20d%3D%22M10.3437%203.3312L11.6861%206.67412C11.8451%207.0699%2012.2165%207.33978%2012.6421%207.36863L16.2362%207.61233C16.5693%207.63492%2016.7048%208.05202%2016.4486%208.26608L13.6841%2010.5758C13.3568%2010.8493%2013.215%2011.2859%2013.319%2011.6996L14.1979%2015.1931C14.2793%2015.5168%2013.9245%2015.7746%2013.6418%2015.5971L10.5908%2013.6817C10.2296%2013.4549%209.77045%2013.4549%209.40924%2013.6817L6.35828%2015.5971C6.07553%2015.7746%205.72072%2015.5168%205.80217%2015.1931L6.68105%2011.6996C6.7851%2011.2859%206.64322%2010.8493%206.31592%2010.5758L3.55145%208.26607C3.29525%208.05202%203.43078%207.63492%203.76386%207.61233L7.358%207.36863C7.78352%207.33978%208.15498%207.0699%208.31391%206.67412L9.65633%203.3312C9.78074%203.0214%2010.2193%203.0214%2010.3437%203.3312Z%22%20fill%3D%22%23FFBD37%22%20stroke%3D%22%23FFBD37%22%20stroke-width%3D%220.740741%22%2F%3E%0A%3C%2Fsvg%3E%0A"
325
- }, progress = {
322
+ }, F0 = {
326
323
  progress0: "data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20viewBox%3D%220%200%2020%2020%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Ccircle%20cx%3D%2210%22%20cy%3D%229.99993%22%20r%3D%226.66667%22%20stroke%3D%22%237A7A7A%22%20stroke-width%3D%220.740741%22%2F%3E%0A%3C%2Fsvg%3E%0A",
327
324
  progress25: "data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20viewBox%3D%220%200%2020%2020%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Ccircle%20cx%3D%2210%22%20cy%3D%229.99993%22%20r%3D%226.66667%22%20stroke%3D%22%237A7A7A%22%20stroke-width%3D%220.740741%22%2F%3E%0A%3Cpath%20d%3D%22M16.2963%209.99991C16.2963%209.17307%2016.1335%208.35432%2015.8171%207.59042C15.5006%206.82652%2015.0369%206.13242%2014.4522%205.54776C13.8675%204.96309%2013.1734%204.49931%2012.4095%204.18289C11.6456%203.86647%2010.8269%203.70361%2010%203.70361L10%209.99991H16.2963Z%22%20fill%3D%22%237A7A7A%22%2F%3E%0A%3C%2Fsvg%3E%0A",
328
325
  progress50: "data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20viewBox%3D%220%200%2020%2020%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Ccircle%20cx%3D%2210%22%20cy%3D%229.99993%22%20r%3D%226.66667%22%20stroke%3D%22%237A7A7A%22%20stroke-width%3D%220.740741%22%2F%3E%0A%3Cpath%20d%3D%22M10%2016.2962C11.6699%2016.2962%2013.2714%2015.6328%2014.4522%2014.4521C15.633%2013.2713%2016.2963%2011.6698%2016.2963%209.99991C16.2963%208.33003%2015.633%206.72854%2014.4522%205.54776C13.2714%204.36697%2011.6699%203.70361%2010%203.70361L10%209.99991L10%2016.2962Z%22%20fill%3D%22%237A7A7A%22%2F%3E%0A%3C%2Fsvg%3E%0A",
329
326
  progress75: "data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20viewBox%3D%220%200%2020%2020%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Ccircle%20cx%3D%2210%22%20cy%3D%229.99993%22%20r%3D%226.66667%22%20stroke%3D%22%237A7A7A%22%20stroke-width%3D%220.740741%22%2F%3E%0A%3Cpath%20d%3D%22M3.70374%209.99991C3.70374%2011.2452%204.07301%2012.4625%204.76485%2013.4979C5.4567%2014.5334%206.44005%2015.3404%207.59054%2015.8169C8.74104%2016.2935%2010.007%2016.4182%2011.2284%2016.1752C12.4497%2015.9323%2013.5716%2015.3326%2014.4522%2014.4521C15.3327%2013.5715%2015.9324%2012.4496%2016.1753%2011.2283C16.4183%2010.0069%2016.2936%208.74092%2015.8171%207.59042C15.3405%206.43992%2014.5335%205.45658%2013.4981%204.76473C12.4626%204.07288%2011.2453%203.70361%2010%203.70361L10%209.99991L3.70374%209.99991Z%22%20fill%3D%22%237A7A7A%22%2F%3E%0A%3C%2Fsvg%3E%0A",
330
327
  progress100: "data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20viewBox%3D%220%200%2020%2020%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Ccircle%20cx%3D%2210%22%20cy%3D%229.99993%22%20r%3D%226.66667%22%20stroke%3D%22%237A7A7A%22%20stroke-width%3D%220.740741%22%2F%3E%0A%3Ccircle%20cx%3D%2210%22%20cy%3D%229.99991%22%20r%3D%226.2963%22%20fill%3D%22%237A7A7A%22%2F%3E%0A%3C%2Fsvg%3E%0A"
331
- }, signal = {
328
+ }, w0 = {
332
329
  signal0: "data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2220%22%20height%3D%2221%22%20viewBox%3D%220%200%2020%2021%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Crect%20x%3D%2214.4764%22%20y%3D%222.98926%22%20width%3D%222.3%22%20height%3D%2214.0597%22%20rx%3D%220.5%22%20fill%3D%22%23E5E5E5%22%2F%3E%0A%3Crect%20x%3D%2210.7255%22%20y%3D%225.93921%22%20width%3D%222.3%22%20height%3D%2211.1096%22%20rx%3D%220.5%22%20fill%3D%22%23E5E5E5%22%2F%3E%0A%3Crect%20x%3D%226.97455%22%20y%3D%229.70435%22%20width%3D%222.3%22%20height%3D%227.3443%22%20rx%3D%220.5%22%20fill%3D%22%23E5E5E5%22%2F%3E%0A%3Crect%20x%3D%223.22363%22%20y%3D%2213.3302%22%20width%3D%222.3%22%20height%3D%223.71851%22%20rx%3D%220.5%22%20fill%3D%22%23E5E5E5%22%2F%3E%0A%3C%2Fsvg%3E%0A",
333
330
  signal25: "data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2220%22%20height%3D%2221%22%20viewBox%3D%220%200%2020%2021%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Crect%20x%3D%2214.4764%22%20y%3D%222.98926%22%20width%3D%222.3%22%20height%3D%2214.0597%22%20rx%3D%220.5%22%20fill%3D%22%23E5E5E5%22%2F%3E%0A%3Crect%20x%3D%2210.7255%22%20y%3D%225.93921%22%20width%3D%222.3%22%20height%3D%2211.1096%22%20rx%3D%220.5%22%20fill%3D%22%23E5E5E5%22%2F%3E%0A%3Crect%20x%3D%226.97455%22%20y%3D%229.70435%22%20width%3D%222.3%22%20height%3D%227.3443%22%20rx%3D%220.5%22%20fill%3D%22%23E5E5E5%22%2F%3E%0A%3Crect%20x%3D%223.22363%22%20y%3D%2213.3302%22%20width%3D%222.3%22%20height%3D%223.71851%22%20rx%3D%220.5%22%20fill%3D%22%230493EE%22%2F%3E%0A%3C%2Fsvg%3E%0A",
334
331
  signal50: "data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2220%22%20height%3D%2221%22%20viewBox%3D%220%200%2020%2021%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Crect%20x%3D%2214.4764%22%20y%3D%222.98926%22%20width%3D%222.3%22%20height%3D%2214.0597%22%20rx%3D%220.5%22%20fill%3D%22%23E5E5E5%22%2F%3E%0A%3Crect%20x%3D%2210.7255%22%20y%3D%225.93921%22%20width%3D%222.3%22%20height%3D%2211.1096%22%20rx%3D%220.5%22%20fill%3D%22%23E5E5E5%22%2F%3E%0A%3Crect%20x%3D%226.97455%22%20y%3D%229.70435%22%20width%3D%222.3%22%20height%3D%227.3443%22%20rx%3D%220.5%22%20fill%3D%22%230493EE%22%2F%3E%0A%3Crect%20x%3D%223.22363%22%20y%3D%2213.3302%22%20width%3D%222.3%22%20height%3D%223.71851%22%20rx%3D%220.5%22%20fill%3D%22%230493EE%22%2F%3E%0A%3C%2Fsvg%3E%0A",
335
332
  signal75: "data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2220%22%20height%3D%2221%22%20viewBox%3D%220%200%2020%2021%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Crect%20x%3D%2214.4764%22%20y%3D%222.98926%22%20width%3D%222.3%22%20height%3D%2214.0597%22%20rx%3D%220.5%22%20fill%3D%22%23E5E5E5%22%2F%3E%0A%3Crect%20x%3D%2210.7255%22%20y%3D%225.93921%22%20width%3D%222.3%22%20height%3D%2211.1096%22%20rx%3D%220.5%22%20fill%3D%22%230493EE%22%2F%3E%0A%3Crect%20x%3D%226.97455%22%20y%3D%229.70435%22%20width%3D%222.3%22%20height%3D%227.3443%22%20rx%3D%220.5%22%20fill%3D%22%230493EE%22%2F%3E%0A%3Crect%20x%3D%223.22363%22%20y%3D%2213.3302%22%20width%3D%222.3%22%20height%3D%223.71851%22%20rx%3D%220.5%22%20fill%3D%22%230493EE%22%2F%3E%0A%3C%2Fsvg%3E%0A",
336
333
  signal100: "data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2220%22%20height%3D%2221%22%20viewBox%3D%220%200%2020%2021%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Crect%20x%3D%2214.4764%22%20y%3D%222.98926%22%20width%3D%222.3%22%20height%3D%2214.0597%22%20rx%3D%220.5%22%20fill%3D%22%230493EE%22%2F%3E%0A%3Crect%20x%3D%2210.7255%22%20y%3D%225.93933%22%20width%3D%222.3%22%20height%3D%2211.1096%22%20rx%3D%220.5%22%20fill%3D%22%230493EE%22%2F%3E%0A%3Crect%20x%3D%226.97455%22%20y%3D%229.70447%22%20width%3D%222.3%22%20height%3D%227.3443%22%20rx%3D%220.5%22%20fill%3D%22%230493EE%22%2F%3E%0A%3Crect%20x%3D%223.22363%22%20y%3D%2213.3302%22%20width%3D%222.3%22%20height%3D%223.71851%22%20rx%3D%220.5%22%20fill%3D%22%230493EE%22%2F%3E%0A%3C%2Fsvg%3E%0A"
337
- }, feeling = {
334
+ }, E0 = {
338
335
  guffaw: "data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20viewBox%3D%220%200%2020%2020%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Cpath%20d%3D%22M16.887%2010C16.887%2013.8037%2013.8036%2016.8871%209.99999%2016.8871C6.19638%2016.8871%203.11295%2013.8037%203.11295%2010C3.11295%206.19644%206.19638%203.11301%209.99999%203.11301C13.8036%203.11301%2016.887%206.19644%2016.887%2010Z%22%20fill%3D%22%23FFBD37%22%20stroke%3D%22%238F5F00%22%20stroke-width%3D%220.3%22%2F%3E%0A%3Crect%20x%3D%227.40741%22%20y%3D%227.40735%22%20width%3D%221.48148%22%20height%3D%221.48148%22%20rx%3D%220.740741%22%20fill%3D%22%238F5F00%22%2F%3E%0A%3Crect%20x%3D%2211.1111%22%20y%3D%227.40735%22%20width%3D%221.48148%22%20height%3D%221.48148%22%20rx%3D%220.740741%22%20fill%3D%22%238F5F00%22%2F%3E%0A%3Cpath%20d%3D%22M12.5355%2013.5821C13.0482%2013.1841%2013.3951%2012.6107%2013.5405%2012.0327C13.5934%2011.8226%2013.5051%2011.6349%2013.3518%2011.5331C13.2036%2011.4346%2013.0031%2011.4203%2012.8265%2011.5131C11.0615%2012.4407%208.94609%2012.4427%207.1828%2011.513C7.00629%2011.4199%206.80602%2011.4343%206.65798%2011.5329C6.50518%2011.6346%206.41701%2011.8217%206.46844%2012.0312C6.61029%2012.609%206.95079%2013.1833%207.46449%2013.5821C8.14361%2014.1093%209.05608%2014.3999%2010%2014.3999C10.9439%2014.3999%2011.8564%2014.1093%2012.5355%2013.5821Z%22%20fill%3D%22white%22%20stroke%3D%22%238F5F00%22%20stroke-width%3D%220.4%22%2F%3E%0A%3C%2Fsvg%3E%0A",
339
336
  smile: "data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20viewBox%3D%220%200%2020%2020%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Ccircle%20cx%3D%229.99999%22%20cy%3D%2210%22%20r%3D%226.88704%22%20fill%3D%22%23FFBD37%22%20stroke%3D%22%238F5F00%22%20stroke-width%3D%220.3%22%2F%3E%0A%3Crect%20x%3D%227.40741%22%20y%3D%227.40735%22%20width%3D%221.48148%22%20height%3D%221.48148%22%20rx%3D%220.740741%22%20fill%3D%22%238F5F00%22%2F%3E%0A%3Crect%20x%3D%2211.1111%22%20y%3D%227.40735%22%20width%3D%221.48148%22%20height%3D%221.48148%22%20rx%3D%220.740741%22%20fill%3D%22%238F5F00%22%2F%3E%0A%3Cpath%20d%3D%22M7.03705%2011.8518C7.03705%2011.8518%207.77779%2013.7037%2010%2013.7037C12.2222%2013.7037%2012.963%2011.8518%2012.963%2011.8518%22%20stroke%3D%22%238F5F00%22%20stroke-width%3D%220.962963%22%20stroke-linecap%3D%22round%22%2F%3E%0A%3C%2Fsvg%3E%0A",
340
337
  noninductive: "data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20viewBox%3D%220%200%2020%2020%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Ccircle%20cx%3D%229.99999%22%20cy%3D%2210%22%20r%3D%226.88704%22%20fill%3D%22%23FFBD37%22%20stroke%3D%22%238F5F00%22%20stroke-width%3D%220.3%22%2F%3E%0A%3Crect%20x%3D%227.40741%22%20y%3D%227.9259%22%20width%3D%221.48148%22%20height%3D%221.11111%22%20rx%3D%220.555556%22%20fill%3D%22%238F5F00%22%2F%3E%0A%3Crect%20x%3D%2211.1111%22%20y%3D%227.9259%22%20width%3D%221.48148%22%20height%3D%221.11111%22%20rx%3D%220.555556%22%20fill%3D%22%238F5F00%22%2F%3E%0A%3Cpath%20d%3D%22M7.03705%2012.5927C7.03705%2012.5927%208.14816%2012.5927%2010.3704%2012.5927C12.5926%2012.5927%2012.963%2012.5927%2012.963%2012.5927%22%20stroke%3D%22%238F5F00%22%20stroke-width%3D%220.962963%22%20stroke-linecap%3D%22round%22%2F%3E%0A%3C%2Fsvg%3E%0A",
341
338
  dissatisfied: "data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20viewBox%3D%220%200%2020%2020%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Ccircle%20cx%3D%229.99999%22%20cy%3D%2210%22%20r%3D%226.88704%22%20fill%3D%22%23FFBD37%22%20stroke%3D%22%238F5F00%22%20stroke-width%3D%220.3%22%2F%3E%0A%3Crect%20x%3D%227.40741%22%20y%3D%227.40735%22%20width%3D%221.48148%22%20height%3D%221.48148%22%20rx%3D%220.740741%22%20fill%3D%22%238F5F00%22%2F%3E%0A%3Crect%20x%3D%2211.1111%22%20y%3D%227.40735%22%20width%3D%221.48148%22%20height%3D%221.48148%22%20rx%3D%220.740741%22%20fill%3D%22%238F5F00%22%2F%3E%0A%3Cpath%20d%3D%22M7.03705%2013.7037C7.03705%2013.7037%207.77779%2011.8519%2010%2011.8519C12.2222%2011.8519%2012.963%2013.7037%2012.963%2013.7037%22%20stroke%3D%22%238F5F00%22%20stroke-width%3D%220.962963%22%20stroke-linecap%3D%22round%22%2F%3E%0A%3C%2Fsvg%3E%0A",
342
339
  impatient: "data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20viewBox%3D%220%200%2020%2020%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Ccircle%20cx%3D%229.99999%22%20cy%3D%2210%22%20r%3D%226.88704%22%20fill%3D%22%23FFBD37%22%20stroke%3D%22%238F5F00%22%20stroke-width%3D%220.3%22%2F%3E%0A%3Crect%20x%3D%227.40741%22%20y%3D%227.40735%22%20width%3D%221.48148%22%20height%3D%221.48148%22%20rx%3D%220.740741%22%20fill%3D%22%238F5F00%22%2F%3E%0A%3Crect%20x%3D%2211.1111%22%20y%3D%227.40735%22%20width%3D%221.48148%22%20height%3D%221.48148%22%20rx%3D%220.740741%22%20fill%3D%22%238F5F00%22%2F%3E%0A%3Cpath%20d%3D%22M7.47573%2011.731C6.96306%2012.129%206.61613%2012.7024%206.47071%2013.2804C6.41784%2013.4905%206.50617%2013.6782%206.65942%2013.78C6.80761%2013.8785%207.00813%2013.8928%207.18477%2013.8C8.9498%2012.8724%2011.0652%2012.8704%2012.8285%2013.8002C13.005%2013.8932%2013.2052%2013.8788%2013.3533%2013.7802C13.5061%2013.6785%2013.5942%2013.4914%2013.5428%2013.2819C13.401%2012.7041%2013.0605%2012.1298%2012.5468%2011.731C11.8676%2011.2038%2010.9552%2010.9132%2010.0112%2010.9132C9.06732%2010.9132%208.15485%2011.2038%207.47573%2011.731Z%22%20fill%3D%22white%22%20stroke%3D%22%238F5F00%22%20stroke-width%3D%220.4%22%2F%3E%0A%3C%2Fsvg%3E%0A"
343
- }, arrow = {
340
+ }, v0 = {
344
341
  "down-red": "data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2220%22%20height%3D%2221%22%20viewBox%3D%220%200%2020%2021%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M8.90467%203.99244C8.84611%204.1338%208.84611%204.31301%208.84611%204.67143V13.716L5.92068%2010.7906C5.66724%2010.5371%205.54052%2010.4104%205.39916%2010.3519C5.21067%2010.2738%204.9989%2010.2738%204.81041%2010.3519C4.66905%2010.4104%204.54233%2010.5371%204.28889%2010.7906C4.03545%2011.044%203.90873%2011.1707%203.85018%2011.3121C3.77211%2011.5006%203.77211%2011.7124%203.85018%2011.9008C3.90873%2012.0422%204.03545%2012.1689%204.28889%2012.4224L9.03476%2017.1682C9.07839%2017.2127%209.12737%2017.2617%209.18231%2017.3166L9.18239%2017.3167L9.18241%2017.3167C9.40545%2017.5398%209.53035%2017.6647%209.65346%2017.7313C9.67085%2017.7408%209.6882%2017.7492%209.70577%2017.7564C9.89425%2017.8345%2010.106%2017.8345%2010.2945%2017.7564C10.4359%2017.6979%2010.5626%2017.5712%2010.816%2017.3177C10.8986%2017.2352%2010.9677%2017.1661%2011.0253%2017.1056L15.7095%2012.4214L15.7095%2012.4213C15.963%2012.1679%2016.0897%2012.0412%2016.1482%2011.8998C16.2263%2011.7114%2016.2263%2011.4996%2016.1482%2011.3111C16.0897%2011.1697%2015.963%2011.043%2015.7095%2010.7896C15.4561%2010.5361%2015.3294%2010.4094%2015.188%2010.3509C14.9995%2010.2728%2014.7878%2010.2728%2014.5993%2010.3509C14.4579%2010.4094%2014.3312%2010.5361%2014.0778%2010.7896L14.0777%2010.7896L11.1538%2013.7135V4.67142C11.1538%204.31301%2011.1538%204.1338%2011.0953%203.99244C11.0172%203.80395%2010.8674%203.6542%2010.6789%203.57613C10.5376%203.51758%2010.3584%203.51758%209.99996%203.51758C9.64154%203.51758%209.46233%203.51758%209.32097%203.57613C9.13249%203.6542%208.98274%203.80395%208.90467%203.99244Z%22%20fill%3D%22%23FE4B4B%22%2F%3E%0A%3C%2Fsvg%3E%0A",
345
342
  "right-gold": "data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2220%22%20height%3D%2221%22%20viewBox%3D%220%200%2020%2021%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M3.32508%2011.7609C3.46644%2011.8194%203.64565%2011.8194%204.00407%2011.8194H13.049L10.1235%2014.745C9.87002%2014.9984%209.7433%2015.1251%209.68475%2015.2665C9.60668%2015.455%209.60668%2015.6668%209.68475%2015.8552C9.7433%2015.9966%209.87002%2016.1233%2010.1235%2016.3768C10.3769%2016.6302%2010.5036%2016.7569%2010.645%2016.8155C10.8335%2016.8935%2011.0452%2016.8935%2011.2337%2016.8155C11.3751%2016.7569%2011.5018%2016.6302%2011.7552%2016.3768L16.5105%2011.6215C16.5524%2011.5803%2016.5983%2011.5344%2016.6493%2011.4834L16.6495%2011.4831C16.8561%2011.2765%2016.9785%2011.1542%2017.0484%2011.0394C17.0648%2011.0128%2017.0782%2010.9866%2017.0893%2010.9599C17.1674%2010.7714%2017.1674%2010.5596%2017.0893%2010.3711C17.0308%2010.2298%2016.904%2010.1031%2016.6506%209.84962C16.5685%209.76752%2016.4997%209.69872%2016.4394%209.64123L11.7542%204.95601C11.5007%204.70257%2011.374%204.57585%2011.2327%204.5173C11.0442%204.43923%2010.8324%204.43923%2010.6439%204.5173C10.5026%204.57585%2010.3758%204.70257%2010.1224%204.95601L10.1224%204.95601C9.86895%205.20945%209.74223%205.33617%209.68368%205.47753C9.60561%205.66601%209.60561%205.87779%209.68368%206.06627C9.74223%206.20764%209.86895%206.33436%2010.1224%206.5878L13.0463%209.51175H4.00407C3.64565%209.51175%203.46644%209.51175%203.32508%209.5703C3.1366%209.64837%202.98685%209.79812%202.90877%209.98661C2.85022%2010.128%202.85022%2010.3072%202.85022%2010.6656C2.85022%2011.024%202.85022%2011.2032%202.90877%2011.3446C2.98685%2011.5331%203.1366%2011.6828%203.32508%2011.7609Z%22%20fill%3D%22%23FFBD37%22%2F%3E%0A%3C%2Fsvg%3E%0A",
346
343
  "up-green": "data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2220%22%20height%3D%2221%22%20viewBox%3D%220%200%2020%2021%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M11.0936%2017.3406C11.1522%2017.1992%2011.1522%2017.02%2011.1522%2016.6616V7.61701L14.0776%2010.5424C14.3311%2010.7959%2014.4578%2010.9226%2014.5991%2010.9811C14.7876%2011.0592%2014.9994%2011.0592%2015.1879%2010.9811C15.3292%2010.9226%2015.456%2010.7959%2015.7094%2010.5424C15.9628%2010.289%2016.0896%2010.1623%2016.1481%2010.0209C16.2262%209.83243%2016.2262%209.62066%2016.1481%209.43217C16.0896%209.29081%2015.9628%209.16409%2015.7094%208.91065L10.9645%204.16576C10.9207%204.12105%2010.8714%204.07178%2010.8161%204.01648L10.8159%204.0163C10.5916%203.792%2010.4666%203.66696%2010.3428%203.60058C10.3261%203.59154%2010.3094%203.58358%2010.2925%203.57658C10.104%203.49851%209.89226%203.49851%209.70378%203.57658C9.56242%203.63514%209.4357%203.76186%209.18226%204.0153C9.09955%204.09801%209.03034%204.16722%208.97258%204.22785L4.28878%208.91166C4.03534%209.1651%203.90862%209.29182%203.85006%209.43318C3.77199%209.62166%203.77199%209.83344%203.85006%2010.0219C3.90862%2010.1633%204.03534%2010.29%204.28878%2010.5434C4.54221%2010.7969%204.66893%2010.9236%204.8103%2010.9822C4.99878%2011.0602%205.21056%2011.0602%205.39904%2010.9822C5.5404%2010.9236%205.66712%2010.7969%205.92056%2010.5434L5.92056%2010.5434L8.84449%207.61951V16.6616C8.84449%2017.02%208.84449%2017.1992%208.90305%2017.3406C8.98112%2017.5291%209.13087%2017.6788%209.31935%2017.7569C9.46072%2017.8154%209.63992%2017.8154%209.99834%2017.8154C10.3568%2017.8154%2010.536%2017.8154%2010.6773%2017.7569C10.8658%2017.6788%2011.0156%2017.5291%2011.0936%2017.3406Z%22%20fill%3D%22%2359D01E%22%2F%3E%0A%3C%2Fsvg%3E%0A",
@@ -351,7 +348,7 @@ const feedback = {
351
348
  "up-gray": "data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2220%22%20height%3D%2221%22%20viewBox%3D%220%200%2020%2021%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M11.0936%2017.3406C11.1522%2017.1992%2011.1522%2017.02%2011.1522%2016.6616V7.61701L14.0776%2010.5424C14.3311%2010.7959%2014.4578%2010.9226%2014.5991%2010.9811C14.7876%2011.0592%2014.9994%2011.0592%2015.1879%2010.9811C15.3292%2010.9226%2015.456%2010.7959%2015.7094%2010.5424C15.9628%2010.289%2016.0896%2010.1623%2016.1481%2010.0209C16.2262%209.83243%2016.2262%209.62066%2016.1481%209.43217C16.0896%209.29081%2015.9628%209.16409%2015.7094%208.91065L10.9645%204.16576C10.9207%204.12105%2010.8714%204.07178%2010.8161%204.01648L10.8159%204.0163C10.5916%203.792%2010.4666%203.66696%2010.3428%203.60058C10.3261%203.59154%2010.3094%203.58358%2010.2925%203.57658C10.104%203.49851%209.89226%203.49851%209.70378%203.57658C9.56242%203.63514%209.4357%203.76186%209.18226%204.0153C9.09955%204.09801%209.03034%204.16722%208.97258%204.22785L4.28878%208.91166C4.03534%209.1651%203.90862%209.29182%203.85006%209.43318C3.77199%209.62166%203.77199%209.83344%203.85006%2010.0219C3.90862%2010.1633%204.03534%2010.29%204.28878%2010.5434C4.54221%2010.7969%204.66893%2010.9236%204.8103%2010.9822C4.99878%2011.0602%205.21056%2011.0602%205.39904%2010.9822C5.5404%2010.9236%205.66712%2010.7969%205.92056%2010.5434L5.92056%2010.5434L8.84449%207.61951V16.6616C8.84449%2017.02%208.84449%2017.1992%208.90305%2017.3406C8.98112%2017.5291%209.13087%2017.6788%209.31935%2017.7569C9.46072%2017.8154%209.63992%2017.8154%209.99834%2017.8154C10.3568%2017.8154%2010.536%2017.8154%2010.6773%2017.7569C10.8658%2017.6788%2011.0156%2017.5291%2011.0936%2017.3406Z%22%20fill%3D%22%23999999%22%2F%3E%0A%3C%2Fsvg%3E%0A",
352
349
  "rightAndDown-gray": "data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2220%22%20height%3D%2221%22%20viewBox%3D%220%200%2020%2021%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M4.5062%206.72126C4.56476%206.86262%204.69148%206.98934%204.94492%207.24278L11.3404%2013.6382L7.20313%2013.6382C6.84471%2013.6382%206.66551%2013.6382%206.52414%2013.6968C6.33566%2013.7749%206.18591%2013.9246%206.10784%2014.1131C6.04928%2014.2545%206.04928%2014.4337%206.04928%2014.7921C6.04928%2015.1505%206.04928%2015.3297%206.10784%2015.4711C6.18591%2015.6596%206.33566%2015.8093%206.52414%2015.8874C6.66551%2015.9459%206.84471%2015.9459%207.20313%2015.9459L13.9194%2015.9459C13.9805%2015.9465%2014.0484%2015.9465%2014.1243%2015.9465H14.1243C14.4353%2015.9465%2014.6114%2015.9465%2014.7449%2015.9082C14.7659%2015.9023%2014.7859%2015.8954%2014.8052%2015.8874C14.9937%2015.8093%2015.1434%2015.6596%2015.2215%2015.4711C15.2801%2015.3297%2015.2801%2015.1505%2015.2801%2014.7921C15.2801%2014.6767%2015.2801%2014.5799%2015.2781%2014.497L15.2781%207.86957C15.2781%207.51115%2015.2781%207.33194%2015.2195%207.19058C15.1415%207.0021%2014.9917%206.85235%2014.8032%206.77428C14.6619%206.71572%2014.4827%206.71572%2014.1243%206.71572C13.7658%206.71572%2013.5866%206.71572%2013.4453%206.77428C13.2568%206.85235%2013.107%207.0021%2013.029%207.19058C12.9704%207.33194%2012.9704%207.51115%2012.9704%207.86957L12.9704%2012.0047L6.5767%205.61099C6.32326%205.35755%206.19654%205.23083%206.05518%205.17228C5.8667%205.09421%205.65492%205.09421%205.46644%205.17228C5.32508%205.23083%205.19836%205.35755%204.94492%205.61099C4.69148%205.86443%204.56476%205.99115%204.5062%206.13251C4.42813%206.32099%204.42813%206.53277%204.5062%206.72126Z%22%20fill%3D%22%23999999%22%2F%3E%0A%3C%2Fsvg%3E%0A",
353
350
  "rightAndUp-gray": "data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2220%22%20height%3D%2221%22%20viewBox%3D%220%200%2020%2021%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M6.05431%2016.1597C6.19567%2016.1012%206.32239%2015.9745%206.57583%2015.721L12.9712%209.32568L12.9712%2013.4626C12.9712%2013.821%2012.9712%2014.0002%2013.0297%2014.1416C13.1078%2014.3301%2013.2576%2014.4798%2013.446%2014.5579C13.5874%2014.6164%2013.7666%2014.6164%2014.125%2014.6164C14.4834%2014.6164%2014.6626%2014.6164%2014.804%2014.5579C14.9925%2014.4798%2015.1422%2014.3301%2015.2203%2014.1416C15.2789%2014.0002%2015.2789%2013.821%2015.2789%2013.4626L15.2789%206.75233C15.2795%206.68972%2015.2795%206.62004%2015.2795%206.54182L15.2795%206.54157C15.2795%206.22585%2015.2795%206.04918%2015.2395%205.91495C15.2339%205.89605%2015.2276%205.878%2015.2203%205.86053C15.1422%205.67204%2014.9925%205.52229%2014.804%205.44422C14.6626%205.38567%2014.4834%205.38567%2014.125%205.38567L14.125%205.38567C14.0075%205.38567%2013.9093%205.38567%2013.8254%205.38773L7.20256%205.38773C6.84414%205.38773%206.66493%205.38773%206.52357%205.44628C6.33509%205.52436%206.18534%205.6741%206.10727%205.86259C6.04871%206.00395%206.04871%206.18315%206.04871%206.54156V6.54157L6.04871%206.54159C6.04871%206.9%206.04871%207.0792%206.10727%207.22056C6.18534%207.40905%206.33509%207.55879%206.52357%207.63687C6.66493%207.69542%206.84414%207.69542%207.20256%207.69542H11.3379L4.94405%2014.0892C4.69061%2014.3427%204.56389%2014.4694%204.50533%2014.6108C4.42726%2014.7992%204.42726%2015.011%204.50533%2015.1995C4.56389%2015.3409%204.69061%2015.4676%204.94405%2015.721C5.19749%2015.9745%205.32421%2016.1012%205.46557%2016.1597C5.65405%2016.2378%205.86583%2016.2378%206.05431%2016.1597Z%22%20fill%3D%22%23999999%22%2F%3E%0A%3C%2Fsvg%3E%0A"
354
- }, shape = {
351
+ }, p0 = {
355
352
  cross: "data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20viewBox%3D%220%200%2020%2020%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Crect%20x%3D%223.70374%22%20y%3D%228.14795%22%20width%3D%2212.5926%22%20height%3D%223.7037%22%20rx%3D%220.740741%22%20fill%3D%22%23FFBD37%22%2F%3E%0A%3C%2Fsvg%3E%0A",
356
353
  up: "data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20viewBox%3D%220%200%2020%2020%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Cpath%20d%3D%22M9.44533%205.81157C9.74012%205.47858%2010.2598%205.47858%2010.5546%205.81157L16.2868%2012.2867C16.71%2012.7647%2016.3706%2013.5184%2015.7322%2013.5184H4.26776C3.62933%2013.5184%203.28995%2012.7647%203.71313%2012.2867L9.44533%205.81157Z%22%20fill%3D%22%2359D01E%22%2F%3E%0A%3C%2Fsvg%3E%0A",
357
354
  down: "data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20viewBox%3D%220%200%2020%2020%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Cpath%20d%3D%22M10.5547%2014.1884C10.2599%2014.5214%209.74019%2014.5214%209.4454%2014.1884L3.71321%207.71335C3.29002%207.23532%203.6294%206.48161%204.26784%206.48161L15.7322%206.48161C16.3707%206.48161%2016.7101%207.23532%2016.2869%207.71335L10.5547%2014.1884Z%22%20fill%3D%22%23FE4B4B%22%2F%3E%0A%3C%2Fsvg%3E%0A",
@@ -367,42 +364,42 @@ const feedback = {
367
364
  "indicate-greed": "data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20viewBox%3D%220%200%2020%2020%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Crect%20x%3D%222.76941%22%20y%3D%222.76941%22%20width%3D%2214.4612%22%20height%3D%2214.4612%22%20rx%3D%223%22%20fill%3D%22black%22%2F%3E%0A%3Ccircle%20cx%3D%2210%22%20cy%3D%2210%22%20r%3D%224.5%22%20fill%3D%22%2359D01E%22%2F%3E%0A%3C%2Fsvg%3E%0A",
368
365
  "indicate-gold": "data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20viewBox%3D%220%200%2020%2020%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Crect%20x%3D%222.76941%22%20y%3D%222.76941%22%20width%3D%2214.4612%22%20height%3D%2214.4612%22%20rx%3D%223%22%20fill%3D%22black%22%2F%3E%0A%3Ccircle%20cx%3D%2210%22%20cy%3D%2210%22%20r%3D%224.5%22%20fill%3D%22%23FFBD37%22%2F%3E%0A%3C%2Fsvg%3E%0A",
369
366
  "indicate-red": "data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20viewBox%3D%220%200%2020%2020%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Crect%20x%3D%222.76941%22%20y%3D%222.76941%22%20width%3D%2214.4612%22%20height%3D%2214.4612%22%20rx%3D%223%22%20fill%3D%22black%22%2F%3E%0A%3Ccircle%20cx%3D%2210%22%20cy%3D%2210%22%20r%3D%224.5%22%20fill%3D%22%23FE4B4B%22%2F%3E%0A%3C%2Fsvg%3E%0A"
370
- }, feedback2 = {
367
+ }, A0 = {
371
368
  mistake2: "data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2220%22%20height%3D%2221%22%20viewBox%3D%220%200%2020%2021%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M4.12194%206.33702C4.1805%206.47839%204.30722%206.6051%204.56066%206.85854L8.36822%2010.6661L4.56062%2014.4737C4.30718%2014.7272%204.18046%2014.8539%204.12191%2014.9952C4.04384%2015.1837%204.04384%2015.3955%204.12191%2015.584C4.18046%2015.7253%204.30718%2015.8521%204.56062%2016.1055C4.81406%2016.3589%204.94078%2016.4857%205.08214%2016.5442C5.27062%2016.6223%205.4824%2016.6223%205.67089%2016.5442C5.81225%2016.4857%205.93897%2016.3589%206.19241%2016.1055L10%2012.2979L13.8074%2016.1053C14.0609%2016.3588%2014.1876%2016.4855%2014.329%2016.544C14.5174%2016.6221%2014.7292%2016.6221%2014.9177%2016.544C15.0591%2016.4855%2015.1858%2016.3588%2015.4392%2016.1053L15.4392%2016.1053C15.6927%2015.8519%2015.8194%2015.7252%2015.8779%2015.5838C15.956%2015.3953%2015.956%2015.1835%2015.8779%2014.9951C15.8194%2014.8537%2015.6927%2014.727%2015.4392%2014.4735L15.4392%2014.4735L11.6318%2010.6661L15.4392%206.85872C15.6926%206.60528%2015.8193%206.47856%2015.8779%206.3372C15.956%206.14871%2015.956%205.93694%2015.8779%205.74845C15.8193%205.60709%2015.6926%205.48037%2015.4392%205.22693C15.1857%204.97349%2015.059%204.84677%2014.9177%204.78822C14.7292%204.71015%2014.5174%204.71015%2014.3289%204.78822C14.1876%204.84677%2014.0608%204.97349%2013.8074%205.22693L10%209.03433L6.19244%205.22676C5.939%204.97332%205.81228%204.8466%205.67092%204.78805C5.48244%204.70997%205.27066%204.70997%205.08218%204.78805C4.94082%204.8466%204.8141%204.97332%204.56066%205.22676L4.56066%205.22676C4.30722%205.4802%204.1805%205.60692%204.12194%205.74828C4.04387%205.93676%204.04387%206.14854%204.12194%206.33702Z%22%20fill%3D%22%23FE4B4B%22%2F%3E%0A%3C%2Fsvg%3E%0A",
372
369
  warn2: "data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2220%22%20height%3D%2221%22%20viewBox%3D%220%200%2020%2021%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Cpath%20d%3D%22M8.49778%205.00963C8.48513%204.56774%208.47881%204.3468%208.56086%204.17746C8.63301%204.02856%208.75124%203.90689%208.89802%203.83052C9.06494%203.74365%209.28597%203.74365%209.72805%203.74365H10.272C10.714%203.74365%2010.9351%203.74365%2011.102%203.83052C11.2488%203.9069%2011.367%204.02856%2011.4392%204.17746C11.5212%204.3468%2011.5149%204.56775%2011.5022%205.00964L11.2644%2013.3173C11.2524%2013.737%2011.2464%2013.9468%2011.1609%2014.1065C11.0857%2014.2471%2010.9687%2014.3609%2010.826%2014.432C10.6639%2014.5129%2010.454%2014.5129%2010.0342%2014.5129H9.96582C9.54601%2014.5129%209.33611%2014.5129%209.17397%2014.432C9.0313%2014.3609%208.91426%2014.2471%208.83904%2014.1065C8.75357%2013.9468%208.74756%2013.737%208.73555%2013.3173L8.49778%205.00963Z%22%20fill%3D%22%23FFBD37%22%2F%3E%0A%3Crect%20x%3D%228.76917%22%20y%3D%2215.2817%22%20width%3D%222.46154%22%20height%3D%222.46154%22%20rx%3D%220.769231%22%20fill%3D%22%23FFBD37%22%2F%3E%0A%3C%2Fsvg%3E%0A",
373
370
  correct2: "data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2220%22%20height%3D%2221%22%20viewBox%3D%220%200%2020%2021%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Cg%20clip-path%3D%22url(%23clip0_613_248)%22%3E%0A%3Cpath%20d%3D%22M15.689%205.69723C15.5476%205.75578%2015.4209%205.8825%2015.1675%206.13594L7.82436%2013.4791L4.83279%2010.4875C4.57935%2010.2341%204.45263%2010.1073%204.31127%2010.0488C4.12278%209.97071%203.91101%209.97071%203.72252%2010.0488C3.58116%2010.1073%203.45444%2010.2341%203.201%2010.4875C2.94756%2010.7409%202.82084%2010.8676%202.76229%2011.009C2.68422%2011.1975%202.68422%2011.4093%202.76229%2011.5978C2.82084%2011.7391%202.94756%2011.8658%203.201%2012.1193L7.0085%2015.9268C7.26194%2016.1802%207.38866%2016.3069%207.53002%2016.3655C7.7185%2016.4436%207.93028%2016.4436%208.11876%2016.3655C8.26013%2016.3069%208.38685%2016.1802%208.64028%2015.9268C8.66387%2015.9032%208.68636%2015.8807%208.7078%2015.8592L16.7993%207.76772C17.0527%207.51428%2017.1794%207.38756%2017.238%207.2462C17.3161%207.05772%2017.3161%206.84594%2017.238%206.65746C17.1794%206.5161%2017.0527%206.38938%2016.7993%206.13594C16.5458%205.8825%2016.4191%205.75578%2016.2777%205.69723C16.0893%205.61915%2015.8775%205.61915%2015.689%205.69723Z%22%20fill%3D%22%2359D01E%22%2F%3E%0A%3C%2Fg%3E%0A%3Cdefs%3E%0A%3CclipPath%20id%3D%22clip0_613_248%22%3E%0A%3Crect%20width%3D%2220%22%20height%3D%2220%22%20fill%3D%22white%22%20transform%3D%22translate(0%200.666504)%22%2F%3E%0A%3C%2FclipPath%3E%0A%3C%2Fdefs%3E%0A%3C%2Fsvg%3E%0A"
374
- }, flag = {
371
+ }, x0 = {
375
372
  "flag-green": "data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2220%22%20height%3D%2221%22%20viewBox%3D%220%200%2020%2021%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M15.4274%204.74935C14.0982%205.1012%2013.1363%205.13675%2012.3604%205.03379C11.5776%204.93009%2010.9487%204.68342%2010.2456%204.40416L10.2246%204.39527C9.53411%204.1212%208.76945%203.8175%207.81312%203.69157C6.84279%203.56268%205.71016%203.61898%204.24802%204.0049C4.09343%204.04217%203.95538%204.13393%203.85649%204.26515C3.7576%204.39636%203.70374%204.55925%203.70374%204.72712V17.3197C3.70374%2017.5162%203.79534%2017.7046%203.92654%2017.8435C4.05773%2017.9824%204.25893%2018.0605%204.44448%2018.0605C4.63002%2018.0605%204.84911%2017.9824%204.98031%2017.8435C5.11151%2017.7046%205.18522%2017.5162%205.18522%2017.3197V14.9123V12.5049C6.24649%2012.2738%206.97081%2012.2605%207.63962%2012.3486C8.42246%2012.4523%209.05139%2012.699%209.75448%2012.9782L9.77546%2012.9871C10.466%2013.2612%2011.2306%2013.5649%2012.1869%2013.6908C13.1601%2013.8197%2014.2976%2013.7627%2015.7667%2013.3738C15.8866%2013.3421%2016.0727%2013.2135%2016.1483%2013.111C16.2238%2013.0084%2016.2963%2012.8204%2016.2963%2012.6553V5.46787C16.2963%205.35535%2016.2721%205.24432%2016.2255%205.1432C16.1788%205.04208%2016.1111%204.95353%2016.0274%204.88428C15.9436%204.81502%2015.846%204.76688%2015.7421%204.7435C15.6382%204.72012%2015.494%204.73173%2015.4274%204.74935Z%22%20fill%3D%22%2359D01E%22%2F%3E%0A%3C%2Fsvg%3E%0A",
376
373
  "flag-gold": "data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2220%22%20height%3D%2221%22%20viewBox%3D%220%200%2020%2021%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M15.4274%204.74935C14.0982%205.1012%2013.1363%205.13675%2012.3604%205.03379C11.5776%204.93009%2010.9487%204.68342%2010.2456%204.40416L10.2246%204.39527C9.53411%204.1212%208.76945%203.8175%207.81312%203.69157C6.84279%203.56268%205.71016%203.61898%204.24802%204.0049C4.09343%204.04217%203.95538%204.13393%203.85649%204.26515C3.7576%204.39636%203.70374%204.55925%203.70374%204.72712V17.3197C3.70374%2017.5162%203.79534%2017.7046%203.92654%2017.8435C4.05773%2017.9824%204.25893%2018.0605%204.44448%2018.0605C4.63002%2018.0605%204.84911%2017.9824%204.98031%2017.8435C5.11151%2017.7046%205.18522%2017.5162%205.18522%2017.3197V14.9123V12.5049C6.24649%2012.2738%206.97081%2012.2605%207.63962%2012.3486C8.42246%2012.4523%209.05139%2012.699%209.75448%2012.9782L9.77546%2012.9871C10.466%2013.2612%2011.2306%2013.5649%2012.1869%2013.6908C13.1601%2013.8197%2014.2976%2013.7627%2015.7667%2013.3738C15.8866%2013.3421%2016.0727%2013.2135%2016.1483%2013.111C16.2238%2013.0084%2016.2963%2012.8204%2016.2963%2012.6553V5.46787C16.2963%205.35535%2016.2721%205.24432%2016.2255%205.1432C16.1788%205.04208%2016.1111%204.95353%2016.0274%204.88428C15.9436%204.81502%2015.846%204.76688%2015.7421%204.7435C15.6382%204.72012%2015.494%204.73173%2015.4274%204.74935Z%22%20fill%3D%22%23FFBD37%22%2F%3E%0A%3C%2Fsvg%3E%0A",
377
374
  "flag-red": "data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2220%22%20height%3D%2221%22%20viewBox%3D%220%200%2020%2021%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M15.4274%204.74935C14.0982%205.1012%2013.1363%205.13675%2012.3604%205.03379C11.5776%204.93009%2010.9487%204.68342%2010.2456%204.40416L10.2246%204.39527C9.53411%204.1212%208.76945%203.8175%207.81312%203.69157C6.84279%203.56268%205.71016%203.61898%204.24802%204.0049C4.09343%204.04217%203.95538%204.13393%203.85649%204.26515C3.7576%204.39636%203.70374%204.55925%203.70374%204.72712V17.3197C3.70374%2017.5162%203.79534%2017.7046%203.92654%2017.8435C4.05773%2017.9824%204.25893%2018.0605%204.44448%2018.0605C4.63002%2018.0605%204.84911%2017.9824%204.98031%2017.8435C5.11151%2017.7046%205.18522%2017.5162%205.18522%2017.3197V14.9123V12.5049C6.24649%2012.2738%206.97081%2012.2605%207.63962%2012.3486C8.42246%2012.4523%209.05139%2012.699%209.75448%2012.9782L9.77546%2012.9871C10.466%2013.2612%2011.2306%2013.5649%2012.1869%2013.6908C13.1601%2013.8197%2014.2976%2013.7627%2015.7667%2013.3738C15.8866%2013.3421%2016.0727%2013.2135%2016.1483%2013.111C16.2238%2013.0084%2016.2963%2012.8204%2016.2963%2012.6553V5.46787C16.2963%205.35535%2016.2721%205.24432%2016.2255%205.1432C16.1788%205.04208%2016.1111%204.95353%2016.0274%204.88428C15.9436%204.81502%2015.846%204.76688%2015.7421%204.7435C15.6382%204.72012%2015.494%204.73173%2015.4274%204.74935Z%22%20fill%3D%22%23FE4B4B%22%2F%3E%0A%3C%2Fsvg%3E%0A"
378
- }, cell = {
375
+ }, _0 = {
379
376
  "cell-0": "data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20viewBox%3D%220%200%2020%2020%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Crect%20x%3D%224%22%20y%3D%2211.001%22%20width%3D%225%22%20height%3D%225%22%20rx%3D%221%22%20fill%3D%22%23E5E5E5%22%2F%3E%0A%3Crect%20x%3D%2211%22%20y%3D%2211.001%22%20width%3D%225%22%20height%3D%225%22%20rx%3D%221%22%20fill%3D%22%23E5E5E5%22%2F%3E%0A%3Crect%20x%3D%224%22%20y%3D%224.00098%22%20width%3D%225%22%20height%3D%225%22%20rx%3D%221%22%20fill%3D%22%23E5E5E5%22%2F%3E%0A%3Crect%20x%3D%2211%22%20y%3D%224.00098%22%20width%3D%225%22%20height%3D%225%22%20rx%3D%221%22%20fill%3D%22%23E5E5E5%22%2F%3E%0A%3C%2Fsvg%3E%0A",
380
377
  "cell-25": "data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20viewBox%3D%220%200%2020%2020%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Crect%20x%3D%224%22%20y%3D%2211.001%22%20width%3D%225%22%20height%3D%225%22%20rx%3D%221%22%20fill%3D%22%23E5E5E5%22%2F%3E%0A%3Crect%20x%3D%2211%22%20y%3D%2211.001%22%20width%3D%225%22%20height%3D%225%22%20rx%3D%221%22%20fill%3D%22%23E5E5E5%22%2F%3E%0A%3Crect%20x%3D%224.25%22%20y%3D%224.25098%22%20width%3D%224.5%22%20height%3D%224.5%22%20rx%3D%220.75%22%20fill%3D%22%230493EE%22%20stroke%3D%22%230493EE%22%20stroke-width%3D%220.5%22%2F%3E%0A%3Crect%20x%3D%2211%22%20y%3D%224.00098%22%20width%3D%225%22%20height%3D%225%22%20rx%3D%221%22%20fill%3D%22%23E5E5E5%22%2F%3E%0A%3C%2Fsvg%3E%0A",
381
378
  "cell-50": "data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20viewBox%3D%220%200%2020%2020%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Crect%20x%3D%224%22%20y%3D%2211.001%22%20width%3D%225%22%20height%3D%225%22%20rx%3D%221%22%20fill%3D%22%23E5E5E5%22%2F%3E%0A%3Crect%20x%3D%2211%22%20y%3D%2211.001%22%20width%3D%225%22%20height%3D%225%22%20rx%3D%221%22%20fill%3D%22%23E5E5E5%22%2F%3E%0A%3Crect%20x%3D%224.25%22%20y%3D%224.25098%22%20width%3D%224.5%22%20height%3D%224.5%22%20rx%3D%220.75%22%20fill%3D%22%230493EE%22%20stroke%3D%22%230493EE%22%20stroke-width%3D%220.5%22%2F%3E%0A%3Crect%20x%3D%2211.25%22%20y%3D%224.25098%22%20width%3D%224.5%22%20height%3D%224.5%22%20rx%3D%220.75%22%20fill%3D%22%230493EE%22%20stroke%3D%22%230493EE%22%20stroke-width%3D%220.5%22%2F%3E%0A%3C%2Fsvg%3E%0A",
382
379
  "cell-75": "data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20viewBox%3D%220%200%2020%2020%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Crect%20x%3D%224.25%22%20y%3D%2211.251%22%20width%3D%224.5%22%20height%3D%224.5%22%20rx%3D%220.75%22%20fill%3D%22%230493EE%22%20stroke%3D%22%230493EE%22%20stroke-width%3D%220.5%22%2F%3E%0A%3Crect%20x%3D%2211%22%20y%3D%2211.001%22%20width%3D%225%22%20height%3D%225%22%20rx%3D%221%22%20fill%3D%22%23E5E5E5%22%2F%3E%0A%3Crect%20x%3D%224.25%22%20y%3D%224.25098%22%20width%3D%224.5%22%20height%3D%224.5%22%20rx%3D%220.75%22%20fill%3D%22%230493EE%22%20stroke%3D%22%230493EE%22%20stroke-width%3D%220.5%22%2F%3E%0A%3Crect%20x%3D%2211.25%22%20y%3D%224.25098%22%20width%3D%224.5%22%20height%3D%224.5%22%20rx%3D%220.75%22%20fill%3D%22%230493EE%22%20stroke%3D%22%230493EE%22%20stroke-width%3D%220.5%22%2F%3E%0A%3C%2Fsvg%3E%0A",
383
380
  "cell-100": "data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20viewBox%3D%220%200%2020%2020%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Crect%20x%3D%224.25%22%20y%3D%2211.251%22%20width%3D%224.5%22%20height%3D%224.5%22%20rx%3D%220.75%22%20fill%3D%22%230493EE%22%20stroke%3D%22%230493EE%22%20stroke-width%3D%220.5%22%2F%3E%0A%3Crect%20x%3D%2211.25%22%20y%3D%2211.251%22%20width%3D%224.5%22%20height%3D%224.5%22%20rx%3D%220.75%22%20fill%3D%22%230493EE%22%20stroke%3D%22%230493EE%22%20stroke-width%3D%220.5%22%2F%3E%0A%3Crect%20x%3D%224.25%22%20y%3D%224.25098%22%20width%3D%224.5%22%20height%3D%224.5%22%20rx%3D%220.75%22%20fill%3D%22%230493EE%22%20stroke%3D%22%230493EE%22%20stroke-width%3D%220.5%22%2F%3E%0A%3Crect%20x%3D%2211.25%22%20y%3D%224.25098%22%20width%3D%224.5%22%20height%3D%224.5%22%20rx%3D%220.75%22%20fill%3D%22%230493EE%22%20stroke%3D%22%230493EE%22%20stroke-width%3D%220.5%22%2F%3E%0A%3C%2Fsvg%3E%0A"
384
- }, ICON_MAP = {
385
- feedback,
386
- star,
387
- progress,
388
- signal,
389
- feeling,
390
- arrow,
391
- shape,
392
- feedback2,
393
- flag,
394
- cell
395
- }, iconGroup = [
381
+ }, f = {
382
+ feedback: f0,
383
+ star: m0,
384
+ progress: F0,
385
+ signal: w0,
386
+ feeling: E0,
387
+ arrow: v0,
388
+ shape: p0,
389
+ feedback2: A0,
390
+ flag: x0,
391
+ cell: _0
392
+ }, M0 = [
396
393
  {
397
394
  title: "sheet.cf.iconSet.direction",
398
395
  group: [
399
- { name: "3Arrows", list: [ICON_MAP.arrow["up-green"], ICON_MAP.arrow["right-gold"], ICON_MAP.arrow["down-red"]] },
400
- { name: "3ArrowsGray", list: [ICON_MAP.arrow["up-gray"], ICON_MAP.arrow["right-gray"], ICON_MAP.arrow["down-gray"]] },
401
- { name: "4Arrows", list: [ICON_MAP.arrow["up-green"], ICON_MAP.arrow["rightAndUp-gold"], ICON_MAP.arrow["rightAndDown-gold"], ICON_MAP.arrow["down-red"]] },
402
- { name: "4ArrowsGray", list: [ICON_MAP.arrow["up-gray"], ICON_MAP.arrow["rightAndUp-gray"], ICON_MAP.arrow["rightAndDown-gray"], ICON_MAP.arrow["down-gray"]] },
403
- { name: "5Arrows", list: [ICON_MAP.arrow["up-green"], ICON_MAP.arrow["rightAndUp-gold"], ICON_MAP.arrow["right-gold"], ICON_MAP.arrow["rightAndDown-gold"], ICON_MAP.arrow["down-red"]] },
404
- { name: "5ArrowsGray", list: [ICON_MAP.arrow["up-gray"], ICON_MAP.arrow["rightAndUp-gray"], ICON_MAP.arrow["right-gray"], ICON_MAP.arrow["rightAndDown-gray"], ICON_MAP.arrow["down-gray"]] },
405
- { name: "3Triangles", list: [ICON_MAP.shape.up, ICON_MAP.shape.cross, ICON_MAP.shape.down] }
396
+ { name: "3Arrows", list: [f.arrow["up-green"], f.arrow["right-gold"], f.arrow["down-red"]] },
397
+ { name: "3ArrowsGray", list: [f.arrow["up-gray"], f.arrow["right-gray"], f.arrow["down-gray"]] },
398
+ { name: "4Arrows", list: [f.arrow["up-green"], f.arrow["rightAndUp-gold"], f.arrow["rightAndDown-gold"], f.arrow["down-red"]] },
399
+ { name: "4ArrowsGray", list: [f.arrow["up-gray"], f.arrow["rightAndUp-gray"], f.arrow["rightAndDown-gray"], f.arrow["down-gray"]] },
400
+ { name: "5Arrows", list: [f.arrow["up-green"], f.arrow["rightAndUp-gold"], f.arrow["right-gold"], f.arrow["rightAndDown-gold"], f.arrow["down-red"]] },
401
+ { name: "5ArrowsGray", list: [f.arrow["up-gray"], f.arrow["rightAndUp-gray"], f.arrow["right-gray"], f.arrow["rightAndDown-gray"], f.arrow["down-gray"]] },
402
+ { name: "3Triangles", list: [f.shape.up, f.shape.cross, f.shape.down] }
406
403
  ]
407
404
  },
408
405
  {
@@ -410,20 +407,20 @@ const feedback = {
410
407
  group: [
411
408
  {
412
409
  name: "3TrafficLights1",
413
- list: [ICON_MAP.shape["roundness-greed"], ICON_MAP.shape["roundness-gold"], ICON_MAP.shape["roundness-red"]]
410
+ list: [f.shape["roundness-greed"], f.shape["roundness-gold"], f.shape["roundness-red"]]
414
411
  },
415
412
  {
416
413
  name: "3Signs",
417
- list: [ICON_MAP.shape["roundness-greed"], ICON_MAP.shape["triangle-gold"], ICON_MAP.shape["rhomboid-red"]]
414
+ list: [f.shape["roundness-greed"], f.shape["triangle-gold"], f.shape["rhomboid-red"]]
418
415
  },
419
- { name: "3TrafficLights2", list: [ICON_MAP.shape["indicate-greed"], ICON_MAP.shape["indicate-gold"], ICON_MAP.shape["indicate-red"]] },
416
+ { name: "3TrafficLights2", list: [f.shape["indicate-greed"], f.shape["indicate-gold"], f.shape["indicate-red"]] },
420
417
  {
421
418
  name: "4RedToBlack",
422
- list: [ICON_MAP.shape["roundness-red"], ICON_MAP.shape["roundness-pink"], ICON_MAP.shape["roundness-gray"], ICON_MAP.shape["roundness-black"]]
419
+ list: [f.shape["roundness-red"], f.shape["roundness-pink"], f.shape["roundness-gray"], f.shape["roundness-black"]]
423
420
  },
424
421
  {
425
422
  name: "4TrafficLights",
426
- list: [ICON_MAP.shape["roundness-greed"], ICON_MAP.shape["roundness-gold"], ICON_MAP.shape["roundness-red"], ICON_MAP.shape["roundness-black"]]
423
+ list: [f.shape["roundness-greed"], f.shape["roundness-gold"], f.shape["roundness-red"], f.shape["roundness-black"]]
427
424
  }
428
425
  ]
429
426
  },
@@ -432,15 +429,15 @@ const feedback = {
432
429
  group: [
433
430
  {
434
431
  name: "3Symbols",
435
- list: [ICON_MAP.feedback.correct, ICON_MAP.feedback.warn, ICON_MAP.feedback.mistake]
432
+ list: [f.feedback.correct, f.feedback.warn, f.feedback.mistake]
436
433
  },
437
434
  {
438
435
  name: "3Symbols2",
439
- list: [ICON_MAP.feedback2.correct2, ICON_MAP.feedback2.warn2, ICON_MAP.feedback2.mistake2]
436
+ list: [f.feedback2.correct2, f.feedback2.warn2, f.feedback2.mistake2]
440
437
  },
441
438
  {
442
439
  name: "3Flags",
443
- list: [ICON_MAP.flag["flag-green"], ICON_MAP.flag["flag-gold"], ICON_MAP.flag["flag-red"]]
440
+ list: [f.flag["flag-green"], f.flag["flag-gold"], f.flag["flag-red"]]
444
441
  }
445
442
  ]
446
443
  },
@@ -449,282 +446,299 @@ const feedback = {
449
446
  group: [
450
447
  {
451
448
  name: "4Rating",
452
- list: [ICON_MAP.signal.signal25, ICON_MAP.signal.signal50, ICON_MAP.signal.signal75, ICON_MAP.signal.signal100]
449
+ list: [f.signal.signal25, f.signal.signal50, f.signal.signal75, f.signal.signal100]
453
450
  },
454
451
  {
455
452
  name: "5Rating",
456
- list: [ICON_MAP.signal.signal0, ICON_MAP.signal.signal25, ICON_MAP.signal.signal50, ICON_MAP.signal.signal75, ICON_MAP.signal.signal100]
453
+ list: [f.signal.signal0, f.signal.signal25, f.signal.signal50, f.signal.signal75, f.signal.signal100]
457
454
  },
458
455
  {
459
456
  name: "5Quarters",
460
- list: [ICON_MAP.progress.progress100, ICON_MAP.progress.progress75, ICON_MAP.progress.progress50, ICON_MAP.progress.progress25, ICON_MAP.progress.progress0]
457
+ list: [f.progress.progress100, f.progress.progress75, f.progress.progress50, f.progress.progress25, f.progress.progress0]
461
458
  },
462
459
  {
463
460
  name: "_5Felling",
464
- list: [ICON_MAP.feeling.guffaw, ICON_MAP.feeling.smile, ICON_MAP.feeling.noninductive, ICON_MAP.feeling.dissatisfied, ICON_MAP.feeling.impatient]
461
+ list: [f.feeling.guffaw, f.feeling.smile, f.feeling.noninductive, f.feeling.dissatisfied, f.feeling.impatient]
465
462
  },
466
463
  {
467
464
  name: "5Boxes",
468
- list: [ICON_MAP.cell["cell-100"], ICON_MAP.cell["cell-75"], ICON_MAP.cell["cell-50"], ICON_MAP.cell["cell-25"], ICON_MAP.cell["cell-0"]]
465
+ list: [f.cell["cell-100"], f.cell["cell-75"], f.cell["cell-50"], f.cell["cell-25"], f.cell["cell-0"]]
469
466
  },
470
467
  {
471
468
  name: "3Stars",
472
- list: [ICON_MAP.star.starFull, ICON_MAP.star.starIncomplete, ICON_MAP.star.starEmpty]
469
+ list: [f.star.starFull, f.star.starIncomplete, f.star.starEmpty]
473
470
  }
474
471
  ]
475
472
  }
476
- ], iconMap = iconGroup.reduce((result, cur) => {
477
- const { group } = cur;
478
- for (const v of group)
479
- result[v.name] = v.list;
480
- return result;
473
+ ], n2 = M0.reduce((n, i) => {
474
+ const { group: t } = i;
475
+ for (const e of t)
476
+ n[e.name] = e.list;
477
+ return n;
481
478
  }, {});
482
- for (const key in iconMap) {
483
- const v = iconMap[key];
484
- Object.freeze(v);
479
+ for (const n in n2) {
480
+ const i = n2[n];
481
+ Object.freeze(i);
485
482
  }
486
- const EMPTY_ICON_TYPE = "EMPTY_ICON_TYPE", MoveConditionalRuleMutation = {
487
- type: CommandType.MUTATION,
483
+ const y0 = "EMPTY_ICON_TYPE", f2 = {
484
+ type: Q.MUTATION,
488
485
  id: "sheet.mutation.move-conditional-rule",
489
- handler(accessor, params) {
490
- if (!params)
486
+ handler(n, i) {
487
+ if (!i)
491
488
  return !1;
492
- const { unitId, subUnitId, start, end } = params;
493
- return accessor.get(ConditionalFormattingRuleModel).moveRulePriority(unitId, subUnitId, start, end), !0;
489
+ const { unitId: t, subUnitId: e, start: s, end: r } = i;
490
+ return n.get(V).moveRulePriority(t, e, s, r), !0;
494
491
  }
495
- }, MoveConditionalRuleMutationUndoFactory = /* @__PURE__ */ __name((param) => {
496
- const { unitId, subUnitId } = param, undo = anchorUndoFactory(param.start, param.end);
497
- if (!undo)
492
+ }, v1 = (n) => {
493
+ const { unitId: i, subUnitId: t } = n, e = h0(n.start, n.end);
494
+ if (!e)
498
495
  return [];
499
- const [start, end] = undo;
496
+ const [s, r] = e;
500
497
  return [
501
498
  {
502
- id: MoveConditionalRuleMutation.id,
503
- params: { unitId, subUnitId, start, end }
499
+ id: f2.id,
500
+ params: { unitId: i, subUnitId: t, start: s, end: r }
504
501
  }
505
502
  ];
506
- }, "MoveConditionalRuleMutationUndoFactory"), DeleteConditionalRuleMutationUndoFactory = /* @__PURE__ */ __name((accessor, param) => {
507
- const conditionalFormattingRuleModel = accessor.get(ConditionalFormattingRuleModel), { unitId, subUnitId, cfId } = param, ruleList = [...conditionalFormattingRuleModel.getSubunitRules(unitId, subUnitId) || []], index = ruleList.findIndex((item) => item.cfId === cfId), beforeRule = ruleList[index - 1];
508
- if (index > -1) {
509
- const rule = ruleList[index], result = [{
510
- id: AddConditionalRuleMutation.id,
511
- params: { unitId, subUnitId, rule: Tools.deepClone(rule) }
503
+ }, R0 = (n, i) => {
504
+ const t = n.get(V), { unitId: e, subUnitId: s, cfId: r } = i, a = [...t.getSubunitRules(e, s) || []], o = a.findIndex((c) => c.cfId === r), l = a[o - 1];
505
+ if (o > -1) {
506
+ const c = a[o], h = [{
507
+ id: b2.id,
508
+ params: { unitId: e, subUnitId: s, rule: Y.deepClone(c) }
512
509
  }];
513
- if (ruleList.splice(index, 1), index !== 0) {
514
- const firstRule = ruleList[0];
515
- if (firstRule) {
516
- const transformResult = transformSupportSymmetryAnchor({ id: firstRule.cfId, type: "before" }, { id: beforeRule.cfId, type: "after" }, ruleList, (rule2) => rule2.cfId);
517
- if (!transformResult)
518
- return result;
519
- const [start, end] = transformResult, params = {
520
- unitId,
521
- subUnitId,
522
- start,
523
- end
510
+ if (a.splice(o, 1), o !== 0) {
511
+ const u = a[0];
512
+ if (u) {
513
+ const g = u0({ id: u.cfId, type: "before" }, { id: l.cfId, type: "after" }, a, (m) => m.cfId);
514
+ if (!g)
515
+ return h;
516
+ const [d, D] = g, C = {
517
+ unitId: e,
518
+ subUnitId: s,
519
+ start: d,
520
+ end: D
524
521
  };
525
- result.push({ id: MoveConditionalRuleMutation.id, params });
522
+ h.push({ id: f2.id, params: C });
526
523
  }
527
524
  }
528
- return result;
525
+ return h;
529
526
  }
530
527
  return [];
531
- }, "DeleteConditionalRuleMutationUndoFactory"), DeleteConditionalRuleMutation = {
532
- type: CommandType.MUTATION,
528
+ }, m2 = {
529
+ type: Q.MUTATION,
533
530
  id: "sheet.mutation.delete-conditional-rule",
534
- handler(accessor, params) {
535
- if (!params)
531
+ handler(n, i) {
532
+ if (!i)
536
533
  return !1;
537
- const { unitId, subUnitId, cfId } = params;
538
- return accessor.get(ConditionalFormattingRuleModel).deleteRule(unitId, subUnitId, cfId), !0;
534
+ const { unitId: t, subUnitId: e, cfId: s } = i;
535
+ return n.get(V).deleteRule(t, e, s), !0;
539
536
  }
540
- }, AddConditionalRuleMutationUndoFactory = /* @__PURE__ */ __name((accessor, param) => ({ id: DeleteConditionalRuleMutation.id, params: { unitId: param.unitId, subUnitId: param.subUnitId, cfId: param.rule.cfId } }), "AddConditionalRuleMutationUndoFactory"), AddConditionalRuleMutation = {
541
- type: CommandType.MUTATION,
537
+ }, p1 = (n, i) => ({ id: m2.id, params: { unitId: i.unitId, subUnitId: i.subUnitId, cfId: i.rule.cfId } }), b2 = {
538
+ type: Q.MUTATION,
542
539
  id: "sheet.mutation.add-conditional-rule",
543
- handler(accessor, params) {
544
- if (!params)
540
+ handler(n, i) {
541
+ if (!i)
545
542
  return !1;
546
- const { unitId, subUnitId, rule } = params;
547
- return accessor.get(ConditionalFormattingRuleModel).addRule(unitId, subUnitId, rule), !0;
543
+ const { unitId: t, subUnitId: e, rule: s } = i;
544
+ return n.get(V).addRule(t, e, s), !0;
548
545
  }
549
- }, ConditionalFormattingFormulaMarkDirty = {
550
- type: CommandType.MUTATION,
546
+ }, i2 = {
547
+ type: Q.MUTATION,
551
548
  id: "sheet.mutation.conditional-formatting-formula-mark-dirty",
552
549
  handler() {
553
550
  return !0;
554
551
  }
555
- }, SetConditionalRuleMutation = {
556
- type: CommandType.MUTATION,
552
+ }, S2 = {
553
+ type: Q.MUTATION,
557
554
  id: "sheet.mutation.set-conditional-rule",
558
- handler(accessor, params) {
559
- if (!params)
555
+ handler(n, i) {
556
+ if (!i)
560
557
  return !1;
561
- const { unitId, subUnitId, rule } = params, cfId = params.cfId || params.rule.cfId;
562
- return accessor.get(ConditionalFormattingRuleModel).setRule(unitId, subUnitId, rule, cfId), !0;
558
+ const { unitId: t, subUnitId: e, rule: s } = i, r = i.cfId || i.rule.cfId;
559
+ return n.get(V).setRule(t, e, s, r), !0;
563
560
  }
564
- }, setConditionalRuleMutationUndoFactory = /* @__PURE__ */ __name((accessor, param) => {
565
- const conditionalFormattingRuleModel = accessor.get(ConditionalFormattingRuleModel), { unitId, subUnitId } = param, cfId = param.cfId || param.rule.cfId, rule = conditionalFormattingRuleModel.getRule(unitId, subUnitId, cfId);
566
- return rule ? [
561
+ }, A1 = (n, i) => {
562
+ const t = n.get(V), { unitId: e, subUnitId: s } = i, r = i.cfId || i.rule.cfId, a = t.getRule(e, s, r);
563
+ return a ? [
567
564
  {
568
- id: SetConditionalRuleMutation.id,
565
+ id: S2.id,
569
566
  params: {
570
- unitId,
571
- subUnitId,
572
- cfId,
573
- rule: Tools.deepClone(rule)
567
+ unitId: e,
568
+ subUnitId: s,
569
+ cfId: r,
570
+ rule: Y.deepClone(a)
574
571
  }
575
572
  }
576
573
  ] : [];
577
- }, "setConditionalRuleMutationUndoFactory"), PLUGIN_CONFIG_KEY = "ssheets-conditional-formatting.config", defaultPluginConfig = {};
578
- var __defProp$2 = Object.defineProperty, __getOwnPropDesc$2 = Object.getOwnPropertyDescriptor, __decorateClass$2 = /* @__PURE__ */ __name((decorators, target, key, kind) => {
579
- for (var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$2(target, key) : target, i = decorators.length - 1, decorator; i >= 0; i--)
580
- (decorator = decorators[i]) && (result = (kind ? decorator(target, key, result) : decorator(result)) || result);
581
- return kind && result && __defProp$2(target, key, result), result;
582
- }, "__decorateClass$2"), __decorateParam$2 = /* @__PURE__ */ __name((index, decorator) => (target, key) => decorator(target, key, index), "__decorateParam$2"), FormulaResultStatus = /* @__PURE__ */ ((FormulaResultStatus2) => (FormulaResultStatus2[FormulaResultStatus2.NOT_REGISTER = 1] = "NOT_REGISTER", FormulaResultStatus2[FormulaResultStatus2.SUCCESS = 2] = "SUCCESS", FormulaResultStatus2[FormulaResultStatus2.WAIT = 3] = "WAIT", FormulaResultStatus2[FormulaResultStatus2.ERROR = 4] = "ERROR", FormulaResultStatus2))(FormulaResultStatus || {});
583
- const getResultFromFormula = /* @__PURE__ */ __name((formulaResult) => {
584
- const v = formulaResult && formulaResult[0] && formulaResult[0][0];
585
- return (v == null ? void 0 : v.t) === CellValueType.BOOLEAN ? v.v === BooleanNumber.TRUE || v.v === !0 : v ? v.v : !1;
586
- }, "getResultFromFormula");
587
- var _a2;
588
- let ConditionalFormattingFormulaService = (_a2 = class extends Disposable {
589
- constructor(_commandService, _injector, _activeDirtyManagerService, _conditionalFormattingViewModel, _conditionalFormattingRuleModel) {
574
+ }, I0 = "ssheets-conditional-formatting.config", L0 = {};
575
+ var b0 = Object.defineProperty, S0 = Object.getOwnPropertyDescriptor, B0 = (n, i, t, e) => {
576
+ for (var s = e > 1 ? void 0 : e ? S0(i, t) : i, r = n.length - 1, a; r >= 0; r--)
577
+ (a = n[r]) && (s = (e ? a(i, t, s) : a(s)) || s);
578
+ return e && s && b0(i, t, s), s;
579
+ }, K = (n, i) => (t, e) => i(t, e, n), y = /* @__PURE__ */ ((n) => (n[n.NOT_REGISTER = 1] = "NOT_REGISTER", n[n.SUCCESS = 2] = "SUCCESS", n[n.WAIT = 3] = "WAIT", n[n.ERROR = 4] = "ERROR", n))(y || {});
580
+ const k0 = (n) => {
581
+ const i = n && n[0] && n[0][0];
582
+ return (i == null ? void 0 : i.t) === B.BOOLEAN ? i.v === _2.TRUE || i.v === !0 : i ? i.v : !1;
583
+ };
584
+ let N = class extends x2 {
585
+ constructor(i, t, e, s, r) {
590
586
  super();
591
- __publicField(this, "_formulaMap", /* @__PURE__ */ new Map());
592
- __publicField(this, "_cache", /* @__PURE__ */ new Map());
593
- __publicField(this, "_formulaChange$", new Subject());
594
- __publicField(this, "formulaChange$", this._formulaChange$.asObservable());
595
- this._commandService = _commandService, this._injector = _injector, this._activeDirtyManagerService = _activeDirtyManagerService, this._conditionalFormattingViewModel = _conditionalFormattingViewModel, this._conditionalFormattingRuleModel = _conditionalFormattingRuleModel, this._initFormulaCalculationResultChange(), this._initRuleChange(), this._initCache(), this.disposeWithMe(toDisposable(() => {
587
+ // Cache Formula ID and formula mapping.
588
+ E(this, "_formulaMap", /* @__PURE__ */ new Map());
589
+ // Cache style results, style replacement needs to wait until the formula has been calculated, then replace.
590
+ E(this, "_cache", /* @__PURE__ */ new Map());
591
+ this._commandService = i, this._injector = t, this._activeDirtyManagerService = e, this._conditionalFormattingViewModel = s, this._conditionalFormattingRuleModel = r, this._initFormulaCalculationResultChange(), this._initRuleChange(), this._initCache(), this.disposeWithMe(V2(() => {
596
592
  this._cache.clear(), this._formulaMap.clear();
597
593
  }));
598
594
  }
599
- dispose() {
600
- this._formulaChange$.complete();
601
- }
602
595
  _initCache() {
603
- const _conditionalFormattingService = this._injector.get(ConditionalFormattingService);
604
- this.disposeWithMe(_conditionalFormattingService.ruleComputeStatus$.subscribe((option) => {
605
- const { unitId, subUnitId, status, result, cfId } = option;
606
- status === "end" && result && this._ensureCacheMap(unitId, subUnitId).set(cfId, result);
607
- })), this.disposeWithMe(this._conditionalFormattingRuleModel.$ruleChange.subscribe((option) => {
608
- if (option.type === "delete") {
609
- const { unitId, subUnitId, rule } = option;
610
- this._deleteCache(unitId, subUnitId, rule.cfId);
596
+ const i = this._injector.get(z);
597
+ this.disposeWithMe(i.ruleComputeStatus$.subscribe((t) => {
598
+ const { unitId: e, subUnitId: s, status: r, result: a, cfId: o } = t;
599
+ r === "end" && a && this._ensureCacheMap(e, s).set(o, a);
600
+ })), this.disposeWithMe(this._conditionalFormattingRuleModel.$ruleChange.subscribe((t) => {
601
+ if (t.type === "delete") {
602
+ const { unitId: e, subUnitId: s, rule: r } = t;
603
+ this._deleteCache(e, s, r.cfId);
611
604
  }
612
605
  }));
613
606
  }
614
607
  _initRuleChange() {
615
- this.disposeWithMe(this._conditionalFormattingRuleModel.$ruleChange.subscribe((option) => {
616
- const { unitId, subUnitId, rule } = option;
617
- option.type === "delete" && this._removeFormulaByCfId(unitId, subUnitId, rule.cfId);
608
+ const i = (t) => {
609
+ switch (t.type) {
610
+ case L.colorScale:
611
+ return t.config.some((e) => e.value.type === U.formula);
612
+ case L.highlightCell:
613
+ return t.subType === _.formula;
614
+ case L.dataBar:
615
+ return [t.config.max, t.config.min].some((e) => e.type === U.formula);
616
+ case L.iconSet:
617
+ return t.config.some((e) => e.value.type === U.formula);
618
+ }
619
+ };
620
+ this.disposeWithMe(this._conditionalFormattingRuleModel.$ruleChange.subscribe((t) => {
621
+ const { unitId: e, subUnitId: s, rule: r, oldRule: a } = t;
622
+ t.type === "delete" && this._removeFormulaByCfId(e, s, r.cfId), t.type === "set" && (i(r.rule) || a && i(a.rule)) && this._removeFormulaByCfId(e, s, r.cfId);
618
623
  }));
619
624
  }
620
625
  _initFormulaCalculationResultChange() {
621
- this.disposeWithMe(this._commandService.onCommandExecuted((commandInfo) => {
622
- if (commandInfo.id === SetFormulaCalculationResultMutation.id) {
623
- const params = commandInfo.params;
624
- for (const unitId in params.unitOtherData)
625
- for (const subUnitId in params.unitOtherData[unitId]) {
626
- const map2 = this.getSubUnitFormulaMap(unitId, subUnitId);
627
- if (!map2)
628
- continue;
629
- const cfIdSet = /* @__PURE__ */ new Set();
630
- for (const formulaId in params.unitOtherData[unitId][subUnitId]) {
631
- const item = map2.getValue(formulaId, ["formulaId"]);
632
- if (item) {
633
- const value = getResultFromFormula(params.unitOtherData[unitId][subUnitId][formulaId]);
634
- item.result = value, item.status = 2, cfIdSet.add(item.cfId);
635
- }
626
+ this.disposeWithMe(this._commandService.onCommandExecuted((i) => {
627
+ if (i.id === r0.id) {
628
+ const t = i.params;
629
+ for (const e in t.unitOtherData)
630
+ for (const s in t.unitOtherData[e]) {
631
+ const r = /* @__PURE__ */ new Set();
632
+ for (const a in t.unitOtherData[e][s]) {
633
+ const o = new I(t.unitOtherData[e][s][a]), l = this._ensureSubunitFormulaMap(e, s).getValue(a, ["formulaId"]);
634
+ if (!l)
635
+ continue;
636
+ const c = l.ranges;
637
+ if (!c)
638
+ continue;
639
+ const h = l.result, u = c[0].startRow, g = c[0].startColumn;
640
+ o.forValue((d, D, C) => {
641
+ h.setValue(u + d, g + D, k0(C));
642
+ }), l.status = 2, r.add(l.cfId);
636
643
  }
637
- for (const cfId of cfIdSet) {
638
- const rule = this._conditionalFormattingRuleModel.getRule(unitId, subUnitId, cfId);
639
- rule && this._conditionalFormattingViewModel.markRuleDirty(unitId, subUnitId, rule);
644
+ for (const a of r) {
645
+ const o = this._conditionalFormattingRuleModel.getRule(e, s, a);
646
+ o && this._conditionalFormattingViewModel.markRuleDirty(e, s, o);
640
647
  }
641
648
  }
642
649
  }
643
650
  })), this._activeDirtyManagerService.register(
644
- ConditionalFormattingFormulaMarkDirty.id,
651
+ i2.id,
645
652
  {
646
- commandId: ConditionalFormattingFormulaMarkDirty.id,
647
- getDirtyData(commandInfo) {
653
+ commandId: i2.id,
654
+ getDirtyData(i) {
648
655
  return {
649
- dirtyUnitOtherFormulaMap: commandInfo.params
656
+ dirtyUnitOtherFormulaMap: i.params
650
657
  };
651
658
  }
652
659
  }
653
- ), this.formulaChange$.pipe(bufferTime(16), filter((list) => !!list.length), map((list) => list.reduce((result, cur) => {
654
- const { unitId, subUnitId, formulaId, formulaText } = cur;
655
- return result[unitId] || (result[unitId] = {}), result[unitId][subUnitId] || (result[unitId][subUnitId] = {}), result[unitId][subUnitId][formulaId] = { f: formulaText }, result;
656
- }, {}))).subscribe((result) => {
657
- for (const unitId in result)
658
- for (const subUnitId in result[unitId]) {
659
- const value = result[unitId][subUnitId], config = { unitId, subUnitId, formulaMap: value };
660
- this._commandService.executeCommand(SetOtherFormulaMutation.id, config).then(() => {
661
- this._commandService.executeCommand(
662
- ConditionalFormattingFormulaMarkDirty.id,
663
- { [unitId]: { [subUnitId]: value } }
664
- );
665
- });
666
- }
667
- });
660
+ );
668
661
  }
669
- _ensureSubunitFormulaMap(unitId, subUnitId) {
670
- let unitMap = this._formulaMap.get(unitId);
671
- unitMap || (unitMap = /* @__PURE__ */ new Map(), this._formulaMap.set(unitId, unitMap));
672
- let subUnitMap = unitMap.get(subUnitId);
673
- return subUnitMap || (subUnitMap = new RefAlias([], ["formulaId", "formulaText"]), unitMap.set(subUnitId, subUnitMap)), subUnitMap;
674
- }
675
- _ensureCacheMap(unitId, subUnitId) {
676
- let unitMap = this._cache.get(unitId);
677
- unitMap || (unitMap = /* @__PURE__ */ new Map(), this._cache.set(unitId, unitMap));
678
- let subUnitMap = unitMap.get(subUnitId);
679
- return subUnitMap || (subUnitMap = /* @__PURE__ */ new Map(), unitMap.set(subUnitId, subUnitMap)), subUnitMap;
680
- }
681
- _deleteCache(unitId, subUnitId, cfId) {
682
- const unitCache = this._cache.get(unitId);
683
- if (unitCache) {
684
- const subUnitCache = unitCache.get(subUnitId);
685
- subUnitCache && (cfId ? subUnitCache.delete(cfId) : subUnitCache.clear());
662
+ _ensureSubunitFormulaMap(i, t) {
663
+ let e = this._formulaMap.get(i);
664
+ e || (e = /* @__PURE__ */ new Map(), this._formulaMap.set(i, e));
665
+ let s = e.get(t);
666
+ return s || (s = new U2([], ["formulaId", "id"]), e.set(t, s)), s;
667
+ }
668
+ _ensureCacheMap(i, t) {
669
+ let e = this._cache.get(i);
670
+ e || (e = /* @__PURE__ */ new Map(), this._cache.set(i, e));
671
+ let s = e.get(t);
672
+ return s || (s = /* @__PURE__ */ new Map(), e.set(t, s)), s;
673
+ }
674
+ _deleteCache(i, t, e) {
675
+ const s = this._cache.get(i);
676
+ if (s) {
677
+ const r = s.get(t);
678
+ r && (e ? r.delete(e) : r.clear());
686
679
  }
687
680
  }
688
- getCache(unitId, subUnitId, cfId) {
689
- return this._ensureCacheMap(unitId, subUnitId).get(cfId);
681
+ getCache(i, t, e) {
682
+ return this._ensureCacheMap(i, t).get(e);
690
683
  }
691
- getSubUnitFormulaMap(unitId, subUnitId) {
692
- var _a5;
693
- return (_a5 = this._formulaMap.get(unitId)) == null ? void 0 : _a5.get(subUnitId);
684
+ getSubUnitFormulaMap(i, t) {
685
+ var e;
686
+ return (e = this._formulaMap.get(i)) == null ? void 0 : e.get(t);
694
687
  }
695
- registerFormula(unitId, subUnitId, cfId, formulaText) {
696
- const subUnitFormulaMap = this._ensureSubunitFormulaMap(unitId, subUnitId), formulaItem = subUnitFormulaMap.getValue(formulaText, ["formulaText"]);
697
- if (formulaItem) {
698
- subUnitFormulaMap.getValues().some((item) => item.cfId === cfId) || formulaItem.count++;
688
+ registerFormulaWithRange(i, t, e, s, r = [{ startRow: 0, endRow: 0, startColumn: 0, endColumn: 0 }]) {
689
+ const a = this._ensureSubunitFormulaMap(i, t);
690
+ if (a.getValue(this.createCFormulaId(e, s), ["id"]))
699
691
  return;
700
- }
701
- const formulaId = this._createFormulaId(unitId, subUnitId);
702
- subUnitFormulaMap.addValue({ formulaId, formulaText, cfId, status: 3, count: 1 }), this._formulaChange$.next({ unitId, cfId, subUnitId, formulaText, formulaId });
703
- }
704
- _removeFormulaByCfId(unitId, subUnitId, cfId) {
705
- const subUnitFormulaMap = this._ensureSubunitFormulaMap(unitId, subUnitId), reduceCount = /* @__PURE__ */ __name((formulaText) => {
706
- const formulaItem = subUnitFormulaMap.getValue(formulaText, ["formulaText"]);
707
- formulaItem && (formulaItem.count--, formulaItem.count <= 0 && subUnitFormulaMap.deleteValue(formulaText));
708
- }, "reduceCount"), values = subUnitFormulaMap.getValues().filter((item) => item.cfId === cfId);
709
- values.forEach((item) => {
710
- reduceCount(item.formulaText);
692
+ const o = this._createFormulaId(i, t);
693
+ a.addValue({
694
+ formulaText: s,
695
+ cfId: e,
696
+ id: this.createCFormulaId(e, s),
697
+ ranges: r,
698
+ formulaId: o,
699
+ status: 3,
700
+ result: new I()
711
701
  });
712
- const formulaIdList = values.map((item) => item.formulaId);
713
- this._commandService.executeCommand(RemoveOtherFormulaMutation.id, { unitId, subUnitId, formulaIdList });
702
+ const l = {
703
+ unitId: i,
704
+ subUnitId: t,
705
+ formulaMap: {
706
+ [o]: {
707
+ f: s,
708
+ ranges: r
709
+ }
710
+ }
711
+ };
712
+ this._commandService.executeCommand(a0.id, l).then(() => {
713
+ this._commandService.executeCommand(
714
+ i2.id,
715
+ { [i]: { [t]: { [o]: !0 } } }
716
+ );
717
+ });
718
+ }
719
+ _removeFormulaByCfId(i, t, e) {
720
+ const s = this._ensureSubunitFormulaMap(i, t);
721
+ s.deleteValue(e);
722
+ const r = s.getValues().filter((o) => o.cfId === e);
723
+ r.forEach((o) => {
724
+ s.deleteValue(o.id, ["id"]);
725
+ });
726
+ const a = r.map((o) => o.formulaId);
727
+ this._commandService.executeCommand(o0.id, { unitId: i, subUnitId: t, formulaIdList: a });
714
728
  }
715
- getFormulaResult(unitId, subUnitId, formulaText) {
716
- const map2 = this.getSubUnitFormulaMap(unitId, subUnitId);
717
- if (!map2)
729
+ getFormulaResult(i, t, e, s, r = 0, a = 0) {
730
+ const o = this.getSubUnitFormulaMap(i, t);
731
+ if (!o)
718
732
  return {
719
733
  status: 1
720
734
  /* NOT_REGISTER */
721
735
  };
722
- const item = map2.getValue(formulaText, ["formulaText"]);
723
- return item ? item.status === 2 ? {
724
- result: item.result,
736
+ const l = o.getValue(this.createCFormulaId(e, s), ["id"]);
737
+ return l ? l.status === 2 && l.result ? {
738
+ result: l.result.getValue(r, a),
725
739
  status: 2
726
740
  /* SUCCESS */
727
- } : item.status === 3 ? {
741
+ } : l.status === 3 ? {
728
742
  status: 3
729
743
  /* WAIT */
730
744
  } : {
@@ -735,1150 +749,854 @@ let ConditionalFormattingFormulaService = (_a2 = class extends Disposable {
735
749
  /* NOT_REGISTER */
736
750
  };
737
751
  }
738
- _createFormulaId(unitId, subUnitId) {
739
- return `sheet.cf_${unitId}_${subUnitId}_${Tools.generateRandomId(8)}`;
740
- }
741
- }, __name(_a2, "ConditionalFormattingFormulaService"), _a2);
742
- ConditionalFormattingFormulaService = __decorateClass$2([
743
- __decorateParam$2(0, Inject(ICommandService)),
744
- __decorateParam$2(1, Inject(Injector)),
745
- __decorateParam$2(2, Inject(IActiveDirtyManagerService)),
746
- __decorateParam$2(3, Inject(ConditionalFormattingViewModel)),
747
- __decorateParam$2(4, Inject(ConditionalFormattingRuleModel))
748
- ], ConditionalFormattingFormulaService);
749
- var commonjsGlobal = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : {};
750
- function getDefaultExportFromCjs(x) {
751
- return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x.default : x;
752
- }
753
- __name(getDefaultExportFromCjs, "getDefaultExportFromCjs");
754
- var dayjs_min = { exports: {} };
755
- (function(module, exports) {
756
- (function(t, e) {
757
- module.exports = e();
758
- })(commonjsGlobal, function() {
759
- var t = 1e3, e = 6e4, n = 36e5, r = "millisecond", i = "second", s = "minute", u = "hour", a = "day", o = "week", c = "month", f = "quarter", h = "year", d = "date", l = "Invalid Date", $ = /^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/, y = /\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g, M = { name: "en", weekdays: "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), months: "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), ordinal: /* @__PURE__ */ __name(function(t2) {
760
- var e2 = ["th", "st", "nd", "rd"], n2 = t2 % 100;
761
- return "[" + t2 + (e2[(n2 - 20) % 10] || e2[n2] || e2[0]) + "]";
762
- }, "ordinal") }, m = /* @__PURE__ */ __name(function(t2, e2, n2) {
763
- var r2 = String(t2);
764
- return !r2 || r2.length >= e2 ? t2 : "" + Array(e2 + 1 - r2.length).join(n2) + t2;
765
- }, "m"), v = { s: m, z: /* @__PURE__ */ __name(function(t2) {
766
- var e2 = -t2.utcOffset(), n2 = Math.abs(e2), r2 = Math.floor(n2 / 60), i2 = n2 % 60;
767
- return (e2 <= 0 ? "+" : "-") + m(r2, 2, "0") + ":" + m(i2, 2, "0");
768
- }, "z"), m: /* @__PURE__ */ __name(function t2(e2, n2) {
769
- if (e2.date() < n2.date()) return -t2(n2, e2);
770
- var r2 = 12 * (n2.year() - e2.year()) + (n2.month() - e2.month()), i2 = e2.clone().add(r2, c), s2 = n2 - i2 < 0, u2 = e2.clone().add(r2 + (s2 ? -1 : 1), c);
771
- return +(-(r2 + (n2 - i2) / (s2 ? i2 - u2 : u2 - i2)) || 0);
772
- }, "t"), a: /* @__PURE__ */ __name(function(t2) {
773
- return t2 < 0 ? Math.ceil(t2) || 0 : Math.floor(t2);
774
- }, "a"), p: /* @__PURE__ */ __name(function(t2) {
775
- return { M: c, y: h, w: o, d: a, D: d, h: u, m: s, s: i, ms: r, Q: f }[t2] || String(t2 || "").toLowerCase().replace(/s$/, "");
776
- }, "p"), u: /* @__PURE__ */ __name(function(t2) {
777
- return t2 === void 0;
778
- }, "u") }, g = "en", D = {};
779
- D[g] = M;
780
- var p = "$isDayjsObject", S = /* @__PURE__ */ __name(function(t2) {
781
- return t2 instanceof _ || !(!t2 || !t2[p]);
782
- }, "S"), w = /* @__PURE__ */ __name(function t2(e2, n2, r2) {
783
- var i2;
784
- if (!e2) return g;
785
- if (typeof e2 == "string") {
786
- var s2 = e2.toLowerCase();
787
- D[s2] && (i2 = s2), n2 && (D[s2] = n2, i2 = s2);
788
- var u2 = e2.split("-");
789
- if (!i2 && u2.length > 1) return t2(u2[0]);
790
- } else {
791
- var a2 = e2.name;
792
- D[a2] = e2, i2 = a2;
793
- }
794
- return !r2 && i2 && (g = i2), i2 || !r2 && g;
795
- }, "t"), O = /* @__PURE__ */ __name(function(t2, e2) {
796
- if (S(t2)) return t2.clone();
797
- var n2 = typeof e2 == "object" ? e2 : {};
798
- return n2.date = t2, n2.args = arguments, new _(n2);
799
- }, "O"), b = v;
800
- b.l = w, b.i = S, b.w = function(t2, e2) {
801
- return O(t2, { locale: e2.$L, utc: e2.$u, x: e2.$x, $offset: e2.$offset });
802
- };
803
- var _ = function() {
804
- function M2(t2) {
805
- this.$L = w(t2.locale, null, !0), this.parse(t2), this.$x = this.$x || t2.x || {}, this[p] = !0;
806
- }
807
- __name(M2, "M");
808
- var m2 = M2.prototype;
809
- return m2.parse = function(t2) {
810
- this.$d = function(t3) {
811
- var e2 = t3.date, n2 = t3.utc;
812
- if (e2 === null) return /* @__PURE__ */ new Date(NaN);
813
- if (b.u(e2)) return /* @__PURE__ */ new Date();
814
- if (e2 instanceof Date) return new Date(e2);
815
- if (typeof e2 == "string" && !/Z$/i.test(e2)) {
816
- var r2 = e2.match($);
817
- if (r2) {
818
- var i2 = r2[2] - 1 || 0, s2 = (r2[7] || "0").substring(0, 3);
819
- return n2 ? new Date(Date.UTC(r2[1], i2, r2[3] || 1, r2[4] || 0, r2[5] || 0, r2[6] || 0, s2)) : new Date(r2[1], i2, r2[3] || 1, r2[4] || 0, r2[5] || 0, r2[6] || 0, s2);
820
- }
821
- }
822
- return new Date(e2);
823
- }(t2), this.init();
824
- }, m2.init = function() {
825
- var t2 = this.$d;
826
- this.$y = t2.getFullYear(), this.$M = t2.getMonth(), this.$D = t2.getDate(), this.$W = t2.getDay(), this.$H = t2.getHours(), this.$m = t2.getMinutes(), this.$s = t2.getSeconds(), this.$ms = t2.getMilliseconds();
827
- }, m2.$utils = function() {
828
- return b;
829
- }, m2.isValid = function() {
830
- return this.$d.toString() !== l;
831
- }, m2.isSame = function(t2, e2) {
832
- var n2 = O(t2);
833
- return this.startOf(e2) <= n2 && n2 <= this.endOf(e2);
834
- }, m2.isAfter = function(t2, e2) {
835
- return O(t2) < this.startOf(e2);
836
- }, m2.isBefore = function(t2, e2) {
837
- return this.endOf(e2) < O(t2);
838
- }, m2.$g = function(t2, e2, n2) {
839
- return b.u(t2) ? this[e2] : this.set(n2, t2);
840
- }, m2.unix = function() {
841
- return Math.floor(this.valueOf() / 1e3);
842
- }, m2.valueOf = function() {
843
- return this.$d.getTime();
844
- }, m2.startOf = function(t2, e2) {
845
- var n2 = this, r2 = !!b.u(e2) || e2, f2 = b.p(t2), l2 = /* @__PURE__ */ __name(function(t3, e3) {
846
- var i2 = b.w(n2.$u ? Date.UTC(n2.$y, e3, t3) : new Date(n2.$y, e3, t3), n2);
847
- return r2 ? i2 : i2.endOf(a);
848
- }, "l"), $2 = /* @__PURE__ */ __name(function(t3, e3) {
849
- return b.w(n2.toDate()[t3].apply(n2.toDate("s"), (r2 ? [0, 0, 0, 0] : [23, 59, 59, 999]).slice(e3)), n2);
850
- }, "$"), y2 = this.$W, M3 = this.$M, m3 = this.$D, v2 = "set" + (this.$u ? "UTC" : "");
851
- switch (f2) {
852
- case h:
853
- return r2 ? l2(1, 0) : l2(31, 11);
854
- case c:
855
- return r2 ? l2(1, M3) : l2(0, M3 + 1);
856
- case o:
857
- var g2 = this.$locale().weekStart || 0, D2 = (y2 < g2 ? y2 + 7 : y2) - g2;
858
- return l2(r2 ? m3 - D2 : m3 + (6 - D2), M3);
859
- case a:
860
- case d:
861
- return $2(v2 + "Hours", 0);
862
- case u:
863
- return $2(v2 + "Minutes", 1);
864
- case s:
865
- return $2(v2 + "Seconds", 2);
866
- case i:
867
- return $2(v2 + "Milliseconds", 3);
868
- default:
869
- return this.clone();
870
- }
871
- }, m2.endOf = function(t2) {
872
- return this.startOf(t2, !1);
873
- }, m2.$set = function(t2, e2) {
874
- var n2, o2 = b.p(t2), f2 = "set" + (this.$u ? "UTC" : ""), l2 = (n2 = {}, n2[a] = f2 + "Date", n2[d] = f2 + "Date", n2[c] = f2 + "Month", n2[h] = f2 + "FullYear", n2[u] = f2 + "Hours", n2[s] = f2 + "Minutes", n2[i] = f2 + "Seconds", n2[r] = f2 + "Milliseconds", n2)[o2], $2 = o2 === a ? this.$D + (e2 - this.$W) : e2;
875
- if (o2 === c || o2 === h) {
876
- var y2 = this.clone().set(d, 1);
877
- y2.$d[l2]($2), y2.init(), this.$d = y2.set(d, Math.min(this.$D, y2.daysInMonth())).$d;
878
- } else l2 && this.$d[l2]($2);
879
- return this.init(), this;
880
- }, m2.set = function(t2, e2) {
881
- return this.clone().$set(t2, e2);
882
- }, m2.get = function(t2) {
883
- return this[b.p(t2)]();
884
- }, m2.add = function(r2, f2) {
885
- var d2, l2 = this;
886
- r2 = Number(r2);
887
- var $2 = b.p(f2), y2 = /* @__PURE__ */ __name(function(t2) {
888
- var e2 = O(l2);
889
- return b.w(e2.date(e2.date() + Math.round(t2 * r2)), l2);
890
- }, "y");
891
- if ($2 === c) return this.set(c, this.$M + r2);
892
- if ($2 === h) return this.set(h, this.$y + r2);
893
- if ($2 === a) return y2(1);
894
- if ($2 === o) return y2(7);
895
- var M3 = (d2 = {}, d2[s] = e, d2[u] = n, d2[i] = t, d2)[$2] || 1, m3 = this.$d.getTime() + r2 * M3;
896
- return b.w(m3, this);
897
- }, m2.subtract = function(t2, e2) {
898
- return this.add(-1 * t2, e2);
899
- }, m2.format = function(t2) {
900
- var e2 = this, n2 = this.$locale();
901
- if (!this.isValid()) return n2.invalidDate || l;
902
- var r2 = t2 || "YYYY-MM-DDTHH:mm:ssZ", i2 = b.z(this), s2 = this.$H, u2 = this.$m, a2 = this.$M, o2 = n2.weekdays, c2 = n2.months, f2 = n2.meridiem, h2 = /* @__PURE__ */ __name(function(t3, n3, i3, s3) {
903
- return t3 && (t3[n3] || t3(e2, r2)) || i3[n3].slice(0, s3);
904
- }, "h"), d2 = /* @__PURE__ */ __name(function(t3) {
905
- return b.s(s2 % 12 || 12, t3, "0");
906
- }, "d"), $2 = f2 || function(t3, e3, n3) {
907
- var r3 = t3 < 12 ? "AM" : "PM";
908
- return n3 ? r3.toLowerCase() : r3;
909
- };
910
- return r2.replace(y, function(t3, r3) {
911
- return r3 || function(t4) {
912
- switch (t4) {
913
- case "YY":
914
- return String(e2.$y).slice(-2);
915
- case "YYYY":
916
- return b.s(e2.$y, 4, "0");
917
- case "M":
918
- return a2 + 1;
919
- case "MM":
920
- return b.s(a2 + 1, 2, "0");
921
- case "MMM":
922
- return h2(n2.monthsShort, a2, c2, 3);
923
- case "MMMM":
924
- return h2(c2, a2);
925
- case "D":
926
- return e2.$D;
927
- case "DD":
928
- return b.s(e2.$D, 2, "0");
929
- case "d":
930
- return String(e2.$W);
931
- case "dd":
932
- return h2(n2.weekdaysMin, e2.$W, o2, 2);
933
- case "ddd":
934
- return h2(n2.weekdaysShort, e2.$W, o2, 3);
935
- case "dddd":
936
- return o2[e2.$W];
937
- case "H":
938
- return String(s2);
939
- case "HH":
940
- return b.s(s2, 2, "0");
941
- case "h":
942
- return d2(1);
943
- case "hh":
944
- return d2(2);
945
- case "a":
946
- return $2(s2, u2, !0);
947
- case "A":
948
- return $2(s2, u2, !1);
949
- case "m":
950
- return String(u2);
951
- case "mm":
952
- return b.s(u2, 2, "0");
953
- case "s":
954
- return String(e2.$s);
955
- case "ss":
956
- return b.s(e2.$s, 2, "0");
957
- case "SSS":
958
- return b.s(e2.$ms, 3, "0");
959
- case "Z":
960
- return i2;
961
- }
962
- return null;
963
- }(t3) || i2.replace(":", "");
964
- });
965
- }, m2.utcOffset = function() {
966
- return 15 * -Math.round(this.$d.getTimezoneOffset() / 15);
967
- }, m2.diff = function(r2, d2, l2) {
968
- var $2, y2 = this, M3 = b.p(d2), m3 = O(r2), v2 = (m3.utcOffset() - this.utcOffset()) * e, g2 = this - m3, D2 = /* @__PURE__ */ __name(function() {
969
- return b.m(y2, m3);
970
- }, "D");
971
- switch (M3) {
972
- case h:
973
- $2 = D2() / 12;
974
- break;
975
- case c:
976
- $2 = D2();
977
- break;
978
- case f:
979
- $2 = D2() / 3;
980
- break;
981
- case o:
982
- $2 = (g2 - v2) / 6048e5;
983
- break;
984
- case a:
985
- $2 = (g2 - v2) / 864e5;
986
- break;
987
- case u:
988
- $2 = g2 / n;
989
- break;
990
- case s:
991
- $2 = g2 / e;
992
- break;
993
- case i:
994
- $2 = g2 / t;
995
- break;
996
- default:
997
- $2 = g2;
998
- }
999
- return l2 ? $2 : b.a($2);
1000
- }, m2.daysInMonth = function() {
1001
- return this.endOf(c).$D;
1002
- }, m2.$locale = function() {
1003
- return D[this.$L];
1004
- }, m2.locale = function(t2, e2) {
1005
- if (!t2) return this.$L;
1006
- var n2 = this.clone(), r2 = w(t2, e2, !0);
1007
- return r2 && (n2.$L = r2), n2;
1008
- }, m2.clone = function() {
1009
- return b.w(this.$d, this);
1010
- }, m2.toDate = function() {
1011
- return new Date(this.valueOf());
1012
- }, m2.toJSON = function() {
1013
- return this.isValid() ? this.toISOString() : null;
1014
- }, m2.toISOString = function() {
1015
- return this.$d.toISOString();
1016
- }, m2.toString = function() {
1017
- return this.$d.toUTCString();
1018
- }, M2;
1019
- }(), k = _.prototype;
1020
- return O.prototype = k, [["$ms", r], ["$s", i], ["$m", s], ["$H", u], ["$W", a], ["$M", c], ["$y", h], ["$D", d]].forEach(function(t2) {
1021
- k[t2[1]] = function(e2) {
1022
- return this.$g(e2, t2[0], t2[1]);
1023
- };
1024
- }), O.extend = function(t2, e2) {
1025
- return t2.$i || (t2(e2, _, O), t2.$i = !0), O;
1026
- }, O.locale = w, O.isDayjs = S, O.unix = function(t2) {
1027
- return O(1e3 * t2);
1028
- }, O.en = D[g], O.Ls = D, O.p = {}, O;
1029
- });
1030
- })(dayjs_min);
1031
- var dayjs_minExports = dayjs_min.exports;
1032
- const dayjs = /* @__PURE__ */ getDefaultExportFromCjs(dayjs_minExports);
1033
- function isFloatsEqual(a, b) {
1034
- return Math.abs(a - b) < Number.EPSILON;
752
+ _createFormulaId(i, t) {
753
+ return `sheet.cf_${i}_${t}_${Y.generateRandomId(8)}`;
754
+ }
755
+ createCFormulaId(i, t) {
756
+ return `${i}_${t}`;
757
+ }
758
+ };
759
+ N = B0([
760
+ K(0, M(C2)),
761
+ K(1, M(o2)),
762
+ K(2, M(n0)),
763
+ K(3, M(c2)),
764
+ K(4, M(V))
765
+ ], N);
766
+ function r2(n, i) {
767
+ return Math.abs(n - i) < Number.EPSILON;
1035
768
  }
1036
- __name(isFloatsEqual, "isFloatsEqual");
1037
- const isNullable = /* @__PURE__ */ __name((v) => [void 0, null].includes(v), "isNullable"), getCellValue = /* @__PURE__ */ __name((cell2) => {
1038
- var _a5, _b;
1039
- if (!cell2)
769
+ const k = (n) => [void 0, null].includes(n), T = (n) => {
770
+ var e, s;
771
+ if (!n)
1040
772
  return null;
1041
- if (cell2.t === CellValueType.BOOLEAN)
1042
- return cell2.v === BooleanNumber.TRUE ? BooleanValue.TRUE : BooleanValue.FALSE;
1043
- const v = cell2.v, dataStream = (_b = (_a5 = cell2.p) == null ? void 0 : _a5.body) == null ? void 0 : _b.dataStream.replace(/\r\n$/, "");
1044
- return isNullable(v) ? isNullable(dataStream) ? null : dataStream : v;
1045
- }, "getCellValue"), DAY_SIZE = 86400;
1046
- function toYMD_1900(ord, leap1900 = !0) {
1047
- if (leap1900 && ord >= 0) {
1048
- if (ord === 0)
773
+ if (n.t === B.BOOLEAN)
774
+ return n.v === _2.TRUE ? w2.TRUE : w2.FALSE;
775
+ const i = n.v, t = (s = (e = n.p) == null ? void 0 : e.body) == null ? void 0 : s.dataStream.replace(/\r\n$/, "");
776
+ return k(i) ? k(t) ? null : t : i;
777
+ }, d2 = 86400;
778
+ function V0(n, i = !0) {
779
+ if (i && n >= 0) {
780
+ if (n === 0)
1049
781
  return [1900, 1, 0];
1050
- if (ord === 60)
782
+ if (n === 60)
1051
783
  return [1900, 2, 29];
1052
- if (ord < 60)
1053
- return [1900, ord < 32 ? 1 : 2, (ord - 1) % 31 + 1];
1054
- }
1055
- let l = ord + 68569 + 2415019;
1056
- const n = Math.floor(4 * l / 146097);
1057
- l = l - Math.floor((146097 * n + 3) / 4);
1058
- const i = Math.floor(4e3 * (l + 1) / 1461001);
1059
- l = l - Math.floor(1461 * i / 4) + 31;
1060
- const j = Math.floor(80 * l / 2447), nDay = l - Math.floor(2447 * j / 80);
1061
- l = Math.floor(j / 11);
1062
- const nMonth = j + 2 - 12 * l;
1063
- return [100 * (n - 49) + i + l | 0, nMonth | 0, nDay | 0];
784
+ if (n < 60)
785
+ return [1900, n < 32 ? 1 : 2, (n - 1) % 31 + 1];
786
+ }
787
+ let t = n + 68569 + 2415019;
788
+ const e = Math.floor(4 * t / 146097);
789
+ t = t - Math.floor((146097 * e + 3) / 4);
790
+ const s = Math.floor(4e3 * (t + 1) / 1461001);
791
+ t = t - Math.floor(1461 * s / 4) + 31;
792
+ const r = Math.floor(80 * t / 2447), a = t - Math.floor(2447 * r / 80);
793
+ t = Math.floor(r / 11);
794
+ const o = r + 2 - 12 * t;
795
+ return [100 * (e - 49) + s + t | 0, o | 0, a | 0];
1064
796
  }
1065
- __name(toYMD_1900, "toYMD_1900");
1066
- const serialTimeToTimestamp = /* @__PURE__ */ __name((value) => {
1067
- let date = value | 0;
1068
- const t = DAY_SIZE * (value - date);
1069
- let time = Math.floor(t);
1070
- t - time > 0.9999 && (time += 1, time === DAY_SIZE && (time = 0, date += 1));
1071
- const x = time < 0 ? DAY_SIZE + time : time, [y, m, d] = toYMD_1900(value, !0), hh = Math.floor(x / 60 / 60) % 60, mm = Math.floor(x / 60) % 60, ss = Math.floor(x) % 60;
1072
- return dayjs(`${y}/${m}/${d} ${hh}:${mm}:${ss}`).valueOf();
1073
- }, "serialTimeToTimestamp"), getValueByType = /* @__PURE__ */ __name((value, matrix, context) => {
1074
- switch (value.type) {
1075
- case CFValueType.max: {
1076
- let max = 0;
1077
- return matrix.forValue((row, col, value2) => {
1078
- value2 > max && (max = value2);
797
+ const U0 = (n) => {
798
+ let i = n | 0;
799
+ const t = d2 * (n - i);
800
+ let e = Math.floor(t);
801
+ t - e > 0.9999 && (e += 1, e === d2 && (e = 0, i += 1));
802
+ const s = e < 0 ? d2 + e : e, [r, a, o] = V0(n, !0), l = Math.floor(s / 60 / 60) % 60, c = Math.floor(s / 60) % 60, h = Math.floor(s) % 60;
803
+ return x(`${r}/${a}/${o} ${l}:${c}:${h}`).valueOf();
804
+ }, a2 = (n, i, t) => {
805
+ switch (n.type) {
806
+ case U.max: {
807
+ let e = 0;
808
+ return i.forValue((s, r, a) => {
809
+ a > e && (e = a);
1079
810
  }), {
1080
- status: FormulaResultStatus.SUCCESS,
1081
- result: max
811
+ status: y.SUCCESS,
812
+ result: e
1082
813
  };
1083
814
  }
1084
- case CFValueType.min: {
1085
- let min;
1086
- return matrix.forValue((row, col, value2) => {
1087
- min === void 0 && (min = value2), value2 < min && (min = value2);
815
+ case U.min: {
816
+ let e;
817
+ return i.forValue((s, r, a) => {
818
+ e === void 0 && (e = a), a < e && (e = a);
1088
819
  }), {
1089
- status: FormulaResultStatus.SUCCESS,
1090
- result: min
820
+ status: y.SUCCESS,
821
+ result: e
1091
822
  };
1092
823
  }
1093
- case CFValueType.percent: {
1094
- let max, min;
1095
- matrix.forValue((row, col, value2) => {
1096
- (max === void 0 || min === void 0) && (max = value2, min = value2), value2 > max && (max = value2), value2 < min && (min = value2);
824
+ case U.percent: {
825
+ let e, s;
826
+ i.forValue((o, l, c) => {
827
+ (e === void 0 || s === void 0) && (e = c, s = c), c > e && (e = c), c < s && (s = c);
1097
828
  });
1098
- const length = (max || 0) - (min || 0), v = Math.max(Math.min(Number(value.value) || 0, 100), 0);
829
+ const r = (e || 0) - (s || 0), a = Math.max(Math.min(Number(n.value) || 0, 100), 0);
1099
830
  return {
1100
- status: FormulaResultStatus.SUCCESS,
1101
- result: length * (v / 100) + (min || 0)
831
+ status: y.SUCCESS,
832
+ result: r * (a / 100) + (s || 0)
1102
833
  };
1103
834
  }
1104
- case CFValueType.percentile: {
1105
- const list = matrix.toNativeArray().sort((a, b) => a - b), v = Math.max(Math.min(Number(value.value) || 0, 100), 0), index = (list.length - 1) * v / 100, intIndex = Math.floor(index), decimalIndex = index - intIndex, result = list[intIndex] + (list[Math.min(intIndex + 1, list.length - 1)] - list[intIndex]) * decimalIndex;
835
+ case U.percentile: {
836
+ const e = i.toNativeArray().sort((c, h) => c - h), s = Math.max(Math.min(Number(n.value) || 0, 100), 0), r = (e.length - 1) * s / 100, a = Math.floor(r), o = r - a, l = e[a] + (e[Math.min(a + 1, e.length - 1)] - e[a]) * o;
1106
837
  return {
1107
- status: FormulaResultStatus.SUCCESS,
1108
- result
838
+ status: y.SUCCESS,
839
+ result: l
1109
840
  };
1110
841
  }
1111
- case CFValueType.formula: {
1112
- const { accessor, unitId, subUnitId, cfId } = context, formulaText = String(value.value), conditionalFormattingFormulaService = accessor.get(ConditionalFormattingFormulaService);
1113
- return conditionalFormattingFormulaService.registerFormula(unitId, subUnitId, cfId, formulaText), conditionalFormattingFormulaService.getFormulaResult(unitId, subUnitId, formulaText);
842
+ case U.formula: {
843
+ const { accessor: e, unitId: s, subUnitId: r, cfId: a } = t, o = String(n.value), l = e.get(N);
844
+ return l.registerFormulaWithRange(s, r, a, o), l.getFormulaResult(s, r, a, o);
1114
845
  }
1115
- case CFValueType.num: {
1116
- const v = Number(value.value);
846
+ case U.num: {
847
+ const e = Number(n.value);
1117
848
  return {
1118
- status: FormulaResultStatus.SUCCESS,
1119
- result: Number.isNaN(v) ? 0 : v
849
+ status: y.SUCCESS,
850
+ result: Number.isNaN(e) ? 0 : e
1120
851
  };
1121
852
  }
1122
853
  }
1123
- }, "getValueByType"), getCacheStyleMatrix = /* @__PURE__ */ __name((unitId, subUnitId, rule, context) => {
1124
- const { accessor } = context, conditionalFormattingViewModel = accessor.get(ConditionalFormattingViewModel), matrix = new ObjectMatrix();
1125
- return rule.ranges.forEach((range) => {
1126
- Range.foreach(range, (row, col) => {
1127
- const cellCfItem = conditionalFormattingViewModel.getCellCf(unitId, subUnitId, row, col);
1128
- if (cellCfItem) {
1129
- const item = cellCfItem.cfList.find((item2) => item2.cfId === rule.cfId);
1130
- item != null && item.ruleCache && matrix.setValue(row, col, item.ruleCache);
854
+ }, x1 = (n, i, t, e) => {
855
+ const { accessor: s } = e, r = s.get(c2), a = new I();
856
+ return t.ranges.forEach((o) => {
857
+ R.foreach(o, (l, c) => {
858
+ const h = r.getCellCf(n, i, l, c);
859
+ if (h) {
860
+ const u = h.cfList.find((g) => g.cfId === t.cfId);
861
+ u != null && u.ruleCache && a.setValue(l, c, u.ruleCache);
1131
862
  }
1132
863
  });
1133
- }), matrix;
1134
- }, "getCacheStyleMatrix"), compareWithNumber = /* @__PURE__ */ __name((config, v) => {
1135
- switch (config.operator) {
1136
- case CFNumberOperator.between: {
1137
- if (typeof config.value != "object" || !config.value.length)
864
+ }), a;
865
+ }, J = (n, i) => {
866
+ switch (n.operator) {
867
+ case p.between: {
868
+ if (typeof n.value != "object" || !n.value.length)
1138
869
  return;
1139
- const start = Math.min(...config.value), end = Math.max(...config.value);
1140
- return v >= start && v <= end;
870
+ const t = Math.min(...n.value), e = Math.max(...n.value);
871
+ return i >= t && i <= e;
1141
872
  }
1142
- case CFNumberOperator.notBetween: {
1143
- if (typeof config.value != "object" || !config.value.length)
873
+ case p.notBetween: {
874
+ if (typeof n.value != "object" || !n.value.length)
1144
875
  return;
1145
- const start = Math.min(...config.value), end = Math.max(...config.value);
1146
- return !(v >= start && v <= end);
876
+ const t = Math.min(...n.value), e = Math.max(...n.value);
877
+ return !(i >= t && i <= e);
1147
878
  }
1148
- case CFNumberOperator.equal: {
1149
- const condition = config.value || 0;
1150
- return isFloatsEqual(condition, v);
879
+ case p.equal: {
880
+ const t = n.value || 0;
881
+ return r2(t, i);
1151
882
  }
1152
- case CFNumberOperator.notEqual: {
1153
- const condition = config.value || 0;
1154
- return !isFloatsEqual(condition, v);
883
+ case p.notEqual: {
884
+ const t = n.value || 0;
885
+ return !r2(t, i);
1155
886
  }
1156
- case CFNumberOperator.greaterThan: {
1157
- const condition = config.value || 0;
1158
- return v > condition;
887
+ case p.greaterThan: {
888
+ const t = n.value || 0;
889
+ return i > t;
1159
890
  }
1160
- case CFNumberOperator.greaterThanOrEqual: {
1161
- const condition = config.value || 0;
1162
- return v >= condition;
891
+ case p.greaterThanOrEqual: {
892
+ const t = n.value || 0;
893
+ return i >= t;
1163
894
  }
1164
- case CFNumberOperator.lessThan: {
1165
- const condition = config.value || 0;
1166
- return v < condition;
895
+ case p.lessThan: {
896
+ const t = n.value || 0;
897
+ return i < t;
1167
898
  }
1168
- case CFNumberOperator.lessThanOrEqual: {
1169
- const condition = config.value || 0;
1170
- return v <= condition;
899
+ case p.lessThanOrEqual: {
900
+ const t = n.value || 0;
901
+ return i <= t;
1171
902
  }
1172
903
  default:
1173
904
  return !1;
1174
905
  }
1175
- }, "compareWithNumber"), getOppositeOperator = /* @__PURE__ */ __name((operator) => {
1176
- switch (operator) {
1177
- case CFNumberOperator.greaterThan:
1178
- return CFNumberOperator.lessThanOrEqual;
1179
- case CFNumberOperator.greaterThanOrEqual:
1180
- return CFNumberOperator.lessThan;
1181
- case CFNumberOperator.lessThan:
1182
- return CFNumberOperator.greaterThanOrEqual;
1183
- case CFNumberOperator.lessThanOrEqual:
1184
- return CFNumberOperator.greaterThan;
1185
- }
1186
- return operator;
1187
- }, "getOppositeOperator"), getColorScaleFromValue = /* @__PURE__ */ __name((colorList, value) => {
1188
- const prefixRgba = /* @__PURE__ */ __name((rgb) => rgb.a !== void 0 ? rgb : { ...rgb, a: 1 }, "prefixRgba"), index = colorList.findIndex((item) => item.value >= value), preIndex = index - 1;
1189
- if (index === 0)
1190
- return colorList[0].color.toRgbString();
1191
- if (preIndex >= 0) {
1192
- const minItem = colorList[preIndex], maxItem = colorList[index];
1193
- if (minItem.color.isValid && maxItem.color.isValid) {
1194
- const minRgb = prefixRgba(minItem.color.toRgb()), maxRgb = prefixRgba(maxItem.color.toRgb()), length = maxItem.value - minItem.value, v = (value - minItem.value) / length, rgbResult = ["r", "g", "b", "a"].reduce((obj, key) => {
1195
- const minV = minRgb[key];
1196
- return obj[key] = (maxRgb[key] - minV) * v + minV, obj;
906
+ }, N0 = (n) => {
907
+ switch (n) {
908
+ case p.greaterThan:
909
+ return p.lessThanOrEqual;
910
+ case p.greaterThanOrEqual:
911
+ return p.lessThan;
912
+ case p.lessThan:
913
+ return p.greaterThanOrEqual;
914
+ case p.lessThanOrEqual:
915
+ return p.greaterThan;
916
+ }
917
+ return n;
918
+ }, O0 = (n, i) => {
919
+ const t = (r) => r.a !== void 0 ? r : { ...r, a: 1 }, e = n.findIndex((r) => r.value >= i), s = e - 1;
920
+ if (e === 0)
921
+ return n[0].color.toRgbString();
922
+ if (s >= 0) {
923
+ const r = n[s], a = n[e];
924
+ if (r.color.isValid && a.color.isValid) {
925
+ const o = t(r.color.toRgb()), l = t(a.color.toRgb()), c = a.value - r.value, h = (i - r.value) / c, u = ["r", "g", "b", "a"].reduce((d, D) => {
926
+ const C = o[D];
927
+ return d[D] = (l[D] - C) * h + C, d;
1197
928
  }, {});
1198
- return new ColorKit(rgbResult).toRgbString();
929
+ return new M2(u).toRgbString();
1199
930
  }
1200
931
  } else
1201
- return colorList[colorList.length - 1].color.toRgbString();
1202
- }, "getColorScaleFromValue"), filterRange = /* @__PURE__ */ __name((ranges, maxRow, maxCol) => ranges.map((range) => {
1203
- if (range.startColumn > maxCol || range.startRow > maxRow)
932
+ return n[n.length - 1].color.toRgbString();
933
+ }, u2 = (n, i, t) => n.map((e) => {
934
+ if (e.startColumn > t || e.startRow > i)
1204
935
  return null;
1205
- const _range = { ...range };
1206
- return _range.endRow = Math.min(_range.endRow, maxRow), _range.endColumn = Math.min(_range.endColumn, maxCol), _range;
1207
- }).filter((range) => !!range), "filterRange"), emptyStyle = "", colorScaleCellCalculateUnit = {
1208
- type: CFRuleType.colorScale,
1209
- handle: /* @__PURE__ */ __name(async (rule, context) => {
1210
- var _a5;
1211
- const ruleConfig = rule.rule, conditionalFormattingFormulaService = context.accessor.get(ConditionalFormattingFormulaService), { worksheet } = context, matrix = new ObjectMatrix(), ranges = filterRange(rule.ranges, worksheet.getMaxRows() - 1, worksheet.getMaxColumns() - 1);
1212
- ranges.forEach((range) => {
1213
- Range.foreach(range, (row, col) => {
1214
- const cell2 = worksheet == null ? void 0 : worksheet.getCellRaw(row, col), v = cell2 && cell2.v;
1215
- if (!isNullable(v) && (cell2 == null ? void 0 : cell2.t) === CellValueType.NUMBER) {
1216
- const _value = Number(v);
1217
- !Number.isNaN(_value) && matrix.setValue(row, col, _value);
936
+ const s = { ...e };
937
+ return s.endRow = Math.min(s.endRow, i), s.endColumn = Math.min(s.endColumn, t), s;
938
+ }).filter((e) => !!e);
939
+ function _1(n) {
940
+ let i = 0;
941
+ return new I(n).forValue((t, e, s) => {
942
+ i = Math.max(Number.isNaN(i) ? 0 : i, Number(s));
943
+ }), i;
944
+ }
945
+ const T0 = "", P0 = {
946
+ type: L.colorScale,
947
+ handle: async (n, i) => {
948
+ var u;
949
+ const t = n.rule, e = i.accessor.get(N), { worksheet: s } = i, r = new I(), a = u2(n.ranges, s.getMaxRows() - 1, s.getMaxColumns() - 1);
950
+ a.forEach((g) => {
951
+ R.foreach(g, (d, D) => {
952
+ const C = s == null ? void 0 : s.getCellRaw(d, D), m = C && C.v;
953
+ if (!k(m) && (C == null ? void 0 : C.t) === B.NUMBER) {
954
+ const F = Number(m);
955
+ !Number.isNaN(F) && r.setValue(d, D, F);
1218
956
  }
1219
957
  });
1220
958
  });
1221
- const computeResult = new ObjectMatrix();
1222
- ranges.forEach((range) => {
1223
- Range.foreach(range, (row, col) => {
1224
- computeResult.setValue(row, col, emptyStyle);
959
+ const o = new I();
960
+ a.forEach((g) => {
961
+ R.foreach(g, (d, D) => {
962
+ o.setValue(d, D, T0);
1225
963
  });
1226
964
  });
1227
- const _configList = [...ruleConfig.config].sort((a, b) => a.index - b.index).map((config) => ({
1228
- value: getValueByType(config.value, matrix, { ...context, cfId: rule.cfId }),
1229
- color: new ColorKit(config.color)
965
+ const l = [...t.config].sort((g, d) => g.index - d.index).map((g) => ({
966
+ value: a2(g.value, r, { ...i, cfId: n.cfId }),
967
+ color: new M2(g.color)
1230
968
  }));
1231
- if (_configList.some((item) => isObject(item.value) ? item.value.status !== FormulaResultStatus.SUCCESS : !1))
1232
- return (_a5 = conditionalFormattingFormulaService.getCache(context.unitId, context.subUnitId, rule.cfId)) != null ? _a5 : computeResult;
1233
- const colorList = _configList.map((item) => item.color).reduce((result, color, index) => (result.result.push({ color, value: result.sortValue[index] }), result), {
969
+ if (l.some((g) => i0(g.value) ? g.value.status !== y.SUCCESS : !1))
970
+ return (u = e.getCache(i.unitId, i.subUnitId, n.cfId)) != null ? u : o;
971
+ const h = l.map((g) => g.color).reduce((g, d, D) => (g.result.push({ color: d, value: g.sortValue[D] }), g), {
1234
972
  result: [],
1235
- sortValue: _configList.map((item) => item.value.result).sort((a, b) => a - b)
973
+ sortValue: l.map((g) => g.value.result).sort((g, d) => g - d)
1236
974
  }).result;
1237
- return colorList.length <= 1 || matrix.forValue((row, col, value) => {
1238
- const color = getColorScaleFromValue(colorList, value);
1239
- color && computeResult.setValue(row, col, color);
1240
- }), computeResult;
1241
- }, "handle")
1242
- }, dataBarUKey = "sheet-conditional-rule-data-bar", defaultDataBarPositiveColor = "#ffbe38", defaultDataBarNativeColor = "#abd91a", EXTENSION_Z_INDEX$1 = 34, _DataBar = class _DataBar extends SheetExtension {
975
+ return h.length <= 1 || r.forValue((g, d, D) => {
976
+ const C = O0(h, D);
977
+ C && o.setValue(g, d, C);
978
+ }), o;
979
+ }
980
+ }, $0 = "sheet-conditional-rule-data-bar", v2 = "#ffbe38", p2 = "#abd91a", W0 = 34;
981
+ class q0 extends I2 {
1243
982
  constructor() {
1244
983
  super(...arguments);
1245
- __publicField(this, "_paddingRightAndLeft", 2);
1246
- __publicField(this, "_paddingTopAndBottom", 2);
1247
- __publicField(this, "uKey", dataBarUKey);
1248
- __publicField(this, "Z_INDEX", EXTENSION_Z_INDEX$1);
1249
- __publicField(this, "_radius", 1);
984
+ E(this, "_paddingRightAndLeft", 2);
985
+ E(this, "_paddingTopAndBottom", 2);
986
+ E(this, "uKey", $0);
987
+ E(this, "Z_INDEX", W0);
988
+ E(this, "_radius", 1);
1250
989
  }
1251
990
  // eslint-disable-next-line max-lines-per-function
1252
- draw(ctx, _parentScale, spreadsheetSkeleton, diffRanges) {
1253
- const { worksheet } = spreadsheetSkeleton;
1254
- if (!worksheet)
991
+ draw(t, e, s, r) {
992
+ const { worksheet: a } = s;
993
+ if (!a)
1255
994
  return !1;
1256
- ctx.save(), Range.foreach(spreadsheetSkeleton.rowColumnSegment, (row, col) => {
1257
- if (!worksheet.getRowVisible(row) || !worksheet.getColVisible(col))
995
+ t.save(), R.foreach(s.rowColumnSegment, (o, l) => {
996
+ if (!a.getRowVisible(o) || !a.getColVisible(l))
1258
997
  return;
1259
- const cellData = worksheet.getCell(row, col);
1260
- if (cellData && cellData.dataBar) {
1261
- const { color, value, startPoint, isGradient } = cellData.dataBar, cellInfo = spreadsheetSkeleton.getCellByIndexWithNoHeader(row, col);
1262
- let { isMerged, isMergedMainCell, mergeInfo, startY, endY, startX, endX } = cellInfo;
1263
- if (isMerged || (isMergedMainCell && (startY = mergeInfo.startY, endY = mergeInfo.endY, startX = mergeInfo.startX, endX = mergeInfo.endX), !this.isRenderDiffRangesByCell(mergeInfo, diffRanges)))
998
+ const c = a.getCell(o, l);
999
+ if (c && c.dataBar) {
1000
+ const { color: h, value: u, startPoint: g, isGradient: d } = c.dataBar, D = s.getCellWithCoordByIndex(o, l, !1);
1001
+ let { isMerged: C, isMergedMainCell: m, mergeInfo: F, startY: w, endY: v, startX: A, endX: O } = D;
1002
+ if (C || (m && (w = F.startY, v = F.endY, A = F.startX, O = F.endX), !this.isRenderDiffRangesByCell(F, r)))
1264
1003
  return;
1265
- const borderWidth = endX - startX, borderHeight = endY + FIX_ONE_PIXEL_BLUR_OFFSET - startY, width = borderWidth - this._paddingRightAndLeft * 2, height = borderHeight - this._paddingTopAndBottom * 2;
1266
- if (value > 0) {
1267
- const dataBarWidth = Math.max(width * (1 - startPoint / 100) * value / 100, 1), x0 = startX + this._paddingRightAndLeft + startPoint / 100 * width, y0 = startY + this._paddingTopAndBottom;
1268
- if (isGradient) {
1269
- const gradient = ctx.createLinearGradient(x0, y0, x0 + dataBarWidth, y0);
1270
- gradient.addColorStop(0, color), gradient.addColorStop(1, "rgb(255 255 255)"), ctx.fillStyle = gradient, ctx.strokeStyle = color, ctx.lineWidth = 1;
1004
+ const P = O - A, h2 = v + s0 - w, e2 = P - this._paddingRightAndLeft * 2, F2 = h2 - this._paddingTopAndBottom * 2;
1005
+ if (u > 0) {
1006
+ const G = Math.max(e2 * (1 - g / 100) * u / 100, 1), $ = A + this._paddingRightAndLeft + g / 100 * e2, W = w + this._paddingTopAndBottom;
1007
+ if (d) {
1008
+ const q = t.createLinearGradient($, W, $ + G, W);
1009
+ q.addColorStop(0, h), q.addColorStop(1, "rgb(255 255 255)"), t.fillStyle = q, t.strokeStyle = h, t.lineWidth = 1;
1271
1010
  } else
1272
- ctx.fillStyle = color;
1273
- this._drawRectWithRoundedCorner(ctx, x0, y0, dataBarWidth, height, !1, !0, !0, !1), isGradient && ctx.stroke();
1011
+ t.fillStyle = h;
1012
+ this._drawRectWithRoundedCorner(t, $, W, G, F2, !1, !0, !0, !1), d && t.stroke();
1274
1013
  } else {
1275
- const dataBarWidth = Math.max(width * startPoint / 100 * Math.abs(value) / 100, 1), x0 = startX + this._paddingRightAndLeft + startPoint / 100 * width - dataBarWidth, y0 = startY + this._paddingTopAndBottom;
1276
- if (isGradient) {
1277
- const gradient = ctx.createLinearGradient(x0, y0, x0 + dataBarWidth, y0);
1278
- gradient.addColorStop(0, "rgb(255 255 255)"), gradient.addColorStop(1, color), ctx.fillStyle = gradient, ctx.strokeStyle = color, ctx.lineWidth = 1;
1014
+ const G = Math.max(e2 * g / 100 * Math.abs(u) / 100, 1), $ = A + this._paddingRightAndLeft + g / 100 * e2 - G, W = w + this._paddingTopAndBottom;
1015
+ if (d) {
1016
+ const q = t.createLinearGradient($, W, $ + G, W);
1017
+ q.addColorStop(0, "rgb(255 255 255)"), q.addColorStop(1, h), t.fillStyle = q, t.strokeStyle = h, t.lineWidth = 1;
1279
1018
  } else
1280
- ctx.fillStyle = color;
1281
- this._drawRectWithRoundedCorner(ctx, x0, y0, dataBarWidth, height, !0, !1, !1, !0), isGradient && ctx.stroke();
1019
+ t.fillStyle = h;
1020
+ this._drawRectWithRoundedCorner(t, $, W, G, F2, !0, !1, !1, !0), d && t.stroke();
1282
1021
  }
1283
1022
  }
1284
- }), ctx.restore();
1023
+ }), t.restore();
1285
1024
  }
1286
- _drawRectWithRoundedCorner(ctx, x, y, width, height, topLeftRadius, topRightRadius, bottomRightRadius, bottomLeftRadius) {
1287
- const radius = this._radius;
1288
- !height || !width || (ctx.beginPath(), ctx.moveTo(x + radius, y), ctx.lineTo(x + width - radius, y), topRightRadius ? ctx.arcTo(x + width, y, x + width, y + radius, radius) : ctx.lineTo(x + width, y), ctx.lineTo(x + width, y + height - radius), bottomRightRadius ? ctx.arcTo(x + width, y + height, x + width - radius, y + height, radius) : ctx.lineTo(x + width, y + height), ctx.lineTo(x + radius, y + height), bottomLeftRadius ? ctx.arcTo(x, y + height, x, y + height - radius, radius) : ctx.lineTo(x, y + height), ctx.lineTo(x, y + radius), topLeftRadius ? ctx.arcTo(x, y, x + radius, y, radius) : ctx.lineTo(x, y), ctx.closePath(), ctx.fill());
1025
+ _drawRectWithRoundedCorner(t, e, s, r, a, o, l, c, h) {
1026
+ const u = this._radius;
1027
+ !a || !r || (t.beginPath(), t.moveTo(e + u, s), t.lineTo(e + r - u, s), l ? t.arcTo(e + r, s, e + r, s + u, u) : t.lineTo(e + r, s), t.lineTo(e + r, s + a - u), c ? t.arcTo(e + r, s + a, e + r - u, s + a, u) : t.lineTo(e + r, s + a), t.lineTo(e + u, s + a), h ? t.arcTo(e, s + a, e, s + a - u, u) : t.lineTo(e, s + a), t.lineTo(e, s + u), o ? t.arcTo(e, s, e + u, s, u) : t.lineTo(e, s), t.closePath(), t.fill());
1289
1028
  }
1290
- };
1291
- __name(_DataBar, "DataBar");
1292
- let DataBar = _DataBar;
1293
- SpreadsheetExtensionRegistry.add(DataBar);
1294
- const EMPTY_STYLE = {};
1295
- Object.freeze(EMPTY_STYLE);
1296
- const dataBarCellCalculateUnit = {
1297
- type: CFRuleType.dataBar,
1029
+ }
1030
+ R2.add(q0);
1031
+ const X = {};
1032
+ Object.freeze(X);
1033
+ const Z0 = {
1034
+ type: L.dataBar,
1298
1035
  // eslint-disable-next-line max-lines-per-function
1299
- handle: /* @__PURE__ */ __name(async (rule, context) => {
1300
- const ruleConfig = rule.rule, conditionalFormattingFormulaService = context.accessor.get(ConditionalFormattingFormulaService), { worksheet } = context, matrix = new ObjectMatrix(), ranges = filterRange(rule.ranges, worksheet.getMaxRows() - 1, worksheet.getMaxColumns() - 1);
1301
- ranges.forEach((range) => {
1302
- Range.foreach(range, (row, col) => {
1303
- const cell2 = worksheet == null ? void 0 : worksheet.getCellRaw(row, col), v = cell2 && cell2.v;
1304
- if (!isNullable(v) && (cell2 == null ? void 0 : cell2.t) === CellValueType.NUMBER) {
1305
- const _value = Number(v);
1306
- !Number.isNaN(_value) && matrix.setValue(row, col, _value);
1036
+ handle: async (n, i) => {
1037
+ const t = n.rule, e = i.accessor.get(N), { worksheet: s } = i, r = new I(), a = u2(n.ranges, s.getMaxRows() - 1, s.getMaxColumns() - 1);
1038
+ a.forEach((C) => {
1039
+ R.foreach(C, (m, F) => {
1040
+ const w = s == null ? void 0 : s.getCellRaw(m, F), v = w && w.v;
1041
+ if (!k(v) && (w == null ? void 0 : w.t) === B.NUMBER) {
1042
+ const A = Number(v);
1043
+ !Number.isNaN(A) && r.setValue(m, F, A);
1307
1044
  }
1308
1045
  });
1309
1046
  });
1310
- const computeResult = new ObjectMatrix();
1311
- ranges.forEach((range) => {
1312
- Range.foreach(range, (row, col) => {
1313
- computeResult.setValue(row, col, EMPTY_STYLE);
1047
+ const o = new I();
1048
+ a.forEach((C) => {
1049
+ R.foreach(C, (m, F) => {
1050
+ o.setValue(m, F, X);
1314
1051
  });
1315
1052
  });
1316
- const _min = getValueByType(ruleConfig.config.min, matrix, { ...context, cfId: rule.cfId }), _max = getValueByType(ruleConfig.config.max, matrix, { ...context, cfId: rule.cfId });
1317
- let min = 0, max = 0;
1318
- if (_min.status === FormulaResultStatus.WAIT)
1319
- return conditionalFormattingFormulaService.getCache(context.unitId, context.subUnitId, rule.cfId) || computeResult;
1320
- if (_min.status === FormulaResultStatus.SUCCESS) {
1321
- const v = Number(_min.result);
1322
- min = Number.isNaN(v) ? 0 : v;
1053
+ const l = a2(t.config.min, r, { ...i, cfId: n.cfId }), c = a2(t.config.max, r, { ...i, cfId: n.cfId });
1054
+ let h = 0, u = 0;
1055
+ if (l.status === y.WAIT)
1056
+ return e.getCache(i.unitId, i.subUnitId, n.cfId) || o;
1057
+ if (l.status === y.SUCCESS) {
1058
+ const C = Number(l.result);
1059
+ h = Number.isNaN(C) ? 0 : C;
1323
1060
  } else
1324
- return computeResult;
1325
- if (_max.status === FormulaResultStatus.WAIT)
1326
- return conditionalFormattingFormulaService.getCache(context.unitId, context.subUnitId, rule.cfId) || computeResult;
1327
- if (_max.status === FormulaResultStatus.SUCCESS) {
1328
- const v = Number.isNaN(Number(_max.result)) ? 0 : Number(_max.result);
1329
- max = Math.max(v, min), min = Math.min(v, min);
1061
+ return o;
1062
+ if (c.status === y.WAIT)
1063
+ return e.getCache(i.unitId, i.subUnitId, n.cfId) || o;
1064
+ if (c.status === y.SUCCESS) {
1065
+ const C = Number(c.result), m = Number.isNaN(C) ? 0 : C;
1066
+ u = Math.max(m, h), h = Math.min(m, h);
1330
1067
  } else
1331
- return computeResult;
1332
- const isGradient = ruleConfig.config.isGradient, isShowValue = ruleConfig.isShowValue, getSafeValue = /* @__PURE__ */ __name((v) => Math.max(Math.min(100, v), 0), "getSafeValue");
1333
- if (!(min === max || max < min)) {
1334
- if (min < 0 && max <= 0) {
1335
- const length = max - min, startPoint = 100;
1336
- matrix.forValue((row, col, value) => {
1337
- if (value > max)
1068
+ return o;
1069
+ const g = t.config.isGradient, d = t.isShowValue, D = (C) => Math.max(Math.min(100, C), 0);
1070
+ if (!(h === u || u < h)) {
1071
+ if (h < 0 && u <= 0) {
1072
+ const C = u - h, m = 100;
1073
+ r.forValue((F, w, v) => {
1074
+ if (v > u)
1338
1075
  return;
1339
- const v = getSafeValue((max - value) / length * 100);
1340
- computeResult.setValue(row, col, { color: ruleConfig.config.nativeColor || defaultDataBarNativeColor, startPoint, value: -v, isGradient, isShowValue });
1076
+ const A = D((u - v) / C * 100);
1077
+ o.setValue(F, w, { color: t.config.nativeColor || p2, startPoint: m, value: -A, isGradient: g, isShowValue: d });
1341
1078
  });
1342
- } else if (min < 0 && max > 0) {
1343
- const length = Math.abs(max) + Math.abs(min), startPoint = Math.abs(min) / length * 100;
1344
- matrix.forValue((row, col, value) => {
1345
- if (value)
1346
- if (value > 0) {
1347
- const v = getSafeValue(Math.min(value / max, 1) * 100);
1348
- computeResult.setValue(row, col, { color: ruleConfig.config.positiveColor, startPoint, value: v, isGradient, isShowValue });
1079
+ } else if (h < 0 && u > 0) {
1080
+ const C = Math.abs(u) + Math.abs(h), m = Math.abs(h) / C * 100;
1081
+ r.forValue((F, w, v) => {
1082
+ if (v)
1083
+ if (v > 0) {
1084
+ const A = D(Math.min(v / u, 1) * 100);
1085
+ o.setValue(F, w, { color: t.config.positiveColor || v2, startPoint: m, value: A, isGradient: g, isShowValue: d });
1349
1086
  } else {
1350
- const v = getSafeValue(Math.min(Math.abs(value) / Math.abs(min), 1) * 100);
1351
- computeResult.setValue(row, col, { color: ruleConfig.config.nativeColor || defaultDataBarNativeColor, startPoint, value: -v, isGradient, isShowValue });
1087
+ const A = D(Math.min(Math.abs(v) / Math.abs(h), 1) * 100);
1088
+ o.setValue(F, w, { color: t.config.nativeColor || p2, startPoint: m, value: -A, isGradient: g, isShowValue: d });
1352
1089
  }
1353
1090
  });
1354
- } else if (min >= 0 && max > 0) {
1355
- const length = max - min, startPoint = 0;
1356
- matrix.forValue((row, col, value) => {
1357
- if (value < min)
1091
+ } else if (h >= 0 && u > 0) {
1092
+ const C = u - h, m = 0;
1093
+ r.forValue((F, w, v) => {
1094
+ if (v < h)
1358
1095
  return;
1359
- const v = getSafeValue((1 - (max - value) / length) * 100);
1360
- computeResult.setValue(row, col, { color: ruleConfig.config.positiveColor || defaultDataBarPositiveColor, startPoint, value: v, isGradient, isShowValue });
1096
+ const A = D((1 - (u - v) / C) * 100);
1097
+ o.setValue(F, w, { color: t.config.positiveColor || v2, startPoint: m, value: A, isGradient: g, isShowValue: d });
1361
1098
  });
1362
1099
  }
1363
1100
  }
1364
- return computeResult;
1365
- }, "handle")
1366
- }, highlightCellCalculateUnit = {
1367
- type: CFRuleType.highlightCell,
1368
- handle: /* @__PURE__ */ __name(async (rule, context) => {
1369
- const ruleConfig = rule.rule, { worksheet } = context, ranges = filterRange(rule.ranges, worksheet.getMaxRows() - 1, worksheet.getMaxColumns() - 1), cache = (/* @__PURE__ */ __name(() => {
1370
- switch (ruleConfig.subType) {
1371
- case CFSubRuleType.average: {
1372
- let sum = 0, count = 0;
1373
- return ranges.forEach((range) => {
1374
- Range.foreach(range, (row, col) => {
1375
- const cell2 = worksheet == null ? void 0 : worksheet.getCellRaw(row, col), v = getCellValue(cell2 || void 0);
1376
- cell2 && cell2.t === CellValueType.NUMBER && v !== void 0 && (sum += Number(v) || 0, count++);
1101
+ return o;
1102
+ }
1103
+ }, j0 = {
1104
+ type: L.highlightCell,
1105
+ handle: async (n, i) => {
1106
+ const t = n.rule, { worksheet: e, unitId: s, subUnitId: r } = i, a = u2(n.ranges, e.getMaxRows() - 1, e.getMaxColumns() - 1), l = (() => {
1107
+ switch (t.subType) {
1108
+ case _.average: {
1109
+ let u = 0, g = 0;
1110
+ return a.forEach((d) => {
1111
+ R.foreach(d, (D, C) => {
1112
+ const m = e == null ? void 0 : e.getCellRaw(D, C), F = T(m || void 0);
1113
+ m && m.t === B.NUMBER && F !== void 0 && (u += Number(F) || 0, g++);
1377
1114
  });
1378
- }), { average: sum / count };
1115
+ }), { average: u / g };
1379
1116
  }
1380
- case CFSubRuleType.uniqueValues:
1381
- case CFSubRuleType.duplicateValues: {
1382
- const cacheMap = /* @__PURE__ */ new Map();
1383
- return ranges.forEach((range) => {
1384
- Range.foreach(range, (row, col) => {
1385
- const cell2 = worksheet == null ? void 0 : worksheet.getCellRaw(row, col), v = getCellValue(cell2 || void 0);
1386
- if (v !== void 0) {
1387
- const cache2 = cacheMap.get(v);
1388
- cache2 ? cacheMap.set(v, cache2 + 1) : cacheMap.set(v, 1);
1117
+ case _.uniqueValues:
1118
+ case _.duplicateValues: {
1119
+ const u = /* @__PURE__ */ new Map();
1120
+ return a.forEach((g) => {
1121
+ R.foreach(g, (d, D) => {
1122
+ const C = e == null ? void 0 : e.getCellRaw(d, D), m = T(C || void 0);
1123
+ if (m !== void 0) {
1124
+ const F = u.get(m);
1125
+ F ? u.set(m, F + 1) : u.set(m, 1);
1389
1126
  }
1390
1127
  });
1391
- }), { count: cacheMap };
1128
+ }), { count: u };
1392
1129
  }
1393
- case CFSubRuleType.rank: {
1394
- const allValue = [];
1395
- ranges.forEach((range) => {
1396
- Range.foreach(range, (row, col) => {
1397
- const cell2 = worksheet == null ? void 0 : worksheet.getCellRaw(row, col), v = getCellValue(cell2 || void 0);
1398
- cell2 && cell2.t === CellValueType.NUMBER && v !== void 0 && allValue.push(Number(v) || 0);
1130
+ case _.rank: {
1131
+ const u = [];
1132
+ a.forEach((D) => {
1133
+ R.foreach(D, (C, m) => {
1134
+ const F = e == null ? void 0 : e.getCellRaw(C, m), w = T(F || void 0);
1135
+ F && F.t === B.NUMBER && w !== void 0 && u.push(Number(w) || 0);
1399
1136
  });
1400
- }), allValue.sort((a, b) => b - a);
1401
- const configRule = rule.rule, targetIndex = configRule.isPercent ? Math.floor(Math.max(Math.min(configRule.value, 100), 0) / 100 * allValue.length) : Math.floor(Math.max(Math.min(configRule.isBottom ? configRule.value - 1 : configRule.value, allValue.length), 0));
1402
- return configRule.isBottom ? { rank: allValue[allValue.length - targetIndex - 1] } : { rank: allValue[Math.max(targetIndex - 1, 0)] };
1137
+ }), u.sort((D, C) => C - D);
1138
+ const g = n.rule, d = g.isPercent ? Math.floor(Math.max(Math.min(g.value, 100), 0) / 100 * u.length) : Math.floor(Math.max(Math.min(g.isBottom ? g.value - 1 : g.value, u.length), 0));
1139
+ return g.isBottom ? { rank: u[u.length - d - 1] } : { rank: u[Math.max(d - 1, 0)] };
1403
1140
  }
1404
- case CFSubRuleType.formula: {
1405
- const subRuleConfig = ruleConfig, lexerTreeBuilder = context.accessor.get(LexerTreeBuilder), formulaString = subRuleConfig.value, sequenceNodes = lexerTreeBuilder.sequenceNodesBuilder(formulaString);
1406
- return sequenceNodes ? { sequenceNodes } : {
1407
- sequenceNodes: null
1408
- };
1141
+ case _.formula: {
1142
+ const u = t;
1143
+ i.accessor.get(N).registerFormulaWithRange(i.unitId, i.subUnitId, n.cfId, u.value, n.ranges);
1144
+ break;
1409
1145
  }
1410
- case CFSubRuleType.timePeriod:
1411
- switch (ruleConfig.operator) {
1412
- case CFTimePeriodOperator.last7Days:
1146
+ case _.timePeriod:
1147
+ switch (t.operator) {
1148
+ case S.last7Days:
1413
1149
  return {
1414
1150
  timePeriod: {
1415
- start: dayjs().subtract(7, "day").valueOf(),
1416
- end: dayjs().valueOf()
1151
+ start: x().subtract(7, "day").valueOf(),
1152
+ end: x().valueOf()
1417
1153
  }
1418
1154
  };
1419
- case CFTimePeriodOperator.lastMonth:
1155
+ case S.lastMonth:
1420
1156
  return {
1421
1157
  timePeriod: {
1422
- start: dayjs().startOf("month").subtract(1, "month").valueOf(),
1423
- end: dayjs().endOf("month").subtract(1, "month").valueOf()
1158
+ start: x().startOf("month").subtract(1, "month").valueOf(),
1159
+ end: x().endOf("month").subtract(1, "month").valueOf()
1424
1160
  }
1425
1161
  };
1426
- case CFTimePeriodOperator.lastWeek:
1162
+ case S.lastWeek:
1427
1163
  return {
1428
1164
  timePeriod: {
1429
- start: dayjs().startOf("week").subtract(1, "week").valueOf(),
1430
- end: dayjs().endOf("week").subtract(1, "week").valueOf()
1165
+ start: x().startOf("week").subtract(1, "week").valueOf(),
1166
+ end: x().endOf("week").subtract(1, "week").valueOf()
1431
1167
  }
1432
1168
  };
1433
- case CFTimePeriodOperator.nextMonth:
1169
+ case S.nextMonth:
1434
1170
  return {
1435
1171
  timePeriod: {
1436
- start: dayjs().startOf("month").add(1, "month").valueOf(),
1437
- end: dayjs().endOf("month").add(1, "month").valueOf()
1172
+ start: x().startOf("month").add(1, "month").valueOf(),
1173
+ end: x().endOf("month").add(1, "month").valueOf()
1438
1174
  }
1439
1175
  };
1440
- case CFTimePeriodOperator.nextWeek:
1176
+ case S.nextWeek:
1441
1177
  return {
1442
1178
  timePeriod: {
1443
- start: dayjs().startOf("week").add(1, "week").valueOf(),
1444
- end: dayjs().endOf("week").add(1, "week").valueOf()
1179
+ start: x().startOf("week").add(1, "week").valueOf(),
1180
+ end: x().endOf("week").add(1, "week").valueOf()
1445
1181
  }
1446
1182
  };
1447
- case CFTimePeriodOperator.thisMonth:
1183
+ case S.thisMonth:
1448
1184
  return {
1449
1185
  timePeriod: {
1450
- start: dayjs().startOf("month").valueOf(),
1451
- end: dayjs().endOf("month").valueOf()
1186
+ start: x().startOf("month").valueOf(),
1187
+ end: x().endOf("month").valueOf()
1452
1188
  }
1453
1189
  };
1454
- case CFTimePeriodOperator.thisWeek:
1190
+ case S.thisWeek:
1455
1191
  return {
1456
1192
  timePeriod: {
1457
- start: dayjs().startOf("week").valueOf(),
1458
- end: dayjs().endOf("week").valueOf()
1193
+ start: x().startOf("week").valueOf(),
1194
+ end: x().endOf("week").valueOf()
1459
1195
  }
1460
1196
  };
1461
- case CFTimePeriodOperator.today:
1197
+ case S.today:
1462
1198
  return {
1463
1199
  timePeriod: {
1464
- start: dayjs().startOf("day").valueOf(),
1465
- end: dayjs().endOf("day").valueOf()
1200
+ start: x().startOf("day").valueOf(),
1201
+ end: x().endOf("day").valueOf()
1466
1202
  }
1467
1203
  };
1468
- case CFTimePeriodOperator.tomorrow:
1204
+ case S.tomorrow:
1469
1205
  return {
1470
1206
  timePeriod: {
1471
- start: dayjs().startOf("day").add(1, "day").valueOf(),
1472
- end: dayjs().endOf("day").add(1, "day").valueOf()
1207
+ start: x().startOf("day").add(1, "day").valueOf(),
1208
+ end: x().endOf("day").add(1, "day").valueOf()
1473
1209
  }
1474
1210
  };
1475
- case CFTimePeriodOperator.yesterday:
1211
+ case S.yesterday:
1476
1212
  return {
1477
1213
  timePeriod: {
1478
- start: dayjs().startOf("day").subtract(1, "day").valueOf(),
1479
- end: dayjs().endOf("day").subtract(1, "day").valueOf()
1214
+ start: x().startOf("day").subtract(1, "day").valueOf(),
1215
+ end: x().endOf("day").subtract(1, "day").valueOf()
1480
1216
  }
1481
1217
  };
1482
1218
  }
1483
1219
  }
1484
- }, "getCache"))(), check = /* @__PURE__ */ __name((row, col) => {
1485
- const cellValue = worksheet == null ? void 0 : worksheet.getCellRaw(row, col);
1486
- switch (ruleConfig.subType) {
1487
- case CFSubRuleType.number: {
1488
- const v = cellValue && Number(cellValue.v);
1489
- if (isNullable(v) || Number.isNaN(v) || (cellValue == null ? void 0 : cellValue.t) !== CellValueType.NUMBER)
1220
+ })(), c = (u, g) => {
1221
+ const d = e == null ? void 0 : e.getCellRaw(u, g);
1222
+ switch (t.subType) {
1223
+ case _.number: {
1224
+ const D = d && Number(d.v);
1225
+ if (k(D) || Number.isNaN(D) || (d == null ? void 0 : d.t) !== B.NUMBER)
1490
1226
  return !1;
1491
- const subRuleConfig = ruleConfig;
1492
- return compareWithNumber({ operator: subRuleConfig.operator, value: subRuleConfig.value || 0 }, v || 0);
1227
+ const C = t;
1228
+ return J({ operator: C.operator, value: C.value || 0 }, D || 0);
1493
1229
  }
1494
- case CFSubRuleType.text: {
1495
- const subRuleConfig = ruleConfig, value = getCellValue(cellValue), v = value === null ? "" : String(value), condition = subRuleConfig.value || "";
1496
- switch (subRuleConfig.operator) {
1497
- case CFTextOperator.beginsWith:
1498
- return v.startsWith(condition);
1499
- case CFTextOperator.containsBlanks:
1500
- return /^\s*$/.test(v);
1501
- case CFTextOperator.notContainsBlanks:
1502
- return !/^\s*$/.test(v);
1503
- case CFTextOperator.containsErrors:
1504
- return ERROR_TYPE_SET.has(v);
1505
- case CFTextOperator.notContainsErrors:
1506
- return !ERROR_TYPE_SET.has(v);
1507
- case CFTextOperator.containsText:
1508
- return v.indexOf(condition) > -1;
1509
- case CFTextOperator.notContainsText:
1510
- return v.indexOf(condition) === -1;
1511
- case CFTextOperator.endsWith:
1512
- return v.endsWith(condition);
1513
- case CFTextOperator.equal:
1514
- return v === condition;
1515
- case CFTextOperator.notEqual:
1516
- return v !== condition;
1230
+ case _.text: {
1231
+ const D = t, C = T(d), m = C === null ? "" : String(C), F = D.value || "";
1232
+ switch (D.operator) {
1233
+ case b.beginsWith:
1234
+ return m.startsWith(F);
1235
+ case b.containsBlanks:
1236
+ return /^\s*$/.test(m);
1237
+ case b.notContainsBlanks:
1238
+ return !/^\s*$/.test(m);
1239
+ case b.containsErrors:
1240
+ return E2.has(m);
1241
+ case b.notContainsErrors:
1242
+ return !E2.has(m);
1243
+ case b.containsText:
1244
+ return m.indexOf(F) > -1;
1245
+ case b.notContainsText:
1246
+ return m.indexOf(F) === -1;
1247
+ case b.endsWith:
1248
+ return m.endsWith(F);
1249
+ case b.equal:
1250
+ return m === F;
1251
+ case b.notEqual:
1252
+ return m !== F;
1517
1253
  default:
1518
1254
  return !1;
1519
1255
  }
1520
1256
  }
1521
- case CFSubRuleType.timePeriod: {
1522
- const value = getCellValue(cellValue);
1523
- if (isNullable(value) || Number.isNaN(Number(value)) || (cellValue == null ? void 0 : cellValue.t) !== CellValueType.NUMBER)
1257
+ case _.timePeriod: {
1258
+ const D = T(d);
1259
+ if (k(D) || Number.isNaN(Number(D)) || (d == null ? void 0 : d.t) !== B.NUMBER)
1524
1260
  return !1;
1525
- const v = serialTimeToTimestamp(Number(value)), { start, end } = cache.timePeriod;
1526
- return v >= start && v <= end;
1261
+ const C = U0(Number(D)), { start: m, end: F } = l.timePeriod;
1262
+ return C >= m && C <= F;
1527
1263
  }
1528
- case CFSubRuleType.average: {
1529
- const value = cellValue && cellValue.v, v = Number(value);
1530
- if (isNullable(value) || Number.isNaN(v) || (cellValue == null ? void 0 : cellValue.t) !== CellValueType.NUMBER)
1264
+ case _.average: {
1265
+ const D = d && d.v, C = Number(D);
1266
+ if (k(D) || Number.isNaN(C) || (d == null ? void 0 : d.t) !== B.NUMBER)
1531
1267
  return !1;
1532
- const subRuleConfig = ruleConfig, average = cache == null ? void 0 : cache.average;
1533
- switch (subRuleConfig.operator) {
1534
- case CFNumberOperator.greaterThan:
1535
- return v > average;
1536
- case CFNumberOperator.greaterThanOrEqual:
1537
- return v >= average;
1538
- case CFNumberOperator.lessThan:
1539
- return v < average;
1540
- case CFNumberOperator.lessThanOrEqual:
1541
- return v <= average;
1542
- case CFNumberOperator.equal:
1543
- return isFloatsEqual(v, average);
1544
- case CFNumberOperator.notEqual:
1545
- return !isFloatsEqual(v, average);
1268
+ const m = t, F = l == null ? void 0 : l.average;
1269
+ switch (m.operator) {
1270
+ case p.greaterThan:
1271
+ return C > F;
1272
+ case p.greaterThanOrEqual:
1273
+ return C >= F;
1274
+ case p.lessThan:
1275
+ return C < F;
1276
+ case p.lessThanOrEqual:
1277
+ return C <= F;
1278
+ case p.equal:
1279
+ return r2(C, F);
1280
+ case p.notEqual:
1281
+ return !r2(C, F);
1546
1282
  default:
1547
1283
  return !1;
1548
1284
  }
1549
1285
  }
1550
- case CFSubRuleType.rank: {
1551
- const value = getCellValue(cellValue), v = Number(value);
1552
- if (isNullable(value) || Number.isNaN(v) || (cellValue == null ? void 0 : cellValue.t) !== CellValueType.NUMBER)
1286
+ case _.rank: {
1287
+ const D = T(d), C = Number(D);
1288
+ if (k(D) || Number.isNaN(C) || (d == null ? void 0 : d.t) !== B.NUMBER)
1553
1289
  return !1;
1554
- const targetValue = cache.rank;
1555
- return ruleConfig.isBottom ? v <= targetValue : v >= targetValue;
1290
+ const m = l.rank;
1291
+ return t.isBottom ? C <= m : C >= m;
1556
1292
  }
1557
- case CFSubRuleType.uniqueValues: {
1558
- const value = getCellValue(cellValue);
1559
- return isNullable(value) ? !1 : cache.count.get(value) === 1;
1293
+ case _.uniqueValues: {
1294
+ const D = T(d);
1295
+ return k(D) ? !1 : l.count.get(D) === 1;
1560
1296
  }
1561
- case CFSubRuleType.duplicateValues: {
1562
- const value = getCellValue(cellValue);
1563
- return isNullable(value) ? !1 : cache.count.get(value) !== 1;
1297
+ case _.duplicateValues: {
1298
+ const D = T(d);
1299
+ return k(D) ? !1 : l.count.get(D) !== 1;
1564
1300
  }
1565
- case CFSubRuleType.formula: {
1566
- if (!(cache != null && cache.sequenceNodes))
1567
- return !1;
1568
- const { unitId, subUnitId } = context, conditionalFormattingFormulaService = context.accessor.get(ConditionalFormattingFormulaService), getRangeFromCell = /* @__PURE__ */ __name((row2, col2) => ({ startRow: row2, endRow: row2, startColumn: col2, endColumn: col2 }), "getRangeFromCell"), originRange = getRangeFromCell(rule.ranges[0].startRow, rule.ranges[0].startColumn), sequenceNodes = Tools.deepClone(cache.sequenceNodes), transformSequenceNodes = Array.isArray(sequenceNodes) ? sequenceNodes.map((node) => {
1569
- if (typeof node == "object" && node.nodeType === sequenceNodeType.REFERENCE) {
1570
- const gridRangeName = deserializeRangeWithSheet(node.token), relativeRange = Rectangle.getRelativeRange(gridRangeName.range, originRange), newRange = Rectangle.getPositionRange(relativeRange, getRangeFromCell(row, col), gridRangeName.range), newToken = serializeRange(newRange);
1571
- return {
1572
- ...node,
1573
- token: newToken
1574
- };
1575
- }
1576
- return node;
1577
- }) : sequenceNodes;
1578
- let formulaString = transformSequenceNodes && generateStringWithSequence(transformSequenceNodes);
1579
- if (formulaString) {
1580
- formulaString = `=${formulaString}`, conditionalFormattingFormulaService.registerFormula(unitId, subUnitId, rule.cfId, formulaString);
1581
- const formulaItem = conditionalFormattingFormulaService.getFormulaResult(unitId, subUnitId, formulaString);
1582
- if (formulaItem && formulaItem.status === FormulaResultStatus.SUCCESS)
1583
- return formulaItem.result === !0;
1584
- {
1585
- const cache2 = conditionalFormattingFormulaService.getCache(unitId, subUnitId, rule.cfId), style = cache2 == null ? void 0 : cache2.getValue(row, col);
1586
- return style && style !== EMPTY_STYLE;
1587
- }
1588
- }
1589
- return !1;
1301
+ case _.formula: {
1302
+ const D = t, m = i.accessor.get(N).getFormulaResult(s, r, n.cfId, D.value, u, g);
1303
+ return m && m.status === y.SUCCESS ? m.result === !0 : !1;
1590
1304
  }
1591
1305
  }
1592
- }, "check"), computeResult = new ObjectMatrix();
1593
- return ranges.forEach((range) => {
1594
- Range.foreach(range, (row, col) => {
1595
- check(row, col) ? computeResult.setValue(row, col, ruleConfig.style) : computeResult.setValue(row, col, EMPTY_STYLE);
1306
+ }, h = new I();
1307
+ if (t.subType === _.formula) {
1308
+ const u = t, g = i.accessor.get(N), d = g.getSubUnitFormulaMap(s, r), D = d == null ? void 0 : d.getValue(g.createCFormulaId(n.cfId, u.value), ["id"]);
1309
+ if (!D || D.status !== y.SUCCESS)
1310
+ return g.getCache(s, r, n.cfId) || h;
1311
+ }
1312
+ return a.forEach((u) => {
1313
+ R.foreach(u, (g, d) => {
1314
+ c(g, d) ? h.setValue(g, d, t.style) : h.setValue(g, d, X);
1596
1315
  });
1597
- }), computeResult;
1598
- }, "handle")
1599
- }, iconSetCalculateUnit = {
1600
- type: CFRuleType.iconSet,
1601
- handle: /* @__PURE__ */ __name(async (rule, context) => {
1602
- var _a5;
1603
- const ruleConfig = rule.rule, conditionalFormattingFormulaService = context.accessor.get(ConditionalFormattingFormulaService), { worksheet } = context, matrix = new ObjectMatrix(), ranges = filterRange(rule.ranges, worksheet.getMaxRows() - 1, worksheet.getMaxColumns() - 1);
1604
- ranges.forEach((range) => {
1605
- Range.foreach(range, (row, col) => {
1606
- const cell2 = worksheet == null ? void 0 : worksheet.getCellRaw(row, col), v = cell2 && cell2.v;
1607
- if (!isNullable(v) && (cell2 == null ? void 0 : cell2.t) === CellValueType.NUMBER) {
1608
- const _value = Number(v);
1609
- !Number.isNaN(_value) && matrix.setValue(row, col, _value);
1316
+ }), h;
1317
+ }
1318
+ }, G0 = {
1319
+ type: L.iconSet,
1320
+ handle: async (n, i) => {
1321
+ var g;
1322
+ const t = n.rule, e = i.accessor.get(N), { worksheet: s } = i, r = new I(), a = u2(n.ranges, s.getMaxRows() - 1, s.getMaxColumns() - 1);
1323
+ a.forEach((d) => {
1324
+ R.foreach(d, (D, C) => {
1325
+ const m = s == null ? void 0 : s.getCellRaw(D, C), F = m && m.v;
1326
+ if (!k(F) && (m == null ? void 0 : m.t) === B.NUMBER) {
1327
+ const w = Number(F);
1328
+ !Number.isNaN(w) && r.setValue(D, C, w);
1610
1329
  }
1611
1330
  });
1612
1331
  });
1613
- const computeResult = new ObjectMatrix();
1614
- ranges.forEach((range) => {
1615
- Range.foreach(range, (row, col) => {
1616
- computeResult.setValue(row, col, EMPTY_STYLE);
1332
+ const o = new I();
1333
+ a.forEach((d) => {
1334
+ R.foreach(d, (D, C) => {
1335
+ o.setValue(D, C, X);
1617
1336
  });
1618
1337
  });
1619
- const splitValueResult = ruleConfig.config.map((v) => getValueByType(v.value, matrix, { ...context, cfId: rule.cfId }));
1620
- if (splitValueResult.some((item) => item.status !== FormulaResultStatus.SUCCESS))
1621
- return (_a5 = conditionalFormattingFormulaService.getCache(context.unitId, context.subUnitId, rule.cfId)) != null ? _a5 : computeResult;
1622
- const splitValue = splitValueResult.map((item, index) => ({
1623
- operator: ruleConfig.config[index].operator,
1624
- value: Number(item.result) || 0
1625
- })).reduce((result, cur, index, list) => {
1626
- const item = ruleConfig.config[index];
1627
- if (!index || index === list.length - 1)
1628
- result.push({ ...cur, iconId: item.iconId, iconType: item.iconType });
1338
+ const l = t.config.map((d) => a2(d.value, r, { ...i, cfId: n.cfId }));
1339
+ if (l.some((d) => d.status !== y.SUCCESS))
1340
+ return (g = e.getCache(i.unitId, i.subUnitId, n.cfId)) != null ? g : o;
1341
+ const h = l.map((d, D) => ({
1342
+ operator: t.config[D].operator,
1343
+ value: Number(d.result) || 0
1344
+ })).reduce((d, D, C, m) => {
1345
+ const F = t.config[C];
1346
+ if (!C || C === m.length - 1)
1347
+ d.push({ ...D, iconId: F.iconId, iconType: F.iconType });
1629
1348
  else {
1630
- const pre = list[index - 1];
1631
- compareWithNumber(pre, cur.value) || result.push({ ...cur, iconId: item.iconId, iconType: item.iconType });
1349
+ const w = m[C - 1];
1350
+ J(w, D.value) || d.push({ ...D, iconId: F.iconId, iconType: F.iconType });
1632
1351
  }
1633
- return result;
1634
- }, []), isShowValue = ruleConfig.isShowValue === void 0 ? !0 : !!ruleConfig.isShowValue;
1635
- return matrix.forValue((row, col, value) => {
1636
- for (let index = 0; index < splitValue.length; index++) {
1637
- const item = splitValue[index], start = { ...item }, end = { ...item }, { iconId, iconType } = item;
1638
- if (index === 0) {
1639
- if (compareWithNumber(item, value)) {
1640
- computeResult.setValue(row, col, { iconId, iconType, isShowValue });
1352
+ return d;
1353
+ }, []), u = t.isShowValue === void 0 ? !0 : !!t.isShowValue;
1354
+ return r.forValue((d, D, C) => {
1355
+ for (let m = 0; m < h.length; m++) {
1356
+ const F = h[m], w = { ...F }, v = { ...F }, { iconId: A, iconType: O } = F;
1357
+ if (m === 0) {
1358
+ if (J(F, C)) {
1359
+ o.setValue(d, D, { iconId: A, iconType: O, isShowValue: u });
1641
1360
  return;
1642
1361
  }
1643
- } else if (index === splitValue.length - 1) {
1644
- computeResult.setValue(row, col, { iconId, iconType, isShowValue });
1362
+ } else if (m === h.length - 1) {
1363
+ o.setValue(d, D, { iconId: A, iconType: O, isShowValue: u });
1645
1364
  return;
1646
1365
  } else {
1647
- const pre = splitValue[index - 1];
1648
- if (end.operator = getOppositeOperator(pre.operator), end.value = pre.value, compareWithNumber(start, value) && compareWithNumber(end, value)) {
1649
- computeResult.setValue(row, col, { iconId, iconType, isShowValue });
1366
+ const P = h[m - 1];
1367
+ if (v.operator = N0(P.operator), v.value = P.value, J(w, C) && J(v, C)) {
1368
+ o.setValue(d, D, { iconId: A, iconType: O, isShowValue: u });
1650
1369
  return;
1651
1370
  }
1652
1371
  }
1653
1372
  }
1654
- }), computeResult;
1655
- }, "handle")
1373
+ }), o;
1374
+ }
1656
1375
  };
1657
- var __defProp$1 = Object.defineProperty, __getOwnPropDesc$1 = Object.getOwnPropertyDescriptor, __decorateClass$1 = /* @__PURE__ */ __name((decorators, target, key, kind) => {
1658
- for (var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$1(target, key) : target, i = decorators.length - 1, decorator; i >= 0; i--)
1659
- (decorator = decorators[i]) && (result = (kind ? decorator(target, key, result) : decorator(result)) || result);
1660
- return kind && result && __defProp$1(target, key, result), result;
1661
- }, "__decorateClass$1"), __decorateParam$1 = /* @__PURE__ */ __name((index, decorator) => (target, key) => decorator(target, key, index), "__decorateParam$1");
1662
- const beforeUpdateRuleResult = createInterceptorKey("conditional-formatting-before-update-rule-result");
1663
- var _a3;
1664
- let ConditionalFormattingService = (_a3 = class extends Disposable {
1665
- constructor(_conditionalFormattingRuleModel, _injector, _conditionalFormattingViewModel, _univerInstanceService, _resourceManagerService, _sheetInterceptorService, _commandService) {
1376
+ var H0 = Object.defineProperty, X0 = Object.getOwnPropertyDescriptor, Y0 = (n, i, t, e) => {
1377
+ for (var s = e > 1 ? void 0 : e ? X0(i, t) : i, r = n.length - 1, a; r >= 0; r--)
1378
+ (a = n[r]) && (s = (e ? a(i, t, s) : a(s)) || s);
1379
+ return e && s && H0(i, t, s), s;
1380
+ }, Z = (n, i) => (t, e) => i(t, e, n);
1381
+ const K0 = N2("conditional-formatting-before-update-rule-result");
1382
+ let z = class extends x2 {
1383
+ constructor(i, t, e, s, r, a, o) {
1666
1384
  super();
1667
1385
  // <unitId,<subUnitId,<cfId,IComputeCache>>>
1668
- __publicField(this, "_ruleCacheMap", /* @__PURE__ */ new Map());
1669
- __publicField(this, "_calculateUnit$", new Subject());
1670
- __publicField(this, "_ruleComputeStatus$", new Subject());
1671
- __publicField(this, "ruleComputeStatus$", this._ruleComputeStatus$.asObservable());
1672
- __publicField(this, "interceptorManager", new InterceptorManager({ beforeUpdateRuleResult }));
1673
- __publicField(this, "_calculationUnitMap", /* @__PURE__ */ new Map());
1674
- this._conditionalFormattingRuleModel = _conditionalFormattingRuleModel, this._injector = _injector, this._conditionalFormattingViewModel = _conditionalFormattingViewModel, this._univerInstanceService = _univerInstanceService, this._resourceManagerService = _resourceManagerService, this._sheetInterceptorService = _sheetInterceptorService, this._commandService = _commandService, this._initCellChange(), this._initCacheManager(), this._initRemoteCalculate(), this._initSnapshot(), this._initSheetChange(), this._registerCalculationUnit(dataBarCellCalculateUnit), this._registerCalculationUnit(colorScaleCellCalculateUnit), this._registerCalculationUnit(highlightCellCalculateUnit), this._registerCalculationUnit(iconSetCalculateUnit), this._calculateUnit$.pipe(bufferTime(100), filter((list) => !!list.length), map((list) => {
1675
- const createKey = /* @__PURE__ */ __name((config) => `${config.unitId}_${config.subUnitId}_${config.rule.cfId}`, "createKey");
1676
- return list.reduce((a, b) => {
1677
- const key = createKey(b);
1678
- return a.map[key] || (a.map[key] = b, a.list.push(b)), a;
1386
+ E(this, "_ruleCacheMap", /* @__PURE__ */ new Map());
1387
+ E(this, "_calculateUnit$", new s2());
1388
+ E(this, "_ruleComputeStatus$", new s2());
1389
+ E(this, "ruleComputeStatus$", this._ruleComputeStatus$.asObservable());
1390
+ E(this, "interceptorManager", new P2({ beforeUpdateRuleResult: K0 }));
1391
+ E(this, "_calculationUnitMap", /* @__PURE__ */ new Map());
1392
+ this._conditionalFormattingRuleModel = i, this._injector = t, this._conditionalFormattingViewModel = e, this._univerInstanceService = s, this._resourceManagerService = r, this._sheetInterceptorService = a, this._commandService = o, this._initCellChange(), this._initCacheManager(), this._initRemoteCalculate(), this._initSnapshot(), this._initSheetChange(), this._registerCalculationUnit(Z0), this._registerCalculationUnit(P0), this._registerCalculationUnit(j0), this._registerCalculationUnit(G0), this._calculateUnit$.pipe(y2(100), D2((l) => !!l.length), Z2((l) => {
1393
+ const c = (u) => `${u.unitId}_${u.subUnitId}_${u.rule.cfId}`;
1394
+ return l.reduce((u, g) => {
1395
+ const d = c(g);
1396
+ return u.map[d] || (u.map[d] = g, u.list.push(g)), u;
1679
1397
  }, {
1680
1398
  map: {},
1681
1399
  list: []
1682
1400
  }).list;
1683
- })).subscribe((configList) => {
1684
- configList.forEach((config) => {
1685
- this._handleCalculateUnit(config.unitId, config.subUnitId, config.rule);
1401
+ })).subscribe((l) => {
1402
+ l.forEach((c) => {
1403
+ this._handleCalculateUnit(c.unitId, c.subUnitId, c.rule);
1686
1404
  });
1687
1405
  }), this.disposeWithMe(() => {
1688
1406
  this.interceptorManager.dispose();
1689
1407
  });
1690
1408
  }
1691
- composeStyle(unitId, subUnitId, row, col) {
1692
- const cell2 = this._conditionalFormattingViewModel.getCellCf(unitId, subUnitId, row, col);
1693
- if (cell2) {
1694
- const ruleList = cell2.cfList.map((item) => this._conditionalFormattingRuleModel.getRule(unitId, subUnitId, item.cfId)).filter((rule) => !!rule).reverse(), endIndex = ruleList.findIndex((rule) => rule == null ? void 0 : rule.stopIfTrue);
1695
- return endIndex > -1 && ruleList.splice(endIndex + 1), ruleList.reduce((pre, rule) => {
1696
- var _a5;
1697
- const type = rule.rule.type, ruleCacheItem = cell2.cfList.find((cache) => cache.cfId === rule.cfId);
1698
- if (ruleCacheItem != null && ruleCacheItem.isDirty && this._calculateUnit$.next({ unitId, subUnitId, rule }), type === CFRuleType.highlightCell)
1699
- ruleCacheItem.ruleCache && Tools.deepMerge(pre, { style: ruleCacheItem.ruleCache });
1700
- else if (type === CFRuleType.colorScale) {
1701
- const ruleCache = ruleCacheItem == null ? void 0 : ruleCacheItem.ruleCache;
1702
- ruleCache && typeof ruleCache == "string" && (pre.style = { ...(_a5 = pre.style) != null ? _a5 : {}, bg: { rgb: ruleCache } });
1703
- } else if (type === CFRuleType.dataBar) {
1704
- const ruleCache = ruleCacheItem == null ? void 0 : ruleCacheItem.ruleCache;
1705
- ruleCache && ruleCache !== EMPTY_STYLE && (pre.dataBar = ruleCache, pre.isShowValue = ruleCache.isShowValue);
1706
- } else if (type === CFRuleType.iconSet) {
1707
- const ruleCache = ruleCacheItem == null ? void 0 : ruleCacheItem.ruleCache;
1708
- ruleCache && ruleCache !== EMPTY_STYLE && (pre.iconSet = ruleCache, pre.isShowValue = ruleCache.isShowValue);
1409
+ composeStyle(i, t, e, s) {
1410
+ const r = this._conditionalFormattingViewModel.getCellCf(i, t, e, s);
1411
+ if (r) {
1412
+ const a = r.cfList.map((c) => this._conditionalFormattingRuleModel.getRule(i, t, c.cfId)).filter((c) => !!c).reverse(), o = a.findIndex((c) => c == null ? void 0 : c.stopIfTrue);
1413
+ return o > -1 && a.splice(o + 1), a.reduce((c, h) => {
1414
+ var d;
1415
+ const u = h.rule.type, g = r.cfList.find((D) => D.cfId === h.cfId);
1416
+ if (g != null && g.isDirty && this._calculateUnit$.next({ unitId: i, subUnitId: t, rule: h }), u === L.highlightCell)
1417
+ g.ruleCache && Y.deepMerge(c, { style: g.ruleCache });
1418
+ else if (u === L.colorScale) {
1419
+ const D = g == null ? void 0 : g.ruleCache;
1420
+ D && typeof D == "string" && (c.style = { ...(d = c.style) != null ? d : {}, bg: { rgb: D } });
1421
+ } else if (u === L.dataBar) {
1422
+ const D = g == null ? void 0 : g.ruleCache;
1423
+ D && D !== X && (c.dataBar = D, c.isShowValue = D.isShowValue);
1424
+ } else if (u === L.iconSet) {
1425
+ const D = g == null ? void 0 : g.ruleCache;
1426
+ D && D !== X && (c.iconSet = D, c.isShowValue = D.isShowValue);
1709
1427
  }
1710
- return pre;
1428
+ return c;
1711
1429
  }, {});
1712
1430
  }
1713
1431
  return null;
1714
1432
  }
1715
1433
  _initSnapshot() {
1716
- const toJson = /* @__PURE__ */ __name((unitID) => {
1717
- const map2 = this._conditionalFormattingRuleModel.getUnitRules(unitID), resultMap = {};
1718
- return map2 ? (map2.forEach((v, key) => {
1719
- resultMap[key] = v;
1720
- }), JSON.stringify(resultMap)) : "";
1721
- }, "toJson"), parseJson = /* @__PURE__ */ __name((json) => {
1722
- if (!json)
1434
+ const i = (e) => {
1435
+ const s = this._conditionalFormattingRuleModel.getUnitRules(e), r = {};
1436
+ return s ? (s.forEach((a, o) => {
1437
+ r[o] = a;
1438
+ }), JSON.stringify(r)) : "";
1439
+ }, t = (e) => {
1440
+ if (!e)
1723
1441
  return {};
1724
1442
  try {
1725
- return JSON.parse(json);
1443
+ return JSON.parse(e);
1726
1444
  } catch {
1727
1445
  return {};
1728
1446
  }
1729
- }, "parseJson");
1447
+ };
1730
1448
  this.disposeWithMe(
1731
1449
  this._resourceManagerService.registerPluginResource({
1732
- pluginName: SHEET_CONDITIONAL_FORMATTING_PLUGIN,
1733
- businesses: [UniverInstanceType.UNIVER_SHEET],
1734
- toJson: /* @__PURE__ */ __name((unitID) => toJson(unitID), "toJson"),
1735
- parseJson: /* @__PURE__ */ __name((json) => parseJson(json), "parseJson"),
1736
- onUnLoad: /* @__PURE__ */ __name((unitID) => {
1737
- this._conditionalFormattingRuleModel.deleteUnitId(unitID);
1738
- }, "onUnLoad"),
1739
- onLoad: /* @__PURE__ */ __name((unitID, value) => {
1740
- Object.keys(value).forEach((subunitId) => {
1741
- [...value[subunitId]].reverse().forEach((rule) => {
1742
- this._conditionalFormattingRuleModel.addRule(unitID, subunitId, rule);
1450
+ pluginName: L2,
1451
+ businesses: [l2.UNIVER_SHEET],
1452
+ toJson: (e) => i(e),
1453
+ parseJson: (e) => t(e),
1454
+ onUnLoad: (e) => {
1455
+ this._conditionalFormattingRuleModel.deleteUnitId(e);
1456
+ },
1457
+ onLoad: (e, s) => {
1458
+ Object.keys(s).forEach((r) => {
1459
+ [...s[r]].reverse().forEach((o) => {
1460
+ this._conditionalFormattingRuleModel.addRule(e, r, o);
1743
1461
  });
1744
1462
  });
1745
- }, "onLoad")
1463
+ }
1746
1464
  })
1747
1465
  );
1748
1466
  }
1749
1467
  _initSheetChange() {
1750
1468
  this.disposeWithMe(
1751
1469
  this._sheetInterceptorService.interceptCommand({
1752
- getMutations: /* @__PURE__ */ __name((commandInfo) => {
1753
- if (commandInfo.id === RemoveSheetCommand.id) {
1754
- const params = commandInfo.params, unitId = params.unitId || getUnitId(this._univerInstanceService), subUnitId = params.subUnitId || getSubUnitId(this._univerInstanceService);
1755
- if (!subUnitId)
1470
+ getMutations: (i) => {
1471
+ if (i.id === G2.id) {
1472
+ const t = i.params, e = t.unitId || J0(this._univerInstanceService), s = t.subUnitId || z0(this._univerInstanceService);
1473
+ if (!s)
1756
1474
  return { redos: [], undos: [] };
1757
- const ruleList = this._conditionalFormattingRuleModel.getSubunitRules(unitId, subUnitId);
1758
- if (!ruleList)
1475
+ const r = this._conditionalFormattingRuleModel.getSubunitRules(e, s);
1476
+ if (!r)
1759
1477
  return { redos: [], undos: [] };
1760
- const redos = [], undos = [];
1761
- return ruleList.forEach((item) => {
1762
- const params2 = {
1763
- unitId,
1764
- subUnitId,
1765
- cfId: item.cfId
1478
+ const a = [], o = [];
1479
+ return r.forEach((l) => {
1480
+ const c = {
1481
+ unitId: e,
1482
+ subUnitId: s,
1483
+ cfId: l.cfId
1766
1484
  };
1767
- redos.push({
1768
- id: DeleteConditionalRuleMutation.id,
1769
- params: params2
1770
- }), undos.push(...DeleteConditionalRuleMutationUndoFactory(this._injector, params2));
1485
+ a.push({
1486
+ id: m2.id,
1487
+ params: c
1488
+ }), o.push(...R0(this._injector, c));
1771
1489
  }), {
1772
- redos,
1773
- undos
1490
+ redos: a,
1491
+ undos: o
1774
1492
  };
1775
1493
  }
1776
1494
  return { redos: [], undos: [] };
1777
- }, "getMutations")
1495
+ }
1778
1496
  })
1779
1497
  );
1780
1498
  }
1781
- _registerCalculationUnit(unit) {
1782
- this._calculationUnitMap.set(unit.type, unit);
1499
+ _registerCalculationUnit(i) {
1500
+ this._calculationUnitMap.set(i.type, i);
1783
1501
  }
1784
- _getComputedCache(unitId, subUnitId, cfId) {
1785
- var _a5, _b;
1786
- return (_b = (_a5 = this._ruleCacheMap.get(unitId)) == null ? void 0 : _a5.get(subUnitId)) == null ? void 0 : _b.get(cfId);
1502
+ _getComputedCache(i, t, e) {
1503
+ var s, r;
1504
+ return (r = (s = this._ruleCacheMap.get(i)) == null ? void 0 : s.get(t)) == null ? void 0 : r.get(e);
1787
1505
  }
1788
- _setComputedCache(unitId, subUnitId, cfId, value) {
1789
- let unitMap = this._ruleCacheMap.get(unitId);
1790
- unitMap || (unitMap = /* @__PURE__ */ new Map(), this._ruleCacheMap.set(unitId, unitMap));
1791
- let subUnitMap = unitMap.get(subUnitId);
1792
- subUnitMap || (subUnitMap = /* @__PURE__ */ new Map(), unitMap.set(subUnitId, subUnitMap)), subUnitMap.set(cfId, value);
1506
+ _setComputedCache(i, t, e, s) {
1507
+ let r = this._ruleCacheMap.get(i);
1508
+ r || (r = /* @__PURE__ */ new Map(), this._ruleCacheMap.set(i, r));
1509
+ let a = r.get(t);
1510
+ a || (a = /* @__PURE__ */ new Map(), r.set(t, a)), a.set(e, s);
1793
1511
  }
1794
- _deleteComputeCache(unitId, subUnitId, cfId) {
1795
- const unitCache = this._ruleCacheMap.get(unitId), subUnitCache = unitCache == null ? void 0 : unitCache.get(subUnitId);
1796
- subUnitCache && (subUnitCache.delete(cfId), subUnitCache.size || unitCache == null || unitCache.delete(subUnitId));
1512
+ _deleteComputeCache(i, t, e) {
1513
+ const s = this._ruleCacheMap.get(i), r = s == null ? void 0 : s.get(t);
1514
+ r && (r.delete(e), r.size || s == null || s.delete(t));
1797
1515
  }
1798
1516
  _initCacheManager() {
1799
- this.disposeWithMe(this._conditionalFormattingViewModel.markDirty$.subscribe((item) => {
1800
- this._deleteComputeCache(item.unitId, item.subUnitId, item.rule.cfId);
1801
- })), this.disposeWithMe(this._conditionalFormattingRuleModel.$ruleChange.pipe(filter((item) => item.type !== "sort")).subscribe((item) => {
1802
- const { unitId, subUnitId, rule } = item;
1803
- this._deleteComputeCache(unitId, subUnitId, rule.cfId);
1517
+ this.disposeWithMe(this._conditionalFormattingViewModel.markDirty$.subscribe((i) => {
1518
+ this._deleteComputeCache(i.unitId, i.subUnitId, i.rule.cfId);
1519
+ })), this.disposeWithMe(this._conditionalFormattingRuleModel.$ruleChange.pipe(D2((i) => i.type !== "sort")).subscribe((i) => {
1520
+ const { unitId: t, subUnitId: e, rule: s } = i;
1521
+ this._deleteComputeCache(t, e, s.cfId);
1804
1522
  }));
1805
1523
  }
1806
1524
  _initCellChange() {
1807
1525
  this.disposeWithMe(
1808
- this._commandService.onCommandExecuted((commandInfo) => {
1809
- const collectRule = /* @__PURE__ */ __name((unitId, subUnitId, cellData) => {
1810
- const ruleIds = /* @__PURE__ */ new Set();
1811
- return cellData.forEach(([row, col]) => {
1812
- const ruleItem = this._conditionalFormattingViewModel.getCellCf(unitId, subUnitId, row, col);
1813
- ruleItem == null || ruleItem.cfList.forEach((item) => ruleIds.add(item.cfId));
1814
- }), [...ruleIds].map((cfId) => this._conditionalFormattingRuleModel.getRule(unitId, subUnitId, cfId)).filter((rule) => !!rule);
1815
- }, "collectRule");
1816
- switch (commandInfo.id) {
1817
- case SetRangeValuesMutation.id: {
1818
- const params = commandInfo.params, { subUnitId, unitId, cellValue } = params, cellMatrix = [];
1819
- new ObjectMatrix(cellValue).forValue((row, col, value) => {
1820
- value && Object.keys(value).some((key) => ["p", "v"].includes(key)) && cellMatrix.push([row, col]);
1821
- }), collectRule(unitId, subUnitId, cellMatrix).forEach((rule) => {
1822
- this._conditionalFormattingViewModel.markRuleDirty(unitId, subUnitId, rule), this._deleteComputeCache(unitId, subUnitId, rule.cfId);
1526
+ this._commandService.onCommandExecuted((i) => {
1527
+ const t = (e, s, r) => {
1528
+ const a = /* @__PURE__ */ new Set();
1529
+ return r.forEach(([o, l]) => {
1530
+ const c = this._conditionalFormattingViewModel.getCellCf(e, s, o, l);
1531
+ c == null || c.cfList.forEach((h) => a.add(h.cfId));
1532
+ }), [...a].map((o) => this._conditionalFormattingRuleModel.getRule(e, s, o)).filter((o) => !!o);
1533
+ };
1534
+ switch (i.id) {
1535
+ case t0.id: {
1536
+ const e = i.params, { subUnitId: s, unitId: r, cellValue: a } = e, o = [];
1537
+ new I(a).forValue((c, h, u) => {
1538
+ u && Object.keys(u).some((d) => ["p", "v"].includes(d)) && o.push([c, h]);
1539
+ }), t(r, s, o).forEach((c) => {
1540
+ this._conditionalFormattingViewModel.markRuleDirty(r, s, c), this._deleteComputeCache(r, s, c.cfId);
1823
1541
  });
1824
1542
  break;
1825
1543
  }
1826
- case InsertColMutation.id:
1827
- case RemoveColMutation.id: {
1828
- const { range, unitId, subUnitId } = commandInfo.params, allRules = this._conditionalFormattingRuleModel.getSubunitRules(unitId, subUnitId), effectRange = { ...range, endColumn: Number.MAX_SAFE_INTEGER };
1829
- allRules && allRules.filter((rule) => rule.ranges.some((ruleRange) => Rectangle.intersects(ruleRange, effectRange))).forEach((rule) => {
1830
- this._conditionalFormattingViewModel.markRuleDirty(unitId, subUnitId, rule), this._deleteComputeCache(unitId, subUnitId, rule.cfId);
1544
+ case e0.id:
1545
+ case Q2.id: {
1546
+ const { range: e, unitId: s, subUnitId: r } = i.params, a = this._conditionalFormattingRuleModel.getSubunitRules(s, r), o = { ...e, endColumn: Number.MAX_SAFE_INTEGER };
1547
+ a && a.filter((c) => c.ranges.some((h) => H.intersects(h, o))).forEach((c) => {
1548
+ this._conditionalFormattingViewModel.markRuleDirty(s, r, c), this._deleteComputeCache(s, r, c.cfId);
1831
1549
  });
1832
1550
  break;
1833
1551
  }
1834
- case RemoveRowMutation.id:
1835
- case InsertRowMutation.id: {
1836
- const { range, unitId, subUnitId } = commandInfo.params, allRules = this._conditionalFormattingRuleModel.getSubunitRules(unitId, subUnitId), effectRange = { ...range, endRow: Number.MAX_SAFE_INTEGER };
1837
- allRules && allRules.filter((rule) => rule.ranges.some((ruleRange) => Rectangle.intersects(ruleRange, effectRange))).forEach((rule) => {
1838
- this._conditionalFormattingViewModel.markRuleDirty(unitId, subUnitId, rule), this._deleteComputeCache(unitId, subUnitId, rule.cfId);
1552
+ case z2.id:
1553
+ case J2.id: {
1554
+ const { range: e, unitId: s, subUnitId: r } = i.params, a = this._conditionalFormattingRuleModel.getSubunitRules(s, r), o = { ...e, endRow: Number.MAX_SAFE_INTEGER };
1555
+ a && a.filter((c) => c.ranges.some((h) => H.intersects(h, o))).forEach((c) => {
1556
+ this._conditionalFormattingViewModel.markRuleDirty(s, r, c), this._deleteComputeCache(s, r, c.cfId);
1839
1557
  });
1840
1558
  break;
1841
1559
  }
1842
- case MoveRowsMutation.id: {
1843
- const { sourceRange, targetRange, unitId, subUnitId } = commandInfo.params, allRules = this._conditionalFormattingRuleModel.getSubunitRules(unitId, subUnitId), effectRange = {
1844
- startRow: Math.min(sourceRange.startRow, targetRange.startRow),
1560
+ case K2.id: {
1561
+ const { sourceRange: e, targetRange: s, unitId: r, subUnitId: a } = i.params, o = this._conditionalFormattingRuleModel.getSubunitRules(r, a), l = {
1562
+ startRow: Math.min(e.startRow, s.startRow),
1845
1563
  endRow: Number.MAX_SAFE_INTEGER,
1846
1564
  startColumn: 0,
1847
1565
  endColumn: Number.MAX_SAFE_INTEGER
1848
1566
  };
1849
- allRules && allRules.filter((rule) => rule.ranges.some((ruleRange) => Rectangle.intersects(ruleRange, effectRange))).forEach((rule) => {
1850
- this._conditionalFormattingViewModel.markRuleDirty(unitId, subUnitId, rule), this._deleteComputeCache(unitId, subUnitId, rule.cfId);
1567
+ o && o.filter((h) => h.ranges.some((u) => H.intersects(u, l))).forEach((h) => {
1568
+ this._conditionalFormattingViewModel.markRuleDirty(r, a, h), this._deleteComputeCache(r, a, h.cfId);
1851
1569
  });
1852
1570
  break;
1853
1571
  }
1854
- case MoveColsMutation.id: {
1855
- const { sourceRange, targetRange, unitId, subUnitId } = commandInfo.params, allRules = this._conditionalFormattingRuleModel.getSubunitRules(unitId, subUnitId), effectRange = {
1572
+ case Y2.id: {
1573
+ const { sourceRange: e, targetRange: s, unitId: r, subUnitId: a } = i.params, o = this._conditionalFormattingRuleModel.getSubunitRules(r, a), l = {
1856
1574
  startRow: 0,
1857
1575
  endRow: Number.MAX_SAFE_INTEGER,
1858
- startColumn: Math.min(sourceRange.startColumn, targetRange.startColumn),
1576
+ startColumn: Math.min(e.startColumn, s.startColumn),
1859
1577
  endColumn: Number.MAX_SAFE_INTEGER
1860
1578
  };
1861
- allRules && allRules.filter((rule) => rule.ranges.some((ruleRange) => Rectangle.intersects(ruleRange, effectRange))).forEach((rule) => {
1862
- this._conditionalFormattingViewModel.markRuleDirty(unitId, subUnitId, rule), this._deleteComputeCache(unitId, subUnitId, rule.cfId);
1579
+ o && o.filter((h) => h.ranges.some((u) => H.intersects(u, l))).forEach((h) => {
1580
+ this._conditionalFormattingViewModel.markRuleDirty(r, a, h), this._deleteComputeCache(r, a, h.cfId);
1863
1581
  });
1864
1582
  break;
1865
1583
  }
1866
- case MoveRangeMutation.id: {
1867
- const { unitId, to, from } = commandInfo.params, handleSubUnit = /* @__PURE__ */ __name((value) => {
1868
- const cellMatrix = [];
1869
- new ObjectMatrix(value.value).forValue((row, col) => {
1870
- cellMatrix.push([row, col]);
1871
- }), collectRule(unitId, value.subUnitId, cellMatrix).forEach((rule) => {
1872
- this._conditionalFormattingViewModel.markRuleDirty(unitId, value.subUnitId, rule), this._deleteComputeCache(unitId, value.subUnitId, rule.cfId);
1584
+ case X2.id: {
1585
+ const { unitId: e, to: s, from: r } = i.params, a = (o) => {
1586
+ const l = [];
1587
+ new I(o.value).forValue((h, u) => {
1588
+ l.push([h, u]);
1589
+ }), t(e, o.subUnitId, l).forEach((h) => {
1590
+ this._conditionalFormattingViewModel.markRuleDirty(e, o.subUnitId, h), this._deleteComputeCache(e, o.subUnitId, h.cfId);
1873
1591
  });
1874
- }, "handleSubUnit");
1875
- handleSubUnit(to), handleSubUnit(from);
1592
+ };
1593
+ a(s), a(r);
1876
1594
  break;
1877
1595
  }
1878
- case ReorderRangeMutation.id: {
1879
- const { range, unitId, subUnitId } = commandInfo.params, allRules = this._conditionalFormattingRuleModel.getSubunitRules(unitId, subUnitId);
1880
- allRules && allRules.filter((rule) => rule.ranges.some((ruleRange) => Rectangle.intersects(ruleRange, range))).forEach((rule) => {
1881
- this._conditionalFormattingViewModel.markRuleDirty(unitId, subUnitId, rule), this._deleteComputeCache(unitId, subUnitId, rule.cfId);
1596
+ case H2.id: {
1597
+ const { range: e, unitId: s, subUnitId: r } = i.params, a = this._conditionalFormattingRuleModel.getSubunitRules(s, r);
1598
+ a && a.filter((l) => l.ranges.some((c) => H.intersects(c, e))).forEach((l) => {
1599
+ this._conditionalFormattingViewModel.markRuleDirty(s, r, l), this._deleteComputeCache(s, r, l.cfId);
1882
1600
  });
1883
1601
  break;
1884
1602
  }
@@ -1887,204 +1605,203 @@ let ConditionalFormattingService = (_a3 = class extends Disposable {
1887
1605
  );
1888
1606
  }
1889
1607
  _initRemoteCalculate() {
1890
- this.disposeWithMe(this._ruleComputeStatus$.subscribe(({ status, subUnitId, unitId, cfId, result }) => {
1891
- const cache = this._getComputedCache(unitId, subUnitId, cfId) || {};
1892
- cache.status = status, this._setComputedCache(unitId, subUnitId, cfId, cache), status === "end" && result && (this.interceptorManager.fetchThroughInterceptors(this.interceptorManager.getInterceptPoints().beforeUpdateRuleResult)({
1893
- subUnitId,
1894
- unitId,
1895
- cfId
1896
- }, void 0), result.forValue((row, col, value) => {
1897
- this._conditionalFormattingViewModel.setCellCfRuleCache(unitId, subUnitId, row, col, cfId, value);
1608
+ this.disposeWithMe(this._ruleComputeStatus$.subscribe(({ status: i, subUnitId: t, unitId: e, cfId: s, result: r }) => {
1609
+ const a = this._getComputedCache(e, t, s) || {};
1610
+ a.status = i, this._setComputedCache(e, t, s, a), i === "end" && r && (this.interceptorManager.fetchThroughInterceptors(this.interceptorManager.getInterceptPoints().beforeUpdateRuleResult)({
1611
+ subUnitId: t,
1612
+ unitId: e,
1613
+ cfId: s
1614
+ }, void 0), r.forValue((o, l, c) => {
1615
+ this._conditionalFormattingViewModel.setCellCfRuleCache(e, t, o, l, s, c);
1898
1616
  }));
1899
1617
  }));
1900
1618
  }
1901
- async _handleCalculateUnit(unitId, subUnitId, rule) {
1902
- if (!this._conditionalFormattingRuleModel.getRule(unitId, subUnitId, rule.cfId))
1619
+ async _handleCalculateUnit(i, t, e) {
1620
+ if (!this._conditionalFormattingRuleModel.getRule(i, t, e.cfId))
1903
1621
  return;
1904
- const workbook = this._univerInstanceService.getUnit(unitId), worksheet = workbook == null ? void 0 : workbook.getSheetBySheetId(subUnitId);
1905
- let cache = this._getComputedCache(unitId, subUnitId, rule.cfId);
1906
- if (cache && ["computing", "end"].includes(cache.status))
1622
+ const s = this._univerInstanceService.getUnit(i), r = s == null ? void 0 : s.getSheetBySheetId(t);
1623
+ let a = this._getComputedCache(i, t, e.cfId);
1624
+ if (a && ["computing", "end"].includes(a.status))
1907
1625
  return;
1908
- cache || (cache = { status: "computing" }, this._setComputedCache(unitId, subUnitId, rule.cfId, cache));
1909
- const unit = this._calculationUnitMap.get(rule.rule.type);
1910
- if (!unit || !worksheet)
1626
+ a || (a = { status: "computing" }, this._setComputedCache(i, t, e.cfId, a));
1627
+ const o = this._calculationUnitMap.get(e.rule.type);
1628
+ if (!o || !r)
1911
1629
  return;
1912
- const context = { unitId, subUnitId, accessor: this._injector, workbook, worksheet }, result = await unit.handle(rule, context);
1913
- this._ruleComputeStatus$.next({ status: "end", unitId, subUnitId, cfId: rule.cfId, result });
1914
- }
1915
- }, __name(_a3, "ConditionalFormattingService"), _a3);
1916
- ConditionalFormattingService = __decorateClass$1([
1917
- __decorateParam$1(0, Inject(ConditionalFormattingRuleModel)),
1918
- __decorateParam$1(1, Inject(Injector)),
1919
- __decorateParam$1(2, Inject(ConditionalFormattingViewModel)),
1920
- __decorateParam$1(3, Inject(IUniverInstanceService)),
1921
- __decorateParam$1(4, Inject(IResourceManagerService)),
1922
- __decorateParam$1(5, Inject(SheetInterceptorService)),
1923
- __decorateParam$1(6, Inject(ICommandService))
1924
- ], ConditionalFormattingService);
1925
- const getUnitId = /* @__PURE__ */ __name((u) => u.getCurrentUnitForType(UniverInstanceType.UNIVER_SHEET).getUnitId(), "getUnitId"), getSubUnitId = /* @__PURE__ */ __name((u) => {
1926
- var _a5;
1927
- return (_a5 = u.getCurrentUnitForType(UniverInstanceType.UNIVER_SHEET).getActiveSheet()) == null ? void 0 : _a5.getSheetId();
1928
- }, "getSubUnitId");
1929
- var __defProp2 = Object.defineProperty, __getOwnPropDesc = Object.getOwnPropertyDescriptor, __decorateClass = /* @__PURE__ */ __name((decorators, target, key, kind) => {
1930
- for (var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target, i = decorators.length - 1, decorator; i >= 0; i--)
1931
- (decorator = decorators[i]) && (result = (kind ? decorator(target, key, result) : decorator(result)) || result);
1932
- return kind && result && __defProp2(target, key, result), result;
1933
- }, "__decorateClass"), __decorateParam = /* @__PURE__ */ __name((index, decorator) => (target, key) => decorator(target, key, index), "__decorateParam"), _a4;
1934
- let UniverSheetsConditionalFormattingPlugin = (_a4 = class extends Plugin {
1935
- constructor(_config = defaultPluginConfig, _injector, _commandService, _configService) {
1936
- super(), this._config = _config, this._injector = _injector, this._commandService = _commandService, this._configService = _configService;
1937
- const { ...rest } = this._config;
1938
- this._configService.setConfig(PLUGIN_CONFIG_KEY, rest), [
1939
- [ConditionalFormattingService],
1940
- [ConditionalFormattingFormulaService],
1941
- [ConditionalFormattingRuleModel],
1942
- [ConditionalFormattingViewModel]
1943
- ].forEach((dependency) => {
1944
- this._injector.add(dependency);
1630
+ const l = { unitId: i, subUnitId: t, accessor: this._injector, workbook: s, worksheet: r }, c = await o.handle(e, l);
1631
+ this._ruleComputeStatus$.next({ status: "end", unitId: i, subUnitId: t, cfId: e.cfId, result: c });
1632
+ }
1633
+ };
1634
+ z = Y0([
1635
+ Z(0, M(V)),
1636
+ Z(1, M(o2)),
1637
+ Z(2, M(c2)),
1638
+ Z(3, M(O2)),
1639
+ Z(4, M(T2)),
1640
+ Z(5, M(j2)),
1641
+ Z(6, M(C2))
1642
+ ], z);
1643
+ const J0 = (n) => n.getCurrentUnitForType(l2.UNIVER_SHEET).getUnitId(), z0 = (n) => {
1644
+ var i;
1645
+ return (i = n.getCurrentUnitForType(l2.UNIVER_SHEET).getActiveSheet()) == null ? void 0 : i.getSheetId();
1646
+ };
1647
+ var Q0 = Object.defineProperty, e1 = Object.getOwnPropertyDescriptor, t1 = (n, i, t, e) => {
1648
+ for (var s = e > 1 ? void 0 : e ? e1(i, t) : i, r = n.length - 1, a; r >= 0; r--)
1649
+ (a = n[r]) && (s = (e ? a(i, t, s) : a(s)) || s);
1650
+ return e && s && Q0(i, t, s), s;
1651
+ }, g2 = (n, i) => (t, e) => i(t, e, n), t2;
1652
+ let A2 = (t2 = class extends $2 {
1653
+ constructor(n = L0, i, t, e) {
1654
+ super(), this._config = n, this._injector = i, this._commandService = t, this._configService = e;
1655
+ const { ...s } = this._config;
1656
+ this._configService.setConfig(I0, s), [
1657
+ [z],
1658
+ [N],
1659
+ [V],
1660
+ [c2]
1661
+ ].forEach((r) => {
1662
+ this._injector.add(r);
1945
1663
  }), [
1946
- AddConditionalRuleMutation,
1947
- DeleteConditionalRuleMutation,
1948
- SetConditionalRuleMutation,
1949
- MoveConditionalRuleMutation,
1950
- ConditionalFormattingFormulaMarkDirty
1951
- ].forEach((m) => {
1952
- this._commandService.registerCommand(m);
1664
+ b2,
1665
+ m2,
1666
+ S2,
1667
+ f2,
1668
+ i2
1669
+ ].forEach((r) => {
1670
+ this._commandService.registerCommand(r);
1953
1671
  });
1954
1672
  }
1955
1673
  onStarting() {
1956
- this._injector.get(ConditionalFormattingService);
1957
- }
1958
- }, __name(_a4, "UniverSheetsConditionalFormattingPlugin"), __publicField(_a4, "pluginName", SHEET_CONDITIONAL_FORMATTING_PLUGIN), __publicField(_a4, "type", UniverInstanceType.UNIVER_SHEET), _a4);
1959
- UniverSheetsConditionalFormattingPlugin = __decorateClass([
1960
- __decorateParam(1, Inject(Injector)),
1961
- __decorateParam(2, Inject(ICommandService)),
1962
- __decorateParam(3, IConfigService)
1963
- ], UniverSheetsConditionalFormattingPlugin);
1964
- const IconUKey = "sheet-conditional-rule-icon", EXTENSION_Z_INDEX = 35, DEFAULT_WIDTH = 15, DEFAULT_PADDING = 2, _ConditionalFormattingIcon = class _ConditionalFormattingIcon extends SheetExtension {
1674
+ this._injector.get(z);
1675
+ }
1676
+ }, E(t2, "pluginName", L2), E(t2, "type", l2.UNIVER_SHEET), t2);
1677
+ A2 = t1([
1678
+ g2(1, M(o2)),
1679
+ g2(2, M(C2)),
1680
+ g2(3, W2)
1681
+ ], A2);
1682
+ const i1 = "sheet-conditional-rule-icon", s1 = 35, n1 = 15, r1 = 2;
1683
+ class a1 extends I2 {
1965
1684
  constructor() {
1966
1685
  super();
1967
- __publicField(this, "_paddingRightAndLeft", DEFAULT_PADDING);
1968
- __publicField(this, "_width", DEFAULT_WIDTH);
1969
- __publicField(this, "_imageMap", /* @__PURE__ */ new Map());
1970
- __publicField(this, "uKey", IconUKey);
1971
- __publicField(this, "Z_INDEX", EXTENSION_Z_INDEX);
1972
- __publicField(this, "_radius", 1);
1686
+ E(this, "_paddingRightAndLeft", r1);
1687
+ E(this, "_width", n1);
1688
+ E(this, "_imageMap", /* @__PURE__ */ new Map());
1689
+ E(this, "uKey", i1);
1690
+ E(this, "Z_INDEX", s1);
1691
+ E(this, "_radius", 1);
1973
1692
  this._init();
1974
1693
  }
1975
- draw(ctx, _parentScale, spreadsheetSkeleton, diffRanges) {
1976
- const { worksheet } = spreadsheetSkeleton;
1977
- if (!worksheet)
1694
+ draw(t, e, s, r) {
1695
+ const { worksheet: a } = s;
1696
+ if (!a)
1978
1697
  return !1;
1979
- ctx.save(), Range.foreach(spreadsheetSkeleton.rowColumnSegment, (row, col) => {
1980
- if (!worksheet.getRowVisible(row) || !worksheet.getColVisible(col))
1698
+ t.save(), R.foreach(s.rowColumnSegment, (o, l) => {
1699
+ if (!a.getRowVisible(o) || !a.getColVisible(l))
1981
1700
  return;
1982
- const cellData = worksheet.getCell(row, col);
1983
- if (cellData != null && cellData.iconSet) {
1984
- const { iconType, iconId } = cellData.iconSet;
1985
- if (iconType === EMPTY_ICON_TYPE)
1701
+ const c = a.getCell(o, l);
1702
+ if (c != null && c.iconSet) {
1703
+ const { iconType: h, iconId: u } = c.iconSet;
1704
+ if (h === y0)
1986
1705
  return;
1987
- const icon = this._imageMap.get(this._createKey(iconType, iconId));
1988
- if (!icon)
1706
+ const g = this._imageMap.get(this._createKey(h, u));
1707
+ if (!g)
1989
1708
  return;
1990
- const cellInfo = spreadsheetSkeleton.getCellByIndexWithNoHeader(row, col);
1991
- let { isMerged, isMergedMainCell, mergeInfo, startY, endY, startX, endX } = cellInfo;
1992
- if (isMerged || (isMergedMainCell && (startY = mergeInfo.startY, endY = mergeInfo.endY, startX = mergeInfo.startX, endX = mergeInfo.endX), !this.isRenderDiffRangesByCell(mergeInfo, diffRanges)))
1709
+ const d = s.getCellWithCoordByIndex(o, l, !1);
1710
+ let { isMerged: D, isMergedMainCell: C, mergeInfo: m, startY: F, endY: w, startX: v, endX: A } = d;
1711
+ if (D || (C && (F = m.startY, w = m.endY, v = m.startX, A = m.endX), !this.isRenderDiffRangesByCell(m, r)))
1993
1712
  return;
1994
- const borderWidth = endX - startX, borderHeight = endY - startY;
1995
- if (this._width > borderHeight || this._width > borderWidth + this._paddingRightAndLeft * 2)
1713
+ const O = A - v, P = w - F;
1714
+ if (this._width > P || this._width > O + this._paddingRightAndLeft * 2)
1996
1715
  return;
1997
- const y = (borderHeight - this._width) / 2 + startY;
1998
- ctx.drawImage(icon, startX + this._paddingRightAndLeft, y, this._width, this._width);
1716
+ const h2 = (P - this._width) / 2 + F;
1717
+ t.drawImage(g, v + this._paddingRightAndLeft, h2, this._width, this._width);
1999
1718
  }
2000
- }), ctx.restore();
1719
+ }), t.restore();
2001
1720
  }
2002
1721
  _init() {
2003
- for (const type in iconMap)
2004
- iconMap[type].forEach((base64, index) => {
2005
- const key = this._createKey(type, String(index)), image = new Image();
2006
- image.onload = () => {
2007
- this._imageMap.set(key, image);
2008
- }, image.src = base64;
1722
+ for (const t in n2)
1723
+ n2[t].forEach((s, r) => {
1724
+ const a = this._createKey(t, String(r)), o = new Image();
1725
+ o.onload = () => {
1726
+ this._imageMap.set(a, o);
1727
+ }, o.src = s;
2009
1728
  });
2010
1729
  }
2011
- _createKey(iconType, iconIndex) {
2012
- return `${iconType}_${iconIndex}`;
1730
+ _createKey(t, e) {
1731
+ return `${t}_${e}`;
2013
1732
  }
2014
- };
2015
- __name(_ConditionalFormattingIcon, "ConditionalFormattingIcon");
2016
- let ConditionalFormattingIcon = _ConditionalFormattingIcon;
2017
- SpreadsheetExtensionRegistry.add(ConditionalFormattingIcon);
2018
- const isRangesEqual = /* @__PURE__ */ __name((oldRanges, ranges) => ranges.length === oldRanges.length && !oldRanges.some((oldRange) => ranges.some((range) => !Rectangle.equals(range, oldRange))), "isRangesEqual");
2019
- function removeUndefinedAttr(obj) {
2020
- if (typeof obj != "object" || obj === null)
2021
- return obj;
2022
- const result = {};
2023
- for (const key in obj)
2024
- if (obj.hasOwnProperty(key)) {
2025
- const value = removeUndefinedAttr(obj[key]);
2026
- value !== void 0 && (result[key] = value);
1733
+ }
1734
+ R2.add(a1);
1735
+ const M1 = (n, i) => i.length === n.length && !n.some((t) => i.some((e) => !H.equals(e, t)));
1736
+ function o1(n) {
1737
+ if (typeof n != "object" || n === null)
1738
+ return n;
1739
+ const i = {};
1740
+ for (const t in n)
1741
+ if (n.hasOwnProperty(t)) {
1742
+ const e = o1(n[t]);
1743
+ e !== void 0 && (i[t] = e);
2027
1744
  }
2028
- return result;
1745
+ return i;
2029
1746
  }
2030
- __name(removeUndefinedAttr, "removeUndefinedAttr");
2031
1747
  export {
2032
- AddConditionalRuleMutation,
2033
- AddConditionalRuleMutationUndoFactory,
2034
- CFNumberOperator,
2035
- CFRuleType,
2036
- CFSubRuleType,
2037
- CFTextOperator,
2038
- CFTimePeriodOperator,
2039
- CFValueType,
2040
- ConditionalFormattingFormulaMarkDirty,
2041
- ConditionalFormattingFormulaService,
2042
- ConditionalFormattingIcon,
2043
- ConditionalFormattingRuleModel,
2044
- ConditionalFormattingService,
2045
- ConditionalFormattingViewModel,
2046
- DEFAULT_BG_COLOR,
2047
- DEFAULT_FONT_COLOR,
2048
- DEFAULT_PADDING,
2049
- DEFAULT_WIDTH,
2050
- DataBar,
2051
- DeleteConditionalRuleMutation,
2052
- DeleteConditionalRuleMutationUndoFactory,
2053
- EMPTY_ICON_TYPE,
2054
- EMPTY_STYLE,
2055
- FormulaResultStatus,
2056
- IconUKey,
2057
- MoveConditionalRuleMutation,
2058
- MoveConditionalRuleMutationUndoFactory,
2059
- SHEET_CONDITIONAL_FORMATTING_PLUGIN,
2060
- SetConditionalRuleMutation,
2061
- UniverSheetsConditionalFormattingPlugin,
2062
- anchorUndoFactory,
2063
- compareWithNumber,
2064
- createCfId,
2065
- createDefaultRule,
2066
- createDefaultValue,
2067
- createDefaultValueByValueType,
2068
- dataBarUKey,
2069
- defaultDataBarNativeColor,
2070
- defaultDataBarPositiveColor,
2071
- filterRange,
2072
- findIndexByAnchor,
2073
- getCacheStyleMatrix,
2074
- getCellValue,
2075
- getColorScaleFromValue,
2076
- getOppositeOperator,
2077
- getValueByType,
2078
- iconGroup,
2079
- iconMap,
2080
- isAnchorEqual,
2081
- isFloatsEqual,
2082
- isNullable,
2083
- isRangesEqual,
2084
- moveByAnchor,
2085
- removeUndefinedAttr,
2086
- serialTimeToTimestamp,
2087
- setConditionalRuleMutationUndoFactory,
2088
- toYMD_1900,
2089
- transformSupportSymmetryAnchor
1748
+ b2 as AddConditionalRuleMutation,
1749
+ p1 as AddConditionalRuleMutationUndoFactory,
1750
+ p as CFNumberOperator,
1751
+ L as CFRuleType,
1752
+ _ as CFSubRuleType,
1753
+ b as CFTextOperator,
1754
+ S as CFTimePeriodOperator,
1755
+ U as CFValueType,
1756
+ i2 as ConditionalFormattingFormulaMarkDirty,
1757
+ N as ConditionalFormattingFormulaService,
1758
+ a1 as ConditionalFormattingIcon,
1759
+ V as ConditionalFormattingRuleModel,
1760
+ z as ConditionalFormattingService,
1761
+ c2 as ConditionalFormattingViewModel,
1762
+ C1 as DEFAULT_BG_COLOR,
1763
+ f1 as DEFAULT_FONT_COLOR,
1764
+ r1 as DEFAULT_PADDING,
1765
+ n1 as DEFAULT_WIDTH,
1766
+ q0 as DataBar,
1767
+ m2 as DeleteConditionalRuleMutation,
1768
+ R0 as DeleteConditionalRuleMutationUndoFactory,
1769
+ y0 as EMPTY_ICON_TYPE,
1770
+ X as EMPTY_STYLE,
1771
+ y as FormulaResultStatus,
1772
+ i1 as IconUKey,
1773
+ f2 as MoveConditionalRuleMutation,
1774
+ v1 as MoveConditionalRuleMutationUndoFactory,
1775
+ L2 as SHEET_CONDITIONAL_FORMATTING_PLUGIN,
1776
+ S2 as SetConditionalRuleMutation,
1777
+ A2 as UniverSheetsConditionalFormattingPlugin,
1778
+ h0 as anchorUndoFactory,
1779
+ J as compareWithNumber,
1780
+ l0 as createCfId,
1781
+ m1 as createDefaultRule,
1782
+ F1 as createDefaultValue,
1783
+ w1 as createDefaultValueByValueType,
1784
+ $0 as dataBarUKey,
1785
+ p2 as defaultDataBarNativeColor,
1786
+ v2 as defaultDataBarPositiveColor,
1787
+ u2 as filterRange,
1788
+ j as findIndexByAnchor,
1789
+ x1 as getCacheStyleMatrix,
1790
+ T as getCellValue,
1791
+ O0 as getColorScaleFromValue,
1792
+ _1 as getMaxInFormulaResult,
1793
+ N0 as getOppositeOperator,
1794
+ a2 as getValueByType,
1795
+ M0 as iconGroup,
1796
+ n2 as iconMap,
1797
+ E1 as isAnchorEqual,
1798
+ r2 as isFloatsEqual,
1799
+ k as isNullable,
1800
+ M1 as isRangesEqual,
1801
+ c0 as moveByAnchor,
1802
+ o1 as removeUndefinedAttr,
1803
+ U0 as serialTimeToTimestamp,
1804
+ A1 as setConditionalRuleMutationUndoFactory,
1805
+ V0 as toYMD_1900,
1806
+ u0 as transformSupportSymmetryAnchor
2090
1807
  };