@robot-admin/naive-ui-components 0.4.4 → 0.5.0

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 (158) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/C_ActionBar-jZPsiXtT.css.map +1 -0
  3. package/dist/C_ActionBar.css +205 -0
  4. package/dist/{C_AntV-DGjscTWa.css.map → C_AntV-A3NXx_sF.css.map} +1 -1
  5. package/dist/C_AntV-D2Zp2qQF.css.map +1 -0
  6. package/dist/C_AntV.css +398 -0
  7. package/dist/C_AntV.js.map +1 -1
  8. package/dist/C_AntV2.js +1 -1
  9. package/dist/C_AntV2.js.map +1 -1
  10. package/dist/C_Barcode-Do1Ozsmh.css.map +1 -0
  11. package/dist/C_Barcode.css +39 -0
  12. package/dist/C_Captcha-CZmAETly.css.map +1 -0
  13. package/dist/C_Captcha.css +109 -0
  14. package/dist/C_Cascade-Dq0S5Jkm.css.map +1 -0
  15. package/dist/C_Cascade.css +10 -0
  16. package/dist/C_City-DNKv4MpH.css.map +1 -0
  17. package/dist/C_City.css +132 -0
  18. package/dist/C_Code-avZjAnHD.css.map +1 -0
  19. package/dist/C_Code.css +8 -0
  20. package/dist/C_CollapsePanel-BpofCDyl.css.map +1 -0
  21. package/dist/C_CollapsePanel.css +171 -0
  22. package/dist/C_Cron-DqHQ92LN.css.map +1 -0
  23. package/dist/C_Cron.css +307 -0
  24. package/dist/C_Draggable-r6nhx3yM.css.map +1 -0
  25. package/dist/C_Draggable.css +238 -0
  26. package/dist/C_Editor-D0_6UhIa.css.map +1 -0
  27. package/dist/C_Editor.css +52 -0
  28. package/dist/{C_FilePreview-B4XgTv-h.css.map → C_FilePreview-BVarVvnD.css.map} +1 -1
  29. package/dist/C_FilePreview-DHGlV4OR.css.map +1 -0
  30. package/dist/C_FilePreview.css +507 -0
  31. package/dist/C_FilePreview.js.map +1 -1
  32. package/dist/C_FilePreview2.js +1 -1
  33. package/dist/C_FilePreview2.js.map +1 -1
  34. package/dist/{C_Form-DLb9FtAb.css.map → C_Form-BciQUPpS.css.map} +1 -1
  35. package/dist/C_Form-CKHvXL3O.css.map +1 -0
  36. package/dist/C_Form.css +976 -0
  37. package/dist/C_Form.js.map +1 -1
  38. package/dist/C_Form2.js +1 -1
  39. package/dist/C_Form2.js.map +1 -1
  40. package/dist/{C_FormSearch-DlIEoh7X.css.map → C_FormSearch-Bmd2CmG6.css.map} +1 -1
  41. package/dist/C_FormSearch-DBNtnjaL.css.map +1 -0
  42. package/dist/C_FormSearch.css +177 -0
  43. package/dist/C_FormSearch.js.map +1 -1
  44. package/dist/C_FormSearch2.js +1 -1
  45. package/dist/C_FormSearch2.js.map +1 -1
  46. package/dist/C_FormulaEditor-3WG2vtQl.css.map +1 -0
  47. package/dist/C_FormulaEditor.css +502 -0
  48. package/dist/C_FullCalendar-1U4VlG7X.css.map +1 -0
  49. package/dist/C_FullCalendar-DLUdCtqf.css.map +1 -0
  50. package/dist/C_FullCalendar.css +7 -0
  51. package/dist/C_FullCalendar.js.map +1 -1
  52. package/dist/C_FullCalendar2.js +1 -1
  53. package/dist/C_FullCalendar2.js.map +1 -1
  54. package/dist/C_GlobalSearch-B6wK3m3k.css.map +1 -0
  55. package/dist/C_GlobalSearch.css +616 -0
  56. package/dist/C_Guide.js.map +1 -1
  57. package/dist/C_Guide2.js.map +1 -1
  58. package/dist/C_Icon.js.map +1 -1
  59. package/dist/C_Icon2.js.map +1 -1
  60. package/dist/C_ImageCropper-D3L2-J_J.css.map +1 -0
  61. package/dist/C_ImageCropper.css +129 -0
  62. package/dist/C_Language.js.map +1 -1
  63. package/dist/C_Language2.js.map +1 -1
  64. package/dist/C_Map-BCJmDnJT.css.map +1 -0
  65. package/dist/C_Map.css +29 -0
  66. package/dist/{C_Markdown-C2uiBVSW.css.map → C_Markdown-7iBnLDtL.css.map} +1 -1
  67. package/dist/C_Markdown-BbTvdFCl.css.map +1 -0
  68. package/dist/C_Markdown.css +112 -0
  69. package/dist/C_Markdown.js.map +1 -1
  70. package/dist/C_Markdown2.js +1 -1
  71. package/dist/C_Markdown2.js.map +1 -1
  72. package/dist/C_NotificationCenter-DT6fQ79O.css.map +1 -0
  73. package/dist/C_NotificationCenter.css +466 -0
  74. package/dist/C_QRCode-DMxSyogU.css.map +1 -0
  75. package/dist/C_QRCode.css +51 -0
  76. package/dist/C_Signature-B5fFz6RD.css.map +1 -0
  77. package/dist/C_Signature.css +79 -0
  78. package/dist/C_SplitPane-DuyzUhKB.css.map +1 -0
  79. package/dist/C_SplitPane.css +152 -0
  80. package/dist/C_Steps-DGwXxS2Y.css.map +1 -0
  81. package/dist/C_Steps.css +171 -0
  82. package/dist/{C_Table-C55H4kPr.css.map → C_Table-Dcam_tRs.css.map} +1 -1
  83. package/dist/C_Table-tbUx-R4H.css.map +1 -0
  84. package/dist/C_Table.css +527 -0
  85. package/dist/C_Table.js.map +1 -1
  86. package/dist/C_Table2.js +1 -1
  87. package/dist/C_Table2.js.map +1 -1
  88. package/dist/C_Theme.js.map +1 -1
  89. package/dist/C_Theme2.js.map +1 -1
  90. package/dist/C_Time-CKb_fwdm.css.map +1 -0
  91. package/dist/C_Time.css +23 -0
  92. package/dist/C_Tree-B-Le4hjQ.css.map +1 -0
  93. package/dist/C_Tree.css +142 -0
  94. package/dist/C_Upload-S30RmC9t.css.map +1 -0
  95. package/dist/C_Upload.css +251 -0
  96. package/dist/C_VideoPlayer-Cdgv4Zq0.css.map +1 -0
  97. package/dist/C_VideoPlayer.css +355 -0
  98. package/dist/C_VideoPlayer.d.ts +1 -1
  99. package/dist/C_VtableGantt-DB87-jdS.css.map +1 -0
  100. package/dist/C_VtableGantt.css +89 -0
  101. package/dist/C_WaterFall-C4HDqf-a.css.map +1 -0
  102. package/dist/C_WaterFall.css +73 -0
  103. package/dist/{C_WorkFlow-CSO86Cuc.css.map → C_WorkFlow-7F6op6qN.css.map} +1 -1
  104. package/dist/C_WorkFlow-Cy3HWA6A.css.map +1 -0
  105. package/dist/C_WorkFlow.css +1166 -0
  106. package/dist/C_WorkFlow.js.map +1 -1
  107. package/dist/C_WorkFlow2.js +1 -1
  108. package/dist/C_WorkFlow2.js.map +1 -1
  109. package/dist/chunk.js +1 -1
  110. package/dist/constants.d.ts +4 -4
  111. package/dist/constants2.d.ts +5 -5
  112. package/dist/constants3.d.ts +3 -3
  113. package/dist/constants4.d.ts +4 -4
  114. package/dist/constants5.d.ts +8 -3816
  115. package/dist/data.d.ts +1 -1
  116. package/dist/index.cjs.map +1 -1
  117. package/dist/index.d.ts +2 -1
  118. package/dist/index.js.map +1 -1
  119. package/dist/index.vue.d.ts +1 -1
  120. package/dist/index10.vue.d.ts +8 -8
  121. package/dist/index11.vue.d.ts +2 -2
  122. package/dist/index12.vue.d.ts +7 -7
  123. package/dist/index13.vue.d.ts +1 -1
  124. package/dist/index14.vue.d.ts +2 -2
  125. package/dist/index15.vue.d.ts +1 -1
  126. package/dist/index16.vue.d.ts +2 -2
  127. package/dist/index3.vue.d.ts +1 -1
  128. package/dist/index4.vue.d.ts +2 -2
  129. package/dist/index5.vue.d.ts +2 -2
  130. package/dist/index6.vue.d.ts +4 -4
  131. package/dist/index7.vue.d.ts +2 -2
  132. package/dist/index8.vue.d.ts +4 -4
  133. package/dist/index9.vue.d.ts +1 -1
  134. package/dist/resolver.cjs +1 -1
  135. package/dist/resolver.cjs.map +1 -1
  136. package/dist/resolver.d.cts +7 -0
  137. package/dist/resolver.d.ts +7 -0
  138. package/dist/resolver.js +1 -1
  139. package/dist/resolver.js.map +1 -1
  140. package/dist/style.css +481 -481
  141. package/dist/useCalendarEvents.d.ts +1 -1
  142. package/dist/useCollapsePanel.d.ts +1 -1
  143. package/dist/useCropperCore.d.ts +7 -7
  144. package/dist/useDraggableLayout.d.ts +2 -2
  145. package/dist/useDynamicFormState.d.ts +8 -8
  146. package/dist/useEdgeInteraction.d.ts +4 -7293
  147. package/dist/useFullscreen.d.ts +2 -2
  148. package/dist/useInfiniteScroll.d.ts +3 -3
  149. package/dist/useModalEdit.d.ts +41 -17
  150. package/dist/useQRCode.d.ts +3 -3
  151. package/dist/useSearchState.d.ts +3 -3
  152. package/dist/useSignatureHistory.d.ts +3 -3
  153. package/dist/useSplitResize.d.ts +3 -3
  154. package/dist/useTimeSelection.d.ts +2 -2
  155. package/dist/useTreeOperations.d.ts +3 -3
  156. package/dist/useWorkflowValidation.d.ts +5 -5
  157. package/package.json +32 -32
  158. package/dist/C_FullCalendar-BULCIlVK.css.map +0 -1
@@ -0,0 +1,129 @@
1
+ /* unplugin-vue-components disabled */.cropper-toolbar[data-v-ac310c55] {
2
+ display: flex;
3
+ flex-wrap: wrap;
4
+ gap: 4px;
5
+ align-items: center;
6
+ padding: 8px 0;
7
+ }
8
+ /* unplugin-vue-components disabled */.cropper-preview[data-v-11f355b4] {
9
+ display: flex;
10
+ flex-direction: column;
11
+ gap: 16px;
12
+ }
13
+ .cropper-preview .preview-label[data-v-11f355b4] {
14
+ display: flex;
15
+ gap: 6px;
16
+ align-items: center;
17
+ font-size: 13px;
18
+ font-weight: 500;
19
+ color: var(--text-color-2);
20
+ }
21
+ .cropper-preview .preview-main[data-v-11f355b4] {
22
+ width: 100%;
23
+ overflow: hidden;
24
+ border: 1px solid var(--border-color);
25
+ border-radius: 6px;
26
+ background: linear-gradient(45deg, #f0f0f0 25%, transparent 25%), linear-gradient(-45deg, #f0f0f0 25%, transparent 25%), linear-gradient(45deg, transparent 75%, #f0f0f0 75%), linear-gradient(-45deg, transparent 75%, #f0f0f0 75%);
27
+ background-position: 0 0, 0 8px, 8px -8px, -8px 0;
28
+ background-size: 16px 16px;
29
+ }
30
+ .cropper-preview .preview-main--circular[data-v-11f355b4] {
31
+ border-radius: 50%;
32
+ }
33
+ .cropper-preview .preview-main__viewport img[data-v-11f355b4] {
34
+ display: block;
35
+ max-width: none !important;
36
+ }
37
+ .cropper-preview .preview-empty[data-v-11f355b4] {
38
+ display: flex;
39
+ align-items: center;
40
+ justify-content: center;
41
+ width: 100%;
42
+ height: 100%;
43
+ min-height: 120px;
44
+ }
45
+ .cropper-preview .preview-thumbs[data-v-11f355b4] {
46
+ display: flex;
47
+ gap: 12px;
48
+ align-items: flex-end;
49
+ justify-content: center;
50
+ }
51
+ .cropper-preview .preview-thumb[data-v-11f355b4] {
52
+ display: flex;
53
+ flex-direction: column;
54
+ gap: 4px;
55
+ align-items: center;
56
+ }
57
+ .cropper-preview .preview-thumb__box[data-v-11f355b4] {
58
+ overflow: hidden;
59
+ border: 1px solid var(--border-color);
60
+ border-radius: 4px;
61
+ background: var(--body-color);
62
+ }
63
+ .cropper-preview .preview-thumb__box--circular[data-v-11f355b4] {
64
+ border-radius: 50%;
65
+ }
66
+ .cropper-preview .preview-thumb__viewport img[data-v-11f355b4] {
67
+ display: block;
68
+ max-width: none !important;
69
+ }
70
+ .cropper-preview .preview-thumb__label[data-v-11f355b4] {
71
+ font-size: 11px;
72
+ color: var(--text-color-3);
73
+ }
74
+ /* unplugin-vue-components disabled *//* C_ImageCropper styles */
75
+ .c-image-cropper[data-v-b25a5839] {
76
+ width: 100%;
77
+ }
78
+ .c-image-cropper__body[data-v-b25a5839] {
79
+ display: flex;
80
+ flex-direction: column;
81
+ gap: 8px;
82
+ }
83
+ .c-image-cropper__workspace[data-v-b25a5839] {
84
+ display: flex;
85
+ gap: 16px;
86
+ align-items: stretch;
87
+ }
88
+ .c-image-cropper__canvas[data-v-b25a5839] {
89
+ position: relative;
90
+ flex: 1;
91
+ min-width: 0;
92
+ overflow: hidden;
93
+ border: 1px solid var(--border-color);
94
+ border-radius: 6px;
95
+ background: var(--body-color);
96
+ }
97
+ .c-image-cropper__canvas[data-v-b25a5839] .vue-cropper {
98
+ width: 100% !important;
99
+ height: 100% !important;
100
+ }
101
+ .c-image-cropper__preview-panel[data-v-b25a5839] {
102
+ flex: 0 1 280px;
103
+ min-width: 200px;
104
+ padding: 16px;
105
+ overflow: hidden;
106
+ border: 1px solid var(--border-color);
107
+ border-radius: 6px;
108
+ background: var(--card-color);
109
+ }
110
+ .c-image-cropper__placeholder[data-v-b25a5839] {
111
+ display: flex;
112
+ flex-direction: column;
113
+ gap: 8px;
114
+ align-items: center;
115
+ justify-content: center;
116
+ height: 100%;
117
+ color: var(--text-color-3);
118
+ font-size: 14px;
119
+ }
120
+ @media (width <= 768px) {
121
+ .c-image-cropper__workspace[data-v-b25a5839] {
122
+ flex-direction: column;
123
+ }
124
+ .c-image-cropper__preview-panel[data-v-b25a5839] {
125
+ max-width: none;
126
+ }
127
+ }
128
+
129
+ /*# sourceMappingURL=C_ImageCropper-D3L2-J_J.css.map*/
@@ -1 +1 @@
1
- {"version":3,"file":"C_Language.js","names":["modelValue"],"sources":["../src/components/C_Language/index.vue","../src/components/C_Language/index.vue","../src/components/C_Language/index.vue"],"sourcesContent":["/* unplugin-vue-components disabled */<!--\n * @Author: ChenYu ycyplus@gmail.com\n * @Date: 2025-11-19\n * @Description: 语言切换组件\n * @Migration: naive-ui-components 组件库迁移版本\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\n-->\n<template>\n <NDropdown\n size=\"small\"\n trigger=\"hover\"\n :options=\"finalOptions\"\n :value=\"modelValue\"\n @select=\"handleLanguageChange\"\n >\n <NButton text>\n <div class=\"flex items-center\">\n <C_Icon name=\"mdi:language\" :size=\"18\" />\n </div>\n </NButton>\n </NDropdown>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, h } from \"vue\";\nimport { NDropdown, NButton } from \"naive-ui\";\nimport C_Icon from \"../C_Icon/index.vue\";\n\ndefineOptions({ name: \"C_Language\" });\n\nexport interface LanguageOption {\n key: string;\n label: string;\n iconClass?: string;\n}\n\nconst props = withDefaults(\n defineProps<{\n modelValue?: string;\n options?: LanguageOption[];\n }>(),\n {\n modelValue: \"zh-cn\",\n options: () => [\n { key: \"zh-cn\", label: \"简体中文\", iconClass: \"mdi:alpha-c\" },\n { key: \"en\", label: \"English\", iconClass: \"mdi:alpha-u\" },\n { key: \"ja\", label: \"日本語\", iconClass: \"mdi:alpha-j\" },\n { key: \"ko\", label: \"한국어\", iconClass: \"mdi:alpha-k\" },\n ],\n },\n);\n\nconst emit = defineEmits<{\n \"update:modelValue\": [key: string];\n change: [key: string];\n}>();\n\nconst finalOptions = computed(() =>\n props.options.map((opt) => ({\n key: opt.key,\n label: opt.label,\n icon: opt.iconClass ? () => h(C_Icon, { name: opt.iconClass, size: 16 }) : undefined,\n })),\n);\n\nconst handleLanguageChange = (key: string) => {\n if (key === props.modelValue) return;\n emit(\"update:modelValue\", key);\n emit(\"change\", key);\n};\n</script>\n","/* unplugin-vue-components disabled */<!--\n * @Author: ChenYu ycyplus@gmail.com\n * @Date: 2025-11-19\n * @Description: 语言切换组件\n * @Migration: naive-ui-components 组件库迁移版本\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\n-->\n<template>\n <NDropdown\n size=\"small\"\n trigger=\"hover\"\n :options=\"finalOptions\"\n :value=\"modelValue\"\n @select=\"handleLanguageChange\"\n >\n <NButton text>\n <div class=\"flex items-center\">\n <C_Icon name=\"mdi:language\" :size=\"18\" />\n </div>\n </NButton>\n </NDropdown>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, h } from \"vue\";\nimport { NDropdown, NButton } from \"naive-ui\";\nimport C_Icon from \"../C_Icon/index.vue\";\n\ndefineOptions({ name: \"C_Language\" });\n\nexport interface LanguageOption {\n key: string;\n label: string;\n iconClass?: string;\n}\n\nconst props = withDefaults(\n defineProps<{\n modelValue?: string;\n options?: LanguageOption[];\n }>(),\n {\n modelValue: \"zh-cn\",\n options: () => [\n { key: \"zh-cn\", label: \"简体中文\", iconClass: \"mdi:alpha-c\" },\n { key: \"en\", label: \"English\", iconClass: \"mdi:alpha-u\" },\n { key: \"ja\", label: \"日本語\", iconClass: \"mdi:alpha-j\" },\n { key: \"ko\", label: \"한국어\", iconClass: \"mdi:alpha-k\" },\n ],\n },\n);\n\nconst emit = defineEmits<{\n \"update:modelValue\": [key: string];\n change: [key: string];\n}>();\n\nconst finalOptions = computed(() =>\n props.options.map((opt) => ({\n key: opt.key,\n label: opt.label,\n icon: opt.iconClass ? () => h(C_Icon, { name: opt.iconClass, size: 16 }) : undefined,\n })),\n);\n\nconst handleLanguageChange = (key: string) => {\n if (key === props.modelValue) return;\n emit(\"update:modelValue\", key);\n emit(\"change\", key);\n};\n</script>\n","<!--\n * @Author: ChenYu ycyplus@gmail.com\n * @Date: 2025-11-19\n * @Description: 语言切换组件\n * @Migration: naive-ui-components 组件库迁移版本\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\n-->\n<template>\n <NDropdown\n size=\"small\"\n trigger=\"hover\"\n :options=\"finalOptions\"\n :value=\"modelValue\"\n @select=\"handleLanguageChange\"\n >\n <NButton text>\n <div class=\"flex items-center\">\n <C_Icon name=\"mdi:language\" :size=\"18\" />\n </div>\n </NButton>\n </NDropdown>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, h } from \"vue\";\nimport { NDropdown, NButton } from \"naive-ui\";\nimport C_Icon from \"../C_Icon/index.vue\";\n\ndefineOptions({ name: \"C_Language\" });\n\nexport interface LanguageOption {\n key: string;\n label: string;\n iconClass?: string;\n}\n\nconst props = withDefaults(\n defineProps<{\n modelValue?: string;\n options?: LanguageOption[];\n }>(),\n {\n modelValue: \"zh-cn\",\n options: () => [\n { key: \"zh-cn\", label: \"简体中文\", iconClass: \"mdi:alpha-c\" },\n { key: \"en\", label: \"English\", iconClass: \"mdi:alpha-u\" },\n { key: \"ja\", label: \"日本語\", iconClass: \"mdi:alpha-j\" },\n { key: \"ko\", label: \"한국어\", iconClass: \"mdi:alpha-k\" },\n ],\n },\n);\n\nconst emit = defineEmits<{\n \"update:modelValue\": [key: string];\n change: [key: string];\n}>();\n\nconst finalOptions = computed(() =>\n props.options.map((opt) => ({\n key: opt.key,\n label: opt.label,\n icon: opt.iconClass ? () => h(C_Icon, { name: opt.iconClass, size: 16 }) : undefined,\n })),\n);\n\nconst handleLanguageChange = (key: string) => {\n if (key === props.modelValue) return;\n emit(\"update:modelValue\", key);\n emit(\"change\", key);\n};\n</script>\n"],"mappings":"0fEoCA,IAAM,EAAQ,EAgBR,EAAO,EAKP,GAAA,EAAA,EAAA,cACJ,EAAM,QAAQ,IAAK,IAAS,CAC1B,IAAK,EAAI,IACT,MAAO,EAAI,MACX,KAAM,EAAI,eAAA,EAAA,EAAA,GAAoB,EAAA,EAAQ,CAAE,KAAM,EAAI,UAAW,KAAM,GAAI,CAAC,CAAG,IAAA,GAC5E,EAAE,CACJ,CAEK,EAAwB,GAAgB,CACxC,IAAQ,EAAM,aAClB,EAAK,oBAAqB,EAAI,CAC9B,EAAK,SAAU,EAAI,iEAhDP,EAAA,UAAA,CAAA,CAXV,KAAK,QACL,QAAQ,QACP,QAAS,EAAA,MACT,MAAOA,EAAAA,WACP,SAAQ,8BAMC,EAAA,EAAA,EAAA,cAAA,EAAA,EAAA,OAAA,EAAA,QAAA,CAAA,CAJD,KAAA,GAAI,CAAA,2BAGL,EAAA,EAAA,EAAA,oBAAA,MAFN,EAEM,EAAA,EAAA,EAAA,aADqC,EAAA,EAAA,CAAjC,KAAK,eAAgB,KAAM"}
1
+ {"version":3,"file":"C_Language.js","names":["modelValue"],"sources":["../src/components/C_Language/index.vue","../src/components/C_Language/index.vue","../src/components/C_Language/index.vue"],"sourcesContent":["/* unplugin-vue-components disabled */<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2025-11-19\r\n * @Description: 语言切换组件\r\n * @Migration: naive-ui-components 组件库迁移版本\r\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\r\n-->\r\n<template>\r\n <NDropdown\r\n size=\"small\"\r\n trigger=\"hover\"\r\n :options=\"finalOptions\"\r\n :value=\"modelValue\"\r\n @select=\"handleLanguageChange\"\r\n >\r\n <NButton text>\r\n <div class=\"flex items-center\">\r\n <C_Icon\r\n name=\"mdi:language\"\r\n :size=\"18\"\r\n />\r\n </div>\r\n </NButton>\r\n </NDropdown>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\n import { computed, h } from 'vue'\r\n import { NDropdown, NButton } from 'naive-ui'\r\n import C_Icon from '../C_Icon/index.vue'\r\n\r\n defineOptions({ name: 'C_Language' })\r\n\r\n export interface LanguageOption {\r\n key: string\r\n label: string\r\n iconClass?: string\r\n }\r\n\r\n const props = withDefaults(\r\n defineProps<{\r\n modelValue?: string\r\n options?: LanguageOption[]\r\n }>(),\r\n {\r\n modelValue: 'zh-cn',\r\n options: () => [\r\n { key: 'zh-cn', label: '简体中文', iconClass: 'mdi:alpha-c' },\r\n { key: 'en', label: 'English', iconClass: 'mdi:alpha-u' },\r\n { key: 'ja', label: '日本語', iconClass: 'mdi:alpha-j' },\r\n { key: 'ko', label: '한국어', iconClass: 'mdi:alpha-k' },\r\n ],\r\n }\r\n )\r\n\r\n const emit = defineEmits<{\r\n 'update:modelValue': [key: string]\r\n change: [key: string]\r\n }>()\r\n\r\n const finalOptions = computed(() =>\r\n props.options.map(opt => ({\r\n key: opt.key,\r\n label: opt.label,\r\n icon: opt.iconClass\r\n ? () => h(C_Icon, { name: opt.iconClass, size: 16 })\r\n : undefined,\r\n }))\r\n )\r\n\r\n const handleLanguageChange = (key: string) => {\r\n if (key === props.modelValue) return\r\n emit('update:modelValue', key)\r\n emit('change', key)\r\n }\r\n</script>\r\n","/* unplugin-vue-components disabled */<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2025-11-19\r\n * @Description: 语言切换组件\r\n * @Migration: naive-ui-components 组件库迁移版本\r\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\r\n-->\r\n<template>\r\n <NDropdown\r\n size=\"small\"\r\n trigger=\"hover\"\r\n :options=\"finalOptions\"\r\n :value=\"modelValue\"\r\n @select=\"handleLanguageChange\"\r\n >\r\n <NButton text>\r\n <div class=\"flex items-center\">\r\n <C_Icon\r\n name=\"mdi:language\"\r\n :size=\"18\"\r\n />\r\n </div>\r\n </NButton>\r\n </NDropdown>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\n import { computed, h } from 'vue'\r\n import { NDropdown, NButton } from 'naive-ui'\r\n import C_Icon from '../C_Icon/index.vue'\r\n\r\n defineOptions({ name: 'C_Language' })\r\n\r\n export interface LanguageOption {\r\n key: string\r\n label: string\r\n iconClass?: string\r\n }\r\n\r\n const props = withDefaults(\r\n defineProps<{\r\n modelValue?: string\r\n options?: LanguageOption[]\r\n }>(),\r\n {\r\n modelValue: 'zh-cn',\r\n options: () => [\r\n { key: 'zh-cn', label: '简体中文', iconClass: 'mdi:alpha-c' },\r\n { key: 'en', label: 'English', iconClass: 'mdi:alpha-u' },\r\n { key: 'ja', label: '日本語', iconClass: 'mdi:alpha-j' },\r\n { key: 'ko', label: '한국어', iconClass: 'mdi:alpha-k' },\r\n ],\r\n }\r\n )\r\n\r\n const emit = defineEmits<{\r\n 'update:modelValue': [key: string]\r\n change: [key: string]\r\n }>()\r\n\r\n const finalOptions = computed(() =>\r\n props.options.map(opt => ({\r\n key: opt.key,\r\n label: opt.label,\r\n icon: opt.iconClass\r\n ? () => h(C_Icon, { name: opt.iconClass, size: 16 })\r\n : undefined,\r\n }))\r\n )\r\n\r\n const handleLanguageChange = (key: string) => {\r\n if (key === props.modelValue) return\r\n emit('update:modelValue', key)\r\n emit('change', key)\r\n }\r\n</script>\r\n","<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2025-11-19\r\n * @Description: 语言切换组件\r\n * @Migration: naive-ui-components 组件库迁移版本\r\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\r\n-->\r\n<template>\r\n <NDropdown\r\n size=\"small\"\r\n trigger=\"hover\"\r\n :options=\"finalOptions\"\r\n :value=\"modelValue\"\r\n @select=\"handleLanguageChange\"\r\n >\r\n <NButton text>\r\n <div class=\"flex items-center\">\r\n <C_Icon\r\n name=\"mdi:language\"\r\n :size=\"18\"\r\n />\r\n </div>\r\n </NButton>\r\n </NDropdown>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\n import { computed, h } from 'vue'\r\n import { NDropdown, NButton } from 'naive-ui'\r\n import C_Icon from '../C_Icon/index.vue'\r\n\r\n defineOptions({ name: 'C_Language' })\r\n\r\n export interface LanguageOption {\r\n key: string\r\n label: string\r\n iconClass?: string\r\n }\r\n\r\n const props = withDefaults(\r\n defineProps<{\r\n modelValue?: string\r\n options?: LanguageOption[]\r\n }>(),\r\n {\r\n modelValue: 'zh-cn',\r\n options: () => [\r\n { key: 'zh-cn', label: '简体中文', iconClass: 'mdi:alpha-c' },\r\n { key: 'en', label: 'English', iconClass: 'mdi:alpha-u' },\r\n { key: 'ja', label: '日本語', iconClass: 'mdi:alpha-j' },\r\n { key: 'ko', label: '한국어', iconClass: 'mdi:alpha-k' },\r\n ],\r\n }\r\n )\r\n\r\n const emit = defineEmits<{\r\n 'update:modelValue': [key: string]\r\n change: [key: string]\r\n }>()\r\n\r\n const finalOptions = computed(() =>\r\n props.options.map(opt => ({\r\n key: opt.key,\r\n label: opt.label,\r\n icon: opt.iconClass\r\n ? () => h(C_Icon, { name: opt.iconClass, size: 16 })\r\n : undefined,\r\n }))\r\n )\r\n\r\n const handleLanguageChange = (key: string) => {\r\n if (key === props.modelValue) return\r\n emit('update:modelValue', key)\r\n emit('change', key)\r\n }\r\n</script>\r\n"],"mappings":"0fEuCE,IAAM,EAAQ,EAgBR,EAAO,EAKP,GAAA,EAAA,EAAA,cACJ,EAAM,QAAQ,IAAI,IAAQ,CACxB,IAAK,EAAI,IACT,MAAO,EAAI,MACX,KAAM,EAAI,eAAA,EAAA,EAAA,GACE,EAAA,EAAQ,CAAE,KAAM,EAAI,UAAW,KAAM,GAAI,CAAC,CAClD,IAAA,GACL,EAAE,CACJ,CAEK,EAAwB,GAAgB,CACxC,IAAQ,EAAM,aAClB,EAAK,oBAAqB,EAAI,CAC9B,EAAK,SAAU,EAAI,iEAlDT,EAAA,UAAA,CAAA,CAdV,KAAK,QACL,QAAQ,QACP,QAAS,EAAA,MACT,MAAOA,EAAAA,WACP,SAAQ,8BASC,EAAA,EAAA,EAAA,cAAA,EAAA,EAAA,OAAA,EAAA,QAAA,CAAA,CAPD,KAAA,GAAI,CAAA,2BAML,EAAA,EAAA,EAAA,oBAAA,MALN,EAKM,EAAA,EAAA,EAAA,aADF,EAAA,EAAA,CAFA,KAAK,eACJ,KAAM"}
@@ -1 +1 @@
1
- {"version":3,"file":"C_Language2.js","names":["modelValue"],"sources":["../src/components/C_Language/index.vue","../src/components/C_Language/index.vue","../src/components/C_Language/index.vue"],"sourcesContent":["/* unplugin-vue-components disabled */<!--\n * @Author: ChenYu ycyplus@gmail.com\n * @Date: 2025-11-19\n * @Description: 语言切换组件\n * @Migration: naive-ui-components 组件库迁移版本\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\n-->\n<template>\n <NDropdown\n size=\"small\"\n trigger=\"hover\"\n :options=\"finalOptions\"\n :value=\"modelValue\"\n @select=\"handleLanguageChange\"\n >\n <NButton text>\n <div class=\"flex items-center\">\n <C_Icon name=\"mdi:language\" :size=\"18\" />\n </div>\n </NButton>\n </NDropdown>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, h } from \"vue\";\nimport { NDropdown, NButton } from \"naive-ui\";\nimport C_Icon from \"../C_Icon/index.vue\";\n\ndefineOptions({ name: \"C_Language\" });\n\nexport interface LanguageOption {\n key: string;\n label: string;\n iconClass?: string;\n}\n\nconst props = withDefaults(\n defineProps<{\n modelValue?: string;\n options?: LanguageOption[];\n }>(),\n {\n modelValue: \"zh-cn\",\n options: () => [\n { key: \"zh-cn\", label: \"简体中文\", iconClass: \"mdi:alpha-c\" },\n { key: \"en\", label: \"English\", iconClass: \"mdi:alpha-u\" },\n { key: \"ja\", label: \"日本語\", iconClass: \"mdi:alpha-j\" },\n { key: \"ko\", label: \"한국어\", iconClass: \"mdi:alpha-k\" },\n ],\n },\n);\n\nconst emit = defineEmits<{\n \"update:modelValue\": [key: string];\n change: [key: string];\n}>();\n\nconst finalOptions = computed(() =>\n props.options.map((opt) => ({\n key: opt.key,\n label: opt.label,\n icon: opt.iconClass ? () => h(C_Icon, { name: opt.iconClass, size: 16 }) : undefined,\n })),\n);\n\nconst handleLanguageChange = (key: string) => {\n if (key === props.modelValue) return;\n emit(\"update:modelValue\", key);\n emit(\"change\", key);\n};\n</script>\n","/* unplugin-vue-components disabled */<!--\n * @Author: ChenYu ycyplus@gmail.com\n * @Date: 2025-11-19\n * @Description: 语言切换组件\n * @Migration: naive-ui-components 组件库迁移版本\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\n-->\n<template>\n <NDropdown\n size=\"small\"\n trigger=\"hover\"\n :options=\"finalOptions\"\n :value=\"modelValue\"\n @select=\"handleLanguageChange\"\n >\n <NButton text>\n <div class=\"flex items-center\">\n <C_Icon name=\"mdi:language\" :size=\"18\" />\n </div>\n </NButton>\n </NDropdown>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, h } from \"vue\";\nimport { NDropdown, NButton } from \"naive-ui\";\nimport C_Icon from \"../C_Icon/index.vue\";\n\ndefineOptions({ name: \"C_Language\" });\n\nexport interface LanguageOption {\n key: string;\n label: string;\n iconClass?: string;\n}\n\nconst props = withDefaults(\n defineProps<{\n modelValue?: string;\n options?: LanguageOption[];\n }>(),\n {\n modelValue: \"zh-cn\",\n options: () => [\n { key: \"zh-cn\", label: \"简体中文\", iconClass: \"mdi:alpha-c\" },\n { key: \"en\", label: \"English\", iconClass: \"mdi:alpha-u\" },\n { key: \"ja\", label: \"日本語\", iconClass: \"mdi:alpha-j\" },\n { key: \"ko\", label: \"한국어\", iconClass: \"mdi:alpha-k\" },\n ],\n },\n);\n\nconst emit = defineEmits<{\n \"update:modelValue\": [key: string];\n change: [key: string];\n}>();\n\nconst finalOptions = computed(() =>\n props.options.map((opt) => ({\n key: opt.key,\n label: opt.label,\n icon: opt.iconClass ? () => h(C_Icon, { name: opt.iconClass, size: 16 }) : undefined,\n })),\n);\n\nconst handleLanguageChange = (key: string) => {\n if (key === props.modelValue) return;\n emit(\"update:modelValue\", key);\n emit(\"change\", key);\n};\n</script>\n","<!--\n * @Author: ChenYu ycyplus@gmail.com\n * @Date: 2025-11-19\n * @Description: 语言切换组件\n * @Migration: naive-ui-components 组件库迁移版本\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\n-->\n<template>\n <NDropdown\n size=\"small\"\n trigger=\"hover\"\n :options=\"finalOptions\"\n :value=\"modelValue\"\n @select=\"handleLanguageChange\"\n >\n <NButton text>\n <div class=\"flex items-center\">\n <C_Icon name=\"mdi:language\" :size=\"18\" />\n </div>\n </NButton>\n </NDropdown>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, h } from \"vue\";\nimport { NDropdown, NButton } from \"naive-ui\";\nimport C_Icon from \"../C_Icon/index.vue\";\n\ndefineOptions({ name: \"C_Language\" });\n\nexport interface LanguageOption {\n key: string;\n label: string;\n iconClass?: string;\n}\n\nconst props = withDefaults(\n defineProps<{\n modelValue?: string;\n options?: LanguageOption[];\n }>(),\n {\n modelValue: \"zh-cn\",\n options: () => [\n { key: \"zh-cn\", label: \"简体中文\", iconClass: \"mdi:alpha-c\" },\n { key: \"en\", label: \"English\", iconClass: \"mdi:alpha-u\" },\n { key: \"ja\", label: \"日本語\", iconClass: \"mdi:alpha-j\" },\n { key: \"ko\", label: \"한국어\", iconClass: \"mdi:alpha-k\" },\n ],\n },\n);\n\nconst emit = defineEmits<{\n \"update:modelValue\": [key: string];\n change: [key: string];\n}>();\n\nconst finalOptions = computed(() =>\n props.options.map((opt) => ({\n key: opt.key,\n label: opt.label,\n icon: opt.iconClass ? () => h(C_Icon, { name: opt.iconClass, size: 16 }) : undefined,\n })),\n);\n\nconst handleLanguageChange = (key: string) => {\n if (key === props.modelValue) return;\n emit(\"update:modelValue\", key);\n emit(\"change\", key);\n};\n</script>\n"],"mappings":"qnBEoCA,IAAM,EAAQ,EAgBR,EAAO,EAKP,EAAe,MACnB,EAAM,QAAQ,IAAK,IAAS,CAC1B,IAAK,EAAI,IACT,MAAO,EAAI,MACX,KAAM,EAAI,cAAkB,EAAE,EAAQ,CAAE,KAAM,EAAI,UAAW,KAAM,GAAI,CAAC,CAAG,IAAA,GAC5E,EAAE,CACJ,CAEK,EAAwB,GAAgB,CACxC,IAAQ,EAAM,aAClB,EAAK,oBAAqB,EAAI,CAC9B,EAAK,SAAU,EAAI,qBA5DnB,EAYY,EAAA,EAAA,CAAA,CAXV,KAAK,QACL,QAAQ,QACP,QAAS,EAAA,MACT,MAAOA,EAAAA,WACP,SAAQ,kBAMC,CAJV,EAIU,EAAA,EAAA,CAAA,CAJD,KAAA,GAAI,CAAA,eAGL,CAFN,EAEM,MAFN,EAEM,CADJ,EAAyC,EAAA,CAAjC,KAAK,eAAgB,KAAM"}
1
+ {"version":3,"file":"C_Language2.js","names":["modelValue"],"sources":["../src/components/C_Language/index.vue","../src/components/C_Language/index.vue","../src/components/C_Language/index.vue"],"sourcesContent":["/* unplugin-vue-components disabled */<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2025-11-19\r\n * @Description: 语言切换组件\r\n * @Migration: naive-ui-components 组件库迁移版本\r\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\r\n-->\r\n<template>\r\n <NDropdown\r\n size=\"small\"\r\n trigger=\"hover\"\r\n :options=\"finalOptions\"\r\n :value=\"modelValue\"\r\n @select=\"handleLanguageChange\"\r\n >\r\n <NButton text>\r\n <div class=\"flex items-center\">\r\n <C_Icon\r\n name=\"mdi:language\"\r\n :size=\"18\"\r\n />\r\n </div>\r\n </NButton>\r\n </NDropdown>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\n import { computed, h } from 'vue'\r\n import { NDropdown, NButton } from 'naive-ui'\r\n import C_Icon from '../C_Icon/index.vue'\r\n\r\n defineOptions({ name: 'C_Language' })\r\n\r\n export interface LanguageOption {\r\n key: string\r\n label: string\r\n iconClass?: string\r\n }\r\n\r\n const props = withDefaults(\r\n defineProps<{\r\n modelValue?: string\r\n options?: LanguageOption[]\r\n }>(),\r\n {\r\n modelValue: 'zh-cn',\r\n options: () => [\r\n { key: 'zh-cn', label: '简体中文', iconClass: 'mdi:alpha-c' },\r\n { key: 'en', label: 'English', iconClass: 'mdi:alpha-u' },\r\n { key: 'ja', label: '日本語', iconClass: 'mdi:alpha-j' },\r\n { key: 'ko', label: '한국어', iconClass: 'mdi:alpha-k' },\r\n ],\r\n }\r\n )\r\n\r\n const emit = defineEmits<{\r\n 'update:modelValue': [key: string]\r\n change: [key: string]\r\n }>()\r\n\r\n const finalOptions = computed(() =>\r\n props.options.map(opt => ({\r\n key: opt.key,\r\n label: opt.label,\r\n icon: opt.iconClass\r\n ? () => h(C_Icon, { name: opt.iconClass, size: 16 })\r\n : undefined,\r\n }))\r\n )\r\n\r\n const handleLanguageChange = (key: string) => {\r\n if (key === props.modelValue) return\r\n emit('update:modelValue', key)\r\n emit('change', key)\r\n }\r\n</script>\r\n","/* unplugin-vue-components disabled */<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2025-11-19\r\n * @Description: 语言切换组件\r\n * @Migration: naive-ui-components 组件库迁移版本\r\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\r\n-->\r\n<template>\r\n <NDropdown\r\n size=\"small\"\r\n trigger=\"hover\"\r\n :options=\"finalOptions\"\r\n :value=\"modelValue\"\r\n @select=\"handleLanguageChange\"\r\n >\r\n <NButton text>\r\n <div class=\"flex items-center\">\r\n <C_Icon\r\n name=\"mdi:language\"\r\n :size=\"18\"\r\n />\r\n </div>\r\n </NButton>\r\n </NDropdown>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\n import { computed, h } from 'vue'\r\n import { NDropdown, NButton } from 'naive-ui'\r\n import C_Icon from '../C_Icon/index.vue'\r\n\r\n defineOptions({ name: 'C_Language' })\r\n\r\n export interface LanguageOption {\r\n key: string\r\n label: string\r\n iconClass?: string\r\n }\r\n\r\n const props = withDefaults(\r\n defineProps<{\r\n modelValue?: string\r\n options?: LanguageOption[]\r\n }>(),\r\n {\r\n modelValue: 'zh-cn',\r\n options: () => [\r\n { key: 'zh-cn', label: '简体中文', iconClass: 'mdi:alpha-c' },\r\n { key: 'en', label: 'English', iconClass: 'mdi:alpha-u' },\r\n { key: 'ja', label: '日本語', iconClass: 'mdi:alpha-j' },\r\n { key: 'ko', label: '한국어', iconClass: 'mdi:alpha-k' },\r\n ],\r\n }\r\n )\r\n\r\n const emit = defineEmits<{\r\n 'update:modelValue': [key: string]\r\n change: [key: string]\r\n }>()\r\n\r\n const finalOptions = computed(() =>\r\n props.options.map(opt => ({\r\n key: opt.key,\r\n label: opt.label,\r\n icon: opt.iconClass\r\n ? () => h(C_Icon, { name: opt.iconClass, size: 16 })\r\n : undefined,\r\n }))\r\n )\r\n\r\n const handleLanguageChange = (key: string) => {\r\n if (key === props.modelValue) return\r\n emit('update:modelValue', key)\r\n emit('change', key)\r\n }\r\n</script>\r\n","<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2025-11-19\r\n * @Description: 语言切换组件\r\n * @Migration: naive-ui-components 组件库迁移版本\r\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\r\n-->\r\n<template>\r\n <NDropdown\r\n size=\"small\"\r\n trigger=\"hover\"\r\n :options=\"finalOptions\"\r\n :value=\"modelValue\"\r\n @select=\"handleLanguageChange\"\r\n >\r\n <NButton text>\r\n <div class=\"flex items-center\">\r\n <C_Icon\r\n name=\"mdi:language\"\r\n :size=\"18\"\r\n />\r\n </div>\r\n </NButton>\r\n </NDropdown>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\n import { computed, h } from 'vue'\r\n import { NDropdown, NButton } from 'naive-ui'\r\n import C_Icon from '../C_Icon/index.vue'\r\n\r\n defineOptions({ name: 'C_Language' })\r\n\r\n export interface LanguageOption {\r\n key: string\r\n label: string\r\n iconClass?: string\r\n }\r\n\r\n const props = withDefaults(\r\n defineProps<{\r\n modelValue?: string\r\n options?: LanguageOption[]\r\n }>(),\r\n {\r\n modelValue: 'zh-cn',\r\n options: () => [\r\n { key: 'zh-cn', label: '简体中文', iconClass: 'mdi:alpha-c' },\r\n { key: 'en', label: 'English', iconClass: 'mdi:alpha-u' },\r\n { key: 'ja', label: '日本語', iconClass: 'mdi:alpha-j' },\r\n { key: 'ko', label: '한국어', iconClass: 'mdi:alpha-k' },\r\n ],\r\n }\r\n )\r\n\r\n const emit = defineEmits<{\r\n 'update:modelValue': [key: string]\r\n change: [key: string]\r\n }>()\r\n\r\n const finalOptions = computed(() =>\r\n props.options.map(opt => ({\r\n key: opt.key,\r\n label: opt.label,\r\n icon: opt.iconClass\r\n ? () => h(C_Icon, { name: opt.iconClass, size: 16 })\r\n : undefined,\r\n }))\r\n )\r\n\r\n const handleLanguageChange = (key: string) => {\r\n if (key === props.modelValue) return\r\n emit('update:modelValue', key)\r\n emit('change', key)\r\n }\r\n</script>\r\n"],"mappings":"qnBEuCE,IAAM,EAAQ,EAgBR,EAAO,EAKP,EAAe,MACnB,EAAM,QAAQ,IAAI,IAAQ,CACxB,IAAK,EAAI,IACT,MAAO,EAAI,MACX,KAAM,EAAI,cACA,EAAE,EAAQ,CAAE,KAAM,EAAI,UAAW,KAAM,GAAI,CAAC,CAClD,IAAA,GACL,EAAE,CACJ,CAEK,EAAwB,GAAgB,CACxC,IAAQ,EAAM,aAClB,EAAK,oBAAqB,EAAI,CAC9B,EAAK,SAAU,EAAI,qBAjErB,EAeY,EAAA,EAAA,CAAA,CAdV,KAAK,QACL,QAAQ,QACP,QAAS,EAAA,MACT,MAAOA,EAAAA,WACP,SAAQ,kBASC,CAPV,EAOU,EAAA,EAAA,CAAA,CAPD,KAAA,GAAI,CAAA,eAML,CALN,EAKM,MALN,EAKM,CAJJ,EAGE,EAAA,CAFA,KAAK,eACJ,KAAM"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"C_Map-BCJmDnJT.css","names":[],"sources":["../src/components/C_Map/index.vue?vue&type=style&index=0&scoped=a3602506&lang.scss"],"sourcesContent":["/* unplugin-vue-components disabled */.c-map[data-v-a3602506] {\n position: relative;\n width: 100%;\n min-height: 300px;\n background: #f5f5f5;\n border-radius: 4px;\n overflow: hidden;\n}\n.c-map .map-container[data-v-a3602506] {\n width: 100%;\n height: 100%;\n border-radius: 4px;\n overflow: hidden;\n}\n.c-map .map-loading[data-v-a3602506] {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n background: rgba(255, 255, 255, 0.9);\n border-radius: 4px;\n z-index: 1000;\n}"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA"}
package/dist/C_Map.css ADDED
@@ -0,0 +1,29 @@
1
+ /* unplugin-vue-components disabled */.c-map[data-v-a3602506] {
2
+ position: relative;
3
+ width: 100%;
4
+ min-height: 300px;
5
+ background: #f5f5f5;
6
+ border-radius: 4px;
7
+ overflow: hidden;
8
+ }
9
+ .c-map .map-container[data-v-a3602506] {
10
+ width: 100%;
11
+ height: 100%;
12
+ border-radius: 4px;
13
+ overflow: hidden;
14
+ }
15
+ .c-map .map-loading[data-v-a3602506] {
16
+ position: absolute;
17
+ top: 0;
18
+ left: 0;
19
+ width: 100%;
20
+ height: 100%;
21
+ display: flex;
22
+ align-items: center;
23
+ justify-content: center;
24
+ background: rgba(255, 255, 255, 0.9);
25
+ border-radius: 4px;
26
+ z-index: 1000;
27
+ }
28
+
29
+ /*# sourceMappingURL=C_Map-BCJmDnJT.css.map*/
@@ -1 +1 @@
1
- {"version":3,"file":"C_Markdown-C2uiBVSW.css","names":[],"sources":["../src/components/C_Markdown/index.vue?vue&type=style&index=0&scoped=545f0ea7&lang.scss"],"sourcesContent":["/* unplugin-vue-components disabled *//* C_Markdown 组件样式文件 */\n.c-markdown-wrapper[data-v-545f0ea7] {\n position: relative;\n}\n.c-markdown-wrapper[data-v-545f0ea7] .v-md-editor {\n border-radius: 6px;\n border: 1px solid var(--c-border);\n background-color: var(--c-bg-card);\n /* 禁用状态样式 */\n}\n.c-markdown-wrapper[data-v-545f0ea7] .v-md-editor:hover {\n border-color: var(--c-primary);\n}\n.c-markdown-wrapper[data-v-545f0ea7] .v-md-editor:focus-within {\n border-color: var(--c-primary);\n box-shadow: 0 0 0 2px var(--c-primary-opacity, rgba(24, 160, 88, 0.2));\n}\n.c-markdown-wrapper[data-v-545f0ea7] .v-md-editor.disabled {\n background-color: var(--c-bg-disabled, #fafafc);\n cursor: not-allowed;\n}\n.c-markdown-wrapper[data-v-545f0ea7] .v-md-editor.disabled .v-md-editor__editor {\n cursor: not-allowed;\n}\n.c-markdown-wrapper[data-v-545f0ea7] .v-md-editor .v-md-editor__toolbar {\n background-color: var(--c-bg-card);\n border-bottom: 1px solid var(--c-border);\n}\n.c-markdown-wrapper[data-v-545f0ea7] .v-md-editor .v-md-editor__editor-wrapper {\n background-color: var(--c-bg-card);\n}\n.c-markdown-wrapper[data-v-545f0ea7] .v-md-editor .v-md-editor__editor {\n background-color: var(--c-bg-card);\n color: var(--c-text-1);\n}\n.c-markdown-wrapper[data-v-545f0ea7] .v-md-editor .v-md-editor__editor textarea {\n color: var(--c-text-1);\n caret-color: var(--c-text-1);\n}\n.c-markdown-wrapper[data-v-545f0ea7] .v-md-editor .v-md-editor__preview-wrapper {\n background-color: var(--c-bg-card);\n}\n.c-markdown-wrapper[data-v-545f0ea7] .v-md-editor .v-md-editor__preview {\n background-color: var(--c-bg-card);\n color: var(--c-text-1);\n}\n.c-markdown-wrapper[data-v-545f0ea7] .v-md-editor .v-md-editor__toc-nav-wrapper {\n background-color: var(--c-bg-card);\n border-left: 1px solid var(--c-border);\n}\n.c-markdown-wrapper.is-dark[data-v-545f0ea7] .v-md-editor .v-md-editor__toolbar-item {\n color: #ffffff;\n}\n.c-markdown-wrapper.is-dark[data-v-545f0ea7] .v-md-editor .v-md-editor__toolbar-item:hover {\n background-color: rgba(255, 255, 255, 0.08);\n}\n.c-markdown-wrapper.is-dark[data-v-545f0ea7] .v-md-editor .v-md-editor__toolbar-item.is-active {\n background-color: rgba(255, 255, 255, 0.12);\n}\n.c-markdown-wrapper.is-dark[data-v-545f0ea7] .v-md-editor .v-md-editor__toolbar-item svg {\n fill: #ffffff;\n opacity: 0.9;\n}\n.c-markdown-wrapper.is-dark[data-v-545f0ea7] .v-md-editor .v-md-editor__toolbar-item:hover svg {\n opacity: 1;\n}\n.c-markdown-wrapper.is-dark[data-v-545f0ea7] .v-md-editor .v-md-editor__toolbar-right .v-md-editor__toolbar-item {\n background-color: transparent;\n}\n.c-markdown-wrapper.is-dark[data-v-545f0ea7] .v-md-editor .v-md-editor__toolbar-right .v-md-editor__toolbar-item svg {\n fill: #ffffff;\n}\n.c-markdown-wrapper.is-dark[data-v-545f0ea7] .v-md-editor .v-md-editor__toolbar-right .v-md-editor__toolbar-item:hover {\n background-color: rgba(255, 255, 255, 0.08);\n}\n.c-markdown-wrapper.is-dark[data-v-545f0ea7] .v-md-editor .v-md-editor__toolbar-divider {\n background-color: var(--c-border);\n}\n.c-markdown-wrapper.is-dark[data-v-545f0ea7] .v-md-editor .v-md-editor__editor::-webkit-scrollbar,\n.c-markdown-wrapper.is-dark[data-v-545f0ea7] .v-md-editor .v-md-editor__preview::-webkit-scrollbar {\n width: 8px;\n height: 8px;\n}\n.c-markdown-wrapper.is-dark[data-v-545f0ea7] .v-md-editor .v-md-editor__editor::-webkit-scrollbar-track,\n.c-markdown-wrapper.is-dark[data-v-545f0ea7] .v-md-editor .v-md-editor__preview::-webkit-scrollbar-track {\n background-color: rgba(255, 255, 255, 0.05);\n}\n.c-markdown-wrapper.is-dark[data-v-545f0ea7] .v-md-editor .v-md-editor__editor::-webkit-scrollbar-thumb,\n.c-markdown-wrapper.is-dark[data-v-545f0ea7] .v-md-editor .v-md-editor__preview::-webkit-scrollbar-thumb {\n background-color: rgba(255, 255, 255, 0.2);\n border-radius: 4px;\n}\n.c-markdown-wrapper.is-dark[data-v-545f0ea7] .v-md-editor .v-md-editor__editor::-webkit-scrollbar-thumb:hover,\n.c-markdown-wrapper.is-dark[data-v-545f0ea7] .v-md-editor .v-md-editor__preview::-webkit-scrollbar-thumb:hover {\n background-color: rgba(255, 255, 255, 0.3);\n}\n.c-markdown-wrapper .word-count[data-v-545f0ea7] {\n position: absolute;\n bottom: 8px;\n right: 12px;\n font-size: 12px;\n color: var(--c-text-4);\n background: var(--c-bg-card);\n padding: 2px 6px;\n border-radius: 4px;\n z-index: 10;\n}\n.c-markdown-wrapper .word-count.exceed[data-v-545f0ea7] {\n color: var(--c-error);\n}"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA"}
1
+ {"version":3,"file":"C_Markdown-7iBnLDtL.css","names":[],"sources":["../src/components/C_Markdown/index.vue?vue&type=style&index=0&scoped=67f4346d&lang.scss"],"sourcesContent":["/* unplugin-vue-components disabled *//* C_Markdown 组件样式文件 */\n.c-markdown-wrapper[data-v-67f4346d] {\n position: relative;\n}\n.c-markdown-wrapper[data-v-67f4346d] .v-md-editor {\n border-radius: 6px;\n border: 1px solid var(--c-border);\n background-color: var(--c-bg-card);\n /* 禁用状态样式 */\n}\n.c-markdown-wrapper[data-v-67f4346d] .v-md-editor:hover {\n border-color: var(--c-primary);\n}\n.c-markdown-wrapper[data-v-67f4346d] .v-md-editor:focus-within {\n border-color: var(--c-primary);\n box-shadow: 0 0 0 2px var(--c-primary-opacity, rgba(24, 160, 88, 0.2));\n}\n.c-markdown-wrapper[data-v-67f4346d] .v-md-editor.disabled {\n background-color: var(--c-bg-disabled, #fafafc);\n cursor: not-allowed;\n}\n.c-markdown-wrapper[data-v-67f4346d] .v-md-editor.disabled .v-md-editor__editor {\n cursor: not-allowed;\n}\n.c-markdown-wrapper[data-v-67f4346d] .v-md-editor .v-md-editor__toolbar {\n background-color: var(--c-bg-card);\n border-bottom: 1px solid var(--c-border);\n}\n.c-markdown-wrapper[data-v-67f4346d] .v-md-editor .v-md-editor__editor-wrapper {\n background-color: var(--c-bg-card);\n}\n.c-markdown-wrapper[data-v-67f4346d] .v-md-editor .v-md-editor__editor {\n background-color: var(--c-bg-card);\n color: var(--c-text-1);\n}\n.c-markdown-wrapper[data-v-67f4346d] .v-md-editor .v-md-editor__editor textarea {\n color: var(--c-text-1);\n caret-color: var(--c-text-1);\n}\n.c-markdown-wrapper[data-v-67f4346d] .v-md-editor .v-md-editor__preview-wrapper {\n background-color: var(--c-bg-card);\n}\n.c-markdown-wrapper[data-v-67f4346d] .v-md-editor .v-md-editor__preview {\n background-color: var(--c-bg-card);\n color: var(--c-text-1);\n}\n.c-markdown-wrapper[data-v-67f4346d] .v-md-editor .v-md-editor__toc-nav-wrapper {\n background-color: var(--c-bg-card);\n border-left: 1px solid var(--c-border);\n}\n.c-markdown-wrapper.is-dark[data-v-67f4346d] .v-md-editor .v-md-editor__toolbar-item {\n color: #ffffff;\n}\n.c-markdown-wrapper.is-dark[data-v-67f4346d] .v-md-editor .v-md-editor__toolbar-item:hover {\n background-color: rgba(255, 255, 255, 0.08);\n}\n.c-markdown-wrapper.is-dark[data-v-67f4346d] .v-md-editor .v-md-editor__toolbar-item.is-active {\n background-color: rgba(255, 255, 255, 0.12);\n}\n.c-markdown-wrapper.is-dark[data-v-67f4346d] .v-md-editor .v-md-editor__toolbar-item svg {\n fill: #ffffff;\n opacity: 0.9;\n}\n.c-markdown-wrapper.is-dark[data-v-67f4346d] .v-md-editor .v-md-editor__toolbar-item:hover svg {\n opacity: 1;\n}\n.c-markdown-wrapper.is-dark[data-v-67f4346d] .v-md-editor .v-md-editor__toolbar-right .v-md-editor__toolbar-item {\n background-color: transparent;\n}\n.c-markdown-wrapper.is-dark[data-v-67f4346d] .v-md-editor .v-md-editor__toolbar-right .v-md-editor__toolbar-item svg {\n fill: #ffffff;\n}\n.c-markdown-wrapper.is-dark[data-v-67f4346d] .v-md-editor .v-md-editor__toolbar-right .v-md-editor__toolbar-item:hover {\n background-color: rgba(255, 255, 255, 0.08);\n}\n.c-markdown-wrapper.is-dark[data-v-67f4346d] .v-md-editor .v-md-editor__toolbar-divider {\n background-color: var(--c-border);\n}\n.c-markdown-wrapper.is-dark[data-v-67f4346d] .v-md-editor .v-md-editor__editor::-webkit-scrollbar,\n.c-markdown-wrapper.is-dark[data-v-67f4346d] .v-md-editor .v-md-editor__preview::-webkit-scrollbar {\n width: 8px;\n height: 8px;\n}\n.c-markdown-wrapper.is-dark[data-v-67f4346d] .v-md-editor .v-md-editor__editor::-webkit-scrollbar-track,\n.c-markdown-wrapper.is-dark[data-v-67f4346d] .v-md-editor .v-md-editor__preview::-webkit-scrollbar-track {\n background-color: rgba(255, 255, 255, 0.05);\n}\n.c-markdown-wrapper.is-dark[data-v-67f4346d] .v-md-editor .v-md-editor__editor::-webkit-scrollbar-thumb,\n.c-markdown-wrapper.is-dark[data-v-67f4346d] .v-md-editor .v-md-editor__preview::-webkit-scrollbar-thumb {\n background-color: rgba(255, 255, 255, 0.2);\n border-radius: 4px;\n}\n.c-markdown-wrapper.is-dark[data-v-67f4346d] .v-md-editor .v-md-editor__editor::-webkit-scrollbar-thumb:hover,\n.c-markdown-wrapper.is-dark[data-v-67f4346d] .v-md-editor .v-md-editor__preview::-webkit-scrollbar-thumb:hover {\n background-color: rgba(255, 255, 255, 0.3);\n}\n.c-markdown-wrapper .word-count[data-v-67f4346d] {\n position: absolute;\n bottom: 8px;\n right: 12px;\n font-size: 12px;\n color: var(--c-text-4);\n background: var(--c-bg-card);\n padding: 2px 6px;\n border-radius: 4px;\n z-index: 10;\n}\n.c-markdown-wrapper .word-count.exceed[data-v-67f4346d] {\n color: var(--c-error);\n}"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"C_Markdown-BbTvdFCl.css","names":[],"sources":["../src/components/C_Markdown/index.vue?vue&type=style&index=0&scoped=67f4346d&lang.scss"],"sourcesContent":["/* unplugin-vue-components disabled *//* C_Markdown 组件样式文件 */\n.c-markdown-wrapper[data-v-67f4346d] {\n position: relative;\n}\n.c-markdown-wrapper[data-v-67f4346d] .v-md-editor {\n border-radius: 6px;\n border: 1px solid var(--c-border);\n background-color: var(--c-bg-card);\n /* 禁用状态样式 */\n}\n.c-markdown-wrapper[data-v-67f4346d] .v-md-editor:hover {\n border-color: var(--c-primary);\n}\n.c-markdown-wrapper[data-v-67f4346d] .v-md-editor:focus-within {\n border-color: var(--c-primary);\n box-shadow: 0 0 0 2px var(--c-primary-opacity, rgba(24, 160, 88, 0.2));\n}\n.c-markdown-wrapper[data-v-67f4346d] .v-md-editor.disabled {\n background-color: var(--c-bg-disabled, #fafafc);\n cursor: not-allowed;\n}\n.c-markdown-wrapper[data-v-67f4346d] .v-md-editor.disabled .v-md-editor__editor {\n cursor: not-allowed;\n}\n.c-markdown-wrapper[data-v-67f4346d] .v-md-editor .v-md-editor__toolbar {\n background-color: var(--c-bg-card);\n border-bottom: 1px solid var(--c-border);\n}\n.c-markdown-wrapper[data-v-67f4346d] .v-md-editor .v-md-editor__editor-wrapper {\n background-color: var(--c-bg-card);\n}\n.c-markdown-wrapper[data-v-67f4346d] .v-md-editor .v-md-editor__editor {\n background-color: var(--c-bg-card);\n color: var(--c-text-1);\n}\n.c-markdown-wrapper[data-v-67f4346d] .v-md-editor .v-md-editor__editor textarea {\n color: var(--c-text-1);\n caret-color: var(--c-text-1);\n}\n.c-markdown-wrapper[data-v-67f4346d] .v-md-editor .v-md-editor__preview-wrapper {\n background-color: var(--c-bg-card);\n}\n.c-markdown-wrapper[data-v-67f4346d] .v-md-editor .v-md-editor__preview {\n background-color: var(--c-bg-card);\n color: var(--c-text-1);\n}\n.c-markdown-wrapper[data-v-67f4346d] .v-md-editor .v-md-editor__toc-nav-wrapper {\n background-color: var(--c-bg-card);\n border-left: 1px solid var(--c-border);\n}\n.c-markdown-wrapper.is-dark[data-v-67f4346d] .v-md-editor .v-md-editor__toolbar-item {\n color: #ffffff;\n}\n.c-markdown-wrapper.is-dark[data-v-67f4346d] .v-md-editor .v-md-editor__toolbar-item:hover {\n background-color: rgba(255, 255, 255, 0.08);\n}\n.c-markdown-wrapper.is-dark[data-v-67f4346d] .v-md-editor .v-md-editor__toolbar-item.is-active {\n background-color: rgba(255, 255, 255, 0.12);\n}\n.c-markdown-wrapper.is-dark[data-v-67f4346d] .v-md-editor .v-md-editor__toolbar-item svg {\n fill: #ffffff;\n opacity: 0.9;\n}\n.c-markdown-wrapper.is-dark[data-v-67f4346d] .v-md-editor .v-md-editor__toolbar-item:hover svg {\n opacity: 1;\n}\n.c-markdown-wrapper.is-dark[data-v-67f4346d] .v-md-editor .v-md-editor__toolbar-right .v-md-editor__toolbar-item {\n background-color: transparent;\n}\n.c-markdown-wrapper.is-dark[data-v-67f4346d] .v-md-editor .v-md-editor__toolbar-right .v-md-editor__toolbar-item svg {\n fill: #ffffff;\n}\n.c-markdown-wrapper.is-dark[data-v-67f4346d] .v-md-editor .v-md-editor__toolbar-right .v-md-editor__toolbar-item:hover {\n background-color: rgba(255, 255, 255, 0.08);\n}\n.c-markdown-wrapper.is-dark[data-v-67f4346d] .v-md-editor .v-md-editor__toolbar-divider {\n background-color: var(--c-border);\n}\n.c-markdown-wrapper.is-dark[data-v-67f4346d] .v-md-editor .v-md-editor__editor::-webkit-scrollbar,\n.c-markdown-wrapper.is-dark[data-v-67f4346d] .v-md-editor .v-md-editor__preview::-webkit-scrollbar {\n width: 8px;\n height: 8px;\n}\n.c-markdown-wrapper.is-dark[data-v-67f4346d] .v-md-editor .v-md-editor__editor::-webkit-scrollbar-track,\n.c-markdown-wrapper.is-dark[data-v-67f4346d] .v-md-editor .v-md-editor__preview::-webkit-scrollbar-track {\n background-color: rgba(255, 255, 255, 0.05);\n}\n.c-markdown-wrapper.is-dark[data-v-67f4346d] .v-md-editor .v-md-editor__editor::-webkit-scrollbar-thumb,\n.c-markdown-wrapper.is-dark[data-v-67f4346d] .v-md-editor .v-md-editor__preview::-webkit-scrollbar-thumb {\n background-color: rgba(255, 255, 255, 0.2);\n border-radius: 4px;\n}\n.c-markdown-wrapper.is-dark[data-v-67f4346d] .v-md-editor .v-md-editor__editor::-webkit-scrollbar-thumb:hover,\n.c-markdown-wrapper.is-dark[data-v-67f4346d] .v-md-editor .v-md-editor__preview::-webkit-scrollbar-thumb:hover {\n background-color: rgba(255, 255, 255, 0.3);\n}\n.c-markdown-wrapper .word-count[data-v-67f4346d] {\n position: absolute;\n bottom: 8px;\n right: 12px;\n font-size: 12px;\n color: var(--c-text-4);\n background: var(--c-bg-card);\n padding: 2px 6px;\n border-radius: 4px;\n z-index: 10;\n}\n.c-markdown-wrapper .word-count.exceed[data-v-67f4346d] {\n color: var(--c-error);\n}"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA"}
@@ -0,0 +1,112 @@
1
+ /* unplugin-vue-components disabled *//* C_Markdown 组件样式文件 */
2
+ .c-markdown-wrapper[data-v-67f4346d] {
3
+ position: relative;
4
+ }
5
+ .c-markdown-wrapper[data-v-67f4346d] .v-md-editor {
6
+ border-radius: 6px;
7
+ border: 1px solid var(--c-border);
8
+ background-color: var(--c-bg-card);
9
+ /* 禁用状态样式 */
10
+ }
11
+ .c-markdown-wrapper[data-v-67f4346d] .v-md-editor:hover {
12
+ border-color: var(--c-primary);
13
+ }
14
+ .c-markdown-wrapper[data-v-67f4346d] .v-md-editor:focus-within {
15
+ border-color: var(--c-primary);
16
+ box-shadow: 0 0 0 2px var(--c-primary-opacity, rgba(24, 160, 88, 0.2));
17
+ }
18
+ .c-markdown-wrapper[data-v-67f4346d] .v-md-editor.disabled {
19
+ background-color: var(--c-bg-disabled, #fafafc);
20
+ cursor: not-allowed;
21
+ }
22
+ .c-markdown-wrapper[data-v-67f4346d] .v-md-editor.disabled .v-md-editor__editor {
23
+ cursor: not-allowed;
24
+ }
25
+ .c-markdown-wrapper[data-v-67f4346d] .v-md-editor .v-md-editor__toolbar {
26
+ background-color: var(--c-bg-card);
27
+ border-bottom: 1px solid var(--c-border);
28
+ }
29
+ .c-markdown-wrapper[data-v-67f4346d] .v-md-editor .v-md-editor__editor-wrapper {
30
+ background-color: var(--c-bg-card);
31
+ }
32
+ .c-markdown-wrapper[data-v-67f4346d] .v-md-editor .v-md-editor__editor {
33
+ background-color: var(--c-bg-card);
34
+ color: var(--c-text-1);
35
+ }
36
+ .c-markdown-wrapper[data-v-67f4346d] .v-md-editor .v-md-editor__editor textarea {
37
+ color: var(--c-text-1);
38
+ caret-color: var(--c-text-1);
39
+ }
40
+ .c-markdown-wrapper[data-v-67f4346d] .v-md-editor .v-md-editor__preview-wrapper {
41
+ background-color: var(--c-bg-card);
42
+ }
43
+ .c-markdown-wrapper[data-v-67f4346d] .v-md-editor .v-md-editor__preview {
44
+ background-color: var(--c-bg-card);
45
+ color: var(--c-text-1);
46
+ }
47
+ .c-markdown-wrapper[data-v-67f4346d] .v-md-editor .v-md-editor__toc-nav-wrapper {
48
+ background-color: var(--c-bg-card);
49
+ border-left: 1px solid var(--c-border);
50
+ }
51
+ .c-markdown-wrapper.is-dark[data-v-67f4346d] .v-md-editor .v-md-editor__toolbar-item {
52
+ color: #ffffff;
53
+ }
54
+ .c-markdown-wrapper.is-dark[data-v-67f4346d] .v-md-editor .v-md-editor__toolbar-item:hover {
55
+ background-color: rgba(255, 255, 255, 0.08);
56
+ }
57
+ .c-markdown-wrapper.is-dark[data-v-67f4346d] .v-md-editor .v-md-editor__toolbar-item.is-active {
58
+ background-color: rgba(255, 255, 255, 0.12);
59
+ }
60
+ .c-markdown-wrapper.is-dark[data-v-67f4346d] .v-md-editor .v-md-editor__toolbar-item svg {
61
+ fill: #ffffff;
62
+ opacity: 0.9;
63
+ }
64
+ .c-markdown-wrapper.is-dark[data-v-67f4346d] .v-md-editor .v-md-editor__toolbar-item:hover svg {
65
+ opacity: 1;
66
+ }
67
+ .c-markdown-wrapper.is-dark[data-v-67f4346d] .v-md-editor .v-md-editor__toolbar-right .v-md-editor__toolbar-item {
68
+ background-color: transparent;
69
+ }
70
+ .c-markdown-wrapper.is-dark[data-v-67f4346d] .v-md-editor .v-md-editor__toolbar-right .v-md-editor__toolbar-item svg {
71
+ fill: #ffffff;
72
+ }
73
+ .c-markdown-wrapper.is-dark[data-v-67f4346d] .v-md-editor .v-md-editor__toolbar-right .v-md-editor__toolbar-item:hover {
74
+ background-color: rgba(255, 255, 255, 0.08);
75
+ }
76
+ .c-markdown-wrapper.is-dark[data-v-67f4346d] .v-md-editor .v-md-editor__toolbar-divider {
77
+ background-color: var(--c-border);
78
+ }
79
+ .c-markdown-wrapper.is-dark[data-v-67f4346d] .v-md-editor .v-md-editor__editor::-webkit-scrollbar,
80
+ .c-markdown-wrapper.is-dark[data-v-67f4346d] .v-md-editor .v-md-editor__preview::-webkit-scrollbar {
81
+ width: 8px;
82
+ height: 8px;
83
+ }
84
+ .c-markdown-wrapper.is-dark[data-v-67f4346d] .v-md-editor .v-md-editor__editor::-webkit-scrollbar-track,
85
+ .c-markdown-wrapper.is-dark[data-v-67f4346d] .v-md-editor .v-md-editor__preview::-webkit-scrollbar-track {
86
+ background-color: rgba(255, 255, 255, 0.05);
87
+ }
88
+ .c-markdown-wrapper.is-dark[data-v-67f4346d] .v-md-editor .v-md-editor__editor::-webkit-scrollbar-thumb,
89
+ .c-markdown-wrapper.is-dark[data-v-67f4346d] .v-md-editor .v-md-editor__preview::-webkit-scrollbar-thumb {
90
+ background-color: rgba(255, 255, 255, 0.2);
91
+ border-radius: 4px;
92
+ }
93
+ .c-markdown-wrapper.is-dark[data-v-67f4346d] .v-md-editor .v-md-editor__editor::-webkit-scrollbar-thumb:hover,
94
+ .c-markdown-wrapper.is-dark[data-v-67f4346d] .v-md-editor .v-md-editor__preview::-webkit-scrollbar-thumb:hover {
95
+ background-color: rgba(255, 255, 255, 0.3);
96
+ }
97
+ .c-markdown-wrapper .word-count[data-v-67f4346d] {
98
+ position: absolute;
99
+ bottom: 8px;
100
+ right: 12px;
101
+ font-size: 12px;
102
+ color: var(--c-text-4);
103
+ background: var(--c-bg-card);
104
+ padding: 2px 6px;
105
+ border-radius: 4px;
106
+ z-index: 10;
107
+ }
108
+ .c-markdown-wrapper .word-count.exceed[data-v-67f4346d] {
109
+ color: var(--c-error);
110
+ }
111
+
112
+ /*# sourceMappingURL=C_Markdown-7iBnLDtL.css.map*/
@@ -1 +1 @@
1
- {"version":3,"file":"C_Markdown.js","names":["isDark","modelValue","height","placeholder","toolbar","mode","tocNavPosition","defaultFullscreen","autofocus","includeLevel","leftToolbar","rightToolbar"],"sources":["../src/components/C_Markdown/index.vue","../src/components/C_Markdown/index.vue","../src/components/C_Markdown/index.vue"],"sourcesContent":["/* unplugin-vue-components disabled */<!--\n * @Author: ChenYu ycyplus@gmail.com\n * @Date: 2025-06-20\n * @Description: Markdown 编辑器封装组件\n * @Migration: naive-ui-components 组件库迁移版本\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\n-->\n<template>\n <div class=\"c-markdown-wrapper\" :class=\"{ 'is-dark': isDark }\">\n <VMdEditor\n ref=\"editorRef\"\n :model-value=\"modelValue\"\n :height=\"height\"\n :placeholder=\"placeholder\"\n :toolbar=\"toolbar\"\n :mode=\"mode\"\n :upload-image-config=\"computedUploadImageConfig\"\n :toc-nav-position=\"tocNavPosition\"\n :default-fullscreen=\"defaultFullscreen\"\n :autofocus=\"autofocus\"\n :include-level=\"includeLevel\"\n :left-toolbar=\"leftToolbar\"\n :right-toolbar=\"rightToolbar\"\n :default-show-toc=\"true\"\n @update:model-value=\"handleInput\"\n @change=\"handleChange\"\n @save=\"handleSave\"\n @upload-image=\"handleUploadImage\"\n @fullscreen-change=\"handleFullscreenChange\"\n @copy-code-success=\"handleCopyCodeSuccess\"\n />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, watch, onMounted } from \"vue\";\nimport VMdEditor from \"@kangc/v-md-editor\";\n\ndefineOptions({ name: \"C_Markdown\" });\n\nexport type InsertImageFunction = (config: {\n url: string;\n desc?: string;\n width?: string | number;\n height?: string | number;\n}) => void;\n\ninterface Props {\n modelValue?: string;\n height?: string | number;\n disabled?: boolean;\n placeholder?: string;\n mode?: \"edit\" | \"editable\" | \"preview\";\n toolbar?: object;\n uploadImageConfig?: {\n accept?: string;\n multiple?: boolean;\n [key: string]: any;\n };\n tocNavPosition?: \"left\" | \"right\";\n defaultFullscreen?: boolean;\n autofocus?: boolean;\n includeLevel?: number[];\n leftToolbar?: string;\n rightToolbar?: string;\n maxLength?: number;\n showWordCount?: boolean;\n autoSave?: boolean;\n autoSaveInterval?: number;\n /** 是否为暗色主题(外部传入) */\n isDark?: boolean;\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n modelValue: \"\",\n height: \"400px\",\n disabled: false,\n placeholder: \"请输入 Markdown 内容...\",\n mode: \"editable\",\n tocNavPosition: \"right\",\n defaultFullscreen: false,\n autofocus: false,\n includeLevel: () => [1, 2, 3, 4, 5, 6],\n leftToolbar:\n \"undo redo clear | h bold italic strikethrough quote | ul ol table hr | link image code | save\",\n rightToolbar: \"preview toc sync-scroll fullscreen\",\n maxLength: 50000,\n showWordCount: true,\n autoSave: false,\n autoSaveInterval: 30000,\n isDark: false,\n});\n\ninterface Emits {\n \"update:modelValue\": [value: string];\n change: [text: string, html: string];\n save: [text: string, html: string];\n \"upload-image\": [\n event: Event,\n insertImage: InsertImageFunction,\n files: FileList,\n ];\n \"fullscreen-change\": [isFullscreen: boolean];\n \"copy-code-success\": [text: string];\n \"word-count-change\": [count: number];\n \"auto-save\": [text: string];\n \"max-length-exceeded\": [currentLength: number, maxLength: number];\n}\n\nconst emit = defineEmits<Emits>();\n\nconst editorRef = ref<any>(null);\nconst cachedHtml = ref(\"\");\n\nconst wordCount = computed(() => {\n return props.modelValue?.length || 0;\n});\n\nconst computedUploadImageConfig = computed(() => {\n const defaultConfig = {\n accept: \"image/*\",\n multiple: false,\n };\n return props.uploadImageConfig\n ? { ...defaultConfig, ...props.uploadImageConfig }\n : defaultConfig;\n});\n\nonMounted(() => {\n if (props.showWordCount && props.modelValue) {\n emit(\"word-count-change\", props.modelValue.length);\n }\n});\n\nwatch(\n () => props.modelValue,\n (newValue) => {\n if (props.showWordCount) {\n emit(\"word-count-change\", newValue?.length || 0);\n }\n },\n { immediate: true },\n);\n\nconst handleInput = (value: string) => {\n if (value.length > props.maxLength) {\n emit(\"max-length-exceeded\", value.length, props.maxLength);\n return;\n }\n emit(\"update:modelValue\", value);\n if (props.showWordCount) {\n emit(\"word-count-change\", value.length);\n }\n};\n\nconst handleChange = (text: string, html: string) => {\n cachedHtml.value = html;\n emit(\"change\", text, html);\n if (props.autoSave) {\n autoSave(text);\n }\n};\n\nconst handleSave = (text: string, html: string) => {\n emit(\"save\", text, html);\n};\n\nconst handleUploadImage = (\n event: Event,\n insertImage: InsertImageFunction,\n files: FileList,\n) => {\n emit(\"upload-image\", event, insertImage, files);\n};\n\nconst handleFullscreenChange = (isFullscreen: boolean) => {\n emit(\"fullscreen-change\", isFullscreen);\n};\n\nconst handleCopyCodeSuccess = (text: string) => {\n emit(\"copy-code-success\", text);\n};\n\nlet autoSaveTimer: ReturnType<typeof setTimeout> | null = null;\n\nconst autoSave = (text: string) => {\n if (autoSaveTimer) clearTimeout(autoSaveTimer);\n autoSaveTimer = setTimeout(() => {\n emit(\"auto-save\", text);\n }, props.autoSaveInterval);\n};\n\nconst focus = () => {\n editorRef.value?.focus();\n};\n\nconst getHtml = (): string => {\n return cachedHtml.value;\n};\n\nconst insertText = (text: string) => {\n editorRef.value?.insert((selected: string) => ({\n text: `${selected}${text}`,\n selected: text,\n }));\n};\n\ndefineExpose({\n focus,\n getHtml,\n insertText,\n wordCount,\n});\n</script>\n\n<style lang=\"scss\" scoped>\n@use \"./index.scss\";\n</style>\n","/* unplugin-vue-components disabled */<!--\n * @Author: ChenYu ycyplus@gmail.com\n * @Date: 2025-06-20\n * @Description: Markdown 编辑器封装组件\n * @Migration: naive-ui-components 组件库迁移版本\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\n-->\n<template>\n <div class=\"c-markdown-wrapper\" :class=\"{ 'is-dark': isDark }\">\n <VMdEditor\n ref=\"editorRef\"\n :model-value=\"modelValue\"\n :height=\"height\"\n :placeholder=\"placeholder\"\n :toolbar=\"toolbar\"\n :mode=\"mode\"\n :upload-image-config=\"computedUploadImageConfig\"\n :toc-nav-position=\"tocNavPosition\"\n :default-fullscreen=\"defaultFullscreen\"\n :autofocus=\"autofocus\"\n :include-level=\"includeLevel\"\n :left-toolbar=\"leftToolbar\"\n :right-toolbar=\"rightToolbar\"\n :default-show-toc=\"true\"\n @update:model-value=\"handleInput\"\n @change=\"handleChange\"\n @save=\"handleSave\"\n @upload-image=\"handleUploadImage\"\n @fullscreen-change=\"handleFullscreenChange\"\n @copy-code-success=\"handleCopyCodeSuccess\"\n />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, watch, onMounted } from \"vue\";\nimport VMdEditor from \"@kangc/v-md-editor\";\n\ndefineOptions({ name: \"C_Markdown\" });\n\nexport type InsertImageFunction = (config: {\n url: string;\n desc?: string;\n width?: string | number;\n height?: string | number;\n}) => void;\n\ninterface Props {\n modelValue?: string;\n height?: string | number;\n disabled?: boolean;\n placeholder?: string;\n mode?: \"edit\" | \"editable\" | \"preview\";\n toolbar?: object;\n uploadImageConfig?: {\n accept?: string;\n multiple?: boolean;\n [key: string]: any;\n };\n tocNavPosition?: \"left\" | \"right\";\n defaultFullscreen?: boolean;\n autofocus?: boolean;\n includeLevel?: number[];\n leftToolbar?: string;\n rightToolbar?: string;\n maxLength?: number;\n showWordCount?: boolean;\n autoSave?: boolean;\n autoSaveInterval?: number;\n /** 是否为暗色主题(外部传入) */\n isDark?: boolean;\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n modelValue: \"\",\n height: \"400px\",\n disabled: false,\n placeholder: \"请输入 Markdown 内容...\",\n mode: \"editable\",\n tocNavPosition: \"right\",\n defaultFullscreen: false,\n autofocus: false,\n includeLevel: () => [1, 2, 3, 4, 5, 6],\n leftToolbar:\n \"undo redo clear | h bold italic strikethrough quote | ul ol table hr | link image code | save\",\n rightToolbar: \"preview toc sync-scroll fullscreen\",\n maxLength: 50000,\n showWordCount: true,\n autoSave: false,\n autoSaveInterval: 30000,\n isDark: false,\n});\n\ninterface Emits {\n \"update:modelValue\": [value: string];\n change: [text: string, html: string];\n save: [text: string, html: string];\n \"upload-image\": [\n event: Event,\n insertImage: InsertImageFunction,\n files: FileList,\n ];\n \"fullscreen-change\": [isFullscreen: boolean];\n \"copy-code-success\": [text: string];\n \"word-count-change\": [count: number];\n \"auto-save\": [text: string];\n \"max-length-exceeded\": [currentLength: number, maxLength: number];\n}\n\nconst emit = defineEmits<Emits>();\n\nconst editorRef = ref<any>(null);\nconst cachedHtml = ref(\"\");\n\nconst wordCount = computed(() => {\n return props.modelValue?.length || 0;\n});\n\nconst computedUploadImageConfig = computed(() => {\n const defaultConfig = {\n accept: \"image/*\",\n multiple: false,\n };\n return props.uploadImageConfig\n ? { ...defaultConfig, ...props.uploadImageConfig }\n : defaultConfig;\n});\n\nonMounted(() => {\n if (props.showWordCount && props.modelValue) {\n emit(\"word-count-change\", props.modelValue.length);\n }\n});\n\nwatch(\n () => props.modelValue,\n (newValue) => {\n if (props.showWordCount) {\n emit(\"word-count-change\", newValue?.length || 0);\n }\n },\n { immediate: true },\n);\n\nconst handleInput = (value: string) => {\n if (value.length > props.maxLength) {\n emit(\"max-length-exceeded\", value.length, props.maxLength);\n return;\n }\n emit(\"update:modelValue\", value);\n if (props.showWordCount) {\n emit(\"word-count-change\", value.length);\n }\n};\n\nconst handleChange = (text: string, html: string) => {\n cachedHtml.value = html;\n emit(\"change\", text, html);\n if (props.autoSave) {\n autoSave(text);\n }\n};\n\nconst handleSave = (text: string, html: string) => {\n emit(\"save\", text, html);\n};\n\nconst handleUploadImage = (\n event: Event,\n insertImage: InsertImageFunction,\n files: FileList,\n) => {\n emit(\"upload-image\", event, insertImage, files);\n};\n\nconst handleFullscreenChange = (isFullscreen: boolean) => {\n emit(\"fullscreen-change\", isFullscreen);\n};\n\nconst handleCopyCodeSuccess = (text: string) => {\n emit(\"copy-code-success\", text);\n};\n\nlet autoSaveTimer: ReturnType<typeof setTimeout> | null = null;\n\nconst autoSave = (text: string) => {\n if (autoSaveTimer) clearTimeout(autoSaveTimer);\n autoSaveTimer = setTimeout(() => {\n emit(\"auto-save\", text);\n }, props.autoSaveInterval);\n};\n\nconst focus = () => {\n editorRef.value?.focus();\n};\n\nconst getHtml = (): string => {\n return cachedHtml.value;\n};\n\nconst insertText = (text: string) => {\n editorRef.value?.insert((selected: string) => ({\n text: `${selected}${text}`,\n selected: text,\n }));\n};\n\ndefineExpose({\n focus,\n getHtml,\n insertText,\n wordCount,\n});\n</script>\n\n<style lang=\"scss\" scoped>\n@use \"./index.scss\";\n</style>\n","<!--\n * @Author: ChenYu ycyplus@gmail.com\n * @Date: 2025-06-20\n * @Description: Markdown 编辑器封装组件\n * @Migration: naive-ui-components 组件库迁移版本\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\n-->\n<template>\n <div class=\"c-markdown-wrapper\" :class=\"{ 'is-dark': isDark }\">\n <VMdEditor\n ref=\"editorRef\"\n :model-value=\"modelValue\"\n :height=\"height\"\n :placeholder=\"placeholder\"\n :toolbar=\"toolbar\"\n :mode=\"mode\"\n :upload-image-config=\"computedUploadImageConfig\"\n :toc-nav-position=\"tocNavPosition\"\n :default-fullscreen=\"defaultFullscreen\"\n :autofocus=\"autofocus\"\n :include-level=\"includeLevel\"\n :left-toolbar=\"leftToolbar\"\n :right-toolbar=\"rightToolbar\"\n :default-show-toc=\"true\"\n @update:model-value=\"handleInput\"\n @change=\"handleChange\"\n @save=\"handleSave\"\n @upload-image=\"handleUploadImage\"\n @fullscreen-change=\"handleFullscreenChange\"\n @copy-code-success=\"handleCopyCodeSuccess\"\n />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, watch, onMounted } from \"vue\";\nimport VMdEditor from \"@kangc/v-md-editor\";\n\ndefineOptions({ name: \"C_Markdown\" });\n\nexport type InsertImageFunction = (config: {\n url: string;\n desc?: string;\n width?: string | number;\n height?: string | number;\n}) => void;\n\ninterface Props {\n modelValue?: string;\n height?: string | number;\n disabled?: boolean;\n placeholder?: string;\n mode?: \"edit\" | \"editable\" | \"preview\";\n toolbar?: object;\n uploadImageConfig?: {\n accept?: string;\n multiple?: boolean;\n [key: string]: any;\n };\n tocNavPosition?: \"left\" | \"right\";\n defaultFullscreen?: boolean;\n autofocus?: boolean;\n includeLevel?: number[];\n leftToolbar?: string;\n rightToolbar?: string;\n maxLength?: number;\n showWordCount?: boolean;\n autoSave?: boolean;\n autoSaveInterval?: number;\n /** 是否为暗色主题(外部传入) */\n isDark?: boolean;\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n modelValue: \"\",\n height: \"400px\",\n disabled: false,\n placeholder: \"请输入 Markdown 内容...\",\n mode: \"editable\",\n tocNavPosition: \"right\",\n defaultFullscreen: false,\n autofocus: false,\n includeLevel: () => [1, 2, 3, 4, 5, 6],\n leftToolbar:\n \"undo redo clear | h bold italic strikethrough quote | ul ol table hr | link image code | save\",\n rightToolbar: \"preview toc sync-scroll fullscreen\",\n maxLength: 50000,\n showWordCount: true,\n autoSave: false,\n autoSaveInterval: 30000,\n isDark: false,\n});\n\ninterface Emits {\n \"update:modelValue\": [value: string];\n change: [text: string, html: string];\n save: [text: string, html: string];\n \"upload-image\": [\n event: Event,\n insertImage: InsertImageFunction,\n files: FileList,\n ];\n \"fullscreen-change\": [isFullscreen: boolean];\n \"copy-code-success\": [text: string];\n \"word-count-change\": [count: number];\n \"auto-save\": [text: string];\n \"max-length-exceeded\": [currentLength: number, maxLength: number];\n}\n\nconst emit = defineEmits<Emits>();\n\nconst editorRef = ref<any>(null);\nconst cachedHtml = ref(\"\");\n\nconst wordCount = computed(() => {\n return props.modelValue?.length || 0;\n});\n\nconst computedUploadImageConfig = computed(() => {\n const defaultConfig = {\n accept: \"image/*\",\n multiple: false,\n };\n return props.uploadImageConfig\n ? { ...defaultConfig, ...props.uploadImageConfig }\n : defaultConfig;\n});\n\nonMounted(() => {\n if (props.showWordCount && props.modelValue) {\n emit(\"word-count-change\", props.modelValue.length);\n }\n});\n\nwatch(\n () => props.modelValue,\n (newValue) => {\n if (props.showWordCount) {\n emit(\"word-count-change\", newValue?.length || 0);\n }\n },\n { immediate: true },\n);\n\nconst handleInput = (value: string) => {\n if (value.length > props.maxLength) {\n emit(\"max-length-exceeded\", value.length, props.maxLength);\n return;\n }\n emit(\"update:modelValue\", value);\n if (props.showWordCount) {\n emit(\"word-count-change\", value.length);\n }\n};\n\nconst handleChange = (text: string, html: string) => {\n cachedHtml.value = html;\n emit(\"change\", text, html);\n if (props.autoSave) {\n autoSave(text);\n }\n};\n\nconst handleSave = (text: string, html: string) => {\n emit(\"save\", text, html);\n};\n\nconst handleUploadImage = (\n event: Event,\n insertImage: InsertImageFunction,\n files: FileList,\n) => {\n emit(\"upload-image\", event, insertImage, files);\n};\n\nconst handleFullscreenChange = (isFullscreen: boolean) => {\n emit(\"fullscreen-change\", isFullscreen);\n};\n\nconst handleCopyCodeSuccess = (text: string) => {\n emit(\"copy-code-success\", text);\n};\n\nlet autoSaveTimer: ReturnType<typeof setTimeout> | null = null;\n\nconst autoSave = (text: string) => {\n if (autoSaveTimer) clearTimeout(autoSaveTimer);\n autoSaveTimer = setTimeout(() => {\n emit(\"auto-save\", text);\n }, props.autoSaveInterval);\n};\n\nconst focus = () => {\n editorRef.value?.focus();\n};\n\nconst getHtml = (): string => {\n return cachedHtml.value;\n};\n\nconst insertText = (text: string) => {\n editorRef.value?.insert((selected: string) => ({\n text: `${selected}${text}`,\n selected: text,\n }));\n};\n\ndefineExpose({\n focus,\n getHtml,\n insertText,\n wordCount,\n});\n</script>\n\n<style lang=\"scss\" scoped>\n@use \"./index.scss\";\n</style>\n"],"mappings":"8hCEyEA,IAAM,EAAQ,EAoCR,EAAO,EAEP,GAAA,EAAA,EAAA,KAAqB,KAAK,CAC1B,GAAA,EAAA,EAAA,KAAiB,GAAG,CAEpB,GAAA,EAAA,EAAA,cACG,EAAM,YAAY,QAAU,EACnC,CAEI,GAAA,EAAA,EAAA,cAA2C,CAC/C,IAAM,EAAgB,CACpB,OAAQ,UACR,SAAU,GACX,CACD,OAAO,EAAM,kBACT,CAAE,GAAG,EAAe,GAAG,EAAM,kBAAkB,CAC/C,GACJ,EAEF,EAAA,EAAA,eAAgB,CACV,EAAM,eAAiB,EAAM,YAC/B,EAAK,oBAAqB,EAAM,WAAW,OAAO,EAEpD,EAEF,EAAA,EAAA,WACQ,EAAM,WACX,GAAa,CACR,EAAM,eACR,EAAK,oBAAqB,GAAU,QAAU,EAAE,EAGpD,CAAE,UAAW,GAAM,CACpB,CAED,IAAM,EAAe,GAAkB,CACrC,GAAI,EAAM,OAAS,EAAM,UAAW,CAClC,EAAK,sBAAuB,EAAM,OAAQ,EAAM,UAAU,CAC1D,OAEF,EAAK,oBAAqB,EAAM,CAC5B,EAAM,eACR,EAAK,oBAAqB,EAAM,OAAO,EAIrC,GAAgB,EAAc,IAAiB,CACnD,EAAW,MAAQ,EACnB,EAAK,SAAU,EAAM,EAAK,CACtB,EAAM,UACR,EAAS,EAAK,EAIZ,GAAc,EAAc,IAAiB,CACjD,EAAK,OAAQ,EAAM,EAAK,EAGpB,GACJ,EACA,EACA,IACG,CACH,EAAK,eAAgB,EAAO,EAAa,EAAM,EAG3C,EAA0B,GAA0B,CACxD,EAAK,oBAAqB,EAAa,EAGnC,EAAyB,GAAiB,CAC9C,EAAK,oBAAqB,EAAK,EAG7B,EAAsD,KAEpD,EAAY,GAAiB,CAC7B,GAAe,aAAa,EAAc,CAC9C,EAAgB,eAAiB,CAC/B,EAAK,YAAa,EAAK,EACtB,EAAM,iBAAiB,SAkB5B,EAAa,CACX,UAhBkB,CAClB,EAAU,OAAO,OAAO,EAgBxB,YAZO,EAAW,MAalB,WAVkB,GAAiB,CACnC,EAAU,OAAO,OAAQ,IAAsB,CAC7C,KAAM,GAAG,IAAW,IACpB,SAAU,EACX,EAAE,EAOH,YACD,CAAC,oDArLM,MAAA,CAvBD,OAAA,EAAA,EAAA,gBAAK,CAAC,qBAAoB,CAAA,UAAsBA,EAAAA,OAAM,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,EAAA,cAAA,EAAA,EAAA,OAsBvD,EAAA,QAAA,CAAA,SApBI,YAAJ,IAAI,EACH,cAAaC,EAAAA,WACb,OAAQC,EAAAA,OACR,YAAaC,EAAAA,YACb,QAASC,EAAAA,QACT,KAAMC,EAAAA,KACN,sBAAqB,EAAA,MACrB,mBAAkBC,EAAAA,eAClB,qBAAoBC,EAAAA,kBACpB,UAAWC,EAAAA,UACX,gBAAeC,EAAAA,aACf,eAAcC,EAAAA,YACd,gBAAeC,EAAAA,aACf,mBAAkB,GAClB,sBAAoB,EACpB,SAAQ,EACR,OAAM,EACN,cAAc,EACd,mBAAmB,EACnB,kBAAmB"}
1
+ {"version":3,"file":"C_Markdown.js","names":["isDark","modelValue","height","placeholder","toolbar","mode","tocNavPosition","defaultFullscreen","autofocus","includeLevel","leftToolbar","rightToolbar"],"sources":["../src/components/C_Markdown/index.vue","../src/components/C_Markdown/index.vue","../src/components/C_Markdown/index.vue"],"sourcesContent":["/* unplugin-vue-components disabled */<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2025-06-20\r\n * @Description: Markdown 编辑器封装组件\r\n * @Migration: naive-ui-components 组件库迁移版本\r\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\r\n-->\r\n<template>\r\n <div\r\n class=\"c-markdown-wrapper\"\r\n :class=\"{ 'is-dark': isDark }\"\r\n >\r\n <VMdEditor\r\n ref=\"editorRef\"\r\n :model-value=\"modelValue\"\r\n :height=\"height\"\r\n :placeholder=\"placeholder\"\r\n :toolbar=\"toolbar\"\r\n :mode=\"mode\"\r\n :upload-image-config=\"computedUploadImageConfig\"\r\n :toc-nav-position=\"tocNavPosition\"\r\n :default-fullscreen=\"defaultFullscreen\"\r\n :autofocus=\"autofocus\"\r\n :include-level=\"includeLevel\"\r\n :left-toolbar=\"leftToolbar\"\r\n :right-toolbar=\"rightToolbar\"\r\n :default-show-toc=\"true\"\r\n @update:model-value=\"handleInput\"\r\n @change=\"handleChange\"\r\n @save=\"handleSave\"\r\n @upload-image=\"handleUploadImage\"\r\n @fullscreen-change=\"handleFullscreenChange\"\r\n @copy-code-success=\"handleCopyCodeSuccess\"\r\n />\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\n import { ref, computed, watch, onMounted } from 'vue'\r\n import VMdEditor from '@kangc/v-md-editor'\r\n\r\n defineOptions({ name: 'C_Markdown' })\r\n\r\n export type InsertImageFunction = (config: {\r\n url: string\r\n desc?: string\r\n width?: string | number\r\n height?: string | number\r\n }) => void\r\n\r\n interface Props {\r\n modelValue?: string\r\n height?: string | number\r\n disabled?: boolean\r\n placeholder?: string\r\n mode?: 'edit' | 'editable' | 'preview'\r\n toolbar?: object\r\n uploadImageConfig?: {\r\n accept?: string\r\n multiple?: boolean\r\n [key: string]: any\r\n }\r\n tocNavPosition?: 'left' | 'right'\r\n defaultFullscreen?: boolean\r\n autofocus?: boolean\r\n includeLevel?: number[]\r\n leftToolbar?: string\r\n rightToolbar?: string\r\n maxLength?: number\r\n showWordCount?: boolean\r\n autoSave?: boolean\r\n autoSaveInterval?: number\r\n /** 是否为暗色主题(外部传入) */\r\n isDark?: boolean\r\n }\r\n\r\n const props = withDefaults(defineProps<Props>(), {\r\n modelValue: '',\r\n height: '400px',\r\n disabled: false,\r\n placeholder: '请输入 Markdown 内容...',\r\n mode: 'editable',\r\n tocNavPosition: 'right',\r\n defaultFullscreen: false,\r\n autofocus: false,\r\n includeLevel: () => [1, 2, 3, 4, 5, 6],\r\n leftToolbar:\r\n 'undo redo clear | h bold italic strikethrough quote | ul ol table hr | link image code | save',\r\n rightToolbar: 'preview toc sync-scroll fullscreen',\r\n maxLength: 50000,\r\n showWordCount: true,\r\n autoSave: false,\r\n autoSaveInterval: 30000,\r\n isDark: false,\r\n })\r\n\r\n interface Emits {\r\n 'update:modelValue': [value: string]\r\n change: [text: string, html: string]\r\n save: [text: string, html: string]\r\n 'upload-image': [\r\n event: Event,\r\n insertImage: InsertImageFunction,\r\n files: FileList,\r\n ]\r\n 'fullscreen-change': [isFullscreen: boolean]\r\n 'copy-code-success': [text: string]\r\n 'word-count-change': [count: number]\r\n 'auto-save': [text: string]\r\n 'max-length-exceeded': [currentLength: number, maxLength: number]\r\n }\r\n\r\n const emit = defineEmits<Emits>()\r\n\r\n const editorRef = ref<any>(null)\r\n const cachedHtml = ref('')\r\n\r\n const wordCount = computed(() => {\r\n return props.modelValue?.length || 0\r\n })\r\n\r\n const computedUploadImageConfig = computed(() => {\r\n const defaultConfig = {\r\n accept: 'image/*',\r\n multiple: false,\r\n }\r\n return props.uploadImageConfig\r\n ? { ...defaultConfig, ...props.uploadImageConfig }\r\n : defaultConfig\r\n })\r\n\r\n onMounted(() => {\r\n if (props.showWordCount && props.modelValue) {\r\n emit('word-count-change', props.modelValue.length)\r\n }\r\n })\r\n\r\n watch(\r\n () => props.modelValue,\r\n newValue => {\r\n if (props.showWordCount) {\r\n emit('word-count-change', newValue?.length || 0)\r\n }\r\n },\r\n { immediate: true }\r\n )\r\n\r\n const handleInput = (value: string) => {\r\n if (value.length > props.maxLength) {\r\n emit('max-length-exceeded', value.length, props.maxLength)\r\n return\r\n }\r\n emit('update:modelValue', value)\r\n if (props.showWordCount) {\r\n emit('word-count-change', value.length)\r\n }\r\n }\r\n\r\n const handleChange = (text: string, html: string) => {\r\n cachedHtml.value = html\r\n emit('change', text, html)\r\n if (props.autoSave) {\r\n autoSave(text)\r\n }\r\n }\r\n\r\n const handleSave = (text: string, html: string) => {\r\n emit('save', text, html)\r\n }\r\n\r\n const handleUploadImage = (\r\n event: Event,\r\n insertImage: InsertImageFunction,\r\n files: FileList\r\n ) => {\r\n emit('upload-image', event, insertImage, files)\r\n }\r\n\r\n const handleFullscreenChange = (isFullscreen: boolean) => {\r\n emit('fullscreen-change', isFullscreen)\r\n }\r\n\r\n const handleCopyCodeSuccess = (text: string) => {\r\n emit('copy-code-success', text)\r\n }\r\n\r\n let autoSaveTimer: ReturnType<typeof setTimeout> | null = null\r\n\r\n const autoSave = (text: string) => {\r\n if (autoSaveTimer) clearTimeout(autoSaveTimer)\r\n autoSaveTimer = setTimeout(() => {\r\n emit('auto-save', text)\r\n }, props.autoSaveInterval)\r\n }\r\n\r\n const focus = () => {\r\n editorRef.value?.focus()\r\n }\r\n\r\n const getHtml = (): string => {\r\n return cachedHtml.value\r\n }\r\n\r\n const insertText = (text: string) => {\r\n editorRef.value?.insert((selected: string) => ({\r\n text: `${selected}${text}`,\r\n selected: text,\r\n }))\r\n }\r\n\r\n defineExpose({\r\n focus,\r\n getHtml,\r\n insertText,\r\n wordCount,\r\n })\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n @use './index.scss';\r\n</style>\r\n","/* unplugin-vue-components disabled */<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2025-06-20\r\n * @Description: Markdown 编辑器封装组件\r\n * @Migration: naive-ui-components 组件库迁移版本\r\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\r\n-->\r\n<template>\r\n <div\r\n class=\"c-markdown-wrapper\"\r\n :class=\"{ 'is-dark': isDark }\"\r\n >\r\n <VMdEditor\r\n ref=\"editorRef\"\r\n :model-value=\"modelValue\"\r\n :height=\"height\"\r\n :placeholder=\"placeholder\"\r\n :toolbar=\"toolbar\"\r\n :mode=\"mode\"\r\n :upload-image-config=\"computedUploadImageConfig\"\r\n :toc-nav-position=\"tocNavPosition\"\r\n :default-fullscreen=\"defaultFullscreen\"\r\n :autofocus=\"autofocus\"\r\n :include-level=\"includeLevel\"\r\n :left-toolbar=\"leftToolbar\"\r\n :right-toolbar=\"rightToolbar\"\r\n :default-show-toc=\"true\"\r\n @update:model-value=\"handleInput\"\r\n @change=\"handleChange\"\r\n @save=\"handleSave\"\r\n @upload-image=\"handleUploadImage\"\r\n @fullscreen-change=\"handleFullscreenChange\"\r\n @copy-code-success=\"handleCopyCodeSuccess\"\r\n />\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\n import { ref, computed, watch, onMounted } from 'vue'\r\n import VMdEditor from '@kangc/v-md-editor'\r\n\r\n defineOptions({ name: 'C_Markdown' })\r\n\r\n export type InsertImageFunction = (config: {\r\n url: string\r\n desc?: string\r\n width?: string | number\r\n height?: string | number\r\n }) => void\r\n\r\n interface Props {\r\n modelValue?: string\r\n height?: string | number\r\n disabled?: boolean\r\n placeholder?: string\r\n mode?: 'edit' | 'editable' | 'preview'\r\n toolbar?: object\r\n uploadImageConfig?: {\r\n accept?: string\r\n multiple?: boolean\r\n [key: string]: any\r\n }\r\n tocNavPosition?: 'left' | 'right'\r\n defaultFullscreen?: boolean\r\n autofocus?: boolean\r\n includeLevel?: number[]\r\n leftToolbar?: string\r\n rightToolbar?: string\r\n maxLength?: number\r\n showWordCount?: boolean\r\n autoSave?: boolean\r\n autoSaveInterval?: number\r\n /** 是否为暗色主题(外部传入) */\r\n isDark?: boolean\r\n }\r\n\r\n const props = withDefaults(defineProps<Props>(), {\r\n modelValue: '',\r\n height: '400px',\r\n disabled: false,\r\n placeholder: '请输入 Markdown 内容...',\r\n mode: 'editable',\r\n tocNavPosition: 'right',\r\n defaultFullscreen: false,\r\n autofocus: false,\r\n includeLevel: () => [1, 2, 3, 4, 5, 6],\r\n leftToolbar:\r\n 'undo redo clear | h bold italic strikethrough quote | ul ol table hr | link image code | save',\r\n rightToolbar: 'preview toc sync-scroll fullscreen',\r\n maxLength: 50000,\r\n showWordCount: true,\r\n autoSave: false,\r\n autoSaveInterval: 30000,\r\n isDark: false,\r\n })\r\n\r\n interface Emits {\r\n 'update:modelValue': [value: string]\r\n change: [text: string, html: string]\r\n save: [text: string, html: string]\r\n 'upload-image': [\r\n event: Event,\r\n insertImage: InsertImageFunction,\r\n files: FileList,\r\n ]\r\n 'fullscreen-change': [isFullscreen: boolean]\r\n 'copy-code-success': [text: string]\r\n 'word-count-change': [count: number]\r\n 'auto-save': [text: string]\r\n 'max-length-exceeded': [currentLength: number, maxLength: number]\r\n }\r\n\r\n const emit = defineEmits<Emits>()\r\n\r\n const editorRef = ref<any>(null)\r\n const cachedHtml = ref('')\r\n\r\n const wordCount = computed(() => {\r\n return props.modelValue?.length || 0\r\n })\r\n\r\n const computedUploadImageConfig = computed(() => {\r\n const defaultConfig = {\r\n accept: 'image/*',\r\n multiple: false,\r\n }\r\n return props.uploadImageConfig\r\n ? { ...defaultConfig, ...props.uploadImageConfig }\r\n : defaultConfig\r\n })\r\n\r\n onMounted(() => {\r\n if (props.showWordCount && props.modelValue) {\r\n emit('word-count-change', props.modelValue.length)\r\n }\r\n })\r\n\r\n watch(\r\n () => props.modelValue,\r\n newValue => {\r\n if (props.showWordCount) {\r\n emit('word-count-change', newValue?.length || 0)\r\n }\r\n },\r\n { immediate: true }\r\n )\r\n\r\n const handleInput = (value: string) => {\r\n if (value.length > props.maxLength) {\r\n emit('max-length-exceeded', value.length, props.maxLength)\r\n return\r\n }\r\n emit('update:modelValue', value)\r\n if (props.showWordCount) {\r\n emit('word-count-change', value.length)\r\n }\r\n }\r\n\r\n const handleChange = (text: string, html: string) => {\r\n cachedHtml.value = html\r\n emit('change', text, html)\r\n if (props.autoSave) {\r\n autoSave(text)\r\n }\r\n }\r\n\r\n const handleSave = (text: string, html: string) => {\r\n emit('save', text, html)\r\n }\r\n\r\n const handleUploadImage = (\r\n event: Event,\r\n insertImage: InsertImageFunction,\r\n files: FileList\r\n ) => {\r\n emit('upload-image', event, insertImage, files)\r\n }\r\n\r\n const handleFullscreenChange = (isFullscreen: boolean) => {\r\n emit('fullscreen-change', isFullscreen)\r\n }\r\n\r\n const handleCopyCodeSuccess = (text: string) => {\r\n emit('copy-code-success', text)\r\n }\r\n\r\n let autoSaveTimer: ReturnType<typeof setTimeout> | null = null\r\n\r\n const autoSave = (text: string) => {\r\n if (autoSaveTimer) clearTimeout(autoSaveTimer)\r\n autoSaveTimer = setTimeout(() => {\r\n emit('auto-save', text)\r\n }, props.autoSaveInterval)\r\n }\r\n\r\n const focus = () => {\r\n editorRef.value?.focus()\r\n }\r\n\r\n const getHtml = (): string => {\r\n return cachedHtml.value\r\n }\r\n\r\n const insertText = (text: string) => {\r\n editorRef.value?.insert((selected: string) => ({\r\n text: `${selected}${text}`,\r\n selected: text,\r\n }))\r\n }\r\n\r\n defineExpose({\r\n focus,\r\n getHtml,\r\n insertText,\r\n wordCount,\r\n })\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n @use './index.scss';\r\n</style>\r\n","<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2025-06-20\r\n * @Description: Markdown 编辑器封装组件\r\n * @Migration: naive-ui-components 组件库迁移版本\r\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\r\n-->\r\n<template>\r\n <div\r\n class=\"c-markdown-wrapper\"\r\n :class=\"{ 'is-dark': isDark }\"\r\n >\r\n <VMdEditor\r\n ref=\"editorRef\"\r\n :model-value=\"modelValue\"\r\n :height=\"height\"\r\n :placeholder=\"placeholder\"\r\n :toolbar=\"toolbar\"\r\n :mode=\"mode\"\r\n :upload-image-config=\"computedUploadImageConfig\"\r\n :toc-nav-position=\"tocNavPosition\"\r\n :default-fullscreen=\"defaultFullscreen\"\r\n :autofocus=\"autofocus\"\r\n :include-level=\"includeLevel\"\r\n :left-toolbar=\"leftToolbar\"\r\n :right-toolbar=\"rightToolbar\"\r\n :default-show-toc=\"true\"\r\n @update:model-value=\"handleInput\"\r\n @change=\"handleChange\"\r\n @save=\"handleSave\"\r\n @upload-image=\"handleUploadImage\"\r\n @fullscreen-change=\"handleFullscreenChange\"\r\n @copy-code-success=\"handleCopyCodeSuccess\"\r\n />\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\n import { ref, computed, watch, onMounted } from 'vue'\r\n import VMdEditor from '@kangc/v-md-editor'\r\n\r\n defineOptions({ name: 'C_Markdown' })\r\n\r\n export type InsertImageFunction = (config: {\r\n url: string\r\n desc?: string\r\n width?: string | number\r\n height?: string | number\r\n }) => void\r\n\r\n interface Props {\r\n modelValue?: string\r\n height?: string | number\r\n disabled?: boolean\r\n placeholder?: string\r\n mode?: 'edit' | 'editable' | 'preview'\r\n toolbar?: object\r\n uploadImageConfig?: {\r\n accept?: string\r\n multiple?: boolean\r\n [key: string]: any\r\n }\r\n tocNavPosition?: 'left' | 'right'\r\n defaultFullscreen?: boolean\r\n autofocus?: boolean\r\n includeLevel?: number[]\r\n leftToolbar?: string\r\n rightToolbar?: string\r\n maxLength?: number\r\n showWordCount?: boolean\r\n autoSave?: boolean\r\n autoSaveInterval?: number\r\n /** 是否为暗色主题(外部传入) */\r\n isDark?: boolean\r\n }\r\n\r\n const props = withDefaults(defineProps<Props>(), {\r\n modelValue: '',\r\n height: '400px',\r\n disabled: false,\r\n placeholder: '请输入 Markdown 内容...',\r\n mode: 'editable',\r\n tocNavPosition: 'right',\r\n defaultFullscreen: false,\r\n autofocus: false,\r\n includeLevel: () => [1, 2, 3, 4, 5, 6],\r\n leftToolbar:\r\n 'undo redo clear | h bold italic strikethrough quote | ul ol table hr | link image code | save',\r\n rightToolbar: 'preview toc sync-scroll fullscreen',\r\n maxLength: 50000,\r\n showWordCount: true,\r\n autoSave: false,\r\n autoSaveInterval: 30000,\r\n isDark: false,\r\n })\r\n\r\n interface Emits {\r\n 'update:modelValue': [value: string]\r\n change: [text: string, html: string]\r\n save: [text: string, html: string]\r\n 'upload-image': [\r\n event: Event,\r\n insertImage: InsertImageFunction,\r\n files: FileList,\r\n ]\r\n 'fullscreen-change': [isFullscreen: boolean]\r\n 'copy-code-success': [text: string]\r\n 'word-count-change': [count: number]\r\n 'auto-save': [text: string]\r\n 'max-length-exceeded': [currentLength: number, maxLength: number]\r\n }\r\n\r\n const emit = defineEmits<Emits>()\r\n\r\n const editorRef = ref<any>(null)\r\n const cachedHtml = ref('')\r\n\r\n const wordCount = computed(() => {\r\n return props.modelValue?.length || 0\r\n })\r\n\r\n const computedUploadImageConfig = computed(() => {\r\n const defaultConfig = {\r\n accept: 'image/*',\r\n multiple: false,\r\n }\r\n return props.uploadImageConfig\r\n ? { ...defaultConfig, ...props.uploadImageConfig }\r\n : defaultConfig\r\n })\r\n\r\n onMounted(() => {\r\n if (props.showWordCount && props.modelValue) {\r\n emit('word-count-change', props.modelValue.length)\r\n }\r\n })\r\n\r\n watch(\r\n () => props.modelValue,\r\n newValue => {\r\n if (props.showWordCount) {\r\n emit('word-count-change', newValue?.length || 0)\r\n }\r\n },\r\n { immediate: true }\r\n )\r\n\r\n const handleInput = (value: string) => {\r\n if (value.length > props.maxLength) {\r\n emit('max-length-exceeded', value.length, props.maxLength)\r\n return\r\n }\r\n emit('update:modelValue', value)\r\n if (props.showWordCount) {\r\n emit('word-count-change', value.length)\r\n }\r\n }\r\n\r\n const handleChange = (text: string, html: string) => {\r\n cachedHtml.value = html\r\n emit('change', text, html)\r\n if (props.autoSave) {\r\n autoSave(text)\r\n }\r\n }\r\n\r\n const handleSave = (text: string, html: string) => {\r\n emit('save', text, html)\r\n }\r\n\r\n const handleUploadImage = (\r\n event: Event,\r\n insertImage: InsertImageFunction,\r\n files: FileList\r\n ) => {\r\n emit('upload-image', event, insertImage, files)\r\n }\r\n\r\n const handleFullscreenChange = (isFullscreen: boolean) => {\r\n emit('fullscreen-change', isFullscreen)\r\n }\r\n\r\n const handleCopyCodeSuccess = (text: string) => {\r\n emit('copy-code-success', text)\r\n }\r\n\r\n let autoSaveTimer: ReturnType<typeof setTimeout> | null = null\r\n\r\n const autoSave = (text: string) => {\r\n if (autoSaveTimer) clearTimeout(autoSaveTimer)\r\n autoSaveTimer = setTimeout(() => {\r\n emit('auto-save', text)\r\n }, props.autoSaveInterval)\r\n }\r\n\r\n const focus = () => {\r\n editorRef.value?.focus()\r\n }\r\n\r\n const getHtml = (): string => {\r\n return cachedHtml.value\r\n }\r\n\r\n const insertText = (text: string) => {\r\n editorRef.value?.insert((selected: string) => ({\r\n text: `${selected}${text}`,\r\n selected: text,\r\n }))\r\n }\r\n\r\n defineExpose({\r\n focus,\r\n getHtml,\r\n insertText,\r\n wordCount,\r\n })\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n @use './index.scss';\r\n</style>\r\n"],"mappings":"8hCE4EE,IAAM,EAAQ,EAoCR,EAAO,EAEP,GAAA,EAAA,EAAA,KAAqB,KAAK,CAC1B,GAAA,EAAA,EAAA,KAAiB,GAAG,CAEpB,GAAA,EAAA,EAAA,cACG,EAAM,YAAY,QAAU,EACnC,CAEI,GAAA,EAAA,EAAA,cAA2C,CAC/C,IAAM,EAAgB,CACpB,OAAQ,UACR,SAAU,GACX,CACD,OAAO,EAAM,kBACT,CAAE,GAAG,EAAe,GAAG,EAAM,kBAAmB,CAChD,GACJ,EAEF,EAAA,EAAA,eAAgB,CACV,EAAM,eAAiB,EAAM,YAC/B,EAAK,oBAAqB,EAAM,WAAW,OAAO,EAEpD,EAEF,EAAA,EAAA,WACQ,EAAM,WACZ,GAAY,CACN,EAAM,eACR,EAAK,oBAAqB,GAAU,QAAU,EAAE,EAGpD,CAAE,UAAW,GAAM,CACpB,CAED,IAAM,EAAe,GAAkB,CACrC,GAAI,EAAM,OAAS,EAAM,UAAW,CAClC,EAAK,sBAAuB,EAAM,OAAQ,EAAM,UAAU,CAC1D,OAEF,EAAK,oBAAqB,EAAM,CAC5B,EAAM,eACR,EAAK,oBAAqB,EAAM,OAAO,EAIrC,GAAgB,EAAc,IAAiB,CACnD,EAAW,MAAQ,EACnB,EAAK,SAAU,EAAM,EAAK,CACtB,EAAM,UACR,EAAS,EAAK,EAIZ,GAAc,EAAc,IAAiB,CACjD,EAAK,OAAQ,EAAM,EAAK,EAGpB,GACJ,EACA,EACA,IACG,CACH,EAAK,eAAgB,EAAO,EAAa,EAAM,EAG3C,EAA0B,GAA0B,CACxD,EAAK,oBAAqB,EAAa,EAGnC,EAAyB,GAAiB,CAC9C,EAAK,oBAAqB,EAAK,EAG7B,EAAsD,KAEpD,EAAY,GAAiB,CAC7B,GAAe,aAAa,EAAc,CAC9C,EAAgB,eAAiB,CAC/B,EAAK,YAAa,EAAK,EACtB,EAAM,iBAAiB,SAkB5B,EAAa,CACX,UAhBkB,CAClB,EAAU,OAAO,OAAO,EAgBxB,YAZO,EAAW,MAalB,WAVkB,GAAiB,CACnC,EAAU,OAAO,OAAQ,IAAsB,CAC7C,KAAM,GAAG,IAAW,IACpB,SAAU,EACX,EAAE,EAOH,YACD,CAAC,oDArLI,MAAA,CAzBJ,OAAA,EAAA,EAAA,gBAAK,CAAC,qBAAoB,CAAA,UACLA,EAAAA,OAAM,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,EAAA,cAAA,EAAA,EAAA,OAuBzB,EAAA,QAAA,CAAA,SApBI,YAAJ,IAAI,EACH,cAAaC,EAAAA,WACb,OAAQC,EAAAA,OACR,YAAaC,EAAAA,YACb,QAASC,EAAAA,QACT,KAAMC,EAAAA,KACN,sBAAqB,EAAA,MACrB,mBAAkBC,EAAAA,eAClB,qBAAoBC,EAAAA,kBACpB,UAAWC,EAAAA,UACX,gBAAeC,EAAAA,aACf,eAAcC,EAAAA,YACd,gBAAeC,EAAAA,aACf,mBAAkB,GAClB,sBAAoB,EACpB,SAAQ,EACR,OAAM,EACN,cAAc,EACd,mBAAmB,EACnB,kBAAmB"}
@@ -1,2 +1,2 @@
1
- import{t as e}from"./export-helper.js";import{computed as t,createElementBlock as n,createVNode as r,defineComponent as i,normalizeClass as a,onMounted as o,openBlock as s,ref as c,unref as l,watch as u}from"vue";import d from"@kangc/v-md-editor";var f=e(i({name:`C_Markdown`,__name:`index`,props:{modelValue:{default:``},height:{default:`400px`},disabled:{type:Boolean,default:!1},placeholder:{default:`请输入 Markdown 内容...`},mode:{default:`editable`},toolbar:{},uploadImageConfig:{},tocNavPosition:{default:`right`},defaultFullscreen:{type:Boolean,default:!1},autofocus:{type:Boolean,default:!1},includeLevel:{default:()=>[1,2,3,4,5,6]},leftToolbar:{default:`undo redo clear | h bold italic strikethrough quote | ul ol table hr | link image code | save`},rightToolbar:{default:`preview toc sync-scroll fullscreen`},maxLength:{default:5e4},showWordCount:{type:Boolean,default:!0},autoSave:{type:Boolean,default:!1},autoSaveInterval:{default:3e4},isDark:{type:Boolean,default:!1}},emits:[`update:modelValue`,`change`,`save`,`upload-image`,`fullscreen-change`,`copy-code-success`,`word-count-change`,`auto-save`,`max-length-exceeded`],setup(e,{expose:i,emit:f}){let p=e,m=f,h=c(null),g=c(``),_=t(()=>p.modelValue?.length||0),v=t(()=>{let e={accept:`image/*`,multiple:!1};return p.uploadImageConfig?{...e,...p.uploadImageConfig}:e});o(()=>{p.showWordCount&&p.modelValue&&m(`word-count-change`,p.modelValue.length)}),u(()=>p.modelValue,e=>{p.showWordCount&&m(`word-count-change`,e?.length||0)},{immediate:!0});let y=e=>{if(e.length>p.maxLength){m(`max-length-exceeded`,e.length,p.maxLength);return}m(`update:modelValue`,e),p.showWordCount&&m(`word-count-change`,e.length)},b=(e,t)=>{g.value=t,m(`change`,e,t),p.autoSave&&E(e)},x=(e,t)=>{m(`save`,e,t)},S=(e,t,n)=>{m(`upload-image`,e,t,n)},C=e=>{m(`fullscreen-change`,e)},w=e=>{m(`copy-code-success`,e)},T=null,E=e=>{T&&clearTimeout(T),T=setTimeout(()=>{m(`auto-save`,e)},p.autoSaveInterval)};return i({focus:()=>{h.value?.focus()},getHtml:()=>g.value,insertText:e=>{h.value?.insert(t=>({text:`${t}${e}`,selected:e}))},wordCount:_}),(e,t)=>(s(),n(`div`,{class:a([`c-markdown-wrapper`,{"is-dark":e.isDark}])},[r(l(d),{ref_key:`editorRef`,ref:h,"model-value":e.modelValue,height:e.height,placeholder:e.placeholder,toolbar:e.toolbar,mode:e.mode,"upload-image-config":v.value,"toc-nav-position":e.tocNavPosition,"default-fullscreen":e.defaultFullscreen,autofocus:e.autofocus,"include-level":e.includeLevel,"left-toolbar":e.leftToolbar,"right-toolbar":e.rightToolbar,"default-show-toc":!0,"onUpdate:modelValue":y,onChange:b,onSave:x,onUploadImage:S,onFullscreenChange:C,onCopyCodeSuccess:w},null,8,[`model-value`,`height`,`placeholder`,`toolbar`,`mode`,`upload-image-config`,`toc-nav-position`,`default-fullscreen`,`autofocus`,`include-level`,`left-toolbar`,`right-toolbar`])],2))}}),[[`__scopeId`,`data-v-545f0ea7`]]);export{f as t};
1
+ import{t as e}from"./export-helper.js";import{computed as t,createElementBlock as n,createVNode as r,defineComponent as i,normalizeClass as a,onMounted as o,openBlock as s,ref as c,unref as l,watch as u}from"vue";import d from"@kangc/v-md-editor";var f=e(i({name:`C_Markdown`,__name:`index`,props:{modelValue:{default:``},height:{default:`400px`},disabled:{type:Boolean,default:!1},placeholder:{default:`请输入 Markdown 内容...`},mode:{default:`editable`},toolbar:{},uploadImageConfig:{},tocNavPosition:{default:`right`},defaultFullscreen:{type:Boolean,default:!1},autofocus:{type:Boolean,default:!1},includeLevel:{default:()=>[1,2,3,4,5,6]},leftToolbar:{default:`undo redo clear | h bold italic strikethrough quote | ul ol table hr | link image code | save`},rightToolbar:{default:`preview toc sync-scroll fullscreen`},maxLength:{default:5e4},showWordCount:{type:Boolean,default:!0},autoSave:{type:Boolean,default:!1},autoSaveInterval:{default:3e4},isDark:{type:Boolean,default:!1}},emits:[`update:modelValue`,`change`,`save`,`upload-image`,`fullscreen-change`,`copy-code-success`,`word-count-change`,`auto-save`,`max-length-exceeded`],setup(e,{expose:i,emit:f}){let p=e,m=f,h=c(null),g=c(``),_=t(()=>p.modelValue?.length||0),v=t(()=>{let e={accept:`image/*`,multiple:!1};return p.uploadImageConfig?{...e,...p.uploadImageConfig}:e});o(()=>{p.showWordCount&&p.modelValue&&m(`word-count-change`,p.modelValue.length)}),u(()=>p.modelValue,e=>{p.showWordCount&&m(`word-count-change`,e?.length||0)},{immediate:!0});let y=e=>{if(e.length>p.maxLength){m(`max-length-exceeded`,e.length,p.maxLength);return}m(`update:modelValue`,e),p.showWordCount&&m(`word-count-change`,e.length)},b=(e,t)=>{g.value=t,m(`change`,e,t),p.autoSave&&E(e)},x=(e,t)=>{m(`save`,e,t)},S=(e,t,n)=>{m(`upload-image`,e,t,n)},C=e=>{m(`fullscreen-change`,e)},w=e=>{m(`copy-code-success`,e)},T=null,E=e=>{T&&clearTimeout(T),T=setTimeout(()=>{m(`auto-save`,e)},p.autoSaveInterval)};return i({focus:()=>{h.value?.focus()},getHtml:()=>g.value,insertText:e=>{h.value?.insert(t=>({text:`${t}${e}`,selected:e}))},wordCount:_}),(e,t)=>(s(),n(`div`,{class:a([`c-markdown-wrapper`,{"is-dark":e.isDark}])},[r(l(d),{ref_key:`editorRef`,ref:h,"model-value":e.modelValue,height:e.height,placeholder:e.placeholder,toolbar:e.toolbar,mode:e.mode,"upload-image-config":v.value,"toc-nav-position":e.tocNavPosition,"default-fullscreen":e.defaultFullscreen,autofocus:e.autofocus,"include-level":e.includeLevel,"left-toolbar":e.leftToolbar,"right-toolbar":e.rightToolbar,"default-show-toc":!0,"onUpdate:modelValue":y,onChange:b,onSave:x,onUploadImage:S,onFullscreenChange:C,onCopyCodeSuccess:w},null,8,[`model-value`,`height`,`placeholder`,`toolbar`,`mode`,`upload-image-config`,`toc-nav-position`,`default-fullscreen`,`autofocus`,`include-level`,`left-toolbar`,`right-toolbar`])],2))}}),[[`__scopeId`,`data-v-67f4346d`]]);export{f as t};
2
2
  //# sourceMappingURL=C_Markdown2.js.map