// パッケージの公開エントリ。
//   ・named export … バンドラ利用（npm）向けの公開API
//   ・自動初期化 … DOM 準備後に [data-rich-editor] を自動マウント（Blade コンポーネントはこれに乗る）
//   ・window.RichEditor … <script> 直読み（UMD/グローバル）向けのグローバル露出
//
// 同梱CSSも取り込む（Vite ライブラリビルドが dist/rich-editor.css として書き出す）。
import '../css/rich-editor.css';
import { mountRichEditor, mountTiptap, initRichEditors } from './editor';
import { initDrafts, clearDraft, clearDraftByKey, draftKeyFor } from './drafts';

export { mountRichEditor, mountTiptap, initRichEditors, initDrafts, clearDraft, clearDraftByKey, draftKeyFor };

// 自動初期化：下書き掃除 → [data-rich-editor] をマウント。
// <html data-rich-editor-manual> を付けると自動初期化を止め、手動で init できる。
export function autoInit() {
    if (typeof document === 'undefined') return;
    if (document.documentElement.hasAttribute('data-rich-editor-manual')) return;
    initDrafts();
    initRichEditors(document);
}

if (typeof document !== 'undefined') {
    if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', autoInit);
    else autoInit();
}

// <script> 直読み（Blade が publish 済みアセットを読む場合）のためのグローバル。
if (typeof window !== 'undefined') {
    window.RichEditor = Object.assign(window.RichEditor || {}, {
        mount: mountRichEditor,
        mountTiptap,
        initRichEditors,
        initDrafts,
        clearDraft,
        clearDraftByKey,
        draftKeyFor,
        autoInit,
    });
}
