From 53e5d1d7102a26aa95e706f47753b2db575c4e8e Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Fri, 1 Aug 2025 15:47:05 +0200 Subject: [PATCH] Introduce a __STORYBOOK_UNSAFE_TOCBOT__ option from addon docs --- code/addons/docs/src/preview.ts | 7 +++++++ code/addons/docs/src/typings.d.ts | 1 + 2 files changed, 8 insertions(+) diff --git a/code/addons/docs/src/preview.ts b/code/addons/docs/src/preview.ts index 713352b025ea..4a5a57123b12 100644 --- a/code/addons/docs/src/preview.ts +++ b/code/addons/docs/src/preview.ts @@ -1,5 +1,12 @@ import type { PreparedStory } from 'storybook/internal/types'; +import * as tocbot from 'tocbot'; + +if (!globalThis.__STORYBOOK_UNSAFE_TOCBOT__) { + // Users that load dynamic content need to have a way to refresh the TOC, so we expose the tocbot instance + globalThis.__STORYBOOK_UNSAFE_TOCBOT__ = tocbot.default ?? tocbot; +} + const excludeTags = Object.entries(globalThis.TAGS_OPTIONS ?? {}).reduce( (acc, entry) => { const [tag, option] = entry; diff --git a/code/addons/docs/src/typings.d.ts b/code/addons/docs/src/typings.d.ts index 468759c8ba22..2deb8921d2ad 100644 --- a/code/addons/docs/src/typings.d.ts +++ b/code/addons/docs/src/typings.d.ts @@ -7,6 +7,7 @@ declare var __DOCS_CONTEXT__: any; declare var PREVIEW_URL: any; declare var LOGLEVEL: 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'silent' | undefined; declare var TAGS_OPTIONS: import('storybook/internal/types').TagsOptions; +declare var __STORYBOOK_UNSAFE_TOCBOT__: typeof import('tocbot').default; declare module '*.md'; declare module '*.md?raw';