/**
 * ldesign v0.3.13
 * (c) 2023 ldesign
 * @license MIT
 */

import { _ as _defineProperty } from '../_chunks/dep-2db7b3ec.mjs';
import { h } from 'vue';
import { p as pick_1 } from '../_chunks/dep-8932db97.mjs';
import { i as isFunction_1 } from '../_chunks/dep-5717e263.mjs';
import { i as isString_1 } from '../_chunks/dep-876fb3ec.mjs';
import { i as isArray_1 } from '../_chunks/dep-b57180d0.mjs';
import { i as isNumber_1 } from '../_chunks/dep-3f21269a.mjs';
import '../_chunks/dep-255303ba.mjs';
import '../_chunks/dep-eba0ea6e.mjs';
import '../_chunks/dep-0d3dd4b5.mjs';
import '../_chunks/dep-c8d7b6b4.mjs';
import '../_chunks/dep-2bc37d52.mjs';
import '../_chunks/dep-469b4ae0.mjs';
import '../_chunks/dep-3da99438.mjs';
import '../_chunks/dep-bc1d737a.mjs';
import '../_chunks/dep-4d7a675b.mjs';
import '../_chunks/dep-2e7f59b1.mjs';
import '../_chunks/dep-a8bcacea.mjs';
import '../_chunks/dep-855db8bc.mjs';
import '../_chunks/dep-42cc3015.mjs';
import '../_chunks/dep-550c24c1.mjs';
import '../_chunks/dep-a87f3e4c.mjs';
import '../_chunks/dep-1e566bb5.mjs';
import '../_chunks/dep-42a19209.mjs';
import '../_chunks/dep-1434aa15.mjs';
import '../_chunks/dep-9fe2ef12.mjs';
import '../_chunks/dep-6884627f.mjs';
import '../_chunks/dep-8d3e9aa3.mjs';
import '../_chunks/dep-0fc02184.mjs';

function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
function getParentsToRoot(element, root) {
  var list = [];
  var el = element;
  while (el && el.parentNode) {
    list.push(el);
    if (el === root) break;
    el = el.parentNode;
  }
  return list;
}
function getParentMarks(name, element, root) {
  var list = getParentsToRoot(element, root);
  return list.map(function (el) {
    var mark = {
      name: name,
      value: el.getAttribute(name) || "",
      el: el
    };
    return mark;
  }).filter(function (mark) {
    return mark.value;
  });
}
function getMark(name, element, root) {
  var list = getParentMarks(name, element, root);
  var info = list.pop() || null;
  return info;
}
function getTNode(prop) {
  var _conf$node;
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  var tnode = null;
  var item = null;
  var conf = _objectSpread({}, options);
  if (isFunction_1(prop)) item = prop(h, (_conf$node = conf.node) === null || _conf$node === void 0 ? void 0 : _conf$node.getModel());else if (isString_1(prop)) item = prop;
  if (isString_1(item)) tnode = item;else if (item) tnode = item;
  return tnode;
}
function getLineModel(nodes, node, index) {
  var lineModel = {
    top: false,
    right: false,
    bottom: false,
    left: false
  };
  var nodeChildren = [];
  if (isArray_1(node.children)) nodeChildren = node.children;
  var childNode = nodes[index - 1] || null;
  var nodeItemIndex = childNode ? childNode.getIndex() : 0;
  if (index === 0) {
    lineModel.left = !!node.parent;
    lineModel.bottom = node.children && node.expanded;
    lineModel.right = node.parent && !node.children;
  } else if (index === 1) {
    lineModel.top = true;
    lineModel.right = true;
    lineModel.bottom = nodeItemIndex < nodeChildren.length - 1;
  } else if (nodeItemIndex < nodeChildren.length - 1) {
    lineModel.top = true;
    lineModel.bottom = true;
  }
  return lineModel;
}
function isTreeNodeValue(item) {
  return isString_1(item) || isNumber_1(item);
}
function getNode(store, item) {
  var node = null;
  var val = null;
  if (isString_1(item) || isNumber_1(item)) val = item;else if (item && isTreeNodeValue(item.value)) val = item.value;
  node = store.getNode(val);
  return node;
}
var getStoreConfig = function getStoreConfig(props) {
  var storeProps = pick_1(props, ["keys", "expandAll", "expandLevel", "expandMutex", "expandParent", "activable", "activeMultiple", "disabled", "draggable", "checkable", "checkStrictly", "load", "lazy", "valueMode", "filter"]);
  return storeProps;
};

export { getLineModel, getMark, getNode, getParentMarks, getParentsToRoot, getStoreConfig, getTNode, isTreeNodeValue };
//# sourceMappingURL=util.mjs.map
