import { shallowRef, watch } from 'vue';
import '../../../../utils/index.mjs';
import { isArray } from '../../../../utils/is.mjs';

function useLazyKVMap(dataRef, childrenColumnNameRef, getRowKeyRef) {
  const mapCacheRef = shallowRef({});
  watch(
    [dataRef, childrenColumnNameRef, getRowKeyRef],
    () => {
      const kvMap = /* @__PURE__ */ new Map();
      const getRowKey = getRowKeyRef.value;
      const childrenColumnName = childrenColumnNameRef.value;
      function dig(records) {
        if (!isArray(records))
          return;
        records.forEach((record, index) => {
          const rowKey = getRowKey(record, index);
          kvMap.set(rowKey, record);
          if (record && typeof record === "object" && childrenColumnName in record)
            dig(record[childrenColumnName] || []);
        });
      }
      dig(dataRef.value);
      mapCacheRef.value = {
        kvMap
      };
    },
    {
      deep: true,
      immediate: true
    }
  );
  function getRecordByKey(key) {
    return mapCacheRef.value.kvMap.get(key);
  }
  return [getRecordByKey];
}

export { useLazyKVMap as default };
//# sourceMappingURL=useLazyKVMap.mjs.map
