@almadar/ui 5.122.11 → 5.122.13

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.
@@ -32,6 +32,35 @@ var langDiff = require('react-syntax-highlighter/dist/esm/languages/prism/diff.j
32
32
  var langToml = require('react-syntax-highlighter/dist/esm/languages/prism/toml.js');
33
33
  var langGo = require('react-syntax-highlighter/dist/esm/languages/prism/go.js');
34
34
  var langGraphql = require('react-syntax-highlighter/dist/esm/languages/prism/graphql.js');
35
+ var langClojure = require('react-syntax-highlighter/dist/esm/languages/prism/clojure.js');
36
+ var langHaskell = require('react-syntax-highlighter/dist/esm/languages/prism/haskell.js');
37
+ var langLisp = require('react-syntax-highlighter/dist/esm/languages/prism/lisp.js');
38
+ var langScheme = require('react-syntax-highlighter/dist/esm/languages/prism/scheme.js');
39
+ var langScala = require('react-syntax-highlighter/dist/esm/languages/prism/scala.js');
40
+ var langElixir = require('react-syntax-highlighter/dist/esm/languages/prism/elixir.js');
41
+ var langErlang = require('react-syntax-highlighter/dist/esm/languages/prism/erlang.js');
42
+ var langElm = require('react-syntax-highlighter/dist/esm/languages/prism/elm.js');
43
+ var langFsharp = require('react-syntax-highlighter/dist/esm/languages/prism/fsharp.js');
44
+ var langOcaml = require('react-syntax-highlighter/dist/esm/languages/prism/ocaml.js');
45
+ var langJava = require('react-syntax-highlighter/dist/esm/languages/prism/java.js');
46
+ var langC = require('react-syntax-highlighter/dist/esm/languages/prism/c.js');
47
+ var langCpp = require('react-syntax-highlighter/dist/esm/languages/prism/cpp.js');
48
+ var langCsharp = require('react-syntax-highlighter/dist/esm/languages/prism/csharp.js');
49
+ var langObjectivec = require('react-syntax-highlighter/dist/esm/languages/prism/objectivec.js');
50
+ var langPhp = require('react-syntax-highlighter/dist/esm/languages/prism/php.js');
51
+ var langRuby = require('react-syntax-highlighter/dist/esm/languages/prism/ruby.js');
52
+ var langSwift = require('react-syntax-highlighter/dist/esm/languages/prism/swift.js');
53
+ var langKotlin = require('react-syntax-highlighter/dist/esm/languages/prism/kotlin.js');
54
+ var langLua = require('react-syntax-highlighter/dist/esm/languages/prism/lua.js');
55
+ var langR = require('react-syntax-highlighter/dist/esm/languages/prism/r.js');
56
+ var langDart = require('react-syntax-highlighter/dist/esm/languages/prism/dart.js');
57
+ var langJulia = require('react-syntax-highlighter/dist/esm/languages/prism/julia.js');
58
+ var langFortran = require('react-syntax-highlighter/dist/esm/languages/prism/fortran.js');
59
+ var langPerl = require('react-syntax-highlighter/dist/esm/languages/prism/perl.js');
60
+ var langPowershell = require('react-syntax-highlighter/dist/esm/languages/prism/powershell.js');
61
+ var langMakefile = require('react-syntax-highlighter/dist/esm/languages/prism/makefile.js');
62
+ var langNginx = require('react-syntax-highlighter/dist/esm/languages/prism/nginx.js');
63
+ var langIni = require('react-syntax-highlighter/dist/esm/languages/prism/ini.js');
35
64
  var ReactMarkdown = require('react-markdown');
36
65
  var remarkGfm = require('remark-gfm');
37
66
  var remarkMath = require('remark-math');
@@ -87,6 +116,35 @@ var langDiff__default = /*#__PURE__*/_interopDefault(langDiff);
87
116
  var langToml__default = /*#__PURE__*/_interopDefault(langToml);
88
117
  var langGo__default = /*#__PURE__*/_interopDefault(langGo);
89
118
  var langGraphql__default = /*#__PURE__*/_interopDefault(langGraphql);
119
+ var langClojure__default = /*#__PURE__*/_interopDefault(langClojure);
120
+ var langHaskell__default = /*#__PURE__*/_interopDefault(langHaskell);
121
+ var langLisp__default = /*#__PURE__*/_interopDefault(langLisp);
122
+ var langScheme__default = /*#__PURE__*/_interopDefault(langScheme);
123
+ var langScala__default = /*#__PURE__*/_interopDefault(langScala);
124
+ var langElixir__default = /*#__PURE__*/_interopDefault(langElixir);
125
+ var langErlang__default = /*#__PURE__*/_interopDefault(langErlang);
126
+ var langElm__default = /*#__PURE__*/_interopDefault(langElm);
127
+ var langFsharp__default = /*#__PURE__*/_interopDefault(langFsharp);
128
+ var langOcaml__default = /*#__PURE__*/_interopDefault(langOcaml);
129
+ var langJava__default = /*#__PURE__*/_interopDefault(langJava);
130
+ var langC__default = /*#__PURE__*/_interopDefault(langC);
131
+ var langCpp__default = /*#__PURE__*/_interopDefault(langCpp);
132
+ var langCsharp__default = /*#__PURE__*/_interopDefault(langCsharp);
133
+ var langObjectivec__default = /*#__PURE__*/_interopDefault(langObjectivec);
134
+ var langPhp__default = /*#__PURE__*/_interopDefault(langPhp);
135
+ var langRuby__default = /*#__PURE__*/_interopDefault(langRuby);
136
+ var langSwift__default = /*#__PURE__*/_interopDefault(langSwift);
137
+ var langKotlin__default = /*#__PURE__*/_interopDefault(langKotlin);
138
+ var langLua__default = /*#__PURE__*/_interopDefault(langLua);
139
+ var langR__default = /*#__PURE__*/_interopDefault(langR);
140
+ var langDart__default = /*#__PURE__*/_interopDefault(langDart);
141
+ var langJulia__default = /*#__PURE__*/_interopDefault(langJulia);
142
+ var langFortran__default = /*#__PURE__*/_interopDefault(langFortran);
143
+ var langPerl__default = /*#__PURE__*/_interopDefault(langPerl);
144
+ var langPowershell__default = /*#__PURE__*/_interopDefault(langPowershell);
145
+ var langMakefile__default = /*#__PURE__*/_interopDefault(langMakefile);
146
+ var langNginx__default = /*#__PURE__*/_interopDefault(langNginx);
147
+ var langIni__default = /*#__PURE__*/_interopDefault(langIni);
90
148
  var ReactMarkdown__default = /*#__PURE__*/_interopDefault(ReactMarkdown);
91
149
  var remarkGfm__default = /*#__PURE__*/_interopDefault(remarkGfm);
92
150
  var remarkMath__default = /*#__PURE__*/_interopDefault(remarkMath);
@@ -16680,6 +16738,19 @@ var init_EmptyState = __esm({
16680
16738
  EmptyState.displayName = "EmptyState";
16681
16739
  }
16682
16740
  });
16741
+ function isLanguageRegistered(lang) {
16742
+ return CODE_LANGUAGE_SET.has(lang) || dynamicallyLoaded.has(lang);
16743
+ }
16744
+ async function loadPrismLanguage(lang) {
16745
+ if (isLanguageRegistered(lang)) return;
16746
+ try {
16747
+ const grammar = codeLanguageLoader ? await codeLanguageLoader(lang) : null;
16748
+ if (grammar) SyntaxHighlighter__default.default.registerLanguage(lang, grammar);
16749
+ dynamicallyLoaded.add(lang);
16750
+ } catch {
16751
+ dynamicallyLoaded.add(lang);
16752
+ }
16753
+ }
16683
16754
  function computeFoldRegions(code) {
16684
16755
  const lines = code.split("\n");
16685
16756
  const regions = [];
@@ -16715,7 +16786,8 @@ function computeFoldRegions(code) {
16715
16786
  return regions.sort((a, b) => a.start - b.start);
16716
16787
  }
16717
16788
  function toCodeLanguage(value) {
16718
- return value && CODE_LANGUAGE_SET.has(value) ? value : "text";
16789
+ if (!value) return "text";
16790
+ return value.toLowerCase();
16719
16791
  }
16720
16792
  function generateDiff(oldVal, newVal) {
16721
16793
  const oldLines = oldVal.split("\n");
@@ -16734,7 +16806,24 @@ function generateDiff(oldVal, newVal) {
16734
16806
  }
16735
16807
  return diff;
16736
16808
  }
16737
- var orbStyleOverrides, orbStyle, loloStyleOverrides, loloStyle, log4, CODE_LANGUAGES, CODE_LANGUAGE_SET, DIFF_STYLES, DIFF_STYLE_FALLBACK, LINE_PROPS_FN, HIDDEN_LINE_NUMBERS, CodeBlock;
16809
+ function useLanguageReady(language) {
16810
+ const [ready, setReady] = React91.useState(() => isLanguageRegistered(language));
16811
+ React91.useEffect(() => {
16812
+ if (isLanguageRegistered(language)) {
16813
+ if (!ready) setReady(true);
16814
+ return;
16815
+ }
16816
+ let active = true;
16817
+ loadPrismLanguage(language).then(() => {
16818
+ if (active) setReady(true);
16819
+ });
16820
+ return () => {
16821
+ active = false;
16822
+ };
16823
+ }, [language]);
16824
+ return ready;
16825
+ }
16826
+ var dynamicallyLoaded, codeLanguageLoader, orbStyleOverrides, orbStyle, loloStyleOverrides, loloStyle, log4, CODE_LANGUAGES, CODE_LANGUAGE_SET, DIFF_STYLES, DIFF_STYLE_FALLBACK, LINE_PROPS_FN, HIDDEN_LINE_NUMBERS, CodeBlock;
16738
16827
  var init_CodeBlock = __esm({
16739
16828
  "components/core/molecules/markdown/CodeBlock.tsx"() {
16740
16829
  init_cn();
@@ -16773,8 +16862,62 @@ var init_CodeBlock = __esm({
16773
16862
  SyntaxHighlighter__default.default.registerLanguage("toml", langToml__default.default);
16774
16863
  SyntaxHighlighter__default.default.registerLanguage("go", langGo__default.default);
16775
16864
  SyntaxHighlighter__default.default.registerLanguage("graphql", langGraphql__default.default);
16865
+ SyntaxHighlighter__default.default.registerLanguage("clojure", langClojure__default.default);
16866
+ SyntaxHighlighter__default.default.registerLanguage("clj", langClojure__default.default);
16867
+ SyntaxHighlighter__default.default.registerLanguage("edn", langClojure__default.default);
16868
+ SyntaxHighlighter__default.default.registerLanguage("haskell", langHaskell__default.default);
16869
+ SyntaxHighlighter__default.default.registerLanguage("hs", langHaskell__default.default);
16870
+ SyntaxHighlighter__default.default.registerLanguage("lisp", langLisp__default.default);
16871
+ SyntaxHighlighter__default.default.registerLanguage("scheme", langScheme__default.default);
16872
+ SyntaxHighlighter__default.default.registerLanguage("scala", langScala__default.default);
16873
+ SyntaxHighlighter__default.default.registerLanguage("elixir", langElixir__default.default);
16874
+ SyntaxHighlighter__default.default.registerLanguage("ex", langElixir__default.default);
16875
+ SyntaxHighlighter__default.default.registerLanguage("exs", langElixir__default.default);
16876
+ SyntaxHighlighter__default.default.registerLanguage("erlang", langErlang__default.default);
16877
+ SyntaxHighlighter__default.default.registerLanguage("erl", langErlang__default.default);
16878
+ SyntaxHighlighter__default.default.registerLanguage("elm", langElm__default.default);
16879
+ SyntaxHighlighter__default.default.registerLanguage("fsharp", langFsharp__default.default);
16880
+ SyntaxHighlighter__default.default.registerLanguage("fs", langFsharp__default.default);
16881
+ SyntaxHighlighter__default.default.registerLanguage("fsx", langFsharp__default.default);
16882
+ SyntaxHighlighter__default.default.registerLanguage("ocaml", langOcaml__default.default);
16883
+ SyntaxHighlighter__default.default.registerLanguage("ml", langOcaml__default.default);
16884
+ SyntaxHighlighter__default.default.registerLanguage("java", langJava__default.default);
16885
+ SyntaxHighlighter__default.default.registerLanguage("c", langC__default.default);
16886
+ SyntaxHighlighter__default.default.registerLanguage("cpp", langCpp__default.default);
16887
+ SyntaxHighlighter__default.default.registerLanguage("c++", langCpp__default.default);
16888
+ SyntaxHighlighter__default.default.registerLanguage("cc", langCpp__default.default);
16889
+ SyntaxHighlighter__default.default.registerLanguage("cxx", langCpp__default.default);
16890
+ SyntaxHighlighter__default.default.registerLanguage("hpp", langCpp__default.default);
16891
+ SyntaxHighlighter__default.default.registerLanguage("h", langCpp__default.default);
16892
+ SyntaxHighlighter__default.default.registerLanguage("csharp", langCsharp__default.default);
16893
+ SyntaxHighlighter__default.default.registerLanguage("cs", langCsharp__default.default);
16894
+ SyntaxHighlighter__default.default.registerLanguage("objectivec", langObjectivec__default.default);
16895
+ SyntaxHighlighter__default.default.registerLanguage("objc", langObjectivec__default.default);
16896
+ SyntaxHighlighter__default.default.registerLanguage("php", langPhp__default.default);
16897
+ SyntaxHighlighter__default.default.registerLanguage("ruby", langRuby__default.default);
16898
+ SyntaxHighlighter__default.default.registerLanguage("rb", langRuby__default.default);
16899
+ SyntaxHighlighter__default.default.registerLanguage("swift", langSwift__default.default);
16900
+ SyntaxHighlighter__default.default.registerLanguage("kotlin", langKotlin__default.default);
16901
+ SyntaxHighlighter__default.default.registerLanguage("kt", langKotlin__default.default);
16902
+ SyntaxHighlighter__default.default.registerLanguage("lua", langLua__default.default);
16903
+ SyntaxHighlighter__default.default.registerLanguage("r", langR__default.default);
16904
+ SyntaxHighlighter__default.default.registerLanguage("dart", langDart__default.default);
16905
+ SyntaxHighlighter__default.default.registerLanguage("julia", langJulia__default.default);
16906
+ SyntaxHighlighter__default.default.registerLanguage("fortran", langFortran__default.default);
16907
+ SyntaxHighlighter__default.default.registerLanguage("f90", langFortran__default.default);
16908
+ SyntaxHighlighter__default.default.registerLanguage("f95", langFortran__default.default);
16909
+ SyntaxHighlighter__default.default.registerLanguage("perl", langPerl__default.default);
16910
+ SyntaxHighlighter__default.default.registerLanguage("pl", langPerl__default.default);
16911
+ SyntaxHighlighter__default.default.registerLanguage("powershell", langPowershell__default.default);
16912
+ SyntaxHighlighter__default.default.registerLanguage("ps1", langPowershell__default.default);
16913
+ SyntaxHighlighter__default.default.registerLanguage("makefile", langMakefile__default.default);
16914
+ SyntaxHighlighter__default.default.registerLanguage("make", langMakefile__default.default);
16915
+ SyntaxHighlighter__default.default.registerLanguage("nginx", langNginx__default.default);
16916
+ SyntaxHighlighter__default.default.registerLanguage("ini", langIni__default.default);
16776
16917
  SyntaxHighlighter__default.default.registerLanguage("orb", syntax.orbLanguage);
16777
16918
  SyntaxHighlighter__default.default.registerLanguage("lolo", syntax.loloLanguage);
16919
+ dynamicallyLoaded = /* @__PURE__ */ new Set();
16920
+ codeLanguageLoader = null;
16778
16921
  orbStyleOverrides = {
16779
16922
  "orb-binding": { color: syntax.ORB_COLORS.dark.binding, fontWeight: "bold" },
16780
16923
  "orb-effect": { color: syntax.ORB_COLORS.dark.effect, fontWeight: "bold" },
@@ -16845,6 +16988,58 @@ var init_CodeBlock = __esm({
16845
16988
  "graphql",
16846
16989
  "html",
16847
16990
  "xml",
16991
+ "clojure",
16992
+ "clj",
16993
+ "edn",
16994
+ "haskell",
16995
+ "hs",
16996
+ "lisp",
16997
+ "scheme",
16998
+ "scala",
16999
+ "elixir",
17000
+ "ex",
17001
+ "exs",
17002
+ "erlang",
17003
+ "erl",
17004
+ "elm",
17005
+ "fsharp",
17006
+ "fs",
17007
+ "fsx",
17008
+ "ocaml",
17009
+ "ml",
17010
+ "java",
17011
+ "c",
17012
+ "cpp",
17013
+ "c++",
17014
+ "cc",
17015
+ "cxx",
17016
+ "hpp",
17017
+ "h",
17018
+ "csharp",
17019
+ "cs",
17020
+ "objectivec",
17021
+ "objc",
17022
+ "php",
17023
+ "ruby",
17024
+ "rb",
17025
+ "swift",
17026
+ "kotlin",
17027
+ "kt",
17028
+ "lua",
17029
+ "r",
17030
+ "dart",
17031
+ "julia",
17032
+ "fortran",
17033
+ "f90",
17034
+ "f95",
17035
+ "perl",
17036
+ "pl",
17037
+ "powershell",
17038
+ "ps1",
17039
+ "makefile",
17040
+ "make",
17041
+ "nginx",
17042
+ "ini",
16848
17043
  "orb",
16849
17044
  "lolo"
16850
17045
  ];
@@ -16890,6 +17085,7 @@ var init_CodeBlock = __esm({
16890
17085
  const isOrb = language === "orb";
16891
17086
  const isLolo = language === "lolo";
16892
17087
  const activeStyle = isOrb ? orbStyle : isLolo ? loloStyle : dark__default.default;
17088
+ const languageReady = useLanguageReady(language);
16893
17089
  const eventBus = useEventBus();
16894
17090
  const { t } = hooks.useTranslate();
16895
17091
  const scrollRef = React91.useRef(null);
@@ -17013,7 +17209,7 @@ var init_CodeBlock = __esm({
17013
17209
  children: code
17014
17210
  }
17015
17211
  ),
17016
- [code, language, activeStyle]
17212
+ [code, language, activeStyle, languageReady]
17017
17213
  );
17018
17214
  React91.useLayoutEffect(() => {
17019
17215
  const container = codeRef.current;
@@ -17613,10 +17809,10 @@ var init_MarkdownContent = __esm({
17613
17809
  }
17614
17810
  });
17615
17811
 
17616
- // components/core/molecules/lessonSegmentUtils.ts
17812
+ // lib/lessonSegmentUtils.ts
17617
17813
  function parseMarkdownWithCodeBlocks(content) {
17618
17814
  const segments = [];
17619
- const codeBlockRegex = /```([\w-]+)?(?:\s+(run))?\n([\s\S]*?)```/g;
17815
+ const codeBlockRegex = /```([^\n\r]*)\r?\n([\s\S]*?)```/g;
17620
17816
  let lastIndex = 0;
17621
17817
  let match;
17622
17818
  while ((match = codeBlockRegex.exec(content)) !== null) {
@@ -17624,12 +17820,12 @@ function parseMarkdownWithCodeBlocks(content) {
17624
17820
  if (before.trim()) {
17625
17821
  segments.push({ type: "markdown", content: before });
17626
17822
  }
17627
- const rawLanguage = match[1] ?? "text";
17628
- const runModifier = !!match[2];
17823
+ const tokens = match[1].trim().split(/\s+/).filter(Boolean);
17824
+ let rawLanguage = tokens[0] ?? "text";
17629
17825
  const suffixRunnable = rawLanguage.endsWith("-runnable");
17630
- const runnable = runModifier || suffixRunnable;
17826
+ const runnable = suffixRunnable || tokens.includes("run");
17631
17827
  const baseLanguage = suffixRunnable ? rawLanguage.slice(0, -"-runnable".length) || "text" : rawLanguage;
17632
- segments.push({ type: "code", language: baseLanguage, content: match[3].trim(), runnable });
17828
+ segments.push({ type: "code", language: baseLanguage, content: match[2].trim(), runnable });
17633
17829
  lastIndex = codeBlockRegex.lastIndex;
17634
17830
  }
17635
17831
  const remaining = content.slice(lastIndex);
@@ -17639,7 +17835,7 @@ function parseMarkdownWithCodeBlocks(content) {
17639
17835
  return segments;
17640
17836
  }
17641
17837
  var init_lessonSegmentUtils = __esm({
17642
- "components/core/molecules/lessonSegmentUtils.ts"() {
17838
+ "lib/lessonSegmentUtils.ts"() {
17643
17839
  }
17644
17840
  });
17645
17841
  var BLOOM_CONFIG, BloomQuizBlock;
package/dist/avl/index.js CHANGED
@@ -32,6 +32,35 @@ import langDiff from 'react-syntax-highlighter/dist/esm/languages/prism/diff.js'
32
32
  import langToml from 'react-syntax-highlighter/dist/esm/languages/prism/toml.js';
33
33
  import langGo from 'react-syntax-highlighter/dist/esm/languages/prism/go.js';
34
34
  import langGraphql from 'react-syntax-highlighter/dist/esm/languages/prism/graphql.js';
35
+ import langClojure from 'react-syntax-highlighter/dist/esm/languages/prism/clojure.js';
36
+ import langHaskell from 'react-syntax-highlighter/dist/esm/languages/prism/haskell.js';
37
+ import langLisp from 'react-syntax-highlighter/dist/esm/languages/prism/lisp.js';
38
+ import langScheme from 'react-syntax-highlighter/dist/esm/languages/prism/scheme.js';
39
+ import langScala from 'react-syntax-highlighter/dist/esm/languages/prism/scala.js';
40
+ import langElixir from 'react-syntax-highlighter/dist/esm/languages/prism/elixir.js';
41
+ import langErlang from 'react-syntax-highlighter/dist/esm/languages/prism/erlang.js';
42
+ import langElm from 'react-syntax-highlighter/dist/esm/languages/prism/elm.js';
43
+ import langFsharp from 'react-syntax-highlighter/dist/esm/languages/prism/fsharp.js';
44
+ import langOcaml from 'react-syntax-highlighter/dist/esm/languages/prism/ocaml.js';
45
+ import langJava from 'react-syntax-highlighter/dist/esm/languages/prism/java.js';
46
+ import langC from 'react-syntax-highlighter/dist/esm/languages/prism/c.js';
47
+ import langCpp from 'react-syntax-highlighter/dist/esm/languages/prism/cpp.js';
48
+ import langCsharp from 'react-syntax-highlighter/dist/esm/languages/prism/csharp.js';
49
+ import langObjectivec from 'react-syntax-highlighter/dist/esm/languages/prism/objectivec.js';
50
+ import langPhp from 'react-syntax-highlighter/dist/esm/languages/prism/php.js';
51
+ import langRuby from 'react-syntax-highlighter/dist/esm/languages/prism/ruby.js';
52
+ import langSwift from 'react-syntax-highlighter/dist/esm/languages/prism/swift.js';
53
+ import langKotlin from 'react-syntax-highlighter/dist/esm/languages/prism/kotlin.js';
54
+ import langLua from 'react-syntax-highlighter/dist/esm/languages/prism/lua.js';
55
+ import langR from 'react-syntax-highlighter/dist/esm/languages/prism/r.js';
56
+ import langDart from 'react-syntax-highlighter/dist/esm/languages/prism/dart.js';
57
+ import langJulia from 'react-syntax-highlighter/dist/esm/languages/prism/julia.js';
58
+ import langFortran from 'react-syntax-highlighter/dist/esm/languages/prism/fortran.js';
59
+ import langPerl from 'react-syntax-highlighter/dist/esm/languages/prism/perl.js';
60
+ import langPowershell from 'react-syntax-highlighter/dist/esm/languages/prism/powershell.js';
61
+ import langMakefile from 'react-syntax-highlighter/dist/esm/languages/prism/makefile.js';
62
+ import langNginx from 'react-syntax-highlighter/dist/esm/languages/prism/nginx.js';
63
+ import langIni from 'react-syntax-highlighter/dist/esm/languages/prism/ini.js';
35
64
  import ReactMarkdown from 'react-markdown';
36
65
  import remarkGfm from 'remark-gfm';
37
66
  import remarkMath from 'remark-math';
@@ -16634,6 +16663,19 @@ var init_EmptyState = __esm({
16634
16663
  EmptyState.displayName = "EmptyState";
16635
16664
  }
16636
16665
  });
16666
+ function isLanguageRegistered(lang) {
16667
+ return CODE_LANGUAGE_SET.has(lang) || dynamicallyLoaded.has(lang);
16668
+ }
16669
+ async function loadPrismLanguage(lang) {
16670
+ if (isLanguageRegistered(lang)) return;
16671
+ try {
16672
+ const grammar = codeLanguageLoader ? await codeLanguageLoader(lang) : null;
16673
+ if (grammar) SyntaxHighlighter.registerLanguage(lang, grammar);
16674
+ dynamicallyLoaded.add(lang);
16675
+ } catch {
16676
+ dynamicallyLoaded.add(lang);
16677
+ }
16678
+ }
16637
16679
  function computeFoldRegions(code) {
16638
16680
  const lines = code.split("\n");
16639
16681
  const regions = [];
@@ -16669,7 +16711,8 @@ function computeFoldRegions(code) {
16669
16711
  return regions.sort((a, b) => a.start - b.start);
16670
16712
  }
16671
16713
  function toCodeLanguage(value) {
16672
- return value && CODE_LANGUAGE_SET.has(value) ? value : "text";
16714
+ if (!value) return "text";
16715
+ return value.toLowerCase();
16673
16716
  }
16674
16717
  function generateDiff(oldVal, newVal) {
16675
16718
  const oldLines = oldVal.split("\n");
@@ -16688,7 +16731,24 @@ function generateDiff(oldVal, newVal) {
16688
16731
  }
16689
16732
  return diff;
16690
16733
  }
16691
- var orbStyleOverrides, orbStyle, loloStyleOverrides, loloStyle, log4, CODE_LANGUAGES, CODE_LANGUAGE_SET, DIFF_STYLES, DIFF_STYLE_FALLBACK, LINE_PROPS_FN, HIDDEN_LINE_NUMBERS, CodeBlock;
16734
+ function useLanguageReady(language) {
16735
+ const [ready, setReady] = useState(() => isLanguageRegistered(language));
16736
+ useEffect(() => {
16737
+ if (isLanguageRegistered(language)) {
16738
+ if (!ready) setReady(true);
16739
+ return;
16740
+ }
16741
+ let active = true;
16742
+ loadPrismLanguage(language).then(() => {
16743
+ if (active) setReady(true);
16744
+ });
16745
+ return () => {
16746
+ active = false;
16747
+ };
16748
+ }, [language]);
16749
+ return ready;
16750
+ }
16751
+ var dynamicallyLoaded, codeLanguageLoader, orbStyleOverrides, orbStyle, loloStyleOverrides, loloStyle, log4, CODE_LANGUAGES, CODE_LANGUAGE_SET, DIFF_STYLES, DIFF_STYLE_FALLBACK, LINE_PROPS_FN, HIDDEN_LINE_NUMBERS, CodeBlock;
16692
16752
  var init_CodeBlock = __esm({
16693
16753
  "components/core/molecules/markdown/CodeBlock.tsx"() {
16694
16754
  init_cn();
@@ -16727,8 +16787,62 @@ var init_CodeBlock = __esm({
16727
16787
  SyntaxHighlighter.registerLanguage("toml", langToml);
16728
16788
  SyntaxHighlighter.registerLanguage("go", langGo);
16729
16789
  SyntaxHighlighter.registerLanguage("graphql", langGraphql);
16790
+ SyntaxHighlighter.registerLanguage("clojure", langClojure);
16791
+ SyntaxHighlighter.registerLanguage("clj", langClojure);
16792
+ SyntaxHighlighter.registerLanguage("edn", langClojure);
16793
+ SyntaxHighlighter.registerLanguage("haskell", langHaskell);
16794
+ SyntaxHighlighter.registerLanguage("hs", langHaskell);
16795
+ SyntaxHighlighter.registerLanguage("lisp", langLisp);
16796
+ SyntaxHighlighter.registerLanguage("scheme", langScheme);
16797
+ SyntaxHighlighter.registerLanguage("scala", langScala);
16798
+ SyntaxHighlighter.registerLanguage("elixir", langElixir);
16799
+ SyntaxHighlighter.registerLanguage("ex", langElixir);
16800
+ SyntaxHighlighter.registerLanguage("exs", langElixir);
16801
+ SyntaxHighlighter.registerLanguage("erlang", langErlang);
16802
+ SyntaxHighlighter.registerLanguage("erl", langErlang);
16803
+ SyntaxHighlighter.registerLanguage("elm", langElm);
16804
+ SyntaxHighlighter.registerLanguage("fsharp", langFsharp);
16805
+ SyntaxHighlighter.registerLanguage("fs", langFsharp);
16806
+ SyntaxHighlighter.registerLanguage("fsx", langFsharp);
16807
+ SyntaxHighlighter.registerLanguage("ocaml", langOcaml);
16808
+ SyntaxHighlighter.registerLanguage("ml", langOcaml);
16809
+ SyntaxHighlighter.registerLanguage("java", langJava);
16810
+ SyntaxHighlighter.registerLanguage("c", langC);
16811
+ SyntaxHighlighter.registerLanguage("cpp", langCpp);
16812
+ SyntaxHighlighter.registerLanguage("c++", langCpp);
16813
+ SyntaxHighlighter.registerLanguage("cc", langCpp);
16814
+ SyntaxHighlighter.registerLanguage("cxx", langCpp);
16815
+ SyntaxHighlighter.registerLanguage("hpp", langCpp);
16816
+ SyntaxHighlighter.registerLanguage("h", langCpp);
16817
+ SyntaxHighlighter.registerLanguage("csharp", langCsharp);
16818
+ SyntaxHighlighter.registerLanguage("cs", langCsharp);
16819
+ SyntaxHighlighter.registerLanguage("objectivec", langObjectivec);
16820
+ SyntaxHighlighter.registerLanguage("objc", langObjectivec);
16821
+ SyntaxHighlighter.registerLanguage("php", langPhp);
16822
+ SyntaxHighlighter.registerLanguage("ruby", langRuby);
16823
+ SyntaxHighlighter.registerLanguage("rb", langRuby);
16824
+ SyntaxHighlighter.registerLanguage("swift", langSwift);
16825
+ SyntaxHighlighter.registerLanguage("kotlin", langKotlin);
16826
+ SyntaxHighlighter.registerLanguage("kt", langKotlin);
16827
+ SyntaxHighlighter.registerLanguage("lua", langLua);
16828
+ SyntaxHighlighter.registerLanguage("r", langR);
16829
+ SyntaxHighlighter.registerLanguage("dart", langDart);
16830
+ SyntaxHighlighter.registerLanguage("julia", langJulia);
16831
+ SyntaxHighlighter.registerLanguage("fortran", langFortran);
16832
+ SyntaxHighlighter.registerLanguage("f90", langFortran);
16833
+ SyntaxHighlighter.registerLanguage("f95", langFortran);
16834
+ SyntaxHighlighter.registerLanguage("perl", langPerl);
16835
+ SyntaxHighlighter.registerLanguage("pl", langPerl);
16836
+ SyntaxHighlighter.registerLanguage("powershell", langPowershell);
16837
+ SyntaxHighlighter.registerLanguage("ps1", langPowershell);
16838
+ SyntaxHighlighter.registerLanguage("makefile", langMakefile);
16839
+ SyntaxHighlighter.registerLanguage("make", langMakefile);
16840
+ SyntaxHighlighter.registerLanguage("nginx", langNginx);
16841
+ SyntaxHighlighter.registerLanguage("ini", langIni);
16730
16842
  SyntaxHighlighter.registerLanguage("orb", orbLanguage);
16731
16843
  SyntaxHighlighter.registerLanguage("lolo", loloLanguage);
16844
+ dynamicallyLoaded = /* @__PURE__ */ new Set();
16845
+ codeLanguageLoader = null;
16732
16846
  orbStyleOverrides = {
16733
16847
  "orb-binding": { color: ORB_COLORS.dark.binding, fontWeight: "bold" },
16734
16848
  "orb-effect": { color: ORB_COLORS.dark.effect, fontWeight: "bold" },
@@ -16799,6 +16913,58 @@ var init_CodeBlock = __esm({
16799
16913
  "graphql",
16800
16914
  "html",
16801
16915
  "xml",
16916
+ "clojure",
16917
+ "clj",
16918
+ "edn",
16919
+ "haskell",
16920
+ "hs",
16921
+ "lisp",
16922
+ "scheme",
16923
+ "scala",
16924
+ "elixir",
16925
+ "ex",
16926
+ "exs",
16927
+ "erlang",
16928
+ "erl",
16929
+ "elm",
16930
+ "fsharp",
16931
+ "fs",
16932
+ "fsx",
16933
+ "ocaml",
16934
+ "ml",
16935
+ "java",
16936
+ "c",
16937
+ "cpp",
16938
+ "c++",
16939
+ "cc",
16940
+ "cxx",
16941
+ "hpp",
16942
+ "h",
16943
+ "csharp",
16944
+ "cs",
16945
+ "objectivec",
16946
+ "objc",
16947
+ "php",
16948
+ "ruby",
16949
+ "rb",
16950
+ "swift",
16951
+ "kotlin",
16952
+ "kt",
16953
+ "lua",
16954
+ "r",
16955
+ "dart",
16956
+ "julia",
16957
+ "fortran",
16958
+ "f90",
16959
+ "f95",
16960
+ "perl",
16961
+ "pl",
16962
+ "powershell",
16963
+ "ps1",
16964
+ "makefile",
16965
+ "make",
16966
+ "nginx",
16967
+ "ini",
16802
16968
  "orb",
16803
16969
  "lolo"
16804
16970
  ];
@@ -16844,6 +17010,7 @@ var init_CodeBlock = __esm({
16844
17010
  const isOrb = language === "orb";
16845
17011
  const isLolo = language === "lolo";
16846
17012
  const activeStyle = isOrb ? orbStyle : isLolo ? loloStyle : dark;
17013
+ const languageReady = useLanguageReady(language);
16847
17014
  const eventBus = useEventBus();
16848
17015
  const { t } = useTranslate();
16849
17016
  const scrollRef = useRef(null);
@@ -16967,7 +17134,7 @@ var init_CodeBlock = __esm({
16967
17134
  children: code
16968
17135
  }
16969
17136
  ),
16970
- [code, language, activeStyle]
17137
+ [code, language, activeStyle, languageReady]
16971
17138
  );
16972
17139
  useLayoutEffect(() => {
16973
17140
  const container = codeRef.current;
@@ -17567,10 +17734,10 @@ var init_MarkdownContent = __esm({
17567
17734
  }
17568
17735
  });
17569
17736
 
17570
- // components/core/molecules/lessonSegmentUtils.ts
17737
+ // lib/lessonSegmentUtils.ts
17571
17738
  function parseMarkdownWithCodeBlocks(content) {
17572
17739
  const segments = [];
17573
- const codeBlockRegex = /```([\w-]+)?(?:\s+(run))?\n([\s\S]*?)```/g;
17740
+ const codeBlockRegex = /```([^\n\r]*)\r?\n([\s\S]*?)```/g;
17574
17741
  let lastIndex = 0;
17575
17742
  let match;
17576
17743
  while ((match = codeBlockRegex.exec(content)) !== null) {
@@ -17578,12 +17745,12 @@ function parseMarkdownWithCodeBlocks(content) {
17578
17745
  if (before.trim()) {
17579
17746
  segments.push({ type: "markdown", content: before });
17580
17747
  }
17581
- const rawLanguage = match[1] ?? "text";
17582
- const runModifier = !!match[2];
17748
+ const tokens = match[1].trim().split(/\s+/).filter(Boolean);
17749
+ let rawLanguage = tokens[0] ?? "text";
17583
17750
  const suffixRunnable = rawLanguage.endsWith("-runnable");
17584
- const runnable = runModifier || suffixRunnable;
17751
+ const runnable = suffixRunnable || tokens.includes("run");
17585
17752
  const baseLanguage = suffixRunnable ? rawLanguage.slice(0, -"-runnable".length) || "text" : rawLanguage;
17586
- segments.push({ type: "code", language: baseLanguage, content: match[3].trim(), runnable });
17753
+ segments.push({ type: "code", language: baseLanguage, content: match[2].trim(), runnable });
17587
17754
  lastIndex = codeBlockRegex.lastIndex;
17588
17755
  }
17589
17756
  const remaining = content.slice(lastIndex);
@@ -17593,7 +17760,7 @@ function parseMarkdownWithCodeBlocks(content) {
17593
17760
  return segments;
17594
17761
  }
17595
17762
  var init_lessonSegmentUtils = __esm({
17596
- "components/core/molecules/lessonSegmentUtils.ts"() {
17763
+ "lib/lessonSegmentUtils.ts"() {
17597
17764
  }
17598
17765
  });
17599
17766
  var BLOOM_CONFIG, BloomQuizBlock;