@ark-ui/vue
Version:
A collection of unstyled, accessible UI components for Vue, utilizing state machines for seamless interaction.
38 lines (37 loc) • 1.26 kB
JavaScript
import { createSplitProps } from "../create-split-props.js";
import { createTreeCollection } from "../collection/tree-collection.js";
import { useTreeView } from "../tree-view/use-tree-view.js";
import { getBranchValues } from "./get-branch-value.js";
import { computed, toValue } from "vue";
import { getRootNode, nodeToString, nodeToValue } from "@zag-js/json-tree-utils";
//#region src/components/json-tree-view/use-json-tree-view.ts
var splitJsonTreeViewProps = createSplitProps();
var useJsonTreeView = (props) => {
const [jsonTreeProps, localProps] = splitJsonTreeViewProps(toValue(props), [
"maxPreviewItems",
"collapseStringsAfterLength",
"quotesOnKeys",
"groupArraysAfterLength",
"showNonenumerable"
]);
const treeView = useTreeView(computed(() => {
const { data, defaultExpandedDepth, ...restProps } = localProps;
const collection = createTreeCollection({
nodeToValue,
nodeToString,
rootNode: getRootNode(data)
});
return {
defaultExpandedValue: defaultExpandedDepth != null ? getBranchValues(collection, defaultExpandedDepth) : void 0,
...restProps,
collection,
typeahead: false
};
}));
return computed(() => ({
...treeView.value,
options: jsonTreeProps
}));
};
//#endregion
export { useJsonTreeView };