"use strict";
/**
 * Copyright (c) Facebook, Inc. and its affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */
Object.defineProperty(exports, "__esModule", { value: true });
exports.calculateReadingTime = calculateReadingTime;
const DEFAULT_WORDS_PER_MINUTE = 200;
/**
 * Counts the number of words in a string using Intl.Segmenter.
 * @param content The text content to count words in.
 * @param locale The locale to use for segmentation.
 */
function countWords(content, locale) {
    if (!content) {
        return 0;
    }
    const segmenter = new Intl.Segmenter(locale, { granularity: 'word' });
    let wordCount = 0;
    for (const { isWordLike } of segmenter.segment(content)) {
        if (isWordLike) {
            wordCount += 1;
        }
    }
    return wordCount;
}
/**
 * Calculates the reading time for a given content string using Intl.Segmenter.
 * @param content The text content to calculate reading time for.
 * @param locale Required locale string for Intl.Segmenter
 * @param options Options for reading time calculation.
 *   - wordsPerMinute: number of words per minute (default 200)
 * @returns Estimated reading time in minutes (float, rounded to 2 decimals)
 */
function calculateReadingTime(content, locale, options) {
    const wordsPerMinute = options?.wordsPerMinute ?? DEFAULT_WORDS_PER_MINUTE;
    const words = countWords(content, locale);
    if (words === 0) {
        return 0;
    }
    // Calculate reading time in minutes and round to 2 decimal places
    return Math.round((words / wordsPerMinute) * 100) / 100;
}
