@ariakit/react-core
Version:
Ariakit React core
90 lines (77 loc) • 3.31 kB
JavaScript
;Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } }
var _MZ2HG624cjs = require('./MZ2HG624.cjs');
var _XMDZRF6Ycjs = require('./XMDZRF6Y.cjs');
// src/utils/system.tsx
var _react = require('react'); var React = _interopRequireWildcard(_react);
var _jsxruntime = require('react/jsx-runtime');
function forwardRef2(render) {
const Role = React.forwardRef((props, ref) => render({ ...props, ref }));
Role.displayName = render.displayName || render.name;
return Role;
}
function memo2(Component, propsAreEqual) {
return React.memo(Component, propsAreEqual);
}
function createElement(Type, props) {
const { wrapElement, render, ...rest } = props;
const mergedRef = _MZ2HG624cjs.useMergeRefs.call(void 0, props.ref, _XMDZRF6Ycjs.getRefProperty.call(void 0, render));
let element;
if (React.isValidElement(render)) {
const renderProps = { ...render.props, ref: mergedRef };
element = React.cloneElement(render, _XMDZRF6Ycjs.mergeProps.call(void 0, rest, renderProps));
} else if (render) {
element = render(rest);
} else {
element = /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Type, { ...rest });
}
if (wrapElement) {
return wrapElement(element);
}
return element;
}
function createHook(useProps) {
const useRole = (props = {}) => {
return useProps(props);
};
useRole.displayName = useProps.name;
return useRole;
}
function createStoreContext(providers = [], scopedProviders = []) {
const context = React.createContext(void 0);
const scopedContext = React.createContext(void 0);
const useContext2 = () => React.useContext(context);
const useScopedContext = (onlyScoped = false) => {
const scoped = React.useContext(scopedContext);
const store = useContext2();
if (onlyScoped) return scoped;
return scoped || store;
};
const useProviderContext = () => {
const scoped = React.useContext(scopedContext);
const store = useContext2();
if (scoped && scoped === store) return;
return store;
};
const ContextProvider = (props) => {
return providers.reduceRight(
(children, Provider) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Provider, { ...props, children }),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, context.Provider, { ...props })
);
};
const ScopedContextProvider = (props) => {
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ContextProvider, { ...props, children: scopedProviders.reduceRight(
(children, Provider) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Provider, { ...props, children }),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, scopedContext.Provider, { ...props })
) });
};
return {
context,
scopedContext,
useContext: useContext2,
useScopedContext,
useProviderContext,
ContextProvider,
ScopedContextProvider
};
}
exports.forwardRef = forwardRef2; exports.memo = memo2; exports.createElement = createElement; exports.createHook = createHook; exports.createStoreContext = createStoreContext;