@univerjs/uniscript 0.1.10 → 0.1.11
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +2 -2
- package/lib/cjs/index.js +2 -2
- package/lib/es/index.js +74 -57
- package/lib/types/controllers/menu.d.ts +1 -1
- package/lib/types/controllers/uniscript.controller.d.ts +2 -2
- package/lib/types/index.d.ts +1 -1
- package/lib/types/locale/index.d.ts +1 -0
- package/lib/types/locale/ru-RU.d.ts +4 -0
- package/lib/types/plugin.d.ts +2 -2
- package/lib/types/services/script-editor.service.d.ts +2 -2
- package/lib/types/services/script-execution.service.d.ts +1 -1
- package/lib/umd/index.js +2 -2
- package/package.json +15 -15
package/README.md
CHANGED
@@ -14,11 +14,11 @@
|
|
14
14
|
Users can write business logic in the code editor to meet more flexible business requirements. For instance, as shown in the illustration, users can write a Uniscript to read identity card numbers from a selected area and validate their legality, and mark the background of invalid identity card numbers with red.
|
15
15
|
|
16
16
|
:::caution
|
17
|
-
The Uniscript is currently in the experimental stage, and it is not recommended to use it in production environments. You can refer to the [Roadmap](https://univer.ai/guides/
|
17
|
+
The Uniscript is currently in the experimental stage, and it is not recommended to use it in production environments. You can refer to the [Roadmap](https://univer.ai/guides/sheet/roadmap) to understand the iteration plan of Uniscript.
|
18
18
|
:::
|
19
19
|
|
20
20
|
:::tip
|
21
|
-
Indeed, Uniscript's Domain-Specific Language (DSL) is a set of Facade APIs that encapsulate the internal implementation details of Univer. This API is defined [here](https://univer.ai/guides/facade/).
|
21
|
+
Indeed, Uniscript's Domain-Specific Language (DSL) is a set of Facade APIs that encapsulate the internal implementation details of Univer. This API is defined [here](https://univer.ai/guides/sheet/facade/facade).
|
22
22
|
:::
|
23
23
|
|
24
24
|
## Usage
|
package/lib/cjs/index.js
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
"use strict";var F=Object.defineProperty;var B=(n,e,t)=>e in n?F(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var f=(n,e,t)=>(B(n,typeof e!="symbol"?e+"":e,t),t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("@univerjs/core"),
|
1
|
+
"use strict";var F=Object.defineProperty;var B=(n,e,t)=>e in n?F(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var f=(n,e,t)=>(B(n,typeof e!="symbol"?e+"":e,t),t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("@univerjs/core"),a=require("@wendellhu/redi"),u=require("@univerjs/ui"),$=require("rxjs"),d=require("react"),b=require("@univerjs/design"),v=require("@wendellhu/redi/react-bindings"),W=require("monaco-editor"),z=require("@univerjs/facade"),V={"script-panel":{title:"Uniscript",tooltip:{"menu-button":"Toggle Uniscript Panel"},panel:{execute:"Execute Script"}},uniscript:{message:{success:"Execution Success",failed:"Execution Failed"}}},H=V,G={"script-panel":{title:"Uniscript",tooltip:{"menu-button":"打开收起 Uniscript 面板"},panel:{execute:"执行 Uniscript"}},uniscript:{message:{success:"执行成功",failed:"执行失败"}}},D=G,J={"script-panel":{title:"Юнискрипт",tooltip:{"menu-button":"Переключить панель Юнискрипт"},panel:{execute:"Выполнить скрипт"}},uniscript:{message:{success:"Выполнение успешно",failed:"Выполнение не удалось"}}},Y=J;class R extends c.Disposable{constructor(){super(...arguments);f(this,"_open$",new $.BehaviorSubject(!1));f(this,"open$",this._open$.pipe($.distinctUntilChanged()))}get isOpen(){return this._open$.getValue()}dispose(){super.dispose(),this._open$.next(!1),this._open$.complete()}open(){this._open$.next(!0)}close(){this._open$.next(!1)}}const M="ScriptPanel",T={type:c.CommandType.OPERATION,id:"univer.operation.toggle-script-panel",handler:n=>{const e=n.get(R),t=n.get(u.ISidebarService);return e.isOpen?(e.close(),t.close()):(e.open(),t.open({header:{title:"script-panel.title"},children:{label:M},width:600})),!0}};var N={exports:{}},I={};/**
|
2
2
|
* @license React
|
3
3
|
* react-jsx-runtime.production.min.js
|
4
4
|
*
|
@@ -6,4 +6,4 @@
|
|
6
6
|
*
|
7
7
|
* This source code is licensed under the MIT license found in the
|
8
8
|
* LICENSE file in the root directory of this source tree.
|
9
|
-
*/var
|
9
|
+
*/var K=d,Q=Symbol.for("react.element"),X=Symbol.for("react.fragment"),Z=Object.prototype.hasOwnProperty,k=K.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,ee={key:!0,ref:!0,__self:!0,__source:!0};function q(n,e,t){var r,i={},s=null,o=null;t!==void 0&&(s=""+t),e.key!==void 0&&(s=""+e.key),e.ref!==void 0&&(o=e.ref);for(r in e)Z.call(e,r)&&!ee.hasOwnProperty(r)&&(i[r]=e[r]);if(n&&n.defaultProps)for(r in e=n.defaultProps,e)i[r]===void 0&&(i[r]=e[r]);return{$$typeof:Q,type:n,key:s,ref:o,props:i,_owner:k.current}}I.Fragment=X;I.jsx=q;I.jsxs=q;N.exports=I;var g=N.exports;class y extends c.Disposable{constructor(t){super();f(this,"_editorInstance",null);this._config=t}setEditorInstance(t){return this._editorInstance=t,c.toDisposable(()=>this._editorInstance=null)}getEditorInstance(){return this._editorInstance}requireVscodeEditor(){window.MonacoEnvironment||(window.MonacoEnvironment={getWorkerUrl:this._config.getWorkerUrl})}}var te=Object.defineProperty,ne=Object.getOwnPropertyDescriptor,re=(n,e,t,r)=>{for(var i=r>1?void 0:r?ne(e,t):e,s=n.length-1,o;s>=0;s--)(o=n[s])&&(i=(r?o(e,t,i):o(i))||i);return r&&i&&te(e,t,i),i},C=(n,e)=>(t,r)=>e(t,r,n);let x=class extends c.Disposable{constructor(n,e){super(),this._logService=n,this._injector=e}async execute(n){this._logService.log("[UniscriptExecutionService]","executing Uniscript...");const e=z.FUniver.newAPI(this._injector),t=new Function("univerAPI",`(() => {${n}})()`);try{return t(e),!0}catch(r){return this._logService.error(r),!1}}};x=re([C(0,c.ILogService),C(1,a.Inject(a.Injector))],x);const ie="univer-script-editor-panel",se="univer-script-editor-content",ce="univer-script-editor-actions",m={scriptEditorPanel:ie,scriptEditorContent:se,scriptEditorActions:ce};function oe(){const n=d.useRef(null),e=d.useRef(null),t=d.useRef(null),r=v.useDependency(c.LocaleService),i=v.useDependency(u.IShortcutService),s=v.useDependency(y);d.useEffect(()=>{const j=e.current,_=n.current;let l=null,h=null;if(j&&_){s.requireVscodeEditor();const S=t.current=W.editor.create(j,{value:"",language:"javascript"});h=new ResizeObserver(()=>{let U=requestIdleCallback(()=>{if(!U)return;const{height:L,width:A}=_.getBoundingClientRect();S.layout({width:A,height:L}),U=void 0})}),h.observe(_);let p;l=new c.DisposableCollection,l.add(s.setEditorInstance(S)),l.add(S.onDidFocusEditorWidget(()=>{p=i.forceEscape()})),l.add(S.onDidBlurEditorWidget(()=>{p==null||p.dispose(),p=void 0})),l.add(c.toDisposable(()=>p==null?void 0:p.dispose()))}return()=>{h&&_&&h.unobserve(_),l==null||l.dispose()}},[s,i]);const o=le(t);return g.jsxs("div",{className:m.scriptEditorPanel,children:[g.jsx("div",{className:m.scriptEditorContent,ref:n,children:g.jsx("div",{className:m.scriptEditorContainer,ref:e})}),g.jsx("div",{className:m.scriptEditorActions,children:g.jsx(b.Button,{type:"primary",size:"small",onClick:o,children:r.t("script-panel.panel.execute")})})]})}function le(n){const e=v.useDependency(x),t=v.useDependency(u.IMessageService),r=v.useDependency(c.LocaleService);return d.useCallback(()=>{var s;const i=(s=n.current)==null?void 0:s.getModel();i&&e.execute(i.getValue()).then(()=>{t.show({content:r.t("uniscript.message.success"),type:b.MessageType.Success})}).catch(()=>{t.show({content:r.t("uniscript.message.failed"),type:b.MessageType.Error})})},[r,t,n,e])}function pe(n){return{id:T.id,title:"toggle-script-panel",tooltip:"script-panel.tooltip.menu-button",icon:"CodeSingle",type:u.MenuItemType.BUTTON,positions:[u.MenuPosition.TOOLBAR_START],hidden$:u.getMenuHiddenObservable(n,c.UniverInstanceType.UNIVER_SHEET)}}var ae=Object.defineProperty,ue=Object.getOwnPropertyDescriptor,de=(n,e,t,r)=>{for(var i=r>1?void 0:r?ue(e,t):e,s=n.length-1,o;s>=0;s--)(o=n[s])&&(i=(r?o(e,t,i):o(i))||i);return r&&i&&ae(e,t,i),i},E=(n,e)=>(t,r)=>e(t,r,n);let P=class extends c.Disposable{constructor(n,e,t,r){super(),this._injector=n,this.disposeWithMe(e.addMenuItem(this._injector.invoke(pe))),this.disposeWithMe(r.register(M,oe)),this.disposeWithMe(t.registerCommand(T))}};P=de([c.OnLifecycle(c.LifecycleStages.Steady,P),E(0,a.Inject(a.Injector)),E(1,u.IMenuService),E(2,c.ICommandService),E(3,a.Inject(u.ComponentManager))],P);var ve=Object.defineProperty,_e=Object.getOwnPropertyDescriptor,fe=(n,e,t,r)=>{for(var i=r>1?void 0:r?_e(e,t):e,s=n.length-1,o;s>=0;s--)(o=n[s])&&(i=(r?o(e,t,i):o(i))||i);return r&&i&&ve(e,t,i),i},w=(n,e)=>(t,r)=>e(t,r,n);const ge="uniscript";var O;exports.UniverUniscriptPlugin=(O=class extends c.Plugin{constructor(e,t,r){super(),this._config=e,this._injector=t,this._localeService=r}onStarting(e){[[P],[y,{useFactory:()=>e.createInstance(y,this._config)}],[R],[x]].forEach(r=>e.add(r)),this._localeService.load({zhCN:D})}},f(O,"pluginName",ge),O);exports.UniverUniscriptPlugin=fe([w(1,a.Inject(a.Injector)),w(2,a.Inject(c.LocaleService))],exports.UniverUniscriptPlugin);exports.ScriptEditorService=y;exports.enUS=H;exports.ruRU=Y;exports.zhCN=D;
|
package/lib/es/index.js
CHANGED
@@ -4,9 +4,9 @@ var u = (t, e, r) => (q(t, typeof e != "symbol" ? e + "" : e, r), r);
|
|
4
4
|
import { Disposable as E, CommandType as V, toDisposable as M, ILogService as z, LocaleService as I, DisposableCollection as H, UniverInstanceType as G, OnLifecycle as J, LifecycleStages as Y, ICommandService as K, Plugin as Q } from "@univerjs/core";
|
5
5
|
import { Inject as v, Injector as b } from "@wendellhu/redi";
|
6
6
|
import { ISidebarService as X, IShortcutService as Z, IMessageService as k, MenuItemType as ee, MenuPosition as te, getMenuHiddenObservable as re, ComponentManager as ne, IMenuService as ie } from "@univerjs/ui";
|
7
|
-
import { BehaviorSubject as
|
7
|
+
import { BehaviorSubject as se, distinctUntilChanged as oe } from "rxjs";
|
8
8
|
import ce, { useRef as P, useEffect as le, useCallback as pe } from "react";
|
9
|
-
import { Button as ae, MessageType as
|
9
|
+
import { Button as ae, MessageType as C } from "@univerjs/design";
|
10
10
|
import { useDependency as p } from "@wendellhu/redi/react-bindings";
|
11
11
|
import { editor as ue } from "monaco-editor";
|
12
12
|
import { FUniver as de } from "@univerjs/facade";
|
@@ -26,7 +26,7 @@ const ve = {
|
|
26
26
|
failed: "Execution Failed"
|
27
27
|
}
|
28
28
|
}
|
29
|
-
},
|
29
|
+
}, Ke = ve, fe = {
|
30
30
|
"script-panel": {
|
31
31
|
title: "Uniscript",
|
32
32
|
tooltip: {
|
@@ -42,18 +42,34 @@ const ve = {
|
|
42
42
|
failed: "执行失败"
|
43
43
|
}
|
44
44
|
}
|
45
|
-
}, _e = fe
|
45
|
+
}, _e = fe, me = {
|
46
|
+
"script-panel": {
|
47
|
+
title: "Юнискрипт",
|
48
|
+
tooltip: {
|
49
|
+
"menu-button": "Переключить панель Юнискрипт"
|
50
|
+
},
|
51
|
+
panel: {
|
52
|
+
execute: "Выполнить скрипт"
|
53
|
+
}
|
54
|
+
},
|
55
|
+
uniscript: {
|
56
|
+
message: {
|
57
|
+
success: "Выполнение успешно",
|
58
|
+
failed: "Выполнение не удалось"
|
59
|
+
}
|
60
|
+
}
|
61
|
+
}, Qe = me;
|
46
62
|
class T extends E {
|
47
63
|
constructor() {
|
48
64
|
super(...arguments);
|
49
|
-
u(this, "_open$", new
|
50
|
-
u(this, "open$", this._open$.pipe(
|
65
|
+
u(this, "_open$", new se(!1));
|
66
|
+
u(this, "open$", this._open$.pipe(oe()));
|
51
67
|
}
|
52
68
|
get isOpen() {
|
53
69
|
return this._open$.getValue();
|
54
70
|
}
|
55
71
|
dispose() {
|
56
|
-
this._open$.next(!1), this._open$.complete();
|
72
|
+
super.dispose(), this._open$.next(!1), this._open$.complete();
|
57
73
|
}
|
58
74
|
open() {
|
59
75
|
this._open$.next(!0);
|
@@ -84,18 +100,18 @@ var A = { exports: {} }, x = {};
|
|
84
100
|
* This source code is licensed under the MIT license found in the
|
85
101
|
* LICENSE file in the root directory of this source tree.
|
86
102
|
*/
|
87
|
-
var
|
103
|
+
var he = ce, ge = Symbol.for("react.element"), Se = Symbol.for("react.fragment"), Ee = Object.prototype.hasOwnProperty, xe = he.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner, Pe = { key: !0, ref: !0, __self: !0, __source: !0 };
|
88
104
|
function F(t, e, r) {
|
89
|
-
var n, i = {},
|
90
|
-
r !== void 0 && (
|
105
|
+
var n, i = {}, s = null, o = null;
|
106
|
+
r !== void 0 && (s = "" + r), e.key !== void 0 && (s = "" + e.key), e.ref !== void 0 && (o = e.ref);
|
91
107
|
for (n in e)
|
92
|
-
|
108
|
+
Ee.call(e, n) && !Pe.hasOwnProperty(n) && (i[n] = e[n]);
|
93
109
|
if (t && t.defaultProps)
|
94
110
|
for (n in e = t.defaultProps, e)
|
95
111
|
i[n] === void 0 && (i[n] = e[n]);
|
96
|
-
return { $$typeof:
|
112
|
+
return { $$typeof: ge, type: t, key: s, ref: o, props: i, _owner: xe.current };
|
97
113
|
}
|
98
|
-
x.Fragment =
|
114
|
+
x.Fragment = Se;
|
99
115
|
x.jsx = F;
|
100
116
|
x.jsxs = F;
|
101
117
|
A.exports = x;
|
@@ -118,11 +134,11 @@ class y extends E {
|
|
118
134
|
});
|
119
135
|
}
|
120
136
|
}
|
121
|
-
var
|
122
|
-
for (var i = n > 1 ? void 0 : n ?
|
123
|
-
(
|
124
|
-
return n && i &&
|
125
|
-
},
|
137
|
+
var Oe = Object.defineProperty, ye = Object.getOwnPropertyDescriptor, Ie = (t, e, r, n) => {
|
138
|
+
for (var i = n > 1 ? void 0 : n ? ye(e, r) : e, s = t.length - 1, o; s >= 0; s--)
|
139
|
+
(o = t[s]) && (i = (n ? o(e, r, i) : o(i)) || i);
|
140
|
+
return n && i && Oe(e, r, i), i;
|
141
|
+
}, U = (t, e) => (r, n) => e(r, n, t);
|
126
142
|
let S = class extends E {
|
127
143
|
constructor(t, e) {
|
128
144
|
super(), this._logService = t, this._injector = e;
|
@@ -137,36 +153,36 @@ let S = class extends E {
|
|
137
153
|
}
|
138
154
|
}
|
139
155
|
};
|
140
|
-
S =
|
141
|
-
|
142
|
-
|
156
|
+
S = Ie([
|
157
|
+
U(0, z),
|
158
|
+
U(1, v(b))
|
143
159
|
], S);
|
144
|
-
const
|
145
|
-
scriptEditorPanel:
|
146
|
-
scriptEditorContent:
|
160
|
+
const be = "univer-script-editor-panel", $e = "univer-script-editor-content", je = "univer-script-editor-actions", m = {
|
161
|
+
scriptEditorPanel: be,
|
162
|
+
scriptEditorContent: $e,
|
147
163
|
scriptEditorActions: je
|
148
164
|
};
|
149
165
|
function Ce() {
|
150
|
-
const t = P(null), e = P(null), r = P(null), n = p(I), i = p(Z),
|
166
|
+
const t = P(null), e = P(null), r = P(null), n = p(I), i = p(Z), s = p(y);
|
151
167
|
le(() => {
|
152
|
-
const
|
168
|
+
const $ = e.current, a = t.current;
|
153
169
|
let c = null, f = null;
|
154
|
-
if (
|
155
|
-
|
156
|
-
const _ = r.current = ue.create(
|
170
|
+
if ($ && a) {
|
171
|
+
s.requireVscodeEditor();
|
172
|
+
const _ = r.current = ue.create($, {
|
157
173
|
value: "",
|
158
174
|
language: "javascript"
|
159
175
|
});
|
160
176
|
f = new ResizeObserver(() => {
|
161
|
-
let
|
162
|
-
if (!
|
177
|
+
let j = requestIdleCallback(() => {
|
178
|
+
if (!j)
|
163
179
|
return;
|
164
180
|
const { height: L, width: W } = a.getBoundingClientRect();
|
165
|
-
_.layout({ width: W, height: L }),
|
181
|
+
_.layout({ width: W, height: L }), j = void 0;
|
166
182
|
});
|
167
183
|
}), f.observe(a);
|
168
184
|
let l;
|
169
|
-
c = new H(), c.add(
|
185
|
+
c = new H(), c.add(s.setEditorInstance(_)), c.add(
|
170
186
|
_.onDidFocusEditorWidget(() => {
|
171
187
|
l = i.forceEscape();
|
172
188
|
})
|
@@ -179,27 +195,27 @@ function Ce() {
|
|
179
195
|
return () => {
|
180
196
|
f && a && f.unobserve(a), c == null || c.dispose();
|
181
197
|
};
|
182
|
-
}, [
|
183
|
-
const
|
198
|
+
}, [s, i]);
|
199
|
+
const o = Ue(r);
|
184
200
|
return /* @__PURE__ */ d.jsxs("div", { className: m.scriptEditorPanel, children: [
|
185
201
|
/* @__PURE__ */ d.jsx("div", { className: m.scriptEditorContent, ref: t, children: /* @__PURE__ */ d.jsx("div", { className: m.scriptEditorContainer, ref: e }) }),
|
186
|
-
/* @__PURE__ */ d.jsx("div", { className: m.scriptEditorActions, children: /* @__PURE__ */ d.jsx(ae, { type: "primary", size: "small", onClick:
|
202
|
+
/* @__PURE__ */ d.jsx("div", { className: m.scriptEditorActions, children: /* @__PURE__ */ d.jsx(ae, { type: "primary", size: "small", onClick: o, children: n.t("script-panel.panel.execute") }) })
|
187
203
|
] });
|
188
204
|
}
|
189
|
-
function
|
205
|
+
function Ue(t) {
|
190
206
|
const e = p(S), r = p(k), n = p(I);
|
191
207
|
return pe(() => {
|
192
|
-
var
|
193
|
-
const i = (
|
208
|
+
var s;
|
209
|
+
const i = (s = t.current) == null ? void 0 : s.getModel();
|
194
210
|
i && e.execute(i.getValue()).then(() => {
|
195
211
|
r.show({
|
196
212
|
content: n.t("uniscript.message.success"),
|
197
|
-
type:
|
213
|
+
type: C.Success
|
198
214
|
});
|
199
215
|
}).catch(() => {
|
200
216
|
r.show({
|
201
217
|
content: n.t("uniscript.message.failed"),
|
202
|
-
type:
|
218
|
+
type: C.Error
|
203
219
|
});
|
204
220
|
});
|
205
221
|
}, [n, r, t, e]);
|
@@ -217,29 +233,29 @@ function we(t) {
|
|
217
233
|
// disabled$: getCurrentSheetDisabled$(accessor),
|
218
234
|
};
|
219
235
|
}
|
220
|
-
var
|
221
|
-
for (var i = n > 1 ? void 0 : n ?
|
222
|
-
(
|
223
|
-
return n && i &&
|
236
|
+
var Re = Object.defineProperty, Me = Object.getOwnPropertyDescriptor, Te = (t, e, r, n) => {
|
237
|
+
for (var i = n > 1 ? void 0 : n ? Me(e, r) : e, s = t.length - 1, o; s >= 0; s--)
|
238
|
+
(o = t[s]) && (i = (n ? o(e, r, i) : o(i)) || i);
|
239
|
+
return n && i && Re(e, r, i), i;
|
224
240
|
}, h = (t, e) => (r, n) => e(r, n, t);
|
225
241
|
let g = class extends E {
|
226
242
|
constructor(t, e, r, n) {
|
227
243
|
super(), this._injector = t, this.disposeWithMe(e.addMenuItem(this._injector.invoke(we))), this.disposeWithMe(n.register(N, Ce)), this.disposeWithMe(r.registerCommand(D));
|
228
244
|
}
|
229
245
|
};
|
230
|
-
g =
|
246
|
+
g = Te([
|
231
247
|
J(Y.Steady, g),
|
232
248
|
h(0, v(b)),
|
233
249
|
h(1, ie),
|
234
250
|
h(2, K),
|
235
251
|
h(3, v(ne))
|
236
252
|
], g);
|
237
|
-
var
|
238
|
-
for (var i = n > 1 ? void 0 : n ?
|
239
|
-
(
|
240
|
-
return n && i &&
|
241
|
-
},
|
242
|
-
const
|
253
|
+
var Ne = Object.defineProperty, De = Object.getOwnPropertyDescriptor, Ae = (t, e, r, n) => {
|
254
|
+
for (var i = n > 1 ? void 0 : n ? De(e, r) : e, s = t.length - 1, o; s >= 0; s--)
|
255
|
+
(o = t[s]) && (i = (n ? o(e, r, i) : o(i)) || i);
|
256
|
+
return n && i && Ne(e, r, i), i;
|
257
|
+
}, w = (t, e) => (r, n) => e(r, n, t);
|
258
|
+
const Fe = "uniscript";
|
243
259
|
var O;
|
244
260
|
let R = (O = class extends Q {
|
245
261
|
constructor(t, e, r) {
|
@@ -257,14 +273,15 @@ let R = (O = class extends Q {
|
|
257
273
|
zhCN: _e
|
258
274
|
});
|
259
275
|
}
|
260
|
-
}, u(O, "pluginName",
|
261
|
-
R =
|
262
|
-
|
263
|
-
|
276
|
+
}, u(O, "pluginName", Fe), O);
|
277
|
+
R = Ae([
|
278
|
+
w(1, v(b)),
|
279
|
+
w(2, v(I))
|
264
280
|
], R);
|
265
281
|
export {
|
266
282
|
y as ScriptEditorService,
|
267
283
|
R as UniverUniscriptPlugin,
|
268
|
-
|
284
|
+
Ke as enUS,
|
285
|
+
Qe as ruRU,
|
269
286
|
_e as zhCN
|
270
287
|
};
|
@@ -1,6 +1,6 @@
|
|
1
|
-
import { Injector } from '@wendellhu/redi';
|
2
|
-
import { ComponentManager, IMenuService } from '@univerjs/ui';
|
3
1
|
import { Disposable, ICommandService } from '@univerjs/core';
|
2
|
+
import { ComponentManager, IMenuService } from '@univerjs/ui';
|
3
|
+
import { Injector } from '@wendellhu/redi';
|
4
4
|
|
5
5
|
export declare class UniscriptController extends Disposable {
|
6
6
|
private readonly _injector;
|
package/lib/types/index.d.ts
CHANGED
@@ -13,6 +13,6 @@
|
|
13
13
|
* See the License for the specific language governing permissions and
|
14
14
|
* limitations under the License.
|
15
15
|
*/
|
16
|
-
export { enUS, zhCN } from './locale';
|
16
|
+
export { enUS, zhCN, ruRU } from './locale';
|
17
17
|
export { type IUniscriptConfig, UniverUniscriptPlugin } from './plugin';
|
18
18
|
export { ScriptEditorService } from './services/script-editor.service';
|
package/lib/types/plugin.d.ts
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
import { IScriptEditorServiceConfig } from './services/script-editor.service';
|
2
|
-
import { Injector } from '@wendellhu/redi';
|
3
1
|
import { LocaleService, Plugin } from '@univerjs/core';
|
2
|
+
import { Injector } from '@wendellhu/redi';
|
3
|
+
import { IScriptEditorServiceConfig } from './services/script-editor.service';
|
4
4
|
|
5
5
|
export interface IUniscriptConfig extends IScriptEditorServiceConfig {
|
6
6
|
}
|
@@ -1,6 +1,6 @@
|
|
1
|
-
import { editor } from 'monaco-editor';
|
2
|
-
import { IDisposable } from '@wendellhu/redi';
|
3
1
|
import { Disposable } from '@univerjs/core';
|
2
|
+
import { IDisposable } from '@wendellhu/redi';
|
3
|
+
import { editor } from 'monaco-editor';
|
4
4
|
|
5
5
|
export interface IScriptEditorServiceConfig {
|
6
6
|
getWorkerUrl(moduleID: string, label: string): string;
|
package/lib/umd/index.js
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
(function(c,s){typeof exports=="object"&&typeof module<"u"?s(exports,require("@univerjs/core"),require("@wendellhu/redi"),require("@univerjs/ui"),require("rxjs"),require("react"),require("@univerjs/design"),require("@wendellhu/redi/react-bindings"),require("monaco-editor"),require("@univerjs/facade")):typeof define=="function"&&define.amd?define(["exports","@univerjs/core","@wendellhu/redi","@univerjs/ui","rxjs","react","@univerjs/design","@wendellhu/redi/react-bindings","monaco-editor","@univerjs/facade"],s):(c=typeof globalThis<"u"?globalThis:c||self,s(c.UniverUniscript={},c.UniverCore,c["@wendellhu/redi"],c.UniverUi,c.rxjs,c.React,c.UniverDesign,c["@wendellhu/redi/react-bindings"],c.monaco,c.UniverFacade))})(this,function(c,s,p,a,
|
1
|
+
(function(c,s){typeof exports=="object"&&typeof module<"u"?s(exports,require("@univerjs/core"),require("@wendellhu/redi"),require("@univerjs/ui"),require("rxjs"),require("react"),require("@univerjs/design"),require("@wendellhu/redi/react-bindings"),require("monaco-editor"),require("@univerjs/facade")):typeof define=="function"&&define.amd?define(["exports","@univerjs/core","@wendellhu/redi","@univerjs/ui","rxjs","react","@univerjs/design","@wendellhu/redi/react-bindings","monaco-editor","@univerjs/facade"],s):(c=typeof globalThis<"u"?globalThis:c||self,s(c.UniverUniscript={},c.UniverCore,c["@wendellhu/redi"],c.UniverUi,c.rxjs,c.React,c.UniverDesign,c["@wendellhu/redi/react-bindings"],c.monaco,c.UniverFacade))})(this,function(c,s,p,a,b,v,O,f,F,q){"use strict";var ae=Object.defineProperty;var ue=(c,s,p)=>s in c?ae(c,s,{enumerable:!0,configurable:!0,writable:!0,value:p}):c[s]=p;var S=(c,s,p)=>(ue(c,typeof s!="symbol"?s+"":s,p),p);var x;const W={"script-panel":{title:"Uniscript",tooltip:{"menu-button":"Toggle Uniscript Panel"},panel:{execute:"Execute Script"}},uniscript:{message:{success:"Execution Success",failed:"Execution Failed"}}},w={"script-panel":{title:"Uniscript",tooltip:{"menu-button":"打开收起 Uniscript 面板"},panel:{execute:"执行 Uniscript"}},uniscript:{message:{success:"执行成功",failed:"执行失败"}}},z={"script-panel":{title:"Юнискрипт",tooltip:{"menu-button":"Переключить панель Юнискрипт"},panel:{execute:"Выполнить скрипт"}},uniscript:{message:{success:"Выполнение успешно",failed:"Выполнение не удалось"}}};class C extends s.Disposable{constructor(){super(...arguments);S(this,"_open$",new b.BehaviorSubject(!1));S(this,"open$",this._open$.pipe(b.distinctUntilChanged()))}get isOpen(){return this._open$.getValue()}dispose(){super.dispose(),this._open$.next(!1),this._open$.complete()}open(){this._open$.next(!0)}close(){this._open$.next(!1)}}const D="ScriptPanel",R={type:s.CommandType.OPERATION,id:"univer.operation.toggle-script-panel",handler:i=>{const e=i.get(C),n=i.get(a.ISidebarService);return e.isOpen?(e.close(),n.close()):(e.open(),n.open({header:{title:"script-panel.title"},children:{label:D},width:600})),!0}};var T={exports:{}},m={};/**
|
2
2
|
* @license React
|
3
3
|
* react-jsx-runtime.production.min.js
|
4
4
|
*
|
@@ -6,4 +6,4 @@
|
|
6
6
|
*
|
7
7
|
* This source code is licensed under the MIT license found in the
|
8
8
|
* LICENSE file in the root directory of this source tree.
|
9
|
-
*/var
|
9
|
+
*/var V=v,B=Symbol.for("react.element"),H=Symbol.for("react.fragment"),G=Object.prototype.hasOwnProperty,J=V.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,Y={key:!0,ref:!0,__self:!0,__source:!0};function M(i,e,n){var t,r={},o=null,l=null;n!==void 0&&(o=""+n),e.key!==void 0&&(o=""+e.key),e.ref!==void 0&&(l=e.ref);for(t in e)G.call(e,t)&&!Y.hasOwnProperty(t)&&(r[t]=e[t]);if(i&&i.defaultProps)for(t in e=i.defaultProps,e)r[t]===void 0&&(r[t]=e[t]);return{$$typeof:B,type:i,key:o,ref:l,props:r,_owner:J.current}}m.Fragment=H,m.jsx=M,m.jsxs=M,T.exports=m;var _=T.exports;class E extends s.Disposable{constructor(n){super();S(this,"_editorInstance",null);this._config=n}setEditorInstance(n){return this._editorInstance=n,s.toDisposable(()=>this._editorInstance=null)}getEditorInstance(){return this._editorInstance}requireVscodeEditor(){window.MonacoEnvironment||(window.MonacoEnvironment={getWorkerUrl:this._config.getWorkerUrl})}}var K=Object.defineProperty,Q=Object.getOwnPropertyDescriptor,X=(i,e,n,t)=>{for(var r=t>1?void 0:t?Q(e,n):e,o=i.length-1,l;o>=0;o--)(l=i[o])&&(r=(t?l(e,n,r):l(r))||r);return t&&r&&K(e,n,r),r},$=(i,e)=>(n,t)=>e(n,t,i);let g=class extends s.Disposable{constructor(i,e){super(),this._logService=i,this._injector=e}async execute(i){this._logService.log("[UniscriptExecutionService]","executing Uniscript...");const e=q.FUniver.newAPI(this._injector),n=new Function("univerAPI",`(() => {${i}})()`);try{return n(e),!0}catch(t){return this._logService.error(t),!1}}};g=X([$(0,s.ILogService),$(1,p.Inject(p.Injector))],g);const j={scriptEditorPanel:"univer-script-editor-panel",scriptEditorContent:"univer-script-editor-content",scriptEditorActions:"univer-script-editor-actions"};function Z(){const i=v.useRef(null),e=v.useRef(null),n=v.useRef(null),t=f.useDependency(s.LocaleService),r=f.useDependency(a.IShortcutService),o=f.useDependency(E);v.useEffect(()=>{const A=e.current,h=i.current;let u=null,U=null;if(A&&h){o.requireVscodeEditor();const I=n.current=F.editor.create(A,{value:"",language:"javascript"});U=new ResizeObserver(()=>{let L=requestIdleCallback(()=>{if(!L)return;const{height:le,width:pe}=h.getBoundingClientRect();I.layout({width:pe,height:le}),L=void 0})}),U.observe(h);let d;u=new s.DisposableCollection,u.add(o.setEditorInstance(I)),u.add(I.onDidFocusEditorWidget(()=>{d=r.forceEscape()})),u.add(I.onDidBlurEditorWidget(()=>{d==null||d.dispose(),d=void 0})),u.add(s.toDisposable(()=>d==null?void 0:d.dispose()))}return()=>{U&&h&&U.unobserve(h),u==null||u.dispose()}},[o,r]);const l=k(n);return _.jsxs("div",{className:j.scriptEditorPanel,children:[_.jsx("div",{className:j.scriptEditorContent,ref:i,children:_.jsx("div",{className:j.scriptEditorContainer,ref:e})}),_.jsx("div",{className:j.scriptEditorActions,children:_.jsx(O.Button,{type:"primary",size:"small",onClick:l,children:t.t("script-panel.panel.execute")})})]})}function k(i){const e=f.useDependency(g),n=f.useDependency(a.IMessageService),t=f.useDependency(s.LocaleService);return v.useCallback(()=>{var o;const r=(o=i.current)==null?void 0:o.getModel();r&&e.execute(r.getValue()).then(()=>{n.show({content:t.t("uniscript.message.success"),type:O.MessageType.Success})}).catch(()=>{n.show({content:t.t("uniscript.message.failed"),type:O.MessageType.Error})})},[t,n,i,e])}function ee(i){return{id:R.id,title:"toggle-script-panel",tooltip:"script-panel.tooltip.menu-button",icon:"CodeSingle",type:a.MenuItemType.BUTTON,positions:[a.MenuPosition.TOOLBAR_START],hidden$:a.getMenuHiddenObservable(i,s.UniverInstanceType.UNIVER_SHEET)}}var te=Object.defineProperty,ne=Object.getOwnPropertyDescriptor,ie=(i,e,n,t)=>{for(var r=t>1?void 0:t?ne(e,n):e,o=i.length-1,l;o>=0;o--)(l=i[o])&&(r=(t?l(e,n,r):l(r))||r);return t&&r&&te(e,n,r),r},y=(i,e)=>(n,t)=>e(n,t,i);let P=class extends s.Disposable{constructor(i,e,n,t){super(),this._injector=i,this.disposeWithMe(e.addMenuItem(this._injector.invoke(ee))),this.disposeWithMe(t.register(D,Z)),this.disposeWithMe(n.registerCommand(R))}};P=ie([s.OnLifecycle(s.LifecycleStages.Steady,P),y(0,p.Inject(p.Injector)),y(1,a.IMenuService),y(2,s.ICommandService),y(3,p.Inject(a.ComponentManager))],P);var re=Object.defineProperty,se=Object.getOwnPropertyDescriptor,ce=(i,e,n,t)=>{for(var r=t>1?void 0:t?se(e,n):e,o=i.length-1,l;o>=0;o--)(l=i[o])&&(r=(t?l(e,n,r):l(r))||r);return t&&r&&re(e,n,r),r},N=(i,e)=>(n,t)=>e(n,t,i);const oe="uniscript";c.UniverUniscriptPlugin=(x=class extends s.Plugin{constructor(e,n,t){super(),this._config=e,this._injector=n,this._localeService=t}onStarting(e){[[P],[E,{useFactory:()=>e.createInstance(E,this._config)}],[C],[g]].forEach(t=>e.add(t)),this._localeService.load({zhCN:w})}},S(x,"pluginName",oe),x),c.UniverUniscriptPlugin=ce([N(1,p.Inject(p.Injector)),N(2,p.Inject(s.LocaleService))],c.UniverUniscriptPlugin),c.ScriptEditorService=E,c.enUS=W,c.ruRU=z,c.zhCN=w,Object.defineProperty(c,Symbol.toStringTag,{value:"Module"})});
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@univerjs/uniscript",
|
3
|
-
"version": "0.1.
|
3
|
+
"version": "0.1.11",
|
4
4
|
"private": false,
|
5
5
|
"description": "UI component library for building exceptional Univer.",
|
6
6
|
"author": "DreamNum <developer@univer.ai>",
|
@@ -53,29 +53,29 @@
|
|
53
53
|
"npm": ">=8.0.0"
|
54
54
|
},
|
55
55
|
"peerDependencies": {
|
56
|
-
"@wendellhu/redi": "^0.
|
56
|
+
"@wendellhu/redi": "^0.15.1",
|
57
57
|
"monaco-editor": ">=0.44.0",
|
58
58
|
"react": "^16.9.0 || ^17.0.0 || ^18.0.0",
|
59
59
|
"rxjs": ">=7.0.0",
|
60
|
-
"@univerjs/core": "0.1.
|
61
|
-
"@univerjs/design": "0.1.
|
62
|
-
"@univerjs/
|
63
|
-
"@univerjs/
|
60
|
+
"@univerjs/core": "0.1.11",
|
61
|
+
"@univerjs/design": "0.1.11",
|
62
|
+
"@univerjs/facade": "0.1.11",
|
63
|
+
"@univerjs/ui": "0.1.11"
|
64
64
|
},
|
65
65
|
"devDependencies": {
|
66
66
|
"@types/react": "^18.2.79",
|
67
|
-
"@wendellhu/redi": "^0.
|
67
|
+
"@wendellhu/redi": "^0.15.1",
|
68
68
|
"less": "^4.2.0",
|
69
|
-
"monaco-editor": "0.
|
69
|
+
"monaco-editor": "0.48.0",
|
70
70
|
"rxjs": "^7.8.1",
|
71
71
|
"typescript": "^5.4.5",
|
72
|
-
"vite": "^5.2.
|
73
|
-
"vitest": "^1.
|
74
|
-
"@univerjs/
|
75
|
-
"@univerjs/
|
76
|
-
"@univerjs/
|
77
|
-
"@univerjs/
|
78
|
-
"@univerjs/
|
72
|
+
"vite": "^5.2.11",
|
73
|
+
"vitest": "^1.6.0",
|
74
|
+
"@univerjs/design": "0.1.11",
|
75
|
+
"@univerjs/facade": "0.1.11",
|
76
|
+
"@univerjs/core": "0.1.11",
|
77
|
+
"@univerjs/ui": "0.1.11",
|
78
|
+
"@univerjs/shared": "0.1.11"
|
79
79
|
},
|
80
80
|
"scripts": {
|
81
81
|
"test": "vitest run",
|