@univerjs/uniscript 0.2.5 → 0.2.6

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 L=Object.defineProperty;var A=(r,e,t)=>e in r?L(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var v=(r,e,t)=>A(r,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("@univerjs/core"),p=require("@univerjs/ui"),w=require("rxjs"),u=require("react"),b=require("@univerjs/design"),F=require("monaco-editor"),B=require("@univerjs/facade"),V=require("@univerjs/sheets-ui"),_=require("@univerjs/sheets");class T extends s.Disposable{constructor(){super(...arguments);v(this,"_open$",new w.BehaviorSubject(!1));v(this,"open$",this._open$.pipe(w.distinctUntilChanged()))}get isOpen(){return this._open$.getValue()}dispose(){super.dispose(),this._open$.next(!1),this._open$.complete()}open(){this._open$.next(!0)}close(){this._open$.next(!1)}}const R="ScriptPanel",O={type:s.CommandType.OPERATION,id:"univer.operation.toggle-script-panel",handler:r=>{const e=r.get(T),t=r.get(p.ISidebarService);return e.isOpen?(e.close(),t.close()):(e.open(),t.open({header:{title:"script-panel.title"},children:{label:R},width:600})),!0}};var M={exports:{}},y={};/**
1
+ "use strict";var __defProp=Object.defineProperty;var __defNormalProp=(obj,key,value)=>key in obj?__defProp(obj,key,{enumerable:!0,configurable:!0,writable:!0,value}):obj[key]=value;var __name=(target,value)=>__defProp(target,"name",{value,configurable:!0});var __publicField=(obj,key,value)=>__defNormalProp(obj,typeof key!="symbol"?key+"":key,value);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const core=require("@univerjs/core"),ui=require("@univerjs/ui"),rxjs=require("rxjs"),require$$0=require("react"),design=require("@univerjs/design"),monacoEditor=require("monaco-editor"),facade=require("@univerjs/facade"),sheetsUi=require("@univerjs/sheets-ui"),sheets=require("@univerjs/sheets"),_ScriptPanelService=class _ScriptPanelService extends core.Disposable{constructor(){super(...arguments);__publicField(this,"_open$",new rxjs.BehaviorSubject(!1));__publicField(this,"open$",this._open$.pipe(rxjs.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)}};__name(_ScriptPanelService,"ScriptPanelService");let ScriptPanelService=_ScriptPanelService;const ScriptPanelComponentName="ScriptPanel",ToggleScriptPanelOperation={type:core.CommandType.OPERATION,id:"univer.operation.toggle-script-panel",handler:__name(accessor=>{const scriptPanelService=accessor.get(ScriptPanelService),sidebarService=accessor.get(ui.ISidebarService);return scriptPanelService.isOpen?(scriptPanelService.close(),sidebarService.close()):(scriptPanelService.open(),sidebarService.open({header:{title:"script-panel.title"},children:{label:ScriptPanelComponentName},width:600})),!0},"handler")};var jsxRuntime={exports:{}},reactJsxRuntime_production_min={};/**
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=u,z=Symbol.for("react.element"),H=Symbol.for("react.fragment"),G=Object.prototype.hasOwnProperty,J=k.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,Y={key:!0,ref:!0,__self:!0,__source:!0};function q(r,e,t){var n,i={},o=null,c=null;t!==void 0&&(o=""+t),e.key!==void 0&&(o=""+e.key),e.ref!==void 0&&(c=e.ref);for(n in e)G.call(e,n)&&!Y.hasOwnProperty(n)&&(i[n]=e[n]);if(r&&r.defaultProps)for(n in e=r.defaultProps,e)i[n]===void 0&&(i[n]=e[n]);return{$$typeof:z,type:r,key:o,ref:c,props:i,_owner:J.current}}y.Fragment=H;y.jsx=q;y.jsxs=q;M.exports=y;var f=M.exports;class P extends s.Disposable{constructor(t){super();v(this,"_editorInstance",null);this._config=t}setEditorInstance(t){return this._editorInstance=t,s.toDisposable(()=>this._editorInstance=null)}getEditorInstance(){return this._editorInstance}requireVscodeEditor(){window.MonacoEnvironment||(window.MonacoEnvironment={getWorkerUrl:this._config.getWorkerUrl})}}var K=Object.defineProperty,Q=Object.getOwnPropertyDescriptor,X=(r,e,t,n)=>{for(var i=n>1?void 0:n?Q(e,t):e,o=r.length-1,c;o>=0;o--)(c=r[o])&&(i=(n?c(e,t,i):c(i))||i);return n&&i&&K(e,t,i),i},D=(r,e)=>(t,n)=>e(t,n,r);const j=s.createIdentifier("univer.uniscript.execution-service");let x=class extends s.Disposable{constructor(r,e){super(),this._logService=r,this._injector=e}async execute(r){this._logService.log("[UniscriptExecutionService]","executing Uniscript...");const e=B.FUniver.newAPI(this._injector),t=new Function("univerAPI",`(() => {${r}})()`);try{return t(e),!0}catch(n){return this._logService.error(n),!1}}};x=X([D(0,s.ILogService),D(1,s.Inject(s.Injector))],x);const Z="univer-script-editor-panel",ee="univer-script-editor-content",te="univer-script-editor-actions",E={scriptEditorPanel:Z,scriptEditorContent:ee,scriptEditorActions:te};function re(){const r=u.useRef(null),e=u.useRef(null),t=u.useRef(null),n=s.useDependency(s.LocaleService),i=s.useDependency(p.IShortcutService),o=s.useDependency(P);u.useEffect(()=>{const C=e.current,d=r.current;let l=null,g=null;if(C&&d){o.requireVscodeEditor();const S=t.current=F.editor.create(C,{value:"",language:"javascript"});g=new ResizeObserver(()=>{let U=requestIdleCallback(()=>{if(!U)return;const{height:N,width:W}=d.getBoundingClientRect();S.layout({width:W,height:N}),U=void 0})}),g.observe(d);let a;l=new s.DisposableCollection,l.add(o.setEditorInstance(S)),l.add(S.onDidFocusEditorWidget(()=>{a=i.forceEscape()})),l.add(S.onDidBlurEditorWidget(()=>{a==null||a.dispose(),a=void 0})),l.add(s.toDisposable(()=>a==null?void 0:a.dispose()))}return()=>{g&&d&&g.unobserve(d),l==null||l.dispose()}},[o,i]);const c=ne(t);return f.jsxs("div",{className:E.scriptEditorPanel,children:[f.jsx("div",{className:E.scriptEditorContent,ref:r,children:f.jsx("div",{className:E.scriptEditorContainer,ref:e})}),f.jsx("div",{className:E.scriptEditorActions,children:f.jsx(b.Button,{type:"primary",size:"small",onClick:c,children:n.t("script-panel.panel.execute")})})]})}function ne(r){const e=s.useDependency(j),t=s.useDependency(p.IMessageService),n=s.useDependency(s.LocaleService);return u.useCallback(()=>{var o;const i=(o=r.current)==null?void 0:o.getModel();i&&e.execute(i.getValue()).then(()=>{t.show({content:n.t("uniscript.message.success"),type:b.MessageType.Success})}).catch(()=>{t.show({content:n.t("uniscript.message.failed"),type:b.MessageType.Error})})},[n,t,r,e])}function ie(r){return{id:O.id,title:"toggle-script-panel",tooltip:"script-panel.tooltip.menu-button",icon:"CodeSingle",type:p.MenuItemType.BUTTON,positions:[p.MenuPosition.TOOLBAR_START],hidden$:p.getMenuHiddenObservable(r,s.UniverInstanceType.UNIVER_SHEET),disabled$:V.getCurrentRangeDisable$(r,{workbookTypes:[_.WorkbookEditablePermission],worksheetTypes:[_.WorksheetEditPermission,_.WorksheetSetCellStylePermission,_.WorksheetSetCellValuePermission],rangeTypes:[_.RangeProtectionPermissionEditPoint]})}}var se=Object.defineProperty,oe=Object.getOwnPropertyDescriptor,ce=(r,e,t,n)=>{for(var i=n>1?void 0:n?oe(e,t):e,o=r.length-1,c;o>=0;o--)(c=r[o])&&(i=(n?c(e,t,i):c(i))||i);return n&&i&&se(e,t,i),i},m=(r,e)=>(t,n)=>e(t,n,r);const le={};let h=class extends s.Disposable{constructor(r,e,t,n,i){super(),this._config=r,this._injector=e,this._menuService=t;const{menu:o={}}=this._config;this.disposeWithMe(t.addMenuItem(this._injector.invoke(ie),o)),this.disposeWithMe(i.register(R,re)),this.disposeWithMe(n.registerCommand(O))}};h=ce([s.OnLifecycle(s.LifecycleStages.Steady,h),m(1,s.Inject(s.Injector)),m(2,p.IMenuService),m(3,s.ICommandService),m(4,s.Inject(p.ComponentManager))],h);var ae=Object.defineProperty,pe=Object.getOwnPropertyDescriptor,ue=(r,e,t,n)=>{for(var i=n>1?void 0:n?pe(e,t):e,o=r.length-1,c;o>=0;o--)(c=r[o])&&(i=(n?c(e,t,i):c(i))||i);return n&&i&&ae(e,t,i),i},$=(r,e)=>(t,n)=>e(t,n,r);const de="uniscript";var I;exports.UniverUniscriptPlugin=(I=class extends s.Plugin{constructor(e={},t,n){super(),this._config=e,this._injector=t,this._localeService=n,this._config=s.Tools.deepMerge({},le,this._config)}onStarting(e){[[h,{useFactory:()=>e.createInstance(h,this._config)}],[P,{useFactory:()=>e.createInstance(P,this._config)}],[T]].forEach(n=>e.add(n)),this.registerExecution()}registerExecution(){this._injector.add([j,{useClass:x}])}},v(I,"pluginName",de),I);exports.UniverUniscriptPlugin=ue([$(1,s.Inject(s.Injector)),$(2,s.Inject(s.LocaleService))],exports.UniverUniscriptPlugin);exports.IUniscriptExecutionService=j;exports.ScriptEditorService=P;exports.ToggleScriptPanelOperation=O;
9
+ */var f=require$$0,k=Symbol.for("react.element"),l=Symbol.for("react.fragment"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};function q(c,a,g){var b,d={},e=null,h=null;g!==void 0&&(e=""+g),a.key!==void 0&&(e=""+a.key),a.ref!==void 0&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)d[b]===void 0&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}__name(q,"q");reactJsxRuntime_production_min.Fragment=l;reactJsxRuntime_production_min.jsx=q;reactJsxRuntime_production_min.jsxs=q;jsxRuntime.exports=reactJsxRuntime_production_min;var jsxRuntimeExports=jsxRuntime.exports;const _ScriptEditorService=class _ScriptEditorService extends core.Disposable{constructor(_config){super();__publicField(this,"_editorInstance",null);this._config=_config}setEditorInstance(editor){return this._editorInstance=editor,core.toDisposable(()=>this._editorInstance=null)}getEditorInstance(){return this._editorInstance}requireVscodeEditor(){window.MonacoEnvironment||(window.MonacoEnvironment={getWorkerUrl:this._config.getWorkerUrl})}};__name(_ScriptEditorService,"ScriptEditorService");let ScriptEditorService=_ScriptEditorService;var __defProp$2=Object.defineProperty,__getOwnPropDesc$2=Object.getOwnPropertyDescriptor,__decorateClass$2=__name((decorators,target,key,kind)=>{for(var result=kind>1?void 0:kind?__getOwnPropDesc$2(target,key):target,i=decorators.length-1,decorator;i>=0;i--)(decorator=decorators[i])&&(result=(kind?decorator(target,key,result):decorator(result))||result);return kind&&result&&__defProp$2(target,key,result),result},"__decorateClass$2"),__decorateParam$2=__name((index,decorator)=>(target,key)=>decorator(target,key,index),"__decorateParam$2");const IUniscriptExecutionService=core.createIdentifier("univer.uniscript.execution-service");var _a;let UniscriptExecutionService=(_a=class extends core.Disposable{constructor(_logService,_injector){super(),this._logService=_logService,this._injector=_injector}async execute(code){this._logService.log("[UniscriptExecutionService]","executing Uniscript...");const apiInstance=facade.FUniver.newAPI(this._injector),scriptFunction=new Function("univerAPI",`(() => {${code}})()`);try{return scriptFunction(apiInstance),!0}catch(e){return this._logService.error(e),!1}}},__name(_a,"UniscriptExecutionService"),_a);UniscriptExecutionService=__decorateClass$2([__decorateParam$2(0,core.ILogService),__decorateParam$2(1,core.Inject(core.Injector))],UniscriptExecutionService);const scriptEditorPanel="univer-script-editor-panel",scriptEditorContent="univer-script-editor-content",scriptEditorActions="univer-script-editor-actions",styles={scriptEditorPanel,scriptEditorContent,scriptEditorActions};function ScriptEditorPanel(){const editorContentRef=require$$0.useRef(null),editorContainerRef=require$$0.useRef(null),monacoEditorRef=require$$0.useRef(null),localeService=core.useDependency(core.LocaleService),shortcutService=core.useDependency(ui.IShortcutService),editorService=core.useDependency(ScriptEditorService);require$$0.useEffect(()=>{const containerElement=editorContainerRef.current,contentElement=editorContentRef.current;let disposableCollection=null,resizeObserver=null;if(containerElement&&contentElement){editorService.requireVscodeEditor();const monacoEditor$1=monacoEditorRef.current=monacoEditor.editor.create(containerElement,{value:"",language:"javascript"});resizeObserver=new ResizeObserver(()=>{let timer=requestIdleCallback(()=>{if(!timer)return;const{height,width}=contentElement.getBoundingClientRect();monacoEditor$1.layout({width,height}),timer=void 0})}),resizeObserver.observe(contentElement);let terminateEscaping;disposableCollection=new core.DisposableCollection,disposableCollection.add(editorService.setEditorInstance(monacoEditor$1)),disposableCollection.add(monacoEditor$1.onDidFocusEditorWidget(()=>{terminateEscaping=shortcutService.forceEscape()})),disposableCollection.add(monacoEditor$1.onDidBlurEditorWidget(()=>{terminateEscaping==null||terminateEscaping.dispose(),terminateEscaping=void 0})),disposableCollection.add(core.toDisposable(()=>terminateEscaping==null?void 0:terminateEscaping.dispose()))}return()=>{resizeObserver&&contentElement&&resizeObserver.unobserve(contentElement),disposableCollection==null||disposableCollection.dispose()}},[editorService,shortcutService]);const startExecution=useExecution(monacoEditorRef);return jsxRuntimeExports.jsxs("div",{className:styles.scriptEditorPanel,children:[jsxRuntimeExports.jsx("div",{className:styles.scriptEditorContent,ref:editorContentRef,children:jsxRuntimeExports.jsx("div",{className:styles.scriptEditorContainer,ref:editorContainerRef})}),jsxRuntimeExports.jsx("div",{className:styles.scriptEditorActions,children:jsxRuntimeExports.jsx(design.Button,{type:"primary",size:"small",onClick:startExecution,children:localeService.t("script-panel.panel.execute")})})]})}__name(ScriptEditorPanel,"ScriptEditorPanel");function useExecution(monacoEditorRef){const scriptService=core.useDependency(IUniscriptExecutionService),messageService=core.useDependency(ui.IMessageService),localeService=core.useDependency(core.LocaleService);return require$$0.useCallback(()=>{var _a4;const model=(_a4=monacoEditorRef.current)==null?void 0:_a4.getModel();model&&scriptService.execute(model.getValue()).then(()=>{messageService.show({content:localeService.t("uniscript.message.success"),type:design.MessageType.Success})}).catch(()=>{messageService.show({content:localeService.t("uniscript.message.failed"),type:design.MessageType.Error})})},[localeService,messageService,monacoEditorRef,scriptService])}__name(useExecution,"useExecution");function UniscriptMenuItemFactory(accessor){return{id:ToggleScriptPanelOperation.id,title:"toggle-script-panel",tooltip:"script-panel.tooltip.menu-button",icon:"CodeSingle",type:ui.MenuItemType.BUTTON,positions:[ui.MenuPosition.TOOLBAR_START],hidden$:ui.getMenuHiddenObservable(accessor,core.UniverInstanceType.UNIVER_SHEET),disabled$:sheetsUi.getCurrentRangeDisable$(accessor,{workbookTypes:[sheets.WorkbookEditablePermission],worksheetTypes:[sheets.WorksheetEditPermission,sheets.WorksheetSetCellStylePermission,sheets.WorksheetSetCellValuePermission],rangeTypes:[sheets.RangeProtectionPermissionEditPoint]})}}__name(UniscriptMenuItemFactory,"UniscriptMenuItemFactory");var __defProp$1=Object.defineProperty,__getOwnPropDesc$1=Object.getOwnPropertyDescriptor,__decorateClass$1=__name((decorators,target,key,kind)=>{for(var result=kind>1?void 0:kind?__getOwnPropDesc$1(target,key):target,i=decorators.length-1,decorator;i>=0;i--)(decorator=decorators[i])&&(result=(kind?decorator(target,key,result):decorator(result))||result);return kind&&result&&__defProp$1(target,key,result),result},"__decorateClass$1"),__decorateParam$1=__name((index,decorator)=>(target,key)=>decorator(target,key,index),"__decorateParam$1");const DefaultUniscriptConfig={};var _a2;let UniscriptController=(_a2=class extends core.Disposable{constructor(_config,_injector,_menuService,commandService,componentManager){super(),this._config=_config,this._injector=_injector,this._menuService=_menuService;const{menu={}}=this._config;this.disposeWithMe(_menuService.addMenuItem(this._injector.invoke(UniscriptMenuItemFactory),menu)),this.disposeWithMe(componentManager.register(ScriptPanelComponentName,ScriptEditorPanel)),this.disposeWithMe(commandService.registerCommand(ToggleScriptPanelOperation))}},__name(_a2,"UniscriptController"),_a2);UniscriptController=__decorateClass$1([core.OnLifecycle(core.LifecycleStages.Steady,UniscriptController),__decorateParam$1(1,core.Inject(core.Injector)),__decorateParam$1(2,ui.IMenuService),__decorateParam$1(3,core.ICommandService),__decorateParam$1(4,core.Inject(ui.ComponentManager))],UniscriptController);var __defProp2=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__decorateClass=__name((decorators,target,key,kind)=>{for(var result=kind>1?void 0:kind?__getOwnPropDesc(target,key):target,i=decorators.length-1,decorator;i>=0;i--)(decorator=decorators[i])&&(result=(kind?decorator(target,key,result):decorator(result))||result);return kind&&result&&__defProp2(target,key,result),result},"__decorateClass"),__decorateParam=__name((index,decorator)=>(target,key)=>decorator(target,key,index),"__decorateParam");const PLUGIN_NAME="uniscript";var _a3;exports.UniverUniscriptPlugin=(_a3=class extends core.Plugin{constructor(_config={},_injector,_localeService){super(),this._config=_config,this._injector=_injector,this._localeService=_localeService,this._config=core.Tools.deepMerge({},DefaultUniscriptConfig,this._config)}onStarting(){const injector=this._injector;[[UniscriptController,{useFactory:__name(()=>injector.createInstance(UniscriptController,this._config),"useFactory")}],[ScriptEditorService,{useFactory:__name(()=>injector.createInstance(ScriptEditorService,this._config),"useFactory")}],[ScriptPanelService]].forEach(d=>injector.add(d)),this.registerExecution()}registerExecution(){this._injector.add([IUniscriptExecutionService,{useClass:UniscriptExecutionService}])}},__name(_a3,"UniverUniscriptPlugin"),__publicField(_a3,"pluginName",PLUGIN_NAME),_a3);exports.UniverUniscriptPlugin=__decorateClass([__decorateParam(1,core.Inject(core.Injector)),__decorateParam(2,core.Inject(core.LocaleService))],exports.UniverUniscriptPlugin);exports.IUniscriptExecutionService=IUniscriptExecutionService;exports.ScriptEditorService=ScriptEditorService;exports.ToggleScriptPanelOperation=ToggleScriptPanelOperation;
package/lib/es/index.js CHANGED
@@ -1,20 +1,21 @@
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
- var u = (t, e, r) => q(t, typeof e != "symbol" ? e + "" : e, r);
4
- import { Disposable as S, CommandType as k, toDisposable as U, createIdentifier as z, Inject as f, Injector as I, ILogService as H, useDependency as p, LocaleService as b, DisposableCollection as G, UniverInstanceType as J, OnLifecycle as Y, LifecycleStages as K, ICommandService as Q, Plugin as X, Tools as Z } from "@univerjs/core";
5
- import { ISidebarService as ee, IShortcutService as te, IMessageService as re, MenuItemType as ie, MenuPosition as ne, getMenuHiddenObservable as oe, ComponentManager as se, IMenuService as ce } from "@univerjs/ui";
6
- import { BehaviorSubject as le, distinctUntilChanged as pe } from "rxjs";
7
- import ae, { useRef as P, useEffect as ue, useCallback as de } from "react";
8
- import { Button as ve, MessageType as j } from "@univerjs/design";
9
- import { editor as fe } from "monaco-editor";
10
- import { FUniver as _e } from "@univerjs/facade";
11
- import { getCurrentRangeDisable$ as he } from "@univerjs/sheets-ui";
12
- import { WorkbookEditablePermission as me, WorksheetEditPermission as ge, WorksheetSetCellStylePermission as Se, WorksheetSetCellValuePermission as Ee, RangeProtectionPermissionEditPoint as Pe } from "@univerjs/sheets";
13
- class M extends S {
1
+ var __defProp = Object.defineProperty;
2
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: !0, configurable: !0, writable: !0, value }) : obj[key] = value;
3
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: !0 });
4
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key != "symbol" ? key + "" : key, value);
5
+ import { Disposable, CommandType, toDisposable, createIdentifier, Inject, Injector, ILogService, useDependency, LocaleService, DisposableCollection, UniverInstanceType, OnLifecycle, LifecycleStages, ICommandService, Plugin, Tools } from "@univerjs/core";
6
+ import { ISidebarService, IShortcutService, IMessageService, MenuItemType, MenuPosition, getMenuHiddenObservable, ComponentManager, IMenuService } from "@univerjs/ui";
7
+ import { BehaviorSubject, distinctUntilChanged } from "rxjs";
8
+ import require$$0, { useRef, useEffect, useCallback } from "react";
9
+ import { Button, MessageType } from "@univerjs/design";
10
+ import { editor } from "monaco-editor";
11
+ import { FUniver } from "@univerjs/facade";
12
+ import { getCurrentRangeDisable$ } from "@univerjs/sheets-ui";
13
+ import { WorkbookEditablePermission, WorksheetEditPermission, WorksheetSetCellStylePermission, WorksheetSetCellValuePermission, RangeProtectionPermissionEditPoint } from "@univerjs/sheets";
14
+ const _ScriptPanelService = class _ScriptPanelService extends Disposable {
14
15
  constructor() {
15
16
  super(...arguments);
16
- u(this, "_open$", new le(!1));
17
- u(this, "open$", this._open$.pipe(pe()));
17
+ __publicField(this, "_open$", new BehaviorSubject(!1));
18
+ __publicField(this, "open$", this._open$.pipe(distinctUntilChanged()));
18
19
  }
19
20
  get isOpen() {
20
21
  return this._open$.getValue();
@@ -28,20 +29,22 @@ class M extends S {
28
29
  close() {
29
30
  this._open$.next(!1);
30
31
  }
31
- }
32
- const D = "ScriptPanel", N = {
33
- type: k.OPERATION,
32
+ };
33
+ __name(_ScriptPanelService, "ScriptPanelService");
34
+ let ScriptPanelService = _ScriptPanelService;
35
+ const ScriptPanelComponentName = "ScriptPanel", ToggleScriptPanelOperation = {
36
+ type: CommandType.OPERATION,
34
37
  id: "univer.operation.toggle-script-panel",
35
- handler: (t) => {
36
- const e = t.get(M), r = t.get(ee);
37
- return e.isOpen ? (e.close(), r.close()) : (e.open(), r.open({
38
+ handler: /* @__PURE__ */ __name((accessor) => {
39
+ const scriptPanelService = accessor.get(ScriptPanelService), sidebarService = accessor.get(ISidebarService);
40
+ return scriptPanelService.isOpen ? (scriptPanelService.close(), sidebarService.close()) : (scriptPanelService.open(), sidebarService.open({
38
41
  header: { title: "script-panel.title" },
39
- children: { label: D },
42
+ children: { label: ScriptPanelComponentName },
40
43
  width: 600
41
44
  })), !0;
42
- }
45
+ }, "handler")
43
46
  };
44
- var W = { exports: {} }, E = {};
47
+ var jsxRuntime = { exports: {} }, reactJsxRuntime_production_min = {};
45
48
  /**
46
49
  * @license React
47
50
  * react-jsx-runtime.production.min.js
@@ -51,27 +54,28 @@ var W = { exports: {} }, E = {};
51
54
  * This source code is licensed under the MIT license found in the
52
55
  * LICENSE file in the root directory of this source tree.
53
56
  */
54
- 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 };
55
- function A(t, e, r) {
56
- var i, n = {}, o = null, s = null;
57
- r !== void 0 && (o = "" + r), e.key !== void 0 && (o = "" + e.key), e.ref !== void 0 && (s = e.ref);
58
- for (i in e) Ie.call(e, i) && !Ce.hasOwnProperty(i) && (n[i] = e[i]);
59
- if (t && t.defaultProps) for (i in e = t.defaultProps, e) n[i] === void 0 && (n[i] = e[i]);
60
- return { $$typeof: xe, type: t, key: o, ref: s, props: n, _owner: be.current };
57
+ var f = require$$0, k = Symbol.for("react.element"), l = Symbol.for("react.fragment"), m = Object.prototype.hasOwnProperty, n = f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner, p = { key: !0, ref: !0, __self: !0, __source: !0 };
58
+ function q(c, a, g) {
59
+ var b, d = {}, e = null, h = null;
60
+ g !== void 0 && (e = "" + g), a.key !== void 0 && (e = "" + a.key), a.ref !== void 0 && (h = a.ref);
61
+ for (b in a) m.call(a, b) && !p.hasOwnProperty(b) && (d[b] = a[b]);
62
+ if (c && c.defaultProps) for (b in a = c.defaultProps, a) d[b] === void 0 && (d[b] = a[b]);
63
+ return { $$typeof: k, type: c, key: e, ref: h, props: d, _owner: n.current };
61
64
  }
62
- E.Fragment = Oe;
63
- E.jsx = A;
64
- E.jsxs = A;
65
- W.exports = E;
66
- var d = W.exports;
67
- class x extends S {
68
- constructor(r) {
65
+ __name(q, "q");
66
+ reactJsxRuntime_production_min.Fragment = l;
67
+ reactJsxRuntime_production_min.jsx = q;
68
+ reactJsxRuntime_production_min.jsxs = q;
69
+ jsxRuntime.exports = reactJsxRuntime_production_min;
70
+ var jsxRuntimeExports = jsxRuntime.exports;
71
+ const _ScriptEditorService = class _ScriptEditorService extends Disposable {
72
+ constructor(_config) {
69
73
  super();
70
- u(this, "_editorInstance", null);
71
- this._config = r;
74
+ __publicField(this, "_editorInstance", null);
75
+ this._config = _config;
72
76
  }
73
- setEditorInstance(r) {
74
- return this._editorInstance = r, U(() => this._editorInstance = null);
77
+ setEditorInstance(editor2) {
78
+ return this._editorInstance = editor2, toDisposable(() => this._editorInstance = null);
75
79
  }
76
80
  getEditorInstance() {
77
81
  return this._editorInstance;
@@ -81,160 +85,166 @@ class x extends S {
81
85
  getWorkerUrl: this._config.getWorkerUrl
82
86
  });
83
87
  }
84
- }
85
- var we = Object.defineProperty, je = Object.getOwnPropertyDescriptor, $e = (t, e, r, i) => {
86
- for (var n = i > 1 ? void 0 : i ? je(e, r) : e, o = t.length - 1, s; o >= 0; o--)
87
- (s = t[o]) && (n = (i ? s(e, r, n) : s(n)) || n);
88
- return i && n && we(e, r, n), n;
89
- }, $ = (t, e) => (r, i) => e(r, i, t);
90
- const F = z("univer.uniscript.execution-service");
91
- let O = class extends S {
92
- constructor(t, e) {
93
- super(), this._logService = t, this._injector = e;
94
- }
95
- async execute(t) {
88
+ };
89
+ __name(_ScriptEditorService, "ScriptEditorService");
90
+ let ScriptEditorService = _ScriptEditorService;
91
+ var __defProp$2 = Object.defineProperty, __getOwnPropDesc$2 = Object.getOwnPropertyDescriptor, __decorateClass$2 = /* @__PURE__ */ __name((decorators, target, key, kind) => {
92
+ for (var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$2(target, key) : target, i = decorators.length - 1, decorator; i >= 0; i--)
93
+ (decorator = decorators[i]) && (result = (kind ? decorator(target, key, result) : decorator(result)) || result);
94
+ return kind && result && __defProp$2(target, key, result), result;
95
+ }, "__decorateClass$2"), __decorateParam$2 = /* @__PURE__ */ __name((index, decorator) => (target, key) => decorator(target, key, index), "__decorateParam$2");
96
+ const IUniscriptExecutionService = createIdentifier("univer.uniscript.execution-service");
97
+ var _a;
98
+ let UniscriptExecutionService = (_a = class extends Disposable {
99
+ constructor(_logService, _injector) {
100
+ super(), this._logService = _logService, this._injector = _injector;
101
+ }
102
+ async execute(code) {
96
103
  this._logService.log("[UniscriptExecutionService]", "executing Uniscript...");
97
- const e = _e.newAPI(this._injector), r = new Function("univerAPI", `(() => {${t}})()`);
104
+ const apiInstance = FUniver.newAPI(this._injector), scriptFunction = new Function("univerAPI", `(() => {${code}})()`);
98
105
  try {
99
- return r(e), !0;
100
- } catch (i) {
101
- return this._logService.error(i), !1;
106
+ return scriptFunction(apiInstance), !0;
107
+ } catch (e) {
108
+ return this._logService.error(e), !1;
102
109
  }
103
110
  }
111
+ }, __name(_a, "UniscriptExecutionService"), _a);
112
+ UniscriptExecutionService = __decorateClass$2([
113
+ __decorateParam$2(0, ILogService),
114
+ __decorateParam$2(1, Inject(Injector))
115
+ ], UniscriptExecutionService);
116
+ const scriptEditorPanel = "univer-script-editor-panel", scriptEditorContent = "univer-script-editor-content", scriptEditorActions = "univer-script-editor-actions", styles = {
117
+ scriptEditorPanel,
118
+ scriptEditorContent,
119
+ scriptEditorActions
104
120
  };
105
- O = $e([
106
- $(0, H),
107
- $(1, f(I))
108
- ], O);
109
- const Re = "univer-script-editor-panel", Te = "univer-script-editor-content", Ue = "univer-script-editor-actions", m = {
110
- scriptEditorPanel: Re,
111
- scriptEditorContent: Te,
112
- scriptEditorActions: Ue
113
- };
114
- function Me() {
115
- const t = P(null), e = P(null), r = P(null), i = p(b), n = p(te), o = p(x);
116
- ue(() => {
117
- const C = e.current, a = t.current;
118
- let c = null, _ = null;
119
- if (C && a) {
120
- o.requireVscodeEditor();
121
- const h = r.current = fe.create(C, {
121
+ function ScriptEditorPanel() {
122
+ const editorContentRef = useRef(null), editorContainerRef = useRef(null), monacoEditorRef = useRef(null), localeService = useDependency(LocaleService), shortcutService = useDependency(IShortcutService), editorService = useDependency(ScriptEditorService);
123
+ useEffect(() => {
124
+ const containerElement = editorContainerRef.current, contentElement = editorContentRef.current;
125
+ let disposableCollection = null, resizeObserver = null;
126
+ if (containerElement && contentElement) {
127
+ editorService.requireVscodeEditor();
128
+ const monacoEditor = monacoEditorRef.current = editor.create(containerElement, {
122
129
  value: "",
123
130
  language: "javascript"
124
131
  });
125
- _ = new ResizeObserver(() => {
126
- let w = requestIdleCallback(() => {
127
- if (!w) return;
128
- const { height: L, width: B } = a.getBoundingClientRect();
129
- h.layout({ width: B, height: L }), w = void 0;
132
+ resizeObserver = new ResizeObserver(() => {
133
+ let timer = requestIdleCallback(() => {
134
+ if (!timer) return;
135
+ const { height, width } = contentElement.getBoundingClientRect();
136
+ monacoEditor.layout({ width, height }), timer = void 0;
130
137
  });
131
- }), _.observe(a);
132
- let l;
133
- c = new G(), c.add(o.setEditorInstance(h)), c.add(
134
- h.onDidFocusEditorWidget(() => {
135
- l = n.forceEscape();
138
+ }), resizeObserver.observe(contentElement);
139
+ let terminateEscaping;
140
+ disposableCollection = new DisposableCollection(), disposableCollection.add(editorService.setEditorInstance(monacoEditor)), disposableCollection.add(
141
+ monacoEditor.onDidFocusEditorWidget(() => {
142
+ terminateEscaping = shortcutService.forceEscape();
136
143
  })
137
- ), c.add(
138
- h.onDidBlurEditorWidget(() => {
139
- l == null || l.dispose(), l = void 0;
144
+ ), disposableCollection.add(
145
+ monacoEditor.onDidBlurEditorWidget(() => {
146
+ terminateEscaping == null || terminateEscaping.dispose(), terminateEscaping = void 0;
140
147
  })
141
- ), c.add(U(() => l == null ? void 0 : l.dispose()));
148
+ ), disposableCollection.add(toDisposable(() => terminateEscaping == null ? void 0 : terminateEscaping.dispose()));
142
149
  }
143
150
  return () => {
144
- _ && a && _.unobserve(a), c == null || c.dispose();
151
+ resizeObserver && contentElement && resizeObserver.unobserve(contentElement), disposableCollection == null || disposableCollection.dispose();
145
152
  };
146
- }, [o, n]);
147
- const s = De(r);
148
- return /* @__PURE__ */ d.jsxs("div", { className: m.scriptEditorPanel, children: [
149
- /* @__PURE__ */ d.jsx("div", { className: m.scriptEditorContent, ref: t, children: /* @__PURE__ */ d.jsx("div", { className: m.scriptEditorContainer, ref: e }) }),
150
- /* @__PURE__ */ d.jsx("div", { className: m.scriptEditorActions, children: /* @__PURE__ */ d.jsx(ve, { type: "primary", size: "small", onClick: s, children: i.t("script-panel.panel.execute") }) })
153
+ }, [editorService, shortcutService]);
154
+ const startExecution = useExecution(monacoEditorRef);
155
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: styles.scriptEditorPanel, children: [
156
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: styles.scriptEditorContent, ref: editorContentRef, children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: styles.scriptEditorContainer, ref: editorContainerRef }) }),
157
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: styles.scriptEditorActions, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Button, { type: "primary", size: "small", onClick: startExecution, children: localeService.t("script-panel.panel.execute") }) })
151
158
  ] });
152
159
  }
153
- function De(t) {
154
- const e = p(F), r = p(re), i = p(b);
155
- return de(() => {
156
- var o;
157
- const n = (o = t.current) == null ? void 0 : o.getModel();
158
- n && e.execute(n.getValue()).then(() => {
159
- r.show({
160
- content: i.t("uniscript.message.success"),
161
- type: j.Success
160
+ __name(ScriptEditorPanel, "ScriptEditorPanel");
161
+ function useExecution(monacoEditorRef) {
162
+ const scriptService = useDependency(IUniscriptExecutionService), messageService = useDependency(IMessageService), localeService = useDependency(LocaleService);
163
+ return useCallback(() => {
164
+ var _a4;
165
+ const model = (_a4 = monacoEditorRef.current) == null ? void 0 : _a4.getModel();
166
+ model && scriptService.execute(model.getValue()).then(() => {
167
+ messageService.show({
168
+ content: localeService.t("uniscript.message.success"),
169
+ type: MessageType.Success
162
170
  });
163
171
  }).catch(() => {
164
- r.show({
165
- content: i.t("uniscript.message.failed"),
166
- type: j.Error
172
+ messageService.show({
173
+ content: localeService.t("uniscript.message.failed"),
174
+ type: MessageType.Error
167
175
  });
168
176
  });
169
- }, [i, r, t, e]);
177
+ }, [localeService, messageService, monacoEditorRef, scriptService]);
170
178
  }
171
- function Ne(t) {
179
+ __name(useExecution, "useExecution");
180
+ function UniscriptMenuItemFactory(accessor) {
172
181
  return {
173
- id: N.id,
182
+ id: ToggleScriptPanelOperation.id,
174
183
  title: "toggle-script-panel",
175
184
  tooltip: "script-panel.tooltip.menu-button",
176
185
  icon: "CodeSingle",
177
- type: ie.BUTTON,
178
- positions: [ne.TOOLBAR_START],
186
+ type: MenuItemType.BUTTON,
187
+ positions: [MenuPosition.TOOLBAR_START],
179
188
  // FIXME hidden$ and disabled$ are not correctly in doc
180
- hidden$: oe(t, J.UNIVER_SHEET),
181
- disabled$: he(t, { workbookTypes: [me], worksheetTypes: [ge, Se, Ee], rangeTypes: [Pe] })
189
+ hidden$: getMenuHiddenObservable(accessor, UniverInstanceType.UNIVER_SHEET),
190
+ disabled$: getCurrentRangeDisable$(accessor, { workbookTypes: [WorkbookEditablePermission], worksheetTypes: [WorksheetEditPermission, WorksheetSetCellStylePermission, WorksheetSetCellValuePermission], rangeTypes: [RangeProtectionPermissionEditPoint] })
182
191
  };
183
192
  }
184
- var We = Object.defineProperty, Ae = Object.getOwnPropertyDescriptor, Fe = (t, e, r, i) => {
185
- for (var n = i > 1 ? void 0 : i ? Ae(e, r) : e, o = t.length - 1, s; o >= 0; o--)
186
- (s = t[o]) && (n = (i ? s(e, r, n) : s(n)) || n);
187
- return i && n && We(e, r, n), n;
188
- }, g = (t, e) => (r, i) => e(r, i, t);
189
- const Le = {};
190
- let v = class extends S {
191
- constructor(t, e, r, i, n) {
192
- super(), this._config = t, this._injector = e, this._menuService = r;
193
- const { menu: o = {} } = this._config;
194
- this.disposeWithMe(r.addMenuItem(this._injector.invoke(Ne), o)), this.disposeWithMe(n.register(D, Me)), this.disposeWithMe(i.registerCommand(N));
195
- }
196
- };
197
- v = Fe([
198
- Y(K.Steady, v),
199
- g(1, f(I)),
200
- g(2, ce),
201
- g(3, Q),
202
- g(4, f(se))
203
- ], v);
204
- var Be = Object.defineProperty, Ve = Object.getOwnPropertyDescriptor, qe = (t, e, r, i) => {
205
- for (var n = i > 1 ? void 0 : i ? Ve(e, r) : e, o = t.length - 1, s; o >= 0; o--)
206
- (s = t[o]) && (n = (i ? s(e, r, n) : s(n)) || n);
207
- return i && n && Be(e, r, n), n;
208
- }, R = (t, e) => (r, i) => e(r, i, t);
209
- const ke = "uniscript";
210
- var y;
211
- let T = (y = class extends X {
212
- constructor(t = {}, e, r) {
213
- super(), this._config = t, this._injector = e, this._localeService = r, this._config = Z.deepMerge({}, Le, this._config);
214
- }
215
- onStarting(t) {
193
+ __name(UniscriptMenuItemFactory, "UniscriptMenuItemFactory");
194
+ var __defProp$1 = Object.defineProperty, __getOwnPropDesc$1 = Object.getOwnPropertyDescriptor, __decorateClass$1 = /* @__PURE__ */ __name((decorators, target, key, kind) => {
195
+ for (var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$1(target, key) : target, i = decorators.length - 1, decorator; i >= 0; i--)
196
+ (decorator = decorators[i]) && (result = (kind ? decorator(target, key, result) : decorator(result)) || result);
197
+ return kind && result && __defProp$1(target, key, result), result;
198
+ }, "__decorateClass$1"), __decorateParam$1 = /* @__PURE__ */ __name((index, decorator) => (target, key) => decorator(target, key, index), "__decorateParam$1");
199
+ const DefaultUniscriptConfig = {};
200
+ var _a2;
201
+ let UniscriptController = (_a2 = class extends Disposable {
202
+ constructor(_config, _injector, _menuService, commandService, componentManager) {
203
+ super(), this._config = _config, this._injector = _injector, this._menuService = _menuService;
204
+ const { menu = {} } = this._config;
205
+ this.disposeWithMe(_menuService.addMenuItem(this._injector.invoke(UniscriptMenuItemFactory), menu)), this.disposeWithMe(componentManager.register(ScriptPanelComponentName, ScriptEditorPanel)), this.disposeWithMe(commandService.registerCommand(ToggleScriptPanelOperation));
206
+ }
207
+ }, __name(_a2, "UniscriptController"), _a2);
208
+ UniscriptController = __decorateClass$1([
209
+ OnLifecycle(LifecycleStages.Steady, UniscriptController),
210
+ __decorateParam$1(1, Inject(Injector)),
211
+ __decorateParam$1(2, IMenuService),
212
+ __decorateParam$1(3, ICommandService),
213
+ __decorateParam$1(4, Inject(ComponentManager))
214
+ ], UniscriptController);
215
+ var __defProp2 = Object.defineProperty, __getOwnPropDesc = Object.getOwnPropertyDescriptor, __decorateClass = /* @__PURE__ */ __name((decorators, target, key, kind) => {
216
+ for (var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target, i = decorators.length - 1, decorator; i >= 0; i--)
217
+ (decorator = decorators[i]) && (result = (kind ? decorator(target, key, result) : decorator(result)) || result);
218
+ return kind && result && __defProp2(target, key, result), result;
219
+ }, "__decorateClass"), __decorateParam = /* @__PURE__ */ __name((index, decorator) => (target, key) => decorator(target, key, index), "__decorateParam");
220
+ const PLUGIN_NAME = "uniscript";
221
+ var _a3;
222
+ let UniverUniscriptPlugin = (_a3 = class extends Plugin {
223
+ constructor(_config = {}, _injector, _localeService) {
224
+ super(), this._config = _config, this._injector = _injector, this._localeService = _localeService, this._config = Tools.deepMerge({}, DefaultUniscriptConfig, this._config);
225
+ }
226
+ onStarting() {
227
+ const injector = this._injector;
216
228
  [
217
- // controllers
218
- [v, { useFactory: () => t.createInstance(v, this._config) }],
219
- // services
220
- [x, { useFactory: () => t.createInstance(x, this._config) }],
221
- [M]
222
- ].forEach((r) => t.add(r)), this.registerExecution();
229
+ [UniscriptController, { useFactory: /* @__PURE__ */ __name(() => injector.createInstance(UniscriptController, this._config), "useFactory") }],
230
+ [ScriptEditorService, { useFactory: /* @__PURE__ */ __name(() => injector.createInstance(ScriptEditorService, this._config), "useFactory") }],
231
+ [ScriptPanelService]
232
+ ].forEach((d) => injector.add(d)), this.registerExecution();
223
233
  }
224
234
  /**
225
235
  * Allows being overridden, replacing with a new UniscriptExecutionService.
226
236
  */
227
237
  registerExecution() {
228
- this._injector.add([F, { useClass: O }]);
238
+ this._injector.add([IUniscriptExecutionService, { useClass: UniscriptExecutionService }]);
229
239
  }
230
- }, u(y, "pluginName", ke), y);
231
- T = qe([
232
- R(1, f(I)),
233
- R(2, f(b))
234
- ], T);
240
+ }, __name(_a3, "UniverUniscriptPlugin"), __publicField(_a3, "pluginName", PLUGIN_NAME), _a3);
241
+ UniverUniscriptPlugin = __decorateClass([
242
+ __decorateParam(1, Inject(Injector)),
243
+ __decorateParam(2, Inject(LocaleService))
244
+ ], UniverUniscriptPlugin);
235
245
  export {
236
- F as IUniscriptExecutionService,
237
- x as ScriptEditorService,
238
- N as ToggleScriptPanelOperation,
239
- T as UniverUniscriptPlugin
246
+ IUniscriptExecutionService,
247
+ ScriptEditorService,
248
+ ToggleScriptPanelOperation,
249
+ UniverUniscriptPlugin
240
250
  };
@@ -7,7 +7,7 @@ export declare class UniverUniscriptPlugin extends Plugin {
7
7
  private readonly _localeService;
8
8
  static pluginName: string;
9
9
  constructor(_config: Partial<IUniverUniscriptConfig>, _injector: Injector, _localeService: LocaleService);
10
- onStarting(injector: Injector): void;
10
+ onStarting(): void;
11
11
  /**
12
12
  * Allows being overridden, replacing with a new UniscriptExecutionService.
13
13
  */
package/lib/umd/index.js CHANGED
@@ -1,4 +1,4 @@
1
- (function(o,t){typeof exports=="object"&&typeof module<"u"?t(exports,require("@univerjs/core"),require("@univerjs/ui"),require("rxjs"),require("react"),require("@univerjs/design"),require("monaco-editor"),require("@univerjs/facade"),require("@univerjs/sheets-ui"),require("@univerjs/sheets")):typeof define=="function"&&define.amd?define(["exports","@univerjs/core","@univerjs/ui","rxjs","react","@univerjs/design","monaco-editor","@univerjs/facade","@univerjs/sheets-ui","@univerjs/sheets"],t):(o=typeof globalThis<"u"?globalThis:o||self,t(o.UniverUniscript={},o.UniverCore,o.UniverUi,o.rxjs,o.React,o.UniverDesign,o.monaco,o.UniverFacade,o.UniverSheetsUi,o.UniverSheets))})(this,function(o,t,a,b,d,I,A,L,F,v){"use strict";var ae=Object.defineProperty;var ue=(o,t,a)=>t in o?ae(o,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):o[t]=a;var g=(o,t,a)=>ue(o,typeof t!="symbol"?t+"":t,a);var C;class D extends t.Disposable{constructor(){super(...arguments);g(this,"_open$",new b.BehaviorSubject(!1));g(this,"open$",this._open$.pipe(b.distinctUntilChanged()))}get isOpen(){return this._open$.getValue()}dispose(){super.dispose(),this._open$.next(!1),this._open$.complete()}open(){this._open$.next(!0)}close(){this._open$.next(!1)}}const w="ScriptPanel",O={type:t.CommandType.OPERATION,id:"univer.operation.toggle-script-panel",handler:r=>{const e=r.get(D),i=r.get(a.ISidebarService);return e.isOpen?(e.close(),i.close()):(e.open(),i.open({header:{title:"script-panel.title"},children:{label:w},width:600})),!0}};var T={exports:{}},S={};/**
1
+ (function(global,factory){typeof exports=="object"&&typeof module<"u"?factory(exports,require("@univerjs/core"),require("@univerjs/ui"),require("rxjs"),require("react"),require("@univerjs/design"),require("monaco-editor"),require("@univerjs/facade"),require("@univerjs/sheets-ui"),require("@univerjs/sheets")):typeof define=="function"&&define.amd?define(["exports","@univerjs/core","@univerjs/ui","rxjs","react","@univerjs/design","monaco-editor","@univerjs/facade","@univerjs/sheets-ui","@univerjs/sheets"],factory):(global=typeof globalThis<"u"?globalThis:global||self,factory(global.UniverUniscript={},global.UniverCore,global.UniverUi,global.rxjs,global.React,global.UniverDesign,global.monaco,global.UniverFacade,global.UniverSheetsUi,global.UniverSheets))})(this,function(exports2,core,ui,rxjs,require$$0,design,monacoEditor,facade,sheetsUi,sheets){"use strict";var __defProp=Object.defineProperty;var __defNormalProp=(obj,key,value)=>key in obj?__defProp(obj,key,{enumerable:!0,configurable:!0,writable:!0,value}):obj[key]=value;var __name=(target,value)=>__defProp(target,"name",{value,configurable:!0});var __publicField=(obj,key,value)=>__defNormalProp(obj,typeof key!="symbol"?key+"":key,value);var _a,_b,_c;const _ScriptPanelService=class _ScriptPanelService extends core.Disposable{constructor(){super(...arguments);__publicField(this,"_open$",new rxjs.BehaviorSubject(!1));__publicField(this,"open$",this._open$.pipe(rxjs.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)}};__name(_ScriptPanelService,"ScriptPanelService");let ScriptPanelService=_ScriptPanelService;const ScriptPanelComponentName="ScriptPanel",ToggleScriptPanelOperation={type:core.CommandType.OPERATION,id:"univer.operation.toggle-script-panel",handler:__name(accessor=>{const scriptPanelService=accessor.get(ScriptPanelService),sidebarService=accessor.get(ui.ISidebarService);return scriptPanelService.isOpen?(scriptPanelService.close(),sidebarService.close()):(scriptPanelService.open(),sidebarService.open({header:{title:"script-panel.title"},children:{label:ScriptPanelComponentName},width:600})),!0},"handler")};var jsxRuntime={exports:{}},reactJsxRuntime_production_min={};/**
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 q=d,B=Symbol.for("react.element"),V=Symbol.for("react.fragment"),k=Object.prototype.hasOwnProperty,z=q.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,H={key:!0,ref:!0,__self:!0,__source:!0};function R(r,e,i){var n,s={},c=null,p=null;i!==void 0&&(c=""+i),e.key!==void 0&&(c=""+e.key),e.ref!==void 0&&(p=e.ref);for(n in e)k.call(e,n)&&!H.hasOwnProperty(n)&&(s[n]=e[n]);if(r&&r.defaultProps)for(n in e=r.defaultProps,e)s[n]===void 0&&(s[n]=e[n]);return{$$typeof:B,type:r,key:c,ref:p,props:s,_owner:z.current}}S.Fragment=V,S.jsx=R,S.jsxs=R,T.exports=S;var f=T.exports;class m extends t.Disposable{constructor(i){super();g(this,"_editorInstance",null);this._config=i}setEditorInstance(i){return this._editorInstance=i,t.toDisposable(()=>this._editorInstance=null)}getEditorInstance(){return this._editorInstance}requireVscodeEditor(){window.MonacoEnvironment||(window.MonacoEnvironment={getWorkerUrl:this._config.getWorkerUrl})}}var G=Object.defineProperty,J=Object.getOwnPropertyDescriptor,Y=(r,e,i,n)=>{for(var s=n>1?void 0:n?J(e,i):e,c=r.length-1,p;c>=0;c--)(p=r[c])&&(s=(n?p(e,i,s):p(s))||s);return n&&s&&G(e,i,s),s},M=(r,e)=>(i,n)=>e(i,n,r);const U=t.createIdentifier("univer.uniscript.execution-service");let x=class extends t.Disposable{constructor(r,e){super(),this._logService=r,this._injector=e}async execute(r){this._logService.log("[UniscriptExecutionService]","executing Uniscript...");const e=L.FUniver.newAPI(this._injector),i=new Function("univerAPI",`(() => {${r}})()`);try{return i(e),!0}catch(n){return this._logService.error(n),!1}}};x=Y([M(0,t.ILogService),M(1,t.Inject(t.Injector))],x);const E={scriptEditorPanel:"univer-script-editor-panel",scriptEditorContent:"univer-script-editor-content",scriptEditorActions:"univer-script-editor-actions"};function K(){const r=d.useRef(null),e=d.useRef(null),i=d.useRef(null),n=t.useDependency(t.LocaleService),s=t.useDependency(a.IShortcutService),c=t.useDependency(m);d.useEffect(()=>{const $=e.current,h=r.current;let u=null,j=null;if($&&h){c.requireVscodeEditor();const y=i.current=A.editor.create($,{value:"",language:"javascript"});j=new ResizeObserver(()=>{let W=requestIdleCallback(()=>{if(!W)return;const{height:ce,width:pe}=h.getBoundingClientRect();y.layout({width:pe,height:ce}),W=void 0})}),j.observe(h);let l;u=new t.DisposableCollection,u.add(c.setEditorInstance(y)),u.add(y.onDidFocusEditorWidget(()=>{l=s.forceEscape()})),u.add(y.onDidBlurEditorWidget(()=>{l==null||l.dispose(),l=void 0})),u.add(t.toDisposable(()=>l==null?void 0:l.dispose()))}return()=>{j&&h&&j.unobserve(h),u==null||u.dispose()}},[c,s]);const p=Q(i);return f.jsxs("div",{className:E.scriptEditorPanel,children:[f.jsx("div",{className:E.scriptEditorContent,ref:r,children:f.jsx("div",{className:E.scriptEditorContainer,ref:e})}),f.jsx("div",{className:E.scriptEditorActions,children:f.jsx(I.Button,{type:"primary",size:"small",onClick:p,children:n.t("script-panel.panel.execute")})})]})}function Q(r){const e=t.useDependency(U),i=t.useDependency(a.IMessageService),n=t.useDependency(t.LocaleService);return d.useCallback(()=>{var c;const s=(c=r.current)==null?void 0:c.getModel();s&&e.execute(s.getValue()).then(()=>{i.show({content:n.t("uniscript.message.success"),type:I.MessageType.Success})}).catch(()=>{i.show({content:n.t("uniscript.message.failed"),type:I.MessageType.Error})})},[n,i,r,e])}function X(r){return{id:O.id,title:"toggle-script-panel",tooltip:"script-panel.tooltip.menu-button",icon:"CodeSingle",type:a.MenuItemType.BUTTON,positions:[a.MenuPosition.TOOLBAR_START],hidden$:a.getMenuHiddenObservable(r,t.UniverInstanceType.UNIVER_SHEET),disabled$:F.getCurrentRangeDisable$(r,{workbookTypes:[v.WorkbookEditablePermission],worksheetTypes:[v.WorksheetEditPermission,v.WorksheetSetCellStylePermission,v.WorksheetSetCellValuePermission],rangeTypes:[v.RangeProtectionPermissionEditPoint]})}}var Z=Object.defineProperty,ee=Object.getOwnPropertyDescriptor,te=(r,e,i,n)=>{for(var s=n>1?void 0:n?ee(e,i):e,c=r.length-1,p;c>=0;c--)(p=r[c])&&(s=(n?p(e,i,s):p(s))||s);return n&&s&&Z(e,i,s),s},P=(r,e)=>(i,n)=>e(i,n,r);const ne={};let _=class extends t.Disposable{constructor(r,e,i,n,s){super(),this._config=r,this._injector=e,this._menuService=i;const{menu:c={}}=this._config;this.disposeWithMe(i.addMenuItem(this._injector.invoke(X),c)),this.disposeWithMe(s.register(w,K)),this.disposeWithMe(n.registerCommand(O))}};_=te([t.OnLifecycle(t.LifecycleStages.Steady,_),P(1,t.Inject(t.Injector)),P(2,a.IMenuService),P(3,t.ICommandService),P(4,t.Inject(a.ComponentManager))],_);var ie=Object.defineProperty,re=Object.getOwnPropertyDescriptor,se=(r,e,i,n)=>{for(var s=n>1?void 0:n?re(e,i):e,c=r.length-1,p;c>=0;c--)(p=r[c])&&(s=(n?p(e,i,s):p(s))||s);return n&&s&&ie(e,i,s),s},N=(r,e)=>(i,n)=>e(i,n,r);const oe="uniscript";o.UniverUniscriptPlugin=(C=class extends t.Plugin{constructor(e={},i,n){super(),this._config=e,this._injector=i,this._localeService=n,this._config=t.Tools.deepMerge({},ne,this._config)}onStarting(e){[[_,{useFactory:()=>e.createInstance(_,this._config)}],[m,{useFactory:()=>e.createInstance(m,this._config)}],[D]].forEach(n=>e.add(n)),this.registerExecution()}registerExecution(){this._injector.add([U,{useClass:x}])}},g(C,"pluginName",oe),C),o.UniverUniscriptPlugin=se([N(1,t.Inject(t.Injector)),N(2,t.Inject(t.LocaleService))],o.UniverUniscriptPlugin),o.IUniscriptExecutionService=U,o.ScriptEditorService=m,o.ToggleScriptPanelOperation=O,Object.defineProperty(o,Symbol.toStringTag,{value:"Module"})});
9
+ */var f=require$$0,k=Symbol.for("react.element"),l=Symbol.for("react.fragment"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};function q(c,a,g){var b,d={},e=null,h=null;g!==void 0&&(e=""+g),a.key!==void 0&&(e=""+a.key),a.ref!==void 0&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)d[b]===void 0&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}__name(q,"q"),reactJsxRuntime_production_min.Fragment=l,reactJsxRuntime_production_min.jsx=q,reactJsxRuntime_production_min.jsxs=q,jsxRuntime.exports=reactJsxRuntime_production_min;var jsxRuntimeExports=jsxRuntime.exports;const _ScriptEditorService=class _ScriptEditorService extends core.Disposable{constructor(_config){super();__publicField(this,"_editorInstance",null);this._config=_config}setEditorInstance(editor){return this._editorInstance=editor,core.toDisposable(()=>this._editorInstance=null)}getEditorInstance(){return this._editorInstance}requireVscodeEditor(){window.MonacoEnvironment||(window.MonacoEnvironment={getWorkerUrl:this._config.getWorkerUrl})}};__name(_ScriptEditorService,"ScriptEditorService");let ScriptEditorService=_ScriptEditorService;var __defProp$2=Object.defineProperty,__getOwnPropDesc$2=Object.getOwnPropertyDescriptor,__decorateClass$2=__name((decorators,target,key,kind)=>{for(var result=kind>1?void 0:kind?__getOwnPropDesc$2(target,key):target,i=decorators.length-1,decorator;i>=0;i--)(decorator=decorators[i])&&(result=(kind?decorator(target,key,result):decorator(result))||result);return kind&&result&&__defProp$2(target,key,result),result},"__decorateClass$2"),__decorateParam$2=__name((index,decorator)=>(target,key)=>decorator(target,key,index),"__decorateParam$2");const IUniscriptExecutionService=core.createIdentifier("univer.uniscript.execution-service");let UniscriptExecutionService=(_a=class extends core.Disposable{constructor(_logService,_injector){super(),this._logService=_logService,this._injector=_injector}async execute(code){this._logService.log("[UniscriptExecutionService]","executing Uniscript...");const apiInstance=facade.FUniver.newAPI(this._injector),scriptFunction=new Function("univerAPI",`(() => {${code}})()`);try{return scriptFunction(apiInstance),!0}catch(e){return this._logService.error(e),!1}}},__name(_a,"UniscriptExecutionService"),_a);UniscriptExecutionService=__decorateClass$2([__decorateParam$2(0,core.ILogService),__decorateParam$2(1,core.Inject(core.Injector))],UniscriptExecutionService);const styles={scriptEditorPanel:"univer-script-editor-panel",scriptEditorContent:"univer-script-editor-content",scriptEditorActions:"univer-script-editor-actions"};function ScriptEditorPanel(){const editorContentRef=require$$0.useRef(null),editorContainerRef=require$$0.useRef(null),monacoEditorRef=require$$0.useRef(null),localeService=core.useDependency(core.LocaleService),shortcutService=core.useDependency(ui.IShortcutService),editorService=core.useDependency(ScriptEditorService);require$$0.useEffect(()=>{const containerElement=editorContainerRef.current,contentElement=editorContentRef.current;let disposableCollection=null,resizeObserver=null;if(containerElement&&contentElement){editorService.requireVscodeEditor();const monacoEditor$1=monacoEditorRef.current=monacoEditor.editor.create(containerElement,{value:"",language:"javascript"});resizeObserver=new ResizeObserver(()=>{let timer=requestIdleCallback(()=>{if(!timer)return;const{height,width}=contentElement.getBoundingClientRect();monacoEditor$1.layout({width,height}),timer=void 0})}),resizeObserver.observe(contentElement);let terminateEscaping;disposableCollection=new core.DisposableCollection,disposableCollection.add(editorService.setEditorInstance(monacoEditor$1)),disposableCollection.add(monacoEditor$1.onDidFocusEditorWidget(()=>{terminateEscaping=shortcutService.forceEscape()})),disposableCollection.add(monacoEditor$1.onDidBlurEditorWidget(()=>{terminateEscaping==null||terminateEscaping.dispose(),terminateEscaping=void 0})),disposableCollection.add(core.toDisposable(()=>terminateEscaping==null?void 0:terminateEscaping.dispose()))}return()=>{resizeObserver&&contentElement&&resizeObserver.unobserve(contentElement),disposableCollection==null||disposableCollection.dispose()}},[editorService,shortcutService]);const startExecution=useExecution(monacoEditorRef);return jsxRuntimeExports.jsxs("div",{className:styles.scriptEditorPanel,children:[jsxRuntimeExports.jsx("div",{className:styles.scriptEditorContent,ref:editorContentRef,children:jsxRuntimeExports.jsx("div",{className:styles.scriptEditorContainer,ref:editorContainerRef})}),jsxRuntimeExports.jsx("div",{className:styles.scriptEditorActions,children:jsxRuntimeExports.jsx(design.Button,{type:"primary",size:"small",onClick:startExecution,children:localeService.t("script-panel.panel.execute")})})]})}__name(ScriptEditorPanel,"ScriptEditorPanel");function useExecution(monacoEditorRef){const scriptService=core.useDependency(IUniscriptExecutionService),messageService=core.useDependency(ui.IMessageService),localeService=core.useDependency(core.LocaleService);return require$$0.useCallback(()=>{var _a2;const model=(_a2=monacoEditorRef.current)==null?void 0:_a2.getModel();model&&scriptService.execute(model.getValue()).then(()=>{messageService.show({content:localeService.t("uniscript.message.success"),type:design.MessageType.Success})}).catch(()=>{messageService.show({content:localeService.t("uniscript.message.failed"),type:design.MessageType.Error})})},[localeService,messageService,monacoEditorRef,scriptService])}__name(useExecution,"useExecution");function UniscriptMenuItemFactory(accessor){return{id:ToggleScriptPanelOperation.id,title:"toggle-script-panel",tooltip:"script-panel.tooltip.menu-button",icon:"CodeSingle",type:ui.MenuItemType.BUTTON,positions:[ui.MenuPosition.TOOLBAR_START],hidden$:ui.getMenuHiddenObservable(accessor,core.UniverInstanceType.UNIVER_SHEET),disabled$:sheetsUi.getCurrentRangeDisable$(accessor,{workbookTypes:[sheets.WorkbookEditablePermission],worksheetTypes:[sheets.WorksheetEditPermission,sheets.WorksheetSetCellStylePermission,sheets.WorksheetSetCellValuePermission],rangeTypes:[sheets.RangeProtectionPermissionEditPoint]})}}__name(UniscriptMenuItemFactory,"UniscriptMenuItemFactory");var __defProp$1=Object.defineProperty,__getOwnPropDesc$1=Object.getOwnPropertyDescriptor,__decorateClass$1=__name((decorators,target,key,kind)=>{for(var result=kind>1?void 0:kind?__getOwnPropDesc$1(target,key):target,i=decorators.length-1,decorator;i>=0;i--)(decorator=decorators[i])&&(result=(kind?decorator(target,key,result):decorator(result))||result);return kind&&result&&__defProp$1(target,key,result),result},"__decorateClass$1"),__decorateParam$1=__name((index,decorator)=>(target,key)=>decorator(target,key,index),"__decorateParam$1");const DefaultUniscriptConfig={};let UniscriptController=(_b=class extends core.Disposable{constructor(_config,_injector,_menuService,commandService,componentManager){super(),this._config=_config,this._injector=_injector,this._menuService=_menuService;const{menu={}}=this._config;this.disposeWithMe(_menuService.addMenuItem(this._injector.invoke(UniscriptMenuItemFactory),menu)),this.disposeWithMe(componentManager.register(ScriptPanelComponentName,ScriptEditorPanel)),this.disposeWithMe(commandService.registerCommand(ToggleScriptPanelOperation))}},__name(_b,"UniscriptController"),_b);UniscriptController=__decorateClass$1([core.OnLifecycle(core.LifecycleStages.Steady,UniscriptController),__decorateParam$1(1,core.Inject(core.Injector)),__decorateParam$1(2,ui.IMenuService),__decorateParam$1(3,core.ICommandService),__decorateParam$1(4,core.Inject(ui.ComponentManager))],UniscriptController);var __defProp2=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__decorateClass=__name((decorators,target,key,kind)=>{for(var result=kind>1?void 0:kind?__getOwnPropDesc(target,key):target,i=decorators.length-1,decorator;i>=0;i--)(decorator=decorators[i])&&(result=(kind?decorator(target,key,result):decorator(result))||result);return kind&&result&&__defProp2(target,key,result),result},"__decorateClass"),__decorateParam=__name((index,decorator)=>(target,key)=>decorator(target,key,index),"__decorateParam");const PLUGIN_NAME="uniscript";exports2.UniverUniscriptPlugin=(_c=class extends core.Plugin{constructor(_config={},_injector,_localeService){super(),this._config=_config,this._injector=_injector,this._localeService=_localeService,this._config=core.Tools.deepMerge({},DefaultUniscriptConfig,this._config)}onStarting(){const injector=this._injector;[[UniscriptController,{useFactory:__name(()=>injector.createInstance(UniscriptController,this._config),"useFactory")}],[ScriptEditorService,{useFactory:__name(()=>injector.createInstance(ScriptEditorService,this._config),"useFactory")}],[ScriptPanelService]].forEach(d=>injector.add(d)),this.registerExecution()}registerExecution(){this._injector.add([IUniscriptExecutionService,{useClass:UniscriptExecutionService}])}},__name(_c,"UniverUniscriptPlugin"),__publicField(_c,"pluginName",PLUGIN_NAME),_c),exports2.UniverUniscriptPlugin=__decorateClass([__decorateParam(1,core.Inject(core.Injector)),__decorateParam(2,core.Inject(core.LocaleService))],exports2.UniverUniscriptPlugin),exports2.IUniscriptExecutionService=IUniscriptExecutionService,exports2.ScriptEditorService=ScriptEditorService,exports2.ToggleScriptPanelOperation=ToggleScriptPanelOperation,Object.defineProperty(exports2,Symbol.toStringTag,{value:"Module"})});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@univerjs/uniscript",
3
- "version": "0.2.5",
3
+ "version": "0.2.6",
4
4
  "private": false,
5
5
  "description": "UI component library for building exceptional Univer.",
6
6
  "author": "DreamNum <developer@univer.ai>",
@@ -53,12 +53,12 @@
53
53
  "monaco-editor": ">=0.44.0",
54
54
  "react": "^16.9.0 || ^17.0.0 || ^18.0.0",
55
55
  "rxjs": ">=7.0.0",
56
- "@univerjs/core": "0.2.5",
57
- "@univerjs/facade": "0.2.5",
58
- "@univerjs/sheets": "0.2.5",
59
- "@univerjs/design": "0.2.5",
60
- "@univerjs/sheets-ui": "0.2.5",
61
- "@univerjs/ui": "0.2.5"
56
+ "@univerjs/core": "0.2.6",
57
+ "@univerjs/design": "0.2.6",
58
+ "@univerjs/sheets": "0.2.6",
59
+ "@univerjs/facade": "0.2.6",
60
+ "@univerjs/sheets-ui": "0.2.6",
61
+ "@univerjs/ui": "0.2.6"
62
62
  },
63
63
  "dependencies": {
64
64
  "@univerjs/protocol": "0.1.38-alpha.23"
@@ -68,16 +68,16 @@
68
68
  "less": "^4.2.0",
69
69
  "monaco-editor": "0.50.0",
70
70
  "rxjs": "^7.8.1",
71
- "typescript": "^5.5.3",
72
- "vite": "^5.3.4",
73
- "vitest": "^2.0.3",
74
- "@univerjs/design": "0.2.5",
75
- "@univerjs/facade": "0.2.5",
76
- "@univerjs/shared": "0.2.5",
77
- "@univerjs/sheets-ui": "0.2.5",
78
- "@univerjs/ui": "0.2.5",
79
- "@univerjs/sheets": "0.2.5",
80
- "@univerjs/core": "0.2.5"
71
+ "typescript": "^5.5.4",
72
+ "vite": "^5.3.5",
73
+ "vitest": "^2.0.4",
74
+ "@univerjs/core": "0.2.6",
75
+ "@univerjs/design": "0.2.6",
76
+ "@univerjs/shared": "0.2.6",
77
+ "@univerjs/facade": "0.2.6",
78
+ "@univerjs/sheets": "0.2.6",
79
+ "@univerjs/sheets-ui": "0.2.6",
80
+ "@univerjs/ui": "0.2.6"
81
81
  },
82
82
  "univerSpace": {
83
83
  ".": {