UNPKG

@jecloud/ui

Version:

JECloud UI库,基于ant-design-vue封装

1 lines 1.6 kB
var e=this&&this.__assign||function(){return e=Object.assign||function(e){for(var n,t=1,o=arguments.length;t<o;t++)for(var a in n=arguments[t])Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a]);return e},e.apply(this,arguments)};import{ref as n,onMounted as t,nextTick as o,watch as a,onUnmounted as u,onBeforeUnmount as r}from"vue";import{addResizeListener as i,removeResizeListener as l,debounce as c}from"@jecloud/utils";import{loadMonaco as d}from"./monaco-loader";import{useEditor as f}from"./use-editor";export function useMonaco(s){var v,p,m=s.props,h=s.context,y=h.emit,C=n(),M=n(!0),V=f({props:m,context:h}),O=V.value,b=V.style;a((function(){return O.value}),(function(e,n){v&&O.value!==v.getValue()&&(v.setValue(O.value),y("change",e,n))})),a((function(){return m.language}),(function(){g({editor:v,language:m.language,monaco:p})}));var j=c((function(){null==v||v.layout()}),100);return t((function(){o((function(){d().then((function(n){M.value=!1,p=n,v=n.editor.create(C.value,e(e({theme:"vs-dark",emptySelectionClipboard:!0,fontSize:16},m.editorOptions),{value:m.value,language:m.language})),y("init",v),v.addCommand(n.KeyMod.CtrlCmd|n.KeyCode.KeyS,(function(e){y("save",v.getValue(),e)})),v.onDidChangeModelContent((function(e){var n=v.getValue();O.value=n,y("change",n,e)})),i(C.value,j)}))}))})),r((function(){l(C.value,j)})),u((function(){null==v||v.dispose()})),{style:b,container:C,loading:M,getEditor:function(){return v}}}function g(e){var n=e.editor,t=e.language,o=e.monaco;if(n&&o){var a=n.getModel(),u=n.getValue(),r=o.editor.createModel(u,t);n.setModel(r),a&&a.dispose()}}