@blueking/ai-ui-sdk 0.2.0-beta.2 → 0.2.0-beta.21

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 (110) hide show
  1. package/dist/common/util.d.ts +5 -0
  2. package/dist/common/util.ts.js +8 -0
  3. package/dist/components/render-auto-height-textarea/index.vue.css +11 -11
  4. package/dist/components/render-auto-height-textarea/index.vue.js +1 -1
  5. package/dist/components/render-auto-refresh/index.vue.css +8 -8
  6. package/dist/components/render-auto-refresh/index.vue.js +1 -1
  7. package/dist/components/render-checkbox/index.script.vue.js.js +30 -5
  8. package/dist/components/render-checkbox/index.vue.css +9 -9
  9. package/dist/components/render-checkbox/index.vue.d.ts +4 -0
  10. package/dist/components/render-checkbox/index.vue.js +1 -1
  11. package/dist/components/render-choose-tag/index.script.vue.js.js +66 -3
  12. package/dist/components/render-choose-tag/index.vue.css +7 -7
  13. package/dist/components/render-choose-tag/index.vue.d.ts +1 -0
  14. package/dist/components/render-choose-tag/index.vue.js +1 -1
  15. package/dist/components/render-collapse/index.vue.css +2 -2
  16. package/dist/components/render-collapse/index.vue.js +1 -1
  17. package/dist/components/render-dataset/components/batch-delete-dataset-data/index.vue.css +3 -3
  18. package/dist/components/render-dataset/components/batch-delete-dataset-data/index.vue.js +1 -1
  19. package/dist/components/render-dataset/components/batch-edit-valid-dataset-data/index.vue.css +1 -1
  20. package/dist/components/render-dataset/components/batch-edit-valid-dataset-data/index.vue.js +1 -1
  21. package/dist/components/render-dataset/components/dataset-data-tool-icons/index.script.vue.js +1 -1
  22. package/dist/components/render-dataset/components/dataset-data-valid/index.vue.css +1 -1
  23. package/dist/components/render-dataset/components/dataset-data-valid/index.vue.js +1 -1
  24. package/dist/components/render-dataset/components/edit-dataset-data/index.vue.css +3 -3
  25. package/dist/components/render-dataset/components/edit-dataset-data/index.vue.js +1 -1
  26. package/dist/components/render-dataset/components/operation-record/index.vue.css +4 -4
  27. package/dist/components/render-dataset/components/operation-record/index.vue.js +1 -1
  28. package/dist/components/render-dataset/components/operation-record/table/index.vue.css +1 -1
  29. package/dist/components/render-dataset/components/operation-record/table/index.vue.js +1 -1
  30. package/dist/components/render-dataset/components/operation-record/view-op-result/index.vue.css +2 -2
  31. package/dist/components/render-dataset/components/operation-record/view-op-result/index.vue.js +1 -1
  32. package/dist/components/render-dataset/components/plus-dataset/index.vue.css +2 -2
  33. package/dist/components/render-dataset/components/plus-dataset/index.vue.js +1 -1
  34. package/dist/components/render-dataset/components/plus-dataset-data/form/api.script.vue.js.js +1 -1
  35. package/dist/components/render-dataset/components/plus-dataset-data/form/api.vue.css +2 -2
  36. package/dist/components/render-dataset/components/plus-dataset-data/form/api.vue.js +1 -1
  37. package/dist/components/render-dataset/components/plus-dataset-data/form/footer.vue.css +1 -1
  38. package/dist/components/render-dataset/components/plus-dataset-data/form/footer.vue.js +1 -1
  39. package/dist/components/render-dataset/components/plus-dataset-data/form/index.vue.css +2 -2
  40. package/dist/components/render-dataset/components/plus-dataset-data/form/index.vue.js +1 -1
  41. package/dist/components/render-dataset/components/review-dataset-data/index.vue.css +10 -10
  42. package/dist/components/render-dataset/components/review-dataset-data/index.vue.js +1 -1
  43. package/dist/components/render-dataset-detail-origin-data/index.vue.css +3 -3
  44. package/dist/components/render-dataset-detail-origin-data/index.vue.js +1 -1
  45. package/dist/components/render-dataset-list/components/main.vue.css +3 -3
  46. package/dist/components/render-dataset-list/components/main.vue.js +1 -1
  47. package/dist/components/render-dataset-list/index.vue.css +2 -2
  48. package/dist/components/render-dataset-list/index.vue.js +1 -1
  49. package/dist/components/render-file-card/index.vue.css +11 -11
  50. package/dist/components/render-file-card/index.vue.d.ts +9 -5
  51. package/dist/components/render-file-card/index.vue.js +1 -1
  52. package/dist/components/render-file-type-icon/index.vue.css +5 -5
  53. package/dist/components/render-file-type-icon/index.vue.js +1 -1
  54. package/dist/components/render-header/index.vue.css +3 -3
  55. package/dist/components/render-header/index.vue.js +1 -1
  56. package/dist/components/render-like/index.vue.css +5 -5
  57. package/dist/components/render-like/index.vue.d.ts +3 -3
  58. package/dist/components/render-like/index.vue.js +1 -1
  59. package/dist/components/render-markdown/common.d.ts +19 -0
  60. package/dist/components/render-markdown/common.ts.js +41 -0
  61. package/dist/components/render-markdown/edit.d.ts +82 -0
  62. package/dist/components/render-markdown/edit.postcss.css +92 -0
  63. package/dist/components/render-markdown/edit.ts.js +226 -0
  64. package/dist/components/render-markdown/mark-down-code-copy.d.ts +7 -0
  65. package/dist/components/render-markdown/mark-down-code-copy.ts.js +73 -0
  66. package/dist/components/render-markdown/{mark-down.d.ts → view.d.ts} +11 -27
  67. package/dist/components/render-markdown/view.postcss.css +91 -0
  68. package/dist/components/render-markdown/view.ts.js +116 -0
  69. package/dist/components/render-router-tab/index.vue.css +3 -3
  70. package/dist/components/render-router-tab/index.vue.js +1 -1
  71. package/dist/components/render-search-empty/index.vue.d.ts +9 -5
  72. package/dist/components/render-search-select/index.script.vue.js.js +176 -20
  73. package/dist/components/render-search-select/index.vue.d.ts +14 -5
  74. package/dist/components/render-t-table/index.vue.css +27 -27
  75. package/dist/components/render-t-table/index.vue.d.ts +9 -5
  76. package/dist/components/render-t-table/index.vue.js +1 -1
  77. package/dist/components/render-tag-tree/index.vue.css +7 -7
  78. package/dist/components/render-tag-tree/index.vue.js +1 -1
  79. package/dist/components/render-tree/index.script.vue.js +23 -1
  80. package/dist/components/render-tree/index.vue.d.ts +9 -5
  81. package/dist/components.d.ts +3 -2
  82. package/dist/components.ts.js +3 -2
  83. package/dist/css/fonts/iconcool.eot +0 -0
  84. package/dist/css/fonts/iconcool.svg +1 -4
  85. package/dist/css/fonts/iconcool.ttf +0 -0
  86. package/dist/css/fonts/iconcool.woff +0 -0
  87. package/dist/css/iconcool.js +1 -1
  88. package/dist/css/style.css +1 -4
  89. package/dist/css/tailwind.css +54 -4
  90. package/dist/hooks/use-chat.d.ts +22 -12
  91. package/dist/hooks/use-ellipsis-tooltip.ts.js +6 -2
  92. package/dist/hooks/use-form-leave-confirm.ts.js +2 -0
  93. package/dist/hooks.d.ts +1 -0
  94. package/dist/hooks.ts.js +1 -0
  95. package/dist/http/helper/agent.ts.js +6 -0
  96. package/dist/http/helper/common.d.ts +7 -1
  97. package/dist/http/helper/common.ts.js +8 -0
  98. package/dist/http/helper/tool.ts.js +2 -1
  99. package/dist/types/agent.d.ts +6 -0
  100. package/dist/types/common.d.ts +5 -0
  101. package/dist/types/enum.d.ts +6 -0
  102. package/dist/types/enum.ts.js +7 -0
  103. package/dist/types/tool.d.ts +4 -1
  104. package/package.json +8 -5
  105. package/dist/components/render-markdown/mark-down-code.d.ts +0 -2
  106. package/dist/components/render-markdown/mark-down-code.ts.js +0 -171
  107. package/dist/components/render-markdown/mark-down-emoji.d.ts +0 -2
  108. package/dist/components/render-markdown/mark-down-emoji.ts.js +0 -4
  109. package/dist/components/render-markdown/mark-down.postcss.css +0 -154
  110. package/dist/components/render-markdown/mark-down.ts.js +0 -145
@@ -0,0 +1,92 @@
1
+ .toastui-editor-defaultUI,
2
+ .ProseMirror {
3
+ font-family: -apple-system, BlinkMacSystemFont, 'PingFang SC', 'Microsoft YaHei', 'Helvetica Neue', Arial, sans-serif;
4
+ -webkit-font-smoothing: antialiased;
5
+ -moz-osx-font-smoothing: grayscale;
6
+ color: #4d4f56;
7
+ }
8
+
9
+ .toastui-editor-defaultUI .toastui-editor-toolbar {
10
+ height: 40px;
11
+ }
12
+
13
+ .toastui-editor-defaultUI .ProseMirror {
14
+ padding: 12px 16px;
15
+ overflow-y: auto;
16
+ height: 100%;
17
+ }
18
+
19
+ .toastui-editor-defaultUI .ProseMirror::-webkit-scrollbar {
20
+ width: 6px;
21
+ height: 6px;
22
+ }
23
+
24
+ .toastui-editor-defaultUI .ProseMirror::-webkit-scrollbar-thumb {
25
+ width: 6px;
26
+ height: 6px;
27
+ border-radius: 3px;
28
+ background-color: #dcdee5;
29
+ }
30
+
31
+ .toastui-editor-defaultUI .ProseMirror::-webkit-scrollbar-thumb:hover {
32
+ background-color: #979ba5;
33
+ }
34
+
35
+ .toastui-editor-defaultUI .toastui-editor-md-preview::-webkit-scrollbar {
36
+ width: 6px;
37
+ height: 6px;
38
+ }
39
+
40
+ .toastui-editor-defaultUI .toastui-editor-md-preview::-webkit-scrollbar-thumb {
41
+ width: 6px;
42
+ height: 6px;
43
+ border-radius: 3px;
44
+ background-color: #dcdee5;
45
+ }
46
+
47
+ .toastui-editor-defaultUI .toastui-editor-md-preview::-webkit-scrollbar-thumb:hover {
48
+ background-color: #979ba5;
49
+ }
50
+
51
+ .toastui-editor-defaultUI-toolbar {
52
+ height: 40px;
53
+ padding: 0 12px !important;
54
+ background: #fff;
55
+ }
56
+
57
+ .toastui-editor-defaultUI-toolbar button {
58
+ width: 32px !important;
59
+ height: 32px !important;
60
+ margin: 4px 3px !important;
61
+ padding: 0 !important;
62
+ overflow: visible !important;
63
+ display: inline-flex !important;
64
+ align-items: center !important;
65
+ justify-content: center !important;
66
+ border: none !important;
67
+ font-size: 12px !important;
68
+ }
69
+
70
+ .toastui-editor-defaultUI-toolbar .toastui-editor-toolbar-custom-button {
71
+ width: auto !important;
72
+ }
73
+
74
+ .toastui-editor-defaultUI-toolbar .toastui-editor-toolbar-icons {
75
+ transform: scale(.65) !important;
76
+ transform-origin: center center !important;
77
+ }
78
+
79
+ .toastui-editor-defaultUI-toolbar .toastui-editor-toolbar-divider {
80
+ height: 16px !important;
81
+ margin: 12px 6px !important;
82
+ }
83
+
84
+ .toastui-editor-defaultUI-toolbar .toastui-editor-toolbar-item-wrapper {
85
+ height: 40px;
86
+ margin: 0;
87
+ line-height: 40px;
88
+ }
89
+
90
+ .bk-form-item.is-error .toastui-editor-defaultUI {
91
+ border: 1px solid #ea3636 !important;
92
+ }
@@ -0,0 +1,226 @@
1
+ function _define_property(obj, key, value) {
2
+ if (key in obj) {
3
+ Object.defineProperty(obj, key, {
4
+ value: value,
5
+ enumerable: true,
6
+ configurable: true,
7
+ writable: true
8
+ });
9
+ } else {
10
+ obj[key] = value;
11
+ }
12
+ return obj;
13
+ }
14
+ function _object_spread(target) {
15
+ for(var i = 1; i < arguments.length; i++){
16
+ var source = arguments[i] != null ? arguments[i] : {};
17
+ var ownKeys = Object.keys(source);
18
+ if (typeof Object.getOwnPropertySymbols === "function") {
19
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
20
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
21
+ }));
22
+ }
23
+ ownKeys.forEach(function(key) {
24
+ _define_property(target, key, source[key]);
25
+ });
26
+ }
27
+ return target;
28
+ }
29
+ import { defineComponent, h, onBeforeUnmount, onMounted, ref, watch } from 'vue';
30
+ import Editor from '@toast-ui/editor';
31
+ import { commonConfig } from './common.ts.js';
32
+ import '@toast-ui/editor/dist/toastui-editor.css';
33
+ import './edit.postcss.css';
34
+ var EditorMode;
35
+ (function(EditorMode) {
36
+ EditorMode["Markdown"] = "markdown";
37
+ EditorMode["Wysiwyg"] = "wysiwyg";
38
+ })(EditorMode || (EditorMode = {}));
39
+ export default defineComponent({
40
+ props: {
41
+ modelValue: {
42
+ type: String
43
+ },
44
+ placeholder: {
45
+ type: String
46
+ },
47
+ height: {
48
+ type: String,
49
+ default: '500px'
50
+ },
51
+ disabled: {
52
+ type: Boolean
53
+ },
54
+ fontSize: {
55
+ type: String,
56
+ default: '14px'
57
+ },
58
+ backgroundColor: {
59
+ type: String,
60
+ default: '#fff'
61
+ },
62
+ mode: {
63
+ type: String,
64
+ default: "wysiwyg"
65
+ },
66
+ isSimpleToolbar: {
67
+ type: Boolean,
68
+ default: false
69
+ }
70
+ },
71
+ emits: {
72
+ 'update:modelValue': (value)=>value
73
+ },
74
+ setup (props, { emit }) {
75
+ const editorRef = ref();
76
+ let editor;
77
+ const handleChange = ()=>{
78
+ const value = (editor === null || editor === void 0 ? void 0 : editor.getMarkdown()) || '';
79
+ emit('update:modelValue', value);
80
+ };
81
+ const handleInit = ()=>{
82
+ const defaultMode = props.mode || "wysiwyg";
83
+ // 切换模式按钮
84
+ const modeSwitchEl = document.createElement('section');
85
+ modeSwitchEl.className = 'toastui-editor-toolbar-custom-button g-cursor-pointer';
86
+ modeSwitchEl.innerHTML = '<i class="bkaidev-icon bkaidev-qiehuan g-mr-4 g-text-16"></i>切换代码模式';
87
+ modeSwitchEl.dataset.mode = defaultMode;
88
+ modeSwitchEl.addEventListener('click', ()=>{
89
+ const mode = modeSwitchEl.dataset.mode;
90
+ if (mode === "markdown") {
91
+ editor.changeMode("wysiwyg");
92
+ modeSwitchEl.dataset.mode = "wysiwyg";
93
+ modeSwitchEl.innerHTML = '<i class="bkaidev-icon bkaidev-qiehuan g-mr-4 g-text-16"></i>切换代码模式';
94
+ } else {
95
+ editor.changeMode("markdown");
96
+ modeSwitchEl.dataset.mode = "markdown";
97
+ modeSwitchEl.innerHTML = '<i class="bkaidev-icon bkaidev-qiehuan g-mr-4 g-text-16"></i>切换富文本模式';
98
+ }
99
+ });
100
+ // 全屏按钮复用 use-click-proxy 的全局 full-screen 代理。
101
+ const fullScreenEl = document.createElement('section');
102
+ fullScreenEl.className = 'toastui-editor-toolbar-custom-button g-cursor-pointer g-ml-12';
103
+ fullScreenEl.innerHTML = [
104
+ '<span class="click-full-screen">',
105
+ '<i class="ai-ui-sdk-icon ai-ui-sdk-full-screen g-mr-4 g-text-14"></i>全屏',
106
+ '</span>',
107
+ '<span class="click-un-full-screen">',
108
+ '<i class="ai-ui-sdk-icon ai-ui-sdk-un-full-screen g-mr-4 g-text-14"></i>取消全屏',
109
+ '</span>'
110
+ ].join('');
111
+ // 初始化编辑器
112
+ editor = new Editor(_object_spread({
113
+ el: editorRef.value,
114
+ initialEditType: defaultMode,
115
+ previewStyle: 'vertical',
116
+ hideModeSwitch: true,
117
+ autofocus: false,
118
+ toolbarItems: [
119
+ [
120
+ 'heading',
121
+ 'bold',
122
+ 'italic',
123
+ 'strike'
124
+ ],
125
+ ...props.isSimpleToolbar ? [] : [
126
+ [
127
+ 'hr',
128
+ 'quote'
129
+ ],
130
+ [
131
+ 'ul',
132
+ 'ol',
133
+ 'task',
134
+ 'indent',
135
+ 'outdent'
136
+ ],
137
+ [
138
+ 'table',
139
+ 'image',
140
+ 'link'
141
+ ],
142
+ [
143
+ 'code',
144
+ 'codeblock'
145
+ ]
146
+ ],
147
+ [
148
+ {
149
+ name: 'modeSwitch',
150
+ el: modeSwitchEl
151
+ },
152
+ {
153
+ name: 'fullScreen',
154
+ el: fullScreenEl
155
+ }
156
+ ]
157
+ ],
158
+ placeholder: props.placeholder,
159
+ initialValue: props.modelValue || '',
160
+ height: props.height,
161
+ events: {
162
+ change: handleChange
163
+ }
164
+ }, commonConfig));
165
+ };
166
+ const handleDestroy = ()=>{
167
+ editor.destroy();
168
+ editor = null;
169
+ };
170
+ const handleDisabled = ()=>{
171
+ const root = editorRef.value;
172
+ const editContent = root.querySelector('.ww-mode [contenteditable]');
173
+ const toolbar = root.querySelector('.toastui-editor-toolbar');
174
+ // 禁用事件
175
+ if (root) {
176
+ const stopEvent = (event)=>{
177
+ event.preventDefault();
178
+ event.stopPropagation();
179
+ event.stopImmediatePropagation();
180
+ };
181
+ if (props.disabled) {
182
+ root.addEventListener('beforeinput', stopEvent, true);
183
+ root.addEventListener('input', stopEvent, true);
184
+ root.addEventListener('paste', stopEvent, true);
185
+ root.addEventListener('cut', stopEvent, true);
186
+ root.addEventListener('drop', stopEvent, true);
187
+ root.addEventListener('compositionstart', stopEvent, true);
188
+ } else {
189
+ root.removeEventListener('beforeinput', stopEvent, true);
190
+ root.removeEventListener('input', stopEvent, true);
191
+ root.removeEventListener('paste', stopEvent, true);
192
+ root.removeEventListener('cut', stopEvent, true);
193
+ root.removeEventListener('drop', stopEvent, true);
194
+ root.removeEventListener('compositionstart', stopEvent, true);
195
+ }
196
+ }
197
+ if (editContent) {
198
+ // 设置样式
199
+ editContent.setAttribute('contenteditable', String(!props.disabled));
200
+ editContent.style.cursor = props.disabled ? 'not-allowed' : 'auto';
201
+ }
202
+ if (toolbar) {
203
+ toolbar.style.pointerEvents = props.disabled ? 'none' : 'auto';
204
+ }
205
+ };
206
+ watch(()=>props.modelValue, (value)=>{
207
+ if (!editor) return;
208
+ if (value !== editor.getMarkdown()) {
209
+ editor.setMarkdown(value || '');
210
+ }
211
+ });
212
+ onMounted(()=>{
213
+ handleInit();
214
+ handleDisabled();
215
+ });
216
+ onBeforeUnmount(handleDestroy);
217
+ watch(()=>props.disabled, handleDisabled);
218
+ return ()=>h('section', {
219
+ ref: editorRef,
220
+ class: `full-screen-wrap ${props.disabled ? 'is-disabled' : ''}`,
221
+ style: {
222
+ backgroundColor: props.backgroundColor
223
+ }
224
+ });
225
+ }
226
+ });
@@ -0,0 +1,7 @@
1
+ import type Prism from 'prismjs';
2
+ import type { PluginContext, PluginInfo } from '@toast-ui/editor';
3
+ export type PrismHighlighter = typeof Prism;
4
+ export interface MarkDownCodeCopyPluginOptions {
5
+ highlighter?: PrismHighlighter;
6
+ }
7
+ export declare const MarkDownCodeCopyPlugin: (_context: PluginContext, options?: MarkDownCodeCopyPluginOptions) => PluginInfo;
@@ -0,0 +1,73 @@
1
+ const BACKTICK_COUNT = 3;
2
+ // 给块级代码增加右上角复制按钮,同时保留 Prism 语法高亮。
3
+ export const MarkDownCodeCopyPlugin = (_context, options = {})=>({
4
+ toHTMLRenderers: {
5
+ codeBlock (markdownNode) {
6
+ const node = markdownNode;
7
+ const infoWords = node.info ? node.info.split(/\s+/) : [];
8
+ const language = infoWords[0];
9
+ const preClasses = [];
10
+ const codeAttrs = {};
11
+ const tokens = [];
12
+ if (node.fenceLength > BACKTICK_COUNT) {
13
+ codeAttrs['data-backticks'] = node.fenceLength;
14
+ }
15
+ if (language) {
16
+ preClasses.push(`lang-${language}`);
17
+ codeAttrs['data-language'] = language;
18
+ }
19
+ var _node_literal;
20
+ tokens.push({
21
+ type: 'openTag',
22
+ tagName: 'pre',
23
+ classNames: [
24
+ ...preClasses,
25
+ 'markdown-code-copy-wrap'
26
+ ]
27
+ }, {
28
+ type: 'openTag',
29
+ tagName: 'i',
30
+ classNames: [
31
+ 'ai-ui-sdk-icon',
32
+ 'ai-ui-sdk-copy',
33
+ 'markdown-code-copy-button',
34
+ 'click-copy'
35
+ ],
36
+ attributes: {
37
+ 'data-clipboard-text': encodeURIComponent((_node_literal = node.literal) !== null && _node_literal !== void 0 ? _node_literal : ''),
38
+ title: '复制代码'
39
+ }
40
+ }, {
41
+ type: 'closeTag',
42
+ tagName: 'i'
43
+ }, {
44
+ type: 'openTag',
45
+ tagName: 'code',
46
+ attributes: codeAttrs
47
+ });
48
+ const highlighter = options.highlighter;
49
+ const registeredLang = language && (highlighter === null || highlighter === void 0 ? void 0 : highlighter.languages[language]);
50
+ if (language && registeredLang) {
51
+ var _node_literal1;
52
+ tokens.push({
53
+ type: 'html',
54
+ content: highlighter.highlight((_node_literal1 = node.literal) !== null && _node_literal1 !== void 0 ? _node_literal1 : '', registeredLang, language)
55
+ });
56
+ } else {
57
+ var _node_literal2;
58
+ tokens.push({
59
+ type: 'text',
60
+ content: (_node_literal2 = node.literal) !== null && _node_literal2 !== void 0 ? _node_literal2 : ''
61
+ });
62
+ }
63
+ tokens.push({
64
+ type: 'closeTag',
65
+ tagName: 'code'
66
+ }, {
67
+ type: 'closeTag',
68
+ tagName: 'pre'
69
+ });
70
+ return tokens;
71
+ }
72
+ }
73
+ });
@@ -1,30 +1,5 @@
1
- import type MarkdownIt from 'markdown-it';
2
- import 'x-mavon-editor/dist/css/index.css';
3
- import 'x-mavon-editor/dist/highlightjs/styles/atom-one-dark.min.css';
4
- import './mark-down.postcss';
5
- export type MdProp = {
6
- modelValue?: string;
7
- codeStyle?: string;
8
- previewBackground?: string;
9
- defaultOpen: string;
10
- editable: boolean;
11
- subfield: boolean;
12
- toolbarsFlag: boolean;
13
- boxShadow: boolean;
14
- ref?: (elm: MdRef) => void;
15
- xssOptions: {
16
- whiteList: {
17
- [key: string]: string[];
18
- };
19
- };
20
- externalLink: {
21
- [key: string]: (param?: string) => string;
22
- };
23
- };
24
- type MdRef = {
25
- $paste: () => void;
26
- markdownIt: MarkdownIt;
27
- };
1
+ import '@toast-ui/editor/dist/toastui-editor-viewer.css';
2
+ import './view.postcss';
28
3
  declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
29
4
  value: {
30
5
  type: StringConstructor;
@@ -33,6 +8,10 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
33
8
  type: StringConstructor;
34
9
  default: string;
35
10
  };
11
+ padding: {
12
+ type: StringConstructor;
13
+ default: string;
14
+ };
36
15
  }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
37
16
  [key: string]: any;
38
17
  }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
@@ -43,7 +22,12 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
43
22
  type: StringConstructor;
44
23
  default: string;
45
24
  };
25
+ padding: {
26
+ type: StringConstructor;
27
+ default: string;
28
+ };
46
29
  }>> & Readonly<{}>, {
47
30
  previewBackground: string;
31
+ padding: string;
48
32
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
49
33
  export default _default;
@@ -0,0 +1,91 @@
1
+ .aidev-markdown-preview .toastui-editor-contents,
2
+ .toastui-editor .toastui-editor-contents,
3
+ .toastui-editor-md-preview .toastui-editor-contents {
4
+ font-family: -apple-system, BlinkMacSystemFont, 'PingFang SC', 'Microsoft YaHei', 'Helvetica Neue', Arial, sans-serif;
5
+ }
6
+
7
+ .aidev-markdown-preview .toastui-editor-contents pre, .toastui-editor .toastui-editor-contents pre, .toastui-editor-md-preview .toastui-editor-contents pre {
8
+ max-height: 500px;
9
+ overflow-y: auto;
10
+ }
11
+
12
+ .aidev-markdown-preview .toastui-editor-contents pre::-webkit-scrollbar, .toastui-editor .toastui-editor-contents pre::-webkit-scrollbar, .toastui-editor-md-preview .toastui-editor-contents pre::-webkit-scrollbar {
13
+ width: 6px;
14
+ height: 6px;
15
+ }
16
+
17
+ .aidev-markdown-preview .toastui-editor-contents pre::-webkit-scrollbar-thumb, .toastui-editor .toastui-editor-contents pre::-webkit-scrollbar-thumb, .toastui-editor-md-preview .toastui-editor-contents pre::-webkit-scrollbar-thumb {
18
+ width: 6px;
19
+ height: 6px;
20
+ border-radius: 3px;
21
+ background-color: #dcdee5;
22
+ }
23
+
24
+ .aidev-markdown-preview .toastui-editor-contents pre::-webkit-scrollbar-thumb:hover, .toastui-editor .toastui-editor-contents pre::-webkit-scrollbar-thumb:hover, .toastui-editor-md-preview .toastui-editor-contents pre::-webkit-scrollbar-thumb:hover {
25
+ background-color: #979ba5;
26
+ }
27
+
28
+ .aidev-markdown-preview .toastui-editor-contents code, .toastui-editor .toastui-editor-contents code, .toastui-editor-md-preview .toastui-editor-contents code {
29
+ font-family: SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;
30
+ }
31
+
32
+ .aidev-markdown-preview .toastui-editor-contents p,
33
+ .aidev-markdown-preview .toastui-editor-contents td,
34
+ .toastui-editor .toastui-editor-contents p,
35
+ .toastui-editor .toastui-editor-contents td,
36
+ .toastui-editor-md-preview .toastui-editor-contents p,
37
+ .toastui-editor-md-preview .toastui-editor-contents td {
38
+ color: #4d4f56;
39
+ }
40
+
41
+ .aidev-markdown-preview .toastui-editor-contents h1, .toastui-editor .toastui-editor-contents h1, .toastui-editor-md-preview .toastui-editor-contents h1 {
42
+ margin: 32px 0 20px;
43
+ }
44
+
45
+ .aidev-markdown-preview .toastui-editor-contents h2, .toastui-editor .toastui-editor-contents h2, .toastui-editor-md-preview .toastui-editor-contents h2 {
46
+ margin: 24px 0 16px;
47
+ }
48
+
49
+ .aidev-markdown-preview .toastui-editor-contents h3, .toastui-editor .toastui-editor-contents h3, .toastui-editor-md-preview .toastui-editor-contents h3 {
50
+ margin: 18px 0 12px;
51
+ }
52
+
53
+ .aidev-markdown-preview .toastui-editor-contents h4, .toastui-editor .toastui-editor-contents h4, .toastui-editor-md-preview .toastui-editor-contents h4 {
54
+ margin: 14px 0 8px;
55
+ }
56
+
57
+ .aidev-markdown-preview .toastui-editor-contents h5,
58
+ .aidev-markdown-preview .toastui-editor-contents h6,
59
+ .toastui-editor .toastui-editor-contents h5,
60
+ .toastui-editor .toastui-editor-contents h6,
61
+ .toastui-editor-md-preview .toastui-editor-contents h5,
62
+ .toastui-editor-md-preview .toastui-editor-contents h6 {
63
+ margin: 10px 0 4px;
64
+ }
65
+
66
+ .aidev-markdown-preview .toastui-editor-contents i, .toastui-editor .toastui-editor-contents i, .toastui-editor-md-preview .toastui-editor-contents i {
67
+ font-style: normal;
68
+ }
69
+
70
+ .aidev-markdown-preview .toastui-editor-contents table th, .toastui-editor .toastui-editor-contents table th, .toastui-editor-md-preview .toastui-editor-contents table th {
71
+ background-color: #f5f7fa;
72
+ color: #4d4f56;
73
+ }
74
+
75
+ .aidev-markdown-preview .toastui-editor-contents .markdown-code-copy-wrap, .toastui-editor .toastui-editor-contents .markdown-code-copy-wrap, .toastui-editor-md-preview .toastui-editor-contents .markdown-code-copy-wrap {
76
+ position: relative;
77
+ }
78
+
79
+ .aidev-markdown-preview .toastui-editor-contents .markdown-code-copy-button, .toastui-editor .toastui-editor-contents .markdown-code-copy-button, .toastui-editor-md-preview .toastui-editor-contents .markdown-code-copy-button {
80
+ position: absolute;
81
+ top: 4px;
82
+ right: 8px;
83
+ font-size: 14px;
84
+ color: #979ba5;
85
+ cursor: pointer;
86
+ user-select: none;
87
+ }
88
+
89
+ .aidev-markdown-preview .toastui-editor-contents .markdown-code-copy-button:hover, .toastui-editor .toastui-editor-contents .markdown-code-copy-button:hover, .toastui-editor-md-preview .toastui-editor-contents .markdown-code-copy-button:hover {
90
+ color: #313238;
91
+ }
@@ -0,0 +1,116 @@
1
+ function _define_property(obj, key, value) {
2
+ if (key in obj) {
3
+ Object.defineProperty(obj, key, {
4
+ value: value,
5
+ enumerable: true,
6
+ configurable: true,
7
+ writable: true
8
+ });
9
+ } else {
10
+ obj[key] = value;
11
+ }
12
+ return obj;
13
+ }
14
+ function _object_spread(target) {
15
+ for(var i = 1; i < arguments.length; i++){
16
+ var source = arguments[i] != null ? arguments[i] : {};
17
+ var ownKeys = Object.keys(source);
18
+ if (typeof Object.getOwnPropertySymbols === "function") {
19
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
20
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
21
+ }));
22
+ }
23
+ ownKeys.forEach(function(key) {
24
+ _define_property(target, key, source[key]);
25
+ });
26
+ }
27
+ return target;
28
+ }
29
+ import { defineComponent, h, onMounted, onUnmounted, ref, watch } from 'vue';
30
+ import { filterXss } from '@blueking/xss-filter';
31
+ import Viewer from '@toast-ui/editor/dist/toastui-editor-viewer';
32
+ import { commonConfig } from './common.ts.js';
33
+ import '@toast-ui/editor/dist/toastui-editor-viewer.css';
34
+ import './view.postcss.css';
35
+ export default defineComponent({
36
+ props: {
37
+ value: {
38
+ type: String
39
+ },
40
+ previewBackground: {
41
+ type: String,
42
+ default: '#fff'
43
+ },
44
+ padding: {
45
+ type: String,
46
+ default: '12px 16px'
47
+ }
48
+ },
49
+ setup (props) {
50
+ const viewerRef = ref();
51
+ let viewer;
52
+ const handleInit = ()=>{
53
+ viewer = new Viewer(_object_spread({
54
+ el: viewerRef.value,
55
+ initialValue: props.value,
56
+ customHTMLSanitizer: (html)=>filterXss(html, {
57
+ whiteList: {
58
+ a: [
59
+ 'href',
60
+ 'target',
61
+ 'class',
62
+ 'title'
63
+ ],
64
+ section: [
65
+ 'class'
66
+ ],
67
+ i: [
68
+ 'class'
69
+ ],
70
+ span: [
71
+ 'class',
72
+ 'data-variable-index'
73
+ ],
74
+ svg: [
75
+ 'class'
76
+ ],
77
+ use: [
78
+ 'href'
79
+ ],
80
+ ul: [
81
+ 'class'
82
+ ],
83
+ li: [
84
+ 'class',
85
+ 'title'
86
+ ]
87
+ },
88
+ onTagAttr: (_tag, name, value)=>{
89
+ if (name === 'data-nodeid') {
90
+ return `${name}="${value}"`;
91
+ }
92
+ return undefined;
93
+ }
94
+ })
95
+ }, commonConfig));
96
+ };
97
+ const handleDestroy = ()=>{
98
+ viewer.destroy();
99
+ viewer = null;
100
+ };
101
+ watch(()=>props.value, (value)=>{
102
+ if (!viewer) return;
103
+ viewer.setMarkdown(value || '');
104
+ });
105
+ onMounted(handleInit);
106
+ onUnmounted(handleDestroy);
107
+ return ()=>h('section', {
108
+ ref: viewerRef,
109
+ class: 'g-height-full g-scrollbar aidev-markdown-preview',
110
+ style: {
111
+ 'background-color': props.previewBackground,
112
+ padding: props.padding
113
+ }
114
+ });
115
+ }
116
+ });
@@ -1,12 +1,12 @@
1
1
 
2
- .router-tab[data-v-ii09ja6k] {
2
+ .router-tab[data-v-or6whvdj] {
3
3
  margin-top: 2px;
4
4
  height: 42px;
5
5
  background: #FFFFFF;
6
6
  box-shadow: 0 2px 4px 0 #1919290d;
7
7
  padding: 0 24px;
8
8
  }
9
- .router-tab a[data-v-ii09ja6k] {
9
+ .router-tab a[data-v-or6whvdj] {
10
10
  padding: 0 8px;
11
11
  margin-right: 24px;
12
12
  font-size: 14px;
@@ -15,7 +15,7 @@
15
15
  color: #4D4F56;
16
16
  box-sizing: border-box;
17
17
  }
18
- .router-tab a.router-link-exact-active[data-v-ii09ja6k] {
18
+ .router-tab a.router-link-exact-active[data-v-or6whvdj] {
19
19
  color: #3A84FF;
20
20
  border-bottom: 2px solid #3A84FF;
21
21
  }