ai-read-over-pro 0.0.16 → 0.0.17

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.
@@ -74,48 +74,53 @@ export default {
74
74
  },
75
75
  renderFormulas(text) {
76
76
  if (!text) return '';
77
-
78
- // 如果不是字符串,转字符串
79
- if (typeof text === 'number') {
80
- return text;
77
+ // 如果整个文本包含 LaTeX 命令且没有定界符,整体包裹
78
+ const hasDelimiter = /\$|\\\(|\\\[/.test(text);
79
+ if (!hasDelimiter) {
80
+ text = text.replace(
81
+ /(\\(?:frac|sqrt|sum|int|cdot|times|geq|leq|neq|pm|div|alpha|beta|gamma|theta|pi|sigma|omega|infty|log|sin|cos|tan|left|right|overline|hat|vec|bar|lim|in|notin|supset|subseteq|ln|Gamma|to)(?:\{[^{}]*(?:\{[^{}]*(?:\{[^{}]*\}[^{}]*)*\}[^{}]*)*\}|[^\s{},。?!、;:\u4e00-\u9fa5])*)/g,
82
+ (match) => `\\(${match}\\)`
83
+ );
81
84
  }
82
- const {renderToString} = katex;
85
+ const { renderToString } = katex;
83
86
  return text
84
- .replace(/\$\$(.*?)\$\$/gs, (match) => {
87
+ // 块级公式 $$...$$
88
+ .replace(/\$\$(.*?)\$\$/gs, (match, p1) => {
85
89
  try {
86
- // 渲染块级公式
87
- return renderToString(match.slice(2, -2), {displayMode: false});
88
- } catch (error) {
89
- console.error('Error rendering block formula:', error);
90
+ return renderToString(p1, { displayMode: true, throwOnError:
91
+ false });
92
+ } catch (e) {
93
+ console.error('Block formula error:', e);
90
94
  return match;
91
95
  }
92
96
  })
93
- .replace(/\$.*?\$/g, (match) => {
94
- match = match.replace(/<br>/g, '');
97
+ // 行内公式 $...$
98
+ .replace(/\$(.*?)\$/g, (match, p1) => {
95
99
  try {
96
- // 渲染行内公式
97
- return renderToString(match.slice(1, -1), {displayMode: false});
98
- } catch (error) {
99
- console.error('Error rendering inline formula:', error);
100
+ return renderToString(p1, { displayMode: false, throwOnError:
101
+ false });
102
+ } catch (e) {
103
+ console.error('Inline formula error:', e);
100
104
  return match;
101
105
  }
102
106
  })
103
- .replace(/\\\(.*?\\\)/g, (match) => {
107
+ // 行内公式 \( ... \)
108
+ .replace(/\\\((.*?)\\\)/g, (match, p1) => {
104
109
  try {
105
- // 渲染行内公式
106
- return renderToString(match.slice(2, -2), {displayMode: false});
107
- } catch (error) {
108
- console.error('Error rendering inline formula:', error);
110
+ return renderToString(p1, { displayMode: false, throwOnError:
111
+ false });
112
+ } catch (e) {
113
+ console.error('Inline formula error:', e);
109
114
  return match;
110
115
  }
111
116
  })
112
- .replace(/\\\[[\s\S]*?\\\]/g, (match) => {
113
- match = match.replace(/<br>/g, '');
117
+ // 块级公式 \[ ... \]
118
+ .replace(/\\\[(.*?)\\\]/gs, (match, p1) => {
114
119
  try {
115
- // 渲染块级公式
116
- return renderToString(match.slice(2, -2), {displayMode: false});
117
- } catch (error) {
118
- console.error('Error rendering block formula:', error);
120
+ return renderToString(p1, { displayMode: true, throwOnError:
121
+ false });
122
+ } catch (e) {
123
+ console.error('Block formula error:', e);
119
124
  return match;
120
125
  }
121
126
  });
@@ -1303,7 +1303,7 @@
1303
1303
  // Native crypto import via require (NodeJS)
1304
1304
  if (!crypto && "function" === 'function') {
1305
1305
  try {
1306
- crypto = __webpack_require__(477);
1306
+ crypto = __webpack_require__(858);
1307
1307
  } catch (err) {}
1308
1308
  }
1309
1309
 
@@ -6399,7 +6399,7 @@ module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf
6399
6399
 
6400
6400
  /***/ }),
6401
6401
 
6402
- /***/ 477:
6402
+ /***/ 858:
6403
6403
  /***/ (function() {
6404
6404
 
6405
6405
  /* (ignored) */
@@ -6673,8 +6673,8 @@ var staticRenderFns = [function () {
6673
6673
 
6674
6674
  ;// CONCATENATED MODULE: ./components/demo/src/main.vue?vue&type=template&id=24b1a5e0&scoped=true
6675
6675
 
6676
- ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/demo/src/read-over.vue?vue&type=template&id=23f2b946&scoped=true
6677
- var read_overvue_type_template_id_23f2b946_scoped_true_render = function render() {
6676
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/demo/src/read-over.vue?vue&type=template&id=792c5ac4&scoped=true
6677
+ var read_overvue_type_template_id_792c5ac4_scoped_true_render = function render() {
6678
6678
  var _vm = this,
6679
6679
  _c = _vm._self._c;
6680
6680
  return _c('div', {
@@ -6757,7 +6757,7 @@ var read_overvue_type_template_id_23f2b946_scoped_true_render = function render(
6757
6757
  }
6758
6758
  }) : _vm._e()], 2)] : _vm._e()], 2)]);
6759
6759
  };
6760
- var read_overvue_type_template_id_23f2b946_scoped_true_staticRenderFns = [];
6760
+ var read_overvue_type_template_id_792c5ac4_scoped_true_staticRenderFns = [];
6761
6761
 
6762
6762
  ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/demo/src/chat-tools.vue?vue&type=template&id=242608f1&scoped=true
6763
6763
  var chat_toolsvue_type_template_id_242608f1_scoped_true_render = function render() {
@@ -14057,54 +14057,60 @@ if(typeof document!=="undefined"){if(document.compatMode!=="CSS1Compat"){typeof
14057
14057
  },
14058
14058
  renderFormulas(text) {
14059
14059
  if (!text) return '';
14060
-
14061
- // 如果不是字符串,转字符串
14062
- if (typeof text === 'number') {
14063
- return text;
14060
+ // 如果整个文本包含 LaTeX 命令且没有定界符,整体包裹
14061
+ const hasDelimiter = /\$|\\\(|\\\[/.test(text);
14062
+ if (!hasDelimiter) {
14063
+ text = text.replace(/(\\(?:frac|sqrt|sum|int|cdot|times|geq|leq|neq|pm|div|alpha|beta|gamma|theta|pi|sigma|omega|infty|log|sin|cos|tan|left|right|overline|hat|vec|bar|lim|in|notin|supset|subseteq|ln|Gamma|to)(?:\{[^{}]*(?:\{[^{}]*(?:\{[^{}]*\}[^{}]*)*\}[^{}]*)*\}|[^\s{},。?!、;:\u4e00-\u9fa5])*)/g, match => `\\(${match}\\)`);
14064
14064
  }
14065
14065
  const {
14066
14066
  renderToString
14067
14067
  } = katex;
14068
- return text.replace(/\$\$(.*?)\$\$/gs, match => {
14068
+ return text
14069
+ // 块级公式 $$...$$
14070
+ .replace(/\$\$(.*?)\$\$/gs, (match, p1) => {
14069
14071
  try {
14070
- // 渲染块级公式
14071
- return renderToString(match.slice(2, -2), {
14072
- displayMode: false
14072
+ return renderToString(p1, {
14073
+ displayMode: true,
14074
+ throwOnError: false
14073
14075
  });
14074
- } catch (error) {
14075
- console.error('Error rendering block formula:', error);
14076
+ } catch (e) {
14077
+ console.error('Block formula error:', e);
14076
14078
  return match;
14077
14079
  }
14078
- }).replace(/\$.*?\$/g, match => {
14079
- match = match.replace(/<br>/g, '');
14080
+ })
14081
+ // 行内公式 $...$
14082
+ .replace(/\$(.*?)\$/g, (match, p1) => {
14080
14083
  try {
14081
- // 渲染行内公式
14082
- return renderToString(match.slice(1, -1), {
14083
- displayMode: false
14084
+ return renderToString(p1, {
14085
+ displayMode: false,
14086
+ throwOnError: false
14084
14087
  });
14085
- } catch (error) {
14086
- console.error('Error rendering inline formula:', error);
14088
+ } catch (e) {
14089
+ console.error('Inline formula error:', e);
14087
14090
  return match;
14088
14091
  }
14089
- }).replace(/\\\(.*?\\\)/g, match => {
14092
+ })
14093
+ // 行内公式 \( ... \)
14094
+ .replace(/\\\((.*?)\\\)/g, (match, p1) => {
14090
14095
  try {
14091
- // 渲染行内公式
14092
- return renderToString(match.slice(2, -2), {
14093
- displayMode: false
14096
+ return renderToString(p1, {
14097
+ displayMode: false,
14098
+ throwOnError: false
14094
14099
  });
14095
- } catch (error) {
14096
- console.error('Error rendering inline formula:', error);
14100
+ } catch (e) {
14101
+ console.error('Inline formula error:', e);
14097
14102
  return match;
14098
14103
  }
14099
- }).replace(/\\\[[\s\S]*?\\\]/g, match => {
14100
- match = match.replace(/<br>/g, '');
14104
+ })
14105
+ // 块级公式 \[ ... \]
14106
+ .replace(/\\\[(.*?)\\\]/gs, (match, p1) => {
14101
14107
  try {
14102
- // 渲染块级公式
14103
- return renderToString(match.slice(2, -2), {
14104
- displayMode: false
14108
+ return renderToString(p1, {
14109
+ displayMode: true,
14110
+ throwOnError: false
14105
14111
  });
14106
- } catch (error) {
14107
- console.error('Error rendering block formula:', error);
14112
+ } catch (e) {
14113
+ console.error('Block formula error:', e);
14108
14114
  return match;
14109
14115
  }
14110
14116
  });
@@ -14113,10 +14119,10 @@ if(typeof document!=="undefined"){if(document.compatMode!=="CSS1Compat"){typeof
14113
14119
  });
14114
14120
  ;// CONCATENATED MODULE: ./components/demo/src/read-over.vue?vue&type=script&lang=js
14115
14121
  /* harmony default export */ var src_read_overvue_type_script_lang_js = (read_overvue_type_script_lang_js);
14116
- ;// CONCATENATED MODULE: ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-22.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/demo/src/read-over.vue?vue&type=style&index=0&id=23f2b946&prod&lang=scss&scoped=true
14122
+ ;// CONCATENATED MODULE: ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-22.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/demo/src/read-over.vue?vue&type=style&index=0&id=792c5ac4&prod&lang=scss&scoped=true
14117
14123
  // extracted by mini-css-extract-plugin
14118
14124
 
14119
- ;// CONCATENATED MODULE: ./components/demo/src/read-over.vue?vue&type=style&index=0&id=23f2b946&prod&lang=scss&scoped=true
14125
+ ;// CONCATENATED MODULE: ./components/demo/src/read-over.vue?vue&type=style&index=0&id=792c5ac4&prod&lang=scss&scoped=true
14120
14126
 
14121
14127
  ;// CONCATENATED MODULE: ./components/demo/src/read-over.vue
14122
14128
 
@@ -14129,11 +14135,11 @@ if(typeof document!=="undefined"){if(document.compatMode!=="CSS1Compat"){typeof
14129
14135
 
14130
14136
  var read_over_component = normalizeComponent(
14131
14137
  src_read_overvue_type_script_lang_js,
14132
- read_overvue_type_template_id_23f2b946_scoped_true_render,
14133
- read_overvue_type_template_id_23f2b946_scoped_true_staticRenderFns,
14138
+ read_overvue_type_template_id_792c5ac4_scoped_true_render,
14139
+ read_overvue_type_template_id_792c5ac4_scoped_true_staticRenderFns,
14134
14140
  false,
14135
14141
  null,
14136
- "23f2b946",
14142
+ "792c5ac4",
14137
14143
  null
14138
14144
 
14139
14145
  )