const appUtil = {
        /**
         * 文字列が指定した長さを超える場合に切り詰め、末尾に省略記号を追加します。
         *
         * @param {string} str - 対象の文字列
         * @param {number} length - 最大文字数
         * @param {boolean} addDot - 省略記号(...)を追加するかどうか
         * @returns {string} - 切り詰められた（または元の）文字列
         */
        substringIfOver: (str, length, addDot) => {
            if (typeof str !== 'string' || typeof length !== 'number') {
                return ''; // 不正な引数の場合は空文字を返すなど
            }
            if (str.length > length) {
                let removed = str.substring(0, length);
                if (addDot) {
                    removed += '...';
                }
                return removed;
            }
            return str;
        },
        /**
         * 指定したミリ秒数だけ処理を非同期で待機（スリープ）します。
         * async functionで呼び出しawait appUtil.sleep(1000);のように使用します。
         * @param {number} ms - 待機する時間（ミリ秒）
         * @returns {Promise<void>}
         */
        sleep: (ms) => {
            return new Promise(resolve => setTimeout(resolve, ms));
        },
        /**
         * ユーザーの言語に応じたLPのURLを返します。
         *
         * @returns {string} - LPのURL
         */
        getLpUrl: () => {
            const initialData = window.pixaliaPluginData || {};
            const locale = initialData.locale || 'en_US';
            // 日本語(ja)の場合は日本語ページ、それ以外は英語ページ
            return locale.startsWith('ja')
                ? 'https://pixalia.me/media/how-to-use/'
                : 'https://pixalia.me/media/en/how-to-use-en/';
        }
    }
;

export default appUtil;