text-overflow-processor-react
Version:
10 lines • 14.5 kB
JavaScript
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"),l=Object.prototype.hasOwnProperty,r=i.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,u={key:!0,ref:!0,__self:!0,__source:!0};function a(e,t,n){var i,s={},a=null,c=null;for(i in void 0!==n&&(a=""+n),void 0!==t.key&&(a=""+t.key),void 0!==t.ref&&(c=t.ref),t)l.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:a,ref:c,props:s,_owner:r.current}}t.Fragment=s,t.jsx=a,t.jsxs=a},function(e,t,n){"use strict";n.r(t),n.d(t,"default",(function(){return O}));var i=n(1),o=n(0),s=function(e,t,n,i,o,s,l,r,u){void 0===i&&(i=12),void 0===o&&(o=400),void 0===s&&(s=!0),void 0===l&&(l=""),void 0===r&&(r=""),void 0===u&&(u=null);var a="",c="",d="",f=0,p=0,h=0,v=!1;if(!e||n<i||"string"!=typeof e)return e;var O=e.split(""),b=document.createElement("span"),S="position:absolute;visibility:hidden;padding:0;white-space:nowrap;overflow-x:auto;font-size:".concat(i,"px;font-weight:").concat(o,";");b.style.cssText=S+l,b.setAttribute("class",r),u?u.appendChild(b):document.body.appendChild(b);for(var y=0,m=O.length;y<m;y++){var x=O[y],j="\n"===x,g="\n"===O[y-1],w=0;c=d,d+=x,b.innerHTML=d,j&&(p+=w=g?t:t-f%t);var N=b.offsetWidth+p;if(j&&N===n&&(v=!0),N>n){if(j&&!v){v=!0,h=w-(N-n),f=n,a=d;continue}if(s){b.innerHTML="...";var C=b.offsetWidth,J="...";if(h>=C)J=c.slice(0,-1)+"...";else for(var M=0,T=c.split("").length;M<T;M++){var k=-(M+1),B=c.slice(k);if(b.innerHTML=B,b.offsetWidth+h>=C){J=c.slice(0,k)+"...";break}}a=J}else a=c;break}h=j?w:0,f=N,a=d}return u?u.removeChild(b):document.body.removeChild(b),a},l=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()},r=function(e){return"string"==typeof e?e:""};var u=function(e){var t=e.text,n=e.reRenderDependencies,i=e.type,s=e.className,l=e.style,u=e.buttonClassName,a=e.buttonStyle,c=e.isClickOriginalEvent,d=e.isDefaultFold,f=e.unfoldButtonText,p=e.foldButtonText,h=e.isShowAllContent,v=e.isMustButton,O=e.isMustNoButton,b=e.lineHeight,S=e.isRenderShowAllDOM,y=e.ellipsisLineClamp,m=e.isJsComputed,x=e.fontSize,j=e.fontClassName,g=e.fontStyle,w=e.textEndSlot,N=e.extraOccupiedW,C=e.shadowFoldShowH,J=e.shadowFoldButtonPlacement,M=e.isShadowLayer,T=e.shadowClassName,k=e.shadowStyle;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(l),u,null===JSON||void 0===JSON?void 0:JSON.stringify(a),c,d,r(f),r(p),h,v,O,b,S,y,m,x,j,null===JSON||void 0===JSON?void 0:JSON.stringify(g),r(w),N,C,J,M,T,null===JSON||void 0===JSON?void 0:JSON.stringify(k)];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(l)),n.includes("buttonClassName")&&e.push(u),n.includes("buttonStyle")&&e.push(null===JSON||void 0===JSON?void 0:JSON.stringify(a)),n.includes("isClickOriginalEvent")&&e.push(c),n.includes("isDefaultFold")&&e.push(d),n.includes("unfoldButtonText")&&e.push(r(f)),n.includes("foldButtonText")&&e.push(r(p)),n.includes("isShowAllContent")&&e.push(h),n.includes("isMustButton")&&e.push(v),n.includes("isMustNoButton")&&e.push(O),n.includes("lineHeight")&&e.push(b),n.includes("isRenderShowAllDOM")&&e.push(S),n.includes("ellipsisLineClamp")&&e.push(y),n.includes("isJsComputed")&&e.push(m),n.includes("fontSize")&&e.push(x),n.includes("fontClassName")&&e.push(j),n.includes("fontStyle")&&e.push(null===JSON||void 0===JSON?void 0:JSON.stringify(g)),n.includes("textEndSlot")&&e.push(r(w)),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(T),n.includes("shadowStyle")&&e.push(null===JSON||void 0===JSON?void 0:JSON.stringify(k))}return e}),[null===JSON||void 0===JSON?void 0:JSON.stringify(n)])||[]},a=["ellipsis","shadow"],c={ellipsisLineClamp:2,isJsComputed:!1,renderToString:null,fontSize:12,fontClassName:"",fontStyle:{},textEndSlot:null,extraOccupiedW:0},d={shadowFoldShowH:76,shadowFoldButtonPlacement:"outer",isShadowLayer:!0,shadowClassName:"",shadowStyle:{}},f={reRenderDependencies:["text"],type:"ellipsis",ellipsisOption:c,shadowOption:d,buttonClassName:"",buttonStyle:{},isClickOriginalEvent:!1,isDefaultFold:!0,unfoldButtonText:"Show Less",foldButtonText:"Show All",isShowAllContent:!1,isMustButton:!1,isMustNoButton:!1,lineHeight:24,isRenderShowAllDOM:!1},p=["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"],h=["font-size","letter-spacing","word-spacing","text-indent","line-height-step","inline-size"],v=function(){return(v=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 O=Object(o.memo)((function(e){var t,n,O=e.text,b=void 0===O?"":O,S=e.className,y=void 0===S?"":S,m=e.style,x=void 0===m?{}:m,j=e.onClick,g=void 0===j?null:j,w=e.onFoldChange,N=void 0===w?null:w,C=e.option,J=(void 0===C?f:C)||f,M=J.reRenderDependencies,T=void 0===M?["text"]:M,k=J.type,B=void 0===k?"ellipsis":k,_=J.ellipsisOption,L=void 0===_?c:_,E=J.shadowOption,F=void 0===E?d:E,H=J.buttonClassName,R=void 0===H?"":H,A=J.buttonStyle,D=void 0===A?{}:A,z=J.isClickOriginalEvent,P=void 0!==z&&z,W=J.isDefaultFold,I=void 0===W||W,U=J.unfoldButtonText,$=void 0===U?"Show Less":U,q=J.foldButtonText,Y=void 0===q?"Show All":q,Z=J.isShowAllContent,G=void 0!==Z&&Z,K=J.isMustButton,Q=void 0!==K&&K,V=J.isMustNoButton,X=void 0!==V&&V,ee=J.lineHeight,te=void 0===ee?24:ee,ne=J.isRenderShowAllDOM,ie=void 0!==ne&&ne,oe=L||c,se=oe.ellipsisLineClamp,le=void 0===se?2:se,re=oe.isJsComputed,ue=void 0!==re&&re,ae=oe.renderToString,ce=void 0===ae?null:ae,de=oe.fontSize,fe=void 0===de?12:de,pe=oe.fontClassName,he=void 0===pe?"":pe,ve=oe.fontStyle,Oe=void 0===ve?{}:ve,be=oe.textEndSlot,Se=void 0===be?null:be,ye=oe.extraOccupiedW,me=void 0===ye?0:ye,xe=F||d,je=xe.shadowFoldShowH,ge=void 0===je?76:je,we=xe.shadowFoldButtonPlacement,Ne=void 0===we?"outer":we,Ce=xe.isShadowLayer,Je=void 0===Ce||Ce,Me=xe.shadowClassName,Te=void 0===Me?"":Me,ke=xe.shadowStyle,Be=void 0===ke?{}:ke,_e=Object(o.useState)(!0),Le=_e[0],Ee=_e[1],Fe=Object(o.useState)(!0),He=Fe[0],Re=Fe[1],Ae=Object(o.useState)(!1),De=Ae[0],ze=Ae[1],Pe=Object(o.useState)(!1),We=Pe[0],Ie=Pe[1],Ue=Object(o.useState)(0),$e=Ue[0],qe=Ue[1],Ye=Object(o.useRef)(null),Ze=Object(o.useRef)(null),Ge=Object(o.useRef)(null),Ke=Object(o.useRef)(76),Qe=Object(o.useState)(0),Ve=Qe[0],Xe=Qe[1],et=Object(o.useState)(0),tt=et[0],nt=et[1],it=Object(o.useRef)({finalText:"",isFold:!0}),ot=Object(o.useMemo)((function(){var e="";if(Oe&&"[object Object]"===Object.prototype.toString.call(Oe)&&"{}"!==(null===JSON||void 0===JSON?void 0:JSON.stringify(Oe))){var t=new RegExp("[A-Z]","g");for(var n in Oe){var i=n.replaceAll(t,(function(e){return"-"+e.toLowerCase()})),o=Oe[n];if(p.includes(i)){var s=h.includes(i)&&"number"==typeof o;e+="".concat(i,":").concat(o).concat(s?"px":"",";")}}}return e}),[null===JSON||void 0===JSON?void 0:JSON.stringify(Oe)]),st=Object(o.useMemo)((function(){var e="",t=!1;if(Ve&&ue){var n=Ve*le,o=document.createElement("span");o.style.cssText="position:absolute;visibility:hidden;",o.innerHTML="".concat(Y&&(null==ce?void 0:ce(Object(i.jsx)(i.Fragment,{children:Y})))||""),Ze.current?Ze.current.appendChild(o):document.body.appendChild(o);var l=o.offsetWidth||0;Ze.current?Ze.current.removeChild(o):document.body.removeChild(o);var r=s(b,Ve,n-me,fe,400,!0,ot,he,Ze.current),u=n-l;if(t=r.endsWith("..."))if(!Y&&!Q||X)e=r;else e=s(b,Ve,u-me,fe,400,!0,ot,he,Ze.current);else if(Y&&Q&&!X){var a=s(b,Ve,u-me,fe,400,!0,ot,he,Ze.current);e=(t=a.endsWith("..."))?a:b}else e=b}return De&&!He&&t||(ue&&(Re(t),!Q&&!X&&ze(t),Q&&ze(!0),X&&ze(!1)),it.current={finalText:e,isFold:t}),it.current}),[b,Ve,tt,le,r(Y),fe,ot,he,Q,X,ue,me]),lt=Object(o.useMemo)((function(){return"ellipsis"===B&&De&&He&&!ue}),[B,De,He,ue]),rt=Object(o.useMemo)((function(){return Je&&De&&He}),[Je,De,He]),ut=Object(o.useMemo)((function(){return He?Y:$}),[He,r($),r(Y)]),at=Object(o.useMemo)((function(){var e={display:De?"inline-block":"none",lineHeight:te+"px"};return"[object Object]"!==Object.prototype.toString.call(D)?(console.error("buttonStyle格式不正确!"),e):v(v({},e),D||{})}),[De,te,null===JSON||void 0===JSON?void 0:JSON.stringify(D)]),ct=Object(o.useMemo)((function(){return X&&He&&Se&&Object(i.jsx)("span",v({className:"click-btn",style:{display:"inline-block",lineHeight:te+"px"}},{children:Se}))}),[X,He,r(Se),te]),dt=Object(o.useMemo)((function(){var e={top:"inner"===Ne&&He?0:ge-20};return rt&&Object(i.jsx)("span",{className:"shadow ".concat(Te),style:v(v({},e),Be||{})})}),[rt,Ne,ge,Te,null===JSON||void 0===JSON?void 0:JSON.stringify(Be)]),ft=Object(o.useCallback)((function(){var e,t,n,i,o=null===(e=Ge.current)||void 0===e?void 0:e.childNodes,s=0;if(o)for(var l=0,r=o.length;l<r;l++){var u=o[l];s+=(null==u?void 0:u.offsetHeight)||0}var a="shadow"===B&&(null===(t=Ge.current)||void 0===t?void 0:t.offsetHeight)>Ke.current,c=(null===(n=Ge.current)||void 0===n?void 0:n.offsetHeight)>(null===(i=Ze.current)||void 0===i?void 0:i.clientHeight);return s?a&&s>Ke.current||c:a||c}),[]),pt=Object(o.useCallback)((function(){qe(Date.now())}),[]),ht=Object(o.useCallback)((function(e){De&&!He&&ue&&Ze.current&&nt(Date.now()),g&&g(e,He),g&&P&&Re(!He),g||Re(!He)}),[He,P,De,ue]);return Object(o.useEffect)((function(){!function(){if(B&&a.includes(B)){if(G)return ze(!!Q),void Re(!1);Ke.current=ge,ue||(ft()?(Re(!!I),ze(!0)):(Re(!1),ze(!1))),Q&&ze(!0),X&&ze(!1),ue&&Ze.current&&Xe(Ze.current.getBoundingClientRect().width||0),Ee(!1)}else console.error("文案处理类型type不在可选范围!")}()}),u({text:b,reRenderDependencies:T,type:B,className:y,style:x,buttonClassName:R,buttonStyle:D,isClickOriginalEvent:P,isDefaultFold:I,unfoldButtonText:$,foldButtonText:Y,isShowAllContent:G,isMustButton:Q,isMustNoButton:X,lineHeight:te,isRenderShowAllDOM:ie,ellipsisLineClamp:le,isJsComputed:ue,fontSize:fe,fontClassName:he,fontStyle:Oe,textEndSlot:Se,extraOccupiedW:me,shadowFoldShowH:ge,shadowFoldButtonPlacement:Ne,isShadowLayer:Je,shadowClassName:Te,shadowStyle:Be})),Object(o.useEffect)((function(){null==N||N(He,Le)}),[He,Le]),Object(o.useEffect)((function(){return window.addEventListener("resize",pt),function(){window.removeEventListener("resize",pt)}}),[]),Object(o.useEffect)((function(){$e&&!G&&(Ie(!0),Ye.current&&clearTimeout(Ye.current),Ye.current=setTimeout((function(){if(ue&&Ze.current)Xe(Ze.current.getBoundingClientRect().width||0);else{var e=ft();De&&!He&&e||(!Q&&!X&&ze(e),Re(e))}Ie(!1),clearTimeout(Ye.current),Ye.current=null}),200))}),[$e]),Object(i.jsxs)("section",v({className:"text-overflow-processor-content ".concat(y),style:x},{children:[ie&&Object(i.jsx)("p",{className:"all-text text-overflow-processor-off",style:{display:"none"},dangerouslySetInnerHTML:{__html:b}}),Object(i.jsxs)("p",v({ref:Ze,className:l({"text-overflow-processor-on":!0,"p-shadow-info":"shadow"===B,"p-ellipsis-info":"ellipsis"===B,"text-show-less":He&&"shadow"!==B,"text-show-all":!He}),style:{display:ue?"inline-block":"ellipsis"===B&&We?"-webkit-box":"",WebkitLineClamp:le,lineHeight:te+"px",textAlign:lt?"justify":"inherit"}},{children:["shadow"===B&&Object(i.jsxs)(i.Fragment,{children:[Object(i.jsx)("span",{ref:Ge,className:l({text:!0,"text-show-btn-box":De,"text-show-all-box":!He}),style:{height:!He||We||Le?"auto":ge},dangerouslySetInnerHTML:{__html:b}}),!We&&Object(i.jsxs)(i.Fragment,{children:[("outer"===Ne||!He)&&dt,Object(i.jsxs)("span",v({className:l((t={"click-btn":!0,"click-btn-inner":"inner"===Ne&&He},t[R]=!!R,t)),style:at},{children:["inner"===Ne&&He&&dt,Object(i.jsx)("label",v({onClick:ht},{children:ut}))]}))]})]}),"ellipsis"===B?Object(i.jsxs)(i.Fragment,{children:[X&&!Se||!De||Object(i.jsx)("i",{className:"click-btn-before",style:{height:"calc(100% - ".concat(te,"px)")}}),Object(i.jsxs)("span",v({className:l((n={"click-btn":!0},n[R]=!!R,n)),style:at},{children:[Se&&He&&Se,!We&&Object(i.jsx)("label",v({onClick:ht},{children:ut}))]})),ct,Object(i.jsxs)("span",v({ref:Ge,className:"text"},{children:[Object(i.jsx)("span",{dangerouslySetInnerHTML:{__html:ue&&He?st.finalText||"":b}}),Se&&!He&&Se]}))]}):null]}))]}))}))}]);