diff --git a/.gitignore b/.gitignore
index 24c8763..e382cc3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,3 +3,4 @@ __pycache__/
cookie*.json
env
config.json
+node_modules/
diff --git a/bingchat/.vscode/settings.json b/bingchat/.vscode/settings.json
new file mode 100644
index 0000000..32fbb9a
--- /dev/null
+++ b/bingchat/.vscode/settings.json
@@ -0,0 +1,3 @@
+{
+ "git.ignoreLimitWarning": true
+}
\ No newline at end of file
diff --git a/bingchat/app.json b/bingchat/app.json
index acfed0d..097d91e 100644
--- a/bingchat/app.json
+++ b/bingchat/app.json
@@ -18,5 +18,6 @@
"networkTimeout": {
"request": 1800000
},
- "resizable": true
+ "resizable": true,
+ "lazyCodeLoading": "requiredComponents"
}
diff --git a/bingchat/components/chatbox/index.json b/bingchat/components/chatbox/index.json
index e322b32..2f83fff 100644
--- a/bingchat/components/chatbox/index.json
+++ b/bingchat/components/chatbox/index.json
@@ -1,6 +1,6 @@
{
"component": true,
"usingComponents": {
- "wemark": "../wemark/wemark"
+ "mp-html": "mp-html"
}
-}
+}
\ No newline at end of file
diff --git a/bingchat/components/chatbox/index.wxml b/bingchat/components/chatbox/index.wxml
index 7b827c4..5753398 100644
--- a/bingchat/components/chatbox/index.wxml
+++ b/bingchat/components/chatbox/index.wxml
@@ -1,4 +1,4 @@
-
+
输入问题开始和New Bing聊天吧~
@@ -7,12 +7,7 @@
{{item.dt}}
-
-
-
- {{item.originContent}}
-
-
+
{{suggest}}
diff --git a/bingchat/components/wemark/parser.js b/bingchat/components/wemark/parser.js
deleted file mode 100644
index 19b1c1b..0000000
--- a/bingchat/components/wemark/parser.js
+++ /dev/null
@@ -1,262 +0,0 @@
-var Remarkable = require('./remarkable');
-var parser = new Remarkable({
- html: true
-});
-var prism = require('./prism');
-
-function parse(md, options){
- if(!options) options = {};
- var tokens = parser.parse(md, {});
-
- // markdwon渲染列表
- var renderList = [];
-
- var env = [];
- // 记录当前list深度
- var listLevel = 0;
- // 记录第N级ol的顺序
- var orderNum = [0, 0];
- var tmp;
-
- // 获取inline内容
- var getInlineContent = function(inlineToken){
- var ret = [];
- var env;
- var tokenData = {};
-
- if(inlineToken.type === 'htmlblock'){
- // 匹配video
- // 兼容video[src]和video > source[src]
- var videoRegExp = /|<\/video>)/g;
-
- var match;
- var html = inlineToken.content.replace(/\n/g, '');
- while(match = videoRegExp.exec(html)){
- if(match[1]){
- var retParam = {
- type: 'video',
- src: match[1]
- };
-
- if(match[3]) {
- retParam.poster = match[3];
- }
-
- ret.push(retParam);
- }
- }
- }else{
- // console.log(inlineToken);
- inlineToken.children && inlineToken.children.forEach(function(token, index){
- if(['text', 'code'].indexOf(token.type) > -1){
- ret.push({
- type: env || token.type,
- content: token.content,
- data: tokenData
- });
- env = '';
- tokenData = {};
- }else if(token.type === 'del_open'){
- env = 'deleted';
- }else if (token.type === 'softbreak') {
- // todo:处理li的问题
- /* ret.push({
- type: 'text',
- content: ' '
- }); */
- }else if (token.type === 'hardbreak') {
- ret.push({
- type: 'text',
- content: '\n'
- });
- }else if(token.type === 'strong_open'){
- if(env === 'em') {
- env = 'strong_em';
- }else {
- env = 'strong';
- }
- }else if (token.type === 'em_open') {
- if(env === 'strong') {
- env = 'strong_em';
- }else {
- env = 'em';
- }
- }else if (token.type === 'link_open') {
- if(options.link){
- env = 'link';
- tokenData = {
- href: token.href
- };
- }
- }else if(token.type === 'image'){
- ret.push({
- type: token.type,
- src: token.src
- });
- }
- });
- }
-
- return ret;
- };
-
- var getBlockContent = function(blockToken, index, firstInLi){
-
- if(blockToken.type === 'htmlblock'){
- return getInlineContent(blockToken);
- }else if(blockToken.type === 'heading_open'){
- return {
- type: 'h' + blockToken.hLevel,
- content: getInlineContent(tokens[index+1])
- };
- }else if(blockToken.type === 'paragraph_open'){
- // var type = 'p';
- var prefix = '';
- if(env.length){
- prefix = env.join('_') + '_';
- }
-
- var content = getInlineContent(tokens[index+1]);
-
- // 处理ol前的数字
- if(env[env.length - 1] === 'li' && env[env.length - 2] === 'ol'){
- let prefix = ' ';
- if (firstInLi){
- prefix = orderNum[listLevel - 1] + '. ';
- }
- content.unshift({
- type:'text',
- content: prefix
- });
- }
-
- return {
- type: prefix + 'p',
- content: content
- };
- }else if(blockToken.type === 'fence' || blockToken.type === 'code'){
- content = blockToken.content;
- var highlight = false;
- if(options.highlight && blockToken.params && prism.languages[blockToken.params]){
- content = prism.tokenize(content, prism.languages[blockToken.params]);
- highlight = true;
- }
-
- const flattenTokens = (tokensArr, result = [], parentType = '') => {
- if (Array.isArray(tokensArr)) {
- tokensArr.forEach(el => {
- if (typeof el === 'object') {
- // el.type = parentType + ' wemark_inline_code_' + el.type;
- if(Array.isArray(el.content)){
- flattenTokens(el.content, result, el.type);
- }else{
- flattenTokens(el, result, el.type);
- }
- } else {
- const obj = {};
- obj.type = parentType || 'text';
- // obj.type = parentType + ' wemark_inline_code_';
- obj.content = el;
- result.push(obj);
- }
- })
- return result
- } else {
- result.push(tokensArr)
- return result
- }
- }
-
- if(highlight){
- var tokenList = content;
- content = [];
- tokenList.forEach((token) => {
- // let contentListForToken = [];
- if(Array.isArray(token.content)){
- content = content.concat(flattenTokens(token.content, [], ''));
- }else{
- content.push(token);
- }
- });
- }
- // flatten nested tokens in html
- // if (blockToken.params === 'html') {
- // content = flattenTokens(content)
- // }
- // console.log(content);
-
- return {
- type: 'code',
- highlight: highlight,
- content: content
- };
- }else if(blockToken.type === 'bullet_list_open'){
- env.push('ul');
- listLevel++;
- }else if(blockToken.type === 'ordered_list_open'){
- env.push('ol');
- listLevel++;
- }else if(blockToken.type === 'list_item_open'){
- env.push('li');
- if(env[env.length - 2] === 'ol' ){
- orderNum[listLevel - 1]++;
- }
- }else if(blockToken.type === 'list_item_close'){
- env.pop();
- }else if(blockToken.type === 'bullet_list_close'){
- env.pop();
- listLevel--;
- }else if(blockToken.type === 'ordered_list_close'){
- env.pop();
- listLevel--;
- orderNum[listLevel] = 0;
- }else if(blockToken.type === 'blockquote_open'){
- env.push('blockquote');
- }else if(blockToken.type === 'blockquote_close'){
- env.pop();
- }else if(blockToken.type === 'tr_open'){
- tmp = {
- type: 'table_tr',
- content:[]
- };
- return tmp;
- }else if(blockToken.type === 'th_open'){
- tmp.content.push({
- type: 'table_th',
- content: getInlineContent(tokens[index+1]).map(function(inline){return inline.content;}).join('')
- });
- }else if(blockToken.type === 'td_open'){
- tmp.content.push({
- type: 'table_td',
- content: getInlineContent(tokens[index+1]).map(function(inline){return inline.content;}).join('')
- });
- }
- };
-
- tokens.forEach(function(token, index){
- // 标记是否刚进入li,如果刚进入,可以加符号/序号,否则不加
- var firstInLi = false;
- if(token.type === 'paragraph_open' && tokens[index-1] && tokens[index-1].type === 'list_item_open'){
- firstInLi = true;
- }
- var blockContent = getBlockContent(token, index, firstInLi);
- if(!blockContent) return;
- if(!Array.isArray(blockContent)){
- blockContent = [blockContent];
- }
- blockContent.forEach(function(block){
- if(Array.isArray(block.content)){
- block.isArray = true;
- }else{
- block.isArray = false;
- }
- renderList.push(block);
- });
- });
-
- return renderList;
-}
-
-module.exports = {
- parse: parse
-};
diff --git a/bingchat/components/wemark/prism.js b/bingchat/components/wemark/prism.js
deleted file mode 100644
index 6df52b8..0000000
--- a/bingchat/components/wemark/prism.js
+++ /dev/null
@@ -1,16 +0,0 @@
-/* PrismJS 1.15.0
-https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript+basic+markup-templating+go+java+json+php+sql+python+typescript */
-var _self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},Prism=function(){var e=/\blang(?:uage)?-([\w-]+)\b/i,t=0,n=_self.Prism={manual:_self.Prism&&_self.Prism.manual,disableWorkerMessageHandler:_self.Prism&&_self.Prism.disableWorkerMessageHandler,util:{encode:function(e){return e instanceof r?new r(e.type,n.util.encode(e.content),e.alias):"Array"===n.util.type(e)?e.map(n.util.encode):e.replace(/&/g,"&").replace(/e.length)return;if(!(w instanceof s)){if(m&&b!=t.length-1){h.lastIndex=k;var _=h.exec(e);if(!_)break;for(var j=_.index+(d?_[1].length:0),P=_.index+_[0].length,A=b,x=k,O=t.length;O>A&&(P>x||!t[A].type&&!t[A-1].greedy);++A)x+=t[A].length,j>=x&&(++b,k=x);if(t[b]instanceof s)continue;I=A-b,w=e.slice(k,x),_.index-=k}else{h.lastIndex=0;var _=h.exec(w),I=1}if(_){d&&(p=_[1]?_[1].length:0);var j=_.index+p,_=_[0].slice(p),P=j+_.length,N=w.slice(0,j),S=w.slice(P),C=[b,I];N&&(++b,k+=N.length,C.push(N));var E=new s(u,f?n.tokenize(_,f):_,y,_,m);if(C.push(E),S&&C.push(S),Array.prototype.splice.apply(t,C),1!=I&&n.matchGrammar(e,t,r,b,k,!0,u),i)break}else if(i)break}}}}},tokenize:function(e,t){var r=[e],a=t.rest;if(a){for(var l in a)t[l]=a[l];delete t.rest}return n.matchGrammar(e,r,t,0,0,!1),r},hooks:{all:{},add:function(e,t){var r=n.hooks.all;r[e]=r[e]||[],r[e].push(t)},run:function(e,t){var r=n.hooks.all[e];if(r&&r.length)for(var a,l=0;a=r[l++];)a(t)}}},r=n.Token=function(e,t,n,r,a){this.type=e,this.content=t,this.alias=n,this.length=0|(r||"").length,this.greedy=!!a};if(r.stringify=function(e,t,a){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(n){return r.stringify(n,t,e)}).join("");var l={type:e.type,content:r.stringify(e.content,t,a),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:a};if(e.alias){var i="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(l.classes,i)}n.hooks.run("wrap",l);var o=Object.keys(l.attributes).map(function(e){return e+'="'+(l.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+l.tag+' class="'+l.classes.join(" ")+'"'+(o?" "+o:"")+">"+l.content+""+l.tag+">"},!_self.document)return _self.addEventListener?(n.disableWorkerMessageHandler||_self.addEventListener("message",function(e){var t=JSON.parse(e.data),r=t.language,a=t.code,l=t.immediateClose;_self.postMessage(n.highlight(a,n.languages[r],r)),l&&_self.close()},!1),_self.Prism):_self.Prism;var a=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return a&&(n.filename=a.src,n.manual||a.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),_self.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=Prism),"undefined"!=typeof global&&(global.Prism=Prism);
-Prism.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/?[\da-z]{1,8};/i},Prism.languages.markup.tag.inside["attr-value"].inside.entity=Prism.languages.markup.entity,Prism.hooks.add("wrap",function(a){"entity"===a.type&&(a.attributes.title=a.content.replace(/&/,"&"))}),Prism.languages.xml=Prism.languages.markup,Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup;
-Prism.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/\B!important\b/i,"function":/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},Prism.languages.css.atrule.inside.rest=Prism.languages.css,Prism.languages.markup&&(Prism.languages.insertBefore("markup","tag",{style:{pattern:/(