@univerjs/uniscript 0.1.10 → 0.1.12

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