// 関数エリア

// 無改造の policy.ts から Babel が抽出したデータを安全に吸い上げます
const pJA = (window.exports && window.exports.policyJA) || "";
const pEN = (window.exports && window.exports.policyEN) || "";

function renderMarkdown(md) {
	// アプリ同様に各行を分割し、事前にトリム処理を施す
	const lines = md.split("\n").map((line) => line.trim());
	const elements = [];
	let key = 0;

	// URLを抽出するための正規表現
	const urlRegex = /(https?:\/\/[^\s]+)/g;

	// 行内テキストのURLをリンク（<a>タグ）に置換する補助関数
	const linkify = (text) => {
		if (!urlRegex.test(text)) return text;

		const parts = text.split(urlRegex);
		return parts.map((part, index) => {
			if (part.match(urlRegex)) {
				return React.createElement(
					"a",
					{
						key: index,
						href: part,
						target: "_blank",
						rel: "noopener noreferrer",
						className: "site-link",
					},
					part,
				);
			}
			return part;
		});
	};

	for (let i = 0; i < lines.length; i++) {
		const line = lines[i];

		// 空行は文章の区切り（マージン）として扱う（アプリと同様のスキップ処理）
		if (!line) {
			continue;
		}

		// 1. 冒頭 # ：site-h2
		if (line.startsWith("# ")) {
			const cleanText = line.replace("# ", "");
			elements.push(
				React.createElement(
					"h2",
					{ key: key++, className: "site-heading2" },
					linkify(cleanText),
				),
			);
			continue;
		}

		// 2. 冒頭 ## ：site-h3
		if (line.startsWith("## ")) {
			const cleanText = line.replace("## ", "");
			elements.push(
				React.createElement(
					"h3",
					{ key: key++, className: "site-heading3" },
					linkify(cleanText),
				),
			);
			continue;
		}

		// 3. 冒頭 - ：site-list-item
		if (line.startsWith("- ")) {
			const cleanText = line.replace("- ", "");
			elements.push(
				React.createElement(
					"p",
					{ key: key++, className: "site-item" },
					linkify(cleanText),
				),
			);
			continue;
		}

		// 4. 冒頭 * ：site-note (アプリ側の SSMarkdownNote に同期)
		if (line.startsWith("* ")) {
			const cleanText = line.replace("* ", "");
			elements.push(
				React.createElement(
					"p",
					{ key: key++, className: "site-paragraph site-note" },
					linkify(cleanText),
				),
			);
			continue;
		}

		// 5. 冒頭 © ：site-copyright (アプリ側の SSMarkdownCopyright に同期)
		if (line.startsWith("© ")) {
			const cleanText = line.replace("© ", "© ");
			elements.push(
				React.createElement(
					"p",
					{ key: key++, className: "site-paragraph site-copyright" },
					linkify(cleanText),
				),
			);
			continue;
		}

		// 6. **で囲まれた行 ：site-strong
		if (line.startsWith("**") && line.endsWith("**")) {
			const cleanText = line.replaceAll("**", "");
			elements.push(
				React.createElement(
					"p",
					{ key: key++, className: "site-paragraph site-strong" },
					linkify(cleanText),
				),
			);
			continue;
		}

		// 7. 行の冒頭に何もなければ ：site-paragraph (インライン ** を消去)
		const processedLine = line.replaceAll("**", "");
		elements.push(
			React.createElement(
				"p",
				{ key: key++, className: "site-paragraph" },
				linkify(processedLine),
			),
		);
	}

	return elements;
}

function App() {
	const { theme } = useTheme();
	const { t, lang, loading } = useTranslation();

	React.useEffect(function () {
		const hash = window.location.hash;
		if (hash) {
			setTimeout(function () {
				const targetElement = document.querySelector(hash);
				if (targetElement) {
					targetElement.scrollIntoView({
						behavior: "smooth",
						block: "start",
					});
				}
			}, 500);
		}
	}, []);

	// 描画エリア
	return React.createElement(
		"div",
		{ "data-theme-transition": true },
		// ヘッダー
		React.createElement(
			"header",
			{ className: "site-header" },
			React.createElement(LanguageSwitcher, null),
			React.createElement(ThemeToggle, null),
		),
		// ロゴ
		React.createElement(
			"section",
			{ className: "site-section" },
			React.createElement(
				"h1",
				{ className: "site-title" },
				React.createElement("img", {
					src: "/assets/images/logo.png",
					alt: t("title"),
					className: "site-logo-image",
				}),
			),
			React.createElement("p", { className: "site-subtitle" }, t("subtitle")),
		),
		// メイン
		React.createElement(
			"main",
			{ className: "site-main" },
			// DXL Labsについて
			React.createElement(
				"section",
				{ className: "site-section" },

				React.createElement(
					"h2",
					{ className: "site-heading2", id: "about" },
					t("aboutTitle"),
				),
				React.createElement(
					"p",
					{ className: "site-paragraph _textAlignCenter" },
					t("aboutLede"),
				),
			),
			// 開発プロジェクト
			React.createElement("hr", null),
			React.createElement(
				"section",
				{ className: "site-section" },

				React.createElement(
					"h2",
					{ className: "site-heading2", id: "project" },
					t("projectTitle"),
				),
				React.createElement(
					"h3",
					{ className: "site-heading3" },
					t("project1title"),
				),
				React.createElement(
					"p",
					{ className: "site-paragraph" },
					t("project1text"),
				),
				React.createElement(
					"div",
					{ className: "site-button-wrap" },
					React.createElement(
						"a",
						{
							href: "https://xeloc.dxl-labs.dev",
							target: "_blank",
							rel: "noopener noreferrer",
							className: "site-button",
						},
						t("appSite"),
					),
				),
			),
			// 組織情報
			React.createElement("hr", null),
			React.createElement(
				"section",
				{ className: "site-section" },
				React.createElement(
					"h2",
					{ className: "site-heading2" },
					t("orginfoTitle"),
				),
				React.createElement(
					"p",
					{ className: "site-paragraph" },
					t("orginfoText"),
				),
			),
			// プライバシーポリシー
			React.createElement("hr", null),
			React.createElement(
				"section",
				{ className: "site-section" },

				React.createElement(
					"h2",
					{ className: "site-heading2", id: "privacy" },
					t("privacyPolicy"),
				),
				React.createElement(
					"div",
					{ className: "site-privacy" },
					...renderMarkdown(lang === "ja" ? pJA : pEN),
				),
			),
			// お問い合わせ
			React.createElement("hr", null),
			React.createElement(
				"section",
				{ className: "site-section" },
				React.createElement(
					"h2",
					{ className: "site-heading2" },
					t("contactTitle"),
				),
				React.createElement(
					"h2",
					{ className: "site-paragraph" },
					t("contactLede"),
				),
				React.createElement(
					"div",
					{ className: "site-button-wrap" },
					React.createElement(
						"a",
						{
							href: "https://forms.gle/1ck2KGJg7jFBWpGx9",
							target: "_blank",
							rel: "noopener noreferrer",
							className: "site-button",
						},
						t("contactForm"),
					),
				),
			),
		),
		// フッター
		React.createElement(
			"footer",
			{ className: "site-footer" },
			React.createElement("p", { className: "site-copyright" }, t("copyright")),
		),
	);
}
