@qxs-bns/components 0.0.52 → 0.0.53
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/es/package.json.mjs +1 -1
- package/es/src/tiny-mce-editor/src/tiny-mce-editor.vue.mjs +1 -1
- package/es/src/tiny-mce-editor/src/tiny-mce-editor.vue.mjs.map +1 -1
- package/lib/package.json.cjs +1 -1
- package/lib/src/tiny-mce-editor/src/tiny-mce-editor.vue.cjs +1 -1
- package/lib/src/tiny-mce-editor/src/tiny-mce-editor.vue.cjs.map +1 -1
- package/package.json +4 -4
- package/types/src/tiny-mce-editor/index.d.ts.map +1 -1
- package/types/src/tiny-mce-editor/src/tiny-mce-editor.vue.d.ts.map +1 -1
- package/types/tsconfig.tsbuildinfo +1 -1
package/es/package.json.mjs
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
var r="0.0.
|
1
|
+
var r="0.0.53";export{r as version};
|
2
2
|
//# sourceMappingURL=package.json.mjs.map
|
@@ -1,2 +1,2 @@
|
|
1
|
-
import{defineComponent as e,shallowRef as t,ref as i,computed as n,watch as o,onMounted as
|
1
|
+
import{defineComponent as e,shallowRef as t,ref as i,computed as n,watch as o,onMounted as l,onBeforeUnmount as a,createElementBlock as r,openBlock as s,normalizeClass as m,unref as u,createCommentVNode as c,withDirectives as p,createElementVNode as d,isRef as g,vModelText as y}from"vue";import{useNamespace as f}from"@qxs-bns/hooks";import{merge as h}from"lodash-es";import v from"tinymce/tinymce";import"tinymce/themes/silver/theme";import"tinymce/icons/default/icons";import"tinymce/models/dom";import"tinymce/plugins/autolink";import"tinymce/plugins/autoresize";import"tinymce/plugins/fullscreen";import"tinymce/plugins/image";import"tinymce/plugins/insertdatetime";import"tinymce/plugins/link";import"tinymce/plugins/lists";import"tinymce/plugins/media";import"tinymce/plugins/preview";import"tinymce/plugins/table";import"tinymce/plugins/wordcount";import"tinymce/plugins/code";import"tinymce/plugins/searchreplace";import"tinymce/plugins/nonbreaking";const b=["id","name"];var k=e({name:"QxsTinyMceEditor",__name:"tiny-mce-editor",props:{modelValue:{type:String,required:!0,default:""},config:{type:Object,required:!1,default:()=>({})},assetsBasePath:{type:String,required:!1,default:""}},emits:["update:modelValue"],setup(e,{emit:k}){const _=k,x=f("tiny-mce-editor"),w=e.assetsBasePath||"node_modules/",S=t(null),V=i(`tiny-mce-textarea-${Date.now()}-${Math.random().toString(36).substr(2,9)}`),$=n({get:()=>e.modelValue,set(e){_("update:modelValue",e)}}),z={selector:`textarea#${V.value}`,promotion:!1,license_key:"gpl",elementpath:!1,language:"zh-Hans",language_url:`${w}tinymce/langs/zh-Hans.js`,skin_url:`${w}tinymce/skins/ui/oxide`,content_css:`${w}tinymce/skins/content/default/content.min.css`,min_height:300,max_height:700,plugins:"autolink autoresize fullscreen image insertdatetime link lists media preview table wordcount code searchreplace nonbreaking",toolbar:"undo redo | bold italic underline strikethrough | blocks | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | forecolor backcolor removeformat | link image media table insertdatetime searchreplace | preview code",branding:!1,autoresize:!0,menubar:!1,nonbreaking_force_tab:!0,toolbar_mode:"sliding",insertdatetime_formats:["%Y年%m月%d日","%H点%M分%S秒","%Y-%m-%d","%H:%M:%S"],setup:t=>{t.on("init",(()=>{S.value=t,t.setContent($.value)})),t.on("input change undo redo",(()=>{$.value=t.getContent()})),e.config?.expandSetup?.(t)}},q=n((()=>{const t=z;return e.config.images_upload_handler||("string"==typeof t.plugins?t.plugins=t.plugins.replace("image",""):Array.isArray(t.plugins)&&(t.plugins=t.plugins.filter((e=>"image"!==e)))),h(t,e.config)}));return o((()=>e.modelValue),(e=>{try{S.value&&e!==S.value?.getContent()&&S.value.setContent(e)}catch(e){console.error("设置编辑器内容时出错:",e)}})),l((async()=>{"undefined"!=typeof window&&v.init(q.value)})),a((()=>{S.value&&(S.value.destroy(),S.value=null)})),(e,t)=>(s(),r("div",{class:m(u(x).e("tiny-mce"))},[c(" 使用动态生成的 id "),p(d("textarea",{id:u(V),"onUpdate:modelValue":t[0]||(t[0]=e=>g($)?$.value=e:null),name:u(V)},null,8,b),[[y,u($)]])],2))}});export{k as default};
|
2
2
|
//# sourceMappingURL=tiny-mce-editor.vue.mjs.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"tiny-mce-editor.vue.mjs","sources":["../../../../../../packages/components/src/tiny-mce-editor/src/tiny-mce-editor.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { Editor, RawEditorOptions } from 'tinymce/tinymce'\nimport { useNamespace } from '@qxs-bns/hooks'\nimport { merge } from 'lodash-es'\nimport tinymce from 'tinymce/tinymce'\n\n// 导入核心功能\nimport 'tinymce/themes/silver/theme'\nimport 'tinymce/icons/default/icons'\nimport 'tinymce/models/dom'\n\nimport 'tinymce/plugins/autolink'\nimport 'tinymce/plugins/autoresize'\nimport 'tinymce/plugins/fullscreen'\nimport 'tinymce/plugins/image'\nimport 'tinymce/plugins/insertdatetime'\nimport 'tinymce/plugins/link'\nimport 'tinymce/plugins/lists'\nimport 'tinymce/plugins/media'\nimport 'tinymce/plugins/preview'\nimport 'tinymce/plugins/table'\nimport 'tinymce/plugins/wordcount'\nimport 'tinymce/plugins/code'\nimport 'tinymce/plugins/searchreplace'\nimport 'tinymce/plugins/nonbreaking'\n// 导入语言包\n\ndefineOptions({\n name: 'QxsTinyMceEditor',\n})\n\nconst {\n modelValue = '',\n config = {},\n assetsBasePath = '',\n} = defineProps<{\n modelValue: string\n config?: RawEditorOptions & {\n expandSetup?: RawEditorOptions['setup']\n }\n assetsBasePath?: string\n}>()\n\nconst emit = defineEmits(['update:modelValue'])\n\nconst ns = useNamespace('tiny-mce-editor')\n\nconst colorScheme = 'light'\nconst basePath = assetsBasePath || 'node_modules/'\n// 存储编辑器实例的引用\nconst editorInstance = shallowRef<Editor | null>(null)\n// 生成唯一的 id\nconst uniqueId = ref(\n `tiny-mce-textarea-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`,\n)\n\nconst content = computed({\n get() {\n return modelValue\n },\n set(val) {\n emit('update:modelValue', val)\n },\n})\n\nconst defaultSetting: RawEditorOptions = {\n // 使用动态生成的 id\n selector: `textarea#${uniqueId.value}`,\n promotion: false, // 禁用推广信息\n license_key: 'gpl',\n elementpath: false,\n language: 'zh-Hans',\n language_url: `${basePath}tinymce/langs/zh-Hans.js`,\n skin_url: `${basePath}${\n colorScheme === 'light' ? 'tinymce/skins/ui/oxide' : 'tinymce/skins/ui/oxide-dark'\n }`,\n content_css: `${basePath}${\n colorScheme === 'light'\n ? 'tinymce/skins/content/default/content.min.css'\n : 'tinymce/skins/content/dark/content.min.css'\n }`,\n min_height: 300,\n max_height: 700,\n plugins:\n 'autolink autoresize fullscreen image insertdatetime link lists media preview table wordcount code searchreplace nonbreaking',\n toolbar:\n 'undo redo | bold italic underline strikethrough | blocks | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | forecolor backcolor removeformat | link image media table insertdatetime searchreplace | preview code',\n branding: false,\n autoresize: true,\n menubar: false,\n nonbreaking_force_tab: true,\n toolbar_mode: 'sliding',\n insertdatetime_formats: [\n '%Y年%m月%d日',\n '%H点%M分%S秒',\n '%Y-%m-%d',\n '%H:%M:%S',\n ],\n // https://www.tiny.cloud/docs/tinymce/6/file-image-upload/#images_upload_handler\n // images_upload_handler: async (blobInfo: any, progress: any) => {\n // // blobInfo, succFun, failFun, progress\n // const files = blobInfo.blob()\n // const formData = new FormData()\n // formData.append('image', files)\n\n // const { res, error } = await useApi({\n // // ...commonUrls.uploadImage,\n // params: {\n // bucketType: classify,\n // },\n // data: formData,\n // onUploadProgress: (e: any) => {\n // progress((e.loaded / e.total) * 100)\n // },\n // })\n // if (res) {\n // const { normal } = res\n // console.log('normal: ', res)\n // return normal\n // }\n // if (error) {\n // console.log(error.message)\n // return Promise.reject(error.message)\n // }\n // },\n setup: (editor: Editor) => {\n //
|
1
|
+
{"version":3,"file":"tiny-mce-editor.vue.mjs","sources":["../../../../../../packages/components/src/tiny-mce-editor/src/tiny-mce-editor.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { Editor, RawEditorOptions } from 'tinymce/tinymce'\nimport { useNamespace } from '@qxs-bns/hooks'\nimport { merge } from 'lodash-es'\nimport tinymce from 'tinymce/tinymce'\n\n// 导入核心功能\nimport 'tinymce/themes/silver/theme'\nimport 'tinymce/icons/default/icons'\nimport 'tinymce/models/dom'\n\nimport 'tinymce/plugins/autolink'\nimport 'tinymce/plugins/autoresize'\nimport 'tinymce/plugins/fullscreen'\nimport 'tinymce/plugins/image'\nimport 'tinymce/plugins/insertdatetime'\nimport 'tinymce/plugins/link'\nimport 'tinymce/plugins/lists'\nimport 'tinymce/plugins/media'\nimport 'tinymce/plugins/preview'\nimport 'tinymce/plugins/table'\nimport 'tinymce/plugins/wordcount'\nimport 'tinymce/plugins/code'\nimport 'tinymce/plugins/searchreplace'\nimport 'tinymce/plugins/nonbreaking'\n// 导入语言包\n\ndefineOptions({\n name: 'QxsTinyMceEditor',\n})\n\nconst {\n modelValue = '',\n config = {},\n assetsBasePath = '',\n} = defineProps<{\n modelValue: string\n config?: RawEditorOptions & {\n expandSetup?: RawEditorOptions['setup']\n }\n assetsBasePath?: string\n}>()\n\nconst emit = defineEmits(['update:modelValue'])\n\nconst ns = useNamespace('tiny-mce-editor')\n\nconst colorScheme = 'light'\nconst basePath = assetsBasePath || 'node_modules/'\n// 存储编辑器实例的引用\nconst editorInstance = shallowRef<Editor | null>(null)\n// 生成唯一的 id\nconst uniqueId = ref(\n `tiny-mce-textarea-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`,\n)\n\nconst content = computed({\n get() {\n return modelValue\n },\n set(val) {\n emit('update:modelValue', val)\n },\n})\n\nconst defaultSetting: RawEditorOptions = {\n // 使用动态生成的 id\n selector: `textarea#${uniqueId.value}`,\n promotion: false, // 禁用推广信息\n license_key: 'gpl',\n elementpath: false,\n language: 'zh-Hans',\n language_url: `${basePath}tinymce/langs/zh-Hans.js`,\n skin_url: `${basePath}${\n colorScheme === 'light' ? 'tinymce/skins/ui/oxide' : 'tinymce/skins/ui/oxide-dark'\n }`,\n content_css: `${basePath}${\n colorScheme === 'light'\n ? 'tinymce/skins/content/default/content.min.css'\n : 'tinymce/skins/content/dark/content.min.css'\n }`,\n min_height: 300,\n max_height: 700,\n plugins:\n 'autolink autoresize fullscreen image insertdatetime link lists media preview table wordcount code searchreplace nonbreaking',\n toolbar:\n 'undo redo | bold italic underline strikethrough | blocks | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | forecolor backcolor removeformat | link image media table insertdatetime searchreplace | preview code',\n branding: false,\n autoresize: true,\n menubar: false,\n nonbreaking_force_tab: true,\n toolbar_mode: 'sliding',\n insertdatetime_formats: [\n '%Y年%m月%d日',\n '%H点%M分%S秒',\n '%Y-%m-%d',\n '%H:%M:%S',\n ],\n // https://www.tiny.cloud/docs/tinymce/6/file-image-upload/#images_upload_handler\n // images_upload_handler: async (blobInfo: any, progress: any) => {\n // // blobInfo, succFun, failFun, progress\n // const files = blobInfo.blob()\n // const formData = new FormData()\n // formData.append('image', files)\n\n // const { res, error } = await useApi({\n // // ...commonUrls.uploadImage,\n // params: {\n // bucketType: classify,\n // },\n // data: formData,\n // onUploadProgress: (e: any) => {\n // progress((e.loaded / e.total) * 100)\n // },\n // })\n // if (res) {\n // const { normal } = res\n // console.log('normal: ', res)\n // return normal\n // }\n // if (error) {\n // console.log(error.message)\n // return Promise.reject(error.message)\n // }\n // },\n setup: (editor: Editor) => {\n // 编辑器初始化完成后设置内容\n editor.on('init', () => {\n // 保存编辑器实例\n editorInstance.value = editor\n editor.setContent(content.value)\n })\n\n // 监听编辑器内容变化\n editor.on('input change undo redo', () => {\n content.value = editor.getContent()\n })\n\n config?.expandSetup?.(editor)\n },\n}\n\nconst initSetting = computed(() => {\n const dealDefaultSetting = defaultSetting\n if (!config.images_upload_handler) {\n // 删除 image 图片 plugin\n if (typeof dealDefaultSetting.plugins === 'string') {\n dealDefaultSetting.plugins = dealDefaultSetting.plugins.replace(\n 'image',\n '',\n )\n }\n else if (Array.isArray(dealDefaultSetting.plugins)) {\n dealDefaultSetting.plugins = dealDefaultSetting.plugins.filter(\n plugin => plugin !== 'image',\n )\n }\n }\n return merge(dealDefaultSetting, config)\n})\n\n// 监听 modelValue 的变化\nwatch(() => modelValue, (newVal) => {\n try {\n // 确保编辑器已初始化且内容确实发生变化\n if (editorInstance.value && newVal !== editorInstance.value?.getContent()) {\n editorInstance.value.setContent(newVal)\n }\n }\n catch (error) {\n console.error('设置编辑器内容时出错:', error)\n }\n})\n\nonMounted(async () => {\n if (typeof window !== 'undefined') {\n tinymce.init(initSetting.value)\n }\n})\n\n// 组件卸载时清理\nonBeforeUnmount(() => {\n if (editorInstance.value) {\n editorInstance.value.destroy()\n editorInstance.value = null\n }\n})\n</script>\n\n<template>\n <div :class=\"ns.e('tiny-mce')\">\n <!-- 使用动态生成的 id -->\n <textarea\n :id=\"uniqueId\"\n v-model=\"content\"\n :name=\"uniqueId\"\n />\n </div>\n</template>\n"],"names":["emit","__emit","ns","useNamespace","basePath","__props","assetsBasePath","editorInstance","shallowRef","uniqueId","ref","Date","now","Math","random","toString","substr","content","computed","get","modelValue","set","val","defaultSetting","selector","value","promotion","license_key","elementpath","language","language_url","skin_url","content_css","min_height","max_height","plugins","toolbar","branding","autoresize","menubar","nonbreaking_force_tab","toolbar_mode","insertdatetime_formats","setup","editor","on","setContent","getContent","config","expandSetup","initSetting","dealDefaultSetting","images_upload_handler","replace","Array","isArray","filter","plugin","merge","watch","newVal","error","console","onMounted","async","window","tinymce","init","onBeforeUnmount","destroy"],"mappings":"2tCA2CA,MAAMA,EAAOC,EAEPC,EAAKC,EAAa,mBAGlBC,EAAWC,EAAAC,gBAAkB,gBAE7BC,EAAiBC,EAA0B,MAE3CC,EAAWC,EACf,qBAAqBC,KAAKC,SAASC,KAAKC,SAASC,SAAS,IAAIC,OAAO,EAAG,MAGpEC,EAAUC,EAAS,CACvBC,IAAM,IACGd,EAAAe,WAET,GAAAC,CAAIC,GACFtB,EAAK,oBAAqBsB,EAAG,IAI3BC,EAAmC,CAEvCC,SAAU,YAAYf,EAASgB,QAC/BC,WAAW,EACXC,YAAa,MACbC,aAAa,EACbC,SAAU,UACVC,aAAc,GAAG1B,4BACjB2B,SAAU,GAAG3B,0BAGb4B,YAAa,GAAG5B,iDAKhB6B,WAAY,IACZC,WAAY,IACZC,QACE,8HACFC,QACE,oPACFC,UAAU,EACVC,YAAY,EACZC,SAAS,EACTC,uBAAuB,EACvBC,aAAc,UACdC,uBAAwB,CACtB,YACA,YACA,WACA,YA6BFC,MAAQC,IAECA,EAAAC,GAAG,QAAQ,KAEhBtC,EAAekB,MAAQmB,EAChBA,EAAAE,WAAW7B,EAAQQ,MAAK,IAI1BmB,EAAAC,GAAG,0BAA0B,KAC1B5B,EAAAQ,MAAQmB,EAAOG,YAAW,IAG9B1C,EAAA2C,QAAEC,cAAcL,EAAM,GAI1BM,EAAchC,GAAS,KAC3B,MAAMiC,EAAqB5B,EAepB,OAdFlB,EAAM2C,OAACI,wBAEgC,iBAA/BD,EAAmBhB,QACTgB,EAAAhB,QAAUgB,EAAmBhB,QAAQkB,QACtD,QACA,IAGKC,MAAMC,QAAQJ,EAAmBhB,WACrBgB,EAAAhB,QAAUgB,EAAmBhB,QAAQqB,WACjC,UAAXC,MAITC,EAAMP,EAAoB9C,EAAM2C,OAAA,WAIzCW,GAAM,IAAMtD,EAAAe,aAAawC,IACnB,IAEErD,EAAekB,OAASmC,IAAWrD,EAAekB,OAAOsB,cAC5CxC,EAAAkB,MAAMqB,WAAWc,SAG7BC,GACGC,QAAAD,MAAM,cAAeA,EAAK,KAItCE,GAAUC,UACc,oBAAXC,QACDC,EAAAC,KAAKjB,EAAYzB,MAAK,IAKlC2C,GAAgB,KACV7D,EAAekB,QACjBlB,EAAekB,MAAM4C,UACrB9D,EAAekB,MAAQ,KAAA"}
|
package/lib/package.json.cjs
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
"use strict";exports.version="0.0.
|
1
|
+
"use strict";exports.version="0.0.53";
|
2
2
|
//# sourceMappingURL=package.json.cjs.map
|
@@ -1,2 +1,2 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue"),n=require("@qxs-bns/hooks"),i=require("lodash-es"),t=require("tinymce/tinymce");require("tinymce/themes/silver/theme"),require("tinymce/icons/default/icons"),require("tinymce/models/dom"),require("tinymce/plugins/autolink"),require("tinymce/plugins/autoresize"),require("tinymce/plugins/fullscreen"),require("tinymce/plugins/image"),require("tinymce/plugins/insertdatetime"),require("tinymce/plugins/link"),require("tinymce/plugins/lists"),require("tinymce/plugins/media"),require("tinymce/plugins/preview"),require("tinymce/plugins/table"),require("tinymce/plugins/wordcount"),require("tinymce/plugins/code"),require("tinymce/plugins/searchreplace"),require("tinymce/plugins/nonbreaking");const r=["id","name"];var l=e.defineComponent({name:"QxsTinyMceEditor",__name:"tiny-mce-editor",props:{modelValue:{type:String,required:!0,default:""},config:{type:Object,required:!1,default:()=>({})},assetsBasePath:{type:String,required:!1,default:""}},emits:["update:modelValue"],setup(l,{emit:a}){const u=a,
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue"),n=require("@qxs-bns/hooks"),i=require("lodash-es"),t=require("tinymce/tinymce");require("tinymce/themes/silver/theme"),require("tinymce/icons/default/icons"),require("tinymce/models/dom"),require("tinymce/plugins/autolink"),require("tinymce/plugins/autoresize"),require("tinymce/plugins/fullscreen"),require("tinymce/plugins/image"),require("tinymce/plugins/insertdatetime"),require("tinymce/plugins/link"),require("tinymce/plugins/lists"),require("tinymce/plugins/media"),require("tinymce/plugins/preview"),require("tinymce/plugins/table"),require("tinymce/plugins/wordcount"),require("tinymce/plugins/code"),require("tinymce/plugins/searchreplace"),require("tinymce/plugins/nonbreaking");const r=["id","name"];var l=e.defineComponent({name:"QxsTinyMceEditor",__name:"tiny-mce-editor",props:{modelValue:{type:String,required:!0,default:""},config:{type:Object,required:!1,default:()=>({})},assetsBasePath:{type:String,required:!1,default:""}},emits:["update:modelValue"],setup(l,{emit:a}){const u=a,o=n.useNamespace("tiny-mce-editor"),s=l.assetsBasePath||"node_modules/",c=e.shallowRef(null),m=e.ref(`tiny-mce-textarea-${Date.now()}-${Math.random().toString(36).substr(2,9)}`),d=e.computed({get:()=>l.modelValue,set(e){u("update:modelValue",e)}}),g={selector:`textarea#${m.value}`,promotion:!1,license_key:"gpl",elementpath:!1,language:"zh-Hans",language_url:`${s}tinymce/langs/zh-Hans.js`,skin_url:`${s}tinymce/skins/ui/oxide`,content_css:`${s}tinymce/skins/content/default/content.min.css`,min_height:300,max_height:700,plugins:"autolink autoresize fullscreen image insertdatetime link lists media preview table wordcount code searchreplace nonbreaking",toolbar:"undo redo | bold italic underline strikethrough | blocks | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | forecolor backcolor removeformat | link image media table insertdatetime searchreplace | preview code",branding:!1,autoresize:!0,menubar:!1,nonbreaking_force_tab:!0,toolbar_mode:"sliding",insertdatetime_formats:["%Y年%m月%d日","%H点%M分%S秒","%Y-%m-%d","%H:%M:%S"],setup:e=>{e.on("init",(()=>{c.value=e,e.setContent(d.value)})),e.on("input change undo redo",(()=>{d.value=e.getContent()})),l.config?.expandSetup?.(e)}},p=e.computed((()=>{const e=g;return l.config.images_upload_handler||("string"==typeof e.plugins?e.plugins=e.plugins.replace("image",""):Array.isArray(e.plugins)&&(e.plugins=e.plugins.filter((e=>"image"!==e)))),i.merge(e,l.config)}));return e.watch((()=>l.modelValue),(e=>{try{c.value&&e!==c.value?.getContent()&&c.value.setContent(e)}catch(e){console.error("设置编辑器内容时出错:",e)}})),e.onMounted((async()=>{"undefined"!=typeof window&&t.init(p.value)})),e.onBeforeUnmount((()=>{c.value&&(c.value.destroy(),c.value=null)})),(n,i)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(o).e("tiny-mce"))},[e.createCommentVNode(" 使用动态生成的 id "),e.withDirectives(e.createElementVNode("textarea",{id:e.unref(m),"onUpdate:modelValue":i[0]||(i[0]=n=>e.isRef(d)?d.value=n:null),name:e.unref(m)},null,8,r),[[e.vModelText,e.unref(d)]])],2))}});exports.default=l;
|
2
2
|
//# sourceMappingURL=tiny-mce-editor.vue.cjs.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"tiny-mce-editor.vue.cjs","sources":["../../../../../../packages/components/src/tiny-mce-editor/src/tiny-mce-editor.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { Editor, RawEditorOptions } from 'tinymce/tinymce'\nimport { useNamespace } from '@qxs-bns/hooks'\nimport { merge } from 'lodash-es'\nimport tinymce from 'tinymce/tinymce'\n\n// 导入核心功能\nimport 'tinymce/themes/silver/theme'\nimport 'tinymce/icons/default/icons'\nimport 'tinymce/models/dom'\n\nimport 'tinymce/plugins/autolink'\nimport 'tinymce/plugins/autoresize'\nimport 'tinymce/plugins/fullscreen'\nimport 'tinymce/plugins/image'\nimport 'tinymce/plugins/insertdatetime'\nimport 'tinymce/plugins/link'\nimport 'tinymce/plugins/lists'\nimport 'tinymce/plugins/media'\nimport 'tinymce/plugins/preview'\nimport 'tinymce/plugins/table'\nimport 'tinymce/plugins/wordcount'\nimport 'tinymce/plugins/code'\nimport 'tinymce/plugins/searchreplace'\nimport 'tinymce/plugins/nonbreaking'\n// 导入语言包\n\ndefineOptions({\n name: 'QxsTinyMceEditor',\n})\n\nconst {\n modelValue = '',\n config = {},\n assetsBasePath = '',\n} = defineProps<{\n modelValue: string\n config?: RawEditorOptions & {\n expandSetup?: RawEditorOptions['setup']\n }\n assetsBasePath?: string\n}>()\n\nconst emit = defineEmits(['update:modelValue'])\n\nconst ns = useNamespace('tiny-mce-editor')\n\nconst colorScheme = 'light'\nconst basePath = assetsBasePath || 'node_modules/'\n// 存储编辑器实例的引用\nconst editorInstance = shallowRef<Editor | null>(null)\n// 生成唯一的 id\nconst uniqueId = ref(\n `tiny-mce-textarea-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`,\n)\n\nconst content = computed({\n get() {\n return modelValue\n },\n set(val) {\n emit('update:modelValue', val)\n },\n})\n\nconst defaultSetting: RawEditorOptions = {\n // 使用动态生成的 id\n selector: `textarea#${uniqueId.value}`,\n promotion: false, // 禁用推广信息\n license_key: 'gpl',\n elementpath: false,\n language: 'zh-Hans',\n language_url: `${basePath}tinymce/langs/zh-Hans.js`,\n skin_url: `${basePath}${\n colorScheme === 'light' ? 'tinymce/skins/ui/oxide' : 'tinymce/skins/ui/oxide-dark'\n }`,\n content_css: `${basePath}${\n colorScheme === 'light'\n ? 'tinymce/skins/content/default/content.min.css'\n : 'tinymce/skins/content/dark/content.min.css'\n }`,\n min_height: 300,\n max_height: 700,\n plugins:\n 'autolink autoresize fullscreen image insertdatetime link lists media preview table wordcount code searchreplace nonbreaking',\n toolbar:\n 'undo redo | bold italic underline strikethrough | blocks | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | forecolor backcolor removeformat | link image media table insertdatetime searchreplace | preview code',\n branding: false,\n autoresize: true,\n menubar: false,\n nonbreaking_force_tab: true,\n toolbar_mode: 'sliding',\n insertdatetime_formats: [\n '%Y年%m月%d日',\n '%H点%M分%S秒',\n '%Y-%m-%d',\n '%H:%M:%S',\n ],\n // https://www.tiny.cloud/docs/tinymce/6/file-image-upload/#images_upload_handler\n // images_upload_handler: async (blobInfo: any, progress: any) => {\n // // blobInfo, succFun, failFun, progress\n // const files = blobInfo.blob()\n // const formData = new FormData()\n // formData.append('image', files)\n\n // const { res, error } = await useApi({\n // // ...commonUrls.uploadImage,\n // params: {\n // bucketType: classify,\n // },\n // data: formData,\n // onUploadProgress: (e: any) => {\n // progress((e.loaded / e.total) * 100)\n // },\n // })\n // if (res) {\n // const { normal } = res\n // console.log('normal: ', res)\n // return normal\n // }\n // if (error) {\n // console.log(error.message)\n // return Promise.reject(error.message)\n // }\n // },\n setup: (editor: Editor) => {\n //
|
1
|
+
{"version":3,"file":"tiny-mce-editor.vue.cjs","sources":["../../../../../../packages/components/src/tiny-mce-editor/src/tiny-mce-editor.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { Editor, RawEditorOptions } from 'tinymce/tinymce'\nimport { useNamespace } from '@qxs-bns/hooks'\nimport { merge } from 'lodash-es'\nimport tinymce from 'tinymce/tinymce'\n\n// 导入核心功能\nimport 'tinymce/themes/silver/theme'\nimport 'tinymce/icons/default/icons'\nimport 'tinymce/models/dom'\n\nimport 'tinymce/plugins/autolink'\nimport 'tinymce/plugins/autoresize'\nimport 'tinymce/plugins/fullscreen'\nimport 'tinymce/plugins/image'\nimport 'tinymce/plugins/insertdatetime'\nimport 'tinymce/plugins/link'\nimport 'tinymce/plugins/lists'\nimport 'tinymce/plugins/media'\nimport 'tinymce/plugins/preview'\nimport 'tinymce/plugins/table'\nimport 'tinymce/plugins/wordcount'\nimport 'tinymce/plugins/code'\nimport 'tinymce/plugins/searchreplace'\nimport 'tinymce/plugins/nonbreaking'\n// 导入语言包\n\ndefineOptions({\n name: 'QxsTinyMceEditor',\n})\n\nconst {\n modelValue = '',\n config = {},\n assetsBasePath = '',\n} = defineProps<{\n modelValue: string\n config?: RawEditorOptions & {\n expandSetup?: RawEditorOptions['setup']\n }\n assetsBasePath?: string\n}>()\n\nconst emit = defineEmits(['update:modelValue'])\n\nconst ns = useNamespace('tiny-mce-editor')\n\nconst colorScheme = 'light'\nconst basePath = assetsBasePath || 'node_modules/'\n// 存储编辑器实例的引用\nconst editorInstance = shallowRef<Editor | null>(null)\n// 生成唯一的 id\nconst uniqueId = ref(\n `tiny-mce-textarea-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`,\n)\n\nconst content = computed({\n get() {\n return modelValue\n },\n set(val) {\n emit('update:modelValue', val)\n },\n})\n\nconst defaultSetting: RawEditorOptions = {\n // 使用动态生成的 id\n selector: `textarea#${uniqueId.value}`,\n promotion: false, // 禁用推广信息\n license_key: 'gpl',\n elementpath: false,\n language: 'zh-Hans',\n language_url: `${basePath}tinymce/langs/zh-Hans.js`,\n skin_url: `${basePath}${\n colorScheme === 'light' ? 'tinymce/skins/ui/oxide' : 'tinymce/skins/ui/oxide-dark'\n }`,\n content_css: `${basePath}${\n colorScheme === 'light'\n ? 'tinymce/skins/content/default/content.min.css'\n : 'tinymce/skins/content/dark/content.min.css'\n }`,\n min_height: 300,\n max_height: 700,\n plugins:\n 'autolink autoresize fullscreen image insertdatetime link lists media preview table wordcount code searchreplace nonbreaking',\n toolbar:\n 'undo redo | bold italic underline strikethrough | blocks | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | forecolor backcolor removeformat | link image media table insertdatetime searchreplace | preview code',\n branding: false,\n autoresize: true,\n menubar: false,\n nonbreaking_force_tab: true,\n toolbar_mode: 'sliding',\n insertdatetime_formats: [\n '%Y年%m月%d日',\n '%H点%M分%S秒',\n '%Y-%m-%d',\n '%H:%M:%S',\n ],\n // https://www.tiny.cloud/docs/tinymce/6/file-image-upload/#images_upload_handler\n // images_upload_handler: async (blobInfo: any, progress: any) => {\n // // blobInfo, succFun, failFun, progress\n // const files = blobInfo.blob()\n // const formData = new FormData()\n // formData.append('image', files)\n\n // const { res, error } = await useApi({\n // // ...commonUrls.uploadImage,\n // params: {\n // bucketType: classify,\n // },\n // data: formData,\n // onUploadProgress: (e: any) => {\n // progress((e.loaded / e.total) * 100)\n // },\n // })\n // if (res) {\n // const { normal } = res\n // console.log('normal: ', res)\n // return normal\n // }\n // if (error) {\n // console.log(error.message)\n // return Promise.reject(error.message)\n // }\n // },\n setup: (editor: Editor) => {\n // 编辑器初始化完成后设置内容\n editor.on('init', () => {\n // 保存编辑器实例\n editorInstance.value = editor\n editor.setContent(content.value)\n })\n\n // 监听编辑器内容变化\n editor.on('input change undo redo', () => {\n content.value = editor.getContent()\n })\n\n config?.expandSetup?.(editor)\n },\n}\n\nconst initSetting = computed(() => {\n const dealDefaultSetting = defaultSetting\n if (!config.images_upload_handler) {\n // 删除 image 图片 plugin\n if (typeof dealDefaultSetting.plugins === 'string') {\n dealDefaultSetting.plugins = dealDefaultSetting.plugins.replace(\n 'image',\n '',\n )\n }\n else if (Array.isArray(dealDefaultSetting.plugins)) {\n dealDefaultSetting.plugins = dealDefaultSetting.plugins.filter(\n plugin => plugin !== 'image',\n )\n }\n }\n return merge(dealDefaultSetting, config)\n})\n\n// 监听 modelValue 的变化\nwatch(() => modelValue, (newVal) => {\n try {\n // 确保编辑器已初始化且内容确实发生变化\n if (editorInstance.value && newVal !== editorInstance.value?.getContent()) {\n editorInstance.value.setContent(newVal)\n }\n }\n catch (error) {\n console.error('设置编辑器内容时出错:', error)\n }\n})\n\nonMounted(async () => {\n if (typeof window !== 'undefined') {\n tinymce.init(initSetting.value)\n }\n})\n\n// 组件卸载时清理\nonBeforeUnmount(() => {\n if (editorInstance.value) {\n editorInstance.value.destroy()\n editorInstance.value = null\n }\n})\n</script>\n\n<template>\n <div :class=\"ns.e('tiny-mce')\">\n <!-- 使用动态生成的 id -->\n <textarea\n :id=\"uniqueId\"\n v-model=\"content\"\n :name=\"uniqueId\"\n />\n </div>\n</template>\n"],"names":["emit","__emit","ns","useNamespace","basePath","__props","assetsBasePath","editorInstance","shallowRef","uniqueId","ref","Date","now","Math","random","toString","substr","content","computed","get","modelValue","set","val","defaultSetting","selector","value","promotion","license_key","elementpath","language","language_url","skin_url","content_css","min_height","max_height","plugins","toolbar","branding","autoresize","menubar","nonbreaking_force_tab","toolbar_mode","insertdatetime_formats","setup","editor","on","setContent","getContent","config","expandSetup","initSetting","dealDefaultSetting","images_upload_handler","replace","Array","isArray","filter","plugin","merge","watch","newVal","error","console","onMounted","async","window","tinymce","init","onBeforeUnmount","destroy"],"mappings":"ujCA2CA,MAAMA,EAAOC,EAEPC,EAAKC,eAAa,mBAGlBC,EAAWC,EAAAC,gBAAkB,gBAE7BC,EAAiBC,aAA0B,MAE3CC,EAAWC,EAAAA,IACf,qBAAqBC,KAAKC,SAASC,KAAKC,SAASC,SAAS,IAAIC,OAAO,EAAG,MAGpEC,EAAUC,EAAAA,SAAS,CACvBC,IAAM,IACGd,EAAAe,WAET,GAAAC,CAAIC,GACFtB,EAAK,oBAAqBsB,EAAG,IAI3BC,EAAmC,CAEvCC,SAAU,YAAYf,EAASgB,QAC/BC,WAAW,EACXC,YAAa,MACbC,aAAa,EACbC,SAAU,UACVC,aAAc,GAAG1B,4BACjB2B,SAAU,GAAG3B,0BAGb4B,YAAa,GAAG5B,iDAKhB6B,WAAY,IACZC,WAAY,IACZC,QACE,8HACFC,QACE,oPACFC,UAAU,EACVC,YAAY,EACZC,SAAS,EACTC,uBAAuB,EACvBC,aAAc,UACdC,uBAAwB,CACtB,YACA,YACA,WACA,YA6BFC,MAAQC,IAECA,EAAAC,GAAG,QAAQ,KAEhBtC,EAAekB,MAAQmB,EAChBA,EAAAE,WAAW7B,EAAQQ,MAAK,IAI1BmB,EAAAC,GAAG,0BAA0B,KAC1B5B,EAAAQ,MAAQmB,EAAOG,YAAW,IAG9B1C,EAAA2C,QAAEC,cAAcL,EAAM,GAI1BM,EAAchC,EAAAA,UAAS,KAC3B,MAAMiC,EAAqB5B,EAepB,OAdFlB,EAAM2C,OAACI,wBAEgC,iBAA/BD,EAAmBhB,QACTgB,EAAAhB,QAAUgB,EAAmBhB,QAAQkB,QACtD,QACA,IAGKC,MAAMC,QAAQJ,EAAmBhB,WACrBgB,EAAAhB,QAAUgB,EAAmBhB,QAAQqB,WACjC,UAAXC,MAITC,QAAMP,EAAoB9C,EAAM2C,OAAA,WAIzCW,EAAAA,OAAM,IAAMtD,EAAAe,aAAawC,IACnB,IAEErD,EAAekB,OAASmC,IAAWrD,EAAekB,OAAOsB,cAC5CxC,EAAAkB,MAAMqB,WAAWc,SAG7BC,GACGC,QAAAD,MAAM,cAAeA,EAAK,KAItCE,EAAAA,WAAUC,UACc,oBAAXC,QACDC,EAAAC,KAAKjB,EAAYzB,MAAK,IAKlC2C,EAAAA,iBAAgB,KACV7D,EAAekB,QACjBlB,EAAekB,MAAM4C,UACrB9D,EAAekB,MAAQ,KAAA"}
|
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "@qxs-bns/components",
|
3
3
|
"type": "module",
|
4
|
-
"version": "0.0.
|
4
|
+
"version": "0.0.53",
|
5
5
|
"description": "Vue 3 Component Library",
|
6
6
|
"license": "MIT",
|
7
7
|
"homepage": "https://trry-hub.github.io/qxs-bns/",
|
@@ -41,9 +41,9 @@
|
|
41
41
|
},
|
42
42
|
"dependencies": {
|
43
43
|
"@amap/amap-jsapi-loader": "^1.0.1",
|
44
|
-
"@qxs-bns/directives": "0.0.
|
45
|
-
"@qxs-bns/hooks": "0.0.
|
46
|
-
"@qxs-bns/utils": "0.0.
|
44
|
+
"@qxs-bns/directives": "0.0.19",
|
45
|
+
"@qxs-bns/hooks": "0.0.5",
|
46
|
+
"@qxs-bns/utils": "0.0.26",
|
47
47
|
"@vueuse/core": "^11.3.0",
|
48
48
|
"echarts": "^5.5.1",
|
49
49
|
"lodash-es": "^4.17.21",
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/components/src/tiny-mce-editor/index.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,gBAAgB;;;
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/components/src/tiny-mce-editor/index.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,gBAAgB;;;mBAOg2L,CAAC;;;;;;;;mBAAD,CAAC;;;;;yGAPx0L,CAAA;AAE/C,OAAO,EACL,gBAAgB,GACjB,CAAA;AAED,eAAe,gBAAgB,CAAA"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"tiny-mce-editor.vue.d.ts","sourceRoot":"","sources":["../../../../../../packages/components/src/tiny-mce-editor/src/tiny-mce-editor.vue"],"names":[],"mappings":"AAAA,
|
1
|
+
{"version":3,"file":"tiny-mce-editor.vue.d.ts","sourceRoot":"","sources":["../../../../../../packages/components/src/tiny-mce-editor/src/tiny-mce-editor.vue"],"names":[],"mappings":"AAAA,OAyMO,KAAK,EAAU,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAM/D,OAAO,6BAA6B,CAAA;AACpC,OAAO,6BAA6B,CAAA;AACpC,OAAO,oBAAoB,CAAA;AAE3B,OAAO,0BAA0B,CAAA;AACjC,OAAO,4BAA4B,CAAA;AACnC,OAAO,4BAA4B,CAAA;AACnC,OAAO,uBAAuB,CAAA;AAC9B,OAAO,gCAAgC,CAAA;AACvC,OAAO,sBAAsB,CAAA;AAC7B,OAAO,uBAAuB,CAAA;AAC9B,OAAO,uBAAuB,CAAA;AAC9B,OAAO,yBAAyB,CAAA;AAChC,OAAO,uBAAuB,CAAA;AAC9B,OAAO,2BAA2B,CAAA;AAClC,OAAO,sBAAsB,CAAA;AAC7B,OAAO,+BAA+B,CAAA;AACtC,OAAO,6BAA6B,CAAA;AAOpC,KAAK,WAAW,GAAG;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,gBAAgB,GAAG;QAC1B,WAAW,CAAC,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAA;KACxC,CAAA;IACD,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB,CAAC;;;;;;AA+LF,wBAOG"}
|