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) 15.1 kB
import*as e from"react";import t,{PrimeReactContext as n}from"primereact/api";import{ComponentBase as r,useHandleStyle as i}from"primereact/componentbase";import{CSSTransition as o}from"primereact/csstransition";import{useMergeProps as l,useOverlayListener as a,useUpdateEffect as u,useUnmountEffect as s}from"primereact/hooks";import{KeyFilter as c}from"primereact/keyfilter";import{Tooltip as p}from"primereact/tooltip";import{classNames as f,ObjectUtils as m,DomHandler as d,ZIndexUtils as y}from"primereact/utils";import{OverlayService as g}from"primereact/overlayservice";import{Portal as v}from"primereact/portal";import{Ripple as b}from"primereact/ripple";function h(){return h=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},h.apply(this,arguments)}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 O(e){if(Array.isArray(e))return x(e)}function w(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}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 E(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function P(e){return O(e)||w(e)||S(e)||E()}function j(e){return j="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},j(e)}function I(e,t){if("object"!==j(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!==j(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}function k(e){var t=I(e,"string");return"symbol"===j(t)?t:String(t)}function R(e,t,n){return(t=k(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function N(e){if(Array.isArray(e))return e}function C(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,o,l,a=[],u=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;u=!1}else for(;!(u=(r=o.call(n)).done)&&(a.push(r.value),a.length!==t);u=!0);}catch(e){s=!0,i=e}finally{try{if(!u&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(s)throw i}}return a}}function D(){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 A(e,t){return N(e)||C(e,t)||S(e,t)||D()}var T=r.extend({defaultProps:{__TYPE:"InputTextarea",__parentMetadata:null,autoResize:!1,invalid:!1,variant:null,keyfilter:null,onBlur:null,onFocus:null,onBeforeInput:null,onInput:null,onKeyDown:null,onKeyUp:null,onPaste:null,tooltip:null,tooltipOptions:null,validateOnly:!1,children:void 0},css:{classes:{root:function(e){var t=e.props,n=e.context;return f("p-inputtextarea p-inputtext p-component",{"p-disabled":t.disabled,"p-filled":e.isFilled,"p-inputtextarea-resizable":t.autoResize,"p-invalid":t.invalid,"p-variant-filled":t.variant?"filled"===t.variant:n&&"filled"===n.inputStyle})}},styles:"\n@layer primereact {\n .p-inputtextarea-resizable {\n overflow: hidden;\n resize: none;\n }\n \n .p-fluid .p-inputtextarea {\n width: 100%;\n }\n}\n"}});function F(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 H(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?F(Object(n),!0).forEach((function(t){R(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):F(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var z=e.memo(e.forwardRef((function(t,r){var o=l(),a=e.useContext(n),u=T.getProps(t,a),s=e.useRef(r),y=e.useRef(0),g=T.setMetaData(H(H({props:u},u.__parentMetadata),{},{context:{disabled:u.disabled}})),v=g.ptm,b=g.cx;i(T.css.styles,g.isUnstyled,{name:"inputtextarea"});var x=function(e){var t=s.current;t&&d.isVisible(t)&&(y.current||(y.current=t.scrollHeight,t.style.overflow="hidden"),(y.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",y.current=t.scrollHeight))};e.useEffect((function(){m.combinedRefs(s,r)}),[s,r]),e.useEffect((function(){u.autoResize&&x(!0)}),[u.autoResize]);var O=e.useMemo((function(){return m.isNotEmpty(u.value)||m.isNotEmpty(u.defaultValue)}),[u.value,u.defaultValue]),w=m.isNotEmpty(u.tooltip),S=o({ref:s,className:f(u.className,b("root",{context:a,isFilled:O})),onFocus:function(e){u.autoResize&&x(),u.onFocus&&u.onFocus(e)},onBlur:function(e){u.autoResize&&x(),u.onBlur&&u.onBlur(e)},onKeyUp:function(e){u.autoResize&&x(),u.onKeyUp&&u.onKeyUp(e)},onKeyDown:function(e){u.onKeyDown&&u.onKeyDown(e),u.keyfilter&&c.onKeyPress(e,u.keyfilter,u.validateOnly)},onBeforeInput:function(e){u.onBeforeInput&&u.onBeforeInput(e),u.keyfilter&&c.onBeforeInput(e,u.keyfilter,u.validateOnly)},onInput:function(e){var t=e.target;u.autoResize&&x(m.isEmpty(t.value)),u.onInput&&u.onInput(e),m.isNotEmpty(t.value)?d.addClass(t,"p-filled"):d.removeClass(t,"p-filled")},onPaste:function(e){u.onPaste&&u.onPaste(e),u.keyfilter&&c.onPaste(e,u.keyfilter,u.validateOnly)}},T.getOtherProps(u),v("root"));return e.createElement(e.Fragment,null,e.createElement("textarea",S),w&&e.createElement(p,h({target:s,content:u.tooltip,pt:v("tooltip")},u.tooltipOptions)))})));z.displayName="InputTextarea";var B=r.extend({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},css:{classes:{item:function(e){return f("p-mention-item",{"p-highlight":e.isSelected})},items:"p-mention-items",panel:function(e){return f("p-mention-panel p-component",e.props.panelClassName)},input:function(e){return f("p-mention-input",e.props.inputClassName)},root:function(e){return f("p-mention p-component p-inputwrapper",{"p-inputwrapper-filled":e.isFilled,"p-inputwrapper-focus":e.focusedState})},transition:"p-connected-overlay"},styles:"\n@layer primereact {\n .p-mention {\n display: inline-flex;\n position: relative;\n }\n \n .p-autocomplete-loader {\n position: absolute;\n top: 50%;\n margin-top: -.5rem;\n }\n \n .p-mention .p-mention-panel {\n min-width: 100%;\n }\n \n .p-mention-panel {\n position: absolute;\n top: 0;\n left: 0;\n overflow: auto;\n }\n \n .p-mention-items {\n margin: 0;\n padding: 0;\n list-style-type: none;\n }\n \n .p-mention-item {\n cursor: pointer;\n white-space: nowrap;\n position: relative;\n overflow: hidden;\n }\n \n .p-fluid .p-mention {\n display: flex;\n }\n}\n"}});function K(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 _(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?K(Object(n),!0).forEach((function(t){R(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):K(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var M=e.memo(e.forwardRef((function(r,c){var p=l(),x=e.useContext(n),O=B.getProps(r,x),w=A(e.useState(!1),2),S=w[0],E=w[1],j=A(e.useState(!1),2),I=j[0],k=j[1],R=A(e.useState(!1),2),N=R[0],C=R[1],D=A(e.useState(null),2),T=D[0],F=D[1],H=A(e.useState([]),2),K=H[0],M=H[1],U=e.useRef(null),V=e.useRef(null),J=e.useRef(O.inputRef),X=e.useRef(null),Y=e.useRef(null),q={props:O,state:{overlayVisible:S,focused:I,searching:N,trigger:T}},Z=B.setMetaData(q),$=Z.ptm,G=Z.cx,L=Z.isUnstyled;i(B.css.styles,L,{name:"mention"});var Q=function(e,t,n){return $(t,{context:{trigger:T?T.key:""},state:_({},n)})},W=A(a({target:U,overlay:V,listener:function(e,t){t.valid&&re()},when:S}),2),ee=W[0],te=W[1],ne=function(){E(!0)},re=function(){E(!1),C(!1),F(null)},ie=function(){y.set("overlay",V.current,x&&x.autoZIndex||t.autoZIndex,x&&x.zIndex.overlay||t.zIndex.overlay),d.addStyles(V.current,{position:"absolute",top:"0",left:"0"}),se()},oe=function(){O.autoHighlight&&O.suggestions&&O.suggestions.length&&M((function(e){var t=P(e);return t[0]=!0,t}))},le=function(){ee(),O.onShow&&O.onShow()},ae=function(){te()},ue=function(){y.clear(V.current),O.onHide&&O.onHide()},se=function(){if(T){var e=T.key,t=T.index,n=J.current.value,r=d.getCursorOffset(J.current,n.substring(0,t-1),n.substring(t),e);V.current.style.transformOrigin="top",V.current.style.left="calc(".concat(r.left,"px + 1rem)"),V.current.style.top="calc(".concat(r.top,"px + 1.2rem)")}},ce=function(e){g.emit("overlay-click",{originalEvent:e,target:U.current})},pe=function(e,t,n){if(!T){var r=Array.isArray(O.trigger)?O.trigger.find((function(e){return e===t})):O.trigger===t?O.trigger:null;if(r)return{key:r,index:n};var i=e.substring(0,n).lastIndexOf(" "),o=fe(e,n);if(o.index>i)return o}return T},fe=function(e,t){if(Array.isArray(O.trigger)){var n={};return O.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(O.trigger);return{key:O.trigger,index:-1!==r?r+1:-1}},me=function(e){Y.current&&clearTimeout(Y.current);var t=e.target,n=t.value,r=t.selectionStart,i=n.substring(r-1,r);if(" "!==i){var o=pe(n,i,r);if(o&&o.index>-1){var l=n.substring(o.index,r);Y.current=setTimeout((function(){de(e,l,o)}),O.delay)}}else re()},de=function(e,t,n){O.onSearch&&(C(!0),F(n),O.onSearch({originalEvent:e,trigger:n.key,query:t}))},ye=function(e,t){var n=J.current.value,r=e.target.selectionStart,i=n.indexOf(" ",T.index),o=n.substring(T.index,i>-1?i:r),l=ge(t).replace(/\s+/g,"");if(o.trim()!==l){var a=n.substring(0,T.index),u=n.substring(i>-1?r:T.index+o.length);J.current.value="".concat(a).concat(l," ").concat(u),e.target=J.current,O.onChange&&O.onChange(e)}var s=T.index+l.length+1;J.current.setSelectionRange(s,s),re(),O.onSelect&&O.onSelect({originalEvent:e,suggestion:t})},ge=function(e){if(e){var t=Array.isArray(O.field)?O.field[O.trigger.findIndex((function(e){return e===T.key}))]:O.field;return t?m.resolveFieldData(e,t):e}return""},ve=function(e,t){d.focus(J.current),ye(e,t)},be=J.current&&J.current.value,he=e.useMemo((function(){return m.isNotEmpty(O.value)||m.isNotEmpty(O.defaultValue)||m.isNotEmpty(be)}),[O.value,O.defaultValue,be]);e.useImperativeHandle(c,(function(){return{props:O,show:ne,hide:re,focus:function(){return d.focus(J.current)},getElement:function(){return U.current},getOverlay:function(){return V.current},getInput:function(){return J.current}}})),e.useEffect((function(){m.combinedRefs(J,O.inputRef)}),[J,O.inputRef]),u((function(){var e=O.suggestions&&O.suggestions.length;if(e){var t=O.suggestions.map((function(){return!1}));M(t)}N&&(e?ne():re(),S&&se(),C(!1))}),[O.suggestions]),u((function(){var e=L(),t=e?d.isAttributeEquals(U.current,"data-p-inputwrapper-filled",!0):d.hasClass(U.current,"p-inputwrapper-filled");!he&&t&&(e?d.setAttributes(U.current,{"data-p-inputwrapper-filled":!1}):d.removeClass(U.current,"p-inputwrapper-filled"))}),[he]),s((function(){y.clear(V.current)}));var xe=function(t,n){var r=n+"_item",i=O.itemTemplate?m.getJSXElement(O.itemTemplate,t,{trigger:T?T.key:"",index:n}):ge(t),o=K[n],l=p({key:r,className:G("item",{isSelected:o}),onClick:function(e){return ve(e,t)},"data-p-highlight":o},Q(0,"item",{selected:o}));return e.createElement("li",l,i,e.createElement(b,null))},Oe=function(){var t=p({ref:X,className:G("items")},$("items"));if(O.suggestions){var n=O.suggestions.map(xe);return e.createElement("ul",t,n)}return null},we=B.getOtherProps(O),Se=function(){var t=m.getJSXElement(O.headerTemplate,O),n=m.getJSXElement(O.footerTemplate,O),r=Oe(),i=p({ref:V,className:G("panel"),style:_({maxHeight:O.scrollHeight},O.panelStyle),onClick:ce},$("panel")),l=p({classNames:G("transition"),in:S,timeout:{enter:120,exit:100},options:O.transitionOptions,unmountOnExit:!0,onEnter:ie,onEntering:oe,onEntered:le,onExit:ae,onExited:ue},$("transition")),a=e.createElement(o,h({nodeRef:V},l),e.createElement("div",i,t,r,n));return e.createElement(v,{element:a,appendTo:"self"})}(),Ee=p(_(_({ref:J,id:O.inputId,className:G("input"),style:O.inputStyle},we),{},{onFocus:function(e){k(!0),O.onFocus&&O.onFocus(e)},onBlur:function(e){k(!1),O.onBlur&&O.onBlur(e)},onKeyDown:function(e){if(S){var t=d.findSingle(V.current,'li[data-p-highlight="true"]');switch(e.which){case 40:if(t){var n=t.nextElementSibling;if(n){var r=d.index(n),i=d.index(t);M((function(e){var t=P(e);return t[r]=!0,t[i]=!1,t})),d.scrollInView(V.current,n)}}else if(t=d.findSingle(V.current,"li")){var o=d.index(t);M((function(e){var t=P(e);return t[o]=!0,t}))}e.preventDefault();break;case 38:if(t){var l=t.previousElementSibling;if(l){var a=d.index(l),u=d.index(t);M((function(e){var t=P(e);return t[a]=!0,t[u]=!1,t})),d.scrollInView(V.current,l)}}e.preventDefault();break;case 8:var s=e.target,c=s.selectionStart;s.value.substring(c-1,c)===T.key&&re();break;case 13:t&&ye(e,O.suggestions[d.index(t)]),e.preventDefault();break;case 27:re(),e.preventDefault()}}},onInput:function(e){O.onInput&&O.onInput(e);var t=e.target.value.length>0;L()?d.setAttributes(U.current,{"data-p-inputwrapper-filled":t}):t?d.addClass(U.current,"p-inputwrapper-filled"):d.removeClass(U.current,"p-inputwrapper-filled")},onKeyUp:function(e){37!==e.which&&39!==e.which||me(e)},onChange:function(e){O.onChange&&O.onChange(e),me(e)},__parentMetadata:{parent:q}}),$("input")),Pe=p({ref:U,id:O.id,className:f(O.className,G("root",{focusedState:I,isFilled:he})),style:O.style},B.getOtherProps(O),$("root"));return e.createElement("div",Pe,e.createElement(z,Ee),Se)})));M.displayName="Mention";export{M as Mention};