@univerjs/uniscript 0.2.2 → 0.2.4-alpha.0
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +15 -10
- package/lib/cjs/index.js +2 -2
- package/lib/es/index.js +26 -28
- package/lib/locale/vi-VN.json +17 -0
- package/lib/locale/zh-TW.json +17 -0
- package/lib/types/controllers/menu.d.ts +1 -1
- package/lib/types/controllers/uniscript.controller.d.ts +1 -2
- package/lib/types/locale/vi-VN.d.ts +4 -0
- package/lib/types/locale/zh-TW.d.ts +4 -0
- package/lib/types/plugin.d.ts +1 -2
- package/lib/types/services/script-editor.service.d.ts +1 -2
- package/lib/types/services/script-execution.service.d.ts +2 -3
- package/lib/umd/index.js +2 -2
- package/package.json +17 -19
package/README.md
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
# @univerjs/uniscript
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
3
|
+
## Package Overview
|
4
|
+
|
5
|
+
| Package Name | UMD Namespace | Version | License | Downloads | Contains CSS | Contains i18n locales |
|
6
|
+
| --- | --- | --- | --- | --- | :---: | :---: |
|
7
|
+
| `@univerjs/uniscript` | `UniveUniscript` | [![][npm-version-shield]][npm-version-link] | ![][npm-license-shield] | ![][npm-downloads-shield] | ⭕️ | ⭕️ |
|
7
8
|
|
8
9
|
## Introduction
|
9
10
|
|
@@ -13,13 +14,11 @@
|
|
13
14
|
|
14
15
|
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
16
|
|
16
|
-
|
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
|
-
:::
|
17
|
+
> [!CAUTION]
|
18
|
+
> 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.
|
19
19
|
|
20
|
-
|
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
|
-
:::
|
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/sheet/facade/facade).
|
23
22
|
|
24
23
|
## Usage
|
25
24
|
|
@@ -54,3 +53,9 @@ export class YourModule {
|
|
54
53
|
}
|
55
54
|
}
|
56
55
|
```
|
56
|
+
|
57
|
+
<!-- Links -->
|
58
|
+
[npm-version-shield]: https://img.shields.io/npm/v/@univerjs/uniscript?style=flat-square
|
59
|
+
[npm-version-link]: https://npmjs.com/package/@univerjs/uniscript
|
60
|
+
[npm-license-shield]: https://img.shields.io/npm/l/@univerjs/uniscript?style=flat-square
|
61
|
+
[npm-downloads-shield]: https://img.shields.io/npm/dm/@univerjs/uniscript?style=flat-square
|
package/lib/cjs/index.js
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
"use strict";var
|
1
|
+
"use strict";var L=Object.defineProperty;var A=(r,e,t)=>e in r?L(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var v=(r,e,t)=>A(r,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("@univerjs/core"),p=require("@univerjs/ui"),w=require("rxjs"),u=require("react"),b=require("@univerjs/design"),F=require("monaco-editor"),B=require("@univerjs/facade"),V=require("@univerjs/sheets-ui"),_=require("@univerjs/sheets");class T extends s.Disposable{constructor(){super(...arguments);v(this,"_open$",new w.BehaviorSubject(!1));v(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",O={type:s.CommandType.OPERATION,id:"univer.operation.toggle-script-panel",handler:r=>{const e=r.get(T),t=r.get(p.ISidebarService);return e.isOpen?(e.close(),t.close()):(e.open(),t.open({header:{title:"script-panel.title"},children:{label:R},width:600})),!0}};var M={exports:{}},y={};/**
|
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=u,z=Symbol.for("react.element"),H=Symbol.for("react.fragment"),G=Object.prototype.hasOwnProperty,J=k.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,Y={key:!0,ref:!0,__self:!0,__source:!0};function q(r,e,t){var n,i={},o=null,c=null;t!==void 0&&(o=""+t),e.key!==void 0&&(o=""+e.key),e.ref!==void 0&&(c=e.ref);for(n in e)G.call(e,n)&&!Y.hasOwnProperty(n)&&(i[n]=e[n]);if(r&&r.defaultProps)for(n in e=r.defaultProps,e)i[n]===void 0&&(i[n]=e[n]);return{$$typeof:z,type:r,key:o,ref:c,props:i,_owner:J.current}}y.Fragment=H;y.jsx=q;y.jsxs=q;M.exports=y;var f=M.exports;class P extends s.Disposable{constructor(t){super();v(this,"_editorInstance",null);this._config=t}setEditorInstance(t){return this._editorInstance=t,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=(r,e,t,n)=>{for(var i=n>1?void 0:n?Q(e,t):e,o=r.length-1,c;o>=0;o--)(c=r[o])&&(i=(n?c(e,t,i):c(i))||i);return n&&i&&K(e,t,i),i},D=(r,e)=>(t,n)=>e(t,n,r);const j=s.createIdentifier("univer.uniscript.execution-service");let x=class extends s.Disposable{constructor(r,e){super(),this._logService=r,this._injector=e}async execute(r){this._logService.log("[UniscriptExecutionService]","executing Uniscript...");const e=B.FUniver.newAPI(this._injector),t=new Function("univerAPI",`(() => {${r}})()`);try{return t(e),!0}catch(n){return this._logService.error(n),!1}}};x=X([D(0,s.ILogService),D(1,s.Inject(s.Injector))],x);const Z="univer-script-editor-panel",ee="univer-script-editor-content",te="univer-script-editor-actions",E={scriptEditorPanel:Z,scriptEditorContent:ee,scriptEditorActions:te};function re(){const r=u.useRef(null),e=u.useRef(null),t=u.useRef(null),n=s.useDependency(s.LocaleService),i=s.useDependency(p.IShortcutService),o=s.useDependency(P);u.useEffect(()=>{const C=e.current,d=r.current;let l=null,g=null;if(C&&d){o.requireVscodeEditor();const S=t.current=F.editor.create(C,{value:"",language:"javascript"});g=new ResizeObserver(()=>{let U=requestIdleCallback(()=>{if(!U)return;const{height:N,width:W}=d.getBoundingClientRect();S.layout({width:W,height:N}),U=void 0})}),g.observe(d);let a;l=new s.DisposableCollection,l.add(o.setEditorInstance(S)),l.add(S.onDidFocusEditorWidget(()=>{a=i.forceEscape()})),l.add(S.onDidBlurEditorWidget(()=>{a==null||a.dispose(),a=void 0})),l.add(s.toDisposable(()=>a==null?void 0:a.dispose()))}return()=>{g&&d&&g.unobserve(d),l==null||l.dispose()}},[o,i]);const c=ne(t);return f.jsxs("div",{className:E.scriptEditorPanel,children:[f.jsx("div",{className:E.scriptEditorContent,ref:r,children:f.jsx("div",{className:E.scriptEditorContainer,ref:e})}),f.jsx("div",{className:E.scriptEditorActions,children:f.jsx(b.Button,{type:"primary",size:"small",onClick:c,children:n.t("script-panel.panel.execute")})})]})}function ne(r){const e=s.useDependency(j),t=s.useDependency(p.IMessageService),n=s.useDependency(s.LocaleService);return u.useCallback(()=>{var o;const i=(o=r.current)==null?void 0:o.getModel();i&&e.execute(i.getValue()).then(()=>{t.show({content:n.t("uniscript.message.success"),type:b.MessageType.Success})}).catch(()=>{t.show({content:n.t("uniscript.message.failed"),type:b.MessageType.Error})})},[n,t,r,e])}function ie(r){return{id:O.id,title:"toggle-script-panel",tooltip:"script-panel.tooltip.menu-button",icon:"CodeSingle",type:p.MenuItemType.BUTTON,positions:[p.MenuPosition.TOOLBAR_START],hidden$:p.getMenuHiddenObservable(r,s.UniverInstanceType.UNIVER_SHEET),disabled$:V.getCurrentRangeDisable$(r,{workbookTypes:[_.WorkbookEditablePermission],worksheetTypes:[_.WorksheetEditPermission,_.WorksheetSetCellStylePermission,_.WorksheetSetCellValuePermission],rangeTypes:[_.RangeProtectionPermissionEditPoint]})}}var se=Object.defineProperty,oe=Object.getOwnPropertyDescriptor,ce=(r,e,t,n)=>{for(var i=n>1?void 0:n?oe(e,t):e,o=r.length-1,c;o>=0;o--)(c=r[o])&&(i=(n?c(e,t,i):c(i))||i);return n&&i&&se(e,t,i),i},m=(r,e)=>(t,n)=>e(t,n,r);const le={};let h=class extends s.Disposable{constructor(r,e,t,n,i){super(),this._config=r,this._injector=e,this._menuService=t;const{menu:o={}}=this._config;this.disposeWithMe(t.addMenuItem(this._injector.invoke(ie),o)),this.disposeWithMe(i.register(R,re)),this.disposeWithMe(n.registerCommand(O))}};h=ce([s.OnLifecycle(s.LifecycleStages.Steady,h),m(1,s.Inject(s.Injector)),m(2,p.IMenuService),m(3,s.ICommandService),m(4,s.Inject(p.ComponentManager))],h);var ae=Object.defineProperty,pe=Object.getOwnPropertyDescriptor,ue=(r,e,t,n)=>{for(var i=n>1?void 0:n?pe(e,t):e,o=r.length-1,c;o>=0;o--)(c=r[o])&&(i=(n?c(e,t,i):c(i))||i);return n&&i&&ae(e,t,i),i},$=(r,e)=>(t,n)=>e(t,n,r);const de="uniscript";var I;exports.UniverUniscriptPlugin=(I=class extends s.Plugin{constructor(e={},t,n){super(),this._config=e,this._injector=t,this._localeService=n,this._config=s.Tools.deepMerge({},le,this._config)}onStarting(e){[[h,{useFactory:()=>e.createInstance(h,this._config)}],[P,{useFactory:()=>e.createInstance(P,this._config)}],[T]].forEach(n=>e.add(n)),this.registerExecution()}registerExecution(){this._injector.add([j,{useClass:x}])}},v(I,"pluginName",de),I);exports.UniverUniscriptPlugin=ue([$(1,s.Inject(s.Injector)),$(2,s.Inject(s.LocaleService))],exports.UniverUniscriptPlugin);exports.IUniscriptExecutionService=j;exports.ScriptEditorService=P;exports.ToggleScriptPanelOperation=O;
|
package/lib/es/index.js
CHANGED
@@ -1,17 +1,15 @@
|
|
1
1
|
var V = Object.defineProperty;
|
2
2
|
var q = (t, e, r) => e in t ? V(t, e, { enumerable: !0, configurable: !0, writable: !0, value: r }) : t[e] = r;
|
3
3
|
var u = (t, e, r) => q(t, typeof e != "symbol" ? e + "" : e, r);
|
4
|
-
import { Disposable as S, CommandType as k, toDisposable as U,
|
5
|
-
import { createIdentifier as Z, Inject as f, Injector as b } from "@wendellhu/redi";
|
4
|
+
import { Disposable as S, CommandType as k, toDisposable as U, createIdentifier as z, Inject as f, Injector as I, ILogService as H, useDependency as p, LocaleService as b, DisposableCollection as G, UniverInstanceType as J, OnLifecycle as Y, LifecycleStages as K, ICommandService as Q, Plugin as X, Tools as Z } from "@univerjs/core";
|
6
5
|
import { ISidebarService as ee, IShortcutService as te, IMessageService as re, MenuItemType as ie, MenuPosition as ne, getMenuHiddenObservable as oe, ComponentManager as se, IMenuService as ce } from "@univerjs/ui";
|
7
6
|
import { BehaviorSubject as le, distinctUntilChanged as pe } from "rxjs";
|
8
7
|
import ae, { useRef as P, useEffect as ue, useCallback as de } from "react";
|
9
8
|
import { Button as ve, MessageType as j } from "@univerjs/design";
|
10
|
-
import { useDependency as p } from "@wendellhu/redi/react-bindings";
|
11
9
|
import { editor as fe } from "monaco-editor";
|
12
10
|
import { FUniver as _e } from "@univerjs/facade";
|
13
|
-
import { getCurrentRangeDisable$ as
|
14
|
-
import { WorkbookEditablePermission as
|
11
|
+
import { getCurrentRangeDisable$ as he } from "@univerjs/sheets-ui";
|
12
|
+
import { WorkbookEditablePermission as me, WorksheetEditPermission as ge, WorksheetSetCellStylePermission as Se, WorksheetSetCellValuePermission as Ee, RangeProtectionPermissionEditPoint as Pe } from "@univerjs/sheets";
|
15
13
|
class M extends S {
|
16
14
|
constructor() {
|
17
15
|
super(...arguments);
|
@@ -89,7 +87,7 @@ var we = Object.defineProperty, je = Object.getOwnPropertyDescriptor, $e = (t, e
|
|
89
87
|
(s = t[o]) && (n = (i ? s(e, r, n) : s(n)) || n);
|
90
88
|
return i && n && we(e, r, n), n;
|
91
89
|
}, $ = (t, e) => (r, i) => e(r, i, t);
|
92
|
-
const F =
|
90
|
+
const F = z("univer.uniscript.execution-service");
|
93
91
|
let O = class extends S {
|
94
92
|
constructor(t, e) {
|
95
93
|
super(), this._logService = t, this._injector = e;
|
@@ -105,22 +103,22 @@ let O = class extends S {
|
|
105
103
|
}
|
106
104
|
};
|
107
105
|
O = $e([
|
108
|
-
$(0,
|
109
|
-
$(1, f(
|
106
|
+
$(0, H),
|
107
|
+
$(1, f(I))
|
110
108
|
], O);
|
111
|
-
const Re = "univer-script-editor-panel", Te = "univer-script-editor-content", Ue = "univer-script-editor-actions",
|
109
|
+
const Re = "univer-script-editor-panel", Te = "univer-script-editor-content", Ue = "univer-script-editor-actions", m = {
|
112
110
|
scriptEditorPanel: Re,
|
113
111
|
scriptEditorContent: Te,
|
114
112
|
scriptEditorActions: Ue
|
115
113
|
};
|
116
114
|
function Me() {
|
117
|
-
const t = P(null), e = P(null), r = P(null), i = p(
|
115
|
+
const t = P(null), e = P(null), r = P(null), i = p(b), n = p(te), o = p(x);
|
118
116
|
ue(() => {
|
119
117
|
const C = e.current, a = t.current;
|
120
118
|
let c = null, _ = null;
|
121
119
|
if (C && a) {
|
122
120
|
o.requireVscodeEditor();
|
123
|
-
const
|
121
|
+
const h = r.current = fe.create(C, {
|
124
122
|
value: "",
|
125
123
|
language: "javascript"
|
126
124
|
});
|
@@ -128,16 +126,16 @@ function Me() {
|
|
128
126
|
let w = requestIdleCallback(() => {
|
129
127
|
if (!w) return;
|
130
128
|
const { height: L, width: B } = a.getBoundingClientRect();
|
131
|
-
|
129
|
+
h.layout({ width: B, height: L }), w = void 0;
|
132
130
|
});
|
133
131
|
}), _.observe(a);
|
134
132
|
let l;
|
135
|
-
c = new
|
136
|
-
|
133
|
+
c = new G(), c.add(o.setEditorInstance(h)), c.add(
|
134
|
+
h.onDidFocusEditorWidget(() => {
|
137
135
|
l = n.forceEscape();
|
138
136
|
})
|
139
137
|
), c.add(
|
140
|
-
|
138
|
+
h.onDidBlurEditorWidget(() => {
|
141
139
|
l == null || l.dispose(), l = void 0;
|
142
140
|
})
|
143
141
|
), c.add(U(() => l == null ? void 0 : l.dispose()));
|
@@ -147,13 +145,13 @@ function Me() {
|
|
147
145
|
};
|
148
146
|
}, [o, n]);
|
149
147
|
const s = De(r);
|
150
|
-
return /* @__PURE__ */ d.jsxs("div", { className:
|
151
|
-
/* @__PURE__ */ d.jsx("div", { className:
|
152
|
-
/* @__PURE__ */ d.jsx("div", { className:
|
148
|
+
return /* @__PURE__ */ d.jsxs("div", { className: m.scriptEditorPanel, children: [
|
149
|
+
/* @__PURE__ */ d.jsx("div", { className: m.scriptEditorContent, ref: t, children: /* @__PURE__ */ d.jsx("div", { className: m.scriptEditorContainer, ref: e }) }),
|
150
|
+
/* @__PURE__ */ d.jsx("div", { className: m.scriptEditorActions, children: /* @__PURE__ */ d.jsx(ve, { type: "primary", size: "small", onClick: s, children: i.t("script-panel.panel.execute") }) })
|
153
151
|
] });
|
154
152
|
}
|
155
153
|
function De(t) {
|
156
|
-
const e = p(F), r = p(re), i = p(
|
154
|
+
const e = p(F), r = p(re), i = p(b);
|
157
155
|
return de(() => {
|
158
156
|
var o;
|
159
157
|
const n = (o = t.current) == null ? void 0 : o.getModel();
|
@@ -179,8 +177,8 @@ function Ne(t) {
|
|
179
177
|
type: ie.BUTTON,
|
180
178
|
positions: [ne.TOOLBAR_START],
|
181
179
|
// FIXME hidden$ and disabled$ are not correctly in doc
|
182
|
-
hidden$: oe(t,
|
183
|
-
disabled$:
|
180
|
+
hidden$: oe(t, J.UNIVER_SHEET),
|
181
|
+
disabled$: he(t, { workbookTypes: [me], worksheetTypes: [ge, Se, Ee], rangeTypes: [Pe] })
|
184
182
|
};
|
185
183
|
}
|
186
184
|
var We = Object.defineProperty, Ae = Object.getOwnPropertyDescriptor, Fe = (t, e, r, i) => {
|
@@ -197,10 +195,10 @@ let v = class extends S {
|
|
197
195
|
}
|
198
196
|
};
|
199
197
|
v = Fe([
|
200
|
-
|
201
|
-
g(1, f(
|
198
|
+
Y(K.Steady, v),
|
199
|
+
g(1, f(I)),
|
202
200
|
g(2, ce),
|
203
|
-
g(3,
|
201
|
+
g(3, Q),
|
204
202
|
g(4, f(se))
|
205
203
|
], v);
|
206
204
|
var Be = Object.defineProperty, Ve = Object.getOwnPropertyDescriptor, qe = (t, e, r, i) => {
|
@@ -210,9 +208,9 @@ var Be = Object.defineProperty, Ve = Object.getOwnPropertyDescriptor, qe = (t, e
|
|
210
208
|
}, R = (t, e) => (r, i) => e(r, i, t);
|
211
209
|
const ke = "uniscript";
|
212
210
|
var y;
|
213
|
-
let T = (y = class extends
|
211
|
+
let T = (y = class extends X {
|
214
212
|
constructor(t = {}, e, r) {
|
215
|
-
super(), this._config = t, this._injector = e, this._localeService = r, this._config =
|
213
|
+
super(), this._config = t, this._injector = e, this._localeService = r, this._config = Z.deepMerge({}, Le, this._config);
|
216
214
|
}
|
217
215
|
onStarting(t) {
|
218
216
|
[
|
@@ -231,8 +229,8 @@ let T = (y = class extends Q {
|
|
231
229
|
}
|
232
230
|
}, u(y, "pluginName", ke), y);
|
233
231
|
T = qe([
|
234
|
-
R(1, f(
|
235
|
-
R(2, f(
|
232
|
+
R(1, f(I)),
|
233
|
+
R(2, f(b))
|
236
234
|
], T);
|
237
235
|
export {
|
238
236
|
F as IUniscriptExecutionService,
|
@@ -0,0 +1,17 @@
|
|
1
|
+
{
|
2
|
+
"script-panel": {
|
3
|
+
"title": "Uniscript",
|
4
|
+
"tooltip": {
|
5
|
+
"menu-button": "Mở/Thu gọn bảng điều khiển Uniscript"
|
6
|
+
},
|
7
|
+
"panel": {
|
8
|
+
"execute": "Thực thi Uniscript"
|
9
|
+
}
|
10
|
+
},
|
11
|
+
"uniscript": {
|
12
|
+
"message": {
|
13
|
+
"success": "Thực thi thành công",
|
14
|
+
"failed": "Thực thi thất bại"
|
15
|
+
}
|
16
|
+
}
|
17
|
+
}
|
@@ -1,6 +1,5 @@
|
|
1
|
-
import { Disposable, ICommandService } from '@univerjs/core';
|
1
|
+
import { Disposable, ICommandService, Injector } from '@univerjs/core';
|
2
2
|
import { MenuConfig, ComponentManager, IMenuService } from '@univerjs/ui';
|
3
|
-
import { Injector } from '@wendellhu/redi';
|
4
3
|
|
5
4
|
export interface IUniverUniscriptConfig {
|
6
5
|
getWorkerUrl(moduleID: string, label: string): string;
|
package/lib/types/plugin.d.ts
CHANGED
@@ -1,5 +1,4 @@
|
|
1
|
-
import { LocaleService, Plugin } from '@univerjs/core';
|
2
|
-
import { Injector } from '@wendellhu/redi';
|
1
|
+
import { Injector, LocaleService, Plugin } from '@univerjs/core';
|
3
2
|
import { IUniverUniscriptConfig } from './controllers/uniscript.controller';
|
4
3
|
|
5
4
|
export declare class UniverUniscriptPlugin extends Plugin {
|
@@ -1,5 +1,4 @@
|
|
1
|
-
import { Disposable } from '@univerjs/core';
|
2
|
-
import { IDisposable } from '@wendellhu/redi';
|
1
|
+
import { Disposable, IDisposable } from '@univerjs/core';
|
3
2
|
import { editor } from 'monaco-editor';
|
4
3
|
import { IUniverUniscriptConfig } from '../controllers/uniscript.controller';
|
5
4
|
|
@@ -1,7 +1,6 @@
|
|
1
|
-
import { Disposable, ILogService } from '@univerjs/core';
|
2
|
-
import { Injector } from '@wendellhu/redi';
|
1
|
+
import { Disposable, ILogService, Injector } from '@univerjs/core';
|
3
2
|
|
4
|
-
export declare const IUniscriptExecutionService: import('@
|
3
|
+
export declare const IUniscriptExecutionService: import('@univerjs/core').IdentifierDecorator<IUniscriptExecutionService>;
|
5
4
|
export interface IUniscriptExecutionService {
|
6
5
|
execute(code: string): Promise<boolean>;
|
7
6
|
}
|
package/lib/umd/index.js
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
(function(o,
|
1
|
+
(function(o,t){typeof exports=="object"&&typeof module<"u"?t(exports,require("@univerjs/core"),require("@univerjs/ui"),require("rxjs"),require("react"),require("@univerjs/design"),require("monaco-editor"),require("@univerjs/facade"),require("@univerjs/sheets-ui"),require("@univerjs/sheets")):typeof define=="function"&&define.amd?define(["exports","@univerjs/core","@univerjs/ui","rxjs","react","@univerjs/design","monaco-editor","@univerjs/facade","@univerjs/sheets-ui","@univerjs/sheets"],t):(o=typeof globalThis<"u"?globalThis:o||self,t(o.UniverUniscript={},o.UniverCore,o.UniverUi,o.rxjs,o.React,o.UniverDesign,o.monaco,o.UniverFacade,o.UniverSheetsUi,o.UniverSheets))})(this,function(o,t,a,b,d,I,A,L,F,v){"use strict";var ae=Object.defineProperty;var ue=(o,t,a)=>t in o?ae(o,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):o[t]=a;var g=(o,t,a)=>ue(o,typeof t!="symbol"?t+"":t,a);var C;class D extends t.Disposable{constructor(){super(...arguments);g(this,"_open$",new b.BehaviorSubject(!1));g(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 w="ScriptPanel",O={type:t.CommandType.OPERATION,id:"univer.operation.toggle-script-panel",handler:r=>{const e=r.get(D),i=r.get(a.ISidebarService);return e.isOpen?(e.close(),i.close()):(e.open(),i.open({header:{title:"script-panel.title"},children:{label:w},width:600})),!0}};var T={exports:{}},S={};/**
|
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,B=Symbol.for("react.element"),V=Symbol.for("react.fragment"),k=Object.prototype.hasOwnProperty,z=q.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,H={key:!0,ref:!0,__self:!0,__source:!0};function R(r,e,i){var n,s={},c=null,p=null;i!==void 0&&(c=""+i),e.key!==void 0&&(c=""+e.key),e.ref!==void 0&&(p=e.ref);for(n in e)k.call(e,n)&&!H.hasOwnProperty(n)&&(s[n]=e[n]);if(r&&r.defaultProps)for(n in e=r.defaultProps,e)s[n]===void 0&&(s[n]=e[n]);return{$$typeof:B,type:r,key:c,ref:p,props:s,_owner:z.current}}S.Fragment=V,S.jsx=R,S.jsxs=R,T.exports=S;var f=T.exports;class m extends t.Disposable{constructor(i){super();g(this,"_editorInstance",null);this._config=i}setEditorInstance(i){return this._editorInstance=i,t.toDisposable(()=>this._editorInstance=null)}getEditorInstance(){return this._editorInstance}requireVscodeEditor(){window.MonacoEnvironment||(window.MonacoEnvironment={getWorkerUrl:this._config.getWorkerUrl})}}var G=Object.defineProperty,J=Object.getOwnPropertyDescriptor,Y=(r,e,i,n)=>{for(var s=n>1?void 0:n?J(e,i):e,c=r.length-1,p;c>=0;c--)(p=r[c])&&(s=(n?p(e,i,s):p(s))||s);return n&&s&&G(e,i,s),s},M=(r,e)=>(i,n)=>e(i,n,r);const U=t.createIdentifier("univer.uniscript.execution-service");let x=class extends t.Disposable{constructor(r,e){super(),this._logService=r,this._injector=e}async execute(r){this._logService.log("[UniscriptExecutionService]","executing Uniscript...");const e=L.FUniver.newAPI(this._injector),i=new Function("univerAPI",`(() => {${r}})()`);try{return i(e),!0}catch(n){return this._logService.error(n),!1}}};x=Y([M(0,t.ILogService),M(1,t.Inject(t.Injector))],x);const E={scriptEditorPanel:"univer-script-editor-panel",scriptEditorContent:"univer-script-editor-content",scriptEditorActions:"univer-script-editor-actions"};function K(){const r=d.useRef(null),e=d.useRef(null),i=d.useRef(null),n=t.useDependency(t.LocaleService),s=t.useDependency(a.IShortcutService),c=t.useDependency(m);d.useEffect(()=>{const $=e.current,h=r.current;let u=null,j=null;if($&&h){c.requireVscodeEditor();const y=i.current=A.editor.create($,{value:"",language:"javascript"});j=new ResizeObserver(()=>{let W=requestIdleCallback(()=>{if(!W)return;const{height:ce,width:pe}=h.getBoundingClientRect();y.layout({width:pe,height:ce}),W=void 0})}),j.observe(h);let l;u=new t.DisposableCollection,u.add(c.setEditorInstance(y)),u.add(y.onDidFocusEditorWidget(()=>{l=s.forceEscape()})),u.add(y.onDidBlurEditorWidget(()=>{l==null||l.dispose(),l=void 0})),u.add(t.toDisposable(()=>l==null?void 0:l.dispose()))}return()=>{j&&h&&j.unobserve(h),u==null||u.dispose()}},[c,s]);const p=Q(i);return f.jsxs("div",{className:E.scriptEditorPanel,children:[f.jsx("div",{className:E.scriptEditorContent,ref:r,children:f.jsx("div",{className:E.scriptEditorContainer,ref:e})}),f.jsx("div",{className:E.scriptEditorActions,children:f.jsx(I.Button,{type:"primary",size:"small",onClick:p,children:n.t("script-panel.panel.execute")})})]})}function Q(r){const e=t.useDependency(U),i=t.useDependency(a.IMessageService),n=t.useDependency(t.LocaleService);return d.useCallback(()=>{var c;const s=(c=r.current)==null?void 0:c.getModel();s&&e.execute(s.getValue()).then(()=>{i.show({content:n.t("uniscript.message.success"),type:I.MessageType.Success})}).catch(()=>{i.show({content:n.t("uniscript.message.failed"),type:I.MessageType.Error})})},[n,i,r,e])}function X(r){return{id:O.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(r,t.UniverInstanceType.UNIVER_SHEET),disabled$:F.getCurrentRangeDisable$(r,{workbookTypes:[v.WorkbookEditablePermission],worksheetTypes:[v.WorksheetEditPermission,v.WorksheetSetCellStylePermission,v.WorksheetSetCellValuePermission],rangeTypes:[v.RangeProtectionPermissionEditPoint]})}}var Z=Object.defineProperty,ee=Object.getOwnPropertyDescriptor,te=(r,e,i,n)=>{for(var s=n>1?void 0:n?ee(e,i):e,c=r.length-1,p;c>=0;c--)(p=r[c])&&(s=(n?p(e,i,s):p(s))||s);return n&&s&&Z(e,i,s),s},P=(r,e)=>(i,n)=>e(i,n,r);const ne={};let _=class extends t.Disposable{constructor(r,e,i,n,s){super(),this._config=r,this._injector=e,this._menuService=i;const{menu:c={}}=this._config;this.disposeWithMe(i.addMenuItem(this._injector.invoke(X),c)),this.disposeWithMe(s.register(w,K)),this.disposeWithMe(n.registerCommand(O))}};_=te([t.OnLifecycle(t.LifecycleStages.Steady,_),P(1,t.Inject(t.Injector)),P(2,a.IMenuService),P(3,t.ICommandService),P(4,t.Inject(a.ComponentManager))],_);var ie=Object.defineProperty,re=Object.getOwnPropertyDescriptor,se=(r,e,i,n)=>{for(var s=n>1?void 0:n?re(e,i):e,c=r.length-1,p;c>=0;c--)(p=r[c])&&(s=(n?p(e,i,s):p(s))||s);return n&&s&&ie(e,i,s),s},N=(r,e)=>(i,n)=>e(i,n,r);const oe="uniscript";o.UniverUniscriptPlugin=(C=class extends t.Plugin{constructor(e={},i,n){super(),this._config=e,this._injector=i,this._localeService=n,this._config=t.Tools.deepMerge({},ne,this._config)}onStarting(e){[[_,{useFactory:()=>e.createInstance(_,this._config)}],[m,{useFactory:()=>e.createInstance(m,this._config)}],[D]].forEach(n=>e.add(n)),this.registerExecution()}registerExecution(){this._injector.add([U,{useClass:x}])}},g(C,"pluginName",oe),C),o.UniverUniscriptPlugin=se([N(1,t.Inject(t.Injector)),N(2,t.Inject(t.LocaleService))],o.UniverUniscriptPlugin),o.IUniscriptExecutionService=U,o.ScriptEditorService=m,o.ToggleScriptPanelOperation=O,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.2.
|
3
|
+
"version": "0.2.4-alpha.0",
|
4
4
|
"private": false,
|
5
5
|
"description": "UI component library for building exceptional Univer.",
|
6
6
|
"author": "DreamNum <developer@univer.ai>",
|
@@ -50,36 +50,34 @@
|
|
50
50
|
"lib"
|
51
51
|
],
|
52
52
|
"peerDependencies": {
|
53
|
-
"@wendellhu/redi": "0.15.5",
|
54
53
|
"monaco-editor": ">=0.44.0",
|
55
54
|
"react": "^16.9.0 || ^17.0.0 || ^18.0.0",
|
56
55
|
"rxjs": ">=7.0.0",
|
57
|
-
"@univerjs/core": "0.2.
|
58
|
-
"@univerjs/design": "0.2.
|
59
|
-
"@univerjs/
|
60
|
-
"@univerjs/
|
61
|
-
"@univerjs/
|
62
|
-
"@univerjs/ui": "0.2.
|
56
|
+
"@univerjs/core": "0.2.4-alpha.0",
|
57
|
+
"@univerjs/design": "0.2.4-alpha.0",
|
58
|
+
"@univerjs/sheets": "0.2.4-alpha.0",
|
59
|
+
"@univerjs/facade": "0.2.4-alpha.0",
|
60
|
+
"@univerjs/ui": "0.2.4-alpha.0",
|
61
|
+
"@univerjs/sheets-ui": "0.2.4-alpha.0"
|
63
62
|
},
|
64
63
|
"dependencies": {
|
65
|
-
"@univerjs/protocol": "0.1.38-alpha.
|
64
|
+
"@univerjs/protocol": "0.1.38-alpha.23"
|
66
65
|
},
|
67
66
|
"devDependencies": {
|
68
67
|
"@types/react": "^18.3.3",
|
69
|
-
"@wendellhu/redi": "0.15.5",
|
70
68
|
"less": "^4.2.0",
|
71
69
|
"monaco-editor": "0.50.0",
|
72
70
|
"rxjs": "^7.8.1",
|
73
71
|
"typescript": "^5.5.3",
|
74
|
-
"vite": "^5.3.
|
75
|
-
"vitest": "^
|
76
|
-
"@univerjs/core": "0.2.
|
77
|
-
"@univerjs/
|
78
|
-
"@univerjs/
|
79
|
-
"@univerjs/shared": "0.2.
|
80
|
-
"@univerjs/sheets": "0.2.
|
81
|
-
"@univerjs/sheets-ui": "0.2.
|
82
|
-
"@univerjs/ui": "0.2.
|
72
|
+
"vite": "^5.3.4",
|
73
|
+
"vitest": "^2.0.3",
|
74
|
+
"@univerjs/core": "0.2.4-alpha.0",
|
75
|
+
"@univerjs/facade": "0.2.4-alpha.0",
|
76
|
+
"@univerjs/design": "0.2.4-alpha.0",
|
77
|
+
"@univerjs/shared": "0.2.4-alpha.0",
|
78
|
+
"@univerjs/sheets": "0.2.4-alpha.0",
|
79
|
+
"@univerjs/sheets-ui": "0.2.4-alpha.0",
|
80
|
+
"@univerjs/ui": "0.2.4-alpha.0"
|
83
81
|
},
|
84
82
|
"univerSpace": {
|
85
83
|
".": {
|