qidian-vue-ui 1.2.64 → 1.2.65

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.
@@ -1,3 +1,4 @@
1
+ import type { UploadImgEvent } from 'md-editor-v3';
1
2
  import type { QdMdEditorProps } from './types';
2
3
  declare var __VLS_8: string | number, __VLS_9: any;
3
4
  type __VLS_Slots = {} & {
@@ -20,7 +21,7 @@ declare const __VLS_component: import("vue").DefineComponent<QdMdEditorProps, {
20
21
  pageFullscreen: boolean;
21
22
  htmlPreview: boolean;
22
23
  onSave: import("md-editor-v3").SaveEvent;
23
- onUploadImg: import("md-editor-v3").UploadImgEvent;
24
+ onUploadImg: import("md-editor-v3/lib/types/MdEditor/type").UploadImgEvent;
24
25
  onHtmlChanged: import("md-editor-v3").HtmlChangedEvent;
25
26
  onGetCatalog: import("md-editor-v3").GetCatalogEvent;
26
27
  oninputBoxWidthChange: (width: string) => void;
@@ -126,7 +127,7 @@ declare const __VLS_component: import("vue").DefineComponent<QdMdEditorProps, {
126
127
  readonly onError?: import("md-editor-v3").ErrorEvent | undefined;
127
128
  readonly id?: string | undefined;
128
129
  readonly onSave?: import("md-editor-v3").SaveEvent | undefined;
129
- readonly onUploadImg?: import("md-editor-v3").UploadImgEvent | undefined;
130
+ readonly onUploadImg?: UploadImgEvent | undefined;
130
131
  readonly defToolbars?: string | import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
131
132
  [key: string]: any;
132
133
  }> | undefined;
@@ -176,7 +177,7 @@ declare const __VLS_component: import("vue").DefineComponent<QdMdEditorProps, {
176
177
  default: undefined;
177
178
  };
178
179
  onUploadImg: {
179
- type: import("vue").PropType<import("md-editor-v3").UploadImgEvent>;
180
+ type: import("vue").PropType<import("md-editor-v3/lib/types/MdEditor/type").UploadImgEvent>;
180
181
  default: undefined;
181
182
  };
182
183
  pageFullscreen: {
@@ -451,7 +452,7 @@ declare const __VLS_component: import("vue").DefineComponent<QdMdEditorProps, {
451
452
  pageFullscreen: boolean;
452
453
  htmlPreview: boolean;
453
454
  onSave: import("md-editor-v3").SaveEvent;
454
- onUploadImg: import("md-editor-v3").UploadImgEvent;
455
+ onUploadImg: import("md-editor-v3/lib/types/MdEditor/type").UploadImgEvent;
455
456
  onHtmlChanged: import("md-editor-v3").HtmlChangedEvent;
456
457
  onGetCatalog: import("md-editor-v3").GetCatalogEvent;
457
458
  oninputBoxWidthChange: (width: string) => void;
@@ -538,7 +539,7 @@ declare const __VLS_component: import("vue").DefineComponent<QdMdEditorProps, {
538
539
  pageFullscreen: boolean;
539
540
  htmlPreview: boolean;
540
541
  onSave: import("md-editor-v3").SaveEvent;
541
- onUploadImg: import("md-editor-v3").UploadImgEvent;
542
+ onUploadImg: import("md-editor-v3/lib/types/MdEditor/type").UploadImgEvent;
542
543
  onHtmlChanged: import("md-editor-v3").HtmlChangedEvent;
543
544
  onGetCatalog: import("md-editor-v3").GetCatalogEvent;
544
545
  oninputBoxWidthChange: (width: string) => void;
@@ -4,7 +4,7 @@ import _sfc_main from "./index.vue2.mjs";
4
4
  /* empty css */
5
5
  /* empty css */
6
6
  import _export_sfc from "../../_virtual/_plugin-vue_export-helper.mjs";
7
- const index = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-94f380a5"]]);
7
+ const index = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-c64f497c"]]);
8
8
  export {
9
9
  index as default
10
10
  };
@@ -3,8 +3,9 @@ import './index.css'
3
3
  import { defineComponent, mergeDefaults, computed, inject, ref, useTemplateRef, createBlock, openBlock, unref, mergeProps, createSlots, renderList, withCtx, renderSlot, normalizeProps, guardReactiveProps } from "vue";
4
4
  import { useVModels } from "../../node_modules/.pnpm/@vueuse_core@14.2.0_vue@3.5.26_typescript@5.9.3_/node_modules/@vueuse/core/dist/index.mjs";
5
5
  import { MdEditor } from "md-editor-v3";
6
- import { createExposeProxy } from "qidian-shared";
6
+ import { to, createExposeProxy } from "qidian-shared";
7
7
  import { FormItemInjectionKey } from "tdesign-vue-next/es/form/constants";
8
+ import { PROVIDE_UPLOAD } from "../config-provider/config.mjs";
8
9
  import { setupMdEditorConfig } from "./config.mjs";
9
10
  import { qdMdEditorToolbars, qdMdEditorProps } from "./props.mjs";
10
11
  import { useLocale } from "../../hooks/useLocale.mjs";
@@ -76,7 +77,14 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
76
77
  autoFoldThreshold: {},
77
78
  onRemount: { type: Function },
78
79
  disabledEcharts: { type: Boolean },
79
- previewComponent: {}
80
+ previewComponent: {},
81
+ action: { type: [String, Function] },
82
+ bucketConfigKey: {},
83
+ headers: {},
84
+ method: {},
85
+ name: {},
86
+ requestMethod: { type: Function },
87
+ formatResponse: { type: Function }
80
88
  }, qdMdEditorProps),
81
89
  emits: ["update:modelValue"],
82
90
  setup(__props, { expose: __expose, emit: __emit }) {
@@ -95,6 +103,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
95
103
  const tdTheme = useTheme();
96
104
  const tdLocale = useLocale();
97
105
  const focus = ref(false);
106
+ const globalUploadProps = inject(
107
+ PROVIDE_UPLOAD,
108
+ computed(() => void 0)
109
+ );
98
110
  const reProps = computed(() => {
99
111
  const {
100
112
  modelValue: modelValue2,
@@ -113,6 +125,14 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
113
125
  disabledPrettier,
114
126
  disabledUploadImg,
115
127
  locale,
128
+ onUploadImg,
129
+ action,
130
+ bucketConfigKey,
131
+ headers,
132
+ method,
133
+ name,
134
+ requestMethod,
135
+ formatResponse,
116
136
  ...mdEditorOptions
117
137
  } = props;
118
138
  const reReadonly = readonly ?? tdReadonly.value;
@@ -148,17 +168,81 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
148
168
  noUploadImg: reDisabledUploadImg,
149
169
  maxLength: maxlength,
150
170
  onFocus: reOnFocus,
151
- onBlur: reOnBlur
171
+ onBlur: reOnBlur,
172
+ onUploadImg: onUploadImg || uploadImg
152
173
  };
174
+ const uploadOptions = {
175
+ action,
176
+ bucketConfigKey,
177
+ headers,
178
+ method,
179
+ name,
180
+ requestMethod,
181
+ formatResponse
182
+ };
183
+ const globalUploadPropsV = globalUploadProps.value;
184
+ if (globalUploadPropsV) {
185
+ Object.entries(globalUploadPropsV).forEach(([key, value]) => {
186
+ uploadOptions[key] = value;
187
+ });
188
+ }
153
189
  return {
154
190
  readonly: reReadonly,
155
191
  disabled: reDisabled,
156
192
  mdEditorOptions: reMdEditorOptions,
193
+ uploadOptions,
157
194
  models: {
158
195
  modelValue: modelValue2
159
196
  }
160
197
  };
161
198
  });
199
+ const uploadImg = async (files, callBack) => {
200
+ const {
201
+ action,
202
+ bucketConfigKey,
203
+ headers,
204
+ method,
205
+ name: fieldName,
206
+ requestMethod,
207
+ formatResponse
208
+ } = reProps.value.uploadOptions;
209
+ if (requestMethod) {
210
+ const urls2 = [];
211
+ for (const file of files) {
212
+ const res = await requestMethod(file);
213
+ const url = res?.response?.url;
214
+ if (url) urls2.push(url);
215
+ }
216
+ callBack(urls2);
217
+ return;
218
+ }
219
+ if (!action) return;
220
+ const actionUrl = typeof action === "string" ? action : action(bucketConfigKey);
221
+ const field = fieldName || "file";
222
+ const defaultFormatResponse = (res) => {
223
+ if (res.code === 200) {
224
+ const { url } = res.data || {};
225
+ return { url };
226
+ }
227
+ return {};
228
+ };
229
+ const doFormat = formatResponse || defaultFormatResponse;
230
+ const urls = [];
231
+ for (const file of files) {
232
+ const formData = new FormData();
233
+ formData.append(field, file);
234
+ const [err, res] = await to(
235
+ fetch(actionUrl, {
236
+ method: method || "POST",
237
+ headers,
238
+ body: formData
239
+ }).then((r) => r.json())
240
+ );
241
+ const formatted = doFormat(err ?? res);
242
+ if (formatted.url) urls.push(formatted.url);
243
+ }
244
+ callBack(urls);
245
+ };
162
246
  const editorRef = useTemplateRef("editor");
163
247
  __expose(createExposeProxy({}, editorRef));
164
248
  return (_ctx, _cache) => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.vue2.mjs","sources":["../../../src/components/md-editor/index.vue"],"sourcesContent":["<template>\n <md-editor\n ref=\"editor\"\n :key=\"`${reProps.readonly ? 'readonly' : 'editable'}-${reProps.mdEditorOptions.preview}-${reProps.mdEditorOptions.htmlPreview}-${reProps.mdEditorOptions.pageFullscreen}`\"\n v-model=\"reModelValue\"\n :class=\"[\n 'qd-md-editor',\n focus ? 'qd-md-editor--focus' : '',\n reProps.disabled ? 'qd-md-editor--disabled' : ''\n ]\"\n :read-only=\"reProps.readonly\"\n :disabled=\"reProps.disabled\"\n v-bind=\"reProps.mdEditorOptions\"\n >\n <template v-for=\"(_, name) in $slots\" #[name]=\"slotProps\">\n <slot :name=\"name\" v-bind=\"slotProps\" />\n </template>\n </md-editor>\n</template>\n\n<script setup lang=\"ts\">\n // TODO 图片上传\n // TODO 文件上传\n import { useVModels } from '@vueuse/core'\n import type { EditorProps } from 'md-editor-v3'\n import { MdEditor } from 'md-editor-v3'\n import { createExposeProxy } from 'qidian-shared'\n import { FormItemInjectionKey } from 'tdesign-vue-next/es/form/constants'\n import { computed, inject, ref, useTemplateRef } from 'vue'\n\n import { useDisabled, useLocale, useReadonly, useTheme } from '../../hooks'\n import { setupMdEditorConfig } from './config'\n import { qdMdEditorProps, qdMdEditorToolbars } from './props'\n import type { QdMdEditorProps } from './types'\n\n defineOptions({\n name: 'QdMdEditor'\n })\n\n setupMdEditorConfig()\n\n const props = withDefaults(defineProps<QdMdEditorProps>(), qdMdEditorProps)\n const emit = defineEmits<{\n 'update:modelValue': [QdMdEditorProps['modelValue']]\n }>()\n const { modelValue } = useVModels(props, emit, { passive: true })\n const reModelValue = computed({\n get: () => modelValue.value ?? '', // 防止 md-editor 报错\n set: (val) => (modelValue.value = val)\n })\n\n const tdReadonly = useReadonly()\n const tdDisabled = useDisabled()\n const tdFormItem = inject(FormItemInjectionKey, undefined)\n const tdTheme = useTheme()\n const tdLocale = useLocale()\n const focus = ref(false)\n\n const reProps = computed(() => {\n const {\n modelValue,\n readonly,\n disabled,\n maxlength,\n toolbars,\n theme,\n onFocus,\n onBlur,\n disabledEcharts,\n disabledHighlight,\n disabledImgZoomIn,\n disabledKatex,\n disabledMermaid,\n disabledPrettier,\n disabledUploadImg,\n locale,\n ...mdEditorOptions\n } = props\n\n const reReadonly = readonly ?? tdReadonly.value\n const reDisabled = disabled ?? tdDisabled.value\n\n const reOnFocus: typeof onFocus = (evt) => {\n focus.value = true\n onFocus?.(evt)\n }\n\n const reOnBlur: typeof onBlur = (evt) => {\n focus.value = false\n tdFormItem?.handleBlur()\n onBlur?.(evt)\n }\n\n const reToolbars =\n reReadonly || reDisabled\n ? ['=', 'pageFullscreen', 'preview']\n : (toolbars ?? [...qdMdEditorToolbars])\n\n const reDisabledUploadImg = disabledUploadImg ?? true\n if (reDisabledUploadImg) {\n const imgIdx = reToolbars.findIndex((item) => item === 'image')\n if (imgIdx > -1) reToolbars.splice(imgIdx, 1)\n }\n\n const reMdEditorOptions = {\n ...mdEditorOptions,\n theme: tdTheme.value,\n language: tdLocale.value,\n codeTheme: 'github',\n previewTheme: 'github',\n toolbars: reToolbars,\n noEcharts: disabledEcharts,\n noHighlight: disabledHighlight,\n noImgZoomIn: disabledImgZoomIn,\n noKatex: disabledKatex,\n noMermaid: disabledMermaid,\n noPrettier: disabledPrettier,\n noUploadImg: reDisabledUploadImg,\n maxLength: maxlength,\n onFocus: reOnFocus,\n onBlur: reOnBlur\n } as unknown as Omit<EditorProps, 'modelValue' | 'readOnly' | 'disabled'>\n\n return {\n readonly: reReadonly,\n disabled: reDisabled,\n mdEditorOptions: reMdEditorOptions,\n models: {\n modelValue\n }\n }\n })\n\n const editorRef = useTemplateRef('editor')\n\n defineExpose(createExposeProxy({}, editorRef))\n</script>\n\n<style lang=\"less\">\n @import 'md-editor-v3/lib/style.css';\n @import 'katex/dist/katex.min.css';\n @import 'cropperjs/dist/cropper.css';\n @import 'highlight.js/styles/github.css';\n</style>\n\n<style lang=\"less\" scoped>\n .qd-md-editor {\n --md-color: var(--td-text-color-primary);\n --md-border-color: var(--td-border-level-2-color);\n --md-bk-color: var(--td-bg-color-specialcomponent);\n --md-bk-hover-color: var(--td-bg-color-container-hover);\n height: 100%;\n border-radius: var(--td-radius-default);\n transition:\n border cubic-bezier(0.38, 0, 0.24, 1) 0.2s,\n box-shadow cubic-bezier(0.38, 0, 0.24, 1) 0.2s,\n background-color cubic-bezier(0.38, 0, 0.24, 1) 0.2s,\n -webkit-box-shadow cubic-bezier(0.38, 0, 0.24, 1) 0.2s;\n\n &:hover {\n border-color: var(--td-brand-color);\n }\n\n &.qd-md-editor--focus {\n border-color: var(--td-brand-color);\n box-shadow: 0 0 0 2px var(--td-brand-color-focus);\n }\n\n &.qd-md-editor--disabled {\n color: var(--td-text-color-disabled);\n background-color: var(--td-bg-color-component-disabled);\n cursor: not-allowed;\n\n :deep(.cm-editor) {\n background-color: transparent;\n }\n\n &:hover {\n border-color: var(--td-border-level-2-color);\n }\n }\n\n :deep(.md-editor) {\n &-preview {\n padding: var(--td-comp-paddingLR-s);\n }\n }\n\n :deep(.cm-editor) {\n font: var(--td-font-body-medium);\n }\n\n :deep(.cm-scroller) {\n line-height: inherit !important;\n }\n\n :deep(.cm-content) {\n margin: 0 !important;\n padding: var(--td-comp-paddingLR-s);\n }\n }\n\n .t-is-error .qd-md-editor {\n border-color: var(--td-error-color);\n\n &--focus {\n box-shadow: 0 0 0 2px var(--td-error-color-focus);\n }\n }\n</style>\n"],"names":["modelValue","_openBlock","_createBlock","_unref","_mergeProps","_createSlots","$slots","_withCtx","_renderSlot","_normalizeProps","_guardReactiveProps"],"mappings":"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"}
1
+ {"version":3,"file":"index.vue2.mjs","sources":["../../../src/components/md-editor/index.vue"],"sourcesContent":["<template>\n <md-editor\n ref=\"editor\"\n :key=\"`${reProps.readonly ? 'readonly' : 'editable'}-${reProps.mdEditorOptions.preview}-${reProps.mdEditorOptions.htmlPreview}-${reProps.mdEditorOptions.pageFullscreen}`\"\n v-model=\"reModelValue\"\n :class=\"[\n 'qd-md-editor',\n focus ? 'qd-md-editor--focus' : '',\n reProps.disabled ? 'qd-md-editor--disabled' : ''\n ]\"\n :read-only=\"reProps.readonly\"\n :disabled=\"reProps.disabled\"\n v-bind=\"reProps.mdEditorOptions\"\n >\n <template v-for=\"(_, name) in $slots\" #[name]=\"slotProps\">\n <slot :name=\"name\" v-bind=\"slotProps\" />\n </template>\n </md-editor>\n</template>\n\n<script setup lang=\"ts\">\n // TODO 文件上传\n import { useVModels } from '@vueuse/core'\n import type { EditorProps, UploadImgEvent } from 'md-editor-v3'\n import { MdEditor } from 'md-editor-v3'\n import { createExposeProxy, to } from 'qidian-shared'\n import { FormItemInjectionKey } from 'tdesign-vue-next/es/form/constants'\n import { computed, inject, ref, useTemplateRef } from 'vue'\n\n import { useDisabled, useLocale, useReadonly, useTheme } from '../../hooks'\n import { PROVIDE_UPLOAD } from '../config-provider/config'\n import { setupMdEditorConfig } from './config'\n import { qdMdEditorProps, qdMdEditorToolbars } from './props'\n import type { QdMdEditorProps } from './types'\n\n defineOptions({\n name: 'QdMdEditor'\n })\n\n setupMdEditorConfig()\n\n const props = withDefaults(defineProps<QdMdEditorProps>(), qdMdEditorProps)\n const emit = defineEmits<{\n 'update:modelValue': [QdMdEditorProps['modelValue']]\n }>()\n const { modelValue } = useVModels(props, emit, { passive: true })\n const reModelValue = computed({\n get: () => modelValue.value ?? '', // 防止 md-editor 报错\n set: (val) => (modelValue.value = val)\n })\n\n const tdReadonly = useReadonly()\n const tdDisabled = useDisabled()\n const tdFormItem = inject(FormItemInjectionKey, undefined)\n const tdTheme = useTheme()\n const tdLocale = useLocale()\n const focus = ref(false)\n\n const globalUploadProps = inject(\n PROVIDE_UPLOAD,\n computed(() => undefined)\n )\n\n const reProps = computed(() => {\n const {\n modelValue,\n readonly,\n disabled,\n maxlength,\n toolbars,\n theme,\n onFocus,\n onBlur,\n disabledEcharts,\n disabledHighlight,\n disabledImgZoomIn,\n disabledKatex,\n disabledMermaid,\n disabledPrettier,\n disabledUploadImg,\n locale,\n onUploadImg,\n action,\n bucketConfigKey,\n headers,\n method,\n name,\n requestMethod,\n formatResponse,\n ...mdEditorOptions\n } = props\n\n const reReadonly = readonly ?? tdReadonly.value\n const reDisabled = disabled ?? tdDisabled.value\n\n const reOnFocus: typeof onFocus = (evt) => {\n focus.value = true\n onFocus?.(evt)\n }\n\n const reOnBlur: typeof onBlur = (evt) => {\n focus.value = false\n tdFormItem?.handleBlur()\n onBlur?.(evt)\n }\n\n const reToolbars =\n reReadonly || reDisabled\n ? ['=', 'pageFullscreen', 'preview']\n : (toolbars ?? [...qdMdEditorToolbars])\n\n const reDisabledUploadImg = disabledUploadImg ?? true\n if (reDisabledUploadImg) {\n const imgIdx = reToolbars.findIndex((item) => item === 'image')\n if (imgIdx > -1) reToolbars.splice(imgIdx, 1)\n }\n\n const reMdEditorOptions = {\n ...mdEditorOptions,\n theme: tdTheme.value,\n language: tdLocale.value,\n codeTheme: 'github',\n previewTheme: 'github',\n toolbars: reToolbars,\n noEcharts: disabledEcharts,\n noHighlight: disabledHighlight,\n noImgZoomIn: disabledImgZoomIn,\n noKatex: disabledKatex,\n noMermaid: disabledMermaid,\n noPrettier: disabledPrettier,\n noUploadImg: reDisabledUploadImg,\n maxLength: maxlength,\n onFocus: reOnFocus,\n onBlur: reOnBlur,\n onUploadImg: onUploadImg || uploadImg\n } as unknown as Omit<EditorProps, 'modelValue' | 'readOnly' | 'disabled'>\n\n const uploadOptions = {\n action,\n bucketConfigKey,\n headers,\n method,\n name,\n requestMethod,\n formatResponse\n }\n const globalUploadPropsV = globalUploadProps.value\n if (globalUploadPropsV) {\n Object.entries(globalUploadPropsV).forEach(([key, value]) => {\n ;(uploadOptions as Record<string, unknown>)[key] = value\n })\n }\n\n return {\n readonly: reReadonly,\n disabled: reDisabled,\n mdEditorOptions: reMdEditorOptions,\n uploadOptions,\n models: {\n modelValue\n }\n }\n })\n\n const uploadImg: UploadImgEvent = async (files, callBack) => {\n const {\n action,\n bucketConfigKey,\n headers,\n method,\n name: fieldName,\n requestMethod,\n formatResponse\n } = reProps.value.uploadOptions\n\n if (requestMethod) {\n const urls: string[] = []\n for (const file of files) {\n const res = await requestMethod(file as any)\n const url = res?.response?.url\n if (url) urls.push(url)\n }\n\n callBack(urls)\n return\n }\n\n if (!action) return\n\n const actionUrl = typeof action === 'string' ? action : action(bucketConfigKey)\n const field = fieldName || 'file'\n\n const defaultFormatResponse = (res: any) => {\n if (res.code === 200) {\n const { url } = res.data || {}\n return { url }\n }\n return {}\n }\n\n const doFormat = formatResponse || defaultFormatResponse\n const urls: string[] = []\n\n for (const file of files) {\n const formData = new FormData()\n formData.append(field, file)\n\n const [err, res] = await to(\n fetch(actionUrl, {\n method: method || 'POST',\n headers,\n body: formData\n }).then((r) => r.json())\n )\n\n const formatted = doFormat(err ?? res)\n if (formatted.url) urls.push(formatted.url)\n }\n\n callBack(urls)\n }\n\n const editorRef = useTemplateRef('editor')\n\n defineExpose(createExposeProxy({}, editorRef))\n</script>\n\n<style lang=\"less\">\n @import 'md-editor-v3/lib/style.css';\n @import 'katex/dist/katex.min.css';\n @import 'cropperjs/dist/cropper.css';\n @import 'highlight.js/styles/github.css';\n</style>\n\n<style lang=\"less\" scoped>\n .qd-md-editor {\n --md-color: var(--td-text-color-primary);\n --md-border-color: var(--td-border-level-2-color);\n --md-bk-color: var(--td-bg-color-specialcomponent);\n --md-bk-hover-color: var(--td-bg-color-container-hover);\n height: 100%;\n border-radius: var(--td-radius-default);\n transition:\n border cubic-bezier(0.38, 0, 0.24, 1) 0.2s,\n box-shadow cubic-bezier(0.38, 0, 0.24, 1) 0.2s,\n background-color cubic-bezier(0.38, 0, 0.24, 1) 0.2s,\n -webkit-box-shadow cubic-bezier(0.38, 0, 0.24, 1) 0.2s;\n\n &:hover {\n border-color: var(--td-brand-color);\n }\n\n &.qd-md-editor--focus {\n border-color: var(--td-brand-color);\n box-shadow: 0 0 0 2px var(--td-brand-color-focus);\n }\n\n &.qd-md-editor--disabled {\n color: var(--td-text-color-disabled);\n background-color: var(--td-bg-color-component-disabled);\n cursor: not-allowed;\n\n :deep(.cm-editor) {\n background-color: transparent;\n }\n\n &:hover {\n border-color: var(--td-border-level-2-color);\n }\n }\n\n :deep(.md-editor) {\n &-preview {\n padding: var(--td-comp-paddingLR-s);\n }\n }\n\n :deep(.cm-editor) {\n font: var(--td-font-body-medium);\n }\n\n :deep(.cm-scroller) {\n line-height: inherit !important;\n }\n\n :deep(.cm-content) {\n margin: 0 !important;\n padding: var(--td-comp-paddingLR-s);\n }\n }\n\n .t-is-error .qd-md-editor {\n border-color: var(--td-error-color);\n\n &--focus {\n box-shadow: 0 0 0 2px var(--td-error-color-focus);\n }\n }\n</style>\n"],"names":["modelValue","urls","_openBlock","_createBlock","_unref","_mergeProps","_createSlots","$slots","_withCtx","_renderSlot","_normalizeProps","_guardReactiveProps"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- .qd-md-editor[data-v-94f380a5] {
1
+ .qd-md-editor[data-v-c64f497c] {
2
2
  --md-color: var(--td-text-color-primary);
3
3
  --md-border-color: var(--td-border-level-2-color);
4
4
  --md-bk-color: var(--td-bg-color-specialcomponent);
@@ -7,40 +7,40 @@
7
7
  border-radius: var(--td-radius-default);
8
8
  transition: border cubic-bezier(0.38, 0, 0.24, 1) 0.2s, box-shadow cubic-bezier(0.38, 0, 0.24, 1) 0.2s, background-color cubic-bezier(0.38, 0, 0.24, 1) 0.2s, -webkit-box-shadow cubic-bezier(0.38, 0, 0.24, 1) 0.2s;
9
9
  }
10
- .qd-md-editor[data-v-94f380a5]:hover {
10
+ .qd-md-editor[data-v-c64f497c]:hover {
11
11
  border-color: var(--td-brand-color);
12
12
  }
13
- .qd-md-editor.qd-md-editor--focus[data-v-94f380a5] {
13
+ .qd-md-editor.qd-md-editor--focus[data-v-c64f497c] {
14
14
  border-color: var(--td-brand-color);
15
15
  box-shadow: 0 0 0 2px var(--td-brand-color-focus);
16
16
  }
17
- .qd-md-editor.qd-md-editor--disabled[data-v-94f380a5] {
17
+ .qd-md-editor.qd-md-editor--disabled[data-v-c64f497c] {
18
18
  color: var(--td-text-color-disabled);
19
19
  background-color: var(--td-bg-color-component-disabled);
20
20
  cursor: not-allowed;
21
21
  }
22
- .qd-md-editor.qd-md-editor--disabled[data-v-94f380a5] .cm-editor {
22
+ .qd-md-editor.qd-md-editor--disabled[data-v-c64f497c] .cm-editor {
23
23
  background-color: transparent;
24
24
  }
25
- .qd-md-editor.qd-md-editor--disabled[data-v-94f380a5]:hover {
25
+ .qd-md-editor.qd-md-editor--disabled[data-v-c64f497c]:hover {
26
26
  border-color: var(--td-border-level-2-color);
27
27
  }
28
- .qd-md-editor[data-v-94f380a5] .md-editor-preview {
28
+ .qd-md-editor[data-v-c64f497c] .md-editor-preview {
29
29
  padding: var(--td-comp-paddingLR-s);
30
30
  }
31
- .qd-md-editor[data-v-94f380a5] .cm-editor {
31
+ .qd-md-editor[data-v-c64f497c] .cm-editor {
32
32
  font: var(--td-font-body-medium);
33
33
  }
34
- .qd-md-editor[data-v-94f380a5] .cm-scroller {
34
+ .qd-md-editor[data-v-c64f497c] .cm-scroller {
35
35
  line-height: inherit !important;
36
36
  }
37
- .qd-md-editor[data-v-94f380a5] .cm-content {
37
+ .qd-md-editor[data-v-c64f497c] .cm-content {
38
38
  margin: 0 !important;
39
39
  padding: var(--td-comp-paddingLR-s);
40
40
  }
41
- .t-is-error .qd-md-editor[data-v-94f380a5] {
41
+ .t-is-error .qd-md-editor[data-v-c64f497c] {
42
42
  border-color: var(--td-error-color);
43
43
  }
44
- .t-is-error .qd-md-editor--focus[data-v-94f380a5] {
44
+ .t-is-error .qd-md-editor--focus[data-v-c64f497c] {
45
45
  box-shadow: 0 0 0 2px var(--td-error-color-focus);
46
46
  }
@@ -14,6 +14,6 @@ export declare const qdMdEditorProps: {
14
14
  readonly codeStyleReverse: true;
15
15
  readonly codeFoldable: true;
16
16
  readonly autoFoldThreshold: 30;
17
- readonly disabledUploadImg: undefined;
17
+ readonly disabledUploadImg: true;
18
18
  };
19
19
  export declare const qdMdEditorToolbars: readonly ["bold", "underline", "italic", "-", "title", "strikeThrough", "sub", "sup", "quote", "unorderedList", "orderedList", "task", "-", "codeRow", "code", "link", "image", "table", "katex", "-", "revoke", "next", "=", "pageFullscreen", "preview"];
@@ -14,7 +14,7 @@ const qdMdEditorProps = {
14
14
  codeStyleReverse: true,
15
15
  codeFoldable: true,
16
16
  autoFoldThreshold: 30,
17
- disabledUploadImg: void 0
17
+ disabledUploadImg: true
18
18
  };
19
19
  const qdMdEditorToolbars = [
20
20
  "bold",
@@ -1 +1 @@
1
- {"version":3,"file":"props.mjs","sources":["../../../src/components/md-editor/props.ts"],"sourcesContent":["export const qdMdEditorProps = {\n theme: undefined,\n disabled: undefined,\n readonly: undefined,\n disabledPrettier: true,\n preview: true,\n floatingToolbars: () => [],\n toolbarsExclude: () => [],\n tabWidth: 2,\n tableShape: () => [6, 4],\n scrollAuto: true,\n inputBoxWidth: '50%',\n catalogLayout: 'fixed',\n codeStyleReverse: true,\n codeFoldable: true,\n autoFoldThreshold: 30,\n disabledUploadImg: undefined\n} as const\n\nexport const qdMdEditorToolbars = [\n 'bold',\n 'underline',\n 'italic',\n '-',\n 'title',\n 'strikeThrough',\n 'sub',\n 'sup',\n 'quote',\n 'unorderedList',\n 'orderedList',\n 'task',\n '-',\n 'codeRow',\n 'code',\n 'link',\n 'image',\n 'table',\n 'katex',\n '-',\n 'revoke',\n 'next',\n '=',\n 'pageFullscreen',\n 'preview'\n] as const\n"],"names":[],"mappings":"AAAO,MAAM,kBAAkB;AAAA,EAC7B,OAAO;AAAA,EACP,UAAU;AAAA,EACV,UAAU;AAAA,EACV,kBAAkB;AAAA,EAClB,SAAS;AAAA,EACT,kBAAkB,MAAM,CAAA;AAAA,EACxB,iBAAiB,MAAM,CAAA;AAAA,EACvB,UAAU;AAAA,EACV,YAAY,MAAM,CAAC,GAAG,CAAC;AAAA,EACvB,YAAY;AAAA,EACZ,eAAe;AAAA,EACf,eAAe;AAAA,EACf,kBAAkB;AAAA,EAClB,cAAc;AAAA,EACd,mBAAmB;AAAA,EACnB,mBAAmB;AACrB;AAEO,MAAM,qBAAqB;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;"}
1
+ {"version":3,"file":"props.mjs","sources":["../../../src/components/md-editor/props.ts"],"sourcesContent":["export const qdMdEditorProps = {\n theme: undefined,\n disabled: undefined,\n readonly: undefined,\n disabledPrettier: true,\n preview: true,\n floatingToolbars: () => [],\n toolbarsExclude: () => [],\n tabWidth: 2,\n tableShape: () => [6, 4],\n scrollAuto: true,\n inputBoxWidth: '50%',\n catalogLayout: 'fixed',\n codeStyleReverse: true,\n codeFoldable: true,\n autoFoldThreshold: 30,\n disabledUploadImg: true\n} as const\n\nexport const qdMdEditorToolbars = [\n 'bold',\n 'underline',\n 'italic',\n '-',\n 'title',\n 'strikeThrough',\n 'sub',\n 'sup',\n 'quote',\n 'unorderedList',\n 'orderedList',\n 'task',\n '-',\n 'codeRow',\n 'code',\n 'link',\n 'image',\n 'table',\n 'katex',\n '-',\n 'revoke',\n 'next',\n '=',\n 'pageFullscreen',\n 'preview'\n] as const\n"],"names":[],"mappings":"AAAO,MAAM,kBAAkB;AAAA,EAC7B,OAAO;AAAA,EACP,UAAU;AAAA,EACV,UAAU;AAAA,EACV,kBAAkB;AAAA,EAClB,SAAS;AAAA,EACT,kBAAkB,MAAM,CAAA;AAAA,EACxB,iBAAiB,MAAM,CAAA;AAAA,EACvB,UAAU;AAAA,EACV,YAAY,MAAM,CAAC,GAAG,CAAC;AAAA,EACvB,YAAY;AAAA,EACZ,eAAe;AAAA,EACf,eAAe;AAAA,EACf,kBAAkB;AAAA,EAClB,cAAc;AAAA,EACd,mBAAmB;AAAA,EACnB,mBAAmB;AACrB;AAEO,MAAM,qBAAqB;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;"}
@@ -1,7 +1,8 @@
1
1
  import type { CompletionSource } from '@codemirror/autocomplete';
2
2
  import type { ChangeEvent, CustomIcon, Footers, GetCatalogEvent, HtmlChangedEvent, MdHeadingId, SaveEvent, Themes, ToolbarNames, UploadImgEvent } from 'md-editor-v3';
3
3
  import type { Component, CSSProperties, VNode } from 'vue';
4
- export interface QdMdEditorProps {
4
+ import type { QdUploadProps } from '../upload/types';
5
+ export type QdMdEditorProps = {
5
6
  onSave?: SaveEvent;
6
7
  onUploadImg?: UploadImgEvent;
7
8
  pageFullscreen?: boolean;
@@ -62,4 +63,9 @@ export interface QdMdEditorProps {
62
63
  onRemount?: () => void;
63
64
  disabledEcharts?: boolean;
64
65
  previewComponent?: Component;
65
- }
66
+ } & Pick<QdUploadProps, 'action' | 'bucketConfigKey' | 'headers' | 'method' | 'name' | 'requestMethod'> & {
67
+ formatResponse?: (response: any) => {
68
+ url?: string;
69
+ [key: string]: any;
70
+ };
71
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "qidian-vue-ui",
3
- "version": "1.2.64",
3
+ "version": "1.2.65",
4
4
  "description": "基于 TDesign 的 QiDian Vue UI 组件库",
5
5
  "author": "qidian",
6
6
  "license": "MIT",