diff --git a/docs/markdown-renderer.md b/docs/markdown-renderer.md
index 462c230157..91ee4fc9d2 100644
--- a/docs/markdown-renderer.md
+++ b/docs/markdown-renderer.md
@@ -6,7 +6,7 @@ Native selection belongs to the library's text view. Keep an assistant message i
## Links and images
-Workspace file links use the shared file-link resolver. The workspace supplies its client, root and open-file action once; chat can supply the agent's more specific context. URLs use the same link press path. Recognized inline-code paths stay tappable. The library emits a URL without syntax context, so the renderer recovers inline-code context from source when tapped to preserve suffix lookup and literal percent characters. Keep this parsing off reveal frames.
+Workspace file links use the shared file-link resolver. The workspace supplies its client, root and open-file action once; chat can supply the agent's more specific context. URLs use the same link press path. Recognized inline-code paths stay tappable. The library callback carries the tapped occurrence’s syntax context. Preserve it when opening files: explicit Markdown links decode URL escapes, while recognized inline-code paths preserve literal percent characters and use suffix lookup. Identical URL strings in different occurrences must stay distinct.
Resolve workspace image paths over the existing session RPC, then give the library a cached native file URL or web blob URL. HTTP(S) images pass through unchanged. This preserves relay, SSH and local socket connections, which do not expose a daemon HTTP endpoint. Each mounted renderer owns its image acquisition identity, so a later reply reads a rewritten path again while the earlier mounted reply retains its snapshot. Image taps open the attachment lightbox. File previews resolve relative images against the Markdown file's directory.
@@ -14,9 +14,11 @@ Resolve workspace image paths over the existing session RPC, then give the libra
The pinned nightly has the same React Native package and core source trees as upstream commit `73ac5085eb1fdc743973b3473d4dba65abad5261`. Compatibility was checked with React Native 0.81.5. Native dependencies must be rebuilt when changing the highlighting configuration; JavaScript refresh cannot enable compiled grammars.
-Math and video are disabled. Task lists and admonitions are enabled; task checkboxes are read-only. Source adaptation spaces adjacent empty GFM table delimiters before escaping prose spoiler delimiters and decodes entity text before the engine can discard it. Code spans and fences keep their literal source. Mermaid renders as a code block. HTML and details collapsibles have no custom renderer.
+Math and video are disabled. Task lists and admonitions are enabled; task checkboxes are read-only. Source adaptation spaces adjacent empty GFM table delimiters before escaping prose spoiler delimiters and decodes entity text before the engine can discard it. Code spans and fences keep their literal source. HTML and details collapsibles have no custom renderer.
-Native code blocks use the library's copy control and compiled grammars. Web code blocks use `HighlightedCodeBlock` through the library's `renderers.codeBlock` override. The patch also preserves web list numbering and link titles, and marks pending parses with `aria-busy` so Find waits for rendered text. The package patch is tracked by [upstream PR #997](https://github.com/software-mansion/enriched-markdown/pull/997); remove the patch when the pinned release includes it.
+Mermaid fences use the existing isolated diagram runtime and fullscreen viewer. Web dispatches them through the library’s code-block override. Native has no block-renderer hook, so the renderer extracts only Mermaid fences and places the existing WebView host between library-rendered segments. This is the only block exception; selection stops at a diagram boundary. Streaming keeps the last valid diagram visible while the next revision renders.
+
+Native code blocks use the library's copy control and compiled grammars. Web code blocks use `HighlightedCodeBlock` through the library's `renderers.codeBlock` override. The patch also preserves web list numbering and link titles, marks pending parses with `aria-busy` so Find waits for rendered text, and carries link syntax through native and web tap events. The package patch is tracked by [upstream PR #997](https://github.com/software-mansion/enriched-markdown/pull/997); remove the patch when the pinned release includes it.
The library determines how incomplete Markdown appears during streaming. Completed text uses the same component and engine as history. Find and scroll-to-message address source message ids; selection-copy understands semantic HTML and the web code component's copy metadata.
diff --git a/packages/app/e2e/browser/mermaid-fullscreen.spec.ts b/packages/app/e2e/browser/mermaid-fullscreen.spec.ts
new file mode 100644
index 0000000000..72b05ed83e
--- /dev/null
+++ b/packages/app/e2e/browser/mermaid-fullscreen.spec.ts
@@ -0,0 +1,74 @@
+import { test } from "../support/fixtures";
+import {
+ closeDiagramFullscreen,
+ closeDiagramFullscreenFromOutside,
+ expectCompletedDiagram,
+ expectFullscreenDiagram,
+ expectFullscreenDiagramClosed,
+ openDiagramFullscreen,
+ requestDiagram,
+ waitForDiagramTurnToComplete,
+ zoomAndPanFullscreenDiagram,
+} from "../support/helpers/diagram";
+import { openAgentRoute, seedMockAgentWorkspace } from "../support/helpers/mock-agent";
+
+const MERMAID_DIAGRAM = [
+ "```mermaid",
+ "flowchart LR",
+ " Start --> Middle",
+ " Middle --> Review",
+ " Review --> Ship",
+ "```",
+].join("\n");
+
+test("opens a Mermaid diagram fullscreen and closes it again", async ({ page }) => {
+ test.setTimeout(120_000);
+
+ const agent = await seedMockAgentWorkspace({
+ repoPrefix: "mermaid-fullscreen-",
+ title: "Fullscreen Mermaid",
+ featureValues: {
+ mockStreamingAssistantResponse: MERMAID_DIAGRAM,
+ mockStreamingAssistantIntervalMs: 10,
+ },
+ });
+ try {
+ await test.step("Open the conversation and wait for the rendered diagram", async () => {
+ await openAgentRoute(page, agent);
+ await requestDiagram(agent);
+ await waitForDiagramTurnToComplete(agent);
+ await expectCompletedDiagram(page, ["Start", "Ship"]);
+ });
+
+ await test.step("The toolbar opens the diagram fullscreen", async () => {
+ await openDiagramFullscreen(page);
+ await expectFullscreenDiagram(page, ["Start", "Review", "Ship"]);
+ });
+
+ await test.step("The fullscreen diagram zooms with the wheel and pans by dragging", async () => {
+ await zoomAndPanFullscreenDiagram(page);
+ });
+
+ await test.step("The close action returns to the conversation", async () => {
+ await closeDiagramFullscreen(page);
+ await expectFullscreenDiagramClosed(page);
+ await expectCompletedDiagram(page, ["Start", "Ship"]);
+ });
+
+ await test.step("Escape closes the fullscreen diagram", async () => {
+ await openDiagramFullscreen(page);
+ await expectFullscreenDiagram(page, ["Start", "Ship"]);
+ await page.keyboard.press("Escape");
+ await expectFullscreenDiagramClosed(page);
+ });
+
+ await test.step("Clicking outside the diagram closes the fullscreen viewer", async () => {
+ await openDiagramFullscreen(page);
+ await expectFullscreenDiagram(page, ["Start", "Ship"]);
+ await closeDiagramFullscreenFromOutside(page);
+ await expectFullscreenDiagramClosed(page);
+ });
+ } finally {
+ await agent.cleanup();
+ }
+});
diff --git a/packages/app/e2e/browser/mermaid-streaming.spec.ts b/packages/app/e2e/browser/mermaid-streaming.spec.ts
new file mode 100644
index 0000000000..19ade0cb54
--- /dev/null
+++ b/packages/app/e2e/browser/mermaid-streaming.spec.ts
@@ -0,0 +1,72 @@
+import { test } from "../support/fixtures";
+import {
+ expectCompletedDiagram,
+ expectDiagramRemainsRenderedWhileStreaming,
+ expectDiagramWithLabels,
+ reloadConversation,
+ requestDiagram,
+ waitForDiagramTurnToComplete,
+} from "../support/helpers/diagram";
+import { openAgentRoute, seedMockAgentWorkspace } from "../support/helpers/mock-agent";
+
+const STREAMED_MERMAID = [
+ "```mermaid",
+ "flowchart LR",
+ " Start --> Middle",
+ ' Middle --> Done["Done"]',
+ " Middle --> Review",
+ " Review --> Verify",
+ " Verify --> Ship",
+ " Ship --> Package",
+ " Package --> Sign",
+ " Sign --> Upload",
+ " Upload --> Publish",
+ " Publish --> Deploy",
+ " Deploy --> Observe",
+ " Observe --> Validate",
+ " Validate --> Announce",
+ " Announce --> Document",
+ " Document --> Archive",
+ " Archive --> Release",
+ "```",
+].join("\n");
+
+test("keeps a Mermaid diagram rendered while its message streams, completes, and reloads", async ({
+ page,
+}) => {
+ test.setTimeout(120_000);
+ let diagramTurnCompleted!: Promise;
+
+ const agent = await seedMockAgentWorkspace({
+ repoPrefix: "mermaid-streaming-",
+ title: "Streaming Mermaid",
+ featureValues: {
+ mockStreamingAssistantResponse: STREAMED_MERMAID,
+ mockStreamingAssistantIntervalMs: 150,
+ },
+ });
+ try {
+ await test.step("Open the conversation and request a diagram", async () => {
+ await openAgentRoute(page, agent);
+ await requestDiagram(agent);
+ diagramTurnCompleted = waitForDiagramTurnToComplete(agent);
+ });
+
+ await test.step("The diagram renders and stays rendered while tokens arrive", async () => {
+ await expectDiagramWithLabels(page, ["Start", "Middle"]);
+ await expectDiagramRemainsRenderedWhileStreaming(page, diagramTurnCompleted);
+ });
+
+ await test.step("The completed diagram shows the final streamed content", async () => {
+ await diagramTurnCompleted;
+ await expectCompletedDiagram(page, ["Start", "Done", "Release"]);
+ });
+
+ await test.step("The completed diagram remains rendered after reload", async () => {
+ await reloadConversation(page);
+ await expectCompletedDiagram(page, ["Start", "Done", "Release"]);
+ });
+ } finally {
+ await agent.cleanup();
+ }
+});
diff --git a/packages/app/e2e/browser/plan-card-markdown.spec.ts b/packages/app/e2e/browser/plan-card-markdown.spec.ts
index 660e7a5a5f..a28d6a9caf 100644
--- a/packages/app/e2e/browser/plan-card-markdown.spec.ts
+++ b/packages/app/e2e/browser/plan-card-markdown.spec.ts
@@ -35,7 +35,7 @@ test("chat and file preview share the library renderer and resolve file links",
}, testInfo) => {
const { writeFile, mkdir } = await import("node:fs/promises");
const source =
- "First paragraph.\n\nSecond paragraph.\n\n```ts\nconst answer = 42;\n```\n\n> A quote\n\n| Key || Value |\n| --- | --- | --- |\n| Answer || 42 |\n\nOpen `README.md` or `src/说明.md:2-3`.";
+ "First paragraph.\n\nSecond paragraph.\n\n```ts\nconst answer = 42;\n```\n\n> A quote\n\n| Key || Value |\n| --- | --- | --- |\n| Answer || 42 |\n\nOpen `README.md` or `src/说明.md:2-3`.\n\n[Space file](my%20file.ts) and `my%20file.ts`.";
const session = await seedMockAgentWorkspace({
repoPrefix: "shared-markdown-",
title: "Shared Markdown",
@@ -44,6 +44,11 @@ test("chat and file preview share the library renderer and resolve file links",
});
try {
await writeFile(`${session.cwd}/README.md`, source);
+ await writeFile(`${session.cwd}/my file.ts`, "Explicit link opened the space filename.");
+ await writeFile(
+ `${session.cwd}/my%20file.ts`,
+ "Inline code opened the literal percent filename.",
+ );
await mkdir(`${session.cwd}/packages/app/src`, { recursive: true });
await writeFile(
`${session.cwd}/packages/app/src/说明.md`,
@@ -67,6 +72,16 @@ test("chat and file preview share the library renderer and resolve file links",
await page.getByRole("button", { name: "Shared Markdown", exact: true }).click();
await message.getByRole("link", { name: "src/说明.md:2-3" }).click();
await expect(page.getByText("Unicode suffix lookup succeeded.", { exact: true })).toBeVisible();
+ await page.getByRole("button", { name: "Shared Markdown", exact: true }).click();
+ await message.getByRole("link", { name: "Space file", exact: true }).click();
+ await expect(
+ page.getByText("Explicit link opened the space filename.", { exact: true }),
+ ).toBeVisible();
+ await page.getByRole("button", { name: "Shared Markdown", exact: true }).click();
+ await message.getByRole("link", { name: "my%20file.ts", exact: true }).click();
+ await expect(
+ page.getByText("Inline code opened the literal percent filename.", { exact: true }),
+ ).toBeVisible();
await testInfo.attach("shared-renderer", {
body: await page.screenshot(),
contentType: "image/png",
diff --git a/packages/app/e2e/support/helpers/diagram.ts b/packages/app/e2e/support/helpers/diagram.ts
new file mode 100644
index 0000000000..82fd745de1
--- /dev/null
+++ b/packages/app/e2e/support/helpers/diagram.ts
@@ -0,0 +1,150 @@
+import { expect, type Page } from "@playwright/test";
+import type { MockAgentWorkspace } from "./mock-agent";
+
+const DIAGRAM_NAME = "Diagram";
+
+function renderedDiagram(page: Page) {
+ const diagram = page.getByRole("img", { name: DIAGRAM_NAME }).last();
+ const svg = diagram.locator("iframe").contentFrame().locator("#diagram svg");
+ return { diagram, svg };
+}
+
+export async function requestDiagram(agent: MockAgentWorkspace): Promise {
+ await agent.client.sendAgentMessage(agent.agentId, "Render the requested Mermaid diagram.");
+}
+
+export async function expectDiagramWithLabels(
+ page: Page,
+ labels: readonly string[],
+): Promise {
+ const { diagram, svg } = renderedDiagram(page);
+ await expect(diagram).toBeVisible({ timeout: 30_000 });
+ await expect(svg).toBeVisible({ timeout: 30_000 });
+ for (const label of labels) {
+ await expect(svg).toContainText(label);
+ }
+}
+
+export async function expectDiagramRemainsRenderedWhileStreaming(
+ page: Page,
+ completion: Promise,
+): Promise {
+ const diagram = page.getByRole("img", { name: DIAGRAM_NAME }).last();
+ let turnCompleted = false;
+ const completed = completion.then(() => {
+ turnCompleted = true;
+ return true;
+ });
+ for (;;) {
+ expect(await diagram.isVisible()).toBe(true);
+ if (turnCompleted) return completion;
+ const box = await diagram.boundingBox();
+ if (turnCompleted) return completion;
+ expect(box, "the inline diagram should have measurable layout").not.toBeNull();
+ expect(
+ box?.height,
+ "the inline diagram should remain tall enough to read",
+ ).toBeGreaterThanOrEqual(56);
+ const didComplete = await Promise.race([completed, page.waitForTimeout(16).then(() => false)]);
+ if (didComplete) return completion;
+ }
+}
+
+export async function waitForDiagramTurnToComplete(agent: MockAgentWorkspace): Promise {
+ await agent.client.waitForFinish(agent.agentId, 30_000);
+}
+
+export async function expectCompletedDiagram(page: Page, labels: readonly string[]): Promise {
+ await expectDiagramWithLabels(page, labels);
+}
+
+export async function reloadConversation(page: Page): Promise {
+ await page.reload({ waitUntil: "domcontentloaded" });
+}
+
+const FULLSCREEN_VIEWPORT = "mermaid-fullscreen-viewport";
+
+function diagramSvg(page: Page, viewportTestId: string) {
+ return page
+ .getByTestId(`${viewportTestId}-canvas`)
+ .last()
+ .locator("iframe")
+ .contentFrame()
+ .locator("#diagram svg");
+}
+
+/**
+ * The viewport toolbar only reveals itself on hover, so the diagram is hovered first. The
+ * pointer is parked elsewhere beforehand so the hover transition fires even when a previous
+ * step left the cursor inside the viewport.
+ */
+export async function openDiagramFullscreen(page: Page): Promise {
+ await page.mouse.move(0, 0);
+ await page.getByTestId("mermaid-viewport-canvas").last().hover();
+ await page.getByTestId("mermaid-fullscreen").last().click();
+}
+
+export async function closeDiagramFullscreen(page: Page): Promise {
+ await page.getByTestId(`${FULLSCREEN_VIEWPORT}-canvas`).hover();
+ await page.getByTestId("mermaid-fullscreen-close").click();
+}
+
+export async function zoomAndPanFullscreenDiagram(page: Page): Promise {
+ const canvas = page.getByTestId(`${FULLSCREEN_VIEWPORT}-canvas`);
+ const svg = diagramSvg(page, FULLSCREEN_VIEWPORT);
+ const initial = await svg.boundingBox();
+ expect(initial, "the fullscreen diagram should have measurable layout").not.toBeNull();
+
+ await page.mouse.move(initial!.x + initial!.width / 2, initial!.y + initial!.height / 2);
+ await page.mouse.wheel(0, -100);
+
+ const zoomed = await svg.boundingBox();
+ expect(zoomed, "the zoomed diagram should have measurable layout").not.toBeNull();
+ expect(zoomed!.width).toBeGreaterThan(initial!.width * 1.1);
+
+ const viewport = await canvas.boundingBox();
+ expect(viewport, "the fullscreen viewport should have measurable layout").not.toBeNull();
+ await page.mouse.move(viewport!.x + viewport!.width / 2, viewport!.y + viewport!.height / 2);
+ await page.mouse.down();
+ await page.mouse.move(
+ viewport!.x + viewport!.width / 2 - 120,
+ viewport!.y + viewport!.height / 2,
+ );
+ await page.mouse.up();
+
+ const panned = await svg.boundingBox();
+ expect(panned, "the panned diagram should have measurable layout").not.toBeNull();
+ expect(Math.abs(panned!.x - zoomed!.x)).toBeGreaterThan(100);
+}
+
+export async function closeDiagramFullscreenFromOutside(page: Page): Promise {
+ const canvas = page.getByTestId(`${FULLSCREEN_VIEWPORT}-canvas`);
+ const viewport = await canvas.boundingBox();
+ const svg = await diagramSvg(page, FULLSCREEN_VIEWPORT).boundingBox();
+ expect(viewport, "the fullscreen viewport should have measurable layout").not.toBeNull();
+ expect(svg, "the fullscreen diagram should have measurable layout").not.toBeNull();
+
+ const x = viewport!.x + viewport!.width / 2;
+ const y =
+ svg!.y + svg!.height < viewport!.y + viewport!.height - 8
+ ? viewport!.y + viewport!.height - 4
+ : viewport!.y + 4;
+ await page.mouse.click(x, y);
+}
+
+export async function expectFullscreenDiagram(
+ page: Page,
+ labels: readonly string[],
+): Promise {
+ const viewport = page.getByTestId(FULLSCREEN_VIEWPORT);
+ await expect(viewport).toBeVisible({ timeout: 30_000 });
+ const svg = diagramSvg(page, FULLSCREEN_VIEWPORT);
+ await expect(svg).toBeVisible({ timeout: 30_000 });
+ for (const label of labels) {
+ await expect(svg).toContainText(label);
+ }
+}
+
+export async function expectFullscreenDiagramClosed(page: Page): Promise {
+ await expect(page.getByTestId(FULLSCREEN_VIEWPORT)).toHaveCount(0);
+}
diff --git a/packages/app/src/assistant-file-links/index.ts b/packages/app/src/assistant-file-links/index.ts
index 832e0ab7d4..c4078ad332 100644
--- a/packages/app/src/assistant-file-links/index.ts
+++ b/packages/app/src/assistant-file-links/index.ts
@@ -2,7 +2,7 @@ export {
classifyAssistantFileLink,
normalizeInlinePathTarget,
type InlinePathTarget,
-} from "./paths";
+} from "./parse";
export {
AssistantFileLinkResolverProvider,
useAssistantFileLinkEnvironment,
diff --git a/packages/app/src/assistant-file-links/paths/index.test.ts b/packages/app/src/assistant-file-links/parse.test.ts
similarity index 99%
rename from packages/app/src/assistant-file-links/paths/index.test.ts
rename to packages/app/src/assistant-file-links/parse.test.ts
index e09640f3f5..3390d0cfa9 100644
--- a/packages/app/src/assistant-file-links/paths/index.test.ts
+++ b/packages/app/src/assistant-file-links/parse.test.ts
@@ -5,7 +5,7 @@ import {
parseAssistantFileLink,
parseFileProtocolUrl,
parseInlinePathToken,
-} from "./index";
+} from "./parse";
describe("parseInlinePathToken", () => {
it("returns null for plain paths without a line number", () => {
diff --git a/packages/app/src/assistant-file-links/paths/index.ts b/packages/app/src/assistant-file-links/parse.ts
similarity index 100%
rename from packages/app/src/assistant-file-links/paths/index.ts
rename to packages/app/src/assistant-file-links/parse.ts
diff --git a/packages/app/src/assistant-file-links/provider.tsx b/packages/app/src/assistant-file-links/provider.tsx
index 479ce2a635..967e1c32e3 100644
--- a/packages/app/src/assistant-file-links/provider.tsx
+++ b/packages/app/src/assistant-file-links/provider.tsx
@@ -10,7 +10,7 @@ import {
import React from "react";
import type { ToastApi } from "@/components/toast-host";
import type { OpenFileDisposition } from "@/workspace/file-open";
-import type { InlinePathTarget } from "./paths";
+import type { InlinePathTarget } from "./parse";
import type { AssistantFileLinkContext, GetDirectorySuggestions } from "./resolver";
export interface AssistantFileLinkDaemonClient {
diff --git a/packages/app/src/assistant-file-links/resolver.ts b/packages/app/src/assistant-file-links/resolver.ts
index 85dc685256..774d39278b 100644
--- a/packages/app/src/assistant-file-links/resolver.ts
+++ b/packages/app/src/assistant-file-links/resolver.ts
@@ -3,7 +3,7 @@ import {
isFileLookingAssistantToken,
type AssistantFileLinkClassification,
type InlinePathTarget,
-} from "./paths";
+} from "./parse";
import { i18n } from "@/i18n/i18next";
export interface AssistantFileLinkSource {
diff --git a/packages/app/src/assistant-file-links/use-file-link.test.tsx b/packages/app/src/assistant-file-links/use-file-link.test.tsx
index e336f12e67..386cb429f1 100644
--- a/packages/app/src/assistant-file-links/use-file-link.test.tsx
+++ b/packages/app/src/assistant-file-links/use-file-link.test.tsx
@@ -6,7 +6,7 @@ import { act, renderHook, waitFor } from "@testing-library/react";
import React, { useCallback, useMemo, useState, type ReactNode } from "react";
import { describe, expect, it, vi } from "vitest";
import type { ToastApi } from "@/components/toast-host";
-import type { InlinePathTarget } from "./paths";
+import type { InlinePathTarget } from "./parse";
import { AssistantFileLinkResolverProvider } from "./provider";
import type { DirectorySuggestionResult } from "./resolver";
import { useFileLink } from "./use-file-link";
diff --git a/packages/app/src/assistant-file-links/use-file-link.ts b/packages/app/src/assistant-file-links/use-file-link.ts
index 401c52d70f..603645f0fe 100644
--- a/packages/app/src/assistant-file-links/use-file-link.ts
+++ b/packages/app/src/assistant-file-links/use-file-link.ts
@@ -4,7 +4,7 @@ import { useTranslation } from "react-i18next";
import { useStableEvent } from "@/hooks/use-stable-event";
import type { OpenFileDisposition } from "@/workspace/file-open";
import { openExternalUrl } from "@/utils/open-external-url";
-import type { InlinePathTarget } from "./paths";
+import type { InlinePathTarget } from "./parse";
import {
useAssistantFileLinkResolverContext,
type AssistantFileLinkResolverContextValue,
diff --git a/packages/app/src/components/markdown/fence/mermaid/build-runtime.mjs b/packages/app/src/components/markdown/fence/mermaid/build-runtime.mjs
new file mode 100644
index 0000000000..6ed821ceac
--- /dev/null
+++ b/packages/app/src/components/markdown/fence/mermaid/build-runtime.mjs
@@ -0,0 +1,81 @@
+import esbuild from "esbuild";
+import fs from "node:fs/promises";
+import path from "node:path";
+import { fileURLToPath } from "node:url";
+
+const __dirname = path.dirname(fileURLToPath(import.meta.url));
+const appRoot = path.resolve(__dirname, "../../../../..");
+const repoRoot = path.resolve(appRoot, "../..");
+const entry = path.join(__dirname, "runtime/entry.ts");
+const output = path.join(__dirname, "runtime/html.gen.ts");
+
+const result = await esbuild.build({
+ entryPoints: [entry],
+ bundle: true,
+ write: false,
+ format: "iife",
+ platform: "browser",
+ target: ["ios15", "chrome100"],
+ minify: true,
+ // The app's deployment floor is iOS 15.1 but structuredClone (used by
+ // mermaid) only exists from iOS 15.4; esbuild targets transform syntax,
+ // not runtime APIs. Mermaid only clones plain config objects, so a
+ // JSON-based fallback is sufficient.
+ banner: {
+ js: 'if(typeof globalThis.structuredClone!=="function"){globalThis.structuredClone=function(v){return v===undefined?v:JSON.parse(JSON.stringify(v));};}',
+ },
+ logLevel: "info",
+});
+
+const rawJs = result.outputFiles[0]?.text;
+if (!rawJs) {
+ throw new Error("Mermaid runtime bundle produced no JavaScript");
+}
+// JSON.stringify below escapes the TypeScript representation, not the runtime
+// HTML — an embedded closing-script sequence would still terminate the inline
+//
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+const contents = `// Generated by packages/app/src/components/markdown/fence/mermaid/build-runtime.mjs.
+// Do not edit by hand.
+
+export const mermaidRuntimeHtml = ${JSON.stringify(html)};
+`;
+
+await fs.writeFile(output, contents);
+console.log(`Wrote ${path.relative(repoRoot, output)} (${html.length} bytes)`);
diff --git a/packages/app/src/components/markdown/fence/mermaid/fullscreen-viewer.web.tsx b/packages/app/src/components/markdown/fence/mermaid/fullscreen-viewer.web.tsx
new file mode 100644
index 0000000000..8b68ae61cb
--- /dev/null
+++ b/packages/app/src/components/markdown/fence/mermaid/fullscreen-viewer.web.tsx
@@ -0,0 +1,140 @@
+import { useCallback, useEffect, useMemo, useRef } from "react";
+import { Modal, View } from "react-native";
+import { X } from "lucide-react-native";
+import { useTranslation } from "react-i18next";
+import { StyleSheet } from "react-native-unistyles";
+import { useSafeAreaInsets } from "react-native-safe-area-context";
+import { ZoomableViewport } from "@/components/zoomable-viewport";
+import { SPACING } from "@/styles/theme";
+import { WindowChromeRootRegion } from "@/utils/desktop-window";
+import { MermaidIframeRuntime, type MermaidRenderedMessage } from "./iframe-runtime.web";
+import type { DiagramColorScheme } from "./render-model";
+import { useMermaidRenderModel } from "./use-render-model";
+
+interface MermaidFullscreenViewerProps {
+ source: string;
+ colorScheme: DiagramColorScheme;
+ onClose: () => void;
+}
+
+// The diagram is already in the render cache, so the viewport knows its size before the
+// fullscreen iframe has re-rendered it.
+const FALLBACK_SIZE = { width: 240, height: 240 };
+const VIEWER_FIT = { padding: SPACING[6] };
+
+export function MermaidFullscreenViewer({
+ source,
+ colorScheme,
+ onClose,
+}: MermaidFullscreenViewerProps) {
+ const { t } = useTranslation();
+ const insets = useSafeAreaInsets();
+ const { state, request, rendered, renderFailed } = useMermaidRenderModel({
+ source,
+ phase: "complete",
+ colorScheme,
+ });
+ const handleRendered = useCallback(
+ (message: MermaidRenderedMessage) => {
+ rendered({
+ revision: message.revision,
+ source: message.source,
+ colorScheme: message.colorScheme,
+ dimensions: { height: message.height, width: message.width },
+ });
+ },
+ [rendered],
+ );
+
+ useEffect(() => {
+ function handleKeydown(event: KeyboardEvent): void {
+ if (event.key === "Escape") onClose();
+ }
+ window.addEventListener("keydown", handleKeydown);
+ return () => window.removeEventListener("keydown", handleKeydown);
+ }, [onClose]);
+
+ // The Modal focus trap walks descendants and focuses the first one that takes it. Focus the
+ // content layer ourselves (this effect runs after the trap's) so keystrokes stay in this
+ // document instead of disappearing into a focused diagram iframe.
+ const contentLayerRef = useRef(null);
+ useEffect(() => {
+ contentLayerRef.current?.focus();
+ }, []);
+
+ const visible = state.visible;
+ const contentSize = useMemo(
+ () => (visible ? { width: visible.width, height: visible.height } : FALLBACK_SIZE),
+ [visible],
+ );
+ const actions = useMemo(
+ () => [
+ {
+ icon: X,
+ label: t("common.actions.close"),
+ onPress: onClose,
+ testID: "mermaid-fullscreen-close",
+ },
+ ],
+ [onClose, t],
+ );
+ const contentLayerStyle = useMemo(
+ () => [
+ styles.contentLayer,
+ {
+ paddingTop: insets.top,
+ paddingRight: insets.right,
+ paddingBottom: insets.bottom,
+ paddingLeft: insets.left,
+ },
+ ],
+ [insets.bottom, insets.left, insets.right, insets.top],
+ );
+
+ return (
+
+
+
+
+
+ {/* biome-ignore lint/a11y/noNoninteractiveTabindex: focus holder for the Escape shortcut */}
+
+
+
+
+
+
+
+
+
+ );
+}
+
+const focusLayerDomStyle: React.CSSProperties = {
+ display: "flex",
+ flexDirection: "column",
+ height: "100%",
+ minHeight: 0,
+ outline: "none",
+};
+
+const styles = StyleSheet.create((theme) => ({
+ root: { flex: 1, minHeight: 0, minWidth: 0 },
+ backdrop: { position: "absolute", inset: 0, backgroundColor: theme.colors.surface0 },
+ contentLayer: { position: "absolute", inset: 0 },
+ viewport: { flex: 1 },
+}));
diff --git a/packages/app/src/components/markdown/fence/mermaid/host.native.tsx b/packages/app/src/components/markdown/fence/mermaid/host.native.tsx
new file mode 100644
index 0000000000..001ec5cf1c
--- /dev/null
+++ b/packages/app/src/components/markdown/fence/mermaid/host.native.tsx
@@ -0,0 +1,379 @@
+import { useCallback, useEffect, useMemo, useRef, useState } from "react";
+import {
+ Modal,
+ Pressable,
+ StyleSheet as RNStyleSheet,
+ ScrollView,
+ View,
+ type TextStyle,
+ type ViewStyle,
+} from "react-native";
+import { WebView, type WebViewMessageEvent } from "react-native-webview";
+import { Code, Workflow, X } from "lucide-react-native";
+import { useTranslation } from "react-i18next";
+import { StyleSheet, withUnistyles } from "react-native-unistyles";
+import { HighlightedCodeBlock } from "@/components/highlighted-code-block";
+import type { Theme } from "@/styles/theme";
+import type { MarkdownFenceRendererProps } from "./types";
+import type { MermaidRenderRequest } from "./render-model";
+import { mermaidRuntimeHtml } from "./runtime/html.gen";
+import {
+ parseMermaidRuntimeMessage,
+ serializeMermaidRuntimeRenderMessage,
+ type MermaidRuntimeRenderMessage,
+} from "./runtime/messages";
+import { MermaidRuntimeRequestDriver } from "./runtime/request-driver";
+import { useMermaidRenderModel } from "./use-render-model";
+import { getDiagramBoxStyle } from "./presentation";
+
+interface MermaidFenceHostImplProps extends MarkdownFenceRendererProps {
+ colorScheme?: "light" | "dark";
+}
+
+const WEBVIEW_SOURCE = { html: mermaidRuntimeHtml };
+const WEBVIEW_ORIGIN_WHITELIST = ["*"];
+const MAX_PREVIEW_HEIGHT = 480;
+
+interface MermaidWebViewProps {
+ request: MermaidRenderRequest | null;
+ interactive: boolean;
+ onRendered: (message: {
+ revision: number;
+ source: string;
+ colorScheme: "light" | "dark";
+ height: number;
+ width: number;
+ }) => void;
+ onRenderFailed: (revision: number) => void;
+ style?: ViewStyle;
+}
+
+function MermaidWebView({
+ request,
+ interactive,
+ onRendered,
+ onRenderFailed,
+ style,
+}: MermaidWebViewProps) {
+ const webViewRef = useRef(null);
+ const driverRef = useRef(null);
+ driverRef.current ??= new MermaidRuntimeRequestDriver();
+
+ const sendRequest = useCallback(
+ (current: MermaidRenderRequest | null) => {
+ if (!current || !webViewRef.current) {
+ return;
+ }
+ const message: MermaidRuntimeRenderMessage = {
+ type: "render",
+ revision: current.revision,
+ source: current.source,
+ colorScheme: current.colorScheme,
+ interactive,
+ };
+ const payload = serializeMermaidRuntimeRenderMessage(message);
+ webViewRef.current.injectJavaScript(
+ `window.__PASEO_MERMAID_RUNTIME_RECEIVE__ && window.__PASEO_MERMAID_RUNTIME_RECEIVE__(${payload}); true;`,
+ );
+ },
+ [interactive],
+ );
+
+ useEffect(() => {
+ sendRequest(driverRef.current?.update(request) ?? null);
+ }, [request, sendRequest]);
+
+ const handleMessage = useCallback(
+ (event: WebViewMessageEvent) => {
+ let value: unknown;
+ try {
+ value = JSON.parse(event.nativeEvent.data);
+ } catch {
+ return;
+ }
+ const message = parseMermaidRuntimeMessage(value);
+ if (!message) {
+ return;
+ }
+ if (message.type === "bridgeReady") {
+ sendRequest(driverRef.current?.ready() ?? null);
+ return;
+ }
+ if (message.type === "renderError") {
+ onRenderFailed(message.revision);
+ sendRequest(driverRef.current?.settled(message.revision, false) ?? null);
+ return;
+ }
+ onRendered(message);
+ sendRequest(driverRef.current?.settled(message.revision, true) ?? null);
+ },
+ [onRenderFailed, onRendered, sendRequest],
+ );
+ const handleShouldStartLoad = useCallback(
+ (load: { url: string }) => load.url === "about:blank" || load.url.startsWith("data:"),
+ [],
+ );
+
+ return (
+
+ );
+}
+
+const webViewStyles = RNStyleSheet.create({
+ webView: { backgroundColor: "transparent" },
+});
+
+interface MermaidDiagramViewerProps {
+ code: string;
+ colorScheme: "light" | "dark";
+ onClose: () => void;
+ inheritedStyles: TextStyle;
+ textStyle: TextStyle;
+}
+
+function MermaidDiagramViewer({
+ code,
+ colorScheme,
+ onClose,
+ inheritedStyles,
+ textStyle,
+}: MermaidDiagramViewerProps) {
+ const { t } = useTranslation();
+ const [showSource, setShowSource] = useState(false);
+ const toggleSource = useCallback(() => setShowSource((current) => !current), []);
+ const { request, rendered, renderFailed } = useMermaidRenderModel({
+ source: code,
+ phase: "complete",
+ colorScheme,
+ });
+ const handleRendered = useCallback(
+ (message: {
+ revision: number;
+ source: string;
+ colorScheme: "light" | "dark";
+ height: number;
+ width: number;
+ }) => {
+ rendered({
+ revision: message.revision,
+ source: message.source,
+ colorScheme: message.colorScheme,
+ dimensions: { height: message.height, width: message.width },
+ });
+ },
+ [rendered],
+ );
+
+ return (
+
+
+
+
+ {showSource ? (
+
+
+
+ ) : null}
+
+
+
+ {showSource ? (
+
+ ) : (
+
+ )}
+
+
+
+
+
+
+
+ );
+}
+
+const ThemedCloseIcon = withUnistyles(X);
+const ThemedSourceIcon = withUnistyles(Code);
+const ThemedDiagramIcon = withUnistyles(Workflow);
+const closeIconColor = (theme: Theme) => ({ color: theme.colors.foreground });
+
+const viewerStyles = StyleSheet.create((theme, runtime) => ({
+ backdrop: { flex: 1, backgroundColor: theme.colors.surface0 },
+ webView: {
+ flex: 1,
+ marginTop: runtime.insets.top,
+ marginBottom: runtime.insets.bottom,
+ },
+ runtime: { flex: 1 },
+ sourceOverlay: {
+ position: "absolute",
+ inset: 0,
+ backgroundColor: theme.colors.surface0,
+ },
+ source: {
+ paddingTop: theme.spacing[12],
+ paddingHorizontal: theme.spacing[4],
+ paddingBottom: theme.spacing[4],
+ },
+ actions: {
+ position: "absolute",
+ top: runtime.insets.top + theme.spacing[3],
+ right: theme.spacing[4],
+ flexDirection: "row",
+ gap: theme.spacing[2],
+ },
+ actionButton: {
+ padding: theme.spacing[2],
+ borderRadius: theme.borderRadius.lg,
+ backgroundColor: theme.colors.surface2,
+ },
+}));
+
+function MermaidFenceHostImpl({
+ code,
+ phase,
+ inheritedStyles,
+ textStyle,
+ colorScheme = "dark",
+}: MermaidFenceHostImplProps) {
+ const { t } = useTranslation();
+ const { state, request, rendered, renderFailed } = useMermaidRenderModel({
+ source: code,
+ phase,
+ colorScheme,
+ });
+ const [hasRuntimeContent, setHasRuntimeContent] = useState(false);
+ const handleRendered = useCallback(
+ (message: {
+ revision: number;
+ source: string;
+ colorScheme: "light" | "dark";
+ height: number;
+ width: number;
+ }) => {
+ setHasRuntimeContent(true);
+ rendered({
+ revision: message.revision,
+ source: message.source,
+ colorScheme: message.colorScheme,
+ dimensions: { height: message.height, width: message.width },
+ });
+ },
+ [rendered],
+ );
+ const [viewerOpen, setViewerOpen] = useState(false);
+ const openViewer = useCallback(() => setViewerOpen(true), []);
+ const closeViewer = useCallback(() => setViewerOpen(false), []);
+ const visible = state.visible;
+ const canShowDiagram = visible !== null && hasRuntimeContent;
+ const previewInnerStyle = useMemo(
+ () =>
+ canShowDiagram && visible
+ ? { height: Math.min(visible.height, MAX_PREVIEW_HEIGHT) }
+ : previewStyles.measuringInner,
+ [canShowDiagram, visible],
+ );
+ const diagramBoxStyle = getDiagramBoxStyle(textStyle);
+
+ return (
+ <>
+ {!canShowDiagram ? (
+
+ ) : null}
+
+
+
+
+
+ {viewerOpen && canShowDiagram && visible ? (
+
+ ) : null}
+ >
+ );
+}
+
+const previewStyles = RNStyleSheet.create({
+ measuring: {
+ position: "absolute",
+ left: 0,
+ right: 0,
+ opacity: 0,
+ pointerEvents: "none",
+ },
+ measuringInner: { height: 240 },
+ preview: { overflow: "hidden" },
+});
+
+const mapColorScheme = (theme: Theme) => ({ colorScheme: theme.colorScheme });
+const ThemedMermaidFenceHost = withUnistyles(MermaidFenceHostImpl);
+
+export function MermaidFenceHost(props: MarkdownFenceRendererProps) {
+ return ;
+}
diff --git a/packages/app/src/components/markdown/fence/mermaid/host.tsx b/packages/app/src/components/markdown/fence/mermaid/host.tsx
new file mode 100644
index 0000000000..ff2ca3268c
--- /dev/null
+++ b/packages/app/src/components/markdown/fence/mermaid/host.tsx
@@ -0,0 +1,13 @@
+import { HighlightedCodeBlock } from "@/components/highlighted-code-block";
+import type { MarkdownFenceRendererProps } from "./types";
+
+export function MermaidFenceHost({ code, inheritedStyles, textStyle }: MarkdownFenceRendererProps) {
+ return (
+
+ );
+}
diff --git a/packages/app/src/components/markdown/fence/mermaid/host.web.tsx b/packages/app/src/components/markdown/fence/mermaid/host.web.tsx
new file mode 100644
index 0000000000..fed9afe3a3
--- /dev/null
+++ b/packages/app/src/components/markdown/fence/mermaid/host.web.tsx
@@ -0,0 +1,193 @@
+import { useCallback, useMemo, useState } from "react";
+import { Pressable, View, type TextStyle, type ViewStyle } from "react-native";
+import { Code, Maximize2, Workflow } from "lucide-react-native";
+import { useTranslation } from "react-i18next";
+import { StyleSheet, withUnistyles } from "react-native-unistyles";
+import { HighlightedCodeBlock } from "@/components/highlighted-code-block";
+import { ZoomableViewport } from "@/components/zoomable-viewport";
+import type { Theme } from "@/styles/theme";
+import type { MarkdownFenceRendererProps } from "./types";
+import { MermaidFullscreenViewer } from "./fullscreen-viewer.web";
+import { MermaidIframeRuntime, type MermaidRenderedMessage } from "./iframe-runtime.web";
+import { useMermaidRenderModel } from "./use-render-model";
+import { getDiagramBoxStyle } from "./presentation";
+
+interface MermaidFenceHostImplProps extends MarkdownFenceRendererProps {
+ colorScheme?: "light" | "dark";
+}
+
+function MermaidFenceHostImpl({
+ code,
+ phase,
+ inheritedStyles,
+ textStyle,
+ colorScheme = "dark",
+}: MermaidFenceHostImplProps) {
+ const { t } = useTranslation();
+ const { state, request, rendered, renderFailed } = useMermaidRenderModel({
+ source: code,
+ phase,
+ colorScheme,
+ });
+ const [hasRuntimeContent, setHasRuntimeContent] = useState(false);
+ const [showSource, setShowSource] = useState(false);
+ const [isFullscreen, setIsFullscreen] = useState(false);
+ const showSourcePress = useCallback(() => setShowSource(true), []);
+ const showDiagramPress = useCallback(() => setShowSource(false), []);
+ const openFullscreen = useCallback(() => setIsFullscreen(true), []);
+ const closeFullscreen = useCallback(() => setIsFullscreen(false), []);
+ const handleRendered = useCallback(
+ (message: MermaidRenderedMessage) => {
+ setHasRuntimeContent(true);
+ rendered({
+ revision: message.revision,
+ source: message.source,
+ colorScheme: message.colorScheme,
+ dimensions: { height: message.height, width: message.width },
+ });
+ },
+ [rendered],
+ );
+ const visible = state.visible;
+ const canShowDiagram = visible !== null && hasRuntimeContent;
+ const diagramVisible = canShowDiagram && !showSource;
+ const runtimeHeight = Math.max(visible?.height ?? 240, 1);
+ const actions = useMemo(
+ () => [
+ {
+ icon: Code,
+ label: t("message.diagram.viewSource"),
+ onPress: showSourcePress,
+ },
+ {
+ icon: Maximize2,
+ label: t("message.diagram.fullscreen"),
+ onPress: openFullscreen,
+ testID: "mermaid-fullscreen",
+ },
+ ],
+ [openFullscreen, showSourcePress, t],
+ );
+ const sourceView = useMemo(() => {
+ const { marginTop, marginBottom, marginVertical, ...sourceTextStyle } = textStyle;
+ const margins: ViewStyle = {
+ marginTop: marginTop ?? marginVertical,
+ marginBottom: marginBottom ?? marginVertical,
+ };
+ const text: TextStyle = sourceTextStyle;
+ return { container: [margins, sourceContainerStyle], text };
+ }, [textStyle]);
+ const diagramStyle = useMemo(
+ () => [
+ getDiagramBoxStyle(textStyle),
+ containerStyle,
+ { height: runtimeHeight, minHeight: MIN_DIAGRAM_BOX_HEIGHT },
+ ],
+ [runtimeHeight, textStyle],
+ );
+ const diagramSize = useMemo(
+ () => (visible ? { width: visible.width, height: visible.height } : MEASURING_SIZE),
+ [visible],
+ );
+ const sourceVisible = !diagramVisible;
+ const sourceContainer = showSource ? sourceView.container : sourceContainerStyle;
+ const sourceTextStyle = showSource ? sourceView.text : textStyle;
+ const viewportStyle = diagramVisible ? diagramStyle : measuringStyle;
+
+ return (
+ <>
+ {sourceVisible ? (
+
+
+ {showSource && canShowDiagram ? (
+
+ {({ hovered }) => (
+
+ )}
+
+ ) : null}
+
+ ) : null}
+
+
+
+ {isFullscreen && visible ? (
+
+ ) : null}
+ >
+ );
+}
+
+const MEASURING_SIZE = { width: 240, height: 240 };
+/**
+ * The toolbar overlays the top of the box (8px offset + 32px compact buttons) and the box clips
+ * with `overflow: hidden`, so a shorter box leaves the buttons half-clipped and unclickable.
+ */
+const MIN_DIAGRAM_BOX_HEIGHT = 56;
+const sourceContainerStyle: ViewStyle = { position: "relative" };
+/**
+ * The viewport's own root is `flex: 1`, so as a flex item it has `flex-basis: 0%` and that basis
+ * replaces the height below. In the markdown column there is no free space to grow into, so the
+ * box collapses and the diagram is scaled down to fit a couple of pixels. Size it from the height.
+ */
+const containerStyle: ViewStyle = {
+ flexBasis: "auto",
+ flexGrow: 0,
+ flexShrink: 0,
+ overflow: "hidden",
+ position: "relative",
+};
+const measuringStyle: ViewStyle = {
+ position: "absolute",
+ left: 0,
+ right: 0,
+ top: 0,
+ height: 240,
+ opacity: 0,
+ pointerEvents: "none",
+};
+const controlStyles = StyleSheet.create((theme) => ({
+ sourceButton: {
+ position: "absolute",
+ top: theme.spacing[2],
+ right: theme.spacing[2],
+ padding: theme.spacing[1],
+ },
+ icon: { color: theme.colors.foregroundMuted },
+ iconHovered: { color: theme.colors.foreground },
+}));
+const mapColorScheme = (theme: Theme) => ({ colorScheme: theme.colorScheme });
+const ThemedMermaidFenceHost = withUnistyles(MermaidFenceHostImpl);
+
+export function MermaidFenceHost(props: MarkdownFenceRendererProps) {
+ return ;
+}
diff --git a/packages/app/src/components/markdown/fence/mermaid/iframe-runtime.web.tsx b/packages/app/src/components/markdown/fence/mermaid/iframe-runtime.web.tsx
new file mode 100644
index 0000000000..a5ef30f218
--- /dev/null
+++ b/packages/app/src/components/markdown/fence/mermaid/iframe-runtime.web.tsx
@@ -0,0 +1,92 @@
+import { useCallback, useEffect, useRef } from "react";
+import type { DiagramColorScheme, MermaidRenderRequest } from "./render-model";
+import { mermaidRuntimeHtml } from "./runtime/html.gen";
+import { parseMermaidRuntimeMessage, type MermaidRuntimeRenderMessage } from "./runtime/messages";
+import { MermaidRuntimeRequestDriver } from "./runtime/request-driver";
+
+export interface MermaidRenderedMessage {
+ revision: number;
+ source: string;
+ colorScheme: DiagramColorScheme;
+ height: number;
+ width: number;
+}
+
+interface MermaidIframeRuntimeProps {
+ request: MermaidRenderRequest | null;
+ onRendered: (message: MermaidRenderedMessage) => void;
+ onRenderFailed: (revision: number) => void;
+}
+
+/** Sandboxed Mermaid renderer. Sizing and gestures belong to the surrounding viewport. */
+export function MermaidIframeRuntime({
+ request,
+ onRendered,
+ onRenderFailed,
+}: MermaidIframeRuntimeProps) {
+ const iframeRef = useRef(null);
+ const driverRef = useRef(null);
+ driverRef.current ??= new MermaidRuntimeRequestDriver();
+
+ const sendRequest = useCallback((current: MermaidRenderRequest | null) => {
+ const target = iframeRef.current?.contentWindow;
+ if (!current || !target) return;
+ const message: MermaidRuntimeRenderMessage = {
+ type: "render",
+ revision: current.revision,
+ source: current.source,
+ colorScheme: current.colorScheme,
+ interactive: false,
+ };
+ target.postMessage(message, "*");
+ }, []);
+
+ useEffect(() => {
+ sendRequest(driverRef.current?.update(request) ?? null);
+ }, [request, sendRequest]);
+
+ useEffect(() => {
+ function receiveMessage(event: MessageEvent): void {
+ if (event.source !== iframeRef.current?.contentWindow) return;
+ const message = parseMermaidRuntimeMessage(event.data);
+ if (!message) return;
+ if (message.type === "bridgeReady") {
+ sendRequest(driverRef.current?.ready() ?? null);
+ return;
+ }
+ if (message.type === "renderError") {
+ onRenderFailed(message.revision);
+ sendRequest(driverRef.current?.settled(message.revision, false) ?? null);
+ return;
+ }
+ onRendered(message);
+ sendRequest(driverRef.current?.settled(message.revision, true) ?? null);
+ }
+ window.addEventListener("message", receiveMessage);
+ return () => window.removeEventListener("message", receiveMessage);
+ }, [onRenderFailed, onRendered, sendRequest]);
+
+ // `inert` (not just tabIndex) because the Modal focus trap focuses descendants
+ // programmatically; a focused iframe swallows every keystroke, including Escape.
+ return (
+
+ );
+}
+
+const iframeStyle: React.CSSProperties = {
+ display: "block",
+ width: "100%",
+ height: "100%",
+ border: 0,
+ pointerEvents: "none",
+ background: "transparent",
+};
diff --git a/packages/app/src/components/markdown/fence/mermaid/index.tsx b/packages/app/src/components/markdown/fence/mermaid/index.tsx
new file mode 100644
index 0000000000..fb135c8b6a
--- /dev/null
+++ b/packages/app/src/components/markdown/fence/mermaid/index.tsx
@@ -0,0 +1,19 @@
+import { createContext, useContext } from "react";
+import { withUnistyles } from "react-native-unistyles";
+import type { Theme } from "@/styles/theme";
+import { MermaidFenceHost } from "./host";
+export { splitMermaidFences } from "./segments";
+export const MermaidStreamingContext = createContext(false);
+const ThemedHost = withUnistyles(MermaidFenceHost);
+const styles = (theme: Theme) => ({
+ inheritedStyles: {
+ color: theme.colors.foreground,
+ fontFamily: theme.fontFamily.mono,
+ fontSize: theme.fontSize.code,
+ },
+ textStyle: { backgroundColor: theme.colors.surface2, padding: 12, borderRadius: 8 },
+});
+export function MermaidFence({ code }: { code: string }) {
+ const streaming = useContext(MermaidStreamingContext);
+ return ;
+}
diff --git a/packages/app/src/components/markdown/fence/mermaid/presentation.ts b/packages/app/src/components/markdown/fence/mermaid/presentation.ts
new file mode 100644
index 0000000000..48d0d879fe
--- /dev/null
+++ b/packages/app/src/components/markdown/fence/mermaid/presentation.ts
@@ -0,0 +1,14 @@
+import type { TextStyle, ViewStyle } from "react-native";
+
+export function getDiagramBoxStyle(style: TextStyle): ViewStyle {
+ return {
+ backgroundColor: style.backgroundColor,
+ borderColor: style.borderColor,
+ borderRadius: style.borderRadius,
+ borderWidth: style.borderWidth,
+ marginBottom: style.marginBottom,
+ marginTop: style.marginTop,
+ marginVertical: style.marginVertical,
+ padding: style.padding,
+ };
+}
diff --git a/packages/app/src/components/markdown/fence/mermaid/render-model.test.ts b/packages/app/src/components/markdown/fence/mermaid/render-model.test.ts
new file mode 100644
index 0000000000..3cb661d25d
--- /dev/null
+++ b/packages/app/src/components/markdown/fence/mermaid/render-model.test.ts
@@ -0,0 +1,163 @@
+import { describe, expect, it } from "vitest";
+import {
+ createMermaidRenderModel,
+ getMermaidRenderRequest,
+ reduceMermaidRenderModel,
+ type MermaidRenderInput,
+ type MermaidRenderModel,
+} from "./render-model";
+
+function input(overrides: Partial = {}): MermaidRenderInput {
+ return {
+ source: "flowchart TD\nA --> B",
+ phase: "streaming",
+ colorScheme: "dark",
+ rejected: false,
+ cached: null,
+ ...overrides,
+ };
+}
+
+function renderCurrent(state: MermaidRenderModel): MermaidRenderModel {
+ return reduceMermaidRenderModel(state, {
+ type: "rendered",
+ revision: state.revision,
+ source: state.source,
+ colorScheme: state.colorScheme,
+ dimensions: { height: 120, width: 240 },
+ });
+}
+
+describe("Mermaid render model", () => {
+ it("shows each valid streamed revision", () => {
+ const first = renderCurrent(createMermaidRenderModel(input()));
+ const secondPending = reduceMermaidRenderModel(first, {
+ type: "inputChanged",
+ input: input({ source: "flowchart TD\nA --> B\nB --> C" }),
+ });
+ const second = renderCurrent(secondPending);
+
+ expect(first.visible?.source).toBe("flowchart TD\nA --> B");
+ expect(second.visible?.source).toBe("flowchart TD\nA --> B\nB --> C");
+ });
+
+ it("keeps the last valid preview across a transient streaming failure", () => {
+ const rendered = renderCurrent(createMermaidRenderModel(input()));
+ const pending = reduceMermaidRenderModel(rendered, {
+ type: "inputChanged",
+ input: input({ source: "flowchart TD\nA --" }),
+ });
+ const failed = reduceMermaidRenderModel(pending, {
+ type: "renderFailed",
+ revision: pending.revision,
+ });
+
+ expect(failed.status).toBe("failed");
+ expect(failed.visible?.source).toBe("flowchart TD\nA --> B");
+ });
+
+ it("clears a stale preview when failed source becomes final", () => {
+ const rendered = renderCurrent(createMermaidRenderModel(input()));
+ const pending = reduceMermaidRenderModel(rendered, {
+ type: "inputChanged",
+ input: input({ source: "flowchart TD\nA --" }),
+ });
+ const failed = reduceMermaidRenderModel(pending, {
+ type: "renderFailed",
+ revision: pending.revision,
+ });
+ const complete = reduceMermaidRenderModel(failed, {
+ type: "inputChanged",
+ input: input({ source: "flowchart TD\nA --", phase: "complete" }),
+ });
+
+ expect(complete.status).toBe("failed");
+ expect(complete.visible).toBeNull();
+ });
+
+ it("uses the completion phase when an in-flight final render fails", () => {
+ const rendered = renderCurrent(createMermaidRenderModel(input()));
+ const pending = reduceMermaidRenderModel(rendered, {
+ type: "inputChanged",
+ input: input({ source: "flowchart TD\nA --" }),
+ });
+ const completePending = reduceMermaidRenderModel(pending, {
+ type: "inputChanged",
+ input: input({ source: "flowchart TD\nA --", phase: "complete" }),
+ });
+ const failed = reduceMermaidRenderModel(completePending, {
+ type: "renderFailed",
+ revision: completePending.revision,
+ });
+
+ expect(failed.visible).toBeNull();
+ });
+
+ it("ignores obsolete render results", () => {
+ const initial = createMermaidRenderModel(input());
+ const newer = reduceMermaidRenderModel(initial, {
+ type: "inputChanged",
+ input: input({ source: "flowchart TD\nA --> C" }),
+ });
+ const obsolete = reduceMermaidRenderModel(newer, {
+ type: "rendered",
+ revision: initial.revision,
+ source: initial.source,
+ colorScheme: initial.colorScheme,
+ dimensions: { height: 90, width: 180 },
+ });
+
+ expect(obsolete).toBe(newer);
+ expect(getMermaidRenderRequest(obsolete)).toEqual({
+ revision: newer.revision,
+ source: "flowchart TD\nA --> C",
+ colorScheme: "dark",
+ });
+ });
+
+ it("uses an obsolete successful prefix as the first streaming preview", () => {
+ const initial = createMermaidRenderModel(input());
+ const newer = reduceMermaidRenderModel(initial, {
+ type: "inputChanged",
+ input: input({ source: "flowchart TD\nA --> B\nB --" }),
+ });
+ const preview = reduceMermaidRenderModel(newer, {
+ type: "rendered",
+ revision: initial.revision,
+ source: initial.source,
+ colorScheme: initial.colorScheme,
+ dimensions: { height: 90, width: 180 },
+ });
+
+ expect(preview.status).toBe("pending");
+ expect(preview.visible?.source).toBe(initial.source);
+ expect(getMermaidRenderRequest(preview)?.source).toBe("flowchart TD\nA --> B\nB --");
+ });
+
+ it("keeps the last preview when source policy rejects a streaming revision", () => {
+ const rendered = renderCurrent(createMermaidRenderModel(input()));
+ const rejected = reduceMermaidRenderModel(rendered, {
+ type: "inputChanged",
+ input: input({ source: 'flowchart TD\nA@{ img: "https://example.com/x" }', rejected: true }),
+ });
+
+ expect(rejected.status).toBe("rejected");
+ expect(rejected.visible).toBe(rendered.visible);
+ expect(getMermaidRenderRequest(rejected)).toBeNull();
+ });
+
+ it("clears the last preview when the rejected revision is complete", () => {
+ const rendered = renderCurrent(createMermaidRenderModel(input()));
+ const rejected = reduceMermaidRenderModel(rendered, {
+ type: "inputChanged",
+ input: input({
+ source: 'flowchart TD\nA@{ img: "https://example.com/x" }',
+ phase: "complete",
+ rejected: true,
+ }),
+ });
+
+ expect(rejected.status).toBe("rejected");
+ expect(rejected.visible).toBeNull();
+ });
+});
diff --git a/packages/app/src/components/markdown/fence/mermaid/render-model.ts b/packages/app/src/components/markdown/fence/mermaid/render-model.ts
new file mode 100644
index 0000000000..16e46f2210
--- /dev/null
+++ b/packages/app/src/components/markdown/fence/mermaid/render-model.ts
@@ -0,0 +1,170 @@
+import type { MarkdownPhase } from "./types";
+
+export type DiagramColorScheme = "light" | "dark";
+
+export interface DiagramDimensions {
+ height: number;
+ width: number;
+}
+
+export interface RenderedDiagram extends DiagramDimensions {
+ source: string;
+ colorScheme: DiagramColorScheme;
+}
+
+export interface MermaidRenderInput {
+ source: string;
+ phase: MarkdownPhase;
+ colorScheme: DiagramColorScheme;
+ rejected: boolean;
+ cached: RenderedDiagram | null;
+}
+
+export interface MermaidRenderRequest {
+ revision: number;
+ source: string;
+ colorScheme: DiagramColorScheme;
+}
+
+export interface MermaidRenderModel {
+ revision: number;
+ source: string;
+ phase: MarkdownPhase;
+ colorScheme: DiagramColorScheme;
+ status: "pending" | "rendered" | "failed" | "rejected";
+ visible: RenderedDiagram | null;
+}
+
+export type MermaidRenderAction =
+ | { type: "inputChanged"; input: MermaidRenderInput }
+ | {
+ type: "rendered";
+ revision: number;
+ source: string;
+ colorScheme: DiagramColorScheme;
+ dimensions: DiagramDimensions;
+ }
+ | { type: "renderFailed"; revision: number };
+
+function reduceRendered(
+ state: MermaidRenderModel,
+ action: Extract,
+): MermaidRenderModel {
+ if (action.colorScheme !== state.colorScheme) {
+ return state;
+ }
+ if (action.revision !== state.revision || action.source !== state.source) {
+ const isStreamingPrefix =
+ state.phase === "streaming" &&
+ action.revision < state.revision &&
+ state.source.startsWith(action.source);
+ const isNewerPreview =
+ state.visible === null || action.source.length > state.visible.source.length;
+ if (!isStreamingPrefix || !isNewerPreview) {
+ return state;
+ }
+ return {
+ ...state,
+ visible: {
+ source: action.source,
+ colorScheme: action.colorScheme,
+ ...action.dimensions,
+ },
+ };
+ }
+ return {
+ ...state,
+ status: "rendered",
+ visible: {
+ source: action.source,
+ colorScheme: action.colorScheme,
+ ...action.dimensions,
+ },
+ };
+}
+
+export function createMermaidRenderModel(input: MermaidRenderInput): MermaidRenderModel {
+ if (input.rejected) {
+ return {
+ revision: 1,
+ source: input.source,
+ phase: input.phase,
+ colorScheme: input.colorScheme,
+ status: "rejected",
+ visible: input.phase === "complete" ? null : input.cached,
+ };
+ }
+ return {
+ revision: 1,
+ source: input.source,
+ phase: input.phase,
+ colorScheme: input.colorScheme,
+ status: "pending",
+ visible: input.cached,
+ };
+}
+
+export function reduceMermaidRenderModel(
+ state: MermaidRenderModel,
+ action: MermaidRenderAction,
+): MermaidRenderModel {
+ if (action.type === "rendered") {
+ return reduceRendered(state, action);
+ }
+
+ if (action.type === "renderFailed") {
+ if (action.revision !== state.revision) {
+ return state;
+ }
+ return {
+ ...state,
+ status: "failed",
+ visible: state.phase === "complete" ? null : state.visible,
+ };
+ }
+
+ const { input } = action;
+ const isSameRender = input.source === state.source && input.colorScheme === state.colorScheme;
+ if (isSameRender) {
+ if (input.phase === state.phase) {
+ return state;
+ }
+ const finalFailure = input.phase === "complete" && state.status === "failed";
+ return {
+ ...state,
+ phase: input.phase,
+ visible: finalFailure ? null : state.visible,
+ };
+ }
+
+ if (input.rejected) {
+ return {
+ revision: state.revision + 1,
+ source: input.source,
+ phase: input.phase,
+ colorScheme: input.colorScheme,
+ status: "rejected",
+ visible: input.phase === "complete" ? null : (input.cached ?? state.visible),
+ };
+ }
+
+ return {
+ revision: state.revision + 1,
+ source: input.source,
+ phase: input.phase,
+ colorScheme: input.colorScheme,
+ status: "pending",
+ visible: input.cached ?? state.visible,
+ };
+}
+
+export function getMermaidRenderRequest(state: MermaidRenderModel): MermaidRenderRequest | null {
+ if (state.status !== "pending") {
+ return null;
+ }
+ return {
+ revision: state.revision,
+ source: state.source,
+ colorScheme: state.colorScheme,
+ };
+}
diff --git a/packages/app/src/components/markdown/fence/mermaid/runtime/entry.ts b/packages/app/src/components/markdown/fence/mermaid/runtime/entry.ts
new file mode 100644
index 0000000000..25d7db5e3e
--- /dev/null
+++ b/packages/app/src/components/markdown/fence/mermaid/runtime/entry.ts
@@ -0,0 +1,170 @@
+import mermaid from "mermaid";
+import {
+ parseMermaidRuntimeRenderMessage,
+ type MermaidRuntimeMessage,
+ type MermaidRuntimeRenderMessage,
+} from "./messages";
+
+declare global {
+ interface Window {
+ ReactNativeWebView?: {
+ postMessage?: (data: string) => void;
+ };
+ __PASEO_MERMAID_RUNTIME_RECEIVE__?: (message: unknown) => void;
+ }
+}
+
+function sendToHost(message: MermaidRuntimeMessage): void {
+ window.ReactNativeWebView?.postMessage?.(JSON.stringify(message));
+ if (window.parent !== window) {
+ window.parent.postMessage(message, "*");
+ }
+}
+
+function initializeMermaid(colorScheme: "light" | "dark"): void {
+ mermaid.initialize({
+ startOnLoad: false,
+ securityLevel: "strict",
+ suppressErrorRendering: true,
+ theme: colorScheme === "dark" ? "dark" : "default",
+ secure: [
+ "secure",
+ "securityLevel",
+ "startOnLoad",
+ "maxTextSize",
+ "suppressErrorRendering",
+ "maxEdges",
+ "theme",
+ "themeVariables",
+ "themeCSS",
+ ],
+ flowchart: { htmlLabels: false },
+ class: { htmlLabels: false },
+ });
+}
+
+function setViewport(interactive: boolean): void {
+ document
+ .querySelector('meta[name="viewport"]')
+ ?.setAttribute(
+ "content",
+ interactive
+ ? "width=device-width, initial-scale=1, maximum-scale=8"
+ : "width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no",
+ );
+}
+
+let latestRevision = 0;
+let pendingRender: MermaidRuntimeRenderMessage | null = null;
+let isRendering = false;
+let isDrainScheduled = false;
+
+interface DiagramSize {
+ height: number;
+ width: number;
+}
+
+/**
+ * Mermaid emits `width="100%"` with an inline `max-width` in pixels, so the diagram renders at
+ * its natural width and never fills a larger box. The host sizes this frame, so let the diagram
+ * follow the frame in both directions instead.
+ */
+function stretchToFrame(svg: SVGSVGElement): void {
+ svg.style.maxWidth = "100%";
+ svg.style.maxHeight = "100%";
+ svg.style.width = "100%";
+ svg.style.height = "100%";
+}
+
+/**
+ * The reported size is the host's content size, and the host feeds it back as this frame's size.
+ * Measuring the rendered box would make that a loop: every re-render lands in a frame the last
+ * measurement shrank by the container's padding, so a streaming diagram ratchets down to nothing.
+ * The viewBox is the diagram's own size and doesn't move.
+ */
+function measureDiagram(host: HTMLElement, svg: SVGSVGElement | null): DiagramSize {
+ const viewBox = svg?.viewBox.baseVal;
+ if (viewBox && viewBox.width > 0 && viewBox.height > 0) {
+ return { height: Math.ceil(viewBox.height), width: Math.ceil(viewBox.width) };
+ }
+ const rect = svg?.getBoundingClientRect();
+ return {
+ height: Math.ceil(rect?.height ?? host.scrollHeight),
+ width: Math.ceil(rect?.width ?? host.scrollWidth),
+ };
+}
+
+async function render(message: MermaidRuntimeRenderMessage): Promise {
+ try {
+ initializeMermaid(message.colorScheme);
+ const { svg } = await mermaid.render(`paseo-mermaid-${message.revision}`, message.source);
+ if (message.revision !== latestRevision) {
+ return;
+ }
+ setViewport(message.interactive);
+ const host = document.getElementById("diagram");
+ if (!host) {
+ return;
+ }
+ host.innerHTML = svg;
+ const element = host.querySelector("svg");
+ if (element) {
+ stretchToFrame(element);
+ }
+ const size = measureDiagram(host, element);
+ sendToHost({
+ type: "rendered",
+ revision: message.revision,
+ source: message.source,
+ colorScheme: message.colorScheme,
+ height: size.height,
+ width: size.width,
+ });
+ } catch {
+ if (message.revision === latestRevision) {
+ sendToHost({ type: "renderError", revision: message.revision });
+ }
+ }
+}
+
+async function drainRenderQueue(): Promise {
+ if (isRendering) {
+ return;
+ }
+ isRendering = true;
+ try {
+ while (pendingRender) {
+ const next = pendingRender;
+ pendingRender = null;
+ await render(next);
+ }
+ } finally {
+ isRendering = false;
+ }
+}
+
+function receiveRender(value: unknown): void {
+ const message = parseMermaidRuntimeRenderMessage(value);
+ if (!message) {
+ return;
+ }
+ latestRevision = message.revision;
+ pendingRender = message;
+ if (isRendering || isDrainScheduled) {
+ return;
+ }
+ isDrainScheduled = true;
+ window.setTimeout(() => {
+ isDrainScheduled = false;
+ void drainRenderQueue();
+ }, 0);
+}
+
+window.__PASEO_MERMAID_RUNTIME_RECEIVE__ = receiveRender;
+window.addEventListener("message", (event) => {
+ if (event.source === window.parent) {
+ receiveRender(event.data);
+ }
+});
+
+sendToHost({ type: "bridgeReady" });
diff --git a/packages/app/src/components/markdown/fence/mermaid/runtime/html.gen.ts b/packages/app/src/components/markdown/fence/mermaid/runtime/html.gen.ts
new file mode 100644
index 0000000000..608ab27869
--- /dev/null
+++ b/packages/app/src/components/markdown/fence/mermaid/runtime/html.gen.ts
@@ -0,0 +1,4 @@
+// Generated by packages/app/src/components/markdown/fence/mermaid/build-runtime.mjs.
+// Do not edit by hand.
+
+export const mermaidRuntimeHtml = "\n\n \n \n \n \n \n \n \n \n \n \n";
diff --git a/packages/app/src/components/markdown/fence/mermaid/runtime/messages.ts b/packages/app/src/components/markdown/fence/mermaid/runtime/messages.ts
new file mode 100644
index 0000000000..99b23f9d6d
--- /dev/null
+++ b/packages/app/src/components/markdown/fence/mermaid/runtime/messages.ts
@@ -0,0 +1,91 @@
+import type { DiagramColorScheme, DiagramDimensions } from "../render-model";
+
+export interface MermaidRuntimeRenderMessage {
+ type: "render";
+ revision: number;
+ source: string;
+ colorScheme: DiagramColorScheme;
+ interactive: boolean;
+}
+
+export type MermaidRuntimeMessage =
+ | { type: "bridgeReady" }
+ | ({
+ type: "rendered";
+ revision: number;
+ source: string;
+ colorScheme: DiagramColorScheme;
+ } & DiagramDimensions)
+ | { type: "renderError"; revision: number };
+
+function isRecord(value: unknown): value is Record {
+ return typeof value === "object" && value !== null;
+}
+
+function isColorScheme(value: unknown): value is DiagramColorScheme {
+ return value === "light" || value === "dark";
+}
+
+export function parseMermaidRuntimeRenderMessage(
+ value: unknown,
+): MermaidRuntimeRenderMessage | null {
+ if (
+ !isRecord(value) ||
+ value.type !== "render" ||
+ typeof value.revision !== "number" ||
+ !Number.isInteger(value.revision) ||
+ typeof value.source !== "string" ||
+ !isColorScheme(value.colorScheme) ||
+ typeof value.interactive !== "boolean"
+ ) {
+ return null;
+ }
+ return {
+ type: "render",
+ revision: value.revision,
+ source: value.source,
+ colorScheme: value.colorScheme,
+ interactive: value.interactive,
+ };
+}
+
+export function parseMermaidRuntimeMessage(value: unknown): MermaidRuntimeMessage | null {
+ if (!isRecord(value) || typeof value.type !== "string") {
+ return null;
+ }
+ if (value.type === "bridgeReady") {
+ return { type: "bridgeReady" };
+ }
+ if (
+ value.type === "renderError" &&
+ typeof value.revision === "number" &&
+ Number.isInteger(value.revision)
+ ) {
+ return { type: "renderError", revision: value.revision };
+ }
+ if (
+ value.type === "rendered" &&
+ typeof value.revision === "number" &&
+ Number.isInteger(value.revision) &&
+ typeof value.source === "string" &&
+ isColorScheme(value.colorScheme) &&
+ typeof value.height === "number" &&
+ Number.isFinite(value.height) &&
+ typeof value.width === "number" &&
+ Number.isFinite(value.width)
+ ) {
+ return {
+ type: "rendered",
+ revision: value.revision,
+ source: value.source,
+ colorScheme: value.colorScheme,
+ height: value.height,
+ width: value.width,
+ };
+ }
+ return null;
+}
+
+export function serializeMermaidRuntimeRenderMessage(message: MermaidRuntimeRenderMessage): string {
+ return JSON.stringify(message).replace(/<\/script/gi, "<\\/script");
+}
diff --git a/packages/app/src/components/markdown/fence/mermaid/runtime/request-driver.test.ts b/packages/app/src/components/markdown/fence/mermaid/runtime/request-driver.test.ts
new file mode 100644
index 0000000000..f2e93e2437
--- /dev/null
+++ b/packages/app/src/components/markdown/fence/mermaid/runtime/request-driver.test.ts
@@ -0,0 +1,52 @@
+import { describe, expect, it } from "vitest";
+import type { MermaidRenderRequest } from "../render-model";
+import { MermaidRuntimeRequestDriver } from "./request-driver";
+
+function request(revision: number, source: string): MermaidRenderRequest {
+ return { revision, source, colorScheme: "dark" };
+}
+
+describe("MermaidRuntimeRequestDriver", () => {
+ it("tries queued streaming prefixes in order until the runtime renders one", () => {
+ const driver = new MermaidRuntimeRequestDriver();
+ const first = request(1, "flow");
+ const valid = request(2, "flowchart TD\nA --> B\n");
+ const transient = request(3, "flowchart TD\nA --> B\nB --");
+
+ expect(driver.update(first)).toBeNull();
+ expect(driver.update(valid)).toBeNull();
+ expect(driver.update(transient)).toBeNull();
+ expect(driver.ready()).toBe(valid);
+ expect(driver.settled(valid.revision, true)).toBe(transient);
+ });
+
+ it("keeps completed lines but collapses incomplete token revisions before readiness", () => {
+ const driver = new MermaidRuntimeRequestDriver();
+ const partial = request(1, "flowchart TD\nA --");
+ const completed = request(2, "flowchart TD\nA --> B\n");
+ const nextPartial = request(3, "flowchart TD\nA --> B\nB --");
+ const latestPartial = request(4, "flowchart TD\nA --> B\nB -->");
+
+ driver.update(partial);
+ driver.update(completed);
+ driver.update(nextPartial);
+ driver.update(latestPartial);
+
+ expect(driver.ready()).toBe(completed);
+ expect(driver.settled(completed.revision, true)).toBe(latestPartial);
+ });
+
+ it("collapses later updates to the newest request after the first render", () => {
+ const driver = new MermaidRuntimeRequestDriver();
+ const first = request(1, "flowchart TD\nA --> B");
+ const second = request(2, "flowchart TD\nA --> B\nB --> C");
+ const latest = request(3, "flowchart TD\nA --> B\nB --> D");
+
+ driver.update(first);
+ expect(driver.ready()).toBe(first);
+ expect(driver.settled(first.revision, true)).toBeNull();
+ expect(driver.update(second)).toBe(second);
+ expect(driver.update(latest)).toBeNull();
+ expect(driver.settled(second.revision, false)).toBe(latest);
+ });
+});
diff --git a/packages/app/src/components/markdown/fence/mermaid/runtime/request-driver.ts b/packages/app/src/components/markdown/fence/mermaid/runtime/request-driver.ts
new file mode 100644
index 0000000000..8e30587017
--- /dev/null
+++ b/packages/app/src/components/markdown/fence/mermaid/runtime/request-driver.ts
@@ -0,0 +1,63 @@
+import type { MermaidRenderRequest } from "../render-model";
+
+function isCompletedLineCandidate(source: string): boolean {
+ return source.endsWith("\n") && source.trim().includes("\n");
+}
+
+export class MermaidRuntimeRequestDriver {
+ private readyState = false;
+ private renderedOnce = false;
+ private inFlight: MermaidRenderRequest | null = null;
+ private queued: MermaidRenderRequest[] = [];
+
+ update(request: MermaidRenderRequest | null): MermaidRenderRequest | null {
+ if (!request || this.hasRevision(request.revision)) {
+ return null;
+ }
+ if (this.renderedOnce) {
+ this.queued = [request];
+ } else {
+ const lastIndex = this.queued.length - 1;
+ const last = this.queued[lastIndex];
+ if (last && !isCompletedLineCandidate(last.source)) {
+ this.queued[lastIndex] = request;
+ } else {
+ this.queued.push(request);
+ }
+ }
+ return this.takeNext();
+ }
+
+ ready(): MermaidRenderRequest | null {
+ this.readyState = true;
+ return this.takeNext();
+ }
+
+ settled(revision: number, rendered: boolean): MermaidRenderRequest | null {
+ if (this.inFlight?.revision !== revision) {
+ return null;
+ }
+ this.inFlight = null;
+ if (rendered) {
+ this.renderedOnce = true;
+ const latest = this.queued.at(-1);
+ this.queued = latest ? [latest] : [];
+ }
+ return this.takeNext();
+ }
+
+ private hasRevision(revision: number): boolean {
+ return (
+ this.inFlight?.revision === revision ||
+ this.queued.some((request) => request.revision === revision)
+ );
+ }
+
+ private takeNext(): MermaidRenderRequest | null {
+ if (!this.readyState || this.inFlight || this.queued.length === 0) {
+ return null;
+ }
+ this.inFlight = this.queued.shift() ?? null;
+ return this.inFlight;
+ }
+}
diff --git a/packages/app/src/components/markdown/fence/mermaid/runtime/runtime-html.test.ts b/packages/app/src/components/markdown/fence/mermaid/runtime/runtime-html.test.ts
new file mode 100644
index 0000000000..a11ffd5092
--- /dev/null
+++ b/packages/app/src/components/markdown/fence/mermaid/runtime/runtime-html.test.ts
@@ -0,0 +1,12 @@
+import { describe, expect, it } from "vitest";
+import { mermaidRuntimeHtml } from "./html.gen";
+
+describe("Mermaid runtime document", () => {
+ it("ships a closed network policy", () => {
+ expect(mermaidRuntimeHtml).toContain("default-src 'none'");
+ expect(mermaidRuntimeHtml).toContain("connect-src 'none'");
+ expect(mermaidRuntimeHtml).toContain("img-src data: blob:");
+ expect(mermaidRuntimeHtml).toContain("font-src 'none'");
+ expect(mermaidRuntimeHtml).toContain("frame-src 'none'");
+ });
+});
diff --git a/packages/app/src/components/markdown/fence/mermaid/runtime/runtime.browser.test.ts b/packages/app/src/components/markdown/fence/mermaid/runtime/runtime.browser.test.ts
new file mode 100644
index 0000000000..7ffbbc79db
--- /dev/null
+++ b/packages/app/src/components/markdown/fence/mermaid/runtime/runtime.browser.test.ts
@@ -0,0 +1,146 @@
+import { afterEach, describe, expect, it } from "vitest";
+import { mermaidRuntimeHtml } from "./html.gen";
+import { parseMermaidRuntimeMessage, type MermaidRuntimeMessage } from "./messages";
+
+const mountedFrames: HTMLIFrameElement[] = [];
+
+function waitForRuntimeMessage(
+ frame: HTMLIFrameElement,
+ predicate: (message: MermaidRuntimeMessage) => boolean,
+): Promise {
+ return new Promise((resolve, reject) => {
+ const timeout = window.setTimeout(() => {
+ window.removeEventListener("message", receive);
+ reject(new Error("Timed out waiting for Mermaid runtime"));
+ }, 10_000);
+ function receive(event: MessageEvent): void {
+ if (event.source !== frame.contentWindow) {
+ return;
+ }
+ const message = parseMermaidRuntimeMessage(event.data);
+ if (!message || !predicate(message)) {
+ return;
+ }
+ window.clearTimeout(timeout);
+ window.removeEventListener("message", receive);
+ resolve(message);
+ }
+ window.addEventListener("message", receive);
+ });
+}
+
+async function mountRuntime(size?: { width: number; height: number }): Promise {
+ const frame = document.createElement("iframe");
+ frame.sandbox.add("allow-scripts");
+ if (size) {
+ frame.style.width = `${size.width}px`;
+ frame.style.height = `${size.height}px`;
+ }
+ const ready = waitForRuntimeMessage(frame, (message) => message.type === "bridgeReady");
+ frame.srcdoc = mermaidRuntimeHtml;
+ document.body.append(frame);
+ mountedFrames.push(frame);
+ await ready;
+ return frame;
+}
+
+function renderedSize(message: MermaidRuntimeMessage): { height: number; width: number } {
+ if (message.type !== "rendered") {
+ throw new Error(`Expected a rendered diagram, got ${message.type}`);
+ }
+ return { height: message.height, width: message.width };
+}
+
+function render(
+ frame: HTMLIFrameElement,
+ input: { revision: number; source: string },
+): Promise {
+ const response = waitForRuntimeMessage(
+ frame,
+ (message) =>
+ message.type !== "bridgeReady" &&
+ "revision" in message &&
+ message.revision === input.revision,
+ );
+ frame.contentWindow?.postMessage(
+ {
+ type: "render",
+ revision: input.revision,
+ source: input.source,
+ colorScheme: "dark",
+ interactive: false,
+ },
+ "*",
+ );
+ return response;
+}
+
+afterEach(() => {
+ for (const frame of mountedFrames.splice(0)) {
+ frame.remove();
+ }
+});
+
+describe("Mermaid sandbox runtime", () => {
+ it("renders successive valid streaming prefixes and reports an invalid prefix", async () => {
+ const frame = await mountRuntime();
+ const firstSource = "flowchart TD\nA --> B";
+ const secondSource = `${firstSource}\nB --> C`;
+
+ const first = await render(frame, { revision: 1, source: firstSource });
+ const invalid = await render(frame, { revision: 2, source: "not a mermaid diagram" });
+ const second = await render(frame, { revision: 3, source: secondSource });
+
+ expect(first).toMatchObject({ type: "rendered", revision: 1, source: firstSource });
+ expect(invalid).toEqual({ type: "renderError", revision: 2 });
+ expect(second).toMatchObject({ type: "rendered", revision: 3, source: secondSource });
+ });
+
+ /**
+ * The host sizes this frame from the reported size, so a size that depends on the frame feeds
+ * back: every re-render measures inside a frame the previous measurement already shrank by the
+ * container's padding, and a streaming diagram ratchets down to a few pixels.
+ */
+ it("reports the same size whatever frame the host gives it", async () => {
+ const source = "flowchart TD\nA[Start] --> B[Middle]\nB --> C[Ship]";
+ const narrowFrame = await mountRuntime({ height: 60, width: 60 });
+ const wideFrame = await mountRuntime({ height: 600, width: 900 });
+
+ const narrow = await render(narrowFrame, { revision: 1, source });
+ const wide = await render(wideFrame, { revision: 1, source });
+
+ expect(renderedSize(narrow)).toEqual(renderedSize(wide));
+ });
+
+ it("coalesces queued input and never reports an obsolete result", async () => {
+ const frame = await mountRuntime();
+ const obsoleteSource = `flowchart TD\n${Array.from({ length: 250 }, (_, index) => `A${index} --> A${index + 1}`).join("\n")}`;
+ const currentSource = "flowchart TD\nCurrent --> Result";
+ const obsoleteResponses: MermaidRuntimeMessage[] = [];
+ function collect(event: MessageEvent): void {
+ if (event.source !== frame.contentWindow) {
+ return;
+ }
+ const message = parseMermaidRuntimeMessage(event.data);
+ if (message && message.type !== "bridgeReady" && message.revision === 10) {
+ obsoleteResponses.push(message);
+ }
+ }
+ window.addEventListener("message", collect);
+ frame.contentWindow?.postMessage(
+ {
+ type: "render",
+ revision: 10,
+ source: obsoleteSource,
+ colorScheme: "dark",
+ interactive: false,
+ },
+ "*",
+ );
+ const current = await render(frame, { revision: 11, source: currentSource });
+ window.removeEventListener("message", collect);
+
+ expect(current).toMatchObject({ type: "rendered", revision: 11, source: currentSource });
+ expect(obsoleteResponses).toEqual([]);
+ });
+});
diff --git a/packages/app/src/components/markdown/fence/mermaid/segments.ts b/packages/app/src/components/markdown/fence/mermaid/segments.ts
new file mode 100644
index 0000000000..1958a3c016
--- /dev/null
+++ b/packages/app/src/components/markdown/fence/mermaid/segments.ts
@@ -0,0 +1,41 @@
+import { fromMarkdown } from "mdast-util-from-markdown";
+import type { RootContent } from "mdast";
+
+interface Segment {
+ kind: "markdown" | "mermaid";
+ offset: number;
+ source: string;
+}
+
+/** Native enriched-markdown has no fenced-block override. Only diagrams leave its engine. */
+export function splitMermaidFences(markdown: string): Segment[] {
+ if (!/mermaid/i.test(markdown)) return [{ kind: "markdown", offset: 0, source: markdown }];
+ const segments: Segment[] = [];
+ let cursor = 0;
+ function visit(node: RootContent): void {
+ if (node.type === "code" && node.lang?.toLowerCase() === "mermaid" && node.position) {
+ const start = node.position.start.offset!;
+ const end = node.position.end.offset!;
+ if (start > cursor)
+ segments.push({ kind: "markdown", offset: cursor, source: markdown.slice(cursor, start) });
+ segments.push({ kind: "mermaid", offset: start, source: node.value });
+ cursor = end;
+ } else if ("children" in node) node.children.forEach(visit);
+ }
+ const tree = fromMarkdown(markdown);
+ tree.children.forEach(visit);
+ if (cursor < markdown.length || segments.length === 0)
+ segments.push({ kind: "markdown", offset: cursor, source: markdown.slice(cursor) });
+ // Reference links keep their document-wide scope on both sides of a diagram.
+ if (segments.some((segment) => segment.kind === "mermaid")) {
+ const definitions = tree.children
+ .filter((node) => node.type === "definition")
+ .map((node) => markdown.slice(node.position!.start.offset, node.position!.end.offset))
+ .join("\n");
+ if (definitions)
+ for (const segment of segments) {
+ if (segment.kind === "markdown") segment.source += `\n\n${definitions}`;
+ }
+ }
+ return segments;
+}
diff --git a/packages/app/src/components/markdown/fence/mermaid/source-policy.test.ts b/packages/app/src/components/markdown/fence/mermaid/source-policy.test.ts
new file mode 100644
index 0000000000..48b844e1e3
--- /dev/null
+++ b/packages/app/src/components/markdown/fence/mermaid/source-policy.test.ts
@@ -0,0 +1,72 @@
+import { describe, expect, it } from "vitest";
+import { containsUnsafeMermaidSource } from "./source-policy";
+
+describe("containsUnsafeMermaidSource", () => {
+ it("rejects resource-bearing constructs", () => {
+ expect(containsUnsafeMermaidSource('flowchart TD\n A@{ img: "https://x/y.png" }')).toBe(true);
+ expect(containsUnsafeMermaidSource("flowchart TD\n A@{ icon: 'pack:name' }")).toBe(true);
+ expect(
+ containsUnsafeMermaidSource('%%{init: {"themeCSS": "a { color: red }"}}%%\ngraph TD'),
+ ).toBe(true);
+ expect(containsUnsafeMermaidSource("graph TD\n A[url(http://x)]")).toBe(true);
+ expect(containsUnsafeMermaidSource("graph TD\n A[@import 'x']")).toBe(true);
+ expect(containsUnsafeMermaidSource('graph TD\n A["
"]')).toBe(true);
+ expect(containsUnsafeMermaidSource('graph TD\n A["styled"]')).toBe(true);
+ expect(containsUnsafeMermaidSource('graph TD\n A["<img src=x>"]')).toBe(true);
+ expect(containsUnsafeMermaidSource('graph TD\n A[""]')).toBe(true);
+ });
+
+ it("rejects all shape-data constructs, including yaml key evasions", () => {
+ expect(containsUnsafeMermaidSource('flowchart TD\n A@{ "img": "https://x/y.png" }')).toBe(
+ true,
+ );
+ expect(containsUnsafeMermaidSource("flowchart TD\n A@{ 'img': 'https://x/y.png' }")).toBe(
+ true,
+ );
+ expect(
+ containsUnsafeMermaidSource('flowchart TD\n A@{ "\\u0069mg": "https://x/y.png" }'),
+ ).toBe(true);
+ expect(
+ containsUnsafeMermaidSource('flowchart TD\n A@{ "\\u{69}mg": "https://x/y.png" }'),
+ ).toBe(true);
+ expect(containsUnsafeMermaidSource('flowchart TD\n A@{ "\\x69mg": "https://x/y.png" }')).toBe(
+ true,
+ );
+ expect(
+ containsUnsafeMermaidSource('flowchart TD\n A@{ "\\U00000069mg": "https://attacker/x" }'),
+ ).toBe(true);
+ expect(containsUnsafeMermaidSource('flowchart TD\n A@{ "icon": "pack:name" }')).toBe(true);
+ expect(
+ containsUnsafeMermaidSource(
+ 'flowchart TD\n A@{ ? img # comment\n : "https://attacker/x" }',
+ ),
+ ).toBe(true);
+ expect(
+ containsUnsafeMermaidSource(
+ 'flowchart TD\n A@{ dummy: &k img\n ? *k # comment\n : "https://attacker/x" }',
+ ),
+ ).toBe(true);
+ });
+
+ it("fails closed for malformed or out-of-range escapes without throwing", () => {
+ expect(() =>
+ containsUnsafeMermaidSource('graph TD\n A["\\u{110000} disguised"]'),
+ ).not.toThrow();
+ expect(containsUnsafeMermaidSource('graph TD\n A["\\u{110000} disguised"]')).toBe(true);
+ expect(() =>
+ containsUnsafeMermaidSource('graph TD\n A["\\u{FFFFFF} disguised"]'),
+ ).not.toThrow();
+ expect(containsUnsafeMermaidSource('graph TD\n A["\\u{FFFFFF} disguised"]')).toBe(true);
+ });
+
+ it("allows ordinary diagrams including formatting-only labels", () => {
+ expect(containsUnsafeMermaidSource("flowchart TD\n A[Start] --> B{Choice}")).toBe(false);
+ expect(containsUnsafeMermaidSource('graph TD\n A["line one
line two"]')).toBe(false);
+ expect(containsUnsafeMermaidSource('graph TD\n A["line one
line two"]')).toBe(false);
+ expect(containsUnsafeMermaidSource('graph TD\n A["formatted"]')).toBe(false);
+ expect(containsUnsafeMermaidSource("sequenceDiagram\n Alice->>Bob: a < b and x > y")).toBe(
+ false,
+ );
+ expect(containsUnsafeMermaidSource("flowchart TD\n A@{ shape: rect }")).toBe(true);
+ });
+});
diff --git a/packages/app/src/components/markdown/fence/mermaid/source-policy.ts b/packages/app/src/components/markdown/fence/mermaid/source-policy.ts
new file mode 100644
index 0000000000..df6ad0312b
--- /dev/null
+++ b/packages/app/src/components/markdown/fence/mermaid/source-policy.ts
@@ -0,0 +1,52 @@
+// Mermaid can fetch external resources while *rendering* — image shapes
+// (`A@{ img: "url" }`) construct an Image and await decode before any output
+// sanitization runs, and CSS can pull url()/@import — so a prompt-injected
+// diagram could exfiltrate data in a request URL. securityLevel "strict" does
+// not prevent this (mermaid-js/mermaid#7645). Mermaid 11.16 parses the shape
+// metadata object with yaml.JSON_SCHEMA semantics, including aliases and
+// explicit keys; matching those keys safely would require a real parser. We
+// therefore reject any `@{ ... }` shape-data construct up front and fall back
+// to the source code block. Formatting-only `
` and `` tags are common
+// in generated labels and carry no resource-bearing attributes; all other
+// tags (and entity-encoded text that could smuggle one) are rejected.
+const UNSAFE_MERMAID_SOURCE =
+ /@\s*\{|url\s*\(|@import\b|themeCSS||<(?!\/?(?:br|i)\s*\/?>)[a-z!/]/i;
+
+// Mermaid labels can contain escaped text. Decode the escape forms we care
+// about before running the denylist so disguised HTML still gets caught.
+// Invalid escape sequences fail closed and fall back to the source block.
+function normalizeMermaidSource(code: string): string | null {
+ try {
+ return code
+ .replace(/\\u\{([0-9a-fA-F]{1,6})\}/g, (_, hex: string) =>
+ decodeCodePointEscape(Number.parseInt(hex, 16)),
+ )
+ .replace(/\\u([0-9a-fA-F]{4})/g, (_, hex: string) =>
+ String.fromCharCode(Number.parseInt(hex, 16)),
+ )
+ .replace(/\\x([0-9a-fA-F]{2})/g, (_, hex: string) =>
+ String.fromCharCode(Number.parseInt(hex, 16)),
+ )
+ .replace(/["'`\\]/g, "");
+ } catch {
+ return null;
+ }
+}
+
+function decodeCodePointEscape(value: number): string {
+ if (!Number.isInteger(value) || value < 0 || value > 0x10ffff) {
+ throw new RangeError("Invalid Unicode code point");
+ }
+ return String.fromCodePoint(value);
+}
+
+export function containsUnsafeMermaidSource(code: string): boolean {
+ if (UNSAFE_MERMAID_SOURCE.test(code)) {
+ return true;
+ }
+ const normalized = normalizeMermaidSource(code);
+ if (normalized === null) {
+ return true;
+ }
+ return UNSAFE_MERMAID_SOURCE.test(normalized);
+}
diff --git a/packages/app/src/components/markdown/fence/mermaid/types.ts b/packages/app/src/components/markdown/fence/mermaid/types.ts
new file mode 100644
index 0000000000..dbfec694cd
--- /dev/null
+++ b/packages/app/src/components/markdown/fence/mermaid/types.ts
@@ -0,0 +1,8 @@
+import type { TextStyle } from "react-native";
+export type MarkdownPhase = "streaming" | "complete";
+export interface MarkdownFenceRendererProps {
+ code: string;
+ phase: MarkdownPhase;
+ inheritedStyles: TextStyle;
+ textStyle: TextStyle;
+}
diff --git a/packages/app/src/components/markdown/fence/mermaid/use-render-model.ts b/packages/app/src/components/markdown/fence/mermaid/use-render-model.ts
new file mode 100644
index 0000000000..67b51f8ad6
--- /dev/null
+++ b/packages/app/src/components/markdown/fence/mermaid/use-render-model.ts
@@ -0,0 +1,96 @@
+import { useCallback, useEffect, useMemo, useReducer } from "react";
+import {
+ createMermaidRenderModel,
+ getMermaidRenderRequest,
+ reduceMermaidRenderModel,
+ type DiagramColorScheme,
+ type DiagramDimensions,
+ type RenderedDiagram,
+} from "./render-model";
+import { containsUnsafeMermaidSource } from "./source-policy";
+import type { MarkdownPhase } from "./types";
+
+const renderCache = new Map();
+const RENDER_CACHE_LIMIT = 50;
+
+function cacheKey(source: string, colorScheme: DiagramColorScheme): string {
+ return `${colorScheme}\u0000${source}`;
+}
+
+function readCachedRender(source: string, colorScheme: DiagramColorScheme): RenderedDiagram | null {
+ return renderCache.get(cacheKey(source, colorScheme)) ?? null;
+}
+
+function cacheRender(rendered: RenderedDiagram): void {
+ if (renderCache.size >= RENDER_CACHE_LIMIT) {
+ const oldest = renderCache.keys().next().value;
+ if (oldest !== undefined) {
+ renderCache.delete(oldest);
+ }
+ }
+ renderCache.set(cacheKey(rendered.source, rendered.colorScheme), rendered);
+}
+
+export function useMermaidRenderModel({
+ source,
+ phase,
+ colorScheme,
+}: {
+ source: string;
+ phase: MarkdownPhase;
+ colorScheme: DiagramColorScheme;
+}) {
+ const renderInput = useMemo(
+ () => ({
+ source,
+ phase,
+ colorScheme,
+ rejected: containsUnsafeMermaidSource(source),
+ cached: readCachedRender(source, colorScheme),
+ }),
+ [colorScheme, phase, source],
+ );
+ const [state, dispatch] = useReducer(
+ reduceMermaidRenderModel,
+ renderInput,
+ createMermaidRenderModel,
+ );
+
+ useEffect(() => {
+ dispatch({ type: "inputChanged", input: renderInput });
+ }, [renderInput]);
+
+ const rendered = useCallback(
+ (response: {
+ revision: number;
+ source: string;
+ colorScheme: DiagramColorScheme;
+ dimensions: DiagramDimensions;
+ }) => {
+ const cached: RenderedDiagram = {
+ source: response.source,
+ colorScheme: response.colorScheme,
+ ...response.dimensions,
+ };
+ cacheRender(cached);
+ dispatch({
+ type: "rendered",
+ revision: response.revision,
+ source: response.source,
+ colorScheme: response.colorScheme,
+ dimensions: response.dimensions,
+ });
+ },
+ [],
+ );
+ const renderFailed = useCallback((revision: number) => {
+ dispatch({ type: "renderFailed", revision });
+ }, []);
+
+ return {
+ state,
+ request: getMermaidRenderRequest(state),
+ rendered,
+ renderFailed,
+ };
+}
diff --git a/packages/app/src/components/markdown/images.ts b/packages/app/src/components/markdown/images.ts
index a551d149ae..39fa2b7804 100644
--- a/packages/app/src/components/markdown/images.ts
+++ b/packages/app/src/components/markdown/images.ts
@@ -34,10 +34,7 @@ export interface MarkdownImageContext {
export function useMarkdownSource(text: string, context: MarkdownImageContext) {
const occurrenceKey = useId();
- const prepared = useMemo(
- () => prepareMarkdownSource(text, context.workspaceRoot),
- [text, context.workspaceRoot],
- );
+ const prepared = useMemo(() => prepareMarkdownSource(text), [text]);
const sources = [...new Set(prepared.images.map((image) => image.source))];
const acquisitions = sources.map((source) => {
const resolved = context.filePath
@@ -95,7 +92,6 @@ export function useMarkdownSource(text: string, context: MarkdownImageContext) {
return {
markdown: prepared.render(resolved),
linkRecognition: prepared.linkRecognition,
- linkPillContent: prepared.linkPillContent,
linkSource: prepared.linkSource,
imageSources: Object.fromEntries([...resolved].map(([source, url]) => [url, source])),
};
diff --git a/packages/app/src/components/markdown/renderer.test.ts b/packages/app/src/components/markdown/renderer.test.ts
index 9f335a6604..60315ac460 100644
--- a/packages/app/src/components/markdown/renderer.test.ts
+++ b/packages/app/src/components/markdown/renderer.test.ts
@@ -48,18 +48,64 @@ it.each([
"src/components/message.tsx",
"C:\\repo\\file.ts",
"docs/说明.md",
+ "my%20file.ts",
"src/file.ts:10-20",
"src/file.ts(10,2)",
])("recognizes inline paths through the file resolver: %s", (path) => {
- const prepared = prepareMarkdownSource(`Open \`${path}\`.`, "/workspace");
+ const prepared = prepareMarkdownSource(`Open \`${path}\`.`);
expect(prepared.linkRecognition.inlineCode?.test(path)).toBe(true);
- expect(prepared.linkSource(path)).toEqual({ href: path, text: path, sourceType: "inline-code" });
+ expect(prepared.linkSource(path, "inline-code")).toEqual({
+ href: path,
+ text: path,
+ sourceType: "inline-code",
+ });
});
it("recognizes bare Unicode filenames and preserves inline-code URLs", () => {
- const prepared = prepareMarkdownSource("Read 说明.md, or `https://example.com`.", "/workspace");
+ const prepared = prepareMarkdownSource("Read 说明.md, or `https://example.com`.");
expect([..."说明.md,".matchAll(prepared.linkRecognition.text)].map(([text]) => text)).toEqual([
"说明.md",
]);
expect(prepared.linkRecognition.inlineCode?.test("https://example.com")).toBe(true);
});
+
+it("keeps explicit and inline-code links distinct when their URL strings match", () => {
+ const url = "/tmp/my%20file.ts";
+ const prepared = prepareMarkdownSource(`[open](${url}) and \`${url}\``);
+ expect(prepared.linkSource(url, "markdown")).toEqual({ href: url, text: url });
+ expect(prepared.linkSource(url, "inline-code")).toEqual({
+ href: url,
+ text: url,
+ sourceType: "inline-code",
+ });
+});
+
+it("extracts only Mermaid fences for the native diagram host", async () => {
+ const { splitMermaidFences } = await import("./fence/mermaid/segments");
+ const source =
+ "First.\n\n```ts\nconst n = 1;\n```\n\n```mermaid\ngraph TD\nA-->B\n```\n\n> Last.";
+ expect(splitMermaidFences(source)).toEqual([
+ { kind: "markdown", offset: 0, source: "First.\n\n```ts\nconst n = 1;\n```\n\n" },
+ { kind: "mermaid", offset: 32, source: "graph TD\nA-->B" },
+ { kind: "markdown", offset: 61, source: "\n\n> Last." },
+ ]);
+ expect(splitMermaidFences("```md\n```mermaid\n```")).toEqual([
+ { kind: "markdown", offset: 0, source: "```md\n```mermaid\n```" },
+ ]);
+});
+
+it("keeps reference links available across native Mermaid boundaries", async () => {
+ const { splitMermaidFences } = await import("./fence/mermaid/segments");
+ const parts = splitMermaidFences(
+ "[Before][file]\n\n```mermaid\ngraph TD\nA-->B\n```\n\n[After][file]\n\n[file]: src/file.ts",
+ );
+ for (const part of parts.filter((candidate) => candidate.kind === "markdown"))
+ expect(part.source).toContain("[file]: src/file.ts");
+});
+
+it("recognizes mixed-case Mermaid fence info and incomplete streaming fences", async () => {
+ const { splitMermaidFences } = await import("./fence/mermaid/segments");
+ expect(splitMermaidFences("```Mermaid title\ngraph TD\nA-->B")).toEqual([
+ { kind: "mermaid", offset: 0, source: "graph TD\nA-->B" },
+ ]);
+});
diff --git a/packages/app/src/components/markdown/renderer.tsx b/packages/app/src/components/markdown/renderer.tsx
index 8c9f2301c0..97fe981fc8 100644
--- a/packages/app/src/components/markdown/renderer.tsx
+++ b/packages/app/src/components/markdown/renderer.tsx
@@ -1,9 +1,10 @@
import { View } from "react-native";
import { markdownCopyImageSourcesDataSet } from "@/assistant-selection-copy/markup";
-import { memo, useState } from "react";
+import { memo, useMemo, useState } from "react";
import {
EnrichedMarkdownText,
type MarkdownStyle,
+ type LinkPressEvent,
type CodeBlockRendererProps,
} from "react-native-enriched-markdown";
import { withUnistyles } from "react-native-unistyles";
@@ -18,6 +19,8 @@ import type { Theme } from "@/styles/theme";
import { isWeb } from "@/constants/platform";
import { useMarkdownSource, type MarkdownImageContext } from "./images";
+import { MermaidFence, MermaidStreamingContext, splitMermaidFences } from "./fence/mermaid";
+
const ThemedMarkdown = withUnistyles(EnrichedMarkdownText);
const MD4C_FLAGS = { latexMath: false, hardSoftBreaks: true, admonitions: true };
@@ -109,6 +112,7 @@ const codeStyle = (theme: Theme) => ({
textStyle: { backgroundColor: theme.colors.surface2, padding: 12, borderRadius: 8 },
});
function WebCodeBlock({ code, language }: CodeBlockRendererProps) {
+ if (language?.toLowerCase() === "mermaid") return ;
return ;
}
const WEB_CONTAINER = { userSelect: "text" as const };
@@ -117,6 +121,7 @@ const WEB_RENDERERS = { codeBlock: WebCodeBlock };
export interface MarkdownRendererProps extends MarkdownImageContext {
text: string;
compact?: boolean;
+ streaming?: boolean;
onLinkPress?: (url: string) => unknown;
}
@@ -124,6 +129,7 @@ export interface MarkdownRendererProps extends MarkdownImageContext {
export const MarkdownRenderer = memo(function MarkdownRenderer({
text,
compact = false,
+ streaming = false,
onLinkPress,
...imageContext
}: MarkdownRendererProps) {
@@ -134,16 +140,15 @@ export const MarkdownRenderer = memo(function MarkdownRenderer({
(environment.client?.readFile
? { readFile: environment.client.readFile.bind(environment.client) }
: undefined);
- const { markdown, imageSources, linkRecognition, linkPillContent, linkSource } =
- useMarkdownSource(text, {
- workspaceRoot: environment.workspaceRoot,
- serverId: environment.serverId,
- ...imageContext,
- client,
- });
+ const { markdown, imageSources, linkRecognition, linkSource } = useMarkdownSource(text, {
+ workspaceRoot: environment.workspaceRoot,
+ serverId: environment.serverId,
+ ...imageContext,
+ client,
+ });
const [image, setImage] = useState(null);
- const pressLink = useStableEvent(({ url }: { url: string }) => {
- const source = linkSource(url);
+ const pressLink = useStableEvent(({ url, sourceType }: LinkPressEvent) => {
+ const source = linkSource(url, sourceType);
if (onLinkPress && !actions.canResolveFile(source)) onLinkPress(url);
else actions.open(source, "preferred");
});
@@ -151,27 +156,38 @@ export const MarkdownRenderer = memo(function MarkdownRenderer({
setImage({ type: "uri", uri: url }),
);
const closeImage = useStableEvent(() => setImage(null));
+ const segments = useMemo(
+ () =>
+ isWeb ? [{ kind: "markdown", offset: 0, source: markdown }] : splitMermaidFences(markdown),
+ [markdown],
+ );
const content = (
- <>
-
+
+ {segments.map((segment) =>
+ segment.kind === "mermaid" ? (
+
+ ) : (
+
+ ),
+ )}
{image ? : null}
- >
+
);
return isWeb && Object.keys(imageSources).length > 0 ? (
{content}
diff --git a/packages/app/src/components/markdown/source.ts b/packages/app/src/components/markdown/source.ts
index 7e5dfbf1e6..d07d4e26e6 100644
--- a/packages/app/src/components/markdown/source.ts
+++ b/packages/app/src/components/markdown/source.ts
@@ -1,6 +1,5 @@
import { gfmTable } from "micromark-extension-gfm-table";
import { gfmTableFromMarkdown } from "mdast-util-gfm-table";
-import { classifyAssistantFileLink } from "@/assistant-file-links/paths";
import type { AssistantFileLinkSource } from "@/assistant-file-links";
import { decodeString } from "micromark-util-decode-string";
import { fromMarkdown } from "mdast-util-from-markdown";
@@ -9,35 +8,23 @@ import type { Nodes, Root } from "mdast";
// Keep this regex in the syntax shared by JavaScript, ICU and java.util.regex.
// The Unicode flag makes Metro expand it to escapes rejected by native engines.
const FILE_PATTERN =
- /(?:https?:\/\/[^\s<>]+|(?:[A-Za-z]:[\\/]|\.{0,2}\/|~\/)?[a-zA-Z0-9\u0080-\uFFFF_@.%+-]+(?:[\\/][a-zA-Z0-9\u0080-\uFFFF_@.%+-]+)+(?::\d+(?::\d+)?(?:-\d+(?::\d+)?)?)?|[a-zA-Z0-9\u0080-\uFFFF_@-]+\.[a-zA-Z0-9\u0080-\uFFFF_-]+(?::\d+(?::\d+)?(?:-\d+(?::\d+)?)?)?)/g;
+ /(?:https?:\/\/[^\s<>]+|(?:[A-Za-z]:[\\/]|\.{0,2}\/|~\/)?[a-zA-Z0-9\u0080-\uFFFF_@.%+-]+(?:[\\/][a-zA-Z0-9\u0080-\uFFFF_@.%+-]+)+(?::\d+(?::\d+)?(?:-\d+(?::\d+)?)?)?|[a-zA-Z0-9\u0080-\uFFFF_@%-]+\.[a-zA-Z0-9\u0080-\uFFFF_%-]+(?::\d+(?::\d+)?(?:-\d+(?::\d+)?)?)?)/g;
-function linkMetadata(source: string, getTree: () => Root, workspaceRoot?: string) {
+function linkMetadata() {
return {
- linkPillContent: Object.fromEntries(
- [...source.matchAll(FILE_PATTERN)]
- .filter(([url]) => !/^https?:/i.test(url))
- .map(([url]) => [url, { label: url }]),
- ),
linkRecognition: {
text: FILE_PATTERN,
inlineCode: new RegExp(
String.raw`^(?:${FILE_PATTERN.source})(?:\(\d+(?:,\d+)?(?:-\d+(?:,\d+)?)?\)| lines? \d+(?:-\d+)?)?$`,
),
},
- linkSource(url: string): AssistantFileLinkSource {
- function containsInlinePath(node: Nodes): boolean {
- return (
- (node.type === "inlineCode" && node.value === url) ||
- ("children" in node && node.children.some(containsInlinePath))
- );
- }
- // The library emits only the URL. Recover raw inline-code semantics at tap time,
- // without parsing every reveal frame merely to configure link recognition.
- return source.includes("`") &&
- classifyAssistantFileLink(url, { workspaceRoot }) &&
- containsInlinePath(getTree())
- ? { href: url, text: url, sourceType: "inline-code" }
- : { href: url, text: url };
+ linkSource(
+ url: string,
+ sourceType?: "markdown" | "text" | "inline-code",
+ ): AssistantFileLinkSource {
+ if (sourceType === "inline-code") return { href: url, text: url, sourceType };
+ if (sourceType === "text") return { href: url, text: url, markup: "linkify" };
+ return { href: url, text: url };
},
};
}
@@ -51,7 +38,7 @@ export interface MarkdownImage {
}
/** Preserve source spelling; adapt workspace images, spoiler delimiters, and entity text. */
-export function prepareMarkdownSource(source: string, workspaceRoot?: string) {
+export function prepareMarkdownSource(source: string) {
const images: MarkdownImage[] = [];
let tree: Root | undefined;
const getTree = () =>
@@ -61,7 +48,7 @@ export function prepareMarkdownSource(source: string, workspaceRoot?: string) {
}));
const edits: { start: number; end: number; text: string }[] = [];
if (!source.includes("![") && !source.includes("||") && !source.includes("&")) {
- return { images, ...linkMetadata(source, getTree, workspaceRoot), render: () => source };
+ return { images, ...linkMetadata(), render: () => source };
}
const definitions = new Map();
@@ -109,7 +96,7 @@ export function prepareMarkdownSource(source: string, workspaceRoot?: string) {
visit(getTree());
return {
images,
- ...linkMetadata(source, getTree, workspaceRoot),
+ ...linkMetadata(),
render(urls: ReadonlyMap = new Map()) {
const replacements = [...edits];
for (const image of images) {
diff --git a/packages/app/src/components/message.tsx b/packages/app/src/components/message.tsx
index 0735b81e89..314f414d48 100644
--- a/packages/app/src/components/message.tsx
+++ b/packages/app/src/components/message.tsx
@@ -1185,6 +1185,7 @@ export const AssistantMessage = memo(function AssistantMessage({
>
Unit)? = null
++ private var onLinkPressCallback: ((String, String) -> Unit)? = null
+ private var onLinkLongPressCallback: ((String) -> Unit)? = null
+ private var onTaskListItemPressCallback: ((Int, Boolean, String) -> Unit)? = null
+ private var onLatexErrorCallback: LatexErrorReporter? = null
+@@ -296,7 +296,7 @@ class EnrichedMarkdown(
+ }
+ }
+
+- fun setOnLinkPressCallback(callback: (String) -> Unit) {
++ fun setOnLinkPressCallback(callback: (String, String) -> Unit) {
+ onLinkPressCallback = callback
+ }
+
+diff --git a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/EnrichedMarkdownManager.kt b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/EnrichedMarkdownManager.kt
+index 5dd5828..757d2bd 100644
+--- a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/EnrichedMarkdownManager.kt
++++ b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/EnrichedMarkdownManager.kt
+@@ -50,8 +50,8 @@ class EnrichedMarkdownManager :
+ emitContextMenuItemPress(view, itemText, selectedText, selectionStart, selectionEnd)
+ }
+
+- view.setOnLinkPressCallback { url ->
+- emitLinkPress(view, url)
++ view.setOnLinkPressCallback { url, sourceType ->
++ emitLinkPress(view, url, sourceType)
+ }
+
+ view.setOnLinkLongPressCallback { url ->
+diff --git a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/EnrichedMarkdownText.kt b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/EnrichedMarkdownText.kt
+index 8745349..f3275b9 100644
+--- a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/EnrichedMarkdownText.kt
++++ b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/EnrichedMarkdownText.kt
+@@ -69,7 +69,7 @@ class EnrichedMarkdownText
+ CodeBlockPressHost {
+ private val parser = Parser.shared
+ private val renderer = Renderer()
+- private var onLinkPressCallback: ((String) -> Unit)? = null
++ private var onLinkPressCallback: ((String, String) -> Unit)? = null
+ private var onLinkLongPressCallback: ((String) -> Unit)? = null
+ private var onLatexErrorCallback: LatexErrorReporter? = null
+
+@@ -455,8 +455,8 @@ class EnrichedMarkdownText
+ }
+ }
+
+- fun emitOnLinkPress(url: String) {
+- emitLinkPressEvent(url)
++ fun emitOnLinkPress(url: String, sourceType: String) {
++ emitLinkPressEvent(url, sourceType)
+ }
+
+ fun emitOnLinkLongPress(url: String) {
+@@ -491,7 +491,7 @@ class EnrichedMarkdownText
+ codeBlockPressEnabled = enabled
+ }
+
+- fun setOnLinkPressCallback(callback: (String) -> Unit) {
++ fun setOnLinkPressCallback(callback: (String, String) -> Unit) {
+ onLinkPressCallback = callback
+ }
+
+diff --git a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/EnrichedMarkdownTextManager.kt b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/EnrichedMarkdownTextManager.kt
+index f1e3345..2549508 100644
+--- a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/EnrichedMarkdownTextManager.kt
++++ b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/EnrichedMarkdownTextManager.kt
+@@ -47,8 +47,8 @@ class EnrichedMarkdownTextManager :
+ emitContextMenuItemPress(view, itemText, selectedText, selectionStart, selectionEnd)
+ }
+
+- view.setOnLinkPressCallback { url ->
+- emitLinkPress(view, url)
++ view.setOnLinkPressCallback { url, sourceType ->
++ emitLinkPress(view, url, sourceType)
+ }
+
+ view.setOnLinkLongPressCallback { url ->
+diff --git a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/events/LinkPressEvent.kt b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/events/LinkPressEvent.kt
+index 93c763e..fbe1c68 100644
+--- a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/events/LinkPressEvent.kt
++++ b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/events/LinkPressEvent.kt
+@@ -8,12 +8,14 @@ class LinkPressEvent(
+ surfaceId: Int,
+ viewId: Int,
+ private val url: String,
++ private val sourceType: String,
+ ) : Event(surfaceId, viewId) {
+ override fun getEventName(): String = EVENT_NAME
+
+ override fun getEventData(): WritableMap {
+ val eventData: WritableMap = Arguments.createMap()
+ eventData.putString("url", url)
++ eventData.putString("sourceType", sourceType)
+ return eventData
+ }
+
+diff --git a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/BaselineShiftRenderer.kt b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/BaselineShiftRenderer.kt
+index cb4605a..510af94 100644
+--- a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/BaselineShiftRenderer.kt
++++ b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/BaselineShiftRenderer.kt
+@@ -14,7 +14,7 @@ abstract class BaselineShiftRenderer : NodeRenderer {
+ override fun render(
+ node: MarkdownASTNode,
+ builder: SpannableStringBuilder,
+- onLinkPress: ((String) -> Unit)?,
++ onLinkPress: ((String, String) -> Unit)?,
+ onLinkLongPress: ((String) -> Unit)?,
+ factory: RendererFactory,
+ ) {
+diff --git a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/BlankLineRenderer.kt b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/BlankLineRenderer.kt
+index 0a57557..25eb0dc 100644
+--- a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/BlankLineRenderer.kt
++++ b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/BlankLineRenderer.kt
+@@ -15,7 +15,7 @@ class BlankLineRenderer(
+ override fun render(
+ node: MarkdownASTNode,
+ builder: SpannableStringBuilder,
+- onLinkPress: ((String) -> Unit)?,
++ onLinkPress: ((String, String) -> Unit)?,
+ onLinkLongPress: ((String) -> Unit)?,
+ factory: RendererFactory,
+ ) {
+diff --git a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/BlockquoteRenderer.kt b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/BlockquoteRenderer.kt
+index f5804a5..6292452 100644
+--- a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/BlockquoteRenderer.kt
++++ b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/BlockquoteRenderer.kt
+@@ -19,7 +19,7 @@ class BlockquoteRenderer(
+ override fun render(
+ node: MarkdownASTNode,
+ builder: SpannableStringBuilder,
+- onLinkPress: ((String) -> Unit)?,
++ onLinkPress: ((String, String) -> Unit)?,
+ onLinkLongPress: ((String) -> Unit)?,
+ factory: RendererFactory,
+ ) {
+diff --git a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/BlockquoteTextRenderer.kt b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/BlockquoteTextRenderer.kt
+index 91f4a7c..4eacec8 100644
+--- a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/BlockquoteTextRenderer.kt
++++ b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/BlockquoteTextRenderer.kt
+@@ -24,7 +24,7 @@ class BlockquoteTextRenderer(
+ fun render(
+ renderer: Renderer,
+ nodes: List,
+- onLinkPress: ((String) -> Unit)?,
++ onLinkPress: ((String, String) -> Unit)?,
+ onLinkLongPress: ((String) -> Unit)?,
+ ): SpannableStringBuilder = renderer.renderContent(nodes, onLinkPress, onLinkLongPress, block = this)
+
+diff --git a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/CodeBlockRenderer.kt b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/CodeBlockRenderer.kt
+index 4fcf57d..606c1a5 100644
+--- a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/CodeBlockRenderer.kt
++++ b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/CodeBlockRenderer.kt
+@@ -18,7 +18,7 @@ class CodeBlockRenderer(
+ override fun render(
+ node: MarkdownASTNode,
+ builder: SpannableStringBuilder,
+- onLinkPress: ((String) -> Unit)?,
++ onLinkPress: ((String, String) -> Unit)?,
+ onLinkLongPress: ((String) -> Unit)?,
+ factory: RendererFactory,
+ ) {
+diff --git a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/CodeRenderer.kt b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/CodeRenderer.kt
+index 0008d9b..6b54eff 100644
+--- a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/CodeRenderer.kt
++++ b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/CodeRenderer.kt
+@@ -12,7 +12,7 @@ class CodeRenderer(
+ override fun render(
+ node: MarkdownASTNode,
+ builder: SpannableStringBuilder,
+- onLinkPress: ((String) -> Unit)?,
++ onLinkPress: ((String, String) -> Unit)?,
+ onLinkLongPress: ((String) -> Unit)?,
+ factory: RendererFactory,
+ ) {
+diff --git a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/EmphasisRenderer.kt b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/EmphasisRenderer.kt
+index 8029d2d..6811dc4 100644
+--- a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/EmphasisRenderer.kt
++++ b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/EmphasisRenderer.kt
+@@ -11,7 +11,7 @@ class EmphasisRenderer(
+ override fun render(
+ node: MarkdownASTNode,
+ builder: SpannableStringBuilder,
+- onLinkPress: ((String) -> Unit)?,
++ onLinkPress: ((String, String) -> Unit)?,
+ onLinkLongPress: ((String) -> Unit)?,
+ factory: RendererFactory,
+ ) {
+diff --git a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/HeadingRenderer.kt b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/HeadingRenderer.kt
+index 1a8c71b..432cfae 100644
+--- a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/HeadingRenderer.kt
++++ b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/HeadingRenderer.kt
+@@ -17,7 +17,7 @@ class HeadingRenderer(
+ override fun render(
+ node: MarkdownASTNode,
+ builder: SpannableStringBuilder,
+- onLinkPress: ((String) -> Unit)?,
++ onLinkPress: ((String, String) -> Unit)?,
+ onLinkLongPress: ((String) -> Unit)?,
+ factory: RendererFactory,
+ ) {
+diff --git a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/HighlightRenderer.kt b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/HighlightRenderer.kt
+index a99a31f..acfcce5 100644
+--- a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/HighlightRenderer.kt
++++ b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/HighlightRenderer.kt
+@@ -9,7 +9,7 @@ class HighlightRenderer : NodeRenderer {
+ override fun render(
+ node: MarkdownASTNode,
+ builder: SpannableStringBuilder,
+- onLinkPress: ((String) -> Unit)?,
++ onLinkPress: ((String, String) -> Unit)?,
+ onLinkLongPress: ((String) -> Unit)?,
+ factory: RendererFactory,
+ ) {
+diff --git a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/ImageRenderer.kt b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/ImageRenderer.kt
+index 0047361..58e07f3 100644
+--- a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/ImageRenderer.kt
++++ b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/ImageRenderer.kt
+@@ -9,7 +9,7 @@ class ImageRenderer : NodeRenderer {
+ override fun render(
+ node: MarkdownASTNode,
+ builder: SpannableStringBuilder,
+- onLinkPress: ((String) -> Unit)?,
++ onLinkPress: ((String, String) -> Unit)?,
+ onLinkLongPress: ((String) -> Unit)?,
+ factory: RendererFactory,
+ ) {
+diff --git a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/LineBreakRenderer.kt b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/LineBreakRenderer.kt
+index 0cfad74..df88c5d 100644
+--- a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/LineBreakRenderer.kt
++++ b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/LineBreakRenderer.kt
+@@ -7,7 +7,7 @@ class LineBreakRenderer : NodeRenderer {
+ override fun render(
+ node: MarkdownASTNode,
+ builder: SpannableStringBuilder,
+- onLinkPress: ((String) -> Unit)?,
++ onLinkPress: ((String, String) -> Unit)?,
+ onLinkLongPress: ((String) -> Unit)?,
+ factory: RendererFactory,
+ ) {
+diff --git a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/LinkRenderer.kt b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/LinkRenderer.kt
+index 360a436..2bca5be 100644
+--- a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/LinkRenderer.kt
++++ b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/LinkRenderer.kt
+@@ -19,7 +19,7 @@ class LinkRenderer(
+ override fun render(
+ node: MarkdownASTNode,
+ builder: SpannableStringBuilder,
+- onLinkPress: ((String) -> Unit)?,
++ onLinkPress: ((String, String) -> Unit)?,
+ onLinkLongPress: ((String) -> Unit)?,
+ factory: RendererFactory,
+ ) {
+diff --git a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/ListItemRenderer.kt b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/ListItemRenderer.kt
+index b849f78..24c06f3 100644
+--- a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/ListItemRenderer.kt
++++ b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/ListItemRenderer.kt
+@@ -19,7 +19,7 @@ class ListItemRenderer(
+ override fun render(
+ node: MarkdownASTNode,
+ builder: SpannableStringBuilder,
+- onLinkPress: ((String) -> Unit)?,
++ onLinkPress: ((String, String) -> Unit)?,
+ onLinkLongPress: ((String) -> Unit)?,
+ factory: RendererFactory,
+ ) {
+diff --git a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/ListRenderer.kt b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/ListRenderer.kt
+index 2bac5b1..ff2d2c2 100644
+--- a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/ListRenderer.kt
++++ b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/ListRenderer.kt
+@@ -16,7 +16,7 @@ class ListRenderer(
+ override fun render(
+ node: MarkdownASTNode,
+ builder: SpannableStringBuilder,
+- onLinkPress: ((String) -> Unit)?,
++ onLinkPress: ((String, String) -> Unit)?,
+ onLinkLongPress: ((String) -> Unit)?,
+ factory: RendererFactory,
+ ) {
+diff --git a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/NodeRenderer.kt b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/NodeRenderer.kt
+index 354b31a..77b1e14 100644
+--- a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/NodeRenderer.kt
++++ b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/NodeRenderer.kt
+@@ -15,7 +15,7 @@ interface NodeRenderer {
+ fun render(
+ node: MarkdownASTNode,
+ builder: SpannableStringBuilder,
+- onLinkPress: ((String) -> Unit)?,
++ onLinkPress: ((String, String) -> Unit)?,
+ onLinkLongPress: ((String) -> Unit)?,
+ factory: RendererFactory,
+ )
+@@ -175,7 +175,7 @@ class RendererFactory(
+ fun renderChildren(
+ node: MarkdownASTNode,
+ builder: SpannableStringBuilder,
+- onLinkPress: ((String) -> Unit)?,
++ onLinkPress: ((String, String) -> Unit)?,
+ onLinkLongPress: ((String) -> Unit)?,
+ ) {
+ renderNodes(node.children, builder, onLinkPress, onLinkLongPress)
+@@ -190,7 +190,7 @@ class RendererFactory(
+ fun renderNodes(
+ nodes: List,
+ builder: SpannableStringBuilder,
+- onLinkPress: ((String) -> Unit)?,
++ onLinkPress: ((String, String) -> Unit)?,
+ onLinkLongPress: ((String) -> Unit)?,
+ ) {
+ nodes.forEach { node ->
+diff --git a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/ParagraphRenderer.kt b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/ParagraphRenderer.kt
+index 305acc9..cda43ac 100644
+--- a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/ParagraphRenderer.kt
++++ b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/ParagraphRenderer.kt
+@@ -16,7 +16,7 @@ class ParagraphRenderer(
+ override fun render(
+ node: MarkdownASTNode,
+ builder: SpannableStringBuilder,
+- onLinkPress: ((String) -> Unit)?,
++ onLinkPress: ((String, String) -> Unit)?,
+ onLinkLongPress: ((String) -> Unit)?,
+ factory: RendererFactory,
+ ) {
+diff --git a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/Renderer.kt b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/Renderer.kt
+index ae4be04..01dac8a 100644
+--- a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/Renderer.kt
++++ b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/Renderer.kt
+@@ -36,7 +36,7 @@ class Renderer {
+
+ fun renderDocument(
+ document: MarkdownASTNode,
+- onLinkPress: ((String) -> Unit)? = null,
++ onLinkPress: ((String, String) -> Unit)? = null,
+ onLinkLongPress: ((String) -> Unit)? = null,
+ ): SpannableStringBuilder = renderContent(document.children, onLinkPress, onLinkLongPress)
+
+@@ -59,7 +59,7 @@ class Renderer {
+ */
+ fun renderContent(
+ nodes: List,
+- onLinkPress: ((String) -> Unit)? = null,
++ onLinkPress: ((String, String) -> Unit)? = null,
+ onLinkLongPress: ((String) -> Unit)? = null,
+ block: BlockquoteTextRenderer? = null,
+ ): SpannableStringBuilder {
+diff --git a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/SoftBreakRenderer.kt b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/SoftBreakRenderer.kt
+index 334b545..3ae58ff 100644
+--- a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/SoftBreakRenderer.kt
++++ b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/SoftBreakRenderer.kt
+@@ -7,7 +7,7 @@ class SoftBreakRenderer : NodeRenderer {
+ override fun render(
+ node: MarkdownASTNode,
+ builder: SpannableStringBuilder,
+- onLinkPress: ((String) -> Unit)?,
++ onLinkPress: ((String, String) -> Unit)?,
+ onLinkLongPress: ((String) -> Unit)?,
+ factory: RendererFactory,
+ ) {
+diff --git a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/SpoilerRenderer.kt b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/SpoilerRenderer.kt
+index 430f98e..8dbdca7 100644
+--- a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/SpoilerRenderer.kt
++++ b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/SpoilerRenderer.kt
+@@ -9,7 +9,7 @@ class SpoilerRenderer : NodeRenderer {
+ override fun render(
+ node: MarkdownASTNode,
+ builder: SpannableStringBuilder,
+- onLinkPress: ((String) -> Unit)?,
++ onLinkPress: ((String, String) -> Unit)?,
+ onLinkLongPress: ((String) -> Unit)?,
+ factory: RendererFactory,
+ ) {
+diff --git a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/StrikethroughRenderer.kt b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/StrikethroughRenderer.kt
+index 8ffa61e..c6b562c 100644
+--- a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/StrikethroughRenderer.kt
++++ b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/StrikethroughRenderer.kt
+@@ -11,7 +11,7 @@ class StrikethroughRenderer(
+ override fun render(
+ node: MarkdownASTNode,
+ builder: SpannableStringBuilder,
+- onLinkPress: ((String) -> Unit)?,
++ onLinkPress: ((String, String) -> Unit)?,
+ onLinkLongPress: ((String) -> Unit)?,
+ factory: RendererFactory,
+ ) {
+diff --git a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/StrongRenderer.kt b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/StrongRenderer.kt
+index 584d79b..702b41e 100644
+--- a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/StrongRenderer.kt
++++ b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/StrongRenderer.kt
+@@ -11,7 +11,7 @@ class StrongRenderer(
+ override fun render(
+ node: MarkdownASTNode,
+ builder: SpannableStringBuilder,
+- onLinkPress: ((String) -> Unit)?,
++ onLinkPress: ((String, String) -> Unit)?,
+ onLinkLongPress: ((String) -> Unit)?,
+ factory: RendererFactory,
+ ) {
+diff --git a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/TextRenderer.kt b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/TextRenderer.kt
+index 54e324e..f2856d2 100644
+--- a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/TextRenderer.kt
++++ b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/TextRenderer.kt
+@@ -9,7 +9,7 @@ class TextRenderer : NodeRenderer {
+ override fun render(
+ node: MarkdownASTNode,
+ builder: SpannableStringBuilder,
+- onLinkPress: ((String) -> Unit)?,
++ onLinkPress: ((String, String) -> Unit)?,
+ onLinkLongPress: ((String) -> Unit)?,
+ factory: RendererFactory,
+ ) {
+diff --git a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/ThematicBreakRenderer.kt b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/ThematicBreakRenderer.kt
+index fa63d17..7c43b57 100644
+--- a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/ThematicBreakRenderer.kt
++++ b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/ThematicBreakRenderer.kt
+@@ -11,7 +11,7 @@ class ThematicBreakRenderer(
+ override fun render(
+ node: MarkdownASTNode,
+ builder: SpannableStringBuilder,
+- onLinkPress: ((String) -> Unit)?,
++ onLinkPress: ((String, String) -> Unit)?,
+ onLinkLongPress: ((String) -> Unit)?,
+ factory: RendererFactory,
+ ) {
+diff --git a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/UnderlineRenderer.kt b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/UnderlineRenderer.kt
+index d658913..4437eb0 100644
+--- a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/UnderlineRenderer.kt
++++ b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/renderer/UnderlineRenderer.kt
+@@ -11,7 +11,7 @@ class UnderlineRenderer(
+ override fun render(
+ node: MarkdownASTNode,
+ builder: SpannableStringBuilder,
+- onLinkPress: ((String) -> Unit)?,
++ onLinkPress: ((String, String) -> Unit)?,
+ onLinkLongPress: ((String) -> Unit)?,
+ factory: RendererFactory,
+ ) {
+diff --git a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/segments/RenderedSegment.kt b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/segments/RenderedSegment.kt
+index 0afa2c0..4454e2c 100644
+--- a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/segments/RenderedSegment.kt
++++ b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/segments/RenderedSegment.kt
+@@ -64,7 +64,7 @@ object MarkdownSegmentRenderer {
+ segments: List,
+ style: StyleConfig,
+ context: Context,
+- onLinkPress: ((String) -> Unit)?,
++ onLinkPress: ((String, String) -> Unit)?,
+ onLinkLongPress: ((String) -> Unit)?,
+ blockquoteStyle: BlockquoteStyle? = null,
+ onLatexError: LatexErrorReporter? = null,
+@@ -107,7 +107,7 @@ object MarkdownSegmentRenderer {
+ nodes: List,
+ style: StyleConfig,
+ context: Context,
+- onLinkPress: ((String) -> Unit)?,
++ onLinkPress: ((String, String) -> Unit)?,
+ onLinkLongPress: ((String) -> Unit)?,
+ blockquoteStyle: BlockquoteStyle?,
+ onLatexError: LatexErrorReporter?,
+diff --git a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/segments/SegmentViewCreators.kt b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/segments/SegmentViewCreators.kt
+index c9644d1..58b2f4e 100644
+--- a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/segments/SegmentViewCreators.kt
++++ b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/segments/SegmentViewCreators.kt
+@@ -67,7 +67,7 @@ data class SegmentViewConfig(
+ val selectionHandleColor: Int?,
+ val contextMenuItemTexts: List,
+ val dynamicProps: DynamicBlockProps,
+- val onLinkPress: ((String) -> Unit)?,
++ val onLinkPress: ((String, String) -> Unit)?,
+ val onLinkLongPress: ((String) -> Unit)?,
+ val onTaskListItemPress: ((taskIndex: Int, checked: Boolean, itemText: String) -> Unit)?,
+ val onContextMenuItemPress: ((itemText: String, selectedText: String, selectionStart: Int, selectionEnd: Int) -> Unit)?,
+diff --git a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/segments/TableContainerView.kt b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/segments/TableContainerView.kt
+index e190548..f9d959a 100644
+--- a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/segments/TableContainerView.kt
++++ b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/segments/TableContainerView.kt
+@@ -57,7 +57,7 @@ class TableContainerView(
+
+ var allowFontScaling = true
+ var maxFontSizeMultiplier = 0f
+- var onLinkPress: ((String) -> Unit)? = null
++ var onLinkPress: ((String, String) -> Unit)? = null
+ var onLinkLongPress: ((String) -> Unit)? = null
+ var accessibilityLabels: AccessibilityLabels = AccessibilityLabels()
+ set(value) {
+diff --git a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/spans/LinkSpan.kt b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/spans/LinkSpan.kt
+index ff00069..f3e13aa 100644
+--- a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/spans/LinkSpan.kt
++++ b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/spans/LinkSpan.kt
+@@ -12,7 +12,7 @@ import com.swmansion.enriched.markdown.utils.text.extensions.applyBlockStyleFont
+
+ class LinkSpan(
+ val url: String,
+- private val onLinkPress: ((String) -> Unit)?,
++ private val onLinkPress: ((String, String) -> Unit)?,
+ private val onLinkLongPress: ((String) -> Unit)?,
+ private val styleCache: SpanStyleCache,
+ private val blockStyle: BlockStyle,
+@@ -30,7 +30,8 @@ class LinkSpan(
+ return
+ }
+
+- onLinkPress?.invoke(url) ?: (widget as? EnrichedMarkdownText)?.emitOnLinkPress(url)
++ val sourceType = if (keepsCodeFont) "inline-code" else if (recognizedLink) "text" else "markdown"
++ onLinkPress?.invoke(url, sourceType) ?: (widget as? EnrichedMarkdownText)?.emitOnLinkPress(url, sourceType)
+ }
+
+ fun onLongClick(widget: View): Boolean {
+diff --git a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/utils/common/MarkdownViewManagerUtils.kt b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/utils/common/MarkdownViewManagerUtils.kt
+index b4d3cdc..4652b10 100644
+--- a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/utils/common/MarkdownViewManagerUtils.kt
++++ b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/utils/common/MarkdownViewManagerUtils.kt
+@@ -37,11 +37,12 @@ fun markdownEventTypeConstants(): MutableMap {
+ fun emitLinkPress(
+ view: View,
+ url: String,
++ sourceType: String,
+ ) {
+ val context = view.context as com.facebook.react.bridge.ReactContext
+ val surfaceId = UIManagerHelper.getSurfaceId(context)
+ val eventDispatcher = UIManagerHelper.getEventDispatcherForReactTag(context, view.id)
+- eventDispatcher?.dispatchEvent(LinkPressEvent(surfaceId, view.id, url))
++ eventDispatcher?.dispatchEvent(LinkPressEvent(surfaceId, view.id, url, sourceType))
+ }
+
+ fun emitLinkLongPress(
+diff --git a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/utils/text/view/LinkEvents.kt b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/utils/text/view/LinkEvents.kt
+index fde4b04..b524ea7 100644
+--- a/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/utils/text/view/LinkEvents.kt
++++ b/node_modules/react-native-enriched-markdown/android/src/main/java/com/swmansion/enriched/markdown/utils/text/view/LinkEvents.kt
+@@ -10,11 +10,11 @@ import com.swmansion.enriched.markdown.events.ImagePressEvent
+ import com.swmansion.enriched.markdown.events.LinkLongPressEvent
+ import com.swmansion.enriched.markdown.events.LinkPressEvent
+
+-fun View.emitLinkPressEvent(url: String) {
++fun View.emitLinkPressEvent(url: String, sourceType: String) {
+ val reactContext = context as? ReactContext ?: return
+ val surfaceId = UIManagerHelper.getSurfaceId(reactContext)
+ val dispatcher = UIManagerHelper.getEventDispatcherForReactTag(reactContext, id)
+- dispatcher?.dispatchEvent(LinkPressEvent(surfaceId, id, url))
++ dispatcher?.dispatchEvent(LinkPressEvent(surfaceId, id, url, sourceType))
+ }
+
+ fun View.emitImagePressEvent(
diff --git a/node_modules/react-native-enriched-markdown/cpp/parser/MD4CParser.cpp b/node_modules/react-native-enriched-markdown/cpp/parser/MD4CParser.cpp
index c99a52d..c93aaf7 100644
--- a/node_modules/react-native-enriched-markdown/cpp/parser/MD4CParser.cpp
@@ -14,8 +604,396 @@ index c99a52d..c93aaf7 100644
}
impl->pushNode(node);
break;
+diff --git a/node_modules/react-native-enriched-markdown/ios/EnrichedMarkdown.mm b/node_modules/react-native-enriched-markdown/ios/EnrichedMarkdown.mm
+index 5a0b7e3..be7b30a 100644
+--- a/node_modules/react-native-enriched-markdown/ios/EnrichedMarkdown.mm
++++ b/node_modules/react-native-enriched-markdown/ios/EnrichedMarkdown.mm
+@@ -82,7 +82,7 @@ static char kENRMSegmentFadeAnimatorKey;
+
+ @interface EnrichedMarkdown ()
+ + (ENRMMd4cFlags *)flagsFromProps:(const EnrichedMarkdownMd4cFlagsStruct &)props;
+-- (void)emitLinkPress:(NSString *)url;
++- (void)emitLinkPress:(NSString *)url sourceType:(NSString *)sourceType;
+ - (void)emitLinkLongPress:(NSString *)url;
+ - (void)emitLinkContextMenuItemPress:(NSString *)itemText pattern:(NSString *)pattern url:(NSString *)url;
+ - (void)emitImagePress:(NSString *)url altText:(NSString *)altText;
+@@ -411,10 +411,10 @@ static char kENRMSegmentFadeAnimatorKey;
+ if (strongSelf)
+ [strongSelf emitCodeBlockPress:code language:language];
+ };
+- view.onLinkPress = ^(NSString *url) {
++ view.onLinkPress = ^(NSString *url, NSString *sourceType) {
+ EnrichedMarkdown *strongSelf = weakSelf;
+ if (strongSelf && url)
+- [strongSelf emitLinkPress:url];
++ [strongSelf emitLinkPress:url sourceType:sourceType];
+ };
+ view.onLinkLongPress = ^(NSString *url) {
+ EnrichedMarkdown *strongSelf = weakSelf;
+@@ -986,10 +986,10 @@ static char kENRMSegmentFadeAnimatorKey;
+
+ __weak EnrichedMarkdown *weakSelf = self;
+
+- tableView.onLinkPress = ^(NSString *url) {
++ tableView.onLinkPress = ^(NSString *url, NSString *sourceType) {
+ EnrichedMarkdown *strongSelf = weakSelf;
+ if (strongSelf && url)
+- [strongSelf emitLinkPress:url];
++ [strongSelf emitLinkPress:url sourceType:sourceType];
+ };
+
+ tableView.onLinkLongPress = ^(NSString *url) {
+@@ -1475,11 +1475,11 @@ Class EnrichedMarkdownCls(void)
+ }
+ #endif
+
+-- (void)emitLinkPress:(NSString *)url
++- (void)emitLinkPress:(NSString *)url sourceType:(NSString *)sourceType
+ {
+ auto emitter = std::static_pointer_cast(_eventEmitter);
+ if (emitter)
+- emitter->onLinkPress({.url = std::string(url.UTF8String)});
++ emitter->onLinkPress({.url = std::string(url.UTF8String), .sourceType = std::string(sourceType.UTF8String)});
+ }
+
+ - (void)emitImagePress:(NSString *)url altText:(NSString *)altText
+@@ -1575,7 +1575,9 @@ Class EnrichedMarkdownCls(void)
+ }
+ }
+
+- if (ENRMHandleTapOnTextView(textView, recognizer, ^(NSString *url) { [self emitLinkPress:url]; })) {
++ if (ENRMHandleTapOnTextView(textView, recognizer, ^(NSString *url, NSString *sourceType) {
++ [self emitLinkPress:url sourceType:sourceType];
++ })) {
+ return;
+ }
+
+diff --git a/node_modules/react-native-enriched-markdown/ios/EnrichedMarkdownText.mm b/node_modules/react-native-enriched-markdown/ios/EnrichedMarkdownText.mm
+index b7b588b..2fa091f 100644
+--- a/node_modules/react-native-enriched-markdown/ios/EnrichedMarkdownText.mm
++++ b/node_modules/react-native-enriched-markdown/ios/EnrichedMarkdownText.mm
+@@ -62,7 +62,7 @@ typedef NS_OPTIONS(NSUInteger, ENRMDirtyFlags) {
+ - (void)applyRenderedText:(NSMutableAttributedString *)attributedText;
+ - (void)textTapped:(ENRMTapRecognizer *)recognizer;
+ - (void)setupLayoutManager;
+-- (void)emitLinkPress:(NSString *)url;
++- (void)emitLinkPress:(NSString *)url sourceType:(NSString *)sourceType;
+ - (void)emitLinkLongPress:(NSString *)url;
+ - (void)emitLinkContextMenuItemPress:(NSString *)itemText pattern:(NSString *)pattern url:(NSString *)url;
+ - (void)emitImagePress:(NSString *)url altText:(NSString *)altText;
+@@ -909,11 +909,11 @@ Class EnrichedMarkdownTextCls(void)
+ return [super touchEventEmitterAtPoint:point];
+ }
+
+-- (void)emitLinkPress:(NSString *)url
++- (void)emitLinkPress:(NSString *)url sourceType:(NSString *)sourceType
+ {
+ auto emitter = std::static_pointer_cast(_eventEmitter);
+ if (emitter)
+- emitter->onLinkPress({.url = std::string(url.UTF8String)});
++ emitter->onLinkPress({.url = std::string(url.UTF8String), .sourceType = std::string(sourceType.UTF8String)});
+ }
+
+ - (void)emitLinkLongPress:(NSString *)url
+@@ -994,7 +994,9 @@ Class EnrichedMarkdownTextCls(void)
+ return;
+ }
+
+- if (ENRMHandleTapOnTextView(textView, recognizer, ^(NSString *url) { [self emitLinkPress:url]; })) {
++ if (ENRMHandleTapOnTextView(textView, recognizer, ^(NSString *url, NSString *sourceType) {
++ [self emitLinkPress:url sourceType:sourceType];
++ })) {
+ return;
+ }
+
+diff --git a/node_modules/react-native-enriched-markdown/ios/generated/ReactCodegen/EnrichedMarkdownTextSpec/EventEmitters.cpp b/node_modules/react-native-enriched-markdown/ios/generated/ReactCodegen/EnrichedMarkdownTextSpec/EventEmitters.cpp
+index 77465ad..94997f7 100644
+--- a/node_modules/react-native-enriched-markdown/ios/generated/ReactCodegen/EnrichedMarkdownTextSpec/EventEmitters.cpp
++++ b/node_modules/react-native-enriched-markdown/ios/generated/ReactCodegen/EnrichedMarkdownTextSpec/EventEmitters.cpp
+@@ -17,6 +17,7 @@ void EnrichedMarkdownEventEmitter::onLinkPress(OnLinkPress event) const {
+ dispatchEvent("linkPress", [event=std::move(event)](jsi::Runtime &runtime) {
+ auto payload = jsi::Object(runtime);
+ payload.setProperty(runtime, "url", event.url);
++ payload.setProperty(runtime, "sourceType", event.sourceType);
+ return payload;
+ });
+ }
+@@ -362,6 +363,7 @@ void EnrichedMarkdownTextEventEmitter::onLinkPress(OnLinkPress event) const {
+ dispatchEvent("linkPress", [event=std::move(event)](jsi::Runtime &runtime) {
+ auto payload = jsi::Object(runtime);
+ payload.setProperty(runtime, "url", event.url);
++ payload.setProperty(runtime, "sourceType", event.sourceType);
+ return payload;
+ });
+ }
+diff --git a/node_modules/react-native-enriched-markdown/ios/generated/ReactCodegen/EnrichedMarkdownTextSpec/EventEmitters.h b/node_modules/react-native-enriched-markdown/ios/generated/ReactCodegen/EnrichedMarkdownTextSpec/EventEmitters.h
+index 0a1c6c2..5935112 100644
+--- a/node_modules/react-native-enriched-markdown/ios/generated/ReactCodegen/EnrichedMarkdownTextSpec/EventEmitters.h
++++ b/node_modules/react-native-enriched-markdown/ios/generated/ReactCodegen/EnrichedMarkdownTextSpec/EventEmitters.h
+@@ -19,6 +19,7 @@ class EnrichedMarkdownEventEmitter : public ViewEventEmitter {
+
+ struct OnLinkPress {
+ std::string url;
++ std::string sourceType;
+ };
+
+ struct OnLinkLongPress {
+@@ -298,6 +299,7 @@ class EnrichedMarkdownTextEventEmitter : public ViewEventEmitter {
+
+ struct OnLinkPress {
+ std::string url;
++ std::string sourceType;
+ };
+
+ struct OnLinkLongPress {
+diff --git a/node_modules/react-native-enriched-markdown/ios/renderer/LinkRenderer.m b/node_modules/react-native-enriched-markdown/ios/renderer/LinkRenderer.m
+index c9fd57d..66daf6b 100644
+--- a/node_modules/react-native-enriched-markdown/ios/renderer/LinkRenderer.m
++++ b/node_modules/react-native-enriched-markdown/ios/renderer/LinkRenderer.m
+@@ -96,6 +96,8 @@ static NSRange ENRMCollapseLinkIntoPill(NSMutableAttributedString *output, NSRan
+ options:NSAttributedStringEnumerationLongestEffectiveRangeNotRequired
+ usingBlock:^(NSDictionary *attrs, NSRange subrange, BOOL *stop) {
+ NSMutableDictionary *newAttributes = [NSMutableDictionary dictionary];
++ newAttributes[@"linkSourceType"] =
++ recognizedLink ? (attrs[CodeAttributeName] ? @"inline-code" : @"text") : @"markdown";
+ if (recognizedLink) {
+ newAttributes[ENRMRecognizedLinkAttributeName] = @YES;
+ newAttributes[ENRMRecognizedLinkOriginalUnderlineAttributeName] =
+diff --git a/node_modules/react-native-enriched-markdown/ios/segments/ENRMBlockquoteContainerView.h b/node_modules/react-native-enriched-markdown/ios/segments/ENRMBlockquoteContainerView.h
+index 1657128..85b0c54 100644
+--- a/node_modules/react-native-enriched-markdown/ios/segments/ENRMBlockquoteContainerView.h
++++ b/node_modules/react-native-enriched-markdown/ios/segments/ENRMBlockquoteContainerView.h
+@@ -68,7 +68,7 @@ typedef void (^ENRMBlockquoteLinkBlock)(NSString *url);
+
+ // Bridged up to the JS onLinkPress/onLinkLongPress events; propagated to nested
+ // quotes so links at any depth fire.
+-@property (nonatomic, copy, nullable) ENRMBlockquoteLinkBlock onLinkPress;
++@property (nonatomic, copy, nullable) void (^onLinkPress)(NSString *url, NSString *sourceType);
+ @property (nonatomic, copy, nullable) ENRMBlockquoteLinkBlock onLinkLongPress;
+ @property (nonatomic, copy, nullable) void (^onImagePress)(NSString *url, NSString *altText);
+
+diff --git a/node_modules/react-native-enriched-markdown/ios/segments/ENRMBlockquoteContainerView.mm b/node_modules/react-native-enriched-markdown/ios/segments/ENRMBlockquoteContainerView.mm
+index 79c79cf..96c7a70 100644
+--- a/node_modules/react-native-enriched-markdown/ios/segments/ENRMBlockquoteContainerView.mm
++++ b/node_modules/react-native-enriched-markdown/ios/segments/ENRMBlockquoteContainerView.mm
+@@ -229,10 +229,10 @@ static UIEdgeInsets ENRMBlockquoteContentInsets(StyleConfig *config)
+ if (strongSelf) {
+ view.dynamicProps = strongSelf.dynamicProps;
+ view.accessibilityLabels = strongSelf.accessibilityLabels;
+- view.onLinkPress = ^(NSString *url) {
++ view.onLinkPress = ^(NSString *url, NSString *sourceType) {
+ ENRMBlockquoteContainerView *s = weakSelf;
+ if (s.onLinkPress && url)
+- s.onLinkPress(url);
++ s.onLinkPress(url, sourceType);
+ };
+ view.onLinkLongPress = ^(NSString *url) {
+ ENRMBlockquoteContainerView *s = weakSelf;
+@@ -299,10 +299,10 @@ static UIEdgeInsets ENRMBlockquoteContentInsets(StyleConfig *config)
+ if (s.onImagePress && url)
+ s.onImagePress(url, altText);
+ };
+- view.onLinkPress = ^(NSString *url) {
++ view.onLinkPress = ^(NSString *url, NSString *sourceType) {
+ ENRMBlockquoteContainerView *s = weakSelf;
+ if (s.onLinkPress && url)
+- s.onLinkPress(url);
++ s.onLinkPress(url, sourceType);
+ };
+ view.onLinkLongPress = ^(NSString *url) {
+ ENRMBlockquoteContainerView *s = weakSelf;
+@@ -374,10 +374,10 @@ static UIEdgeInsets ENRMBlockquoteContentInsets(StyleConfig *config)
+ {
+ ENRMPlatformTextView *textView = (ENRMPlatformTextView *)recognizer.view;
+ __weak ENRMBlockquoteContainerView *weakSelf = self;
+- if (ENRMHandleTapOnTextView(textView, recognizer, ^(NSString *url) {
++ if (ENRMHandleTapOnTextView(textView, recognizer, ^(NSString *url, NSString *sourceType) {
+ ENRMBlockquoteContainerView *strongSelf = weakSelf;
+ if (strongSelf.onLinkPress && url)
+- strongSelf.onLinkPress(url);
++ strongSelf.onLinkPress(url, sourceType);
+ })) {
+ return;
+ }
+diff --git a/node_modules/react-native-enriched-markdown/ios/segments/ENRMTableIOSGridView.h b/node_modules/react-native-enriched-markdown/ios/segments/ENRMTableIOSGridView.h
+index bda3a64..0960bad 100644
+--- a/node_modules/react-native-enriched-markdown/ios/segments/ENRMTableIOSGridView.h
++++ b/node_modules/react-native-enriched-markdown/ios/segments/ENRMTableIOSGridView.h
+@@ -18,6 +18,7 @@ typedef NS_ENUM(NSInteger, ENRMTableIOSItemKind) {
+ @interface ENRMTableIOSItemHit : NSObject
+ @property (nonatomic, assign) ENRMTableIOSItemKind kind;
+ @property (nonatomic, copy) NSString *url;
++@property (nonatomic, copy) NSString *sourceType;
+ /// The link's visible label, or an image's alt text.
+ @property (nonatomic, copy, nullable) NSString *title;
+ /// The item's frame in grid coordinates.
+@@ -34,7 +35,7 @@ typedef NS_ENUM(NSInteger, ENRMTableIOSItemKind) {
+ /// cause multi-second main-thread hangs on large tables.
+ @interface ENRMTableIOSGridView : UIView
+
+-@property (nonatomic, copy, nullable) ENRMTableIOSLinkBlock onLinkTap;
++@property (nonatomic, copy, nullable) void (^onLinkTap)(NSString *url, NSString *sourceType);
+ @property (nonatomic, copy, nullable) ENRMTableIOSLinkBlock onLinkLongTap;
+ @property (nonatomic, copy, nullable) void (^onImageTap)(NSString *url, NSString *altText);
+ /// Asked when a touch lands on a link: a link with a menu is left to the context-menu
+diff --git a/node_modules/react-native-enriched-markdown/ios/segments/ENRMTableIOSGridView.m b/node_modules/react-native-enriched-markdown/ios/segments/ENRMTableIOSGridView.m
+index 3d7bee5..8b31c8b 100644
+--- a/node_modules/react-native-enriched-markdown/ios/segments/ENRMTableIOSGridView.m
++++ b/node_modules/react-native-enriched-markdown/ios/segments/ENRMTableIOSGridView.m
+@@ -193,6 +193,7 @@ static ENRMTableIOSItemHit *itemInAttributedString(NSAttributedString *text, CGR
+ ENRMTableIOSItemHit *hit = [[ENRMTableIOSItemHit alloc] init];
+ hit.kind = linkURL ? ENRMTableIOSItemKindLink : ENRMTableIOSItemKindImage;
+ hit.url = linkURL ?: imageURL;
++ hit.sourceType = [text attribute:@"linkSourceType" atIndex:charIndex effectiveRange:NULL] ?: @"markdown";
+ hit.title = linkURL ? linkTitleAtIndex(text, charIndex)
+ : [text attribute:@"imageAltText" atIndex:charIndex effectiveRange:NULL];
+ hit.frame = CGRectOffset(frame, textRect.origin.x, textRect.origin.y);
+@@ -240,7 +241,7 @@ static ENRMTableIOSItemHit *itemInAttributedString(NSAttributedString *text, CGR
+ return;
+ if (hit.kind == ENRMTableIOSItemKindLink) {
+ if (self.onLinkTap)
+- self.onLinkTap(hit.url);
++ self.onLinkTap(hit.url, hit.sourceType);
+ } else if (self.onImageTap) {
+ self.onImageTap(hit.url, hit.title ?: @"");
+ }
+diff --git a/node_modules/react-native-enriched-markdown/ios/segments/TableContainerView.h b/node_modules/react-native-enriched-markdown/ios/segments/TableContainerView.h
+index 0da3e9b..b8f9856 100644
+--- a/node_modules/react-native-enriched-markdown/ios/segments/TableContainerView.h
++++ b/node_modules/react-native-enriched-markdown/ios/segments/TableContainerView.h
+@@ -38,7 +38,7 @@ typedef void (^TableLinkPressBlock)(NSString *url);
+ @property (nonatomic, assign) BOOL allowFontScaling;
+ @property (nonatomic, assign) CGFloat maxFontSizeMultiplier;
+
+-@property (nonatomic, copy, nullable) TableLinkPressBlock onLinkPress;
++@property (nonatomic, copy, nullable) void (^onLinkPress)(NSString *url, NSString *sourceType);
+ @property (nonatomic, copy, nullable) TableLinkPressBlock onLinkLongPress;
+ @property (nonatomic, copy, nullable) void (^onImagePress)(NSString *url, NSString *altText);
+
+diff --git a/node_modules/react-native-enriched-markdown/ios/segments/TableContainerView.m b/node_modules/react-native-enriched-markdown/ios/segments/TableContainerView.m
+index 987eb21..ec93a4e 100644
+--- a/node_modules/react-native-enriched-markdown/ios/segments/TableContainerView.m
++++ b/node_modules/react-native-enriched-markdown/ios/segments/TableContainerView.m
+@@ -315,10 +315,10 @@ static void ENRMTableComputeLayout(NSArray *> *rows, NS
+ #else
+ ENRMTableIOSGridView *iosGridView = [[ENRMTableIOSGridView alloc] initWithFrame:CGRectZero];
+ __weak TableContainerView *weakSelf = self;
+- iosGridView.onLinkTap = ^(NSString *url) {
++ iosGridView.onLinkTap = ^(NSString *url, NSString *sourceType) {
+ TableContainerView *strongSelf = weakSelf;
+ if (strongSelf && strongSelf.onLinkPress)
+- strongSelf.onLinkPress(url);
++ strongSelf.onLinkPress(url, sourceType);
+ };
+ iosGridView.onImageTap = ^(NSString *url, NSString *altText) {
+ TableContainerView *strongSelf = weakSelf;
+diff --git a/node_modules/react-native-enriched-markdown/ios/utils/ENRMTextInteractionUtils.h b/node_modules/react-native-enriched-markdown/ios/utils/ENRMTextInteractionUtils.h
+index 65dc272..c5af8c1 100644
+--- a/node_modules/react-native-enriched-markdown/ios/utils/ENRMTextInteractionUtils.h
++++ b/node_modules/react-native-enriched-markdown/ios/utils/ENRMTextInteractionUtils.h
+@@ -11,7 +11,7 @@ extern "C" {
+ /// If a link is found, calls onLinkPress and returns YES.
+ /// If no link is found, calls ENRMClearSelection and returns NO.
+ BOOL ENRMHandleTapOnTextView(ENRMPlatformTextView *textView, ENRMTapRecognizer *recognizer,
+- void (^onLinkPress)(NSString *url));
++ void (^onLinkPress)(NSString *url, NSString *sourceType));
+
+ #ifdef __cplusplus
+ }
+diff --git a/node_modules/react-native-enriched-markdown/ios/utils/ENRMTextInteractionUtils.m b/node_modules/react-native-enriched-markdown/ios/utils/ENRMTextInteractionUtils.m
+index 88d69da..7bb3234 100644
+--- a/node_modules/react-native-enriched-markdown/ios/utils/ENRMTextInteractionUtils.m
++++ b/node_modules/react-native-enriched-markdown/ios/utils/ENRMTextInteractionUtils.m
+@@ -2,7 +2,7 @@
+ #import "LinkTapUtils.h"
+
+ BOOL ENRMHandleTapOnTextView(ENRMPlatformTextView *textView, ENRMTapRecognizer *recognizer,
+- void (^onLinkPress)(NSString *url))
++ void (^onLinkPress)(NSString *url, NSString *sourceType))
+ {
+ NSString *url = linkURLAtTapLocation(textView, recognizer);
+ if (!url) {
+@@ -10,6 +10,6 @@ BOOL ENRMHandleTapOnTextView(ENRMPlatformTextView *textView, ENRMTapRecognizer *
+ return NO;
+ }
+ if (onLinkPress)
+- onLinkPress(url);
++ onLinkPress(url, linkSourceTypeAtTapLocation(textView, recognizer));
+ return YES;
+ }
+diff --git a/node_modules/react-native-enriched-markdown/ios/utils/LinkTapUtils.h b/node_modules/react-native-enriched-markdown/ios/utils/LinkTapUtils.h
+index 3bab20f..136d07e 100644
+--- a/node_modules/react-native-enriched-markdown/ios/utils/LinkTapUtils.h
++++ b/node_modules/react-native-enriched-markdown/ios/utils/LinkTapUtils.h
+@@ -11,6 +11,9 @@ extern "C" {
+ /// Returns the link URL at the tap location, or nil if no link was tapped.
+ NSString *_Nullable linkURLAtTapLocation(ENRMPlatformTextView *textView, ENRMTapRecognizer *recognizer);
+
++/// Returns the syntax of the link at the tap location.
++NSString *linkSourceTypeAtTapLocation(ENRMPlatformTextView *textView, ENRMTapRecognizer *recognizer);
++
+ /// Returns the original link URL at a point in text-view coordinates.
+ NSString *_Nullable linkURLAtPoint(ENRMPlatformTextView *textView, CGPoint point);
+
+diff --git a/node_modules/react-native-enriched-markdown/ios/utils/LinkTapUtils.m b/node_modules/react-native-enriched-markdown/ios/utils/LinkTapUtils.m
+index 20d8739..6a6ffaa 100644
+--- a/node_modules/react-native-enriched-markdown/ios/utils/LinkTapUtils.m
++++ b/node_modules/react-native-enriched-markdown/ios/utils/LinkTapUtils.m
+@@ -13,6 +13,14 @@ NSString *_Nullable linkURLAtTapLocation(ENRMPlatformTextView *textView, ENRMTap
+ return [attrText attribute:@"linkURL" atIndex:characterIndex effectiveRange:NULL];
+ }
+
++NSString *linkSourceTypeAtTapLocation(ENRMPlatformTextView *textView, ENRMTapRecognizer *recognizer)
++{
++ NSUInteger index = ENRMCharacterIndexForTap(textView, recognizer);
++ if (index == NSNotFound)
++ return @"markdown";
++ return [ENRMGetAttributedText(textView) attribute:@"linkSourceType" atIndex:index effectiveRange:NULL] ?: @"markdown";
++}
++
+ NSString *_Nullable linkURLAtPoint(ENRMPlatformTextView *textView, CGPoint point)
+ {
+ NSUInteger index = ENRMCharacterIndexAtPoint(textView, point);
+diff --git a/node_modules/react-native-enriched-markdown/lib/module/EnrichedMarkdownNativeComponent.ts b/node_modules/react-native-enriched-markdown/lib/module/EnrichedMarkdownNativeComponent.ts
+index 32ff768..8e89249 100644
+--- a/node_modules/react-native-enriched-markdown/lib/module/EnrichedMarkdownNativeComponent.ts
++++ b/node_modules/react-native-enriched-markdown/lib/module/EnrichedMarkdownNativeComponent.ts
+@@ -275,6 +275,7 @@ export interface MarkdownStyleInternal {
+
+ export interface LinkPressEvent {
+ url: string;
++ sourceType: string;
+ }
+
+ export interface LinkLongPressEvent {
+diff --git a/node_modules/react-native-enriched-markdown/lib/module/EnrichedMarkdownTextNativeComponent.ts b/node_modules/react-native-enriched-markdown/lib/module/EnrichedMarkdownTextNativeComponent.ts
+index 6f31ccc..7b08b62 100644
+--- a/node_modules/react-native-enriched-markdown/lib/module/EnrichedMarkdownTextNativeComponent.ts
++++ b/node_modules/react-native-enriched-markdown/lib/module/EnrichedMarkdownTextNativeComponent.ts
+@@ -276,6 +276,7 @@ export interface MarkdownStyleInternal {
+
+ export interface LinkPressEvent {
+ url: string;
++ sourceType: string;
+ }
+
+ export interface LinkLongPressEvent {
+diff --git a/node_modules/react-native-enriched-markdown/lib/module/index.js.map b/node_modules/react-native-enriched-markdown/lib/module/index.js.map
+index bef09da..c23b50f 100644
+--- a/node_modules/react-native-enriched-markdown/lib/module/index.js.map
++++ b/node_modules/react-native-enriched-markdown/lib/module/index.js.map
+@@ -1 +1 @@
+-{"version":3,"names":["default","EnrichedMarkdownText","DEFAULT_ACCESSIBILITY_LABELS","resolveAccessibilityLabels","EnrichedMarkdownTextInput"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAMA,SAASA,OAAO,IAAIC,oBAAoB,QAAQ,kCAA+B;AAuB/E,SACEC,4BAA4B,EAC5BC,0BAA0B,QACrB,iCAA8B;AAErC,SAASC,yBAAyB,QAAQ,gCAA6B","ignoreList":[]}
++{"version":3,"names":["default","EnrichedMarkdownText","DEFAULT_ACCESSIBILITY_LABELS","resolveAccessibilityLabels","EnrichedMarkdownTextInput"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAUA,SAASA,OAAO,IAAIC,oBAAoB,QAAQ,kCAA+B;AAuB/E,SACEC,4BAA4B,EAC5BC,0BAA0B,QACrB,iCAA8B;AAErC,SAASC,yBAAyB,QAAQ,gCAA6B","ignoreList":[]}
+diff --git a/node_modules/react-native-enriched-markdown/lib/module/index.web.js.map b/node_modules/react-native-enriched-markdown/lib/module/index.web.js.map
+index 2691825..acac81c 100644
+--- a/node_modules/react-native-enriched-markdown/lib/module/index.web.js.map
++++ b/node_modules/react-native-enriched-markdown/lib/module/index.web.js.map
+@@ -1 +1 @@
+-{"version":3,"names":["EnrichedMarkdownText","default"],"sourceRoot":"../../src","sources":["index.web.tsx"],"mappings":";;AAAA,SAASA,oBAAoB,EAAEC,OAAO,QAAQ,+BAA4B","ignoreList":[]}
++{"version":3,"names":["EnrichedMarkdownText","default"],"sourceRoot":"../../src","sources":["index.web.tsx"],"mappings":";;AAIA,SAASA,oBAAoB,EAAEC,OAAO,QAAQ,+BAA4B","ignoreList":[]}
diff --git a/node_modules/react-native-enriched-markdown/lib/module/native/EnrichedMarkdownText.js b/node_modules/react-native-enriched-markdown/lib/module/native/EnrichedMarkdownText.js
-index 9fb1ad2..cdca0a7 100644
+index 9fb1ad2..2532d7c 100644
--- a/node_modules/react-native-enriched-markdown/lib/module/native/EnrichedMarkdownText.js
+++ b/node_modules/react-native-enriched-markdown/lib/module/native/EnrichedMarkdownText.js
@@ -106,6 +106,7 @@ export const EnrichedMarkdownText = ({
@@ -26,6 +1004,28 @@ index 9fb1ad2..cdca0a7 100644
...rest
}) => {
// An equal config keeps the previous object, so an inline literal does not
+@@ -205,10 +206,12 @@ export const EnrichedMarkdownText = ({
+ }, []);
+ const handleLinkPress = useCallback(e => {
+ const {
+- url
++ url,
++ sourceType
+ } = e.nativeEvent;
+ onLinkPress?.({
+- url
++ url,
++ sourceType: sourceType
+ });
+ }, [onLinkPress]);
+ const handleLinkLongPress = useCallback(e => {
+diff --git a/node_modules/react-native-enriched-markdown/lib/module/native/EnrichedMarkdownText.js.map b/node_modules/react-native-enriched-markdown/lib/module/native/EnrichedMarkdownText.js.map
+index 2f27901..fc55b09 100644
+--- a/node_modules/react-native-enriched-markdown/lib/module/native/EnrichedMarkdownText.js.map
++++ b/node_modules/react-native-enriched-markdown/lib/module/native/EnrichedMarkdownText.js.map
+@@ -1 +1 @@
+-{"version":3,"names":["useMemo","useCallback","useRef","useEffect","EnrichedMarkdownTextNativeComponent","EnrichedMarkdownNativeComponent","isLinkRecognitionEqual","toNativeLinkRecognition","normalizeMarkdownStyle","isLinkPillContentEqual","normalizeLinkPillContent","dispatchLinkContextMenuItem","isLinkContextMenuItemsEqual","normalizeLinkContextMenuItems","resolveAccessibilityLabels","normalizeMenuItem","normalizeLegacyBooleanMenuItem","jsx","_jsx","DEFAULT_COPY_LABEL","DEFAULT_COPY_AS_MARKDOWN_LABEL","DEFAULT_COPY_IMAGE_URL_LABEL","DEFAULT_COPY_IMAGE_URLS_LABEL","buildPluralTemplates","pluralLabels","singularLabel","IntlRef","Intl","PluralRules","pluralRules","other","byCategory","zero","one","two","few","many","templates","n","push","select","defaultMd4cFlags","underline","superscript","subscript","latexMath","highlight","hardSoftBreaks","preserveBlankLines","admonitions","EnrichedMarkdownText","markdown","markdownStyle","containerStyle","onLinkPress","onLinkLongPress","onImagePress","onTaskListItemPress","enableTaskListItemToggle","onCopyPress","onLatexError","onCodeBlockPress","enableBlockContextMenu","enableLinkPreview","selectable","md4cFlags","allowFontScaling","maxFontSizeMultiplier","allowTrailingMargin","flavor","streamingAnimation","streamingConfig","spoilerOverlay","contextMenuItems","linkContextMenuItems","imageRequestHeaders","linkPillContent","linkRecognition","selectionMenuConfig","accessibilityLabels","selectionColor","selectionHandleColor","textBreakStrategy","lineBreakStrategyIOS","writingDirection","numberOfLines","ellipsizeMode","rest","linkRecognitionRef","undefined","nativeLinkRecognition","next","current","normalizedStyleRef","normalized","normalizedStyle","normalizedMd4cFlags","contextMenuCallbacksRef","Map","callbacksMap","item","set","text","onPress","nativeContextMenuItems","filter","visible","map","icon","linkContextMenuItemsRef","nativeLinkContextMenuItemsRef","nativeLinkContextMenuItems","handleLinkContextMenuItemPress","event","url","pattern","itemText","nativeEvent","nativeImageRequestHeaders","Object","entries","name","value","sort","a","b","linkPillContentRef","nativeLinkPillContent","handleContextMenuItemPress","e","selectedText","selectionStart","selectionEnd","callback","get","selection","start","end","handleLinkPress","handleLinkLongPress","handleImagePress","altText","handleTaskListItemPress","index","checked","handleCopyPress","code","language","handleLatexError","source","message","displayMode","handleCodeBlockPress","tableMode","codeBlockMode","normalizedStreamingConfig","normalizedSelectionMenuConfig","config","copy","copyAsMarkdown","copyImageUrl","enabled","copyLabel","label","copyAsMarkdownLabel","copyImageUrlLabel","copyImageUrlsLabel","copyImageUrlPluralTemplates","resolvedAccessibilityLabels","sharedProps","enableImagePress","enableCodeBlockPress","isGFM","style","onLinkContextMenuItemPress","onContextMenuItemPress"],"sourceRoot":"../../../src","sources":["native/EnrichedMarkdownText.tsx"],"mappings":"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","ignoreList":[]}
++{"version":3,"names":["useMemo","useCallback","useRef","useEffect","EnrichedMarkdownTextNativeComponent","EnrichedMarkdownNativeComponent","isLinkRecognitionEqual","toNativeLinkRecognition","normalizeMarkdownStyle","isLinkPillContentEqual","normalizeLinkPillContent","dispatchLinkContextMenuItem","isLinkContextMenuItemsEqual","normalizeLinkContextMenuItems","resolveAccessibilityLabels","normalizeMenuItem","normalizeLegacyBooleanMenuItem","jsx","_jsx","DEFAULT_COPY_LABEL","DEFAULT_COPY_AS_MARKDOWN_LABEL","DEFAULT_COPY_IMAGE_URL_LABEL","DEFAULT_COPY_IMAGE_URLS_LABEL","buildPluralTemplates","pluralLabels","singularLabel","IntlRef","Intl","PluralRules","pluralRules","other","byCategory","zero","one","two","few","many","templates","n","push","select","defaultMd4cFlags","underline","superscript","subscript","latexMath","highlight","hardSoftBreaks","preserveBlankLines","admonitions","EnrichedMarkdownText","markdown","markdownStyle","containerStyle","onLinkPress","onLinkLongPress","onImagePress","onTaskListItemPress","enableTaskListItemToggle","onCopyPress","onLatexError","onCodeBlockPress","enableBlockContextMenu","enableLinkPreview","selectable","md4cFlags","allowFontScaling","maxFontSizeMultiplier","allowTrailingMargin","flavor","streamingAnimation","streamingConfig","spoilerOverlay","contextMenuItems","linkContextMenuItems","imageRequestHeaders","linkPillContent","linkRecognition","selectionMenuConfig","accessibilityLabels","selectionColor","selectionHandleColor","textBreakStrategy","lineBreakStrategyIOS","writingDirection","numberOfLines","ellipsizeMode","renderers","_renderers","rest","linkRecognitionRef","undefined","nativeLinkRecognition","next","current","normalizedStyleRef","normalized","normalizedStyle","normalizedMd4cFlags","contextMenuCallbacksRef","Map","callbacksMap","item","set","text","onPress","nativeContextMenuItems","filter","visible","map","icon","linkContextMenuItemsRef","nativeLinkContextMenuItemsRef","nativeLinkContextMenuItems","handleLinkContextMenuItemPress","event","url","pattern","itemText","nativeEvent","nativeImageRequestHeaders","Object","entries","name","value","sort","a","b","linkPillContentRef","nativeLinkPillContent","handleContextMenuItemPress","e","selectedText","selectionStart","selectionEnd","callback","get","selection","start","end","handleLinkPress","sourceType","handleLinkLongPress","handleImagePress","altText","handleTaskListItemPress","index","checked","handleCopyPress","code","language","handleLatexError","source","message","displayMode","handleCodeBlockPress","tableMode","codeBlockMode","normalizedStreamingConfig","normalizedSelectionMenuConfig","config","copy","copyAsMarkdown","copyImageUrl","enabled","copyLabel","label","copyAsMarkdownLabel","copyImageUrlLabel","copyImageUrlsLabel","copyImageUrlPluralTemplates","resolvedAccessibilityLabels","sharedProps","enableImagePress","enableCodeBlockPress","isGFM","style","onLinkContextMenuItemPress","onContextMenuItemPress"],"sourceRoot":"../../../src","sources":["native/EnrichedMarkdownText.tsx"],"mappings":"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","ignoreList":[]}
diff --git a/node_modules/react-native-enriched-markdown/lib/module/types/MarkdownRenderers.js b/node_modules/react-native-enriched-markdown/lib/module/types/MarkdownRenderers.js
new file mode 100644
index 0000000..c04179d
@@ -104,6 +1104,13 @@ index 2cf2708..cddd7de 100644
className: ENRM_TEXT_CLASS,
style: wrapperStyle,
dir: dir,
+diff --git a/node_modules/react-native-enriched-markdown/lib/module/web/EnrichedMarkdownText.js.map b/node_modules/react-native-enriched-markdown/lib/module/web/EnrichedMarkdownText.js.map
+index 1c49b41..e5947b1 100644
+--- a/node_modules/react-native-enriched-markdown/lib/module/web/EnrichedMarkdownText.js.map
++++ b/node_modules/react-native-enriched-markdown/lib/module/web/EnrichedMarkdownText.js.map
+@@ -1 +1 @@
+-{"version":3,"names":["useState","useEffect","useMemo","useRef","normalizeMarkdownStyle","zeroTrailingMargins","parseErrorFallbackStyle","buildStyles","parseMarkdown","recognizeTextLinks","RenderNode","indexTaskItems","markInlineImages","loadKaTeX","ENRM_TEXT_CLASS","ENRM_SELECTION_BG_VAR","filterNativeOnlyProps","jsx","_jsx","EnrichedMarkdownText","markdown","markdownStyle","md4cFlags","linkRecognition","onLinkPress","onLinkLongPress","onImagePress","onTaskListItemPress","onCodeBlockPress","enableTaskListItemToggle","allowTrailingMargin","containerStyle","selectable","dir","selectionColor","testID","rest","normalizedStyle","ast","setAst","katex","setKatex","parseError","setParseError","underline","latexMath","superscript","subscript","highlight","hardSoftBreaks","preserveBlankLines","admonitions","linkRecognitionRef","current","textLinkKey","text","toString","inlineCodeLinkKey","inlineCode","cancelled","katexPromise","Promise","resolve","all","then","result","katexInstance","catch","error","__DEV__","console","callbacks","capabilities","lastChildStyle","styles","lastChildStyles","wrapperStyle","display","flexDirection","undefined","userSelect","domProps","className","style","children","lastIdx","length","map","child","index","node","type"],"sourceRoot":"../../../src","sources":["web/EnrichedMarkdownText.tsx"],"mappings":"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","ignoreList":[]}
++{"version":3,"names":["useState","useEffect","useMemo","useRef","normalizeMarkdownStyle","zeroTrailingMargins","parseErrorFallbackStyle","buildStyles","parseMarkdown","recognizeTextLinks","RenderNode","indexTaskItems","markInlineImages","loadKaTeX","ENRM_TEXT_CLASS","ENRM_SELECTION_BG_VAR","filterNativeOnlyProps","jsx","_jsx","EnrichedMarkdownText","markdown","markdownStyle","md4cFlags","linkRecognition","renderers","onLinkPress","onLinkLongPress","onImagePress","onTaskListItemPress","onCodeBlockPress","enableTaskListItemToggle","allowTrailingMargin","containerStyle","selectable","dir","selectionColor","testID","rest","normalizedStyle","parsed","setParsed","katex","setKatex","parseError","setParseError","underline","latexMath","superscript","subscript","highlight","hardSoftBreaks","preserveBlankLines","admonitions","linkRecognitionRef","current","textLinkKey","text","toString","inlineCodeLinkKey","inlineCode","cancelled","katexPromise","Promise","resolve","all","then","result","katexInstance","ast","catch","error","__DEV__","console","callbacks","capabilities","lastChildStyle","styles","lastChildStyles","wrapperStyle","display","flexDirection","undefined","userSelect","domProps","className","style","children","lastIdx","length","map","child","index","node","type"],"sourceRoot":"../../../src","sources":["web/EnrichedMarkdownText.tsx"],"mappings":"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","ignoreList":[]}
diff --git a/node_modules/react-native-enriched-markdown/lib/module/web/renderers/BlockRenderers.js b/node_modules/react-native-enriched-markdown/lib/module/web/renderers/BlockRenderers.js
index dd70713..ca0385a 100644
--- a/node_modules/react-native-enriched-markdown/lib/module/web/renderers/BlockRenderers.js
@@ -129,11 +1136,28 @@ index dd70713..ca0385a 100644
const label = language ? `Code block: ${language}` : 'Code block';
if (callbacks.onCodeBlockPress == null) {
return /*#__PURE__*/_jsx("pre", {
+diff --git a/node_modules/react-native-enriched-markdown/lib/module/web/renderers/BlockRenderers.js.map b/node_modules/react-native-enriched-markdown/lib/module/web/renderers/BlockRenderers.js.map
+index dc917c4..cf59150 100644
+--- a/node_modules/react-native-enriched-markdown/lib/module/web/renderers/BlockRenderers.js.map
++++ b/node_modules/react-native-enriched-markdown/lib/module/web/renderers/BlockRenderers.js.map
+@@ -1 +1 @@
+-{"version":3,"names":["extractNodeText","filenameFromUrl","toHeadingLevel","KaTeXRenderer","ADMONITION_ICON_PATHS","ADMONITION_ICON_VIEWBOX","ADMONITION_TITLES","ENRM_ADMONITION_CLASS","Fragment","_Fragment","jsx","_jsx","jsxs","_jsxs","ParagraphRenderer","node","styles","parentType","renderChildren","isImageOnly","children","length","type","style","paragraphInBlockquote","paragraph","HeadingRenderer","Tag","attributes","level","BlockquoteRenderer","blockquote","AdmonitionRenderer","admonitionType","colors","admonitions","note","tint","color","iconSize","Math","ceil","fontSize","boxStyle","borderInlineStart","borderWidth","backgroundColor","headerStyle","display","alignItems","gap","round","marginBottom","fontWeight","lineHeight","className","width","height","viewBox","fill","d","CodeBlockRenderer","callbacks","language","label","onCodeBlockPress","codeBlock","codeBlockFont","press","code","replace","handleClick","selection","window","getSelection","isCollapsed","handleKeyDown","event","repeat","key","preventDefault","cursor","role","tabIndex","onClick","onKeyDown","ThematicBreakRenderer","thematicBreak","BlankLineRenderer","count","Number","parseInt","lines","isFinite","max","ImageRenderer","url","title","markdownAlt","trim","alt","imgStyle","isInline","inlineImage","image","interactive","onImagePress","src","altText","LatexMathDisplayRenderer","capabilities","content","katex","displayMode","mathDisplay","VideoRenderer","controls","playsInline","preload","video","blockRenderers","Paragraph","Heading","Blockquote","Admonition","CodeBlock","ThematicBreak","BlankLine","Image","LatexMathDisplay","Video"],"sourceRoot":"../../../../src","sources":["web/renderers/BlockRenderers.tsx"],"mappings":"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","ignoreList":[]}
++{"version":3,"names":["extractNodeText","filenameFromUrl","toHeadingLevel","KaTeXRenderer","ADMONITION_ICON_PATHS","ADMONITION_ICON_VIEWBOX","ADMONITION_TITLES","ENRM_ADMONITION_CLASS","Fragment","_Fragment","jsx","_jsx","jsxs","_jsxs","ParagraphRenderer","node","styles","parentType","renderChildren","isImageOnly","children","length","type","style","paragraphInBlockquote","paragraph","HeadingRenderer","Tag","attributes","level","BlockquoteRenderer","blockquote","AdmonitionRenderer","admonitionType","colors","admonitions","note","tint","color","iconSize","Math","ceil","fontSize","boxStyle","borderInlineStart","borderWidth","backgroundColor","headerStyle","display","alignItems","gap","round","marginBottom","fontWeight","lineHeight","className","width","height","viewBox","fill","d","CodeBlockRenderer","capabilities","callbacks","language","CustomCodeBlock","renderers","codeBlock","code","label","onCodeBlockPress","codeBlockFont","press","replace","handleClick","selection","window","getSelection","isCollapsed","handleKeyDown","event","repeat","key","preventDefault","cursor","role","tabIndex","onClick","onKeyDown","ThematicBreakRenderer","thematicBreak","BlankLineRenderer","count","Number","parseInt","lines","isFinite","max","ImageRenderer","url","title","markdownAlt","trim","alt","imgStyle","isInline","inlineImage","image","interactive","onImagePress","src","altText","LatexMathDisplayRenderer","content","katex","displayMode","mathDisplay","VideoRenderer","controls","playsInline","preload","video","blockRenderers","Paragraph","Heading","Blockquote","Admonition","CodeBlock","ThematicBreak","BlankLine","Image","LatexMathDisplay","Video"],"sourceRoot":"../../../../src","sources":["web/renderers/BlockRenderers.tsx"],"mappings":"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","ignoreList":[]}
diff --git a/node_modules/react-native-enriched-markdown/lib/module/web/renderers/InlineRenderers.js b/node_modules/react-native-enriched-markdown/lib/module/web/renderers/InlineRenderers.js
-index c8311d4..408950d 100644
+index c8311d4..253085d 100644
--- a/node_modules/react-native-enriched-markdown/lib/module/web/renderers/InlineRenderers.js
+++ b/node_modules/react-native-enriched-markdown/lib/module/web/renderers/InlineRenderers.js
-@@ -127,6 +127,7 @@ function LinkRenderer({
+@@ -113,7 +113,8 @@ function LinkRenderer({
+ if (callbacks.onLinkPress) {
+ event.preventDefault();
+ callbacks.onLinkPress({
+- url
++ url,
++ sourceType: node.attributes?.recognizedLink === 'true' ? node.children?.some(child => child.type === 'Code') ? 'inline-code' : 'text' : 'markdown'
+ });
+ }
+ };
+@@ -127,6 +128,7 @@ function LinkRenderer({
};
return /*#__PURE__*/_jsx("a", {
href: url,
@@ -141,6 +1165,13 @@ index c8311d4..408950d 100644
style: linkStyleForUrl(style, url),
target: "_blank",
rel: "noopener noreferrer",
+diff --git a/node_modules/react-native-enriched-markdown/lib/module/web/renderers/InlineRenderers.js.map b/node_modules/react-native-enriched-markdown/lib/module/web/renderers/InlineRenderers.js.map
+index 72a29d9..aa61748 100644
+--- a/node_modules/react-native-enriched-markdown/lib/module/web/renderers/InlineRenderers.js.map
++++ b/node_modules/react-native-enriched-markdown/lib/module/web/renderers/InlineRenderers.js.map
+@@ -1 +1 @@
+-{"version":3,"names":["extractNodeText","KaTeXRenderer","linkStyleForUrl","Fragment","_Fragment","jsx","_jsx","TextRenderer","node","children","content","LineBreakRenderer","_props","SoftBreakRenderer","StrongRenderer","styles","renderChildren","style","strong","EmphasisRenderer","emphasis","StrikethroughRenderer","strikethrough","UnderlineRenderer","underline","SuperscriptRenderer","superscript","SubscriptRenderer","subscript","HighlightRenderer","highlight","CodeRenderer","code","LinkRenderer","callbacks","url","attributes","handleClick","event","onLinkPress","preventDefault","handleContextMenu","onLinkLongPress","href","target","rel","onClick","onContextMenu","LatexMathInlineRenderer","capabilities","katex","displayMode","mathInline","inlineRenderers","Text","LineBreak","SoftBreak","Strong","Emphasis","Strikethrough","Underline","Superscript","Subscript","Highlight","Code","Link","LatexMathInline"],"sourceRoot":"../../../../src","sources":["web/renderers/InlineRenderers.tsx"],"mappings":"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","ignoreList":[]}
++{"version":3,"names":["extractNodeText","KaTeXRenderer","linkStyleForUrl","Fragment","_Fragment","jsx","_jsx","TextRenderer","node","children","content","LineBreakRenderer","_props","SoftBreakRenderer","StrongRenderer","styles","renderChildren","style","strong","EmphasisRenderer","emphasis","StrikethroughRenderer","strikethrough","UnderlineRenderer","underline","SuperscriptRenderer","superscript","SubscriptRenderer","subscript","HighlightRenderer","highlight","CodeRenderer","code","LinkRenderer","callbacks","url","attributes","handleClick","event","onLinkPress","preventDefault","sourceType","recognizedLink","some","child","type","handleContextMenu","onLinkLongPress","href","title","target","rel","onClick","onContextMenu","LatexMathInlineRenderer","capabilities","katex","displayMode","mathInline","inlineRenderers","Text","LineBreak","SoftBreak","Strong","Emphasis","Strikethrough","Underline","Superscript","Subscript","Highlight","Code","Link","LatexMathInline"],"sourceRoot":"../../../../src","sources":["web/renderers/InlineRenderers.tsx"],"mappings":"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","ignoreList":[]}
diff --git a/node_modules/react-native-enriched-markdown/lib/module/web/renderers/ListRenderers.js b/node_modules/react-native-enriched-markdown/lib/module/web/renderers/ListRenderers.js
index 7718d0a..ed95c24 100644
--- a/node_modules/react-native-enriched-markdown/lib/module/web/renderers/ListRenderers.js
@@ -153,6 +1184,13 @@ index 7718d0a..ed95c24 100644
style: resolvedStyle,
children: renderChildren(node)
});
+diff --git a/node_modules/react-native-enriched-markdown/lib/module/web/renderers/ListRenderers.js.map b/node_modules/react-native-enriched-markdown/lib/module/web/renderers/ListRenderers.js.map
+index 049421a..c05b993 100644
+--- a/node_modules/react-native-enriched-markdown/lib/module/web/renderers/ListRenderers.js.map
++++ b/node_modules/react-native-enriched-markdown/lib/module/web/renderers/ListRenderers.js.map
+@@ -1 +1 @@
+-{"version":3,"names":["useState","useEffect","extractNodeText","listItemStyle","checkedTaskTextStyle","jsx","_jsx","jsxs","_jsxs","NESTED_LIST_TYPES","Set","ListRenderer","node","styles","parentType","renderChildren","listTag","ListTag","isNested","hasTaskChild","children","some","child","attributes","isTask","resolvedStyle","listNested","listTask","list","style","UnorderedListRenderer","props","OrderedListRenderer","isNestedList","has","type","ListItemRenderer","index","callbacks","capabilities","initialChecked","taskChecked","taskText","isChecked","setIsChecked","handleChange","enableTaskListItemToggle","taskIndex","undefined","newChecked","onTaskListItemPress","checked","text","hasNestedList","checkedStyle","inlineNode","filter","nestedNode","onChange","readOnly","taskCheckbox","taskCheckboxDisabled","listRenderers","UnorderedList","OrderedList","ListItem"],"sourceRoot":"../../../../src","sources":["web/renderers/ListRenderers.tsx"],"mappings":";;AAAA,SAASA,QAAQ,EAAEC,SAAS,QAAQ,OAAO;AAC3C,SAASC,eAAe,QAAQ,aAAU;AAE1C,SAASC,aAAa,EAAEC,oBAAoB,QAAQ,cAAW;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAEhE,MAAMC,iBAAgC,GAAG,IAAIC,GAAG,CAAC,CAC/C,eAAe,EACf,aAAa,CACd,CAAC;AAEF,SAASC,YAAYA,CAAC;EACpBC,IAAI;EACJC,MAAM;EACNC,UAAU;EACVC,cAAc;EACdC,OAAO,EAAEC;AAC+B,CAAC,EAAE;EAC3C,MAAMC,QAAQ,GAAGJ,UAAU,KAAK,UAAU;EAC1C,MAAMK,YAAY,GAChB,CAACD,QAAQ,IACTN,IAAI,CAACQ,QAAQ,EAAEC,IAAI,CAAEC,KAAK,IAAKA,KAAK,CAACC,UAAU,EAAEC,MAAM,KAAK,MAAM,CAAC;EAErE,MAAMC,aAAa,GAAGP,QAAQ,GAC1BL,MAAM,CAACa,UAAU,GACjBP,YAAY,GACVN,MAAM,CAACc,QAAQ,GACfd,MAAM,CAACe,IAAI;EACjB,oBAAOtB,IAAA,CAACW,OAAO;IAACY,KAAK,EAAEJ,aAAc;IAAAL,QAAA,EAAEL,cAAc,CAACH,IAAI;EAAC,CAAU,CAAC;AACxE;AAEA,SAASkB,qBAAqBA,CAACC,KAAoB,EAAE;EACnD,oBAAOzB,IAAA,CAACK,YAAY;IAAA,GAAKoB,KAAK;IAAEf,OAAO,EAAC;EAAI,CAAE,CAAC;AACjD;AAEA,SAASgB,mBAAmBA,CAACD,KAAoB,EAAE;EACjD,oBAAOzB,IAAA,CAACK,YAAY;IAAA,GAAKoB,KAAK;IAAEf,OAAO,EAAC;EAAI,CAAE,CAAC;AACjD;AAEA,SAASiB,YAAYA,CAACX,KAAc,EAAW;EAC7C,OAAOb,iBAAiB,CAACyB,GAAG,CAACZ,KAAK,CAACa,IAAI,CAAC;AAC1C;AAEA,SAASC,gBAAgBA,CAAC;EACxBxB,IAAI;EACJiB,KAAK;EACLhB,MAAM;EACNwB,KAAK;EACLC,SAAS;EACTC,YAAY;EACZxB;AACa,CAAC,EAAE;EAChB,MAAMS,MAAM,GAAGZ,IAAI,CAACW,UAAU,EAAEC,MAAM,KAAK,MAAM;EACjD,MAAMgB,cAAc,GAAG5B,IAAI,CAACW,UAAU,EAAEkB,WAAW,KAAK,MAAM;EAC9D,MAAMC,QAAQ,GAAGlB,MAAM,GAAGtB,eAAe,CAACU,IAAI,CAAC,GAAG,EAAE;EACpD,MAAM,CAAC+B,SAAS,EAAEC,YAAY,CAAC,GAAG5C,QAAQ,CAACwC,cAAc,CAAC;EAE1DvC,SAAS,CAAC,MAAM;IACd2C,YAAY,CAACJ,cAAc,CAAC;EAC9B,CAAC,EAAE,CAACA,cAAc,CAAC,CAAC;EAEpB,MAAMK,YAAY,GAAGA,CAAA,KAAM;IACzB,IAAI,CAACN,YAAY,CAACO,wBAAwB,EAAE;IAE5C,MAAMC,SAAS,GAAGnC,IAAI,CAACW,UAAU,EAAEwB,SAAS;IAC5C,IAAIA,SAAS,KAAKC,SAAS,EAAE;IAE7B,MAAMC,UAAU,GAAG,CAACN,SAAS;IAC7BC,YAAY,CAACK,UAAU,CAAC;IAExBX,SAAS,CAACY,mBAAmB,GAAG;MAC9Bb,KAAK,EAAEU,SAAS;MAChBI,OAAO,EAAEF,UAAU;MACnBG,IAAI,EAAEV;IACR,CAAC,CAAC;EACJ,CAAC;EAED,MAAMW,aAAa,GAAGzC,IAAI,CAACQ,QAAQ,EAAEC,IAAI,CAACY,YAAY,CAAC;EACvD,MAAMqB,YAAY,GAChB9B,MAAM,IAAImB,SAAS,GAAGvC,oBAAoB,CAACyB,KAAK,CAAC,GAAGmB,SAAS;EAE/D,MAAMO,UAAmB,GAAGF,aAAa,GACrC;IACE,GAAGzC,IAAI;IACPQ,QAAQ,EAAER,IAAI,CAACQ,QAAQ,EAAEoC,MAAM,CAAElC,KAAK,IAAK,CAACW,YAAY,CAACX,KAAK,CAAC;EACjE,CAAC,GACDV,IAAI;EACR,MAAM6C,UAA0B,GAAGJ,aAAa,GAC5C;IAAE,GAAGzC,IAAI;IAAEQ,QAAQ,EAAER,IAAI,CAACQ,QAAQ,EAAEoC,MAAM,CAACvB,YAAY;EAAE,CAAC,GAC1D,IAAI;EAER,oBACEzB,KAAA;IAAIqB,KAAK,EAAE1B,aAAa,CAAC0B,KAAK,EAAEL,MAAM,EAAE,CAACa,KAAK,IAAI,CAAC,MAAM,CAAC,CAAE;IAAAjB,QAAA,gBAC1DZ,KAAA;MAAMqB,KAAK,EAAEyB,YAAa;MAAAlC,QAAA,GACvBI,MAAM,iBACLlB,IAAA;QACE6B,IAAI,EAAC,UAAU;QACfgB,OAAO,EAAER,SAAU;QACnBe,QAAQ,EAAEb,YAAa;QACvBc,QAAQ,EAAE,CAACpB,YAAY,CAACO,wBAAyB;QACjD,iBACEP,YAAY,CAACO,wBAAwB,GAAGE,SAAS,GAAG,IACrD;QACDnB,KAAK,EACHU,YAAY,CAACO,wBAAwB,GACjCjC,MAAM,CAAC+C,YAAY,GACnB/C,MAAM,CAACgD,oBACZ;QACD,cAAY,SAASnB,QAAQ;MAAG,CACjC,CACF,EACA3B,cAAc,CAACwC,UAAU,CAAC;IAAA,CACvB,CAAC,EACNE,UAAU,IAAI1C,cAAc,CAAC0C,UAAU,CAAC;EAAA,CACvC,CAAC;AAET;AAEA,OAAO,MAAMK,aAA0B,GAAG;EACxCC,aAAa,EAAEjC,qBAAqB;EACpCkC,WAAW,EAAEhC,mBAAmB;EAChCiC,QAAQ,EAAE7B;AACZ,CAAC","ignoreList":[]}
++{"version":3,"names":["useState","useEffect","extractNodeText","listItemStyle","checkedTaskTextStyle","jsx","_jsx","jsxs","_jsxs","NESTED_LIST_TYPES","Set","ListRenderer","node","styles","parentType","renderChildren","listTag","ListTag","isNested","hasTaskChild","children","some","child","attributes","isTask","resolvedStyle","listNested","listTask","list","start","Number","undefined","style","UnorderedListRenderer","props","OrderedListRenderer","isNestedList","has","type","ListItemRenderer","index","callbacks","capabilities","initialChecked","taskChecked","taskText","isChecked","setIsChecked","handleChange","enableTaskListItemToggle","taskIndex","newChecked","onTaskListItemPress","checked","text","hasNestedList","checkedStyle","inlineNode","filter","nestedNode","onChange","readOnly","taskCheckbox","taskCheckboxDisabled","listRenderers","UnorderedList","OrderedList","ListItem"],"sourceRoot":"../../../../src","sources":["web/renderers/ListRenderers.tsx"],"mappings":"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","ignoreList":[]}
diff --git a/node_modules/react-native-enriched-markdown/lib/module/web/wasm/md4c.js b/node_modules/react-native-enriched-markdown/lib/module/web/wasm/md4c.js
index 978a8c7..950cccd 100644
--- a/node_modules/react-native-enriched-markdown/lib/module/web/wasm/md4c.js
@@ -398,6 +1436,55 @@ index 978a8c7..950cccd 100644
};
})();
if (typeof exports === "object" && typeof module === "object") {
+diff --git a/node_modules/react-native-enriched-markdown/lib/module/web/wasm/md4c.js.map b/node_modules/react-native-enriched-markdown/lib/module/web/wasm/md4c.js.map
+index 75b509c..ecbb5e7 100644
+--- a/node_modules/react-native-enriched-markdown/lib/module/web/wasm/md4c.js.map
++++ b/node_modules/react-native-enriched-markdown/lib/module/web/wasm/md4c.js.map
+@@ -1 +1 @@
+-{"version":3,"names":["createMd4cModule","_scriptName","globalThis","document","currentScript","src","moduleArg","Module","ENVIRONMENT_IS_WEB","ENVIRONMENT_IS_WORKER","programArgs","thisProgram","scriptDirectory","readAsync","URL","href","url","response","fetch","credentials","ok","arrayBuffer","Error","status","out","console","log","bind","err","error","wasmBinary","ABORT","EmscriptenEH","EmscriptenSjLj","binaryDecode","bin","i","l","length","o","Uint8Array","c","charCodeAt","runtimeInitialized","getMemoryBuffer","wasmMemory","buffer","updateMemoryViews","HEAP8","resizable","b","Int8Array","HEAP16","Int16Array","HEAPU8","HEAPU16","Uint16Array","HEAP32","Int32Array","HEAPU32","Uint32Array","HEAPF32","Float32Array","HEAPF64","Float64Array","HEAP64","BigInt64Array","HEAPU64","BigUint64Array","preRun","onPreRuns","push","callRuntimeCallbacks","initRuntime","wasmExports","postRun","onPostRuns","abort","what","e","WebAssembly","RuntimeError","wasmBinaryFile","findWasmBinary","getBinarySync","file","getWasmBinary","binaryFile","instantiateArrayBuffer","imports","binary","instance","instantiate","reason","instantiateAsync","getWasmImports","env","wasmImports","wasi_snapshot_preview1","createWasm","receiveInstance","exports","assignWasmExports","receiveInstantiationResult","result","info","instantiateWasm","Promise","resolve","inst","ExitStatus","name","constructor","message","callbacks","shift","noExitRuntime","stackRestore","val","__emscripten_stack_restore","stackSave","_emscripten_stack_get_current","UTF8Decoder","TextDecoder","findStringEnd","heapOrArray","idx","maxBytesToRead","ignoreNul","maxIdx","UTF8ArrayToString","endPtr","decode","subarray","str","u0","String","fromCharCode","u1","u2","ch","UTF8ToString","ptr","___assert_fail","condition","filename","line","func","ExceptionInfo","excPtr","set_type","type","get_type","set_destructor","destructor","get_destructor","set_caught","caught","get_caught","set_rethrown","rethrown","get_rethrown","init","set_adjusted_ptr","adjustedPtr","get_adjusted_ptr","uncaughtExceptionCount","___cxa_throw","__abort_js","getHeapMax","alignMemory","size","alignment","Math","ceil","growMemory","oldHeapSize","byteLength","pages","grow","_emscripten_resize_heap","requestedSize","oldSize","maxHeapSize","cutDown","overGrownHeapSize","min","newSize","max","replacement","getCFunc","ident","writeArrayToMemory","array","set","lengthBytesUTF8","len","stringToUTF8Array","heap","outIdx","maxBytesToWrite","startIdx","endIdx","u","codePointAt","stringToUTF8","outPtr","stackAlloc","sz","__emscripten_stack_alloc","stringToUTF8OnStack","ret","ccall","returnType","argTypes","args","opts","toC","string","undefined","arr","convertReturnValue","Boolean","cArgs","stack","converter","onDone","cwrap","numericArgs","every","numericRet","preInit","_parseMarkdown","memory","__indirect_function_table","__assert_fail","__cxa_throw","_abort_js","emscripten_resize_heap","run","setStatus","setTimeout","module","default","define"],"sourceRoot":"../../../../src","sources":["web/wasm/md4c.js"],"mappings":"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","ignoreList":[]}
++{"version":3,"names":["createMd4cModule","_scriptName","globalThis","document","currentScript","src","moduleArg","moduleRtn","Module","ENVIRONMENT_IS_WEB","ENVIRONMENT_IS_WORKER","arguments_","thisProgram","scriptDirectory","readAsync","URL","href","url","response","fetch","credentials","ok","arrayBuffer","Error","status","out","console","log","bind","err","error","wasmBinary","ABORT","binaryDecode","bin","i","l","length","o","Uint8Array","c","charCodeAt","readyPromiseResolve","readyPromiseReject","HEAP8","HEAPU8","HEAP16","HEAPU16","HEAP32","HEAPU32","HEAPF32","HEAPF64","HEAP64","HEAPU64","runtimeInitialized","updateMemoryViews","b","wasmMemory","buffer","Int8Array","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigInt64Array","BigUint64Array","preRun","addOnPreRun","shift","callRuntimeCallbacks","onPreRuns","initRuntime","wasmExports","postRun","addOnPostRun","onPostRuns","abort","what","e","WebAssembly","RuntimeError","wasmBinaryFile","findWasmBinary","getBinarySync","file","getWasmBinary","binaryFile","instantiateArrayBuffer","imports","binary","instance","instantiate","reason","instantiateAsync","getWasmImports","env","wasmImports","wasi_snapshot_preview1","createWasm","receiveInstance","module","exports","assignWasmExports","receiveInstantiationResult","result","info","Promise","resolve","reject","inst","mod","ExitStatus","name","constructor","message","callbacks","cb","push","noExitRuntime","stackRestore","val","__emscripten_stack_restore","stackSave","_emscripten_stack_get_current","UTF8Decoder","TextDecoder","findStringEnd","heapOrArray","idx","maxBytesToRead","ignoreNul","maxIdx","UTF8ArrayToString","endPtr","decode","subarray","str","u0","String","fromCharCode","u1","u2","ch","UTF8ToString","ptr","___assert_fail","condition","filename","line","func","ExceptionInfo","excPtr","set_type","type","get_type","set_destructor","destructor","get_destructor","set_caught","caught","get_caught","set_rethrown","rethrown","get_rethrown","init","set_adjusted_ptr","adjustedPtr","get_adjusted_ptr","exceptionLast","uncaughtExceptionCount","___cxa_throw","__abort_js","getHeapMax","alignMemory","size","alignment","Math","ceil","growMemory","oldHeapSize","byteLength","pages","grow","_emscripten_resize_heap","requestedSize","oldSize","maxHeapSize","cutDown","overGrownHeapSize","min","newSize","max","replacement","getCFunc","ident","writeArrayToMemory","array","set","lengthBytesUTF8","len","stringToUTF8Array","heap","outIdx","maxBytesToWrite","startIdx","endIdx","u","codePointAt","stringToUTF8","outPtr","stackAlloc","sz","__emscripten_stack_alloc","stringToUTF8OnStack","ret","ccall","returnType","argTypes","args","opts","toC","string","undefined","arr","convertReturnValue","Boolean","cArgs","stack","converter","onDone","cwrap","numericArgs","every","numericRet","base64ReverseLookup","_parseMarkdown","memory","__indirect_function_table","__assert_fail","__cxa_throw","_abort_js","emscripten_resize_heap","run","doRun","setTimeout","default","define"],"sourceRoot":"../../../../src","sources":["web/wasm/md4c.js"],"mappings":"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","ignoreList":[]}
+diff --git a/node_modules/react-native-enriched-markdown/lib/typescript/src/EnrichedMarkdownNativeComponent.d.ts b/node_modules/react-native-enriched-markdown/lib/typescript/src/EnrichedMarkdownNativeComponent.d.ts
+index 1ee4eda..b415d18 100644
+--- a/node_modules/react-native-enriched-markdown/lib/typescript/src/EnrichedMarkdownNativeComponent.d.ts
++++ b/node_modules/react-native-enriched-markdown/lib/typescript/src/EnrichedMarkdownNativeComponent.d.ts
+@@ -235,6 +235,7 @@ export interface MarkdownStyleInternal {
+ }
+ export interface LinkPressEvent {
+ url: string;
++ sourceType: string;
+ }
+ export interface LinkLongPressEvent {
+ url: string;
+diff --git a/node_modules/react-native-enriched-markdown/lib/typescript/src/EnrichedMarkdownNativeComponent.d.ts.map b/node_modules/react-native-enriched-markdown/lib/typescript/src/EnrichedMarkdownNativeComponent.d.ts.map
+index 8e380e9..5f342bd 100644
+--- a/node_modules/react-native-enriched-markdown/lib/typescript/src/EnrichedMarkdownNativeComponent.d.ts.map
++++ b/node_modules/react-native-enriched-markdown/lib/typescript/src/EnrichedMarkdownNativeComponent.d.ts.map
+@@ -1 +1 @@
+-{"version":3,"file":"EnrichedMarkdownNativeComponent.d.ts","sourceRoot":"","sources":["../../../src/EnrichedMarkdownNativeComponent.ts"],"names":[],"mappings":"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"}
+\ No newline at end of file
++{"version":3,"file":"EnrichedMarkdownNativeComponent.d.ts","sourceRoot":"","sources":["../../../src/EnrichedMarkdownNativeComponent.ts"],"names":[],"mappings":"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"}
+\ No newline at end of file
+diff --git a/node_modules/react-native-enriched-markdown/lib/typescript/src/EnrichedMarkdownTextNativeComponent.d.ts b/node_modules/react-native-enriched-markdown/lib/typescript/src/EnrichedMarkdownTextNativeComponent.d.ts
+index bcde9a7..247d757 100644
+--- a/node_modules/react-native-enriched-markdown/lib/typescript/src/EnrichedMarkdownTextNativeComponent.d.ts
++++ b/node_modules/react-native-enriched-markdown/lib/typescript/src/EnrichedMarkdownTextNativeComponent.d.ts
+@@ -235,6 +235,7 @@ export interface MarkdownStyleInternal {
+ }
+ export interface LinkPressEvent {
+ url: string;
++ sourceType: string;
+ }
+ export interface LinkLongPressEvent {
+ url: string;
+diff --git a/node_modules/react-native-enriched-markdown/lib/typescript/src/EnrichedMarkdownTextNativeComponent.d.ts.map b/node_modules/react-native-enriched-markdown/lib/typescript/src/EnrichedMarkdownTextNativeComponent.d.ts.map
+index b4a4797..29bab7c 100644
+--- a/node_modules/react-native-enriched-markdown/lib/typescript/src/EnrichedMarkdownTextNativeComponent.d.ts.map
++++ b/node_modules/react-native-enriched-markdown/lib/typescript/src/EnrichedMarkdownTextNativeComponent.d.ts.map
+@@ -1 +1 @@
+-{"version":3,"file":"EnrichedMarkdownTextNativeComponent.d.ts","sourceRoot":"","sources":["../../../src/EnrichedMarkdownTextNativeComponent.ts"],"names":[],"mappings":"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"}
+\ No newline at end of file
++{"version":3,"file":"EnrichedMarkdownTextNativeComponent.d.ts","sourceRoot":"","sources":["../../../src/EnrichedMarkdownTextNativeComponent.ts"],"names":[],"mappings":"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"}
+\ No newline at end of file
diff --git a/node_modules/react-native-enriched-markdown/lib/typescript/src/index.d.ts b/node_modules/react-native-enriched-markdown/lib/typescript/src/index.d.ts
index 60563bf..299e908 100644
--- a/node_modules/react-native-enriched-markdown/lib/typescript/src/index.d.ts
@@ -407,6 +1494,15 @@ index 60563bf..299e908 100644
export type { LinkVariantStyle, LinkPillStyle } from './types/MarkdownStyle';
export type { LinkPillContent } from './types/MarkdownTextProps';
export type { LinkContextMenuItem, LinkRecognition, } from './types/MarkdownTextProps';
+diff --git a/node_modules/react-native-enriched-markdown/lib/typescript/src/index.d.ts.map b/node_modules/react-native-enriched-markdown/lib/typescript/src/index.d.ts.map
+index aaeab3f..6c2cbe8 100644
+--- a/node_modules/react-native-enriched-markdown/lib/typescript/src/index.d.ts.map
++++ b/node_modules/react-native-enriched-markdown/lib/typescript/src/index.d.ts.map
+@@ -1 +1 @@
+-{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC7E,YAAY,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,YAAY,EACV,mBAAmB,EACnB,eAAe,GAChB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAChF,YAAY,EACV,yBAAyB,EACzB,eAAe,EACf,aAAa,EACb,SAAS,EACT,eAAe,IAAI,mBAAmB,EACtC,mBAAmB,IAAI,uBAAuB,EAC9C,yBAAyB,IAAI,6BAA6B,GAC3D,MAAM,+BAA+B,CAAC;AACvC,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,sBAAsB,EACtB,cAAc,EACd,eAAe,EACf,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,4BAA4B,EAC5B,0BAA0B,GAC3B,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,YAAY,EACV,8BAA8B,EAC9B,iCAAiC,EACjC,sBAAsB,EACtB,UAAU,EACV,eAAe,EACf,wBAAwB,EACxB,gBAAgB,EAChB,uBAAuB,EACvB,eAAe,EACf,cAAc,EACd,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,SAAS,EACT,YAAY,EACZ,YAAY,GACb,MAAM,6BAA6B,CAAC"}
+\ No newline at end of file
++{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,YAAY,EACV,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,2BAA2B,CAAC;AACnC,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC7E,YAAY,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,YAAY,EACV,mBAAmB,EACnB,eAAe,GAChB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAChF,YAAY,EACV,yBAAyB,EACzB,eAAe,EACf,aAAa,EACb,SAAS,EACT,eAAe,IAAI,mBAAmB,EACtC,mBAAmB,IAAI,uBAAuB,EAC9C,yBAAyB,IAAI,6BAA6B,GAC3D,MAAM,+BAA+B,CAAC;AACvC,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,sBAAsB,EACtB,cAAc,EACd,eAAe,EACf,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,4BAA4B,EAC5B,0BAA0B,GAC3B,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,YAAY,EACV,8BAA8B,EAC9B,iCAAiC,EACjC,sBAAsB,EACtB,UAAU,EACV,eAAe,EACf,wBAAwB,EACxB,gBAAgB,EAChB,uBAAuB,EACvB,eAAe,EACf,cAAc,EACd,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,SAAS,EACT,YAAY,EACZ,YAAY,GACb,MAAM,6BAA6B,CAAC"}
+\ No newline at end of file
diff --git a/node_modules/react-native-enriched-markdown/lib/typescript/src/index.web.d.ts b/node_modules/react-native-enriched-markdown/lib/typescript/src/index.web.d.ts
index 17def30..eae0a3a 100644
--- a/node_modules/react-native-enriched-markdown/lib/typescript/src/index.web.d.ts
@@ -416,6 +1512,15 @@ index 17def30..eae0a3a 100644
export { EnrichedMarkdownText, default } from './web/EnrichedMarkdownText';
export type { EnrichedMarkdownTextProps } from './types/MarkdownTextProps.web';
export type { MarkdownStyle, Md4cFlags } from './types/MarkdownStyle';
+diff --git a/node_modules/react-native-enriched-markdown/lib/typescript/src/index.web.d.ts.map b/node_modules/react-native-enriched-markdown/lib/typescript/src/index.web.d.ts.map
+index ad425ad..c3403c8 100644
+--- a/node_modules/react-native-enriched-markdown/lib/typescript/src/index.web.d.ts.map
++++ b/node_modules/react-native-enriched-markdown/lib/typescript/src/index.web.d.ts.map
+@@ -1 +1 @@
+-{"version":3,"file":"index.web.d.ts","sourceRoot":"","sources":["../../../src/index.web.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAC3E,YAAY,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC/E,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACtE,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,sBAAsB,EACtB,cAAc,EACd,eAAe,EACf,mBAAmB,GACpB,MAAM,gBAAgB,CAAC"}
+\ No newline at end of file
++{"version":3,"file":"index.web.d.ts","sourceRoot":"","sources":["../../../src/index.web.tsx"],"names":[],"mappings":"AAAA,YAAY,EACV,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAC3E,YAAY,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC/E,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACtE,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,sBAAsB,EACtB,cAAc,EACd,eAAe,EACf,mBAAmB,GACpB,MAAM,gBAAgB,CAAC"}
+\ No newline at end of file
diff --git a/node_modules/react-native-enriched-markdown/lib/typescript/src/native/EnrichedMarkdownText.d.ts b/node_modules/react-native-enriched-markdown/lib/typescript/src/native/EnrichedMarkdownText.d.ts
index 3835048..1fcf936 100644
--- a/node_modules/react-native-enriched-markdown/lib/typescript/src/native/EnrichedMarkdownText.d.ts
@@ -429,6 +1534,15 @@ index 3835048..1fcf936 100644
export default EnrichedMarkdownText;
//# sourceMappingURL=EnrichedMarkdownText.d.ts.map
\ No newline at end of file
+diff --git a/node_modules/react-native-enriched-markdown/lib/typescript/src/native/EnrichedMarkdownText.d.ts.map b/node_modules/react-native-enriched-markdown/lib/typescript/src/native/EnrichedMarkdownText.d.ts.map
+index 343249e..5ee0474 100644
+--- a/node_modules/react-native-enriched-markdown/lib/typescript/src/native/EnrichedMarkdownText.d.ts.map
++++ b/node_modules/react-native-enriched-markdown/lib/typescript/src/native/EnrichedMarkdownText.d.ts.map
+@@ -1 +1 @@
+-{"version":3,"file":"EnrichedMarkdownText.d.ts","sourceRoot":"","sources":["../../../../src/native/EnrichedMarkdownText.tsx"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,KAAK,EACV,yBAAyB,EACzB,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,yBAAyB,EAC1B,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,sBAAsB,EACtB,cAAc,EACd,eAAe,EACf,mBAAmB,EAGpB,MAAM,iBAAiB,CAAC;AAEzB,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC;AACzC,YAAY,EACV,yBAAyB,EACzB,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,yBAAyB,GAC1B,CAAC;AACF,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,sBAAsB,EACtB,cAAc,EACd,eAAe,EACf,mBAAmB,GACpB,CAAC;AA0EF,eAAO,MAAM,oBAAoB,GAAI,moBAsClC,yBAAyB,4CAgS3B,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
+\ No newline at end of file
++{"version":3,"file":"EnrichedMarkdownText.d.ts","sourceRoot":"","sources":["../../../../src/native/EnrichedMarkdownText.tsx"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,KAAK,EACV,yBAAyB,EACzB,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,yBAAyB,EAC1B,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,sBAAsB,EACtB,cAAc,EACd,eAAe,EACf,mBAAmB,EAGpB,MAAM,iBAAiB,CAAC;AAEzB,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC;AACzC,YAAY,EACV,yBAAyB,EACzB,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,yBAAyB,GAC1B,CAAC;AACF,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,sBAAsB,EACtB,cAAc,EACd,eAAe,EACf,mBAAmB,GACpB,CAAC;AA0EF,eAAO,MAAM,oBAAoB,GAAI,0pBAuClC,yBAAyB,4CAmS3B,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
+\ No newline at end of file
diff --git a/node_modules/react-native-enriched-markdown/lib/typescript/src/types/MarkdownTextProps.d.ts b/node_modules/react-native-enriched-markdown/lib/typescript/src/types/MarkdownTextProps.d.ts
index afc9af3..f2bae28 100644
--- a/node_modules/react-native-enriched-markdown/lib/typescript/src/types/MarkdownTextProps.d.ts
@@ -447,6 +1561,15 @@ index afc9af3..f2bae28 100644
/**
* Style configuration for markdown elements.
* @platform ios, android, web
+diff --git a/node_modules/react-native-enriched-markdown/lib/typescript/src/types/MarkdownTextProps.d.ts.map b/node_modules/react-native-enriched-markdown/lib/typescript/src/types/MarkdownTextProps.d.ts.map
+index fb1e2eb..e80d931 100644
+--- a/node_modules/react-native-enriched-markdown/lib/typescript/src/types/MarkdownTextProps.d.ts.map
++++ b/node_modules/react-native-enriched-markdown/lib/typescript/src/types/MarkdownTextProps.d.ts.map
+@@ -1 +1 @@
+-{"version":3,"file":"MarkdownTextProps.d.ts","sourceRoot":"","sources":["../../../../src/types/MarkdownTextProps.ts"],"names":[],"mappings":"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"}
+\ No newline at end of file
++{"version":3,"file":"MarkdownTextProps.d.ts","sourceRoot":"","sources":["../../../../src/types/MarkdownTextProps.ts"],"names":[],"mappings":"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"}
+\ No newline at end of file
diff --git a/node_modules/react-native-enriched-markdown/lib/typescript/src/types/MarkdownTextProps.web.d.ts b/node_modules/react-native-enriched-markdown/lib/typescript/src/types/MarkdownTextProps.web.d.ts
index 19b0d0d..7537e44 100644
--- a/node_modules/react-native-enriched-markdown/lib/typescript/src/types/MarkdownTextProps.web.d.ts
@@ -465,17 +1588,83 @@ index 19b0d0d..7537e44 100644
/**
* Style configuration for markdown elements.
* @platform ios, android, web
+diff --git a/node_modules/react-native-enriched-markdown/lib/typescript/src/types/MarkdownTextProps.web.d.ts.map b/node_modules/react-native-enriched-markdown/lib/typescript/src/types/MarkdownTextProps.web.d.ts.map
+index df50221..5b15656 100644
+--- a/node_modules/react-native-enriched-markdown/lib/typescript/src/types/MarkdownTextProps.web.d.ts.map
++++ b/node_modules/react-native-enriched-markdown/lib/typescript/src/types/MarkdownTextProps.web.d.ts.map
+@@ -1 +1 @@
+-{"version":3,"file":"MarkdownTextProps.web.d.ts","sourceRoot":"","sources":["../../../../src/types/MarkdownTextProps.web.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,sBAAsB,EACtB,mBAAmB,EACpB,MAAM,UAAU,CAAC;AAElB,MAAM,WAAW,yBAA0B,SAAQ,IAAI,CACrD,cAAc,CAAC,cAAc,CAAC,EAC9B,OAAO,GAAG,KAAK,CAChB;IACC;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B;;;OAGG;IACH,cAAc,CAAC,EAAE,aAAa,CAAC;IAC/B;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;;;OAIG;IACH,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IAC9C;;;;;;;;OAQG;IACH,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACtD;;;;;;;;;;OAUG;IACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IAChD;;;;;;;;;OASG;IACH,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,IAAI,CAAC;IAC9D;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACxD;;;;;;;;;;;;;;;;;OAiBG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;;OAMG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;;OAKG;IACH,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;CAC9B"}
+\ No newline at end of file
++{"version":3,"file":"MarkdownTextProps.web.d.ts","sourceRoot":"","sources":["../../../../src/types/MarkdownTextProps.web.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,sBAAsB,EACtB,mBAAmB,EACpB,MAAM,UAAU,CAAC;AAElB,MAAM,WAAW,yBAA0B,SAAQ,IAAI,CACrD,cAAc,CAAC,cAAc,CAAC,EAC9B,OAAO,GAAG,KAAK,CAChB;IACC;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,gEAAgE;IAChE,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B;;;OAGG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B;;;OAGG;IACH,cAAc,CAAC,EAAE,aAAa,CAAC;IAC/B;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;;;OAIG;IACH,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IAC9C;;;;;;;;OAQG;IACH,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACtD;;;;;;;;;;OAUG;IACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IAChD;;;;;;;;;OASG;IACH,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,IAAI,CAAC;IAC9D;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACxD;;;;;;;;;;;;;;;;;OAiBG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;;OAMG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;;OAKG;IACH,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;CAC9B"}
+\ No newline at end of file
+diff --git a/node_modules/react-native-enriched-markdown/lib/typescript/src/types/events.d.ts b/node_modules/react-native-enriched-markdown/lib/typescript/src/types/events.d.ts
+index 135693c..56b5327 100644
+--- a/node_modules/react-native-enriched-markdown/lib/typescript/src/types/events.d.ts
++++ b/node_modules/react-native-enriched-markdown/lib/typescript/src/types/events.d.ts
+@@ -1,5 +1,7 @@
+ export interface LinkPressEvent {
+ url: string;
++ /** Syntax of the tapped occurrence, independent of other links with the same URL. */
++ sourceType?: 'markdown' | 'text' | 'inline-code';
+ }
+ export interface LinkLongPressEvent {
+ url: string;
+diff --git a/node_modules/react-native-enriched-markdown/lib/typescript/src/types/events.d.ts.map b/node_modules/react-native-enriched-markdown/lib/typescript/src/types/events.d.ts.map
+index b09b7ee..f3268e5 100644
+--- a/node_modules/react-native-enriched-markdown/lib/typescript/src/types/events.d.ts.map
++++ b/node_modules/react-native-enriched-markdown/lib/typescript/src/types/events.d.ts.map
+@@ -1 +1 @@
+-{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../../src/types/events.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,eAAe;IAC9B,wEAAwE;IACxE,MAAM,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,wEAAwE;AACxE,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,4DAA4D;AAC5D,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC,CAAC;CAC3D;AAED,kGAAkG;AAClG,MAAM,WAAW,+BAA+B;IAC9C,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB"}
+\ No newline at end of file
++{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../../src/types/events.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,qFAAqF;IACrF,UAAU,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,aAAa,CAAC;CAClD;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,eAAe;IAC9B,wEAAwE;IACxE,MAAM,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,wEAAwE;AACxE,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,4DAA4D;AAC5D,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC,CAAC;CAC3D;AAED,kGAAkG;AAClG,MAAM,WAAW,+BAA+B;IAC9C,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB"}
+\ No newline at end of file
diff --git a/node_modules/react-native-enriched-markdown/lib/typescript/src/web/EnrichedMarkdownText.d.ts b/node_modules/react-native-enriched-markdown/lib/typescript/src/web/EnrichedMarkdownText.d.ts
-index 08317a3..d6c4211 100644
+index 08317a3..d48d3c0 100644
--- a/node_modules/react-native-enriched-markdown/lib/typescript/src/web/EnrichedMarkdownText.d.ts
+++ b/node_modules/react-native-enriched-markdown/lib/typescript/src/web/EnrichedMarkdownText.d.ts
@@ -1,4 +1,4 @@
import type { EnrichedMarkdownTextProps } from '../types/MarkdownTextProps.web';
-export declare const EnrichedMarkdownText: ({ markdown, markdownStyle, md4cFlags, linkRecognition, onLinkPress, onLinkLongPress, onImagePress, onTaskListItemPress, onCodeBlockPress, enableTaskListItemToggle, allowTrailingMargin, containerStyle, selectable, dir, selectionColor, testID, ...rest }: EnrichedMarkdownTextProps) => import("react/jsx-runtime").JSX.Element | null;
-+export declare const EnrichedMarkdownText: ({ markdown, markdownStyle, md4cFlags, linkRecognition, renderers, onLinkPress, onLinkLongPress, onImagePress, onTaskListItemPress, onCodeBlockPress, enableTaskListItemToggle, allowTrailingMargin, containerStyle, selectable, dir, selectionColor, testID, ...rest }: EnrichedMarkdownTextProps) => import("react/jsx-runtime").JSX.Element | null;
++export declare const EnrichedMarkdownText: ({ markdown, markdownStyle, md4cFlags, linkRecognition, renderers, onLinkPress, onLinkLongPress, onImagePress, onTaskListItemPress, onCodeBlockPress, enableTaskListItemToggle, allowTrailingMargin, containerStyle, selectable, dir, selectionColor, testID, ...rest }: EnrichedMarkdownTextProps) => import("react/jsx-runtime").JSX.Element;
export default EnrichedMarkdownText;
//# sourceMappingURL=EnrichedMarkdownText.d.ts.map
\ No newline at end of file
+diff --git a/node_modules/react-native-enriched-markdown/lib/typescript/src/web/EnrichedMarkdownText.d.ts.map b/node_modules/react-native-enriched-markdown/lib/typescript/src/web/EnrichedMarkdownText.d.ts.map
+index 365eb97..9120fbf 100644
+--- a/node_modules/react-native-enriched-markdown/lib/typescript/src/web/EnrichedMarkdownText.d.ts.map
++++ b/node_modules/react-native-enriched-markdown/lib/typescript/src/web/EnrichedMarkdownText.d.ts.map
+@@ -1 +1 @@
+-{"version":3,"file":"EnrichedMarkdownText.d.ts","sourceRoot":"","sources":["../../../../src/web/EnrichedMarkdownText.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAiBhF,eAAO,MAAM,oBAAoB,GAAI,6PAkBlC,yBAAyB,mDAqL3B,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
+\ No newline at end of file
++{"version":3,"file":"EnrichedMarkdownText.d.ts","sourceRoot":"","sources":["../../../../src/web/EnrichedMarkdownText.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAiBhF,eAAO,MAAM,oBAAoB,GAAI,wQAmBlC,yBAAyB,4CAwL3B,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
+\ No newline at end of file
+diff --git a/node_modules/react-native-enriched-markdown/lib/typescript/src/web/renderers/BlockRenderers.d.ts.map b/node_modules/react-native-enriched-markdown/lib/typescript/src/web/renderers/BlockRenderers.d.ts.map
+index 2a61d73..b304c4e 100644
+--- a/node_modules/react-native-enriched-markdown/lib/typescript/src/web/renderers/BlockRenderers.d.ts.map
++++ b/node_modules/react-native-enriched-markdown/lib/typescript/src/web/renderers/BlockRenderers.d.ts.map
+@@ -1 +1 @@
+-{"version":3,"file":"BlockRenderers.d.ts","sourceRoot":"","sources":["../../../../../src/web/renderers/BlockRenderers.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAiB,WAAW,EAAE,MAAM,UAAU,CAAC;AAqP3D,eAAO,MAAM,cAAc,EAAE,WAW5B,CAAC"}
+\ No newline at end of file
++{"version":3,"file":"BlockRenderers.d.ts","sourceRoot":"","sources":["../../../../../src/web/renderers/BlockRenderers.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAiB,WAAW,EAAE,MAAM,UAAU,CAAC;AA4P3D,eAAO,MAAM,cAAc,EAAE,WAW5B,CAAC"}
+\ No newline at end of file
+diff --git a/node_modules/react-native-enriched-markdown/lib/typescript/src/web/renderers/InlineRenderers.d.ts.map b/node_modules/react-native-enriched-markdown/lib/typescript/src/web/renderers/InlineRenderers.d.ts.map
+index 817ce9d..eb672e3 100644
+--- a/node_modules/react-native-enriched-markdown/lib/typescript/src/web/renderers/InlineRenderers.d.ts.map
++++ b/node_modules/react-native-enriched-markdown/lib/typescript/src/web/renderers/InlineRenderers.d.ts.map
+@@ -1 +1 @@
+-{"version":3,"file":"InlineRenderers.d.ts","sourceRoot":"","sources":["../../../../../src/web/renderers/InlineRenderers.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAiB,WAAW,EAAE,MAAM,UAAU,CAAC;AA8G3D,eAAO,MAAM,eAAe,EAAE,WAc7B,CAAC"}
+\ No newline at end of file
++{"version":3,"file":"InlineRenderers.d.ts","sourceRoot":"","sources":["../../../../../src/web/renderers/InlineRenderers.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAiB,WAAW,EAAE,MAAM,UAAU,CAAC;AAuH3D,eAAO,MAAM,eAAe,EAAE,WAc7B,CAAC"}
+\ No newline at end of file
+diff --git a/node_modules/react-native-enriched-markdown/lib/typescript/src/web/renderers/ListRenderers.d.ts.map b/node_modules/react-native-enriched-markdown/lib/typescript/src/web/renderers/ListRenderers.d.ts.map
+index bdcf7d0..ea540b8 100644
+--- a/node_modules/react-native-enriched-markdown/lib/typescript/src/web/renderers/ListRenderers.d.ts.map
++++ b/node_modules/react-native-enriched-markdown/lib/typescript/src/web/renderers/ListRenderers.d.ts.map
+@@ -1 +1 @@
+-{"version":3,"file":"ListRenderers.d.ts","sourceRoot":"","sources":["../../../../../src/web/renderers/ListRenderers.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAiB,WAAW,EAAqB,MAAM,UAAU,CAAC;AAmH9E,eAAO,MAAM,aAAa,EAAE,WAI3B,CAAC"}
+\ No newline at end of file
++{"version":3,"file":"ListRenderers.d.ts","sourceRoot":"","sources":["../../../../../src/web/renderers/ListRenderers.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAiB,WAAW,EAAqB,MAAM,UAAU,CAAC;AA0H9E,eAAO,MAAM,aAAa,EAAE,WAI3B,CAAC"}
+\ No newline at end of file
diff --git a/node_modules/react-native-enriched-markdown/lib/typescript/src/web/types.d.ts b/node_modules/react-native-enriched-markdown/lib/typescript/src/web/types.d.ts
index c83a25e..c3e28f5 100644
--- a/node_modules/react-native-enriched-markdown/lib/typescript/src/web/types.d.ts
@@ -501,6 +1690,39 @@ index c83a25e..c3e28f5 100644
katex: KaTeXInstance | null;
/** When false, task list checkboxes render read-only and ignore clicks. */
enableTaskListItemToggle: boolean;
+diff --git a/node_modules/react-native-enriched-markdown/lib/typescript/src/web/types.d.ts.map b/node_modules/react-native-enriched-markdown/lib/typescript/src/web/types.d.ts.map
+index a32ca4e..279b944 100644
+--- a/node_modules/react-native-enriched-markdown/lib/typescript/src/web/types.d.ts.map
++++ b/node_modules/react-native-enriched-markdown/lib/typescript/src/web/types.d.ts.map
+@@ -1 +1 @@
+-{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/web/types.ts"],"names":[],"mappings":"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"}
+\ No newline at end of file
++{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/web/types.ts"],"names":[],"mappings":"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"}
+\ No newline at end of file
+diff --git a/node_modules/react-native-enriched-markdown/src/EnrichedMarkdownNativeComponent.ts b/node_modules/react-native-enriched-markdown/src/EnrichedMarkdownNativeComponent.ts
+index 32ff768..8e89249 100644
+--- a/node_modules/react-native-enriched-markdown/src/EnrichedMarkdownNativeComponent.ts
++++ b/node_modules/react-native-enriched-markdown/src/EnrichedMarkdownNativeComponent.ts
+@@ -275,6 +275,7 @@ export interface MarkdownStyleInternal {
+
+ export interface LinkPressEvent {
+ url: string;
++ sourceType: string;
+ }
+
+ export interface LinkLongPressEvent {
+diff --git a/node_modules/react-native-enriched-markdown/src/EnrichedMarkdownTextNativeComponent.ts b/node_modules/react-native-enriched-markdown/src/EnrichedMarkdownTextNativeComponent.ts
+index 6f31ccc..7b08b62 100644
+--- a/node_modules/react-native-enriched-markdown/src/EnrichedMarkdownTextNativeComponent.ts
++++ b/node_modules/react-native-enriched-markdown/src/EnrichedMarkdownTextNativeComponent.ts
+@@ -276,6 +276,7 @@ export interface MarkdownStyleInternal {
+
+ export interface LinkPressEvent {
+ url: string;
++ sourceType: string;
+ }
+
+ export interface LinkLongPressEvent {
diff --git a/node_modules/react-native-enriched-markdown/src/index.tsx b/node_modules/react-native-enriched-markdown/src/index.tsx
index c3f90cd..c57baca 100644
--- a/node_modules/react-native-enriched-markdown/src/index.tsx
@@ -526,7 +1748,7 @@ index 8628b37..de167b7 100644
export type { EnrichedMarkdownTextProps } from './types/MarkdownTextProps.web';
export type { MarkdownStyle, Md4cFlags } from './types/MarkdownStyle';
diff --git a/node_modules/react-native-enriched-markdown/src/native/EnrichedMarkdownText.tsx b/node_modules/react-native-enriched-markdown/src/native/EnrichedMarkdownText.tsx
-index ca7157e..1ddd2e1 100644
+index ca7157e..40581c1 100644
--- a/node_modules/react-native-enriched-markdown/src/native/EnrichedMarkdownText.tsx
+++ b/node_modules/react-native-enriched-markdown/src/native/EnrichedMarkdownText.tsx
@@ -170,6 +170,7 @@ export const EnrichedMarkdownText = ({
@@ -537,6 +1759,22 @@ index ca7157e..1ddd2e1 100644
...rest
}: EnrichedMarkdownTextProps) => {
// An equal config keeps the previous object, so an inline literal does not
+@@ -297,9 +298,12 @@ export const EnrichedMarkdownText = ({
+ );
+
+ const handleLinkPress = useCallback(
+- (e: NativeSyntheticEvent) => {
+- const { url } = e.nativeEvent;
+- onLinkPress?.({ url });
++ (e: NativeSyntheticEvent<{ url: string; sourceType: string }>) => {
++ const { url, sourceType } = e.nativeEvent;
++ onLinkPress?.({
++ url,
++ sourceType: sourceType as LinkPressEvent['sourceType'],
++ });
+ },
+ [onLinkPress]
+ );
diff --git a/node_modules/react-native-enriched-markdown/src/types/MarkdownTextProps.web.ts b/node_modules/react-native-enriched-markdown/src/types/MarkdownTextProps.web.ts
index cac90b4..c308537 100644
--- a/node_modules/react-native-enriched-markdown/src/types/MarkdownTextProps.web.ts
@@ -555,6 +1793,18 @@ index cac90b4..c308537 100644
/**
* Style configuration for markdown elements.
* @platform ios, android, web
+diff --git a/node_modules/react-native-enriched-markdown/src/types/events.ts b/node_modules/react-native-enriched-markdown/src/types/events.ts
+index 9df94ed..c726533 100644
+--- a/node_modules/react-native-enriched-markdown/src/types/events.ts
++++ b/node_modules/react-native-enriched-markdown/src/types/events.ts
+@@ -1,5 +1,7 @@
+ export interface LinkPressEvent {
+ url: string;
++ /** Syntax of the tapped occurrence, independent of other links with the same URL. */
++ sourceType?: 'markdown' | 'text' | 'inline-code';
+ }
+
+ export interface LinkLongPressEvent {
diff --git a/node_modules/react-native-enriched-markdown/src/web/EnrichedMarkdownText.tsx b/node_modules/react-native-enriched-markdown/src/web/EnrichedMarkdownText.tsx
index 08dc7df..0bab2bb 100644
--- a/node_modules/react-native-enriched-markdown/src/web/EnrichedMarkdownText.tsx
@@ -635,10 +1885,27 @@ index 08dc7df..0bab2bb 100644
style={wrapperStyle}
dir={dir}
diff --git a/node_modules/react-native-enriched-markdown/src/web/renderers/InlineRenderers.tsx b/node_modules/react-native-enriched-markdown/src/web/renderers/InlineRenderers.tsx
-index 091eb19..e589506 100644
+index 091eb19..15a1642 100644
--- a/node_modules/react-native-enriched-markdown/src/web/renderers/InlineRenderers.tsx
+++ b/node_modules/react-native-enriched-markdown/src/web/renderers/InlineRenderers.tsx
-@@ -81,6 +81,7 @@ function LinkRenderer({
+@@ -67,7 +67,15 @@ function LinkRenderer({
+ const handleClick = (event: MouseEvent) => {
+ if (callbacks.onLinkPress) {
+ event.preventDefault();
+- callbacks.onLinkPress({ url });
++ callbacks.onLinkPress({
++ url,
++ sourceType:
++ node.attributes?.recognizedLink === 'true'
++ ? node.children?.some((child) => child.type === 'Code')
++ ? 'inline-code'
++ : 'text'
++ : 'markdown',
++ });
+ }
+ };
+
+@@ -81,6 +89,7 @@ function LinkRenderer({
return (