@hejiayue/x-markdown-test 0.0.1-beta.151 → 0.0.1-beta.152
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.
- package/dist/style.css +438 -1
- package/dist/types/config.d.ts +33 -0
- package/dist/types/hooks/useMermaid.d.ts +1 -1
- package/dist/types/index.d.ts +2 -0
- package/dist/x-markdown.cjs.js +35 -1
- package/dist/x-markdown.cjs.js.map +1 -1
- package/dist/x-markdown.cjs10.js +52 -1
- package/dist/x-markdown.cjs10.js.map +1 -1
- package/dist/x-markdown.cjs11.js +57 -1
- package/dist/x-markdown.cjs11.js.map +1 -1
- package/dist/x-markdown.cjs12.js +18 -0
- package/dist/x-markdown.cjs12.js.map +1 -0
- package/dist/x-markdown.cjs14.js +92 -1
- package/dist/x-markdown.cjs14.js.map +1 -1
- package/dist/x-markdown.cjs15.js +36 -1
- package/dist/x-markdown.cjs15.js.map +1 -1
- package/dist/x-markdown.cjs16.js +9 -1
- package/dist/x-markdown.cjs16.js.map +1 -1
- package/dist/x-markdown.cjs17.js +10 -1
- package/dist/x-markdown.cjs17.js.map +1 -1
- package/dist/x-markdown.cjs18.js +11 -1
- package/dist/x-markdown.cjs18.js.map +1 -1
- package/dist/x-markdown.cjs19.js +11 -1
- package/dist/x-markdown.cjs19.js.map +1 -1
- package/dist/x-markdown.cjs2.js +86 -1
- package/dist/x-markdown.cjs2.js.map +1 -1
- package/dist/x-markdown.cjs20.js +211 -0
- package/dist/x-markdown.cjs20.js.map +1 -0
- package/dist/x-markdown.cjs22.js +13 -1
- package/dist/x-markdown.cjs22.js.map +1 -1
- package/dist/x-markdown.cjs23.js +79 -0
- package/dist/x-markdown.cjs23.js.map +1 -0
- package/dist/x-markdown.cjs25.js +409 -0
- package/dist/x-markdown.cjs25.js.map +1 -0
- package/dist/x-markdown.cjs27.js +199 -1
- package/dist/x-markdown.cjs27.js.map +1 -1
- package/dist/x-markdown.cjs28.js +135 -1
- package/dist/x-markdown.cjs28.js.map +1 -1
- package/dist/x-markdown.cjs3.js +97 -1
- package/dist/x-markdown.cjs3.js.map +1 -1
- package/dist/x-markdown.cjs30.js +11 -1
- package/dist/x-markdown.cjs30.js.map +1 -1
- package/dist/x-markdown.cjs31.js +122 -1
- package/dist/x-markdown.cjs31.js.map +1 -1
- package/dist/x-markdown.cjs32.js +11 -0
- package/dist/x-markdown.cjs32.js.map +1 -0
- package/dist/x-markdown.cjs33.js +128 -1
- package/dist/x-markdown.cjs33.js.map +1 -1
- package/dist/x-markdown.cjs4.js +153 -1
- package/dist/x-markdown.cjs4.js.map +1 -1
- package/dist/x-markdown.cjs5.js +43 -1
- package/dist/x-markdown.cjs5.js.map +1 -1
- package/dist/x-markdown.cjs6.js +27 -1
- package/dist/x-markdown.cjs6.js.map +1 -1
- package/dist/x-markdown.cjs7.js +310 -1
- package/dist/x-markdown.cjs7.js.map +1 -1
- package/dist/x-markdown.cjs8.js +30 -1
- package/dist/x-markdown.cjs8.js.map +1 -1
- package/dist/x-markdown.cjs9.js +435 -1
- package/dist/x-markdown.cjs9.js.map +1 -1
- package/dist/x-markdown.es.js +11 -28
- package/dist/x-markdown.es10.js +10 -10
- package/dist/x-markdown.es10.js.map +1 -1
- package/dist/x-markdown.es11.js +4 -5
- package/dist/x-markdown.es11.js.map +1 -1
- package/dist/x-markdown.es12.js +12 -0
- package/dist/x-markdown.es12.js.map +1 -0
- package/dist/x-markdown.es14.js +85 -29
- package/dist/x-markdown.es14.js.map +1 -1
- package/dist/x-markdown.es15.js +32 -4
- package/dist/x-markdown.es15.js.map +1 -1
- package/dist/x-markdown.es16.js +5 -5
- package/dist/x-markdown.es16.js.map +1 -1
- package/dist/x-markdown.es17.js +5 -6
- package/dist/x-markdown.es17.js.map +1 -1
- package/dist/x-markdown.es18.js +6 -6
- package/dist/x-markdown.es18.js.map +1 -1
- package/dist/x-markdown.es19.js +7 -206
- package/dist/x-markdown.es19.js.map +1 -1
- package/dist/x-markdown.es2.js +6 -7
- package/dist/x-markdown.es2.js.map +1 -1
- package/dist/x-markdown.es20.js +207 -0
- package/dist/x-markdown.es20.js.map +1 -0
- package/dist/x-markdown.es22.js +7 -72
- package/dist/x-markdown.es22.js.map +1 -1
- package/dist/x-markdown.es23.js +75 -0
- package/dist/x-markdown.es23.js.map +1 -0
- package/dist/{x-markdown.es24.js → x-markdown.es25.js} +12 -10
- package/dist/x-markdown.es25.js.map +1 -0
- package/dist/x-markdown.es27.js +182 -7
- package/dist/x-markdown.es27.js.map +1 -1
- package/dist/x-markdown.es28.js +7 -8
- package/dist/x-markdown.es28.js.map +1 -1
- package/dist/x-markdown.es3.js +7 -8
- package/dist/x-markdown.es3.js.map +1 -1
- package/dist/x-markdown.es30.js +7 -77
- package/dist/x-markdown.es30.js.map +1 -1
- package/dist/x-markdown.es31.js +112 -124
- package/dist/x-markdown.es31.js.map +1 -1
- package/dist/x-markdown.es32.js +7 -0
- package/dist/x-markdown.es32.js.map +1 -0
- package/dist/x-markdown.es33.js +124 -5
- package/dist/x-markdown.es33.js.map +1 -1
- package/dist/x-markdown.es4.js +5 -7
- package/dist/x-markdown.es4.js.map +1 -1
- package/dist/x-markdown.es5.js +9 -10
- package/dist/x-markdown.es5.js.map +1 -1
- package/dist/x-markdown.es6.js +5 -5
- package/dist/x-markdown.es6.js.map +1 -1
- package/dist/x-markdown.es7.js +61 -74
- package/dist/x-markdown.es7.js.map +1 -1
- package/dist/x-markdown.es8.js +4 -5
- package/dist/x-markdown.es8.js.map +1 -1
- package/dist/x-markdown.es9.js +22 -14
- package/dist/x-markdown.es9.js.map +1 -1
- package/package.json +3 -14
- package/dist/types/vite-plugin.d.ts +0 -29
- package/dist/vite-plugin.cjs +0 -128
- package/dist/vite-plugin.cjs.map +0 -1
- package/dist/vite-plugin.js +0 -128
- package/dist/vite-plugin.js.map +0 -1
- package/dist/x-markdown.cjs13.js +0 -2
- package/dist/x-markdown.cjs13.js.map +0 -1
- package/dist/x-markdown.cjs21.js +0 -2
- package/dist/x-markdown.cjs21.js.map +0 -1
- package/dist/x-markdown.cjs24.js +0 -2
- package/dist/x-markdown.cjs24.js.map +0 -1
- package/dist/x-markdown.cjs26.js +0 -2
- package/dist/x-markdown.cjs26.js.map +0 -1
- package/dist/x-markdown.es13.js +0 -89
- package/dist/x-markdown.es13.js.map +0 -1
- package/dist/x-markdown.es21.js +0 -11
- package/dist/x-markdown.es21.js.map +0 -1
- package/dist/x-markdown.es24.js.map +0 -1
- package/dist/x-markdown.es26.js +0 -160
- package/dist/x-markdown.es26.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"x-markdown.es25.js","sources":["../src/components/Mermaid/index.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport type { MdComponent, MermaidExposeProps, MermaidAction, MermaidSlotProps } from './types'\r\nimport type { VNode } from 'vue'\r\nimport { computed, ref, h, onMounted } from 'vue'\r\nimport { useClipboard } from '@vueuse/core'\r\nimport { useXMarkdownConfig } from '../../config'\r\n// 使用运行时检测\r\nimport { checkMermaidAvailable } from '../../hooks/useMermaid'\r\nimport SyntaxMermaid from './SyntaxMermaid.vue'\r\nimport CodeBlock from '../CodeBlock/index.vue'\r\n\r\ninterface MermaidProps extends MdComponent {\r\n isDark?: boolean\r\n shikiTheme?: [string, string]\r\n config?: Record<string, any>\r\n mermaidActions?: MermaidAction[]\r\n}\r\n\r\nconst props = withDefaults(defineProps<MermaidProps>(), {\r\n raw: () => ({}),\r\n isDark: false,\r\n shikiTheme: () => ['vitesse-light', 'vitesse-dark'],\r\n config: () => ({}),\r\n mermaidActions: undefined,\r\n})\r\n\r\nconst config = useXMarkdownConfig()\r\nconst syntaxMermaidRef = ref<InstanceType<typeof SyntaxMermaid> | null>(null)\r\nconst showSourceCode = ref(false)\r\n// 运行时检测 mermaid 是否可用\r\n// 默认为 true(降级模式),检测到可用后才切换到正常模式\r\n// 这样可以避免首次渲染时的闪烁问题\r\nconst isDegraded = ref(true)\r\nconst mermaidContent = computed(() => props.raw?.content || '')\r\nconst mermaidId = computed(() => `mermaid-${props.raw?.key || 'default'}`)\r\nconst isLoading = computed(() => syntaxMermaidRef.value?.isLoading ?? true)\r\nconst svg = computed(() => syntaxMermaidRef.value?.svg ?? '')\r\nconst activeTab = computed(() => (showSourceCode.value ? 'code' : 'diagram'))\r\n\r\nfunction handleZoomIn(event?: Event) {\r\n event?.stopPropagation()\r\n event?.preventDefault()\r\n if (!showSourceCode.value) {\r\n syntaxMermaidRef.value?.zoomIn()\r\n }\r\n}\r\n\r\nfunction handleZoomOut(event?: Event) {\r\n event?.stopPropagation()\r\n event?.preventDefault()\r\n if (!showSourceCode.value) {\r\n syntaxMermaidRef.value?.zoomOut()\r\n }\r\n}\r\n\r\nfunction handleReset(event?: Event) {\r\n event?.stopPropagation()\r\n event?.preventDefault()\r\n if (!showSourceCode.value) {\r\n syntaxMermaidRef.value?.reset()\r\n }\r\n}\r\n\r\nfunction handleFullscreen() {\r\n if (!showSourceCode.value) {\r\n syntaxMermaidRef.value?.fullscreen()\r\n }\r\n}\r\n\r\nfunction handleToggleCode() {\r\n showSourceCode.value = !showSourceCode.value\r\n}\r\n\r\nconst { copy: copyCode, copied } = useClipboard({ copiedDuring: 1500 })\r\n\r\nfunction handleTabClick(tabName: string) {\r\n if (tabName === 'code' && !showSourceCode.value) {\r\n showSourceCode.value = true\r\n } else if (tabName === 'diagram' && showSourceCode.value) {\r\n showSourceCode.value = false\r\n }\r\n}\r\n\r\nasync function handleCopyCode(event?: Event) {\r\n event?.stopPropagation()\r\n event?.preventDefault()\r\n\r\n if (copied.value) {\r\n return\r\n }\r\n\r\n if (!props.raw.content) {\r\n return\r\n }\r\n await copyCode(props.raw.content)\r\n}\r\n\r\nfunction handleDownload() {\r\n syntaxMermaidRef.value?.download()\r\n}\r\n\r\nconst normalizedActions = computed<MermaidAction[]>(() => {\r\n return props.mermaidActions || []\r\n})\r\n\r\nconst filteredActions = computed<MermaidAction[]>(() => {\r\n return normalizedActions.value.filter((action) => {\r\n if (!action.show) return true\r\n return action.show(slotProps.value)\r\n })\r\n})\r\n\r\nconst slotProps = computed<MermaidSlotProps>(() => ({\r\n showSourceCode: showSourceCode.value,\r\n svg: svg.value,\r\n rawContent: props.raw.content || '',\r\n isLoading: isLoading.value,\r\n copied: copied.value,\r\n zoomIn: handleZoomIn,\r\n zoomOut: handleZoomOut,\r\n reset: handleReset,\r\n fullscreen: handleFullscreen,\r\n toggleCode: handleToggleCode,\r\n copyCode: handleCopyCode,\r\n download: handleDownload,\r\n raw: props.raw,\r\n}))\r\n\r\nfunction renderActionIcon(action: MermaidAction): VNode | null {\r\n if (!action.icon) return null\r\n\r\n if (typeof action.icon === 'string') {\r\n return h('span', {\r\n class: 'mermaid-action-icon',\r\n innerHTML: action.icon,\r\n })\r\n }\r\n\r\n if (typeof action.icon === 'function') {\r\n try {\r\n const result = (action.icon as (props: MermaidSlotProps) => VNode)(slotProps.value)\r\n if (result && typeof result === 'object' && '__v_isVNode' in result) {\r\n return result\r\n }\r\n } catch {\r\n // ignore\r\n }\r\n return h(action.icon as any)\r\n }\r\n\r\n return h(action.icon as any)\r\n}\r\n\r\nfunction handleActionClick(action: MermaidAction) {\r\n if (action.disabled) return\r\n action.onClick?.(slotProps.value)\r\n}\r\n\r\nconst exposedMethods = computed(\r\n () =>\r\n ({\r\n showSourceCode: showSourceCode.value,\r\n svg: svg.value,\r\n rawContent: props.raw.content || '',\r\n isLoading: isLoading.value,\r\n copied: copied.value,\r\n zoomIn: handleZoomIn,\r\n zoomOut: handleZoomOut,\r\n reset: handleReset,\r\n fullscreen: handleFullscreen,\r\n toggleCode: handleToggleCode,\r\n copyCode: handleCopyCode,\r\n download: handleDownload,\r\n raw: props.raw,\r\n }) satisfies MermaidExposeProps,\r\n)\r\n\r\n// 组件挂载时检测 mermaid 是否可用\r\nonMounted(async () => {\r\n const hasMermaid = await checkMermaidAvailable(config.mermaid)\r\n isDegraded.value = !hasMermaid\r\n})\r\n</script>\r\n\r\n<template>\r\n <!-- 当 Mermaid 不可用时(降级),渲染 CodeBlock -->\r\n <CodeBlock v-if=\"isDegraded\" :code=\"props.raw?.content || ''\" language=\"mermaid\" :is-dark=\"props.isDark\"\r\n :light-theme=\"props.shikiTheme[0]\" :dark-theme=\"props.shikiTheme[1]\" />\r\n\r\n <!-- 当 Mermaid 可用时,渲染完整的 Mermaid 组件 -->\r\n <div v-else :key=\"props.raw.key\" class=\"markdown-mermaid\" :class=\"{ 'markdown-mermaid--dark': props.isDark }\">\r\n <Transition name=\"toolbar\" appear>\r\n <div class=\"toolbar-container\">\r\n <slot name=\"mermaidHeader\" v-bind=\"exposedMethods\">\r\n <div class=\"mermaid-toolbar\">\r\n <div class=\"toolbar-left\">\r\n <div class=\"segmented-control\">\r\n <div class=\"segmented-slider\" :class=\"{ 'slide-right': activeTab === 'code' }\" />\r\n <div class=\"segment-item\" :class=\"{ active: activeTab === 'diagram' }\"\r\n @click=\"handleTabClick('diagram')\">\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M12 2L2 7L12 12L22 7L12 2Z\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path d=\"M2 17L12 22L22 17\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path d=\"M2 12L12 17L22 12\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <span>预览</span>\r\n </div>\r\n <div class=\"segment-item\" :class=\"{ active: activeTab === 'code' }\" @click=\"handleTabClick('code')\">\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M16 18L22 12L16 6\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path d=\"M8 6L2 12L8 18\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <span>代码</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"toolbar-right\">\r\n <slot name=\"mermaidActions\" v-bind=\"exposedMethods\">\r\n <div v-for=\"action in filteredActions\" :key=\"action.key\" class=\"toolbar-action-btn\"\r\n :class=\"[action.class, { 'toolbar-action-btn--disabled': action.disabled }]\" :style=\"action.style\"\r\n :title=\"action.title\" @click=\"handleActionClick(action)\">\r\n <component :is=\"renderActionIcon(action)\" v-if=\"action.icon\" />\r\n </div>\r\n\r\n <template v-if=\"showSourceCode\">\r\n <div class=\"toolbar-action-btn\" :class=\"{ 'copy-success': copied }\" title=\"复制代码\"\r\n @click=\"handleCopyCode($event)\">\r\n <svg v-if=\"copied\" width=\"16\" height=\"16\" xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 1024 1024\">\r\n <path fill=\"currentColor\"\r\n d=\"M406.656 706.944 195.84 496.256a32 32 0 1 0-45.248 45.248l256 256 512-512a32 32 0 0 0-45.248-45.248L406.592 706.944z\" />\r\n </svg>\r\n <svg v-else width=\"16\" height=\"16\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\">\r\n <path fill=\"currentColor\"\r\n d=\"M768 832a128 128 0 0 1-128 128H192A128 128 0 0 1 64 832V384a128 128 0 0 1 128-128v64a64 64 0 0 0-64 64v448a64 64 0 0 0 64 64h448a64 64 0 0 0 64-64z\" />\r\n <path fill=\"currentColor\"\r\n d=\"M384 128a64 64 0 0 0-64 64v448a64 64 0 0 0 64 64h448a64 64 0 0 0 64-64V192a64 64 0 0 0-64-64zm0-64h448a128 128 0 0 1 128 128v448a128 128 0 0 1-128 128H384a128 128 0 0 1-128-128V192A128 128 0 0 1 384 64\" />\r\n </svg>\r\n </div>\r\n </template>\r\n\r\n <template v-else>\r\n <div class=\"toolbar-action-btn\" title=\"缩小\" @click=\"handleZoomOut($event)\">\r\n <svg width=\"16\" height=\"16\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\">\r\n <path fill=\"currentColor\"\r\n d=\"m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704M352 448h256a32 32 0 0 1 0 64H352a32 32 0 0 1 0-64\" />\r\n </svg>\r\n </div>\r\n\r\n <div class=\"toolbar-action-btn\" title=\"放大\" @click=\"handleZoomIn($event)\">\r\n <svg width=\"16\" height=\"16\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\">\r\n <path fill=\"currentColor\"\r\n d=\"m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704m-32-384v-96a32 32 0 0 1 64 0v96h96a32 32 0 0 1 0 64h-96v96a32 32 0 0 1-64 0v-96h-96a32 32 0 0 1 0-64z\" />\r\n </svg>\r\n </div>\r\n\r\n <div class=\"toolbar-action-btn\" title=\"重置\" @click=\"handleReset($event)\">\r\n <svg width=\"16\" height=\"16\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\">\r\n <path fill=\"currentColor\"\r\n d=\"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896\" />\r\n <path fill=\"currentColor\"\r\n d=\"M512 96a32 32 0 0 1 32 32v192a32 32 0 0 1-64 0V128a32 32 0 0 1 32-32m0 576a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V704a32 32 0 0 1 32-32M96 512a32 32 0 0 1 32-32h192a32 32 0 0 1 0 64H128a32 32 0 0 1-32-32m576 0a32 32 0 0 1 32-32h192a32 32 0 1 1 0 64H704a32 32 0 0 1-32-32\" />\r\n </svg>\r\n </div>\r\n\r\n <div class=\"toolbar-action-btn\" title=\"下载\" @click=\"handleDownload\">\r\n <svg width=\"16\" height=\"16\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\">\r\n <path fill=\"currentColor\"\r\n d=\"M160 832h704a32 32 0 1 1 0 64H160a32 32 0 1 1 0-64m384-253.696 236.288-236.352 45.248 45.248L508.8 704 192 387.2l45.248-45.248L480 584.704V128h64z\" />\r\n </svg>\r\n </div>\r\n </template>\r\n </slot>\r\n </div>\r\n </div>\r\n </slot>\r\n </div>\r\n </Transition>\r\n\r\n <div v-show=\"showSourceCode\" class=\"mermaid-source-code\">\r\n <CodeBlock :code=\"props.raw?.content || ''\" language=\"mermaid\" :is-dark=\"props.isDark\"\r\n :light-theme=\"props.shikiTheme[0]\" :dark-theme=\"props.shikiTheme[1]\" :show-code-block-header=\"false\"\r\n :sticky-code-block-header=\"false\" />\r\n </div>\r\n\r\n <SyntaxMermaid v-show=\"!showSourceCode\" ref=\"syntaxMermaidRef\" :content=\"mermaidContent\" :id=\"mermaidId\"\r\n :is-dark=\"props.isDark\" :config=\"props.config\" />\r\n </div>\r\n</template>\r\n\r\n<style>\r\n.markdown-mermaid {\r\n border-radius: 8px;\r\n overflow: hidden;\r\n font-size: 0;\r\n background: rgba(0, 0, 0, 0.03);\r\n}\r\n\r\n.markdown-mermaid.markdown-mermaid--dark {\r\n background: rgba(255, 255, 255, 0.13);\r\n}\r\n\r\n.markdown-mermaid .toolbar-container {\r\n position: relative;\r\n z-index: 10;\r\n flex-shrink: 0;\r\n background: rgba(0, 0, 0, 0.05);\r\n color: #333;\r\n}\r\n\r\n.markdown-mermaid.markdown-mermaid--dark .toolbar-container {\r\n background: rgba(0, 0, 0, 0.25);\r\n color: #fff;\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n padding: 8px 16px;\r\n background: transparent;\r\n color: inherit;\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .toolbar-left {\r\n display: flex;\r\n align-items: center;\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .segmented-control {\r\n display: flex;\r\n align-items: center;\r\n position: relative;\r\n background: rgba(0, 0, 0, 0.06);\r\n border-radius: 6px;\r\n padding: 3px;\r\n gap: 2px;\r\n}\r\n\r\n.markdown-mermaid.markdown-mermaid--dark .mermaid-toolbar .segmented-control {\r\n background: rgba(255, 255, 255, 0.08);\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .segmented-slider {\r\n position: absolute;\r\n top: 3px;\r\n left: 3px;\r\n width: calc(50% - 4px);\r\n height: calc(100% - 6px);\r\n background: #fff;\r\n border-radius: 4px;\r\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\r\n transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);\r\n z-index: 0;\r\n}\r\n\r\n.markdown-mermaid.markdown-mermaid--dark .mermaid-toolbar .segmented-slider {\r\n background: rgba(255, 255, 255, 0.15);\r\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .segmented-slider.slide-right {\r\n transform: translateX(calc(100% + 2px));\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .segment-item {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n gap: 4px;\r\n font-size: 12px;\r\n border: none;\r\n color: inherit;\r\n min-width: 60px;\r\n text-align: center;\r\n box-sizing: border-box;\r\n font-weight: 500;\r\n cursor: pointer;\r\n border-radius: 4px;\r\n padding: 5px 12px;\r\n transition: all 0.2s ease;\r\n background: transparent;\r\n opacity: 0.6;\r\n user-select: none;\r\n position: relative;\r\n z-index: 1;\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .segment-item.active {\r\n opacity: 1;\r\n}\r\n\r\n.markdown-mermaid.markdown-mermaid--dark .mermaid-toolbar .segment-item.active {\r\n color: #fff;\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .segment-item:hover {\r\n opacity: 1;\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .segment-item svg {\r\n flex-shrink: 0;\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .toolbar-right {\r\n display: flex;\r\n align-items: center;\r\n gap: 16px;\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .toolbar-action-btn {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 28px;\r\n height: 28px;\r\n padding: 0;\r\n border: none;\r\n border-radius: 4px;\r\n background: transparent;\r\n color: inherit;\r\n cursor: pointer;\r\n transition: all 0.2s ease;\r\n opacity: 0.7;\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .toolbar-action-btn:hover {\r\n opacity: 1;\r\n background: rgba(0, 0, 0, 0.08);\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .toolbar-action-btn.copy-success {\r\n opacity: 1;\r\n color: #22c55e;\r\n}\r\n\r\n.markdown-mermaid.markdown-mermaid--dark .mermaid-toolbar .toolbar-action-btn:hover {\r\n background: rgba(255, 255, 255, 0.1);\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .toolbar-action-btn.toolbar-action-btn--disabled {\r\n opacity: 0.3;\r\n cursor: not-allowed;\r\n pointer-events: none;\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .mermaid-action-icon {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .mermaid-action-icon :deep(svg) {\r\n width: 16px;\r\n height: 16px;\r\n flex-shrink: 0;\r\n}\r\n\r\n.markdown-mermaid .mermaid-source-code {\r\n position: relative;\r\n z-index: 1;\r\n flex: 1;\r\n width: 100%;\r\n overflow: auto;\r\n box-sizing: border-box;\r\n}\r\n\r\n.toolbar-enter-active,\r\n.toolbar-leave-active {\r\n transition: opacity 0.3s ease;\r\n}\r\n\r\n.toolbar-enter-from,\r\n.toolbar-leave-to {\r\n opacity: 0;\r\n}\r\n</style>\r\n"],"names":["_createBlock","_createElementBlock","_normalizeClass","_createVNode","_Transition","_createElementVNode","_renderSlot","_normalizeProps","_guardReactiveProps","_Fragment","_renderList","_normalizeStyle","_resolveDynamicComponent","_unref","_openBlock","_withDirectives","SyntaxMermaid"],"mappings":"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"}
|
package/dist/x-markdown.es27.js
CHANGED
|
@@ -1,8 +1,183 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import { useTimeoutFn, isClient, toArray, watchImmediate, createSingletonPromise, isObject } from './x-markdown.es31.js';
|
|
2
|
+
export { tryOnScopeDispose } from './x-markdown.es31.js';
|
|
3
|
+
import { computed, shallowRef, toValue, readonly, getCurrentInstance, onMounted, unref, toRaw } from 'vue';
|
|
4
|
+
|
|
5
|
+
//#endregion
|
|
6
|
+
//#region _configurable.ts
|
|
7
|
+
const defaultWindow = isClient ? window : void 0;
|
|
8
|
+
const defaultNavigator = isClient ? window.navigator : void 0;
|
|
9
|
+
|
|
10
|
+
//#endregion
|
|
11
|
+
//#region unrefElement/index.ts
|
|
12
|
+
/**
|
|
13
|
+
* Get the dom element of a ref of element or Vue component instance
|
|
14
|
+
*
|
|
15
|
+
* @param elRef
|
|
16
|
+
*/
|
|
17
|
+
function unrefElement(elRef) {
|
|
18
|
+
var _$el;
|
|
19
|
+
const plain = toValue(elRef);
|
|
20
|
+
return (_$el = plain === null || plain === void 0 ? void 0 : plain.$el) !== null && _$el !== void 0 ? _$el : plain;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
//#endregion
|
|
24
|
+
//#region useEventListener/index.ts
|
|
25
|
+
function useEventListener(...args) {
|
|
26
|
+
const register = (el, event, listener, options) => {
|
|
27
|
+
el.addEventListener(event, listener, options);
|
|
28
|
+
return () => el.removeEventListener(event, listener, options);
|
|
29
|
+
};
|
|
30
|
+
const firstParamTargets = computed(() => {
|
|
31
|
+
const test = toArray(toValue(args[0])).filter((e) => e != null);
|
|
32
|
+
return test.every((e) => typeof e !== "string") ? test : void 0;
|
|
33
|
+
});
|
|
34
|
+
return watchImmediate(() => {
|
|
35
|
+
var _firstParamTargets$va, _firstParamTargets$va2;
|
|
36
|
+
return [
|
|
37
|
+
(_firstParamTargets$va = (_firstParamTargets$va2 = firstParamTargets.value) === null || _firstParamTargets$va2 === void 0 ? void 0 : _firstParamTargets$va2.map((e) => unrefElement(e))) !== null && _firstParamTargets$va !== void 0 ? _firstParamTargets$va : [defaultWindow].filter((e) => e != null),
|
|
38
|
+
toArray(toValue(firstParamTargets.value ? args[1] : args[0])),
|
|
39
|
+
toArray(unref(firstParamTargets.value ? args[2] : args[1])),
|
|
40
|
+
toValue(firstParamTargets.value ? args[3] : args[2])
|
|
41
|
+
];
|
|
42
|
+
}, ([raw_targets, raw_events, raw_listeners, raw_options], _, onCleanup) => {
|
|
43
|
+
if (!(raw_targets === null || raw_targets === void 0 ? void 0 : raw_targets.length) || !(raw_events === null || raw_events === void 0 ? void 0 : raw_events.length) || !(raw_listeners === null || raw_listeners === void 0 ? void 0 : raw_listeners.length)) return;
|
|
44
|
+
const optionsClone = isObject(raw_options) ? { ...raw_options } : raw_options;
|
|
45
|
+
const cleanups = raw_targets.flatMap((el) => raw_events.flatMap((event) => raw_listeners.map((listener) => register(el, event, listener, optionsClone))));
|
|
46
|
+
onCleanup(() => {
|
|
47
|
+
cleanups.forEach((fn) => fn());
|
|
48
|
+
});
|
|
49
|
+
}, { flush: "post" });
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
//#endregion
|
|
53
|
+
//#region useMounted/index.ts
|
|
54
|
+
/**
|
|
55
|
+
* Mounted state in ref.
|
|
56
|
+
*
|
|
57
|
+
* @see https://vueuse.org/useMounted
|
|
58
|
+
*
|
|
59
|
+
* @__NO_SIDE_EFFECTS__
|
|
60
|
+
*/
|
|
61
|
+
function useMounted() {
|
|
62
|
+
const isMounted = shallowRef(false);
|
|
63
|
+
const instance = getCurrentInstance();
|
|
64
|
+
if (instance) onMounted(() => {
|
|
65
|
+
isMounted.value = true;
|
|
66
|
+
}, instance);
|
|
67
|
+
return isMounted;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
//#endregion
|
|
71
|
+
//#region useSupported/index.ts
|
|
72
|
+
/* @__NO_SIDE_EFFECTS__ */
|
|
73
|
+
function useSupported(callback) {
|
|
74
|
+
const isMounted = useMounted();
|
|
75
|
+
return computed(() => {
|
|
76
|
+
isMounted.value;
|
|
77
|
+
return Boolean(callback());
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
//#endregion
|
|
82
|
+
//#region usePermission/index.ts
|
|
83
|
+
/**
|
|
84
|
+
* Reactive Permissions API.
|
|
85
|
+
*
|
|
86
|
+
* @see https://vueuse.org/usePermission
|
|
87
|
+
*
|
|
88
|
+
* @__NO_SIDE_EFFECTS__
|
|
89
|
+
*/
|
|
90
|
+
function usePermission(permissionDesc, options = {}) {
|
|
91
|
+
const { controls = false, navigator: navigator$1 = defaultNavigator } = options;
|
|
92
|
+
const isSupported = /* @__PURE__ */ useSupported(() => navigator$1 && "permissions" in navigator$1);
|
|
93
|
+
const permissionStatus = shallowRef();
|
|
94
|
+
const desc = typeof permissionDesc === "string" ? { name: permissionDesc } : permissionDesc;
|
|
95
|
+
const state = shallowRef();
|
|
96
|
+
const update = () => {
|
|
97
|
+
var _permissionStatus$val, _permissionStatus$val2;
|
|
98
|
+
state.value = (_permissionStatus$val = (_permissionStatus$val2 = permissionStatus.value) === null || _permissionStatus$val2 === void 0 ? void 0 : _permissionStatus$val2.state) !== null && _permissionStatus$val !== void 0 ? _permissionStatus$val : "prompt";
|
|
99
|
+
};
|
|
100
|
+
useEventListener(permissionStatus, "change", update, { passive: true });
|
|
101
|
+
const query = createSingletonPromise(async () => {
|
|
102
|
+
if (!isSupported.value) return;
|
|
103
|
+
if (!permissionStatus.value) try {
|
|
104
|
+
permissionStatus.value = await navigator$1.permissions.query(desc);
|
|
105
|
+
} catch (_unused) {
|
|
106
|
+
permissionStatus.value = void 0;
|
|
107
|
+
} finally {
|
|
108
|
+
update();
|
|
109
|
+
}
|
|
110
|
+
if (controls) return toRaw(permissionStatus.value);
|
|
111
|
+
});
|
|
112
|
+
query();
|
|
113
|
+
if (controls) return {
|
|
114
|
+
state,
|
|
115
|
+
isSupported,
|
|
116
|
+
query
|
|
117
|
+
};
|
|
118
|
+
else return state;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
//#endregion
|
|
122
|
+
//#region useClipboard/index.ts
|
|
123
|
+
function useClipboard(options = {}) {
|
|
124
|
+
const { navigator: navigator$1 = defaultNavigator, read = false, source, copiedDuring = 1500, legacy = false } = options;
|
|
125
|
+
const isClipboardApiSupported = /* @__PURE__ */ useSupported(() => navigator$1 && "clipboard" in navigator$1);
|
|
126
|
+
const permissionRead = usePermission("clipboard-read");
|
|
127
|
+
const permissionWrite = usePermission("clipboard-write");
|
|
128
|
+
const isSupported = computed(() => isClipboardApiSupported.value || legacy);
|
|
129
|
+
const text = shallowRef("");
|
|
130
|
+
const copied = shallowRef(false);
|
|
131
|
+
const timeout = useTimeoutFn(() => copied.value = false, copiedDuring, { immediate: false });
|
|
132
|
+
async function updateText() {
|
|
133
|
+
let useLegacy = !(isClipboardApiSupported.value && isAllowed(permissionRead.value));
|
|
134
|
+
if (!useLegacy) try {
|
|
135
|
+
text.value = await navigator$1.clipboard.readText();
|
|
136
|
+
} catch (_unused) {
|
|
137
|
+
useLegacy = true;
|
|
138
|
+
}
|
|
139
|
+
if (useLegacy) text.value = legacyRead();
|
|
140
|
+
}
|
|
141
|
+
if (isSupported.value && read) useEventListener(["copy", "cut"], updateText, { passive: true });
|
|
142
|
+
async function copy(value = toValue(source)) {
|
|
143
|
+
if (isSupported.value && value != null) {
|
|
144
|
+
let useLegacy = !(isClipboardApiSupported.value && isAllowed(permissionWrite.value));
|
|
145
|
+
if (!useLegacy) try {
|
|
146
|
+
await navigator$1.clipboard.writeText(value);
|
|
147
|
+
} catch (_unused2) {
|
|
148
|
+
useLegacy = true;
|
|
149
|
+
}
|
|
150
|
+
if (useLegacy) legacyCopy(value);
|
|
151
|
+
text.value = value;
|
|
152
|
+
copied.value = true;
|
|
153
|
+
timeout.start();
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
function legacyCopy(value) {
|
|
157
|
+
const ta = document.createElement("textarea");
|
|
158
|
+
ta.value = value;
|
|
159
|
+
ta.style.position = "absolute";
|
|
160
|
+
ta.style.opacity = "0";
|
|
161
|
+
ta.setAttribute("readonly", "");
|
|
162
|
+
document.body.appendChild(ta);
|
|
163
|
+
ta.select();
|
|
164
|
+
document.execCommand("copy");
|
|
165
|
+
ta.remove();
|
|
166
|
+
}
|
|
167
|
+
function legacyRead() {
|
|
168
|
+
var _document$getSelectio, _document, _document$getSelectio2;
|
|
169
|
+
return (_document$getSelectio = (_document = document) === null || _document === void 0 || (_document$getSelectio2 = _document.getSelection) === null || _document$getSelectio2 === void 0 || (_document$getSelectio2 = _document$getSelectio2.call(_document)) === null || _document$getSelectio2 === void 0 ? void 0 : _document$getSelectio2.toString()) !== null && _document$getSelectio !== void 0 ? _document$getSelectio : "";
|
|
170
|
+
}
|
|
171
|
+
function isAllowed(status) {
|
|
172
|
+
return status === "granted" || status === "prompt";
|
|
173
|
+
}
|
|
174
|
+
return {
|
|
175
|
+
isSupported,
|
|
176
|
+
text: readonly(text),
|
|
177
|
+
copied: readonly(copied),
|
|
178
|
+
copy
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
export { createSingletonPromise, defaultNavigator, defaultWindow, isClient, isObject, toArray, unrefElement, useClipboard, useEventListener, useMounted, usePermission, useSupported, useTimeoutFn, watchImmediate };
|
|
8
183
|
//# sourceMappingURL=x-markdown.es27.js.map
|