@univerjs/uniscript 0.1.11 → 0.1.13

Sign up to get free protection for your applications and to get access to all the features.
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"),a=require("@wendellhu/redi"),u=require("@univerjs/ui"),$=require("rxjs"),d=require("react"),b=require("@univerjs/design"),v=require("@wendellhu/redi/react-bindings"),W=require("monaco-editor"),z=require("@univerjs/facade"),V={"script-panel":{title:"Uniscript",tooltip:{"menu-button":"Toggle Uniscript Panel"},panel:{execute:"Execute Script"}},uniscript:{message:{success:"Execution Success",failed:"Execution Failed"}}},H=V,G={"script-panel":{title:"Uniscript",tooltip:{"menu-button":"打开收起 Uniscript 面板"},panel:{execute:"执行 Uniscript"}},uniscript:{message:{success:"执行成功",failed:"执行失败"}}},D=G,J={"script-panel":{title:"Юнискрипт",tooltip:{"menu-button":"Переключить панель Юнискрипт"},panel:{execute:"Выполнить скрипт"}},uniscript:{message:{success:"Выполнение успешно",failed:"Выполнение не удалось"}}},Y=J;class R extends c.Disposable{constructor(){super(...arguments);f(this,"_open$",new $.BehaviorSubject(!1));f(this,"open$",this._open$.pipe($.distinctUntilChanged()))}get isOpen(){return this._open$.getValue()}dispose(){super.dispose(),this._open$.next(!1),this._open$.complete()}open(){this._open$.next(!0)}close(){this._open$.next(!1)}}const M="ScriptPanel",T={type:c.CommandType.OPERATION,id:"univer.operation.toggle-script-panel",handler:n=>{const e=n.get(R),t=n.get(u.ISidebarService);return e.isOpen?(e.close(),t.close()):(e.open(),t.open({header:{title:"script-panel.title"},children:{label:M},width:600})),!0}};var N={exports:{}},I={};/**
1
+ "use strict";var F=Object.defineProperty;var B=(r,e,t)=>e in r?F(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var f=(r,e,t)=>(B(r,typeof e!="symbol"?e+"":e,t),t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("@univerjs/core"),l=require("@wendellhu/redi"),u=require("@univerjs/ui"),D=require("rxjs"),d=require("react"),O=require("@univerjs/design"),v=require("@wendellhu/redi/react-bindings"),V=require("monaco-editor"),k=require("@univerjs/facade"),z=require("@univerjs/sheets-ui"),h=require("@univerjs/sheets");class T extends o.Disposable{constructor(){super(...arguments);f(this,"_open$",new D.BehaviorSubject(!1));f(this,"open$",this._open$.pipe(D.distinctUntilChanged()))}get isOpen(){return this._open$.getValue()}dispose(){super.dispose(),this._open$.next(!1),this._open$.complete()}open(){this._open$.next(!0)}close(){this._open$.next(!1)}}const M="ScriptPanel",q={type:o.CommandType.OPERATION,id:"univer.operation.toggle-script-panel",handler:r=>{const e=r.get(T),t=r.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:{}},b={};/**
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 K=d,Q=Symbol.for("react.element"),X=Symbol.for("react.fragment"),Z=Object.prototype.hasOwnProperty,k=K.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,ee={key:!0,ref:!0,__self:!0,__source:!0};function q(n,e,t){var r,i={},s=null,o=null;t!==void 0&&(s=""+t),e.key!==void 0&&(s=""+e.key),e.ref!==void 0&&(o=e.ref);for(r in e)Z.call(e,r)&&!ee.hasOwnProperty(r)&&(i[r]=e[r]);if(n&&n.defaultProps)for(r in e=n.defaultProps,e)i[r]===void 0&&(i[r]=e[r]);return{$$typeof:Q,type:n,key:s,ref:o,props:i,_owner:k.current}}I.Fragment=X;I.jsx=q;I.jsxs=q;N.exports=I;var g=N.exports;class y extends c.Disposable{constructor(t){super();f(this,"_editorInstance",null);this._config=t}setEditorInstance(t){return this._editorInstance=t,c.toDisposable(()=>this._editorInstance=null)}getEditorInstance(){return this._editorInstance}requireVscodeEditor(){window.MonacoEnvironment||(window.MonacoEnvironment={getWorkerUrl:this._config.getWorkerUrl})}}var te=Object.defineProperty,ne=Object.getOwnPropertyDescriptor,re=(n,e,t,r)=>{for(var i=r>1?void 0:r?ne(e,t):e,s=n.length-1,o;s>=0;s--)(o=n[s])&&(i=(r?o(e,t,i):o(i))||i);return r&&i&&te(e,t,i),i},C=(n,e)=>(t,r)=>e(t,r,n);let x=class extends c.Disposable{constructor(n,e){super(),this._logService=n,this._injector=e}async execute(n){this._logService.log("[UniscriptExecutionService]","executing Uniscript...");const e=z.FUniver.newAPI(this._injector),t=new Function("univerAPI",`(() => {${n}})()`);try{return t(e),!0}catch(r){return this._logService.error(r),!1}}};x=re([C(0,c.ILogService),C(1,a.Inject(a.Injector))],x);const ie="univer-script-editor-panel",se="univer-script-editor-content",ce="univer-script-editor-actions",m={scriptEditorPanel:ie,scriptEditorContent:se,scriptEditorActions:ce};function oe(){const n=d.useRef(null),e=d.useRef(null),t=d.useRef(null),r=v.useDependency(c.LocaleService),i=v.useDependency(u.IShortcutService),s=v.useDependency(y);d.useEffect(()=>{const j=e.current,_=n.current;let l=null,h=null;if(j&&_){s.requireVscodeEditor();const S=t.current=W.editor.create(j,{value:"",language:"javascript"});h=new ResizeObserver(()=>{let U=requestIdleCallback(()=>{if(!U)return;const{height:L,width:A}=_.getBoundingClientRect();S.layout({width:A,height:L}),U=void 0})}),h.observe(_);let p;l=new c.DisposableCollection,l.add(s.setEditorInstance(S)),l.add(S.onDidFocusEditorWidget(()=>{p=i.forceEscape()})),l.add(S.onDidBlurEditorWidget(()=>{p==null||p.dispose(),p=void 0})),l.add(c.toDisposable(()=>p==null?void 0:p.dispose()))}return()=>{h&&_&&h.unobserve(_),l==null||l.dispose()}},[s,i]);const o=le(t);return g.jsxs("div",{className:m.scriptEditorPanel,children:[g.jsx("div",{className:m.scriptEditorContent,ref:n,children:g.jsx("div",{className:m.scriptEditorContainer,ref:e})}),g.jsx("div",{className:m.scriptEditorActions,children:g.jsx(b.Button,{type:"primary",size:"small",onClick:o,children:r.t("script-panel.panel.execute")})})]})}function le(n){const e=v.useDependency(x),t=v.useDependency(u.IMessageService),r=v.useDependency(c.LocaleService);return d.useCallback(()=>{var s;const i=(s=n.current)==null?void 0:s.getModel();i&&e.execute(i.getValue()).then(()=>{t.show({content:r.t("uniscript.message.success"),type:b.MessageType.Success})}).catch(()=>{t.show({content:r.t("uniscript.message.failed"),type:b.MessageType.Error})})},[r,t,n,e])}function pe(n){return{id:T.id,title:"toggle-script-panel",tooltip:"script-panel.tooltip.menu-button",icon:"CodeSingle",type:u.MenuItemType.BUTTON,positions:[u.MenuPosition.TOOLBAR_START],hidden$:u.getMenuHiddenObservable(n,c.UniverInstanceType.UNIVER_SHEET)}}var ae=Object.defineProperty,ue=Object.getOwnPropertyDescriptor,de=(n,e,t,r)=>{for(var i=r>1?void 0:r?ue(e,t):e,s=n.length-1,o;s>=0;s--)(o=n[s])&&(i=(r?o(e,t,i):o(i))||i);return r&&i&&ae(e,t,i),i},E=(n,e)=>(t,r)=>e(t,r,n);let P=class extends c.Disposable{constructor(n,e,t,r){super(),this._injector=n,this.disposeWithMe(e.addMenuItem(this._injector.invoke(pe))),this.disposeWithMe(r.register(M,oe)),this.disposeWithMe(t.registerCommand(T))}};P=de([c.OnLifecycle(c.LifecycleStages.Steady,P),E(0,a.Inject(a.Injector)),E(1,u.IMenuService),E(2,c.ICommandService),E(3,a.Inject(u.ComponentManager))],P);var ve=Object.defineProperty,_e=Object.getOwnPropertyDescriptor,fe=(n,e,t,r)=>{for(var i=r>1?void 0:r?_e(e,t):e,s=n.length-1,o;s>=0;s--)(o=n[s])&&(i=(r?o(e,t,i):o(i))||i);return r&&i&&ve(e,t,i),i},w=(n,e)=>(t,r)=>e(t,r,n);const ge="uniscript";var O;exports.UniverUniscriptPlugin=(O=class extends c.Plugin{constructor(e,t,r){super(),this._config=e,this._injector=t,this._localeService=r}onStarting(e){[[P],[y,{useFactory:()=>e.createInstance(y,this._config)}],[R],[x]].forEach(r=>e.add(r)),this._localeService.load({zhCN:D})}},f(O,"pluginName",ge),O);exports.UniverUniscriptPlugin=fe([w(1,a.Inject(a.Injector)),w(2,a.Inject(c.LocaleService))],exports.UniverUniscriptPlugin);exports.ScriptEditorService=y;exports.enUS=H;exports.ruRU=Y;exports.zhCN=D;
9
+ */var H=d,G=Symbol.for("react.element"),J=Symbol.for("react.fragment"),Y=Object.prototype.hasOwnProperty,K=H.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,Q={key:!0,ref:!0,__self:!0,__source:!0};function W(r,e,t){var n,i={},s=null,c=null;t!==void 0&&(s=""+t),e.key!==void 0&&(s=""+e.key),e.ref!==void 0&&(c=e.ref);for(n in e)Y.call(e,n)&&!Q.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:G,type:r,key:s,ref:c,props:i,_owner:K.current}}b.Fragment=J;b.jsx=W;b.jsxs=W;N.exports=b;var g=N.exports;class I extends o.Disposable{constructor(t){super();f(this,"_editorInstance",null);this._config=t}setEditorInstance(t){return this._editorInstance=t,o.toDisposable(()=>this._editorInstance=null)}getEditorInstance(){return this._editorInstance}requireVscodeEditor(){window.MonacoEnvironment||(window.MonacoEnvironment={getWorkerUrl:this._config.getWorkerUrl})}}var X=Object.defineProperty,Z=Object.getOwnPropertyDescriptor,ee=(r,e,t,n)=>{for(var i=n>1?void 0:n?Z(e,t):e,s=r.length-1,c;s>=0;s--)(c=r[s])&&(i=(n?c(e,t,i):c(i))||i);return n&&i&&X(e,t,i),i},$=(r,e)=>(t,n)=>e(t,n,r);const C=l.createIdentifier("univer.uniscript.execution-service");let j=class extends o.Disposable{constructor(r,e){super(),this._logService=r,this._injector=e}async execute(r){this._logService.log("[UniscriptExecutionService]","executing Uniscript...");const e=k.FUniver.newAPI(this._injector),t=new Function("univerAPI",`(() => {${r}})()`);try{return t(e),!0}catch(n){return this._logService.error(n),!1}}};j=ee([$(0,o.ILogService),$(1,l.Inject(l.Injector))],j);const te="univer-script-editor-panel",re="univer-script-editor-content",ne="univer-script-editor-actions",P={scriptEditorPanel:te,scriptEditorContent:re,scriptEditorActions:ne};function ie(){const r=d.useRef(null),e=d.useRef(null),t=d.useRef(null),n=v.useDependency(o.LocaleService),i=v.useDependency(u.IShortcutService),s=v.useDependency(I);d.useEffect(()=>{const U=e.current,_=r.current;let a=null,E=null;if(U&&_){s.requireVscodeEditor();const m=t.current=V.editor.create(U,{value:"",language:"javascript"});E=new ResizeObserver(()=>{let w=requestIdleCallback(()=>{if(!w)return;const{height:L,width:A}=_.getBoundingClientRect();m.layout({width:A,height:L}),w=void 0})}),E.observe(_);let p;a=new o.DisposableCollection,a.add(s.setEditorInstance(m)),a.add(m.onDidFocusEditorWidget(()=>{p=i.forceEscape()})),a.add(m.onDidBlurEditorWidget(()=>{p==null||p.dispose(),p=void 0})),a.add(o.toDisposable(()=>p==null?void 0:p.dispose()))}return()=>{E&&_&&E.unobserve(_),a==null||a.dispose()}},[s,i]);const c=se(t);return g.jsxs("div",{className:P.scriptEditorPanel,children:[g.jsx("div",{className:P.scriptEditorContent,ref:r,children:g.jsx("div",{className:P.scriptEditorContainer,ref:e})}),g.jsx("div",{className:P.scriptEditorActions,children:g.jsx(O.Button,{type:"primary",size:"small",onClick:c,children:n.t("script-panel.panel.execute")})})]})}function se(r){const e=v.useDependency(C),t=v.useDependency(u.IMessageService),n=v.useDependency(o.LocaleService);return d.useCallback(()=>{var s;const i=(s=r.current)==null?void 0:s.getModel();i&&e.execute(i.getValue()).then(()=>{t.show({content:n.t("uniscript.message.success"),type:O.MessageType.Success})}).catch(()=>{t.show({content:n.t("uniscript.message.failed"),type:O.MessageType.Error})})},[n,t,r,e])}function oe(r){return{id:q.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(r,o.UniverInstanceType.UNIVER_SHEET),disabled$:z.getCurrentRangeDisable$(r,{workbookTypes:[h.WorkbookEditablePermission],worksheetTypes:[h.WorksheetEditPermission,h.WorksheetSetCellStylePermission,h.WorksheetSetCellValuePermission],rangeTypes:[h.RangeProtectionPermissionEditPoint]})}}var ce=Object.defineProperty,le=Object.getOwnPropertyDescriptor,ae=(r,e,t,n)=>{for(var i=n>1?void 0:n?le(e,t):e,s=r.length-1,c;s>=0;s--)(c=r[s])&&(i=(n?c(e,t,i):c(i))||i);return n&&i&&ce(e,t,i),i},y=(r,e)=>(t,n)=>e(t,n,r);const pe={};let S=class extends o.Disposable{constructor(r,e,t,n,i){super(),this._config=r,this._injector=e,this._menuService=t;const{menu:s={}}=this._config;this.disposeWithMe(t.addMenuItem(this._injector.invoke(oe),s)),this.disposeWithMe(i.register(M,ie)),this.disposeWithMe(n.registerCommand(q))}};S=ae([o.OnLifecycle(o.LifecycleStages.Steady,S),y(1,l.Inject(l.Injector)),y(2,u.IMenuService),y(3,o.ICommandService),y(4,l.Inject(u.ComponentManager))],S);var ue=Object.defineProperty,de=Object.getOwnPropertyDescriptor,ve=(r,e,t,n)=>{for(var i=n>1?void 0:n?de(e,t):e,s=r.length-1,c;s>=0;s--)(c=r[s])&&(i=(n?c(e,t,i):c(i))||i);return n&&i&&ue(e,t,i),i},R=(r,e)=>(t,n)=>e(t,n,r);const _e="uniscript";var x;exports.UniverUniscriptPlugin=(x=class extends o.Plugin{constructor(e={},t,n){super(),this._config=e,this._injector=t,this._localeService=n,this._config=o.Tools.deepMerge({},pe,this._config)}onStarting(e){[[S,{useFactory:()=>e.createInstance(S,this._config)}],[I,{useFactory:()=>e.createInstance(I,this._config)}],[T]].forEach(n=>e.add(n)),this.registerExecution()}registerExecution(){this._injector.add([C,{useClass:j}])}},f(x,"pluginName",_e),x);exports.UniverUniscriptPlugin=ve([R(1,l.Inject(l.Injector)),R(2,l.Inject(o.LocaleService))],exports.UniverUniscriptPlugin);exports.IUniscriptExecutionService=C;exports.ScriptEditorService=I;
package/lib/es/index.js CHANGED
@@ -1,69 +1,22 @@
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;
1
+ var V = Object.defineProperty;
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), 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 se, distinctUntilChanged as oe } from "rxjs";
8
- import ce, { useRef as P, useEffect as le, useCallback as pe } from "react";
9
- import { Button as ae, MessageType as C } from "@univerjs/design";
4
+ import { Disposable as S, CommandType as k, toDisposable as U, ILogService as z, LocaleService as I, DisposableCollection as H, UniverInstanceType as G, OnLifecycle as J, LifecycleStages as Y, ICommandService as K, Plugin as Q, Tools as X } from "@univerjs/core";
5
+ import { createIdentifier as Z, 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 oe, ComponentManager as se, IMenuService as ce } from "@univerjs/ui";
7
+ import { BehaviorSubject as le, distinctUntilChanged as pe } from "rxjs";
8
+ import ae, { useRef as P, useEffect as ue, useCallback as de } from "react";
9
+ import { Button as ve, MessageType as j } 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 = {
14
- "script-panel": {
15
- title: "Uniscript",
16
- tooltip: {
17
- "menu-button": "Toggle Uniscript Panel"
18
- },
19
- panel: {
20
- execute: "Execute Script"
21
- }
22
- },
23
- uniscript: {
24
- message: {
25
- success: "Execution Success",
26
- failed: "Execution Failed"
27
- }
28
- }
29
- }, Ke = ve, fe = {
30
- "script-panel": {
31
- title: "Uniscript",
32
- tooltip: {
33
- "menu-button": "打开收起 Uniscript 面板"
34
- },
35
- panel: {
36
- execute: "执行 Uniscript"
37
- }
38
- },
39
- uniscript: {
40
- message: {
41
- success: "执行成功",
42
- failed: "执行失败"
43
- }
44
- }
45
- }, _e = fe, me = {
46
- "script-panel": {
47
- title: "Юнискрипт",
48
- tooltip: {
49
- "menu-button": "Переключить панель Юнискрипт"
50
- },
51
- panel: {
52
- execute: "Выполнить скрипт"
53
- }
54
- },
55
- uniscript: {
56
- message: {
57
- success: "Выполнение успешно",
58
- failed: "Выполнение не удалось"
59
- }
60
- }
61
- }, Qe = me;
62
- class T extends E {
11
+ import { editor as fe } from "monaco-editor";
12
+ import { FUniver as _e } from "@univerjs/facade";
13
+ import { getCurrentRangeDisable$ as me } from "@univerjs/sheets-ui";
14
+ import { WorkbookEditablePermission as he, WorksheetEditPermission as ge, WorksheetSetCellStylePermission as Se, WorksheetSetCellValuePermission as Ee, RangeProtectionPermissionEditPoint as Pe } from "@univerjs/sheets";
15
+ class M extends S {
63
16
  constructor() {
64
17
  super(...arguments);
65
- u(this, "_open$", new se(!1));
66
- u(this, "open$", this._open$.pipe(oe()));
18
+ u(this, "_open$", new le(!1));
19
+ u(this, "open$", this._open$.pipe(pe()));
67
20
  }
68
21
  get isOpen() {
69
22
  return this._open$.getValue();
@@ -78,19 +31,19 @@ class T extends E {
78
31
  this._open$.next(!1);
79
32
  }
80
33
  }
81
- const N = "ScriptPanel", D = {
82
- type: V.OPERATION,
34
+ const D = "ScriptPanel", N = {
35
+ type: k.OPERATION,
83
36
  id: "univer.operation.toggle-script-panel",
84
37
  handler: (t) => {
85
- const e = t.get(T), r = t.get(X);
38
+ const e = t.get(M), r = t.get(ee);
86
39
  return e.isOpen ? (e.close(), r.close()) : (e.open(), r.open({
87
40
  header: { title: "script-panel.title" },
88
- children: { label: N },
41
+ children: { label: D },
89
42
  width: 600
90
43
  })), !0;
91
44
  }
92
45
  };
93
- var A = { exports: {} }, x = {};
46
+ var W = { exports: {} }, E = {};
94
47
  /**
95
48
  * @license React
96
49
  * react-jsx-runtime.production.min.js
@@ -100,30 +53,30 @@ var A = { exports: {} }, x = {};
100
53
  * This source code is licensed under the MIT license found in the
101
54
  * LICENSE file in the root directory of this source tree.
102
55
  */
103
- var he = ce, ge = Symbol.for("react.element"), Se = Symbol.for("react.fragment"), Ee = Object.prototype.hasOwnProperty, xe = he.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner, Pe = { key: !0, ref: !0, __self: !0, __source: !0 };
104
- function F(t, e, r) {
105
- var n, i = {}, s = null, o = null;
106
- r !== void 0 && (s = "" + r), e.key !== void 0 && (s = "" + e.key), e.ref !== void 0 && (o = e.ref);
107
- for (n in e)
108
- Ee.call(e, n) && !Pe.hasOwnProperty(n) && (i[n] = e[n]);
56
+ var ye = ae, xe = Symbol.for("react.element"), Oe = Symbol.for("react.fragment"), Ie = Object.prototype.hasOwnProperty, be = ye.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner, Ce = { key: !0, ref: !0, __self: !0, __source: !0 };
57
+ function A(t, e, r) {
58
+ var i, n = {}, o = null, s = null;
59
+ r !== void 0 && (o = "" + r), e.key !== void 0 && (o = "" + e.key), e.ref !== void 0 && (s = e.ref);
60
+ for (i in e)
61
+ Ie.call(e, i) && !Ce.hasOwnProperty(i) && (n[i] = e[i]);
109
62
  if (t && t.defaultProps)
110
- for (n in e = t.defaultProps, e)
111
- i[n] === void 0 && (i[n] = e[n]);
112
- return { $$typeof: ge, type: t, key: s, ref: o, props: i, _owner: xe.current };
63
+ for (i in e = t.defaultProps, e)
64
+ n[i] === void 0 && (n[i] = e[i]);
65
+ return { $$typeof: xe, type: t, key: o, ref: s, props: n, _owner: be.current };
113
66
  }
114
- x.Fragment = Se;
115
- x.jsx = F;
116
- x.jsxs = F;
117
- A.exports = x;
118
- var d = A.exports;
119
- class y extends E {
67
+ E.Fragment = Oe;
68
+ E.jsx = A;
69
+ E.jsxs = A;
70
+ W.exports = E;
71
+ var d = W.exports;
72
+ class x extends S {
120
73
  constructor(r) {
121
74
  super();
122
75
  u(this, "_editorInstance", null);
123
76
  this._config = r;
124
77
  }
125
78
  setEditorInstance(r) {
126
- return this._editorInstance = r, M(() => this._editorInstance = null);
79
+ return this._editorInstance = r, U(() => this._editorInstance = null);
127
80
  }
128
81
  getEditorInstance() {
129
82
  return this._editorInstance;
@@ -134,154 +87,159 @@ class y extends E {
134
87
  });
135
88
  }
136
89
  }
137
- var Oe = Object.defineProperty, ye = Object.getOwnPropertyDescriptor, Ie = (t, e, r, n) => {
138
- for (var i = n > 1 ? void 0 : n ? ye(e, r) : e, s = t.length - 1, o; s >= 0; s--)
139
- (o = t[s]) && (i = (n ? o(e, r, i) : o(i)) || i);
140
- return n && i && Oe(e, r, i), i;
141
- }, U = (t, e) => (r, n) => e(r, n, t);
142
- let S = class extends E {
90
+ var we = Object.defineProperty, je = Object.getOwnPropertyDescriptor, $e = (t, e, r, i) => {
91
+ for (var n = i > 1 ? void 0 : i ? je(e, r) : e, o = t.length - 1, s; o >= 0; o--)
92
+ (s = t[o]) && (n = (i ? s(e, r, n) : s(n)) || n);
93
+ return i && n && we(e, r, n), n;
94
+ }, $ = (t, e) => (r, i) => e(r, i, t);
95
+ const F = Z("univer.uniscript.execution-service");
96
+ let O = class extends S {
143
97
  constructor(t, e) {
144
98
  super(), this._logService = t, this._injector = e;
145
99
  }
146
100
  async execute(t) {
147
101
  this._logService.log("[UniscriptExecutionService]", "executing Uniscript...");
148
- const e = de.newAPI(this._injector), r = new Function("univerAPI", `(() => {${t}})()`);
102
+ const e = _e.newAPI(this._injector), r = new Function("univerAPI", `(() => {${t}})()`);
149
103
  try {
150
104
  return r(e), !0;
151
- } catch (n) {
152
- return this._logService.error(n), !1;
105
+ } catch (i) {
106
+ return this._logService.error(i), !1;
153
107
  }
154
108
  }
155
109
  };
156
- S = Ie([
157
- U(0, z),
158
- U(1, v(b))
159
- ], S);
160
- const be = "univer-script-editor-panel", $e = "univer-script-editor-content", je = "univer-script-editor-actions", m = {
161
- scriptEditorPanel: be,
162
- scriptEditorContent: $e,
163
- scriptEditorActions: je
110
+ O = $e([
111
+ $(0, z),
112
+ $(1, f(b))
113
+ ], O);
114
+ const Re = "univer-script-editor-panel", Te = "univer-script-editor-content", Ue = "univer-script-editor-actions", h = {
115
+ scriptEditorPanel: Re,
116
+ scriptEditorContent: Te,
117
+ scriptEditorActions: Ue
164
118
  };
165
- function Ce() {
166
- const t = P(null), e = P(null), r = P(null), n = p(I), i = p(Z), s = p(y);
167
- le(() => {
168
- const $ = e.current, a = t.current;
169
- let c = null, f = null;
170
- if ($ && a) {
171
- s.requireVscodeEditor();
172
- const _ = r.current = ue.create($, {
119
+ function Me() {
120
+ const t = P(null), e = P(null), r = P(null), i = p(I), n = p(te), o = p(x);
121
+ ue(() => {
122
+ const C = e.current, a = t.current;
123
+ let c = null, _ = null;
124
+ if (C && a) {
125
+ o.requireVscodeEditor();
126
+ const m = r.current = fe.create(C, {
173
127
  value: "",
174
128
  language: "javascript"
175
129
  });
176
- f = new ResizeObserver(() => {
177
- let j = requestIdleCallback(() => {
178
- if (!j)
130
+ _ = new ResizeObserver(() => {
131
+ let w = requestIdleCallback(() => {
132
+ if (!w)
179
133
  return;
180
- const { height: L, width: W } = a.getBoundingClientRect();
181
- _.layout({ width: W, height: L }), j = void 0;
134
+ const { height: L, width: B } = a.getBoundingClientRect();
135
+ m.layout({ width: B, height: L }), w = void 0;
182
136
  });
183
- }), f.observe(a);
137
+ }), _.observe(a);
184
138
  let l;
185
- c = new H(), c.add(s.setEditorInstance(_)), c.add(
186
- _.onDidFocusEditorWidget(() => {
187
- l = i.forceEscape();
139
+ c = new H(), c.add(o.setEditorInstance(m)), c.add(
140
+ m.onDidFocusEditorWidget(() => {
141
+ l = n.forceEscape();
188
142
  })
189
143
  ), c.add(
190
- _.onDidBlurEditorWidget(() => {
144
+ m.onDidBlurEditorWidget(() => {
191
145
  l == null || l.dispose(), l = void 0;
192
146
  })
193
- ), c.add(M(() => l == null ? void 0 : l.dispose()));
147
+ ), c.add(U(() => l == null ? void 0 : l.dispose()));
194
148
  }
195
149
  return () => {
196
- f && a && f.unobserve(a), c == null || c.dispose();
150
+ _ && a && _.unobserve(a), c == null || c.dispose();
197
151
  };
198
- }, [s, i]);
199
- const o = Ue(r);
200
- return /* @__PURE__ */ d.jsxs("div", { className: m.scriptEditorPanel, children: [
201
- /* @__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(ae, { type: "primary", size: "small", onClick: o, children: n.t("script-panel.panel.execute") }) })
152
+ }, [o, n]);
153
+ const s = De(r);
154
+ return /* @__PURE__ */ d.jsxs("div", { className: h.scriptEditorPanel, children: [
155
+ /* @__PURE__ */ d.jsx("div", { className: h.scriptEditorContent, ref: t, children: /* @__PURE__ */ d.jsx("div", { className: h.scriptEditorContainer, ref: e }) }),
156
+ /* @__PURE__ */ d.jsx("div", { className: h.scriptEditorActions, children: /* @__PURE__ */ d.jsx(ve, { type: "primary", size: "small", onClick: s, children: i.t("script-panel.panel.execute") }) })
203
157
  ] });
204
158
  }
205
- function Ue(t) {
206
- const e = p(S), r = p(k), n = p(I);
207
- return pe(() => {
208
- var s;
209
- const i = (s = t.current) == null ? void 0 : s.getModel();
210
- i && e.execute(i.getValue()).then(() => {
159
+ function De(t) {
160
+ const e = p(F), r = p(re), i = p(I);
161
+ return de(() => {
162
+ var o;
163
+ const n = (o = t.current) == null ? void 0 : o.getModel();
164
+ n && e.execute(n.getValue()).then(() => {
211
165
  r.show({
212
- content: n.t("uniscript.message.success"),
213
- type: C.Success
166
+ content: i.t("uniscript.message.success"),
167
+ type: j.Success
214
168
  });
215
169
  }).catch(() => {
216
170
  r.show({
217
- content: n.t("uniscript.message.failed"),
218
- type: C.Error
171
+ content: i.t("uniscript.message.failed"),
172
+ type: j.Error
219
173
  });
220
174
  });
221
- }, [n, r, t, e]);
175
+ }, [i, r, t, e]);
222
176
  }
223
- function we(t) {
177
+ function Ne(t) {
224
178
  return {
225
- id: D.id,
179
+ id: N.id,
226
180
  title: "toggle-script-panel",
227
181
  tooltip: "script-panel.tooltip.menu-button",
228
182
  icon: "CodeSingle",
229
- type: ee.BUTTON,
230
- positions: [te.TOOLBAR_START],
183
+ type: ie.BUTTON,
184
+ positions: [ne.TOOLBAR_START],
231
185
  // FIXME hidden$ and disabled$ are not correctly in doc
232
- hidden$: re(t, G.UNIVER_SHEET)
233
- // disabled$: getCurrentSheetDisabled$(accessor),
186
+ hidden$: oe(t, G.UNIVER_SHEET),
187
+ disabled$: me(t, { workbookTypes: [he], worksheetTypes: [ge, Se, Ee], rangeTypes: [Pe] })
234
188
  };
235
189
  }
236
- var Re = Object.defineProperty, Me = Object.getOwnPropertyDescriptor, Te = (t, e, r, n) => {
237
- for (var i = n > 1 ? void 0 : n ? Me(e, r) : e, s = t.length - 1, o; s >= 0; s--)
238
- (o = t[s]) && (i = (n ? o(e, r, i) : o(i)) || i);
239
- return n && i && Re(e, r, i), i;
240
- }, h = (t, e) => (r, n) => e(r, n, t);
241
- let g = class extends E {
242
- constructor(t, e, r, n) {
243
- super(), this._injector = t, this.disposeWithMe(e.addMenuItem(this._injector.invoke(we))), this.disposeWithMe(n.register(N, Ce)), this.disposeWithMe(r.registerCommand(D));
190
+ var We = Object.defineProperty, Ae = Object.getOwnPropertyDescriptor, Fe = (t, e, r, i) => {
191
+ for (var n = i > 1 ? void 0 : i ? Ae(e, r) : e, o = t.length - 1, s; o >= 0; o--)
192
+ (s = t[o]) && (n = (i ? s(e, r, n) : s(n)) || n);
193
+ return i && n && We(e, r, n), n;
194
+ }, g = (t, e) => (r, i) => e(r, i, t);
195
+ const Le = {};
196
+ let v = class extends S {
197
+ constructor(t, e, r, i, n) {
198
+ super(), this._config = t, this._injector = e, this._menuService = r;
199
+ const { menu: o = {} } = this._config;
200
+ this.disposeWithMe(r.addMenuItem(this._injector.invoke(Ne), o)), this.disposeWithMe(n.register(D, Me)), this.disposeWithMe(i.registerCommand(N));
244
201
  }
245
202
  };
246
- g = Te([
247
- J(Y.Steady, g),
248
- h(0, v(b)),
249
- h(1, ie),
250
- h(2, K),
251
- h(3, v(ne))
252
- ], g);
253
- var Ne = Object.defineProperty, De = Object.getOwnPropertyDescriptor, Ae = (t, e, r, n) => {
254
- for (var i = n > 1 ? void 0 : n ? De(e, r) : e, s = t.length - 1, o; s >= 0; s--)
255
- (o = t[s]) && (i = (n ? o(e, r, i) : o(i)) || i);
256
- return n && i && Ne(e, r, i), i;
257
- }, w = (t, e) => (r, n) => e(r, n, t);
258
- const Fe = "uniscript";
259
- var O;
260
- let R = (O = class extends Q {
261
- constructor(t, e, r) {
262
- super(), this._config = t, this._injector = e, this._localeService = r;
203
+ v = Fe([
204
+ J(Y.Steady, v),
205
+ g(1, f(b)),
206
+ g(2, ce),
207
+ g(3, K),
208
+ g(4, f(se))
209
+ ], v);
210
+ var Be = Object.defineProperty, Ve = Object.getOwnPropertyDescriptor, qe = (t, e, r, i) => {
211
+ for (var n = i > 1 ? void 0 : i ? Ve(e, r) : e, o = t.length - 1, s; o >= 0; o--)
212
+ (s = t[o]) && (n = (i ? s(e, r, n) : s(n)) || n);
213
+ return i && n && Be(e, r, n), n;
214
+ }, R = (t, e) => (r, i) => e(r, i, t);
215
+ const ke = "uniscript";
216
+ var y;
217
+ let T = (y = class extends Q {
218
+ constructor(t = {}, e, r) {
219
+ super(), this._config = t, this._injector = e, this._localeService = r, this._config = X.deepMerge({}, Le, this._config);
263
220
  }
264
221
  onStarting(t) {
265
222
  [
266
223
  // controllers
267
- [g],
224
+ [v, { useFactory: () => t.createInstance(v, this._config) }],
268
225
  // services
269
- [y, { useFactory: () => t.createInstance(y, this._config) }],
270
- [T],
271
- [S]
272
- ].forEach((r) => t.add(r)), this._localeService.load({
273
- zhCN: _e
274
- });
275
- }
276
- }, u(O, "pluginName", Fe), O);
277
- R = Ae([
278
- w(1, v(b)),
279
- w(2, v(I))
280
- ], R);
226
+ [x, { useFactory: () => t.createInstance(x, this._config) }],
227
+ [M]
228
+ ].forEach((r) => t.add(r)), this.registerExecution();
229
+ }
230
+ /**
231
+ * Allows being overridden, replacing with a new UniscriptExecutionService.
232
+ */
233
+ registerExecution() {
234
+ this._injector.add([F, { useClass: O }]);
235
+ }
236
+ }, u(y, "pluginName", ke), y);
237
+ T = qe([
238
+ R(1, f(b)),
239
+ R(2, f(I))
240
+ ], T);
281
241
  export {
282
- y as ScriptEditorService,
283
- R as UniverUniscriptPlugin,
284
- Ke as enUS,
285
- Qe as ruRU,
286
- _e as zhCN
242
+ F as IUniscriptExecutionService,
243
+ x as ScriptEditorService,
244
+ T as UniverUniscriptPlugin
287
245
  };
@@ -0,0 +1,17 @@
1
+ {
2
+ "script-panel": {
3
+ "title": "Uniscript",
4
+ "tooltip": {
5
+ "menu-button": "Toggle Uniscript Panel"
6
+ },
7
+ "panel": {
8
+ "execute": "Execute Script"
9
+ }
10
+ },
11
+ "uniscript": {
12
+ "message": {
13
+ "success": "Execution Success",
14
+ "failed": "Execution Failed"
15
+ }
16
+ }
17
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "script-panel": {
3
+ "title": "Юнискрипт",
4
+ "tooltip": {
5
+ "menu-button": "Переключить панель Юнискрипт"
6
+ },
7
+ "panel": {
8
+ "execute": "Выполнить скрипт"
9
+ }
10
+ },
11
+ "uniscript": {
12
+ "message": {
13
+ "success": "Выполнение успешно",
14
+ "failed": "Выполнение не удалось"
15
+ }
16
+ }
17
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "script-panel": {
3
+ "title": "Uniscript",
4
+ "tooltip": {
5
+ "menu-button": "打开收起 Uniscript 面板"
6
+ },
7
+ "panel": {
8
+ "execute": "执行 Uniscript"
9
+ }
10
+ },
11
+ "uniscript": {
12
+ "message": {
13
+ "success": "执行成功",
14
+ "failed": "执行失败"
15
+ }
16
+ }
17
+ }
@@ -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
- 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,6 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- export { enUS, zhCN, ruRU } from './locale';
17
- export { type IUniscriptConfig, UniverUniscriptPlugin } from './plugin';
16
+ export { UniverUniscriptPlugin } from './plugin';
18
17
  export { ScriptEditorService } from './services/script-editor.service';
18
+ export { IUniscriptExecutionService } from './services/script-execution.service';
@@ -1,14 +1,16 @@
1
1
  import { LocaleService, Plugin } from '@univerjs/core';
2
2
  import { Injector } from '@wendellhu/redi';
3
- import { IScriptEditorServiceConfig } from './services/script-editor.service';
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
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: 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
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,a,b,v,O,f,F,q){"use strict";var ae=Object.defineProperty;var ue=(c,s,p)=>s in c?ae(c,s,{enumerable:!0,configurable:!0,writable:!0,value:p}):c[s]=p;var S=(c,s,p)=>(ue(c,typeof s!="symbol"?s+"":s,p),p);var x;const W={"script-panel":{title:"Uniscript",tooltip:{"menu-button":"Toggle Uniscript Panel"},panel:{execute:"Execute Script"}},uniscript:{message:{success:"Execution Success",failed:"Execution Failed"}}},w={"script-panel":{title:"Uniscript",tooltip:{"menu-button":"打开收起 Uniscript 面板"},panel:{execute:"执行 Uniscript"}},uniscript:{message:{success:"执行成功",failed:"执行失败"}}},z={"script-panel":{title:"Юнискрипт",tooltip:{"menu-button":"Переключить панель Юнискрипт"},panel:{execute:"Выполнить скрипт"}},uniscript:{message:{success:"Выполнение успешно",failed:"Выполнение не удалось"}}};class C extends s.Disposable{constructor(){super(...arguments);S(this,"_open$",new b.BehaviorSubject(!1));S(this,"open$",this._open$.pipe(b.distinctUntilChanged()))}get isOpen(){return this._open$.getValue()}dispose(){super.dispose(),this._open$.next(!1),this._open$.complete()}open(){this._open$.next(!0)}close(){this._open$.next(!1)}}const D="ScriptPanel",R={type:s.CommandType.OPERATION,id:"univer.operation.toggle-script-panel",handler:i=>{const e=i.get(C),n=i.get(a.ISidebarService);return e.isOpen?(e.close(),n.close()):(e.open(),n.open({header:{title:"script-panel.title"},children:{label:D},width:600})),!0}};var T={exports:{}},m={};/**
1
+ (function(o,s){typeof exports=="object"&&typeof module<"u"?s(exports,require("@univerjs/core"),require("@wendellhu/redi"),require("@univerjs/ui"),require("rxjs"),require("react"),require("@univerjs/design"),require("@wendellhu/redi/react-bindings"),require("monaco-editor"),require("@univerjs/facade"),require("@univerjs/sheets-ui"),require("@univerjs/sheets")):typeof define=="function"&&define.amd?define(["exports","@univerjs/core","@wendellhu/redi","@univerjs/ui","rxjs","react","@univerjs/design","@wendellhu/redi/react-bindings","monaco-editor","@univerjs/facade","@univerjs/sheets-ui","@univerjs/sheets"],s):(o=typeof globalThis<"u"?globalThis:o||self,s(o.UniverUniscript={},o.UniverCore,o["@wendellhu/redi"],o.UniverUi,o.rxjs,o.React,o.UniverDesign,o["@wendellhu/redi/react-bindings"],o.monaco,o.UniverFacade,o.UniverSheetsUi,o.UniverSheets))})(this,function(o,s,p,l,b,v,x,f,q,F,V,h){"use strict";var ae=Object.defineProperty;var de=(o,s,p)=>s in o?ae(o,s,{enumerable:!0,configurable:!0,writable:!0,value:p}):o[s]=p;var m=(o,s,p)=>(de(o,typeof s!="symbol"?s+"":s,p),p);var C;class D extends s.Disposable{constructor(){super(...arguments);m(this,"_open$",new b.BehaviorSubject(!1));m(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 T="ScriptPanel",R={type:s.CommandType.OPERATION,id:"univer.operation.toggle-script-panel",handler:i=>{const e=i.get(D),n=i.get(l.ISidebarService);return e.isOpen?(e.close(),n.close()):(e.open(),n.open({header:{title:"script-panel.title"},children:{label:T},width:600})),!0}};var M={exports:{}},E={};/**
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 V=v,B=Symbol.for("react.element"),H=Symbol.for("react.fragment"),G=Object.prototype.hasOwnProperty,J=V.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,Y={key:!0,ref:!0,__self:!0,__source:!0};function M(i,e,n){var t,r={},o=null,l=null;n!==void 0&&(o=""+n),e.key!==void 0&&(o=""+e.key),e.ref!==void 0&&(l=e.ref);for(t in e)G.call(e,t)&&!Y.hasOwnProperty(t)&&(r[t]=e[t]);if(i&&i.defaultProps)for(t in e=i.defaultProps,e)r[t]===void 0&&(r[t]=e[t]);return{$$typeof:B,type:i,key:o,ref:l,props:r,_owner:J.current}}m.Fragment=H,m.jsx=M,m.jsxs=M,T.exports=m;var _=T.exports;class E extends s.Disposable{constructor(n){super();S(this,"_editorInstance",null);this._config=n}setEditorInstance(n){return this._editorInstance=n,s.toDisposable(()=>this._editorInstance=null)}getEditorInstance(){return this._editorInstance}requireVscodeEditor(){window.MonacoEnvironment||(window.MonacoEnvironment={getWorkerUrl:this._config.getWorkerUrl})}}var K=Object.defineProperty,Q=Object.getOwnPropertyDescriptor,X=(i,e,n,t)=>{for(var r=t>1?void 0:t?Q(e,n):e,o=i.length-1,l;o>=0;o--)(l=i[o])&&(r=(t?l(e,n,r):l(r))||r);return t&&r&&K(e,n,r),r},$=(i,e)=>(n,t)=>e(n,t,i);let g=class extends s.Disposable{constructor(i,e){super(),this._logService=i,this._injector=e}async execute(i){this._logService.log("[UniscriptExecutionService]","executing Uniscript...");const e=q.FUniver.newAPI(this._injector),n=new Function("univerAPI",`(() => {${i}})()`);try{return n(e),!0}catch(t){return this._logService.error(t),!1}}};g=X([$(0,s.ILogService),$(1,p.Inject(p.Injector))],g);const j={scriptEditorPanel:"univer-script-editor-panel",scriptEditorContent:"univer-script-editor-content",scriptEditorActions:"univer-script-editor-actions"};function Z(){const i=v.useRef(null),e=v.useRef(null),n=v.useRef(null),t=f.useDependency(s.LocaleService),r=f.useDependency(a.IShortcutService),o=f.useDependency(E);v.useEffect(()=>{const A=e.current,h=i.current;let u=null,U=null;if(A&&h){o.requireVscodeEditor();const I=n.current=F.editor.create(A,{value:"",language:"javascript"});U=new ResizeObserver(()=>{let L=requestIdleCallback(()=>{if(!L)return;const{height:le,width:pe}=h.getBoundingClientRect();I.layout({width:pe,height:le}),L=void 0})}),U.observe(h);let d;u=new s.DisposableCollection,u.add(o.setEditorInstance(I)),u.add(I.onDidFocusEditorWidget(()=>{d=r.forceEscape()})),u.add(I.onDidBlurEditorWidget(()=>{d==null||d.dispose(),d=void 0})),u.add(s.toDisposable(()=>d==null?void 0:d.dispose()))}return()=>{U&&h&&U.unobserve(h),u==null||u.dispose()}},[o,r]);const l=k(n);return _.jsxs("div",{className:j.scriptEditorPanel,children:[_.jsx("div",{className:j.scriptEditorContent,ref:i,children:_.jsx("div",{className:j.scriptEditorContainer,ref:e})}),_.jsx("div",{className:j.scriptEditorActions,children:_.jsx(O.Button,{type:"primary",size:"small",onClick:l,children:t.t("script-panel.panel.execute")})})]})}function k(i){const e=f.useDependency(g),n=f.useDependency(a.IMessageService),t=f.useDependency(s.LocaleService);return v.useCallback(()=>{var o;const r=(o=i.current)==null?void 0:o.getModel();r&&e.execute(r.getValue()).then(()=>{n.show({content:t.t("uniscript.message.success"),type:O.MessageType.Success})}).catch(()=>{n.show({content:t.t("uniscript.message.failed"),type:O.MessageType.Error})})},[t,n,i,e])}function ee(i){return{id:R.id,title:"toggle-script-panel",tooltip:"script-panel.tooltip.menu-button",icon:"CodeSingle",type:a.MenuItemType.BUTTON,positions:[a.MenuPosition.TOOLBAR_START],hidden$:a.getMenuHiddenObservable(i,s.UniverInstanceType.UNIVER_SHEET)}}var te=Object.defineProperty,ne=Object.getOwnPropertyDescriptor,ie=(i,e,n,t)=>{for(var r=t>1?void 0:t?ne(e,n):e,o=i.length-1,l;o>=0;o--)(l=i[o])&&(r=(t?l(e,n,r):l(r))||r);return t&&r&&te(e,n,r),r},y=(i,e)=>(n,t)=>e(n,t,i);let P=class extends s.Disposable{constructor(i,e,n,t){super(),this._injector=i,this.disposeWithMe(e.addMenuItem(this._injector.invoke(ee))),this.disposeWithMe(t.register(D,Z)),this.disposeWithMe(n.registerCommand(R))}};P=ie([s.OnLifecycle(s.LifecycleStages.Steady,P),y(0,p.Inject(p.Injector)),y(1,a.IMenuService),y(2,s.ICommandService),y(3,p.Inject(a.ComponentManager))],P);var re=Object.defineProperty,se=Object.getOwnPropertyDescriptor,ce=(i,e,n,t)=>{for(var r=t>1?void 0:t?se(e,n):e,o=i.length-1,l;o>=0;o--)(l=i[o])&&(r=(t?l(e,n,r):l(r))||r);return t&&r&&re(e,n,r),r},N=(i,e)=>(n,t)=>e(n,t,i);const oe="uniscript";c.UniverUniscriptPlugin=(x=class extends s.Plugin{constructor(e,n,t){super(),this._config=e,this._injector=n,this._localeService=t}onStarting(e){[[P],[E,{useFactory:()=>e.createInstance(E,this._config)}],[C],[g]].forEach(t=>e.add(t)),this._localeService.load({zhCN:w})}},S(x,"pluginName",oe),x),c.UniverUniscriptPlugin=ce([N(1,p.Inject(p.Injector)),N(2,p.Inject(s.LocaleService))],c.UniverUniscriptPlugin),c.ScriptEditorService=E,c.enUS=W,c.ruRU=z,c.zhCN=w,Object.defineProperty(c,Symbol.toStringTag,{value:"Module"})});
9
+ */var k=v,z=Symbol.for("react.element"),B=Symbol.for("react.fragment"),H=Object.prototype.hasOwnProperty,G=k.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,J={key:!0,ref:!0,__self:!0,__source:!0};function N(i,e,n){var t,r={},c=null,u=null;n!==void 0&&(c=""+n),e.key!==void 0&&(c=""+e.key),e.ref!==void 0&&(u=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:z,type:i,key:c,ref:u,props:r,_owner:G.current}}E.Fragment=B,E.jsx=N,E.jsxs=N,M.exports=E;var _=M.exports;class P extends s.Disposable{constructor(n){super();m(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,c=i.length-1,u;c>=0;c--)(u=i[c])&&(r=(t?u(e,n,r):u(r))||r);return t&&r&&Y(e,n,r),r},$=(i,e)=>(n,t)=>e(n,t,i);const O=p.createIdentifier("univer.uniscript.execution-service");let w=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=F.FUniver.newAPI(this._injector),n=new Function("univerAPI",`(() => {${i}})()`);try{return n(e),!0}catch(t){return this._logService.error(t),!1}}};w=Q([$(0,s.ILogService),$(1,p.Inject(p.Injector))],w);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(l.IShortcutService),c=f.useDependency(P);v.useEffect(()=>{const A=e.current,g=i.current;let a=null,I=null;if(A&&g){c.requireVscodeEditor();const U=n.current=q.editor.create(A,{value:"",language:"javascript"});I=new ResizeObserver(()=>{let L=requestIdleCallback(()=>{if(!L)return;const{height:pe,width:le}=g.getBoundingClientRect();U.layout({width:le,height:pe}),L=void 0})}),I.observe(g);let d;a=new s.DisposableCollection,a.add(c.setEditorInstance(U)),a.add(U.onDidFocusEditorWidget(()=>{d=r.forceEscape()})),a.add(U.onDidBlurEditorWidget(()=>{d==null||d.dispose(),d=void 0})),a.add(s.toDisposable(()=>d==null?void 0:d.dispose()))}return()=>{I&&g&&I.unobserve(g),a==null||a.dispose()}},[c,r]);const u=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(x.Button,{type:"primary",size:"small",onClick:u,children:t.t("script-panel.panel.execute")})})]})}function Z(i){const e=f.useDependency(O),n=f.useDependency(l.IMessageService),t=f.useDependency(s.LocaleService);return v.useCallback(()=>{var c;const r=(c=i.current)==null?void 0:c.getModel();r&&e.execute(r.getValue()).then(()=>{n.show({content:t.t("uniscript.message.success"),type:x.MessageType.Success})}).catch(()=>{n.show({content:t.t("uniscript.message.failed"),type:x.MessageType.Error})})},[t,n,i,e])}function ee(i){return{id:R.id,title:"toggle-script-panel",tooltip:"script-panel.tooltip.menu-button",icon:"CodeSingle",type:l.MenuItemType.BUTTON,positions:[l.MenuPosition.TOOLBAR_START],hidden$:l.getMenuHiddenObservable(i,s.UniverInstanceType.UNIVER_SHEET),disabled$:V.getCurrentRangeDisable$(i,{workbookTypes:[h.WorkbookEditablePermission],worksheetTypes:[h.WorksheetEditPermission,h.WorksheetSetCellStylePermission,h.WorksheetSetCellValuePermission],rangeTypes:[h.RangeProtectionPermissionEditPoint]})}}var te=Object.defineProperty,ne=Object.getOwnPropertyDescriptor,ie=(i,e,n,t)=>{for(var r=t>1?void 0:t?ne(e,n):e,c=i.length-1,u;c>=0;c--)(u=i[c])&&(r=(t?u(e,n,r):u(r))||r);return t&&r&&te(e,n,r),r},y=(i,e)=>(n,t)=>e(n,t,i);const re={};let S=class extends s.Disposable{constructor(i,e,n,t,r){super(),this._config=i,this._injector=e,this._menuService=n;const{menu:c={}}=this._config;this.disposeWithMe(n.addMenuItem(this._injector.invoke(ee),c)),this.disposeWithMe(r.register(T,X)),this.disposeWithMe(t.registerCommand(R))}};S=ie([s.OnLifecycle(s.LifecycleStages.Steady,S),y(1,p.Inject(p.Injector)),y(2,l.IMenuService),y(3,s.ICommandService),y(4,p.Inject(l.ComponentManager))],S);var se=Object.defineProperty,oe=Object.getOwnPropertyDescriptor,ce=(i,e,n,t)=>{for(var r=t>1?void 0:t?oe(e,n):e,c=i.length-1,u;c>=0;c--)(u=i[c])&&(r=(t?u(e,n,r):u(r))||r);return t&&r&&se(e,n,r),r},W=(i,e)=>(n,t)=>e(n,t,i);const ue="uniscript";o.UniverUniscriptPlugin=(C=class extends s.Plugin{constructor(e={},n,t){super(),this._config=e,this._injector=n,this._localeService=t,this._config=s.Tools.deepMerge({},re,this._config)}onStarting(e){[[S,{useFactory:()=>e.createInstance(S,this._config)}],[P,{useFactory:()=>e.createInstance(P,this._config)}],[D]].forEach(t=>e.add(t)),this.registerExecution()}registerExecution(){this._injector.add([O,{useClass:w}])}},m(C,"pluginName",ue),C),o.UniverUniscriptPlugin=ce([W(1,p.Inject(p.Injector)),W(2,p.Inject(s.LocaleService))],o.UniverUniscriptPlugin),o.IUniscriptExecutionService=O,o.ScriptEditorService=P,Object.defineProperty(o,Symbol.toStringTag,{value:"Module"})});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@univerjs/uniscript",
3
- "version": "0.1.11",
3
+ "version": "0.1.13",
4
4
  "private": false,
5
5
  "description": "UI component library for building exceptional Univer.",
6
6
  "author": "DreamNum <developer@univer.ai>",
@@ -34,6 +34,7 @@
34
34
  "require": "./lib/cjs/*",
35
35
  "types": "./lib/types/index.d.ts"
36
36
  },
37
+ "./locale/*": "./lib/locale/*.json",
37
38
  "./lib/*": "./lib/*"
38
39
  },
39
40
  "main": "./lib/cjs/index.js",
@@ -53,29 +54,36 @@
53
54
  "npm": ">=8.0.0"
54
55
  },
55
56
  "peerDependencies": {
56
- "@wendellhu/redi": "^0.15.1",
57
+ "@wendellhu/redi": "0.15.2",
57
58
  "monaco-editor": ">=0.44.0",
58
59
  "react": "^16.9.0 || ^17.0.0 || ^18.0.0",
59
60
  "rxjs": ">=7.0.0",
60
- "@univerjs/core": "0.1.11",
61
- "@univerjs/design": "0.1.11",
62
- "@univerjs/facade": "0.1.11",
63
- "@univerjs/ui": "0.1.11"
61
+ "@univerjs/core": "0.1.13",
62
+ "@univerjs/design": "0.1.13",
63
+ "@univerjs/sheets": "0.1.13",
64
+ "@univerjs/ui": "0.1.13",
65
+ "@univerjs/sheets-ui": "0.1.13",
66
+ "@univerjs/facade": "0.1.13"
67
+ },
68
+ "dependencies": {
69
+ "@univerjs/protocol": "^0.1.34",
70
+ "@univerjs/sheets": "0.1.13"
64
71
  },
65
72
  "devDependencies": {
66
73
  "@types/react": "^18.2.79",
67
- "@wendellhu/redi": "^0.15.1",
74
+ "@wendellhu/redi": "0.15.2",
68
75
  "less": "^4.2.0",
69
- "monaco-editor": "0.48.0",
76
+ "monaco-editor": "0.49.0",
70
77
  "rxjs": "^7.8.1",
71
78
  "typescript": "^5.4.5",
72
- "vite": "^5.2.11",
79
+ "vite": "^5.2.12",
73
80
  "vitest": "^1.6.0",
74
- "@univerjs/design": "0.1.11",
75
- "@univerjs/facade": "0.1.11",
76
- "@univerjs/core": "0.1.11",
77
- "@univerjs/ui": "0.1.11",
78
- "@univerjs/shared": "0.1.11"
81
+ "@univerjs/design": "0.1.13",
82
+ "@univerjs/facade": "0.1.13",
83
+ "@univerjs/core": "0.1.13",
84
+ "@univerjs/sheets-ui": "0.1.13",
85
+ "@univerjs/ui": "0.1.13",
86
+ "@univerjs/shared": "0.1.13"
79
87
  },
80
88
  "scripts": {
81
89
  "test": "vitest run",
@@ -1,18 +0,0 @@
1
- /**
2
- * Copyright 2023-present DreamNum Inc.
3
- *
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- export { default as enUS } from './en-US';
17
- export { default as zhCN } from './zh-CN';
18
- export { default as ruRU } from './ru-RU';