@univerjs/uniscript 0.1.17 → 0.2.0

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=(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);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={};/**
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);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=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"),V=require("monaco-editor"),k=require("@univerjs/facade"),z=require("@univerjs/sheets-ui"),h=require("@univerjs/sheets");class M extends o.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 q="ScriptPanel",C={type:o.CommandType.OPERATION,id:"univer.operation.toggle-script-panel",handler:r=>{const e=r.get(M),t=r.get(u.ISidebarService);return e.isOpen?(e.close(),t.close()):(e.open(),t.open({header:{title:"script-panel.title"},children:{label:q},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 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;
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},T=(r,e)=>(t,n)=>e(t,n,r);const U=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([T(0,o.ILogService),T(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 w=e.current,_=r.current;let a=null,E=null;if(w&&_){s.requireVscodeEditor();const m=t.current=V.editor.create(w,{value:"",language:"javascript"});E=new ResizeObserver(()=>{let D=requestIdleCallback(()=>{if(!D)return;const{height:L,width:A}=_.getBoundingClientRect();m.layout({width:A,height:L}),D=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(U),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:C.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(q,ie)),this.disposeWithMe(n.registerCommand(C))}};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)}],[M]].forEach(n=>e.add(n)),this.registerExecution()}registerExecution(){this._injector.add([U,{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=U;exports.ScriptEditorService=I;exports.ToggleScriptPanelOperation=C;
package/lib/es/index.js CHANGED
@@ -237,5 +237,6 @@ T = qe([
237
237
  export {
238
238
  F as IUniscriptExecutionService,
239
239
  x as ScriptEditorService,
240
+ N as ToggleScriptPanelOperation,
240
241
  T as UniverUniscriptPlugin
241
242
  };
@@ -16,3 +16,4 @@
16
16
  export { UniverUniscriptPlugin } from './plugin';
17
17
  export { ScriptEditorService } from './services/script-editor.service';
18
18
  export { IUniscriptExecutionService } from './services/script-execution.service';
19
+ export { ToggleScriptPanelOperation } from './commands/operations/panel.operation';
package/lib/umd/index.js CHANGED
@@ -1,4 +1,4 @@
1
- (function(o,s){typeof exports=="object"&&typeof module<"u"?s(exports,require("@univerjs/core"),require("@wendellhu/redi"),require("@univerjs/ui"),require("rxjs"),require("react"),require("@univerjs/design"),require("@wendellhu/redi/react-bindings"),require("monaco-editor"),require("@univerjs/facade"),require("@univerjs/sheets-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);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={};/**
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,D,v,U,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);var b;class T extends s.Disposable{constructor(){super(...arguments);m(this,"_open$",new D.BehaviorSubject(!1));m(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 R="ScriptPanel",x={type:s.CommandType.OPERATION,id:"univer.operation.toggle-script-panel",handler:i=>{const e=i.get(T),n=i.get(l.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:{}},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 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"})});
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 w=p.createIdentifier("univer.uniscript.execution-service");let C=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}}};C=Q([$(0,s.ILogService),$(1,p.Inject(p.Injector))],C);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 O=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();O.layout({width:le,height:pe}),L=void 0})}),I.observe(g);let d;a=new s.DisposableCollection,a.add(c.setEditorInstance(O)),a.add(O.onDidFocusEditorWidget(()=>{d=r.forceEscape()})),a.add(O.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(U.Button,{type:"primary",size:"small",onClick:u,children:t.t("script-panel.panel.execute")})})]})}function Z(i){const e=f.useDependency(w),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:U.MessageType.Success})}).catch(()=>{n.show({content:t.t("uniscript.message.failed"),type:U.MessageType.Error})})},[t,n,i,e])}function ee(i){return{id:x.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(R,X)),this.disposeWithMe(t.registerCommand(x))}};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=(b=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)}],[T]].forEach(t=>e.add(t)),this.registerExecution()}registerExecution(){this._injector.add([w,{useClass:C}])}},m(b,"pluginName",ue),b),o.UniverUniscriptPlugin=ce([W(1,p.Inject(p.Injector)),W(2,p.Inject(s.LocaleService))],o.UniverUniscriptPlugin),o.IUniscriptExecutionService=w,o.ScriptEditorService=P,o.ToggleScriptPanelOperation=x,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.17",
3
+ "version": "0.2.0",
4
4
  "private": false,
5
5
  "description": "UI component library for building exceptional Univer.",
6
6
  "author": "DreamNum <developer@univer.ai>",
@@ -50,36 +50,36 @@
50
50
  "lib"
51
51
  ],
52
52
  "peerDependencies": {
53
- "@wendellhu/redi": "0.15.4",
53
+ "@wendellhu/redi": "0.15.5",
54
54
  "monaco-editor": ">=0.44.0",
55
55
  "react": "^16.9.0 || ^17.0.0 || ^18.0.0",
56
56
  "rxjs": ">=7.0.0",
57
- "@univerjs/core": "0.1.17",
58
- "@univerjs/facade": "0.1.17",
59
- "@univerjs/design": "0.1.17",
60
- "@univerjs/sheets": "0.1.17",
61
- "@univerjs/sheets-ui": "0.1.17",
62
- "@univerjs/ui": "0.1.17"
57
+ "@univerjs/core": "0.2.0",
58
+ "@univerjs/design": "0.2.0",
59
+ "@univerjs/sheets": "0.2.0",
60
+ "@univerjs/sheets-ui": "0.2.0",
61
+ "@univerjs/ui": "0.2.0",
62
+ "@univerjs/facade": "0.2.0"
63
63
  },
64
64
  "dependencies": {
65
- "@univerjs/protocol": "0.1.38-alpha.6",
66
- "@univerjs/sheets": "0.1.17"
65
+ "@univerjs/protocol": "0.1.38-alpha.11"
67
66
  },
68
67
  "devDependencies": {
69
68
  "@types/react": "^18.3.3",
70
- "@wendellhu/redi": "0.15.4",
69
+ "@wendellhu/redi": "0.15.5",
71
70
  "less": "^4.2.0",
72
- "monaco-editor": "0.49.0",
71
+ "monaco-editor": "0.50.0",
73
72
  "rxjs": "^7.8.1",
74
- "typescript": "^5.4.5",
75
- "vite": "^5.3.1",
73
+ "typescript": "^5.5.3",
74
+ "vite": "^5.3.3",
76
75
  "vitest": "^1.6.0",
77
- "@univerjs/design": "0.1.17",
78
- "@univerjs/core": "0.1.17",
79
- "@univerjs/facade": "0.1.17",
80
- "@univerjs/shared": "0.1.17",
81
- "@univerjs/sheets-ui": "0.1.17",
82
- "@univerjs/ui": "0.1.17"
76
+ "@univerjs/core": "0.2.0",
77
+ "@univerjs/design": "0.2.0",
78
+ "@univerjs/shared": "0.2.0",
79
+ "@univerjs/sheets": "0.2.0",
80
+ "@univerjs/facade": "0.2.0",
81
+ "@univerjs/sheets-ui": "0.2.0",
82
+ "@univerjs/ui": "0.2.0"
83
83
  },
84
84
  "univerSpace": {
85
85
  ".": {