UNPKG

@hitachivantara/uikit-react-core

Version:

Core React components for the NEXT Design System.

62 lines (61 loc) 1.9 kB
"use strict"; 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;