@univerjs/uniscript 0.1.11 → 0.1.12
Sign up to get free protection for your applications and to get access to all the features.
- package/lib/cjs/index.js +2 -2
- package/lib/es/index.js +136 -128
- package/lib/types/controllers/uniscript.controller.d.ts +9 -2
- package/lib/types/index.d.ts +2 -1
- package/lib/types/plugin.d.ts +6 -4
- package/lib/types/services/script-editor.service.d.ts +2 -4
- package/lib/types/services/script-execution.service.d.ts +6 -2
- package/lib/umd/index.js +2 -2
- package/package.json +12 -12
package/lib/cjs/index.js
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
"use strict";var
|
1
|
+
"use strict";var B=Object.defineProperty;var W=(n,e,t)=>e in n?B(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var f=(n,e,t)=>(W(n,typeof e!="symbol"?e+"":e,t),t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("@univerjs/core"),l=require("@wendellhu/redi"),u=require("@univerjs/ui"),$=require("rxjs"),d=require("react"),O=require("@univerjs/design"),v=require("@wendellhu/redi/react-bindings"),z=require("monaco-editor"),V=require("@univerjs/facade"),H={"script-panel":{title:"Uniscript",tooltip:{"menu-button":"Toggle Uniscript Panel"},panel:{execute:"Execute Script"}},uniscript:{message:{success:"Execution Success",failed:"Execution Failed"}}},G=H,J={"script-panel":{title:"Uniscript",tooltip:{"menu-button":"打开收起 Uniscript 面板"},panel:{execute:"执行 Uniscript"}},uniscript:{message:{success:"执行成功",failed:"执行失败"}}},R=J,Y={"script-panel":{title:"Юнискрипт",tooltip:{"menu-button":"Переключить панель Юнискрипт"},panel:{execute:"Выполнить скрипт"}},uniscript:{message:{success:"Выполнение успешно",failed:"Выполнение не удалось"}}},K=Y;class M 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 T="ScriptPanel",N={type:c.CommandType.OPERATION,id:"univer.operation.toggle-script-panel",handler:n=>{const e=n.get(M),t=n.get(u.ISidebarService);return e.isOpen?(e.close(),t.close()):(e.open(),t.open({header:{title:"script-panel.title"},children:{label:T},width:600})),!0}};var q={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 Q=d,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 L(n,e,t){var i,r={},s=null,o=null;t!==void 0&&(s=""+t),e.key!==void 0&&(s=""+e.key),e.ref!==void 0&&(o=e.ref);for(i in e)k.call(e,i)&&!te.hasOwnProperty(i)&&(r[i]=e[i]);if(n&&n.defaultProps)for(i in e=n.defaultProps,e)r[i]===void 0&&(r[i]=e[i]);return{$$typeof:X,type:n,key:s,ref:o,props:r,_owner:ee.current}}I.Fragment=Z;I.jsx=L;I.jsxs=L;q.exports=I;var g=q.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 ne=Object.defineProperty,ie=Object.getOwnPropertyDescriptor,re=(n,e,t,i)=>{for(var r=i>1?void 0:i?ie(e,t):e,s=n.length-1,o;s>=0;s--)(o=n[s])&&(r=(i?o(e,t,r):o(r))||r);return i&&r&&ne(e,t,r),r},D=(n,e)=>(t,i)=>e(t,i,n);const U=l.createIdentifier("univer.uniscript.execution-service");let b=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=V.FUniver.newAPI(this._injector),t=new Function("univerAPI",`(() => {${n}})()`);try{return t(e),!0}catch(i){return this._logService.error(i),!1}}};b=re([D(0,c.ILogService),D(1,l.Inject(l.Injector))],b);const se="univer-script-editor-panel",ce="univer-script-editor-content",oe="univer-script-editor-actions",E={scriptEditorPanel:se,scriptEditorContent:ce,scriptEditorActions:oe};function le(){const n=d.useRef(null),e=d.useRef(null),t=d.useRef(null),i=v.useDependency(c.LocaleService),r=v.useDependency(u.IShortcutService),s=v.useDependency(y);d.useEffect(()=>{const j=e.current,_=n.current;let a=null,S=null;if(j&&_){s.requireVscodeEditor();const m=t.current=z.editor.create(j,{value:"",language:"javascript"});S=new ResizeObserver(()=>{let C=requestIdleCallback(()=>{if(!C)return;const{height:A,width:F}=_.getBoundingClientRect();m.layout({width:F,height:A}),C=void 0})}),S.observe(_);let p;a=new c.DisposableCollection,a.add(s.setEditorInstance(m)),a.add(m.onDidFocusEditorWidget(()=>{p=r.forceEscape()})),a.add(m.onDidBlurEditorWidget(()=>{p==null||p.dispose(),p=void 0})),a.add(c.toDisposable(()=>p==null?void 0:p.dispose()))}return()=>{S&&_&&S.unobserve(_),a==null||a.dispose()}},[s,r]);const o=ae(t);return g.jsxs("div",{className:E.scriptEditorPanel,children:[g.jsx("div",{className:E.scriptEditorContent,ref:n,children:g.jsx("div",{className:E.scriptEditorContainer,ref:e})}),g.jsx("div",{className:E.scriptEditorActions,children:g.jsx(O.Button,{type:"primary",size:"small",onClick:o,children:i.t("script-panel.panel.execute")})})]})}function ae(n){const e=v.useDependency(U),t=v.useDependency(u.IMessageService),i=v.useDependency(c.LocaleService);return d.useCallback(()=>{var s;const r=(s=n.current)==null?void 0:s.getModel();r&&e.execute(r.getValue()).then(()=>{t.show({content:i.t("uniscript.message.success"),type:O.MessageType.Success})}).catch(()=>{t.show({content:i.t("uniscript.message.failed"),type:O.MessageType.Error})})},[i,t,n,e])}function pe(n){return{id:N.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 ue=Object.defineProperty,de=Object.getOwnPropertyDescriptor,ve=(n,e,t,i)=>{for(var r=i>1?void 0:i?de(e,t):e,s=n.length-1,o;s>=0;s--)(o=n[s])&&(r=(i?o(e,t,r):o(r))||r);return i&&r&&ue(e,t,r),r},x=(n,e)=>(t,i)=>e(t,i,n);const _e={};let h=class extends c.Disposable{constructor(n,e,t,i,r){super(),this._config=n,this._injector=e,this._menuService=t;const{menu:s={}}=this._config;this.disposeWithMe(t.addMenuItem(this._injector.invoke(pe),s)),this.disposeWithMe(r.register(T,le)),this.disposeWithMe(i.registerCommand(N))}};h=ve([c.OnLifecycle(c.LifecycleStages.Steady,h),x(1,l.Inject(l.Injector)),x(2,u.IMenuService),x(3,c.ICommandService),x(4,l.Inject(u.ComponentManager))],h);var fe=Object.defineProperty,ge=Object.getOwnPropertyDescriptor,he=(n,e,t,i)=>{for(var r=i>1?void 0:i?ge(e,t):e,s=n.length-1,o;s>=0;s--)(o=n[s])&&(r=(i?o(e,t,r):o(r))||r);return i&&r&&fe(e,t,r),r},w=(n,e)=>(t,i)=>e(t,i,n);const Se="uniscript";var P;exports.UniverUniscriptPlugin=(P=class extends c.Plugin{constructor(e={},t,i){super(),this._config=e,this._injector=t,this._localeService=i,this._config=c.Tools.deepMerge({},_e,this._config)}onStarting(e){[[h,{useFactory:()=>e.createInstance(h,this._config)}],[y,{useFactory:()=>e.createInstance(y,this._config)}],[M]].forEach(i=>e.add(i)),this.registerExecution(),this._localeService.load({zhCN:R})}registerExecution(){this._injector.add([U,{useClass:b}])}},f(P,"pluginName",Se),P);exports.UniverUniscriptPlugin=he([w(1,l.Inject(l.Injector)),w(2,l.Inject(c.LocaleService))],exports.UniverUniscriptPlugin);exports.IUniscriptExecutionService=U;exports.ScriptEditorService=y;exports.enUS=G;exports.ruRU=K;exports.zhCN=R;
|
package/lib/es/index.js
CHANGED
@@ -1,16 +1,16 @@
|
|
1
|
-
var
|
2
|
-
var
|
3
|
-
var u = (t, e, r) => (
|
4
|
-
import { Disposable as
|
5
|
-
import { Inject as
|
6
|
-
import { ISidebarService as
|
7
|
-
import { BehaviorSubject as
|
8
|
-
import
|
9
|
-
import { Button as
|
1
|
+
var q = Object.defineProperty;
|
2
|
+
var V = (t, e, r) => e in t ? q(t, e, { enumerable: !0, configurable: !0, writable: !0, value: r }) : t[e] = r;
|
3
|
+
var u = (t, e, r) => (V(t, typeof e != "symbol" ? e + "" : e, r), r);
|
4
|
+
import { Disposable as S, CommandType as z, toDisposable as M, ILogService as H, LocaleService as y, DisposableCollection as G, UniverInstanceType as J, OnLifecycle as Y, LifecycleStages as K, ICommandService as Q, Plugin as X, Tools as Z } from "@univerjs/core";
|
5
|
+
import { createIdentifier as k, Inject as f, Injector as b } from "@wendellhu/redi";
|
6
|
+
import { ISidebarService as ee, IShortcutService as te, IMessageService as re, MenuItemType as ie, MenuPosition as ne, getMenuHiddenObservable as se, ComponentManager as oe, IMenuService as ce } from "@univerjs/ui";
|
7
|
+
import { BehaviorSubject as le, distinctUntilChanged as pe } from "rxjs";
|
8
|
+
import ae, { useRef as x, useEffect as ue, useCallback as de } from "react";
|
9
|
+
import { Button as ve, MessageType as $ } from "@univerjs/design";
|
10
10
|
import { useDependency as p } from "@wendellhu/redi/react-bindings";
|
11
|
-
import { editor as
|
12
|
-
import { FUniver as
|
13
|
-
const
|
11
|
+
import { editor as fe } from "monaco-editor";
|
12
|
+
import { FUniver as _e } from "@univerjs/facade";
|
13
|
+
const he = {
|
14
14
|
"script-panel": {
|
15
15
|
title: "Uniscript",
|
16
16
|
tooltip: {
|
@@ -26,7 +26,7 @@ const ve = {
|
|
26
26
|
failed: "Execution Failed"
|
27
27
|
}
|
28
28
|
}
|
29
|
-
},
|
29
|
+
}, ke = he, me = {
|
30
30
|
"script-panel": {
|
31
31
|
title: "Uniscript",
|
32
32
|
tooltip: {
|
@@ -42,7 +42,7 @@ const ve = {
|
|
42
42
|
failed: "执行失败"
|
43
43
|
}
|
44
44
|
}
|
45
|
-
},
|
45
|
+
}, ge = me, Se = {
|
46
46
|
"script-panel": {
|
47
47
|
title: "Юнискрипт",
|
48
48
|
tooltip: {
|
@@ -58,12 +58,12 @@ const ve = {
|
|
58
58
|
failed: "Выполнение не удалось"
|
59
59
|
}
|
60
60
|
}
|
61
|
-
},
|
62
|
-
class T extends
|
61
|
+
}, et = Se;
|
62
|
+
class T extends S {
|
63
63
|
constructor() {
|
64
64
|
super(...arguments);
|
65
|
-
u(this, "_open$", new
|
66
|
-
u(this, "open$", this._open$.pipe(
|
65
|
+
u(this, "_open$", new le(!1));
|
66
|
+
u(this, "open$", this._open$.pipe(pe()));
|
67
67
|
}
|
68
68
|
get isOpen() {
|
69
69
|
return this._open$.getValue();
|
@@ -78,19 +78,19 @@ class T extends E {
|
|
78
78
|
this._open$.next(!1);
|
79
79
|
}
|
80
80
|
}
|
81
|
-
const
|
82
|
-
type:
|
81
|
+
const D = "ScriptPanel", N = {
|
82
|
+
type: z.OPERATION,
|
83
83
|
id: "univer.operation.toggle-script-panel",
|
84
84
|
handler: (t) => {
|
85
|
-
const e = t.get(T), r = t.get(
|
85
|
+
const e = t.get(T), r = t.get(ee);
|
86
86
|
return e.isOpen ? (e.close(), r.close()) : (e.open(), r.open({
|
87
87
|
header: { title: "script-panel.title" },
|
88
|
-
children: { label:
|
88
|
+
children: { label: D },
|
89
89
|
width: 600
|
90
90
|
})), !0;
|
91
91
|
}
|
92
92
|
};
|
93
|
-
var A = { exports: {} },
|
93
|
+
var A = { exports: {} }, E = {};
|
94
94
|
/**
|
95
95
|
* @license React
|
96
96
|
* react-jsx-runtime.production.min.js
|
@@ -100,23 +100,23 @@ var A = { exports: {} }, x = {};
|
|
100
100
|
* This source code is licensed under the MIT license found in the
|
101
101
|
* LICENSE file in the root directory of this source tree.
|
102
102
|
*/
|
103
|
-
var
|
103
|
+
var Ee = ae, xe = Symbol.for("react.element"), Pe = Symbol.for("react.fragment"), Oe = Object.prototype.hasOwnProperty, Ie = Ee.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner, ye = { key: !0, ref: !0, __self: !0, __source: !0 };
|
104
104
|
function F(t, e, r) {
|
105
|
-
var
|
105
|
+
var i, n = {}, s = null, o = null;
|
106
106
|
r !== void 0 && (s = "" + r), e.key !== void 0 && (s = "" + e.key), e.ref !== void 0 && (o = e.ref);
|
107
|
-
for (
|
108
|
-
|
107
|
+
for (i in e)
|
108
|
+
Oe.call(e, i) && !ye.hasOwnProperty(i) && (n[i] = e[i]);
|
109
109
|
if (t && t.defaultProps)
|
110
|
-
for (
|
111
|
-
i
|
112
|
-
return { $$typeof:
|
110
|
+
for (i in e = t.defaultProps, e)
|
111
|
+
n[i] === void 0 && (n[i] = e[i]);
|
112
|
+
return { $$typeof: xe, type: t, key: s, ref: o, props: n, _owner: Ie.current };
|
113
113
|
}
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
A.exports =
|
114
|
+
E.Fragment = Pe;
|
115
|
+
E.jsx = F;
|
116
|
+
E.jsxs = F;
|
117
|
+
A.exports = E;
|
118
118
|
var d = A.exports;
|
119
|
-
class
|
119
|
+
class O extends S {
|
120
120
|
constructor(r) {
|
121
121
|
super();
|
122
122
|
u(this, "_editorInstance", null);
|
@@ -134,154 +134,162 @@ class y extends E {
|
|
134
134
|
});
|
135
135
|
}
|
136
136
|
}
|
137
|
-
var
|
138
|
-
for (var
|
139
|
-
(o = t[s]) && (
|
140
|
-
return
|
141
|
-
},
|
142
|
-
|
137
|
+
var be = Object.defineProperty, Ce = Object.getOwnPropertyDescriptor, Ue = (t, e, r, i) => {
|
138
|
+
for (var n = i > 1 ? void 0 : i ? Ce(e, r) : e, s = t.length - 1, o; s >= 0; s--)
|
139
|
+
(o = t[s]) && (n = (i ? o(e, r, n) : o(n)) || n);
|
140
|
+
return i && n && be(e, r, n), n;
|
141
|
+
}, j = (t, e) => (r, i) => e(r, i, t);
|
142
|
+
const L = k("univer.uniscript.execution-service");
|
143
|
+
let I = class extends S {
|
143
144
|
constructor(t, e) {
|
144
145
|
super(), this._logService = t, this._injector = e;
|
145
146
|
}
|
146
147
|
async execute(t) {
|
147
148
|
this._logService.log("[UniscriptExecutionService]", "executing Uniscript...");
|
148
|
-
const e =
|
149
|
+
const e = _e.newAPI(this._injector), r = new Function("univerAPI", `(() => {${t}})()`);
|
149
150
|
try {
|
150
151
|
return r(e), !0;
|
151
|
-
} catch (
|
152
|
-
return this._logService.error(
|
152
|
+
} catch (i) {
|
153
|
+
return this._logService.error(i), !1;
|
153
154
|
}
|
154
155
|
}
|
155
156
|
};
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
],
|
160
|
-
const
|
161
|
-
scriptEditorPanel:
|
162
|
-
scriptEditorContent:
|
163
|
-
scriptEditorActions:
|
157
|
+
I = Ue([
|
158
|
+
j(0, H),
|
159
|
+
j(1, f(b))
|
160
|
+
], I);
|
161
|
+
const $e = "univer-script-editor-panel", je = "univer-script-editor-content", we = "univer-script-editor-actions", m = {
|
162
|
+
scriptEditorPanel: $e,
|
163
|
+
scriptEditorContent: je,
|
164
|
+
scriptEditorActions: we
|
164
165
|
};
|
165
|
-
function
|
166
|
-
const t =
|
167
|
-
|
168
|
-
const
|
169
|
-
let c = null,
|
170
|
-
if (
|
166
|
+
function Re() {
|
167
|
+
const t = x(null), e = x(null), r = x(null), i = p(y), n = p(te), s = p(O);
|
168
|
+
ue(() => {
|
169
|
+
const C = e.current, a = t.current;
|
170
|
+
let c = null, _ = null;
|
171
|
+
if (C && a) {
|
171
172
|
s.requireVscodeEditor();
|
172
|
-
const
|
173
|
+
const h = r.current = fe.create(C, {
|
173
174
|
value: "",
|
174
175
|
language: "javascript"
|
175
176
|
});
|
176
|
-
|
177
|
-
let
|
178
|
-
if (!
|
177
|
+
_ = new ResizeObserver(() => {
|
178
|
+
let U = requestIdleCallback(() => {
|
179
|
+
if (!U)
|
179
180
|
return;
|
180
|
-
const { height:
|
181
|
-
|
181
|
+
const { height: W, width: B } = a.getBoundingClientRect();
|
182
|
+
h.layout({ width: B, height: W }), U = void 0;
|
182
183
|
});
|
183
|
-
}),
|
184
|
+
}), _.observe(a);
|
184
185
|
let l;
|
185
|
-
c = new
|
186
|
-
|
187
|
-
l =
|
186
|
+
c = new G(), c.add(s.setEditorInstance(h)), c.add(
|
187
|
+
h.onDidFocusEditorWidget(() => {
|
188
|
+
l = n.forceEscape();
|
188
189
|
})
|
189
190
|
), c.add(
|
190
|
-
|
191
|
+
h.onDidBlurEditorWidget(() => {
|
191
192
|
l == null || l.dispose(), l = void 0;
|
192
193
|
})
|
193
194
|
), c.add(M(() => l == null ? void 0 : l.dispose()));
|
194
195
|
}
|
195
196
|
return () => {
|
196
|
-
|
197
|
+
_ && a && _.unobserve(a), c == null || c.dispose();
|
197
198
|
};
|
198
|
-
}, [s,
|
199
|
-
const o =
|
199
|
+
}, [s, n]);
|
200
|
+
const o = Me(r);
|
200
201
|
return /* @__PURE__ */ d.jsxs("div", { className: m.scriptEditorPanel, children: [
|
201
202
|
/* @__PURE__ */ d.jsx("div", { className: m.scriptEditorContent, ref: t, children: /* @__PURE__ */ d.jsx("div", { className: m.scriptEditorContainer, ref: e }) }),
|
202
|
-
/* @__PURE__ */ d.jsx("div", { className: m.scriptEditorActions, children: /* @__PURE__ */ d.jsx(
|
203
|
+
/* @__PURE__ */ d.jsx("div", { className: m.scriptEditorActions, children: /* @__PURE__ */ d.jsx(ve, { type: "primary", size: "small", onClick: o, children: i.t("script-panel.panel.execute") }) })
|
203
204
|
] });
|
204
205
|
}
|
205
|
-
function
|
206
|
-
const e = p(
|
207
|
-
return
|
206
|
+
function Me(t) {
|
207
|
+
const e = p(L), r = p(re), i = p(y);
|
208
|
+
return de(() => {
|
208
209
|
var s;
|
209
|
-
const
|
210
|
-
|
210
|
+
const n = (s = t.current) == null ? void 0 : s.getModel();
|
211
|
+
n && e.execute(n.getValue()).then(() => {
|
211
212
|
r.show({
|
212
|
-
content:
|
213
|
-
type:
|
213
|
+
content: i.t("uniscript.message.success"),
|
214
|
+
type: $.Success
|
214
215
|
});
|
215
216
|
}).catch(() => {
|
216
217
|
r.show({
|
217
|
-
content:
|
218
|
-
type:
|
218
|
+
content: i.t("uniscript.message.failed"),
|
219
|
+
type: $.Error
|
219
220
|
});
|
220
221
|
});
|
221
|
-
}, [
|
222
|
+
}, [i, r, t, e]);
|
222
223
|
}
|
223
|
-
function
|
224
|
+
function Te(t) {
|
224
225
|
return {
|
225
|
-
id:
|
226
|
+
id: N.id,
|
226
227
|
title: "toggle-script-panel",
|
227
228
|
tooltip: "script-panel.tooltip.menu-button",
|
228
229
|
icon: "CodeSingle",
|
229
|
-
type:
|
230
|
-
positions: [
|
230
|
+
type: ie.BUTTON,
|
231
|
+
positions: [ne.TOOLBAR_START],
|
231
232
|
// FIXME hidden$ and disabled$ are not correctly in doc
|
232
|
-
hidden$:
|
233
|
+
hidden$: se(t, J.UNIVER_SHEET)
|
233
234
|
// disabled$: getCurrentSheetDisabled$(accessor),
|
234
235
|
};
|
235
236
|
}
|
236
|
-
var
|
237
|
-
for (var
|
238
|
-
(o = t[s]) && (
|
239
|
-
return
|
240
|
-
},
|
241
|
-
|
242
|
-
|
243
|
-
|
237
|
+
var De = Object.defineProperty, Ne = Object.getOwnPropertyDescriptor, Ae = (t, e, r, i) => {
|
238
|
+
for (var n = i > 1 ? void 0 : i ? Ne(e, r) : e, s = t.length - 1, o; s >= 0; s--)
|
239
|
+
(o = t[s]) && (n = (i ? o(e, r, n) : o(n)) || n);
|
240
|
+
return i && n && De(e, r, n), n;
|
241
|
+
}, g = (t, e) => (r, i) => e(r, i, t);
|
242
|
+
const Fe = {};
|
243
|
+
let v = class extends S {
|
244
|
+
constructor(t, e, r, i, n) {
|
245
|
+
super(), this._config = t, this._injector = e, this._menuService = r;
|
246
|
+
const { menu: s = {} } = this._config;
|
247
|
+
this.disposeWithMe(r.addMenuItem(this._injector.invoke(Te), s)), this.disposeWithMe(n.register(D, Re)), this.disposeWithMe(i.registerCommand(N));
|
244
248
|
}
|
245
249
|
};
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
],
|
253
|
-
var
|
254
|
-
for (var
|
255
|
-
(o = t[s]) && (
|
256
|
-
return
|
257
|
-
}, w = (t, e) => (r,
|
258
|
-
const
|
259
|
-
var
|
260
|
-
let R = (
|
261
|
-
constructor(t, e, r) {
|
262
|
-
super(), this._config = t, this._injector = e, this._localeService = r;
|
250
|
+
v = Ae([
|
251
|
+
Y(K.Steady, v),
|
252
|
+
g(1, f(b)),
|
253
|
+
g(2, ce),
|
254
|
+
g(3, Q),
|
255
|
+
g(4, f(oe))
|
256
|
+
], v);
|
257
|
+
var Le = Object.defineProperty, We = Object.getOwnPropertyDescriptor, Be = (t, e, r, i) => {
|
258
|
+
for (var n = i > 1 ? void 0 : i ? We(e, r) : e, s = t.length - 1, o; s >= 0; s--)
|
259
|
+
(o = t[s]) && (n = (i ? o(e, r, n) : o(n)) || n);
|
260
|
+
return i && n && Le(e, r, n), n;
|
261
|
+
}, w = (t, e) => (r, i) => e(r, i, t);
|
262
|
+
const qe = "uniscript";
|
263
|
+
var P;
|
264
|
+
let R = (P = class extends X {
|
265
|
+
constructor(t = {}, e, r) {
|
266
|
+
super(), this._config = t, this._injector = e, this._localeService = r, this._config = Z.deepMerge({}, Fe, this._config);
|
263
267
|
}
|
264
268
|
onStarting(t) {
|
265
269
|
[
|
266
270
|
// controllers
|
267
|
-
[
|
271
|
+
[v, { useFactory: () => t.createInstance(v, this._config) }],
|
268
272
|
// services
|
269
|
-
[
|
270
|
-
[T]
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
273
|
+
[O, { useFactory: () => t.createInstance(O, this._config) }],
|
274
|
+
[T]
|
275
|
+
].forEach((r) => t.add(r)), this.registerExecution(), this._localeService.load({ zhCN: ge });
|
276
|
+
}
|
277
|
+
/**
|
278
|
+
* Allows being overridden, replacing with a new UniscriptExecutionService.
|
279
|
+
*/
|
280
|
+
registerExecution() {
|
281
|
+
this._injector.add([L, { useClass: I }]);
|
275
282
|
}
|
276
|
-
}, u(
|
277
|
-
R =
|
278
|
-
w(1,
|
279
|
-
w(2,
|
283
|
+
}, u(P, "pluginName", qe), P);
|
284
|
+
R = Be([
|
285
|
+
w(1, f(b)),
|
286
|
+
w(2, f(y))
|
280
287
|
], R);
|
281
288
|
export {
|
282
|
-
|
289
|
+
L as IUniscriptExecutionService,
|
290
|
+
O as ScriptEditorService,
|
283
291
|
R as UniverUniscriptPlugin,
|
284
|
-
|
285
|
-
|
286
|
-
|
292
|
+
ke as enUS,
|
293
|
+
et as ruRU,
|
294
|
+
ge as zhCN
|
287
295
|
};
|
@@ -1,8 +1,15 @@
|
|
1
1
|
import { Disposable, ICommandService } from '@univerjs/core';
|
2
|
-
import { ComponentManager, IMenuService } from '@univerjs/ui';
|
2
|
+
import { MenuConfig, ComponentManager, IMenuService } from '@univerjs/ui';
|
3
3
|
import { Injector } from '@wendellhu/redi';
|
4
4
|
|
5
|
+
export interface IUniverUniscriptConfig {
|
6
|
+
getWorkerUrl(moduleID: string, label: string): string;
|
7
|
+
menu: MenuConfig;
|
8
|
+
}
|
9
|
+
export declare const DefaultUniscriptConfig: {};
|
5
10
|
export declare class UniscriptController extends Disposable {
|
11
|
+
private readonly _config;
|
6
12
|
private readonly _injector;
|
7
|
-
|
13
|
+
private readonly _menuService;
|
14
|
+
constructor(_config: Partial<IUniverUniscriptConfig>, _injector: Injector, _menuService: IMenuService, commandService: ICommandService, componentManager: ComponentManager);
|
8
15
|
}
|
package/lib/types/index.d.ts
CHANGED
@@ -14,5 +14,6 @@
|
|
14
14
|
* limitations under the License.
|
15
15
|
*/
|
16
16
|
export { enUS, zhCN, ruRU } from './locale';
|
17
|
-
export {
|
17
|
+
export { UniverUniscriptPlugin } from './plugin';
|
18
18
|
export { ScriptEditorService } from './services/script-editor.service';
|
19
|
+
export { IUniscriptExecutionService } from './services/script-execution.service';
|
package/lib/types/plugin.d.ts
CHANGED
@@ -1,14 +1,16 @@
|
|
1
1
|
import { LocaleService, Plugin } from '@univerjs/core';
|
2
2
|
import { Injector } from '@wendellhu/redi';
|
3
|
-
import {
|
3
|
+
import { IUniverUniscriptConfig } from './controllers/uniscript.controller';
|
4
4
|
|
5
|
-
export interface IUniscriptConfig extends IScriptEditorServiceConfig {
|
6
|
-
}
|
7
5
|
export declare class UniverUniscriptPlugin extends Plugin {
|
8
6
|
private readonly _config;
|
9
7
|
protected _injector: Injector;
|
10
8
|
private readonly _localeService;
|
11
9
|
static pluginName: string;
|
12
|
-
constructor(_config:
|
10
|
+
constructor(_config: Partial<IUniverUniscriptConfig>, _injector: Injector, _localeService: LocaleService);
|
13
11
|
onStarting(injector: Injector): void;
|
12
|
+
/**
|
13
|
+
* Allows being overridden, replacing with a new UniscriptExecutionService.
|
14
|
+
*/
|
15
|
+
registerExecution(): void;
|
14
16
|
}
|
@@ -1,10 +1,8 @@
|
|
1
1
|
import { Disposable } from '@univerjs/core';
|
2
2
|
import { IDisposable } from '@wendellhu/redi';
|
3
3
|
import { editor } from 'monaco-editor';
|
4
|
+
import { IUniverUniscriptConfig } from '../controllers/uniscript.controller';
|
4
5
|
|
5
|
-
export interface IScriptEditorServiceConfig {
|
6
|
-
getWorkerUrl(moduleID: string, label: string): string;
|
7
|
-
}
|
8
6
|
/**
|
9
7
|
* This service is for loading monaco editor and its resources. It also holds the
|
10
8
|
* monaco editor instance so user can interact with the editor programmatically.
|
@@ -12,7 +10,7 @@ export interface IScriptEditorServiceConfig {
|
|
12
10
|
export declare class ScriptEditorService extends Disposable {
|
13
11
|
private readonly _config;
|
14
12
|
private _editorInstance;
|
15
|
-
constructor(_config:
|
13
|
+
constructor(_config: Partial<IUniverUniscriptConfig>);
|
16
14
|
setEditorInstance(editor: editor.IStandaloneCodeEditor): IDisposable;
|
17
15
|
getEditorInstance(): editor.IStandaloneCodeEditor | null;
|
18
16
|
requireVscodeEditor(): void;
|
@@ -1,10 +1,14 @@
|
|
1
1
|
import { Disposable, ILogService } from '@univerjs/core';
|
2
2
|
import { Injector } from '@wendellhu/redi';
|
3
3
|
|
4
|
+
export declare const IUniscriptExecutionService: import('@wendellhu/redi').IdentifierDecorator<IUniscriptExecutionService>;
|
5
|
+
export interface IUniscriptExecutionService {
|
6
|
+
execute(code: string): Promise<boolean>;
|
7
|
+
}
|
4
8
|
/**
|
5
|
-
* This service is to
|
9
|
+
* This service is to execute Uniscript code.
|
6
10
|
*/
|
7
|
-
export declare class UniscriptExecutionService extends Disposable {
|
11
|
+
export declare class UniscriptExecutionService extends Disposable implements IUniscriptExecutionService {
|
8
12
|
private readonly _logService;
|
9
13
|
private readonly _injector;
|
10
14
|
constructor(_logService: ILogService, _injector: Injector);
|
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,
|
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,u,w,v,U,f,q,W){"use strict";var de=Object.defineProperty;var ve=(c,s,p)=>s in c?de(c,s,{enumerable:!0,configurable:!0,writable:!0,value:p}):c[s]=p;var S=(c,s,p)=>(ve(c,typeof s!="symbol"?s+"":s,p),p);var b;const z={"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:"执行失败"}}},V={"script-panel":{title:"Юнискрипт",tooltip:{"menu-button":"Переключить панель Юнискрипт"},panel:{execute:"Выполнить скрипт"}},uniscript:{message:{success:"Выполнение успешно",failed:"Выполнение не удалось"}}};class D extends s.Disposable{constructor(){super(...arguments);S(this,"_open$",new w.BehaviorSubject(!1));S(this,"open$",this._open$.pipe(w.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 R="ScriptPanel",T={type:s.CommandType.OPERATION,id:"univer.operation.toggle-script-panel",handler:i=>{const e=i.get(D),n=i.get(u.ISidebarService);return e.isOpen?(e.close(),n.close()):(e.open(),n.open({header:{title:"script-panel.title"},children:{label:R},width:600})),!0}};var M={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 B=v,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 $(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)J.call(e,t)&&!K.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:H,type:i,key:o,ref:l,props:r,_owner:Y.current}}m.Fragment=G,m.jsx=$,m.jsxs=$,M.exports=m;var h=M.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 Q=Object.defineProperty,X=Object.getOwnPropertyDescriptor,Z=(i,e,n,t)=>{for(var r=t>1?void 0:t?X(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&&Q(e,n,r),r},N=(i,e)=>(n,t)=>e(n,t,i);const x=p.createIdentifier("univer.uniscript.execution-service");let O=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=W.FUniver.newAPI(this._injector),n=new Function("univerAPI",`(() => {${i}})()`);try{return n(e),!0}catch(t){return this._logService.error(t),!1}}};O=Z([N(0,s.ILogService),N(1,p.Inject(p.Injector))],O);const j={scriptEditorPanel:"univer-script-editor-panel",scriptEditorContent:"univer-script-editor-content",scriptEditorActions:"univer-script-editor-actions"};function k(){const i=v.useRef(null),e=v.useRef(null),n=v.useRef(null),t=f.useDependency(s.LocaleService),r=f.useDependency(u.IShortcutService),o=f.useDependency(E);v.useEffect(()=>{const F=e.current,g=i.current;let a=null,P=null;if(F&&g){o.requireVscodeEditor();const I=n.current=q.editor.create(F,{value:"",language:"javascript"});P=new ResizeObserver(()=>{let L=requestIdleCallback(()=>{if(!L)return;const{height:ue,width:ae}=g.getBoundingClientRect();I.layout({width:ae,height:ue}),L=void 0})}),P.observe(g);let d;a=new s.DisposableCollection,a.add(o.setEditorInstance(I)),a.add(I.onDidFocusEditorWidget(()=>{d=r.forceEscape()})),a.add(I.onDidBlurEditorWidget(()=>{d==null||d.dispose(),d=void 0})),a.add(s.toDisposable(()=>d==null?void 0:d.dispose()))}return()=>{P&&g&&P.unobserve(g),a==null||a.dispose()}},[o,r]);const l=ee(n);return h.jsxs("div",{className:j.scriptEditorPanel,children:[h.jsx("div",{className:j.scriptEditorContent,ref:i,children:h.jsx("div",{className:j.scriptEditorContainer,ref:e})}),h.jsx("div",{className:j.scriptEditorActions,children:h.jsx(U.Button,{type:"primary",size:"small",onClick:l,children:t.t("script-panel.panel.execute")})})]})}function ee(i){const e=f.useDependency(x),n=f.useDependency(u.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:U.MessageType.Success})}).catch(()=>{n.show({content:t.t("uniscript.message.failed"),type:U.MessageType.Error})})},[t,n,i,e])}function te(i){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(i,s.UniverInstanceType.UNIVER_SHEET)}}var ne=Object.defineProperty,ie=Object.getOwnPropertyDescriptor,re=(i,e,n,t)=>{for(var r=t>1?void 0:t?ie(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&&ne(e,n,r),r},y=(i,e)=>(n,t)=>e(n,t,i);const se={};let _=class extends s.Disposable{constructor(i,e,n,t,r){super(),this._config=i,this._injector=e,this._menuService=n;const{menu:o={}}=this._config;this.disposeWithMe(n.addMenuItem(this._injector.invoke(te),o)),this.disposeWithMe(r.register(R,k)),this.disposeWithMe(t.registerCommand(T))}};_=re([s.OnLifecycle(s.LifecycleStages.Steady,_),y(1,p.Inject(p.Injector)),y(2,u.IMenuService),y(3,s.ICommandService),y(4,p.Inject(u.ComponentManager))],_);var ce=Object.defineProperty,oe=Object.getOwnPropertyDescriptor,le=(i,e,n,t)=>{for(var r=t>1?void 0:t?oe(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&&ce(e,n,r),r},A=(i,e)=>(n,t)=>e(n,t,i);const pe="uniscript";c.UniverUniscriptPlugin=(b=class extends s.Plugin{constructor(e={},n,t){super(),this._config=e,this._injector=n,this._localeService=t,this._config=s.Tools.deepMerge({},se,this._config)}onStarting(e){[[_,{useFactory:()=>e.createInstance(_,this._config)}],[E,{useFactory:()=>e.createInstance(E,this._config)}],[D]].forEach(t=>e.add(t)),this.registerExecution(),this._localeService.load({zhCN:C})}registerExecution(){this._injector.add([x,{useClass:O}])}},S(b,"pluginName",pe),b),c.UniverUniscriptPlugin=le([A(1,p.Inject(p.Injector)),A(2,p.Inject(s.LocaleService))],c.UniverUniscriptPlugin),c.IUniscriptExecutionService=x,c.ScriptEditorService=E,c.enUS=z,c.ruRU=V,c.zhCN=C,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.12",
|
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": "
|
56
|
+
"@wendellhu/redi": "0.15.2",
|
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/facade": "0.1.
|
63
|
-
"@univerjs/ui": "0.1.
|
60
|
+
"@univerjs/core": "0.1.12",
|
61
|
+
"@univerjs/design": "0.1.12",
|
62
|
+
"@univerjs/facade": "0.1.12",
|
63
|
+
"@univerjs/ui": "0.1.12"
|
64
64
|
},
|
65
65
|
"devDependencies": {
|
66
66
|
"@types/react": "^18.2.79",
|
67
|
-
"@wendellhu/redi": "
|
67
|
+
"@wendellhu/redi": "0.15.2",
|
68
68
|
"less": "^4.2.0",
|
69
69
|
"monaco-editor": "0.48.0",
|
70
70
|
"rxjs": "^7.8.1",
|
71
71
|
"typescript": "^5.4.5",
|
72
72
|
"vite": "^5.2.11",
|
73
73
|
"vitest": "^1.6.0",
|
74
|
-
"@univerjs/
|
75
|
-
"@univerjs/
|
76
|
-
"@univerjs/
|
77
|
-
"@univerjs/ui": "0.1.
|
78
|
-
"@univerjs/shared": "0.1.
|
74
|
+
"@univerjs/core": "0.1.12",
|
75
|
+
"@univerjs/design": "0.1.12",
|
76
|
+
"@univerjs/facade": "0.1.12",
|
77
|
+
"@univerjs/ui": "0.1.12",
|
78
|
+
"@univerjs/shared": "0.1.12"
|
79
79
|
},
|
80
80
|
"scripts": {
|
81
81
|
"test": "vitest run",
|