From 37a9453917834b7fedbd640af8312e90133413d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Greg=20Berg=C3=A9?= Date: Wed, 13 May 2026 06:49:14 +0200 Subject: [PATCH] Allow to copy in embed (#4251) --- .changeset/sharp-cities-care.md | 5 +++++ packages/embed/src/client/createGitBookFrame.ts | 10 ++++++++++ packages/embed/src/react/GitBookFrame.tsx | 1 + packages/embed/src/standalone/index.ts | 1 + 4 files changed, 17 insertions(+) create mode 100644 .changeset/sharp-cities-care.md diff --git a/.changeset/sharp-cities-care.md b/.changeset/sharp-cities-care.md new file mode 100644 index 000000000..c76147c9b --- /dev/null +++ b/.changeset/sharp-cities-care.md @@ -0,0 +1,5 @@ +--- +"@gitbook/embed": patch +--- + +Allow copying in embed diff --git a/packages/embed/src/client/createGitBookFrame.ts b/packages/embed/src/client/createGitBookFrame.ts index bdeb12392..fe4fa4c90 100644 --- a/packages/embed/src/client/createGitBookFrame.ts +++ b/packages/embed/src/client/createGitBookFrame.ts @@ -44,6 +44,16 @@ export function createGitBookFrame(iframe: HTMLIFrameElement): GitBookFrameClien if (!iframe.contentWindow) { throw new Error('Iframe must have a content window'); } + + const allowTokens = iframe.allow + .split(';') + .map((token) => token.trim()) + .filter(Boolean); + + if (!allowTokens.includes('clipboard-write')) { + iframe.allow = [...allowTokens, 'clipboard-write'].join('; '); + } + const channel = createChannel(iframe.contentWindow); channel.receive((message: FrameToParentMessage) => { diff --git a/packages/embed/src/react/GitBookFrame.tsx b/packages/embed/src/react/GitBookFrame.tsx index c1e934e1c..e0fe7dcc0 100644 --- a/packages/embed/src/react/GitBookFrame.tsx +++ b/packages/embed/src/react/GitBookFrame.tsx @@ -76,6 +76,7 @@ export function GitBookFrame(props: GitBookFrameProps) { src={frameURL} width="100%" height="100%" + allow="clipboard-write" className={className} style={colorScheme ? { colorScheme } : undefined} /> diff --git a/packages/embed/src/standalone/index.ts b/packages/embed/src/standalone/index.ts index 9319ff539..90faeb8fc 100644 --- a/packages/embed/src/standalone/index.ts +++ b/packages/embed/src/standalone/index.ts @@ -101,6 +101,7 @@ function getIframe() { widgetIframe?.remove(); widgetIframe = document.createElement('iframe'); widgetIframe.id = 'gitbook-widget-iframe'; + widgetIframe.allow = 'clipboard-write'; if (frameOptions?.colorScheme) { widgetIframe.style.colorScheme = frameOptions.colorScheme; }