@jengaui/utils
Version:
Jenga UI Utils component in React
64 lines (56 loc) • 5.47 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var a = require('react');
var interactions = require('@react-aria/interactions');
var O = require('clsx');
var tastycss = require('tastycss');
var ssr = require('@react-aria/ssr');
var jsxRuntime = require('react/jsx-runtime');
var reactIs = require('react-is');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
function _interopNamespace(e) {
if (e && e.__esModule) return e;
var n = Object.create(null);
if (e) {
Object.keys(e).forEach(function (k) {
if (k !== 'default') {
var d = Object.getOwnPropertyDescriptor(e, k);
Object.defineProperty(n, k, d.get ? d : {
enumerable: true,
get: function () { return e[k]; }
});
}
});
}
n["default"] = e;
return Object.freeze(n);
}
var a__namespace = /*#__PURE__*/_interopNamespace(a);
var O__default = /*#__PURE__*/_interopDefaultLegacy(O);
function x(...t){return (...e)=>{for(let r of t)typeof r=="function"&&r(...e);}}function I({isDisabled:t},e=!1){a.useEffect(()=>{o(!1);},[t]);let[r,o]=a.useState(!1),{isFocusVisible:n}=interactions.useFocusVisible({}),{focusProps:i}=interactions.useFocus({onFocusChange:o});return {focusProps:i,isFocused:r&&(e?n:!0)}}function A(t){return a.Children.toArray(t).every(e=>!a.isValidElement(e))}var c=typeof window<"u"?a__namespace.useLayoutEffect:a__namespace.useEffect;var d=new Map;function L(t){let e=a.useRef(!0);e.current=!0;let[r,o]=a.useState(t),n=a.useRef(null),i=s=>{e.current?n.current=s:o(s);};c(()=>{e.current=!1;}),a.useEffect(()=>{let s=n.current;s&&(o(s),n.current=null);},[o,i]);let u=ssr.useSSRSafeId(r);return d.set(u,i),u}function g(t,e){if(t===e)return t;let r=d.get(t);if(r)return r(e),e;let o=d.get(e);return o?(o(t),t):e}function ye(){let[t,e]=a.useState(L());return c(()=>{t&&d.get(t)&&!document.getElementById(t)&&e(null);},[t]),t}function p(...t){let e={};for(let r of t){for(let o in e)/^on[A-Z]/.test(o)&&typeof e[o]=="function"&&r&&typeof r[o]=="function"?e[o]=x(e[o],r[o]):o==="className"&&typeof e.className=="string"&&r&&typeof r.className=="string"?e[o]=O__default["default"](e.className,r.className):(o==="styles"||o.endsWith("Styles"))&&typeof e.styles=="object"&&r&&typeof r.styles=="object"?e[o]=tastycss.mergeStyles(e[o],r[o]):o==="id"&&e.id&&(r==null?void 0:r.id)?e.id=g(e.id,r==null?void 0:r.id):e[o]=r&&r[o]!==void 0?r[o]:e[o];for(let o in r)e[o]===void 0&&(e[o]=r[o]);}return e}var y={},m=a.createContext(y);function M(t,e){let r=t.slot||e,n=(a.useContext(m)??y)[r];return p(n,t)}function D(t){let e=a.useContext(m)??y,{slots:r={},children:o}=t,n=a.useMemo(()=>Object.keys(e).concat(Object.keys(r)).reduce((i,u)=>({...i,[u]:p(e[u]??{},r[u]??{})}),{}),[e,r]);return jsxRuntime.jsx(m.Provider,{value:n,children:o})}function _(t){let{children:e,...r}=t,o=e;return a.Children.toArray(e).length<=1&&typeof e=="function"&&(o=a.cloneElement(a.Children.only(e),r)),jsxRuntime.jsx(m.Provider,{value:y,children:o})}function Z(...t){let e=a.useRef();return a.useEffect(()=>{t.forEach(r=>{!r||(typeof r=="function"?r(e.current):r.current=e.current);});},[t]),e}function Q(t,e){let r=t&&(Array.isArray(t)||reactIs.isFragment(t));return !t||!r&&a.isValidElement(t)?t:e()}function ze(t){return f(t,["value","defaultValue"],"string",e=>String(e))}function Le(t){return f(t,["value","defaultValue"],"number",e=>Number(e))}function Oe(t){return f(t,["value","defaultValue"],"object",e=>Array.isArray(e)?e:[])}function Ue(t){return f(t,["isSelected","defaultSelected"],"boolean",e=>!!e)}function je(t){return f(t,["selectedKey","defaultSelectedKey"])}function f(t,e,r,o){return t={...t},e.forEach(n=>{t[n]===null&&(t[n]=void 0),r&&o&&t[n]!=null&&typeof t[n]!=r&&(t[n]=o(t[n]),console.warn("Wrong value type in",t,"in keys",JSON.stringify(e)));}),t}var X="Anonymous";function We(t,e=X){return typeof t=="function"?t.displayName??t.name??e:e}function v(t,e=0,r=[]){return a.Children.toArray(t).reduce((o,n,i)=>(reactIs.isFragment(n)?o.push.apply(o,v(n.props.children,e+1,r.concat(n.key||i))):a.isValidElement(n)?o.push(a.cloneElement(n,{key:r.concat(String(n.key)).join(".")})):(typeof n=="string"||typeof n=="number")&&o.push(n),o),[])}var l=typeof window<"u"&&window.visualViewport;function oe(){let[t,e]=a.useState(()=>V());return a.useEffect(()=>{let r=()=>{e(o=>{let n=V();return n.width===o.width&&n.height===o.height?o:n});};return l?l.addEventListener("resize",r):window.addEventListener("resize",r),()=>{l?l.removeEventListener("resize",r):window.removeEventListener("resize",r);}},[]),t}function V(){return {width:l&&l.width||(typeof window<"u"?window.innerWidth:0),height:l&&l.height||(typeof window<"u"?window.innerHeight:0)}}
Object.defineProperty(exports, 'modAttrs', {
enumerable: true,
get: function () { return tastycss.modAttrs; }
});
exports.ClearSlots = _;
exports.SlotProvider = D;
exports.castNullableArrayValue = Oe;
exports.castNullableField = f;
exports.castNullableIsSelected = Ue;
exports.castNullableNumberValue = Le;
exports.castNullableSelectedKey = je;
exports.castNullableStringValue = ze;
exports.chain = x;
exports.flattenChildren = v;
exports.getDisplayName = We;
exports.isTextOnly = A;
exports.mergeIds = g;
exports.mergeProps = p;
exports.useCombinedRefs = Z;
exports.useFocus = I;
exports.useId = L;
exports.useLayoutEffect = c;
exports.useSlotId = ye;
exports.useSlotProps = M;
exports.useViewportSize = oe;
exports.wrapNodeIfPlain = Q;