UNPKG

@chepchik/react-rating

Version:

React Rating is a react rating component which supports custom symbols both with inline styles and icon.

23 lines (22 loc) 8.66 kB
(function(x,b){typeof exports=="object"&&typeof module<"u"?b(exports,require("react")):typeof define=="function"&&define.amd?define(["exports","react"],b):(x=typeof globalThis<"u"?globalThis:x||self,b(x.Rating={},x.React))})(this,function(x,b){"use strict";var U={exports:{}},M={};/** * @license React * react-jsx-runtime.production.js * * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */var K;function ne(){if(K)return M;K=1;var n=Symbol.for("react.transitional.element"),s=Symbol.for("react.fragment");function R(d,c,l){var E=null;if(l!==void 0&&(E=""+l),c.key!==void 0&&(E=""+c.key),"key"in c){l={};for(var m in c)m!=="key"&&(l[m]=c[m])}else l=c;return c=l.ref,{$$typeof:n,type:d,key:E,ref:c!==void 0?c:null,props:l}}return M.Fragment=s,M.jsx=R,M.jsxs=R,M}var I={};/** * @license React * react-jsx-runtime.development.js * * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */var ee;function oe(){return ee||(ee=1,process.env.NODE_ENV!=="production"&&function(){function n(e){if(e==null)return null;if(typeof e=="function")return e.$$typeof===G?null:e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case A:return"Fragment";case h:return"Profiler";case F:return"StrictMode";case B:return"Suspense";case J:return"SuspenseList";case q:return"Activity"}if(typeof e=="object")switch(typeof e.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),e.$$typeof){case D:return"Portal";case P:return(e.displayName||"Context")+".Provider";case p:return(e._context.displayName||"Context")+".Consumer";case X:var r=e.render;return e=e.displayName,e||(e=r.displayName||r.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case z:return r=e.displayName||null,r!==null?r:n(e.type)||"Memo";case L:r=e._payload,e=e._init;try{return n(e(r))}catch{}}return null}function s(e){return""+e}function R(e){try{s(e);var r=!1}catch{r=!0}if(r){r=console;var o=r.error,i=typeof Symbol=="function"&&Symbol.toStringTag&&e[Symbol.toStringTag]||e.constructor.name||"Object";return o.call(r,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",i),s(e)}}function d(e){if(e===A)return"<>";if(typeof e=="object"&&e!==null&&e.$$typeof===L)return"<...>";try{var r=n(e);return r?"<"+r+">":"<...>"}catch{return"<...>"}}function c(){var e=N.A;return e===null?null:e.getOwner()}function l(){return Error("react-stack-top-frame")}function E(e){if(V.call(e,"key")){var r=Object.getOwnPropertyDescriptor(e,"key").get;if(r&&r.isReactWarning)return!1}return e.key!==void 0}function m(e,r){function o(){a||(a=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",r))}o.isReactWarning=!0,Object.defineProperty(e,"key",{get:o,configurable:!0})}function g(){var e=n(this.type);return t[e]||(t[e]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),e=this.props.ref,e!==void 0?e:null}function v(e,r,o,i,O,_,Z,H){return o=_.ref,e={$$typeof:w,type:e,key:r,props:_,_owner:O},(o!==void 0?o:null)!==null?Object.defineProperty(e,"ref",{enumerable:!1,get:g}):Object.defineProperty(e,"ref",{enumerable:!1,value:null}),e._store={},Object.defineProperty(e._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(e,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(e,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:Z}),Object.defineProperty(e,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:H}),Object.freeze&&(Object.freeze(e.props),Object.freeze(e)),e}function Y(e,r,o,i,O,_,Z,H){var u=r.children;if(u!==void 0)if(i)if($(u)){for(i=0;i<u.length;i++)k(u[i]);Object.freeze&&Object.freeze(u)}else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else k(u);if(V.call(r,"key")){u=n(e);var C=Object.keys(r).filter(function(le){return le!=="key"});i=0<C.length?"{key: someKey, "+C.join(": ..., ")+": ...}":"{key: someKey}",j[u+i]||(C=0<C.length?"{"+C.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX: let props = %s; <%s {...props} /> React keys must be passed directly to JSX without using spread: let props = %s; <%s key={someKey} {...props} />`,i,u,C,u),j[u+i]=!0)}if(u=null,o!==void 0&&(R(o),u=""+o),E(r)&&(R(r.key),u=""+r.key),"key"in r){o={};for(var Q in r)Q!=="key"&&(o[Q]=r[Q])}else o=r;return u&&m(o,typeof e=="function"?e.displayName||e.name||"Unknown":e),v(e,u,_,O,c(),o,Z,H)}function k(e){typeof e=="object"&&e!==null&&e.$$typeof===w&&e._store&&(e._store.validated=1)}var y=b,w=Symbol.for("react.transitional.element"),D=Symbol.for("react.portal"),A=Symbol.for("react.fragment"),F=Symbol.for("react.strict_mode"),h=Symbol.for("react.profiler"),p=Symbol.for("react.consumer"),P=Symbol.for("react.context"),X=Symbol.for("react.forward_ref"),B=Symbol.for("react.suspense"),J=Symbol.for("react.suspense_list"),z=Symbol.for("react.memo"),L=Symbol.for("react.lazy"),q=Symbol.for("react.activity"),G=Symbol.for("react.client.reference"),N=y.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,V=Object.prototype.hasOwnProperty,$=Array.isArray,W=console.createTask?console.createTask:function(){return null};y={"react-stack-bottom-frame":function(e){return e()}};var a,t={},f=y["react-stack-bottom-frame"].bind(y,l)(),T=W(d(l)),j={};I.Fragment=A,I.jsx=function(e,r,o,i,O){var _=1e4>N.recentlyCreatedOwnerStacks++;return Y(e,r,o,!1,i,O,_?Error("react-stack-top-frame"):f,_?W(d(e)):T)},I.jsxs=function(e,r,o,i,O){var _=1e4>N.recentlyCreatedOwnerStacks++;return Y(e,r,o,!0,i,O,_?Error("react-stack-top-frame"):f,_?W(d(e)):T)}}()),I}var re;function ae(){return re||(re=1,process.env.NODE_ENV==="production"?U.exports=ne():U.exports=oe()),U.exports}var S=ae();const te=n=>b.isValidElement(n)?n:typeof n=="object"&&n!==null?S.jsx("span",{style:n}):typeof n=="string"?S.jsx("span",{className:n}):null,se=({index:n,inactiveIcon:s,activeIcon:R,percent:d,direction:c,readonly:l=!1,onClick:E,onMouseMove:m,onTouchEnd:g})=>{const v=te(s),k=d<100?{}:{visibility:"hidden"},y=te(R),w={display:"inline-block",position:"absolute",overflow:"hidden",top:0,[c==="rtl"?"right":"left"]:0,width:`${d}%`},D={cursor:l?"inherit":"pointer",display:"inline-block",position:"relative"},A=p=>{m&&m(n,p)},F=p=>{E&&(p.preventDefault(),E(n,p))},h=p=>{g&&g(n,p)};return S.jsxs("span",{style:D,onClick:F,onMouseMove:A,onTouchMove:A,onTouchEnd:h,children:[S.jsx("span",{style:k,children:v}),S.jsx("span",{style:w,children:y})]})},ce=({totalSymbols:n=5,value:s,placeholderValue:R,readonly:d=!1,quiet:c=!1,fractions:l=1,direction:E="ltr",emptySymbol:m,fullSymbol:g,placeholderSymbol:v=void 0,onClick:Y,onHover:k=()=>{},className:y,id:w,style:D,tabIndex:A,"aria-label":F})=>{const[h,p]=b.useState(s),[P,X]=b.useState(!1);b.useEffect(()=>{s!==h&&p(s)},[s]),b.useEffect(()=>{!P&&h!==s?k(void 0):P&&s===h&&k(h)},[P,h,s,k]);const B=a=>{const t="touches"in a?"changedTouches"in a?a.changedTouches[0].clientX:a.touches[0].clientX:a.clientX,f=a.target.getBoundingClientRect(),T=E==="rtl"?f.right-t:t-f.left;return T<0?0:T/f.width},J=(a,t)=>{const f=B(t),T=Math.ceil(f%1*l)/l,j=10**3,e=a+(Math.floor(f)+Math.floor(T*j)/j);return e>0?e>n?n:e:1/l},z=(a,t)=>{if(d)return;const f=J(a,t);p(f),X(!0)},L=(a,t)=>{const f=J(a,t);Y(f,t)},q=(a,t)=>{c||(L(a,t),t.preventDefault()),G()},G=()=>{p(s),X(!1)},N=R!==0&&s===0&&!P,V=N?R:c?s:h,$=Math.floor(V),W=Array.from({length:n}).map((a,t)=>{const f=t-$<0?100:t-$===0?(V-t)*100:0,T=Array.isArray(m)?m:[m],j=Array.isArray(g)?g:[g],e=v?Array.isArray(v)?v:[v]:[];return S.jsx(se,{index:t,readonly:d,inactiveIcon:T[t%T.length],activeIcon:N?e[t%e.length]:j[t%j.length],percent:f,direction:E,...!d&&{onClick:L,onMouseMove:z,onTouchMove:z,onTouchEnd:q}},t)});return S.jsx("span",{id:w,style:{...D,display:"inline-block",direction:E},className:y,tabIndex:A,"aria-label":F,...!d&&{onMouseLeave:G},children:W})};x.Rating=ce,Object.defineProperty(x,Symbol.toStringTag,{value:"Module"})});