@fast-crud/editor-code 1.26.5 → 1.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,14 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [1.27.0](https://github.com/fast-crud/fast-crud/compare/v1.26.6...v1.27.0) (2025-09-19)
7
+
8
+ **Note:** Version bump only for package @fast-crud/editor-code
9
+
10
+ ## [1.26.6](https://github.com/fast-crud/fast-crud/compare/v1.26.5...v1.26.6) (2025-08-29)
11
+
12
+ **Note:** Version bump only for package @fast-crud/editor-code
13
+
6
14
  ## [1.26.5](https://github.com/fast-crud/fast-crud/compare/v1.26.4...v1.26.5) (2025-08-21)
7
15
 
8
16
  ### Performance Improvements
@@ -1,4 +1,4 @@
1
- import { F as e, e as i, i as t, r as a } from "./index-c2ddaf47.mjs";
1
+ import { F as e, e as i, i as t, r as a } from "./index-551dfd5e.mjs";
2
2
  import "@fast-crud/fast-crud";
3
3
  export {
4
4
  e as FsEditorCode,
@@ -1,2 +1,2 @@
1
- (function(a,i){typeof exports=="object"&&typeof module<"u"?i(exports,require("vue"),require("monaco-editor"),require("lodash-es"),require("@fast-crud/fast-crud")):typeof define=="function"&&define.amd?define(["exports","vue","monaco-editor","lodash-es","@fast-crud/fast-crud"],i):(a=typeof globalThis<"u"?globalThis:a||self,i(a.FsExtends={},a.Vue,a.monaco,a._,a.FastCrud))})(this,function(a,i,_,f,p){"use strict";function v(t){const o=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const e in t)if(e!=="default"){const r=Object.getOwnPropertyDescriptor(t,e);Object.defineProperty(o,e,r.get?r:{enumerable:!0,get:()=>t[e]})}}return o.default=t,Object.freeze(o)}const c=v(_);async function b(){return await import("js-yaml")}async function j(){await import("monaco-editor/esm/vs/basic-languages/yaml/yaml.contribution")}async function V(){await import("monaco-editor/esm/vs/language/json/monaco.contribution")}async function k(){await import("monaco-editor/esm/vs/basic-languages/javascript/javascript.contribution")}async function E(){return await import("monaco-yaml")}const g=[];function C(t,o){g.push({worker:o,match:e=>{if(typeof t=="string")return t===e;for(const r of t)if(r==="*"||r===e)return!0;return!1}})}function y(){window.MonacoEnvironment||(window.MonacoEnvironment={getWorker(t,o){for(const e of g)if(e.match(o))return new e.worker}})}const M=i.defineComponent({__name:"index",props:{language:{},modelValue:{},config:{},schema:{},debounce:{},init:{},readonly:{type:Boolean},disabled:{type:Boolean},id:{}},emits:["update:modelValue","change","ready"],setup(t,{emit:o}){const e=t;y();const r=i.ref();let u=null;function d(){u&&u.dispose()}i.onUnmounted(()=>{d()});const m=o,D=f.debounce(n=>{m("update:modelValue",n)},e.debounce||500);async function W(n){d();const s=c.editor.create(r.value,{automaticLayout:!0,value:e.modelValue,language:n.language,theme:"vs-dark",minimap:{enabled:!1},readOnly:e.readonly||e.disabled,hover:{enabled:!0},...n.config});return s.onDidChangeModelContent(w=>{const l=s.getValue();e.modelValue!==l&&(m("change",l),D(l))}),u=s,n.instance=s,m("ready",n),s}async function B(n){await k(),c.languages.register({id:"javascript"})}async function Y(n){await V(),c.languages.register({id:"json"});const s=[];n.schema&&s.push({uri:"http://myserver/foo-schema.json",fileMatch:["*"],schema:{...n.schema}}),c.languages.json.jsonDefaults.setDiagnosticsOptions({validate:!0,enableSchemaRequest:!1,schemas:s})}async function x(n){await j();const{configureMonacoYaml:s}=await E();c.languages.register({id:"yaml"});let w=`fs-editor-code-yaml-${e.id||""}.yaml`;const l=[];n.schema&&l.push({fileMatch:["*"],schema:{...n.schema},uri:`http://myserver/${w}`}),s(c,{schemas:l,format:!0,hover:!0,completion:!0,validate:!0,isKubernetes:!1,enableSchemaRequest:!1})}async function h(){d();const n={monaco:c,language:e.language||"javascript",config:f.cloneDeep(e.config||{}),initialValue:e.modelValue||"",schema:e.schema};n.language==="javascript"?await B():n.language==="yaml"?await x(n):n.language==="json"&&await Y(n),await W(n)}return i.onMounted(async()=>{await h(),i.watch(()=>({language:e.language,config:e.config}),n=>{h()})}),i.watch(()=>e.modelValue,n=>{u&&u.getValue()!==n&&u.setValue(n)}),(n,s)=>(i.openBlock(),i.createElementBlock("div",{ref_key:"monacoRef",ref:r,class:"fs-editor-code"},null,512))}}),P="",O=Object.freeze(Object.defineProperty({__proto__:null,default:M},Symbol.toStringTag,{value:"Module"}));function S(){return{"editor-code":{form:{component:{name:"fs-editor-code"},col:{span:24}}}}}const R={install(t,o){const e=S(),{addTypes:r}=p.useTypes();r(e)}},T={jsonRule:{validator:async(t,o)=>{if(o)try{JSON.parse(o)}catch(e){throw console.error(e),new Error("json格式错误:"+e.message)}},message:"json格式错误"},yamlRule:{validator:async(t,o)=>{if(o)try{const e=await b();e.load(o,{schema:e.JSON_SCHEMA})}catch(e){throw console.error(e),new Error("yaml格式错误:"+e.message)}},message:"yaml格式错误"}},F=Object.assign({"./components/fs-editor-code/index.vue":O}),J={install(t){p.utils.vite.installSyncComponents(t,F,null,/^.*\/([^\/]+)\/.*.vue$/,null)}},q={install(t,o){t.use(R,o),t.use(J)}};a.FsEditorCode=q,a.FsEditorCodeValidators=T,a.initWorkers=y,a.registerWorker=C,Object.defineProperty(a,Symbol.toStringTag,{value:"Module"})});
1
+ (function(a,i){typeof exports=="object"&&typeof module<"u"?i(exports,require("vue"),require("monaco-editor"),require("lodash-es"),require("@fast-crud/fast-crud")):typeof define=="function"&&define.amd?define(["exports","vue","monaco-editor","lodash-es","@fast-crud/fast-crud"],i):(a=typeof globalThis<"u"?globalThis:a||self,i(a.FsExtends={},a.Vue,a.monaco,a._,a.FastCrud))})(this,function(a,i,_,f,p){"use strict";function b(t){const o=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const e in t)if(e!=="default"){const s=Object.getOwnPropertyDescriptor(t,e);Object.defineProperty(o,e,s.get?s:{enumerable:!0,get:()=>t[e]})}}return o.default=t,Object.freeze(o)}const c=b(_);async function v(){return await import("js-yaml")}async function j(){await import("monaco-editor/esm/vs/basic-languages/yaml/yaml.contribution")}async function E(){await import("monaco-editor/esm/vs/language/json/monaco.contribution")}async function V(){await import("monaco-editor/esm/vs/basic-languages/javascript/javascript.contribution")}async function k(){return await import("monaco-yaml")}const g=[];function C(t,o){g.push({worker:o,match:e=>{if(typeof t=="string")return t===e;for(const s of t)if(s==="*"||s===e)return!0;return!1}})}function y(){window.MonacoEnvironment||(window.MonacoEnvironment={getWorker(t,o){for(const e of g)if(e.match(o))return new e.worker}})}const M=i.defineComponent({__name:"index",props:{language:{},modelValue:{},config:{},schema:{},debounce:{},init:{},readonly:{type:Boolean},disabled:{type:Boolean},id:{}},emits:["update:modelValue","change","ready","blur","blur2"],setup(t,{emit:o}){const e=t;y();const s=i.ref();let u=null;function m(){u&&u.dispose()}i.onUnmounted(()=>{m()});const d=o,J=f.debounce(n=>{d("update:modelValue",n)},e.debounce||500);async function q(n){m();const r=c.editor.create(s.value,{automaticLayout:!0,value:e.modelValue,language:n.language,theme:"vs-dark",minimap:{enabled:!1},readOnly:e.readonly||e.disabled,hover:{enabled:!0},...n.config});return r.onDidChangeModelContent(w=>{const l=r.getValue();e.modelValue!==l&&(d("change",l),J(l))}),u=r,n.instance=r,r.onDidBlurEditorText(()=>{console.error("onDidBlurEditorText",n),d("blur",n),d("blur2",n)}),d("ready",n),r}async function W(n){await V(),c.languages.register({id:"javascript"})}async function Y(n){await E(),c.languages.register({id:"json"});const r=[];n.schema&&r.push({uri:"http://myserver/foo-schema.json",fileMatch:["*"],schema:{...n.schema}}),c.languages.json.jsonDefaults.setDiagnosticsOptions({validate:!0,enableSchemaRequest:!1,schemas:r})}async function P(n){await j();const{configureMonacoYaml:r}=await k();c.languages.register({id:"yaml"});let w=`fs-editor-code-yaml-${e.id||""}.yaml`;const l=[];n.schema&&l.push({fileMatch:["*"],schema:{...n.schema},uri:`http://myserver/${w}`}),r(c,{schemas:l,format:!0,hover:!0,completion:!0,validate:!0,isKubernetes:!1,enableSchemaRequest:!1})}async function h(){m();const n={monaco:c,language:e.language||"javascript",config:f.cloneDeep(e.config||{}),initialValue:e.modelValue||"",schema:e.schema};n.language==="javascript"?await W():n.language==="yaml"?await P(n):n.language==="json"&&await Y(n),await q(n)}return i.onMounted(async()=>{await h(),i.watch(()=>({language:e.language,config:e.config}),n=>{h()})}),i.watch(()=>e.modelValue,n=>{u&&u.getValue()!==n&&u.setValue(n)}),(n,r)=>(i.openBlock(),i.createElementBlock("div",{ref_key:"monacoRef",ref:s,class:"fs-editor-code"},null,512))}}),x="",O=Object.freeze(Object.defineProperty({__proto__:null,default:M},Symbol.toStringTag,{value:"Module"}));function S(){return{"editor-code":{form:{component:{name:"fs-editor-code"},col:{span:24}}}}}const T={install(t,o){const e=S(),{addTypes:s}=p.useTypes();s(e)}},R={jsonRule:{validator:async(t,o)=>{if(o)try{JSON.parse(o)}catch(e){throw console.error(e),new Error("json格式错误:"+e.message)}},message:"json格式错误"},yamlRule:{validator:async(t,o)=>{if(o)try{const e=await v();e.load(o,{schema:e.JSON_SCHEMA})}catch(e){throw console.error(e),new Error("yaml格式错误:"+e.message)}},message:"yaml格式错误"}},D=Object.assign({"./components/fs-editor-code/index.vue":O}),F={install(t){p.utils.vite.installSyncComponents(t,D,null,/^.*\/([^\/]+)\/.*.vue$/,null)}},B={install(t,o){t.use(T,o),t.use(F)}};a.FsEditorCode=B,a.FsEditorCodeValidators=R,a.initWorkers=y,a.registerWorker=C,Object.defineProperty(a,Symbol.toStringTag,{value:"Module"})});
2
2
  //# sourceMappingURL=editor-code.umd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"editor-code.umd.js","sources":["../../src/editor/components/fs-editor-code/async-import.ts","../../src/editor/components/fs-editor-code/workers.ts","../src/editor/components/fs-editor-code/index.vue","../../src/editor/type/types.ts","../../src/editor/type/index.ts","../../src/editor/components/fs-editor-code/validators.ts","../../src/editor/index.umd.ts"],"sourcesContent":[null,null,"<template>\n <div ref=\"monacoRef\" class=\"fs-editor-code\"></div>\n</template>\n\n<script lang=\"ts\" setup>\nimport * as monaco from \"monaco-editor\";\n// import * as monaco from \"monaco-editor/esm/vs/editor/editor.api\";\nimport { onMounted, onUnmounted, ref, watch } from \"vue\";\nimport { cloneDeep, debounce as lodashDebounce } from \"lodash-es\";\nimport {\n importJavascriptContribution,\n importJsonContribution,\n importMonacoYaml,\n importYamlContribution\n} from \"./async-import\";\nimport { initWorkers } from \"./workers\";\n/**\n * config:\n * value: '', // 编辑器初始文本\n * language: 'javascript', // 语言\n * theme: 'vs', // 主题\n * readOnly: false, // 是否只读\n * minimap: { enabled: false }, // 是否启用小地图\n * fontSize: 14, // 字体大小\n * tabSize: 2, // tab缩进长度\n * automaticLayout: true, // 自动布局\n * lineNumbers: 'off', // 是否启用行号\n * contextmenu: true, // 是否启用上下文菜单\n * folding: true, // 是否启用代码折叠\n * foldingStrategy: 'auto', // 代码折叠策略\n * wordWrap: 'on', // 自动换行设置\n * wrappingIndent: 'indent', // 换行缩进\n * formatOnPaste: true, // 粘贴时是否自动格式化\n * formatOnType: true, // 输入时是否自动格式化\n * dragAndDrop: true, // 是否允许拖放\n * cursorStyle: 'line', // 光标样式\n * cursorBlinking: 'blink', // 光标闪烁方式\n * scrollbar: {\n * vertical: 'auto', // 垂直滚动条的显示方式\n * horizontal: 'auto', // 水平滚动条的显示方式\n * verticalScrollbarSize: 2, // 垂直滚动条的宽\n * horizontalScrollbarSize: 2, // 水平滚动条的高度\n * }\n */\nconst props = defineProps<{\n language?: string;\n modelValue?: string;\n config?: any;\n schema?: any;\n debounce?: number;\n init?: any;\n readonly?: boolean;\n disabled?: boolean;\n id?: string;\n}>();\n\nexport type EditorCodeCtx = {\n // monaco对象\n monaco: any;\n //语言\n language: string;\n //配置\n config: any;\n //editor实例对象\n instance?: any;\n\n schema?: any;\n\n initialValue?: any;\n};\ninitWorkers();\nconst monacoRef = ref();\n\nlet instanceRef: any = null;\n\nfunction disposeEditor() {\n if (instanceRef) {\n instanceRef.dispose(); //使用完成销毁实例\n }\n}\n\nonUnmounted(() => {\n disposeEditor();\n});\n\nconst emits = defineEmits([\"update:modelValue\", \"change\", \"ready\"]);\n\nconst emitValue = lodashDebounce((value: any) => {\n emits(\"update:modelValue\", value);\n}, props.debounce || 500);\n\nasync function createEditor(ctx: EditorCodeCtx) {\n disposeEditor();\n const instance = monaco.editor.create(monacoRef.value, {\n automaticLayout: true,\n value: props.modelValue,\n language: ctx.language,\n theme: \"vs-dark\",\n minimap: { enabled: false },\n readOnly: props.readonly || props.disabled,\n hover: {\n enabled: true\n },\n ...ctx.config\n });\n\n // @event `change`\n instance.onDidChangeModelContent((event) => {\n const value = instance.getValue();\n if (props.modelValue !== value) {\n emits(\"change\", value);\n emitValue(value);\n }\n });\n\n instanceRef = instance;\n ctx.instance = instance;\n emits(\"ready\", ctx);\n return instance;\n}\n\nasync function initJavascript(ctx: EditorCodeCtx) {\n await importJavascriptContribution();\n monaco.languages.register({ id: \"javascript\" });\n}\n\nasync function initJson(ctx: EditorCodeCtx) {\n await importJsonContribution();\n monaco.languages.register({ id: \"json\" });\n\n const schemas = [];\n if (ctx.schema) {\n schemas.push({\n uri: \"http://myserver/foo-schema.json\", // id of the first schema\n fileMatch: [\"*\"], // associate with our model\n schema: {\n ...ctx.schema\n }\n });\n }\n\n monaco.languages.json.jsonDefaults.setDiagnosticsOptions({\n validate: true,\n enableSchemaRequest: false,\n schemas\n });\n}\n\nasync function initYaml(ctx: EditorCodeCtx) {\n await importYamlContribution();\n const { configureMonacoYaml } = await importMonacoYaml();\n monaco.languages.register({ id: \"yaml\" });\n let id = `fs-editor-code-yaml-${props.id || \"\"}.yaml`;\n const schemas = [];\n if (ctx.schema) {\n schemas.push({\n fileMatch: [\"*\"], // associate with our model\n schema: {\n ...ctx.schema\n },\n uri: `http://myserver/${id}`\n });\n }\n configureMonacoYaml(monaco, {\n schemas,\n format: true,\n hover: true,\n completion: true,\n validate: true,\n isKubernetes: false,\n enableSchemaRequest: false\n });\n\n // const uri = monaco.Uri.parse(id);\n // const oldModel = monaco.editor.getModel(uri);\n // if (oldModel) {\n // oldModel.dispose();\n // }\n // ctx.config.model = monaco.editor.createModel(props.modelValue, null, uri);\n}\n\nasync function doInit() {\n disposeEditor();\n const ctx: EditorCodeCtx = {\n monaco,\n language: props.language || \"javascript\",\n config: cloneDeep(props.config || {}),\n initialValue: props.modelValue || \"\",\n schema: props.schema\n };\n if (ctx.language === \"javascript\") {\n await initJavascript(ctx);\n } else if (ctx.language === \"yaml\") {\n await initYaml(ctx);\n } else if (ctx.language === \"json\") {\n await initJson(ctx);\n }\n\n await createEditor(ctx);\n}\n\nonMounted(async () => {\n await doInit();\n watch(\n () => {\n return {\n language: props.language,\n config: props.config\n };\n },\n (value: any) => {\n doInit();\n }\n );\n});\n\nwatch(\n () => {\n return props.modelValue;\n },\n (value: any) => {\n if (instanceRef && instanceRef.getValue() !== value) {\n instanceRef.setValue(value);\n }\n }\n);\n</script>\n\n<style lang=\"less\">\n.fs-editor-code {\n min-height: 100px;\n width: 100%;\n border: 1px solid #eee;\n border-radius: 5px;\n}\n\n.monaco-editor .hover-content {\n z-index: 10000 !important;\n}\n</style>\n",null,null,null,null],"names":["importJsYaml","importYamlContribution","importJsonContribution","importJavascriptContribution","importMonacoYaml","WorkerBucket","registerWorker","labels","worker","label","labelItem","initWorkers","_","workerLoader","props","__props","monacoRef","ref","instanceRef","disposeEditor","onUnmounted","emits","__emit","emitValue","lodashDebounce","value","createEditor","ctx","instance","monaco","event","initJavascript","initJson","schemas","initYaml","configureMonacoYaml","id","doInit","cloneDeep","onMounted","watch","types","FsExtendsModelType","app","options","newTypes","addTypes","useTypes","FsEditorCodeValidators","rule","yaml","modules","FsExtendsComponents","utils","FsEditorCode"],"mappings":"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"}
1
+ {"version":3,"file":"editor-code.umd.js","sources":["../../src/editor/components/fs-editor-code/async-import.ts","../../src/editor/components/fs-editor-code/workers.ts","../src/editor/components/fs-editor-code/index.vue","../../src/editor/type/types.ts","../../src/editor/type/index.ts","../../src/editor/components/fs-editor-code/validators.ts","../../src/editor/index.umd.ts"],"sourcesContent":[null,null,"<template>\n <div ref=\"monacoRef\" class=\"fs-editor-code\"></div>\n</template>\n\n<script lang=\"ts\" setup>\nimport * as monaco from \"monaco-editor\";\n// import * as monaco from \"monaco-editor/esm/vs/editor/editor.api\";\nimport { onMounted, onUnmounted, ref, watch } from \"vue\";\nimport { cloneDeep, debounce as lodashDebounce } from \"lodash-es\";\nimport {\n importJavascriptContribution,\n importJsonContribution,\n importMonacoYaml,\n importYamlContribution\n} from \"./async-import\";\nimport { initWorkers } from \"./workers\";\n/**\n * config:\n * value: '', // 编辑器初始文本\n * language: 'javascript', // 语言\n * theme: 'vs', // 主题\n * readOnly: false, // 是否只读\n * minimap: { enabled: false }, // 是否启用小地图\n * fontSize: 14, // 字体大小\n * tabSize: 2, // tab缩进长度\n * automaticLayout: true, // 自动布局\n * lineNumbers: 'off', // 是否启用行号\n * contextmenu: true, // 是否启用上下文菜单\n * folding: true, // 是否启用代码折叠\n * foldingStrategy: 'auto', // 代码折叠策略\n * wordWrap: 'on', // 自动换行设置\n * wrappingIndent: 'indent', // 换行缩进\n * formatOnPaste: true, // 粘贴时是否自动格式化\n * formatOnType: true, // 输入时是否自动格式化\n * dragAndDrop: true, // 是否允许拖放\n * cursorStyle: 'line', // 光标样式\n * cursorBlinking: 'blink', // 光标闪烁方式\n * scrollbar: {\n * vertical: 'auto', // 垂直滚动条的显示方式\n * horizontal: 'auto', // 水平滚动条的显示方式\n * verticalScrollbarSize: 2, // 垂直滚动条的宽\n * horizontalScrollbarSize: 2, // 水平滚动条的高度\n * }\n */\nconst props = defineProps<{\n language?: string;\n modelValue?: string;\n config?: any;\n schema?: any;\n debounce?: number;\n init?: any;\n readonly?: boolean;\n disabled?: boolean;\n id?: string;\n}>();\n\nexport type EditorCodeCtx = {\n // monaco对象\n monaco: any;\n //语言\n language: string;\n //配置\n config: any;\n //editor实例对象\n instance?: any;\n\n schema?: any;\n\n initialValue?: any;\n};\ninitWorkers();\nconst monacoRef = ref();\n\nlet instanceRef: any = null;\n\nfunction disposeEditor() {\n if (instanceRef) {\n instanceRef.dispose(); //使用完成销毁实例\n }\n}\n\nonUnmounted(() => {\n disposeEditor();\n});\n\nconst emits = defineEmits([\"update:modelValue\", \"change\", \"ready\", \"blur\", \"blur2\"]);\n\nconst emitValue = lodashDebounce((value: any) => {\n emits(\"update:modelValue\", value);\n}, props.debounce || 500);\n\nasync function createEditor(ctx: EditorCodeCtx) {\n disposeEditor();\n const instance = monaco.editor.create(monacoRef.value, {\n automaticLayout: true,\n value: props.modelValue,\n language: ctx.language,\n theme: \"vs-dark\",\n minimap: { enabled: false },\n readOnly: props.readonly || props.disabled,\n hover: {\n enabled: true\n },\n ...ctx.config\n });\n\n // @event `change`\n instance.onDidChangeModelContent((event) => {\n const value = instance.getValue();\n if (props.modelValue !== value) {\n emits(\"change\", value);\n emitValue(value);\n }\n });\n\n instanceRef = instance;\n ctx.instance = instance;\n\n instance.onDidBlurEditorText(() => {\n console.error(\"onDidBlurEditorText\", ctx);\n emits(\"blur\", ctx);\n emits(\"blur2\", ctx);\n });\n\n emits(\"ready\", ctx);\n return instance;\n}\n\nasync function initJavascript(ctx: EditorCodeCtx) {\n await importJavascriptContribution();\n monaco.languages.register({ id: \"javascript\" });\n}\n\nasync function initJson(ctx: EditorCodeCtx) {\n await importJsonContribution();\n monaco.languages.register({ id: \"json\" });\n\n const schemas = [];\n if (ctx.schema) {\n schemas.push({\n uri: \"http://myserver/foo-schema.json\", // id of the first schema\n fileMatch: [\"*\"], // associate with our model\n schema: {\n ...ctx.schema\n }\n });\n }\n\n monaco.languages.json.jsonDefaults.setDiagnosticsOptions({\n validate: true,\n enableSchemaRequest: false,\n schemas\n });\n}\n\nasync function initYaml(ctx: EditorCodeCtx) {\n await importYamlContribution();\n const { configureMonacoYaml } = await importMonacoYaml();\n monaco.languages.register({ id: \"yaml\" });\n let id = `fs-editor-code-yaml-${props.id || \"\"}.yaml`;\n const schemas = [];\n if (ctx.schema) {\n schemas.push({\n fileMatch: [\"*\"], // associate with our model\n schema: {\n ...ctx.schema\n },\n uri: `http://myserver/${id}`\n });\n }\n configureMonacoYaml(monaco, {\n schemas,\n format: true,\n hover: true,\n completion: true,\n validate: true,\n isKubernetes: false,\n enableSchemaRequest: false\n });\n\n // const uri = monaco.Uri.parse(id);\n // const oldModel = monaco.editor.getModel(uri);\n // if (oldModel) {\n // oldModel.dispose();\n // }\n // ctx.config.model = monaco.editor.createModel(props.modelValue, null, uri);\n}\n\nasync function doInit() {\n disposeEditor();\n const ctx: EditorCodeCtx = {\n monaco,\n language: props.language || \"javascript\",\n config: cloneDeep(props.config || {}),\n initialValue: props.modelValue || \"\",\n schema: props.schema\n };\n if (ctx.language === \"javascript\") {\n await initJavascript(ctx);\n } else if (ctx.language === \"yaml\") {\n await initYaml(ctx);\n } else if (ctx.language === \"json\") {\n await initJson(ctx);\n }\n\n await createEditor(ctx);\n}\n\nonMounted(async () => {\n await doInit();\n watch(\n () => {\n return {\n language: props.language,\n config: props.config\n };\n },\n (value: any) => {\n doInit();\n }\n );\n});\n\nwatch(\n () => {\n return props.modelValue;\n },\n (value: any) => {\n if (instanceRef && instanceRef.getValue() !== value) {\n instanceRef.setValue(value);\n }\n }\n);\n</script>\n\n<style lang=\"less\">\n.fs-editor-code {\n min-height: 100px;\n width: 100%;\n border: 1px solid #eee;\n border-radius: 5px;\n}\n\n.monaco-editor .hover-content {\n z-index: 10000 !important;\n}\n</style>\n",null,null,null,null],"names":["importJsYaml","importYamlContribution","importJsonContribution","importJavascriptContribution","importMonacoYaml","WorkerBucket","registerWorker","labels","worker","label","labelItem","initWorkers","_","workerLoader","props","__props","monacoRef","ref","instanceRef","disposeEditor","onUnmounted","emits","__emit","emitValue","lodashDebounce","value","createEditor","ctx","instance","monaco","event","initJavascript","initJson","schemas","initYaml","configureMonacoYaml","id","doInit","cloneDeep","onMounted","watch","types","FsExtendsModelType","app","options","newTypes","addTypes","useTypes","FsEditorCodeValidators","rule","yaml","modules","FsExtendsComponents","utils","FsEditorCode"],"mappings":"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"}
@@ -75,7 +75,7 @@ function k() {
75
75
  }
76
76
  });
77
77
  }
78
- const p = /* @__PURE__ */ Object.assign({ "./components/fs-editor-code/index.vue": () => import("./index-4cfdb04c.mjs") }), f = {
78
+ const p = /* @__PURE__ */ Object.assign({ "./components/fs-editor-code/index.vue": () => import("./index-5677963c.mjs") }), f = {
79
79
  install(t) {
80
80
  i.vite.installAsyncComponents(t, p, null, /^.*\/([^\/]+)\/.*.vue$/, null);
81
81
  }
@@ -94,4 +94,4 @@ export {
94
94
  k as i,
95
95
  C as r
96
96
  };
97
- //# sourceMappingURL=index-c2ddaf47.mjs.map
97
+ //# sourceMappingURL=index-551dfd5e.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-c2ddaf47.mjs","sources":["../../src/editor/type/types.ts","../../src/editor/type/index.ts","../../src/editor/components/fs-editor-code/async-import.ts","../../src/editor/components/fs-editor-code/validators.ts","../../src/editor/components/fs-editor-code/workers.ts","../../src/editor/index.ts"],"sourcesContent":[null,null,null,null,null,null],"names":["types","EcologyType","app","options","newTypes","addTypes","useTypes","importJsYaml","importYamlContribution","importJsonContribution","importJavascriptContribution","importMonacoYaml","jsonRule","rule","value","e","yamlRule","yaml","FsEditorCodeValidators","WorkerBucket","registerWorker","labels","worker","label","labelItem","initWorkers","_","workerLoader","asyncModules","FsExtendsComponents","utils","FsEditorCode"],"mappings":";AAAc,SAAAA,IAAA;AACL,SAAA;AAAA,IACL,eAAe;AAAA,MACb,MAAM,EAAE,WAAW,EAAE,MAAM,iBAAkB,GAAE,KAAK,EAAE,MAAM,KAAM;AAAA,IACnE;AAAA,EAAA;AAEL;ACHA,MAAeC,IAAA;AAAA,EACb,QAAQC,GAAUC,GAAY;AAC5B,UAAMC,IAAWJ,KACX,EAAE,UAAAK,MAAaC;AACrB,IAAAD,EAASD,CAAQ;AAAA,EACnB;;ACRF,eAAsBG,IAAY;AACzB,SAAA,MAAM,OAAO,SAAS;AAC/B;AAEA,eAAsBC,IAAsB;AAC1C,QAAM,OAAO,6DAA6D;AAC5E;AAEA,eAAsBC,IAAsB;AAC1C,QAAM,OAAO,wDAAwD;AACvE;AAEA,eAAsBC,IAA4B;AAChD,QAAM,OAAO,yEAAyE;AACxF;AAEA,eAAsBC,IAAgB;AAC7B,SAAA,MAAM,OAAO,aAAa;AACnC;AChBA,MAAMC,IAAW;AAAA,EACf,WAAW,OAAOC,GAAWC,MAAc;AAEzC,QAAIA;AACE,UAAA;AACF,aAAK,MAAMA,CAAK;AAAA,eACTC,GAAQ;AACf,sBAAQ,MAAMA,CAAC,GACT,IAAI,MAAM,cAAcA,EAAE,OAAO;AAAA,MACxC;AAAA,EAEL;AAAA,EACA,SAAS;GAGLC,IAAW;AAAA,EACf,WAAW,OAAOH,GAAWC,MAAc;AAEzC,QAAIA;AACE,UAAA;AACI,cAAAG,IAAO,MAAMV;AACnB,QAAAU,EAAK,KAAKH,GAAO,EAAE,QAAQG,EAAK,aAAa;AAAA,eACtCF,GAAQ;AACf,sBAAQ,MAAMA,CAAC,GACT,IAAI,MAAM,cAAcA,EAAE,OAAO;AAAA,MACxC;AAAA,EAEL;AAAA,EACA,SAAS;GAGEG,IAAyB;AAAA,EACpC,UAAAN;AAAA,EACA,UAAAI;GC/BIG,IAA6B,CAAA;AAInB,SAAAC,EAAeC,GAA2BC,GAAW;AACnE,EAAAH,EAAa,KAAK;AAAA,IAChB,QAAAG;AAAA,IACA,OAAO,CAACC,MAAiB;AACnB,UAAA,OAAOF,KAAW;AACpB,eAAOA,MAAWE;AAEpB,iBAAWC,KAAaH;AAItB,YAHIG,MAAc,OAGdA,MAAcD;AACT,iBAAA;AAGJ,aAAA;AAAA,IACT;AAAA,EAAA,CACD;AACH;SAEgBE,IAAW;AACzB,EAAI,OAAO,sBAKX,OAAO,oBAAoB;AAAA;AAAA,IAEzB,UAAUC,GAAGH,GAAK;AAChB,iBAAWI,KAAgBR;AACrB,YAAAQ,EAAa,MAAMJ,CAAK;AACnB,iBAAA,IAAII,EAAa;IAG9B;AAAA,EAAA;AAEJ;ACxCA,MAAMC,sHACAC,IAAsB;AAAA,EAC1B,QAAQ3B,GAAQ;AACd,IAAA4B,EAAM,KAAK,uBAAuB5B,GAAK0B,GAAc,MAAM,0BAA0B,IAAI;AAAA,EAC3F;GAGWG,IAAe;AAAA,EAC1B,QAAQ7B,GAAUC,GAAY;AACxB,IAAAD,EAAA,IAAID,GAAaE,CAAO,GAC5BD,EAAI,IAAI2B,CAAmB;AAAA,EAC7B;;"}
1
+ {"version":3,"file":"index-551dfd5e.mjs","sources":["../../src/editor/type/types.ts","../../src/editor/type/index.ts","../../src/editor/components/fs-editor-code/async-import.ts","../../src/editor/components/fs-editor-code/validators.ts","../../src/editor/components/fs-editor-code/workers.ts","../../src/editor/index.ts"],"sourcesContent":[null,null,null,null,null,null],"names":["types","EcologyType","app","options","newTypes","addTypes","useTypes","importJsYaml","importYamlContribution","importJsonContribution","importJavascriptContribution","importMonacoYaml","jsonRule","rule","value","e","yamlRule","yaml","FsEditorCodeValidators","WorkerBucket","registerWorker","labels","worker","label","labelItem","initWorkers","_","workerLoader","asyncModules","FsExtendsComponents","utils","FsEditorCode"],"mappings":";AAAc,SAAAA,IAAA;AACL,SAAA;AAAA,IACL,eAAe;AAAA,MACb,MAAM,EAAE,WAAW,EAAE,MAAM,iBAAkB,GAAE,KAAK,EAAE,MAAM,KAAM;AAAA,IACnE;AAAA,EAAA;AAEL;ACHA,MAAeC,IAAA;AAAA,EACb,QAAQC,GAAUC,GAAY;AAC5B,UAAMC,IAAWJ,KACX,EAAE,UAAAK,MAAaC;AACrB,IAAAD,EAASD,CAAQ;AAAA,EACnB;;ACRF,eAAsBG,IAAY;AACzB,SAAA,MAAM,OAAO,SAAS;AAC/B;AAEA,eAAsBC,IAAsB;AAC1C,QAAM,OAAO,6DAA6D;AAC5E;AAEA,eAAsBC,IAAsB;AAC1C,QAAM,OAAO,wDAAwD;AACvE;AAEA,eAAsBC,IAA4B;AAChD,QAAM,OAAO,yEAAyE;AACxF;AAEA,eAAsBC,IAAgB;AAC7B,SAAA,MAAM,OAAO,aAAa;AACnC;AChBA,MAAMC,IAAW;AAAA,EACf,WAAW,OAAOC,GAAWC,MAAc;AAEzC,QAAIA;AACE,UAAA;AACF,aAAK,MAAMA,CAAK;AAAA,eACTC,GAAQ;AACf,sBAAQ,MAAMA,CAAC,GACT,IAAI,MAAM,cAAcA,EAAE,OAAO;AAAA,MACxC;AAAA,EAEL;AAAA,EACA,SAAS;GAGLC,IAAW;AAAA,EACf,WAAW,OAAOH,GAAWC,MAAc;AAEzC,QAAIA;AACE,UAAA;AACI,cAAAG,IAAO,MAAMV;AACnB,QAAAU,EAAK,KAAKH,GAAO,EAAE,QAAQG,EAAK,aAAa;AAAA,eACtCF,GAAQ;AACf,sBAAQ,MAAMA,CAAC,GACT,IAAI,MAAM,cAAcA,EAAE,OAAO;AAAA,MACxC;AAAA,EAEL;AAAA,EACA,SAAS;GAGEG,IAAyB;AAAA,EACpC,UAAAN;AAAA,EACA,UAAAI;GC/BIG,IAA6B,CAAA;AAInB,SAAAC,EAAeC,GAA2BC,GAAW;AACnE,EAAAH,EAAa,KAAK;AAAA,IAChB,QAAAG;AAAA,IACA,OAAO,CAACC,MAAiB;AACnB,UAAA,OAAOF,KAAW;AACpB,eAAOA,MAAWE;AAEpB,iBAAWC,KAAaH;AAItB,YAHIG,MAAc,OAGdA,MAAcD;AACT,iBAAA;AAGJ,aAAA;AAAA,IACT;AAAA,EAAA,CACD;AACH;SAEgBE,IAAW;AACzB,EAAI,OAAO,sBAKX,OAAO,oBAAoB;AAAA;AAAA,IAEzB,UAAUC,GAAGH,GAAK;AAChB,iBAAWI,KAAgBR;AACrB,YAAAQ,EAAa,MAAMJ,CAAK;AACnB,iBAAA,IAAII,EAAa;IAG9B;AAAA,EAAA;AAEJ;ACxCA,MAAMC,sHACAC,IAAsB;AAAA,EAC1B,QAAQ3B,GAAQ;AACd,IAAA4B,EAAM,KAAK,uBAAuB5B,GAAK0B,GAAc,MAAM,0BAA0B,IAAI;AAAA,EAC3F;GAGWG,IAAe;AAAA,EAC1B,QAAQ7B,GAAUC,GAAY;AACxB,IAAAD,EAAA,IAAID,GAAaE,CAAO,GAC5BD,EAAI,IAAI2B,CAAmB;AAAA,EAC7B;;"}
@@ -1,9 +1,9 @@
1
- import { defineComponent as b, ref as _, onUnmounted as V, onMounted as w, watch as m, openBlock as j, createElementBlock as C } from "vue";
1
+ import { defineComponent as b, ref as _, onUnmounted as V, onMounted as w, watch as m, openBlock as j, createElementBlock as B } from "vue";
2
2
  import * as t from "monaco-editor";
3
- import { debounce as M, cloneDeep as k } from "lodash-es";
4
- import { i as R, a as B, b as D, c as J, d as Y } from "./index-c2ddaf47.mjs";
3
+ import { debounce as C, cloneDeep as D } from "lodash-es";
4
+ import { i as M, a as k, b as E, c as R, d as J } from "./index-551dfd5e.mjs";
5
5
  import "@fast-crud/fast-crud";
6
- const S = /* @__PURE__ */ b({
6
+ const T = /* @__PURE__ */ b({
7
7
  __name: "index",
8
8
  props: {
9
9
  language: {},
@@ -16,24 +16,24 @@ const S = /* @__PURE__ */ b({
16
16
  disabled: { type: Boolean },
17
17
  id: {}
18
18
  },
19
- emits: ["update:modelValue", "change", "ready"],
19
+ emits: ["update:modelValue", "change", "ready", "blur", "blur2"],
20
20
  setup(d, { emit: f }) {
21
21
  const a = d;
22
- R();
23
- const c = _();
22
+ M();
23
+ const r = _();
24
24
  let o = null;
25
- function s() {
25
+ function l() {
26
26
  o && o.dispose();
27
27
  }
28
28
  V(() => {
29
- s();
29
+ l();
30
30
  });
31
- const l = f, g = M((e) => {
32
- l("update:modelValue", e);
31
+ const s = f, g = C((e) => {
32
+ s("update:modelValue", e);
33
33
  }, a.debounce || 500);
34
34
  async function p(e) {
35
- s();
36
- const n = t.editor.create(c.value, {
35
+ l();
36
+ const n = t.editor.create(r.value, {
37
37
  automaticLayout: !0,
38
38
  value: a.modelValue,
39
39
  language: e.language,
@@ -45,16 +45,18 @@ const S = /* @__PURE__ */ b({
45
45
  },
46
46
  ...e.config
47
47
  });
48
- return n.onDidChangeModelContent((u) => {
48
+ return n.onDidChangeModelContent((c) => {
49
49
  const i = n.getValue();
50
- a.modelValue !== i && (l("change", i), g(i));
51
- }), o = n, e.instance = n, l("ready", e), n;
50
+ a.modelValue !== i && (s("change", i), g(i));
51
+ }), o = n, e.instance = n, n.onDidBlurEditorText(() => {
52
+ console.error("onDidBlurEditorText", e), s("blur", e), s("blur2", e);
53
+ }), s("ready", e), n;
52
54
  }
53
55
  async function h(e) {
54
- await B(), t.languages.register({ id: "javascript" });
56
+ await k(), t.languages.register({ id: "javascript" });
55
57
  }
56
58
  async function y(e) {
57
- await D(), t.languages.register({ id: "json" });
59
+ await E(), t.languages.register({ id: "json" });
58
60
  const n = [];
59
61
  e.schema && n.push({
60
62
  uri: "http://myserver/foo-schema.json",
@@ -71,10 +73,10 @@ const S = /* @__PURE__ */ b({
71
73
  });
72
74
  }
73
75
  async function v(e) {
74
- await J();
75
- const { configureMonacoYaml: n } = await Y();
76
+ await R();
77
+ const { configureMonacoYaml: n } = await J();
76
78
  t.languages.register({ id: "yaml" });
77
- let u = `fs-editor-code-yaml-${a.id || ""}.yaml`;
79
+ let c = `fs-editor-code-yaml-${a.id || ""}.yaml`;
78
80
  const i = [];
79
81
  e.schema && i.push({
80
82
  fileMatch: ["*"],
@@ -82,7 +84,7 @@ const S = /* @__PURE__ */ b({
82
84
  schema: {
83
85
  ...e.schema
84
86
  },
85
- uri: `http://myserver/${u}`
87
+ uri: `http://myserver/${c}`
86
88
  }), n(t, {
87
89
  schemas: i,
88
90
  format: !0,
@@ -93,25 +95,25 @@ const S = /* @__PURE__ */ b({
93
95
  enableSchemaRequest: !1
94
96
  });
95
97
  }
96
- async function r() {
97
- s();
98
+ async function u() {
99
+ l();
98
100
  const e = {
99
101
  monaco: t,
100
102
  language: a.language || "javascript",
101
- config: k(a.config || {}),
103
+ config: D(a.config || {}),
102
104
  initialValue: a.modelValue || "",
103
105
  schema: a.schema
104
106
  };
105
107
  e.language === "javascript" ? await h() : e.language === "yaml" ? await v(e) : e.language === "json" && await y(e), await p(e);
106
108
  }
107
109
  return w(async () => {
108
- await r(), m(
110
+ await u(), m(
109
111
  () => ({
110
112
  language: a.language,
111
113
  config: a.config
112
114
  }),
113
115
  (e) => {
114
- r();
116
+ u();
115
117
  }
116
118
  );
117
119
  }), m(
@@ -119,14 +121,14 @@ const S = /* @__PURE__ */ b({
119
121
  (e) => {
120
122
  o && o.getValue() !== e && o.setValue(e);
121
123
  }
122
- ), (e, n) => (j(), C("div", {
124
+ ), (e, n) => (j(), B("div", {
123
125
  ref_key: "monacoRef",
124
- ref: c,
126
+ ref: r,
125
127
  class: "fs-editor-code"
126
128
  }, null, 512));
127
129
  }
128
130
  });
129
131
  export {
130
- S as default
132
+ T as default
131
133
  };
132
- //# sourceMappingURL=index-4cfdb04c.mjs.map
134
+ //# sourceMappingURL=index-5677963c.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-5677963c.mjs","sources":["../src/editor/components/fs-editor-code/index.vue"],"sourcesContent":["<template>\n <div ref=\"monacoRef\" class=\"fs-editor-code\"></div>\n</template>\n\n<script lang=\"ts\" setup>\nimport * as monaco from \"monaco-editor\";\n// import * as monaco from \"monaco-editor/esm/vs/editor/editor.api\";\nimport { onMounted, onUnmounted, ref, watch } from \"vue\";\nimport { cloneDeep, debounce as lodashDebounce } from \"lodash-es\";\nimport {\n importJavascriptContribution,\n importJsonContribution,\n importMonacoYaml,\n importYamlContribution\n} from \"./async-import\";\nimport { initWorkers } from \"./workers\";\n/**\n * config:\n * value: '', // 编辑器初始文本\n * language: 'javascript', // 语言\n * theme: 'vs', // 主题\n * readOnly: false, // 是否只读\n * minimap: { enabled: false }, // 是否启用小地图\n * fontSize: 14, // 字体大小\n * tabSize: 2, // tab缩进长度\n * automaticLayout: true, // 自动布局\n * lineNumbers: 'off', // 是否启用行号\n * contextmenu: true, // 是否启用上下文菜单\n * folding: true, // 是否启用代码折叠\n * foldingStrategy: 'auto', // 代码折叠策略\n * wordWrap: 'on', // 自动换行设置\n * wrappingIndent: 'indent', // 换行缩进\n * formatOnPaste: true, // 粘贴时是否自动格式化\n * formatOnType: true, // 输入时是否自动格式化\n * dragAndDrop: true, // 是否允许拖放\n * cursorStyle: 'line', // 光标样式\n * cursorBlinking: 'blink', // 光标闪烁方式\n * scrollbar: {\n * vertical: 'auto', // 垂直滚动条的显示方式\n * horizontal: 'auto', // 水平滚动条的显示方式\n * verticalScrollbarSize: 2, // 垂直滚动条的宽\n * horizontalScrollbarSize: 2, // 水平滚动条的高度\n * }\n */\nconst props = defineProps<{\n language?: string;\n modelValue?: string;\n config?: any;\n schema?: any;\n debounce?: number;\n init?: any;\n readonly?: boolean;\n disabled?: boolean;\n id?: string;\n}>();\n\nexport type EditorCodeCtx = {\n // monaco对象\n monaco: any;\n //语言\n language: string;\n //配置\n config: any;\n //editor实例对象\n instance?: any;\n\n schema?: any;\n\n initialValue?: any;\n};\ninitWorkers();\nconst monacoRef = ref();\n\nlet instanceRef: any = null;\n\nfunction disposeEditor() {\n if (instanceRef) {\n instanceRef.dispose(); //使用完成销毁实例\n }\n}\n\nonUnmounted(() => {\n disposeEditor();\n});\n\nconst emits = defineEmits([\"update:modelValue\", \"change\", \"ready\", \"blur\", \"blur2\"]);\n\nconst emitValue = lodashDebounce((value: any) => {\n emits(\"update:modelValue\", value);\n}, props.debounce || 500);\n\nasync function createEditor(ctx: EditorCodeCtx) {\n disposeEditor();\n const instance = monaco.editor.create(monacoRef.value, {\n automaticLayout: true,\n value: props.modelValue,\n language: ctx.language,\n theme: \"vs-dark\",\n minimap: { enabled: false },\n readOnly: props.readonly || props.disabled,\n hover: {\n enabled: true\n },\n ...ctx.config\n });\n\n // @event `change`\n instance.onDidChangeModelContent((event) => {\n const value = instance.getValue();\n if (props.modelValue !== value) {\n emits(\"change\", value);\n emitValue(value);\n }\n });\n\n instanceRef = instance;\n ctx.instance = instance;\n\n instance.onDidBlurEditorText(() => {\n console.error(\"onDidBlurEditorText\", ctx);\n emits(\"blur\", ctx);\n emits(\"blur2\", ctx);\n });\n\n emits(\"ready\", ctx);\n return instance;\n}\n\nasync function initJavascript(ctx: EditorCodeCtx) {\n await importJavascriptContribution();\n monaco.languages.register({ id: \"javascript\" });\n}\n\nasync function initJson(ctx: EditorCodeCtx) {\n await importJsonContribution();\n monaco.languages.register({ id: \"json\" });\n\n const schemas = [];\n if (ctx.schema) {\n schemas.push({\n uri: \"http://myserver/foo-schema.json\", // id of the first schema\n fileMatch: [\"*\"], // associate with our model\n schema: {\n ...ctx.schema\n }\n });\n }\n\n monaco.languages.json.jsonDefaults.setDiagnosticsOptions({\n validate: true,\n enableSchemaRequest: false,\n schemas\n });\n}\n\nasync function initYaml(ctx: EditorCodeCtx) {\n await importYamlContribution();\n const { configureMonacoYaml } = await importMonacoYaml();\n monaco.languages.register({ id: \"yaml\" });\n let id = `fs-editor-code-yaml-${props.id || \"\"}.yaml`;\n const schemas = [];\n if (ctx.schema) {\n schemas.push({\n fileMatch: [\"*\"], // associate with our model\n schema: {\n ...ctx.schema\n },\n uri: `http://myserver/${id}`\n });\n }\n configureMonacoYaml(monaco, {\n schemas,\n format: true,\n hover: true,\n completion: true,\n validate: true,\n isKubernetes: false,\n enableSchemaRequest: false\n });\n\n // const uri = monaco.Uri.parse(id);\n // const oldModel = monaco.editor.getModel(uri);\n // if (oldModel) {\n // oldModel.dispose();\n // }\n // ctx.config.model = monaco.editor.createModel(props.modelValue, null, uri);\n}\n\nasync function doInit() {\n disposeEditor();\n const ctx: EditorCodeCtx = {\n monaco,\n language: props.language || \"javascript\",\n config: cloneDeep(props.config || {}),\n initialValue: props.modelValue || \"\",\n schema: props.schema\n };\n if (ctx.language === \"javascript\") {\n await initJavascript(ctx);\n } else if (ctx.language === \"yaml\") {\n await initYaml(ctx);\n } else if (ctx.language === \"json\") {\n await initJson(ctx);\n }\n\n await createEditor(ctx);\n}\n\nonMounted(async () => {\n await doInit();\n watch(\n () => {\n return {\n language: props.language,\n config: props.config\n };\n },\n (value: any) => {\n doInit();\n }\n );\n});\n\nwatch(\n () => {\n return props.modelValue;\n },\n (value: any) => {\n if (instanceRef && instanceRef.getValue() !== value) {\n instanceRef.setValue(value);\n }\n }\n);\n</script>\n\n<style lang=\"less\">\n.fs-editor-code {\n min-height: 100px;\n width: 100%;\n border: 1px solid #eee;\n border-radius: 5px;\n}\n\n.monaco-editor .hover-content {\n z-index: 10000 !important;\n}\n</style>\n"],"names":["props","__props","initWorkers","monacoRef","ref","instanceRef","disposeEditor","onUnmounted","emits","__emit","emitValue","lodashDebounce","value","createEditor","ctx","instance","monaco","event","initJavascript","importJavascriptContribution","initJson","importJsonContribution","schemas","initYaml","importYamlContribution","configureMonacoYaml","importMonacoYaml","id","doInit","cloneDeep","onMounted","watch"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fast-crud/editor-code",
3
- "version": "1.26.5",
3
+ "version": "1.27.0",
4
4
  "private": false,
5
5
  "main": "./dist/editor-code.umd.js",
6
6
  "module": "./dist/editor-code.mjs",
@@ -26,7 +26,7 @@
26
26
  "monaco-yaml": "^5.3.1"
27
27
  },
28
28
  "devDependencies": {
29
- "@fast-crud/fast-crud": "^1.26.5",
29
+ "@fast-crud/fast-crud": "^1.27.0",
30
30
  "@ls-lint/ls-lint": "^2.0.1",
31
31
  "@rollup/plugin-commonjs": "^25.0.3",
32
32
  "@rollup/plugin-strip": "^3.0.2",
@@ -75,5 +75,5 @@
75
75
  "vue-eslint-parser": "^9.3.1",
76
76
  "vue-tsc": "^1.8.8"
77
77
  },
78
- "gitHead": "104adea81461c91456cb6f02f56f25ce7585753a"
78
+ "gitHead": "2482c801a3cf856f4cefde3ea7281fdb43295e03"
79
79
  }
@@ -233,7 +233,7 @@ watch(
233
233
 
234
234
  <style lang="less">
235
235
  .fs-editor-code {
236
- min-height: 100px;
236
+ min-height: 500px;
237
237
  width: 100%;
238
238
  border: 1px solid #eee;
239
239
  border-radius: 5px;