@flipdish/ui-library 0.33.0 → 0.34.0

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 (69) hide show
  1. package/dist/components/atoms/Flag/flag.utils.cjs +1 -1
  2. package/dist/components/atoms/Flag/flag.utils.cjs.map +1 -1
  3. package/dist/components/atoms/Flag/flag.utils.js +2 -2
  4. package/dist/components/atoms/Flag/flag.utils.js.map +1 -1
  5. package/dist/components/molecules/CodeSnippet/codeSnippet.utils.cjs +73 -0
  6. package/dist/components/molecules/CodeSnippet/codeSnippet.utils.cjs.map +1 -1
  7. package/dist/components/molecules/CodeSnippet/codeSnippet.utils.d.ts +48 -0
  8. package/dist/components/molecules/CodeSnippet/codeSnippet.utils.d.ts.map +1 -1
  9. package/dist/components/molecules/CodeSnippet/codeSnippet.utils.js +70 -1
  10. package/dist/components/molecules/CodeSnippet/codeSnippet.utils.js.map +1 -1
  11. package/dist/components/molecules/CodeSnippet/hooks/useCodeSnippetHighlight.cjs +24 -2
  12. package/dist/components/molecules/CodeSnippet/hooks/useCodeSnippetHighlight.cjs.map +1 -1
  13. package/dist/components/molecules/CodeSnippet/hooks/useCodeSnippetHighlight.d.ts +2 -1
  14. package/dist/components/molecules/CodeSnippet/hooks/useCodeSnippetHighlight.d.ts.map +1 -1
  15. package/dist/components/molecules/CodeSnippet/hooks/useCodeSnippetHighlight.js +25 -3
  16. package/dist/components/molecules/CodeSnippet/hooks/useCodeSnippetHighlight.js.map +1 -1
  17. package/dist/components/molecules/CodeSnippet/index.cjs +7 -25
  18. package/dist/components/molecules/CodeSnippet/index.cjs.map +1 -1
  19. package/dist/components/molecules/CodeSnippet/index.d.ts +8 -4
  20. package/dist/components/molecules/CodeSnippet/index.d.ts.map +1 -1
  21. package/dist/components/molecules/CodeSnippet/index.js +8 -26
  22. package/dist/components/molecules/CodeSnippet/index.js.map +1 -1
  23. package/dist/components/organisms/Calendar/calendar.utils.cjs +35 -0
  24. package/dist/components/organisms/Calendar/calendar.utils.cjs.map +1 -1
  25. package/dist/components/organisms/Calendar/calendar.utils.d.ts +29 -0
  26. package/dist/components/organisms/Calendar/calendar.utils.d.ts.map +1 -1
  27. package/dist/components/organisms/Calendar/calendar.utils.js +36 -2
  28. package/dist/components/organisms/Calendar/calendar.utils.js.map +1 -1
  29. package/dist/components/organisms/Calendar/hooks/useCalendarClock.cjs +30 -0
  30. package/dist/components/organisms/Calendar/hooks/useCalendarClock.cjs.map +1 -0
  31. package/dist/components/organisms/Calendar/hooks/useCalendarClock.d.ts +12 -0
  32. package/dist/components/organisms/Calendar/hooks/useCalendarClock.d.ts.map +1 -0
  33. package/dist/components/organisms/Calendar/hooks/useCalendarClock.js +28 -0
  34. package/dist/components/organisms/Calendar/hooks/useCalendarClock.js.map +1 -0
  35. package/dist/components/organisms/Calendar/index.cjs +13 -42
  36. package/dist/components/organisms/Calendar/index.cjs.map +1 -1
  37. package/dist/components/organisms/Calendar/index.d.ts.map +1 -1
  38. package/dist/components/organisms/Calendar/index.js +15 -44
  39. package/dist/components/organisms/Calendar/index.js.map +1 -1
  40. package/dist/components/organisms/SidebarNavigation/components/NavAccountCard.cjs +9 -2
  41. package/dist/components/organisms/SidebarNavigation/components/NavAccountCard.cjs.map +1 -1
  42. package/dist/components/organisms/SidebarNavigation/components/NavAccountCard.d.ts +12 -1
  43. package/dist/components/organisms/SidebarNavigation/components/NavAccountCard.d.ts.map +1 -1
  44. package/dist/components/organisms/SidebarNavigation/components/NavAccountCard.js +9 -2
  45. package/dist/components/organisms/SidebarNavigation/components/NavAccountCard.js.map +1 -1
  46. package/dist/components/organisms/SidebarNavigation/components/NavItem.cjs +10 -4
  47. package/dist/components/organisms/SidebarNavigation/components/NavItem.cjs.map +1 -1
  48. package/dist/components/organisms/SidebarNavigation/components/NavItem.d.ts +12 -1
  49. package/dist/components/organisms/SidebarNavigation/components/NavItem.d.ts.map +1 -1
  50. package/dist/components/organisms/SidebarNavigation/components/NavItem.js +10 -4
  51. package/dist/components/organisms/SidebarNavigation/components/NavItem.js.map +1 -1
  52. package/dist/components/organisms/SidebarNavigation/index.cjs +36 -11
  53. package/dist/components/organisms/SidebarNavigation/index.cjs.map +1 -1
  54. package/dist/components/organisms/SidebarNavigation/index.d.ts.map +1 -1
  55. package/dist/components/organisms/SidebarNavigation/index.js +38 -13
  56. package/dist/components/organisms/SidebarNavigation/index.js.map +1 -1
  57. package/dist/utilities/renderUtils/index.cjs +21 -0
  58. package/dist/utilities/renderUtils/index.cjs.map +1 -1
  59. package/dist/utilities/renderUtils/index.d.ts +10 -0
  60. package/dist/utilities/renderUtils/index.d.ts.map +1 -1
  61. package/dist/utilities/renderUtils/index.js +21 -1
  62. package/dist/utilities/renderUtils/index.js.map +1 -1
  63. package/package.json +1 -1
  64. package/dist/components/organisms/SidebarNavigation/components/NavButton.cjs +0 -32
  65. package/dist/components/organisms/SidebarNavigation/components/NavButton.cjs.map +0 -1
  66. package/dist/components/organisms/SidebarNavigation/components/NavButton.d.ts +0 -36
  67. package/dist/components/organisms/SidebarNavigation/components/NavButton.d.ts.map +0 -1
  68. package/dist/components/organisms/SidebarNavigation/components/NavButton.js +0 -30
  69. package/dist/components/organisms/SidebarNavigation/components/NavButton.js.map +0 -1
@@ -34,7 +34,7 @@ const getCountryName = (code, locale = 'en') => {
34
34
  * @param code The code no flag exists for.
35
35
  */
36
36
  const warnUnknownCountryOnce = (code) => {
37
- if (renderUtils.getEnvironmentVariable('NODE_ENV') === 'production' || warnedCodes.has(code))
37
+ if (renderUtils.isProductionBuild() || warnedCodes.has(code))
38
38
  return;
39
39
  warnedCodes.add(code);
40
40
  console.warn(`Flag: no flag for country code "${code}".`);
@@ -1 +1 @@
1
- {"version":3,"file":"flag.utils.cjs","sources":["../../../../src/components/atoms/Flag/flag.utils.ts"],"sourcesContent":[null],"names":["getEnvironmentVariable"],"mappings":";;;;AAEA,MAAM,SAAS,GAAG,IAAI,GAAG,EAAoC;AAC7D,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU;AAErC;;;;;AAKG;AACI,MAAM,cAAc,GAAG,CAAC,IAAY,EAAE,MAAM,GAAG,IAAI,KAAY;;IAEpE,IAAI,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;AACpC,IAAA,IAAI,QAAQ,KAAK,SAAS,EAAE;AAC1B,QAAA,IAAI;AACF,YAAA,QAAQ,GAAG,OAAO,IAAI,CAAC,YAAY,KAAK,UAAU,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI;QACjH;AAAE,QAAA,MAAM;YACN,QAAQ,GAAG,IAAI;QACjB;AACA,QAAA,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC;IACjC;AACA,IAAA,IAAI;QACF,OAAO,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI;IACnC;AAAE,IAAA,MAAM;AACN,QAAA,OAAO,IAAI;IACb;AACF;AAEA;;;AAGG;AACI,MAAM,sBAAsB,GAAG,CAAC,IAAY,KAAU;AAC3D,IAAA,IAAIA,kCAAsB,CAAC,UAAU,CAAC,KAAK,YAAY,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE;AAClF,IAAA,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AACrB,IAAA,OAAO,CAAC,IAAI,CAAC,mCAAmC,IAAI,CAAA,EAAA,CAAI,CAAC;AAC3D;;;"}
1
+ {"version":3,"file":"flag.utils.cjs","sources":["../../../../src/components/atoms/Flag/flag.utils.ts"],"sourcesContent":[null],"names":["isProductionBuild"],"mappings":";;;;AAEA,MAAM,SAAS,GAAG,IAAI,GAAG,EAAoC;AAC7D,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU;AAErC;;;;;AAKG;AACI,MAAM,cAAc,GAAG,CAAC,IAAY,EAAE,MAAM,GAAG,IAAI,KAAY;;IAEpE,IAAI,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;AACpC,IAAA,IAAI,QAAQ,KAAK,SAAS,EAAE;AAC1B,QAAA,IAAI;AACF,YAAA,QAAQ,GAAG,OAAO,IAAI,CAAC,YAAY,KAAK,UAAU,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI;QACjH;AAAE,QAAA,MAAM;YACN,QAAQ,GAAG,IAAI;QACjB;AACA,QAAA,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC;IACjC;AACA,IAAA,IAAI;QACF,OAAO,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI;IACnC;AAAE,IAAA,MAAM;AACN,QAAA,OAAO,IAAI;IACb;AACF;AAEA;;;AAGG;AACI,MAAM,sBAAsB,GAAG,CAAC,IAAY,KAAU;IAC3D,IAAIA,6BAAiB,EAAE,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE;AAClD,IAAA,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AACrB,IAAA,OAAO,CAAC,IAAI,CAAC,mCAAmC,IAAI,CAAA,EAAA,CAAI,CAAC;AAC3D;;;"}
@@ -1,4 +1,4 @@
1
- import { getEnvironmentVariable } from '@flipdish/ui-library/utilities/renderUtils';
1
+ import { isProductionBuild } from '@flipdish/ui-library/utilities/renderUtils';
2
2
 
3
3
  const resolvers = new Map();
4
4
  const warnedCodes = new Set();
@@ -32,7 +32,7 @@ const getCountryName = (code, locale = 'en') => {
32
32
  * @param code The code no flag exists for.
33
33
  */
34
34
  const warnUnknownCountryOnce = (code) => {
35
- if (getEnvironmentVariable('NODE_ENV') === 'production' || warnedCodes.has(code))
35
+ if (isProductionBuild() || warnedCodes.has(code))
36
36
  return;
37
37
  warnedCodes.add(code);
38
38
  console.warn(`Flag: no flag for country code "${code}".`);
@@ -1 +1 @@
1
- {"version":3,"file":"flag.utils.js","sources":["../../../../src/components/atoms/Flag/flag.utils.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAEA,MAAM,SAAS,GAAG,IAAI,GAAG,EAAoC;AAC7D,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU;AAErC;;;;;AAKG;AACI,MAAM,cAAc,GAAG,CAAC,IAAY,EAAE,MAAM,GAAG,IAAI,KAAY;;IAEpE,IAAI,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;AACpC,IAAA,IAAI,QAAQ,KAAK,SAAS,EAAE;AAC1B,QAAA,IAAI;AACF,YAAA,QAAQ,GAAG,OAAO,IAAI,CAAC,YAAY,KAAK,UAAU,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI;QACjH;AAAE,QAAA,MAAM;YACN,QAAQ,GAAG,IAAI;QACjB;AACA,QAAA,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC;IACjC;AACA,IAAA,IAAI;QACF,OAAO,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI;IACnC;AAAE,IAAA,MAAM;AACN,QAAA,OAAO,IAAI;IACb;AACF;AAEA;;;AAGG;AACI,MAAM,sBAAsB,GAAG,CAAC,IAAY,KAAU;AAC3D,IAAA,IAAI,sBAAsB,CAAC,UAAU,CAAC,KAAK,YAAY,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE;AAClF,IAAA,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AACrB,IAAA,OAAO,CAAC,IAAI,CAAC,mCAAmC,IAAI,CAAA,EAAA,CAAI,CAAC;AAC3D;;"}
1
+ {"version":3,"file":"flag.utils.js","sources":["../../../../src/components/atoms/Flag/flag.utils.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAEA,MAAM,SAAS,GAAG,IAAI,GAAG,EAAoC;AAC7D,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU;AAErC;;;;;AAKG;AACI,MAAM,cAAc,GAAG,CAAC,IAAY,EAAE,MAAM,GAAG,IAAI,KAAY;;IAEpE,IAAI,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;AACpC,IAAA,IAAI,QAAQ,KAAK,SAAS,EAAE;AAC1B,QAAA,IAAI;AACF,YAAA,QAAQ,GAAG,OAAO,IAAI,CAAC,YAAY,KAAK,UAAU,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI;QACjH;AAAE,QAAA,MAAM;YACN,QAAQ,GAAG,IAAI;QACjB;AACA,QAAA,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC;IACjC;AACA,IAAA,IAAI;QACF,OAAO,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI;IACnC;AAAE,IAAA,MAAM;AACN,QAAA,OAAO,IAAI;IACb;AACF;AAEA;;;AAGG;AACI,MAAM,sBAAsB,GAAG,CAAC,IAAY,KAAU;IAC3D,IAAI,iBAAiB,EAAE,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE;AAClD,IAAA,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AACrB,IAAA,OAAO,CAAC,IAAI,CAAC,mCAAmC,IAAI,CAAA,EAAA,CAAI,CAAC;AAC3D;;"}
@@ -1,5 +1,74 @@
1
1
  'use strict';
2
2
 
3
+ var core = require('shiki/core');
4
+ var javascript = require('shiki/engine/javascript');
5
+ var langs = require('shiki/langs');
6
+
7
+ /** The two themes a snippet renders, with GitHub's token colours replaced by the design tokens. */
8
+ const HIGHLIGHT_THEMES = {
9
+ defaultColor: 'light',
10
+ themes: { light: 'github-light', dark: 'github-dark' },
11
+ colorReplacements: {
12
+ 'github-light': {
13
+ '#24292e': 'var(--color-text-primary)',
14
+ '#005cc5': 'var(--color-utility-blue-600)',
15
+ '#d73a49': 'var(--color-utility-pink-600)',
16
+ '#6f42c1': 'var(--color-utility-brand-600)',
17
+ '#032f62': 'var(--color-primary)',
18
+ },
19
+ 'github-dark': {
20
+ '#e1e4e8': 'var(--color-text-primary)',
21
+ '#79b8ff': 'var(--color-utility-blue-600)',
22
+ '#f97583': 'var(--color-utility-pink-600)',
23
+ '#b392f0': 'var(--color-utility-brand-600)',
24
+ '#9ecbff': 'var(--color-primary)',
25
+ },
26
+ },
27
+ };
28
+ // One highlighter for every snippet, built on first use with no grammars: each language loads as its own chunk the first
29
+ // time a snippet asks for it. The JavaScript regex engine means no WASM download before the first highlight.
30
+ let highlighterPromise = null;
31
+ /**
32
+ * The shared highlighter, created on the first call and reused by every snippet after that.
33
+ * @returns The core highlighter with both themes loaded and no grammars yet.
34
+ */
35
+ const getHighlighter = () => {
36
+ highlighterPromise ?? (highlighterPromise = core.createHighlighterCore({
37
+ // Forgiving skips the few grammar patterns the engine cannot express instead of throwing, which costs a token's colour
38
+ // at most. The engine needs the RegExp `d` flag, so Chrome 90 and Safari 15 are the floor.
39
+ engine: javascript.createJavaScriptRegexEngine({ forgiving: true }),
40
+ langs: [],
41
+ themes: [import('shiki/themes/github-light.mjs'), import('shiki/themes/github-dark.mjs')],
42
+ }).catch((error) => {
43
+ // A failed creation, such as a theme chunk that did not load, must not pin every later snippet to the same rejection.
44
+ highlighterPromise = null;
45
+ throw error;
46
+ }));
47
+ return highlighterPromise;
48
+ };
49
+ // Own keys only: `in` would also accept `toString` and the other prototype names.
50
+ const languageIds = new Set(Object.keys(langs.bundledLanguages));
51
+ /**
52
+ * Whether Shiki has a grammar for the language, as opposed to a special language such as `text` or a typo.
53
+ * @param language The `language` prop as given.
54
+ * @returns `true` when a grammar can be loaded for it.
55
+ */
56
+ const isBundledLanguage = (language) => languageIds.has(language);
57
+ /**
58
+ * Highlights source into a hast tree with the snippet's themes, loading the language's grammar on first use. A language
59
+ * with no grammar, including a typo, highlights as plain text rather than failing, so the snippet still shows the code.
60
+ * @param code The source to highlight.
61
+ * @param language The language id; anything Shiki does not know falls back to `text`.
62
+ * @returns The hast root for `toJsxRuntime`.
63
+ */
64
+ const highlightToHast = async (code, language) => {
65
+ const highlighter = await getHighlighter();
66
+ // Shiki skips a grammar it already holds, and the module system caches the import, so a repeat is cheap.
67
+ if (isBundledLanguage(language))
68
+ await highlighter.loadLanguage(langs.bundledLanguages[language]);
69
+ const lang = isBundledLanguage(language) || language === 'ansi' ? language : 'text';
70
+ return highlighter.codeToHast(code, { lang, ...HIGHLIGHT_THEMES });
71
+ };
3
72
  /**
4
73
  * Reads the visible tab panel's text so the header copy button copies the active snippet.
5
74
  *
@@ -13,5 +82,9 @@ const getActiveTabPanelText = (root) => {
13
82
  return activePanel?.textContent?.trim() ?? '';
14
83
  };
15
84
 
85
+ exports.HIGHLIGHT_THEMES = HIGHLIGHT_THEMES;
16
86
  exports.getActiveTabPanelText = getActiveTabPanelText;
87
+ exports.getHighlighter = getHighlighter;
88
+ exports.highlightToHast = highlightToHast;
89
+ exports.isBundledLanguage = isBundledLanguage;
17
90
  //# sourceMappingURL=codeSnippet.utils.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"codeSnippet.utils.cjs","sources":["../../../../src/components/molecules/CodeSnippet/codeSnippet.utils.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;;;AAKG;AACI,MAAM,qBAAqB,GAAG,CAAC,IAAuB,KAAY;AACvE,IAAA,IAAI,CAAC,IAAI;AAAE,QAAA,OAAO,EAAE;IACpB,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,iCAAiC,CAAC;IACzE,OAAO,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE;AAC/C;;"}
1
+ {"version":3,"file":"codeSnippet.utils.cjs","sources":["../../../../src/components/molecules/CodeSnippet/codeSnippet.utils.ts"],"sourcesContent":[null],"names":["createHighlighterCore","createJavaScriptRegexEngine","bundledLanguages"],"mappings":";;;;;;AAQA;AACO,MAAM,gBAAgB,GAAG;AAC9B,IAAA,YAAY,EAAE,OAAO;IACrB,MAAM,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE;AACtD,IAAA,iBAAiB,EAAE;AACjB,QAAA,cAAc,EAAE;AACd,YAAA,SAAS,EAAE,2BAA2B;AACtC,YAAA,SAAS,EAAE,+BAA+B;AAC1C,YAAA,SAAS,EAAE,+BAA+B;AAC1C,YAAA,SAAS,EAAE,gCAAgC;AAC3C,YAAA,SAAS,EAAE,sBAAsB;AAClC,SAAA;AACD,QAAA,aAAa,EAAE;AACb,YAAA,SAAS,EAAE,2BAA2B;AACtC,YAAA,SAAS,EAAE,+BAA+B;AAC1C,YAAA,SAAS,EAAE,+BAA+B;AAC1C,YAAA,SAAS,EAAE,gCAAgC;AAC3C,YAAA,SAAS,EAAE,sBAAsB;AAClC,SAAA;AACF,KAAA;;AAGH;AACA;AACA,IAAI,kBAAkB,GAAoC,IAAI;AAE9D;;;AAGG;AACI,MAAM,cAAc,GAAG,MAA+B;AAC3D,IAAA,kBAAkB,KAAlB,kBAAkB,GAAKA,0BAAqB,CAAC;;;QAG3C,MAAM,EAAEC,sCAA2B,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AACxD,QAAA,KAAK,EAAE,EAAE;QACT,MAAM,EAAE,CAAC,OAAO,+BAA+B,CAAC,EAAE,OAAO,8BAA8B,CAAC,CAAC;AAC1F,KAAA,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,KAAI;;QAE1B,kBAAkB,GAAG,IAAI;AACzB,QAAA,MAAM,KAAK;AACb,IAAA,CAAC,CAAC,CAAA;AACF,IAAA,OAAO,kBAAkB;AAC3B;AAEA;AACA,MAAM,WAAW,GAAG,IAAI,GAAG,CAAS,MAAM,CAAC,IAAI,CAACC,sBAAgB,CAAC,CAAC;AAElE;;;;AAIG;AACI,MAAM,iBAAiB,GAAG,CAAC,QAAgB,KAAkC,WAAW,CAAC,GAAG,CAAC,QAAQ;AAE5G;;;;;;AAMG;AACI,MAAM,eAAe,GAAG,OAAO,IAAY,EAAE,QAAmB,KAAwD;AAC7H,IAAA,MAAM,WAAW,GAAG,MAAM,cAAc,EAAE;;IAE1C,IAAI,iBAAiB,CAAC,QAAQ,CAAC;QAAE,MAAM,WAAW,CAAC,YAAY,CAACA,sBAAgB,CAAC,QAAQ,CAAC,CAAC;AAC3F,IAAA,MAAM,IAAI,GAAG,iBAAiB,CAAC,QAAQ,CAAC,IAAI,QAAQ,KAAK,MAAM,GAAG,QAAQ,GAAG,MAAM;AACnF,IAAA,OAAO,WAAW,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,gBAAgB,EAAE,CAAC;AACpE;AAEA;;;;;AAKG;AACI,MAAM,qBAAqB,GAAG,CAAC,IAAuB,KAAY;AACvE,IAAA,IAAI,CAAC,IAAI;AAAE,QAAA,OAAO,EAAE;IACpB,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,iCAAiC,CAAC;IACzE,OAAO,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE;AAC/C;;;;;;"}
@@ -1,3 +1,51 @@
1
+ import { type HighlighterCore } from 'shiki/core';
2
+ import { type BundledLanguage } from 'shiki/langs';
3
+ import type { SpecialLanguage } from 'shiki/types';
4
+ /** Any of Shiki's languages, or a special one such as `text` that needs no grammar. */
5
+ export type Languages = BundledLanguage | SpecialLanguage;
6
+ /** The two themes a snippet renders, with GitHub's token colours replaced by the design tokens. */
7
+ export declare const HIGHLIGHT_THEMES: {
8
+ readonly defaultColor: "light";
9
+ readonly themes: {
10
+ readonly light: "github-light";
11
+ readonly dark: "github-dark";
12
+ };
13
+ readonly colorReplacements: {
14
+ readonly 'github-light': {
15
+ readonly '#24292e': "var(--color-text-primary)";
16
+ readonly '#005cc5': "var(--color-utility-blue-600)";
17
+ readonly '#d73a49': "var(--color-utility-pink-600)";
18
+ readonly '#6f42c1': "var(--color-utility-brand-600)";
19
+ readonly '#032f62': "var(--color-primary)";
20
+ };
21
+ readonly 'github-dark': {
22
+ readonly '#e1e4e8': "var(--color-text-primary)";
23
+ readonly '#79b8ff': "var(--color-utility-blue-600)";
24
+ readonly '#f97583': "var(--color-utility-pink-600)";
25
+ readonly '#b392f0': "var(--color-utility-brand-600)";
26
+ readonly '#9ecbff': "var(--color-primary)";
27
+ };
28
+ };
29
+ };
30
+ /**
31
+ * The shared highlighter, created on the first call and reused by every snippet after that.
32
+ * @returns The core highlighter with both themes loaded and no grammars yet.
33
+ */
34
+ export declare const getHighlighter: () => Promise<HighlighterCore>;
35
+ /**
36
+ * Whether Shiki has a grammar for the language, as opposed to a special language such as `text` or a typo.
37
+ * @param language The `language` prop as given.
38
+ * @returns `true` when a grammar can be loaded for it.
39
+ */
40
+ export declare const isBundledLanguage: (language: string) => language is BundledLanguage;
41
+ /**
42
+ * Highlights source into a hast tree with the snippet's themes, loading the language's grammar on first use. A language
43
+ * with no grammar, including a typo, highlights as plain text rather than failing, so the snippet still shows the code.
44
+ * @param code The source to highlight.
45
+ * @param language The language id; anything Shiki does not know falls back to `text`.
46
+ * @returns The hast root for `toJsxRuntime`.
47
+ */
48
+ export declare const highlightToHast: (code: string, language: Languages) => Promise<ReturnType<HighlighterCore["codeToHast"]>>;
1
49
  /**
2
50
  * Reads the visible tab panel's text so the header copy button copies the active snippet.
3
51
  *
@@ -1 +1 @@
1
- {"version":3,"file":"codeSnippet.utils.d.ts","sourceRoot":"","sources":["../../../../src/components/molecules/CodeSnippet/codeSnippet.utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAAI,MAAM,UAAU,GAAG,IAAI,KAAG,MAI/D,CAAC"}
1
+ {"version":3,"file":"codeSnippet.utils.d.ts","sourceRoot":"","sources":["../../../../src/components/molecules/CodeSnippet/codeSnippet.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AAEzE,OAAO,EAAE,KAAK,eAAe,EAAoB,MAAM,aAAa,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,uFAAuF;AACvF,MAAM,MAAM,SAAS,GAAG,eAAe,GAAG,eAAe,CAAC;AAE1D,mGAAmG;AACnG,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;CAmBnB,CAAC;AAMX;;;GAGG;AACH,eAAO,MAAM,cAAc,QAAO,OAAO,CAAC,eAAe,CAaxD,CAAC;AAKF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,GAAI,UAAU,MAAM,KAAG,QAAQ,IAAI,eAA4C,CAAC;AAE9G;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAAU,MAAM,MAAM,EAAE,UAAU,SAAS,KAAG,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,CAM1H,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAAI,MAAM,UAAU,GAAG,IAAI,KAAG,MAI/D,CAAC"}
@@ -1,3 +1,72 @@
1
+ import { createHighlighterCore } from 'shiki/core';
2
+ import { createJavaScriptRegexEngine } from 'shiki/engine/javascript';
3
+ import { bundledLanguages } from 'shiki/langs';
4
+
5
+ /** The two themes a snippet renders, with GitHub's token colours replaced by the design tokens. */
6
+ const HIGHLIGHT_THEMES = {
7
+ defaultColor: 'light',
8
+ themes: { light: 'github-light', dark: 'github-dark' },
9
+ colorReplacements: {
10
+ 'github-light': {
11
+ '#24292e': 'var(--color-text-primary)',
12
+ '#005cc5': 'var(--color-utility-blue-600)',
13
+ '#d73a49': 'var(--color-utility-pink-600)',
14
+ '#6f42c1': 'var(--color-utility-brand-600)',
15
+ '#032f62': 'var(--color-primary)',
16
+ },
17
+ 'github-dark': {
18
+ '#e1e4e8': 'var(--color-text-primary)',
19
+ '#79b8ff': 'var(--color-utility-blue-600)',
20
+ '#f97583': 'var(--color-utility-pink-600)',
21
+ '#b392f0': 'var(--color-utility-brand-600)',
22
+ '#9ecbff': 'var(--color-primary)',
23
+ },
24
+ },
25
+ };
26
+ // One highlighter for every snippet, built on first use with no grammars: each language loads as its own chunk the first
27
+ // time a snippet asks for it. The JavaScript regex engine means no WASM download before the first highlight.
28
+ let highlighterPromise = null;
29
+ /**
30
+ * The shared highlighter, created on the first call and reused by every snippet after that.
31
+ * @returns The core highlighter with both themes loaded and no grammars yet.
32
+ */
33
+ const getHighlighter = () => {
34
+ highlighterPromise ?? (highlighterPromise = createHighlighterCore({
35
+ // Forgiving skips the few grammar patterns the engine cannot express instead of throwing, which costs a token's colour
36
+ // at most. The engine needs the RegExp `d` flag, so Chrome 90 and Safari 15 are the floor.
37
+ engine: createJavaScriptRegexEngine({ forgiving: true }),
38
+ langs: [],
39
+ themes: [import('shiki/themes/github-light.mjs'), import('shiki/themes/github-dark.mjs')],
40
+ }).catch((error) => {
41
+ // A failed creation, such as a theme chunk that did not load, must not pin every later snippet to the same rejection.
42
+ highlighterPromise = null;
43
+ throw error;
44
+ }));
45
+ return highlighterPromise;
46
+ };
47
+ // Own keys only: `in` would also accept `toString` and the other prototype names.
48
+ const languageIds = new Set(Object.keys(bundledLanguages));
49
+ /**
50
+ * Whether Shiki has a grammar for the language, as opposed to a special language such as `text` or a typo.
51
+ * @param language The `language` prop as given.
52
+ * @returns `true` when a grammar can be loaded for it.
53
+ */
54
+ const isBundledLanguage = (language) => languageIds.has(language);
55
+ /**
56
+ * Highlights source into a hast tree with the snippet's themes, loading the language's grammar on first use. A language
57
+ * with no grammar, including a typo, highlights as plain text rather than failing, so the snippet still shows the code.
58
+ * @param code The source to highlight.
59
+ * @param language The language id; anything Shiki does not know falls back to `text`.
60
+ * @returns The hast root for `toJsxRuntime`.
61
+ */
62
+ const highlightToHast = async (code, language) => {
63
+ const highlighter = await getHighlighter();
64
+ // Shiki skips a grammar it already holds, and the module system caches the import, so a repeat is cheap.
65
+ if (isBundledLanguage(language))
66
+ await highlighter.loadLanguage(bundledLanguages[language]);
67
+ const lang = isBundledLanguage(language) || language === 'ansi' ? language : 'text';
68
+ return highlighter.codeToHast(code, { lang, ...HIGHLIGHT_THEMES });
69
+ };
1
70
  /**
2
71
  * Reads the visible tab panel's text so the header copy button copies the active snippet.
3
72
  *
@@ -11,5 +80,5 @@ const getActiveTabPanelText = (root) => {
11
80
  return activePanel?.textContent?.trim() ?? '';
12
81
  };
13
82
 
14
- export { getActiveTabPanelText };
83
+ export { HIGHLIGHT_THEMES, getActiveTabPanelText, getHighlighter, highlightToHast, isBundledLanguage };
15
84
  //# sourceMappingURL=codeSnippet.utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"codeSnippet.utils.js","sources":["../../../../src/components/molecules/CodeSnippet/codeSnippet.utils.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;;;;;AAKG;AACI,MAAM,qBAAqB,GAAG,CAAC,IAAuB,KAAY;AACvE,IAAA,IAAI,CAAC,IAAI;AAAE,QAAA,OAAO,EAAE;IACpB,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,iCAAiC,CAAC;IACzE,OAAO,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE;AAC/C;;"}
1
+ {"version":3,"file":"codeSnippet.utils.js","sources":["../../../../src/components/molecules/CodeSnippet/codeSnippet.utils.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAQA;AACO,MAAM,gBAAgB,GAAG;AAC9B,IAAA,YAAY,EAAE,OAAO;IACrB,MAAM,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE;AACtD,IAAA,iBAAiB,EAAE;AACjB,QAAA,cAAc,EAAE;AACd,YAAA,SAAS,EAAE,2BAA2B;AACtC,YAAA,SAAS,EAAE,+BAA+B;AAC1C,YAAA,SAAS,EAAE,+BAA+B;AAC1C,YAAA,SAAS,EAAE,gCAAgC;AAC3C,YAAA,SAAS,EAAE,sBAAsB;AAClC,SAAA;AACD,QAAA,aAAa,EAAE;AACb,YAAA,SAAS,EAAE,2BAA2B;AACtC,YAAA,SAAS,EAAE,+BAA+B;AAC1C,YAAA,SAAS,EAAE,+BAA+B;AAC1C,YAAA,SAAS,EAAE,gCAAgC;AAC3C,YAAA,SAAS,EAAE,sBAAsB;AAClC,SAAA;AACF,KAAA;;AAGH;AACA;AACA,IAAI,kBAAkB,GAAoC,IAAI;AAE9D;;;AAGG;AACI,MAAM,cAAc,GAAG,MAA+B;AAC3D,IAAA,kBAAkB,KAAlB,kBAAkB,GAAK,qBAAqB,CAAC;;;QAG3C,MAAM,EAAE,2BAA2B,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AACxD,QAAA,KAAK,EAAE,EAAE;QACT,MAAM,EAAE,CAAC,OAAO,+BAA+B,CAAC,EAAE,OAAO,8BAA8B,CAAC,CAAC;AAC1F,KAAA,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,KAAI;;QAE1B,kBAAkB,GAAG,IAAI;AACzB,QAAA,MAAM,KAAK;AACb,IAAA,CAAC,CAAC,CAAA;AACF,IAAA,OAAO,kBAAkB;AAC3B;AAEA;AACA,MAAM,WAAW,GAAG,IAAI,GAAG,CAAS,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAElE;;;;AAIG;AACI,MAAM,iBAAiB,GAAG,CAAC,QAAgB,KAAkC,WAAW,CAAC,GAAG,CAAC,QAAQ;AAE5G;;;;;;AAMG;AACI,MAAM,eAAe,GAAG,OAAO,IAAY,EAAE,QAAmB,KAAwD;AAC7H,IAAA,MAAM,WAAW,GAAG,MAAM,cAAc,EAAE;;IAE1C,IAAI,iBAAiB,CAAC,QAAQ,CAAC;QAAE,MAAM,WAAW,CAAC,YAAY,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;AAC3F,IAAA,MAAM,IAAI,GAAG,iBAAiB,CAAC,QAAQ,CAAC,IAAI,QAAQ,KAAK,MAAM,GAAG,QAAQ,GAAG,MAAM;AACnF,IAAA,OAAO,WAAW,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,gBAAgB,EAAE,CAAC;AACpE;AAEA;;;;;AAKG;AACI,MAAM,qBAAqB,GAAG,CAAC,IAAuB,KAAY;AACvE,IAAA,IAAI,CAAC,IAAI;AAAE,QAAA,OAAO,EAAE;IACpB,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,iCAAiC,CAAC;IACzE,OAAO,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE;AAC/C;;"}
@@ -1,20 +1,42 @@
1
1
  'use strict';
2
2
 
3
+ var renderUtils = require('@flipdish/ui-library/utilities/renderUtils');
3
4
  var React = require('react');
4
5
 
5
6
  /**
6
7
  * Replaces the fallback nodes with syntax-highlighted nodes once `code` has been highlighted.
7
- * The first paint keeps the fallback so the snippet is not blank while highlighting runs.
8
+ * The first paint keeps the fallback so the snippet is not blank while highlighting runs, and a
9
+ * highlight that fails or is superseded by a newer `code` or `language` never replaces it.
8
10
  *
9
11
  * @param options The snippet source, its language, the nodes shown before highlighting finishes, and the highlighter.
10
12
  * @returns The nodes to render inside the code block.
11
13
  */
12
14
  const useCodeSnippetHighlight = ({ code, language, fallback, highlightCode, }) => {
13
15
  const [nodes, setNodes] = React.useState(fallback);
16
+ // Synced after commit, so a rejection never shows a fallback from a render React threw away.
17
+ const fallbackRef = React.useRef(fallback);
18
+ React.useLayoutEffect(() => {
19
+ fallbackRef.current = fallback;
20
+ }, [fallback]);
14
21
  React.useLayoutEffect(() => {
15
22
  if (!code)
16
23
  return;
17
- void highlightCode(code, language).then(setNodes);
24
+ // Grammars load on first use, so an earlier highlight can finish after a later one; only the latest request may render.
25
+ let stale = false;
26
+ highlightCode(code, language).then((highlighted) => {
27
+ if (!stale)
28
+ setNodes(highlighted);
29
+ }, (error) => {
30
+ // A failed highlight, such as a theme chunk that did not load, shows the plain code rather than an older highlight.
31
+ if (stale)
32
+ return;
33
+ setNodes(fallbackRef.current);
34
+ if (!renderUtils.isProductionBuild())
35
+ console.warn('CodeSnippet: highlighting failed, showing plain code.', error);
36
+ });
37
+ return () => {
38
+ stale = true;
39
+ };
18
40
  }, [code, language, highlightCode]);
19
41
  return nodes;
20
42
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useCodeSnippetHighlight.cjs","sources":["../../../../../src/components/molecules/CodeSnippet/hooks/useCodeSnippetHighlight.ts"],"sourcesContent":[null],"names":["useState","useLayoutEffect"],"mappings":";;;;AAeA;;;;;;AAMG;AACI,MAAM,uBAAuB,GAAG,CAA0B,EAC/D,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,aAAa,GAC4B,KAAe;IACxD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAGA,cAAQ,CAAC,QAAQ,CAAC;IAE5CC,qBAAe,CAAC,MAAK;AACnB,QAAA,IAAI,CAAC,IAAI;YAAE;QACX,KAAK,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;IACnD,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AAEnC,IAAA,OAAO,KAAK;AACd;;"}
1
+ {"version":3,"file":"useCodeSnippetHighlight.cjs","sources":["../../../../../src/components/molecules/CodeSnippet/hooks/useCodeSnippetHighlight.ts"],"sourcesContent":[null],"names":["useState","useRef","useLayoutEffect","isProductionBuild"],"mappings":";;;;;AAgBA;;;;;;;AAOG;AACI,MAAM,uBAAuB,GAAG,CAA0B,EAC/D,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,aAAa,GAC4B,KAAe;IACxD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAGA,cAAQ,CAAC,QAAQ,CAAC;;AAE5C,IAAA,MAAM,WAAW,GAAGC,YAAM,CAAC,QAAQ,CAAC;IACpCC,qBAAe,CAAC,MAAK;AACnB,QAAA,WAAW,CAAC,OAAO,GAAG,QAAQ;AAChC,IAAA,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;IAEdA,qBAAe,CAAC,MAAK;AACnB,QAAA,IAAI,CAAC,IAAI;YAAE;;QAEX,IAAI,KAAK,GAAG,KAAK;QACjB,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,IAAI,CAChC,CAAC,WAAW,KAAI;AACd,YAAA,IAAI,CAAC,KAAK;gBAAE,QAAQ,CAAC,WAAW,CAAC;AACnC,QAAA,CAAC,EACD,CAAC,KAAc,KAAI;;AAEjB,YAAA,IAAI,KAAK;gBAAE;AACX,YAAA,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC;YAC7B,IAAI,CAACC,6BAAiB,EAAE;AAAE,gBAAA,OAAO,CAAC,IAAI,CAAC,uDAAuD,EAAE,KAAK,CAAC;AACxG,QAAA,CAAC,CACF;AACD,QAAA,OAAO,MAAK;YACV,KAAK,GAAG,IAAI;AACd,QAAA,CAAC;IACH,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AAEnC,IAAA,OAAO,KAAK;AACd;;"}
@@ -11,7 +11,8 @@ interface UseCodeSnippetHighlightOptions<Language extends string> {
11
11
  }
12
12
  /**
13
13
  * Replaces the fallback nodes with syntax-highlighted nodes once `code` has been highlighted.
14
- * The first paint keeps the fallback so the snippet is not blank while highlighting runs.
14
+ * The first paint keeps the fallback so the snippet is not blank while highlighting runs, and a
15
+ * highlight that fails or is superseded by a newer `code` or `language` never replaces it.
15
16
  *
16
17
  * @param options The snippet source, its language, the nodes shown before highlighting finishes, and the highlighter.
17
18
  * @returns The nodes to render inside the code block.
@@ -1 +1 @@
1
- {"version":3,"file":"useCodeSnippetHighlight.d.ts","sourceRoot":"","sources":["../../../../../src/components/molecules/CodeSnippet/hooks/useCodeSnippetHighlight.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAA6B,MAAM,OAAO,CAAC;AAElE,UAAU,8BAA8B,CAAC,QAAQ,SAAS,MAAM;IAC9D,mGAAmG;IACnG,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,QAAQ,EAAE,QAAQ,CAAC;IACnB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,0EAA0E;IAC1E,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;CACzE;AAED;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,GAAI,QAAQ,SAAS,MAAM,EAAE,8CAK9D,8BAA8B,CAAC,QAAQ,CAAC,KAAG,SAS7C,CAAC"}
1
+ {"version":3,"file":"useCodeSnippetHighlight.d.ts","sourceRoot":"","sources":["../../../../../src/components/molecules/CodeSnippet/hooks/useCodeSnippetHighlight.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,SAAS,EAAqC,MAAM,OAAO,CAAC;AAE1E,UAAU,8BAA8B,CAAC,QAAQ,SAAS,MAAM;IAC9D,mGAAmG;IACnG,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,QAAQ,EAAE,QAAQ,CAAC;IACnB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,0EAA0E;IAC1E,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;CACzE;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,GAAI,QAAQ,SAAS,MAAM,EAAE,8CAK9D,8BAA8B,CAAC,QAAQ,CAAC,KAAG,SA6B7C,CAAC"}
@@ -1,18 +1,40 @@
1
- import { useState, useLayoutEffect } from 'react';
1
+ import { isProductionBuild } from '@flipdish/ui-library/utilities/renderUtils';
2
+ import { useState, useRef, useLayoutEffect } from 'react';
2
3
 
3
4
  /**
4
5
  * Replaces the fallback nodes with syntax-highlighted nodes once `code` has been highlighted.
5
- * The first paint keeps the fallback so the snippet is not blank while highlighting runs.
6
+ * The first paint keeps the fallback so the snippet is not blank while highlighting runs, and a
7
+ * highlight that fails or is superseded by a newer `code` or `language` never replaces it.
6
8
  *
7
9
  * @param options The snippet source, its language, the nodes shown before highlighting finishes, and the highlighter.
8
10
  * @returns The nodes to render inside the code block.
9
11
  */
10
12
  const useCodeSnippetHighlight = ({ code, language, fallback, highlightCode, }) => {
11
13
  const [nodes, setNodes] = useState(fallback);
14
+ // Synced after commit, so a rejection never shows a fallback from a render React threw away.
15
+ const fallbackRef = useRef(fallback);
16
+ useLayoutEffect(() => {
17
+ fallbackRef.current = fallback;
18
+ }, [fallback]);
12
19
  useLayoutEffect(() => {
13
20
  if (!code)
14
21
  return;
15
- void highlightCode(code, language).then(setNodes);
22
+ // Grammars load on first use, so an earlier highlight can finish after a later one; only the latest request may render.
23
+ let stale = false;
24
+ highlightCode(code, language).then((highlighted) => {
25
+ if (!stale)
26
+ setNodes(highlighted);
27
+ }, (error) => {
28
+ // A failed highlight, such as a theme chunk that did not load, shows the plain code rather than an older highlight.
29
+ if (stale)
30
+ return;
31
+ setNodes(fallbackRef.current);
32
+ if (!isProductionBuild())
33
+ console.warn('CodeSnippet: highlighting failed, showing plain code.', error);
34
+ });
35
+ return () => {
36
+ stale = true;
37
+ };
16
38
  }, [code, language, highlightCode]);
17
39
  return nodes;
18
40
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useCodeSnippetHighlight.js","sources":["../../../../../src/components/molecules/CodeSnippet/hooks/useCodeSnippetHighlight.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAeA;;;;;;AAMG;AACI,MAAM,uBAAuB,GAAG,CAA0B,EAC/D,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,aAAa,GAC4B,KAAe;IACxD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC;IAE5C,eAAe,CAAC,MAAK;AACnB,QAAA,IAAI,CAAC,IAAI;YAAE;QACX,KAAK,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;IACnD,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AAEnC,IAAA,OAAO,KAAK;AACd;;"}
1
+ {"version":3,"file":"useCodeSnippetHighlight.js","sources":["../../../../../src/components/molecules/CodeSnippet/hooks/useCodeSnippetHighlight.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAgBA;;;;;;;AAOG;AACI,MAAM,uBAAuB,GAAG,CAA0B,EAC/D,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,aAAa,GAC4B,KAAe;IACxD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC;;AAE5C,IAAA,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC;IACpC,eAAe,CAAC,MAAK;AACnB,QAAA,WAAW,CAAC,OAAO,GAAG,QAAQ;AAChC,IAAA,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;IAEd,eAAe,CAAC,MAAK;AACnB,QAAA,IAAI,CAAC,IAAI;YAAE;;QAEX,IAAI,KAAK,GAAG,KAAK;QACjB,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,IAAI,CAChC,CAAC,WAAW,KAAI;AACd,YAAA,IAAI,CAAC,KAAK;gBAAE,QAAQ,CAAC,WAAW,CAAC;AACnC,QAAA,CAAC,EACD,CAAC,KAAc,KAAI;;AAEjB,YAAA,IAAI,KAAK;gBAAE;AACX,YAAA,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC;YAC7B,IAAI,CAAC,iBAAiB,EAAE;AAAE,gBAAA,OAAO,CAAC,IAAI,CAAC,uDAAuD,EAAE,KAAK,CAAC;AACxG,QAAA,CAAC,CACF;AACD,QAAA,OAAO,MAAK;YACV,KAAK,GAAG,IAAI;AACd,QAAA,CAAC;IACH,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AAEnC,IAAA,OAAO,KAAK;AACd;;"}
@@ -10,36 +10,18 @@ var testIdUtils = require('@flipdish/ui-library/utilities/testIdUtils');
10
10
  var hastUtilToJsxRuntime = require('hast-util-to-jsx-runtime');
11
11
  var React = require('react');
12
12
  var reactAriaComponents = require('react-aria-components');
13
- var web = require('shiki/bundle/web');
14
13
  var codeSnippet_utils = require('./codeSnippet.utils.cjs');
15
14
  var useCodeSnippetCollapse = require('./hooks/useCodeSnippetCollapse.cjs');
16
15
  var useCodeSnippetHighlight = require('./hooks/useCodeSnippetHighlight.cjs');
17
16
 
17
+ /**
18
+ * Highlights source into React nodes with the snippet's themes, loading the grammar on first use.
19
+ * @param code The source to highlight.
20
+ * @param lang The language id; one Shiki does not know renders as plain text.
21
+ * @returns The highlighted `<pre>` tree, ready to render in place of the fallback.
22
+ */
18
23
  const highlight = async (code, lang) => {
19
- const out = await web.codeToHast(code, {
20
- lang: lang,
21
- defaultColor: 'light',
22
- themes: {
23
- light: 'github-light',
24
- dark: 'github-dark',
25
- },
26
- colorReplacements: {
27
- 'github-light': {
28
- '#24292e': 'var(--color-text-primary)',
29
- '#005cc5': 'var(--color-utility-blue-600)',
30
- '#d73a49': 'var(--color-utility-pink-600)',
31
- '#6f42c1': 'var(--color-utility-brand-600)',
32
- '#032f62': 'var(--color-primary)',
33
- },
34
- 'github-dark': {
35
- '#e1e4e8': 'var(--color-text-primary)',
36
- '#79b8ff': 'var(--color-utility-blue-600)',
37
- '#f97583': 'var(--color-utility-pink-600)',
38
- '#b392f0': 'var(--color-utility-brand-600)',
39
- '#9ecbff': 'var(--color-primary)',
40
- },
41
- },
42
- });
24
+ const out = await codeSnippet_utils.highlightToHast(code, lang);
43
25
  return hastUtilToJsxRuntime.toJsxRuntime(out, {
44
26
  Fragment: React.Fragment,
45
27
  jsx: jsxRuntime.jsx,
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../../src/components/molecules/CodeSnippet/index.tsx"],"sourcesContent":[null],"names":["codeToHast","toJsxRuntime","Fragment","jsx","jsxs","createContext","useCodeSnippetHighlight","useClipboard","useCodeSnippetCollapse","useContext","useResolvedTestId","_jsx","TestIdProvider","_jsxs","cx","Button","ButtonUtility","Expand06","joinTestId","Check","Copy01","useRef","AriaTabs","getActiveTabPanelText","AriaTabList","useTestIdPrefix","slugifyTestId","AriaTab","AriaTabPanel"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../../src/components/molecules/CodeSnippet/index.tsx"],"sourcesContent":[null],"names":["highlightToHast","toJsxRuntime","Fragment","jsx","jsxs","createContext","useCodeSnippetHighlight","useClipboard","useCodeSnippetCollapse","useContext","useResolvedTestId","_jsx","TestIdProvider","_jsxs","cx","Button","ButtonUtility","Expand06","joinTestId","Check","Copy01","useRef","AriaTabs","getActiveTabPanelText","AriaTabList","useTestIdPrefix","slugifyTestId","AriaTab","AriaTabPanel"],"mappings":"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"}
@@ -1,8 +1,13 @@
1
1
  import { type HTMLAttributes, type ReactNode } from 'react';
2
2
  import type { TabListProps, TabPanelProps, TabProps, TabsProps } from 'react-aria-components';
3
- import type { SpecialLanguage, StringLiteralUnion } from 'shiki/bundle/web';
4
- type SupportedLanguages = 'tsx' | 'js' | 'jsx' | 'ts' | 'typescript' | 'javascript' | 'json' | 'html' | 'bash' | 'css';
5
- type Languages = StringLiteralUnion<SupportedLanguages | SpecialLanguage>;
3
+ import { type Languages } from './codeSnippet.utils';
4
+ export type { Languages } from './codeSnippet.utils';
5
+ /**
6
+ * Highlights source into React nodes with the snippet's themes, loading the grammar on first use.
7
+ * @param code The source to highlight.
8
+ * @param lang The language id; one Shiki does not know renders as plain text.
9
+ * @returns The highlighted `<pre>` tree, ready to render in place of the fallback.
10
+ */
6
11
  export declare const highlight: (code: string, lang: Languages) => Promise<JSX.Element>;
7
12
  export interface CodeSnippetProps extends HTMLAttributes<HTMLDivElement> {
8
13
  /**
@@ -68,5 +73,4 @@ export declare const CodeSnippet: typeof CodeSnippetComponent & {
68
73
  Tab: typeof CodeSnippetTab;
69
74
  TabPanel: typeof CodeSnippetTabPanel;
70
75
  };
71
- export {};
72
76
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/molecules/CodeSnippet/index.tsx"],"names":[],"mappings":"AASA,OAAO,EAA+C,KAAK,cAAc,EAAE,KAAK,SAAS,EAAsC,MAAM,OAAO,CAAC;AAE7I,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAE9F,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAM5E,KAAK,kBAAkB,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,YAAY,GAAG,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;AACvH,KAAK,SAAS,GAAG,kBAAkB,CAAC,kBAAkB,GAAG,eAAe,CAAC,CAAC;AAE1E,eAAO,MAAM,SAAS,GAAU,MAAM,MAAM,EAAE,MAAM,SAAS,yBA+B5D,CAAC;AAkBF,MAAM,WAAW,gBAAiB,SAAQ,cAAc,CAAC,cAAc,CAAC;IACtE;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,QAAQ,EAAE,SAAS,CAAC;IAEpB;;;;;OAKG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IAEtB;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,2EAA2E;IAC3E,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,QAAA,MAAM,oBAAoB,GAAI,iIAW3B,gBAAgB,gCA6FlB,CAAC;AAEF,QAAA,MAAM,eAAe,GAAI,mEAAmE,SAAS,GAAG;IAAE,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,gCAwBjI,CAAC;AAEF,QAAA,MAAM,kBAAkB,GAAI,CAAC,SAAS,MAAM,EAAE,wCAAwC,YAAY,CAAC,CAAC,CAAC,gCAyBpG,CAAC;AAEF,MAAM,WAAW,mBAAoB,SAAQ,QAAQ;IACnD,0FAA0F;IAC1F,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,QAAA,MAAM,cAAc,GAAI,wCAAwC,mBAAmB,gCAqBlF,CAAC;AAEF,QAAA,MAAM,mBAAmB,GAAI,wCAAwC,aAAa,gCAcjF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,WAAW,EAA2B,OAAO,oBAAoB,GAAG;IAC/E,IAAI,EAAE,OAAO,eAAe,CAAC;IAC7B,OAAO,EAAE,OAAO,kBAAkB,CAAC;IACnC,GAAG,EAAE,OAAO,cAAc,CAAC;IAC3B,QAAQ,EAAE,OAAO,mBAAmB,CAAC;CACtC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/molecules/CodeSnippet/index.tsx"],"names":[],"mappings":"AASA,OAAO,EAA+C,KAAK,cAAc,EAAE,KAAK,SAAS,EAAsC,MAAM,OAAO,CAAC;AAE7I,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAE9F,OAAO,EAA0C,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAI7F,YAAY,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD;;;;;GAKG;AACH,eAAO,MAAM,SAAS,GAAU,MAAM,MAAM,EAAE,MAAM,SAAS,yBAQ5D,CAAC;AAkBF,MAAM,WAAW,gBAAiB,SAAQ,cAAc,CAAC,cAAc,CAAC;IACtE;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,QAAQ,EAAE,SAAS,CAAC;IAEpB;;;;;OAKG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IAEtB;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,2EAA2E;IAC3E,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,QAAA,MAAM,oBAAoB,GAAI,iIAW3B,gBAAgB,gCA6FlB,CAAC;AAEF,QAAA,MAAM,eAAe,GAAI,mEAAmE,SAAS,GAAG;IAAE,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,gCAwBjI,CAAC;AAEF,QAAA,MAAM,kBAAkB,GAAI,CAAC,SAAS,MAAM,EAAE,wCAAwC,YAAY,CAAC,CAAC,CAAC,gCAyBpG,CAAC;AAEF,MAAM,WAAW,mBAAoB,SAAQ,QAAQ;IACnD,0FAA0F;IAC1F,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,QAAA,MAAM,cAAc,GAAI,wCAAwC,mBAAmB,gCAqBlF,CAAC;AAEF,QAAA,MAAM,mBAAmB,GAAI,wCAAwC,aAAa,gCAcjF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,WAAW,EAA2B,OAAO,oBAAoB,GAAG;IAC/E,IAAI,EAAE,OAAO,eAAe,CAAC;IAC7B,OAAO,EAAE,OAAO,kBAAkB,CAAC;IACnC,GAAG,EAAE,OAAO,cAAc,CAAC;IAC3B,QAAQ,EAAE,OAAO,mBAAmB,CAAC;CACtC,CAAC"}
@@ -8,36 +8,18 @@ import { useResolvedTestId, TestIdProvider, joinTestId, useTestIdPrefix, slugify
8
8
  import { toJsxRuntime } from 'hast-util-to-jsx-runtime';
9
9
  import { createContext, useContext, Fragment, useRef } from 'react';
10
10
  import { Tabs, TabList, Tab, TabPanel } from 'react-aria-components';
11
- import { codeToHast } from 'shiki/bundle/web';
12
- import { getActiveTabPanelText } from './codeSnippet.utils.js';
11
+ import { highlightToHast, getActiveTabPanelText } from './codeSnippet.utils.js';
13
12
  import { useCodeSnippetCollapse } from './hooks/useCodeSnippetCollapse.js';
14
13
  import { useCodeSnippetHighlight } from './hooks/useCodeSnippetHighlight.js';
15
14
 
15
+ /**
16
+ * Highlights source into React nodes with the snippet's themes, loading the grammar on first use.
17
+ * @param code The source to highlight.
18
+ * @param lang The language id; one Shiki does not know renders as plain text.
19
+ * @returns The highlighted `<pre>` tree, ready to render in place of the fallback.
20
+ */
16
21
  const highlight = async (code, lang) => {
17
- const out = await codeToHast(code, {
18
- lang: lang,
19
- defaultColor: 'light',
20
- themes: {
21
- light: 'github-light',
22
- dark: 'github-dark',
23
- },
24
- colorReplacements: {
25
- 'github-light': {
26
- '#24292e': 'var(--color-text-primary)',
27
- '#005cc5': 'var(--color-utility-blue-600)',
28
- '#d73a49': 'var(--color-utility-pink-600)',
29
- '#6f42c1': 'var(--color-utility-brand-600)',
30
- '#032f62': 'var(--color-primary)',
31
- },
32
- 'github-dark': {
33
- '#e1e4e8': 'var(--color-text-primary)',
34
- '#79b8ff': 'var(--color-utility-blue-600)',
35
- '#f97583': 'var(--color-utility-pink-600)',
36
- '#b392f0': 'var(--color-utility-brand-600)',
37
- '#9ecbff': 'var(--color-primary)',
38
- },
39
- },
40
- });
22
+ const out = await highlightToHast(code, lang);
41
23
  return toJsxRuntime(out, {
42
24
  Fragment,
43
25
  jsx,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/molecules/CodeSnippet/index.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs","AriaTabs","AriaTabList","AriaTab","AriaTabPanel"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/molecules/CodeSnippet/index.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs","AriaTabs","AriaTabList","AriaTab","AriaTabPanel"],"mappings":"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"}