UNPKG

primereact

Version:

PrimeReact is an open source UI library for React featuring a rich set of 90+ components, a theme designer, various theme alternatives such as Material, Bootstrap, Tailwind, premium templates and professional support. In addition, it integrates with Prime

2 lines (1 loc) 11.4 kB
import*as e from"react";import t from"primereact/api";import{CSSTransition as n}from"primereact/csstransition";import{useOverlayListener as r,useUpdateEffect as i,useUnmountEffect as o}from"primereact/hooks";import{KeyFilter as l}from"primereact/keyfilter";import{Tooltip as u}from"primereact/tooltip";import{ObjectUtils as a,classNames as s,DomHandler as c,ZIndexUtils as f}from"primereact/utils";import{OverlayService as p}from"primereact/overlayservice";import{Portal as g}from"primereact/portal";import{Ripple as m}from"primereact/ripple";function d(){return d=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},d.apply(this,arguments)}function y(e){return y="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},y(e)}function h(e,t){if("object"!==y(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!==y(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}function v(e){var t=h(e,"string");return"symbol"===y(t)?t:String(t)}function b(e,t,n){return(t=v(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function O(e){if(Array.isArray(e))return e}function E(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,o,l,u=[],a=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;a=!1}else for(;!(a=(r=o.call(n)).done)&&(u.push(r.value),u.length!==t);a=!0);}catch(e){s=!0,i=e}finally{try{if(!a&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(s)throw i}}return u}}function x(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function S(e,t){if(e){if("string"==typeof e)return x(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?x(e,t):void 0}}function w(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function P(e,t){return O(e)||E(e,t)||S(e,t)||w()}var C={defaultProps:{__TYPE:"InputTextarea",autoResize:!1,keyfilter:null,onBlur:null,onFocus:null,onInput:null,onKeyDown:null,onKeyUp:null,onPaste:null,tooltip:null,tooltipOptions:null,validateOnly:!1,children:void 0},getProps:function(e){return a.getMergedProps(e,C.defaultProps)},getOtherProps:function(e){return a.getDiffProps(e,C.defaultProps)}},k=e.memo(e.forwardRef((function(t,n){var r=C.getProps(t),i=e.useRef(n),o=e.useRef(0),f=function(e){var t=i.current;t&&c.isVisible(t)&&(o.current||(o.current=t.scrollHeight,t.style.overflow="hidden"),(o.current!==t.scrollHeight||e)&&(t.style.height="",t.style.height=t.scrollHeight+"px",parseFloat(t.style.height)>=parseFloat(t.style.maxHeight)?(t.style.overflowY="scroll",t.style.height=t.style.maxHeight):t.style.overflow="hidden",o.current=t.scrollHeight))},p=i.current&&i.current.value,g=e.useMemo((function(){return a.isNotEmpty(r.value)||a.isNotEmpty(r.defaultValue)||a.isNotEmpty(p)}),[r.value,r.defaultValue,p]);e.useEffect((function(){a.combinedRefs(i,n)}),[i,n]),e.useEffect((function(){r.autoResize&&f(!0)}),[r.autoResize]);var m=a.isNotEmpty(r.tooltip),y=C.getOtherProps(r),h=s("p-inputtextarea p-inputtext p-component",{"p-disabled":r.disabled,"p-filled":g,"p-inputtextarea-resizable":r.autoResize},r.className);return e.createElement(e.Fragment,null,e.createElement("textarea",d({ref:i},y,{className:h,onFocus:function(e){r.autoResize&&f(),r.onFocus&&r.onFocus(e)},onBlur:function(e){r.autoResize&&f(),r.onBlur&&r.onBlur(e)},onKeyUp:function(e){r.autoResize&&f(),r.onKeyUp&&r.onKeyUp(e)},onKeyDown:function(e){r.onKeyDown&&r.onKeyDown(e),r.keyfilter&&l.onKeyPress(e,r.keyfilter,r.validateOnly)},onInput:function(e){r.autoResize&&f(),r.onInput&&r.onInput(e);var t=e.target;a.isNotEmpty(t.value)?c.addClass(t,"p-filled"):c.removeClass(t,"p-filled")},onPaste:function(e){r.onPaste&&r.onPaste(e),r.keyfilter&&l.onPaste(e,r.keyfilter,r.validateOnly)}})),m&&e.createElement(u,d({target:i,content:r.tooltip},r.tooltipOptions)))})));k.displayName="InputTextarea";var I={defaultProps:{__TYPE:"Mention",autoHighlight:!0,className:null,delay:0,field:null,footerTemplate:null,headerTemplate:null,id:null,inputClassName:null,inputId:null,inputRef:null,inputStyle:null,itemTemplate:null,panelClassName:null,panelStyle:null,scrollHeight:"200px",style:null,suggestions:null,transitionOptions:null,trigger:"@",onBlur:null,onChange:null,onFocus:null,onHide:null,onInput:null,onSearch:null,onSelect:null,onShow:null,children:void 0},getProps:function(e){return a.getMergedProps(e,I.defaultProps)},getOtherProps:function(e){return a.getDiffProps(e,I.defaultProps)}};function N(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function R(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?N(Object(n),!0).forEach((function(t){b(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):N(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var j=e.memo(e.forwardRef((function(l,u){var y=I.getProps(l),h=P(e.useState(!1),2),v=h[0],b=h[1],O=P(e.useState(!1),2),E=O[0],x=O[1],S=P(e.useState(!1),2),w=S[0],C=S[1],N=P(e.useState(null),2),j=N[0],D=N[1],T=e.useRef(null),H=e.useRef(null),A=e.useRef(y.inputRef),F=e.useRef(null),K=e.useRef(null),z=P(r({target:T,overlay:H,listener:function(e,t){t.valid&&U()},when:v}),2),B=z[0],M=z[1],V=function(){b(!0)},U=function(){b(!1),C(!1),D(null)},_=function(){f.set("overlay",H.current,t.autoZIndex,t.zIndex.overlay),Z()},J=function(){y.autoHighlight&&y.suggestions&&y.suggestions.length&&c.addClass(F.current.firstChild,"p-highlight")},X=function(){B(),y.onShow&&y.onShow()},Y=function(){M()},q=function(){f.clear(H.current),y.onHide&&y.onHide()},Z=function(){var e=j.key,t=j.index,n=A.current.value,r=c.getCursorOffset(A.current,n.substring(0,t-1),n.substring(t),e);H.current.style.transformOrigin="top",H.current.style.left="calc(".concat(r.left,"px + 1rem)"),H.current.style.top="calc(".concat(r.top,"px + 1.2rem)")},$=function(e){p.emit("overlay-click",{originalEvent:e,target:T.current})},G=function(e,t,n){if(!j){var r=Array.isArray(y.trigger)?y.trigger.find((function(e){return e===t})):y.trigger===t?y.trigger:null;if(r)return{key:r,index:n};var i=e.substring(0,n).lastIndexOf(" "),o=L(e,n);if(o.index>i)return o}return j},L=function(e,t){if(Array.isArray(y.trigger)){var n={};return y.trigger.forEach((function(r){var i=e.substring(0,t).lastIndexOf(r);-1!==i&&(i>n.index||!n.index)&&(n={key:r,index:-1!==i?i+1:-1})})),n}var r=e.substring(0,t).lastIndexOf(y.trigger);return{key:y.trigger,index:-1!==r?r+1:-1}},Q=function(e){K.current&&clearTimeout(K.current);var t=e.target,n=t.value,r=t.selectionStart,i=n.substring(r-1,r);if(" "!==i){var o=G(n,i,r);if(o&&o.index>-1){var l=n.substring(o.index,r);K.current=setTimeout((function(){W(e,l,o)}),y.delay)}}else U()},W=function(e,t,n){y.onSearch&&(C(!0),D(n),y.onSearch({originalEvent:e,trigger:n.key,query:t}))},ee=function(e,t){var n=A.current.value,r=e.target.selectionStart,i=n.indexOf(" ",j.index),o=n.substring(j.index,i>-1?i:r),l=te(t).replace(/\s+/g,"");if(o.trim()!==l){for(var u=0;u<l.length;){var a=l.charAt(u),s=o.charAt(u);if(a!==s&&" "!==s)break;u++}var c=n.substring(0,j.index),f=n.substring(j.index+u);A.current.value="".concat(c).concat(l," ").concat(f),y.onChange&&y.onChange(e)}var p=j.index+l.length+1;A.current.setSelectionRange(p,p),U(),y.onSelect&&y.onSelect({originalEvent:e,suggestion:t})},te=function(e){if(e){var t=Array.isArray(y.field)?y.field[y.trigger.findIndex((function(e){return e===j.key}))]:y.field;return t?a.resolveFieldData(e,t):e}return""},ne=function(e,t){c.focus(A.current),ee(e,t)},re=A.current&&A.current.value,ie=e.useMemo((function(){return a.isNotEmpty(y.value)||a.isNotEmpty(y.defaultValue)||a.isNotEmpty(re)}),[y.value,y.defaultValue,re]);e.useImperativeHandle(u,(function(){return{props:y,show:V,hide:U,focus:function(){return c.focus(A.current)},getElement:function(){return T.current},getOverlay:function(){return H.current},getInput:function(){return A.current}}})),e.useEffect((function(){a.combinedRefs(A,y.inputRef)}),[A,y.inputRef]),i((function(){w&&(y.suggestions&&y.suggestions.length?V():U(),v&&Z(),C(!1))}),[y.suggestions]),i((function(){!ie&&c.hasClass(T.current,"p-inputwrapper-filled")&&c.removeClass(T.current,"p-inputwrapper-filled")}),[ie]),o((function(){f.clear(H.current)}));var oe,le,ue,ae,se,ce=function(t,n){var r=n+"_item",i=y.itemTemplate?a.getJSXElement(y.itemTemplate,t,{trigger:j?j.key:"",index:n}):te(t);return e.createElement("li",{key:r,className:"p-mention-item",onClick:function(e){return ne(e,t)}},i,e.createElement(m,null))},fe=function(){if(y.suggestions){var t=y.suggestions.map(ce);return e.createElement("ul",{ref:F,className:"p-mention-items"},t)}return null},pe=s("p-mention p-component p-inputwrapper",{"p-inputwrapper-filled":ie,"p-inputwrapper-focus":E},y.className),ge=s("p-mention-input",y.inputClassName),me=I.getOtherProps(y),de=(oe=s("p-mention-panel p-component",y.panelClassName),le=R({maxHeight:y.scrollHeight},y.panelStyle),ue=a.getJSXElement(y.headerTemplate,y),ae=a.getJSXElement(y.footerTemplate,y),se=fe(),e.createElement(g,{element:e.createElement(n,{nodeRef:H,classNames:"p-connected-overlay",in:v,timeout:{enter:120,exit:100},options:y.transitionOptions,unmountOnExit:!0,onEnter:_,onEntering:J,onEntered:X,onExit:Y,onExited:q},e.createElement("div",{ref:H,className:oe,style:le,onClick:$},ue,se,ae)),appendTo:"self"}));return e.createElement("div",{ref:T,id:y.id,className:pe,style:y.style},e.createElement(k,d({ref:A,id:y.inputId,className:ge,style:y.inputStyle},me,{onFocus:function(e){x(!0),y.onFocus&&y.onFocus(e)},onBlur:function(e){x(!1),y.onBlur&&y.onBlur(e)},onKeyDown:function(e){if(v){var t=c.findSingle(H.current,"li.p-highlight");switch(e.which){case 40:if(t){var n=t.nextElementSibling;n&&(c.addClass(n,"p-highlight"),c.removeClass(t,"p-highlight"),c.scrollInView(H.current,n))}else(t=c.findSingle(H.current,"li"))&&c.addClass(t,"p-highlight");e.preventDefault();break;case 38:if(t){var r=t.previousElementSibling;r&&(c.addClass(r,"p-highlight"),c.removeClass(t,"p-highlight"),c.scrollInView(H.current,r))}e.preventDefault();break;case 8:var i=e.target,o=i.selectionStart;i.value.substring(o-1,o)===j.key&&U();break;case 13:t&&ee(e,y.suggestions[c.index(t)]),e.preventDefault();break;case 27:U(),e.preventDefault()}}},onInput:function(e){y.onInput&&y.onInput(e),e.target.value.length>0?c.addClass(T.current,"p-inputwrapper-filled"):c.removeClass(T.current,"p-inputwrapper-filled")},onKeyUp:function(e){37!==e.which&&39!==e.which||Q(e)},onChange:function(e){y.onChange&&y.onChange(e),Q(e)}})),de)})));j.displayName="Mention";export{j as Mention};