UNPKG

text-overflow-processor-react

Version:
10 lines 17.2 kB
module.exports=function(e){var t={};function n(i){if(t[i])return t[i].exports;var o=t[i]={i:i,l:!1,exports:{}};return e[i].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(i,o,function(t){return e[t]}.bind(null,o));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=3)}([function(e,t){e.exports=require("react")},function(e,t,n){"use strict";e.exports=n(2)},function(e,t,n){"use strict"; /** * @license React * react-jsx-runtime.production.min.js * * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */var i=n(0),o=Symbol.for("react.element"),s=Symbol.for("react.fragment"),r=Object.prototype.hasOwnProperty,l=i.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,u={key:!0,ref:!0,__self:!0,__source:!0};function c(e,t,n){var i,s={},c=null,a=null;for(i in void 0!==n&&(c=""+n),void 0!==t.key&&(c=""+t.key),void 0!==t.ref&&(a=t.ref),t)r.call(t,i)&&!u.hasOwnProperty(i)&&(s[i]=t[i]);if(e&&e.defaultProps)for(i in t=e.defaultProps)void 0===s[i]&&(s[i]=t[i]);return{$$typeof:o,type:e,key:c,ref:a,props:s,_owner:l.current}}t.Fragment=s,t.jsx=c,t.jsxs=c},function(e,t,n){"use strict";n.r(t),n.d(t,"default",(function(){return j}));var i=n(1),o=n(0),s=Object.defineProperty,r=(e,t,n)=>((e,t,n)=>t in e?s(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n)(e,"symbol"!=typeof t?t+"":t,n),l=new Map,u=new WeakMap,c=0,a=void 0;function d(e){return Object.keys(e).sort().filter(t=>void 0!==e[t]).map(t=>{return`${t}_${"root"===t?(n=e.root,n?(u.has(n)||(c+=1,u.set(n,c.toString())),u.get(n)):"0"):e[t]}`;var n}).toString()}function f(e,t,n={},i=a){if(void 0===window.IntersectionObserver&&void 0!==i){const o=e.getBoundingClientRect();return t(i,{isIntersecting:i,target:e,intersectionRatio:"number"==typeof n.threshold?n.threshold:0,time:0,boundingClientRect:o,intersectionRect:o,rootBounds:o}),()=>{}}const{id:o,observer:s,elements:r}=function(e){const t=d(e);let n=l.get(t);if(!n){const i=new Map;let o;const s=new IntersectionObserver(t=>{t.forEach(t=>{var n;const s=t.isIntersecting&&o.some(e=>t.intersectionRatio>=e);e.trackVisibility&&void 0===t.isVisible&&(t.isVisible=s),null==(n=i.get(t.target))||n.forEach(e=>{e(s,t)})})},e);o=s.thresholds||(Array.isArray(e.threshold)?e.threshold:[e.threshold||0]),n={id:t,observer:s,elements:i},l.set(t,n)}return n}(n),u=r.get(e)||[];return r.has(e)||r.set(e,u),u.push(t),s.observe(e),function(){u.splice(u.indexOf(t),1),0===u.length&&(r.delete(e),s.unobserve(e)),0===r.size&&(s.disconnect(),l.delete(o))}}o.Component;var h=function(e,t,n,i,o,s,r,l,u){void 0===i&&(i=12),void 0===o&&(o=400),void 0===s&&(s=!0),void 0===r&&(r=""),void 0===l&&(l=""),void 0===u&&(u=null);var c="",a="",d="",f=0,h=0,p=0,v=!1;if(!e||n<i||"string"!=typeof e)return e;var b=e.split(""),O=document.createElement("span"),y="position:absolute;visibility:hidden;padding:0;white-space:nowrap;overflow-x:auto;font-size:".concat(i,"px;font-weight:").concat(o,";");O.style.cssText=y+r,O.setAttribute("class",l),u?u.appendChild(O):document.body.appendChild(O);for(var S=0,g=b.length;S<g;S++){var m=b[S],w="\n"===m,x="\n"===b[S-1],j=0;a=d,d+=m,O.innerHTML=d,w&&(h+=j=x?t:t-f%t);var N=O.offsetWidth+h;if(w&&N===n&&(v=!0),N>n){if(w&&!v){v=!0,p=j-(N-n),f=n,c=d;continue}if(s){O.innerHTML="...";var C=O.offsetWidth,J="...";if(p>=C)J=a.slice(0,-1)+"...";else for(var M=0,k=a.split("").length;M<k;M++){var R=-(M+1),B=a.slice(R);if(O.innerHTML=B,O.offsetWidth+p>=C){J=a.slice(0,R)+"...";break}}c=J}else c=a;break}p=w?j:0,f=N,c=d}return u?u.removeChild(O):document.body.removeChild(O),c},p=function(e){if("[object Object]"!==Object.prototype.toString.call(e))return"";var t="";for(var n in e)e[n]&&(t+="".concat(n," "));return t.trim()},v=function(e){return"string"==typeof e?e:""};var b=function(e){var t=e.text,n=e.reRenderDependencies,i=e.type,s=e.className,r=e.style,l=e.buttonClassName,u=e.buttonStyle,c=e.isClickOriginalEvent,a=e.isDefaultFold,d=e.unfoldButtonText,f=e.foldButtonText,h=e.isShowAllContent,p=e.isMustButton,b=e.isMustNoButton,O=e.lineHeight,y=e.isRenderShowAllDOM,S=e.ellipsisLineClamp,g=e.isJsComputed,m=e.fontSize,w=e.fontClassName,x=e.fontStyle,j=e.textEndSlot,N=e.extraOccupiedW,C=e.shadowFoldShowH,J=e.shadowFoldButtonPlacement,M=e.isShadowLayer,k=e.shadowClassName,R=e.shadowStyle,B=e.isListenVisible;return Object(o.useMemo)((function(){if(!Array.isArray(n))return[t];if(Array.isArray(n)&&!n.length)return[];var e=[];switch(!0){case n.includes("all"):e=[t,i,s,null===JSON||void 0===JSON?void 0:JSON.stringify(r),l,null===JSON||void 0===JSON?void 0:JSON.stringify(u),c,a,v(d),v(f),h,p,b,O,y,S,g,m,w,null===JSON||void 0===JSON?void 0:JSON.stringify(x),v(j),N,C,J,M,k,null===JSON||void 0===JSON?void 0:JSON.stringify(R),B];break;default:n.includes("text")&&e.push(t),n.includes("type")&&e.push(i),n.includes("className")&&e.push(s),n.includes("style")&&e.push(null===JSON||void 0===JSON?void 0:JSON.stringify(r)),n.includes("buttonClassName")&&e.push(l),n.includes("buttonStyle")&&e.push(null===JSON||void 0===JSON?void 0:JSON.stringify(u)),n.includes("isClickOriginalEvent")&&e.push(c),n.includes("isDefaultFold")&&e.push(a),n.includes("unfoldButtonText")&&e.push(v(d)),n.includes("foldButtonText")&&e.push(v(f)),n.includes("isShowAllContent")&&e.push(h),n.includes("isMustButton")&&e.push(p),n.includes("isMustNoButton")&&e.push(b),n.includes("lineHeight")&&e.push(O),n.includes("isRenderShowAllDOM")&&e.push(y),n.includes("ellipsisLineClamp")&&e.push(S),n.includes("isJsComputed")&&e.push(g),n.includes("fontSize")&&e.push(m),n.includes("fontClassName")&&e.push(w),n.includes("fontStyle")&&e.push(null===JSON||void 0===JSON?void 0:JSON.stringify(x)),n.includes("textEndSlot")&&e.push(v(j)),n.includes("extraOccupiedW")&&e.push(N),n.includes("shadowFoldShowH")&&e.push(C),n.includes("shadowFoldButtonPlacement")&&e.push(J),n.includes("isShadowLayer")&&e.push(M),n.includes("shadowClassName")&&e.push(k),n.includes("shadowStyle")&&e.push(null===JSON||void 0===JSON?void 0:JSON.stringify(R)),n.includes("isListenVisible")&&e.push(B)}return e}),[null===JSON||void 0===JSON?void 0:JSON.stringify(n)])},O=["ellipsis","shadow"],y={ellipsisLineClamp:2,isJsComputed:!1,renderToString:null,fontSize:12,fontClassName:"",fontStyle:{},textEndSlot:null,extraOccupiedW:0},S={shadowFoldShowH:76,shadowFoldButtonPlacement:"outer",isShadowLayer:!0,shadowClassName:"",shadowStyle:{}},g={reRenderDependencies:["text"],type:"ellipsis",ellipsisOption:y,shadowOption:S,buttonClassName:"",buttonStyle:{},isClickOriginalEvent:!1,isDefaultFold:!0,unfoldButtonText:"Show Less",foldButtonText:"Show All",isShowAllContent:!1,isMustButton:!1,isMustNoButton:!1,lineHeight:24,isRenderShowAllDOM:!1,isListenVisible:!1},m=["font-size","font-weight","font-style","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-stretch","font-size-adjust","font-synthesis","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","initial-letter","inline-size","line-height","line-height-step","letter-spacing","text-transform","text-indent","text-combine-upright","text-emphasis","text-emphasis-position","text-emphasis-style","text-orientation","text-rendering","text-size-adjust","word-spacing"],w=["font-size","letter-spacing","word-spacing","text-indent","line-height-step","inline-size"],x=function(){return(x=Object.assign||function(e){for(var t,n=1,i=arguments.length;n<i;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)};var j=Object(o.memo)((function(e){var t,n,s=e.text,r=void 0===s?"":s,l=e.className,u=void 0===l?"":l,c=e.style,a=void 0===c?{}:c,d=e.onClick,j=void 0===d?null:d,N=e.onFoldChange,C=void 0===N?null:N,J=e.option,M=(void 0===J?g:J)||g,k=M.reRenderDependencies,R=void 0===k?["text"]:k,B=M.type,T=void 0===B?"ellipsis":B,L=M.ellipsisOption,_=void 0===L?y:L,E=M.shadowOption,A=void 0===E?S:E,H=M.buttonClassName,F=void 0===H?"":H,D=M.buttonStyle,V=void 0===D?{}:D,z=M.isClickOriginalEvent,P=void 0!==z&&z,W=M.isDefaultFold,I=void 0===W||W,$=M.unfoldButtonText,U=void 0===$?"Show Less":$,q=M.foldButtonText,Y=void 0===q?"Show All":q,Z=M.isShowAllContent,G=void 0!==Z&&Z,K=M.isMustButton,Q=void 0!==K&&K,X=M.isMustNoButton,ee=void 0!==X&&X,te=M.lineHeight,ne=void 0===te?24:te,ie=M.isRenderShowAllDOM,oe=void 0!==ie&&ie,se=M.isListenVisible,re=void 0!==se&&se,le=_||y,ue=le.ellipsisLineClamp,ce=void 0===ue?2:ue,ae=le.isJsComputed,de=void 0!==ae&&ae,fe=le.renderToString,he=void 0===fe?null:fe,pe=le.fontSize,ve=void 0===pe?12:pe,be=le.fontClassName,Oe=void 0===be?"":be,ye=le.fontStyle,Se=void 0===ye?{}:ye,ge=le.textEndSlot,me=void 0===ge?null:ge,we=le.extraOccupiedW,xe=void 0===we?0:we,je=A||S,Ne=je.shadowFoldShowH,Ce=void 0===Ne?76:Ne,Je=je.shadowFoldButtonPlacement,Me=void 0===Je?"outer":Je,ke=je.isShadowLayer,Re=void 0===ke||ke,Be=je.shadowClassName,Te=void 0===Be?"":Be,Le=je.shadowStyle,_e=void 0===Le?{}:Le,Ee=Object(o.useState)(!0),Ae=Ee[0],He=Ee[1],Fe=Object(o.useState)(!0),De=Fe[0],Ve=Fe[1],ze=Object(o.useRef)(!0),Pe=Object(o.useState)(!1),We=Pe[0],Ie=Pe[1],$e=Object(o.useState)(!1),Ue=$e[0],qe=$e[1],Ye=Object(o.useState)(0),Ze=Ye[0],Ge=Ye[1],Ke=Object(o.useRef)(null),Qe=Object(o.useRef)(null),Xe=Object(o.useRef)(null),et=Object(o.useRef)(76),tt=Object(o.useState)(0),nt=tt[0],it=tt[1],ot=Object(o.useRef)(0),st=Object(o.useState)(0),rt=st[0],lt=st[1],ut=Object(o.useRef)({finalText:"",isFold:!0}),ct=function({threshold:e,delay:t,trackVisibility:n,rootMargin:i,root:s,triggerOnce:r,skip:l,initialInView:u,fallbackInView:c,onChange:a}={}){var d;const[h,p]=o.useState(null),v=o.useRef(a),[b,O]=o.useState({inView:!!u,entry:void 0});v.current=a,o.useEffect(()=>{if(l||!h)return;let o;return o=f(h,(e,t)=>{O({inView:e,entry:t}),v.current&&v.current(e,t),t.isIntersecting&&r&&o&&(o(),o=void 0)},{root:s,rootMargin:i,threshold:e,trackVisibility:n,delay:t},c),()=>{o&&o()}},[Array.isArray(e)?e.toString():e,h,s,i,r,l,n,c,t]);const y=null==(d=b.entry)?void 0:d.target,S=o.useRef(void 0);h||!y||r||l||S.current===y||(S.current=y,O({inView:!!u,entry:void 0}));const g=[p,b.inView,b.entry];return g.ref=g[0],g.inView=g[1],g.entry=g[2],g}({threshold:.1,skip:!re}),at=ct.ref,dt=ct.inView,ft=Object(o.useMemo)((function(){var e="";if(Se&&"[object Object]"===Object.prototype.toString.call(Se)&&"{}"!==(null===JSON||void 0===JSON?void 0:JSON.stringify(Se))){var t=new RegExp("[A-Z]","g");for(var n in Se){var i=n.replaceAll(t,(function(e){return"-"+e.toLowerCase()})),o=Se[n];if(m.includes(i)){var s=w.includes(i)&&"number"==typeof o;e+="".concat(i,":").concat(o).concat(s?"px":"",";")}}}return e}),[null===JSON||void 0===JSON?void 0:JSON.stringify(Se)]),ht=Object(o.useMemo)((function(){var e="",t=!1;if(nt&&de){var n=nt*ce,o=document.createElement("span");o.style.cssText="position:absolute;visibility:hidden;",o.innerHTML="".concat(Y&&(null==he?void 0:he(Object(i.jsx)(i.Fragment,{children:Y})))||""),Qe.current?Qe.current.appendChild(o):document.body.appendChild(o);var s=o.offsetWidth||0;Qe.current?Qe.current.removeChild(o):document.body.removeChild(o);var l=h(r,nt,n-xe,ve,400,!0,ft,Oe,Qe.current),u=n-s;if(t=l.endsWith("..."))if(!Y&&!Q||ee)e=l;else e=h(r,nt,u-xe,ve,400,!0,ft,Oe,Qe.current);else if(Y&&Q&&!ee){var c=h(r,nt,u-xe,ve,400,!0,ft,Oe,Qe.current);e=(t=c.endsWith("..."))?c:r}else e=r}return We&&!De&&t||(de&&(Ve(t),!Q&&!ee&&Ie(t),Q&&Ie(!0),ee&&Ie(!1)),ut.current={finalText:e,isFold:t}),ut.current}),[r,nt,rt,ce,v(Y),ve,ft,Oe,Q,ee,de,xe]),pt=Object(o.useMemo)((function(){return"ellipsis"===T&&We&&De&&!de}),[T,We,De,de]),vt=Object(o.useMemo)((function(){return Re&&We&&De}),[Re,We,De]),bt=Object(o.useMemo)((function(){return De?Y:U}),[De,v(U),v(Y)]),Ot=Object(o.useMemo)((function(){var e={display:We?"inline-block":"none",lineHeight:ne+"px"};return"[object Object]"!==Object.prototype.toString.call(V)?(console.error("buttonStyle格式不正确!"),e):x(x({},e),V||{})}),[We,ne,null===JSON||void 0===JSON?void 0:JSON.stringify(V)]),yt=Object(o.useMemo)((function(){return ee&&De&&me&&Object(i.jsx)("span",x({className:"click-btn",style:{display:"inline-block",lineHeight:ne+"px"}},{children:me}))}),[ee,De,v(me),ne]),St=Object(o.useMemo)((function(){var e={top:"inner"===Me&&De?0:Ce-20};return vt&&Object(i.jsx)("span",{className:"shadow ".concat(Te),style:x(x({},e),_e||{})})}),[De,vt,Me,Ce,Te,null===JSON||void 0===JSON?void 0:JSON.stringify(_e)]),gt=Object(o.useCallback)((function(){var e,t,n,i;Qe.current&&(ot.current=Qe.current.getBoundingClientRect().width||0);var o=null===(e=Xe.current)||void 0===e?void 0:e.childNodes,s=0;if(o)for(var r=0,l=o.length;r<l;r++){var u=o[r];s+=(null==u?void 0:u.offsetHeight)||0}var c="shadow"===T&&(null===(t=Xe.current)||void 0===t?void 0:t.offsetHeight)>et.current,a=(null===(n=Xe.current)||void 0===n?void 0:n.offsetHeight)>(null===(i=Qe.current)||void 0===i?void 0:i.clientHeight);return s?c&&s>et.current||a:c||a}),[]),mt=Object(o.useCallback)((function(){if(Qe.current){var e=Qe.current.getBoundingClientRect().width||0;if(e===ot.current||e>ot.current&&!ze.current)return;ot.current=e}Ge(Date.now())}),[]),wt=Object(o.useCallback)((function(e){We&&!De&&de&&Qe.current&&lt(Date.now()),j&&j(e,De),j&&P&&Ve(!De),j||Ve(!De)}),[De,P,We,de]);return Object(o.useEffect)((function(){!function(){if(T&&O.includes(T)){if(G)return Ie(!!Q),void Ve(!1);if(et.current=Ce,de||(gt()?(Ve(!!I),Ie(!0)):(Ve(!1),Ie(!1))),Q&&Ie(!0),ee&&Ie(!1),de&&Qe.current){var e=Qe.current.getBoundingClientRect().width||0;it(e),ot.current=e}He(!1)}else console.error("文案处理类型type不在可选范围!")}()}),b({text:r,reRenderDependencies:R,type:T,className:u,style:a,buttonClassName:F,buttonStyle:V,isClickOriginalEvent:P,isDefaultFold:I,unfoldButtonText:U,foldButtonText:Y,isShowAllContent:G,isMustButton:Q,isMustNoButton:ee,lineHeight:ne,isRenderShowAllDOM:oe,ellipsisLineClamp:ce,isJsComputed:de,fontSize:ve,fontClassName:Oe,fontStyle:Se,textEndSlot:me,extraOccupiedW:xe,shadowFoldShowH:Ce,shadowFoldButtonPlacement:Me,isShadowLayer:Re,shadowClassName:Te,shadowStyle:_e,isListenVisible:re})),Object(o.useEffect)((function(){null==C||C(De,Ae),ze.current=De}),[De,Ae]),Object(o.useEffect)((function(){return window.addEventListener("resize",mt),function(){window.removeEventListener("resize",mt)}}),[]),Object(o.useEffect)((function(){var e;Ze&&!G&&(null===(e=Qe.current)||void 0===e?void 0:e.clientHeight)&&(qe(!0),Ke.current&&clearTimeout(Ke.current),Ke.current=setTimeout((function(){if(de&&Qe.current){var e=Qe.current.getBoundingClientRect().width||0;it(e),ot.current=e}else{var t=gt();We&&!De&&t||(!Q&&!ee&&Ie(t),Ve(t))}qe(!1),clearTimeout(Ke.current),Ke.current=null}),200))}),[Ze,dt]),Object(i.jsxs)("section",x({className:"text-overflow-processor-content ".concat(u),style:a,ref:at},{children:[oe&&Object(i.jsx)("p",{className:"all-text text-overflow-processor-off",style:{display:"none"},dangerouslySetInnerHTML:{__html:r}}),Object(i.jsxs)("p",x({ref:Qe,className:p({"text-overflow-processor-on":!0,"p-shadow-info":"shadow"===T,"p-ellipsis-info":"ellipsis"===T,"text-show-less":De&&"shadow"!==T,"text-show-all":!De}),style:{display:de?"inline-block":"ellipsis"===T&&Ue?"-webkit-box":"",WebkitLineClamp:ce,lineHeight:ne+"px",textAlign:pt?"justify":"inherit"}},{children:["shadow"===T&&Object(i.jsxs)(i.Fragment,{children:[Object(i.jsx)("span",{ref:Xe,className:p({text:!0,"text-show-btn-box":We,"text-show-all-box":!De}),style:{height:!De||Ue||Ae?"auto":Ce},dangerouslySetInnerHTML:{__html:r}}),!Ue&&Object(i.jsxs)(i.Fragment,{children:[("outer"===Me||!De)&&St,Object(i.jsxs)("span",x({className:p((t={"click-btn":!0,"click-btn-inner":"inner"===Me&&De},t[F]=!!F,t)),style:Ot},{children:["inner"===Me&&De&&St,Object(i.jsx)("label",x({className:"click-btn-label",onClick:wt},{children:bt}))]}))]})]}),"ellipsis"===T?Object(i.jsxs)(i.Fragment,{children:[ee&&!me||!We||Object(i.jsx)("i",{className:"click-btn-before",style:{height:"calc(100% - ".concat(ne,"px)")}}),Object(i.jsxs)("span",x({className:p((n={"click-btn":!0},n[F]=!!F,n)),style:Ot},{children:[me&&De&&me,!Ue&&Object(i.jsx)("label",x({onClick:wt},{children:bt}))]})),yt,Object(i.jsxs)("span",x({ref:Xe,className:"text-box"},{children:[Object(i.jsx)("span",{className:"text",dangerouslySetInnerHTML:{__html:de&&De?ht.finalText||"":r}}),me&&!De&&me]}))]}):null]}))]}))}))}]);