@univerjs/uniscript 0.1.0-beta.5 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +40 -2
- package/lib/cjs/index.js +2 -2
- package/lib/es/index.js +61 -61
- package/lib/types/locale/en-US.d.ts +3 -18
- package/lib/types/locale/zh-CN.d.ts +2 -2
- package/lib/umd/index.js +2 -2
- package/package.json +12 -12
package/README.md
CHANGED
@@ -5,12 +5,50 @@
|
|
5
5
|
|
6
6
|
## Introduction
|
7
7
|
|
8
|
-
|
8
|
+
![](./assets//uniscript.jpeg)
|
9
|
+
|
10
|
+
`@univerjs/uniscript` uses the DSL (Domain-Specific Language) provided by `@univerjs/facade` and creates a code editor for Users to write code for operating Univer's data structures and business logic.
|
11
|
+
|
12
|
+
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.
|
13
|
+
|
14
|
+
:::caution
|
15
|
+
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/en-us/guides/roadmap/) to understand the iteration plan of Uniscript.
|
16
|
+
:::
|
17
|
+
|
18
|
+
:::tip
|
19
|
+
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/en-us/guides/facade/).
|
20
|
+
:::
|
9
21
|
|
10
22
|
## Usage
|
11
23
|
|
12
24
|
### Installation
|
13
25
|
|
14
26
|
```shell
|
15
|
-
|
27
|
+
# Using npm
|
28
|
+
npm install @univerjs/uniscript
|
29
|
+
|
30
|
+
# Using pnpm
|
31
|
+
pnpm add @univerjs/uniscript
|
32
|
+
```
|
33
|
+
|
34
|
+
### Get the Editor Instance
|
35
|
+
|
36
|
+
The `@univerjs/uniscript` uses [Monaco Editor](https://microsoft.github.io/monaco-editor/) as its code editor. You can obtain an instance of the editor through the following method:
|
37
|
+
|
38
|
+
```ts
|
39
|
+
const editor = univer.__getInjector().get(ScriptEditorService).getEditorInstance();
|
40
|
+
```
|
41
|
+
|
42
|
+
Or inject `ScriptEditorService` into your module to obtain the editor instance.
|
43
|
+
|
44
|
+
```ts
|
45
|
+
export class YourModule {
|
46
|
+
constructor(
|
47
|
+
@Inject(ScriptEditorService) private readonly _scriptEditorService
|
48
|
+
) {}
|
49
|
+
|
50
|
+
private _getEditor() {
|
51
|
+
return this._scriptEditorService.getEditorInstance();
|
52
|
+
}
|
53
|
+
}
|
16
54
|
```
|
package/lib/cjs/index.js
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
"use strict";var W=Object.defineProperty;var z=(t,e,n)=>e in t?W(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var f=(t,e,n)=>(z(t,typeof e!="symbol"?e+"":e,n),n);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("@univerjs/core"),u=require("@wendellhu/redi"),d=require("@univerjs/ui")
|
1
|
+
"use strict";var W=Object.defineProperty;var z=(t,e,n)=>e in t?W(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var f=(t,e,n)=>(z(t,typeof e!="symbol"?e+"":e,n),n);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("@univerjs/core"),u=require("@wendellhu/redi"),d=require("@univerjs/ui"),C=require("rxjs"),v=require("react"),I=require("@univerjs/design"),h=require("@wendellhu/redi/react-bindings"),V=require("monaco-editor"),H=require("@univerjs/facade"),G=require("@univerjs/sheets"),J={"script-panel":{title:"Uniscript",tooltip:{"menu-button":"Toggle Uniscript Panel"},panel:{execute:"Execute Script"}},uniscript:{message:{success:"Execution Success",failed:"Execution Failed"}}},Y=J,K={"script-panel":{title:"Uniscript",tooltip:{"menu-button":"打开收起 Uniscript 面板"},panel:{execute:"执行 Uniscript"}},uniscript:{message:{success:"执行成功",failed:"执行失败"}}},R=K;class T extends c.Disposable{constructor(){super(...arguments);f(this,"_open$",new C.BehaviorSubject(!1));f(this,"open$",this._open$.pipe(C.distinctUntilChanged()))}get isOpen(){return this._open$.getValue()}dispose(){this._open$.next(!1),this._open$.complete()}open(){this._open$.next(!0)}close(){this._open$.next(!1)}}const M="ScriptPanel",q={type:c.CommandType.OPERATION,id:"univer.operation.toggle-script-panel",handler:t=>{const e=t.get(T),n=t.get(d.ISidebarService);return e.isOpen?(e.close(),n.close()):(e.open(),n.open({header:{title:"script-panel.title"},children:{label:M},width:600})),!0}};var N={exports:{}},x={};/**
|
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 Q=v,X=Symbol.for("react.element"),Z=Symbol.for("react.fragment"),k=Object.prototype.hasOwnProperty,ee=Q.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,te={key:!0,ref:!0,__self:!0,__source:!0};function A(t,e,n){var r,i={},s=null,o=null;n!==void 0&&(s=""+n),e.key!==void 0&&(s=""+e.key),e.ref!==void 0&&(o=e.ref);for(r in e)k.call(e,r)&&!te.hasOwnProperty(r)&&(i[r]=e[r]);if(t&&t.defaultProps)for(r in e=t.defaultProps,e)i[r]===void 0&&(i[r]=e[r]);return{$$typeof:X,type:t,key:s,ref:o,props:i,_owner:ee.current}}x.Fragment=Z;x.jsx=A;x.jsxs=A;N.exports=x;var g=N.exports;class j extends c.Disposable{constructor(n){super();f(this,"_editorInstance",null);this._config=n}setEditorInstance(n){return this._editorInstance=n,c.toDisposable(()=>this._editorInstance=null)}getEditorInstance(){return this._editorInstance}requireVscodeEditor(){window.MonacoEnvironment||(window.MonacoEnvironment={getWorkerUrl:this._config.getWorkerUrl})}}var ne=Object.defineProperty,re=Object.getOwnPropertyDescriptor,ie=(t,e,n,r)=>{for(var i=r>1?void 0:r?re(e,n):e,s=t.length-1,o;s>=0;s--)(o=t[s])&&(i=(r?o(e,n,i):o(i))||i);return r&&i&&ne(e,n,i),i},w=(t,e)=>(n,r)=>e(n,r,t);let b=class extends c.Disposable{constructor(t,e){super(),this._logService=t,this._injector=e}async execute(t){this._logService.log("[UniscriptExecutionService]","executing Uniscript...");const e=H.FUniver.newAPI(this._injector),n=new Function("univerAPI",`(() => {${t}})()`);try{return n(e),!0}catch(r){return this._logService.error(r),!1}}};b=ie([w(0,c.ILogService),w(1,u.Inject(u.Injector))],b);const se="univer-script-editor-panel",oe="univer-script-editor-content",ce="univer-script-editor-actions",E={scriptEditorPanel:se,scriptEditorContent:oe,scriptEditorActions:ce};function le(){const t=v.useRef(null),e=v.useRef(null),n=v.useRef(null),r=h.useDependency(c.LocaleService),i=h.useDependency(b),s=h.useDependency(d.IShortcutService),o=h.useDependency(j),U=h.useDependency(d.IMessageService);v.useEffect(()=>{const _=e.current,l=t.current;let a=null,S=null;if(_&&l){o.requireVscodeEditor();const m=n.current=V.editor.create(_,{value:"",language:"javascript"});S=new ResizeObserver(()=>{let $=requestIdleCallback(()=>{if(!$)return;const{height:F,width:B}=l.getBoundingClientRect();m.layout({width:B,height:F}),$=void 0})}),S.observe(l);let p;a=new c.DisposableCollection,a.add(o.setEditorInstance(m)),a.add(m.onDidFocusEditorWidget(()=>{p=s.forceEscape()})),a.add(m.onDidBlurEditorWidget(()=>{p==null||p.dispose(),p=void 0})),a.add(c.toDisposable(()=>p==null?void 0:p.dispose()))}return()=>{S&&l&&S.unobserve(l),a==null||a.dispose()}},[]);const L=v.useCallback(()=>{var l;const _=(l=n.current)==null?void 0:l.getModel();_&&i.execute(_.getValue()).then(()=>{U.show({content:r.t("uniscript.message.success"),type:I.MessageType.Success})}).catch(()=>{U.show({content:r.t("uniscript.message.failed"),type:I.MessageType.Error})})},[i]);return g.jsxs("div",{className:E.scriptEditorPanel,children:[g.jsx("div",{className:E.scriptEditorContent,ref:t,children:g.jsx("div",{className:E.scriptEditorContainer,ref:e})}),g.jsx("div",{className:E.scriptEditorActions,children:g.jsx(I.Button,{type:"primary",size:"small",onClick:L,children:r.t("script-panel.panel.execute")})})]})}function ae(t){return{id:q.id,title:"toggle-script-panel",tooltip:"script-panel.tooltip.menu-button",icon:"CodeSingle",type:d.MenuItemType.BUTTON,positions:[d.MenuPosition.TOOLBAR_START],hidden$:d.getMenuHiddenObservable(t,c.UniverInstanceType.SHEET),disabled$:G.getCurrentSheetDisabled$(t)}}var pe=Object.defineProperty,ue=Object.getOwnPropertyDescriptor,de=(t,e,n,r)=>{for(var i=r>1?void 0:r?ue(e,n):e,s=t.length-1,o;s>=0;s--)(o=t[s])&&(i=(r?o(e,n,i):o(i))||i);return r&&i&&pe(e,n,i),i},P=(t,e)=>(n,r)=>e(n,r,t);let y=class extends c.Disposable{constructor(t,e,n,r){super(),this._injector=t,this.disposeWithMe(e.addMenuItem(this._injector.invoke(ae))),this.disposeWithMe(r.register(M,le)),this.disposeWithMe(n.registerCommand(q))}};y=de([c.OnLifecycle(c.LifecycleStages.Steady,y),P(0,u.Inject(u.Injector)),P(1,d.IMenuService),P(2,c.ICommandService),P(3,u.Inject(d.ComponentManager))],y);var ve=Object.defineProperty,_e=Object.getOwnPropertyDescriptor,fe=(t,e,n,r)=>{for(var i=r>1?void 0:r?_e(e,n):e,s=t.length-1,o;s>=0;s--)(o=t[s])&&(i=(r?o(e,n,i):o(i))||i);return r&&i&&ve(e,n,i),i},D=(t,e)=>(n,r)=>e(n,r,t);const he="uniscript";var O;exports.UniverUniscriptPlugin=(O=class extends c.Plugin{constructor(e,n,r){super(he),this._config=e,this._injector=n,this._localeService=r}onStarting(e){[[y],[j,{useFactory:()=>e.createInstance(j,this._config)}],[T],[b]].forEach(r=>e.add(r)),this._localeService.load({zhCN:R})}},f(O,"type",c.PluginType.Univer),O);exports.UniverUniscriptPlugin=fe([D(1,u.Inject(u.Injector)),D(2,u.Inject(c.LocaleService))],exports.UniverUniscriptPlugin);exports.enUS=Y;exports.zhCN=R;
|
package/lib/es/index.js
CHANGED
@@ -3,15 +3,15 @@ var V = (t, e, r) => e in t ? z(t, e, { enumerable: !0, configurable: !0, writab
|
|
3
3
|
var u = (t, e, r) => (V(t, typeof e != "symbol" ? e + "" : e, r), r);
|
4
4
|
import { Disposable as P, CommandType as H, toDisposable as T, ILogService as G, LocaleService as M, DisposableCollection as J, UniverInstanceType as Y, OnLifecycle as K, LifecycleStages as Q, ICommandService as X, Plugin as Z, PluginType as k } from "@univerjs/core";
|
5
5
|
import { Inject as f, Injector as I } from "@wendellhu/redi";
|
6
|
-
import { ISidebarService as ee, IShortcutService as te, IMessageService as re, MenuItemType as
|
6
|
+
import { ISidebarService as ee, IShortcutService as te, IMessageService as re, MenuItemType as ne, MenuPosition as ie, getMenuHiddenObservable as oe, ComponentManager as se, IMenuService as ce } from "@univerjs/ui";
|
7
7
|
import { BehaviorSubject as le, distinctUntilChanged as pe } from "rxjs";
|
8
8
|
import ae, { useRef as O, useEffect as ue, useCallback as de } from "react";
|
9
|
-
import { MessageType as
|
9
|
+
import { MessageType as j, Button as ve } from "@univerjs/design";
|
10
10
|
import { useDependency as d } from "@wendellhu/redi/react-bindings";
|
11
11
|
import { editor as fe } from "monaco-editor";
|
12
12
|
import { FUniver as _e } from "@univerjs/facade";
|
13
13
|
import { getCurrentSheetDisabled$ as me } from "@univerjs/sheets";
|
14
|
-
const
|
14
|
+
const he = {
|
15
15
|
"script-panel": {
|
16
16
|
title: "Uniscript",
|
17
17
|
tooltip: {
|
@@ -27,7 +27,7 @@ const Qe = {
|
|
27
27
|
failed: "Execution Failed"
|
28
28
|
}
|
29
29
|
}
|
30
|
-
}, he = {
|
30
|
+
}, Ze = he, ge = {
|
31
31
|
"script-panel": {
|
32
32
|
title: "Uniscript",
|
33
33
|
tooltip: {
|
@@ -43,7 +43,7 @@ const Qe = {
|
|
43
43
|
failed: "执行失败"
|
44
44
|
}
|
45
45
|
}
|
46
|
-
};
|
46
|
+
}, Se = ge;
|
47
47
|
class D extends P {
|
48
48
|
constructor() {
|
49
49
|
super(...arguments);
|
@@ -85,18 +85,18 @@ var F = { exports: {} }, x = {};
|
|
85
85
|
* This source code is licensed under the MIT license found in the
|
86
86
|
* LICENSE file in the root directory of this source tree.
|
87
87
|
*/
|
88
|
-
var
|
88
|
+
var Ee = ae, Pe = Symbol.for("react.element"), xe = Symbol.for("react.fragment"), Oe = Object.prototype.hasOwnProperty, ye = Ee.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner, be = { key: !0, ref: !0, __self: !0, __source: !0 };
|
89
89
|
function L(t, e, r) {
|
90
|
-
var
|
90
|
+
var n, i = {}, o = null, s = null;
|
91
91
|
r !== void 0 && (o = "" + r), e.key !== void 0 && (o = "" + e.key), e.ref !== void 0 && (s = e.ref);
|
92
|
-
for (
|
93
|
-
|
92
|
+
for (n in e)
|
93
|
+
Oe.call(e, n) && !be.hasOwnProperty(n) && (i[n] = e[n]);
|
94
94
|
if (t && t.defaultProps)
|
95
|
-
for (
|
96
|
-
n
|
97
|
-
return { $$typeof:
|
95
|
+
for (n in e = t.defaultProps, e)
|
96
|
+
i[n] === void 0 && (i[n] = e[n]);
|
97
|
+
return { $$typeof: Pe, type: t, key: o, ref: s, props: i, _owner: ye.current };
|
98
98
|
}
|
99
|
-
x.Fragment =
|
99
|
+
x.Fragment = xe;
|
100
100
|
x.jsx = L;
|
101
101
|
x.jsxs = L;
|
102
102
|
F.exports = x;
|
@@ -119,11 +119,11 @@ class b extends P {
|
|
119
119
|
});
|
120
120
|
}
|
121
121
|
}
|
122
|
-
var
|
123
|
-
for (var
|
124
|
-
(s = t[o]) && (
|
125
|
-
return
|
126
|
-
}, w = (t, e) => (r,
|
122
|
+
var Ie = Object.defineProperty, $e = Object.getOwnPropertyDescriptor, Ce = (t, e, r, n) => {
|
123
|
+
for (var i = n > 1 ? void 0 : n ? $e(e, r) : e, o = t.length - 1, s; o >= 0; o--)
|
124
|
+
(s = t[o]) && (i = (n ? s(e, r, i) : s(i)) || i);
|
125
|
+
return n && i && Ie(e, r, i), i;
|
126
|
+
}, w = (t, e) => (r, n) => e(r, n, t);
|
127
127
|
let E = class extends P {
|
128
128
|
constructor(t, e) {
|
129
129
|
super(), this._logService = t, this._injector = e;
|
@@ -133,22 +133,22 @@ let E = class extends P {
|
|
133
133
|
const e = _e.newAPI(this._injector), r = new Function("univerAPI", `(() => {${t}})()`);
|
134
134
|
try {
|
135
135
|
return r(e), !0;
|
136
|
-
} catch (
|
137
|
-
return this._logService.error(
|
136
|
+
} catch (n) {
|
137
|
+
return this._logService.error(n), !1;
|
138
138
|
}
|
139
139
|
}
|
140
140
|
};
|
141
|
-
E =
|
141
|
+
E = Ce([
|
142
142
|
w(0, G),
|
143
143
|
w(1, f(I))
|
144
144
|
], E);
|
145
|
-
const
|
146
|
-
scriptEditorPanel:
|
147
|
-
scriptEditorContent:
|
148
|
-
scriptEditorActions:
|
145
|
+
const je = "univer-script-editor-panel", we = "univer-script-editor-content", Ue = "univer-script-editor-actions", h = {
|
146
|
+
scriptEditorPanel: je,
|
147
|
+
scriptEditorContent: we,
|
148
|
+
scriptEditorActions: Ue
|
149
149
|
};
|
150
|
-
function
|
151
|
-
const t = O(null), e = O(null), r = O(null),
|
150
|
+
function Re() {
|
151
|
+
const t = O(null), e = O(null), r = O(null), n = d(M), i = d(E), o = d(te), s = d(b), $ = d(re);
|
152
152
|
ue(() => {
|
153
153
|
const a = e.current, c = t.current;
|
154
154
|
let l = null, _ = null;
|
@@ -159,11 +159,11 @@ function we() {
|
|
159
159
|
language: "javascript"
|
160
160
|
});
|
161
161
|
_ = new ResizeObserver(() => {
|
162
|
-
let
|
163
|
-
if (!
|
162
|
+
let C = requestIdleCallback(() => {
|
163
|
+
if (!C)
|
164
164
|
return;
|
165
165
|
const { height: B, width: q } = c.getBoundingClientRect();
|
166
|
-
m.layout({ width: q, height: B }),
|
166
|
+
m.layout({ width: q, height: B }), C = void 0;
|
167
167
|
});
|
168
168
|
}), _.observe(c);
|
169
169
|
let p;
|
@@ -184,62 +184,62 @@ function we() {
|
|
184
184
|
const W = de(() => {
|
185
185
|
var c;
|
186
186
|
const a = (c = r.current) == null ? void 0 : c.getModel();
|
187
|
-
a &&
|
188
|
-
|
189
|
-
content:
|
190
|
-
type:
|
187
|
+
a && i.execute(a.getValue()).then(() => {
|
188
|
+
$.show({
|
189
|
+
content: n.t("uniscript.message.success"),
|
190
|
+
type: j.Success
|
191
191
|
});
|
192
192
|
}).catch(() => {
|
193
|
-
|
194
|
-
content:
|
195
|
-
type:
|
193
|
+
$.show({
|
194
|
+
content: n.t("uniscript.message.failed"),
|
195
|
+
type: j.Error
|
196
196
|
});
|
197
197
|
});
|
198
|
-
}, [
|
198
|
+
}, [i]);
|
199
199
|
return /* @__PURE__ */ v.jsxs("div", { className: h.scriptEditorPanel, children: [
|
200
200
|
/* @__PURE__ */ v.jsx("div", { className: h.scriptEditorContent, ref: t, children: /* @__PURE__ */ v.jsx("div", { className: h.scriptEditorContainer, ref: e }) }),
|
201
|
-
/* @__PURE__ */ v.jsx("div", { className: h.scriptEditorActions, children: /* @__PURE__ */ v.jsx(ve, { type: "primary", size: "small", onClick: W, children:
|
201
|
+
/* @__PURE__ */ v.jsx("div", { className: h.scriptEditorActions, children: /* @__PURE__ */ v.jsx(ve, { type: "primary", size: "small", onClick: W, children: n.t("script-panel.panel.execute") }) })
|
202
202
|
] });
|
203
203
|
}
|
204
|
-
function
|
204
|
+
function Te(t) {
|
205
205
|
return {
|
206
206
|
id: A.id,
|
207
207
|
title: "toggle-script-panel",
|
208
208
|
tooltip: "script-panel.tooltip.menu-button",
|
209
209
|
icon: "CodeSingle",
|
210
|
-
type:
|
211
|
-
positions: [
|
210
|
+
type: ne.BUTTON,
|
211
|
+
positions: [ie.TOOLBAR_START],
|
212
212
|
hidden$: oe(t, Y.SHEET),
|
213
213
|
disabled$: me(t)
|
214
214
|
};
|
215
215
|
}
|
216
|
-
var
|
217
|
-
for (var
|
218
|
-
(s = t[o]) && (
|
219
|
-
return
|
220
|
-
}, g = (t, e) => (r,
|
216
|
+
var Me = Object.defineProperty, De = Object.getOwnPropertyDescriptor, Ne = (t, e, r, n) => {
|
217
|
+
for (var i = n > 1 ? void 0 : n ? De(e, r) : e, o = t.length - 1, s; o >= 0; o--)
|
218
|
+
(s = t[o]) && (i = (n ? s(e, r, i) : s(i)) || i);
|
219
|
+
return n && i && Me(e, r, i), i;
|
220
|
+
}, g = (t, e) => (r, n) => e(r, n, t);
|
221
221
|
let S = class extends P {
|
222
|
-
constructor(t, e, r,
|
223
|
-
super(), this._injector = t, this.disposeWithMe(e.addMenuItem(this._injector.invoke(
|
222
|
+
constructor(t, e, r, n) {
|
223
|
+
super(), this._injector = t, this.disposeWithMe(e.addMenuItem(this._injector.invoke(Te))), this.disposeWithMe(n.register(N, Re)), this.disposeWithMe(r.registerCommand(A));
|
224
224
|
}
|
225
225
|
};
|
226
|
-
S =
|
226
|
+
S = Ne([
|
227
227
|
K(Q.Steady, S),
|
228
228
|
g(0, f(I)),
|
229
229
|
g(1, ce),
|
230
230
|
g(2, X),
|
231
231
|
g(3, f(se))
|
232
232
|
], S);
|
233
|
-
var
|
234
|
-
for (var
|
235
|
-
(s = t[o]) && (
|
236
|
-
return
|
237
|
-
}, U = (t, e) => (r,
|
238
|
-
const
|
233
|
+
var Ae = Object.defineProperty, Fe = Object.getOwnPropertyDescriptor, Le = (t, e, r, n) => {
|
234
|
+
for (var i = n > 1 ? void 0 : n ? Fe(e, r) : e, o = t.length - 1, s; o >= 0; o--)
|
235
|
+
(s = t[o]) && (i = (n ? s(e, r, i) : s(i)) || i);
|
236
|
+
return n && i && Ae(e, r, i), i;
|
237
|
+
}, U = (t, e) => (r, n) => e(r, n, t);
|
238
|
+
const We = "uniscript";
|
239
239
|
var y;
|
240
240
|
let R = (y = class extends Z {
|
241
241
|
constructor(t, e, r) {
|
242
|
-
super(
|
242
|
+
super(We), this._config = t, this._injector = e, this._localeService = r;
|
243
243
|
}
|
244
244
|
onStarting(t) {
|
245
245
|
[
|
@@ -250,16 +250,16 @@ let R = (y = class extends Z {
|
|
250
250
|
[D],
|
251
251
|
[E]
|
252
252
|
].forEach((r) => t.add(r)), this._localeService.load({
|
253
|
-
zhCN:
|
253
|
+
zhCN: Se
|
254
254
|
});
|
255
255
|
}
|
256
256
|
}, u(y, "type", k.Univer), y);
|
257
|
-
R =
|
257
|
+
R = Le([
|
258
258
|
U(1, f(I)),
|
259
259
|
U(2, f(M))
|
260
260
|
], R);
|
261
261
|
export {
|
262
262
|
R as UniverUniscriptPlugin,
|
263
|
-
|
264
|
-
|
263
|
+
Ze as enUS,
|
264
|
+
Se as zhCN
|
265
265
|
};
|
@@ -13,21 +13,6 @@
|
|
13
13
|
* See the License for the specific language governing permissions and
|
14
14
|
* limitations under the License.
|
15
15
|
*/
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
tooltip: {
|
20
|
-
'menu-button': string;
|
21
|
-
};
|
22
|
-
panel: {
|
23
|
-
execute: string;
|
24
|
-
};
|
25
|
-
};
|
26
|
-
uniscript: {
|
27
|
-
message: {
|
28
|
-
success: string;
|
29
|
-
failed: string;
|
30
|
-
};
|
31
|
-
};
|
32
|
-
};
|
33
|
-
export default _default;
|
16
|
+
import type zhCN from './zh-CN';
|
17
|
+
declare const locale: typeof zhCN;
|
18
|
+
export default locale;
|
@@ -13,7 +13,7 @@
|
|
13
13
|
* See the License for the specific language governing permissions and
|
14
14
|
* limitations under the License.
|
15
15
|
*/
|
16
|
-
declare const
|
16
|
+
declare const locale: {
|
17
17
|
'script-panel': {
|
18
18
|
title: string;
|
19
19
|
tooltip: {
|
@@ -30,4 +30,4 @@ declare const _default: {
|
|
30
30
|
};
|
31
31
|
};
|
32
32
|
};
|
33
|
-
export default
|
33
|
+
export default locale;
|
package/lib/umd/index.js
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
(function(o,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"),require("@univerjs/sheets")):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","@univerjs/sheets"],s):(o=typeof globalThis<"u"?globalThis:o||self,s(o.UniverUniscript={},o.UniverCore,o["@wendellhu/redi"],o.UniverUi,o.rxjs,o.React,o.UniverDesign,o["@wendellhu/redi/react-bindings"],o.monaco,o.UniverFacade,o.UniverSheets))})(this,function(o,s,
|
1
|
+
(function(o,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"),require("@univerjs/sheets")):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","@univerjs/sheets"],s):(o=typeof globalThis<"u"?globalThis:o||self,s(o.UniverUniscript={},o.UniverCore,o["@wendellhu/redi"],o.UniverUi,o.rxjs,o.React,o.UniverDesign,o["@wendellhu/redi/react-bindings"],o.monaco,o.UniverFacade,o.UniverSheets))})(this,function(o,s,p,a,w,f,O,h,q,W,z){"use strict";var ue=Object.defineProperty;var de=(o,s,p)=>s in o?ue(o,s,{enumerable:!0,configurable:!0,writable:!0,value:p}):o[s]=p;var m=(o,s,p)=>(de(o,typeof s!="symbol"?s+"":s,p),p);var b;const V={"script-panel":{title:"Uniscript",tooltip:{"menu-button":"Toggle Uniscript Panel"},panel:{execute:"Execute Script"}},uniscript:{message:{success:"Execution Success",failed:"Execution Failed"}}},C={"script-panel":{title:"Uniscript",tooltip:{"menu-button":"打开收起 Uniscript 面板"},panel:{execute:"执行 Uniscript"}},uniscript:{message:{success:"执行成功",failed:"执行失败"}}};class D extends s.Disposable{constructor(){super(...arguments);m(this,"_open$",new w.BehaviorSubject(!1));m(this,"open$",this._open$.pipe(w.distinctUntilChanged()))}get isOpen(){return this._open$.getValue()}dispose(){this._open$.next(!1),this._open$.complete()}open(){this._open$.next(!0)}close(){this._open$.next(!1)}}const T="ScriptPanel",R={type:s.CommandType.OPERATION,id:"univer.operation.toggle-script-panel",handler:n=>{const e=n.get(D),i=n.get(a.ISidebarService);return e.isOpen?(e.close(),i.close()):(e.open(),i.open({header:{title:"script-panel.title"},children:{label:T},width:600})),!0}};var M={exports:{}},g={};/**
|
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 B=f,H=Symbol.for("react.element"),G=Symbol.for("react.fragment"),J=Object.prototype.hasOwnProperty,Y=B.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,K={key:!0,ref:!0,__self:!0,__source:!0};function
|
9
|
+
*/var B=f,H=Symbol.for("react.element"),G=Symbol.for("react.fragment"),J=Object.prototype.hasOwnProperty,Y=B.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,K={key:!0,ref:!0,__self:!0,__source:!0};function $(n,e,i){var t,r={},c=null,l=null;i!==void 0&&(c=""+i),e.key!==void 0&&(c=""+e.key),e.ref!==void 0&&(l=e.ref);for(t in e)J.call(e,t)&&!K.hasOwnProperty(t)&&(r[t]=e[t]);if(n&&n.defaultProps)for(t in e=n.defaultProps,e)r[t]===void 0&&(r[t]=e[t]);return{$$typeof:H,type:n,key:c,ref:l,props:r,_owner:Y.current}}g.Fragment=G,g.jsx=$,g.jsxs=$,M.exports=g;var _=M.exports;class x extends s.Disposable{constructor(i){super();m(this,"_editorInstance",null);this._config=i}setEditorInstance(i){return this._editorInstance=i,s.toDisposable(()=>this._editorInstance=null)}getEditorInstance(){return this._editorInstance}requireVscodeEditor(){window.MonacoEnvironment||(window.MonacoEnvironment={getWorkerUrl:this._config.getWorkerUrl})}}var Q=Object.defineProperty,X=Object.getOwnPropertyDescriptor,Z=(n,e,i,t)=>{for(var r=t>1?void 0:t?X(e,i):e,c=n.length-1,l;c>=0;c--)(l=n[c])&&(r=(t?l(e,i,r):l(r))||r);return t&&r&&Q(e,i,r),r},N=(n,e)=>(i,t)=>e(i,t,n);let E=class extends s.Disposable{constructor(n,e){super(),this._logService=n,this._injector=e}async execute(n){this._logService.log("[UniscriptExecutionService]","executing Uniscript...");const e=W.FUniver.newAPI(this._injector),i=new Function("univerAPI",`(() => {${n}})()`);try{return i(e),!0}catch(t){return this._logService.error(t),!1}}};E=Z([N(0,s.ILogService),N(1,p.Inject(p.Injector))],E);const j={scriptEditorPanel:"univer-script-editor-panel",scriptEditorContent:"univer-script-editor-content",scriptEditorActions:"univer-script-editor-actions"};function k(){const n=f.useRef(null),e=f.useRef(null),i=f.useRef(null),t=h.useDependency(s.LocaleService),r=h.useDependency(E),c=h.useDependency(a.IShortcutService),l=h.useDependency(x),F=h.useDependency(a.IMessageService);f.useEffect(()=>{const S=e.current,u=n.current;let d=null,U=null;if(S&&u){l.requireVscodeEditor();const I=i.current=q.editor.create(S,{value:"",language:"javascript"});U=new ResizeObserver(()=>{let L=requestIdleCallback(()=>{if(!L)return;const{height:pe,width:ae}=u.getBoundingClientRect();I.layout({width:ae,height:pe}),L=void 0})}),U.observe(u);let v;d=new s.DisposableCollection,d.add(l.setEditorInstance(I)),d.add(I.onDidFocusEditorWidget(()=>{v=c.forceEscape()})),d.add(I.onDidBlurEditorWidget(()=>{v==null||v.dispose(),v=void 0})),d.add(s.toDisposable(()=>v==null?void 0:v.dispose()))}return()=>{U&&u&&U.unobserve(u),d==null||d.dispose()}},[]);const le=f.useCallback(()=>{var u;const S=(u=i.current)==null?void 0:u.getModel();S&&r.execute(S.getValue()).then(()=>{F.show({content:t.t("uniscript.message.success"),type:O.MessageType.Success})}).catch(()=>{F.show({content:t.t("uniscript.message.failed"),type:O.MessageType.Error})})},[r]);return _.jsxs("div",{className:j.scriptEditorPanel,children:[_.jsx("div",{className:j.scriptEditorContent,ref:n,children:_.jsx("div",{className:j.scriptEditorContainer,ref:e})}),_.jsx("div",{className:j.scriptEditorActions,children:_.jsx(O.Button,{type:"primary",size:"small",onClick:le,children:t.t("script-panel.panel.execute")})})]})}function ee(n){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(n,s.UniverInstanceType.SHEET),disabled$:z.getCurrentSheetDisabled$(n)}}var te=Object.defineProperty,ne=Object.getOwnPropertyDescriptor,ie=(n,e,i,t)=>{for(var r=t>1?void 0:t?ne(e,i):e,c=n.length-1,l;c>=0;c--)(l=n[c])&&(r=(t?l(e,i,r):l(r))||r);return t&&r&&te(e,i,r),r},y=(n,e)=>(i,t)=>e(i,t,n);let P=class extends s.Disposable{constructor(n,e,i,t){super(),this._injector=n,this.disposeWithMe(e.addMenuItem(this._injector.invoke(ee))),this.disposeWithMe(t.register(T,k)),this.disposeWithMe(i.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,oe=(n,e,i,t)=>{for(var r=t>1?void 0:t?se(e,i):e,c=n.length-1,l;c>=0;c--)(l=n[c])&&(r=(t?l(e,i,r):l(r))||r);return t&&r&&re(e,i,r),r},A=(n,e)=>(i,t)=>e(i,t,n);const ce="uniscript";o.UniverUniscriptPlugin=(b=class extends s.Plugin{constructor(e,i,t){super(ce),this._config=e,this._injector=i,this._localeService=t}onStarting(e){[[P],[x,{useFactory:()=>e.createInstance(x,this._config)}],[D],[E]].forEach(t=>e.add(t)),this._localeService.load({zhCN:C})}},m(b,"type",s.PluginType.Univer),b),o.UniverUniscriptPlugin=oe([A(1,p.Inject(p.Injector)),A(2,p.Inject(s.LocaleService))],o.UniverUniscriptPlugin),o.enUS=V,o.zhCN=C,Object.defineProperty(o,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.2",
|
4
4
|
"private": false,
|
5
5
|
"description": "UI component library for building exceptional Univer.",
|
6
6
|
"author": "DreamNum <developer@univer.ai>",
|
@@ -55,11 +55,11 @@
|
|
55
55
|
"monaco-editor": ">=0.44.0",
|
56
56
|
"react": ">=16.9.0",
|
57
57
|
"rxjs": ">=7.0.0",
|
58
|
-
"@univerjs/core": "0.1.
|
59
|
-
"@univerjs/design": "0.1.
|
60
|
-
"@univerjs/
|
61
|
-
"@univerjs/
|
62
|
-
"@univerjs/
|
58
|
+
"@univerjs/core": "0.1.2",
|
59
|
+
"@univerjs/design": "0.1.2",
|
60
|
+
"@univerjs/facade": "0.1.2",
|
61
|
+
"@univerjs/ui": "0.1.2",
|
62
|
+
"@univerjs/sheets": "0.1.2"
|
63
63
|
},
|
64
64
|
"devDependencies": {
|
65
65
|
"@types/react": "^18.2.57",
|
@@ -70,12 +70,12 @@
|
|
70
70
|
"typescript": "^5.3.3",
|
71
71
|
"vite": "^5.1.4",
|
72
72
|
"vitest": "^1.3.1",
|
73
|
-
"@univerjs/core": "0.1.
|
74
|
-
"@univerjs/design": "0.1.
|
75
|
-
"@univerjs/facade": "0.1.
|
76
|
-
"@univerjs/shared": "0.1.
|
77
|
-
"@univerjs/sheets": "0.1.
|
78
|
-
"@univerjs/ui": "0.1.
|
73
|
+
"@univerjs/core": "0.1.2",
|
74
|
+
"@univerjs/design": "0.1.2",
|
75
|
+
"@univerjs/facade": "0.1.2",
|
76
|
+
"@univerjs/shared": "0.1.2",
|
77
|
+
"@univerjs/sheets": "0.1.2",
|
78
|
+
"@univerjs/ui": "0.1.2"
|
79
79
|
},
|
80
80
|
"scripts": {
|
81
81
|
"test": "vitest run",
|