UNPKG

@farris/ui-vue

Version:

Farris Vue, a Farris Design based Vue3 component library.

12 lines (9 loc) 15.1 kB
(function(h,g){typeof exports=="object"&&typeof module<"u"?g(exports,require("vue"),require("../button-edit/index.umd.js"),require("lodash-es")):typeof define=="function"&&define.amd?define(["exports","vue","../button-edit/index.umd.js","lodash-es"],g):(h=typeof globalThis<"u"?globalThis:h||self,g(h["code-editor"]={},h.Vue,h.buttonEdit,h.LodashES))})(this,function(h,g,Y,V){"use strict";function Q(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function q(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 N(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?q(Object(n),!0).forEach(function(r){Q(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):q(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function X(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 Z(e,t){if(e==null)return{};var n=X(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 _(e,t){return k(e)||K(e,t)||ee(e,t)||te()}function k(e){if(Array.isArray(e))return e}function K(e,t){if(!(typeof Symbol>"u"||!(Symbol.iterator in Object(e)))){var n=[],r=!0,o=!1,i=void 0;try{for(var c=e[Symbol.iterator](),d;!(r=(d=c.next()).done)&&(n.push(d.value),!(t&&n.length===t));r=!0);}catch(l){o=!0,i=l}finally{try{!r&&c.return!=null&&c.return()}finally{if(o)throw i}}return n}}function ee(e,t){if(e){if(typeof e=="string")return D(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 D(e,t)}}function D(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 te(){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 ne(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 L(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){ne(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 re(){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 O(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 c=arguments.length,d=new Array(c),l=0;l<c;l++)d[l]=arguments[l];return t.apply(n,[].concat(o,d))}}}function E(e){return{}.toString.call(e).includes("Object")}function oe(e){return!Object.keys(e).length}function j(e){return typeof e=="function"}function ie(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function ae(e,t){return E(t)||y("changeType"),Object.keys(t).some(function(n){return!ie(e,n)})&&y("changeField"),t}function ce(e){j(e)||y("selectorType")}function ue(e){j(e)||E(e)||y("handlerType"),E(e)&&Object.values(e).some(function(t){return!j(t)})&&y("handlersType")}function se(e){e||y("initialIsRequired"),E(e)||y("initialType"),oe(e)&&y("initialContent")}function le(e,t){throw new Error(e[t]||e.default)}var fe={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"},y=O(le)(fe),S={changes:ae,selector:ce,handler:ue,initial:se};function de(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};S.initial(e),S.handler(t);var n={current:e},r=O(me)(n,t),o=O(ge)(n),i=O(S.changes)(e),c=O(pe)(n);function d(){var a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:function(s){return s};return S.selector(a),a(n.current)}function l(a){re(r,o,i,c)(a)}return[d,l]}function pe(e,t){return j(t)?t(e.current):t}function ge(e,t){return e.current=L(L({},e.current),t),t}function me(e,t,n){return j(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 he={create:de},be={paths:{vs:"https://cdn.jsdelivr.net/npm/monaco-editor@0.43.0/min/vs"}};function ye(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 c=arguments.length,d=new Array(c),l=0;l<c;l++)d[l]=arguments[l];return t.apply(n,[].concat(o,d))}}}function ve(e){return{}.toString.call(e).includes("Object")}function Oe(e){return e||z("configIsRequired"),ve(e)||z("configType"),e.urls?(je(),{paths:{vs:e.urls.monacoBase}}):e}function je(){console.warn(B.deprecation)}function we(e,t){throw new Error(e[t]||e.default)}var B={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 `},z=ye(we)(B),Pe={config:Oe},Ee=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,c){return c(i)},o)}};function H(e,t){return Object.keys(t).forEach(function(n){t[n]instanceof Object&&e[n]&&Object.assign(t[n],H(e[n],t[n]))}),N(N({},e),t)}var Se={type:"cancelation",msg:"operation is manually canceled"};function $(e){var t=!1,n=new Promise(function(r,o){e.then(function(i){return t?o(Se):r(i)}),e.catch(o)});return n.cancel=function(){return t=!0},n}var Te=he.create({config:be,isInitialized:!1,resolve:null,reject:null,monaco:null}),U=_(Te,2),w=U[0],T=U[1];function Ce(e){var t=Pe.config(e),n=t.monaco,r=Z(t,["monaco"]);T(function(o){return{config:H(o.config,r),monaco:n}})}function Me(){var e=w(function(t){var n=t.monaco,r=t.isInitialized,o=t.resolve;return{monaco:n,isInitialized:r,resolve:o}});if(!e.isInitialized){if(T({isInitialized:!0}),e.monaco)return e.resolve(e.monaco),$(x);if(window.monaco&&window.monaco.editor)return W(window.monaco),e.resolve(window.monaco),$(x);Ee(Ve,xe)(Ae)}return $(x)}function Ve(e){return document.body.appendChild(e)}function $e(e){var t=document.createElement("script");return e&&(t.src=e),t}function xe(e){var t=w(function(r){var o=r.config,i=r.reject;return{config:o,reject:i}}),n=$e("".concat(t.config.paths.vs,"/loader.js"));return n.onload=function(){return e()},n.onerror=t.reject,n}function Ae(){var e=w(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){W(n),e.resolve(n)},function(n){e.reject(n)})}function W(e){w().monaco||T({monaco:e})}function Ie(){return w(function(e){var t=e.monaco;return t})}var x=new Promise(function(e,t){return T({resolve:e,reject:t})}),A={config:Ce,init:Me,__getMonacoInstance:Ie};const I={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"}},C=g.defineComponent({name:"FCodeEditor",props:I,emits:[],setup(e,t){const n=g.ref();let r=null;const o=g.ref(),i=g.ref(e.modelValue||"");async function c(){return fetch(e.configPath).then(p=>p.json())}async function d(){if(n.value&&!r){const p=await c(),{vsPath:b}=p;A.config({paths:{vs:window.location.origin+b}}),A.config({"vs/nls":{availableLanguages:{"*":"zh-cn"}}}),A.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 l=new ResizeObserver(()=>{r==null||r.layout()});function a(){return r==null?void 0:r.getValue()}function s(p){i.value=p,r==null||r.setValue(p)}function f(){s("")}g.watch(()=>e.modelValue,p=>s(p));function u(p){const b=r.getSelection(),v=new o.value.Range(b.startLineNumber,b.startColumn,b.endLineNumber,b.endColumn);r.executeEdits("insert-text",[{range:v,text:p,forceMoveMarkers:!0}])}function m(p){if(!r||!p)return;const b=r.getModel().findMatches(p,!1,!1,!1,null,!0);if(b.length>0){const v=b[0],{range:P}=v;r.setPosition(P.getStartPosition()),r.revealRangeInCenter(P)}}return g.onMounted(()=>{d(),l.observe(n.value)}),g.onBeforeUnmount(()=>{r&&(r.dispose(),r=null,o.value=null),l==null||l.unobserve(n.value),l==null||l.disconnect()}),t.expose({getValue:a,setValue:s,clearValue:f,insertText:u,setPosition:m}),()=>g.createVNode("div",{class:"monaco-editor h-100 w-100",ref:n},null)}}),Re={},qe={};function J(e){const{properties:t,title:n,ignore:r}=e,o=r&&Array.isArray(r),i=Object.keys(t).reduce((c,d)=>((!o||!r.find(l=>l===d))&&(c[d]=t[d].type==="object"&&t[d].properties?J(t[d]):V.cloneDeep(t[d].default)),c),{});if(n&&(!o||!r.find(c=>c==="id"))){const c=n.toLowerCase().replace(/-/g,"_");i.id=`${c}_${Math.random().toString().slice(2,6)}`}return i}function Ne(e,t){const n=J(t);return Object.keys(n).reduce((r,o)=>(Object.prototype.hasOwnProperty.call(e,o)&&(r[o]&&V.isPlainObject(r[o])&&V.isPlainObject(e[o]||!e[o])?Object.assign(r[o],e[o]||{}):r[o]=e[o]),r),n),n}function G(e,t){return Object.keys(e).filter(r=>e[r]!=null).reduce((r,o)=>{if(t.has(o)){const i=t.get(o);if(typeof i=="string")r[i]=e[o];else{const c=i(o,e[o],e);Object.assign(r,c)}}else r[o]=e[o];return r},{})}function De(e,t,n=new Map){const r=Ne(e,t);return G(r,n)}function Fe(e={}){function t(a,s,f,u){if(typeof f=="number")return u[a].length===f;if(typeof f=="object"){const m=Object.keys(f)[0],p=f[m];if(m==="not")return Number(u[a].length)!==Number(p);if(m==="moreThan")return Number(u[a].length)>=Number(p);if(m==="lessThan")return Number(u[a].length)<=Number(p)}return!1}function n(a,s,f,u){return u[a]&&u[a].propertyValue&&String(u[a].propertyValue.value)===String(f)}const r=new Map([["length",t],["getProperty",n]]);Object.keys(e).reduce((a,s)=>(a.set(s,e[s]),a),r);function o(a,s){const f=a;return typeof s=="number"?[{target:f,operator:"length",param:null,value:Number(s)}]:typeof s=="boolean"?[{target:f,operator:"getProperty",param:a,value:!!s}]:typeof s=="object"?Object.keys(s).map(u=>{if(u==="length")return{target:f,operator:"length",param:null,value:s[u]};const m=u,p=s[u];return{target:f,operator:"getProperty",param:m,value:p}}):[]}function i(a){return Object.keys(a).reduce((f,u)=>{const m=o(u,a[u]);return f.push(...m),f},[])}function c(a,s){if(r.has(a.operator)){const f=r.get(a.operator);return f&&f(a.target,a.param,a.value,s)||!1}return!1}function d(a,s){return i(a).reduce((m,p)=>m&&c(p,s),!0)}function l(a,s){const f=Object.keys(a),u=f.includes("allOf"),m=f.includes("anyOf"),p=u||m,P=(p?a[p?u?"allOf":"anyOf":"allOf"]:[a]).map(Ye=>d(Ye,s));return u?!P.includes(!1):P.includes(!0)}return{parseValueSchema:l}}const Le={},Be={};Fe();function ze(e,t,n=new Map,r=(c,d,l,a)=>d,o={},i=c=>c){return Re[t.title]=t,qe[t.title]=r,Le[t.title]=o,Be[t.title]=i,(c={},d=!0)=>{if(!d)return G(c,n);const l=De(c,t,n),a=Object.keys(e).reduce((s,f)=>(s[f]=e[f].default,s),{});return Object.assign(a,l)}}const He={$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}},required:["id","type"]},Ue=new Map([]);function We(e,t,n){return t}const R={...I,modalTitle:{type:String,default:""},onSubmitModal:{type:Function,default:null}},Je=ze(R,He,Ue,We),M=g.defineComponent({name:"FCodeTextbox",props:R,emits:["update:modelValue"],setup(e,t){const n=g.ref(),r=g.ref("");function o(u){switch(u){case"json":return"JSON编辑器";case"javascript":return"JavaScript编辑器";case"html":return"HTML编辑器";default:return"代码编辑器"}}const i=g.computed(()=>e.modalTitle?e.modalTitle:o(e.language));function c(){var u;return(u=n.value)==null?void 0:u.getValue()}function d(u){t.emit("update:modelValue",u),e.onSubmitModal&&typeof e.onSubmitModal=="function"&&e.onSubmitModal(u)}function l(){const u=c()||"";return d(u),!0}const a=g.reactive({get title(){return i.value},width:900,height:500,fitContent:!1,showHeader:!0,showCloseButton:!0,showMaxButton:!1,resizeable:!1,draggable:!0,buttons:[{class:"btn btn-secondary",text:"取消",handle:()=>!0},{class:"btn btn-primary",text:"确定",handle:()=>l()}]});function s(){r.value=e.modelValue}function f(){s()}return()=>g.createVNode(Y.FButtonEdit,{modelValue:e.modelValue,editable:!1,readonly:e.readonly,enableClear:!1,buttonBehavior:"Modal",modalOptions:a,beforeOpen:f},{default:()=>[g.createVNode(C,{ref:n,modelValue:r.value,language:e.language,theme:e.theme,readonly:e.readonly,monacoEditorOptions:e.monacoEditorOptions,configPath:e.configPath},null)]})}}),Ge={install(e){e.component(C.name,C),e.component(M.name,M)},register(e,t,n,r){e["code-editor"]=M,t["code-editor"]=Je}};h.FCodeEditor=C,h.FCodeTextbox=M,h.codeEditorProps=I,h.codeTextboxProps=R,h.default=Ge,Object.defineProperties(h,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});