UNPKG

@farris/ui-vue

Version:

Farris Vue, a Farris Design based Vue3 component library.

12 lines (9 loc) 13.3 kB
(function(s,a){typeof exports=="object"&&typeof module<"u"?a(exports,require("vue"),require("../button-edit/index.umd.js"),require("../dynamic-resolver/index.umd.js")):typeof define=="function"&&define.amd?define(["exports","vue","../button-edit/index.umd.js","../dynamic-resolver/index.umd.js"],a):(s=typeof globalThis<"u"?globalThis:s||self,a(s["code-editor"]={},s.Vue,s.buttonEdit,s.dynamicResolver))})(this,function(s,a,W,J){"use strict";function K(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function I(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),n.push.apply(n,r)}return n}function R(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?I(Object(n),!0).forEach(function(r){K(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):I(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function G(e,t){if(e==null)return{};var n={},r=Object.keys(e),o,i;for(i=0;i<r.length;i++)o=r[i],!(t.indexOf(o)>=0)&&(n[o]=e[o]);return n}function Y(e,t){if(e==null)return{};var n=G(e,t),r,o;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o<i.length;o++)r=i[o],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function Q(e,t){return X(e)||Z(e,t)||_(e,t)||k()}function X(e){if(Array.isArray(e))return e}function Z(e,t){if(!(typeof Symbol>"u"||!(Symbol.iterator in Object(e)))){var n=[],r=!0,o=!1,i=void 0;try{for(var u=e[Symbol.iterator](),l;!(r=(l=u.next()).done)&&(n.push(l.value),!(t&&n.length===t));r=!0);}catch(c){o=!0,i=c}finally{try{!r&&u.return!=null&&u.return()}finally{if(o)throw i}}return n}}function _(e,t){if(e){if(typeof e=="string")return q(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set")return Array.from(e);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return q(e,t)}}function q(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function k(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function ee(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function F(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),n.push.apply(n,r)}return n}function D(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?F(Object(n),!0).forEach(function(r){ee(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):F(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function te(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return function(r){return t.reduceRight(function(o,i){return i(o)},r)}}function y(e){return function t(){for(var n=this,r=arguments.length,o=new Array(r),i=0;i<r;i++)o[i]=arguments[i];return o.length>=e.length?e.apply(this,o):function(){for(var u=arguments.length,l=new Array(u),c=0;c<u;c++)l[c]=arguments[c];return t.apply(n,[].concat(o,l))}}}function w(e){return{}.toString.call(e).includes("Object")}function ne(e){return!Object.keys(e).length}function b(e){return typeof e=="function"}function re(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function oe(e,t){return w(t)||g("changeType"),Object.keys(t).some(function(n){return!re(e,n)})&&g("changeField"),t}function ie(e){b(e)||g("selectorType")}function ae(e){b(e)||w(e)||g("handlerType"),w(e)&&Object.values(e).some(function(t){return!b(t)})&&g("handlersType")}function ce(e){e||g("initialIsRequired"),w(e)||g("initialType"),ne(e)&&g("initialContent")}function ue(e,t){throw new Error(e[t]||e.default)}var le={initialIsRequired:"initial state is required",initialType:"initial state should be an object",initialContent:"initial state shouldn't be an empty object",handlerType:"handler should be an object or a function",handlersType:"all handlers should be a functions",selectorType:"selector should be a function",changeType:"provided value of changes should be an object",changeField:'it seams you want to change a field in the state which is not specified in the "initial" state',default:"an unknown error accured in `state-local` package"},g=y(ue)(le),P={changes:oe,selector:ie,handler:ae,initial:ce};function se(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};P.initial(e),P.handler(t);var n={current:e},r=y(me)(n,t),o=y(fe)(n),i=y(P.changes)(e),u=y(de)(n);function l(){var p=arguments.length>0&&arguments[0]!==void 0?arguments[0]:function(h){return h};return P.selector(p),p(n.current)}function c(p){te(r,o,i,u)(p)}return[l,c]}function de(e,t){return b(t)?t(e.current):t}function fe(e,t){return e.current=D(D({},e.current),t),t}function me(e,t,n){return b(t)?t(e.current):Object.keys(n).forEach(function(r){var o;return(o=t[r])===null||o===void 0?void 0:o.call(t,e.current[r])}),n}var ge={create:se},pe={paths:{vs:"https://cdn.jsdelivr.net/npm/monaco-editor@0.43.0/min/vs"}};function he(e){return function t(){for(var n=this,r=arguments.length,o=new Array(r),i=0;i<r;i++)o[i]=arguments[i];return o.length>=e.length?e.apply(this,o):function(){for(var u=arguments.length,l=new Array(u),c=0;c<u;c++)l[c]=arguments[c];return t.apply(n,[].concat(o,l))}}}function ve(e){return{}.toString.call(e).includes("Object")}function ye(e){return e||B("configIsRequired"),ve(e)||B("configType"),e.urls?(be(),{paths:{vs:e.urls.monacoBase}}):e}function be(){console.warn(N.deprecation)}function je(e,t){throw new Error(e[t]||e.default)}var N={configIsRequired:"the configuration object is required",configType:"the configuration object should be an object",default:"an unknown error accured in `@monaco-editor/loader` package",deprecation:`Deprecation warning! You are using deprecated way of configuration. Instead of using monaco.config({ urls: { monacoBase: '...' } }) use monaco.config({ paths: { vs: '...' } }) For more please check the link https://github.com/suren-atoyan/monaco-loader#config `},B=he(je)(N),Oe={config:ye},we=function(){for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];return function(o){return n.reduceRight(function(i,u){return u(i)},o)}};function L(e,t){return Object.keys(t).forEach(function(n){t[n]instanceof Object&&e[n]&&Object.assign(t[n],L(e[n],t[n]))}),R(R({},e),t)}var Pe={type:"cancelation",msg:"operation is manually canceled"};function T(e){var t=!1,n=new Promise(function(r,o){e.then(function(i){return t?o(Pe):r(i)}),e.catch(o)});return n.cancel=function(){return t=!0},n}var Se=ge.create({config:pe,isInitialized:!1,resolve:null,reject:null,monaco:null}),z=Q(Se,2),j=z[0],S=z[1];function Ee(e){var t=Oe.config(e),n=t.monaco,r=Y(t,["monaco"]);S(function(o){return{config:L(o.config,r),monaco:n}})}function Te(){var e=j(function(t){var n=t.monaco,r=t.isInitialized,o=t.resolve;return{monaco:n,isInitialized:r,resolve:o}});if(!e.isInitialized){if(S({isInitialized:!0}),e.monaco)return e.resolve(e.monaco),T(C);if(window.monaco&&window.monaco.editor)return H(window.monaco),e.resolve(window.monaco),T(C);we(Ce,Ve)(xe)}return T(C)}function Ce(e){return document.body.appendChild(e)}function Me(e){var t=document.createElement("script");return e&&(t.src=e),t}function Ve(e){var t=j(function(r){var o=r.config,i=r.reject;return{config:o,reject:i}}),n=Me("".concat(t.config.paths.vs,"/loader.js"));return n.onload=function(){return e()},n.onerror=t.reject,n}function xe(){var e=j(function(n){var r=n.config,o=n.resolve,i=n.reject;return{config:r,resolve:o,reject:i}}),t=window.require;t.config(e.config),t(["vs/editor/editor.main"],function(n){H(n),e.resolve(n)},function(n){e.reject(n)})}function H(e){j().monaco||S({monaco:e})}function $e(){return j(function(e){var t=e.monaco;return t})}var C=new Promise(function(e,t){return S({resolve:e,reject:t})}),M={config:Ee,init:Te,__getMonacoInstance:$e};const V={modelValue:{type:String,default:""},language:{type:String,default:"json"},theme:{type:String,default:"vs-dark"},readonly:{type:Boolean,default:!1},monacoEditorOptions:{type:Object,default:{}},configPath:{type:String,default:"assets/monaco-editor.config.json"}},O=a.defineComponent({name:"FCodeEditor",props:V,emits:[],setup(e,t){const n=a.ref();let r=null;const o=a.ref(),i=a.ref(e.modelValue||"");async function u(){return fetch(e.configPath).then(d=>d.json())}async function l(){if(n.value&&!r){const d=await u(),{vsPath:m}=d;M.config({paths:{vs:window.location.origin+m}}),M.config({"vs/nls":{availableLanguages:{"*":"zh-cn"}}}),M.init().then(v=>{o.value=v,r=v.editor.create(n.value,{value:i.value,language:e.language,theme:e.theme,folding:!0,readOnly:e.readonly,...e.monacoEditorOptions})})}}const c=new ResizeObserver(()=>{r==null||r.layout()});function p(){return r==null?void 0:r.getValue()}function h(d){i.value=d,r==null||r.setValue(d)}function $(){h("")}a.watch(()=>e.modelValue,d=>h(d));function A(d){const m=r.getSelection(),v=new o.value.Range(m.startLineNumber,m.startColumn,m.endLineNumber,m.endColumn);r.executeEdits("insert-text",[{range:v,text:d,forceMoveMarkers:!0}])}function f(d){if(!r||!d)return;const m=r.getModel().findMatches(d,!1,!1,!1,null,!0);if(m.length>0){const v=m[0],{range:U}=v;r.setPosition(U.getStartPosition()),r.revealRangeInCenter(U)}}return a.onMounted(()=>{l(),c.observe(n.value)}),a.onBeforeUnmount(()=>{r&&(r.dispose(),r=null,o.value=null),c==null||c.unobserve(n.value),c==null||c.disconnect()}),t.expose({getValue:p,setValue:h,clearValue:$,insertText:A,setPosition:f}),()=>a.createVNode("div",{class:"monaco-editor h-100 w-100",ref:n},null)}}),Ae={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://farris-design.gitee.io/code-editor.schema.json",title:"code-editor",description:"A Farris Code Editor Component",type:"object",properties:{id:{description:"The unique identifier for a Code Editor",type:"string"},type:{description:"The type string of Code Editor component",type:"string",default:"code-editor"},language:{description:"",type:"string",default:"json"},theme:{description:"",type:"string",default:"vs-dark"},readonly:{description:"",type:"boolean",default:!1},monacoEditorOptions:{description:"",type:"object",default:{}},configPath:{description:"",type:"string",default:"assets/monaco-editor.config.json"},modalTitle:{description:"",type:"string",default:""},onSubmitModal:{description:"",type:"function",default:null},leftTemplate:{description:"",type:"function"},enableClear:{description:"",type:"boolean",default:!1}},required:["id","type"]},Ie=new Map([]);function Re(e,t,n){return t}const x={...V,modalTitle:{type:String,default:""},onSubmitModal:{type:Function,default:null},leftTemplate:{type:Function},enableClear:{type:Boolean,default:!1}},qe=J.createPropsResolver(x,Ae,Ie,Re),E=a.defineComponent({name:"FCodeTextbox",props:x,emits:["update:modelValue"],setup(e,t){const n=a.ref(),r=a.ref("");function o(f){switch(f){case"json":return"JSON编辑器";case"javascript":return"JavaScript编辑器";case"html":return"HTML编辑器";default:return"代码编辑器"}}const i=a.computed(()=>e.modalTitle?e.modalTitle:o(e.language));function u(){var f;return(f=n.value)==null?void 0:f.getValue()}function l(f){t.emit("update:modelValue",f),e.onSubmitModal&&typeof e.onSubmitModal=="function"&&e.onSubmitModal(f)}function c(){const f=u()||"";return l(f),!0}function p(){l("")}const h=a.reactive({get title(){return i.value},width:900,height:500,fitContent:!1,showHeader:!0,showCloseButton:!0,showMaxButton:!0,resizeable:!0,draggable:!0,buttons:[{class:"btn btn-secondary",text:"取消",handle:()=>!0},{class:"btn btn-primary",text:"确定",handle:()=>c()}]});function $(){r.value=e.modelValue}function A(){$()}return()=>a.createVNode(W.FButtonEdit,{modelValue:e.modelValue,editable:!1,readonly:e.readonly,enableClear:e.enableClear,buttonBehavior:"Modal",modalOptions:h,beforeOpen:A,onClear:p},{default:()=>[e.leftTemplate?a.createVNode("div",{class:"w-100 h-100",style:"display:flex;"},[a.createVNode("div",{class:"pt-2 pl-2 pr-2",style:"max-width:40%"},[e.leftTemplate(n)]),a.createVNode("div",{style:"flex: 1"},[a.createVNode(O,{ref:n,modelValue:r.value,language:e.language,theme:e.theme,readonly:e.readonly,monacoEditorOptions:e.monacoEditorOptions,configPath:e.configPath},null)])]):a.createVNode(O,{ref:n,modelValue:r.value,language:e.language,theme:e.theme,readonly:e.readonly,monacoEditorOptions:e.monacoEditorOptions,configPath:e.configPath},null)]})}}),Fe={install(e){e.component(O.name,O),e.component(E.name,E)},register(e,t,n,r){e["code-editor"]=E,t["code-editor"]=qe}};s.FCodeEditor=O,s.FCodeTextbox=E,s.codeEditorProps=V,s.codeTextboxProps=x,s.default=Fe,Object.defineProperties(s,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});