function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
/*
 * Copyright 2025 Palantir Technologies, Inc. All rights reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import React, { memo, useMemo } from "react";
import { formatDateForInput } from "../../../shared/dateUtils.js";
import { createDateHistogramBuckets } from "./createDateHistogramBuckets.js";
import { RangeInput } from "./RangeInput.js";
const defaultDateConfig = {
  inputType: "date",
  formatValue: formatDateForInput,
  parseValue: () => undefined,
  toNumber: d => d.getTime(),
  fromNumber: t => new Date(t),
  minLabel: "From",
  maxLabel: "To",
  formatTooltip: (min, max, count) => `${formatDateForInput(min)} - ${formatDateForInput(max)}: ${count.toLocaleString()}`
};
function DateRangeHistogramInputInner({
  formatDate,
  valueCountPairs,
  ...rest
}) {
  const config = useMemo(() => formatDate != null ? {
    ...defaultDateConfig,
    formatDate,
    formatTooltip: (min, max, count) => `${formatDate(min)} - ${formatDate(max)}: ${count.toLocaleString()}`
  } : defaultDateConfig, [formatDate]);
  const histogramData = useMemo(() => {
    if (valueCountPairs.length === 0) {
      return undefined;
    }
    let minMs = Infinity;
    let maxMs = -Infinity;
    for (const {
      value
    } of valueCountPairs) {
      const t = value.getTime();
      if (t < minMs) {
        minMs = t;
      }
      if (t > maxMs) {
        maxMs = t;
      }
    }
    if (!Number.isFinite(minMs) || !Number.isFinite(maxMs)) {
      return undefined;
    }
    const {
      buckets,
      subtitle
    } = createDateHistogramBuckets(valueCountPairs, {
      min: new Date(minMs),
      max: new Date(maxMs)
    }, formatDate);
    return {
      buckets,
      subtitle
    };
  }, [valueCountPairs, formatDate]);
  return /*#__PURE__*/React.createElement(RangeInput, _extends({}, rest, {
    valueCountPairs: valueCountPairs,
    config: config,
    histogramData: histogramData
  }));
}
export const DateRangeHistogramInput = /*#__PURE__*/memo(DateRangeHistogramInputInner);
//# sourceMappingURL=DateRangeHistogramInput.js.map