@univerjs/sheets-crosshair-highlight 0.5.4 → 0.5.5-experimental.20250122-3362a4a
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/facade.js +1 -1
- package/lib/cjs/index.js +1 -9
- package/lib/cjs/locale/en-US.js +1 -1
- package/lib/cjs/locale/fa-IR.js +1 -1
- package/lib/cjs/locale/fr-FR.js +1 -1
- package/lib/cjs/locale/ru-RU.js +1 -1
- package/lib/cjs/locale/vi-VN.js +1 -1
- package/lib/cjs/locale/zh-CN.js +1 -1
- package/lib/cjs/locale/zh-TW.js +1 -1
- package/lib/es/facade.js +48 -11
- package/lib/es/index.js +310 -324
- package/lib/es/locale/en-US.js +2 -2
- package/lib/es/locale/fa-IR.js +2 -2
- package/lib/es/locale/fr-FR.js +2 -2
- package/lib/es/locale/ru-RU.js +2 -2
- package/lib/es/locale/vi-VN.js +2 -2
- package/lib/es/locale/zh-CN.js +2 -2
- package/lib/es/locale/zh-TW.js +2 -2
- package/lib/index.css +1 -1
- package/lib/types/facade/f-univer.d.ts +107 -1
- package/lib/types/index.d.ts +1 -1
- package/lib/umd/facade.js +1 -1
- package/lib/umd/index.js +1 -9
- package/lib/umd/locale/en-US.js +1 -1
- package/lib/umd/locale/fa-IR.js +1 -1
- package/lib/umd/locale/fr-FR.js +1 -1
- package/lib/umd/locale/ru-RU.js +1 -1
- package/lib/umd/locale/vi-VN.js +1 -1
- package/lib/umd/locale/zh-CN.js +1 -1
- package/lib/umd/locale/zh-TW.js +1 -1
- package/package.json +8 -8
- package/LICENSE +0 -176
package/lib/es/index.js
CHANGED
|
@@ -1,66 +1,72 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
3
|
-
var
|
|
4
|
-
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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 { Disposable, CommandType, useDependency, useObservable, UniverInstanceType, Inject, ICommandService, RANGE_TYPE, Rectangle, IContextService, ColorKit, Plugin, merge as merge$1, Injector, IConfigService } from "@univerjs/core";
|
|
6
|
+
import { Shape, Rect, IRenderManagerService } from "@univerjs/engine-render";
|
|
7
|
+
import { MenuItemType, getMenuHiddenObservable, ContextMenuPosition, ContextMenuGroup, ComponentManager, IMenuManagerService } from "@univerjs/ui";
|
|
8
|
+
import { BehaviorSubject, combineLatest, startWith, tap, merge, map } from "rxjs";
|
|
9
|
+
import { jsx } from "react/jsx-runtime";
|
|
10
|
+
import { forwardRef, useRef, createElement, useCallback } from "react";
|
|
11
|
+
import { SheetsSelectionsService, REF_SELECTIONS_ENABLED, IRefSelectionsService } from "@univerjs/sheets";
|
|
12
|
+
import { SheetSkeletonManagerService, getCoordByCell } from "@univerjs/sheets-ui";
|
|
13
|
+
const SHEETS_CROSSHAIR_HIGHLIGHT_PLUGIN_CONFIG_KEY = "sheets-crosshair-highlight.config", defaultPluginConfig = {};
|
|
14
|
+
var __assign = function() {
|
|
15
|
+
return __assign = Object.assign || function(t) {
|
|
16
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
17
|
+
s = arguments[i];
|
|
18
|
+
for (var p in s) Object.prototype.hasOwnProperty.call(s, p) && (t[p] = s[p]);
|
|
17
19
|
}
|
|
18
|
-
return
|
|
19
|
-
},
|
|
20
|
-
},
|
|
20
|
+
return t;
|
|
21
|
+
}, __assign.apply(this, arguments);
|
|
22
|
+
}, __rest = function(s, e) {
|
|
21
23
|
var t = {};
|
|
22
|
-
for (var
|
|
23
|
-
if (
|
|
24
|
-
for (var
|
|
25
|
-
e.indexOf(
|
|
24
|
+
for (var p in s) Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0 && (t[p] = s[p]);
|
|
25
|
+
if (s != null && typeof Object.getOwnPropertySymbols == "function")
|
|
26
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++)
|
|
27
|
+
e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]) && (t[p[i]] = s[p[i]]);
|
|
26
28
|
return t;
|
|
27
|
-
},
|
|
28
|
-
var
|
|
29
|
-
return
|
|
29
|
+
}, IconBase = forwardRef(function(props, ref) {
|
|
30
|
+
var icon = props.icon, id = props.id, className = props.className, extend = props.extend, restProps = __rest(props, ["icon", "id", "className", "extend"]), cls = "univerjs-icon univerjs-icon-".concat(id, " ").concat(className || "").trim(), idSuffix = useRef("_".concat(generateShortUuid()));
|
|
31
|
+
return render(icon, "".concat(id), { defIds: icon.defIds, idSuffix: idSuffix.current }, __assign({ ref, className: cls }, restProps), extend);
|
|
30
32
|
});
|
|
31
|
-
function
|
|
32
|
-
return
|
|
33
|
-
return
|
|
33
|
+
function render(node, id, runtimeProps, rootProps, extend) {
|
|
34
|
+
return createElement(node.tag, __assign(__assign({ key: id }, replaceRuntimeIdsAndExtInAttrs(node, runtimeProps, extend)), rootProps), (replaceRuntimeIdsInDefs(node, runtimeProps).children || []).map(function(child, index) {
|
|
35
|
+
return render(child, "".concat(id, "-").concat(node.tag, "-").concat(index), runtimeProps, void 0, extend);
|
|
34
36
|
}));
|
|
35
37
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
38
|
+
__name(render, "render");
|
|
39
|
+
function replaceRuntimeIdsAndExtInAttrs(node, runtimeProps, extend) {
|
|
40
|
+
var attrs = __assign({}, node.attrs);
|
|
41
|
+
extend != null && extend.colorChannel1 && attrs.fill === "colorChannel1" && (attrs.fill = extend.colorChannel1);
|
|
42
|
+
var defIds = runtimeProps.defIds;
|
|
43
|
+
return !defIds || defIds.length === 0 || (node.tag === "use" && attrs["xlink:href"] && (attrs["xlink:href"] = attrs["xlink:href"] + runtimeProps.idSuffix), Object.entries(attrs).forEach(function(_a4) {
|
|
44
|
+
var key = _a4[0], value = _a4[1];
|
|
45
|
+
typeof value == "string" && (attrs[key] = value.replace(/url\(#(.*)\)/, "url(#$1".concat(runtimeProps.idSuffix, ")")));
|
|
46
|
+
})), attrs;
|
|
44
47
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
48
|
+
__name(replaceRuntimeIdsAndExtInAttrs, "replaceRuntimeIdsAndExtInAttrs");
|
|
49
|
+
function replaceRuntimeIdsInDefs(node, runtimeProps) {
|
|
50
|
+
var _a4, defIds = runtimeProps.defIds;
|
|
51
|
+
return !defIds || defIds.length === 0 ? node : node.tag === "defs" && (!((_a4 = node.children) === null || _a4 === void 0) && _a4.length) ? __assign(__assign({}, node), { children: node.children.map(function(child) {
|
|
52
|
+
return typeof child.attrs.id == "string" && defIds && defIds.indexOf(child.attrs.id) > -1 ? __assign(__assign({}, child), { attrs: __assign(__assign({}, child.attrs), { id: child.attrs.id + runtimeProps.idSuffix }) }) : child;
|
|
53
|
+
}) }) : node;
|
|
50
54
|
}
|
|
51
|
-
|
|
55
|
+
__name(replaceRuntimeIdsInDefs, "replaceRuntimeIdsInDefs");
|
|
56
|
+
function generateShortUuid() {
|
|
52
57
|
return Math.random().toString(36).substring(2, 8);
|
|
53
58
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
59
|
+
__name(generateShortUuid, "generateShortUuid");
|
|
60
|
+
IconBase.displayName = "UniverIcon";
|
|
61
|
+
var element = { tag: "svg", attrs: { fill: "none", viewBox: "0 0 16 16", width: "1em", height: "1em" }, children: [{ tag: "path", attrs: { fill: "#E5E5E5", d: "M1.6499 3.65002C1.6499 2.54545 2.54533 1.65002 3.6499 1.65002H12.3499C13.4545 1.65002 14.3499 2.54545 14.3499 3.65002V12.35C14.3499 13.4546 13.4545 14.35 12.3499 14.35H3.6499C2.54533 14.35 1.6499 13.4546 1.6499 12.35V3.65002Z" } }, { tag: "path", attrs: { fill: "#fff", d: "M9.9998 1.65002H5.9998V6H1.6499V10H5.9998V14.35H9.9998V10H14.3499V6H9.9998V1.65002Z" } }, { tag: "path", attrs: { fill: "currentColor", d: "M3.6498 1.05005C2.21386 1.05005 1.0498 2.21411 1.0498 3.65005V12.35C1.0498 13.786 2.21386 14.95 3.6498 14.95H12.3498C13.7857 14.95 14.9498 13.786 14.9498 12.3501V3.65005C14.9498 2.21411 13.7857 1.05005 12.3498 1.05005H3.6498ZM5.4002 2.25005H3.6498C2.87661 2.25005 2.2498 2.87685 2.2498 3.65005V5.40002H5.4002V2.25005ZM2.2498 10.6V12.35C2.2498 13.1232 2.87661 13.75 3.6498 13.75H5.4002V10.6H2.2498ZM6.60019 13.75H9.4002V9.40002H13.7498V6.60002H9.4002V2.25005H6.60019V6.60002H2.25029V9.40002H6.60019V13.75ZM10.6002 2.25005V5.40002H13.7498V3.65005C13.7498 2.87685 13.123 2.25005 12.3498 2.25005H10.6002ZM13.7498 10.6H10.6002V13.75H12.3498C13.123 13.75 13.7498 13.1232 13.7498 12.3501V10.6Z", fillRule: "evenodd", clipRule: "evenodd" } }] }, CrossHighlightingSingle = forwardRef(function(props, ref) {
|
|
62
|
+
return createElement(IconBase, Object.assign({}, props, {
|
|
57
63
|
id: "cross-highlighting-single",
|
|
58
|
-
ref
|
|
59
|
-
icon:
|
|
64
|
+
ref,
|
|
65
|
+
icon: element
|
|
60
66
|
}));
|
|
61
67
|
});
|
|
62
|
-
|
|
63
|
-
const
|
|
68
|
+
CrossHighlightingSingle.displayName = "CrossHighlightingSingle";
|
|
69
|
+
const CROSSHAIR_HIGHLIGHT_COLORS = [
|
|
64
70
|
"rgba(158, 109, 227, 0.3)",
|
|
65
71
|
"rgba(254, 75, 75, 0.3)",
|
|
66
72
|
"rgba(255, 140, 81, 0.3)",
|
|
@@ -77,14 +83,13 @@ const q = [
|
|
|
77
83
|
"rgba(58, 96, 247, 0.15)",
|
|
78
84
|
"rgba(242, 72, 166, 0.15)",
|
|
79
85
|
"rgba(153, 153, 153, 0.15)"
|
|
80
|
-
]
|
|
81
|
-
class S extends $ {
|
|
86
|
+
], _SheetsCrosshairHighlightService = class _SheetsCrosshairHighlightService extends Disposable {
|
|
82
87
|
constructor() {
|
|
83
88
|
super(...arguments);
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
89
|
+
__publicField(this, "_enabled$", new BehaviorSubject(!1));
|
|
90
|
+
__publicField(this, "enabled$", this._enabled$.asObservable());
|
|
91
|
+
__publicField(this, "_color$", new BehaviorSubject(CROSSHAIR_HIGHLIGHT_COLORS[0]));
|
|
92
|
+
__publicField(this, "color$", this._color$.asObservable());
|
|
88
93
|
}
|
|
89
94
|
get enabled() {
|
|
90
95
|
return this._enabled$.getValue();
|
|
@@ -95,199 +100,175 @@ class S extends $ {
|
|
|
95
100
|
dispose() {
|
|
96
101
|
this._enabled$.complete();
|
|
97
102
|
}
|
|
98
|
-
setEnabled(
|
|
99
|
-
this._enabled$.next(
|
|
103
|
+
setEnabled(value) {
|
|
104
|
+
this._enabled$.next(value);
|
|
100
105
|
}
|
|
101
|
-
setColor(
|
|
102
|
-
this._color$.next(
|
|
106
|
+
setColor(value) {
|
|
107
|
+
this._color$.next(value);
|
|
103
108
|
}
|
|
104
|
-
}
|
|
105
|
-
|
|
109
|
+
};
|
|
110
|
+
__name(_SheetsCrosshairHighlightService, "SheetsCrosshairHighlightService");
|
|
111
|
+
let SheetsCrosshairHighlightService = _SheetsCrosshairHighlightService;
|
|
112
|
+
const ToggleCrosshairHighlightOperation = {
|
|
106
113
|
id: "sheet.operation.toggle-crosshair-highlight",
|
|
107
|
-
type:
|
|
108
|
-
handler(
|
|
109
|
-
const
|
|
110
|
-
return
|
|
114
|
+
type: CommandType.OPERATION,
|
|
115
|
+
handler(accessor) {
|
|
116
|
+
const service = accessor.get(SheetsCrosshairHighlightService), turnedOn = service.enabled;
|
|
117
|
+
return service.setEnabled(!turnedOn), !0;
|
|
111
118
|
}
|
|
112
|
-
},
|
|
119
|
+
}, SetCrosshairHighlightColorOperation = {
|
|
113
120
|
id: "sheet.operation.set-crosshair-highlight-color",
|
|
114
|
-
type:
|
|
115
|
-
handler(
|
|
116
|
-
const
|
|
117
|
-
return
|
|
121
|
+
type: CommandType.OPERATION,
|
|
122
|
+
handler(accessor, { value }) {
|
|
123
|
+
const service = accessor.get(SheetsCrosshairHighlightService);
|
|
124
|
+
return service.enabled || service.setEnabled(!0), service.setColor(value), !0;
|
|
118
125
|
}
|
|
119
|
-
},
|
|
126
|
+
}, EnableCrosshairHighlightOperation = {
|
|
120
127
|
id: "sheet.operation.enable-crosshair-highlight",
|
|
121
|
-
type:
|
|
122
|
-
handler(
|
|
123
|
-
const
|
|
124
|
-
return
|
|
128
|
+
type: CommandType.OPERATION,
|
|
129
|
+
handler(accessor) {
|
|
130
|
+
const service = accessor.get(SheetsCrosshairHighlightService);
|
|
131
|
+
return service.enabled ? !1 : (service.setEnabled(!0), !0);
|
|
125
132
|
}
|
|
126
|
-
},
|
|
133
|
+
}, DisableCrosshairHighlightOperation = {
|
|
127
134
|
id: "sheet.operation.disable-crosshair-highlight",
|
|
128
|
-
type:
|
|
129
|
-
handler(
|
|
130
|
-
const
|
|
131
|
-
return
|
|
135
|
+
type: CommandType.OPERATION,
|
|
136
|
+
handler(accessor) {
|
|
137
|
+
const service = accessor.get(SheetsCrosshairHighlightService);
|
|
138
|
+
return service.enabled ? (service.setEnabled(!1), !0) : !1;
|
|
132
139
|
}
|
|
133
140
|
};
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
* LICENSE file in the root directory of this source tree.
|
|
143
|
-
*/
|
|
144
|
-
var G;
|
|
145
|
-
function Ue() {
|
|
146
|
-
if (G) return m;
|
|
147
|
-
G = 1;
|
|
148
|
-
var n = Ie, e = Symbol.for("react.element"), t = Symbol.for("react.fragment"), r = Object.prototype.hasOwnProperty, s = n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner, i = { key: !0, ref: !0, __self: !0, __source: !0 };
|
|
149
|
-
function o(a, c, f) {
|
|
150
|
-
var l, d = {}, _ = null, u = null;
|
|
151
|
-
f !== void 0 && (_ = "" + f), c.key !== void 0 && (_ = "" + c.key), c.ref !== void 0 && (u = c.ref);
|
|
152
|
-
for (l in c) r.call(c, l) && !i.hasOwnProperty(l) && (d[l] = c[l]);
|
|
153
|
-
if (a && a.defaultProps) for (l in c = a.defaultProps, c) d[l] === void 0 && (d[l] = c[l]);
|
|
154
|
-
return { $$typeof: e, type: a, key: _, ref: u, props: d, _owner: s.current };
|
|
155
|
-
}
|
|
156
|
-
return m.Fragment = t, m.jsx = o, m.jsxs = o, m;
|
|
157
|
-
}
|
|
158
|
-
var U;
|
|
159
|
-
function De() {
|
|
160
|
-
return U || (U = 1, I.exports = Ue()), I.exports;
|
|
141
|
+
function r(e) {
|
|
142
|
+
var t, f, n = "";
|
|
143
|
+
if (typeof e == "string" || typeof e == "number") n += e;
|
|
144
|
+
else if (typeof e == "object") if (Array.isArray(e)) {
|
|
145
|
+
var o = e.length;
|
|
146
|
+
for (t = 0; t < o; t++) e[t] && (f = r(e[t])) && (n && (n += " "), n += f);
|
|
147
|
+
} else for (f in e) e[f] && (n && (n += " "), n += f);
|
|
148
|
+
return n;
|
|
161
149
|
}
|
|
162
|
-
|
|
163
|
-
function
|
|
164
|
-
var e, t,
|
|
165
|
-
|
|
166
|
-
else if (typeof n == "object") if (Array.isArray(n)) {
|
|
167
|
-
var s = n.length;
|
|
168
|
-
for (e = 0; e < s; e++) n[e] && (t = X(n[e])) && (r && (r += " "), r += t);
|
|
169
|
-
} else for (t in n) n[t] && (r && (r += " "), r += t);
|
|
170
|
-
return r;
|
|
150
|
+
__name(r, "r");
|
|
151
|
+
function clsx() {
|
|
152
|
+
for (var e, t, f = 0, n = "", o = arguments.length; f < o; f++) (e = arguments[f]) && (t = r(e)) && (n && (n += " "), n += t);
|
|
153
|
+
return n;
|
|
171
154
|
}
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
crosshairHighlightOverlay: Ze,
|
|
178
|
-
crosshairHighlightItem: Be,
|
|
179
|
-
crosshairHighlightItemSelected: Fe
|
|
155
|
+
__name(clsx, "clsx");
|
|
156
|
+
const crosshairHighlightOverlay = "univer-crosshair-highlight-overlay", crosshairHighlightItem = "univer-crosshair-highlight-item", crosshairHighlightItemSelected = "univer-crosshair-highlight-item-selected", styles = {
|
|
157
|
+
crosshairHighlightOverlay,
|
|
158
|
+
crosshairHighlightItem,
|
|
159
|
+
crosshairHighlightItemSelected
|
|
180
160
|
};
|
|
181
|
-
function
|
|
182
|
-
const { onChange
|
|
183
|
-
|
|
184
|
-
}, [
|
|
185
|
-
return /* @__PURE__ */
|
|
161
|
+
function CrosshairOverlay(props) {
|
|
162
|
+
const { onChange } = props, crosshairSrv = useDependency(SheetsCrosshairHighlightService), currentColor = useObservable(crosshairSrv.color$), handleColorPicked = useCallback((color) => {
|
|
163
|
+
onChange == null || onChange(color);
|
|
164
|
+
}, [onChange]);
|
|
165
|
+
return /* @__PURE__ */ jsx("div", { className: styles.crosshairHighlightOverlay, children: CROSSHAIR_HIGHLIGHT_COLORS.map((color) => /* @__PURE__ */ jsx(
|
|
186
166
|
"div",
|
|
187
167
|
{
|
|
188
|
-
className:
|
|
189
|
-
[
|
|
168
|
+
className: clsx(styles.crosshairHighlightItem, {
|
|
169
|
+
[styles.crosshairHighlightItemSelected]: color === currentColor
|
|
190
170
|
}),
|
|
191
|
-
style: { backgroundColor:
|
|
192
|
-
onClick: () =>
|
|
171
|
+
style: { backgroundColor: color },
|
|
172
|
+
onClick: /* @__PURE__ */ __name(() => handleColorPicked(color), "onClick")
|
|
193
173
|
},
|
|
194
|
-
|
|
174
|
+
color
|
|
195
175
|
)) });
|
|
196
176
|
}
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
177
|
+
__name(CrosshairOverlay, "CrosshairOverlay");
|
|
178
|
+
const CROSSHAIR_HIGHLIGHT_OVERLAY_COMPONENT = "CROSSHAIR_HIGHLIGHT_OVERLAY_COMPONENT";
|
|
179
|
+
function CrosshairHighlightMenuItemFactory(accessor) {
|
|
180
|
+
const crosshairHighlightService = accessor.get(SheetsCrosshairHighlightService);
|
|
200
181
|
return {
|
|
201
|
-
id:
|
|
182
|
+
id: ToggleCrosshairHighlightOperation.id,
|
|
202
183
|
tooltip: "crosshair.button.tooltip",
|
|
203
|
-
type:
|
|
184
|
+
type: MenuItemType.BUTTON_SELECTOR,
|
|
204
185
|
icon: "CrossHighlightingSingle",
|
|
205
186
|
selections: [
|
|
206
187
|
{
|
|
207
188
|
label: {
|
|
208
|
-
name:
|
|
189
|
+
name: CROSSHAIR_HIGHLIGHT_OVERLAY_COMPONENT,
|
|
209
190
|
hoverable: !1
|
|
210
191
|
}
|
|
211
192
|
}
|
|
212
193
|
],
|
|
213
|
-
selectionsCommandId:
|
|
214
|
-
activated$:
|
|
215
|
-
hidden$:
|
|
194
|
+
selectionsCommandId: SetCrosshairHighlightColorOperation.id,
|
|
195
|
+
activated$: crosshairHighlightService.enabled$,
|
|
196
|
+
hidden$: getMenuHiddenObservable(accessor, UniverInstanceType.UNIVER_SHEET)
|
|
216
197
|
};
|
|
217
198
|
}
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
199
|
+
__name(CrosshairHighlightMenuItemFactory, "CrosshairHighlightMenuItemFactory");
|
|
200
|
+
const menuSchema = {
|
|
201
|
+
[ContextMenuPosition.FOOTER_MENU]: {
|
|
202
|
+
[ContextMenuGroup.OTHERS]: {
|
|
203
|
+
[ToggleCrosshairHighlightOperation.id]: {
|
|
222
204
|
order: 0,
|
|
223
|
-
menuItemFactory:
|
|
205
|
+
menuItemFactory: CrosshairHighlightMenuItemFactory
|
|
224
206
|
}
|
|
225
207
|
}
|
|
226
208
|
}
|
|
227
209
|
};
|
|
228
|
-
var
|
|
229
|
-
for (var
|
|
230
|
-
(
|
|
231
|
-
return
|
|
232
|
-
},
|
|
233
|
-
let
|
|
234
|
-
constructor(
|
|
235
|
-
super(), this._componentMgr =
|
|
210
|
+
var __defProp$2 = Object.defineProperty, __getOwnPropDesc$2 = Object.getOwnPropertyDescriptor, __decorateClass$2 = /* @__PURE__ */ __name((decorators, target, key, kind) => {
|
|
211
|
+
for (var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$2(target, key) : target, i = decorators.length - 1, decorator; i >= 0; i--)
|
|
212
|
+
(decorator = decorators[i]) && (result = (kind ? decorator(target, key, result) : decorator(result)) || result);
|
|
213
|
+
return kind && result && __defProp$2(target, key, result), result;
|
|
214
|
+
}, "__decorateClass$2"), __decorateParam$2 = /* @__PURE__ */ __name((index, decorator) => (target, key) => decorator(target, key, index), "__decorateParam$2"), _a;
|
|
215
|
+
let SheetsCrosshairHighlightController = (_a = class extends Disposable {
|
|
216
|
+
constructor(_componentMgr, _menuManagerService, _cmdSrv) {
|
|
217
|
+
super(), this._componentMgr = _componentMgr, this._menuManagerService = _menuManagerService, this._cmdSrv = _cmdSrv, this._initCommands(), this._initMenus(), this._initComponents();
|
|
236
218
|
}
|
|
237
219
|
_initCommands() {
|
|
238
220
|
[
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
].forEach((
|
|
221
|
+
ToggleCrosshairHighlightOperation,
|
|
222
|
+
SetCrosshairHighlightColorOperation,
|
|
223
|
+
EnableCrosshairHighlightOperation,
|
|
224
|
+
DisableCrosshairHighlightOperation
|
|
225
|
+
].forEach((c) => this._cmdSrv.registerCommand(c));
|
|
244
226
|
}
|
|
245
227
|
_initMenus() {
|
|
246
|
-
this._menuManagerService.mergeMenu(
|
|
228
|
+
this._menuManagerService.mergeMenu(menuSchema);
|
|
247
229
|
}
|
|
248
230
|
_initComponents() {
|
|
249
|
-
this._componentMgr.register(
|
|
250
|
-
}
|
|
251
|
-
};
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
],
|
|
257
|
-
const
|
|
258
|
-
class Qe {
|
|
231
|
+
this._componentMgr.register(CROSSHAIR_HIGHLIGHT_OVERLAY_COMPONENT, CrosshairOverlay), this._componentMgr.register("CrossHighlightingSingle", CrossHighlightingSingle);
|
|
232
|
+
}
|
|
233
|
+
}, __name(_a, "SheetsCrosshairHighlightController"), _a);
|
|
234
|
+
SheetsCrosshairHighlightController = __decorateClass$2([
|
|
235
|
+
__decorateParam$2(0, Inject(ComponentManager)),
|
|
236
|
+
__decorateParam$2(1, IMenuManagerService),
|
|
237
|
+
__decorateParam$2(2, ICommandService)
|
|
238
|
+
], SheetsCrosshairHighlightController);
|
|
239
|
+
const SHEETS_CROSSHAIR_HIGHLIGHT_Z_INDEX = 1, _CrossHairRangeCollection = class _CrossHairRangeCollection {
|
|
259
240
|
constructor() {
|
|
260
|
-
|
|
261
|
-
|
|
241
|
+
__publicField(this, "_selectedRanges", []);
|
|
242
|
+
__publicField(this, "_ranges", []);
|
|
262
243
|
}
|
|
263
|
-
addRange(
|
|
264
|
-
if (
|
|
244
|
+
addRange(range) {
|
|
245
|
+
if (range.rangeType === RANGE_TYPE.COLUMN || range.rangeType === RANGE_TYPE.ROW || range.rangeType === RANGE_TYPE.ALL)
|
|
265
246
|
return;
|
|
266
|
-
const
|
|
267
|
-
|
|
268
|
-
}
|
|
269
|
-
setSelectedRanges(
|
|
270
|
-
this._selectedRanges =
|
|
271
|
-
}
|
|
272
|
-
_getSplitRanges(
|
|
273
|
-
let
|
|
274
|
-
for (const
|
|
275
|
-
const
|
|
276
|
-
for (const
|
|
277
|
-
const
|
|
278
|
-
|
|
247
|
+
const intersects = this._getIntersects(range), splitRanges = this._getSplitRanges(range, intersects);
|
|
248
|
+
splitRanges.length > 0 && this._ranges.push(...splitRanges);
|
|
249
|
+
}
|
|
250
|
+
setSelectedRanges(selectedRange) {
|
|
251
|
+
this._selectedRanges = selectedRange;
|
|
252
|
+
}
|
|
253
|
+
_getSplitRanges(range, intersects) {
|
|
254
|
+
let splitRanges = [range];
|
|
255
|
+
for (const intersect of intersects.concat(this._selectedRanges)) {
|
|
256
|
+
const newRanges = [];
|
|
257
|
+
for (const splitRange of splitRanges) {
|
|
258
|
+
const split = Rectangle.subtract(splitRange, intersect);
|
|
259
|
+
split && split.length > 0 && newRanges.push(...split);
|
|
279
260
|
}
|
|
280
|
-
|
|
261
|
+
splitRanges = newRanges;
|
|
281
262
|
}
|
|
282
|
-
return
|
|
263
|
+
return splitRanges.filter((range2) => range2.startRow <= range2.endRow && range2.startColumn <= range2.endColumn);
|
|
283
264
|
}
|
|
284
|
-
_getIntersects(
|
|
285
|
-
const
|
|
286
|
-
for (const
|
|
287
|
-
const
|
|
288
|
-
|
|
265
|
+
_getIntersects(addRange) {
|
|
266
|
+
const intersects = [];
|
|
267
|
+
for (const range of this._ranges) {
|
|
268
|
+
const intersect = Rectangle.getIntersects(range, addRange);
|
|
269
|
+
intersect && intersects.push(intersect);
|
|
289
270
|
}
|
|
290
|
-
return
|
|
271
|
+
return intersects;
|
|
291
272
|
}
|
|
292
273
|
getRanges() {
|
|
293
274
|
return this._ranges;
|
|
@@ -295,188 +276,193 @@ class Qe {
|
|
|
295
276
|
reset() {
|
|
296
277
|
this._ranges = [], this._selectedRanges = [];
|
|
297
278
|
}
|
|
298
|
-
}
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
279
|
+
};
|
|
280
|
+
__name(_CrossHairRangeCollection, "CrossHairRangeCollection");
|
|
281
|
+
let CrossHairRangeCollection = _CrossHairRangeCollection;
|
|
282
|
+
const _SheetCrossHairHighlightShape = class _SheetCrossHairHighlightShape extends Shape {
|
|
283
|
+
constructor(key, props) {
|
|
284
|
+
super(key, props);
|
|
302
285
|
// protected _showHighLight = false;
|
|
303
|
-
|
|
304
|
-
|
|
286
|
+
__publicField(this, "_color");
|
|
287
|
+
props && this.setShapeProps(props);
|
|
305
288
|
}
|
|
306
|
-
setShapeProps(
|
|
307
|
-
typeof
|
|
308
|
-
width:
|
|
309
|
-
height:
|
|
289
|
+
setShapeProps(props) {
|
|
290
|
+
typeof props.color < "u" && (this._color = props.color), this.transformByState({
|
|
291
|
+
width: props.width,
|
|
292
|
+
height: props.height
|
|
310
293
|
});
|
|
311
294
|
}
|
|
312
|
-
_draw(
|
|
313
|
-
const
|
|
314
|
-
|
|
295
|
+
_draw(ctx) {
|
|
296
|
+
const color = `rgba(${this._color.r}, ${this._color.g}, ${this._color.b}, ${this._color.a})`;
|
|
297
|
+
Rect.drawWith(ctx, {
|
|
315
298
|
width: this.width,
|
|
316
299
|
height: this.height,
|
|
317
|
-
fill:
|
|
300
|
+
fill: color,
|
|
318
301
|
stroke: void 0,
|
|
319
302
|
strokeWidth: 0,
|
|
320
303
|
evented: !1
|
|
321
304
|
});
|
|
322
305
|
}
|
|
323
|
-
}
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
306
|
+
};
|
|
307
|
+
__name(_SheetCrossHairHighlightShape, "SheetCrossHairHighlightShape");
|
|
308
|
+
let SheetCrossHairHighlightShape = _SheetCrossHairHighlightShape;
|
|
309
|
+
var __defProp$1 = Object.defineProperty, __getOwnPropDesc$1 = Object.getOwnPropertyDescriptor, __decorateClass$1 = /* @__PURE__ */ __name((decorators, target, key, kind) => {
|
|
310
|
+
for (var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$1(target, key) : target, i = decorators.length - 1, decorator; i >= 0; i--)
|
|
311
|
+
(decorator = decorators[i]) && (result = (kind ? decorator(target, key, result) : decorator(result)) || result);
|
|
312
|
+
return kind && result && __defProp$1(target, key, result), result;
|
|
313
|
+
}, "__decorateClass$1"), __decorateParam$1 = /* @__PURE__ */ __name((index, decorator) => (target, key) => decorator(target, key, index), "__decorateParam$1"), _a2;
|
|
314
|
+
let SheetCrosshairHighlightRenderController = (_a2 = class extends Disposable {
|
|
315
|
+
constructor(_context, _sheetSkeletonManagerService, _sheetsSelectionsService, _sheetsCrosshairHighlightService, _contextService, _refSelectionsService) {
|
|
331
316
|
super();
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
this._context =
|
|
317
|
+
__publicField(this, "_shapes", []);
|
|
318
|
+
__publicField(this, "_rangeCollection", new CrossHairRangeCollection());
|
|
319
|
+
__publicField(this, "_color", "rgba(255,0,0,0.5)");
|
|
320
|
+
this._context = _context, this._sheetSkeletonManagerService = _sheetSkeletonManagerService, this._sheetsSelectionsService = _sheetsSelectionsService, this._sheetsCrosshairHighlightService = _sheetsCrosshairHighlightService, this._contextService = _contextService, this._refSelectionsService = _refSelectionsService, this._initRenderListener();
|
|
336
321
|
}
|
|
337
|
-
_transformSelection(
|
|
338
|
-
if (!
|
|
322
|
+
_transformSelection(selectionData, sheet) {
|
|
323
|
+
if (!selectionData)
|
|
339
324
|
return;
|
|
340
|
-
const
|
|
341
|
-
for (const
|
|
342
|
-
const { startRow
|
|
343
|
-
|
|
325
|
+
const rowCount = sheet.getRowCount(), columnCount = sheet.getColumnCount(), ranges = [];
|
|
326
|
+
for (const selection of selectionData) {
|
|
327
|
+
const { startRow, endRow, startColumn, endColumn } = selection.range;
|
|
328
|
+
endRow - startRow + 1 === rowCount || endColumn - startColumn + 1 === columnCount || ranges.push(selection.range);
|
|
344
329
|
}
|
|
345
|
-
this._rangeCollection.setSelectedRanges(
|
|
346
|
-
for (const
|
|
347
|
-
this.addSelection(
|
|
330
|
+
this._rangeCollection.setSelectedRanges(ranges);
|
|
331
|
+
for (const range of ranges)
|
|
332
|
+
this.addSelection(range, sheet);
|
|
348
333
|
}
|
|
349
334
|
_initRenderListener() {
|
|
350
|
-
const
|
|
351
|
-
this.disposeWithMe(
|
|
352
|
-
this._contextService.subscribeContextValue$(
|
|
335
|
+
const workbook = this._context.unit;
|
|
336
|
+
this.disposeWithMe(combineLatest([
|
|
337
|
+
this._contextService.subscribeContextValue$(REF_SELECTIONS_ENABLED).pipe(startWith(!1)),
|
|
353
338
|
this._sheetSkeletonManagerService.currentSkeleton$,
|
|
354
339
|
this._sheetsCrosshairHighlightService.enabled$,
|
|
355
|
-
this._sheetsCrosshairHighlightService.color$.pipe(
|
|
356
|
-
|
|
340
|
+
this._sheetsCrosshairHighlightService.color$.pipe(tap((color) => this._color = color)),
|
|
341
|
+
merge(
|
|
357
342
|
this._sheetsSelectionsService.selectionMoveStart$,
|
|
358
343
|
this._sheetsSelectionsService.selectionMoving$,
|
|
359
344
|
this._sheetsSelectionsService.selectionMoveEnd$,
|
|
360
345
|
this._sheetsSelectionsService.selectionSet$,
|
|
361
|
-
|
|
346
|
+
workbook.activeSheet$.pipe(map(() => this._sheetsSelectionsService.getCurrentSelections()))
|
|
362
347
|
),
|
|
363
|
-
|
|
348
|
+
merge(
|
|
364
349
|
this._refSelectionsService.selectionMoveStart$,
|
|
365
350
|
this._refSelectionsService.selectionMoving$,
|
|
366
351
|
this._refSelectionsService.selectionMoveEnd$,
|
|
367
352
|
this._sheetsSelectionsService.selectionSet$,
|
|
368
|
-
|
|
353
|
+
workbook.activeSheet$.pipe(map(() => this._refSelectionsService.getCurrentSelections()))
|
|
369
354
|
)
|
|
370
|
-
]).subscribe(([
|
|
371
|
-
if (this._clear(), !
|
|
372
|
-
const
|
|
373
|
-
this._rangeCollection.reset(), this._transformSelection(
|
|
355
|
+
]).subscribe(([refSelectionEnabled, _, enabled, _color, normalSelections, refSelection]) => {
|
|
356
|
+
if (this._clear(), !enabled) return;
|
|
357
|
+
const selections = refSelectionEnabled ? refSelection : normalSelections;
|
|
358
|
+
this._rangeCollection.reset(), this._transformSelection(selections, workbook.getActiveSheet()), this.render(this._rangeCollection.getRanges());
|
|
374
359
|
}));
|
|
375
360
|
}
|
|
376
|
-
addSelection(
|
|
377
|
-
if (
|
|
361
|
+
addSelection(range, sheet) {
|
|
362
|
+
if (range.rangeType === RANGE_TYPE.COLUMN || range.rangeType === RANGE_TYPE.ROW || range.rangeType === RANGE_TYPE.ALL)
|
|
378
363
|
return;
|
|
379
|
-
const
|
|
380
|
-
startRow
|
|
381
|
-
endRow
|
|
364
|
+
const maxRow = sheet.getRowCount(), maxColumn = sheet.getColumnCount(), { startRow, endRow, startColumn, endColumn } = range, left = {
|
|
365
|
+
startRow,
|
|
366
|
+
endRow,
|
|
382
367
|
startColumn: 0,
|
|
383
|
-
endColumn:
|
|
384
|
-
},
|
|
385
|
-
startRow
|
|
386
|
-
endRow
|
|
387
|
-
startColumn:
|
|
388
|
-
endColumn:
|
|
389
|
-
},
|
|
368
|
+
endColumn: startColumn - 1
|
|
369
|
+
}, right = {
|
|
370
|
+
startRow,
|
|
371
|
+
endRow,
|
|
372
|
+
startColumn: endColumn + 1,
|
|
373
|
+
endColumn: maxColumn
|
|
374
|
+
}, top = {
|
|
390
375
|
startRow: 0,
|
|
391
|
-
endRow:
|
|
392
|
-
startColumn
|
|
393
|
-
endColumn
|
|
394
|
-
},
|
|
395
|
-
startRow:
|
|
396
|
-
endRow:
|
|
397
|
-
startColumn
|
|
398
|
-
endColumn
|
|
376
|
+
endRow: startRow - 1,
|
|
377
|
+
startColumn,
|
|
378
|
+
endColumn
|
|
379
|
+
}, bottom = {
|
|
380
|
+
startRow: endRow + 1,
|
|
381
|
+
endRow: maxRow,
|
|
382
|
+
startColumn,
|
|
383
|
+
endColumn
|
|
399
384
|
};
|
|
400
|
-
for (const
|
|
401
|
-
|
|
385
|
+
for (const range2 of [left, right, top, bottom])
|
|
386
|
+
range2.startRow <= range2.endRow && range2.startColumn <= range2.endColumn && this._rangeCollection.addRange(range2);
|
|
402
387
|
}
|
|
403
388
|
_clear() {
|
|
404
|
-
this._shapes.forEach((
|
|
405
|
-
|
|
389
|
+
this._shapes.forEach((shape) => {
|
|
390
|
+
shape.dispose();
|
|
406
391
|
}), this._shapes = [];
|
|
407
392
|
}
|
|
408
|
-
_addShapes(
|
|
409
|
-
const { startRow
|
|
410
|
-
left:
|
|
411
|
-
top:
|
|
412
|
-
color: new
|
|
413
|
-
width
|
|
414
|
-
height
|
|
415
|
-
zIndex:
|
|
393
|
+
_addShapes(range, index, scene, skeleton) {
|
|
394
|
+
const { startRow, endRow, startColumn, endColumn } = range, startPosition = getCoordByCell(startRow, startColumn, scene, skeleton), endPosition = getCoordByCell(endRow, endColumn, scene, skeleton), { startX, startY } = startPosition, { endX, endY } = endPosition, width = endX - startX, height = endY - startY, shapeProps = {
|
|
395
|
+
left: startX,
|
|
396
|
+
top: startY,
|
|
397
|
+
color: new ColorKit(this._color).toRgb(),
|
|
398
|
+
width,
|
|
399
|
+
height,
|
|
400
|
+
zIndex: SHEETS_CROSSHAIR_HIGHLIGHT_Z_INDEX,
|
|
416
401
|
evented: !1
|
|
417
|
-
},
|
|
418
|
-
this._shapes.push(
|
|
402
|
+
}, currentShapes = new SheetCrossHairHighlightShape(`crosshair-${index}`, shapeProps);
|
|
403
|
+
this._shapes.push(currentShapes), scene.addObject(currentShapes);
|
|
419
404
|
}
|
|
420
|
-
render(
|
|
421
|
-
const
|
|
422
|
-
if (!
|
|
405
|
+
render(ranges) {
|
|
406
|
+
const skeleton = this._sheetSkeletonManagerService.getCurrentSkeleton();
|
|
407
|
+
if (!skeleton)
|
|
423
408
|
return;
|
|
424
|
-
const { scene
|
|
409
|
+
const { scene } = this._context;
|
|
425
410
|
this._clear();
|
|
426
|
-
for (let
|
|
427
|
-
const
|
|
428
|
-
this._addShapes(
|
|
411
|
+
for (let i = 0; i < ranges.length; i++) {
|
|
412
|
+
const range = ranges[i];
|
|
413
|
+
this._addShapes(range, i, scene, skeleton);
|
|
429
414
|
}
|
|
430
|
-
|
|
415
|
+
scene.makeDirty(!0);
|
|
431
416
|
}
|
|
432
417
|
async dispose() {
|
|
433
418
|
super.dispose();
|
|
434
419
|
}
|
|
435
|
-
};
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
],
|
|
443
|
-
var
|
|
444
|
-
for (var
|
|
445
|
-
(
|
|
446
|
-
return
|
|
447
|
-
},
|
|
448
|
-
let
|
|
449
|
-
constructor(
|
|
450
|
-
super(), this._config =
|
|
451
|
-
const { ...
|
|
420
|
+
}, __name(_a2, "SheetCrosshairHighlightRenderController"), _a2);
|
|
421
|
+
SheetCrosshairHighlightRenderController = __decorateClass$1([
|
|
422
|
+
__decorateParam$1(1, Inject(SheetSkeletonManagerService)),
|
|
423
|
+
__decorateParam$1(2, Inject(SheetsSelectionsService)),
|
|
424
|
+
__decorateParam$1(3, Inject(SheetsCrosshairHighlightService)),
|
|
425
|
+
__decorateParam$1(4, Inject(IContextService)),
|
|
426
|
+
__decorateParam$1(5, IRefSelectionsService)
|
|
427
|
+
], SheetCrosshairHighlightRenderController);
|
|
428
|
+
var __defProp2 = Object.defineProperty, __getOwnPropDesc = Object.getOwnPropertyDescriptor, __decorateClass = /* @__PURE__ */ __name((decorators, target, key, kind) => {
|
|
429
|
+
for (var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target, i = decorators.length - 1, decorator; i >= 0; i--)
|
|
430
|
+
(decorator = decorators[i]) && (result = (kind ? decorator(target, key, result) : decorator(result)) || result);
|
|
431
|
+
return kind && result && __defProp2(target, key, result), result;
|
|
432
|
+
}, "__decorateClass"), __decorateParam = /* @__PURE__ */ __name((index, decorator) => (target, key) => decorator(target, key, index), "__decorateParam"), _a3;
|
|
433
|
+
let UniverSheetsCrosshairHighlightPlugin = (_a3 = class extends Plugin {
|
|
434
|
+
constructor(_config = defaultPluginConfig, _injector, _renderManagerService, _configService) {
|
|
435
|
+
super(), this._config = _config, this._injector = _injector, this._renderManagerService = _renderManagerService, this._configService = _configService;
|
|
436
|
+
const { ...rest } = merge$1(
|
|
452
437
|
{},
|
|
453
|
-
|
|
438
|
+
defaultPluginConfig,
|
|
454
439
|
this._config
|
|
455
440
|
);
|
|
456
|
-
this._configService.setConfig(
|
|
441
|
+
this._configService.setConfig(SHEETS_CROSSHAIR_HIGHLIGHT_PLUGIN_CONFIG_KEY, rest);
|
|
457
442
|
}
|
|
458
443
|
onStarting() {
|
|
459
444
|
[
|
|
460
|
-
[
|
|
461
|
-
[
|
|
462
|
-
].forEach((
|
|
445
|
+
[SheetsCrosshairHighlightService],
|
|
446
|
+
[SheetsCrosshairHighlightController]
|
|
447
|
+
].forEach((d) => this._injector.add(d));
|
|
463
448
|
}
|
|
464
449
|
onReady() {
|
|
465
450
|
[
|
|
466
|
-
[
|
|
467
|
-
].forEach((
|
|
468
|
-
}
|
|
469
|
-
},
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
],
|
|
451
|
+
[SheetCrosshairHighlightRenderController]
|
|
452
|
+
].forEach((d) => this._injector.add(d)), this._injector.get(SheetsCrosshairHighlightController), this._renderManagerService.registerRenderModule(UniverInstanceType.UNIVER_SHEET, [SheetCrosshairHighlightRenderController]);
|
|
453
|
+
}
|
|
454
|
+
}, __name(_a3, "UniverSheetsCrosshairHighlightPlugin"), __publicField(_a3, "pluginName", "SHEET_CROSSHAIR_HIGHLIGHT_PLUGIN"), __publicField(_a3, "type", UniverInstanceType.UNIVER_SHEET), _a3);
|
|
455
|
+
UniverSheetsCrosshairHighlightPlugin = __decorateClass([
|
|
456
|
+
__decorateParam(1, Inject(Injector)),
|
|
457
|
+
__decorateParam(2, IRenderManagerService),
|
|
458
|
+
__decorateParam(3, IConfigService)
|
|
459
|
+
], UniverSheetsCrosshairHighlightPlugin);
|
|
475
460
|
export {
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
461
|
+
CROSSHAIR_HIGHLIGHT_COLORS,
|
|
462
|
+
DisableCrosshairHighlightOperation,
|
|
463
|
+
EnableCrosshairHighlightOperation,
|
|
464
|
+
SetCrosshairHighlightColorOperation,
|
|
465
|
+
SheetsCrosshairHighlightService,
|
|
466
|
+
ToggleCrosshairHighlightOperation,
|
|
467
|
+
UniverSheetsCrosshairHighlightPlugin
|
|
482
468
|
};
|