@next-bricks/ai-portal 0.59.3 → 0.59.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +0,0 @@
1
- /*! For license information please see notice-list.4eda2f51.js.LICENSE.txt */
2
- (globalThis.webpackChunk_next_bricks_ai_portal=globalThis.webpackChunk_next_bricks_ai_portal||[]).push([[9780],{21531:(e,t,a)=>{"use strict";a.d(t,{A:()=>s});var i=a(36758),r=a.n(i),n=a(40935),l=a.n(n)()(r());l.push([e.id,":host{display:block}:host([hidden]){display:none}.toolbar{display:flex;gap:8px;align-items:center;padding:12px 16px}.toolbar .read-link::part(button){padding:4px 8px}.all-checkbox,\n.item-checkbox{margin-right:10px}.all-checkbox::part(checkbox-option):hover,\n.item-checkbox::part(checkbox-option):hover{background-color:transparent}ul{list-style:none;margin:0;padding:0}.message-item-link{display:block}.message-item-link::part(link){display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 16px;color:var(--text-color-title);border-bottom:1px solid rgba(0,0,0,0.1);transition:all 0.2s}.message-item-link.has-read::part(link){opacity:0.65}.message-item-link::part(link):hover{background-color:rgba(0,0,0,0.04)}.left{display:flex;align-items:center;gap:12px;flex:1;min-width:0}.left .icon-wrapper{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-size:24px}.left .title{flex:1;min-width:0;font-size:14px;font-weight:500;color:var(--text-color-title);line-height:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.right{flex-shrink:0;display:flex;align-items:center}.right .message-time{flex-shrink:0;line-height:22px;color:rgba(0,0,0,0.45)}.empty-state{display:flex;align-items:center;justify-content:center;padding:60px 20px;font-size:14px;color:var(--text-color-secondary)}",""]);const s=l.toString()},53373:(e,t)=>{var a;!function(){"use strict";var i={}.hasOwnProperty;function r(){for(var e="",t=0;t<arguments.length;t++){var a=arguments[t];a&&(e=l(e,n(a)))}return e}function n(e){if("string"==typeof e||"number"==typeof e)return e;if("object"!=typeof e)return"";if(Array.isArray(e))return r.apply(null,e);if(e.toString!==Object.prototype.toString&&!e.toString.toString().includes("[native code]"))return e.toString();var t="";for(var a in e)i.call(e,a)&&e[a]&&(t=l(t,a));return t}function l(e,t){return t?e?e+" "+t:e+t:e}e.exports?(r.default=r,e.exports=r):void 0===(a=function(){return r}.apply(t,[]))||(e.exports=a)}()},62916:(e,t,a)=>{"use strict";a.d(t,{c:()=>c,P:()=>A});var i=a(21302),r=a(52616);const n="libs-datetime";let l=function(e){return e.TODAY="TODAY",e.YESTERDAY="YESTERDAY",e.FUTURE_AFTER="FUTURE_AFTER",e.FORMAT_MEDIUM_DATETIME="FORMAT_MEDIUM_DATETIME",e.FORMAT_MEDIUM_DATE="FORMAT_MEDIUM_DATE",e.FORMAT_SHORT_DATETIME="FORMAT_SHORT_DATETIME",e.FORMAT_SHORT_DATE="FORMAT_SHORT_DATE",e.FORMAT_SHORT_DAY_DATETIME="FORMAT_SHORT_DAY_DATETIME",e.FORMAT_SHORT_DAY_DATE="FORMAT_SHORT_DAY_DATE",e.SECONDS="SECONDS",e.MILL_SECONDS="MILL_SECONDS",e.MINUTES="MINUTES",e.HOURS="HOURS",e.DAYS="DARS",e.MONTHS="MONTHS",e}({});const s={[l.YESTERDAY]:"Yesterday",[l.TODAY]:"Today",[l.FUTURE_AFTER]:"After {{time}}",[l.FORMAT_MEDIUM_DATETIME]:"LLL",[l.FORMAT_MEDIUM_DATE]:"LL",[l.FORMAT_SHORT_DATETIME]:"MMM D ah:mm",[l.FORMAT_SHORT_DATE]:"MMM D",[l.FORMAT_SHORT_DAY_DATETIME]:"MMM D HH:mm",[l.FORMAT_SHORT_DAY_DATE]:"MMM D",[l.MONTHS]:"months",[l.HOURS]:"hours",[l.SECONDS]:"seconds",[l.MILL_SECONDS]:"millseconds",[l.DAYS]:"days",[l.MINUTES]:"minutes"},o={[l.YESTERDAY]:"昨天",[l.TODAY]:"今天",[l.FUTURE_AFTER]:"{{time}}后",[l.FORMAT_MEDIUM_DATETIME]:"LL ah:mm",[l.FORMAT_MEDIUM_DATE]:"LL",[l.FORMAT_SHORT_DATETIME]:"MMMD日 ah:mm",[l.FORMAT_SHORT_DATE]:"MMMD日",[l.FORMAT_SHORT_DAY_DATETIME]:"MMMD日 HH:mm",[l.FORMAT_SHORT_DAY_DATE]:"MMMD日",[l.MONTHS]:"个月",[l.HOURS]:"小时",[l.SECONDS]:"秒",[l.MILL_SECONDS]:"毫秒",[l.DAYS]:"天",[l.MINUTES]:"分钟"};(0,r.initializeI18n)(n,{en:s,zh:o});let c=function(e){return e.full="full",e.default="default",e.relative="relative",e.past="past",e.future="future",e.accurate="accurate",e.auto="auto",e}({});const A=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:c.auto,a=arguments.length>2?arguments[2]:void 0;if(null==e||e===-1/0||e===1/0)return null;const s=i(e),o=i().add(0),A="date"===a?"LL":"LL HH:mm",d=r.i18n.t(`${n}:${"date"===a?l.FORMAT_MEDIUM_DATE:l.FORMAT_MEDIUM_DATETIME}`),T=r.i18n.t(`${n}:${"date"===a?l.FORMAT_SHORT_DATE:l.FORMAT_SHORT_DATETIME}`),m=r.i18n.t(`${n}:${"date"===a?l.FORMAT_SHORT_DAY_DATE:l.FORMAT_SHORT_DAY_DATETIME}`),u="date"===a?"LL":"LL HH:mm:ss";let E;switch(t){case c.full:E=s.format(A);break;case c.default:E=s.format(u);break;case c.relative:{const e=+s-+o;E=e<=0?i.duration(e).humanize(!0):r.i18n.t(`${n}:${l.FUTURE_AFTER}`,{time:i.duration(e).humanize()});break}case c.past:E=i.duration(Math.min(+s-+o,0)).humanize(!0);break;case c.future:E=r.i18n.t(`${n}:${l.FUTURE_AFTER}`,{time:i.duration(Math.max(+s-+o,0)).humanize()});break;case c.accurate:E=(()=>{const e=+s.diff(o,"days",!0).toFixed(1);let t="";const i=s.year()<o.year()?"lastYear":e<-2||s.isBefore(o.clone().add(-1,"day"),"day")?"twoDaysBefore":s.isSame(o.clone().add(-1,"day"),"day")?"yesterday":s.isSame(o,"day")?"sameDay":e<2&&s.isSame(o.clone().add(1,"day"),"day")?"nextDay":e<7?"nextWeek":"default";switch(i){case"sameDay":case"yesterday":t=`${r.i18n.t(`${n}:${"yesterday"===i?l.YESTERDAY:l.TODAY}`)}${"date"===a?"":` ${s.format("HH:mm")}`}`;break;case"lastYear":default:t=s.format(A);break;case"twoDaysBefore":t=s.format(m)}return t})();break;default:E=s.format(s.year()===o.year()?T:d)}return E}},69906:(e,t,a)=>{"use strict";a.d(t,{I:()=>l,K:()=>r,NS:()=>n,t:()=>s});var i=a(52616);let r=function(e){return e.MARK_READ="MARK_READ",e.MARK_ALL_READ="MARK_ALL_READ",e.NO_MESSAGE="NO_MESSAGE",e}({});const n="bricks/ai-portal/notice-list",l={en:{MARK_READ:"Mark as read",MARK_ALL_READ:"Mark all as read",NO_MESSAGE:"No messages"},zh:{MARK_READ:"标记已读",MARK_ALL_READ:"全部已读",NO_MESSAGE:"暂无消息"}},s=i.i18n.getFixedT(null,n)},70976:(e,t,a)=>{"use strict";a.r(t),a.d(t,{NoticeList:()=>Z});var i,r=a(74635),n=a(70918),l=a(26902),s=a(5536),o=a(86121),c=a(70829),A=a(62740),d=a(18769),T=a.n(d),m=a(53373),u=a.n(m),E=a(90870),M=a(30981),p=(a(34419),a(52616)),h=a(69906),_=a(21531),R=a(65549),D=a(62916),S=a(72419);let k,f,O,g,y,x,v,b,I,N,F,w,H,L,U,Y,C,$,K,W,z,B,V;(0,p.initializeI18n)(h.NS,h.I);const{defineElement:j,property:G,event:P}=(0,E.createDecorators)(),Q=(0,M.wrapBrick)("eo-button"),q=(0,M.wrapBrick)("eo-icon"),J=(0,M.wrapBrick)("eo-link"),X=(0,M.wrapBrick)("eo-checkbox",{onValuesChange:"change"});let Z;var ee=new WeakMap,te=new WeakMap,ae=new WeakMap,ie=new WeakMap,re=new WeakMap,ne=new WeakMap,le=new WeakSet,se=new WeakMap,oe=new WeakMap,ce=new WeakMap,Ae=new WeakMap,de=new WeakMap;class Te extends M.ReactNextElement{constructor(){super(...arguments),(0,r.A)(this,le),(0,n.A)(this,ee,f(this)),(0,n.A)(this,te,(O(this),g(this))),(0,n.A)(this,ae,(y(this),x(this))),(0,n.A)(this,ie,(v(this),b(this))),(0,n.A)(this,re,(I(this),N(this))),(0,n.A)(this,ne,(F(this),w(this))),(0,n.A)(this,se,(U(this),Y(this))),(0,n.A)(this,oe,(K(this),W(this))),(0,n.A)(this,ce,(V(this),e=>{(0,s.A)(le,this,H).emit(e)})),(0,n.A)(this,Ae,(e=>{(0,s.A)(le,this,C).emit(e)})),(0,n.A)(this,de,(()=>{(0,s.A)(le,this,z).emit()}))}get dataSource(){return(0,c.A)(ee,this)}set dataSource(e){(0,o.A)(ee,this,e)}get emptyText(){return(0,c.A)(te,this)}set emptyText(e){(0,o.A)(te,this,e)}get urlTemplate(){return(0,c.A)(ae,this)}set urlTemplate(e){(0,o.A)(ae,this,e)}get urlTarget(){return(0,c.A)(ie,this)}set urlTarget(e){(0,o.A)(ie,this,e)}get selectedIds(){return(0,c.A)(re,this)}set selectedIds(e){(0,o.A)(re,this,e)}render(){return T().createElement(me,{dataSource:this.dataSource,emptyText:this.emptyText,onNoticeClick:(0,c.A)(ce,this),onMarkItemsRead:(0,c.A)(Ae,this),onMarkAllRead:(0,c.A)(de,this),selectedIds:this.selectedIds,urlTemplate:this.urlTemplate,urlTarget:this.urlTarget})}}function me(e){let{dataSource:t=[],emptyText:a,onNoticeClick:i,onMarkItemsRead:r,onMarkAllRead:n,urlTemplate:l,urlTarget:s,selectedIds:o}=e;const[c,A]=(0,d.useState)(new Set(o||[])),m=(0,d.useMemo)((()=>(null==t?void 0:t.filter((e=>e.isUnread)).map((e=>e.id)))||[]),[t]),u=(0,d.useMemo)((()=>m.length>0&&m.every((e=>c.has(e)))),[m,c]),E=(0,d.useCallback)((e=>{const t=new Set(e?m:[]);A(t)}),[m]),M=(0,d.useCallback)(((e,t)=>{const a=t?new Set([...c,e]):new Set(Array.from(c).filter((t=>t!==e)));A(a)}),[c]),p=(0,d.useCallback)((e=>{i(e)}),[i]);return(0,d.useEffect)((()=>{A(new Set(o||[]))}),[o]),T().createElement("div",null,T().createElement("div",{className:"toolbar"},T().createElement(X,{themeVariant:"elevo",className:"all-checkbox",options:[{label:"",value:"selectAll"}],value:u?["selectAll"]:[],onValuesChange:e=>{var t;return E(!(null===(t=e.detail)||void 0===t||!t.length))}}),T().createElement(Q,{className:"read-link",type:"link",themeVariant:"elevo",disabled:0===c.size,onClick:()=>r(t.filter((e=>c.has(e.id))))},(0,h.t)(h.K.MARK_READ)),T().createElement(Q,{className:"read-link",type:"link",onClick:n,themeVariant:"elevo"},(0,h.t)(h.K.MARK_ALL_READ))),T().createElement("div",{className:"content"},(null==t?void 0:t.length)>0?T().createElement("ul",{className:"message-list"},t.map((e=>T().createElement("li",{key:e.id},T().createElement(ue,{item:e,selected:c.has(e.id),urlTemplate:l,urlTarget:s,onSelectItem:M,onNoticeClick:p}))))):T().createElement("div",{className:"empty-state"},a||(0,h.t)(h.K.NO_MESSAGE))))}function ue(e){let{item:t,selected:a,urlTemplate:i,urlTarget:r,onSelectItem:n,onNoticeClick:l}=e;const s=(0,d.useRef)(null);return(0,d.useEffect)((()=>{const e=s.current;if(!e)return;const t=e=>{e.stopPropagation(),e.preventDefault()};return e.addEventListener("click",t),()=>{e.removeEventListener("click",t)}}),[]),T().createElement(J,{className:u()("message-item-link",{"has-read":!t.isUnread}),url:(0,R.Q)(i,t),target:r,onClick:()=>l(t)},T().createElement("div",{className:"left"},T().createElement(X,{ref:s,disabled:!t.isUnread,themeVariant:"elevo",className:"item-checkbox",options:[{label:"",value:t.id}],value:a?[t.id]:[],onValuesChange:e=>{var a;n(t.id,!(null===(a=e.detail)||void 0===a||!a.length))}}),T().createElement("div",{className:"icon-wrapper"},T().createElement(q,{imgSrc:(0,S.getNotifyIcon)(t.type),keepSvgOriginalColor:!0})),T().createElement("div",{className:"title",title:t.title},t.title)),T().createElement("div",{className:"right"},T().createElement("div",{className:"message-time"},(0,D.P)(t.time,D.c.relative))))}i=Te,({e:[f,O,g,y,x,v,b,I,N,F,w,H,L,U,Y,C,$,K,W,z,B,V],c:[Z,k]}=(0,A.A)(i,[j("ai-portal.notice-list",{styleTexts:[_.A]})],[[G({attribute:!1}),1,"dataSource"],[G(),1,"emptyText"],[G(),1,"urlTemplate"],[G(),1,"urlTarget"],[G({attribute:!1}),1,"selectedIds"],[P({type:"notice.click"}),1,"noticeClickEvent",e=>(0,c.A)(ne,e),(e,t)=>(0,o.A)(ne,e,t)],[P({type:"mark.items.read"}),1,"markItemsReadEvent",e=>(0,c.A)(se,e),(e,t)=>(0,o.A)(se,e,t)],[P({type:"mark.all.read"}),1,"markAllReadEvent",e=>(0,c.A)(oe,e),(e,t)=>(0,o.A)(oe,e,t)]],0,(e=>de.has((0,l.A)(e))),M.ReactNextElement)),k()}}]);
3
- //# sourceMappingURL=notice-list.4eda2f51.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chunks/notice-list.4eda2f51.js","mappings":";iMAGIA,QAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,q1CAEwiC,KAEjlC,QAAeH,EAAwBI,0BCTvC,OAOC,WACA,aAEA,IAAIC,EAAS,CAAC,EAAEC,eAEhB,SAASC,IAGR,IAFA,IAAIC,EAAU,GAELC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAC1C,IAAIG,EAAMF,UAAUD,GAChBG,IACHJ,EAAUK,EAAYL,EAASM,EAAWF,IAE5C,CAEA,OAAOJ,CACR,CAEA,SAASM,EAAYF,GACpB,GAAmB,iBAARA,GAAmC,iBAARA,EACrC,OAAOA,EAGR,GAAmB,iBAARA,EACV,MAAO,GAGR,GAAIG,MAAMC,QAAQJ,GACjB,OAAOL,EAAWU,MAAM,KAAML,GAG/B,GAAIA,EAAIR,WAAac,OAAOC,UAAUf,WAAaQ,EAAIR,SAASA,WAAWgB,SAAS,iBACnF,OAAOR,EAAIR,WAGZ,IAAII,EAAU,GAEd,IAAK,IAAIa,KAAOT,EACXP,EAAOiB,KAAKV,EAAKS,IAAQT,EAAIS,KAChCb,EAAUK,EAAYL,EAASa,IAIjC,OAAOb,CACR,CAEA,SAASK,EAAaU,EAAOC,GAC5B,OAAKA,EAIDD,EACIA,EAAQ,IAAMC,EAGfD,EAAQC,EAPPD,CAQT,CAEqCrB,EAAOuB,SAC3ClB,EAAWmB,QAAUnB,EACrBL,EAAOuB,QAAUlB,QAKhB,KAFwB,EAAF,WACtB,OAAOA,CACP,UAFoB,OAEpB,YAIH,CArEA,oFCPO,MAAMoB,EAAmB,gBAEzB,IAAKC,EAAC,SAADA,GAAC,OAADA,EAAC,cAADA,EAAC,sBAADA,EAAC,4BAADA,EAAC,gDAADA,EAAC,wCAADA,EAAC,8CAADA,EAAC,sCAADA,EAAC,sDAADA,EAAC,8CAADA,EAAC,kBAADA,EAAC,4BAADA,EAAC,kBAADA,EAAC,cAADA,EAAC,YAADA,EAAC,gBAADA,CAAC,MCAb,MAkBA,EAlBuB,CACrB,CAACA,EAAEC,WAAY,YACf,CAACD,EAAEE,OAAQ,QACX,CAACF,EAAEG,cAAe,iBAClB,CAACH,EAAEI,wBAAyB,MAC5B,CAACJ,EAAEK,oBAAqB,KACxB,CAACL,EAAEM,uBAAwB,cAC3B,CAACN,EAAEO,mBAAoB,QACvB,CAACP,EAAEQ,2BAA4B,cAC/B,CAACR,EAAES,uBAAwB,QAC3B,CAACT,EAAEU,QAAS,SACZ,CAACV,EAAEW,OAAQ,QACX,CAACX,EAAEY,SAAU,UACb,CAACZ,EAAEa,cAAe,cAClB,CAACb,EAAEc,MAAO,OACV,CAACd,EAAEe,SAAU,WCGf,EAlBuB,CACrB,CAACf,EAAEC,WAAY,KACf,CAACD,EAAEE,OAAQ,KACX,CAACF,EAAEG,cAAe,YAClB,CAACH,EAAEI,wBAAyB,WAC5B,CAACJ,EAAEK,oBAAqB,KACxB,CAACL,EAAEM,uBAAwB,cAC3B,CAACN,EAAEO,mBAAoB,QACvB,CAACP,EAAEQ,2BAA4B,cAC/B,CAACR,EAAES,uBAAwB,QAC3B,CAACT,EAAEU,QAAS,KACZ,CAACV,EAAEW,OAAQ,KACX,CAACX,EAAEY,SAAU,IACb,CAACZ,EAAEa,cAAe,KAClB,CAACb,EAAEc,MAAO,IACV,CAACd,EAAEe,SAAU,OCXbC,EAAAA,EAAAA,gBAAejB,EAAkB,CAAEkB,GAAE,EAAEC,GAAEA,ICGpC,IAAKC,EAAkB,SAAlBA,GAAkB,OAAlBA,EAAkB,YAAlBA,EAAkB,kBAAlBA,EAAkB,oBAAlBA,EAAkB,YAAlBA,EAAkB,gBAAlBA,EAAkB,oBAAlBA,EAAkB,YAAlBA,CAAkB,MAUvB,MAAMC,EAAe,SAC1BC,GAIkB,IAHlBC,EAA0BxC,UAAAC,OAAA,QAAAwC,IAAAzC,UAAA,GAAAA,UAAA,GAAGqC,EAAmBK,KAEhDC,EAA0B3C,UAAAC,OAAA,EAAAD,UAAA,QAAAyC,EAE1B,GACEF,SAEAA,KAAS,KACTA,IAASK,IAET,OAAO,KAET,MAAMC,EAAIC,EAAOP,GACXQ,EAAMD,IAASE,IA3BH,GA4BZC,EAAiB,SAATN,EAAkB,KAAO,WACjCO,EAAUC,EAAAA,KAAKC,EACnB,GAAGnC,KAA6B,SAAT0B,EAAkBzB,EAAEK,mBAAqBL,EAAEI,0BAE9D+B,EAASF,EAAAA,KAAKC,EAClB,GAAGnC,KAA6B,SAAT0B,EAAkBzB,EAAEO,kBAAoBP,EAAEM,yBAE7D8B,EAAWH,EAAAA,KAAKC,EACpB,GAAGnC,KAA6B,SAAT0B,EAAkBzB,EAAES,sBAAwBT,EAAEQ,6BAEjE6B,EAAoB,SAATZ,EAAkB,KAAO,cAE1C,IAAIa,EA4CJ,OAAQhB,GACN,KAAKH,EAAmBoB,KACtBD,EAAOX,EAAEL,OAAOS,GAChB,MACF,KAAKZ,EAAmBrB,QACtBwC,EAAOX,EAAEL,OAAOe,GAChB,MACF,KAAKlB,EAAmBqB,SAAU,CAChC,MAAMC,GAAQd,GAAKE,EACnBS,EACEG,GAAQ,EACJb,EAAAA,SAAgBa,GAAMC,UAAS,GAC/BT,EAAAA,KAAKC,EAAE,GAAGnC,KAAoBC,EAAEG,eAAgB,CAC9CkB,KAAMO,EAAAA,SAAgBa,GAAMC,aAEpC,KACF,CACA,KAAKvB,EAAmBwB,KACtBL,EAAOV,EAAAA,SAAgBgB,KAAKC,KAAKlB,GAAKE,EAAK,IAAIa,UAAS,GACxD,MACF,KAAKvB,EAAmB2B,OACtBR,EAAOL,EAAAA,KAAKC,EAAE,GAAGnC,KAAoBC,EAAEG,eAAgB,CACrDkB,KAAMO,EAAAA,SAAgBgB,KAAKG,KAAKpB,GAAKE,EAAK,IAAIa,aAEhD,MACF,KAAKvB,EAAmB6B,SACtBV,EA/DoBW,MACtB,MAAMR,GAAQd,EAAEc,KAAKZ,EAAK,QAAQ,GAAMqB,QAAQ,GAChD,IAAIC,EAAQ,GACZ,MAAMC,EACJzB,EAAE0B,OAASxB,EAAIwB,OACX,WACAZ,GAAQ,GAAKd,EAAE2B,SAASzB,EAAI0B,QAAQzB,KAAK,EAAG,OAAQ,OAClD,gBACAH,EAAE6B,OAAO3B,EAAI0B,QAAQzB,KAAK,EAAG,OAAQ,OACnC,YACAH,EAAE6B,OAAO3B,EAAK,OACZ,UACAY,EAAO,GAAKd,EAAE6B,OAAO3B,EAAI0B,QAAQzB,IAAI,EAAG,OAAQ,OAC9C,UACAW,EAAO,EACL,WACA,UAChB,OAAQW,GACN,IAAK,UACL,IAAK,YACHD,EAAQ,GAAGlB,EAAAA,KAAKC,EAAE,GAAGnC,KAA+B,cAAXqD,EAAyBpD,EAAEC,UAAYD,EAAEE,WACvE,SAATuB,EAAkB,GAAK,IAAIE,EAAEL,OA7BjB,aA+Bd,MACF,IAAK,WAML,QACE6B,EAAQxB,EAAEL,OAAOS,SAJnB,IAAK,gBACHoB,EAAQxB,EAAEL,OAAOc,GAMrB,OAAOe,CAAK,EA6BHF,GACP,MACF,QACEX,EAAOX,EAAEL,OAAOK,EAAE0B,SAAWxB,EAAIwB,OAASlB,EAASH,GAEvD,OAAOM,CACT,yFCzHO,IAAKtC,EAAC,SAADA,GAAC,OAADA,EAAC,sBAADA,EAAC,8BAADA,EAAC,wBAADA,CAAC,MAMb,MAYayD,EAAK,+BAELC,EAAU,CAAEzC,GAdN,CACjB0C,UAAW,eACXC,cAAe,mBACfC,WAAY,eAWe3C,GARV,CACjByC,UAAW,OACXC,cAAe,OACfC,WAAY,SAOD3B,EAAID,EAAAA,KAAK6B,UAAU,KAAML,kVCGtCzC,EAAAA,EAAAA,gBAAeyC,EAAAA,GAAIC,EAAAA,GAEnB,MAAM,cAAEK,EAAa,SAAEC,EAAQ,MAAEC,IAAUC,EAAAA,EAAAA,oBAUrCC,GAAgBC,EAAAA,EAAAA,WAA+B,aAC/CC,GAAcD,EAAAA,EAAAA,WAAyC,WACvDE,GAAcF,EAAAA,EAAAA,WAA2B,WACzCG,GAAkBH,EAAAA,EAAAA,WAKtB,cAAe,CACfI,eAAgB,WACf,IAAAC,EAAA,IAAAC,GAAA,IAAAC,QAAAC,GAAA,IAAAD,QAAAE,GAAA,IAAAF,QAAAG,GAAA,IAAAH,QAAAI,GAAA,IAAAJ,QAAAK,GAAA,IAAAL,QAAAM,GAAA,IAAAC,QAAAC,GAAA,IAAAR,QAAAS,GAAA,IAAAT,QAAAU,GAAA,IAAAV,QAAAW,GAAA,IAAAX,QAAAY,GAAA,IAAAZ,QAqBH,MAAAa,WAGyBC,EAAAA,iBAA4CC,WAAAA,GAAA,SAAA5G,YAAA6G,EAAAA,EAAAA,GAAA,KAAAV,KACnEW,EAAAA,EAAAA,GAAA,KAAAlB,GAAAmB,EAAA,QAIAD,EAAAA,EAAAA,GAAA,KAAAhB,IAAAkB,EAAA,MAAAC,EAAA,SAIAH,EAAAA,EAAAA,GAAA,KAAAf,IAAAmB,EAAA,MAAAC,EAAA,SAIAL,EAAAA,EAAAA,GAAA,KAAAd,IAAAoB,EAAA,MAAAC,EAAA,SAIAP,EAAAA,EAAAA,GAAA,KAAAb,IAAAqB,EAAA,MAAAC,EAAA,SAIAT,EAAAA,EAAAA,GAAA,KAAAZ,IAAAsB,EAAA,MAAAC,EAAA,SAOAX,EAAAA,EAAAA,GAAA,KAAAT,IAAAqB,EAAA,MAAAC,EAAA,SAOAb,EAAAA,EAAAA,GAAA,KAAAR,IAAAsB,EAAA,MAAAC,EAAA,SAMAf,EAAAA,EAAAA,GAAA,KAAAP,IAAkBuB,EAAA,MAAIC,KACpBC,EAAAA,EAAAA,GAAA7B,GAAA8B,KAAKC,GAAkBC,KAAKJ,EAAK,KAGnCjB,EAAAA,EAAAA,GAAA,KAAAN,IAAwB4B,KACtBJ,EAAAA,EAAAA,GAAA7B,GAAA8B,KAAKI,GAAoBF,KAAKC,EAAM,KAGtCtB,EAAAA,EAAAA,GAAA,KAAAL,IAAqB,MACnBuB,EAAAA,EAAAA,GAAA7B,GAAA8B,KAAKK,GAAkBH,MAAM,GAC7B,eAhDOI,GAAU,OAAAC,EAAAA,EAAAA,GAAA5C,GAAA,oBAAV2C,CAAUE,IAAAC,EAAAA,EAAAA,GAAA9C,GAAA,KAAA6C,EAAA,cAIVE,GAAS,OAAAH,EAAAA,EAAAA,GAAA1C,GAAA,mBAAT6C,CAASF,IAAAC,EAAAA,EAAAA,GAAA5C,GAAA,KAAA2C,EAAA,gBAITG,GAAW,OAAAJ,EAAAA,EAAAA,GAAAzC,GAAA,qBAAX6C,CAAWH,IAAAC,EAAAA,EAAAA,GAAA3C,GAAA,KAAA0C,EAAA,cAIXI,GAAS,OAAAL,EAAAA,EAAAA,GAAAxC,GAAA,mBAAT6C,CAASJ,IAAAC,EAAAA,EAAAA,GAAA1C,GAAA,KAAAyC,EAAA,gBAITK,GAAW,OAAAN,EAAAA,EAAAA,GAAAvC,GAAA,qBAAX6C,CAAWL,IAAAC,EAAAA,EAAAA,GAAAzC,GAAA,KAAAwC,EAAA,CAkCpBM,MAAAA,GACE,OACEC,IAAAA,cAACC,GAAmB,CAClBV,WAAYN,KAAKM,WACjBI,UAAWV,KAAKU,UAChBO,eAAeV,EAAAA,EAAAA,GAAKjC,GAAL0B,MACfkB,iBAAiBX,EAAAA,EAAAA,GAAKhC,GAALyB,MACjBmB,eAAeZ,EAAAA,EAAAA,GAAK/B,GAALwB,MACfa,YAAab,KAAKa,YAClBF,YAAaX,KAAKW,YAClBC,UAAWZ,KAAKY,WAGtB,EAkBF,SAASI,GAAmBI,GASC,IATA,WAC3Bd,EAAa,GAAE,UACfI,EAAS,cACTO,EAAa,gBACbC,EAAe,cACfC,EAAa,YACbR,EAAW,UACXC,EACAC,YAAaQ,GACYD,EACzB,MAAOP,EAAaS,IAAkBC,EAAAA,EAAAA,UACpC,IAAIC,IAAIH,GAAgB,KAGpBI,GAAgBC,EAAAA,EAAAA,UAAQ,KAG1BpB,aAAU,EAAVA,EAAYqB,QAAQ7B,GAASA,EAAK8B,WAAUC,KAAK/B,GAASA,EAAKtI,OAAO,IAEvE,CAAC8I,IAEEwB,GAAgBJ,EAAAA,EAAAA,UAAQ,IAE1BD,EAAczJ,OAAS,GACvByJ,EAAcM,OAAOvK,GAAOqJ,EAAYmB,IAAIxK,MAE7C,CAACiK,EAAeZ,IAEboB,GAAkBC,EAAAA,EAAAA,cACrBC,IACC,MAAMC,EAAiB,IAAIZ,IAAIW,EAAUV,EAAgB,IACzDH,EAAec,EAAe,GAEhC,CAACX,IAGGY,GAAmBH,EAAAA,EAAAA,cACvB,CAAC1K,EAAY2K,KACX,MAAMC,EAAiBD,EACnB,IAAIX,IAAI,IAAIX,EAAarJ,IACzB,IAAIgK,IACFpJ,MAAMkK,KAAKzB,GAAac,QAAQY,GAAeA,IAAe/K,KAGpE8J,EAAec,EAAe,GAEhC,CAACvB,IAGG2B,GAAwBN,EAAAA,EAAAA,cAC3BpC,IACCmB,EAAcnB,EAAK,GAErB,CAACmB,IAOH,OAJAwB,EAAAA,EAAAA,YAAU,KACRnB,EAAe,IAAIE,IAAIH,GAAgB,IAAI,GAC1C,CAACA,IAGFN,IAAAA,cAAA,WACEA,IAAAA,cAAA,OAAK2B,UAAU,WACb3B,IAAAA,cAACvD,EAAe,CACdmF,aAAa,QACbD,UAAU,eACVE,QAAS,CAAC,CAAEC,MAAO,GAAIjK,MAAO,cAC9BA,MAAOkJ,EAAgB,CAAC,aAAe,GACvCrE,eAAiBqF,IAAC,IAAAC,EAAA,OAAKd,IAA0B,QAATc,EAACD,EAAEE,cAAM,IAAAD,IAARA,EAAU/K,QAAO,IAG5D+I,IAAAA,cAAC3D,EAAa,CACZsF,UAAU,YACVhI,KAAK,OACLiI,aAAa,QACbM,SAA+B,IAArBpC,EAAYqC,KACtBC,QAASA,IACPjC,EACEZ,EAAWqB,QAAQ7B,GAASe,EAAYmB,IAAIlC,EAAKtI,SAIpD2D,EAAAA,EAAAA,GAAElC,EAAAA,EAAE2D,YAEPmE,IAAAA,cAAC3D,EAAa,CACZsF,UAAU,YACVhI,KAAK,OACLyI,QAAShC,EACTwB,aAAa,UAEZxH,EAAAA,EAAAA,GAAElC,EAAAA,EAAE4D,iBAITkE,IAAAA,cAAA,OAAK2B,UAAU,YACZpC,aAAU,EAAVA,EAAYtI,QAAS,EACpB+I,IAAAA,cAAA,MAAI2B,UAAU,gBACXpC,EAAWuB,KAAK/B,GACfiB,IAAAA,cAAA,MAAIrI,IAAKoH,EAAKtI,IACZuJ,IAAAA,cAACqC,GAAc,CACbtD,KAAMA,EACNuD,SAAUxC,EAAYmB,IAAIlC,EAAKtI,IAC/BmJ,YAAaA,EACbC,UAAWA,EACX0C,aAAcjB,EACdpB,cAAeuB,QAMvBzB,IAAAA,cAAA,OAAK2B,UAAU,eAAehC,IAAavF,EAAAA,EAAAA,GAAElC,EAAAA,EAAE6D,cAKzD,CAEA,SAASsG,GAAcG,GAOC,IAPA,KACtBzD,EAAI,SACJuD,EAAQ,YACR1C,EAAW,UACXC,EAAS,aACT0C,EAAY,cACZrC,GACoBsC,EACpB,MAAMC,GAAcC,EAAAA,EAAAA,QAAiB,MAgBrC,OAbAhB,EAAAA,EAAAA,YAAU,KACR,MAAMiB,EAAKF,EAAYG,QACvB,IAAKD,EAAI,OACT,MAAME,EAAed,IACnBA,EAAEe,kBACFf,EAAEgB,gBAAgB,EAGpB,OADAJ,EAAGK,iBAAiB,QAASH,GACtB,KACLF,EAAGM,oBAAoB,QAASJ,EAAY,CAC7C,GACA,IAGD7C,IAAAA,cAACxD,EAAW,CACVmF,UAAW9K,IAAW,oBAAqB,CACzC,YAAakI,EAAK8B,WAEpBqC,KAAKC,EAAAA,EAAAA,GAAcvD,EAAab,GAChCqE,OAAQvD,EACRuC,QAASA,IAAMlC,EAAcnB,IAE7BiB,IAAAA,cAAA,OAAK2B,UAAU,QACb3B,IAAAA,cAACvD,EAAe,CACd4G,IAAKZ,EACLP,UAAWnD,EAAK8B,SAChBe,aAAa,QACbD,UAAU,gBACVE,QAAS,CAAC,CAAEC,MAAO,GAAIjK,MAAOkH,EAAKtI,KACnCoB,MAAOyK,EAAW,CAACvD,EAAKtI,IAAM,GAC9BiG,eAAiBqF,IAAM,IAAAuB,EACrBf,EAAaxD,EAAKtI,KAAc,QAAT6M,EAACvB,EAAEE,cAAM,IAAAqB,IAARA,EAAUrM,QAAO,IAG7C+I,IAAAA,cAAA,OAAK2B,UAAU,gBACb3B,IAAAA,cAACzD,EAAW,CACVgH,QAAQC,EAAAA,EAAAA,eAAczE,EAAKpF,MAC3B8J,sBAAsB,KAG1BzD,IAAAA,cAAA,OAAK2B,UAAU,QAAQ+B,MAAO3E,EAAK2E,OAChC3E,EAAK2E,QAIV1D,IAAAA,cAAA,OAAK2B,UAAU,SACb3B,IAAAA,cAAA,OAAK2B,UAAU,iBACZrI,EAAAA,EAAAA,GAAayF,EAAKxF,KAAMF,EAAAA,EAAmBqB,YAKtD,CAtMCiJ,EAAAjG,KAAAqE,GAAAhE,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAS,EAAA0E,EAAAlF,EAAAC,EAAAU,EAAAwE,EAAAjF,EAAAC,EAAAS,EAAAwE,EAAAhF,GAAAiF,GAAApH,EAAAqH,KAAAC,EAAAA,EAAAA,GAAAN,EAAA,CAtEA1H,EAAc,wBAAyB,CACtCiI,WAAY,CAACC,EAAAA,MACb,EAGCjI,EAAS,CAAEkI,WAAW,IAAQ,iBAI9BlI,IAAU,gBAIVA,IAAU,kBAIVA,IAAU,gBAIVA,EAAS,CAAEkI,WAAW,IAAQ,kBAO9BjI,EAAM,CAAExC,KAAM,iBAAiB,qBAAA0K,IAAA7E,EAAAA,EAAAA,GAAAtC,GAAAmH,GAAA,CAAAA,EAAA5E,KAAAC,EAAAA,EAAAA,GAAAxC,GAAAmH,EAAA5E,IAAA,CAO/BtD,EAAM,CAAExC,KAAM,oBAAoB,uBAAA0K,IAAA7E,EAAAA,EAAAA,GAAAnC,GAAAgH,GAAA,CAAAA,EAAA5E,KAAAC,EAAAA,EAAAA,GAAArC,GAAAgH,EAAA5E,IAAA,CAMlCtD,EAAM,CAAExC,KAAM,kBAAkB,qBAAA0K,IAAA7E,EAAAA,EAAAA,GAAAlC,GAAA+G,GAAA,CAAAA,EAAA5E,KAAAC,EAAAA,EAAAA,GAAApC,GAAA+G,EAAA5E,KAAA,GAAA6E,GAAA7G,GAAAwD,KAAAsD,EAAAA,EAAAA,GAAAD,KAtCV3G,EAAAA,mBAAgBqG","sources":["webpack:///./src/notice-list/styles.shadow.css","webpack:///../../node_modules/classnames/index.js","webpack:///../../../src/i18n/constants.ts","webpack:///../../../../src/i18n/locales/en.ts","webpack:///../../../../src/i18n/locales/zh.ts","webpack:///../../../src/i18n/index.ts","webpack:///../../src/humanizeTime.ts","webpack:///./src/notice-list/i18n.ts","webpack:///./src/notice-list/index.tsx"],"sourcesContent":["// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block}:host([hidden]){display:none}.toolbar{display:flex;gap:8px;align-items:center;padding:12px 16px}.toolbar .read-link::part(button){padding:4px 8px}.all-checkbox,\n.item-checkbox{margin-right:10px}.all-checkbox::part(checkbox-option):hover,\n.item-checkbox::part(checkbox-option):hover{background-color:transparent}ul{list-style:none;margin:0;padding:0}.message-item-link{display:block}.message-item-link::part(link){display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 16px;color:var(--text-color-title);border-bottom:1px solid rgba(0,0,0,0.1);transition:all 0.2s}.message-item-link.has-read::part(link){opacity:0.65}.message-item-link::part(link):hover{background-color:rgba(0,0,0,0.04)}.left{display:flex;align-items:center;gap:12px;flex:1;min-width:0}.left .icon-wrapper{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-size:24px}.left .title{flex:1;min-width:0;font-size:14px;font-weight:500;color:var(--text-color-title);line-height:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.right{flex-shrink:0;display:flex;align-items:center}.right .message-time{flex-shrink:0;line-height:22px;color:rgba(0,0,0,0.45)}.empty-state{display:flex;align-items:center;justify-content:center;padding:60px 20px;font-size:14px;color:var(--text-color-secondary)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","export const NS_LIBS_DATETIME = \"libs-datetime\";\n\nexport enum K {\n TODAY = \"TODAY\",\n YESTERDAY = \"YESTERDAY\",\n FUTURE_AFTER = \"FUTURE_AFTER\",\n FORMAT_MEDIUM_DATETIME = \"FORMAT_MEDIUM_DATETIME\",\n FORMAT_MEDIUM_DATE = \"FORMAT_MEDIUM_DATE\",\n FORMAT_SHORT_DATETIME = \"FORMAT_SHORT_DATETIME\",\n FORMAT_SHORT_DATE = \"FORMAT_SHORT_DATE\",\n FORMAT_SHORT_DAY_DATETIME = \"FORMAT_SHORT_DAY_DATETIME\",\n FORMAT_SHORT_DAY_DATE = \"FORMAT_SHORT_DAY_DATE\",\n SECONDS = \"SECONDS\",\n MILL_SECONDS = \"MILL_SECONDS\",\n MINUTES = \"MINUTES\",\n HOURS = \"HOURS\",\n DAYS = \"DARS\",\n MONTHS = \"MONTHS\",\n}\n\nexport type Locale = { [key in K]: string };\n","import { Locale, K } from \"../constants.js\";\n\nconst locale: Locale = {\n [K.YESTERDAY]: \"Yesterday\",\n [K.TODAY]: \"Today\",\n [K.FUTURE_AFTER]: \"After {{time}}\",\n [K.FORMAT_MEDIUM_DATETIME]: \"LLL\",\n [K.FORMAT_MEDIUM_DATE]: \"LL\",\n [K.FORMAT_SHORT_DATETIME]: \"MMM D ah:mm\",\n [K.FORMAT_SHORT_DATE]: \"MMM D\",\n [K.FORMAT_SHORT_DAY_DATETIME]: \"MMM D HH:mm\",\n [K.FORMAT_SHORT_DAY_DATE]: \"MMM D\",\n [K.MONTHS]: \"months\",\n [K.HOURS]: \"hours\",\n [K.SECONDS]: \"seconds\",\n [K.MILL_SECONDS]: \"millseconds\",\n [K.DAYS]: \"days\",\n [K.MINUTES]: \"minutes\",\n};\n\nexport default locale;\n","import { Locale, K } from \"../constants.js\";\n\nconst locale: Locale = {\n [K.YESTERDAY]: \"昨天\",\n [K.TODAY]: \"今天\",\n [K.FUTURE_AFTER]: \"{{time}}后\",\n [K.FORMAT_MEDIUM_DATETIME]: \"LL ah:mm\",\n [K.FORMAT_MEDIUM_DATE]: \"LL\",\n [K.FORMAT_SHORT_DATETIME]: \"MMMD日 ah:mm\",\n [K.FORMAT_SHORT_DATE]: \"MMMD日\",\n [K.FORMAT_SHORT_DAY_DATETIME]: \"MMMD日 HH:mm\",\n [K.FORMAT_SHORT_DAY_DATE]: \"MMMD日\",\n [K.MONTHS]: \"个月\",\n [K.HOURS]: \"小时\",\n [K.SECONDS]: \"秒\",\n [K.MILL_SECONDS]: \"毫秒\",\n [K.DAYS]: \"天\",\n [K.MINUTES]: \"分钟\",\n};\n\nexport default locale;\n","import { initializeI18n } from \"@next-core/i18n\";\nimport { NS_LIBS_DATETIME } from \"./constants.js\";\nimport en from \"./locales/en.js\";\nimport zh from \"./locales/zh.js\";\n\nexport function addResourceBundle(): void {\n initializeI18n(NS_LIBS_DATETIME, { en, zh });\n}\n","import moment from \"moment\";\nimport { i18n } from \"@next-core/i18n\";\nimport { NS_LIBS_DATETIME, K } from \"./i18n/constants.js\";\nimport { addResourceBundle } from \"./i18n/index.js\";\n\naddResourceBundle();\n\nconst TIME_OFFSET = 0;\n\nexport enum HumanizeTimeFormat {\n full = \"full\",\n default = \"default\",\n relative = \"relative\",\n past = \"past\",\n future = \"future\",\n accurate = \"accurate\",\n auto = \"auto\",\n}\n\nexport const humanizeTime = (\n time: moment.MomentInput,\n format: HumanizeTimeFormat = HumanizeTimeFormat.auto,\n /** 默认为 \"datetime\" */\n type?: \"datetime\" | \"date\"\n): string | null => {\n if (\n time === undefined ||\n time === null ||\n time === -Infinity ||\n time === Infinity\n ) {\n return null;\n }\n const m = moment(time);\n const now = moment().add(TIME_OFFSET);\n const fFull = type === \"date\" ? \"LL\" : \"LL HH:mm\";\n const fMedium = i18n.t(\n `${NS_LIBS_DATETIME}:${type === \"date\" ? K.FORMAT_MEDIUM_DATE : K.FORMAT_MEDIUM_DATETIME}`\n );\n const fShort = i18n.t(\n `${NS_LIBS_DATETIME}:${type === \"date\" ? K.FORMAT_SHORT_DATE : K.FORMAT_SHORT_DATETIME}`\n );\n const fShort24 = i18n.t(\n `${NS_LIBS_DATETIME}:${type === \"date\" ? K.FORMAT_SHORT_DAY_DATE : K.FORMAT_SHORT_DAY_DATETIME}`\n );\n const fDefault = type === \"date\" ? \"LL\" : \"LL HH:mm:ss\";\n const fHourMinute = \"HH:mm\";\n let text;\n\n /* 用于精确显示时间的参数\n * 今天与昨天,显示:今天(昨天)x:x的格式,如:今天12:21、昨天16:33\n * 昨天以前的时间,显示:x月x日x时:x分,如:11月23日11:22\n * 今年以前的时间,显示:x年x月x日x时:x分,如:2016年11月11日11:11\n */\n const getAccurateTime = () => {\n const diff = +m.diff(now, \"days\", true).toFixed(1);\n let _text = \"\";\n const retVal =\n m.year() < now.year()\n ? \"lastYear\"\n : diff < -2 || m.isBefore(now.clone().add(-1, \"day\"), \"day\")\n ? \"twoDaysBefore\"\n : m.isSame(now.clone().add(-1, \"day\"), \"day\")\n ? \"yesterday\"\n : m.isSame(now, \"day\")\n ? \"sameDay\"\n : diff < 2 && m.isSame(now.clone().add(1, \"day\"), \"day\")\n ? \"nextDay\"\n : diff < 7\n ? \"nextWeek\"\n : \"default\";\n switch (retVal) {\n case \"sameDay\":\n case \"yesterday\":\n _text = `${i18n.t(`${NS_LIBS_DATETIME}:${retVal === \"yesterday\" ? K.YESTERDAY : K.TODAY}`)}${\n type === \"date\" ? \"\" : ` ${m.format(fHourMinute)}`\n }`;\n break;\n case \"lastYear\":\n _text = m.format(fFull);\n break;\n case \"twoDaysBefore\":\n _text = m.format(fShort24);\n break;\n default:\n _text = m.format(fFull);\n }\n\n return _text;\n };\n\n switch (format) {\n case HumanizeTimeFormat.full:\n text = m.format(fFull);\n break;\n case HumanizeTimeFormat.default:\n text = m.format(fDefault);\n break;\n case HumanizeTimeFormat.relative: {\n const diff = +m - +now;\n text =\n diff <= 0\n ? moment.duration(diff).humanize(true)\n : i18n.t(`${NS_LIBS_DATETIME}:${K.FUTURE_AFTER}`, {\n time: moment.duration(diff).humanize(),\n });\n break;\n }\n case HumanizeTimeFormat.past:\n text = moment.duration(Math.min(+m - +now, 0)).humanize(true);\n break;\n case HumanizeTimeFormat.future:\n text = i18n.t(`${NS_LIBS_DATETIME}:${K.FUTURE_AFTER}`, {\n time: moment.duration(Math.max(+m - +now, 0)).humanize(),\n });\n break;\n case HumanizeTimeFormat.accurate:\n text = getAccurateTime();\n break;\n default:\n text = m.format(m.year() === now.year() ? fShort : fMedium);\n }\n return text;\n};\n","import { i18n } from \"@next-core/i18n\";\n\nexport enum K {\n MARK_READ = \"MARK_READ\",\n MARK_ALL_READ = \"MARK_ALL_READ\",\n NO_MESSAGE = \"NO_MESSAGE\",\n}\n\nconst en: Locale = {\n MARK_READ: \"Mark as read\",\n MARK_ALL_READ: \"Mark all as read\",\n NO_MESSAGE: \"No messages\",\n};\n\nconst zh: Locale = {\n MARK_READ: \"标记已读\",\n MARK_ALL_READ: \"全部已读\",\n NO_MESSAGE: \"暂无消息\",\n};\n\nexport const NS = \"bricks/ai-portal/notice-list\";\n\nexport const locales = { en, zh };\n\nexport const t = i18n.getFixedT(null, NS);\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","import React, {\n useState,\n useCallback,\n useMemo,\n useEffect,\n useRef,\n} from \"react\";\nimport classNames from \"classnames\";\nimport { createDecorators, EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport { K, NS, locales, t } from \"./i18n.js\";\nimport styleText from \"./styles.shadow.css\";\nimport { NoticeItem } from \"../shared/interfaces.js\";\nimport { GeneralIcon, GeneralIconProps } from \"@next-bricks/icons/general-icon\";\nimport { Link, LinkProps, Target } from \"@next-bricks/basic/link\";\nimport type {\n Checkbox,\n CheckboxProps,\n CheckboxValueType,\n} from \"@next-bricks/form/checkbox\";\nimport { parseTemplate } from \"../shared/parseTemplate.js\";\nimport { humanizeTime, HumanizeTimeFormat } from \"@next-shared/datetime\";\nimport { getNotifyIcon } from \"../notice-dropdown/index.js\";\nimport { Button, ButtonProps } from \"@next-bricks/basic/button\";\n\ninitializeI18n(NS, locales);\n\nconst { defineElement, property, event } = createDecorators();\n\nexport interface CheckboxEvents {\n change: CustomEvent<CheckboxValueType[]>;\n}\n\nexport interface CheckboxMapping {\n onValuesChange: \"change\";\n}\n\nconst WrappedButton = wrapBrick<Button, ButtonProps>(\"eo-button\");\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\nconst WrappedCheckbox = wrapBrick<\n Checkbox,\n CheckboxProps,\n CheckboxEvents,\n CheckboxMapping\n>(\"eo-checkbox\", {\n onValuesChange: \"change\",\n});\n\nexport interface NoticeListProps {\n /** 消息数据列表 */\n dataSource?: NoticeItem[];\n /** 空状态文案 */\n emptyText?: string;\n /** 详情链接 */\n urlTemplate?: string;\n /** 详情链接目标 */\n urlTarget?: Target;\n /** 选中的消息 ID 数组 */\n selectedIds?: string[];\n}\n\n/**\n * 构件 `ai-portal.notice-list`\n *\n * 消息通知列表构件,用于展示消息列表,支持批量操作\n */\nexport\n@defineElement(\"ai-portal.notice-list\", {\n styleTexts: [styleText],\n})\nclass NoticeList extends ReactNextElement implements NoticeListProps {\n /** 消息数据列表 */\n @property({ attribute: false })\n accessor dataSource: NoticeItem[] | undefined;\n\n /** 空状态文案 */\n @property()\n accessor emptyText: string | undefined;\n\n /** 详情链接 */\n @property()\n accessor urlTemplate: string | undefined;\n\n /** 详情链接目标 */\n @property()\n accessor urlTarget: Target | undefined;\n\n /** 选中的消息 ID 数组 */\n @property({ attribute: false })\n accessor selectedIds: string[] | undefined;\n\n /**\n * 消息项点击事件\n * @detail 消息项数据\n */\n @event({ type: \"notice.click\" })\n accessor #noticeClickEvent!: EventEmitter<NoticeItem>;\n\n /**\n * 标记消息项已读事件\n * @detail 选中的消息 ID 数组\n */\n @event({ type: \"mark.items.read\" })\n accessor #markItemsReadEvent!: EventEmitter<NoticeItem[]>;\n\n /**\n * 全部已读事件\n */\n @event({ type: \"mark.all.read\" })\n accessor #markAllReadEvent!: EventEmitter<void>;\n\n #handleNoticeClick = (item: NoticeItem) => {\n this.#noticeClickEvent.emit(item);\n };\n\n #handleMarkItemsRead = (items: NoticeItem[]) => {\n this.#markItemsReadEvent.emit(items);\n };\n\n #handleMarkAllRead = () => {\n this.#markAllReadEvent.emit();\n };\n\n render() {\n return (\n <NoticeListComponent\n dataSource={this.dataSource}\n emptyText={this.emptyText}\n onNoticeClick={this.#handleNoticeClick}\n onMarkItemsRead={this.#handleMarkItemsRead}\n onMarkAllRead={this.#handleMarkAllRead}\n selectedIds={this.selectedIds}\n urlTemplate={this.urlTemplate}\n urlTarget={this.urlTarget}\n />\n );\n }\n}\n\ninterface NoticeListComponentProps extends NoticeListProps {\n onNoticeClick: (item: NoticeItem) => void;\n onMarkItemsRead: (items: NoticeItem[]) => void;\n onMarkAllRead: () => void;\n}\n\ninterface NoticeListItemProps {\n item: NoticeItem;\n selected: boolean;\n urlTemplate?: string;\n urlTarget?: Target;\n onSelectItem: (id: string, checked: boolean) => void;\n onNoticeClick: (item: NoticeItem) => void;\n}\n\nfunction NoticeListComponent({\n dataSource = [],\n emptyText,\n onNoticeClick,\n onMarkItemsRead,\n onMarkAllRead,\n urlTemplate,\n urlTarget,\n selectedIds: _selectedIds,\n}: NoticeListComponentProps) {\n const [selectedIds, setSelectedIds] = useState<Set<string>>(\n new Set(_selectedIds || [])\n );\n\n const currentAllIds = useMemo(() => {\n // 过滤当前已读的项目,只有未读的项目可以选中\n return (\n dataSource?.filter((item) => item.isUnread).map((item) => item.id) || []\n );\n }, [dataSource]);\n\n const isAllSelected = useMemo(() => {\n return (\n currentAllIds.length > 0 &&\n currentAllIds.every((id) => selectedIds.has(id))\n );\n }, [currentAllIds, selectedIds]);\n\n const handleSelectAll = useCallback(\n (checked: boolean) => {\n const newSelectedIds = new Set(checked ? currentAllIds : []);\n setSelectedIds(newSelectedIds);\n },\n [currentAllIds]\n );\n\n const handleSelectItem = useCallback(\n (id: string, checked: boolean) => {\n const newSelectedIds = checked\n ? new Set([...selectedIds, id])\n : new Set(\n Array.from(selectedIds).filter((selectedId) => selectedId !== id)\n );\n\n setSelectedIds(newSelectedIds);\n },\n [selectedIds]\n );\n\n const handleNoticeItemClick = useCallback(\n (item: NoticeItem) => {\n onNoticeClick(item);\n },\n [onNoticeClick]\n );\n\n useEffect(() => {\n setSelectedIds(new Set(_selectedIds || []));\n }, [_selectedIds]);\n\n return (\n <div>\n <div className=\"toolbar\">\n <WrappedCheckbox\n themeVariant=\"elevo\"\n className=\"all-checkbox\"\n options={[{ label: \"\", value: \"selectAll\" }]}\n value={isAllSelected ? [\"selectAll\"] : []}\n onValuesChange={(e) => handleSelectAll(!!e.detail?.length)}\n />\n\n <WrappedButton\n className=\"read-link\"\n type=\"link\"\n themeVariant=\"elevo\"\n disabled={selectedIds.size === 0}\n onClick={() =>\n onMarkItemsRead(\n dataSource.filter((item) => selectedIds.has(item.id))\n )\n }\n >\n {t(K.MARK_READ)}\n </WrappedButton>\n <WrappedButton\n className=\"read-link\"\n type=\"link\"\n onClick={onMarkAllRead}\n themeVariant=\"elevo\"\n >\n {t(K.MARK_ALL_READ)}\n </WrappedButton>\n </div>\n\n <div className=\"content\">\n {dataSource?.length > 0 ? (\n <ul className=\"message-list\">\n {dataSource.map((item) => (\n <li key={item.id}>\n <NoticeListItem\n item={item}\n selected={selectedIds.has(item.id)}\n urlTemplate={urlTemplate}\n urlTarget={urlTarget}\n onSelectItem={handleSelectItem}\n onNoticeClick={handleNoticeItemClick}\n />\n </li>\n ))}\n </ul>\n ) : (\n <div className=\"empty-state\">{emptyText || t(K.NO_MESSAGE)}</div>\n )}\n </div>\n </div>\n );\n}\n\nfunction NoticeListItem({\n item,\n selected,\n urlTemplate,\n urlTarget,\n onSelectItem,\n onNoticeClick,\n}: NoticeListItemProps) {\n const checkboxRef = useRef<Checkbox>(null);\n\n // stop propagation and prevent default manually in eo-link\n useEffect(() => {\n const el = checkboxRef.current;\n if (!el) return;\n const handleClick = (e: MouseEvent) => {\n e.stopPropagation();\n e.preventDefault();\n };\n el.addEventListener(\"click\", handleClick);\n return () => {\n el.removeEventListener(\"click\", handleClick);\n };\n }, []);\n\n return (\n <WrappedLink\n className={classNames(\"message-item-link\", {\n \"has-read\": !item.isUnread,\n })}\n url={parseTemplate(urlTemplate, item)}\n target={urlTarget}\n onClick={() => onNoticeClick(item)}\n >\n <div className=\"left\">\n <WrappedCheckbox\n ref={checkboxRef}\n disabled={!item.isUnread}\n themeVariant=\"elevo\"\n className=\"item-checkbox\"\n options={[{ label: \"\", value: item.id }]}\n value={selected ? [item.id] : []}\n onValuesChange={(e) => {\n onSelectItem(item.id, !!e.detail?.length);\n }}\n />\n <div className=\"icon-wrapper\">\n <WrappedIcon\n imgSrc={getNotifyIcon(item.type)}\n keepSvgOriginalColor={true}\n />\n </div>\n <div className=\"title\" title={item.title}>\n {item.title}\n </div>\n </div>\n\n <div className=\"right\">\n <div className=\"message-time\">\n {humanizeTime(item.time, HumanizeTimeFormat.relative)}\n </div>\n </div>\n </WrappedLink>\n );\n}\n"],"names":["___CSS_LOADER_EXPORT___","push","module","id","toString","hasOwn","hasOwnProperty","classNames","classes","i","arguments","length","arg","appendClass","parseValue","Array","isArray","apply","Object","prototype","includes","key","call","value","newClass","exports","default","NS_LIBS_DATETIME","K","YESTERDAY","TODAY","FUTURE_AFTER","FORMAT_MEDIUM_DATETIME","FORMAT_MEDIUM_DATE","FORMAT_SHORT_DATETIME","FORMAT_SHORT_DATE","FORMAT_SHORT_DAY_DATETIME","FORMAT_SHORT_DAY_DATE","MONTHS","HOURS","SECONDS","MILL_SECONDS","DAYS","MINUTES","initializeI18n","en","zh","HumanizeTimeFormat","humanizeTime","time","format","undefined","auto","type","Infinity","m","moment","now","add","fFull","fMedium","i18n","t","fShort","fShort24","fDefault","text","full","relative","diff","humanize","past","Math","min","future","max","accurate","getAccurateTime","toFixed","_text","retVal","year","isBefore","clone","isSame","NS","locales","MARK_READ","MARK_ALL_READ","NO_MESSAGE","getFixedT","defineElement","property","event","createDecorators","WrappedButton","wrapBrick","WrappedIcon","WrappedLink","WrappedCheckbox","onValuesChange","_NoticeList","_A","WeakMap","_B","_C","_D","_E","_F","_NoticeList_brand","WeakSet","_G","_H","_handleNoticeClick","_handleMarkItemsRead","_handleMarkAllRead","NoticeList","ReactNextElement","constructor","_classPrivateMethodInitSpec","_classPrivateFieldInitSpec","_init_dataSource","_init_extra_dataSource","_init_emptyText","_init_extra_emptyText","_init_urlTemplate","_init_extra_urlTemplate","_init_urlTarget","_init_extra_urlTarget","_init_selectedIds","_init_extra_selectedIds","_init_noticeClickEvent","_init_extra_noticeClickEvent","_init_markItemsReadEvent","_init_extra_markItemsReadEvent","_init_markAllReadEvent","_init_extra_markAllReadEvent","item","_classPrivateGetter","this","_get_noticeClickEvent","emit","items","_get_markItemsReadEvent","_get_markAllReadEvent","dataSource","_classPrivateFieldGet","v","_classPrivateFieldSet","emptyText","urlTemplate","urlTarget","selectedIds","render","React","NoticeListComponent","onNoticeClick","onMarkItemsRead","onMarkAllRead","_ref","_selectedIds","setSelectedIds","useState","Set","currentAllIds","useMemo","filter","isUnread","map","isAllSelected","every","has","handleSelectAll","useCallback","checked","newSelectedIds","handleSelectItem","from","selectedId","handleNoticeItemClick","useEffect","className","themeVariant","options","label","e","_e$detail","detail","disabled","size","onClick","NoticeListItem","selected","onSelectItem","_ref2","checkboxRef","useRef","el","current","handleClick","stopPropagation","preventDefault","addEventListener","removeEventListener","url","parseTemplate","target","ref","_e$detail2","imgSrc","getNotifyIcon","keepSvgOriginalColor","title","_NoticeList2","_set_noticeClickEvent","_set_markItemsReadEvent","_set_markAllReadEvent","c","_initClass","_applyDecs","styleTexts","styleText","attribute","o","_","_checkInRHS"],"sourceRoot":""}