@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';
@@ -9978,6 +10007,22 @@ var init_EmptyState = __esm({
9978
10007
  EmptyState.displayName = "EmptyState";
9979
10008
  }
9980
10009
  });
10010
+ function registerCodeLanguageLoader(loader) {
10011
+ codeLanguageLoader = loader;
10012
+ }
10013
+ function isLanguageRegistered(lang) {
10014
+ return CODE_LANGUAGE_SET.has(lang) || dynamicallyLoaded.has(lang);
10015
+ }
10016
+ async function loadPrismLanguage(lang) {
10017
+ if (isLanguageRegistered(lang)) return;
10018
+ try {
10019
+ const grammar = codeLanguageLoader ? await codeLanguageLoader(lang) : null;
10020
+ if (grammar) SyntaxHighlighter.registerLanguage(lang, grammar);
10021
+ dynamicallyLoaded.add(lang);
10022
+ } catch {
10023
+ dynamicallyLoaded.add(lang);
10024
+ }
10025
+ }
9981
10026
  function computeFoldRegions(code) {
9982
10027
  const lines = code.split("\n");
9983
10028
  const regions = [];
@@ -10013,7 +10058,8 @@ function computeFoldRegions(code) {
10013
10058
  return regions.sort((a, b) => a.start - b.start);
10014
10059
  }
10015
10060
  function toCodeLanguage(value) {
10016
- return value && CODE_LANGUAGE_SET.has(value) ? value : "text";
10061
+ if (!value) return "text";
10062
+ return value.toLowerCase();
10017
10063
  }
10018
10064
  function generateDiff(oldVal, newVal) {
10019
10065
  const oldLines = oldVal.split("\n");
@@ -10032,7 +10078,24 @@ function generateDiff(oldVal, newVal) {
10032
10078
  }
10033
10079
  return diff;
10034
10080
  }
10035
- var orbStyleOverrides, orbStyle, loloStyleOverrides, loloStyle, log4, CODE_LANGUAGES, CODE_LANGUAGE_SET, DIFF_STYLES, DIFF_STYLE_FALLBACK, LINE_PROPS_FN, HIDDEN_LINE_NUMBERS, CodeBlock;
10081
+ function useLanguageReady(language) {
10082
+ const [ready, setReady] = useState(() => isLanguageRegistered(language));
10083
+ useEffect(() => {
10084
+ if (isLanguageRegistered(language)) {
10085
+ if (!ready) setReady(true);
10086
+ return;
10087
+ }
10088
+ let active = true;
10089
+ loadPrismLanguage(language).then(() => {
10090
+ if (active) setReady(true);
10091
+ });
10092
+ return () => {
10093
+ active = false;
10094
+ };
10095
+ }, [language]);
10096
+ return ready;
10097
+ }
10098
+ 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;
10036
10099
  var init_CodeBlock = __esm({
10037
10100
  "components/core/molecules/markdown/CodeBlock.tsx"() {
10038
10101
  init_cn();
@@ -10071,8 +10134,62 @@ var init_CodeBlock = __esm({
10071
10134
  SyntaxHighlighter.registerLanguage("toml", langToml);
10072
10135
  SyntaxHighlighter.registerLanguage("go", langGo);
10073
10136
  SyntaxHighlighter.registerLanguage("graphql", langGraphql);
10137
+ SyntaxHighlighter.registerLanguage("clojure", langClojure);
10138
+ SyntaxHighlighter.registerLanguage("clj", langClojure);
10139
+ SyntaxHighlighter.registerLanguage("edn", langClojure);
10140
+ SyntaxHighlighter.registerLanguage("haskell", langHaskell);
10141
+ SyntaxHighlighter.registerLanguage("hs", langHaskell);
10142
+ SyntaxHighlighter.registerLanguage("lisp", langLisp);
10143
+ SyntaxHighlighter.registerLanguage("scheme", langScheme);
10144
+ SyntaxHighlighter.registerLanguage("scala", langScala);
10145
+ SyntaxHighlighter.registerLanguage("elixir", langElixir);
10146
+ SyntaxHighlighter.registerLanguage("ex", langElixir);
10147
+ SyntaxHighlighter.registerLanguage("exs", langElixir);
10148
+ SyntaxHighlighter.registerLanguage("erlang", langErlang);
10149
+ SyntaxHighlighter.registerLanguage("erl", langErlang);
10150
+ SyntaxHighlighter.registerLanguage("elm", langElm);
10151
+ SyntaxHighlighter.registerLanguage("fsharp", langFsharp);
10152
+ SyntaxHighlighter.registerLanguage("fs", langFsharp);
10153
+ SyntaxHighlighter.registerLanguage("fsx", langFsharp);
10154
+ SyntaxHighlighter.registerLanguage("ocaml", langOcaml);
10155
+ SyntaxHighlighter.registerLanguage("ml", langOcaml);
10156
+ SyntaxHighlighter.registerLanguage("java", langJava);
10157
+ SyntaxHighlighter.registerLanguage("c", langC);
10158
+ SyntaxHighlighter.registerLanguage("cpp", langCpp);
10159
+ SyntaxHighlighter.registerLanguage("c++", langCpp);
10160
+ SyntaxHighlighter.registerLanguage("cc", langCpp);
10161
+ SyntaxHighlighter.registerLanguage("cxx", langCpp);
10162
+ SyntaxHighlighter.registerLanguage("hpp", langCpp);
10163
+ SyntaxHighlighter.registerLanguage("h", langCpp);
10164
+ SyntaxHighlighter.registerLanguage("csharp", langCsharp);
10165
+ SyntaxHighlighter.registerLanguage("cs", langCsharp);
10166
+ SyntaxHighlighter.registerLanguage("objectivec", langObjectivec);
10167
+ SyntaxHighlighter.registerLanguage("objc", langObjectivec);
10168
+ SyntaxHighlighter.registerLanguage("php", langPhp);
10169
+ SyntaxHighlighter.registerLanguage("ruby", langRuby);
10170
+ SyntaxHighlighter.registerLanguage("rb", langRuby);
10171
+ SyntaxHighlighter.registerLanguage("swift", langSwift);
10172
+ SyntaxHighlighter.registerLanguage("kotlin", langKotlin);
10173
+ SyntaxHighlighter.registerLanguage("kt", langKotlin);
10174
+ SyntaxHighlighter.registerLanguage("lua", langLua);
10175
+ SyntaxHighlighter.registerLanguage("r", langR);
10176
+ SyntaxHighlighter.registerLanguage("dart", langDart);
10177
+ SyntaxHighlighter.registerLanguage("julia", langJulia);
10178
+ SyntaxHighlighter.registerLanguage("fortran", langFortran);
10179
+ SyntaxHighlighter.registerLanguage("f90", langFortran);
10180
+ SyntaxHighlighter.registerLanguage("f95", langFortran);
10181
+ SyntaxHighlighter.registerLanguage("perl", langPerl);
10182
+ SyntaxHighlighter.registerLanguage("pl", langPerl);
10183
+ SyntaxHighlighter.registerLanguage("powershell", langPowershell);
10184
+ SyntaxHighlighter.registerLanguage("ps1", langPowershell);
10185
+ SyntaxHighlighter.registerLanguage("makefile", langMakefile);
10186
+ SyntaxHighlighter.registerLanguage("make", langMakefile);
10187
+ SyntaxHighlighter.registerLanguage("nginx", langNginx);
10188
+ SyntaxHighlighter.registerLanguage("ini", langIni);
10074
10189
  SyntaxHighlighter.registerLanguage("orb", orbLanguage);
10075
10190
  SyntaxHighlighter.registerLanguage("lolo", loloLanguage);
10191
+ dynamicallyLoaded = /* @__PURE__ */ new Set();
10192
+ codeLanguageLoader = null;
10076
10193
  orbStyleOverrides = {
10077
10194
  "orb-binding": { color: ORB_COLORS.dark.binding, fontWeight: "bold" },
10078
10195
  "orb-effect": { color: ORB_COLORS.dark.effect, fontWeight: "bold" },
@@ -10143,6 +10260,58 @@ var init_CodeBlock = __esm({
10143
10260
  "graphql",
10144
10261
  "html",
10145
10262
  "xml",
10263
+ "clojure",
10264
+ "clj",
10265
+ "edn",
10266
+ "haskell",
10267
+ "hs",
10268
+ "lisp",
10269
+ "scheme",
10270
+ "scala",
10271
+ "elixir",
10272
+ "ex",
10273
+ "exs",
10274
+ "erlang",
10275
+ "erl",
10276
+ "elm",
10277
+ "fsharp",
10278
+ "fs",
10279
+ "fsx",
10280
+ "ocaml",
10281
+ "ml",
10282
+ "java",
10283
+ "c",
10284
+ "cpp",
10285
+ "c++",
10286
+ "cc",
10287
+ "cxx",
10288
+ "hpp",
10289
+ "h",
10290
+ "csharp",
10291
+ "cs",
10292
+ "objectivec",
10293
+ "objc",
10294
+ "php",
10295
+ "ruby",
10296
+ "rb",
10297
+ "swift",
10298
+ "kotlin",
10299
+ "kt",
10300
+ "lua",
10301
+ "r",
10302
+ "dart",
10303
+ "julia",
10304
+ "fortran",
10305
+ "f90",
10306
+ "f95",
10307
+ "perl",
10308
+ "pl",
10309
+ "powershell",
10310
+ "ps1",
10311
+ "makefile",
10312
+ "make",
10313
+ "nginx",
10314
+ "ini",
10146
10315
  "orb",
10147
10316
  "lolo"
10148
10317
  ];
@@ -10188,6 +10357,7 @@ var init_CodeBlock = __esm({
10188
10357
  const isOrb = language === "orb";
10189
10358
  const isLolo = language === "lolo";
10190
10359
  const activeStyle = isOrb ? orbStyle : isLolo ? loloStyle : dark;
10360
+ const languageReady = useLanguageReady(language);
10191
10361
  const eventBus = useEventBus();
10192
10362
  const { t } = useTranslate();
10193
10363
  const scrollRef = useRef(null);
@@ -10311,7 +10481,7 @@ var init_CodeBlock = __esm({
10311
10481
  children: code
10312
10482
  }
10313
10483
  ),
10314
- [code, language, activeStyle]
10484
+ [code, language, activeStyle, languageReady]
10315
10485
  );
10316
10486
  useLayoutEffect(() => {
10317
10487
  const container = codeRef.current;
@@ -10911,10 +11081,10 @@ var init_MarkdownContent = __esm({
10911
11081
  }
10912
11082
  });
10913
11083
 
10914
- // components/core/molecules/lessonSegmentUtils.ts
11084
+ // lib/lessonSegmentUtils.ts
10915
11085
  function parseMarkdownWithCodeBlocks(content) {
10916
11086
  const segments = [];
10917
- const codeBlockRegex = /```([\w-]+)?(?:\s+(run))?\n([\s\S]*?)```/g;
11087
+ const codeBlockRegex = /```([^\n\r]*)\r?\n([\s\S]*?)```/g;
10918
11088
  let lastIndex = 0;
10919
11089
  let match;
10920
11090
  while ((match = codeBlockRegex.exec(content)) !== null) {
@@ -10922,12 +11092,12 @@ function parseMarkdownWithCodeBlocks(content) {
10922
11092
  if (before.trim()) {
10923
11093
  segments.push({ type: "markdown", content: before });
10924
11094
  }
10925
- const rawLanguage = match[1] ?? "text";
10926
- const runModifier = !!match[2];
11095
+ const tokens = match[1].trim().split(/\s+/).filter(Boolean);
11096
+ let rawLanguage = tokens[0] ?? "text";
10927
11097
  const suffixRunnable = rawLanguage.endsWith("-runnable");
10928
- const runnable = runModifier || suffixRunnable;
11098
+ const runnable = suffixRunnable || tokens.includes("run");
10929
11099
  const baseLanguage = suffixRunnable ? rawLanguage.slice(0, -"-runnable".length) || "text" : rawLanguage;
10930
- segments.push({ type: "code", language: baseLanguage, content: match[3].trim(), runnable });
11100
+ segments.push({ type: "code", language: baseLanguage, content: match[2].trim(), runnable });
10931
11101
  lastIndex = codeBlockRegex.lastIndex;
10932
11102
  }
10933
11103
  const remaining = content.slice(lastIndex);
@@ -10937,7 +11107,7 @@ function parseMarkdownWithCodeBlocks(content) {
10937
11107
  return segments;
10938
11108
  }
10939
11109
  var init_lessonSegmentUtils = __esm({
10940
- "components/core/molecules/lessonSegmentUtils.ts"() {
11110
+ "lib/lessonSegmentUtils.ts"() {
10941
11111
  }
10942
11112
  });
10943
11113
  var BLOOM_CONFIG, BloomQuizBlock;
@@ -37534,7 +37704,7 @@ var init_ReflectionBlock = __esm({
37534
37704
  }
37535
37705
  });
37536
37706
 
37537
- // components/core/molecules/parseLessonSegments.ts
37707
+ // lib/parseLessonSegments.ts
37538
37708
  function extractTagContent(content, tagName) {
37539
37709
  const closedTagRegex = new RegExp(`<${tagName}>([\\s\\S]*?)<\\/${tagName}>`, "i");
37540
37710
  const closedMatch = content.match(closedTagRegex);
@@ -37611,7 +37781,7 @@ function parseLessonSegments(lesson) {
37611
37781
  return segments;
37612
37782
  }
37613
37783
  var init_parseLessonSegments = __esm({
37614
- "components/core/molecules/parseLessonSegments.ts"() {
37784
+ "lib/parseLessonSegments.ts"() {
37615
37785
  init_lessonSegmentUtils();
37616
37786
  }
37617
37787
  });
@@ -48245,4 +48415,4 @@ function useGitHubBranches(owner, repo, enabled = true) {
48245
48415
  });
48246
48416
  }
48247
48417
 
48248
- export { ALL_PRESETS, ALMADAR_DND_MIME, AR_BOOK_FIELDS, AboutPageTemplate, Accordion, Card2 as ActionCard, ActionPalette, ActionTile, ActivationBlock, Alert, AlgorithmCanvas, AnimatedCounter, AnimatedGraphic, AnimatedReveal, ArticleSection, Aside, AssetPicker, AtlasImage, AtlasPanel, AuthLayout, Avatar, Badge, BehaviorView, BiologyCanvas, BloomQuizBlock, BookChapterView, BookCoverPage, BookNavBar, BookTableOfContents, BookViewer, Box, BranchingLogicBuilder, Breadcrumb, Button, ButtonGroup, CTABanner, CalendarGrid, Canvas, Canvas2D, Card, CardBody, CardContent, CardFooter, CardGrid, CardHeader, CardTitle, Carousel, CaseStudyCard, CaseStudyOrganism, Center, Chart, ChartLegend, ChatBar, Checkbox, ChemistryCanvas, ChoiceButton, Coachmark, CodeBlock, CodeRunnerPanel, CollapsibleSection, CommunityLinks, ConditionalWrapper, ConfettiEffect, ConfirmDialog, ConnectionBlock, Container, ContentRenderer, ContentSection, ControlButton, ControlGrid, CounterTemplate, DEFAULT_LIKERT_OPTIONS, DEFAULT_MATRIX_COLUMNS, DEFAULT_SLOTS, DIAMOND_TOP_Y, DashboardGrid, DashboardLayout, DataGrid, DataList, DataTable, DateRangePicker, DateRangeSelector, DayCell, DetailPanel, Dialog, DialogueBubble, Divider, DocBreadcrumb, DocPagination, DocSearch, DocSidebar, DocTOC, DocumentViewer, StateMachineView as DomStateMachineVisualizer, Drawer, DrawerSlot, ELEMENT_SELECTED_EVENT, EdgeDecoration, EditorCheckbox, EditorSelect, EditorSlider, EditorTextInput, EditorToolbar, EmptyState, EntityDisplayEvents, ErrorBoundary, ErrorState, FEATURE_COLORS, FEATURE_TYPES, FLOOR_HEIGHT, FeatureCard, FeatureDetailPageTemplate, FeatureGrid, FeatureGridOrganism, FileTree, FilterGroup, FilterPill, Flex, FlipCard, FlipContainer, FloatingActionButton, Form, FormActions, FormField, FormLayout, FormSection, FormSectionHeader, GameAudioToggle, GameHud, GameIcon, GameMenu, GameShell, GenericAppTemplate, GeometricPattern, GradientDivider, GraphCanvas, GraphView, Grid, GridPicker, HStack, Header, HealthBar, HeroOrganism, HeroSection, I18nProvider, IDENTITY_BOOK_FIELDS, Icon, IconPicker, InfiniteScrollSentinel, Input, InputGroup, InstallBox, JazariStateMachine, JsonTreeEditor, Label, LandingPageTemplate, LawReferenceTooltip, LearningCanvas, Lightbox, LikertScale, LineChart2 as LineChart, List3 as List, LoadingState, MapView, MarkdownContent, MarketingFooter, MarketingStatCard, MasterDetail, MasterDetailLayout, MathCanvas, MatrixQuestion, MediaGallery, Menu, Meter, Modal, ModalSlot, ModuleCard, Navigation, NodeSlotEditor, NotifyListener, NumberStepper, OnboardingSpotlight, OptionConstraintGroup, StateMachineView as OrbitalStateMachineView, OrbitalVisualization, Overlay, PageHeader, PageTransition, Pagination, PatternTile, PhysicsCanvas, Popover, PositionedCanvas, Presence, PricingCard, PricingGrid, PricingOrganism, PricingPageTemplate, ProgressBar, ProgressDots, PropertyInspector, PullQuote, PullToRefresh, QrScanner, QuizBlock, Radio, RangeSlider, ReflectionBlock, RelationSelect, RepeatableFormSection, ReplyTree, RichBlockEditor, RuntimeDebugger, SHEET_COLUMNS, SPRITE_SHEET_LAYOUT, ScaledDiagram, ScoreDisplay, SearchInput, Section, SectionHeader, SegmentRenderer, Select, SequenceBar, ServiceCatalog, SharedEntityStoreContext, ShowcaseCard, ShowcaseOrganism, SidePanel, Sidebar, SignaturePad, SimpleGrid, Skeleton, SlotContentRenderer, SocialProof, SortableList, Spacer, Sparkline, Spinner, Split, SplitPane, SplitSection, Stack, StarRating, StatBadge, StatCard, StatDisplay, StateGraph, StateJsonView, StateMachineView, StateNode2 as StateNode, StatsGrid, StatsOrganism, StatusBar, StatusDot, StepFlow, StepFlowOrganism, SubagentTracePanel, SvgBranch, SvgConnection, SvgFlow, SvgGrid, SvgLobe, SvgMesh, SvgMorph, SvgNode, SvgPulse, SvgRing, SvgShield, SvgStack, SwipeableRow, Switch, TERRAIN_COLORS, TILE_HEIGHT, TILE_WIDTH, TabbedContainer, TableView, Tabs, TagCloud, TagInput, TeamCard, TeamOrganism, TerrainPalette, TextHighlight, Textarea, ThemeToggle, TimeSlotCell, Timeline, TimerDisplay, Toast, ToastSlot, Tooltip, TraitFrame, TraitSlot, TraitStateViewer, TransitionArrow, TrendIndicator, TypewriterText, Typography, UISlotComponent, UISlotRenderer, UploadDropZone, VStack, VersionDiff, ViolationAlert, VoteStack, WizardContainer, WizardNavigation, WizardProgress, boardEntity, bool, calculateAttackTargets, calculateValidMoves, cn, createInitialGameState, createSharedEntityStore, createTranslate, createUnitAnimationState, getCurrentFrame, getTileDimensions, inferDirection, isoToScreen, makeAsset, makeAssetMap, mapBookData, num, objAvailableActions, objAvailableEvents, objCurrentState, objIcon, objId, objMaxRules, objName, objRules, objStates, parseEditFocus, parseLessonSegments, parseMarkdownWithCodeBlocks, parseQueryBinding, pendulum, projectileMotion, resolveFieldMap, resolveFrame, resolveSheetDirection, rows, runTickFrame, screenToIso, springOscillator, str, tickAnimationState, toCodeLanguage, transitionAnimation, unitHealth, unitPosition, unitTeam, useAgentChat, useAnchorRect, useAtlasSliceDataUrl, useAuthContext, useCamera, useCanvasGestures, useCompile, useConnectGitHub, useDeepAgentGeneration, useDisconnectGitHub, useDragReorder, useDraggable, useDropZone, useEmitEvent, useEventBus, useEventListener, useExtensions, useFileEditor, useFileSystem, useGameAudio, useGitHubBranches, useGitHubRepo, useGitHubRepos, useGitHubStatus, useImageCache, useInfiniteScroll, useLongPress, useOrbitalHistory, usePresence, usePreview, usePullToRefresh, useQuerySingleton, useRenderInterpolation, useSharedEntitySnapshot, useSharedEntityStore, useSharedEntityStoreContext, useSwipeGesture, useTapReveal, useTraitListens, useTranslate115 as useTranslate, useUIEvents, useUISlotManager, useUnitSpriteAtlas, useValidation, vec2 };
48418
+ export { ALL_PRESETS, ALMADAR_DND_MIME, AR_BOOK_FIELDS, AboutPageTemplate, Accordion, Card2 as ActionCard, ActionPalette, ActionTile, ActivationBlock, Alert, AlgorithmCanvas, AnimatedCounter, AnimatedGraphic, AnimatedReveal, ArticleSection, Aside, AssetPicker, AtlasImage, AtlasPanel, AuthLayout, Avatar, Badge, BehaviorView, BiologyCanvas, BloomQuizBlock, BookChapterView, BookCoverPage, BookNavBar, BookTableOfContents, BookViewer, Box, BranchingLogicBuilder, Breadcrumb, Button, ButtonGroup, CTABanner, CalendarGrid, Canvas, Canvas2D, Card, CardBody, CardContent, CardFooter, CardGrid, CardHeader, CardTitle, Carousel, CaseStudyCard, CaseStudyOrganism, Center, Chart, ChartLegend, ChatBar, Checkbox, ChemistryCanvas, ChoiceButton, Coachmark, CodeBlock, CodeRunnerPanel, CollapsibleSection, CommunityLinks, ConditionalWrapper, ConfettiEffect, ConfirmDialog, ConnectionBlock, Container, ContentRenderer, ContentSection, ControlButton, ControlGrid, CounterTemplate, DEFAULT_LIKERT_OPTIONS, DEFAULT_MATRIX_COLUMNS, DEFAULT_SLOTS, DIAMOND_TOP_Y, DashboardGrid, DashboardLayout, DataGrid, DataList, DataTable, DateRangePicker, DateRangeSelector, DayCell, DetailPanel, Dialog, DialogueBubble, Divider, DocBreadcrumb, DocPagination, DocSearch, DocSidebar, DocTOC, DocumentViewer, StateMachineView as DomStateMachineVisualizer, Drawer, DrawerSlot, ELEMENT_SELECTED_EVENT, EdgeDecoration, EditorCheckbox, EditorSelect, EditorSlider, EditorTextInput, EditorToolbar, EmptyState, EntityDisplayEvents, ErrorBoundary, ErrorState, FEATURE_COLORS, FEATURE_TYPES, FLOOR_HEIGHT, FeatureCard, FeatureDetailPageTemplate, FeatureGrid, FeatureGridOrganism, FileTree, FilterGroup, FilterPill, Flex, FlipCard, FlipContainer, FloatingActionButton, Form, FormActions, FormField, FormLayout, FormSection, FormSectionHeader, GameAudioToggle, GameHud, GameIcon, GameMenu, GameShell, GenericAppTemplate, GeometricPattern, GradientDivider, GraphCanvas, GraphView, Grid, GridPicker, HStack, Header, HealthBar, HeroOrganism, HeroSection, I18nProvider, IDENTITY_BOOK_FIELDS, Icon, IconPicker, InfiniteScrollSentinel, Input, InputGroup, InstallBox, JazariStateMachine, JsonTreeEditor, Label, LandingPageTemplate, LawReferenceTooltip, LearningCanvas, Lightbox, LikertScale, LineChart2 as LineChart, List3 as List, LoadingState, MapView, MarkdownContent, MarketingFooter, MarketingStatCard, MasterDetail, MasterDetailLayout, MathCanvas, MatrixQuestion, MediaGallery, Menu, Meter, Modal, ModalSlot, ModuleCard, Navigation, NodeSlotEditor, NotifyListener, NumberStepper, OnboardingSpotlight, OptionConstraintGroup, StateMachineView as OrbitalStateMachineView, OrbitalVisualization, Overlay, PageHeader, PageTransition, Pagination, PatternTile, PhysicsCanvas, Popover, PositionedCanvas, Presence, PricingCard, PricingGrid, PricingOrganism, PricingPageTemplate, ProgressBar, ProgressDots, PropertyInspector, PullQuote, PullToRefresh, QrScanner, QuizBlock, Radio, RangeSlider, ReflectionBlock, RelationSelect, RepeatableFormSection, ReplyTree, RichBlockEditor, RuntimeDebugger, SHEET_COLUMNS, SPRITE_SHEET_LAYOUT, ScaledDiagram, ScoreDisplay, SearchInput, Section, SectionHeader, SegmentRenderer, Select, SequenceBar, ServiceCatalog, SharedEntityStoreContext, ShowcaseCard, ShowcaseOrganism, SidePanel, Sidebar, SignaturePad, SimpleGrid, Skeleton, SlotContentRenderer, SocialProof, SortableList, Spacer, Sparkline, Spinner, Split, SplitPane, SplitSection, Stack, StarRating, StatBadge, StatCard, StatDisplay, StateGraph, StateJsonView, StateMachineView, StateNode2 as StateNode, StatsGrid, StatsOrganism, StatusBar, StatusDot, StepFlow, StepFlowOrganism, SubagentTracePanel, SvgBranch, SvgConnection, SvgFlow, SvgGrid, SvgLobe, SvgMesh, SvgMorph, SvgNode, SvgPulse, SvgRing, SvgShield, SvgStack, SwipeableRow, Switch, TERRAIN_COLORS, TILE_HEIGHT, TILE_WIDTH, TabbedContainer, TableView, Tabs, TagCloud, TagInput, TeamCard, TeamOrganism, TerrainPalette, TextHighlight, Textarea, ThemeToggle, TimeSlotCell, Timeline, TimerDisplay, Toast, ToastSlot, Tooltip, TraitFrame, TraitSlot, TraitStateViewer, TransitionArrow, TrendIndicator, TypewriterText, Typography, UISlotComponent, UISlotRenderer, UploadDropZone, VStack, VersionDiff, ViolationAlert, VoteStack, WizardContainer, WizardNavigation, WizardProgress, boardEntity, bool, calculateAttackTargets, calculateValidMoves, cn, createInitialGameState, createSharedEntityStore, createTranslate, createUnitAnimationState, getCurrentFrame, getTileDimensions, inferDirection, isoToScreen, makeAsset, makeAssetMap, mapBookData, num, objAvailableActions, objAvailableEvents, objCurrentState, objIcon, objId, objMaxRules, objName, objRules, objStates, parseEditFocus, parseLessonSegments, parseMarkdownWithCodeBlocks, parseQueryBinding, pendulum, projectileMotion, registerCodeLanguageLoader, resolveFieldMap, resolveFrame, resolveSheetDirection, rows, runTickFrame, screenToIso, springOscillator, str, tickAnimationState, toCodeLanguage, transitionAnimation, unitHealth, unitPosition, unitTeam, useAgentChat, useAnchorRect, useAtlasSliceDataUrl, useAuthContext, useCamera, useCanvasGestures, useCompile, useConnectGitHub, useDeepAgentGeneration, useDisconnectGitHub, useDragReorder, useDraggable, useDropZone, useEmitEvent, useEventBus, useEventListener, useExtensions, useFileEditor, useFileSystem, useGameAudio, useGitHubBranches, useGitHubRepo, useGitHubRepos, useGitHubStatus, useImageCache, useInfiniteScroll, useLongPress, useOrbitalHistory, usePresence, usePreview, usePullToRefresh, useQuerySingleton, useRenderInterpolation, useSharedEntitySnapshot, useSharedEntityStore, useSharedEntityStoreContext, useSwipeGesture, useTapReveal, useTraitListens, useTranslate115 as useTranslate, useUIEvents, useUISlotManager, useUnitSpriteAtlas, useValidation, vec2 };
@@ -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');
@@ -86,6 +115,35 @@ var langDiff__default = /*#__PURE__*/_interopDefault(langDiff);
86
115
  var langToml__default = /*#__PURE__*/_interopDefault(langToml);
87
116
  var langGo__default = /*#__PURE__*/_interopDefault(langGo);
88
117
  var langGraphql__default = /*#__PURE__*/_interopDefault(langGraphql);
118
+ var langClojure__default = /*#__PURE__*/_interopDefault(langClojure);
119
+ var langHaskell__default = /*#__PURE__*/_interopDefault(langHaskell);
120
+ var langLisp__default = /*#__PURE__*/_interopDefault(langLisp);
121
+ var langScheme__default = /*#__PURE__*/_interopDefault(langScheme);
122
+ var langScala__default = /*#__PURE__*/_interopDefault(langScala);
123
+ var langElixir__default = /*#__PURE__*/_interopDefault(langElixir);
124
+ var langErlang__default = /*#__PURE__*/_interopDefault(langErlang);
125
+ var langElm__default = /*#__PURE__*/_interopDefault(langElm);
126
+ var langFsharp__default = /*#__PURE__*/_interopDefault(langFsharp);
127
+ var langOcaml__default = /*#__PURE__*/_interopDefault(langOcaml);
128
+ var langJava__default = /*#__PURE__*/_interopDefault(langJava);
129
+ var langC__default = /*#__PURE__*/_interopDefault(langC);
130
+ var langCpp__default = /*#__PURE__*/_interopDefault(langCpp);
131
+ var langCsharp__default = /*#__PURE__*/_interopDefault(langCsharp);
132
+ var langObjectivec__default = /*#__PURE__*/_interopDefault(langObjectivec);
133
+ var langPhp__default = /*#__PURE__*/_interopDefault(langPhp);
134
+ var langRuby__default = /*#__PURE__*/_interopDefault(langRuby);
135
+ var langSwift__default = /*#__PURE__*/_interopDefault(langSwift);
136
+ var langKotlin__default = /*#__PURE__*/_interopDefault(langKotlin);
137
+ var langLua__default = /*#__PURE__*/_interopDefault(langLua);
138
+ var langR__default = /*#__PURE__*/_interopDefault(langR);
139
+ var langDart__default = /*#__PURE__*/_interopDefault(langDart);
140
+ var langJulia__default = /*#__PURE__*/_interopDefault(langJulia);
141
+ var langFortran__default = /*#__PURE__*/_interopDefault(langFortran);
142
+ var langPerl__default = /*#__PURE__*/_interopDefault(langPerl);
143
+ var langPowershell__default = /*#__PURE__*/_interopDefault(langPowershell);
144
+ var langMakefile__default = /*#__PURE__*/_interopDefault(langMakefile);
145
+ var langNginx__default = /*#__PURE__*/_interopDefault(langNginx);
146
+ var langIni__default = /*#__PURE__*/_interopDefault(langIni);
89
147
  var ReactMarkdown__default = /*#__PURE__*/_interopDefault(ReactMarkdown);
90
148
  var remarkGfm__default = /*#__PURE__*/_interopDefault(remarkGfm);
91
149
  var remarkMath__default = /*#__PURE__*/_interopDefault(remarkMath);
@@ -14414,6 +14472,19 @@ var init_EmptyState = __esm({
14414
14472
  EmptyState.displayName = "EmptyState";
14415
14473
  }
14416
14474
  });
14475
+ function isLanguageRegistered(lang) {
14476
+ return CODE_LANGUAGE_SET.has(lang) || dynamicallyLoaded.has(lang);
14477
+ }
14478
+ async function loadPrismLanguage(lang) {
14479
+ if (isLanguageRegistered(lang)) return;
14480
+ try {
14481
+ const grammar = codeLanguageLoader ? await codeLanguageLoader(lang) : null;
14482
+ if (grammar) SyntaxHighlighter__default.default.registerLanguage(lang, grammar);
14483
+ dynamicallyLoaded.add(lang);
14484
+ } catch {
14485
+ dynamicallyLoaded.add(lang);
14486
+ }
14487
+ }
14417
14488
  function computeFoldRegions(code) {
14418
14489
  const lines = code.split("\n");
14419
14490
  const regions = [];
@@ -14449,7 +14520,8 @@ function computeFoldRegions(code) {
14449
14520
  return regions.sort((a, b) => a.start - b.start);
14450
14521
  }
14451
14522
  function toCodeLanguage(value) {
14452
- return value && CODE_LANGUAGE_SET.has(value) ? value : "text";
14523
+ if (!value) return "text";
14524
+ return value.toLowerCase();
14453
14525
  }
14454
14526
  function generateDiff(oldVal, newVal) {
14455
14527
  const oldLines = oldVal.split("\n");
@@ -14468,7 +14540,24 @@ function generateDiff(oldVal, newVal) {
14468
14540
  }
14469
14541
  return diff;
14470
14542
  }
14471
- var orbStyleOverrides, orbStyle, loloStyleOverrides, loloStyle, log7, CODE_LANGUAGES, CODE_LANGUAGE_SET, DIFF_STYLES, DIFF_STYLE_FALLBACK, LINE_PROPS_FN, HIDDEN_LINE_NUMBERS, CodeBlock;
14543
+ function useLanguageReady(language) {
14544
+ const [ready, setReady] = React84.useState(() => isLanguageRegistered(language));
14545
+ React84.useEffect(() => {
14546
+ if (isLanguageRegistered(language)) {
14547
+ if (!ready) setReady(true);
14548
+ return;
14549
+ }
14550
+ let active = true;
14551
+ loadPrismLanguage(language).then(() => {
14552
+ if (active) setReady(true);
14553
+ });
14554
+ return () => {
14555
+ active = false;
14556
+ };
14557
+ }, [language]);
14558
+ return ready;
14559
+ }
14560
+ 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;
14472
14561
  var init_CodeBlock = __esm({
14473
14562
  "components/core/molecules/markdown/CodeBlock.tsx"() {
14474
14563
  init_cn();
@@ -14507,8 +14596,62 @@ var init_CodeBlock = __esm({
14507
14596
  SyntaxHighlighter__default.default.registerLanguage("toml", langToml__default.default);
14508
14597
  SyntaxHighlighter__default.default.registerLanguage("go", langGo__default.default);
14509
14598
  SyntaxHighlighter__default.default.registerLanguage("graphql", langGraphql__default.default);
14599
+ SyntaxHighlighter__default.default.registerLanguage("clojure", langClojure__default.default);
14600
+ SyntaxHighlighter__default.default.registerLanguage("clj", langClojure__default.default);
14601
+ SyntaxHighlighter__default.default.registerLanguage("edn", langClojure__default.default);
14602
+ SyntaxHighlighter__default.default.registerLanguage("haskell", langHaskell__default.default);
14603
+ SyntaxHighlighter__default.default.registerLanguage("hs", langHaskell__default.default);
14604
+ SyntaxHighlighter__default.default.registerLanguage("lisp", langLisp__default.default);
14605
+ SyntaxHighlighter__default.default.registerLanguage("scheme", langScheme__default.default);
14606
+ SyntaxHighlighter__default.default.registerLanguage("scala", langScala__default.default);
14607
+ SyntaxHighlighter__default.default.registerLanguage("elixir", langElixir__default.default);
14608
+ SyntaxHighlighter__default.default.registerLanguage("ex", langElixir__default.default);
14609
+ SyntaxHighlighter__default.default.registerLanguage("exs", langElixir__default.default);
14610
+ SyntaxHighlighter__default.default.registerLanguage("erlang", langErlang__default.default);
14611
+ SyntaxHighlighter__default.default.registerLanguage("erl", langErlang__default.default);
14612
+ SyntaxHighlighter__default.default.registerLanguage("elm", langElm__default.default);
14613
+ SyntaxHighlighter__default.default.registerLanguage("fsharp", langFsharp__default.default);
14614
+ SyntaxHighlighter__default.default.registerLanguage("fs", langFsharp__default.default);
14615
+ SyntaxHighlighter__default.default.registerLanguage("fsx", langFsharp__default.default);
14616
+ SyntaxHighlighter__default.default.registerLanguage("ocaml", langOcaml__default.default);
14617
+ SyntaxHighlighter__default.default.registerLanguage("ml", langOcaml__default.default);
14618
+ SyntaxHighlighter__default.default.registerLanguage("java", langJava__default.default);
14619
+ SyntaxHighlighter__default.default.registerLanguage("c", langC__default.default);
14620
+ SyntaxHighlighter__default.default.registerLanguage("cpp", langCpp__default.default);
14621
+ SyntaxHighlighter__default.default.registerLanguage("c++", langCpp__default.default);
14622
+ SyntaxHighlighter__default.default.registerLanguage("cc", langCpp__default.default);
14623
+ SyntaxHighlighter__default.default.registerLanguage("cxx", langCpp__default.default);
14624
+ SyntaxHighlighter__default.default.registerLanguage("hpp", langCpp__default.default);
14625
+ SyntaxHighlighter__default.default.registerLanguage("h", langCpp__default.default);
14626
+ SyntaxHighlighter__default.default.registerLanguage("csharp", langCsharp__default.default);
14627
+ SyntaxHighlighter__default.default.registerLanguage("cs", langCsharp__default.default);
14628
+ SyntaxHighlighter__default.default.registerLanguage("objectivec", langObjectivec__default.default);
14629
+ SyntaxHighlighter__default.default.registerLanguage("objc", langObjectivec__default.default);
14630
+ SyntaxHighlighter__default.default.registerLanguage("php", langPhp__default.default);
14631
+ SyntaxHighlighter__default.default.registerLanguage("ruby", langRuby__default.default);
14632
+ SyntaxHighlighter__default.default.registerLanguage("rb", langRuby__default.default);
14633
+ SyntaxHighlighter__default.default.registerLanguage("swift", langSwift__default.default);
14634
+ SyntaxHighlighter__default.default.registerLanguage("kotlin", langKotlin__default.default);
14635
+ SyntaxHighlighter__default.default.registerLanguage("kt", langKotlin__default.default);
14636
+ SyntaxHighlighter__default.default.registerLanguage("lua", langLua__default.default);
14637
+ SyntaxHighlighter__default.default.registerLanguage("r", langR__default.default);
14638
+ SyntaxHighlighter__default.default.registerLanguage("dart", langDart__default.default);
14639
+ SyntaxHighlighter__default.default.registerLanguage("julia", langJulia__default.default);
14640
+ SyntaxHighlighter__default.default.registerLanguage("fortran", langFortran__default.default);
14641
+ SyntaxHighlighter__default.default.registerLanguage("f90", langFortran__default.default);
14642
+ SyntaxHighlighter__default.default.registerLanguage("f95", langFortran__default.default);
14643
+ SyntaxHighlighter__default.default.registerLanguage("perl", langPerl__default.default);
14644
+ SyntaxHighlighter__default.default.registerLanguage("pl", langPerl__default.default);
14645
+ SyntaxHighlighter__default.default.registerLanguage("powershell", langPowershell__default.default);
14646
+ SyntaxHighlighter__default.default.registerLanguage("ps1", langPowershell__default.default);
14647
+ SyntaxHighlighter__default.default.registerLanguage("makefile", langMakefile__default.default);
14648
+ SyntaxHighlighter__default.default.registerLanguage("make", langMakefile__default.default);
14649
+ SyntaxHighlighter__default.default.registerLanguage("nginx", langNginx__default.default);
14650
+ SyntaxHighlighter__default.default.registerLanguage("ini", langIni__default.default);
14510
14651
  SyntaxHighlighter__default.default.registerLanguage("orb", syntax.orbLanguage);
14511
14652
  SyntaxHighlighter__default.default.registerLanguage("lolo", syntax.loloLanguage);
14653
+ dynamicallyLoaded = /* @__PURE__ */ new Set();
14654
+ codeLanguageLoader = null;
14512
14655
  orbStyleOverrides = {
14513
14656
  "orb-binding": { color: syntax.ORB_COLORS.dark.binding, fontWeight: "bold" },
14514
14657
  "orb-effect": { color: syntax.ORB_COLORS.dark.effect, fontWeight: "bold" },
@@ -14579,6 +14722,58 @@ var init_CodeBlock = __esm({
14579
14722
  "graphql",
14580
14723
  "html",
14581
14724
  "xml",
14725
+ "clojure",
14726
+ "clj",
14727
+ "edn",
14728
+ "haskell",
14729
+ "hs",
14730
+ "lisp",
14731
+ "scheme",
14732
+ "scala",
14733
+ "elixir",
14734
+ "ex",
14735
+ "exs",
14736
+ "erlang",
14737
+ "erl",
14738
+ "elm",
14739
+ "fsharp",
14740
+ "fs",
14741
+ "fsx",
14742
+ "ocaml",
14743
+ "ml",
14744
+ "java",
14745
+ "c",
14746
+ "cpp",
14747
+ "c++",
14748
+ "cc",
14749
+ "cxx",
14750
+ "hpp",
14751
+ "h",
14752
+ "csharp",
14753
+ "cs",
14754
+ "objectivec",
14755
+ "objc",
14756
+ "php",
14757
+ "ruby",
14758
+ "rb",
14759
+ "swift",
14760
+ "kotlin",
14761
+ "kt",
14762
+ "lua",
14763
+ "r",
14764
+ "dart",
14765
+ "julia",
14766
+ "fortran",
14767
+ "f90",
14768
+ "f95",
14769
+ "perl",
14770
+ "pl",
14771
+ "powershell",
14772
+ "ps1",
14773
+ "makefile",
14774
+ "make",
14775
+ "nginx",
14776
+ "ini",
14582
14777
  "orb",
14583
14778
  "lolo"
14584
14779
  ];
@@ -14624,6 +14819,7 @@ var init_CodeBlock = __esm({
14624
14819
  const isOrb = language === "orb";
14625
14820
  const isLolo = language === "lolo";
14626
14821
  const activeStyle = isOrb ? orbStyle : isLolo ? loloStyle : dark__default.default;
14822
+ const languageReady = useLanguageReady(language);
14627
14823
  const eventBus = useEventBus();
14628
14824
  const { t } = hooks.useTranslate();
14629
14825
  const scrollRef = React84.useRef(null);
@@ -14747,7 +14943,7 @@ var init_CodeBlock = __esm({
14747
14943
  children: code
14748
14944
  }
14749
14945
  ),
14750
- [code, language, activeStyle]
14946
+ [code, language, activeStyle, languageReady]
14751
14947
  );
14752
14948
  React84.useLayoutEffect(() => {
14753
14949
  const container = codeRef.current;
@@ -15347,10 +15543,10 @@ var init_MarkdownContent = __esm({
15347
15543
  }
15348
15544
  });
15349
15545
 
15350
- // components/core/molecules/lessonSegmentUtils.ts
15546
+ // lib/lessonSegmentUtils.ts
15351
15547
  function parseMarkdownWithCodeBlocks(content) {
15352
15548
  const segments = [];
15353
- const codeBlockRegex = /```([\w-]+)?(?:\s+(run))?\n([\s\S]*?)```/g;
15549
+ const codeBlockRegex = /```([^\n\r]*)\r?\n([\s\S]*?)```/g;
15354
15550
  let lastIndex = 0;
15355
15551
  let match;
15356
15552
  while ((match = codeBlockRegex.exec(content)) !== null) {
@@ -15358,12 +15554,12 @@ function parseMarkdownWithCodeBlocks(content) {
15358
15554
  if (before.trim()) {
15359
15555
  segments.push({ type: "markdown", content: before });
15360
15556
  }
15361
- const rawLanguage = match[1] ?? "text";
15362
- const runModifier = !!match[2];
15557
+ const tokens = match[1].trim().split(/\s+/).filter(Boolean);
15558
+ let rawLanguage = tokens[0] ?? "text";
15363
15559
  const suffixRunnable = rawLanguage.endsWith("-runnable");
15364
- const runnable = runModifier || suffixRunnable;
15560
+ const runnable = suffixRunnable || tokens.includes("run");
15365
15561
  const baseLanguage = suffixRunnable ? rawLanguage.slice(0, -"-runnable".length) || "text" : rawLanguage;
15366
- segments.push({ type: "code", language: baseLanguage, content: match[3].trim(), runnable });
15562
+ segments.push({ type: "code", language: baseLanguage, content: match[2].trim(), runnable });
15367
15563
  lastIndex = codeBlockRegex.lastIndex;
15368
15564
  }
15369
15565
  const remaining = content.slice(lastIndex);
@@ -15373,7 +15569,7 @@ function parseMarkdownWithCodeBlocks(content) {
15373
15569
  return segments;
15374
15570
  }
15375
15571
  var init_lessonSegmentUtils = __esm({
15376
- "components/core/molecules/lessonSegmentUtils.ts"() {
15572
+ "lib/lessonSegmentUtils.ts"() {
15377
15573
  }
15378
15574
  });
15379
15575
  var BLOOM_CONFIG, BloomQuizBlock;