@ariakit/react-core
Version:
Ariakit React core
97 lines (84 loc) • 3.47 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 _4KGS3DOWcjs = require('./4KGS3DOW.cjs');
var _TWX5YNTHcjs = require('./TWX5YNTH.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(
// @ts-ignore Incompatible with React 19 types. Ignore for now.
(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 = _4KGS3DOWcjs.useMergeRefs.call(void 0, props.ref, _TWX5YNTHcjs.getRefProperty.call(void 0, render));
let element;
if (React.isValidElement(render)) {
const renderProps = {
// @ts-ignore Incompatible with React 19 types. Ignore for now.
...render.props,
ref: mergedRef
};
element = React.cloneElement(render, _TWX5YNTHcjs.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;