@hitachivantara/uikit-react-core
Version:
Core React components for the NEXT Design System.
62 lines (61 loc) • 1.9 kB
JavaScript
;
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const React = require("react");
function _interopNamespace(e) {
if (e && e.__esModule) return e;
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
if (e) {
for (const k in e) {
if (k !== "default") {
const d = Object.getOwnPropertyDescriptor(e, k);
Object.defineProperty(n, k, d.get ? d : {
enumerable: true,
get: () => e[k]
});
}
}
}
n.default = e;
return Object.freeze(n);
}
const React__namespace = /* @__PURE__ */ _interopNamespace(React);
const useTreeViewModels = (plugins, props) => {
const modelsRef = React__namespace.useRef({});
const [modelsState, setModelsState] = React__namespace.useState(() => {
const initialState = {};
plugins.forEach((plugin) => {
if (plugin.models) {
Object.entries(plugin.models).forEach(([modelName, model]) => {
modelsRef.current[modelName] = {
controlledProp: model.controlledProp,
defaultProp: model.defaultProp,
isControlled: props[model.controlledProp] !== void 0
};
initialState[modelName] = props[model.defaultProp];
});
}
});
return initialState;
});
const models = Object.fromEntries(
Object.entries(modelsRef.current).map(([modelName, model]) => {
const value = model.isControlled ? props[model.controlledProp] : modelsState[modelName];
return [
modelName,
{
value,
setValue: (newValue) => {
if (!model.isControlled) {
setModelsState((prevState) => ({
...prevState,
[modelName]: newValue
}));
}
}
}
];
})
);
return models;
};
exports.useTreeViewModels = useTreeViewModels;