@robot-admin/naive-ui-components 0.19.0 → 0.21.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 +20 -0
- package/README.md +5 -5
- package/README_EN.md +5 -5
- package/SECURITY.md +39 -0
- package/dist/C_AntV.css +31 -31
- package/dist/C_AntV2.cjs +1 -1
- package/dist/C_AntV2.js +1 -1
- package/dist/C_Breadcrumb.css +308 -20
- package/dist/C_Breadcrumb.d.cts +2 -2
- package/dist/C_Breadcrumb.d.ts +2 -2
- package/dist/C_Breadcrumb2.cjs +1 -1
- package/dist/C_Breadcrumb2.js +1 -1
- package/dist/C_Chat.css +90 -90
- package/dist/C_Chat2.cjs +1 -1
- package/dist/C_Chat2.js +1 -1
- package/dist/C_CollapsePanel2.cjs +1 -1
- package/dist/C_CollapsePanel2.js +1 -1
- package/dist/C_Draggable.css +53 -53
- package/dist/C_Draggable2.cjs +1 -1
- package/dist/C_Draggable2.js +1 -1
- package/dist/C_FilePreview.css +98 -98
- package/dist/C_FilePreview.d.cts +2 -2
- package/dist/C_FilePreview.d.ts +2 -2
- package/dist/C_FilePreview2.cjs +1 -1
- package/dist/C_FilePreview2.js +1 -1
- package/dist/C_Form.base.css +9 -9
- package/dist/C_Form.css +9 -9
- package/dist/C_FormSearch.css +52 -52
- package/dist/C_FormSearch2.cjs +1 -1
- package/dist/C_FormSearch2.js +1 -1
- package/dist/C_Language.css +2 -2
- package/dist/C_Language2.cjs +1 -1
- package/dist/C_Language2.js +1 -1
- package/dist/C_Login.css +79 -79
- package/dist/C_Login2.cjs +1 -1
- package/dist/C_Login2.js +1 -1
- package/dist/C_Menu.css +1 -1
- package/dist/C_Menu.d.cts +2 -2
- package/dist/C_Menu.d.ts +2 -2
- package/dist/C_Menu2.cjs +1 -1
- package/dist/C_Menu2.js +1 -1
- package/dist/C_NotificationCenter.css +124 -124
- package/dist/C_NotificationCenter.d.cts +2 -2
- package/dist/C_NotificationCenter.d.ts +2 -2
- package/dist/C_NotificationCenter2.cjs +1 -1
- package/dist/C_NotificationCenter2.js +1 -1
- package/dist/C_Skeleton.css +2 -2
- package/dist/C_Skeleton2.cjs +1 -1
- package/dist/C_Skeleton2.js +1 -1
- package/dist/C_SplitPane.css +66 -66
- package/dist/C_SplitPane2.cjs +1 -1
- package/dist/C_SplitPane2.js +1 -1
- package/dist/C_Table.base.css +9 -9
- package/dist/C_Table.css +9 -9
- package/dist/C_Table.d.ts +1 -0
- package/dist/C_Theme2.cjs +1 -1
- package/dist/C_Theme2.js +1 -1
- package/dist/C_Timeline.css +46 -46
- package/dist/C_Timeline2.cjs +1 -1
- package/dist/C_Timeline2.js +1 -1
- package/dist/C_Transfer.css +26 -26
- package/dist/C_Transfer2.cjs +1 -1
- package/dist/C_Transfer2.js +1 -1
- package/dist/C_Tree.css +23 -23
- package/dist/C_Tree.d.ts +1 -0
- package/dist/C_Tree2.cjs +1 -1
- package/dist/C_Tree2.js +1 -1
- package/dist/C_Upload2.cjs +1 -1
- package/dist/C_Upload2.js +1 -1
- package/dist/C_VideoPlayer.d.cts +2 -2
- package/dist/C_VideoPlayer.d.ts +2 -2
- package/dist/C_VideoPlayer2.cjs +2 -2
- package/dist/C_VideoPlayer2.js +2 -2
- package/dist/C_WaterFall.css +31 -29
- package/dist/C_WaterFall2.cjs +1 -1
- package/dist/C_WaterFall2.js +1 -1
- package/dist/C_WorkFlow.css +111 -111
- package/dist/C_WorkFlow2.cjs +1 -1
- package/dist/C_WorkFlow2.js +1 -1
- package/dist/config.cjs +1 -0
- package/dist/config.d.cts +8 -0
- package/dist/config.d.ts +8 -0
- package/dist/config.js +1 -0
- package/dist/constants3.d.cts +34 -11
- package/dist/constants3.d.ts +34 -11
- package/dist/constants4.d.cts +14 -3
- package/dist/constants4.d.ts +14 -3
- package/dist/constants5.d.cts +24 -20
- package/dist/constants5.d.ts +24 -20
- package/dist/data.d.cts +6 -6
- package/dist/data.d.ts +6 -6
- package/dist/dateRange.d.cts +2 -0
- package/dist/dateRange.d.ts +2 -0
- package/dist/feedback.cjs +1 -1
- package/dist/feedback.js +1 -1
- package/dist/helpers.cjs +1 -1
- package/dist/helpers.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +8 -7
- package/dist/index.d.ts +9 -7
- package/dist/index.js +1 -1
- package/dist/index.vue.d.cts +4 -4
- package/dist/index.vue.d.ts +4 -4
- package/dist/index10.vue.d.cts +5 -5
- package/dist/index10.vue.d.ts +3 -3
- package/dist/index11.vue.d.cts +3 -3
- package/dist/index12.vue.d.ts +2 -2
- package/dist/index13.vue.d.cts +2 -2
- package/dist/index13.vue.d.ts +6 -6
- package/dist/index14.vue.d.cts +6 -6
- package/dist/index14.vue.d.ts +0 -1
- package/dist/index15.vue.d.cts +0 -1
- package/dist/index16.vue.d.ts +2 -2
- package/dist/index17.vue.d.cts +2 -2
- package/dist/index17.vue.d.ts +1 -1
- package/dist/index18.vue.d.cts +1 -1
- package/dist/index18.vue.d.ts +44 -40
- package/dist/index19.vue.d.cts +2 -2
- package/dist/index19.vue.d.ts +2 -2
- package/dist/index2.vue.d.cts +1 -1
- package/dist/index2.vue.d.ts +1 -1
- package/dist/index20.vue.d.cts +1 -1
- package/dist/index20.vue.d.ts +1 -1
- package/dist/index21.vue.d.cts +1 -1
- package/dist/index21.vue.d.ts +1 -1
- package/dist/index22.vue.d.cts +2 -2
- package/dist/index22.vue.d.ts +2 -2
- package/dist/index25.vue.d.cts +2 -3
- package/dist/index25.vue.d.ts +2 -3
- package/dist/index26.vue.d.cts +3 -3
- package/dist/index26.vue.d.ts +3 -3
- package/dist/index3.vue.d.cts +4 -4
- package/dist/index3.vue.d.ts +4 -4
- package/dist/index4.vue.d.cts +44 -40
- package/dist/index4.vue.d.ts +26 -12
- package/dist/index5.vue.d.cts +26 -12
- package/dist/index6.vue.d.ts +0 -2
- package/dist/index7.vue.d.cts +0 -2
- package/dist/index8.vue.d.ts +4 -4
- package/dist/index9.vue.d.cts +4 -4
- package/dist/index9.vue.d.ts +5 -5
- package/dist/mapUtils.d.cts +3 -3
- package/dist/mapUtils.d.ts +3 -3
- package/dist/presets.d.cts +1 -1
- package/dist/presets.d.ts +1 -1
- package/dist/public.d.ts +3 -1
- package/dist/style.css +1154 -864
- package/dist/types.d.cts +3 -1
- package/dist/useCalendarEvents.d.cts +1 -1
- package/dist/useCalendarEvents.d.ts +1 -1
- package/dist/useCollapsePanel.d.cts +3 -3
- package/dist/useCollapsePanel.d.ts +3 -3
- package/dist/useComponentLocale.cjs +1 -1
- package/dist/useComponentLocale.js +1 -1
- package/dist/useCropperCore.d.cts +4 -4
- package/dist/useCropperCore.d.ts +4 -4
- package/dist/useDraggableLayout.d.cts +1 -0
- package/dist/useDraggableLayout.d.ts +1 -0
- package/dist/useEdgeInteraction.d.cts +2 -2
- package/dist/useEdgeInteraction.d.ts +2 -2
- package/dist/useFullscreen.d.cts +41 -23
- package/dist/useFullscreen.d.ts +41 -23
- package/dist/useInfiniteScroll.d.cts +6 -4
- package/dist/useInfiniteScroll.d.ts +6 -4
- package/dist/useQRCode.d.cts +4 -4
- package/dist/useQRCode.d.ts +4 -4
- package/dist/useSignatureHistory.d.cts +2 -2
- package/dist/useSignatureHistory.d.ts +2 -2
- package/dist/useSplitResize.d.cts +6 -7
- package/dist/useSplitResize.d.ts +6 -7
- package/dist/useTableQuery.cjs +1 -1
- package/dist/useTableQuery.d.cts +6 -10
- package/dist/useTableQuery.d.ts +6 -10
- package/dist/useTableQuery.js +1 -1
- package/dist/useWorkflowValidation.d.cts +11 -3
- package/dist/useWorkflowValidation.d.ts +11 -3
- package/dist/verification.d.cts +1 -1
- package/dist/verification.d.ts +1 -1
- package/docs/architecture.en.md +3 -1
- package/docs/architecture.md +3 -1
- package/docs/guides/usage.en.md +22 -0
- package/docs/guides/usage.md +73 -0
- package/package.json +27 -10
- package/dist/context.cjs +0 -1
- package/dist/context.js +0 -1
package/dist/C_Breadcrumb2.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./C_Icon2.js";import{t}from"./export-helper.js";import{Fragment as n,computed as r,createBlock as i,createCommentVNode as a,createElementBlock as o,createElementVNode as s,createTextVNode as c,createVNode as l,defineComponent as u,normalizeStyle as d,openBlock as f,renderList as p,resolveComponent as m,toDisplayString as h,unref as g,withCtx as _}from"vue";import{NBreadcrumb as v,NBreadcrumbItem as y,NDropdown as b}from"naive-ui";import{useRoute as x}from"vue-router";const S={class:`c-breadcrumb__trigger`},C=[`onClick`];var w=t(u({name:`C_Breadcrumb`,__name:`index`,props:{items:{},showIcon:{type:Boolean,default:!0},iconSize:{default:16},labelFormatter:{}},emits:[`select`],setup(t,{emit:u}){let m=t,w=u,T=x(),E=e=>m.labelFormatter?m.labelFormatter(e):e,D=r(()=>T.matched.filter(e=>e.meta?.title).map(e=>({key:e.path,label:E(e.meta.title||``),icon:e.meta.icon,children:e.children?.length?e.children.map(e=>({key:e.path,label:E(e.meta?.title||``),...e.children?.length&&{children:e.children.map(e=>({key:e.path,label:E(e.meta?.title||``)}))}})):[]}))),O=r(()=>m.items??D.value),k=e=>{w(`select`,e)};return(r,u)=>{let m=b,x=y,w=v;return f(),o(`div`,{class:`c-breadcrumb flex-1 min-w-0`,style:d({"--c-breadcrumb-icon-size":`${t.iconSize}px`,"--c-breadcrumb-gap":`${Math.max(Math.round(t.iconSize/4),2)}px`})},[l(w,null,{default:_(()=>[(f(!0),o(n,null,p(O.value,(n,r)=>(f(),i(x,{key:r},{default:_(()=>[n.children?.length?(f(),i(m,{key:0,options:n.children,onSelect:k},{default:_(()=>[s(`div`,S,[t.showIcon&&n.icon?(f(),i(g(e),{key:0,name:n.icon,size:t.iconSize},null,8,[`name`,`size`])):a(`v-if`,!0),c(` `+h(n.label),1)])]),_:2},1032,[`options`])):(f(),o(`span`,{key:1,class:`c-breadcrumb__link`,onClick:e=>k(n.key)},[t.showIcon&&n.icon?(f(),i(g(e),{key:0,name:n.icon,size:t.iconSize},null,8,[`name`,`size`])):a(`v-if`,!0),c(` `+h(n.label),1)],8,C))]),_:2},1024))),128))]),_:1})],4)}}}),[[`__scopeId`,`data-v-a86331d5`]]);export{w as t};
|
|
1
|
+
import{t as e}from"./useComponentLocale.js";import{t}from"./C_Icon2.js";import{t as n}from"./export-helper.js";import{Fragment as r,computed as i,createBlock as a,createCommentVNode as o,createElementBlock as s,createElementVNode as c,createVNode as l,defineComponent as u,inject as d,nextTick as f,normalizeClass as p,normalizeStyle as m,onBeforeUnmount as h,onMounted as g,openBlock as _,ref as v,renderList as ee,resolveComponent as y,toDisplayString as b,unref as x,watch as S,withCtx as C,withKeys as w,withModifiers as T}from"vue";import{NPopover as E,useThemeVars as D}from"naive-ui";import{routeLocationKey as O}from"vue-router";const k=e=>typeof e==`string`?e.trim():``,A=e=>e[e.length-1],j=e=>e.split(/[?#]/,1)[0],M=e=>/(^|\/)[:*]/.test(j(e));function N(e){let t=[];for(let n of e.split(`/`))!n||n===`.`||(n===`..`?t.pop():t.push(n));return`/${t.join(`/`)}`}function P(e,t=``){let n=String(e??``).trim();if(!n||/^(?:[a-z][\w+.-]*:|\/\/|#)/i.test(n))return``;let r=n.search(/[?#]/),i=r<0?``:n.slice(r),a=r<0?n:n.slice(0,r);return`${N(a.startsWith(`/`)?a:`${j(t)}/${a}`)}${i}`}const F=e=>k(e.label)||k(e.meta?.title),I=e=>k(e.icon)||k(e.meta?.icon)||void 0,L=e=>e.meta?.hidden===!0||e.type===`divider`,R=e=>e.type===`group`||e.meta?.breadcrumb===!1;function z(e,t,n){if(L(e))return[];let r=n||e.disabled===!0,i=e.type===`group`?t:P(k(e.path)||e.key,t),a=B(e.children??[],i||t,r),o=F(e);return R(e)||!o||!i?a:[{path:i,label:o,icon:I(e),disabled:r,children:a}]}function B(e,t=``,n=!1){return e.flatMap(e=>z(e,t,n))}function V(e,t){return e.flatMap(e=>{let n=V(e.children,t);return M(e.path)&&!n.length?[]:[{key:e.path,label:t(e.label),icon:e.icon,disabled:e.disabled||M(e.path),...n.length?{children:n}:{}}]})}function H(e,t,n=e.path){return{key:n,label:t(e.label),icon:e.icon,disabled:e.disabled||M(n),children:V(e.children,t)}}function U(e,t,n){let r=j(e.path);return r===t||M(r)&&r===A(n)?3e5+r.length:r!==`/`&&t.startsWith(`${r}/`)?2e5+r.length:n.includes(r)?1e5+r.length:0}function W(e,t,n){let r=[],i=0,a=(e,o)=>{e.forEach(e=>{let s=[...o,e],c=U(e,t,n);c>i&&(r=s,i=c),a(e.children,s)})};return a(e,[]),r}function G(e,t){let n=k(e?.meta?.title);if(n)return n;let r=typeof e?.name==`symbol`?e.name.description:e?.name;if(k(r))return k(r);let i=A(j(t).split(`/`).filter(Boolean))||`/`;try{return decodeURIComponent(i).replace(/[-_]+/g,` `)}catch{return i}}function K(e,t){let n=[],r=``;return e.matched.forEach((i,a)=>{r=P(i.path,r);let o=a===e.matched.length-1,s=J(i,r,o,e,t);s&&n.push(s)}),n}function q(e,t){return e.meta?.breadcrumb===!1?!1:t||e.meta?.hidden!==!0&&!!k(e.meta?.title)}function J(e,t,n,r,i){if(!q(e,n))return;let a=r.menus===void 0?B(e.children??[],t):[];return{key:n?r.path:t,label:i(n?G(e,r.path):k(e.meta?.title)),icon:I(e),disabled:!n&&M(t),children:V(a,i)}}function Y(e,t,n){return e?j(e.path)===t||M(e.path)&&j(e.path)===A(n):!1}function X(e,t){let n=j(P(e.path)||e.path),r=B(e.menus??[]),i=e.matched.map(e=>j(e.path)),a=W(r,n,i),o=A(a),s=Y(o,n,i),c=A(e.matched)?.meta?.breadcrumb===!1&&s?a.slice(0,-1):a;if(c.length)return c.map(n=>H(n,t,s&&n===o?e.path:n.path))}function Z(e,t=!1){return e.map(e=>({...e,...t?{disabled:!0}:{},...e.children===void 0?{}:{children:Z(e.children,t||e.disabled===!0)}}))}function te(e,t,n){let r=A(t.matched);return r?.meta?.breadcrumb===!1||A(e)?.key===t.path||e.push({key:t.path,label:n(G(r,t.path)),icon:r?I(r):void 0}),e}function Q(e){return e.reduce((e,t)=>t.disabled?e:e+(t.children?.length?Q(t.children):1),0)}function ne(e){if(e.items!==void 0)return Z(e.items);let t=e.formatLabel??(e=>e);return te(X(e,t)??K(e,t),e,t)}const $=[`role`,`aria-label`],re=[`aria-level`,`aria-expanded`,`aria-current`,`disabled`,`title`,`onClick`],ie={key:1,viewBox:`0 0 20 20`,fill:`none`},ae={key:0,d:`M2.5 6a1.5 1.5 0 0 1 1.5-1.5h4l1.5 1.5H16a1.5 1.5 0 0 1 1.5 1.5v7A1.5 1.5 0 0 1 16 16H4a1.5 1.5 0 0 1-1.5-1.5Z`,stroke:`currentColor`,"stroke-width":`1.4`},oe={key:1,d:`M6 2.5h5l3 3v12H6a1.5 1.5 0 0 1-1.5-1.5V4A1.5 1.5 0 0 1 6 2.5Zm4.5 0v4H14M7 10h5m-5 3h5`,stroke:`currentColor`,"stroke-width":`1.3`,"stroke-linejoin":`round`},se={class:`c-breadcrumb-menu__label`},ce={key:1,class:`c-breadcrumb-menu__count`},le={key:2,class:`c-breadcrumb-menu__current`};var ue=n(u({name:`BreadcrumbMenu`,__name:`BreadcrumbMenu`,props:{items:{},currentKey:{},level:{default:0},showIcon:{type:Boolean},iconSize:{}},emits:[`select`],setup(n,{emit:i}){let l=n,u=i,{t:d}=e(),m=v(null),h=v(new Set),C=e=>e.some(e=>e.key===l.currentKey||e.children&&C(e.children));S([()=>l.items,()=>l.currentKey],()=>{h.value=new Set(l.items.filter(e=>e.children&&C(e.children)).map(e=>e.key))},{immediate:!0});let w=e=>{if(!e.disabled)if(e.children?.length){let t=new Set(h.value);t.has(e.key)?t.delete(e.key):t.add(e.key),h.value=t}else e.key!==l.currentKey&&u(`select`,e.key)},T=e=>{if(!(l.level!==0||!(e.target instanceof HTMLButtonElement)))for(let t of m.value?.querySelectorAll(`button[role="treeitem"]`)??[])t.tabIndex=t===e.target?0:-1},E=(e,t)=>{if(e.hasAttribute(`aria-expanded`)){if(e.getAttribute(`aria-expanded`)===`true`){t?.focus();return}e.click(),f(()=>e.parentElement?.querySelector(`ul button:not(:disabled)`)?.focus())}},D=e=>{e.getAttribute(`aria-expanded`)===`true`?e.click():e.closest(`ul[role="group"]`)?.parentElement?.querySelector(`button[role="treeitem"]`)?.focus()},O=e=>{if(l.level!==0||!(e.target instanceof HTMLButtonElement))return;let{target:t}=e,n=[...m.value?.querySelectorAll(`button[role="treeitem"]:not(:disabled)`)??[]],r=n.indexOf(t);if(r<0)return;let i={ArrowDown:Math.min(r+1,n.length-1),ArrowUp:Math.max(r-1,0),Home:0,End:n.length-1};if(e.key in i){e.preventDefault(),n[i[e.key]]?.focus();return}e.key===`ArrowRight`?(e.preventDefault(),E(t,n[r+1])):e.key===`ArrowLeft`&&(e.preventDefault(),D(t))};return g(()=>{l.level===0&&f(()=>m.value?.querySelector(`button[role="treeitem"]:not(:disabled)`)?.focus())}),(e,i)=>{let l=y(`BreadcrumbMenu`,!0);return _(),s(`ul`,{ref_key:`listRef`,ref:m,class:`c-breadcrumb-menu`,role:n.level===0?`tree`:`group`,"aria-label":n.level===0?x(d)(`breadcrumb.directoryPages`):void 0,onKeydown:O,onFocusin:T},[(_(!0),s(r,null,ee(n.items,e=>(_(),s(`li`,{key:e.key,role:`none`,class:`c-breadcrumb-menu__item`},[c(`button`,{type:`button`,role:`treeitem`,tabindex:`-1`,"aria-level":n.level+1,"aria-expanded":e.children?.length?h.value.has(e.key):void 0,"aria-current":e.key===n.currentKey?`page`:void 0,disabled:e.disabled||!e.children?.length&&e.key===n.currentKey,class:p(e.children?.length?`c-breadcrumb-menu__directory`:`c-breadcrumb-menu__page`),title:e.label,onClick:t=>w(e)},[n.showIcon?(_(),s(`span`,{key:0,class:p([`c-breadcrumb-menu__icon`,{"is-directory":e.children?.length}]),"aria-hidden":`true`},[n.showIcon&&e.icon?(_(),a(x(t),{key:0,name:e.icon,size:Math.min(n.iconSize,18)},null,8,[`name`,`size`])):(_(),s(`svg`,ie,[e.children?.length?(_(),s(`path`,ae)):(_(),s(`path`,oe))]))],2)):o(`v-if`,!0),c(`span`,se,b(e.label),1),e.children?.length?(_(),s(`span`,ce,b(x(Q)(e.children)),1)):e.key===n.currentKey?(_(),s(`span`,le,b(x(d)(`breadcrumb.current`)),1)):o(`v-if`,!0),e.children?.length?(_(),s(`svg`,{key:3,class:p([`c-breadcrumb-menu__chevron`,{"is-expanded":h.value.has(e.key)}]),viewBox:`0 0 16 16`,fill:`none`,"aria-hidden":`true`},[...i[1]||=[c(`path`,{d:`m6 4 4 4-4 4`,stroke:`currentColor`,"stroke-width":`1.4`,"stroke-linecap":`round`,"stroke-linejoin":`round`},null,-1)]],2)):o(`v-if`,!0)],10,re),e.children?.length&&h.value.has(e.key)?(_(),a(l,{key:0,items:e.children,"current-key":n.currentKey,level:n.level+1,"show-icon":n.showIcon,"icon-size":n.iconSize,onSelect:i[0]||=e=>u(`select`,e)},null,8,[`items`,`current-key`,`level`,`show-icon`,`icon-size`])):o(`v-if`,!0)]))),128))],40,$)}}}),[[`__scopeId`,`data-v-3ca99da3`]]);const de=[`aria-label`],fe={class:`c-breadcrumb__path`},pe=[`title`],me={class:`c-breadcrumb__label`},he=[`disabled`,`aria-expanded`,`aria-label`,`title`],ge={class:`c-breadcrumb__label`},_e={key:1,class:`c-breadcrumb__chevron`,viewBox:`0 0 16 16`,fill:`none`,"aria-hidden":`true`},ve=[`aria-label`],ye={class:`c-breadcrumb-panel__header`},be={class:`c-breadcrumb-panel__heading`},xe={class:`c-breadcrumb-panel__body`},Se=[`disabled`,`title`,`onClick`],Ce={class:`c-breadcrumb__label`};var we=n(u({name:`C_Breadcrumb`,__name:`index`,props:{items:{},menus:{},showIcon:{type:Boolean,default:!0},iconSize:{default:16},labelFormatter:{}},emits:[`select`],setup(n,{emit:u}){let y=n,k=u,A=d(O,void 0),j=i(()=>A?.path??``),M=D(),{t:N}=e(),P=v(null),F=v(null),I=v(`bottom-start`),L=v(320),R=v(1/0),z=null,B,V=!1,H=i(()=>!A&&y.items===void 0?[]:ne({items:y.items,menus:y.menus,matched:A?.matched??[],path:j.value,formatLabel:y.labelFormatter})),U=i(()=>({"--c-breadcrumb-icon-size":`${y.iconSize}px`,"--c-breadcrumb-gap":`${Math.max(Math.round(y.iconSize/4),2)}px`,"--c-crumb-text":M.value.textColor2,"--c-crumb-muted":M.value.textColor3,"--c-crumb-current":M.value.textColor1,"--c-crumb-primary":M.value.primaryColor,"--c-crumb-border":M.value.borderColor,"--c-crumb-hover":M.value.hoverColor})),W=i(()=>({boxSizing:`border-box`,width:`${L.value}px`,padding:`0`,borderRadius:`12px`,overflow:`hidden`,border:`1px solid ${M.value.borderColor}`,background:M.value.popoverColor,boxShadow:M.value.boxShadow2,maxWidth:`calc(100vw - 24px)`})),G=i(()=>{let e=H.value.map((e,t)=>({key:`${t}:${e.key}`,index:t,item:e}));if(e.length<2)return e;let t=e[e.length-1];return R.value<260?[{key:`overflow`,index:-1,overflow:H.value.slice(0,-1)},t]:R.value<360&&e.length>2?[e[0],{key:`overflow`,index:-1,overflow:H.value.slice(1,-1)},t]:e}),K=(e,t)=>e.key===j.value||y.items!==void 0&&t===H.value.length-1&&!e.children?.length,q=i(()=>{let e=new Set,t=n=>{for(let r of n)e.add(r.key),r.children&&t(r.children)};for(let e of H.value)t(e.children??[]);return H.value.filter(t=>!e.has(t.key))}),J=e=>e.overflow?q.value:e.item?.children??[],Y=e=>{if(!(e.currentTarget instanceof HTMLButtonElement))return;z=e.currentTarget;let t=document.documentElement.clientWidth;if(t<=0)return;let n=z.getBoundingClientRect(),r=Math.min(320,Math.max(t-24,1)),i=t-n.left-12,a=n.right-12,o=i>=r||a<r&&i>=a;I.value=o?`bottom-start`:`bottom-end`,L.value=Math.max(Math.min(r,o?i:a),1)},X=(e,t)=>{F.value=e?t:F.value===t?null:F.value},Z=(e=!1)=>{F.value=null,e&&f(()=>{!V&&z?.isConnected&&z.focus()})},te=e=>{e.currentTarget instanceof HTMLElement&&!e.currentTarget.contains(e.relatedTarget instanceof Node?e.relatedTarget:null)&&Z()},$=e=>{Z(!0),e!==j.value&&k(`select`,e)};return S([()=>A?.fullPath,H],()=>Z()),g(()=>{typeof ResizeObserver<`u`&&P.value&&(B=new ResizeObserver(([e])=>{V||!e||(R.value!==e.contentRect.width&&Z(),R.value=e.contentRect.width)}),B.observe(P.value))}),h(()=>{V=!0,B?.disconnect(),z=null}),(e,i)=>(_(),s(`nav`,{ref_key:`rootRef`,ref:P,class:p([`c-breadcrumb`,{"is-narrow":R.value<120}]),"aria-label":x(N)(`breadcrumb.label`),style:m(U.value)},[c(`ol`,fe,[(_(!0),s(r,null,ee(G.value,e=>(_(),s(`li`,{key:e.key,class:p([`c-breadcrumb__item`,{"is-current":e.item&&K(e.item,e.index),"is-overflow":e.overflow}])},[e.item&&K(e.item,e.index)?(_(),s(`span`,{key:0,class:`c-breadcrumb__current`,"aria-current":`page`,title:e.item.label},[n.showIcon&&e.item.icon?(_(),a(x(t),{key:0,"aria-hidden":`true`,name:e.item.icon,size:n.iconSize},null,8,[`name`,`size`])):o(`v-if`,!0),c(`span`,me,b(e.item.label),1)],8,pe)):e.overflow||e.item?.children?.length?(_(),a(x(E),{key:1,trigger:`click`,placement:I.value,show:F.value===e.key,"show-arrow":!1,style:m(W.value),class:`c-breadcrumb-popover`,disabled:e.item?.disabled,"onUpdate:show":t=>X(t,e.key)},{trigger:C(()=>[c(`button`,{type:`button`,class:p([`c-breadcrumb__trigger`,{"is-open":F.value===e.key}]),disabled:e.item?.disabled,"aria-haspopup":`tree`,"aria-expanded":F.value===e.key,"aria-label":e.overflow?x(N)(`breadcrumb.expandPath`):e.item?.label,title:e.item?.label,onClick:Y},[e.item&&n.showIcon&&e.item.icon?(_(),a(x(t),{key:0,"aria-hidden":`true`,name:e.item.icon,size:n.iconSize},null,8,[`name`,`size`])):o(`v-if`,!0),c(`span`,ge,b(e.overflow?`…`:e.item?.label),1),e.overflow?o(`v-if`,!0):(_(),s(`svg`,_e,[...i[1]||=[c(`path`,{d:`m5 6 3 3 3-3`,stroke:`currentColor`,"stroke-width":`1.4`,"stroke-linecap":`round`,"stroke-linejoin":`round`},null,-1)]]))],10,he)]),default:C(()=>[F.value===e.key?(_(),s(`section`,{key:0,class:`c-breadcrumb-panel`,style:m(U.value),"aria-label":e.overflow?x(N)(`breadcrumb.fullPath`):e.item?.label,onKeydown:i[0]||=w(T(e=>Z(!0),[`stop`,`prevent`]),[`esc`]),onFocusout:te},[c(`header`,ye,[i[2]||=c(`span`,{class:`c-breadcrumb-panel__icon`,"aria-hidden":`true`},[c(`svg`,{viewBox:`0 0 24 24`,fill:`none`},[c(`path`,{d:`M3 7a2 2 0 0 1 2-2h5l2 2h7a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2Z`,stroke:`currentColor`,"stroke-width":`1.6`,"stroke-linejoin":`round`}),c(`path`,{d:`M3 10h18`,stroke:`currentColor`,"stroke-width":`1.6`})])],-1),c(`div`,be,[c(`h2`,null,b(e.overflow?x(N)(`breadcrumb.fullPath`):e.item?.label),1),c(`small`,null,b(x(N)(`breadcrumb.pageCount`,{count:x(Q)(J(e))})),1)])]),c(`div`,xe,[l(ue,{items:J(e),"current-key":j.value,"show-icon":n.showIcon,"icon-size":n.iconSize,onSelect:$},null,8,[`items`,`current-key`,`show-icon`,`icon-size`])])],44,ve)):o(`v-if`,!0)]),_:2},1032,[`placement`,`show`,`style`,`disabled`,`onUpdate:show`])):e.item?(_(),s(`button`,{key:2,type:`button`,class:`c-breadcrumb__link`,disabled:e.item.disabled,title:e.item.label,onClick:t=>$(e.item.key)},[n.showIcon&&e.item.icon?(_(),a(x(t),{key:0,"aria-hidden":`true`,name:e.item.icon,size:n.iconSize},null,8,[`name`,`size`])):o(`v-if`,!0),c(`span`,Ce,b(e.item.label),1)],8,Se)):o(`v-if`,!0),i[3]||=c(`span`,{class:`c-breadcrumb__separator`,"aria-hidden":`true`},`/`,-1)],2))),128))])],14,de))}}),[[`__scopeId`,`data-v-69d2eaf4`]]);export{we as t};
|
package/dist/C_Chat.css
CHANGED
|
@@ -65,14 +65,14 @@
|
|
|
65
65
|
.transform[data-v-075758a0]{transform:translateX(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotateZ(var(--un-rotate-z)) skewX(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z));}
|
|
66
66
|
.px[data-v-075758a0]{padding-left:1rem;padding-right:1rem;}
|
|
67
67
|
|
|
68
|
-
.c-chat__avatar[data-v-
|
|
68
|
+
.c-chat__avatar[data-v-66c19394] {
|
|
69
69
|
width: var(--chat-avatar-size);
|
|
70
70
|
height: var(--chat-avatar-size);
|
|
71
71
|
border-radius: 50%;
|
|
72
72
|
object-fit: cover;
|
|
73
73
|
background: color-mix(in srgb, var(--c-border, var(--border-color, #e5e7eb)) 50%, transparent);
|
|
74
74
|
}
|
|
75
|
-
.c-chat__avatar-fallback[data-v-
|
|
75
|
+
.c-chat__avatar-fallback[data-v-66c19394] {
|
|
76
76
|
width: var(--chat-avatar-size);
|
|
77
77
|
height: var(--chat-avatar-size);
|
|
78
78
|
border-radius: 50%;
|
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
font-weight: 600;
|
|
85
85
|
color: var(--c-text-1, var(--text-color-1, #262626));
|
|
86
86
|
}
|
|
87
|
-
.c-chat__contact[data-v-
|
|
87
|
+
.c-chat__contact[data-v-66c19394] {
|
|
88
88
|
display: flex;
|
|
89
89
|
align-items: center;
|
|
90
90
|
gap: 10px;
|
|
@@ -92,17 +92,17 @@
|
|
|
92
92
|
cursor: pointer;
|
|
93
93
|
transition: background 0.15s;
|
|
94
94
|
}
|
|
95
|
-
.c-chat__contact[data-v-
|
|
95
|
+
.c-chat__contact[data-v-66c19394]:hover {
|
|
96
96
|
background: color-mix(in srgb, var(--c-primary, var(--primary-color, #2080f0)) 6%, transparent);
|
|
97
97
|
}
|
|
98
|
-
.c-chat__contact.is-active[data-v-
|
|
98
|
+
.c-chat__contact.is-active[data-v-66c19394] {
|
|
99
99
|
background: color-mix(in srgb, var(--c-primary, var(--primary-color, #2080f0)) 12%, transparent);
|
|
100
100
|
}
|
|
101
|
-
.c-chat__contact-avatar[data-v-
|
|
101
|
+
.c-chat__contact-avatar[data-v-66c19394] {
|
|
102
102
|
position: relative;
|
|
103
103
|
flex-shrink: 0;
|
|
104
104
|
}
|
|
105
|
-
.c-chat__online-dot[data-v-
|
|
105
|
+
.c-chat__online-dot[data-v-66c19394] {
|
|
106
106
|
position: absolute;
|
|
107
107
|
bottom: 0;
|
|
108
108
|
right: 0;
|
|
@@ -112,24 +112,24 @@
|
|
|
112
112
|
background: var(--chat-online-color);
|
|
113
113
|
border: 2px solid var(--chat-sidebar-bg);
|
|
114
114
|
}
|
|
115
|
-
.c-chat__contact-info[data-v-
|
|
115
|
+
.c-chat__contact-info[data-v-66c19394] {
|
|
116
116
|
flex: 1;
|
|
117
117
|
min-width: 0;
|
|
118
118
|
}
|
|
119
|
-
.c-chat__contact-name[data-v-
|
|
119
|
+
.c-chat__contact-name[data-v-66c19394] {
|
|
120
120
|
display: flex;
|
|
121
121
|
align-items: center;
|
|
122
122
|
justify-content: space-between;
|
|
123
123
|
font-size: 13px;
|
|
124
124
|
font-weight: 500;
|
|
125
125
|
}
|
|
126
|
-
.c-chat__contact-time[data-v-
|
|
126
|
+
.c-chat__contact-time[data-v-66c19394] {
|
|
127
127
|
font-size: 11px;
|
|
128
128
|
color: var(--chat-text-secondary);
|
|
129
129
|
margin-left: 8px;
|
|
130
130
|
flex-shrink: 0;
|
|
131
131
|
}
|
|
132
|
-
.c-chat__contact-last[data-v-
|
|
132
|
+
.c-chat__contact-last[data-v-66c19394] {
|
|
133
133
|
font-size: 12px;
|
|
134
134
|
color: var(--chat-text-secondary);
|
|
135
135
|
white-space: nowrap;
|
|
@@ -137,7 +137,7 @@
|
|
|
137
137
|
text-overflow: ellipsis;
|
|
138
138
|
margin-top: 2px;
|
|
139
139
|
}
|
|
140
|
-
.c-chat__unread[data-v-
|
|
140
|
+
.c-chat__unread[data-v-66c19394] {
|
|
141
141
|
min-width: 18px;
|
|
142
142
|
height: 18px;
|
|
143
143
|
padding: 0 5px;
|
|
@@ -151,7 +151,7 @@
|
|
|
151
151
|
justify-content: center;
|
|
152
152
|
flex-shrink: 0;
|
|
153
153
|
}
|
|
154
|
-
.c-chat__contact[data-v-
|
|
154
|
+
.c-chat__contact[data-v-66c19394] {
|
|
155
155
|
width: 100%;
|
|
156
156
|
border: 0;
|
|
157
157
|
background: transparent;
|
|
@@ -160,33 +160,33 @@
|
|
|
160
160
|
font: inherit;
|
|
161
161
|
}
|
|
162
162
|
@media (max-width: 640px) {
|
|
163
|
-
.c-chat__contact-info[data-v-
|
|
164
|
-
.c-chat__unread[data-v-
|
|
163
|
+
.c-chat__contact-info[data-v-66c19394],
|
|
164
|
+
.c-chat__unread[data-v-66c19394] {
|
|
165
165
|
display: none;
|
|
166
166
|
}
|
|
167
|
-
.c-chat__contact[data-v-
|
|
167
|
+
.c-chat__contact[data-v-66c19394] {
|
|
168
168
|
justify-content: center;
|
|
169
169
|
padding: 10px 8px;
|
|
170
170
|
}
|
|
171
171
|
}
|
|
172
172
|
|
|
173
173
|
/* layer: default */
|
|
174
|
-
.absolute[data-v-
|
|
175
|
-
.relative[data-v-
|
|
176
|
-
.hidden[data-v-
|
|
177
|
-
.flex[data-v-
|
|
178
|
-
.flex-shrink[data-v-
|
|
179
|
-
.border[data-v-
|
|
180
|
-
.transition[data-v-
|
|
174
|
+
.absolute[data-v-66c19394]{position:absolute;}
|
|
175
|
+
.relative[data-v-66c19394]{position:relative;}
|
|
176
|
+
.hidden[data-v-66c19394]{display:none;}
|
|
177
|
+
.flex[data-v-66c19394]{display:flex;}
|
|
178
|
+
.flex-shrink[data-v-66c19394]{flex-shrink:1;}
|
|
179
|
+
.border[data-v-66c19394]{border-width:1px;}
|
|
180
|
+
.transition[data-v-66c19394]{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;}
|
|
181
181
|
|
|
182
|
-
.c-chat__avatar[data-v-
|
|
182
|
+
.c-chat__avatar[data-v-47cd7e6f] {
|
|
183
183
|
width: var(--chat-avatar-size);
|
|
184
184
|
height: var(--chat-avatar-size);
|
|
185
185
|
border-radius: 50%;
|
|
186
186
|
object-fit: cover;
|
|
187
187
|
background: color-mix(in srgb, var(--c-border, var(--border-color, #e5e7eb)) 50%, transparent);
|
|
188
188
|
}
|
|
189
|
-
.c-chat__avatar-fallback[data-v-
|
|
189
|
+
.c-chat__avatar-fallback[data-v-47cd7e6f] {
|
|
190
190
|
width: var(--chat-avatar-size);
|
|
191
191
|
height: var(--chat-avatar-size);
|
|
192
192
|
border-radius: 50%;
|
|
@@ -200,60 +200,60 @@
|
|
|
200
200
|
}
|
|
201
201
|
|
|
202
202
|
/* ─── 消息气泡 ────────────────────────────────────────── */
|
|
203
|
-
.c-chat__msg[data-v-
|
|
203
|
+
.c-chat__msg[data-v-47cd7e6f] {
|
|
204
204
|
display: flex;
|
|
205
205
|
gap: 8px;
|
|
206
206
|
max-width: 75%;
|
|
207
207
|
}
|
|
208
|
-
.c-chat__msg.is-self[data-v-
|
|
208
|
+
.c-chat__msg.is-self[data-v-47cd7e6f] {
|
|
209
209
|
margin-left: auto;
|
|
210
210
|
flex-direction: row-reverse;
|
|
211
211
|
}
|
|
212
|
-
.c-chat__msg.is-system[data-v-
|
|
212
|
+
.c-chat__msg.is-system[data-v-47cd7e6f] {
|
|
213
213
|
max-width: 100%;
|
|
214
214
|
justify-content: center;
|
|
215
215
|
align-self: center;
|
|
216
216
|
}
|
|
217
|
-
.c-chat__msg-avatar[data-v-
|
|
217
|
+
.c-chat__msg-avatar[data-v-47cd7e6f] {
|
|
218
218
|
flex-shrink: 0;
|
|
219
219
|
margin-top: 2px;
|
|
220
220
|
}
|
|
221
|
-
.c-chat__msg-body[data-v-
|
|
221
|
+
.c-chat__msg-body[data-v-47cd7e6f] {
|
|
222
222
|
display: flex;
|
|
223
223
|
flex-direction: column;
|
|
224
224
|
}
|
|
225
|
-
.c-chat__msg-username[data-v-
|
|
225
|
+
.c-chat__msg-username[data-v-47cd7e6f] {
|
|
226
226
|
font-size: 12px;
|
|
227
227
|
color: var(--chat-text-secondary);
|
|
228
228
|
margin-bottom: 2px;
|
|
229
229
|
}
|
|
230
|
-
.is-self .c-chat__msg-username[data-v-
|
|
230
|
+
.is-self .c-chat__msg-username[data-v-47cd7e6f] {
|
|
231
231
|
text-align: right;
|
|
232
232
|
}
|
|
233
|
-
.c-chat__bubble[data-v-
|
|
233
|
+
.c-chat__bubble[data-v-47cd7e6f] {
|
|
234
234
|
padding: 10px 14px;
|
|
235
235
|
border-radius: 16px;
|
|
236
236
|
line-height: 1.5;
|
|
237
237
|
word-break: break-word;
|
|
238
238
|
white-space: pre-wrap;
|
|
239
239
|
}
|
|
240
|
-
.is-other .c-chat__bubble[data-v-
|
|
240
|
+
.is-other .c-chat__bubble[data-v-47cd7e6f] {
|
|
241
241
|
background: var(--chat-bubble-other);
|
|
242
242
|
border: 1px solid var(--chat-border);
|
|
243
243
|
border-top-left-radius: 4px;
|
|
244
244
|
}
|
|
245
|
-
.is-self .c-chat__bubble[data-v-
|
|
245
|
+
.is-self .c-chat__bubble[data-v-47cd7e6f] {
|
|
246
246
|
background: var(--chat-bubble-self);
|
|
247
247
|
color: var(--chat-text-self);
|
|
248
248
|
border-top-right-radius: 4px;
|
|
249
249
|
}
|
|
250
|
-
.is-system .c-chat__bubble[data-v-
|
|
250
|
+
.is-system .c-chat__bubble[data-v-47cd7e6f] {
|
|
251
251
|
background: var(--chat-bubble-system);
|
|
252
252
|
color: var(--chat-text-secondary);
|
|
253
253
|
font-size: 12px;
|
|
254
254
|
padding: 4px 12px;
|
|
255
255
|
}
|
|
256
|
-
.c-chat__msg-image-button[data-v-
|
|
256
|
+
.c-chat__msg-image-button[data-v-47cd7e6f] {
|
|
257
257
|
display: inline-flex;
|
|
258
258
|
align-self: flex-start;
|
|
259
259
|
padding: 0;
|
|
@@ -261,20 +261,20 @@
|
|
|
261
261
|
background: none;
|
|
262
262
|
cursor: pointer;
|
|
263
263
|
}
|
|
264
|
-
.c-chat__msg-image[data-v-
|
|
264
|
+
.c-chat__msg-image[data-v-47cd7e6f] {
|
|
265
265
|
max-width: 240px;
|
|
266
266
|
max-height: 180px;
|
|
267
267
|
border-radius: 12px;
|
|
268
268
|
cursor: pointer;
|
|
269
269
|
object-fit: cover;
|
|
270
270
|
}
|
|
271
|
-
.is-self .c-chat__msg-image[data-v-
|
|
271
|
+
.is-self .c-chat__msg-image[data-v-47cd7e6f] {
|
|
272
272
|
border-top-right-radius: 4px;
|
|
273
273
|
}
|
|
274
|
-
.is-other .c-chat__msg-image[data-v-
|
|
274
|
+
.is-other .c-chat__msg-image[data-v-47cd7e6f] {
|
|
275
275
|
border-top-left-radius: 4px;
|
|
276
276
|
}
|
|
277
|
-
.c-chat__msg-file[data-v-
|
|
277
|
+
.c-chat__msg-file[data-v-47cd7e6f] {
|
|
278
278
|
display: flex;
|
|
279
279
|
align-items: center;
|
|
280
280
|
gap: 8px;
|
|
@@ -285,90 +285,90 @@
|
|
|
285
285
|
text-align: left;
|
|
286
286
|
border: 0;
|
|
287
287
|
}
|
|
288
|
-
.is-other .c-chat__msg-file[data-v-
|
|
288
|
+
.is-other .c-chat__msg-file[data-v-47cd7e6f] {
|
|
289
289
|
background: var(--chat-bubble-other);
|
|
290
290
|
border: 1px solid var(--chat-border);
|
|
291
291
|
border-top-left-radius: 4px;
|
|
292
292
|
}
|
|
293
|
-
.is-self .c-chat__msg-file[data-v-
|
|
293
|
+
.is-self .c-chat__msg-file[data-v-47cd7e6f] {
|
|
294
294
|
background: var(--chat-bubble-self);
|
|
295
295
|
color: var(--chat-text-self);
|
|
296
296
|
border-top-right-radius: 4px;
|
|
297
297
|
}
|
|
298
|
-
.c-chat__file-info[data-v-
|
|
298
|
+
.c-chat__file-info[data-v-47cd7e6f] {
|
|
299
299
|
display: flex;
|
|
300
300
|
flex-direction: column;
|
|
301
301
|
min-width: 0;
|
|
302
302
|
}
|
|
303
|
-
.c-chat__file-name[data-v-
|
|
303
|
+
.c-chat__file-name[data-v-47cd7e6f] {
|
|
304
304
|
font-size: 13px;
|
|
305
305
|
font-weight: 500;
|
|
306
306
|
white-space: nowrap;
|
|
307
307
|
overflow: hidden;
|
|
308
308
|
text-overflow: ellipsis;
|
|
309
309
|
}
|
|
310
|
-
.c-chat__file-size[data-v-
|
|
310
|
+
.c-chat__file-size[data-v-47cd7e6f] {
|
|
311
311
|
font-size: 11px;
|
|
312
312
|
opacity: 0.6;
|
|
313
313
|
}
|
|
314
|
-
.c-chat__msg-time[data-v-
|
|
314
|
+
.c-chat__msg-time[data-v-47cd7e6f] {
|
|
315
315
|
font-size: 11px;
|
|
316
316
|
color: var(--chat-text-secondary);
|
|
317
317
|
margin-top: 4px;
|
|
318
318
|
}
|
|
319
|
-
.is-self .c-chat__msg-time[data-v-
|
|
319
|
+
.is-self .c-chat__msg-time[data-v-47cd7e6f] {
|
|
320
320
|
text-align: right;
|
|
321
321
|
}
|
|
322
|
-
.c-chat__msg-status[data-v-
|
|
322
|
+
.c-chat__msg-status[data-v-47cd7e6f] {
|
|
323
323
|
font-size: 11px;
|
|
324
324
|
margin-top: 2px;
|
|
325
325
|
text-align: right;
|
|
326
326
|
}
|
|
327
|
-
.c-chat__msg-status[data-v-
|
|
327
|
+
.c-chat__msg-status[data-v-47cd7e6f]:is(button) {
|
|
328
328
|
align-self: flex-end;
|
|
329
329
|
padding: 0;
|
|
330
330
|
border: 0;
|
|
331
331
|
background: none;
|
|
332
332
|
font-family: inherit;
|
|
333
333
|
}
|
|
334
|
-
.c-chat__msg-status.is-sending[data-v-
|
|
334
|
+
.c-chat__msg-status.is-sending[data-v-47cd7e6f] {
|
|
335
335
|
color: var(--chat-text-secondary);
|
|
336
336
|
}
|
|
337
|
-
.c-chat__msg-status.is-failed[data-v-
|
|
337
|
+
.c-chat__msg-status.is-failed[data-v-47cd7e6f] {
|
|
338
338
|
color: var(--chat-failed-color);
|
|
339
339
|
cursor: pointer;
|
|
340
340
|
}
|
|
341
341
|
|
|
342
342
|
/* ─── 时间分割线 ──────────────────────────────────────── */
|
|
343
|
-
.c-chat__time-divider[data-v-
|
|
343
|
+
.c-chat__time-divider[data-v-47cd7e6f] {
|
|
344
344
|
text-align: center;
|
|
345
345
|
font-size: 11px;
|
|
346
346
|
color: var(--chat-text-secondary);
|
|
347
347
|
padding: 4px 0;
|
|
348
348
|
}
|
|
349
|
-
.c-chat__message-row[data-v-
|
|
349
|
+
.c-chat__message-row[data-v-47cd7e6f] {
|
|
350
350
|
flex-shrink: 0;
|
|
351
351
|
padding-bottom: 12px;
|
|
352
352
|
}
|
|
353
|
-
.c-chat__time-divider[data-v-
|
|
353
|
+
.c-chat__time-divider[data-v-47cd7e6f] {
|
|
354
354
|
margin-bottom: 12px;
|
|
355
355
|
}
|
|
356
|
-
.c-chat__msg-body[data-v-
|
|
356
|
+
.c-chat__msg-body[data-v-47cd7e6f] {
|
|
357
357
|
min-width: 0;
|
|
358
358
|
}
|
|
359
|
-
.c-chat__msg-image[data-v-
|
|
359
|
+
.c-chat__msg-image[data-v-47cd7e6f] {
|
|
360
360
|
max-width: min(240px, 100%);
|
|
361
361
|
}
|
|
362
362
|
|
|
363
363
|
/* layer: default */
|
|
364
|
-
.hidden[data-v-
|
|
365
|
-
.flex[data-v-
|
|
366
|
-
.inline-flex[data-v-
|
|
367
|
-
.flex-shrink[data-v-
|
|
368
|
-
.border[data-v-
|
|
364
|
+
.hidden[data-v-47cd7e6f]{display:none;}
|
|
365
|
+
.flex[data-v-47cd7e6f]{display:flex;}
|
|
366
|
+
.inline-flex[data-v-47cd7e6f]{display:inline-flex;}
|
|
367
|
+
.flex-shrink[data-v-47cd7e6f]{flex-shrink:1;}
|
|
368
|
+
.border[data-v-47cd7e6f]{border-width:1px;}
|
|
369
369
|
|
|
370
370
|
/* ─── CSS 变量(基于项目主题变量,自动适配明暗) ───────────────────────── */
|
|
371
|
-
.c-chat[data-v-
|
|
371
|
+
.c-chat[data-v-96dfa0d2] {
|
|
372
372
|
--chat-bg: var(--c-bg-card, var(--card-color, #fff));
|
|
373
373
|
--chat-sidebar-bg: var(--c-bg-body, var(--body-color, #f8fafc));
|
|
374
374
|
--chat-sidebar-width: 280px;
|
|
@@ -410,7 +410,7 @@
|
|
|
410
410
|
}
|
|
411
411
|
|
|
412
412
|
/* ─── 联系人侧栏 ──────────────────────────────────────── */
|
|
413
|
-
.c-chat__sidebar[data-v-
|
|
413
|
+
.c-chat__sidebar[data-v-96dfa0d2] {
|
|
414
414
|
display: flex;
|
|
415
415
|
flex-direction: column;
|
|
416
416
|
width: var(--chat-sidebar-width);
|
|
@@ -419,7 +419,7 @@
|
|
|
419
419
|
border-right: 1px solid var(--chat-border);
|
|
420
420
|
box-shadow: 2px 0 8px var(--chat-shadow-light);
|
|
421
421
|
}
|
|
422
|
-
.c-chat__sidebar-header[data-v-
|
|
422
|
+
.c-chat__sidebar-header[data-v-96dfa0d2] {
|
|
423
423
|
display: flex;
|
|
424
424
|
align-items: center;
|
|
425
425
|
gap: 8px;
|
|
@@ -429,30 +429,30 @@
|
|
|
429
429
|
font-weight: 600;
|
|
430
430
|
font-size: 15px;
|
|
431
431
|
}
|
|
432
|
-
.c-chat__search[data-v-
|
|
432
|
+
.c-chat__search[data-v-96dfa0d2] {
|
|
433
433
|
padding: 8px 12px;
|
|
434
434
|
}
|
|
435
|
-
.c-chat__contact-list[data-v-
|
|
435
|
+
.c-chat__contact-list[data-v-96dfa0d2],[data-v-96dfa0d2] .c-chat__contact-list.v-vl {
|
|
436
436
|
flex: 1;
|
|
437
437
|
overflow-y: auto;
|
|
438
438
|
overscroll-behavior: contain;
|
|
439
439
|
}
|
|
440
|
-
.c-chat__contact-list[data-v-
|
|
440
|
+
.c-chat__contact-list[data-v-96dfa0d2]::-webkit-scrollbar,[data-v-96dfa0d2] .c-chat__contact-list.v-vl::-webkit-scrollbar {
|
|
441
441
|
width: 4px;
|
|
442
442
|
}
|
|
443
|
-
.c-chat__contact-list[data-v-
|
|
443
|
+
.c-chat__contact-list[data-v-96dfa0d2]::-webkit-scrollbar-thumb,[data-v-96dfa0d2] .c-chat__contact-list.v-vl::-webkit-scrollbar-thumb {
|
|
444
444
|
background: var(--chat-scrollbar-thumb);
|
|
445
445
|
border-radius: 2px;
|
|
446
446
|
}
|
|
447
447
|
|
|
448
448
|
/* ─── 主聊天区域 ──────────────────────────────────────── */
|
|
449
|
-
.c-chat__main[data-v-
|
|
449
|
+
.c-chat__main[data-v-96dfa0d2] {
|
|
450
450
|
flex: 1;
|
|
451
451
|
display: flex;
|
|
452
452
|
flex-direction: column;
|
|
453
453
|
min-width: 0;
|
|
454
454
|
}
|
|
455
|
-
.c-chat__header[data-v-
|
|
455
|
+
.c-chat__header[data-v-96dfa0d2] {
|
|
456
456
|
display: flex;
|
|
457
457
|
align-items: center;
|
|
458
458
|
gap: 10px;
|
|
@@ -464,14 +464,14 @@
|
|
|
464
464
|
font-weight: 600;
|
|
465
465
|
font-size: 15px;
|
|
466
466
|
}
|
|
467
|
-
.c-chat__header-status[data-v-
|
|
467
|
+
.c-chat__header-status[data-v-96dfa0d2] {
|
|
468
468
|
font-size: 12px;
|
|
469
469
|
font-weight: 400;
|
|
470
470
|
color: var(--chat-text-secondary);
|
|
471
471
|
}
|
|
472
472
|
|
|
473
473
|
/* ─── 消息区域 ────────────────────────────────────────── */
|
|
474
|
-
.c-chat__messages[data-v-
|
|
474
|
+
.c-chat__messages[data-v-96dfa0d2],[data-v-96dfa0d2] .c-chat__messages--virtual {
|
|
475
475
|
flex: 1;
|
|
476
476
|
overflow-y: auto;
|
|
477
477
|
overscroll-behavior: contain;
|
|
@@ -480,18 +480,18 @@
|
|
|
480
480
|
flex-direction: column;
|
|
481
481
|
background: color-mix(in srgb, var(--c-bg-body, var(--body-color, #f8fafc)) 50%, var(--c-bg-card, var(--card-color, #fff)));
|
|
482
482
|
}
|
|
483
|
-
.c-chat__messages[data-v-
|
|
483
|
+
.c-chat__messages[data-v-96dfa0d2]::-webkit-scrollbar,[data-v-96dfa0d2] .c-chat__messages--virtual::-webkit-scrollbar {
|
|
484
484
|
width: 4px;
|
|
485
485
|
}
|
|
486
|
-
.c-chat__messages[data-v-
|
|
486
|
+
.c-chat__messages[data-v-96dfa0d2]::-webkit-scrollbar-thumb,[data-v-96dfa0d2] .c-chat__messages--virtual::-webkit-scrollbar-thumb {
|
|
487
487
|
background: var(--chat-scrollbar-thumb);
|
|
488
488
|
border-radius: 2px;
|
|
489
489
|
}
|
|
490
|
-
.c-chat__load-more[data-v-
|
|
490
|
+
.c-chat__load-more[data-v-96dfa0d2] {
|
|
491
491
|
text-align: center;
|
|
492
492
|
padding: 8px;
|
|
493
493
|
}
|
|
494
|
-
.c-chat__empty[data-v-
|
|
494
|
+
.c-chat__empty[data-v-96dfa0d2] {
|
|
495
495
|
flex: 1;
|
|
496
496
|
display: flex;
|
|
497
497
|
align-items: center;
|
|
@@ -501,7 +501,7 @@
|
|
|
501
501
|
}
|
|
502
502
|
|
|
503
503
|
/* ─── 输入区域 ────────────────────────────────────────── */
|
|
504
|
-
.c-chat__input-area[data-v-
|
|
504
|
+
.c-chat__input-area[data-v-96dfa0d2] {
|
|
505
505
|
display: flex;
|
|
506
506
|
align-items: center;
|
|
507
507
|
gap: 8px;
|
|
@@ -510,21 +510,21 @@
|
|
|
510
510
|
background: var(--chat-input-bg);
|
|
511
511
|
border-top: 1px solid var(--chat-border);
|
|
512
512
|
}
|
|
513
|
-
.c-chat__input-actions[data-v-
|
|
513
|
+
.c-chat__input-actions[data-v-96dfa0d2] {
|
|
514
514
|
display: flex;
|
|
515
515
|
gap: 4px;
|
|
516
516
|
flex-shrink: 0;
|
|
517
517
|
}
|
|
518
|
-
.c-chat__input-wrap[data-v-
|
|
518
|
+
.c-chat__input-wrap[data-v-96dfa0d2] {
|
|
519
519
|
flex: 1;
|
|
520
520
|
min-width: 0;
|
|
521
521
|
}
|
|
522
|
-
.c-chat__send-btn[data-v-
|
|
522
|
+
.c-chat__send-btn[data-v-96dfa0d2] {
|
|
523
523
|
flex-shrink: 0;
|
|
524
524
|
}
|
|
525
525
|
|
|
526
526
|
/* ─── 空态 ────────────────────────────────────────────── */
|
|
527
|
-
.c-chat__no-chat[data-v-
|
|
527
|
+
.c-chat__no-chat[data-v-96dfa0d2] {
|
|
528
528
|
flex: 1;
|
|
529
529
|
display: flex;
|
|
530
530
|
flex-direction: column;
|
|
@@ -533,36 +533,36 @@
|
|
|
533
533
|
gap: 12px;
|
|
534
534
|
color: var(--chat-text-secondary);
|
|
535
535
|
}
|
|
536
|
-
.c-chat__no-chat-icon[data-v-
|
|
536
|
+
.c-chat__no-chat-icon[data-v-96dfa0d2] {
|
|
537
537
|
font-size: 48px;
|
|
538
538
|
opacity: 0.3;
|
|
539
539
|
}
|
|
540
540
|
|
|
541
541
|
/* ─── 响应式 ──────────────────────────────────────────── */
|
|
542
542
|
@media (max-width: 640px) {
|
|
543
|
-
.c-chat[data-v-
|
|
543
|
+
.c-chat[data-v-96dfa0d2] {
|
|
544
544
|
--chat-sidebar-width: 72px;
|
|
545
545
|
}
|
|
546
|
-
.c-chat__search[data-v-
|
|
546
|
+
.c-chat__search[data-v-96dfa0d2] {
|
|
547
547
|
display: none;
|
|
548
548
|
}
|
|
549
549
|
}
|
|
550
|
-
.c-chat__main[data-v-
|
|
550
|
+
.c-chat__main[data-v-96dfa0d2] {
|
|
551
551
|
min-height: 0;
|
|
552
552
|
}
|
|
553
|
-
.c-chat__messages[data-v-
|
|
553
|
+
.c-chat__messages[data-v-96dfa0d2],[data-v-96dfa0d2] .c-chat__messages--virtual {
|
|
554
554
|
min-height: 0;
|
|
555
555
|
}
|
|
556
|
-
.c-chat__messages--virtual[data-v-
|
|
556
|
+
.c-chat__messages--virtual[data-v-96dfa0d2],[data-v-96dfa0d2] .c-chat__messages--virtual {
|
|
557
557
|
display: block;
|
|
558
558
|
padding: 0;
|
|
559
559
|
overflow-anchor: none;
|
|
560
560
|
}
|
|
561
|
-
.c-chat__message-items[data-v-
|
|
561
|
+
.c-chat__message-items[data-v-96dfa0d2] {
|
|
562
562
|
flex: 1;
|
|
563
563
|
display: flex;
|
|
564
564
|
flex-direction: column;
|
|
565
565
|
}
|
|
566
|
-
.c-chat__contact-list[data-v-
|
|
566
|
+
.c-chat__contact-list[data-v-96dfa0d2],[data-v-96dfa0d2] .c-chat__contact-list.v-vl {
|
|
567
567
|
min-height: 0;
|
|
568
568
|
}
|
package/dist/C_Chat2.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`./chunk.cjs`);const e=require(`./C_Icon2.cjs`),t=require(`./export-helper.cjs`);let n=require(`vue`),r=require(`naive-ui`),i=require(`vueuc`);const a=[`data-message-id`],o={key:0,class:`c-chat__time-divider`},s={key:0,class:`c-chat__msg-avatar`},c=[`src`],l={key:1,class:`c-chat__avatar-fallback`},u={class:`c-chat__msg-body`},d={key:0,class:`c-chat__msg-username`},f={key:1,class:`c-chat__bubble`},p=[`aria-label`],m=[`src`,`alt`],h={class:`c-chat__file-info`},g={class:`c-chat__file-name`},_={key:0,class:`c-chat__file-size`},v={key:4,class:`c-chat__msg-time`},y={key:6,class:`c-chat__msg-status is-sending`},b=(0,n.defineComponent)({__name:`ChatMessageItem`,props:{msg:{},previous:{},selfAvatar:{},selfName:{},showTimestamp:{type:Boolean}},emits:[`image-preview`,`file-click`,`resend`],setup(t,{emit:r}){let i=t,b=r,x=(0,n.computed)(()=>!i.previous||new Date(i.msg.timestamp).getTime()-new Date(i.previous.timestamp).getTime()>3e5),S=e=>e.sender===`self`&&i.selfAvatar||e.avatar,C=e=>e.sender===`self`?i.selfName||e.username||`Me`:e.username||`未知`;function w(e){let t=new Date(e);return`${String(t.getHours()).padStart(2,`0`)}:${String(t.getMinutes()).padStart(2,`0`)}`}function T(e){let t=new Date(e),n=new Date;return t.toDateString()===n.toDateString()?w(e):`${t.getMonth()+1}/${t.getDate()} ${w(e)}`}function E(e){return e<1024?`${e}B`:e<1048576?`${(e/1024).toFixed(1)}KB`:`${(e/1048576).toFixed(1)}MB`}return(r,i)=>((0,n.openBlock)(),(0,n.createElementBlock)(`div`,{class:`c-chat__message-row`,"data-message-id":t.msg.id},[(0,n.createCommentVNode)(` 时间分割 `),x.value?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,o,(0,n.toDisplayString)(T(t.msg.timestamp)),1)):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createCommentVNode)(` 消息条目 `),(0,n.createElementVNode)(`div`,{class:(0,n.normalizeClass)([`c-chat__msg`,`is-${t.msg.sender}`])},[(0,n.createCommentVNode)(` 头像 `),t.msg.sender===`system`?(0,n.createCommentVNode)(`v-if`,!0):((0,n.openBlock)(),(0,n.createElementBlock)(`div`,s,[S(t.msg)?((0,n.openBlock)(),(0,n.createElementBlock)(`img`,{key:0,src:S(t.msg),class:`c-chat__avatar`},null,8,c)):((0,n.openBlock)(),(0,n.createElementBlock)(`div`,l,(0,n.toDisplayString)(C(t.msg).charAt(0)),1))])),(0,n.createCommentVNode)(` 消息体 `),(0,n.createElementVNode)(`div`,u,[t.msg.sender===`other`&&t.msg.username?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,d,(0,n.toDisplayString)(t.msg.username),1)):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createCommentVNode)(` 文本消息 `),t.msg.type===`text`||t.msg.type===`system`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,f,(0,n.toDisplayString)(t.msg.content),1)):t.msg.type===`image`?((0,n.openBlock)(),(0,n.createElementBlock)(n.Fragment,{key:2},[(0,n.createCommentVNode)(` 图片消息 `),(0,n.createElementVNode)(`button`,{type:`button`,class:`c-chat__msg-image-button`,"aria-label":`预览${t.msg.username||`聊天`}的图片`,onClick:i[0]||=e=>b(`image-preview`,t.msg.content)},[(0,n.createElementVNode)(`img`,{src:t.msg.content,alt:t.msg.fileName||`聊天图片`,class:`c-chat__msg-image`},null,8,m)],8,p)],2112)):t.msg.type===`file`?((0,n.openBlock)(),(0,n.createElementBlock)(n.Fragment,{key:3},[(0,n.createCommentVNode)(` 文件消息 `),(0,n.createElementVNode)(`button`,{type:`button`,class:`c-chat__msg-file`,onClick:i[1]||=e=>b(`file-click`,t.msg)},[(0,n.createVNode)(e.t,{name:`mdi:file-document-outline`,size:28}),(0,n.createElementVNode)(`div`,h,[(0,n.createElementVNode)(`span`,g,(0,n.toDisplayString)(t.msg.fileName||`文件`),1),t.msg.fileSize?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,_,(0,n.toDisplayString)(E(t.msg.fileSize)),1)):(0,n.createCommentVNode)(`v-if`,!0)])])],2112)):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createCommentVNode)(` 时间戳 `),t.showTimestamp&&t.msg.sender!==`system`?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,v,(0,n.toDisplayString)(w(t.msg.timestamp)),1)):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createCommentVNode)(` 发送状态 `),t.msg.sender===`self`&&t.msg.status===`failed`?((0,n.openBlock)(),(0,n.createElementBlock)(`button`,{key:5,type:`button`,class:`c-chat__msg-status is-failed`,onClick:i[2]||=e=>b(`resend`,t.msg)},` 发送失败,点击重试 `)):t.msg.sender===`self`&&t.msg.status===`sending`?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,y,`发送中...`)):(0,n.createCommentVNode)(`v-if`,!0)])],2)],8,a))}});var x=t.t(b,[[`__scopeId`,`data-v-f86c73f0`]]);const S=[`data-contact-id`],C={class:`c-chat__contact-avatar`},w=[`src`,`alt`],T={key:1,class:`c-chat__avatar-fallback`},E={key:2,class:`c-chat__online-dot`},D={class:`c-chat__contact-info`},O={class:`c-chat__contact-name`},k={key:0,class:`c-chat__contact-time`},A={key:0,class:`c-chat__contact-last`},j={key:0,class:`c-chat__unread`},M=(0,n.defineComponent)({__name:`ChatContactItem`,props:{contact:{},active:{type:Boolean}},emits:[`select`],setup(e,{emit:t}){let r=t;function i(e){let t=new Date(e),n=Date.now()-t.getTime();if(n<6e4)return`刚刚`;if(n<36e5)return`${Math.floor(n/6e4)}分钟前`;let r=`${String(t.getHours()).padStart(2,`0`)}:${String(t.getMinutes()).padStart(2,`0`)}`;return n<864e5?r:`${t.getMonth()+1}/${t.getDate()} ${r}`}return(t,a)=>((0,n.openBlock)(),(0,n.createElementBlock)(`button`,{type:`button`,class:(0,n.normalizeClass)([`c-chat__contact`,{"is-active":e.active}]),"data-contact-id":e.contact.id,onClick:a[0]||=t=>r(`select`,e.contact.id)},[(0,n.createElementVNode)(`div`,C,[e.contact.avatar?((0,n.openBlock)(),(0,n.createElementBlock)(`img`,{key:0,src:e.contact.avatar,alt:e.contact.name,class:`c-chat__avatar`},null,8,w)):((0,n.openBlock)(),(0,n.createElementBlock)(`div`,T,(0,n.toDisplayString)(e.contact.name.charAt(0)),1)),e.contact.online?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,E)):(0,n.createCommentVNode)(`v-if`,!0)]),(0,n.createElementVNode)(`div`,D,[(0,n.createElementVNode)(`div`,O,[(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(e.contact.name),1),e.contact.lastTime?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,k,(0,n.toDisplayString)(i(e.contact.lastTime)),1)):(0,n.createCommentVNode)(`v-if`,!0)]),e.contact.lastMessage?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,A,(0,n.toDisplayString)(e.contact.lastMessage),1)):(0,n.createCommentVNode)(`v-if`,!0)]),e.contact.unread?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,j,(0,n.toDisplayString)(e.contact.unread>99?`99+`:e.contact.unread),1)):(0,n.createCommentVNode)(`v-if`,!0)],10,S))}});var N=t.t(M,[[`__scopeId`,`data-v-de62a9e6`]]);function P(e){let t=!1,r=0,i,a,o,s=!0,c=!1,l=!1,u=0,d=0,f,p=()=>e.virtualRef.value?.listElRef??e.normalRef.value,m=e=>e.scrollHeight-e.scrollTop-e.clientHeight<=64,h=e=>Array.from(e.querySelectorAll(`[data-message-id]`));function g(){i!==void 0&&cancelAnimationFrame(i),i=void 0}function _(e,n){if(g(),typeof requestAnimationFrame>`u`){n();return}i=requestAnimationFrame(()=>{i=void 0,!t&&e===r&&n()})}function v(e){let i=++r;g(),(0,n.nextTick)(()=>{!t&&i===r&&e(i)})}function y(t){let n=e.virtualRef.value;n?n.scrollTo({top:t,debounce:!1}):e.normalRef.value&&(e.normalRef.value.scrollTop=t)}function b(){let t=e.virtualRef.value;t?t.scrollTo({position:`bottom`}):e.normalRef.value&&(e.normalRef.value.scrollTop=e.normalRef.value.scrollHeight)}function x(){s=!0,l=!1,c=!0,f=void 0,v(e=>{b(),_(e,()=>{b(),c=!1})})}function S(e){let{top:t}=e.getBoundingClientRect(),n=h(e).find(e=>e.getBoundingClientRect().bottom>t);return n?.dataset.messageId?{id:n.dataset.messageId,offset:n.getBoundingClientRect().top-t}:void 0}function C(e,t){let n=p();if(!n||!f)return;let r=h(n).find(e=>e.dataset.messageId===f?.id);if(r){let e=r.getBoundingClientRect().top-n.getBoundingClientRect().top;y(Math.max(0,n.scrollTop+e-f.offset))}t>0?_(e,()=>C(e,t-1)):f=void 0}function w(t){f=t,s=!1,c=!1,v(n=>{e.virtualRef.value?.scrollTo({key:t.id,debounce:!1}),C(n,3)})}function T(e,t){s=!1,c=!1,f=void 0,v(()=>{let n=p();n&&y(Math.max(0,e+n.scrollHeight-t))})}function E(){s=!1,c=!1,r++,g()}function D(){l=!0,f=void 0,E(),a!==void 0&&cancelAnimationFrame(a),a=requestAnimationFrame(()=>{if(a=void 0,t||!l)return;l=!1;let e=p();e&&!f&&(s=m(e))})}function O(e){return u>0&&(u!==e.scrollHeight||d!==e.clientHeight)}function k(e){let t=O(e);if(u=e.scrollHeight,d=e.clientHeight,!(c||f)){if(s&&t&&!l){x();return}l=!1,s=m(e)}}function A(){let t=p();t&&(k(t),t.scrollTop===0&&!e.loadingHistory.value&&e.onLoadMore())}function j(){if(!t)if(f){let e=r;_(e,()=>C(e,1))}else s&&x()}(0,n.watch)(()=>e.virtualRef.value?.itemsElRef??e.normalRef.value?.firstElementChild,e=>{if(o?.disconnect(),o=void 0,e&&typeof ResizeObserver<`u`){o=new ResizeObserver(j),o.observe(e);let t=p();t&&t!==e&&o.observe(t)}},{flush:`post`});let M=()=>{let t=e.messages.value;return[e.contactId.value,t.length,t[0]?.id,t[t.length-1]?.id,t[t.length-1]?.content,e.loadingHistory.value,e.virtual.value]},N=(t,n)=>t[1]>n[1]&&n[1]>0&&t[2]!==n[2]&&(t[3]===n[3]||e.messages.value.some(e=>e.id===n[2])),P=(e,t)=>e[1]>0&&t[1]>0&&e[2]!==t[2]&&e[3]!==t[3];function F(e,t,n){let r=e[6]||t[6]?S(n):void 0;r?w(r):T(n.scrollTop,n.scrollHeight)}let I=(e,t,n)=>P(e,t)||t[1]===0||!l&&(m(n)||s&&O(n));function L(e,t,n){I(e,t,n)?x():F(e,t,n)}return(0,n.watch)(M,(e,t)=>{let n=p();if(!t||e[0]!==t[0]||!n){x();return}N(e,t)||e[5]!==t[5]?F(e,t,n):e[6]===t[6]?I(e,t,n)?x():f||E():L(e,t,n)},{immediate:!0,flush:`pre`}),(0,n.onBeforeUnmount)(()=>{t=!0,r++,g(),a!==void 0&&cancelAnimationFrame(a),o?.disconnect()}),{scrollToBottom:x,handleMessagesScroll:A,handleScrollIntent:D}}const F={placeholder:`输入消息...`,showContacts:!0,showTimestamp:!0,showSendBtn:!0,loadingHistory:!1,title:`聊天`},I={class:`c-chat`},L={key:0,class:`c-chat__sidebar`},R={class:`c-chat__sidebar-header`},z={class:`c-chat__search`},B={key:1,class:`c-chat__contact-list`},V={key:1,class:`c-chat__main`},H={class:`c-chat__header`},U={key:0,class:`c-chat__header-status`},W={key:0,class:`c-chat__load-more`},G={class:`c-chat__message-items`},K={key:0,class:`c-chat__load-more`},q={key:1,class:`c-chat__empty`},J={class:`c-chat__input-area`},Y={class:`c-chat__input-actions`},X={class:`c-chat__input-wrap`},Z={class:`c-chat__main c-chat__no-chat`},Q=(0,n.defineComponent)({__name:`index`,props:{contacts:{default:()=>[]},messages:{default:()=>[]},currentContactId:{default:``},placeholder:{default:F.placeholder},showContacts:{type:Boolean,default:F.showContacts},showTimestamp:{type:Boolean,default:F.showTimestamp},selfAvatar:{default:``},selfName:{default:``},showSendBtn:{type:Boolean,default:F.showSendBtn},loadingHistory:{type:Boolean,default:F.loadingHistory},virtualScroll:{type:Boolean,default:!0},title:{default:F.title}},emits:[`send`,`select-contact`,`load-more`,`image-preview`,`file-click`,`file-upload`,`emoji-click`,`resend`],setup(t,{expose:a,emit:o}){let s=t,c=o,l=(0,n.computed)(()=>({...F,...s})),u=(0,n.ref)(``),d=(0,n.ref)(``),f=(0,n.ref)(null),p=(0,n.ref)(null),m=(0,n.computed)(()=>s.contacts??[]),h=(0,n.computed)(()=>s.messages??[]),g=(0,n.computed)(()=>s.currentContactId||m.value[0]?.id||``),_=(0,n.computed)(()=>m.value.find(e=>e.id===g.value)),v=(0,n.computed)(()=>{if(!d.value)return m.value;let e=d.value.toLowerCase();return m.value.filter(t=>t.name.toLowerCase().includes(e))}),y=(0,n.computed)(()=>s.virtualScroll&&h.value.length>=200),b=(0,n.computed)(()=>s.virtualScroll&&v.value.length>=100),S=e=>{c(`select-contact`,e)},C=e=>{if(e instanceof KeyboardEvent&&(e.isComposing||e.keyCode===229))return;e?.preventDefault();let t=u.value.trim();t&&(c(`send`,t),u.value=``)},{scrollToBottom:w,handleMessagesScroll:T,handleScrollIntent:E}=P({messages:h,contactId:g,virtual:y,loadingHistory:(0,n.computed)(()=>l.value.loadingHistory),normalRef:f,virtualRef:p,onLoadMore:()=>c(`load-more`)});return a({scrollToBottom:w}),(a,o)=>{let s=r.NInput,w=r.NSpin,D=r.NButton;return(0,n.openBlock)(),(0,n.createElementBlock)(`div`,I,[(0,n.createCommentVNode)(` ===== 联系人侧栏 ===== `),l.value.showContacts&&m.value.length?((0,n.openBlock)(),(0,n.createElementBlock)(`aside`,L,[(0,n.createElementVNode)(`div`,R,[(0,n.createVNode)(e.t,{name:`mdi:chat-outline`,size:20}),o[14]||=(0,n.createTextVNode)(` 会话 `,-1)]),(0,n.createCommentVNode)(` 搜索框 `),(0,n.createElementVNode)(`div`,z,[(0,n.createVNode)(s,{value:d.value,"onUpdate:value":o[0]||=e=>d.value=e,placeholder:`搜索联系人`,clearable:``,size:`small`},{prefix:(0,n.withCtx)(()=>[(0,n.createVNode)(e.t,{name:`mdi:magnify`,size:16})]),_:1},8,[`value`])]),b.value?((0,n.openBlock)(),(0,n.createBlock)((0,n.unref)(i.VVirtualList),{key:0,class:`c-chat__contact-list`,items:v.value,"key-field":`id`,"item-size":56,"item-resizable":``},{default:(0,n.withCtx)(({index:e})=>[(0,n.createVNode)(N,{contact:v.value[e],active:v.value[e].id===g.value,onSelect:S},null,8,[`contact`,`active`])]),_:1},8,[`items`])):((0,n.openBlock)(),(0,n.createElementBlock)(`div`,B,[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(v.value,e=>((0,n.openBlock)(),(0,n.createBlock)(N,{key:e.id,contact:e,active:e.id===g.value,onSelect:S},null,8,[`contact`,`active`]))),128))]))])):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createCommentVNode)(` ===== 主聊天区域 ===== `),_.value||!l.value.showContacts?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,V,[(0,n.createCommentVNode)(` 顶栏 `),(0,n.createElementVNode)(`div`,H,[(0,n.renderSlot)(a.$slots,`header`,{},()=>[(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(_.value?.name||l.value.title),1),_.value?.online?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,U,` 在线 `)):(0,n.createCommentVNode)(`v-if`,!0)],!0)]),y.value?((0,n.openBlock)(),(0,n.createBlock)((0,n.unref)(i.VVirtualList),{key:g.value,ref_key:`virtualMessagesRef`,ref:p,class:`c-chat__messages c-chat__messages--virtual`,items:h.value,"key-field":`id`,"item-size":32,"item-resizable":``,"padding-top":16,"padding-bottom":16,"items-style":{paddingLeft:`20px`,paddingRight:`20px`},onScroll:(0,n.unref)(T),onWheel:(0,n.unref)(E),onPointerdown:(0,n.unref)(E),onKeydown:(0,n.unref)(E)},{default:(0,n.withCtx)(({index:e})=>[(0,n.createElementVNode)(`div`,null,[e===0&&l.value.loadingHistory?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,W,[(0,n.createVNode)(w,{size:`small`})])):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createVNode)(x,{msg:h.value[e],previous:h.value[e-1],"self-avatar":t.selfAvatar,"self-name":t.selfName,"show-timestamp":l.value.showTimestamp,onImagePreview:o[1]||=e=>c(`image-preview`,e),onFileClick:o[2]||=e=>c(`file-click`,e),onResend:o[3]||=e=>c(`resend`,e)},null,8,[`msg`,`previous`,`self-avatar`,`self-name`,`show-timestamp`])])]),_:1},8,[`items`,`onScroll`,`onWheel`,`onPointerdown`,`onKeydown`])):((0,n.openBlock)(),(0,n.createElementBlock)(`div`,{key:1,ref_key:`messagesRef`,ref:f,class:`c-chat__messages`,onScroll:o[7]||=(...e)=>(0,n.unref)(T)&&(0,n.unref)(T)(...e),onWheel:o[8]||=(...e)=>(0,n.unref)(E)&&(0,n.unref)(E)(...e),onPointerdown:o[9]||=(...e)=>(0,n.unref)(E)&&(0,n.unref)(E)(...e),onKeydown:o[10]||=(...e)=>(0,n.unref)(E)&&(0,n.unref)(E)(...e)},[(0,n.createElementVNode)(`div`,G,[l.value.loadingHistory?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,K,[(0,n.createVNode)(w,{size:`small`})])):(0,n.createCommentVNode)(`v-if`,!0),!h.value.length&&!l.value.loadingHistory?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,q,`暂无消息,发送第一条吧`)):(0,n.createCommentVNode)(`v-if`,!0),((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(h.value,(e,r)=>((0,n.openBlock)(),(0,n.createBlock)(x,{key:e.id,msg:e,previous:h.value[r-1],"self-avatar":t.selfAvatar,"self-name":t.selfName,"show-timestamp":l.value.showTimestamp,onImagePreview:o[4]||=e=>c(`image-preview`,e),onFileClick:o[5]||=e=>c(`file-click`,e),onResend:o[6]||=e=>c(`resend`,e)},null,8,[`msg`,`previous`,`self-avatar`,`self-name`,`show-timestamp`]))),128))])],544)),(0,n.createCommentVNode)(` 输入区域 `),(0,n.createElementVNode)(`div`,J,[(0,n.createElementVNode)(`div`,Y,[(0,n.renderSlot)(a.$slots,`input-actions`,{},()=>[(0,n.createVNode)(D,{quaternary:``,circle:``,size:`small`,onClick:o[11]||=e=>c(`emoji-click`)},{icon:(0,n.withCtx)(()=>[(0,n.createVNode)(e.t,{name:`mdi:emoticon-happy-outline`,size:18})]),_:1}),(0,n.createVNode)(D,{quaternary:``,circle:``,size:`small`,onClick:o[12]||=e=>c(`file-upload`)},{icon:(0,n.withCtx)(()=>[(0,n.createVNode)(e.t,{name:`mdi:paperclip`,size:18})]),_:1})],!0)]),(0,n.createElementVNode)(`div`,X,[(0,n.createVNode)(s,{value:u.value,"onUpdate:value":o[13]||=e=>u.value=e,placeholder:l.value.placeholder,type:`textarea`,autosize:{minRows:1,maxRows:4},onKeydown:(0,n.withKeys)((0,n.withModifiers)(C,[`exact`]),[`enter`])},null,8,[`value`,`placeholder`,`onKeydown`])]),l.value.showSendBtn?((0,n.openBlock)(),(0,n.createBlock)(D,{key:0,type:`primary`,disabled:!u.value.trim(),class:`c-chat__send-btn`,onClick:C},{icon:(0,n.withCtx)(()=>[(0,n.createVNode)(e.t,{name:`mdi:send`,size:16})]),_:1},8,[`disabled`])):(0,n.createCommentVNode)(`v-if`,!0)])])):((0,n.openBlock)(),(0,n.createElementBlock)(n.Fragment,{key:2},[(0,n.createCommentVNode)(` ===== 未选中联系人空态 ===== `),(0,n.createElementVNode)(`div`,Z,[(0,n.createVNode)(e.t,{name:`mdi:chat-processing-outline`,size:48,class:`c-chat__no-chat-icon`}),o[15]||=(0,n.createElementVNode)(`span`,null,`选择一个会话开始聊天`,-1)])],2112))])}}});var $=t.t(Q,[[`__scopeId`,`data-v-4e22902a`]]);Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return $}});
|
|
1
|
+
require(`./chunk.cjs`);const e=require(`./useComponentLocale.cjs`),t=require(`./C_Icon2.cjs`),n=require(`./export-helper.cjs`);let r=require(`vue`),i=require(`naive-ui`),a=require(`vueuc`);const o=[`data-message-id`],s={key:0,class:`c-chat__time-divider`},c={key:0,class:`c-chat__msg-avatar`},l=[`src`],u={key:1,class:`c-chat__avatar-fallback`},d={class:`c-chat__msg-body`},f={key:0,class:`c-chat__msg-username`},p={key:1,class:`c-chat__bubble`},m=[`aria-label`],h=[`src`,`alt`],g={class:`c-chat__file-info`},_={class:`c-chat__file-name`},v={key:0,class:`c-chat__file-size`},y={key:4,class:`c-chat__msg-time`},b={key:6,class:`c-chat__msg-status is-sending`},x=(0,r.defineComponent)({__name:`ChatMessageItem`,props:{msg:{},previous:{},selfAvatar:{},selfName:{},showTimestamp:{type:Boolean}},emits:[`image-preview`,`file-click`,`resend`],setup(n,{emit:i}){let{t:a}=e.t(),x=n,S=i,C=(0,r.computed)(()=>!x.previous||new Date(x.msg.timestamp).getTime()-new Date(x.previous.timestamp).getTime()>3e5),w=e=>e.sender===`self`&&x.selfAvatar||e.avatar,T=e=>e.sender===`self`?x.selfName||e.username||a(`chat.self`):e.username||a(`common.unknown`);function E(e){let t=new Date(e);return`${String(t.getHours()).padStart(2,`0`)}:${String(t.getMinutes()).padStart(2,`0`)}`}function D(e){let t=new Date(e),n=new Date;return t.toDateString()===n.toDateString()?E(e):`${t.getMonth()+1}/${t.getDate()} ${E(e)}`}function O(e){return e<1024?`${e}B`:e<1048576?`${(e/1024).toFixed(1)}KB`:`${(e/1048576).toFixed(1)}MB`}return(e,i)=>((0,r.openBlock)(),(0,r.createElementBlock)(`div`,{class:`c-chat__message-row`,"data-message-id":n.msg.id},[(0,r.createCommentVNode)(` 时间分割 `),C.value?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,s,(0,r.toDisplayString)(D(n.msg.timestamp)),1)):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createCommentVNode)(` 消息条目 `),(0,r.createElementVNode)(`div`,{class:(0,r.normalizeClass)([`c-chat__msg`,`is-${n.msg.sender}`])},[(0,r.createCommentVNode)(` 头像 `),n.msg.sender===`system`?(0,r.createCommentVNode)(`v-if`,!0):((0,r.openBlock)(),(0,r.createElementBlock)(`div`,c,[w(n.msg)?((0,r.openBlock)(),(0,r.createElementBlock)(`img`,{key:0,src:w(n.msg),class:`c-chat__avatar`},null,8,l)):((0,r.openBlock)(),(0,r.createElementBlock)(`div`,u,(0,r.toDisplayString)(T(n.msg).charAt(0)),1))])),(0,r.createCommentVNode)(` 消息体 `),(0,r.createElementVNode)(`div`,d,[n.msg.sender===`other`&&n.msg.username?((0,r.openBlock)(),(0,r.createElementBlock)(`span`,f,(0,r.toDisplayString)(n.msg.username),1)):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createCommentVNode)(` 文本消息 `),n.msg.type===`text`||n.msg.type===`system`?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,p,(0,r.toDisplayString)(n.msg.content),1)):n.msg.type===`image`?((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:2},[(0,r.createCommentVNode)(` 图片消息 `),(0,r.createElementVNode)(`button`,{type:`button`,class:`c-chat__msg-image-button`,"aria-label":(0,r.unref)(a)(`chat.imagePreview`,{name:n.msg.username||(0,r.unref)(a)(`chat.title`)}),onClick:i[0]||=e=>S(`image-preview`,n.msg.content)},[(0,r.createElementVNode)(`img`,{src:n.msg.content,alt:n.msg.fileName||(0,r.unref)(a)(`chat.image`),class:`c-chat__msg-image`},null,8,h)],8,m)],2112)):n.msg.type===`file`?((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:3},[(0,r.createCommentVNode)(` 文件消息 `),(0,r.createElementVNode)(`button`,{type:`button`,class:`c-chat__msg-file`,onClick:i[1]||=e=>S(`file-click`,n.msg)},[(0,r.createVNode)(t.t,{name:`mdi:file-document-outline`,size:28}),(0,r.createElementVNode)(`div`,g,[(0,r.createElementVNode)(`span`,_,(0,r.toDisplayString)(n.msg.fileName||(0,r.unref)(a)(`chat.file`)),1),n.msg.fileSize?((0,r.openBlock)(),(0,r.createElementBlock)(`span`,v,(0,r.toDisplayString)(O(n.msg.fileSize)),1)):(0,r.createCommentVNode)(`v-if`,!0)])])],2112)):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createCommentVNode)(` 时间戳 `),n.showTimestamp&&n.msg.sender!==`system`?((0,r.openBlock)(),(0,r.createElementBlock)(`span`,y,(0,r.toDisplayString)(E(n.msg.timestamp)),1)):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createCommentVNode)(` 发送状态 `),n.msg.sender===`self`&&n.msg.status===`failed`?((0,r.openBlock)(),(0,r.createElementBlock)(`button`,{key:5,type:`button`,class:`c-chat__msg-status is-failed`,onClick:i[2]||=e=>S(`resend`,n.msg)},(0,r.toDisplayString)((0,r.unref)(a)(`chat.failed`)),1)):n.msg.sender===`self`&&n.msg.status===`sending`?((0,r.openBlock)(),(0,r.createElementBlock)(`span`,b,(0,r.toDisplayString)((0,r.unref)(a)(`chat.sending`)),1)):(0,r.createCommentVNode)(`v-if`,!0)])],2)],8,o))}});var S=n.t(x,[[`__scopeId`,`data-v-47cd7e6f`]]);const C=[`data-contact-id`],w={class:`c-chat__contact-avatar`},T=[`src`,`alt`],E={key:1,class:`c-chat__avatar-fallback`},D={key:2,class:`c-chat__online-dot`},O={class:`c-chat__contact-info`},k={class:`c-chat__contact-name`},A={key:0,class:`c-chat__contact-time`},j={key:0,class:`c-chat__contact-last`},M={key:0,class:`c-chat__unread`},N=(0,r.defineComponent)({__name:`ChatContactItem`,props:{contact:{},active:{type:Boolean}},emits:[`select`],setup(t,{emit:n}){let{t:i}=e.t(),a=n;function o(e){let t=new Date(e),n=Date.now()-t.getTime();if(n<6e4)return i(`time.now`);if(n<36e5)return i(`time.minutes`,{count:Math.floor(n/6e4)});let r=`${String(t.getHours()).padStart(2,`0`)}:${String(t.getMinutes()).padStart(2,`0`)}`;return n<864e5?r:`${t.getMonth()+1}/${t.getDate()} ${r}`}return(e,n)=>((0,r.openBlock)(),(0,r.createElementBlock)(`button`,{type:`button`,class:(0,r.normalizeClass)([`c-chat__contact`,{"is-active":t.active}]),"data-contact-id":t.contact.id,onClick:n[0]||=e=>a(`select`,t.contact.id)},[(0,r.createElementVNode)(`div`,w,[t.contact.avatar?((0,r.openBlock)(),(0,r.createElementBlock)(`img`,{key:0,src:t.contact.avatar,alt:t.contact.name,class:`c-chat__avatar`},null,8,T)):((0,r.openBlock)(),(0,r.createElementBlock)(`div`,E,(0,r.toDisplayString)(t.contact.name.charAt(0)),1)),t.contact.online?((0,r.openBlock)(),(0,r.createElementBlock)(`span`,D)):(0,r.createCommentVNode)(`v-if`,!0)]),(0,r.createElementVNode)(`div`,O,[(0,r.createElementVNode)(`div`,k,[(0,r.createElementVNode)(`span`,null,(0,r.toDisplayString)(t.contact.name),1),t.contact.lastTime?((0,r.openBlock)(),(0,r.createElementBlock)(`span`,A,(0,r.toDisplayString)(o(t.contact.lastTime)),1)):(0,r.createCommentVNode)(`v-if`,!0)]),t.contact.lastMessage?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,j,(0,r.toDisplayString)(t.contact.lastMessage),1)):(0,r.createCommentVNode)(`v-if`,!0)]),t.contact.unread?((0,r.openBlock)(),(0,r.createElementBlock)(`span`,M,(0,r.toDisplayString)(t.contact.unread>99?`99+`:t.contact.unread),1)):(0,r.createCommentVNode)(`v-if`,!0)],10,C))}});var P=n.t(N,[[`__scopeId`,`data-v-66c19394`]]);function F(e){let t=!1,n=0,i,a,o,s=!0,c=!1,l=!1,u=0,d=0,f,p=()=>e.virtualRef.value?.listElRef??e.normalRef.value,m=e=>e.scrollHeight-e.scrollTop-e.clientHeight<=64,h=e=>Array.from(e.querySelectorAll(`[data-message-id]`));function g(){i!==void 0&&cancelAnimationFrame(i),i=void 0}function _(e,r){if(g(),typeof requestAnimationFrame>`u`){r();return}i=requestAnimationFrame(()=>{i=void 0,!t&&e===n&&r()})}function v(e){let i=++n;g(),(0,r.nextTick)(()=>{!t&&i===n&&e(i)})}function y(t){let n=e.virtualRef.value;n?n.scrollTo({top:t,debounce:!1}):e.normalRef.value&&(e.normalRef.value.scrollTop=t)}function b(){let t=e.virtualRef.value;t?t.scrollTo({position:`bottom`}):e.normalRef.value&&(e.normalRef.value.scrollTop=e.normalRef.value.scrollHeight)}function x(){s=!0,l=!1,c=!0,f=void 0,v(e=>{b(),_(e,()=>{b(),c=!1})})}function S(e){let{top:t}=e.getBoundingClientRect(),n=h(e).find(e=>e.getBoundingClientRect().bottom>t);return n?.dataset.messageId?{id:n.dataset.messageId,offset:n.getBoundingClientRect().top-t}:void 0}function C(e,t){let n=p();if(!n||!f)return;let r=h(n).find(e=>e.dataset.messageId===f?.id);if(r){let e=r.getBoundingClientRect().top-n.getBoundingClientRect().top;y(Math.max(0,n.scrollTop+e-f.offset))}t>0?_(e,()=>C(e,t-1)):f=void 0}function w(t){f=t,s=!1,c=!1,v(n=>{e.virtualRef.value?.scrollTo({key:t.id,debounce:!1}),C(n,3)})}function T(e,t){s=!1,c=!1,f=void 0,v(()=>{let n=p();n&&y(Math.max(0,e+n.scrollHeight-t))})}function E(){s=!1,c=!1,n++,g()}function D(){l=!0,f=void 0,E(),a!==void 0&&cancelAnimationFrame(a),a=requestAnimationFrame(()=>{if(a=void 0,t||!l)return;l=!1;let e=p();e&&!f&&(s=m(e))})}function O(e){return u>0&&(u!==e.scrollHeight||d!==e.clientHeight)}function k(e){let t=O(e);if(u=e.scrollHeight,d=e.clientHeight,!(c||f)){if(s&&t&&!l){x();return}l=!1,s=m(e)}}function A(){let t=p();t&&(k(t),t.scrollTop===0&&!e.loadingHistory.value&&e.onLoadMore())}function j(){if(!t)if(f){let e=n;_(e,()=>C(e,1))}else s&&x()}(0,r.watch)(()=>e.virtualRef.value?.itemsElRef??e.normalRef.value?.firstElementChild,e=>{if(o?.disconnect(),o=void 0,e&&typeof ResizeObserver<`u`){o=new ResizeObserver(j),o.observe(e);let t=p();t&&t!==e&&o.observe(t)}},{flush:`post`});let M=()=>{let t=e.messages.value;return[e.contactId.value,t.length,t[0]?.id,t[t.length-1]?.id,t[t.length-1]?.content,e.loadingHistory.value,e.virtual.value]},N=(t,n)=>t[1]>n[1]&&n[1]>0&&t[2]!==n[2]&&(t[3]===n[3]||e.messages.value.some(e=>e.id===n[2])),P=(e,t)=>e[1]>0&&t[1]>0&&e[2]!==t[2]&&e[3]!==t[3];function F(e,t,n){let r=e[6]||t[6]?S(n):void 0;r?w(r):T(n.scrollTop,n.scrollHeight)}let I=(e,t,n)=>P(e,t)||t[1]===0||!l&&(m(n)||s&&O(n));function L(e,t,n){I(e,t,n)?x():F(e,t,n)}return(0,r.watch)(M,(e,t)=>{let n=p();if(!t||e[0]!==t[0]||!n){x();return}N(e,t)||e[5]!==t[5]?F(e,t,n):e[6]===t[6]?I(e,t,n)?x():f||E():L(e,t,n)},{immediate:!0,flush:`pre`}),(0,r.onBeforeUnmount)(()=>{t=!0,n++,g(),a!==void 0&&cancelAnimationFrame(a),o?.disconnect()}),{scrollToBottom:x,handleMessagesScroll:A,handleScrollIntent:D}}const I={placeholder:`输入消息...`,showContacts:!0,showTimestamp:!0,showSendBtn:!0,loadingHistory:!1,title:`聊天`},L={class:`c-chat`},R={key:0,class:`c-chat__sidebar`},z={class:`c-chat__sidebar-header`},B={class:`c-chat__search`},V={key:1,class:`c-chat__contact-list`},H={key:1,class:`c-chat__main`},U={class:`c-chat__header`},W={key:0,class:`c-chat__header-status`},G={key:0,class:`c-chat__load-more`},K={class:`c-chat__message-items`},q={key:0,class:`c-chat__load-more`},J={key:1,class:`c-chat__empty`},Y={class:`c-chat__input-area`},X={class:`c-chat__input-actions`},Z={class:`c-chat__input-wrap`},Q={class:`c-chat__main c-chat__no-chat`},$=(0,r.defineComponent)({__name:`index`,props:{contacts:{default:()=>[]},messages:{default:()=>[]},currentContactId:{default:``},placeholder:{},showContacts:{type:Boolean,default:I.showContacts},showTimestamp:{type:Boolean,default:I.showTimestamp},selfAvatar:{default:``},selfName:{default:``},showSendBtn:{type:Boolean,default:I.showSendBtn},loadingHistory:{type:Boolean,default:I.loadingHistory},virtualScroll:{type:Boolean,default:!0},title:{}},emits:[`send`,`select-contact`,`load-more`,`image-preview`,`file-click`,`file-upload`,`emoji-click`,`resend`],setup(n,{expose:o,emit:s}){let{t:c}=e.t(),l=n,u=s,d=(0,r.computed)(()=>({...I,...l,placeholder:l.placeholder??c(`chat.placeholder`),title:l.title??c(`chat.title`)})),f=(0,r.ref)(``),p=(0,r.ref)(``),m=(0,r.ref)(null),h=(0,r.ref)(null),g=(0,r.computed)(()=>l.contacts??[]),_=(0,r.computed)(()=>l.messages??[]),v=(0,r.computed)(()=>l.currentContactId||g.value[0]?.id||``),y=new Map;(0,r.watch)(v,(e,t)=>{let n=f.value,r=y.get(e)??``;for(y.delete(e),y.delete(t),n&&(l.contacts?.some(e=>e.id===t)||!l.showContacts)&&y.set(t,n);y.size>50;)y.delete(y.keys().next().value);f.value=r},{flush:`sync`}),(0,r.watch)(()=>l.contacts?.map(e=>e.id),e=>{if(!l.showContacts)return;let t=new Set(e);t.has(v.value)||(f.value=``);for(let e of y.keys())t.has(e)||y.delete(e)});let b=(0,r.computed)(()=>g.value.find(e=>e.id===v.value)),x=(0,r.computed)(()=>{if(!p.value)return g.value;let e=p.value.toLowerCase();return g.value.filter(t=>t.name.toLowerCase().includes(e))}),C=(0,r.computed)(()=>l.virtualScroll&&_.value.length>=200),w=(0,r.computed)(()=>l.virtualScroll&&x.value.length>=100),T=e=>{u(`select-contact`,e)},E=e=>{if(e instanceof KeyboardEvent&&(e.isComposing||e.keyCode===229))return;e?.preventDefault();let t=f.value.trim();t&&(u(`send`,t),f.value=``)},{scrollToBottom:D,handleMessagesScroll:O,handleScrollIntent:k}=F({messages:_,contactId:v,virtual:C,loadingHistory:(0,r.computed)(()=>d.value.loadingHistory),normalRef:m,virtualRef:h,onLoadMore:()=>u(`load-more`)});return o({scrollToBottom:D}),(e,o)=>{let s=i.NInput,l=i.NSpin,y=i.NButton;return(0,r.openBlock)(),(0,r.createElementBlock)(`div`,L,[(0,r.createCommentVNode)(` ===== 联系人侧栏 ===== `),d.value.showContacts&&g.value.length?((0,r.openBlock)(),(0,r.createElementBlock)(`aside`,R,[(0,r.createElementVNode)(`div`,z,[(0,r.createVNode)(t.t,{name:`mdi:chat-outline`,size:20}),(0,r.createTextVNode)(` `+(0,r.toDisplayString)((0,r.unref)(c)(`chat.sessions`)),1)]),(0,r.createCommentVNode)(` 搜索框 `),(0,r.createElementVNode)(`div`,B,[(0,r.createVNode)(s,{value:p.value,"onUpdate:value":o[0]||=e=>p.value=e,placeholder:(0,r.unref)(c)(`chat.search`),clearable:``,size:`small`},{prefix:(0,r.withCtx)(()=>[(0,r.createVNode)(t.t,{name:`mdi:magnify`,size:16})]),_:1},8,[`value`,`placeholder`])]),w.value?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(a.VVirtualList),{key:0,class:`c-chat__contact-list`,items:x.value,"key-field":`id`,"item-size":56,"item-resizable":``},{default:(0,r.withCtx)(({index:e})=>[(0,r.createVNode)(P,{contact:x.value[e],active:x.value[e].id===v.value,onSelect:T},null,8,[`contact`,`active`])]),_:1},8,[`items`])):((0,r.openBlock)(),(0,r.createElementBlock)(`div`,V,[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)(x.value,e=>((0,r.openBlock)(),(0,r.createBlock)(P,{key:e.id,contact:e,active:e.id===v.value,onSelect:T},null,8,[`contact`,`active`]))),128))]))])):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createCommentVNode)(` ===== 主聊天区域 ===== `),b.value||!d.value.showContacts?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,H,[(0,r.createCommentVNode)(` 顶栏 `),(0,r.createElementVNode)(`div`,U,[(0,r.renderSlot)(e.$slots,`header`,{},()=>[(0,r.createElementVNode)(`span`,null,(0,r.toDisplayString)(b.value?.name||d.value.title),1),b.value?.online?((0,r.openBlock)(),(0,r.createElementBlock)(`span`,W,(0,r.toDisplayString)((0,r.unref)(c)(`chat.online`)),1)):(0,r.createCommentVNode)(`v-if`,!0)],!0)]),C.value?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(a.VVirtualList),{key:v.value,ref_key:`virtualMessagesRef`,ref:h,class:`c-chat__messages c-chat__messages--virtual`,items:_.value,"key-field":`id`,"item-size":32,"item-resizable":``,"padding-top":16,"padding-bottom":16,"items-style":{paddingLeft:`20px`,paddingRight:`20px`},onScroll:(0,r.unref)(O),onWheel:(0,r.unref)(k),onPointerdown:(0,r.unref)(k),onKeydown:(0,r.unref)(k)},{default:(0,r.withCtx)(({index:e})=>[(0,r.createElementVNode)(`div`,null,[e===0&&d.value.loadingHistory?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,G,[(0,r.createVNode)(l,{size:`small`})])):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createVNode)(S,{msg:_.value[e],previous:_.value[e-1],"self-avatar":n.selfAvatar,"self-name":n.selfName,"show-timestamp":d.value.showTimestamp,onImagePreview:o[1]||=e=>u(`image-preview`,e),onFileClick:o[2]||=e=>u(`file-click`,e),onResend:o[3]||=e=>u(`resend`,e)},null,8,[`msg`,`previous`,`self-avatar`,`self-name`,`show-timestamp`])])]),_:1},8,[`items`,`onScroll`,`onWheel`,`onPointerdown`,`onKeydown`])):((0,r.openBlock)(),(0,r.createElementBlock)(`div`,{key:1,ref_key:`messagesRef`,ref:m,class:`c-chat__messages`,onScroll:o[7]||=(...e)=>(0,r.unref)(O)&&(0,r.unref)(O)(...e),onWheel:o[8]||=(...e)=>(0,r.unref)(k)&&(0,r.unref)(k)(...e),onPointerdown:o[9]||=(...e)=>(0,r.unref)(k)&&(0,r.unref)(k)(...e),onKeydown:o[10]||=(...e)=>(0,r.unref)(k)&&(0,r.unref)(k)(...e)},[(0,r.createElementVNode)(`div`,K,[d.value.loadingHistory?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,q,[(0,r.createVNode)(l,{size:`small`})])):(0,r.createCommentVNode)(`v-if`,!0),!_.value.length&&!d.value.loadingHistory?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,J,(0,r.toDisplayString)((0,r.unref)(c)(`chat.empty`)),1)):(0,r.createCommentVNode)(`v-if`,!0),((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)(_.value,(e,t)=>((0,r.openBlock)(),(0,r.createBlock)(S,{key:e.id,msg:e,previous:_.value[t-1],"self-avatar":n.selfAvatar,"self-name":n.selfName,"show-timestamp":d.value.showTimestamp,onImagePreview:o[4]||=e=>u(`image-preview`,e),onFileClick:o[5]||=e=>u(`file-click`,e),onResend:o[6]||=e=>u(`resend`,e)},null,8,[`msg`,`previous`,`self-avatar`,`self-name`,`show-timestamp`]))),128))])],544)),(0,r.createCommentVNode)(` 输入区域 `),(0,r.createElementVNode)(`div`,Y,[(0,r.createElementVNode)(`div`,X,[(0,r.renderSlot)(e.$slots,`input-actions`,{},()=>[(0,r.createVNode)(y,{quaternary:``,circle:``,size:`small`,"aria-label":(0,r.unref)(c)(`chat.emoji`),onClick:o[11]||=e=>u(`emoji-click`)},{icon:(0,r.withCtx)(()=>[(0,r.createVNode)(t.t,{name:`mdi:emoticon-happy-outline`,size:18})]),_:1},8,[`aria-label`]),(0,r.createVNode)(y,{quaternary:``,circle:``,size:`small`,"aria-label":(0,r.unref)(c)(`chat.attach`),onClick:o[12]||=e=>u(`file-upload`)},{icon:(0,r.withCtx)(()=>[(0,r.createVNode)(t.t,{name:`mdi:paperclip`,size:18})]),_:1},8,[`aria-label`])],!0)]),(0,r.createElementVNode)(`div`,Z,[(0,r.createVNode)(s,{value:f.value,"onUpdate:value":o[13]||=e=>f.value=e,placeholder:d.value.placeholder,type:`textarea`,autosize:{minRows:1,maxRows:4},onKeydown:(0,r.withKeys)((0,r.withModifiers)(E,[`exact`]),[`enter`])},null,8,[`value`,`placeholder`,`onKeydown`])]),d.value.showSendBtn?((0,r.openBlock)(),(0,r.createBlock)(y,{key:0,type:`primary`,disabled:!f.value.trim(),class:`c-chat__send-btn`,"aria-label":(0,r.unref)(c)(`chat.send`),onClick:E},{icon:(0,r.withCtx)(()=>[(0,r.createVNode)(t.t,{name:`mdi:send`,size:16})]),_:1},8,[`disabled`,`aria-label`])):(0,r.createCommentVNode)(`v-if`,!0)])])):((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:2},[(0,r.createCommentVNode)(` ===== 未选中联系人空态 ===== `),(0,r.createElementVNode)(`div`,Q,[(0,r.createVNode)(t.t,{name:`mdi:chat-processing-outline`,size:48,class:`c-chat__no-chat-icon`}),(0,r.createElementVNode)(`span`,null,(0,r.toDisplayString)((0,r.unref)(c)(`chat.choose`)),1)])],2112))])}}});var ee=n.t($,[[`__scopeId`,`data-v-96dfa0d2`]]);Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return ee}});
|