@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.
@@ -34,6 +34,35 @@ import langDiff from 'react-syntax-highlighter/dist/esm/languages/prism/diff.js'
34
34
  import langToml from 'react-syntax-highlighter/dist/esm/languages/prism/toml.js';
35
35
  import langGo from 'react-syntax-highlighter/dist/esm/languages/prism/go.js';
36
36
  import langGraphql from 'react-syntax-highlighter/dist/esm/languages/prism/graphql.js';
37
+ import langClojure from 'react-syntax-highlighter/dist/esm/languages/prism/clojure.js';
38
+ import langHaskell from 'react-syntax-highlighter/dist/esm/languages/prism/haskell.js';
39
+ import langLisp from 'react-syntax-highlighter/dist/esm/languages/prism/lisp.js';
40
+ import langScheme from 'react-syntax-highlighter/dist/esm/languages/prism/scheme.js';
41
+ import langScala from 'react-syntax-highlighter/dist/esm/languages/prism/scala.js';
42
+ import langElixir from 'react-syntax-highlighter/dist/esm/languages/prism/elixir.js';
43
+ import langErlang from 'react-syntax-highlighter/dist/esm/languages/prism/erlang.js';
44
+ import langElm from 'react-syntax-highlighter/dist/esm/languages/prism/elm.js';
45
+ import langFsharp from 'react-syntax-highlighter/dist/esm/languages/prism/fsharp.js';
46
+ import langOcaml from 'react-syntax-highlighter/dist/esm/languages/prism/ocaml.js';
47
+ import langJava from 'react-syntax-highlighter/dist/esm/languages/prism/java.js';
48
+ import langC from 'react-syntax-highlighter/dist/esm/languages/prism/c.js';
49
+ import langCpp from 'react-syntax-highlighter/dist/esm/languages/prism/cpp.js';
50
+ import langCsharp from 'react-syntax-highlighter/dist/esm/languages/prism/csharp.js';
51
+ import langObjectivec from 'react-syntax-highlighter/dist/esm/languages/prism/objectivec.js';
52
+ import langPhp from 'react-syntax-highlighter/dist/esm/languages/prism/php.js';
53
+ import langRuby from 'react-syntax-highlighter/dist/esm/languages/prism/ruby.js';
54
+ import langSwift from 'react-syntax-highlighter/dist/esm/languages/prism/swift.js';
55
+ import langKotlin from 'react-syntax-highlighter/dist/esm/languages/prism/kotlin.js';
56
+ import langLua from 'react-syntax-highlighter/dist/esm/languages/prism/lua.js';
57
+ import langR from 'react-syntax-highlighter/dist/esm/languages/prism/r.js';
58
+ import langDart from 'react-syntax-highlighter/dist/esm/languages/prism/dart.js';
59
+ import langJulia from 'react-syntax-highlighter/dist/esm/languages/prism/julia.js';
60
+ import langFortran from 'react-syntax-highlighter/dist/esm/languages/prism/fortran.js';
61
+ import langPerl from 'react-syntax-highlighter/dist/esm/languages/prism/perl.js';
62
+ import langPowershell from 'react-syntax-highlighter/dist/esm/languages/prism/powershell.js';
63
+ import langMakefile from 'react-syntax-highlighter/dist/esm/languages/prism/makefile.js';
64
+ import langNginx from 'react-syntax-highlighter/dist/esm/languages/prism/nginx.js';
65
+ import langIni from 'react-syntax-highlighter/dist/esm/languages/prism/ini.js';
37
66
  import ReactMarkdown from 'react-markdown';
38
67
  import remarkGfm from 'remark-gfm';
39
68
  import remarkMath from 'remark-math';
@@ -14369,6 +14398,19 @@ var init_EmptyState = __esm({
14369
14398
  EmptyState.displayName = "EmptyState";
14370
14399
  }
14371
14400
  });
14401
+ function isLanguageRegistered(lang) {
14402
+ return CODE_LANGUAGE_SET.has(lang) || dynamicallyLoaded.has(lang);
14403
+ }
14404
+ async function loadPrismLanguage(lang) {
14405
+ if (isLanguageRegistered(lang)) return;
14406
+ try {
14407
+ const grammar = codeLanguageLoader ? await codeLanguageLoader(lang) : null;
14408
+ if (grammar) SyntaxHighlighter.registerLanguage(lang, grammar);
14409
+ dynamicallyLoaded.add(lang);
14410
+ } catch {
14411
+ dynamicallyLoaded.add(lang);
14412
+ }
14413
+ }
14372
14414
  function computeFoldRegions(code) {
14373
14415
  const lines = code.split("\n");
14374
14416
  const regions = [];
@@ -14404,7 +14446,8 @@ function computeFoldRegions(code) {
14404
14446
  return regions.sort((a, b) => a.start - b.start);
14405
14447
  }
14406
14448
  function toCodeLanguage(value) {
14407
- return value && CODE_LANGUAGE_SET.has(value) ? value : "text";
14449
+ if (!value) return "text";
14450
+ return value.toLowerCase();
14408
14451
  }
14409
14452
  function generateDiff(oldVal, newVal) {
14410
14453
  const oldLines = oldVal.split("\n");
@@ -14423,7 +14466,24 @@ function generateDiff(oldVal, newVal) {
14423
14466
  }
14424
14467
  return diff;
14425
14468
  }
14426
- var orbStyleOverrides, orbStyle, loloStyleOverrides, loloStyle, log7, CODE_LANGUAGES, CODE_LANGUAGE_SET, DIFF_STYLES, DIFF_STYLE_FALLBACK, LINE_PROPS_FN, HIDDEN_LINE_NUMBERS, CodeBlock;
14469
+ function useLanguageReady(language) {
14470
+ const [ready, setReady] = useState(() => isLanguageRegistered(language));
14471
+ useEffect(() => {
14472
+ if (isLanguageRegistered(language)) {
14473
+ if (!ready) setReady(true);
14474
+ return;
14475
+ }
14476
+ let active = true;
14477
+ loadPrismLanguage(language).then(() => {
14478
+ if (active) setReady(true);
14479
+ });
14480
+ return () => {
14481
+ active = false;
14482
+ };
14483
+ }, [language]);
14484
+ return ready;
14485
+ }
14486
+ var dynamicallyLoaded, codeLanguageLoader, orbStyleOverrides, orbStyle, loloStyleOverrides, loloStyle, log7, CODE_LANGUAGES, CODE_LANGUAGE_SET, DIFF_STYLES, DIFF_STYLE_FALLBACK, LINE_PROPS_FN, HIDDEN_LINE_NUMBERS, CodeBlock;
14427
14487
  var init_CodeBlock = __esm({
14428
14488
  "components/core/molecules/markdown/CodeBlock.tsx"() {
14429
14489
  init_cn();
@@ -14462,8 +14522,62 @@ var init_CodeBlock = __esm({
14462
14522
  SyntaxHighlighter.registerLanguage("toml", langToml);
14463
14523
  SyntaxHighlighter.registerLanguage("go", langGo);
14464
14524
  SyntaxHighlighter.registerLanguage("graphql", langGraphql);
14525
+ SyntaxHighlighter.registerLanguage("clojure", langClojure);
14526
+ SyntaxHighlighter.registerLanguage("clj", langClojure);
14527
+ SyntaxHighlighter.registerLanguage("edn", langClojure);
14528
+ SyntaxHighlighter.registerLanguage("haskell", langHaskell);
14529
+ SyntaxHighlighter.registerLanguage("hs", langHaskell);
14530
+ SyntaxHighlighter.registerLanguage("lisp", langLisp);
14531
+ SyntaxHighlighter.registerLanguage("scheme", langScheme);
14532
+ SyntaxHighlighter.registerLanguage("scala", langScala);
14533
+ SyntaxHighlighter.registerLanguage("elixir", langElixir);
14534
+ SyntaxHighlighter.registerLanguage("ex", langElixir);
14535
+ SyntaxHighlighter.registerLanguage("exs", langElixir);
14536
+ SyntaxHighlighter.registerLanguage("erlang", langErlang);
14537
+ SyntaxHighlighter.registerLanguage("erl", langErlang);
14538
+ SyntaxHighlighter.registerLanguage("elm", langElm);
14539
+ SyntaxHighlighter.registerLanguage("fsharp", langFsharp);
14540
+ SyntaxHighlighter.registerLanguage("fs", langFsharp);
14541
+ SyntaxHighlighter.registerLanguage("fsx", langFsharp);
14542
+ SyntaxHighlighter.registerLanguage("ocaml", langOcaml);
14543
+ SyntaxHighlighter.registerLanguage("ml", langOcaml);
14544
+ SyntaxHighlighter.registerLanguage("java", langJava);
14545
+ SyntaxHighlighter.registerLanguage("c", langC);
14546
+ SyntaxHighlighter.registerLanguage("cpp", langCpp);
14547
+ SyntaxHighlighter.registerLanguage("c++", langCpp);
14548
+ SyntaxHighlighter.registerLanguage("cc", langCpp);
14549
+ SyntaxHighlighter.registerLanguage("cxx", langCpp);
14550
+ SyntaxHighlighter.registerLanguage("hpp", langCpp);
14551
+ SyntaxHighlighter.registerLanguage("h", langCpp);
14552
+ SyntaxHighlighter.registerLanguage("csharp", langCsharp);
14553
+ SyntaxHighlighter.registerLanguage("cs", langCsharp);
14554
+ SyntaxHighlighter.registerLanguage("objectivec", langObjectivec);
14555
+ SyntaxHighlighter.registerLanguage("objc", langObjectivec);
14556
+ SyntaxHighlighter.registerLanguage("php", langPhp);
14557
+ SyntaxHighlighter.registerLanguage("ruby", langRuby);
14558
+ SyntaxHighlighter.registerLanguage("rb", langRuby);
14559
+ SyntaxHighlighter.registerLanguage("swift", langSwift);
14560
+ SyntaxHighlighter.registerLanguage("kotlin", langKotlin);
14561
+ SyntaxHighlighter.registerLanguage("kt", langKotlin);
14562
+ SyntaxHighlighter.registerLanguage("lua", langLua);
14563
+ SyntaxHighlighter.registerLanguage("r", langR);
14564
+ SyntaxHighlighter.registerLanguage("dart", langDart);
14565
+ SyntaxHighlighter.registerLanguage("julia", langJulia);
14566
+ SyntaxHighlighter.registerLanguage("fortran", langFortran);
14567
+ SyntaxHighlighter.registerLanguage("f90", langFortran);
14568
+ SyntaxHighlighter.registerLanguage("f95", langFortran);
14569
+ SyntaxHighlighter.registerLanguage("perl", langPerl);
14570
+ SyntaxHighlighter.registerLanguage("pl", langPerl);
14571
+ SyntaxHighlighter.registerLanguage("powershell", langPowershell);
14572
+ SyntaxHighlighter.registerLanguage("ps1", langPowershell);
14573
+ SyntaxHighlighter.registerLanguage("makefile", langMakefile);
14574
+ SyntaxHighlighter.registerLanguage("make", langMakefile);
14575
+ SyntaxHighlighter.registerLanguage("nginx", langNginx);
14576
+ SyntaxHighlighter.registerLanguage("ini", langIni);
14465
14577
  SyntaxHighlighter.registerLanguage("orb", orbLanguage);
14466
14578
  SyntaxHighlighter.registerLanguage("lolo", loloLanguage);
14579
+ dynamicallyLoaded = /* @__PURE__ */ new Set();
14580
+ codeLanguageLoader = null;
14467
14581
  orbStyleOverrides = {
14468
14582
  "orb-binding": { color: ORB_COLORS.dark.binding, fontWeight: "bold" },
14469
14583
  "orb-effect": { color: ORB_COLORS.dark.effect, fontWeight: "bold" },
@@ -14534,6 +14648,58 @@ var init_CodeBlock = __esm({
14534
14648
  "graphql",
14535
14649
  "html",
14536
14650
  "xml",
14651
+ "clojure",
14652
+ "clj",
14653
+ "edn",
14654
+ "haskell",
14655
+ "hs",
14656
+ "lisp",
14657
+ "scheme",
14658
+ "scala",
14659
+ "elixir",
14660
+ "ex",
14661
+ "exs",
14662
+ "erlang",
14663
+ "erl",
14664
+ "elm",
14665
+ "fsharp",
14666
+ "fs",
14667
+ "fsx",
14668
+ "ocaml",
14669
+ "ml",
14670
+ "java",
14671
+ "c",
14672
+ "cpp",
14673
+ "c++",
14674
+ "cc",
14675
+ "cxx",
14676
+ "hpp",
14677
+ "h",
14678
+ "csharp",
14679
+ "cs",
14680
+ "objectivec",
14681
+ "objc",
14682
+ "php",
14683
+ "ruby",
14684
+ "rb",
14685
+ "swift",
14686
+ "kotlin",
14687
+ "kt",
14688
+ "lua",
14689
+ "r",
14690
+ "dart",
14691
+ "julia",
14692
+ "fortran",
14693
+ "f90",
14694
+ "f95",
14695
+ "perl",
14696
+ "pl",
14697
+ "powershell",
14698
+ "ps1",
14699
+ "makefile",
14700
+ "make",
14701
+ "nginx",
14702
+ "ini",
14537
14703
  "orb",
14538
14704
  "lolo"
14539
14705
  ];
@@ -14579,6 +14745,7 @@ var init_CodeBlock = __esm({
14579
14745
  const isOrb = language === "orb";
14580
14746
  const isLolo = language === "lolo";
14581
14747
  const activeStyle = isOrb ? orbStyle : isLolo ? loloStyle : dark;
14748
+ const languageReady = useLanguageReady(language);
14582
14749
  const eventBus = useEventBus();
14583
14750
  const { t } = useTranslate();
14584
14751
  const scrollRef = useRef(null);
@@ -14702,7 +14869,7 @@ var init_CodeBlock = __esm({
14702
14869
  children: code
14703
14870
  }
14704
14871
  ),
14705
- [code, language, activeStyle]
14872
+ [code, language, activeStyle, languageReady]
14706
14873
  );
14707
14874
  useLayoutEffect(() => {
14708
14875
  const container = codeRef.current;
@@ -15302,10 +15469,10 @@ var init_MarkdownContent = __esm({
15302
15469
  }
15303
15470
  });
15304
15471
 
15305
- // components/core/molecules/lessonSegmentUtils.ts
15472
+ // lib/lessonSegmentUtils.ts
15306
15473
  function parseMarkdownWithCodeBlocks(content) {
15307
15474
  const segments = [];
15308
- const codeBlockRegex = /```([\w-]+)?(?:\s+(run))?\n([\s\S]*?)```/g;
15475
+ const codeBlockRegex = /```([^\n\r]*)\r?\n([\s\S]*?)```/g;
15309
15476
  let lastIndex = 0;
15310
15477
  let match;
15311
15478
  while ((match = codeBlockRegex.exec(content)) !== null) {
@@ -15313,12 +15480,12 @@ function parseMarkdownWithCodeBlocks(content) {
15313
15480
  if (before.trim()) {
15314
15481
  segments.push({ type: "markdown", content: before });
15315
15482
  }
15316
- const rawLanguage = match[1] ?? "text";
15317
- const runModifier = !!match[2];
15483
+ const tokens = match[1].trim().split(/\s+/).filter(Boolean);
15484
+ let rawLanguage = tokens[0] ?? "text";
15318
15485
  const suffixRunnable = rawLanguage.endsWith("-runnable");
15319
- const runnable = runModifier || suffixRunnable;
15486
+ const runnable = suffixRunnable || tokens.includes("run");
15320
15487
  const baseLanguage = suffixRunnable ? rawLanguage.slice(0, -"-runnable".length) || "text" : rawLanguage;
15321
- segments.push({ type: "code", language: baseLanguage, content: match[3].trim(), runnable });
15488
+ segments.push({ type: "code", language: baseLanguage, content: match[2].trim(), runnable });
15322
15489
  lastIndex = codeBlockRegex.lastIndex;
15323
15490
  }
15324
15491
  const remaining = content.slice(lastIndex);
@@ -15328,7 +15495,7 @@ function parseMarkdownWithCodeBlocks(content) {
15328
15495
  return segments;
15329
15496
  }
15330
15497
  var init_lessonSegmentUtils = __esm({
15331
- "components/core/molecules/lessonSegmentUtils.ts"() {
15498
+ "lib/lessonSegmentUtils.ts"() {
15332
15499
  }
15333
15500
  });
15334
15501
  var BLOOM_CONFIG, BloomQuizBlock;
@@ -33,6 +33,35 @@ var langDiff = require('react-syntax-highlighter/dist/esm/languages/prism/diff.j
33
33
  var langToml = require('react-syntax-highlighter/dist/esm/languages/prism/toml.js');
34
34
  var langGo = require('react-syntax-highlighter/dist/esm/languages/prism/go.js');
35
35
  var langGraphql = require('react-syntax-highlighter/dist/esm/languages/prism/graphql.js');
36
+ var langClojure = require('react-syntax-highlighter/dist/esm/languages/prism/clojure.js');
37
+ var langHaskell = require('react-syntax-highlighter/dist/esm/languages/prism/haskell.js');
38
+ var langLisp = require('react-syntax-highlighter/dist/esm/languages/prism/lisp.js');
39
+ var langScheme = require('react-syntax-highlighter/dist/esm/languages/prism/scheme.js');
40
+ var langScala = require('react-syntax-highlighter/dist/esm/languages/prism/scala.js');
41
+ var langElixir = require('react-syntax-highlighter/dist/esm/languages/prism/elixir.js');
42
+ var langErlang = require('react-syntax-highlighter/dist/esm/languages/prism/erlang.js');
43
+ var langElm = require('react-syntax-highlighter/dist/esm/languages/prism/elm.js');
44
+ var langFsharp = require('react-syntax-highlighter/dist/esm/languages/prism/fsharp.js');
45
+ var langOcaml = require('react-syntax-highlighter/dist/esm/languages/prism/ocaml.js');
46
+ var langJava = require('react-syntax-highlighter/dist/esm/languages/prism/java.js');
47
+ var langC = require('react-syntax-highlighter/dist/esm/languages/prism/c.js');
48
+ var langCpp = require('react-syntax-highlighter/dist/esm/languages/prism/cpp.js');
49
+ var langCsharp = require('react-syntax-highlighter/dist/esm/languages/prism/csharp.js');
50
+ var langObjectivec = require('react-syntax-highlighter/dist/esm/languages/prism/objectivec.js');
51
+ var langPhp = require('react-syntax-highlighter/dist/esm/languages/prism/php.js');
52
+ var langRuby = require('react-syntax-highlighter/dist/esm/languages/prism/ruby.js');
53
+ var langSwift = require('react-syntax-highlighter/dist/esm/languages/prism/swift.js');
54
+ var langKotlin = require('react-syntax-highlighter/dist/esm/languages/prism/kotlin.js');
55
+ var langLua = require('react-syntax-highlighter/dist/esm/languages/prism/lua.js');
56
+ var langR = require('react-syntax-highlighter/dist/esm/languages/prism/r.js');
57
+ var langDart = require('react-syntax-highlighter/dist/esm/languages/prism/dart.js');
58
+ var langJulia = require('react-syntax-highlighter/dist/esm/languages/prism/julia.js');
59
+ var langFortran = require('react-syntax-highlighter/dist/esm/languages/prism/fortran.js');
60
+ var langPerl = require('react-syntax-highlighter/dist/esm/languages/prism/perl.js');
61
+ var langPowershell = require('react-syntax-highlighter/dist/esm/languages/prism/powershell.js');
62
+ var langMakefile = require('react-syntax-highlighter/dist/esm/languages/prism/makefile.js');
63
+ var langNginx = require('react-syntax-highlighter/dist/esm/languages/prism/nginx.js');
64
+ var langIni = require('react-syntax-highlighter/dist/esm/languages/prism/ini.js');
36
65
  var ReactMarkdown = require('react-markdown');
37
66
  var remarkGfm = require('remark-gfm');
38
67
  var remarkMath = require('remark-math');
@@ -89,6 +118,35 @@ var langDiff__default = /*#__PURE__*/_interopDefault(langDiff);
89
118
  var langToml__default = /*#__PURE__*/_interopDefault(langToml);
90
119
  var langGo__default = /*#__PURE__*/_interopDefault(langGo);
91
120
  var langGraphql__default = /*#__PURE__*/_interopDefault(langGraphql);
121
+ var langClojure__default = /*#__PURE__*/_interopDefault(langClojure);
122
+ var langHaskell__default = /*#__PURE__*/_interopDefault(langHaskell);
123
+ var langLisp__default = /*#__PURE__*/_interopDefault(langLisp);
124
+ var langScheme__default = /*#__PURE__*/_interopDefault(langScheme);
125
+ var langScala__default = /*#__PURE__*/_interopDefault(langScala);
126
+ var langElixir__default = /*#__PURE__*/_interopDefault(langElixir);
127
+ var langErlang__default = /*#__PURE__*/_interopDefault(langErlang);
128
+ var langElm__default = /*#__PURE__*/_interopDefault(langElm);
129
+ var langFsharp__default = /*#__PURE__*/_interopDefault(langFsharp);
130
+ var langOcaml__default = /*#__PURE__*/_interopDefault(langOcaml);
131
+ var langJava__default = /*#__PURE__*/_interopDefault(langJava);
132
+ var langC__default = /*#__PURE__*/_interopDefault(langC);
133
+ var langCpp__default = /*#__PURE__*/_interopDefault(langCpp);
134
+ var langCsharp__default = /*#__PURE__*/_interopDefault(langCsharp);
135
+ var langObjectivec__default = /*#__PURE__*/_interopDefault(langObjectivec);
136
+ var langPhp__default = /*#__PURE__*/_interopDefault(langPhp);
137
+ var langRuby__default = /*#__PURE__*/_interopDefault(langRuby);
138
+ var langSwift__default = /*#__PURE__*/_interopDefault(langSwift);
139
+ var langKotlin__default = /*#__PURE__*/_interopDefault(langKotlin);
140
+ var langLua__default = /*#__PURE__*/_interopDefault(langLua);
141
+ var langR__default = /*#__PURE__*/_interopDefault(langR);
142
+ var langDart__default = /*#__PURE__*/_interopDefault(langDart);
143
+ var langJulia__default = /*#__PURE__*/_interopDefault(langJulia);
144
+ var langFortran__default = /*#__PURE__*/_interopDefault(langFortran);
145
+ var langPerl__default = /*#__PURE__*/_interopDefault(langPerl);
146
+ var langPowershell__default = /*#__PURE__*/_interopDefault(langPowershell);
147
+ var langMakefile__default = /*#__PURE__*/_interopDefault(langMakefile);
148
+ var langNginx__default = /*#__PURE__*/_interopDefault(langNginx);
149
+ var langIni__default = /*#__PURE__*/_interopDefault(langIni);
92
150
  var ReactMarkdown__default = /*#__PURE__*/_interopDefault(ReactMarkdown);
93
151
  var remarkGfm__default = /*#__PURE__*/_interopDefault(remarkGfm);
94
152
  var remarkMath__default = /*#__PURE__*/_interopDefault(remarkMath);
@@ -14099,6 +14157,19 @@ var init_EmptyState = __esm({
14099
14157
  EmptyState.displayName = "EmptyState";
14100
14158
  }
14101
14159
  });
14160
+ function isLanguageRegistered(lang) {
14161
+ return CODE_LANGUAGE_SET.has(lang) || dynamicallyLoaded.has(lang);
14162
+ }
14163
+ async function loadPrismLanguage(lang) {
14164
+ if (isLanguageRegistered(lang)) return;
14165
+ try {
14166
+ const grammar = codeLanguageLoader ? await codeLanguageLoader(lang) : null;
14167
+ if (grammar) SyntaxHighlighter__default.default.registerLanguage(lang, grammar);
14168
+ dynamicallyLoaded.add(lang);
14169
+ } catch {
14170
+ dynamicallyLoaded.add(lang);
14171
+ }
14172
+ }
14102
14173
  function computeFoldRegions(code) {
14103
14174
  const lines = code.split("\n");
14104
14175
  const regions = [];
@@ -14134,7 +14205,8 @@ function computeFoldRegions(code) {
14134
14205
  return regions.sort((a, b) => a.start - b.start);
14135
14206
  }
14136
14207
  function toCodeLanguage(value) {
14137
- return value && CODE_LANGUAGE_SET.has(value) ? value : "text";
14208
+ if (!value) return "text";
14209
+ return value.toLowerCase();
14138
14210
  }
14139
14211
  function generateDiff(oldVal, newVal) {
14140
14212
  const oldLines = oldVal.split("\n");
@@ -14153,7 +14225,24 @@ function generateDiff(oldVal, newVal) {
14153
14225
  }
14154
14226
  return diff;
14155
14227
  }
14156
- var orbStyleOverrides, orbStyle, loloStyleOverrides, loloStyle, log6, CODE_LANGUAGES, CODE_LANGUAGE_SET, DIFF_STYLES, DIFF_STYLE_FALLBACK, LINE_PROPS_FN, HIDDEN_LINE_NUMBERS, CodeBlock;
14228
+ function useLanguageReady(language) {
14229
+ const [ready, setReady] = React82.useState(() => isLanguageRegistered(language));
14230
+ React82.useEffect(() => {
14231
+ if (isLanguageRegistered(language)) {
14232
+ if (!ready) setReady(true);
14233
+ return;
14234
+ }
14235
+ let active = true;
14236
+ loadPrismLanguage(language).then(() => {
14237
+ if (active) setReady(true);
14238
+ });
14239
+ return () => {
14240
+ active = false;
14241
+ };
14242
+ }, [language]);
14243
+ return ready;
14244
+ }
14245
+ var dynamicallyLoaded, codeLanguageLoader, orbStyleOverrides, orbStyle, loloStyleOverrides, loloStyle, log6, CODE_LANGUAGES, CODE_LANGUAGE_SET, DIFF_STYLES, DIFF_STYLE_FALLBACK, LINE_PROPS_FN, HIDDEN_LINE_NUMBERS, CodeBlock;
14157
14246
  var init_CodeBlock = __esm({
14158
14247
  "components/core/molecules/markdown/CodeBlock.tsx"() {
14159
14248
  init_cn();
@@ -14192,8 +14281,62 @@ var init_CodeBlock = __esm({
14192
14281
  SyntaxHighlighter__default.default.registerLanguage("toml", langToml__default.default);
14193
14282
  SyntaxHighlighter__default.default.registerLanguage("go", langGo__default.default);
14194
14283
  SyntaxHighlighter__default.default.registerLanguage("graphql", langGraphql__default.default);
14284
+ SyntaxHighlighter__default.default.registerLanguage("clojure", langClojure__default.default);
14285
+ SyntaxHighlighter__default.default.registerLanguage("clj", langClojure__default.default);
14286
+ SyntaxHighlighter__default.default.registerLanguage("edn", langClojure__default.default);
14287
+ SyntaxHighlighter__default.default.registerLanguage("haskell", langHaskell__default.default);
14288
+ SyntaxHighlighter__default.default.registerLanguage("hs", langHaskell__default.default);
14289
+ SyntaxHighlighter__default.default.registerLanguage("lisp", langLisp__default.default);
14290
+ SyntaxHighlighter__default.default.registerLanguage("scheme", langScheme__default.default);
14291
+ SyntaxHighlighter__default.default.registerLanguage("scala", langScala__default.default);
14292
+ SyntaxHighlighter__default.default.registerLanguage("elixir", langElixir__default.default);
14293
+ SyntaxHighlighter__default.default.registerLanguage("ex", langElixir__default.default);
14294
+ SyntaxHighlighter__default.default.registerLanguage("exs", langElixir__default.default);
14295
+ SyntaxHighlighter__default.default.registerLanguage("erlang", langErlang__default.default);
14296
+ SyntaxHighlighter__default.default.registerLanguage("erl", langErlang__default.default);
14297
+ SyntaxHighlighter__default.default.registerLanguage("elm", langElm__default.default);
14298
+ SyntaxHighlighter__default.default.registerLanguage("fsharp", langFsharp__default.default);
14299
+ SyntaxHighlighter__default.default.registerLanguage("fs", langFsharp__default.default);
14300
+ SyntaxHighlighter__default.default.registerLanguage("fsx", langFsharp__default.default);
14301
+ SyntaxHighlighter__default.default.registerLanguage("ocaml", langOcaml__default.default);
14302
+ SyntaxHighlighter__default.default.registerLanguage("ml", langOcaml__default.default);
14303
+ SyntaxHighlighter__default.default.registerLanguage("java", langJava__default.default);
14304
+ SyntaxHighlighter__default.default.registerLanguage("c", langC__default.default);
14305
+ SyntaxHighlighter__default.default.registerLanguage("cpp", langCpp__default.default);
14306
+ SyntaxHighlighter__default.default.registerLanguage("c++", langCpp__default.default);
14307
+ SyntaxHighlighter__default.default.registerLanguage("cc", langCpp__default.default);
14308
+ SyntaxHighlighter__default.default.registerLanguage("cxx", langCpp__default.default);
14309
+ SyntaxHighlighter__default.default.registerLanguage("hpp", langCpp__default.default);
14310
+ SyntaxHighlighter__default.default.registerLanguage("h", langCpp__default.default);
14311
+ SyntaxHighlighter__default.default.registerLanguage("csharp", langCsharp__default.default);
14312
+ SyntaxHighlighter__default.default.registerLanguage("cs", langCsharp__default.default);
14313
+ SyntaxHighlighter__default.default.registerLanguage("objectivec", langObjectivec__default.default);
14314
+ SyntaxHighlighter__default.default.registerLanguage("objc", langObjectivec__default.default);
14315
+ SyntaxHighlighter__default.default.registerLanguage("php", langPhp__default.default);
14316
+ SyntaxHighlighter__default.default.registerLanguage("ruby", langRuby__default.default);
14317
+ SyntaxHighlighter__default.default.registerLanguage("rb", langRuby__default.default);
14318
+ SyntaxHighlighter__default.default.registerLanguage("swift", langSwift__default.default);
14319
+ SyntaxHighlighter__default.default.registerLanguage("kotlin", langKotlin__default.default);
14320
+ SyntaxHighlighter__default.default.registerLanguage("kt", langKotlin__default.default);
14321
+ SyntaxHighlighter__default.default.registerLanguage("lua", langLua__default.default);
14322
+ SyntaxHighlighter__default.default.registerLanguage("r", langR__default.default);
14323
+ SyntaxHighlighter__default.default.registerLanguage("dart", langDart__default.default);
14324
+ SyntaxHighlighter__default.default.registerLanguage("julia", langJulia__default.default);
14325
+ SyntaxHighlighter__default.default.registerLanguage("fortran", langFortran__default.default);
14326
+ SyntaxHighlighter__default.default.registerLanguage("f90", langFortran__default.default);
14327
+ SyntaxHighlighter__default.default.registerLanguage("f95", langFortran__default.default);
14328
+ SyntaxHighlighter__default.default.registerLanguage("perl", langPerl__default.default);
14329
+ SyntaxHighlighter__default.default.registerLanguage("pl", langPerl__default.default);
14330
+ SyntaxHighlighter__default.default.registerLanguage("powershell", langPowershell__default.default);
14331
+ SyntaxHighlighter__default.default.registerLanguage("ps1", langPowershell__default.default);
14332
+ SyntaxHighlighter__default.default.registerLanguage("makefile", langMakefile__default.default);
14333
+ SyntaxHighlighter__default.default.registerLanguage("make", langMakefile__default.default);
14334
+ SyntaxHighlighter__default.default.registerLanguage("nginx", langNginx__default.default);
14335
+ SyntaxHighlighter__default.default.registerLanguage("ini", langIni__default.default);
14195
14336
  SyntaxHighlighter__default.default.registerLanguage("orb", syntax.orbLanguage);
14196
14337
  SyntaxHighlighter__default.default.registerLanguage("lolo", syntax.loloLanguage);
14338
+ dynamicallyLoaded = /* @__PURE__ */ new Set();
14339
+ codeLanguageLoader = null;
14197
14340
  orbStyleOverrides = {
14198
14341
  "orb-binding": { color: syntax.ORB_COLORS.dark.binding, fontWeight: "bold" },
14199
14342
  "orb-effect": { color: syntax.ORB_COLORS.dark.effect, fontWeight: "bold" },
@@ -14264,6 +14407,58 @@ var init_CodeBlock = __esm({
14264
14407
  "graphql",
14265
14408
  "html",
14266
14409
  "xml",
14410
+ "clojure",
14411
+ "clj",
14412
+ "edn",
14413
+ "haskell",
14414
+ "hs",
14415
+ "lisp",
14416
+ "scheme",
14417
+ "scala",
14418
+ "elixir",
14419
+ "ex",
14420
+ "exs",
14421
+ "erlang",
14422
+ "erl",
14423
+ "elm",
14424
+ "fsharp",
14425
+ "fs",
14426
+ "fsx",
14427
+ "ocaml",
14428
+ "ml",
14429
+ "java",
14430
+ "c",
14431
+ "cpp",
14432
+ "c++",
14433
+ "cc",
14434
+ "cxx",
14435
+ "hpp",
14436
+ "h",
14437
+ "csharp",
14438
+ "cs",
14439
+ "objectivec",
14440
+ "objc",
14441
+ "php",
14442
+ "ruby",
14443
+ "rb",
14444
+ "swift",
14445
+ "kotlin",
14446
+ "kt",
14447
+ "lua",
14448
+ "r",
14449
+ "dart",
14450
+ "julia",
14451
+ "fortran",
14452
+ "f90",
14453
+ "f95",
14454
+ "perl",
14455
+ "pl",
14456
+ "powershell",
14457
+ "ps1",
14458
+ "makefile",
14459
+ "make",
14460
+ "nginx",
14461
+ "ini",
14267
14462
  "orb",
14268
14463
  "lolo"
14269
14464
  ];
@@ -14309,6 +14504,7 @@ var init_CodeBlock = __esm({
14309
14504
  const isOrb = language === "orb";
14310
14505
  const isLolo = language === "lolo";
14311
14506
  const activeStyle = isOrb ? orbStyle : isLolo ? loloStyle : dark__default.default;
14507
+ const languageReady = useLanguageReady(language);
14312
14508
  const eventBus = useEventBus();
14313
14509
  const { t } = hooks.useTranslate();
14314
14510
  const scrollRef = React82.useRef(null);
@@ -14432,7 +14628,7 @@ var init_CodeBlock = __esm({
14432
14628
  children: code
14433
14629
  }
14434
14630
  ),
14435
- [code, language, activeStyle]
14631
+ [code, language, activeStyle, languageReady]
14436
14632
  );
14437
14633
  React82.useLayoutEffect(() => {
14438
14634
  const container = codeRef.current;
@@ -15032,10 +15228,10 @@ var init_MarkdownContent = __esm({
15032
15228
  }
15033
15229
  });
15034
15230
 
15035
- // components/core/molecules/lessonSegmentUtils.ts
15231
+ // lib/lessonSegmentUtils.ts
15036
15232
  function parseMarkdownWithCodeBlocks(content) {
15037
15233
  const segments = [];
15038
- const codeBlockRegex = /```([\w-]+)?(?:\s+(run))?\n([\s\S]*?)```/g;
15234
+ const codeBlockRegex = /```([^\n\r]*)\r?\n([\s\S]*?)```/g;
15039
15235
  let lastIndex = 0;
15040
15236
  let match;
15041
15237
  while ((match = codeBlockRegex.exec(content)) !== null) {
@@ -15043,12 +15239,12 @@ function parseMarkdownWithCodeBlocks(content) {
15043
15239
  if (before.trim()) {
15044
15240
  segments.push({ type: "markdown", content: before });
15045
15241
  }
15046
- const rawLanguage = match[1] ?? "text";
15047
- const runModifier = !!match[2];
15242
+ const tokens = match[1].trim().split(/\s+/).filter(Boolean);
15243
+ let rawLanguage = tokens[0] ?? "text";
15048
15244
  const suffixRunnable = rawLanguage.endsWith("-runnable");
15049
- const runnable = runModifier || suffixRunnable;
15245
+ const runnable = suffixRunnable || tokens.includes("run");
15050
15246
  const baseLanguage = suffixRunnable ? rawLanguage.slice(0, -"-runnable".length) || "text" : rawLanguage;
15051
- segments.push({ type: "code", language: baseLanguage, content: match[3].trim(), runnable });
15247
+ segments.push({ type: "code", language: baseLanguage, content: match[2].trim(), runnable });
15052
15248
  lastIndex = codeBlockRegex.lastIndex;
15053
15249
  }
15054
15250
  const remaining = content.slice(lastIndex);
@@ -15058,7 +15254,7 @@ function parseMarkdownWithCodeBlocks(content) {
15058
15254
  return segments;
15059
15255
  }
15060
15256
  var init_lessonSegmentUtils = __esm({
15061
- "components/core/molecules/lessonSegmentUtils.ts"() {
15257
+ "lib/lessonSegmentUtils.ts"() {
15062
15258
  }
15063
15259
  });
15064
15260
  var BLOOM_CONFIG, BloomQuizBlock;