qidian-vue-ui 1.1.21 → 1.1.23

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,5 +1,5 @@
1
1
  import type { QdAvatarProps } from './types';
2
- declare var __VLS_6: string, __VLS_7: any;
2
+ declare var __VLS_6: import("vue").Slot<any> | undefined, __VLS_7: any;
3
3
  type __VLS_Slots = {} & {
4
4
  [K in NonNullable<typeof __VLS_6>]?: (props: typeof __VLS_7) => any;
5
5
  };
@@ -1,7 +1,7 @@
1
1
  import _sfc_main from "./index.vue2.mjs";
2
2
  /* empty css */
3
3
  import _export_sfc from "../../_virtual/_plugin-vue_export-helper.mjs";
4
- const index = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-527dccf6"]]);
4
+ const index = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-26692975"]]);
5
5
  export {
6
6
  index as default
7
7
  };
@@ -1,11 +1,12 @@
1
1
  import { defineComponent, mergeDefaults, inject, computed, ref, watch, resolveDirective, createElementBlock, openBlock, withDirectives, createCommentVNode, createBlock, unref, mergeProps, createSlots, renderList, withCtx, renderSlot, normalizeProps, guardReactiveProps, normalizeClass, toDisplayString } from "vue";
2
2
  import { Avatar } from "tdesign-vue-next";
3
- import { isEmpty, validator, abortWrapper, filterSlots } from "qidian-shared";
4
- import { qdAvatarProps } from "./props.mjs";
3
+ import { isEmpty, validator, abortWrapper } from "qidian-shared";
4
+ import { qdAvatarImageProps, qdAvatarProps } from "./props.mjs";
5
5
  import { PROVIDE_AVATAR } from "../config-provider/config.mjs";
6
6
  import "../../hooks/useAgentChat/index.mjs";
7
7
  import "../../locales/zh-CN.mjs";
8
8
  import { useUserAvatar } from "../../hooks/useUserAvatar/index.mjs";
9
+ import merge from "../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/merge.mjs";
9
10
  const _hoisted_1 = { class: "qd-avatar" };
10
11
  const _sfc_main = /* @__PURE__ */ defineComponent({
11
12
  ...{
@@ -39,12 +40,23 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
39
40
  let serviceAbort;
40
41
  const reImage = ref();
41
42
  const reProps = computed(() => {
42
- const { name, mode, avatarClassName, nameClassName, image, service, ...avatarOptions } = props;
43
+ const {
44
+ name,
45
+ mode,
46
+ avatarClassName,
47
+ nameClassName,
48
+ image,
49
+ service,
50
+ imageProps,
51
+ ...avatarOptions
52
+ } = props;
43
53
  const reAlt = avatarOptions.alt || name;
44
54
  const serviceOptions = { service: service || globalAvatarProps.value?.service };
55
+ const reImageProps = merge(imageProps, qdAvatarImageProps);
45
56
  return {
46
57
  avatarOptions: {
47
58
  ...avatarOptions,
59
+ imageProps: reImageProps,
48
60
  alt: reAlt
49
61
  },
50
62
  serviceOptions,
@@ -82,7 +94,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
82
94
  withDirectives((openBlock(), createBlock(unref(Avatar), mergeProps({ class: __props.avatarClassName }, reProps.value.avatarOptions, {
83
95
  image: typeof reImage.value === "number" ? reImage.value + "" : reImage.value
84
96
  }), createSlots({ _: 2 }, [
85
- renderList(unref(filterSlots)(_ctx.$slots, ["default", "empty"]), (name) => {
97
+ renderList(_ctx.$slots, (name) => {
86
98
  return {
87
99
  name,
88
100
  fn: withCtx((slotProps) => [
@@ -91,7 +103,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
91
103
  };
92
104
  })
93
105
  ]), 1040, ["class", "image"])), [
94
- [_directive_loading, unref(loading)]
106
+ [_directive_loading, { loading: unref(loading), size: "small" }]
95
107
  ]),
96
108
  reProps.value.name ? (openBlock(), createElementBlock("span", {
97
109
  key: 0,
@@ -1 +1 @@
1
- {"version":3,"file":"index.vue2.mjs","sources":["../../../src/components/avatar/index.vue"],"sourcesContent":["<template>\n <div class=\"qd-avatar\">\n <t-avatar\n v-loading=\"loading\"\n :class=\"avatarClassName\"\n v-bind=\"reProps.avatarOptions\"\n :image=\"typeof reImage === 'number' ? reImage + '' : reImage\"\n >\n <template v-for=\"name in filterSlots($slots, ['default', 'empty'])\" #[name]=\"slotProps\">\n <slot :name=\"name\" v-bind=\"slotProps\" />\n </template>\n </t-avatar>\n\n <span v-if=\"reProps.name\" :class=\"`qd-avatar__name ${nameClassName}`\">{{ reProps.name }}</span>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import type { QdAvatarProps } from './types'\n import type { AbortWrapperPromise } from 'qidian-shared'\n import { Avatar as TAvatar } from 'tdesign-vue-next'\n import { abortWrapper, filterSlots, isEmpty, validator } from 'qidian-shared'\n import { qdAvatarProps } from './props'\n import { ref, computed, watch, inject } from 'vue'\n import { PROVIDE_AVATAR } from '../config-provider/config'\n import { useUserAvatar } from '../../hooks'\n\n defineOptions({\n name: 'QdAvatar'\n })\n\n const props = withDefaults(defineProps<QdAvatarProps>(), qdAvatarProps)\n\n const globalAvatarProps = inject(\n PROVIDE_AVATAR,\n computed(() => undefined)\n )\n\n const { loading, getAvatar } = useUserAvatar()\n let serviceAbort: AbortWrapperPromise<Awaited<ReturnType<typeof getAvatar>>> | undefined\n\n const reImage = ref<string | number | undefined>()\n const reProps = computed(() => {\n const { name, mode, avatarClassName, nameClassName, image, service, ...avatarOptions } = props\n const reAlt = avatarOptions.alt || name\n const serviceOptions = { service: service || globalAvatarProps.value?.service }\n\n return {\n avatarOptions: {\n ...avatarOptions,\n alt: reAlt\n },\n serviceOptions,\n name,\n mode,\n avatarClassName,\n nameClassName,\n image\n }\n })\n\n watch(\n () => reProps.value.image,\n async (newVal, oldVal) => {\n if (newVal === oldVal) return\n\n serviceAbort?.abort?.('abort')\n const { mode, serviceOptions } = reProps.value\n if (mode === 'ossId') {\n const { service } = serviceOptions\n if (!service || isEmpty(newVal) || validator(newVal, 'url')) {\n reImage.value = newVal\n return\n }\n\n serviceAbort = abortWrapper(getAvatar(newVal))\n const res = await serviceAbort\n reImage.value = res\n return\n }\n\n reImage.value = newVal\n },\n { immediate: true }\n )\n</script>\n\n<style lang=\"less\" scoped>\n .qd-avatar {\n display: inline-flex;\n align-items: center;\n font: var(--td-font-body-medium);\n color: var(--td-text-color-primary);\n\n &__name {\n margin-left: var(--td-comp-margin-s);\n }\n }\n</style>\n"],"names":["_openBlock","_createElementBlock","_createBlock","_unref","TAvatar","_mergeProps","$slots","_withCtx","_renderSlot","_normalizeProps","_guardReactiveProps","_toDisplayString"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BE,UAAM,QAAQ;AAEd,UAAM,oBAAoB;AAAA,MACxB;AAAA,MACA,SAAS,MAAM,MAAS;AAAA,IAAA;AAG1B,UAAM,EAAE,SAAS,UAAA,IAAc,cAAA;AAC/B,QAAI;AAEJ,UAAM,UAAU,IAAA;AAChB,UAAM,UAAU,SAAS,MAAM;AAC7B,YAAM,EAAE,MAAM,MAAM,iBAAiB,eAAe,OAAO,SAAS,GAAG,cAAA,IAAkB;AACzF,YAAM,QAAQ,cAAc,OAAO;AACnC,YAAM,iBAAiB,EAAE,SAAS,WAAW,kBAAkB,OAAO,QAAA;AAEtE,aAAO;AAAA,QACL,eAAe;AAAA,UACb,GAAG;AAAA,UACH,KAAK;AAAA,QAAA;AAAA,QAEP;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IAEJ,CAAC;AAED;AAAA,MACE,MAAM,QAAQ,MAAM;AAAA,MACpB,OAAO,QAAQ,WAAW;AACxB,YAAI,WAAW,OAAQ;AAEvB,sBAAc,QAAQ,OAAO;AAC7B,cAAM,EAAE,MAAM,eAAA,IAAmB,QAAQ;AACzC,YAAI,SAAS,SAAS;AACpB,gBAAM,EAAE,YAAY;AACpB,cAAI,CAAC,WAAW,QAAQ,MAAM,KAAK,UAAU,QAAQ,KAAK,GAAG;AAC3D,oBAAQ,QAAQ;AAChB;AAAA,UACF;AAEA,yBAAe,aAAa,UAAU,MAAM,CAAC;AAC7C,gBAAM,MAAM,MAAM;AAClB,kBAAQ,QAAQ;AAChB;AAAA,QACF;AAEA,gBAAQ,QAAQ;AAAA,MAClB;AAAA,MACA,EAAE,WAAW,KAAA;AAAA,IAAK;;;AAlFpB,aAAAA,UAAA,GAAAC,mBAaM,OAbN,YAaM;AAAA,qCAZJC,YASWC,MAAAC,MAAA,GATXC,WASW,EAPR,OAAO,QAAA,gBAAA,GACA,QAAA,MAAQ,eAAa;AAAA,UAC5B,OAAK,OAAS,QAAA,UAAO,WAAgB,QAAA,aAAe,QAAA;AAAA,QAAA;qBAE5BF,MAAA,WAAA,EAAYG,KAAAA,QAAM,CAAA,WAAA,OAAA,CAAA,GAAA,CAA1B,SAAI;;;cACnB,IAAAC,QAAA,CAD2E,cAAS;AAAA,gBACpFC,WAAwC,KAAA,QAA3B,MAAIC,eAAAC,mBAAU,SAAS,CAAA,GAAA,QAAA,IAAA;AAAA,cAAA;;;;+BAN3BP,MAAA,OAAA,CAAO;AAAA,QAAA;QAUR,QAAA,MAAQ,qBAApBF,mBAA+F,QAAA;AAAA;UAApE,yCAA0B,QAAA,aAAa,EAAA;AAAA,QAAA,GAAOU,gBAAA,QAAA,MAAQ,IAAI,GAAA,CAAA;;;;;"}
1
+ {"version":3,"file":"index.vue2.mjs","sources":["../../../src/components/avatar/index.vue"],"sourcesContent":["<template>\n <div class=\"qd-avatar\">\n <t-avatar\n v-loading=\"{ loading, size: 'small' }\"\n :class=\"avatarClassName\"\n v-bind=\"reProps.avatarOptions\"\n :image=\"typeof reImage === 'number' ? reImage + '' : reImage\"\n >\n <template v-for=\"name in $slots\" #[name]=\"slotProps\">\n <slot :name=\"name\" v-bind=\"slotProps\" />\n </template>\n </t-avatar>\n\n <span v-if=\"reProps.name\" :class=\"`qd-avatar__name ${nameClassName}`\">{{ reProps.name }}</span>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import type { QdAvatarProps } from './types'\n import type { AbortWrapperPromise } from 'qidian-shared'\n import { Avatar as TAvatar } from 'tdesign-vue-next'\n import { abortWrapper, isEmpty, validator } from 'qidian-shared'\n import { qdAvatarImageProps, qdAvatarProps } from './props'\n import { ref, computed, watch, inject } from 'vue'\n import { PROVIDE_AVATAR } from '../config-provider/config'\n import { useUserAvatar } from '../../hooks'\n import { merge } from 'lodash-es'\n\n defineOptions({\n name: 'QdAvatar'\n })\n\n const props = withDefaults(defineProps<QdAvatarProps>(), qdAvatarProps)\n\n const globalAvatarProps = inject(\n PROVIDE_AVATAR,\n computed(() => undefined)\n )\n\n const { loading, getAvatar } = useUserAvatar()\n let serviceAbort: AbortWrapperPromise<Awaited<ReturnType<typeof getAvatar>>> | undefined\n\n const reImage = ref<string | number | undefined>()\n const reProps = computed(() => {\n const {\n name,\n mode,\n avatarClassName,\n nameClassName,\n image,\n service,\n imageProps,\n ...avatarOptions\n } = props\n const reAlt = avatarOptions.alt || name\n const serviceOptions = { service: service || globalAvatarProps.value?.service }\n const reImageProps = merge(imageProps, qdAvatarImageProps)\n\n return {\n avatarOptions: {\n ...avatarOptions,\n imageProps: reImageProps,\n alt: reAlt\n },\n serviceOptions,\n name,\n mode,\n avatarClassName,\n nameClassName,\n image\n }\n })\n\n watch(\n () => reProps.value.image,\n async (newVal, oldVal) => {\n if (newVal === oldVal) return\n\n serviceAbort?.abort?.('abort')\n const { mode, serviceOptions } = reProps.value\n if (mode === 'ossId') {\n const { service } = serviceOptions\n if (!service || isEmpty(newVal) || validator(newVal, 'url')) {\n reImage.value = newVal\n return\n }\n\n serviceAbort = abortWrapper(getAvatar(newVal))\n const res = await serviceAbort\n reImage.value = res\n return\n }\n\n reImage.value = newVal\n },\n { immediate: true }\n )\n</script>\n\n<style lang=\"less\" scoped>\n .qd-avatar {\n display: inline-flex;\n align-items: center;\n font: var(--td-font-body-medium);\n color: var(--td-text-color-primary);\n\n &__name {\n margin-left: var(--td-comp-margin-s);\n }\n }\n</style>\n"],"names":["_openBlock","_createElementBlock","_createBlock","_unref","TAvatar","_mergeProps","$slots","_withCtx","_renderSlot","_normalizeProps","_guardReactiveProps","_toDisplayString"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCE,UAAM,QAAQ;AAEd,UAAM,oBAAoB;AAAA,MACxB;AAAA,MACA,SAAS,MAAM,MAAS;AAAA,IAAA;AAG1B,UAAM,EAAE,SAAS,UAAA,IAAc,cAAA;AAC/B,QAAI;AAEJ,UAAM,UAAU,IAAA;AAChB,UAAM,UAAU,SAAS,MAAM;AAC7B,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,GAAG;AAAA,MAAA,IACD;AACJ,YAAM,QAAQ,cAAc,OAAO;AACnC,YAAM,iBAAiB,EAAE,SAAS,WAAW,kBAAkB,OAAO,QAAA;AACtE,YAAM,eAAe,MAAM,YAAY,kBAAkB;AAEzD,aAAO;AAAA,QACL,eAAe;AAAA,UACb,GAAG;AAAA,UACH,YAAY;AAAA,UACZ,KAAK;AAAA,QAAA;AAAA,QAEP;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IAEJ,CAAC;AAED;AAAA,MACE,MAAM,QAAQ,MAAM;AAAA,MACpB,OAAO,QAAQ,WAAW;AACxB,YAAI,WAAW,OAAQ;AAEvB,sBAAc,QAAQ,OAAO;AAC7B,cAAM,EAAE,MAAM,eAAA,IAAmB,QAAQ;AACzC,YAAI,SAAS,SAAS;AACpB,gBAAM,EAAE,YAAY;AACpB,cAAI,CAAC,WAAW,QAAQ,MAAM,KAAK,UAAU,QAAQ,KAAK,GAAG;AAC3D,oBAAQ,QAAQ;AAChB;AAAA,UACF;AAEA,yBAAe,aAAa,UAAU,MAAM,CAAC;AAC7C,gBAAM,MAAM,MAAM;AAClB,kBAAQ,QAAQ;AAChB;AAAA,QACF;AAEA,gBAAQ,QAAQ;AAAA,MAClB;AAAA,MACA,EAAE,WAAW,KAAA;AAAA,IAAK;;;AA9FpB,aAAAA,UAAA,GAAAC,mBAaM,OAbN,YAaM;AAAA,qCAZJC,YASWC,MAAAC,MAAA,GATXC,WASW,EAPR,OAAO,QAAA,gBAAA,GACA,QAAA,MAAQ,eAAa;AAAA,UAC5B,OAAK,OAAS,QAAA,UAAO,WAAgB,QAAA,aAAe,QAAA;AAAA,QAAA;UAE5BC,WAAAA,KAAAA,SAAR,SAAI;;;cACnB,IAAAC,QAAA,CADwC,cAAS;AAAA,gBACjDC,WAAwC,KAAA,QAA3B,MAAIC,eAAAC,mBAAU,SAAS,CAAA,GAAA,QAAA,IAAA;AAAA,cAAA;;;;0CANzBP,MAAA,OAAA,GAAO,MAAA,QAAA,CAAA;AAAA,QAAA;QAUV,QAAA,MAAQ,qBAApBF,mBAA+F,QAAA;AAAA;UAApE,yCAA0B,QAAA,aAAa,EAAA;AAAA,QAAA,GAAOU,gBAAA,QAAA,MAAQ,IAAI,GAAA,CAAA;;;;;"}
@@ -3,3 +3,6 @@ export declare const qdAvatarProps: {
3
3
  readonly icon: () => () => any;
4
4
  readonly mode: "ossId";
5
5
  };
6
+ export declare const qdAvatarImageProps: {
7
+ readonly lazy: true;
8
+ };
@@ -5,7 +5,11 @@ const qdAvatarProps = {
5
5
  icon: () => () => createVNode(UserIcon, null, null),
6
6
  mode: "ossId"
7
7
  };
8
+ const qdAvatarImageProps = {
9
+ lazy: true
10
+ };
8
11
  export {
12
+ qdAvatarImageProps,
9
13
  qdAvatarProps
10
14
  };
11
15
  //# sourceMappingURL=props.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"props.mjs","sources":["../../../src/components/avatar/props.tsx"],"sourcesContent":["import { UserIcon } from 'tdesign-icons-vue-next'\n\nexport const qdAvatarProps = {\n hideOnLoadFailed: true,\n icon: () => () => <UserIcon />,\n mode: 'ossId'\n} as const\n"],"names":["qdAvatarProps","hideOnLoadFailed","icon","_createVNode","UserIcon","mode"],"mappings":";;AAEO,MAAMA,gBAAgB;AAAA,EAC3BC,kBAAkB;AAAA,EAClBC,MAAMA,MAAM,MAAAC,YAAAC,UAAA,MAAA,IAAA;AAAA,EACZC,MAAM;AACR;"}
1
+ {"version":3,"file":"props.mjs","sources":["../../../src/components/avatar/props.tsx"],"sourcesContent":["import { UserIcon } from 'tdesign-icons-vue-next'\n\nexport const qdAvatarProps = {\n hideOnLoadFailed: true,\n icon: () => () => <UserIcon />,\n mode: 'ossId'\n} as const\n\nexport const qdAvatarImageProps = {\n lazy: true\n} as const"],"names":["qdAvatarProps","hideOnLoadFailed","icon","_createVNode","UserIcon","mode","qdAvatarImageProps","lazy"],"mappings":";;AAEO,MAAMA,gBAAgB;AAAA,EAC3BC,kBAAkB;AAAA,EAClBC,MAAMA,MAAM,MAAAC,YAAAC,UAAA,MAAA,IAAA;AAAA,EACZC,MAAM;AACR;AAEO,MAAMC,qBAAqB;AAAA,EAChCC,MAAM;AACR;"}
@@ -0,0 +1,2 @@
1
+ export { default as QdImage } from './index.vue';
2
+ export type { QdImageProps } from './types';
@@ -0,0 +1,14 @@
1
+ import type { QdImageProps } from './types';
2
+ declare const _default: <OR = unknown, OP extends string | number | (string | number)[] = string | number | (string | number)[], TOP = OP>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
3
+ props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{} & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, never> & QdImageProps<OR, OP, TOP> & Partial<{}>> & import("vue").PublicProps;
4
+ expose(exposed: import("vue").ShallowUnwrapRef<{}>): void;
5
+ attrs: any;
6
+ slots: {};
7
+ emit: {};
8
+ }>) => import("vue").VNode & {
9
+ __ctx?: Awaited<typeof __VLS_setup>;
10
+ };
11
+ export default _default;
12
+ type __VLS_PrettifyLocal<T> = {
13
+ [K in keyof T]: T[K];
14
+ } & {};
@@ -0,0 +1,117 @@
1
+ import { defineComponent, mergeDefaults, inject, computed, ref, watch, resolveDirective, withDirectives, createBlock, openBlock, unref, mergeProps, createSlots, renderList, withCtx, renderSlot, normalizeProps, guardReactiveProps } from "vue";
2
+ import { qdImageProps } from "./props.mjs";
3
+ import { Image } from "tdesign-vue-next";
4
+ import { isEmpty, validator, suspectedWrapperPromise, to } from "qidian-shared";
5
+ import { PROVIDE_UPLOAD } from "../config-provider/config.mjs";
6
+ import merge from "../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/merge.mjs";
7
+ const _sfc_main = /* @__PURE__ */ defineComponent({
8
+ ...{
9
+ name: "QdImage"
10
+ },
11
+ __name: "index",
12
+ props: /* @__PURE__ */ mergeDefaults({
13
+ src: {},
14
+ mode: {},
15
+ alt: {},
16
+ error: {},
17
+ fallback: {},
18
+ fit: {},
19
+ gallery: { type: Boolean },
20
+ lazy: { type: Boolean },
21
+ loading: {},
22
+ overlayContent: {},
23
+ overlayTrigger: {},
24
+ placeholder: {},
25
+ position: {},
26
+ referrerpolicy: {},
27
+ shape: {},
28
+ srcset: {},
29
+ onError: { type: Function },
30
+ onLoad: { type: Function },
31
+ listOssByIds: {}
32
+ }, qdImageProps),
33
+ setup(__props) {
34
+ const props = __props;
35
+ const globalUploadProps = inject(
36
+ PROVIDE_UPLOAD,
37
+ computed(() => void 0)
38
+ );
39
+ const reSrc = ref();
40
+ const reProps = computed(() => {
41
+ const { src, mode, listOssByIds, ...imageOptions } = props;
42
+ const reListOssByIds = merge(listOssByIds, globalUploadProps.value?.listOssByIds);
43
+ return {
44
+ src,
45
+ mode,
46
+ listOssByIds: reListOssByIds,
47
+ imageOptions
48
+ };
49
+ });
50
+ const serviceLoad = ref(false);
51
+ watch(
52
+ () => reProps.value.src,
53
+ async (newVal, oldVal) => {
54
+ if (newVal === oldVal) return;
55
+ const { mode, listOssByIds } = reProps.value;
56
+ if (mode === "ossId") {
57
+ if (!listOssByIds || !listOssByIds.service || isEmpty(newVal) || newVal instanceof File || validator(newVal, "url")) {
58
+ reSrc.value = newVal;
59
+ return;
60
+ }
61
+ const { service, transformParams, transformRes } = listOssByIds;
62
+ serviceLoad.value = true;
63
+ const currentParams = newVal;
64
+ let tParams;
65
+ if (transformParams) {
66
+ const [trErr, trRes] = await suspectedWrapperPromise(transformParams(currentParams));
67
+ if (trErr) {
68
+ serviceLoad.value = false;
69
+ throw trErr;
70
+ }
71
+ tParams = trRes;
72
+ }
73
+ const [serviceErr, serviceRes] = await to(
74
+ service(tParams || currentParams)
75
+ );
76
+ if (serviceErr) {
77
+ serviceLoad.value = false;
78
+ throw serviceErr;
79
+ }
80
+ let res;
81
+ if (transformRes) {
82
+ const [trErr, trRes] = await suspectedWrapperPromise(transformRes(serviceRes));
83
+ serviceLoad.value = false;
84
+ if (trErr) throw trErr;
85
+ res = trRes;
86
+ } else {
87
+ serviceLoad.value = false;
88
+ res = serviceRes;
89
+ }
90
+ reSrc.value = res[0]?.url;
91
+ }
92
+ },
93
+ { immediate: true }
94
+ );
95
+ return (_ctx, _cache) => {
96
+ const _directive_loading = resolveDirective("loading");
97
+ return withDirectives((openBlock(), createBlock(unref(Image), mergeProps(reProps.value.imageOptions, {
98
+ src: typeof reSrc.value === "number" ? reSrc.value + "" : reSrc.value
99
+ }), createSlots({ _: 2 }, [
100
+ renderList(_ctx.$slots, (name) => {
101
+ return {
102
+ name,
103
+ fn: withCtx((slotProps) => [
104
+ renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(slotProps)))
105
+ ])
106
+ };
107
+ })
108
+ ]), 1040, ["src"])), [
109
+ [_directive_loading, { loading: serviceLoad.value, size: "small" }]
110
+ ]);
111
+ };
112
+ }
113
+ });
114
+ export {
115
+ _sfc_main as default
116
+ };
117
+ //# sourceMappingURL=index.vue.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.vue.mjs","sources":["../../../src/components/image/index.vue"],"sourcesContent":["<template>\n <t-image\n v-loading=\"{ loading: serviceLoad, size: 'small' }\"\n v-bind=\"reProps.imageOptions\"\n :src=\"typeof reSrc === 'number' ? reSrc + '' : reSrc\"\n >\n <template v-for=\"name in $slots\" #[name]=\"slotProps\">\n <slot :name=\"name\" v-bind=\"slotProps\" />\n </template>\n </t-image>\n</template>\n\n<script\n setup\n lang=\"ts\"\n generic=\"\n OR = unknown,\n OP extends string | number | (string | number)[] = string | number | (string | number)[],\n TOP = OP\n \"\n>\n import type { QdImageProps } from './types'\n import type { QdUploadListOssByIdsResult } from '../upload/types'\n import { qdImageProps } from './props'\n import { Image as TImage } from 'tdesign-vue-next'\n import { computed, inject, ref, watch } from 'vue'\n import { isEmpty, suspectedWrapperPromise, to, validator } from 'qidian-shared'\n import { PROVIDE_UPLOAD } from '../config-provider/config'\n import { merge } from 'lodash-es'\n\n defineOptions({\n name: 'QdImage'\n })\n\n type Props = QdImageProps<OR, OP, TOP>\n\n const props = withDefaults(defineProps<Props>(), qdImageProps)\n\n const globalUploadProps = inject(\n PROVIDE_UPLOAD,\n computed(() => undefined)\n )\n\n const reSrc = ref<string | number | File | undefined>()\n const reProps = computed(() => {\n const { src, mode, listOssByIds, ...imageOptions } = props\n const reListOssByIds = merge(listOssByIds, globalUploadProps.value?.listOssByIds)\n\n return {\n src,\n mode,\n listOssByIds: reListOssByIds,\n imageOptions\n }\n })\n\n const serviceLoad = ref(false)\n\n watch(\n () => reProps.value.src,\n async (newVal, oldVal) => {\n if (newVal === oldVal) return\n\n const { mode, listOssByIds } = reProps.value\n if (mode === 'ossId') {\n if (\n !listOssByIds ||\n !listOssByIds.service ||\n isEmpty(newVal) ||\n newVal instanceof File ||\n validator(newVal, 'url')\n ) {\n reSrc.value = newVal\n return\n }\n\n const { service, transformParams, transformRes } = listOssByIds\n\n serviceLoad.value = true\n const currentParams = newVal\n let tParams: TOP | undefined\n\n if (transformParams) {\n const [trErr, trRes] = await suspectedWrapperPromise(transformParams(currentParams as OP))\n if (trErr) {\n serviceLoad.value = false\n throw trErr\n }\n\n tParams = trRes\n }\n\n const [serviceErr, serviceRes] = await to(\n service(tParams || (currentParams as unknown as TOP))\n )\n if (serviceErr) {\n serviceLoad.value = false\n throw serviceErr\n }\n\n let res: QdUploadListOssByIdsResult | undefined\n if (transformRes) {\n const [trErr, trRes] = await suspectedWrapperPromise(transformRes(serviceRes))\n serviceLoad.value = false\n if (trErr) throw trErr\n\n res = trRes\n } else {\n serviceLoad.value = false\n res = serviceRes as QdUploadListOssByIdsResult\n }\n\n reSrc.value = res[0]?.url\n }\n },\n { immediate: true }\n )\n</script>\n"],"names":["_withDirectives","_openBlock","_createBlock","_unref","TImage","_mergeProps","$slots","_withCtx","_renderSlot","_normalizeProps","_guardReactiveProps"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCE,UAAM,QAAQ;AAEd,UAAM,oBAAoB;AAAA,MACxB;AAAA,MACA,SAAS,MAAM,MAAS;AAAA,IAAA;AAG1B,UAAM,QAAQ,IAAA;AACd,UAAM,UAAU,SAAS,MAAM;AAC7B,YAAM,EAAE,KAAK,MAAM,cAAc,GAAG,iBAAiB;AACrD,YAAM,iBAAiB,MAAM,cAAc,kBAAkB,OAAO,YAAY;AAEhF,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA,cAAc;AAAA,QACd;AAAA,MAAA;AAAA,IAEJ,CAAC;AAED,UAAM,cAAc,IAAI,KAAK;AAE7B;AAAA,MACE,MAAM,QAAQ,MAAM;AAAA,MACpB,OAAO,QAAQ,WAAW;AACxB,YAAI,WAAW,OAAQ;AAEvB,cAAM,EAAE,MAAM,aAAA,IAAiB,QAAQ;AACvC,YAAI,SAAS,SAAS;AACpB,cACE,CAAC,gBACD,CAAC,aAAa,WACd,QAAQ,MAAM,KACd,kBAAkB,QAClB,UAAU,QAAQ,KAAK,GACvB;AACA,kBAAM,QAAQ;AACd;AAAA,UACF;AAEA,gBAAM,EAAE,SAAS,iBAAiB,aAAA,IAAiB;AAEnD,sBAAY,QAAQ;AACpB,gBAAM,gBAAgB;AACtB,cAAI;AAEJ,cAAI,iBAAiB;AACnB,kBAAM,CAAC,OAAO,KAAK,IAAI,MAAM,wBAAwB,gBAAgB,aAAmB,CAAC;AACzF,gBAAI,OAAO;AACT,0BAAY,QAAQ;AACpB,oBAAM;AAAA,YACR;AAEA,sBAAU;AAAA,UACZ;AAEA,gBAAM,CAAC,YAAY,UAAU,IAAI,MAAM;AAAA,YACrC,QAAQ,WAAY,aAAgC;AAAA,UAAA;AAEtD,cAAI,YAAY;AACd,wBAAY,QAAQ;AACpB,kBAAM;AAAA,UACR;AAEA,cAAI;AACJ,cAAI,cAAc;AAChB,kBAAM,CAAC,OAAO,KAAK,IAAI,MAAM,wBAAwB,aAAa,UAAU,CAAC;AAC7E,wBAAY,QAAQ;AACpB,gBAAI,MAAO,OAAM;AAEjB,kBAAM;AAAA,UACR,OAAO;AACL,wBAAY,QAAQ;AACpB,kBAAM;AAAA,UACR;AAEA,gBAAM,QAAQ,IAAI,CAAC,GAAG;AAAA,QACxB;AAAA,MACF;AAAA,MACA,EAAE,WAAW,KAAA;AAAA,IAAK;;;AAlHpB,aAAAA,gBAAAC,aAAAC,YAQUC,MAAAC,KAAA,GARVC,WAEU,QAMA,MANQ,cAAY;AAAA,QAC3B,KAAG,OAAS,MAAA,UAAK,WAAgB,MAAA,aAAa,MAAA;AAAA,MAAA;QAEtBC,WAAAA,KAAAA,SAAR,SAAI;;;YACnB,IAAAC,QAAA,CADwC,cAAS;AAAA,cACjDC,WAAwC,KAAA,QAA3B,MAAIC,eAAAC,mBAAU,SAAS,CAAA,CAAA;AAAA,YAAA;;;;wCALhB,YAAA,OAAW,MAAA,SAAA;AAAA,MAAA;;;;"}
@@ -0,0 +1,5 @@
1
+ import _sfc_main from "./index.vue.mjs";
2
+ export {
3
+ _sfc_main as default
4
+ };
5
+ //# sourceMappingURL=index.vue2.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.vue2.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,6 @@
1
+ export declare const qdImageProps: {
2
+ readonly loading: () => () => any;
3
+ readonly error: () => () => any;
4
+ readonly mode: "ossId";
5
+ readonly lazy: true;
6
+ };
@@ -0,0 +1,12 @@
1
+ import { createVNode } from "vue";
2
+ import { ImageErrorIcon, LoadingIcon } from "tdesign-icons-vue-next";
3
+ const qdImageProps = {
4
+ loading: () => () => createVNode(LoadingIcon, null, null),
5
+ error: () => () => createVNode(ImageErrorIcon, null, null),
6
+ mode: "ossId",
7
+ lazy: true
8
+ };
9
+ export {
10
+ qdImageProps
11
+ };
12
+ //# sourceMappingURL=props.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"props.mjs","sources":["../../../src/components/image/props.tsx"],"sourcesContent":["import { ImageErrorIcon, LoadingIcon } from 'tdesign-icons-vue-next'\n\nexport const qdImageProps = {\n loading: () => () => <LoadingIcon />,\n error: () => () => <ImageErrorIcon />,\n mode: 'ossId',\n lazy: true\n} as const\n"],"names":["qdImageProps","loading","_createVNode","LoadingIcon","error","ImageErrorIcon","mode","lazy"],"mappings":";;AAEO,MAAMA,eAAe;AAAA,EAC1BC,SAASA,MAAM,MAAAC,YAAAC,aAAA,MAAA,IAAA;AAAA,EACfC,OAAOA,MAAM,MAAAF,YAAAG,gBAAA,MAAA,IAAA;AAAA,EACbC,MAAM;AAAA,EACNC,MAAM;AACR;"}
@@ -0,0 +1,6 @@
1
+ import type { TdImageProps, UploadFile } from 'tdesign-vue-next';
2
+ import type { QdUploadProps } from '../upload';
3
+ export interface QdImageProps<OR = unknown, OP extends string | number | (string | number)[] = string | number | (string | number)[], TOP = OP> extends Omit<TdImageProps, 'src'>, Pick<QdUploadProps<UploadFile, OR, OP, TOP>, 'listOssByIds'> {
4
+ src?: string | number | File;
5
+ mode?: 'ossId' | 'url';
6
+ }
@@ -10,5 +10,6 @@ export * from './office';
10
10
  export * from './org';
11
11
  export * from './form';
12
12
  export * from './grid';
13
+ export * from './image';
13
14
  export * from './service';
14
15
  export * from './upload';
package/dist/index.mjs CHANGED
@@ -27,10 +27,11 @@ import { qdFormGrid, qdFormGutter } from "./components/form/props.mjs";
27
27
  import { default as default19 } from "./components/grid/index.vue.mjs";
28
28
  import { default as default20 } from "./components/grid/item.vue.mjs";
29
29
  import { PROVIDE_GRID_ITEM_PROPS_KEY, PROVIDE_GRID_WIDTH_KEY } from "./components/grid/config.mjs";
30
- import { default as default21 } from "./components/service/table.vue.mjs";
31
- import { default as default22 } from "./components/service/list.vue.mjs";
32
- import { default as default23 } from "./components/service/select.vue.mjs";
33
- import { default as default24 } from "./components/upload/index.vue.mjs";
30
+ import { default as default21 } from "./components/image/index.vue.mjs";
31
+ import { default as default22 } from "./components/service/table.vue.mjs";
32
+ import { default as default23 } from "./components/service/list.vue.mjs";
33
+ import { default as default24 } from "./components/service/select.vue.mjs";
34
+ import { default as default25 } from "./components/upload/index.vue.mjs";
34
35
  import { qdUploadAcceptMap } from "./components/upload/config.mjs";
35
36
  import { hasPermi, hasPermiDirective } from "./directive/hasPermi.mjs";
36
37
  import { hasRole, hasRoleDirective } from "./directive/hasRole.mjs";
@@ -64,12 +65,13 @@ export {
64
65
  default18 as QdFormItem,
65
66
  default19 as QdGrid,
66
67
  default20 as QdGridItem,
68
+ default21 as QdImage,
67
69
  default15 as QdOfficePdf,
68
70
  default16 as QdOrgSelect,
69
- default22 as QdServiceList,
70
- default23 as QdServiceSelect,
71
- default21 as QdServiceTable,
72
- default24 as QdUpload,
71
+ default23 as QdServiceList,
72
+ default24 as QdServiceSelect,
73
+ default22 as QdServiceTable,
74
+ default25 as QdUpload,
73
75
  auth,
74
76
  defineQdCrudList,
75
77
  defineQdCrudTable,
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -133,13 +133,13 @@ p {
133
133
  -webkit-box-orient: vertical;
134
134
  -webkit-line-clamp: var(--v07d46710);
135
135
  }
136
- .qd-avatar[data-v-527dccf6] {
136
+ .qd-avatar[data-v-26692975] {
137
137
  display: inline-flex;
138
138
  align-items: center;
139
139
  font: var(--td-font-body-medium);
140
140
  color: var(--td-text-color-primary);
141
141
  }
142
- .qd-avatar__name[data-v-527dccf6] {
142
+ .qd-avatar__name[data-v-26692975] {
143
143
  margin-left: var(--td-comp-margin-s);
144
144
  }
145
145
  [data-v-cdb247de] .qd-card__header--click {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "qidian-vue-ui",
3
- "version": "1.1.21",
3
+ "version": "1.1.23",
4
4
  "description": "基于 TDesign 的 QiDian Vue UI 组件库",
5
5
  "author": "qidian",
6
6
  "license": "MIT",