@plumile/ui 0.1.68 → 0.1.69

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. package/lib/esm/admin/organisms/admin_sidebar/AdminSidebar.js +62 -0
  2. package/lib/esm/admin/organisms/admin_sidebar/AdminSidebar.js.map +1 -0
  3. package/lib/esm/admin/organisms/admin_sidebar/adminSidebar.css.js +17 -0
  4. package/lib/esm/admin/organisms/admin_sidebar/adminSidebar.css.js.map +1 -0
  5. package/lib/esm/{backoffice/organisms/backoffice_topbar/BackofficeTopbar.js → admin/organisms/admin_topbar/AdminTopbar.js} +4 -4
  6. package/lib/esm/admin/organisms/admin_topbar/AdminTopbar.js.map +1 -0
  7. package/lib/esm/admin/organisms/admin_topbar/adminTopbar.css.js +8 -0
  8. package/lib/esm/admin/organisms/admin_topbar/adminTopbar.css.js.map +1 -0
  9. package/lib/esm/admin/templates/admin_shell_layout/AdminShellLayout.js +19 -0
  10. package/lib/esm/admin/templates/admin_shell_layout/AdminShellLayout.js.map +1 -0
  11. package/lib/esm/admin/theme/AdminThemeProvider.js +11 -0
  12. package/lib/esm/admin/theme/AdminThemeProvider.js.map +1 -0
  13. package/lib/esm/admin/theme/adminTheme.css.js +7 -0
  14. package/lib/esm/admin/theme/adminTheme.css.js.map +1 -0
  15. package/lib/esm/atomic/atoms/badge/Badge.js +3 -3
  16. package/lib/esm/atomic/atoms/button/Button.js +1 -1
  17. package/lib/esm/atomic/atoms/checkbox/Checkbox.js +1 -1
  18. package/lib/esm/atomic/atoms/error_message/ErrorMessage.js +1 -1
  19. package/lib/esm/atomic/atoms/formatted-date/FormattedDate.js +4 -4
  20. package/lib/esm/atomic/atoms/label/Label.js +1 -1
  21. package/lib/esm/atomic/atoms/modal/Modal.js +13 -13
  22. package/lib/esm/atomic/molecules/breadcrumb_navigation/BreadcrumbMenuDropdown.js +12 -12
  23. package/lib/esm/atomic/molecules/breadcrumb_navigation/BreadcrumbMenuPopover.js +20 -20
  24. package/lib/esm/atomic/molecules/breadcrumb_navigation/BreadcrumbNavigation.js +14 -14
  25. package/lib/esm/atomic/molecules/card/Card.js +6 -6
  26. package/lib/esm/atomic/molecules/checkbox_field/CheckboxField.js +1 -1
  27. package/lib/esm/atomic/molecules/dropdown/Dropdown.js +80 -80
  28. package/lib/esm/atomic/molecules/dropdown/Dropdown.js.map +1 -1
  29. package/lib/esm/atomic/molecules/form/Form.js +1 -1
  30. package/lib/esm/atomic/molecules/form_error/FormError.js +1 -1
  31. package/lib/esm/atomic/molecules/highlight/HighlightCode.js +25 -25
  32. package/lib/esm/atomic/molecules/markdown/LazyMarkdownRenderer.js +7 -7
  33. package/lib/esm/atomic/molecules/markdown/MarkdownRenderer.js +33 -33
  34. package/lib/esm/atomic/molecules/markdown/MarkdownRenderer.js.map +1 -1
  35. package/lib/esm/atomic/molecules/markdown/components/LazyMarkdownCodeBlock.js +9 -9
  36. package/lib/esm/atomic/molecules/markdown/components/MarkdownCodeBlock.js +7 -7
  37. package/lib/esm/atomic/molecules/markdown/components/MarkdownCodeCopyButton.js +9 -9
  38. package/lib/esm/atomic/molecules/markdown/components/MarkdownFootnotesSection.js +7 -7
  39. package/lib/esm/atomic/molecules/markdown/components/MarkdownMermaidBlock.js +34 -34
  40. package/lib/esm/atomic/molecules/markdown/components/MarkdownShikiCodeBlock.js +4 -4
  41. package/lib/esm/atomic/molecules/profile_dropdown/ProfileDropdown.js +25 -25
  42. package/lib/esm/atomic/molecules/toast/ToastProvider.js +15 -15
  43. package/lib/esm/atomic/molecules/toast/ToastViewport.js +15 -15
  44. package/lib/esm/atomic/organisms/login_form/LoginForm.js +1 -1
  45. package/lib/esm/atomic/organisms/sidebar/NavigationSidebar.js +34 -34
  46. package/lib/esm/atomic/organisms/sidebar/icons.js +13 -13
  47. package/lib/esm/atomic/templates/auth_layout/AuthLayout.js +1 -1
  48. package/lib/esm/backoffice/atoms/copyable_text/CopyableText.js +10 -10
  49. package/lib/esm/backoffice/atoms/shortcut_hint/ShortcutHint.js +6 -6
  50. package/lib/esm/backoffice/atoms/tag/Tag.js +7 -7
  51. package/lib/esm/backoffice/molecules/backoffice_filter_drawer/BackofficeFilterDrawer.js +22 -22
  52. package/lib/esm/backoffice/molecules/backoffice_json_viewer/BackofficeJsonViewer.js +12 -12
  53. package/lib/esm/backoffice/molecules/backoffice_json_viewer/LazyBackofficeJsonViewer.js +11 -11
  54. package/lib/esm/backoffice/molecules/backoffice_relations_menu/BackofficeRelationsMenu.js +12 -12
  55. package/lib/esm/backoffice/molecules/confirm_dialog/ConfirmDialog.js +9 -9
  56. package/lib/esm/backoffice/molecules/global_search_input/GlobalSearchInput.js +5 -5
  57. package/lib/esm/backoffice/molecules/sidebar_collapse_toggle/SidebarCollapseToggle.js +7 -7
  58. package/lib/esm/backoffice/molecules/sidebar_nav_item/SidebarNavItem.js +26 -26
  59. package/lib/esm/backoffice/molecules/sidebar_nav_item/SidebarNavItem.js.map +1 -1
  60. package/lib/esm/backoffice/molecules/sidebar_nav_section/SidebarNavSection.js +11 -11
  61. package/lib/esm/backoffice/organisms/backoffice_data_table/BackofficeDataTable.js +20 -20
  62. package/lib/esm/components/data-table/TableCell.js +17 -17
  63. package/lib/esm/components/data-table/VirtualizedConnectionTable.js +27 -27
  64. package/lib/esm/components/layout/AppShell.js +14 -0
  65. package/lib/esm/components/layout/AppShell.js.map +1 -0
  66. package/lib/esm/components/layout/PageShell.js +65 -65
  67. package/lib/esm/components/layout/PageShell.js.map +1 -1
  68. package/lib/esm/components/layout/SettingsLayout.css.js +8 -0
  69. package/lib/esm/components/layout/SettingsLayout.css.js.map +1 -0
  70. package/lib/esm/{backoffice/templates/settings_template/SettingsTemplate.js → components/layout/SettingsLayout.js} +5 -5
  71. package/lib/esm/components/layout/SettingsLayout.js.map +1 -0
  72. package/lib/esm/components/layout/SplitViewLayout.css.js +8 -0
  73. package/lib/esm/components/layout/SplitViewLayout.css.js.map +1 -0
  74. package/lib/esm/{backoffice/templates/split_view_template/SplitViewTemplate.js → components/layout/SplitViewLayout.js} +5 -5
  75. package/lib/esm/components/layout/SplitViewLayout.js.map +1 -0
  76. package/lib/esm/components/select/SimpleSelect.js +23 -23
  77. package/lib/esm/index.js +105 -104
  78. package/lib/esm/node_modules/react-shiki/dist/chunk-QPJZGYHO.js +23 -23
  79. package/lib/esm/node_modules/react-shiki/dist/chunk-QPJZGYHO.js.map +1 -1
  80. package/lib/esm/style.css +1 -1
  81. package/lib/esm/theme/ThemeProvider.js +11 -11
  82. package/lib/esm/theme/VisuallyHidden.js +3 -3
  83. package/lib/esm/theme/index.js +9 -9
  84. package/lib/types/{backoffice/organisms/backoffice_sidebar/BackofficeSidebar.d.ts → admin/organisms/admin_sidebar/AdminSidebar.d.ts} +7 -7
  85. package/lib/types/admin/organisms/admin_sidebar/AdminSidebar.d.ts.map +1 -0
  86. package/lib/types/{backoffice/organisms/backoffice_sidebar/backofficeSidebar.css.d.ts → admin/organisms/admin_sidebar/adminSidebar.css.d.ts} +1 -1
  87. package/lib/types/admin/organisms/admin_sidebar/adminSidebar.css.d.ts.map +1 -0
  88. package/lib/types/admin/organisms/admin_topbar/AdminTopbar.d.ts +10 -0
  89. package/lib/types/admin/organisms/admin_topbar/AdminTopbar.d.ts.map +1 -0
  90. package/lib/types/{backoffice/organisms/backoffice_topbar/backofficeTopbar.css.d.ts → admin/organisms/admin_topbar/adminTopbar.css.d.ts} +1 -1
  91. package/lib/types/admin/organisms/admin_topbar/adminTopbar.css.d.ts.map +1 -0
  92. package/lib/types/admin/templates/admin_shell_layout/AdminShellLayout.d.ts +14 -0
  93. package/lib/types/admin/templates/admin_shell_layout/AdminShellLayout.d.ts.map +1 -0
  94. package/lib/types/admin/theme/AdminThemeProvider.d.ts +7 -0
  95. package/lib/types/admin/theme/AdminThemeProvider.d.ts.map +1 -0
  96. package/lib/types/admin/theme/adminTheme.css.d.ts +2 -0
  97. package/lib/types/admin/theme/adminTheme.css.d.ts.map +1 -0
  98. package/lib/types/components/layout/AppShell.d.ts +12 -0
  99. package/lib/types/components/layout/AppShell.d.ts.map +1 -0
  100. package/lib/types/{backoffice/templates/settings_template/settingsTemplate.css.d.ts → components/layout/SettingsLayout.css.d.ts} +1 -1
  101. package/lib/types/components/layout/SettingsLayout.css.d.ts.map +1 -0
  102. package/lib/types/components/layout/SettingsLayout.d.ts +11 -0
  103. package/lib/types/components/layout/SettingsLayout.d.ts.map +1 -0
  104. package/lib/types/{backoffice/templates/split_view_template/splitViewTemplate.css.d.ts → components/layout/SplitViewLayout.css.d.ts} +1 -1
  105. package/lib/types/components/layout/SplitViewLayout.css.d.ts.map +1 -0
  106. package/lib/types/components/layout/SplitViewLayout.d.ts +11 -0
  107. package/lib/types/components/layout/SplitViewLayout.d.ts.map +1 -0
  108. package/lib/types/index.d.ts +9 -8
  109. package/lib/types/index.d.ts.map +1 -1
  110. package/package.json +10 -10
  111. package/lib/esm/backoffice/organisms/backoffice_app_shell/BackofficeAppShell.js +0 -14
  112. package/lib/esm/backoffice/organisms/backoffice_app_shell/BackofficeAppShell.js.map +0 -1
  113. package/lib/esm/backoffice/organisms/backoffice_sidebar/BackofficeSidebar.js +0 -62
  114. package/lib/esm/backoffice/organisms/backoffice_sidebar/BackofficeSidebar.js.map +0 -1
  115. package/lib/esm/backoffice/organisms/backoffice_sidebar/backofficeSidebar.css.js +0 -17
  116. package/lib/esm/backoffice/organisms/backoffice_sidebar/backofficeSidebar.css.js.map +0 -1
  117. package/lib/esm/backoffice/organisms/backoffice_topbar/BackofficeTopbar.js.map +0 -1
  118. package/lib/esm/backoffice/organisms/backoffice_topbar/backofficeTopbar.css.js +0 -8
  119. package/lib/esm/backoffice/organisms/backoffice_topbar/backofficeTopbar.css.js.map +0 -1
  120. package/lib/esm/backoffice/templates/backoffice_shell_template/BackofficeShellTemplate.js +0 -19
  121. package/lib/esm/backoffice/templates/backoffice_shell_template/BackofficeShellTemplate.js.map +0 -1
  122. package/lib/esm/backoffice/templates/settings_template/SettingsTemplate.js.map +0 -1
  123. package/lib/esm/backoffice/templates/settings_template/settingsTemplate.css.js +0 -8
  124. package/lib/esm/backoffice/templates/settings_template/settingsTemplate.css.js.map +0 -1
  125. package/lib/esm/backoffice/templates/split_view_template/SplitViewTemplate.js.map +0 -1
  126. package/lib/esm/backoffice/templates/split_view_template/splitViewTemplate.css.js +0 -8
  127. package/lib/esm/backoffice/templates/split_view_template/splitViewTemplate.css.js.map +0 -1
  128. package/lib/esm/backoffice/theme/BackofficeThemeProvider.js +0 -11
  129. package/lib/esm/backoffice/theme/BackofficeThemeProvider.js.map +0 -1
  130. package/lib/esm/backoffice/theme/backofficeTheme.css.js +0 -7
  131. package/lib/esm/backoffice/theme/backofficeTheme.css.js.map +0 -1
  132. package/lib/types/backoffice/organisms/backoffice_app_shell/BackofficeAppShell.d.ts +0 -12
  133. package/lib/types/backoffice/organisms/backoffice_app_shell/BackofficeAppShell.d.ts.map +0 -1
  134. package/lib/types/backoffice/organisms/backoffice_sidebar/BackofficeSidebar.d.ts.map +0 -1
  135. package/lib/types/backoffice/organisms/backoffice_sidebar/backofficeSidebar.css.d.ts.map +0 -1
  136. package/lib/types/backoffice/organisms/backoffice_topbar/BackofficeTopbar.d.ts +0 -10
  137. package/lib/types/backoffice/organisms/backoffice_topbar/BackofficeTopbar.d.ts.map +0 -1
  138. package/lib/types/backoffice/organisms/backoffice_topbar/backofficeTopbar.css.d.ts.map +0 -1
  139. package/lib/types/backoffice/templates/backoffice_shell_template/BackofficeShellTemplate.d.ts +0 -14
  140. package/lib/types/backoffice/templates/backoffice_shell_template/BackofficeShellTemplate.d.ts.map +0 -1
  141. package/lib/types/backoffice/templates/settings_template/SettingsTemplate.d.ts +0 -11
  142. package/lib/types/backoffice/templates/settings_template/SettingsTemplate.d.ts.map +0 -1
  143. package/lib/types/backoffice/templates/settings_template/settingsTemplate.css.d.ts.map +0 -1
  144. package/lib/types/backoffice/templates/split_view_template/SplitViewTemplate.d.ts +0 -11
  145. package/lib/types/backoffice/templates/split_view_template/SplitViewTemplate.d.ts.map +0 -1
  146. package/lib/types/backoffice/templates/split_view_template/splitViewTemplate.css.d.ts.map +0 -1
  147. package/lib/types/backoffice/theme/BackofficeThemeProvider.d.ts +0 -7
  148. package/lib/types/backoffice/theme/BackofficeThemeProvider.d.ts.map +0 -1
  149. package/lib/types/backoffice/theme/backofficeTheme.css.d.ts +0 -2
  150. package/lib/types/backoffice/theme/backofficeTheme.css.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"chunk-QPJZGYHO.js","names":["useRef2"],"sources":["../../../../../../../node_modules/react-shiki/dist/chunk-QPJZGYHO.js"],"sourcesContent":["// src/lib/hook.ts\nimport {\n useEffect,\n useMemo,\n useRef as useRef2,\n useState\n} from \"react\";\nimport { jsx, jsxs, Fragment } from \"react/jsx-runtime\";\nimport { toJsxRuntime } from \"hast-util-to-jsx-runtime\";\nimport { guessEmbeddedLanguages } from \"shiki/core\";\n\n// src/lib/utils.ts\nimport { useRef } from \"react\";\nimport { dequal } from \"dequal\";\nvar useStableValue = (value) => {\n const ref = useRef(value);\n if (value !== ref.current && !dequal(value, ref.current)) {\n ref.current = value;\n }\n return ref.current;\n};\nvar throttleHighlighting = (performHighlight, timeoutControl, throttleMs) => {\n const now = Date.now();\n clearTimeout(timeoutControl.current.timeoutId);\n const delay = Math.max(0, timeoutControl.current.nextAllowedTime - now);\n timeoutControl.current.timeoutId = setTimeout(() => {\n performHighlight().catch(console.error);\n timeoutControl.current.nextAllowedTime = now + throttleMs;\n }, delay);\n};\n\n// src/lib/language.ts\nimport { isSpecialLang } from \"shiki/core\";\nvar FALLBACK_LANGUAGE = \"plaintext\";\nvar toArray = (value) => value == null ? [] : Array.isArray(value) ? value : [value];\nvar languageKey = (lang) => {\n if (lang == null) return null;\n if (typeof lang === \"string\") return `s:${lang}`;\n return `o:${lang.name}::${lang.scopeName}`;\n};\nvar dedupeLanguages = (langs) => {\n const seen = /* @__PURE__ */ new Set();\n const deduped = [];\n for (const lang of langs) {\n const key = languageKey(lang);\n if (key == null || seen.has(key)) continue;\n seen.add(key);\n deduped.push(lang);\n }\n return deduped;\n};\nvar isLoadableLanguage = (lang, bundledLanguages) => {\n if (lang == null) return false;\n if (typeof lang === \"string\") return lang in bundledLanguages;\n return typeof lang.name === \"string\" && typeof lang.scopeName === \"string\";\n};\nvar resolveLoadedLanguage = (languageId, loadedLanguages) => isSpecialLang(languageId) || loadedLanguages.includes(languageId) ? languageId : FALLBACK_LANGUAGE;\nvar resolveLanguage = (lang, customLanguages, langAliases, preloadLanguages) => {\n const customLangs = toArray(customLanguages);\n const preloadLangs = toArray(preloadLanguages);\n const customMatchPool = [...customLangs, ...preloadLangs];\n let languageId = FALLBACK_LANGUAGE;\n let primaryLang;\n if (lang == null || typeof lang === \"string\" && !lang.trim()) {\n return {\n languageId,\n langsToLoad: dedupeLanguages([...preloadLangs, ...customLangs])\n };\n }\n if (typeof lang === \"object\") {\n languageId = lang.name;\n primaryLang = lang;\n } else {\n const lowerLang = lang.toLowerCase();\n const matches = (str) => str?.toLowerCase() === lowerLang;\n const customMatch = customMatchPool.find(\n (candidate) => typeof candidate === \"object\" && candidate != null && !!(matches(candidate.name) || matches(candidate.scopeName) || matches(candidate.scopeName?.split(\".\").pop()) || candidate.aliases?.some(matches) || candidate.fileTypes?.some(matches))\n );\n if (customMatch) {\n languageId = customMatch.name || lang;\n primaryLang = customMatch;\n } else if (langAliases?.[lang]) {\n languageId = langAliases[lang];\n primaryLang = langAliases[lang];\n } else {\n languageId = lang;\n primaryLang = lang;\n }\n }\n return {\n languageId,\n langsToLoad: dedupeLanguages([\n primaryLang,\n ...preloadLangs,\n ...customLangs\n ])\n };\n};\n\n// src/lib/theme.ts\nvar isTextmateTheme = (value) => typeof value === \"object\" && value !== null && \"tokenColors\" in value && Array.isArray(value.tokenColors);\nfunction resolveTheme(themeInput) {\n const inputIsTextmateTheme = isTextmateTheme(themeInput);\n const isMultiThemeConfig = typeof themeInput === \"object\" && themeInput !== null && !inputIsTextmateTheme;\n const validMultiThemeObj = typeof themeInput === \"object\" && themeInput !== null && !inputIsTextmateTheme && Object.entries(themeInput).some(\n ([key, value]) => key.trim() !== \"\" && (typeof value === \"string\" && value.trim() !== \"\" || isTextmateTheme(value))\n );\n if (isMultiThemeConfig) {\n const themeId = validMultiThemeObj ? `multi-${Object.values(themeInput).map(\n (theme) => (typeof theme === \"string\" ? theme : theme?.name) || \"custom\"\n ).sort().join(\"-\")}` : \"multi-default\";\n return {\n isMultiTheme: true,\n themeId,\n multiTheme: validMultiThemeObj ? themeInput : null,\n themesToLoad: validMultiThemeObj ? Object.values(themeInput) : []\n };\n }\n return {\n isMultiTheme: false,\n themeId: typeof themeInput === \"string\" ? themeInput : themeInput?.name || \"custom\",\n singleTheme: themeInput,\n themesToLoad: [themeInput]\n };\n}\n\n// src/lib/transformers.ts\nfunction lineNumbersTransformer(startLine = 1) {\n return {\n name: \"react-shiki:line-numbers\",\n code(node) {\n this.addClassToHast(node, \"has-line-numbers\");\n if (startLine !== 1) {\n const existingStyle = node.properties?.style || \"\";\n const newStyle = existingStyle ? `${existingStyle}; --line-start: ${startLine}` : `--line-start: ${startLine}`;\n node.properties = {\n ...node.properties,\n style: newStyle\n };\n }\n },\n line(node) {\n this.addClassToHast(node, \"line-numbers\");\n return node;\n }\n };\n}\n\n// src/lib/options.ts\nvar DEFAULT_THEMES = {\n light: \"github-light\",\n dark: \"github-dark\"\n};\nvar buildThemeOptions = (resolvedTheme, options) => {\n if (resolvedTheme.isMultiTheme) {\n return {\n themes: resolvedTheme.multiTheme ?? DEFAULT_THEMES,\n defaultColor: options.defaultColor,\n cssVariablePrefix: options.cssVariablePrefix\n };\n }\n return {\n theme: resolvedTheme.singleTheme ?? DEFAULT_THEMES.dark\n };\n};\nvar buildTransformers = (options) => {\n const transformers = [...options.transformers || []];\n if (options.showLineNumbers) {\n transformers.push(lineNumbersTransformer(options.startingLineNumber));\n }\n return transformers;\n};\nvar buildShikiOptions = ({\n languageId,\n resolvedTheme,\n options\n}) => {\n const {\n defaultColor: _defaultColor,\n cssVariablePrefix: _cssVariablePrefix,\n showLineNumbers: _showLineNumbers,\n startingLineNumber: _startingLineNumber,\n transformers: _transformers,\n ...restOptions\n } = options;\n return {\n lang: languageId,\n ...buildThemeOptions(resolvedTheme, options),\n ...restOptions,\n transformers: buildTransformers(options)\n };\n};\n\n// src/lib/hook.ts\nvar getEmbeddedLanguages = (code, languageId, highlighter) => {\n const bundled = highlighter.getBundledLanguages();\n return guessEmbeddedLanguages(code, languageId).flatMap(\n (language) => bundled[language] ?? []\n );\n};\nvar useShikiHighlighter = (code, lang, themeInput, options = {}, highlighterFactory) => {\n const [highlightedCode, setHighlightedCode] = useState(null);\n const stableLang = useStableValue(lang);\n const stableTheme = useStableValue(themeInput);\n const stableOpts = useStableValue(options);\n const { languageId, langsToLoad } = useMemo(\n () => resolveLanguage(\n stableLang,\n stableOpts.customLanguages,\n stableOpts.langAlias,\n stableOpts.preloadLanguages\n ),\n [\n stableLang,\n stableOpts.customLanguages,\n stableOpts.preloadLanguages,\n stableOpts.langAlias\n ]\n );\n const resolvedTheme = useMemo(\n () => resolveTheme(stableTheme),\n [stableTheme]\n );\n const { themesToLoad } = resolvedTheme;\n const timeoutControl = useRef2({\n nextAllowedTime: 0,\n timeoutId: void 0\n });\n const shikiOptions = useMemo(\n () => buildShikiOptions({\n languageId,\n resolvedTheme,\n options: stableOpts\n }),\n [languageId, resolvedTheme, stableOpts]\n );\n useEffect(() => {\n let isMounted = true;\n const highlightCode = async () => {\n if (!languageId) return;\n const highlighter = stableOpts.highlighter ? stableOpts.highlighter : await highlighterFactory(\n langsToLoad,\n themesToLoad,\n stableOpts.engine\n );\n if (!stableOpts.highlighter) {\n const embedded = getEmbeddedLanguages(\n code,\n languageId,\n highlighter\n );\n if (embedded.length > 0) {\n await highlighter.loadLanguage(...embedded);\n }\n }\n const langToUse = resolveLoadedLanguage(\n languageId,\n highlighter.getLoadedLanguages()\n );\n const finalOptions = { ...shikiOptions, lang: langToUse };\n if (isMounted) {\n const output = stableOpts.outputFormat === \"html\" ? highlighter.codeToHtml(code, finalOptions) : toJsxRuntime(highlighter.codeToHast(code, finalOptions), {\n jsx,\n jsxs,\n Fragment\n });\n setHighlightedCode(output);\n }\n };\n const { delay } = stableOpts;\n if (delay) {\n throttleHighlighting(highlightCode, timeoutControl, delay);\n } else {\n highlightCode().catch(console.error);\n }\n return () => {\n isMounted = false;\n clearTimeout(timeoutControl.current.timeoutId);\n };\n }, [\n code,\n shikiOptions,\n stableOpts.delay,\n stableOpts.highlighter,\n langsToLoad,\n themesToLoad\n ]);\n return highlightedCode;\n};\n\n// src/lib/plugins.ts\nimport { visit } from \"unist-util-visit\";\nfunction rehypeInlineCodeProperty() {\n return (tree) => {\n visit(tree, \"element\", (node, _index, parent) => {\n if (node.tagName === \"code\" && parent.tagName !== \"pre\") {\n node.properties.inline = true;\n }\n });\n };\n}\nvar isInlineCode = (node) => {\n const textContent = (node.children || []).filter((child) => child.type === \"text\").map((child) => child.value).join(\"\");\n return !textContent.includes(\"\\n\");\n};\n\n// #style-inject:#style-inject\nfunction styleInject(css, { insertAt } = {}) {\n if (!css || typeof document === \"undefined\") return;\n const head = document.head || document.getElementsByTagName(\"head\")[0];\n const style = document.createElement(\"style\");\n style.type = \"text/css\";\n if (insertAt === \"top\") {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\n// src/lib/styles.css\nstyleInject(\".relative {\\n position: relative;\\n}\\n.defaultStyles pre {\\n overflow: auto;\\n border-radius: 0.5rem;\\n padding-left: 1.5rem;\\n padding-right: 1.5rem;\\n padding-top: 1.25rem;\\n padding-bottom: 1.25rem;\\n}\\n.languageLabel {\\n position: absolute;\\n right: 0.75rem;\\n top: 0.5rem;\\n font-family: monospace;\\n font-size: 0.75rem;\\n letter-spacing: -0.05em;\\n color: rgba(107, 114, 128, 0.85);\\n}\\n.line-numbers::before {\\n counter-increment: line-number;\\n content: counter(line-number);\\n display: inline-flex;\\n justify-content: flex-end;\\n align-items: flex-start;\\n box-sizing: content-box;\\n min-width: var(--line-numbers-width, 2ch);\\n padding-left: var(--line-numbers-padding-left, 2ch);\\n padding-right: var(--line-numbers-padding-right, 2ch);\\n color: var(--line-numbers-foreground, rgba(107, 114, 128, 0.6));\\n font-size: var(--line-numbers-font-size, inherit);\\n font-weight: var(--line-numbers-font-weight, inherit);\\n line-height: var(--line-numbers-line-height, inherit);\\n font-family: var(--line-numbers-font-family, inherit);\\n opacity: var(--line-numbers-opacity, 1);\\n user-select: none;\\n pointer-events: none;\\n}\\n.has-line-numbers {\\n counter-reset: line-number calc(var(--line-start, 1) - 1);\\n --line-numbers-foreground: rgba(107, 114, 128, 0.5);\\n --line-numbers-width: 2ch;\\n --line-numbers-padding-left: 0ch;\\n --line-numbers-padding-right: 2ch;\\n --line-numbers-font-size: inherit;\\n --line-numbers-font-weight: inherit;\\n --line-numbers-line-height: inherit;\\n --line-numbers-font-family: inherit;\\n --line-numbers-opacity: 1;\\n}\\n\");\n\n// src/lib/component.tsx\nimport { clsx } from \"clsx\";\nimport { forwardRef } from \"react\";\nimport { jsx as jsx2, jsxs as jsxs2 } from \"react/jsx-runtime\";\nvar createShikiHighlighterComponent = (useShikiHighlighterImpl) => {\n return forwardRef(\n ({\n language,\n theme,\n delay,\n transformers,\n defaultColor,\n cssVariablePrefix,\n addDefaultStyles = true,\n style,\n langStyle,\n className,\n langClassName,\n showLanguage = true,\n showLineNumbers = false,\n startingLineNumber = 1,\n children: code,\n as: Element = \"pre\",\n customLanguages,\n preloadLanguages,\n ...shikiOptions\n }, ref) => {\n const options = {\n delay,\n transformers,\n customLanguages,\n preloadLanguages,\n showLineNumbers,\n defaultColor,\n cssVariablePrefix,\n startingLineNumber,\n ...shikiOptions\n };\n const displayLanguageId = typeof language === \"object\" ? language.name || null : language?.trim() || null;\n const highlightedCode = useShikiHighlighterImpl(\n code,\n language,\n theme,\n options\n );\n const isHtmlOutput = typeof highlightedCode === \"string\";\n return /* @__PURE__ */ jsxs2(\n Element,\n {\n ref,\n \"data-testid\": \"shiki-container\",\n className: clsx(\n \"relative\",\n \"not-prose\",\n addDefaultStyles && \"defaultStyles\",\n className\n ),\n style,\n id: \"shiki-container\",\n children: [\n showLanguage && displayLanguageId ? /* @__PURE__ */ jsx2(\n \"span\",\n {\n className: clsx(\"languageLabel\", langClassName),\n style: langStyle,\n id: \"language-label\",\n children: displayLanguageId\n }\n ) : null,\n isHtmlOutput ? /* @__PURE__ */ jsx2(\"div\", { dangerouslySetInnerHTML: { __html: highlightedCode } }) : highlightedCode\n ]\n }\n );\n }\n );\n};\n\nexport {\n isLoadableLanguage,\n useShikiHighlighter,\n rehypeInlineCodeProperty,\n isInlineCode,\n createShikiHighlighterComponent\n};\n//# sourceMappingURL=chunk-QPJZGYHO.js.map"],"x_google_ignoreList":[0],"mappings":"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"}
1
+ {"version":3,"file":"chunk-QPJZGYHO.js","names":["useRef2"],"sources":["../../../../../../../node_modules/react-shiki/dist/chunk-QPJZGYHO.js"],"sourcesContent":["// src/lib/hook.ts\nimport {\n useEffect,\n useMemo,\n useRef as useRef2,\n useState\n} from \"react\";\nimport { jsx, jsxs, Fragment } from \"react/jsx-runtime\";\nimport { toJsxRuntime } from \"hast-util-to-jsx-runtime\";\nimport { guessEmbeddedLanguages } from \"shiki/core\";\n\n// src/lib/utils.ts\nimport { useRef } from \"react\";\nimport { dequal } from \"dequal\";\nvar useStableValue = (value) => {\n const ref = useRef(value);\n if (value !== ref.current && !dequal(value, ref.current)) {\n ref.current = value;\n }\n return ref.current;\n};\nvar throttleHighlighting = (performHighlight, timeoutControl, throttleMs) => {\n const now = Date.now();\n clearTimeout(timeoutControl.current.timeoutId);\n const delay = Math.max(0, timeoutControl.current.nextAllowedTime - now);\n timeoutControl.current.timeoutId = setTimeout(() => {\n performHighlight().catch(console.error);\n timeoutControl.current.nextAllowedTime = now + throttleMs;\n }, delay);\n};\n\n// src/lib/language.ts\nimport { isSpecialLang } from \"shiki/core\";\nvar FALLBACK_LANGUAGE = \"plaintext\";\nvar toArray = (value) => value == null ? [] : Array.isArray(value) ? value : [value];\nvar languageKey = (lang) => {\n if (lang == null) return null;\n if (typeof lang === \"string\") return `s:${lang}`;\n return `o:${lang.name}::${lang.scopeName}`;\n};\nvar dedupeLanguages = (langs) => {\n const seen = /* @__PURE__ */ new Set();\n const deduped = [];\n for (const lang of langs) {\n const key = languageKey(lang);\n if (key == null || seen.has(key)) continue;\n seen.add(key);\n deduped.push(lang);\n }\n return deduped;\n};\nvar isLoadableLanguage = (lang, bundledLanguages) => {\n if (lang == null) return false;\n if (typeof lang === \"string\") return lang in bundledLanguages;\n return typeof lang.name === \"string\" && typeof lang.scopeName === \"string\";\n};\nvar resolveLoadedLanguage = (languageId, loadedLanguages) => isSpecialLang(languageId) || loadedLanguages.includes(languageId) ? languageId : FALLBACK_LANGUAGE;\nvar resolveLanguage = (lang, customLanguages, langAliases, preloadLanguages) => {\n const customLangs = toArray(customLanguages);\n const preloadLangs = toArray(preloadLanguages);\n const customMatchPool = [...customLangs, ...preloadLangs];\n let languageId = FALLBACK_LANGUAGE;\n let primaryLang;\n if (lang == null || typeof lang === \"string\" && !lang.trim()) {\n return {\n languageId,\n langsToLoad: dedupeLanguages([...preloadLangs, ...customLangs])\n };\n }\n if (typeof lang === \"object\") {\n languageId = lang.name;\n primaryLang = lang;\n } else {\n const lowerLang = lang.toLowerCase();\n const matches = (str) => str?.toLowerCase() === lowerLang;\n const customMatch = customMatchPool.find(\n (candidate) => typeof candidate === \"object\" && candidate != null && !!(matches(candidate.name) || matches(candidate.scopeName) || matches(candidate.scopeName?.split(\".\").pop()) || candidate.aliases?.some(matches) || candidate.fileTypes?.some(matches))\n );\n if (customMatch) {\n languageId = customMatch.name || lang;\n primaryLang = customMatch;\n } else if (langAliases?.[lang]) {\n languageId = langAliases[lang];\n primaryLang = langAliases[lang];\n } else {\n languageId = lang;\n primaryLang = lang;\n }\n }\n return {\n languageId,\n langsToLoad: dedupeLanguages([\n primaryLang,\n ...preloadLangs,\n ...customLangs\n ])\n };\n};\n\n// src/lib/theme.ts\nvar isTextmateTheme = (value) => typeof value === \"object\" && value !== null && \"tokenColors\" in value && Array.isArray(value.tokenColors);\nfunction resolveTheme(themeInput) {\n const inputIsTextmateTheme = isTextmateTheme(themeInput);\n const isMultiThemeConfig = typeof themeInput === \"object\" && themeInput !== null && !inputIsTextmateTheme;\n const validMultiThemeObj = typeof themeInput === \"object\" && themeInput !== null && !inputIsTextmateTheme && Object.entries(themeInput).some(\n ([key, value]) => key.trim() !== \"\" && (typeof value === \"string\" && value.trim() !== \"\" || isTextmateTheme(value))\n );\n if (isMultiThemeConfig) {\n const themeId = validMultiThemeObj ? `multi-${Object.values(themeInput).map(\n (theme) => (typeof theme === \"string\" ? theme : theme?.name) || \"custom\"\n ).sort().join(\"-\")}` : \"multi-default\";\n return {\n isMultiTheme: true,\n themeId,\n multiTheme: validMultiThemeObj ? themeInput : null,\n themesToLoad: validMultiThemeObj ? Object.values(themeInput) : []\n };\n }\n return {\n isMultiTheme: false,\n themeId: typeof themeInput === \"string\" ? themeInput : themeInput?.name || \"custom\",\n singleTheme: themeInput,\n themesToLoad: [themeInput]\n };\n}\n\n// src/lib/transformers.ts\nfunction lineNumbersTransformer(startLine = 1) {\n return {\n name: \"react-shiki:line-numbers\",\n code(node) {\n this.addClassToHast(node, \"has-line-numbers\");\n if (startLine !== 1) {\n const existingStyle = node.properties?.style || \"\";\n const newStyle = existingStyle ? `${existingStyle}; --line-start: ${startLine}` : `--line-start: ${startLine}`;\n node.properties = {\n ...node.properties,\n style: newStyle\n };\n }\n },\n line(node) {\n this.addClassToHast(node, \"line-numbers\");\n return node;\n }\n };\n}\n\n// src/lib/options.ts\nvar DEFAULT_THEMES = {\n light: \"github-light\",\n dark: \"github-dark\"\n};\nvar buildThemeOptions = (resolvedTheme, options) => {\n if (resolvedTheme.isMultiTheme) {\n return {\n themes: resolvedTheme.multiTheme ?? DEFAULT_THEMES,\n defaultColor: options.defaultColor,\n cssVariablePrefix: options.cssVariablePrefix\n };\n }\n return {\n theme: resolvedTheme.singleTheme ?? DEFAULT_THEMES.dark\n };\n};\nvar buildTransformers = (options) => {\n const transformers = [...options.transformers || []];\n if (options.showLineNumbers) {\n transformers.push(lineNumbersTransformer(options.startingLineNumber));\n }\n return transformers;\n};\nvar buildShikiOptions = ({\n languageId,\n resolvedTheme,\n options\n}) => {\n const {\n defaultColor: _defaultColor,\n cssVariablePrefix: _cssVariablePrefix,\n showLineNumbers: _showLineNumbers,\n startingLineNumber: _startingLineNumber,\n transformers: _transformers,\n ...restOptions\n } = options;\n return {\n lang: languageId,\n ...buildThemeOptions(resolvedTheme, options),\n ...restOptions,\n transformers: buildTransformers(options)\n };\n};\n\n// src/lib/hook.ts\nvar getEmbeddedLanguages = (code, languageId, highlighter) => {\n const bundled = highlighter.getBundledLanguages();\n return guessEmbeddedLanguages(code, languageId).flatMap(\n (language) => bundled[language] ?? []\n );\n};\nvar useShikiHighlighter = (code, lang, themeInput, options = {}, highlighterFactory) => {\n const [highlightedCode, setHighlightedCode] = useState(null);\n const stableLang = useStableValue(lang);\n const stableTheme = useStableValue(themeInput);\n const stableOpts = useStableValue(options);\n const { languageId, langsToLoad } = useMemo(\n () => resolveLanguage(\n stableLang,\n stableOpts.customLanguages,\n stableOpts.langAlias,\n stableOpts.preloadLanguages\n ),\n [\n stableLang,\n stableOpts.customLanguages,\n stableOpts.preloadLanguages,\n stableOpts.langAlias\n ]\n );\n const resolvedTheme = useMemo(\n () => resolveTheme(stableTheme),\n [stableTheme]\n );\n const { themesToLoad } = resolvedTheme;\n const timeoutControl = useRef2({\n nextAllowedTime: 0,\n timeoutId: void 0\n });\n const shikiOptions = useMemo(\n () => buildShikiOptions({\n languageId,\n resolvedTheme,\n options: stableOpts\n }),\n [languageId, resolvedTheme, stableOpts]\n );\n useEffect(() => {\n let isMounted = true;\n const highlightCode = async () => {\n if (!languageId) return;\n const highlighter = stableOpts.highlighter ? stableOpts.highlighter : await highlighterFactory(\n langsToLoad,\n themesToLoad,\n stableOpts.engine\n );\n if (!stableOpts.highlighter) {\n const embedded = getEmbeddedLanguages(\n code,\n languageId,\n highlighter\n );\n if (embedded.length > 0) {\n await highlighter.loadLanguage(...embedded);\n }\n }\n const langToUse = resolveLoadedLanguage(\n languageId,\n highlighter.getLoadedLanguages()\n );\n const finalOptions = { ...shikiOptions, lang: langToUse };\n if (isMounted) {\n const output = stableOpts.outputFormat === \"html\" ? highlighter.codeToHtml(code, finalOptions) : toJsxRuntime(highlighter.codeToHast(code, finalOptions), {\n jsx,\n jsxs,\n Fragment\n });\n setHighlightedCode(output);\n }\n };\n const { delay } = stableOpts;\n if (delay) {\n throttleHighlighting(highlightCode, timeoutControl, delay);\n } else {\n highlightCode().catch(console.error);\n }\n return () => {\n isMounted = false;\n clearTimeout(timeoutControl.current.timeoutId);\n };\n }, [\n code,\n shikiOptions,\n stableOpts.delay,\n stableOpts.highlighter,\n langsToLoad,\n themesToLoad\n ]);\n return highlightedCode;\n};\n\n// src/lib/plugins.ts\nimport { visit } from \"unist-util-visit\";\nfunction rehypeInlineCodeProperty() {\n return (tree) => {\n visit(tree, \"element\", (node, _index, parent) => {\n if (node.tagName === \"code\" && parent.tagName !== \"pre\") {\n node.properties.inline = true;\n }\n });\n };\n}\nvar isInlineCode = (node) => {\n const textContent = (node.children || []).filter((child) => child.type === \"text\").map((child) => child.value).join(\"\");\n return !textContent.includes(\"\\n\");\n};\n\n// #style-inject:#style-inject\nfunction styleInject(css, { insertAt } = {}) {\n if (!css || typeof document === \"undefined\") return;\n const head = document.head || document.getElementsByTagName(\"head\")[0];\n const style = document.createElement(\"style\");\n style.type = \"text/css\";\n if (insertAt === \"top\") {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\n// src/lib/styles.css\nstyleInject(\".relative {\\n position: relative;\\n}\\n.defaultStyles pre {\\n overflow: auto;\\n border-radius: 0.5rem;\\n padding-left: 1.5rem;\\n padding-right: 1.5rem;\\n padding-top: 1.25rem;\\n padding-bottom: 1.25rem;\\n}\\n.languageLabel {\\n position: absolute;\\n right: 0.75rem;\\n top: 0.5rem;\\n font-family: monospace;\\n font-size: 0.75rem;\\n letter-spacing: -0.05em;\\n color: rgba(107, 114, 128, 0.85);\\n}\\n.line-numbers::before {\\n counter-increment: line-number;\\n content: counter(line-number);\\n display: inline-flex;\\n justify-content: flex-end;\\n align-items: flex-start;\\n box-sizing: content-box;\\n min-width: var(--line-numbers-width, 2ch);\\n padding-left: var(--line-numbers-padding-left, 2ch);\\n padding-right: var(--line-numbers-padding-right, 2ch);\\n color: var(--line-numbers-foreground, rgba(107, 114, 128, 0.6));\\n font-size: var(--line-numbers-font-size, inherit);\\n font-weight: var(--line-numbers-font-weight, inherit);\\n line-height: var(--line-numbers-line-height, inherit);\\n font-family: var(--line-numbers-font-family, inherit);\\n opacity: var(--line-numbers-opacity, 1);\\n user-select: none;\\n pointer-events: none;\\n}\\n.has-line-numbers {\\n counter-reset: line-number calc(var(--line-start, 1) - 1);\\n --line-numbers-foreground: rgba(107, 114, 128, 0.5);\\n --line-numbers-width: 2ch;\\n --line-numbers-padding-left: 0ch;\\n --line-numbers-padding-right: 2ch;\\n --line-numbers-font-size: inherit;\\n --line-numbers-font-weight: inherit;\\n --line-numbers-line-height: inherit;\\n --line-numbers-font-family: inherit;\\n --line-numbers-opacity: 1;\\n}\\n\");\n\n// src/lib/component.tsx\nimport { clsx } from \"clsx\";\nimport { forwardRef } from \"react\";\nimport { jsx as jsx2, jsxs as jsxs2 } from \"react/jsx-runtime\";\nvar createShikiHighlighterComponent = (useShikiHighlighterImpl) => {\n return forwardRef(\n ({\n language,\n theme,\n delay,\n transformers,\n defaultColor,\n cssVariablePrefix,\n addDefaultStyles = true,\n style,\n langStyle,\n className,\n langClassName,\n showLanguage = true,\n showLineNumbers = false,\n startingLineNumber = 1,\n children: code,\n as: Element = \"pre\",\n customLanguages,\n preloadLanguages,\n ...shikiOptions\n }, ref) => {\n const options = {\n delay,\n transformers,\n customLanguages,\n preloadLanguages,\n showLineNumbers,\n defaultColor,\n cssVariablePrefix,\n startingLineNumber,\n ...shikiOptions\n };\n const displayLanguageId = typeof language === \"object\" ? language.name || null : language?.trim() || null;\n const highlightedCode = useShikiHighlighterImpl(\n code,\n language,\n theme,\n options\n );\n const isHtmlOutput = typeof highlightedCode === \"string\";\n return /* @__PURE__ */ jsxs2(\n Element,\n {\n ref,\n \"data-testid\": \"shiki-container\",\n className: clsx(\n \"relative\",\n \"not-prose\",\n addDefaultStyles && \"defaultStyles\",\n className\n ),\n style,\n id: \"shiki-container\",\n children: [\n showLanguage && displayLanguageId ? /* @__PURE__ */ jsx2(\n \"span\",\n {\n className: clsx(\"languageLabel\", langClassName),\n style: langStyle,\n id: \"language-label\",\n children: displayLanguageId\n }\n ) : null,\n isHtmlOutput ? /* @__PURE__ */ jsx2(\"div\", { dangerouslySetInnerHTML: { __html: highlightedCode } }) : highlightedCode\n ]\n }\n );\n }\n );\n};\n\nexport {\n isLoadableLanguage,\n useShikiHighlighter,\n rehypeInlineCodeProperty,\n isInlineCode,\n createShikiHighlighterComponent\n};\n//# sourceMappingURL=chunk-QPJZGYHO.js.map"],"x_google_ignoreList":[0],"mappings":"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"}