@mui/internal-docs-infra 0.1.1-alpha.1 → 0.1.1-alpha.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (288) hide show
  1. package/CodeControllerContext/CodeControllerContext.d.ts +1 -1
  2. package/CodeControllerContext/CodeControllerContext.d.ts.map +1 -1
  3. package/CodeControllerContext/index.d.ts.map +1 -1
  4. package/CodeExternalsContext/CodeExternalsContext.d.ts +8 -0
  5. package/CodeExternalsContext/CodeExternalsContext.d.ts.map +1 -0
  6. package/CodeExternalsContext/CodeExternalsContext.js +7 -0
  7. package/CodeExternalsContext/index.d.ts +1 -0
  8. package/CodeExternalsContext/index.d.ts.map +1 -0
  9. package/CodeExternalsContext/index.js +1 -0
  10. package/CodeHighlighter/CodeHighlighter.d.ts +1 -1
  11. package/CodeHighlighter/CodeHighlighter.d.ts.map +1 -1
  12. package/CodeHighlighter/CodeHighlighter.js +235 -86
  13. package/CodeHighlighter/CodeHighlighterClient.d.ts.map +1 -1
  14. package/CodeHighlighter/CodeHighlighterClient.js +500 -62
  15. package/CodeHighlighter/CodeHighlighterContext.d.ts +2 -0
  16. package/CodeHighlighter/CodeHighlighterContext.d.ts.map +1 -1
  17. package/CodeHighlighter/CodeHighlighterFallbackContext.d.ts.map +1 -1
  18. package/CodeHighlighter/CodeHighlighterFallbackContext.js +3 -1
  19. package/CodeHighlighter/applyTransform.d.ts.map +1 -1
  20. package/CodeHighlighter/codeToFallbackProps.d.ts +2 -2
  21. package/CodeHighlighter/codeToFallbackProps.d.ts.map +1 -1
  22. package/CodeHighlighter/codeToFallbackProps.js +8 -5
  23. package/CodeHighlighter/errors.d.ts.map +1 -1
  24. package/CodeHighlighter/hasAllVariants.d.ts.map +1 -1
  25. package/CodeHighlighter/index.d.ts.map +1 -1
  26. package/CodeHighlighter/loadFallbackCode.d.ts +3 -2
  27. package/CodeHighlighter/loadFallbackCode.d.ts.map +1 -1
  28. package/CodeHighlighter/loadFallbackCode.js +325 -161
  29. package/CodeHighlighter/loadVariant.d.ts +3 -2
  30. package/CodeHighlighter/loadVariant.d.ts.map +1 -1
  31. package/CodeHighlighter/loadVariant.js +604 -229
  32. package/CodeHighlighter/maybeInitialData.d.ts +1 -1
  33. package/CodeHighlighter/maybeInitialData.d.ts.map +1 -1
  34. package/CodeHighlighter/parseCode.d.ts.map +1 -1
  35. package/CodeHighlighter/parseCode.js +14 -2
  36. package/CodeHighlighter/parseControlledCode.d.ts.map +1 -1
  37. package/CodeHighlighter/parseControlledCode.js +12 -1
  38. package/CodeHighlighter/transformCode.d.ts +1 -0
  39. package/CodeHighlighter/transformCode.d.ts.map +1 -1
  40. package/CodeHighlighter/transformCode.js +43 -3
  41. package/CodeHighlighter/transformParsedSource.d.ts.map +1 -1
  42. package/CodeHighlighter/transformSource.d.ts.map +1 -1
  43. package/CodeHighlighter/types.d.ts +39 -17
  44. package/CodeHighlighter/types.d.ts.map +1 -1
  45. package/CodeProvider/CodeContext.d.ts.map +1 -1
  46. package/CodeProvider/CodeProvider.d.ts.map +1 -1
  47. package/CodeProvider/CodeProvider.js +21 -6
  48. package/CodeProvider/index.d.ts +1 -2
  49. package/CodeProvider/index.d.ts.map +1 -1
  50. package/CodeProvider/index.js +1 -2
  51. package/abstractCreateDemo/abstractCreateDemo.d.ts +35 -0
  52. package/abstractCreateDemo/abstractCreateDemo.d.ts.map +1 -0
  53. package/abstractCreateDemo/abstractCreateDemo.js +91 -0
  54. package/abstractCreateDemo/index.d.ts +1 -0
  55. package/abstractCreateDemo/index.d.ts.map +1 -0
  56. package/abstractCreateDemo/index.js +1 -0
  57. package/createDemoData/createDemoData.d.ts +44 -0
  58. package/createDemoData/createDemoData.d.ts.map +1 -0
  59. package/createDemoData/createDemoData.js +75 -0
  60. package/createDemoData/index.d.ts +1 -0
  61. package/createDemoData/index.d.ts.map +1 -0
  62. package/createDemoData/index.js +1 -0
  63. package/createDemoData/types.d.ts +28 -0
  64. package/createDemoData/types.d.ts.map +1 -0
  65. package/createDemoData/types.js +1 -0
  66. package/package.json +15 -9
  67. package/pipeline/hastUtils/hastUtils.d.ts.map +1 -0
  68. package/{hast/hast.js → pipeline/hastUtils/hastUtils.js} +2 -1
  69. package/pipeline/hastUtils/index.d.ts +1 -0
  70. package/pipeline/hastUtils/index.d.ts.map +1 -0
  71. package/pipeline/hastUtils/index.js +1 -0
  72. package/pipeline/loadPrecomputedCodeHighlighter/emitExternalsProvider.d.ts +54 -0
  73. package/pipeline/loadPrecomputedCodeHighlighter/emitExternalsProvider.d.ts.map +1 -0
  74. package/pipeline/loadPrecomputedCodeHighlighter/emitExternalsProvider.js +465 -0
  75. package/pipeline/loadPrecomputedCodeHighlighter/generateExternalsProvider.d.ts +15 -0
  76. package/pipeline/loadPrecomputedCodeHighlighter/generateExternalsProvider.d.ts.map +1 -0
  77. package/pipeline/loadPrecomputedCodeHighlighter/generateExternalsProvider.js +253 -0
  78. package/pipeline/loadPrecomputedCodeHighlighter/index.d.ts.map +1 -0
  79. package/pipeline/loadPrecomputedCodeHighlighter/loadPrecomputedCodeHighlighter.d.ts +20 -0
  80. package/pipeline/loadPrecomputedCodeHighlighter/loadPrecomputedCodeHighlighter.d.ts.map +1 -0
  81. package/pipeline/loadPrecomputedCodeHighlighter/loadPrecomputedCodeHighlighter.js +228 -0
  82. package/{loadPrecomputedCodeHighlighter → pipeline/loadPrecomputedCodeHighlighter}/parseCreateFactoryCall.d.ts +12 -1
  83. package/pipeline/loadPrecomputedCodeHighlighter/parseCreateFactoryCall.d.ts.map +1 -0
  84. package/pipeline/loadPrecomputedCodeHighlighter/parseCreateFactoryCall.js +433 -0
  85. package/{loadPrecomputedCodeHighlighter → pipeline/loadPrecomputedCodeHighlighter}/parseFunctionParameters.d.ts +5 -1
  86. package/pipeline/loadPrecomputedCodeHighlighter/parseFunctionParameters.d.ts.map +1 -0
  87. package/{loadPrecomputedCodeHighlighter → pipeline/loadPrecomputedCodeHighlighter}/parseFunctionParameters.js +1 -1
  88. package/pipeline/loadPrecomputedCodeHighlighter/replacePrecomputeValue.d.ts +25 -0
  89. package/pipeline/loadPrecomputedCodeHighlighter/replacePrecomputeValue.d.ts.map +1 -0
  90. package/pipeline/loadPrecomputedCodeHighlighter/replacePrecomputeValue.js +73 -0
  91. package/pipeline/loadServerCodeMeta/index.d.ts +1 -0
  92. package/pipeline/loadServerCodeMeta/index.d.ts.map +1 -0
  93. package/pipeline/loadServerCodeMeta/index.js +1 -0
  94. package/{loadServerCodeMeta/serverLoadCodeMeta.d.ts → pipeline/loadServerCodeMeta/loadServerCodeMeta.d.ts} +4 -4
  95. package/pipeline/loadServerCodeMeta/loadServerCodeMeta.d.ts.map +1 -0
  96. package/{loadServerCodeMeta/serverLoadCodeMeta.js → pipeline/loadServerCodeMeta/loadServerCodeMeta.js} +18 -3
  97. package/pipeline/loadServerSource/index.d.ts +1 -0
  98. package/pipeline/loadServerSource/index.d.ts.map +1 -0
  99. package/pipeline/loadServerSource/index.js +1 -0
  100. package/{loadServerSource/serverLoadSource.d.ts → pipeline/loadServerSource/loadServerSource.d.ts} +5 -5
  101. package/pipeline/loadServerSource/loadServerSource.d.ts.map +1 -0
  102. package/pipeline/loadServerSource/loadServerSource.js +135 -0
  103. package/pipeline/loaderUtils/externalsToPackages.d.ts +1 -0
  104. package/pipeline/loaderUtils/externalsToPackages.d.ts.map +1 -0
  105. package/pipeline/loaderUtils/externalsToPackages.js +46 -0
  106. package/pipeline/loaderUtils/extractNameAndSlugFromUrl.d.ts +34 -0
  107. package/pipeline/loaderUtils/extractNameAndSlugFromUrl.d.ts.map +1 -0
  108. package/pipeline/loaderUtils/extractNameAndSlugFromUrl.js +161 -0
  109. package/{loaderUtils → pipeline/loaderUtils}/getFileNameFromUrl.d.ts +1 -0
  110. package/pipeline/loaderUtils/getFileNameFromUrl.d.ts.map +1 -0
  111. package/pipeline/loaderUtils/getFileNameFromUrl.js +66 -0
  112. package/pipeline/loaderUtils/index.d.ts +7 -0
  113. package/pipeline/loaderUtils/index.d.ts.map +1 -0
  114. package/pipeline/loaderUtils/index.js +7 -0
  115. package/pipeline/loaderUtils/mergeExternals.d.ts +32 -0
  116. package/pipeline/loaderUtils/mergeExternals.d.ts.map +1 -0
  117. package/pipeline/loaderUtils/mergeExternals.js +72 -0
  118. package/pipeline/loaderUtils/parseImports.d.ts +20 -0
  119. package/pipeline/loaderUtils/parseImports.d.ts.map +1 -0
  120. package/pipeline/loaderUtils/parseImports.js +307 -0
  121. package/{loaderUtils/processImports.d.ts → pipeline/loaderUtils/processRelativeImports.d.ts} +2 -2
  122. package/pipeline/loaderUtils/processRelativeImports.d.ts.map +1 -0
  123. package/pipeline/loaderUtils/processRelativeImports.js +352 -0
  124. package/{loaderUtils → pipeline/loaderUtils}/resolveModulePath.d.ts +19 -6
  125. package/pipeline/loaderUtils/resolveModulePath.d.ts.map +1 -0
  126. package/pipeline/loaderUtils/resolveModulePath.js +1449 -0
  127. package/{loaderUtils → pipeline/loaderUtils}/resolveModulePathWithFs.d.ts +6 -3
  128. package/pipeline/loaderUtils/resolveModulePathWithFs.d.ts.map +1 -0
  129. package/{loaderUtils → pipeline/loaderUtils}/resolveModulePathWithFs.js +8 -4
  130. package/pipeline/loaderUtils/rewriteImports.d.ts +9 -0
  131. package/pipeline/loaderUtils/rewriteImports.d.ts.map +1 -0
  132. package/pipeline/loaderUtils/rewriteImports.js +35 -0
  133. package/pipeline/parseSource/grammars.d.ts.map +1 -0
  134. package/pipeline/parseSource/index.d.ts.map +1 -0
  135. package/pipeline/parseSource/parseSource.d.ts +3 -0
  136. package/pipeline/parseSource/parseSource.d.ts.map +1 -0
  137. package/{parseSource → pipeline/parseSource}/parseSource.js +15 -5
  138. package/pipeline/transformHtmlCode/index.d.ts +2 -0
  139. package/pipeline/transformHtmlCode/index.d.ts.map +1 -0
  140. package/pipeline/transformHtmlCode/index.js +4 -0
  141. package/pipeline/transformHtmlCode/transformHtmlCode.d.ts +13 -0
  142. package/pipeline/transformHtmlCode/transformHtmlCode.d.ts.map +1 -0
  143. package/pipeline/transformHtmlCode/transformHtmlCode.js +303 -0
  144. package/pipeline/transformMarkdownCode/index.d.ts +2 -0
  145. package/pipeline/transformMarkdownCode/index.d.ts.map +1 -0
  146. package/pipeline/transformMarkdownCode/index.js +4 -0
  147. package/pipeline/transformMarkdownCode/transformMarkdownCode.d.ts +2 -0
  148. package/pipeline/transformMarkdownCode/transformMarkdownCode.d.ts.map +1 -0
  149. package/pipeline/transformMarkdownCode/transformMarkdownCode.js +514 -0
  150. package/pipeline/transformTypescriptToJavascript/index.d.ts +1 -0
  151. package/pipeline/transformTypescriptToJavascript/index.d.ts.map +1 -0
  152. package/pipeline/transformTypescriptToJavascript/index.js +1 -0
  153. package/pipeline/transformTypescriptToJavascript/removeTypes.d.ts.map +1 -0
  154. package/pipeline/transformTypescriptToJavascript/transformTypescriptToJavascript.d.ts +3 -0
  155. package/pipeline/transformTypescriptToJavascript/transformTypescriptToJavascript.d.ts.map +1 -0
  156. package/{transformTsToJs/transformTsToJs.js → pipeline/transformTypescriptToJavascript/transformTypescriptToJavascript.js} +4 -4
  157. package/useCode/index.d.ts.map +1 -1
  158. package/useCode/useCode.d.ts +14 -11
  159. package/useCode/useCode.d.ts.map +1 -1
  160. package/useCode/useCode.js +94 -364
  161. package/useCode/useCodeUtils.d.ts +45 -0
  162. package/useCode/useCodeUtils.d.ts.map +1 -0
  163. package/useCode/useCodeUtils.js +240 -0
  164. package/useCode/useCopyFunctionality.d.ts +17 -0
  165. package/useCode/useCopyFunctionality.d.ts.map +1 -0
  166. package/useCode/useCopyFunctionality.js +28 -0
  167. package/useCode/useFileNavigation.d.ts +49 -0
  168. package/useCode/useFileNavigation.d.ts.map +1 -0
  169. package/useCode/useFileNavigation.js +398 -0
  170. package/useCode/useSourceEditing.d.ts +19 -0
  171. package/useCode/useSourceEditing.d.ts.map +1 -0
  172. package/useCode/useSourceEditing.js +32 -0
  173. package/useCode/useTransformManagement.d.ts +28 -0
  174. package/useCode/useTransformManagement.d.ts.map +1 -0
  175. package/useCode/useTransformManagement.js +82 -0
  176. package/useCode/useUIState.d.ts +16 -0
  177. package/useCode/useUIState.d.ts.map +1 -0
  178. package/useCode/useUIState.js +21 -0
  179. package/useCode/useVariantSelection.d.ts +21 -0
  180. package/useCode/useVariantSelection.d.ts.map +1 -0
  181. package/useCode/useVariantSelection.js +84 -0
  182. package/useCopier/index.d.ts +1 -1
  183. package/useCopier/index.d.ts.map +1 -1
  184. package/useCopier/index.js +5 -5
  185. package/useDemo/createCodeSandbox.d.ts +18 -0
  186. package/useDemo/createCodeSandbox.d.ts.map +1 -0
  187. package/useDemo/createCodeSandbox.js +48 -0
  188. package/useDemo/createStackBlitz.d.ts +22 -0
  189. package/useDemo/createStackBlitz.d.ts.map +1 -0
  190. package/useDemo/createStackBlitz.js +38 -0
  191. package/useDemo/examineVariant.d.ts +25 -0
  192. package/useDemo/examineVariant.d.ts.map +1 -0
  193. package/useDemo/examineVariant.js +134 -0
  194. package/useDemo/exportVariant.d.ts +110 -0
  195. package/useDemo/exportVariant.d.ts.map +1 -0
  196. package/useDemo/exportVariant.js +320 -0
  197. package/useDemo/exportVariantAsCra.d.ts +15 -0
  198. package/useDemo/exportVariantAsCra.d.ts.map +1 -0
  199. package/useDemo/exportVariantAsCra.js +56 -0
  200. package/useDemo/flattenVariant.d.ts +17 -0
  201. package/useDemo/flattenVariant.d.ts.map +1 -0
  202. package/useDemo/flattenVariant.js +206 -0
  203. package/useDemo/index.d.ts +6 -39
  204. package/useDemo/index.d.ts.map +1 -1
  205. package/useDemo/index.js +6 -17
  206. package/useDemo/useDemo.d.ts +79 -0
  207. package/useDemo/useDemo.d.ts.map +1 -0
  208. package/useDemo/useDemo.js +174 -0
  209. package/useLocalStorageState/index.d.ts +2 -0
  210. package/useLocalStorageState/index.d.ts.map +1 -0
  211. package/useLocalStorageState/index.js +2 -0
  212. package/useLocalStorageState/useLocalStorageState.d.ts +14 -0
  213. package/useLocalStorageState/useLocalStorageState.d.ts.map +1 -0
  214. package/useLocalStorageState/useLocalStorageState.js +128 -0
  215. package/useOnHydrate/index.d.ts.map +1 -1
  216. package/useOnHydrate/useOnHydrate.d.ts.map +1 -1
  217. package/useOnIdle/index.d.ts.map +1 -1
  218. package/useOnIdle/useOnIdle.d.ts.map +1 -1
  219. package/useUrlHashState/index.d.ts +1 -0
  220. package/useUrlHashState/index.d.ts.map +1 -0
  221. package/useUrlHashState/index.js +1 -0
  222. package/useUrlHashState/useUrlHashState.d.ts +50 -0
  223. package/useUrlHashState/useUrlHashState.d.ts.map +1 -0
  224. package/useUrlHashState/useUrlHashState.js +113 -0
  225. package/hast/hast.d.ts.map +0 -1
  226. package/hast/index.d.ts +0 -1
  227. package/hast/index.d.ts.map +0 -1
  228. package/hast/index.js +0 -1
  229. package/loadPrecomputedCodeHighlighter/index.d.ts.map +0 -1
  230. package/loadPrecomputedCodeHighlighter/loadPrecomputedCodeHighlighter.d.ts +0 -57
  231. package/loadPrecomputedCodeHighlighter/loadPrecomputedCodeHighlighter.d.ts.map +0 -1
  232. package/loadPrecomputedCodeHighlighter/loadPrecomputedCodeHighlighter.js +0 -194
  233. package/loadPrecomputedCodeHighlighter/parseCreateFactoryCall.d.ts.map +0 -1
  234. package/loadPrecomputedCodeHighlighter/parseCreateFactoryCall.js +0 -243
  235. package/loadPrecomputedCodeHighlighter/parseFunctionParameters.d.ts.map +0 -1
  236. package/loadPrecomputedCodeHighlighter/replacePrecomputeValue.d.ts +0 -27
  237. package/loadPrecomputedCodeHighlighter/replacePrecomputeValue.d.ts.map +0 -1
  238. package/loadPrecomputedCodeHighlighter/replacePrecomputeValue.js +0 -37
  239. package/loadServerCodeMeta/index.d.ts +0 -1
  240. package/loadServerCodeMeta/index.d.ts.map +0 -1
  241. package/loadServerCodeMeta/index.js +0 -1
  242. package/loadServerCodeMeta/serverLoadCodeMeta.d.ts.map +0 -1
  243. package/loadServerSource/index.d.ts +0 -1
  244. package/loadServerSource/index.d.ts.map +0 -1
  245. package/loadServerSource/index.js +0 -1
  246. package/loadServerSource/serverLoadSource.d.ts.map +0 -1
  247. package/loadServerSource/serverLoadSource.js +0 -100
  248. package/loaderUtils/getFileNameFromUrl.d.ts.map +0 -1
  249. package/loaderUtils/getFileNameFromUrl.js +0 -32
  250. package/loaderUtils/index.d.ts +0 -5
  251. package/loaderUtils/index.d.ts.map +0 -1
  252. package/loaderUtils/index.js +0 -5
  253. package/loaderUtils/processImports.d.ts.map +0 -1
  254. package/loaderUtils/processImports.js +0 -82
  255. package/loaderUtils/resolveImports.d.ts +0 -4
  256. package/loaderUtils/resolveImports.d.ts.map +0 -1
  257. package/loaderUtils/resolveImports.js +0 -71
  258. package/loaderUtils/resolveModulePath.d.ts.map +0 -1
  259. package/loaderUtils/resolveModulePath.js +0 -862
  260. package/loaderUtils/resolveModulePathWithFs.d.ts.map +0 -1
  261. package/loaderUtils/rewriteImports.d.ts +0 -9
  262. package/loaderUtils/rewriteImports.d.ts.map +0 -1
  263. package/loaderUtils/rewriteImports.js +0 -57
  264. package/parseSource/grammars.d.ts.map +0 -1
  265. package/parseSource/index.d.ts.map +0 -1
  266. package/parseSource/parseSource.d.ts +0 -3
  267. package/parseSource/parseSource.d.ts.map +0 -1
  268. package/transformRelativeMarkdownPaths/index.d.ts +0 -2
  269. package/transformRelativeMarkdownPaths/index.d.ts.map +0 -1
  270. package/transformRelativeMarkdownPaths/index.js +0 -4
  271. package/transformRelativeMarkdownPaths/transformRelativeMarkdownPaths.d.ts +0 -12
  272. package/transformRelativeMarkdownPaths/transformRelativeMarkdownPaths.d.ts.map +0 -1
  273. package/transformRelativeMarkdownPaths/transformRelativeMarkdownPaths.js +0 -30
  274. package/transformTsToJs/index.d.ts +0 -1
  275. package/transformTsToJs/index.d.ts.map +0 -1
  276. package/transformTsToJs/index.js +0 -1
  277. package/transformTsToJs/removeTypes.d.ts.map +0 -1
  278. package/transformTsToJs/transformTsToJs.d.ts +0 -3
  279. package/transformTsToJs/transformTsToJs.d.ts.map +0 -1
  280. /package/{hast/hast.d.ts → pipeline/hastUtils/hastUtils.d.ts} +0 -0
  281. /package/{loadPrecomputedCodeHighlighter → pipeline/loadPrecomputedCodeHighlighter}/index.d.ts +0 -0
  282. /package/{loadPrecomputedCodeHighlighter → pipeline/loadPrecomputedCodeHighlighter}/index.js +0 -0
  283. /package/{parseSource → pipeline/parseSource}/grammars.d.ts +0 -0
  284. /package/{parseSource → pipeline/parseSource}/grammars.js +0 -0
  285. /package/{parseSource → pipeline/parseSource}/index.d.ts +0 -0
  286. /package/{parseSource → pipeline/parseSource}/index.js +0 -0
  287. /package/{transformTsToJs → pipeline/transformTypescriptToJavascript}/removeTypes.d.ts +0 -0
  288. /package/{transformTsToJs → pipeline/transformTypescriptToJavascript}/removeTypes.js +0 -0
@@ -1,5 +1,6 @@
1
1
  'use client';
2
2
 
3
+ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
3
4
  import _typeof from "@babel/runtime/helpers/esm/typeof";
4
5
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
5
6
  import _createForOfIteratorHelper from "@babel/runtime/helpers/esm/createForOfIteratorHelper";
@@ -18,6 +19,8 @@ import { codeToFallbackProps } from "./codeToFallbackProps.js";
18
19
  import { parseCode } from "./parseCode.js";
19
20
  import { applyTransforms, getAvailableTransforms } from "./transformCode.js";
20
21
  import { parseControlledCode } from "./parseControlledCode.js";
22
+ import { useOnHydrate } from "../useOnHydrate/index.js";
23
+ import { useOnIdle } from "../useOnIdle/index.js";
21
24
  import { jsx as _jsx } from "react/jsx-runtime";
22
25
  var DEBUG = false; // Set to true for debugging purposes
23
26
 
@@ -31,7 +34,9 @@ function useInitialData(_ref) {
31
34
  highlightAt = _ref.highlightAt,
32
35
  fallbackUsesExtraFiles = _ref.fallbackUsesExtraFiles,
33
36
  fallbackUsesAllVariants = _ref.fallbackUsesAllVariants,
34
- isControlled = _ref.isControlled;
37
+ isControlled = _ref.isControlled,
38
+ globalsCode = _ref.globalsCode,
39
+ setProcessedGlobalsCode = _ref.setProcessedGlobalsCode;
35
40
  var _useCodeContext = useCodeContext(),
36
41
  sourceParser = _useCodeContext.sourceParser,
37
42
  loadCodeMeta = _useCodeContext.loadCodeMeta,
@@ -49,6 +54,10 @@ function useInitialData(_ref) {
49
54
  if (initialData || isControlled) {
50
55
  return;
51
56
  }
57
+ if (!url) {
58
+ // TODO: handle error - URL is required for loading fallback data
59
+ return;
60
+ }
52
61
 
53
62
  // TODO: abort controller
54
63
 
@@ -62,7 +71,8 @@ function useInitialData(_ref) {
62
71
  console.log('Loading initial data for CodeHighlighterClient: ', reason);
63
72
  }
64
73
  _context.next = 3;
65
- return loadFallbackCode(url, variantName, code, highlightAt === 'init', fallbackUsesExtraFiles, fallbackUsesAllVariants, sourceParser, loadSource, loadVariantMeta, loadCodeMeta, fileName, variants)["catch"](function (error) {
74
+ return loadFallbackCode(url, variantName, code, highlightAt === 'init', fallbackUsesExtraFiles, fallbackUsesAllVariants, sourceParser, loadSource, loadVariantMeta, loadCodeMeta, fileName, variants, globalsCode // Let loadFallbackCode handle processing
75
+ )["catch"](function (error) {
66
76
  return {
67
77
  error: error
68
78
  };
@@ -73,6 +83,10 @@ function useInitialData(_ref) {
73
83
  // TODO: handle error
74
84
  } else {
75
85
  setCode(loaded.code);
86
+ // Store processed globalsCode from loadFallbackCode result
87
+ if (loaded.processedGlobalsCode) {
88
+ setProcessedGlobalsCode(loaded.processedGlobalsCode);
89
+ }
76
90
  }
77
91
  case 5:
78
92
  case "end":
@@ -80,7 +94,7 @@ function useInitialData(_ref) {
80
94
  }
81
95
  }, _callee);
82
96
  }))();
83
- }, [initialData, reason, isControlled, variantName, code, setCode, highlightAt, url, sourceParser, loadSource, loadVariantMeta, loadCodeMeta, fallbackUsesExtraFiles, fallbackUsesAllVariants, fileName, variants]);
97
+ }, [initialData, reason, isControlled, variantName, code, setCode, highlightAt, url, sourceParser, loadSource, loadVariantMeta, loadCodeMeta, fallbackUsesExtraFiles, fallbackUsesAllVariants, fileName, variants, globalsCode, setProcessedGlobalsCode]);
84
98
  }
85
99
  function useAllVariants(_ref3) {
86
100
  var readyForContent = _ref3.readyForContent,
@@ -88,7 +102,10 @@ function useAllVariants(_ref3) {
88
102
  isControlled = _ref3.isControlled,
89
103
  url = _ref3.url,
90
104
  code = _ref3.code,
91
- setCode = _ref3.setCode;
105
+ setCode = _ref3.setCode,
106
+ processedGlobalsCode = _ref3.processedGlobalsCode,
107
+ globalsCode = _ref3.globalsCode,
108
+ setProcessedGlobalsCode = _ref3.setProcessedGlobalsCode;
92
109
  var _useCodeContext2 = useCodeContext(),
93
110
  loadCodeMeta = _useCodeContext2.loadCodeMeta,
94
111
  loadVariantMeta = _useCodeContext2.loadVariantMeta,
@@ -97,39 +114,100 @@ function useAllVariants(_ref3) {
97
114
  if (readyForContent || isControlled) {
98
115
  return;
99
116
  }
117
+ if (!url) {
118
+ // URL is required for loading variants
119
+ return;
120
+ }
100
121
 
101
122
  // TODO: abort controller
102
123
 
103
- _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
104
- var loadedCode, result, resultCode, errors, _iterator, _step, item;
105
- return _regeneratorRuntime().wrap(function _callee2$(_context2) {
106
- while (1) switch (_context2.prev = _context2.next) {
124
+ _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
125
+ var loadedCode, globalsCodeObjects, result, resultCode, errors, _iterator, _step, item;
126
+ return _regeneratorRuntime().wrap(function _callee3$(_context3) {
127
+ while (1) switch (_context3.prev = _context3.next) {
107
128
  case 0:
108
129
  loadedCode = code;
109
130
  if (loadedCode) {
110
- _context2.next = 7;
131
+ _context3.next = 7;
111
132
  break;
112
133
  }
113
134
  if (loadCodeMeta) {
114
- _context2.next = 4;
135
+ _context3.next = 4;
115
136
  break;
116
137
  }
117
138
  throw new Error('"loadCodeMeta" function is required when no code is provided');
118
139
  case 4:
119
- _context2.next = 6;
140
+ _context3.next = 6;
120
141
  return loadCodeMeta(url);
121
142
  case 6:
122
- loadedCode = _context2.sent;
143
+ loadedCode = _context3.sent;
123
144
  case 7:
124
- _context2.next = 9;
145
+ // Use the already-processed globalsCode from state, or process it if not available
146
+ globalsCodeObjects = [];
147
+ if (!processedGlobalsCode) {
148
+ _context3.next = 12;
149
+ break;
150
+ }
151
+ // Use the already-processed globalsCode from state
152
+ globalsCodeObjects = processedGlobalsCode;
153
+ _context3.next = 17;
154
+ break;
155
+ case 12:
156
+ if (!(globalsCode && globalsCode.length > 0)) {
157
+ _context3.next = 17;
158
+ break;
159
+ }
160
+ _context3.next = 15;
161
+ return Promise.all(globalsCode.map(/*#__PURE__*/function () {
162
+ var _ref5 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(item) {
163
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
164
+ while (1) switch (_context2.prev = _context2.next) {
165
+ case 0:
166
+ if (!(typeof item === 'string')) {
167
+ _context2.next = 4;
168
+ break;
169
+ }
170
+ if (loadCodeMeta) {
171
+ _context2.next = 3;
172
+ break;
173
+ }
174
+ throw new Error('"loadCodeMeta" function is required for string URLs in globalsCode');
175
+ case 3:
176
+ return _context2.abrupt("return", loadCodeMeta(item));
177
+ case 4:
178
+ return _context2.abrupt("return", item);
179
+ case 5:
180
+ case "end":
181
+ return _context2.stop();
182
+ }
183
+ }, _callee2);
184
+ }));
185
+ return function (_x) {
186
+ return _ref5.apply(this, arguments);
187
+ };
188
+ }()));
189
+ case 15:
190
+ globalsCodeObjects = _context3.sent;
191
+ // Store processed globalsCode in state for future use
192
+ setProcessedGlobalsCode(globalsCodeObjects);
193
+ case 17:
194
+ _context3.next = 19;
125
195
  return Promise.all(variants.map(function (name) {
196
+ // Resolve globalsCode for this specific variant
197
+ var globalsForVariant = globalsCodeObjects.map(function (codeObj) {
198
+ // Only include if this variant exists in the globalsCode
199
+ return codeObj[name];
200
+ }).filter(function (item) {
201
+ return Boolean(item);
202
+ });
126
203
  return loadVariant(url, name, loadedCode[name], undefined,
127
204
  // sourceParser - skip parsing
128
205
  loadSource, loadVariantMeta, undefined,
129
206
  // sourceTransformers - skip transforming
130
207
  {
131
208
  disableParsing: true,
132
- disableTransforms: true
209
+ disableTransforms: true,
210
+ globalsCode: globalsForVariant
133
211
  }).then(function (variant) {
134
212
  return {
135
213
  name: name,
@@ -141,8 +219,8 @@ function useAllVariants(_ref3) {
141
219
  };
142
220
  });
143
221
  }));
144
- case 9:
145
- result = _context2.sent;
222
+ case 19:
223
+ result = _context3.sent;
146
224
  resultCode = {};
147
225
  errors = [];
148
226
  _iterator = _createForOfIteratorHelper(result);
@@ -165,37 +243,60 @@ function useAllVariants(_ref3) {
165
243
  } else {
166
244
  setCode(resultCode);
167
245
  }
168
- case 15:
246
+ case 25:
169
247
  case "end":
170
- return _context2.stop();
248
+ return _context3.stop();
171
249
  }
172
- }, _callee2);
250
+ }, _callee3);
173
251
  }))();
174
- }, [readyForContent, isControlled, variants, url, code, setCode, loadSource, loadVariantMeta, loadCodeMeta]);
252
+ }, [readyForContent, isControlled, variants, url, code, setCode, loadSource, loadVariantMeta, loadCodeMeta, processedGlobalsCode, globalsCode, setProcessedGlobalsCode]);
175
253
  return {
176
254
  readyForContent: readyForContent
177
255
  };
178
256
  }
179
- function useCodeParsing(_ref5) {
180
- var code = _ref5.code,
181
- readyForContent = _ref5.readyForContent;
257
+ function useCodeParsing(_ref6) {
258
+ var code = _ref6.code,
259
+ readyForContent = _ref6.readyForContent,
260
+ highlightAt = _ref6.highlightAt;
182
261
  var _useCodeContext3 = useCodeContext(),
183
262
  parseSource = _useCodeContext3.parseSource;
184
263
 
185
- // Parse the internal code state when ready
264
+ // Use timing hooks to determine when to highlight
265
+ var isHydrated = useOnHydrate();
266
+ var isIdle = useOnIdle();
267
+
268
+ // Determine if we should highlight based on the highlightAt setting
269
+ var shouldHighlight = React.useMemo(function () {
270
+ if (!readyForContent) {
271
+ return false;
272
+ }
273
+ switch (highlightAt) {
274
+ case 'hydration':
275
+ return isHydrated;
276
+ case 'idle':
277
+ return isIdle;
278
+ case 'init':
279
+ default:
280
+ return true;
281
+ }
282
+ }, [readyForContent, highlightAt, isHydrated, isIdle]);
283
+
284
+ // Parse the internal code state when ready and timing conditions are met
186
285
  var parsedCode = React.useMemo(function () {
187
- if (!code || !readyForContent || !parseSource) {
286
+ if (!code || !shouldHighlight || !parseSource) {
188
287
  return undefined;
189
288
  }
190
289
  return parseCode(code, parseSource);
191
- }, [code, readyForContent, parseSource]);
290
+ }, [code, shouldHighlight, parseSource]);
291
+ var deferHighlight = !shouldHighlight;
192
292
  return {
193
- parsedCode: parsedCode
293
+ parsedCode: parsedCode,
294
+ deferHighlight: deferHighlight
194
295
  };
195
296
  }
196
- function useCodeTransforms(_ref6) {
197
- var parsedCode = _ref6.parsedCode,
198
- variantName = _ref6.variantName;
297
+ function useCodeTransforms(_ref7) {
298
+ var parsedCode = _ref7.parsedCode,
299
+ variantName = _ref7.variantName;
199
300
  var _useCodeContext4 = useCodeContext(),
200
301
  sourceParser = _useCodeContext4.sourceParser;
201
302
  var _React$useState = React.useState(undefined),
@@ -216,33 +317,33 @@ function useCodeTransforms(_ref6) {
216
317
  }
217
318
 
218
319
  // Process transformations for all variants
219
- _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
320
+ _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
220
321
  var parseSource, enhanced;
221
- return _regeneratorRuntime().wrap(function _callee3$(_context3) {
222
- while (1) switch (_context3.prev = _context3.next) {
322
+ return _regeneratorRuntime().wrap(function _callee4$(_context4) {
323
+ while (1) switch (_context4.prev = _context4.next) {
223
324
  case 0:
224
- _context3.prev = 0;
225
- _context3.next = 3;
325
+ _context4.prev = 0;
326
+ _context4.next = 3;
226
327
  return sourceParser;
227
328
  case 3:
228
- parseSource = _context3.sent;
229
- _context3.next = 6;
329
+ parseSource = _context4.sent;
330
+ _context4.next = 6;
230
331
  return applyTransforms(parsedCode, parseSource);
231
332
  case 6:
232
- enhanced = _context3.sent;
333
+ enhanced = _context4.sent;
233
334
  setTransformedCode(enhanced);
234
- _context3.next = 14;
335
+ _context4.next = 14;
235
336
  break;
236
337
  case 10:
237
- _context3.prev = 10;
238
- _context3.t0 = _context3["catch"](0);
239
- console.error('Failed to process transforms:', _context3.t0);
338
+ _context4.prev = 10;
339
+ _context4.t0 = _context4["catch"](0);
340
+ console.error('Failed to process transforms:', _context4.t0);
240
341
  setTransformedCode(parsedCode);
241
342
  case 14:
242
343
  case "end":
243
- return _context3.stop();
344
+ return _context4.stop();
244
345
  }
245
- }, _callee3, null, [[0, 10]]);
346
+ }, _callee4, null, [[0, 10]]);
246
347
  }))();
247
348
  }, [parsedCode, sourceParser]);
248
349
  return {
@@ -250,8 +351,8 @@ function useCodeTransforms(_ref6) {
250
351
  availableTransforms: availableTransforms
251
352
  };
252
353
  }
253
- function useControlledCodeParsing(_ref8) {
254
- var controlledCode = _ref8.controlledCode;
354
+ function useControlledCodeParsing(_ref9) {
355
+ var controlledCode = _ref9.controlledCode;
255
356
  var _useCodeContext5 = useCodeContext(),
256
357
  parseSource = _useCodeContext5.parseSource;
257
358
 
@@ -266,8 +367,304 @@ function useControlledCodeParsing(_ref8) {
266
367
  parsedControlledCode: parsedControlledCode
267
368
  };
268
369
  }
370
+ function useGlobalsCodeMerging(_ref0) {
371
+ var code = _ref0.code,
372
+ globalsCode = _ref0.globalsCode,
373
+ processedGlobalsCode = _ref0.processedGlobalsCode,
374
+ setProcessedGlobalsCode = _ref0.setProcessedGlobalsCode,
375
+ readyForContent = _ref0.readyForContent,
376
+ variants = _ref0.variants;
377
+ var _useCodeContext6 = useCodeContext(),
378
+ loadCodeMeta = _useCodeContext6.loadCodeMeta,
379
+ loadSource = _useCodeContext6.loadSource,
380
+ loadVariantMeta = _useCodeContext6.loadVariantMeta;
381
+
382
+ // Set processedGlobalsCode if we have ready Code objects but haven't stored them yet
383
+ React.useEffect(function () {
384
+ if (!globalsCode || processedGlobalsCode) {
385
+ return; // No globals or already processed
386
+ }
387
+
388
+ // Check if all items are already Code objects (precomputed)
389
+ if (globalsCode.every(function (item) {
390
+ return _typeof(item) === 'object';
391
+ })) {
392
+ var codeObjects = globalsCode;
393
+ // Check if all Code objects have all their own variants
394
+ var allReady = codeObjects.every(function (codeObj) {
395
+ return hasAllVariants(Object.keys(codeObj), codeObj);
396
+ });
397
+ if (allReady) {
398
+ setProcessedGlobalsCode(codeObjects);
399
+ return;
400
+ }
401
+ // If not all ready, fall through to loading logic below
402
+ }
403
+
404
+ // Need to load string URLs or load missing variants
405
+ _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {
406
+ var basicCodeObjects, fullyLoadedCodeObjects;
407
+ return _regeneratorRuntime().wrap(function _callee8$(_context8) {
408
+ while (1) switch (_context8.prev = _context8.next) {
409
+ case 0:
410
+ _context8.prev = 0;
411
+ _context8.next = 3;
412
+ return Promise.all(globalsCode.map(/*#__PURE__*/function () {
413
+ var _ref10 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee5(item) {
414
+ return _regeneratorRuntime().wrap(function _callee5$(_context5) {
415
+ while (1) switch (_context5.prev = _context5.next) {
416
+ case 0:
417
+ if (!(typeof item === 'string')) {
418
+ _context5.next = 8;
419
+ break;
420
+ }
421
+ if (loadCodeMeta) {
422
+ _context5.next = 3;
423
+ break;
424
+ }
425
+ throw new Error('"loadCodeMeta" function is required for string URLs in globalsCode');
426
+ case 3:
427
+ _context5.next = 5;
428
+ return loadCodeMeta(item);
429
+ case 5:
430
+ _context5.t0 = _context5.sent;
431
+ _context5.t1 = item;
432
+ return _context5.abrupt("return", {
433
+ codeObj: _context5.t0,
434
+ originalUrl: _context5.t1
435
+ });
436
+ case 8:
437
+ return _context5.abrupt("return", {
438
+ codeObj: item,
439
+ originalUrl: undefined
440
+ });
441
+ case 9:
442
+ case "end":
443
+ return _context5.stop();
444
+ }
445
+ }, _callee5);
446
+ }));
447
+ return function (_x2) {
448
+ return _ref10.apply(this, arguments);
449
+ };
450
+ }()));
451
+ case 3:
452
+ basicCodeObjects = _context8.sent;
453
+ _context8.next = 6;
454
+ return Promise.all(basicCodeObjects.map(/*#__PURE__*/function () {
455
+ var _ref12 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee7(_ref11) {
456
+ var codeObj, originalUrl, loadedVariants;
457
+ return _regeneratorRuntime().wrap(function _callee7$(_context7) {
458
+ while (1) switch (_context7.prev = _context7.next) {
459
+ case 0:
460
+ codeObj = _ref11.codeObj, originalUrl = _ref11.originalUrl;
461
+ if (!hasAllVariants(variants, codeObj)) {
462
+ _context7.next = 3;
463
+ break;
464
+ }
465
+ return _context7.abrupt("return", codeObj);
466
+ case 3:
467
+ // Need to load missing variants
468
+ loadedVariants = _objectSpread({}, codeObj);
469
+ _context7.next = 6;
470
+ return Promise.all(variants.map(/*#__PURE__*/function () {
471
+ var _ref13 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee6(variantName) {
472
+ var result;
473
+ return _regeneratorRuntime().wrap(function _callee6$(_context6) {
474
+ while (1) switch (_context6.prev = _context6.next) {
475
+ case 0:
476
+ if (!(codeObj[variantName] && _typeof(codeObj[variantName]) === 'object')) {
477
+ _context6.next = 2;
478
+ break;
479
+ }
480
+ return _context6.abrupt("return");
481
+ case 2:
482
+ _context6.prev = 2;
483
+ _context6.next = 5;
484
+ return loadVariant(originalUrl || '',
485
+ // Use the original URL if available
486
+ variantName, codeObj[variantName],
487
+ // May be undefined or string
488
+ undefined,
489
+ // sourceParser - skip parsing for now
490
+ loadSource, loadVariantMeta, undefined,
491
+ // sourceTransformers - skip transforming
492
+ {
493
+ disableParsing: true,
494
+ disableTransforms: true
495
+ });
496
+ case 5:
497
+ result = _context6.sent;
498
+ loadedVariants[variantName] = result.code;
499
+ _context6.next = 12;
500
+ break;
501
+ case 9:
502
+ _context6.prev = 9;
503
+ _context6.t0 = _context6["catch"](2);
504
+ console.warn("Failed to load variant ".concat(variantName, " for globalsCode:"), _context6.t0);
505
+ // Keep the original variant data (may be undefined)
506
+ case 12:
507
+ case "end":
508
+ return _context6.stop();
509
+ }
510
+ }, _callee6, null, [[2, 9]]);
511
+ }));
512
+ return function (_x4) {
513
+ return _ref13.apply(this, arguments);
514
+ };
515
+ }()));
516
+ case 6:
517
+ return _context7.abrupt("return", loadedVariants);
518
+ case 7:
519
+ case "end":
520
+ return _context7.stop();
521
+ }
522
+ }, _callee7);
523
+ }));
524
+ return function (_x3) {
525
+ return _ref12.apply(this, arguments);
526
+ };
527
+ }()));
528
+ case 6:
529
+ fullyLoadedCodeObjects = _context8.sent;
530
+ setProcessedGlobalsCode(fullyLoadedCodeObjects);
531
+ _context8.next = 13;
532
+ break;
533
+ case 10:
534
+ _context8.prev = 10;
535
+ _context8.t0 = _context8["catch"](0);
536
+ console.warn('Failed to load globalsCode:', _context8.t0);
537
+ case 13:
538
+ case "end":
539
+ return _context8.stop();
540
+ }
541
+ }, _callee8, null, [[0, 10]]);
542
+ }))();
543
+ }, [globalsCode, processedGlobalsCode, setProcessedGlobalsCode, loadCodeMeta, loadSource, loadVariantMeta, variants]);
544
+
545
+ // Determine globalsCodeObjects to use (prefer processed, fallback to direct if ready)
546
+ var globalsCodeObjects = React.useMemo(function () {
547
+ if (processedGlobalsCode) {
548
+ return processedGlobalsCode;
549
+ }
550
+ if (globalsCode && globalsCode.every(function (item) {
551
+ return _typeof(item) === 'object';
552
+ })) {
553
+ var codeObjects = globalsCode;
554
+ var allGlobalsReady = codeObjects.every(function (codeObj) {
555
+ return hasAllVariants(Object.keys(codeObj), codeObj);
556
+ });
557
+ if (allGlobalsReady) {
558
+ return codeObjects;
559
+ }
560
+ }
561
+ return undefined;
562
+ }, [processedGlobalsCode, globalsCode]);
563
+
564
+ // Merge globalsCode with code when ready
565
+ return React.useMemo(function () {
566
+ // If no globalsCode or code not ready, return as-is
567
+ if (!globalsCode || !code || !readyForContent) {
568
+ return code;
569
+ }
570
+
571
+ // If globalsCodeObjects isn't ready yet, return unmerged code for now
572
+ if (!globalsCodeObjects) {
573
+ return code;
574
+ }
575
+
576
+ // For precomputed code, do simple synchronous merging of extraFiles
577
+ var mergedCode = _objectSpread({}, code);
578
+ var hasChanges = false;
579
+ variants.forEach(function (variant) {
580
+ var variantData = code[variant];
581
+ if (!variantData || typeof variantData === 'string') {
582
+ return;
583
+ }
584
+
585
+ // Get globalsCode for this variant (only exact matches, no fallback)
586
+ var globalsForVariant = globalsCodeObjects.map(function (codeObj) {
587
+ return codeObj[variant];
588
+ }).filter(function (item) {
589
+ return Boolean(item) && _typeof(item) === 'object';
590
+ });
591
+ if (globalsForVariant.length > 0) {
592
+ // Simple merge for precomputed data - just combine extraFiles
593
+ var mergedExtraFiles = _objectSpread({}, variantData.extraFiles || {});
594
+ globalsForVariant.forEach(function (globalVariant) {
595
+ if (globalVariant.extraFiles) {
596
+ Object.assign(mergedExtraFiles, globalVariant.extraFiles);
597
+ }
598
+ });
599
+
600
+ // Only update if we actually have extra files to merge
601
+ if (Object.keys(mergedExtraFiles).length > Object.keys(variantData.extraFiles || {}).length) {
602
+ mergedCode[variant] = _objectSpread(_objectSpread({}, variantData), {}, {
603
+ extraFiles: mergedExtraFiles
604
+ });
605
+ hasChanges = true;
606
+ }
607
+ }
608
+ });
609
+
610
+ // Return merged code if we made changes, otherwise return original code
611
+ return hasChanges ? mergedCode : code;
612
+ }, [code, globalsCode, globalsCodeObjects, readyForContent, variants]);
613
+ }
614
+ function usePropsCodeGlobalsMerging(_ref14) {
615
+ var code = _ref14.code,
616
+ globalsCode = _ref14.globalsCode,
617
+ processedGlobalsCode = _ref14.processedGlobalsCode,
618
+ variants = _ref14.variants;
619
+ // For props.code, always do synchronous merging if possible
620
+ // We don't want to cache this in state since props.code can change frequently
621
+ return React.useMemo(function () {
622
+ if (!code || !globalsCode || !processedGlobalsCode) {
623
+ return code; // No merge needed or not ready
624
+ }
625
+
626
+ // Use processedGlobalsCode for synchronous merging
627
+ var globalsCodeObjects = processedGlobalsCode;
628
+
629
+ // For props.code (controlled), do simple synchronous merging
630
+ var mergedCode = _objectSpread({}, code);
631
+ var hasChanges = false;
632
+ variants.forEach(function (variant) {
633
+ var variantData = code[variant];
634
+ if (!variantData || typeof variantData === 'string') {
635
+ return;
636
+ }
637
+
638
+ // Get globalsCode for this variant (only exact matches, no fallback)
639
+ var globalsForVariant = globalsCodeObjects.map(function (codeObj) {
640
+ return codeObj[variant];
641
+ }).filter(function (item) {
642
+ return Boolean(item) && _typeof(item) === 'object';
643
+ });
644
+ if (globalsForVariant.length > 0) {
645
+ // Simple merge for controlled data - just combine extraFiles
646
+ var mergedExtraFiles = _objectSpread({}, variantData.extraFiles || {});
647
+ globalsForVariant.forEach(function (globalVariant) {
648
+ if (globalVariant.extraFiles) {
649
+ Object.assign(mergedExtraFiles, globalVariant.extraFiles);
650
+ }
651
+ });
652
+
653
+ // Only update if we actually have extra files to merge
654
+ if (Object.keys(mergedExtraFiles).length > Object.keys(variantData.extraFiles || {}).length) {
655
+ mergedCode[variant] = _objectSpread(_objectSpread({}, variantData), {}, {
656
+ extraFiles: mergedExtraFiles
657
+ });
658
+ hasChanges = true;
659
+ }
660
+ }
661
+ });
662
+
663
+ // Return merged code if we made changes, otherwise return original code
664
+ return hasChanges ? mergedCode : code;
665
+ }, [code, globalsCode, processedGlobalsCode, variants]);
666
+ }
269
667
  export function CodeHighlighterClient(props) {
270
- var _activeCode$variantNa, _activeCode$variantNa2;
271
668
  var _useControlledCode = useControlledCode(),
272
669
  controlledCode = _useControlledCode.controlledCode,
273
670
  controlledSelection = _useControlledCode.controlledSelection,
@@ -288,18 +685,28 @@ export function CodeHighlighterClient(props) {
288
685
  code = _React$useState4[0],
289
686
  setCode = _React$useState4[1];
290
687
 
688
+ // State to store processed globalsCode to avoid duplicate loading
689
+ var _React$useState5 = React.useState(undefined),
690
+ _React$useState6 = _slicedToArray(_React$useState5, 2),
691
+ processedGlobalsCode = _React$useState6[0],
692
+ setProcessedGlobalsCode = _React$useState6[1];
693
+
291
694
  // TODO: if using props.variant, then the variant is controlled and we can't use our own state
292
695
  // does props.variant make any sense instead of controlledSelection?.variant?
293
- var _React$useState5 = React.useState({
696
+ var _React$useState7 = React.useState({
294
697
  variant: props.initialVariant || props.defaultVariant || 'Default'
295
698
  }),
296
- _React$useState6 = _slicedToArray(_React$useState5, 2),
297
- selection = _React$useState6[0],
298
- setSelection = _React$useState6[1];
699
+ _React$useState8 = _slicedToArray(_React$useState7, 2),
700
+ selection = _React$useState8[0],
701
+ setSelection = _React$useState8[1];
299
702
  var variantName = (controlledSelection == null ? void 0 : controlledSelection.variant) || props.variant || selection.variant;
300
703
  var activeCode = controlledCode || props.code || code;
301
- var initialFilename = _typeof(activeCode == null ? void 0 : activeCode[variantName]) === 'object' && (activeCode != null && (_activeCode$variantNa = activeCode[variantName]) != null && _activeCode$variantNa.filesOrder ? activeCode[variantName].filesOrder[0] : activeCode == null || (_activeCode$variantNa2 = activeCode[variantName]) == null ? void 0 : _activeCode$variantNa2.fileName);
302
- var fileName = (controlledSelection == null ? void 0 : controlledSelection.fileName) || props.fileName || initialFilename || 'index.js';
704
+ var initialFilename;
705
+ if (_typeof(activeCode == null ? void 0 : activeCode[variantName]) === 'object') {
706
+ var variant = activeCode[variantName];
707
+ initialFilename = variant != null && variant.filesOrder ? variant.filesOrder[0] : variant == null ? void 0 : variant.fileName;
708
+ }
709
+ var fileName = (controlledSelection == null ? void 0 : controlledSelection.fileName) || props.fileName || initialFilename;
303
710
  var variants = props.variants || Object.keys(props.components || activeCode || {});
304
711
  var url = props.url,
305
712
  highlightAt = props.highlightAt,
@@ -315,7 +722,9 @@ export function CodeHighlighterClient(props) {
315
722
  highlightAt: highlightAt,
316
723
  fallbackUsesExtraFiles: fallbackUsesExtraFiles,
317
724
  fallbackUsesAllVariants: fallbackUsesAllVariants,
318
- isControlled: isControlled
725
+ isControlled: isControlled,
726
+ globalsCode: props.globalsCode,
727
+ setProcessedGlobalsCode: setProcessedGlobalsCode
319
728
  });
320
729
  var readyForContent = React.useMemo(function () {
321
730
  if (!code) {
@@ -345,13 +754,40 @@ export function CodeHighlighterClient(props) {
345
754
  isControlled: isControlled,
346
755
  url: url,
347
756
  code: code,
348
- setCode: setCode
757
+ setCode: setCode,
758
+ processedGlobalsCode: processedGlobalsCode,
759
+ globalsCode: props.globalsCode,
760
+ setProcessedGlobalsCode: setProcessedGlobalsCode
761
+ });
762
+
763
+ // Merge globalsCode with internal state code (fetched data) - this should be stable once ready
764
+ var stateCodeWithGlobals = useGlobalsCodeMerging({
765
+ code: code,
766
+ // Only use internal state, not props.code
767
+ globalsCode: props.globalsCode,
768
+ processedGlobalsCode: processedGlobalsCode,
769
+ setProcessedGlobalsCode: setProcessedGlobalsCode,
770
+ readyForContent: readyForContent,
771
+ variants: variants
349
772
  });
773
+
774
+ // For props.code (controlled), always re-merge when it changes (don't cache in state)
775
+ var propsCodeWithGlobals = usePropsCodeGlobalsMerging({
776
+ code: props.code,
777
+ globalsCode: props.globalsCode,
778
+ processedGlobalsCode: processedGlobalsCode,
779
+ variants: variants
780
+ });
781
+
782
+ // Use props.code result if available, otherwise use state code result
783
+ var codeWithGlobals = propsCodeWithGlobals || stateCodeWithGlobals;
350
784
  var _useCodeParsing = useCodeParsing({
351
- code: props.code || code,
352
- readyForContent: readyForContent || Boolean(props.code)
785
+ code: codeWithGlobals,
786
+ readyForContent: readyForContent || Boolean(props.code),
787
+ highlightAt: highlightAt
353
788
  }),
354
- parsedCode = _useCodeParsing.parsedCode;
789
+ parsedCode = _useCodeParsing.parsedCode,
790
+ deferHighlight = _useCodeParsing.deferHighlight;
355
791
  var _useCodeTransforms = useCodeTransforms({
356
792
  parsedCode: parsedCode,
357
793
  variantName: variantName
@@ -364,7 +800,7 @@ export function CodeHighlighterClient(props) {
364
800
  parsedControlledCode = _useControlledCodePar.parsedControlledCode;
365
801
 
366
802
  // Determine the final overlaid code (controlled takes precedence)
367
- var overlaidCode = parsedControlledCode || transformedCode;
803
+ var overlaidCode = parsedControlledCode || transformedCode || codeWithGlobals;
368
804
 
369
805
  // For fallback context, use the processed code or fall back to non-controlled code
370
806
  var codeForFallback = overlaidCode || (controlledCode ? undefined : props.code || code);
@@ -373,15 +809,17 @@ export function CodeHighlighterClient(props) {
373
809
  }, [variantName, codeForFallback, fileName, props.fallbackUsesExtraFiles, props.fallbackUsesAllVariants]);
374
810
  var context = React.useMemo(function () {
375
811
  return {
376
- code: overlaidCode || transformedCode,
812
+ code: overlaidCode,
377
813
  // Use processed/transformed code
378
814
  setCode: controlledSetCode,
379
815
  selection: controlledSelection || selection,
380
816
  setSelection: controlledSetSelection || setSelection,
381
817
  components: controlledComponents || props.components,
382
- availableTransforms: availableTransforms
818
+ availableTransforms: isControlled ? [] : availableTransforms,
819
+ url: props.url,
820
+ deferHighlight: deferHighlight
383
821
  };
384
- }, [overlaidCode, transformedCode, controlledSetCode, selection, controlledSelection, controlledSetSelection, controlledComponents, props.components, availableTransforms]);
822
+ }, [overlaidCode, controlledSetCode, selection, controlledSelection, controlledSetSelection, controlledComponents, props.components, isControlled, availableTransforms, props.url, deferHighlight]);
385
823
  if (!props.variants && !props.components && !activeCode) {
386
824
  throw new Error('CodeHighlighterClient requires either `variants`, `components`, or `code` to be provided.');
387
825
  }