@crossed/primitive
Version:
A universal & performant styling library for React Native, Next.js & React
98 lines (97 loc) • 3.98 kB
JavaScript
;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var Dropdown_exports = {};
__export(Dropdown_exports, {
ProviderDropdown: () => import_context2.Provider,
createDropdown: () => createDropdown,
useDropdownContext: () => import_context2.useContext
});
module.exports = __toCommonJS(Dropdown_exports);
var import_jsx_runtime = require("react/jsx-runtime");
var import_core = require("@crossed/core");
var import_react = require("react");
var import_Dropdown = require("./Dropdown");
var import_DropdownTrigger = require("./DropdownTrigger");
var import_DropdownContent = require("./DropdownContent");
var import_DropdownPortal = require("./DropdownPortal");
var import_context = require("./context");
var import_DropdownItem = require("./DropdownItem");
var import_DropdownDivider = require("./DropdownDivider");
var import_DropdownLabel = require("./DropdownLabel");
var import_context2 = require("./context");
const createDropdown = (components, { context } = {}) => {
const { Root, Trigger, Content, Portal, Item, Divider, Label } = components;
const Dropdown = (0, import_Dropdown.createDropdownMain)(Root);
const DropdownTrigger = (0, import_DropdownTrigger.createDropdownTrigger)(Trigger);
const DropdownContent = (0, import_DropdownContent.createDropdownContent)(Content);
const DropdownPortal = (0, import_DropdownPortal.createDropdownPortal)(Portal);
const DropdownItem = (0, import_DropdownItem.createDropdownItem)(Item);
const DropdownDivider = (0, import_DropdownDivider.createDropdownDivider)(Divider);
const DropdownLabel = (0, import_DropdownLabel.createDropdownLabel)(Label);
Dropdown.displayName = "Dropdown";
DropdownTrigger.displayName = "Dropdown.Trigger";
DropdownContent.displayName = "Dropdown.Content";
DropdownPortal.displayName = "Dropdown.Portal";
DropdownItem.displayName = "Dropdown.Item";
DropdownDivider.displayName = "Dropdown.Divider";
DropdownLabel.displayName = "Dropdown.Label";
return (0, import_core.withStaticProperties)(
(props) => {
const id = (0, import_react.useId)();
const {
value,
defaultValue = false,
onChangeOpen,
...otherProps
} = props;
const [open, setOpen] = (0, import_core.useUncontrolled)({
value,
defaultValue,
onChange: onChangeOpen
});
const contextProps = (0, import_react.useMemo)(() => {
return Object.entries(context || {}).reduce(
(acc, [key]) => {
if (props[key]) {
acc[key] = props[key];
}
return acc;
},
context || {}
);
}, [props]);
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_context.Provider, { ...contextProps, id, open, setOpen, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Dropdown, { ...otherProps }) });
},
{
Trigger: DropdownTrigger,
Content: DropdownContent,
Portal: DropdownPortal,
Item: DropdownItem,
Divider: DropdownDivider,
Label: DropdownLabel
}
);
};
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
ProviderDropdown,
createDropdown,
useDropdownContext
});
//# sourceMappingURL=index.js.map