From 5679f074829ba7c88ab3eded21f2997b0e29cadd Mon Sep 17 00:00:00 2001 From: ljeagle <77149863@qq.com> Date: Mon, 21 Oct 2024 21:38:02 +0800 Subject: [PATCH] release zotero-chatpdf v0.0.1 --- README.md | 154 +- addon/chrome/content/icons/favicon.png | Bin 2217 -> 0 bytes addon/chrome/content/md.css | 2 +- addon/install.rdf | 2 +- addon/manifest.json | 8 +- addon/prefs.js | 23 +- imgs/apikey.png | Bin 38282 -> 0 bytes imgs/background.png | Bin 28642 -> 0 bytes imgs/background.svg | 1 - imgs/demo.png | Bin 64606 -> 0 bytes imgs/demo2.png | Bin 217529 -> 0 bytes imgs/prompt.png | Bin 43197 -> 0 bytes package.json | 26 +- scripts/start.js | 1 + src/hooks.ts | 141 +- src/modules/Meet/BetterNotes.ts | 18 +- src/modules/Meet/OpenAI.ts | 340 ---- src/modules/Meet/Zotero.ts | 177 ++- src/modules/Meet/api.ts | 45 +- src/modules/base.ts | 20 +- src/modules/utils.ts | 4 - src/modules/views.ts | 1989 ++++++++++++++++++++++-- tags/Readme.md | 2 +- update.json | 6 +- update.rdf | 6 +- 25 files changed, 2259 insertions(+), 706 deletions(-) delete mode 100644 addon/chrome/content/icons/favicon.png delete mode 100644 imgs/apikey.png delete mode 100644 imgs/background.png delete mode 100644 imgs/background.svg delete mode 100644 imgs/demo.png delete mode 100644 imgs/demo2.png delete mode 100644 imgs/prompt.png delete mode 100644 src/modules/Meet/OpenAI.ts diff --git a/README.md b/README.md index 8ecc4e3..fff6555 100644 --- a/README.md +++ b/README.md @@ -1,131 +1,59 @@ -
- +

+Zotero-ChatPDF +

+Zotero-ChatPDF is an advanced tool that integrates seamlessly with Zotero, enabling effortless interaction with PDF documents through state-of-the-art (SOTA) large language models (LLMs). It offers users the ability to ask questions, extract insights, and converse with PDFs directly, providing a powerful research assistant for scholars, researchers, and anyone who deals with large amounts of text in PDF format. +# Key Features +Effortless PDF Interaction: Chat with your PDFs directly in Zotero, asking questions and receiving detailed answers in natural language. + +SOTA Language Models: Powered by cutting-edge LLMs, such as gpt-4o, claude-3.5-sonnet and gemini-1.5-pro, offering highly accurate and contextually relevant responses. +For Mac users, there are some excellent free and open-source models built in, such as llama3.1, gemma2, phi-3.5, etc. Now after free registration, they can be automatically downloaded, installed and used with just one click on the plugin page, and the model data is all locally stored, ensuring absolute privacy and security of the data -# Awesome GPT +Annotations and Highlights: Extract annotations and highlights from your PDFs and use them for deeper analysis and conversation. +Full-text Search: Automatically scan and index the full text of PDFs to enable more precise question-answering. -👋 +Seamless Zotero Integration: Syncs directly with your Zotero library, making it easy to manage and query your documents without leaving the Zotero interface. + -Welcome to share your command tag [here](https://github.com/MuiseDestiny/zotero-gpt/discussions/3) using [Meet API](src/modules/Meet/api.ts). +# How to Use +Installation: Download [here](), Open Zotero. In the top menu bar, click on `Tools > Add-ons`. + + Click on the gear icon at the top right of the window. Click on `Install Add-on From File` and open the downloaded plugin file zotero-chatpdf.xpi. -[![Using Zotero Plugin Template](https://img.shields.io/badge/Using-Zotero%20Plugin%20Template-blue?style=flat-round&logo=github)](https://github.com/windingwind/zotero-plugin-template) -[![Latest release](https://img.shields.io/github/v/release/MuiseDestiny/zotero-gpt)](https://github.com/MuiseDestiny/zotero-gpt/releases) -![Release Date](https://img.shields.io/github/release-date/MuiseDestiny/zotero-gpt?color=9cf) -[![License](https://img.shields.io/github/license/MuiseDestiny/zotero-gpt)](https://github.com/MuiseDestiny/zotero-gpt/blob/master/LICENSE) -![Downloads latest release](https://img.shields.io/github/downloads/MuiseDestiny/zotero-gpt/latest/total?color=yellow) +Startup: In Zotero, press the keys to start the plugin, MacOS(command + enter), Windows(ctrl + enter). +Select LLM models: For Windows users, after registering the OpenAI, Claude, and Gemini models can all be accessed and switched by one click. - + For Mac users, after registering llama3.1, gemma2, phi-3.5 and mistral can all be used by just one click in plugin without extra need to install many additional tools or softwares. + Now the registration is open and free! + +Chat with PDFs: Open any PDF and start asking questions. Zotero-ChatPDF will process the document and provide insightful responses. -
+Manage Insights: Save, export, or share the extracted insights, answers, and annotations from your conversations. +Quit: Press esc key to exit. - ---- - -## 🚀 Main Features -Features about GPT: -- [x] 🔗 **Integrate with Zotero**: You can use the plugin to search and ask items in the library based on the selected text or the PDF file. -- [x] 🧠 Use GPT to generate reply text: support `gpt-3.5-turbo` and `gpt-4` -- [x] 🏷️ [Command tags](https://github.com/MuiseDestiny/zotero-gpt#command-tags): **Click once** to accelerate your research. - - [x] 💬 Ask questions about current **PDF file** (full-text or selected text). - - [x] 💬 Ask questions about **selected paper** (Abstract). - - [x] 📝 **Summarize the selected paper** into several highly condensed sentences. - - [x] 🔍 **Search items** in the library based on the selected text. - - [x] ... ... -- [x] ⚙️ **Advanced settings for GPT**: You can set the [api key](https://platform.openai.com/account/api-keys), [model name](https://platform.openai.com/docs/api-reference/chat/create#chat/create-model), [api url](https://platform.openai.com/docs/api-reference/chat/create), [temperature](https://platform.openai.com/docs/api-reference/chat/create#chat/create-temperature). -- [x] 📚 **Integrate with Better Notes**: You can directly open this plugin when using [Better Notes](https://github.com/windingwind/zotero-better-notes). - -Features about UI: -- [x] 🎨 **Real-time markdown rendering** for reply text: Latex and mathjax are supported. -- [x] 🔍 **Zoom in and out** of the reply text or the size of the plugin window. -- [x] 🖱️ **Move the plugin window to any position** on the screen. -- [x] 📋 **Copy the reply text** to the clipboard. -- [x] ⚠️ Detailed **error message** will be displayed when the request fails. -- [x] 🔧 Compatible with **Zotero 6** and **Zotero 7**. -- [x] 🎉 Discover more exciting features that are not listed here. - - -## How to use -- [x] Get `.xpi` file - - [ ] [download latest](https://github.com/MuiseDestiny/zotero-gpt/releases/latest/download/zotero-gpt.xpi) release `.xpi` file - - [ ] or build this project [1] to generate a `.xpi` file -- [x] Install `.xpi` file in Zotero [2] -- [x] Open Zotero GPT [3] -- [x] Set your `OpenAI` secret key [4] - -### [1] Build the project -Here is an example on how to build this project. For more information on how to build, please visit this project: [https://github.com/windingwind/zotero-plugin-template](https://github.com/windingwind/zotero-plugin-template) +# Build the plugin +If you like to build the plugin by yourself, do as the below commands: ```bash -git clone https://github.com/MuiseDestiny/zotero-gpt.git -cd zotero-gpt +git clone https://github.com/ljeagle/zotero-chatpdf.git +cd zotero-chatpdf npm install npm run build ``` -The generated `.xpi` file in the build directory is the extension that you can install in Zotero. - -### [2] Install the extension in Zotero -Open Zotero. In the top menu bar, click on `Tools > Add-ons`. -Click on the gear icon at the top right of the window. Click on `Install Add-on From File` and open the generated `.xpi` file in the build directory from the previous step. - -### [3] Open/Exit Zotero GPT - -|Action|Shortcut| -|--|--| -|Open|| -|Exit|`ESC`| -|Multi-line editing| `Shift` + `Enter`| - -### [4] Set up the API key - -![image](https://github.com/MuiseDestiny/zotero-gpt/assets/51939531/225c468a-acfc-43be-b5ac-cf6aaaa33e96) - -## Hi, Command Tag. -> 👻 Follow the steps below, and you will gain a new understanding of command tags. - -|Step| Description | Supplementary Information | -|----|-------------|---------------------------| -|1 | Open Zotero GPT | Refer to [3] Open/Exit Zotero GPT | -|2 | Type `#Tag Name` and press `Enter` | ![image](https://github.com/MuiseDestiny/zotero-gpt/assets/51939531/52f776fc-5592-4c17-8c36-7769c537ef79) | -|3 | Input your prompt or code | ![image](https://github.com/MuiseDestiny/zotero-gpt/assets/51939531/6f6d9985-69e5-4d29-ba78-df31e30e9cd1) | -|4 | **R**un your tag | Press `Ctrl + R` | -|5 | **S**ave your tag | Press `Ctrl + S` | -|6 | Long press a command tag to access the editing interface | ![image](https://github.com/MuiseDestiny/zotero-gpt/assets/51939531/28235117-79ab-43c6-b175-079e609683f4) | -|7 | Modify the tag's color, position, or trigger; remember to save with `Ctrl + S` | ![image](https://github.com/MuiseDestiny/zotero-gpt/assets/51939531/5261878a-30ce-4ea5-b3be-9c6b9ef29f70) | -|8 | Press `ESC` to exit the editing interface | Remember to save your changes with `Ctrl + S` before exiting | -|9 | Long press the right mouse button to delete a tag | Note: Build-in tags do not support deletion | - -### How to run a command tag -> Trigger is an attribute of a command tag, as are color and position. Long press any label to view/modify its trigger word. It supports both plain text and JS regular expressions. - -![How to run a command tag](https://github.com/MuiseDestiny/zotero-gpt/assets/51939531/fdfc369a-1e96-478c-a7c2-4a93d2d7a580) - -![image](https://github.com/MuiseDestiny/zotero-gpt/assets/51939531/d7f857a4-9ed9-42af-8662-6336ce70a881) - - -### How to write a code block - -You can find some build-in APIs [here](https://github.com/MuiseDestiny/zotero-gpt/blob/bootstrap/src/modules/Meet/api.ts). - -A simple example: -``` -Summarize the following paragraph for me: - -${Meet.Zotero.getPDFSelection()} -``` - -Here, the `Summarize the following paragraph for me:` represents plain text, while `${your code}` denotes a code snippet. Undoubtedly, if you are familiar with Zotero APIs, you can develop your own code. The code snippet will be executed, and the text returned by the code snippet will replace the code snippet. Finally, the replaced text will be input to GPT. So, theoretically, you can **accomplish all interactions** between Zotero and GPT using command tags. - -### How to navigate historical chats - -> Press the up (↑) and down (↓) keys on the keyboard to navigate. - -![image](https://github.com/MuiseDestiny/zotero-gpt/assets/51939531/ca2dcfbf-efb4-4ba3-8339-5277a879e3ea) - -## Support the project - -[Here](https://github.com/MuiseDestiny/zotero-reference#%E8%B5%9E%E5%8A%A9) +The plugin file(zotero-chatpdf.xpi) will be built and generated into the build directory + + +# Use Cases +Research Assistance: Summarize research papers, identify key concepts, and quickly get answers to your questions. + +Academic Writing: Generate insights for literature reviews or dive deep into specific sections of papers. + +Collaborative Projects: Share annotated PDFs and responses with colleagues and teams for smoother collaboration. + +# Contributions +Contributions to Zotero-ChatPDF are welcome! Please follow the standard GitHub process for submitting pull requests or reporting issues. diff --git a/addon/chrome/content/icons/favicon.png b/addon/chrome/content/icons/favicon.png deleted file mode 100644 index 43f30c426537d07bb6134215dc5768fb42773505..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2217 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 diff --git a/addon/chrome/content/md.css b/addon/chrome/content/md.css index 526cb2d..e3f4085 100644 --- a/addon/chrome/content/md.css +++ b/addon/chrome/content/md.css @@ -1078,4 +1078,4 @@ .markdown-body ::-webkit-calendar-picker-indicator { filter: invert(50%) -} \ No newline at end of file +} diff --git a/addon/install.rdf b/addon/install.rdf index 3b73c4f..31cc5db 100644 --- a/addon/install.rdf +++ b/addon/install.rdf @@ -12,7 +12,7 @@ em:creator="__author__" em:description="__description__" em:homepageURL="__homepage__" - em:iconURL="chrome://__addonRef__/content/icons/favicon.png" + em:iconURL="chrome://__addonRef__/content/icons/favicon.ico" em:optionsURL="chrome://__addonRef__/content/preferences.xul" em:updateURL="__updaterdf__" em:multiprocessCompatible="true" diff --git a/addon/manifest.json b/addon/manifest.json index 029bf11..c2b9a30 100644 --- a/addon/manifest.json +++ b/addon/manifest.json @@ -5,9 +5,13 @@ "description": "__description__", "author": "__author__", "icons": { - "48": "chrome/content/icons/favicon@0.5x.png", - "96": "chrome/content/icons/favicon.png" + "48": "chrome/content/icons/favicon@0.5x.ico", + "96": "chrome/content/icons/favicon.ico" }, + "permissions": [ + "downloads", + "downloads.open" + ], "applications": { "zotero": { "id": "__addonID__", diff --git a/addon/prefs.js b/addon/prefs.js index c083468..a6180e4 100644 --- a/addon/prefs.js +++ b/addon/prefs.js @@ -1,5 +1,20 @@ pref("extensions.zotero.__addonRef__.enable", true); pref("extensions.zotero.__addonRef__.tags", "[]"); +pref("extensions.zotero.__addonRef__.languages", "[\"Arabic\", \"Bengali\", \"Bulgarian\", \"Chinese\", \"Croatian\", \"Czech\", \"Danish\", \"Dutch\", \"English\", \"Estonian\", \"Finnish\", \"French\", \"German\", \"Greek\", \"Hebrew\", \"Hindi\", \"Hungarian\", \"Italian\", \"Indonesian\", \"Japanese\", \"Korean\", \"Latvian\", \"Norwegian\", \"Polish\", \"Portuguese\", \"Romanian\", \"Russian\", \"Serbian\", \"Slovak\", \"Slovenian\", \"Spanish\", \"Swahili\", \"Swedish\", \"Thai\", \"Turkish\", \"Ukrainian\", \"Vietnamese\"]"); +pref("extensions.zotero.__addonRef__.startLocalServer", false); +pref("extensions.zotero.__addonRef__.email", ""); +pref("extensions.zotero.__addonRef__.token", ""); +pref("extensions.zotero.__addonRef__.isLicenseActivated", false); +pref("extensions.zotero.__addonRef__.grade", ""); +pref("extensions.zotero.__addonRef__.supportedLLMs", ""); +pref("extensions.zotero.__addonRef__.usingLanguage", ""); +pref("extensions.zotero.__addonRef__.usingPublisher", "OpenAI"); +pref("extensions.zotero.__addonRef__.usingModel", "gpt-3.5-turbo"); +pref("extensions.zotero.__addonRef__.usingAPIKEY", ""); +pref("extensions.zotero.__addonRef__.usingAPIURL", "https://api.openai.com/v1/chat/completions"); +pref("extensions.zotero.__addonRef__.openaiApiKey", ""); +pref("extensions.zotero.__addonRef__.geminiApiKey", ""); +pref("extensions.zotero.__addonRef__.claudeApiKey", ""); pref("extensions.zotero.__addonRef__.secretKey", ""); pref("extensions.zotero.__addonRef__.model", "gpt-3.5-turbo"); pref("extensions.zotero.__addonRef__.api", "https://api.openai.com"); @@ -10,11 +25,3 @@ pref("extensions.zotero.__addonRef__.tagsMore", "expand"); pref("extensions.zotero.__addonRef__.chatNumber", 3); pref("extensions.zotero.__addonRef__.relatedNumber", 5); pref("extensions.zotero.__addonRef__.embeddingBatchNum", 10); - - - - - - - - diff --git a/imgs/apikey.png b/imgs/apikey.png deleted file mode 100644 index 35fd817c1ec877d73352d15f786afc933222758f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38282 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 $~MMk(T=3AY{E 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 Q>=2}KL-Ts!Rm+F}7o`exMgRZ+ diff --git a/imgs/background.png b/imgs/background.png deleted file mode 100644 index 0498b54eda4c49072d89a29515769edf52cf918d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28642 zcmeFYbySq!7d|?Gh?0VIN~eU9QVK{nDmj3Iih#t>9U?HaG}1_mfQWP|B}#WXbPwGy zaL?%Hd)K}9&-?e!wZz5iI`27W?|t@up6Bd0R9jPt2%i=o0)Y^zC@bhfAlIlN5bXXN z*TItqVXa}{A1o(bB{@iGFZ~+$<(lOqjYkkjc{IVrb6oKIO$TK|CkTYN74sLX)4uQp z1Y+-|qVVX6yD4ghsM~hJpQi3?Qrin&1NvmoRngu$~3Ap*2sO0SGQC+8S5)~ zu6ISMP6t1_D4Z=l_TA{-tlyqo+03l$+um0$d$r}(Yie_q-gtbz)$E1^mid4F{2vSa zKP<2_`~6ThY2K$##tWTIjy#%n8bh96>Rqj-BRa)z+?>O}IavILL+(*Ghu_pEXhVkx6!icb}Zx zwLKi3AkRpIc{<#dfY1Hi&pAPkcTM(5!|E^02@@xcET%Z}$dlVvUN{UoK;n5ggJ|`) zAPWj&tuxBD=MsiEG>z&PC)rc}ZobRUD${7tC@bIz5m(v0j)*VpY^6}Uc`=}5Vnu3S z_A?F#va+BPFlT-E5>B(b)99AuF@V#e($!}mK55JxtZ3px+8!(A0dY7Zr{?D!4L|nt zF+G4d+|xX8MKsM--GuZ8Vz<6*Z!NAjOQMp7&^LOI{BYrAmaTUX!GTyl3YhyU7l7rj zM|#suwPAsXus!#JeqqA0Og5gA38EPdh6Z8dKnm_4$>5ZIM%1Lo`)?rrLmyil46|Dx zE#+QYwHw>gFW__3_;gnEroSq1Aetfn4eI0zBglJK@0xo}hLPHX0o^`A2A5O}J8rwr zv{xwQc`1K6jaI%)we6u0it=~@nHA;|GdI&<2|F_pp4$jW@ zMNjor$I%`Gq7&^YT_%Z#bjopB0(oTKm^jl#`^$ zE;GC+g}jglP3~bg?IZS!pk4i8cpkctSrzWJi&3?x)Ph7LZ)}z5T3c#I1BYx5nr)L-E3kR4lw6NwMotezvL+ zbqG830t0=mPiLa%txvb@=a<*Fj;Bp#&NGJlsMK)Z7RBUmAbZ0Z{w>d}vAE_-=!qR8 zq4<|Hb1k2(A6@LVLNmL!+VO{ccMw)P50xR}SYqKLO#Bph`5mq8d(kWWvwYr16`ANJ zSLWwx7Y>-A@mZRUk7pOd2u?L<$|&=fa#{1&zK70y#D-8Uj7a`IP6)$^vncmoSY9h= zW^u#e6ev~ZA}6g1E~cK{VHx0O|AaH28%7Z0T>#Ix_#A2xt>^xe17eZ}HbWAQ`!;lU zNZ+kl!VSxkIipychh_6dGmdzcw@q7o#R;dL3BoFJS2|>h`Ffj6hBsuke>8k46Reh_ z6LuKlMCBlA>W4l=8gbp(3?o_j9)P2Ka~1teZcyB97eq7qCD>xs73v^FIzy^- zJ{_d-oS6(gD&9v{lv(p&-go-#EuWPEYW6Uaq7v$3!?GIf7Z88xI>XPGtuVMb>@!vI zl_)TqN&uE-=eU?s+r&{(=z+-|>Q;prQ9mEgVrg->2fhBoZV~A)LdX}qvb%}fcQJkj zaXfEH`P*&9ZkCT*uw_kIW!Xh?ZS!{L$$G1a0kxNi;x%;l+d8s)2t~h;6m!u&bwwC5 zy`|pgw8IVcNUWDuwK7qn2%97wN=>~6vF4)0<7wj!U$XxRZJE$B_g^6Ea#y{RleJ^b z7K3VYG@tJ4VQizX#{0(Fm$P9Zz$e`9UG(J*t7*3eHbn0;)$e9q9%A*V_B}jDDhE<> zOjt|w+A|fpCd!hH4{v!nQh8Af#dSOv=rcsTkaqLZg-r|_{ONR;ya7pzPc8OB>hTe) zN4Br~bwgX)waxuoyYzXx6A;_zO;>Wty^8D0{CxCFPLv(WL-*J4qm##kkWNmJmRo-4 zu~Ofs<>G=uqv0b+pTixVg!4#n3X5g@5t zmgojx%>3KF2io!1@V_o?2!nrLIZBiCn=T0_IvYPH&&D0`0-9;P&@;Br>0LRubf z6fgOif?Y4+nwkvbmt{ms$AKJh`Ig{mPI}P!KA^ z=jd!|a=%oo?V?8m0(lNHQw%sLo_ts8TiD9LmUR}~{0h0d$roY2YTA5D*FtyIP)rAv zaXRD53y!jpzl(*^x#v{_s93Z6%p_<%ro;9fjoa>ZYd~6F8k^13>+=(r;4G1f?RFJHlWKM!CqRP!-nL&`d*2Yx7*lA*sq89UwnNEn|W{Wov) z$^bbnEF+<#LP_0}1TxD9PH?j^&n@-HL%m{TMm^*n?saPWsChYZN>R&`h335NO$1)F zqTSo!4wvGd0n&X=e9D;Vm1PpxDzE6iqj*>`WUz*?DU5m9i;*6}KXzt)*o8?9QVm9z z23y##!2yA@oJO;i#!p9vruECXZnR(#5XPC6e^}``%qAf4VATAO(Y5dNiR%SLhmEEC zeLM&iYPolhHE+IU*ud=Wl_z)!2>Uq}E6tnE+ZA(DEM&W-#(0{QE!sSZo5p-O!u%wT z**W4F^7H-G8WCwx=N=A_8a}fV5#)iIYI^`}x$pM*Rl+n;|Hl?cYhIh}9?c~p4dIqC zCtHavpOTT|-U}kRRDs^{O!q11Crq(=#3rEmvG_SmeOQg52C< zBAf57$=m4{1$x|qZ}KgT%U>`B%UC{_Yb#;$@{y4z7sX#Fzkej10da5uk>XdVO`S{+ zj$?r%)k8eo>#G7}m&*BSp(aSgwHo_DDs;l+IO#dRV1xTAn`mEwHAz1GEzE0-+^)-R z?)F!^LRw5qGSANZYC-5R{%$`0rH9<%brSpcE_V0b^`9`7F-}K#_Oaom1;1ch17i1g zAiYBOZ(;tC3{d$#Zu_wB7Bvf%-94ng4&mEy7D8!gc@S!Z6;32ce z27`P!!CW!{VTiB%qb3H}4h_1NMF43?z|U$Q=Pm?{vSQn4fCk>pl52Qh4{-&qoza~? z$>6r^>LjOni`^P`bdnZSzI$ghNviH?q#+Zmu_q9x<+RR_uQ~5OGf)9Dkl+)3F;*S! zFiE-O>Y&67l!P(n`*I?QNq@7p%anQ-UU~;hk*NCEMoNi8(#pVuic$@A=VeR${*2%R z)yEG83pQOS&KdXQ(|COoXV zr{@)jOf26n)_|DX0}`_>01~63^)Y58SRi{Cv*k%Vy31iFIsZWH{$w5{^+(ijXD@u5 z!fN8sbLeqK-?@9w%gC4aYwm#9YcVwP>lwRJ%bS0g;J!T+K20R(kB#H3)-_RBOr;Au z58~2Xe5F|b4O_muV%Rldg)gF3ggKu(5n9xfBDC}?QTSpOTfV`E1>=Z?W$V)*02>^q z(HYaYg72|$;vavN6dfo@=!dEX%(hgU)8BxI z*MI~Zoe+)_x4`L0)p7%5-$b&C@;*~{Au*u|c5>>yr#K>}lBci~v!_h2k|(D-ZEpv5 zc&YDN{GzxGad5WFFuF{Xd!D6uffUn{MN`z$nP0=b&ZVZZU8uIin>isng)N^^)hKQG z{Ik)*1gq!W>KfW?!Oc+zTtLE>UX`EW1PF7c%drAOxf*Ei$!zT_7ehr^+C%61~wm_kD zz4f5Cq(z%m1xZf%Q9CAernr2gJWfH7zp7%m=L~*1k=ZW z>ABfo1`32m=L(XT_SBM7&({n2siFuYhc&0kbPf#(|j)s?AQ3U;Xm|%eP@Jy)3;?Ons?|i&RZP}$3I$4#x;E2`}5L{I7-m#(Z>R4P$ z<4M#i`Oy{S?q!tIqI&`mvHS9OtXbg_s^6J^aom~pDF7r7alxKyYSJ3wb8W-9lojr! zrxq?hAs|fs@grHT=RM*mdhQfk#11`9k!r;-q-Dg2*Eo*@;V=|<#`Iro3M}*cs{&L5 z=Vqq!zUdkEiNtMMyd7H}oaoUP^$bPLy_S@lLtsCG!Z5?d0UZA!C#TA@$iL@9;MvvA z{qUuFkYCs_>k#VNHL)DfDr$L8KoBT^ETbnO_NkH)sPK`>%+_za*OhY}QefF=;8XPE zPBN`5@Cvk+Ad3a}y1NOt$`plDy0mN%wmfa8QCWI~CC#v>X)9Xkw&TO{%?|S7SBS0+ z90+||5A4+P9~!(2oyOJvfQ{2&p)SW1>cZGi2lCmX<5dimEp8UC@uhEy1u-SsQ{ zZ~Ra#fw>}Pa^;^!Hz#{ny*PX$oIu6FC$REl#2hU^Z*;vZ550p2Pe#Hlk`*DVsD$>$ z0$@wp-L>P=%XW}oSb-}#lPiA394vn?mJ9(_C>Y5MxV4`*NC8Rj^B+$d_DcvcN}TT> zx(*4PHo1%B`w#f}fZ1PRW*4u3st#ARr>U5*4d%(Xwds&kfBYhNjB|Yf-+x#u5^SO! zcq4_p26jpSR-gsKn1Pjmu!4QC;EDN9m0h$CC1uK9 z!>2v(;McrjUblouhH9SF+Op(xiV;9MS1^eaj;9ICe)T|FE~UNK zx9tB%L9cw5d(+Jl>#>Lx0elvhJLtt5n{E$9gMjCC!ljY~gyn>4eoWK?`Ae16 zEBD*#9=JAG)c8d4LZlok3@%Cj;zWUGe)rt4yxg3e_7h~!D`d}IB+4(F)S@%bYcuP8 z7b3-E?z0UF`h6N6Wq+K4$E0zEcKEF3F*2_np)$!b@jFmI@9$pIaf55HneE&PpS(^+ zC4Q(fxE^$Q-r-_*9kN_)%6AnAfUP56qThWm)$!RznQQ`C>p8a&UwT6GPv!juf!r(N z!z5kusrojA3(sgtLkfIeH&)_gaKDy6M&CS{Khg$-(WR%iU$>JuV>s87&5f$iVdUzr z3k43uYxmcP{fS6BsEj8EBkN+zcIIXC>Q1WH{JzECF?Hk;9464epB57DPNX@mD|f2P z*uaAuyf#=v%p>?t3dz}6!psu()TysPxD;O8Mx}~AzM(G!5o`t}bL2msZs|nzMIUbb zZeC7;oO=E7XAAqL)8+bo>(0=y7ZvXjs0fMP>;Jsv5b&HeA1=4|Ct^clG&)lF(t=U* zY*jUU`WmDgNG)hf0AYgMlk5E()w+;k)p3vDbohiWtQn{neM!wHX{7w@7WJ?weaa}B zBxTwH(~QhX9rM?Sm&UYq3f)KE!NW(rFQ0`0w8H_(Dh&a0QLQ$0Az7K!p-b~UHyp2| z*j4vCWBT=_Smp>nxSO#*YJz_#X3#6_Z8NCfx!3~Z)nBl3`P?+Nq zGwd1vVSrz)0uhW(ZQr}%!Q`>C-o1K2U~h5np3k|maM{TRWZUJQp5}N|F1*XjwXxJS z3M;>f7PS!Yvu~TNShk|Z4JNjt>9pm|DWx25bGk2G!CEQp-muIQf#om1xzEX|T@lYYOrZBZ^+91D;?E{2 zoFWJyRBu3@kj4b8GU~FqmO#8P{=lau;aV6yFkkCkvK5Or06)|?-F})^Wz!&2K4wfb z=te>9nX=;@Oa-1sn%G;?P(k?nwXPHqtZ|e>!SbzGIoE zfQ>EvW2(QWap{A^D@>HH3&?;_2`Z-Q{rzr=?N#%lRBsB2#%sxsC*HvaZn(h#!IZws zs_UJl)jAEo07DfAM2F-ruv`J!im;uXUDG{w|6{e#Id)Kd(h)8jKH^^a>7}HuKUp_Z1rMtbNofR}d0`Bu^W$(o3%4lwtODB02qJ2Cy zTd3}$%ZmQWNa+1Uva*3LFI5xS_|y;31Cix!7iPv>S5uw~bh);<`?L@RH4MsiSj#H4 zO6m`{D}5&LjR405Ch^-VJ>azA@@%8I(&t%|lD9YsvE}ynca}m5WVN+C=4KoXBj(y% zf>K*xmCTa@hX6W7lRzx3!BLZ3ns51r;Vrv8Lt1{1x2}tm{$)=sie~K&2o`z%F!d%| z7$9*{TQ>*@%M#CKD6JYlplg{SX)$9>M>c+IKyJg!!~Q<({t~YB1B+8R0LwM}oiy1G zUENVm$C&5aUB=|1x=2ZTH|pCU)2r>D76Ma6f5*+&Gt7t3ho%-Unf;Z606s+mOmjP@ z1%g&@JiJ5J&-G++`G|*XHT&jHDQ5eml+@Q{R|itrAgi{Rg7`NxgQY*)!WMsoPuOp! zijQaJ`X_=~M$F}wNM>JF%TA32uV9;S0$4Qw_y>C*{^`#m^94Yd2e}~a4u&z?IdQSS zl4l7cgm1{%Id0GMgb6b~HMKEh70Ogow`A*%`I*$wOk-(ePJO{~6ZbmAv)1slZ$7|L z^x;eQK{-?aT9lv#S+y?xgAd^>O5`_H7eob1b9Q1=rSah|?eDE5JF(^Ykh;y1^S(gC z_yzPi&an1?P@ujw#nwYKld*9KlgP?>>|Z0;#CyN3ydq)ATq@i34#unP3hYuj3@_Q8 zq**aAN3f_BAsN6`(ZlM)^bvc2$F1A`DYO2!^IISb3h=D=SwvCF!V8}e)0^LO;S;By z-$G*wUT%XN7Q=CPb?3}JS}zlrQj(k+!gaofk*k67_s{;k;ay zRjiD;q9mThkD9Qve(lqIEScVX1EW!Zo4o9lFsq*pamWS5HT<6^?p}EVPvGDa z3YxOz2eH{&(_ip8lH=ubpd?;-$+Y&b@Vy}b51~-r^n>9%XQf12w{E^yVR2(@d`3_A_l7R#p8LwXTl?{T;Pz&?t~)BmQUwU*9&u06npB-U9-jD&&d znGc0dY-xou_h%tHtF;8Ox__10J;3xFUV#OqiBB1;4lYN~hVDEOB2I`!yB98v>N}4D zn*49(m%`t6a9U`9&US8IF0RdN>a(7~K%B-6Br#6*7jb>d(V@yU(b@gl8>fT=ns$4( zr|a*#s^!}nRLl28DRF~OJMsK)13Gn)im8w%Xb^maAo#?&xiM61DH%mX-+N+F_knC1JpGP;R8C`yXQUM&-962M$3ySz?YR(P$( zIrFlz*bIRAGbO+b6Abv8*}-uX0*2sclrd25uToUyvh*`}exRfJ^|)kopXN+~?I>?W z{7vq*$&&!)yH`5)V!PLGLgs4;1StO9(4dQe8%|S zl~v?5pZ&C;>6bcZTaPKI2fq>e)_0jKV7J`#Sh7A10SLLM+?205xgNp~R1-q6uPqL; zBuyT#zRTFLizlw!f08~rY&uOmQ0yPuH2O(0NCMB@7P!GZ!mgnHQ~?;SFBds+gR4JA8+|&V47E(f4I+ibK~AuJ$uf zIe%*5J{#;rrdmEecTOO`<^3c>gK3BRrdK0m7SZ5Xd1mqVjRMd9_z_Zp^c<`fIx$;t zufzxdaJ>}e!T zQRH{b;;Q&Rg2mB$QFKrBUB{Yzdr>L5eYLdFzPAmyg&u3=c}XqZ><>T@96&tlnN!E} zMSH(r%tFXLj9h%s_VjvDPgk|)BK*^ly8rO<1QoTTj^)k>fsi_1^)w+Q=>;eW0J302 z-I7a_E$o_yAQ73U_FhN+`m#Y88k_cQd!Z_nO3y53s}+bi9c(o{h`COntfmeh8B$Th zeDkV08YEbLj1WMQUIU(X`5&xpP6Z(m|2IWf@Yu(!^0LS5QU;f+EWW2cF#1hf?WFKA z{n86s|K&@}q|64kytU2BK?2K}*8X%W0~UYJS?^FWApEM+wa1ZQdvcg_!u<$Pr^4Ot zK;?G@90&C*WPQ+^Zv1@e{O$^LI#OLdy)1`LRk*<>?zCP@h++W91_1FNYX2)iBr*X} zl}a7BF?{iJ!so+K>zgx88GZdtC9I|Qlru+a7(Px`FuAIr(_aQKCqA~ecoM^T=6Z>!Y>KpC9@4PYjct@}cb?syQFiakr#aA4E4mNdc zn!oeDUYp$F(jNcrYjn*$^VhNU(aHj3+af!AO7UZ3d zP7sr~fV|{j6t|Kqs3)3_}bm@*O{ALS9(mP8WcuU}*D zXQS|ZuHUk=6I__UKjQ`);eH(MC>HW_tN=UEr~J+I&w$pa`?UoAoES4mWZ&g*p8BYG zPx9G%^SbTr7&fK>)UBM`y8sNSb0>adom577*j#I2ul2A#{p-iwouYcJB|At)7D)ej zi?%yX)K%<>=eN3E(MGEzO|P^ae-|RB9CTN2@|gt~veMorl-JgA2x1ZjZi=oj@C}I8 z7GQp$%~1=mJLF`n`~57Y7KPDwuzj^k4s3G0H!Ri41SbSR%|~-#63sAI3y#?dwL)X9T;4G0Pe(W zNrTM^E?W0~6%`?mbad#3HRXFeK}itgDckyGE8fePM6f8AM@xsyW4Ew}g<$k&J&V(0 zM=D4o@TGIicqLh*DQTCJ>J3h_3_nelM^VLGET;lJ6-F_WewCvQeI&2>jw+%Nhg^0R zT{$?wskKhqbidmJ*8cW4fv7YEAyuawrWR_JsoXWE^M?n1bfHS9uaE z_UjhCA=<9(F5S&i_z;s6KmoQv3|Y7JO?zAk^vysB!EMH&!r+)HwwIFX+vfMFwKu?x zeJyCTIOi43LDdql^(gx^t|#8`CpZR>-f!+z`Nb3_^#e`rm;r40JLcxqTd^sb`Y1GB zDg(Vwt$8Rx0A-mFh?GZ-uLxr~EdCF+BJ`ol{18QO16Y^Okrv~fX+icOT;RNp0cPLF zuI%&2K3cx#=RR)+0~}u657Bn0F!1>cJb{C9!1b_C%q`KlwrsfO<6xj262mthuDc~p zNs&`R+<$oPUX}?^Tn8Y%G!e9{;0UH*;|x=&91geL50*V#+?%!wc^$r_M_a%hLqKp$ zff)jtYVKn;0;J|lkd@SdA@&R5_P%VX1<9|M+q_1_co!8ezBA(!&=p|8CrzxRb?o`>WyE~En*vX`yBr^bjQ$A#7>~Rcdp-%b zw>Kp1< zHiolFM79E~OCa$v%khc6eLkG_d^2bRs70GcAO%ZeDp3p=ry78D#M*m6Mb=BZJKtnS z_cJJHBD4Hf%$fL!6QwGQF(Uoa01q?>e3@x2*pjIPy$?D61UF=CJ=WjRmK`juIls4u z{1z@RKUto$cJF#yp|g>z6EM)U|yS^i6WPv!#Wt?z{6I` zNds5B8n+L5t-5fLB~9eR8m3%o3ds_~4gO7xdtGy;?{c%x7n<$=MFf^CC9eHQRiU%# zXeXBipJ1)|Sc`kEw=aiFQ!8_46BlwF^zLnHo6io(gB#Cc zJqKgR4)hm9l03+?6eITI=j8~!tZ^wIQU0KtFa#TCWgaxDZIV>u-^@FitC?pe!R}@w z8;Z}(aL#5X+tl;ymD8iW8t5~5{SHqOTQKdvK`i)qK(6VirV7JP1sGeg#rJVGb18(2 zt*qeIn8!U$#S&iS!F&7WN`D&?F`Jrh!=c|#Wp5Jb3>j+9{KbTWcZ&o+BDXTWo6$)D z&KAbzaWBfK1g2@dpjP0n23V*Z=o`h5VxQ0u;(WHMj-~VSsGKHf){jvEvV_NhJXD6n{UL?kDS47sxv6QC$tN;%og>&BnH;z&JRqx~# z)h)@N?&acury}ho*xXo|3nGb1w@*C?DjJrs!PD0@K0EUSW?by61+=H1g6x0C-2hKF z)l|E+F0F&P_}VHcrGAovN5ouqoXVkRDwMR-#GsKGXb?~EiK_Ma8g>SwFMb}{|H>f- zPw7)F?g}eBXGR}4@lt}{XWQB;h~}*WT)#H=AugpYFe7^(vK{XR2gmQ2t?=FqYxk!G zfItL&{ODlC8nY*Hi`|Pr6Nef1_*>vx|x}ZNhW?_ zN;HPx#pw+vjSMVxXD& zLybJR={|0VkWxT4FU;`DJnRJeFx0m7H0EFKX}(215{+g6Woq_@{Z$2~lVIN~TkMZfK3a%Yy0#A;OyTV7zd zhO+4Kwl;3?D+T5)1K(=;C@=>PMKsI<+@h6qdZbNf-g^c5%u?)DYS8%0 zc!p4BoF6>Wg_Yl(zx3*RT_aURv{L--O-|P8C-%Q1xu)j(k6jesKBX-ytzqL2l;Ia4 zAcV5SAdoMRmaz(Z%-Ic?F+~UUvQ;bWSP-g0AAd4ZOJ!CXt1EQBRz5$2cDsAWN!1l2 zTt(_9s%A5%rJuY#c(vl7-ZsQ#{_D7CTINY(lJ5q-BBbSeC5bi*i_Y2uUe7|DB{Q-t(`I5L)Ir*aPSK>n+hHvP4)z%CZ;8Wy(N9nS#JPJLpRLf*o|E#Y+ zNFD_GucCUg$GT3?c4WUw9j>3d$0ur$<7VYLPlZoq5*Ig0v0MZPd|b)!n$yC39AReH zZgXlO?va-cV^hkG&uV-5Aw>H@)?`|_j`{33ed_}n{rk?)&~GAG&Rmz#bY zOBk1RG(f#1n-e1>=N5F>Qk87i2w;wl9$Y!sRIS@${u2R;UFUN0XjhGHwlII{j%#Qu z?_DY|dY3QvsP5~8rIYyod-(Eq)wM^u=S^c3&JRZ#V&wt?ES%nKELO3|n-sM@Pe=@3 zd{oi>(8907? z=x^n|OVV{yBhQkhwsFn&+=I2?;0Rc|>liXDVgxSsx_m7LqRrNLF&z@jBv;SbirN~8r zoN2sy@ay}uFQglCUg*~{tI4f40-67hv5EME(3?XhlKrKYvfh?qqPW3mM4NDL@?$dE z_Dt7U@Z-dbFIs+@ihe^q!pvkH>0+#PAuSWV-Q!VpIX>2vjF-2YTJf5CL(9Zxxbjk= z4Y@#Bc#^*D#SnJLe1P(GF zg?dGfZl>Dmy!oBe<0{*;@J^!YP)UHjiOK!)bVCbV(H|DD%-OQHaF-(M(C3GonV>1v z!sAQM(QfqBiGIPFXTD9!pru&@`Wz+Pe!QPm0pfYOQmm9T4<~8-XJQi_-JC?*_eVv| zgWu&M?APio5+-?i;)-A^rt3DJb&W-c@4zOKh#lM>(@(cywN8JG9t@DnLqvZ^vvpl#hUX-$glIWEGaxo;`jmig4io`=<~BuNsF;Q8B*JAU0SQOgPiIamqbE78qmuk%d|Nr^YF^S?=$b-pp$= zq+|Av=NW@Sr>89jSD5Y+CCM`8vT|>~;SIxG+fSN8Zqr!RY(y{TU*AaC@)Yu&HfKtq z8_;lOn07(Uu8glHx?Y2}N0j3HDp$32>51c>&ng-oGXT0I2PqviD1(_)az&z7z2jR# zuX9AGI5n-;j;^j(dYb%LLvdwk=S2jzW>IuD=|=ysOYPk%W0Bb4*B1IZ`HHg8|IBg0 zS0aY0nn#v*Pa^5a2Ktg=`k&qMj$q!)gCmxouk;eC*rDe?G&zmT5ld$K)wefV#^qYG z{aV>m7aN9``w9do^jz1?2 z3O<^+k|(FOJEzy<87^4V+v7j& z6nNY^cc-z1L`sp?e;y1Zyk3dMThlXFM*Dm{NG~GwS>g8tK|UxVmXbQ2sGj8dy0VWj zfo$r;mbPJgGky5aja{a+7|7wDtZ>g+f{>T$Fs1 znj~!{;WkYeJvSn?B^lt9Kz3&?H>{nfhM$V%e;Ff3S5D2Suk_E$wY@J6sIm=7Azc`n z=6HM{t%+Ej{KM2J&dLIjh;g(T->*f*19%60C+n;KZ zUlAY(Y*RTc7;FNvH{O`g$G3TpCr-CpmVd5dn2k(Nswb8bTd3xx33Y|hu26SIQa256 zm2*d0v{k)q=qbgiKWXR-u=y+x-_f^bg*jzCP^5pDI2m#Hd<@ItvvK*GYKE*NU#9^( z!ZC_G*Gar4Xt_@8T`q-{ry3)&QRPS+YS!*Ba0H6MKN!?JPzfgT}}GiW-7{e^^xzlYE;Yp#J(z*T(z;f+d_G-pMgxHHuile`S8`$UKFY| zxs5;Zk^Wo3W!1RSz$x)n`mdL5-<(ULg|tF=D(@dYtS@?Xo(Jx|&yO6#PVYN^us03~ zW_zB^OIqA`cN=`Jv*D#@1)ZrBm`*kMa?-8~e-7?kLN6*YcI>p1|2Shib(<e`E_) zwH>=43bAbuN_Mk23%A-%+1@=aSKXJYVn8*)E=ka~ZWC2#YDqu22(vL?u8*T9eWgn9 zxj3J`ezA5z=uKbi{o8rXE06F(+v4xdp_nH1(z7i#!Th#SwQ~L64 z?or(8B2(jS!-sXiM$irQ`!FVa(2)aW^ZL8Sclq|~{#s+qzBtrR?sJx@!v=QeM+?eYFm9RZ=1!nQF@)f#__f{EWf zKU;F#>%CAfR+@5~5HiX2K?gk&-#W5JsASe;mq}4cx#WZ`Eab`GIxX+!ndc$lveF=- z9Tk`()TKY>9d^_~DKlATM?h1r`PURVEw}JYp?FP|y_?RqPV@fuh`|F*n$G1%mKScD zXXA_oh!nifB2&nx=7>{4_KBNN{ZYahUuQIN=bI4Kx+6oqvGZiVJXafbi@0f%5>xOA zrJcoTIQ*sj<>W2s6cS-H_5MrA&s!UZC`H+^F_#x;@7Zr=}Eo z&~9Uw%pXTDZuX#jBw?QUcE_(MZo-+fHFj4;;zoQe>&s$mA}>Y}cWZ4ds%N zP9OhI*NE{XomDrE{^y0%t8yO~mVF*j(? zJ}4qYX1R=Lq|$qtuh5x-w}6c^@5uUY#o*bk=4kH6J^Xn~LiuH-KIXus@?%1B-4znc zTH~(m3X#}0F3_8fY_+GnBY9Ps+=sOwl{~7VqAo>#f*UJzq3&~-p1_ovbMS>R)a9r{ z=;QVy*c!xPGb-ns-bQ^zS$cQEY@v8@J|yd^t&CD|wZ9v+=M@Bg-%^zd30vcSTZPQ|sdG8o~jWS;>C^ zTuHV`Th~k0UCt+3N4y+dI#fBP@q-a=(WmJ74L48}r>SZQ5 znXF6PNW*)U9WP8G-BN~eU%Z3TfuVifD6+PXK7qLAobjT=bDB}~<1$U9km|w{R*8wi z319ty>?5g7qh_$RF<0Boy2+;(X%9$LQN8KvTi?LFfp$^NEz)X@#j;49v%5;&K8HUP z$Byi~FZe6<7Q{@f-L@(g^DMq*hdPbPd|5767%N|Bs#<}b$JHJO1m?0epDZJ4%S^|W zeJILcKbc4dpPG*=m9q`=jRJVQHA&ZjVD55`T=%r%l+86VmHfb4De@xYV8jI?{m)zF z)2cUJ71$`xAM6n1Ddcz1{D7*Wi4B=r!3DSK0`gpW({T=g3^sQQ7qC*_D_at7L_pX z=a!XPF%=JwCga4Eo&xkz)VY`L#c8_k6}8m=?7=F13gR#Rue^MGp!1-HF7*r1KxNNb z@kW;O?U;VlIpGs4sg4WR`r$XtHkUow!+qnsTdEwL%-kLAJ247%eXy1 zeFZ#NtqvSGQi-0hbR4a`OH+}_4RDK?cOhE&b9kO_h`QETjaE9RM&8k}Vb*$z*7-Qe z(V$DX99#7%Z^ee{ul>%z__#ffKlB6ak@9n*p&QkEosAel2IIkO$+5xj&yY;sYY{#D zk&jX74n-wGc=Ywo4Ca{V-0bz%C#woQG3`zj*Df}6Km@Mq`ib=UIv178jQpiIQ9dM5 zs?F!w`koO3hxKdqrEctwD8zQ#L7Vp{4{a0O_2yTZB2xmkbjuG~Y>saWxi-{Sam(MH zEX{ScX3lc1J$`gM!QI^gAfdyXebDjMI@_0KN!1~x*Wlf*pND&gkq&Dog&hg^e7>DW zB5a?VLC=$nI&VUoSA5KN^*l}6n-T{!jrrHgF0FsrvS5K*(975Fqp({!_dC5}&OST- z#$2eB*6K{Ry-!zOos8L>tQ}QlsXxPbuis-(sXOx@VDj?6jfdqEPS}G;x26B0)o4;@ z^N0Rka3MH~+0N$V18z_OBCns+UrRgB40+yfhMj1%9a&l5n|QWvvuR(Q3m_!whe@bI zeI|l?pPj7J)k{7uKzC5z;!JI0p{Xp_!??lq>k||AgOp$G>*!M(y$ET$!V+O(i$u$! z^r9i%vl51T!Sr}NjU*8s#@2p6#Yg+W#~^Ddvho%i4@P6!^2gl*=DKpF{DhUQJm>9C z7a9viv?%`8{ikjHM9yP|{?LTQQlia%d^Z$>VNr>Ms}WT4Cn$m%(k-EDTTWHg#H{+*G-D`~jF zhGtq5`Jk=#o7gi_c~=%XDBXl@*GsF;reZD~T`#3));8Tz6L~gx5+J`6;fXURK3Dg% z@;D6T(k7f)bL&Z!@3;jD!epIqnSAeZVzBIs2O=ekH*c6N;lonNzk3>QH^P1y|sD z&E7_Di$95zWwkS#7MsqlL}J2Kn%m$r!6P3LAPyc3{V{kN6Uve$I}sXWWFKO(8*+7F$P!7`MAl>^%UH6ML5jwf zVTLA4gP11CU}lW_qx*Y5ujfB_UeD`w&#z;g$MHGO^Ei(4IN$I0XYM`$^2*TzMjlaz zZigK84Wip~GtHV$t7}UYKNx)DNNN!4B9FFK2trZsX$}LERj;{7&)OvcaDZivB^F|6C zt2v9UCM{1_4l3%pHi!^XQi#`CJ}GJX?U8V~VDv6Bf9QyS+pLxm#lvSp<3Ui_fNFz+ z3xCmWgKx&EgIQp-6Kv!Bg#v(9m!t6c^#h|*RaypH80MDebaAaD1xQdj1o1)CY(UmT zq+i{^)8}Zmw&vaDp}hivIN;H2?5i=uAxM-DgP;Ao18DY9=1#0}G$qoP6m*X0E-R*- z<%%7zs&TfzXyMbU&}@6<{Pp7Rewi2Uxdhdc!!W;{`MbKxFoT&aFDYqFf?X3Sfo%G8A zRfTzg{jRN)Lj)501E3REnje4vPl;#bE8zmLhwJEj)wGXYt;_JV7=cwqWi;ASTMtrGY;Of!4qm(0|Krv zEb0GBHAX)P@tUayR$xhtLLDY9ZbShGSTCsoQ1J10^i>fjw+6;fWeP&qu20@0{ z2GFc^s_)WJRx=sr`fLF?JIt!s5Dof9ebrQa{P|oy{}Kvm zu(s8?iZ;6T%_!-jg}I{?2aEmZQ5~00w*$Ph3j1BjrGkCl4>fO$j-RbiEo)8}jia^J z)3RSUgTxRcE9w+O9WW4Ki_NOImwHLT;gMmp{zRq}I<@y!k0|cnym(Moz|DLT@ zi4{lWFnT4Ol5cv1%lN!M_*~8Q>q18O@QZx;lM6L%X*qTK#Kt+61o4MDB~do$j$h67Of2))c443=r=fSkH)%6AFU?+)MF-@CV}&G#WR{PTnBZ^ zkQ+@`lq>}ft3^-H>!rmBWqFeq>m0o6ioQG|xOyv68)PpBgnC(#irj&#s!UoWnFV#Y zv<6sy@dr2w9tvVpqsH&bXx3S02G;ohzqs$!G+T%IV7 z_Hx*ws~hc!0uB{GTO9|cUgN5#`oBNOR^iOAz14?%c=tk^ZZ==@V(Ifc9 z(Rr?WL%(Al3-r-#d-}((y(mT~NI~j5`KieCKaKL9PU?kJ4gtmf|rDYM(RLlP)A`2eUvn{75j00OWVRmJBYv{q!w`*@j$K{wKR9 z?`aMi$;@BQb&PLI8~}S#+E-QIVp(#DQ%;=w48l=t8jY2eCEL~GP(4B%X|s6}wRMN@ z-vdnT)ei>?S6JUpLpZs@s&W3Y!Y0;sLEYD@#2|-VHD{8z6q-73&YNbH`QSfROCo66 zF8GhnW-i}Z2la>@HKh<5Qjm9|!|ssxlW*o9uyvyMwTHzr$Q`zpKD&{(KMAutBNOAb z9~PlmWW{4zNhL6zyUV%`8yE>Ijlcbh}=3FXfoh<|`NjiU~S zn5SUnzZYLIaXhQg2s+4sDJK|JKo)bb%q~J0rM=_F+YffM?Ux8nyx|A?7eX0p ziP?jD9;do$ZlPs4Ha+6m#P}eo^;YbD)pfbpkIix_Wnffc9Pex-x$3vy`asWeP9kB@ z_RhEDJBk!$T4~ug{f>++iTEE*j`{-p%Z7eZo7-QMv3gg^q3j>W>X5vGNUGdr#WR1I z@Z2pK@y)u2LkH%N_Iax*Hq6F?C?X#Wb8FSbdyU{a76&EaBJF~UR6w(Vk>N#Z{ zGf^y?3%=5L@=yZu3awMSX==q@Pz@v}7t+10!kWpS8D;DFvi5l3VC%i^F2$$KeF+9t zZIc9(U(ED!qkZPvv*I;}q!eir*Z$0?+k%j2#C0c)bhh!yXS`zjD%WJ&dL@^m6X={ zG6a-3k7w@1Gr|zUqOxeC@?OZk)m_QK6gzTLR)oio*jEc$pIeL)1ZWjKxtXYwktcJR z`2><_zI8C4zIJ>l=HwV~B6en8?w~j;@ZPl&rbAFbF8?UN<=9L7@?m z`_$0c;kL){On+0=G>baS*nLN=maWZE@lQsrC5=)I3Ig%T@usare<;D_DM~(Kv?EeT zWJsP!9BSIYh)hXtzs7~NOn)y7_dO3WB8!9^RZbQ4Jf8-FPH=?K5p$n^Z~t<<@*D0uuUJ=gn4dn4+A|u>I9_E_>`W zTU$+Mly9?>Qkys*q+~4`|A*aXjMesO?kZyjl@G>UX$%~^A=7Yn3qG*qRvDCiU}Cks z>LvA!GZD=;j?(L&jU2q(DnOchRF$Kq{x6(8gpoNG*L9A_{X^F0$u2Z4s_he|iw-Hp#%>1*?beV9xaemVgl6K&C5L>+V}g? zn~CVGN&VSX&eD;kea`A7W77m3^Q!hVLycE6I)+%P2AR^1)sRiZX^$R=e_m@T&)&I% z4>uhxUyCL(({V$>UX>Kb5=28APsYB;b~rvth7P%aNl#L0RvQZD%Y9*9b(piNQq>pP zCnGCMNA*S+GqI~VSA3t&Cp9;IZ#Wrx;-pf$=LE0oNvvM&O`o_El#t5LYNGXxOP?gO zQ2Wf0iwoy!4||~x-r4j|5JKcjz`p*NtFC#5JC_;*KT6J_%dVM9@DA?!T-4!%G@~V> zHNnbALmH^-ibprMrw-o~@6>GRXZY0X^m@p0VHhz(WDK7fvx&g`Og!@gD2WY?7ce2u(HH+t_|hG-LT*Qca$5shmPdrwv3 zFK{e@op|2^@6q-d0+^aoDKb7%y9>5qiH}R*7EHfoQa8c$ow>2 z33(2v-fUYTL_*?K6YR6fcfngd#CEii*rDwqWoI5G*z~CvdGivfvF?z@Q&->FJZ~Bj z5S)H5C5q9EXeinn?UWObcsZp|*+_1E+>3a3%mj6lE^(JDt9~%027Sv=+oy|BDoMPB z-XaQxdkZ3QPg*y}cR?}M)(eJ_LI$;0vhI!b9`E)0Woi5S0jRfsAkNIy6PqS=WcYjM z$^at2TwX7Y`CO>E_hVaD>4xsS@JP}a?4e(#+83Qj3fu0Pf`J>1r?a?^ZIXnBgc(DA zN~5dXudLDzqp0dj@^7oDj%tu2#w!ey8yv!c<}t z+krO}*S$9SffklzHEqpVS?0cBJ9>D^tUjw^u*h)4GEnb$ssfxywxM8JtyfD6Fl7PB zGSi=jhQlJI{mWMOPDZCAZ5mCx{FYwlEWd&VQSa#tpKr?+$R4U0f8c`^I*GxBSPX>5 z`}GS9d<8C~m8Dj4NCiU*QcpXUUD7`Dxn3OYTIf(aznR#!x?IuUA08ZfQP%+?mMQ7d zazIEQ?~U>WOTxILeAw}iL?02vyYGczG^-o4M5%>+;a?nrl02{%-w4d@ zJv5z=M+&=!zJ_Y0Q&%tl0rGCO=qer=I;*b6!B!{B&xkUXKKe~aGJpx?uDHVySvvBk z_rHz~r_rK7Zy6vEfcooESEIRikL0}$@}bCOg(;w1*CaDeVQ@uvJ6 z6)y8uVC9c18Lr9&oW~qu-u=&a_Hk-~^XLD#t+Vt#*yMc?|z7%)rST zz_iW|nn)a(6|*MS?-oOw+sJ|Q|5VgkF~Zd}h-y@a0aR;H_JUnafQZP&c|JXHoI&)# z;%a$cVnb0r&ds-jLfw+>hu`Si`HebSZ8{0`xIq2jjjp&wh7+jtHE^dau*Er|#E~@8 z&YC0{<@V`h0Q$S2;cp8{GfITP6fX_>8;~a@8tS1<59+qZ-~DGmsp(mD z*?ig1qCIcUyY~fM#Q-?sjza1J-9GbidHnYj|A>|r0LBga!mGm*q1uyro+a$6>fC)! z^ozv2=OAMlfh(FRS66WgM)i%Cb*_o-K?^8V5A|NHshC-DFD2{`ZmjtNGL z&7I*VNi6z9oYCRiV4T73Tal@xzWGch1`nuZFNmH6#O^=}FooPQJPMgzwNqH7ALR-N+c*Sz&K zjyCg`fRL;0Q~q9~u4k&KrazO!!>cbzegA5)MjTie+VMa(Db9Al`=)1pyjx~1&i{h7 z+iY8dqmyMgL5O|t499YS)xciU5BMT+qjb?Oo%*5CbkAX4Sm^yo>B&FOrB1fzAC8c*eYcadoVN2Zf`5ul+i9EYM5Ku9@B18-(;hxQChU~ zsfWkV^M(bWa(#&fT%xJn4J~kNQ7-+JZWfr7@jBXYQoj6 z{nSOaJoSE>i%!iJy^%SgXbz}Z?Gu^Nlr#e!>F;|dl$LZd{Qv^oEy}(Yo}zNCvB||~ zLRB5x$mek9owRfd`E|SPF;Kr@tH9S%RaZ52YX{BTKBTQN!oA6;*yz+I>I7H#ps_rw zBnh7|3xim)-n=ErBW@`GeHOR*1N89y6H4DpNAF3NY!mc3fQbEo|0@k4;`vcpGNm{@ zA!wtSU2~{!+x(tnc(RP?5{c>YdZ!|lM&b2(WSm@4{!m%tVw}D2#dll4Oq|$Xb{a3m z&sc&$g&sHR$F1|6CNJ(UrnOyD*O0j7A@B&0h1=6T6b?fcK0mlUY*WI?bx`V@3~0wD zcDdaE`0}1O>9UOfI5h8=cVp*G8p7Utw%*zMZ%Uu}#LW!afTXUgnWDxo#QEc?02?W- zcrb-{Y@o;8_08s0gr|oBP?y+ly&UxWr<9-ktUFG|S)KF7do_L;{A_5 z#?$_BoF#w?^|IXG10Lh;chco~{~5JZRwnV{_pm^)_%e0EsOEkSS}VPhPP+UcSuD4rzg($P%}ccT)xX=NYZAt?c3 ztx3NKJ43z|@6oIhbT9;zVbNnNda{T6Ytt4h%QHFCwi~emQ|MW}++!yAdtzw;7(Pq$ zsp(@Tt1onykHmzQR7Y=0RO#mRSF})9ie+J*az!LuO;wpn-;zOjzp>|r_GSkC@aRX}*dOGXb!dPE-euf-4 z8*Cl#!TUj;t^%!}s2yhm^`8k+7*_K9AT3!2PG?dya-`PwA`r9DKFk&oouN#;HG#v% z12QM+2>N@>S1zxyU5SDjHefB-##zZW2c7lVIz*-t^-TLH`_s1eJbr-6(e&~l(62q( zw>d%_A&59RI$E5vF9H7bt%Us21iznU@pH0fByWL`9S?ePvEeC}nQ^+mYCCC0wS|K3PT!_m;cUy}C^B@yGmZHH}t*LW|VY zfL-zJiX4+2qLexdc^e@4^JoEYDEN)vT5evljzPG~wU^yGm##xFOO@dWMRb6Vr zP)G<i4g%f&PPWK)g5(%zMY#T=w74Y8Jn6LG)-F|W z@eWYnMB;pOaCfi#<2Y$sMVCk9s%k$Ro_xfIY<<`d9l=%5PnrV@gNE>Tpg(yj0v*Q&9-6t95w&%Z56@h^u>60I1Jm}HT>IKE*?A|W2r_UzOiglJ*d+X_@bpw-GE33K2K9vW>h91@HLfjR`0loB@!QvJ(&Sl3wrfGSpt7_h&MFK>54 zQ||elZ{GM;5Ou6grRYAcgw!Mn<(NMjr8wZ@5;whw^r7{?bzr6ndUk8h+O9eiq) z&J5zT90GJ>>U@g%eX zAwf}N&6_A40>&0wG;VlgVhfclB#3}G_bpyJN~vQ@#`DU#M#WdVMKyM;(rIyX(Vg09 zz)JZ$?S@?q@b?I&T$F+Nt;aN?zmFIjkV~uzq~o8N+7>nliwTPQX}0%|_vY(=oDO9f zeYB_9SOG&WLB?*Yl8*tKnRry8;FLWSp)5nPAy+WIv#TeRuqIX^)tR`Uz<#?|@y&LsDXinOC?@ zTiCJ4y2OFPeJ#RKMJ{ztz3RGZ(&?m&7@GbC+655h!vQRIM=e1+O}w~HI>I3EV|T@J zj{_aP+u2xEb>LFey!o$5Vp{BlEnJ4|BR;`Jz)L zdKiJnF=P|cO8B$bPiFJMpZ)htcEm}6GzhVJcPk1NbJet^<0VilD<{3?0Yo*h<8X`C z3ER9hL1mv#ois`J(|Xf!jsQHGuq?eD5s)iW;MS6bYEIzb+EF9Ev!BC9exR9fq|jdrz(r) z&9Se;vcpDq6<@-;=MQ-|ED;^`8^+ytMVH5G#|1tp7F)`7qUA-_7X zuqr;_0b-U#h?S)qN%UbtDv-%bNl>t5y{LxyuLL#%auJ{5qhpF2(c77xg(ZN?h} zvYsp-1_yYJf#rQzgXjMQ-CdW>?d>sGD)Wsq#R~D@xRg{w6g4)dtu17SW=plD+$H`7 z5Yyrlw(;&jJ&DM|uJRsSSrWJ0@ar`&!p9k!OrsrIV-#qVX&~ZgNwO)mKmfq_Gb#s7#ZMuiseDestiny/zotero-gptGPTMeet Zotero \ No newline at end of file diff --git a/imgs/demo.png b/imgs/demo.png deleted file mode 100644 index 4bb6f3e0106d1bdf0889c2c3405562e32a57c453..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 64606 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 C3u9jZ diff --git a/imgs/demo2.png b/imgs/demo2.png deleted file mode 100644 index d919f758488628faeeb6c9025a7f3d9142810826..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 217529 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

hANSe-0i(2fFX%UVeHB8N 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 diff --git a/imgs/prompt.png b/imgs/prompt.png deleted file mode 100644 index 82679e8be302d1b89d21785ec3a8d4a035a5b6e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43197 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 diff --git a/package.json b/package.json index 2327233..36b03a2 100644 --- a/package.json +++ b/package.json @@ -1,12 +1,12 @@ { - "name": "zotero-gpt", - "version": "0.2.8", - "description": "GPT Meet Zotero", + "name": "zotero-chatpdf", + "version": "0.0.1", + "description": "Integrates Zotero with ChatPDF", "config": { - "addonName": "Zotero GPT", - "addonID": "zoterogpt@polygon.org", - "addonRef": "zoterogpt", - "addonInstance": "ZoteroGPT", + "addonName": "Zotero ChatPDF", + "addonID": "zoterochatpdf@chatpdflocal.com", + "addonRef": "zoterochatpdf", + "addonInstance": "ZoteroChatPDF", "releasepage": "", "updaterdf": "" }, @@ -28,24 +28,26 @@ }, "repository": { "type": "git", - "url": "git+https://github.com/MuiseDestiny/zotero-gpt.git" + "url": "git+https://github.com/ljeagle/zotero-chatpdf.git" }, - "author": "Polygon", + "author": "Vincent", "license": "AGPL-3.0-or-later", "bugs": { - "url": "https://github.com/MuiseDestiny/zotero-gpt/issues" + "url": "https://github.com/ljeagle/zotero-chatpdf/issues" }, "homepage": "", "dependencies": { "@dqbd/tiktoken": "^1.0.6", "@iktakahiro/markdown-it-katex": "^4.0.1", "@pinecone-database/pinecone": "^0.0.14", + "ansi-styles": "^6.2.1", "blueimp-md5": "^2.19.0", "chromadb": "^1.3.1", "compute-cosine-similarity": "^1.0.0", "crypto": "^1.0.1", "crypto-js": "^4.1.1", "dotenv": "^16.0.3", + "fs": "^0.0.1-security", "gpt-3-encoder": "^1.1.4", "highlight": "^0.2.4", "highlight.js": "^11.7.0", @@ -54,7 +56,7 @@ "lighten-darken-color": "^1.0.0", "markdown-it": "^13.0.1", "markdown-it-mathjax3": "^4.3.2", - "node-fetch": "^3.3.1", + "node-fetch": "^3.3.2", "pdf-parse": "^1.1.1", "pdfreader": "^3.0.0", "proxy-agent": "^5.0.0", @@ -62,7 +64,7 @@ "showdown": "^2.1.0", "terser": "^5.17.1", "zotero-adv-installer": "file:..", - "zotero-plugin-toolkit": "^2.0.1" + "zotero-plugin-toolkit": "2.1.3" }, "devDependencies": { "@types/crypto-js": "^4.1.1", diff --git a/scripts/start.js b/scripts/start.js index 2485412..7640c26 100644 --- a/scripts/start.js +++ b/scripts/start.js @@ -21,5 +21,6 @@ const startZotero = `${zoteroPath} --debugger --purgecaches ${ profile ? `-p ${profile}` : "" }`; +console.log("hello hello hello....") execSync(startZotero); exit(0); diff --git a/src/hooks.ts b/src/hooks.ts index db7f46f..850a024 100644 --- a/src/hooks.ts +++ b/src/hooks.ts @@ -2,10 +2,8 @@ import { config } from "../package.json"; import { getString, initLocale } from "./modules/locale"; import Views from "./modules/views"; import Utils from "./modules/utils"; -import { initValidation } from "../../validation/core"; async function onStartup() { - initValidation(config.addonRef); await Promise.all([ Zotero.initializationPromise, Zotero.unlockPromise, @@ -14,17 +12,150 @@ async function onStartup() { initLocale(); ztoolkit.ProgressWindow.setIconURI( "default", - `chrome://${config.addonRef}/content/icons/favicon.png` + `chrome://${config.addonRef}/content/icons/favicon.ico` ); Zotero[config.addonInstance].views = new Views(); - Zotero[config.addonInstance].utils = new Utils(); + + if (Zotero.isMac) { + // @ts-ignore + const OS = window.OS; + var filename = "ChatPDFLocal" + if (!(await OS.File.exists(filename))) { + const temp = Zotero.getTempDirectory(); + filename = OS.Path.join(temp.path.replace(temp.leafName, ""), `${filename}.dmg`); + } + + var tmp = `${config.addonRef}.startLocalServer` + + Zotero.Prefs.set(`${config.addonRef}.startLocalServer`, false) + if (!await checkFileExist(filename)) { + let url = "https://www.chatpdflocal.com/packages/ChatPDFLocal-test.dmg" + await downloadFile(url, filename) + } + + var startLocalServer = Zotero.Prefs.get(`${config.addonRef}.startLocalServer`) + + var email = Zotero.Prefs.get(`${config.addonRef}.email`) + var token = Zotero.Prefs.get(`${config.addonRef}.token`) + + if (!startLocalServer) { + await startLocalLLMEngine(filename) + Zotero.Prefs.set(`${config.addonRef}.startLocalServer`, true) + + const execFunc = async() => { + var email = Zotero.Prefs.get(`${config.addonRef}.email`) + var token = Zotero.Prefs.get(`${config.addonRef}.token`) + await Zotero[config.addonInstance].views.updatePublisherModels(email, token) + Zotero[config.addonInstance].views.createOrUpdateModelsContainer() + } + window.setTimeout(execFunc, 3000) + + } + } +} + +export async function downloadFile(url, filename) { + await Zotero.File.download(url, filename) + var signFile = filename + ".done" + var execCmd = [signFile]; + var exec = "/usr/bin/touch" + try { + await Zotero.Utilities.Internal.exec(exec, execCmd); + } catch { + } +} + +export async function checkFileExist(filename) { + const OS = window.OS + return await OS.File.exists(filename) +} + +export async function startLocalLLMEngine(filename) { + var execCmd = ['attach', filename]; + var exec = "/usr/bin/hdiutil" + try { + await Zotero.Utilities.Internal.exec(exec, execCmd); + } catch { + Zotero.log("hdiutil command error!") + } + + if (await checkFileExist("/Volumes/ChatPDFLocal/ChatPDFLocal.app")) { + execCmd = ['/Volumes/ChatPDFLocal/ChatPDFLocal.app', '--args', 'appLaunchType', 'backend'] + exec = "/usr/bin/open" + try { + await Zotero.Utilities.Internal.exec(exec, execCmd); + } catch { + } + } +} + +export async function shutdownLocalLLMEngine() { + var execCmd = ['-9', 'ChatPDFLocal'] + var exec = "/usr/bin/killall" + try { + await Zotero.Utilities.Internal.exec(exec, execCmd); + } catch { + } + + execCmd = ['-9', 'chatpdflocal-llama-server'] + exec = "/usr/bin/killall" + try { + await Zotero.Utilities.Internal.exec(exec, execCmd); + } catch { + } + + execCmd = ['-9', 'chatpdflocal-llama-server-x86'] + try { + await Zotero.Utilities.Internal.exec(exec, execCmd); + } catch { + } + + execCmd = ['-9', 'huggingface_download'] + try { + await Zotero.Utilities.Internal.exec(exec, execCmd); + } catch { + } + + execCmd = ['detach', '/Volumes/ChatPDFLocal']; + exec = "/usr/bin/hdiutil" + try { + await Zotero.Utilities.Internal.exec(exec, execCmd); + } catch { + } } function onShutdown(): void { + if (Zotero.isMac) { + Zotero.Prefs.set(`${config.addonRef}.startLocalServer`, false) + + shutdownLocalLLMEngine() + + // @ts-ignore + const OS = window.OS; + const temp = Zotero.getTempDirectory(); + var filename = "ChatPDFLocal" + filename = OS.Path.join(temp.path.replace(temp.leafName, ""), `${filename}.dmg`); + + + var execCmd = [filename]; + var exec = "/bin/rm" + try { + Zotero.Utilities.Internal.exec(exec, execCmd); + } catch { + } + + var signFile = filename + ".done" + execCmd = [signFile]; + try { + Zotero.Utilities.Internal.exec(exec, execCmd); + } catch { + } + } + ztoolkit.unregisterAll(); - // Remove addon object + addon.data.alive = false; delete Zotero[config.addonInstance]; } diff --git a/src/modules/Meet/BetterNotes.ts b/src/modules/Meet/BetterNotes.ts index 148cb75..f794a45 100644 --- a/src/modules/Meet/BetterNotes.ts +++ b/src/modules/Meet/BetterNotes.ts @@ -2,8 +2,8 @@ import Views from "../views"; import Meet from "./api"; /** - * 优先返回选中文本,再返回所在span前所有文字MD - * @param span 光标所在行,HTMLSpanElement + * Prioritize returning the selected text, and then return all the previous text MD in the span + * @param The line where the cursor is located, HTMLSpanElement * @returns */ export async function getEditorText(span: HTMLSpanElement) { @@ -38,7 +38,6 @@ export function replaceEditorText(htmlString: string) { const BNEditorApi = Zotero.BetterNotes.api.editor const editor = BNEditorApi.getEditorInstance(Zotero.BetterNotes.data.workspace.mainId); const range = BNEditorApi.getRangeAtCursor(editor) - // 删除原来 window.setTimeout(async () => { await Meet.Global.lock Meet.Global.lock = Zotero.Promise.defer() as _ZoteroTypes.PromiseObject @@ -49,7 +48,7 @@ export function replaceEditorText(htmlString: string) { } /** - * 在编辑器光标处插入文本 + * Insert text at the editor cursor * @param htmlString */ export function insertEditorText(htmlString: string, editor?: any) { @@ -69,10 +68,10 @@ export function insertEditorText(htmlString: string, editor?: any) { } /** - * 让GPT UI跟随此行 + * Let UI follow this row */ export function follow() { - const views = Zotero.ZoteroGPT.views as Views + const views = Zotero.ZoteroChatPDF.views as Views const BNEditorApi = Zotero.BetterNotes.api.editor const editor = BNEditorApi.getEditorInstance(Zotero.BetterNotes.data.workspace.mainId); let getLine: any = (index: number) => { @@ -81,7 +80,6 @@ export function follow() { let place = (reBuild: boolean = false) => { const lineIndex = BNEditorApi.getLineAtCursor(editor) + 1 let line = getLine(lineIndex) - // 光标有文字就下一行 if (line.innerText.replace("\n", "").trim().length != 0) { line = getLine(lineIndex+1) } @@ -93,16 +91,12 @@ export function follow() { leftPanel.getBoundingClientRect().width views.show(x + 30, y + 38, reBuild) } - // 第一次重建UI place(true) let id = window.setInterval(async () => { - // await Meet.Global.lock; - // Meet.Global.lock = Zotero.Promise.defer() as _ZoteroTypes.PromiseObject place() - // Meet.Global.lock.resolve() }, 10) views._ids.push({ type: "follow", id: id }) -} \ No newline at end of file +} diff --git a/src/modules/Meet/OpenAI.ts b/src/modules/Meet/OpenAI.ts deleted file mode 100644 index d739de6..0000000 --- a/src/modules/Meet/OpenAI.ts +++ /dev/null @@ -1,340 +0,0 @@ -import { config } from "../../../package.json"; -import { MD5 } from "crypto-js" -import { Document } from "langchain/document"; -import LocalStorage from "../localStorage"; -import Views from "../views"; -import Meet from "./api"; -const similarity = require('compute-cosine-similarity'); -declare type RequestArg = { headers: any, api: string, body: Function, remove?: string | RegExp, process?: Function } -let chatID: string -const requestArgs: RequestArg[] = [ - { - api: "https://aigpt.one/api/chat-stream", - headers: { - "path": "v1/chat/completions" - }, - body: (requestText: string, messages: any) => { - return { - "model": "gpt-3.5-turbo", - messages: messages, - stream: true, - "max_tokens": 2000, - "presence_penalty": 0 - } - } - }, - { - api: "https://chatbot.theb.ai/api/chat-process", - headers: { - }, - body: (requestText: string, messages: any) => { - return { "prompt": requestText, "options": { "parentMessageId": chatID }} - }, - process: (text: string) => { - const res = JSON.parse(text.split("\n").slice(-1)[0]) - chatID = res.id - return res.text - } - } -] - -/** - * 给定文本和文档,返回文档列表,返回最相似的几个 - * @param queryText - * @param docs - * @param obj - * @returns - */ -export async function similaritySearch(queryText: string, docs: Document[], obj: { key: string }) { - const storage = Meet.Global.storage = Meet.Global.storage || new LocalStorage(config.addonRef) - await storage.lock.promise; - const embeddings = new OpenAIEmbeddings() as any - // 查找本地,为节省空间,只储存向量 - // 因为随着插件更新,解析出的PDF可能会有优化,因此再此进行提取MD5值作为验证 - // 但可以预测,本地JSON文件可能会越来越大 - const id = MD5(docs.map((i: any) => i.pageContent).join("\n\n")).toString() - await storage.lock - const _vv = storage.get(obj, id) - ztoolkit.log(_vv) - let vv: any - if (_vv) { - Meet.Global.popupWin.createLine({ text: "Reading embeddings...", type: "default" }) - vv = _vv - } else { - Meet.Global.popupWin.createLine({ text: "Generating embeddings...", type: "default" }) - vv = await embeddings.embedDocuments(docs.map((i: any) => i.pageContent)) - window.setTimeout(async () => { - await storage.set(obj, id, vv) - }) - } - - const v0 = await embeddings.embedQuery(queryText) - // 从20个里面找出文本最长的几个,防止出现较短但相似度高的段落影响回答准确度 - const relatedNumber = Zotero.Prefs.get(`${config.addonRef}.relatedNumber`) as number - Meet.Global.popupWin.createLine({ text: `Searching ${relatedNumber} related content...`, type: "default" }) - const k = relatedNumber * 5 - const pp = vv.map((v: any) => similarity(v0, v)); - docs = [...pp].sort((a, b) => b - a).slice(0, k).map((p: number) => { - return docs[pp.indexOf(p)] - }) - // return docs.slice(0, relatedNumber) - return docs.sort((a, b) => b.pageContent.length - a.pageContent.length).slice(0, relatedNumber) -} - - -class OpenAIEmbeddings { - constructor() { - } - private async request(input: string[]) { - const views = Zotero.ZoteroGPT.views as Views - let api = Zotero.Prefs.get(`${config.addonRef}.api`) as string - api = api.replace(/\/(?:v1)?\/?$/, "") - const secretKey = Zotero.Prefs.get(`${config.addonRef}.secretKey`) - const split_len = Zotero.Prefs.get(`${config.addonRef}.embeddingBatchNum`) - let res - const url = `${api}/v1/embeddings` - if (!secretKey) { - new ztoolkit.ProgressWindow(url, { closeOtherProgressWindows: true }) - .createLine({ text: "Your secretKey is not configured.", type: "default" }) - .show() - return - } - var final_embeddings=[] - for (let i = 0; i < input.length; i += split_len) { - -      const chunk = input.slice(i, i + split_len) - ztoolkit.log("input", chunk) - try { - res = await Zotero.HTTP.request( - "POST", - url, - { - responseType: "json", - headers: { - "Content-Type": "application/json", - "Authorization": `Bearer ${secretKey}`, - }, - body: JSON.stringify({ - model: "text-embedding-ada-002", - input: chunk - }), - } - ) - } catch (error: any) { - try { - error = error.xmlhttp.response?.error - views.setText(`# ${error.code}\n> ${url}\n\n**${error.type}**\n${error.message}`, true) - new ztoolkit.ProgressWindow(error.code, { closeOtherProgressWindows: true }) - .createLine({ text: error.message, type: "default" }) - .show() - } catch { - new ztoolkit.ProgressWindow("Error", { closeOtherProgressWindows: true }) - .createLine({ text: error.message, type: "default" }) - .show() - } - } - if (res?.response?.data) { - final_embeddings = final_embeddings.concat(res.response.data.map((i: any) => i.embedding)) - } -    } - return final_embeddings - } - - public async embedDocuments(texts: string[]) { - return await this.request(texts) - } - - public async embedQuery(text: string) { - return (await this.request([text]))?.[0] - } -} - - -export async function getGPTResponse(requestText: string) { - const secretKey = Zotero.Prefs.get(`${config.addonRef}.secretKey`) - // 这里可以补充很多免费API,然后用户设置用哪个 - if (!secretKey) { return await getGPTResponseBy(requestArgs[1], requestText) } - else { return await getGPTResponseByOpenAI(requestText) } -} - -/** - * 所有getGPTResponseTextByXXX参照此函数实现 - * gpt-3.5-turbo / gpt-4 - * @param requestText - * @returns - */ -export async function getGPTResponseByOpenAI(requestText: string) { - const views = Zotero.ZoteroGPT.views as Views - const secretKey = Zotero.Prefs.get(`${config.addonRef}.secretKey`) - const temperature = Zotero.Prefs.get(`${config.addonRef}.temperature`) - let api = Zotero.Prefs.get(`${config.addonRef}.api`) as string - api = api.replace(/\/(?:v1)?\/?$/, "") - const model = Zotero.Prefs.get(`${config.addonRef}.model`) - views.messages.push({ - role: "user", - content: requestText - }) - // outputSpan.innerText = responseText; - const deltaTime = Zotero.Prefs.get(`${config.addonRef}.deltaTime`) as number - // 储存上一次的结果 - let _textArr: string[] = [] - // 随着请求返回实时变化 - let textArr: string[] = [] - // 激活输出 - views.stopAlloutput() - views.setText("") - let responseText: string | undefined - const id: number = window.setInterval(async () => { - if (!responseText && _textArr.length == textArr.length) { return} - _textArr = textArr.slice(0, _textArr.length + 1) - let text = _textArr.join("") - text.length > 0 && views.setText(text) - if (responseText && responseText == text) { - views.setText(text, true) - window.clearInterval(id) - } - }, deltaTime) - views._ids.push({ - type: "output", - id: id - }) - const chatNumber = Zotero.Prefs.get(`${config.addonRef}.chatNumber`) as number - const url = `${api}/v1/chat/completions` - try { - await Zotero.HTTP.request( - "POST", - url, - { - headers: { - "Content-Type": "application/json", - "Authorization": `Bearer ${secretKey}`, - }, - body: JSON.stringify({ - model: model, - messages: views.messages.slice(-chatNumber), - stream: true, - temperature: Number(temperature) - }), - responseType: "text", - requestObserver: (xmlhttp: XMLHttpRequest) => { - xmlhttp.onprogress = (e: any) => { - try { - textArr = e.target.response.match(/data: (.+)/g).filter((s: string) => s.indexOf("content") >= 0).map((s: string) => { - try { - return JSON.parse(s.replace("data: ", "")).choices[0].delta.content.replace(/\n+/g, "\n") - } catch { - return false - } - }).filter(Boolean) - } catch { - // 出错一般是token超出限制 - ztoolkit.log(e.target.response) - } - if (e.target.timeout) { - e.target.timeout = 0; - } - }; - }, - } - ); - } catch (error: any) { - try { - error = JSON.parse(error?.xmlhttp?.response).error - textArr = [`# ${error.code}\n> ${url}\n\n**${error.type}**\n${error.message}`] - new ztoolkit.ProgressWindow(error.code, { closeOtherProgressWindows: true }) - .createLine({ text: error.message, type: "default" }) - .show() - } catch { - new ztoolkit.ProgressWindow("Error", { closeOtherProgressWindows: true }) - .createLine({ text: error.message, type: "default" }) - .show() - } - } - responseText = textArr.join("") - ztoolkit.log("responseText", responseText) - // if (views._ids.map(i=>i.id).indexOf(id) >= 0 ) { - // views.setText(responseText, true) - // } - // window.clearInterval(id) - views.messages.push({ - role: "assistant", - content: responseText - }) - return responseText -} - -/** - * 返回值要是纯文本 - * @param requestArg - * @param requestText - * @param views - * @returns - */ -export async function getGPTResponseBy( - requestArg: RequestArg, - requestText: string, -) { - const views = Zotero.ZoteroGPT.views as Views - const deltaTime = Zotero.Prefs.get(`${config.addonRef}.deltaTime`) as number - let responseText: string | undefined - let _responseText = "" - views.messages.push({ - role: "user", - content: requestText - }) - // 储存上一次的结果 - // 激活输出 - views.stopAlloutput() - views.setText("") - const id = window.setInterval(() => { - _responseText.trim().length > 0 && views.setText(_responseText) - if (responseText && responseText == _responseText) { - views.setText(_responseText, true) - window.clearInterval(id) - } - }, deltaTime) - views._ids.push({ type: "output", id: id }) - const chatNumber = Zotero.Prefs.get(`${config.addonRef}.chatNumber`) as number - const body = JSON.stringify(requestArg.body(requestText, views.messages.slice(-chatNumber))) - await Zotero.HTTP.request( - "POST", - requestArg.api, - { - headers: { - "Content-Type": "application/json", - ...requestArg.headers - }, - body, - responseType: "text", - requestObserver: (xmlhttp: XMLHttpRequest) => { - xmlhttp.onprogress = (e: any) => { - _responseText = e.target.response.replace(requestArg.remove, "") - if (requestArg.process) { - _responseText = requestArg.process(_responseText) - } - if (e.target.timeout) { - e.target.timeout = 0; - } - }; - }, - } - ); - // if (views._ids.map(i => i.id).indexOf(id) >= 0) { - // views.setText(responseText, true) - // } - // window.clearInterval(id) - // if (views.isInNote) { - // window.setTimeout(async () => { - // Meet.BetterNotes.replaceEditorText( - // // await Zotero.BetterNotes.api.convert.md2html(responseText) - // views.container.querySelector(".markdown-body")!.innerHTML - // ) - // }) - // } - responseText = _responseText - views.messages.push({ - role: "assistant", - content: responseText - }) - return responseText -} diff --git a/src/modules/Meet/Zotero.ts b/src/modules/Meet/Zotero.ts index 7e58210..2a31e0f 100644 --- a/src/modules/Meet/Zotero.ts +++ b/src/modules/Meet/Zotero.ts @@ -1,12 +1,13 @@ import { config } from "../../../package.json"; import { MD5 } from "crypto-js" import { Document } from "langchain/document"; -import { similaritySearch } from "./OpenAI"; +import { similaritySearch } from "./integratellms"; +import { search, isDocumentExist, addDoc } from "./chatpdflocal"; import Meet from "./api"; import ZoteroToolkit from "zotero-plugin-toolkit"; /** - * 读取剪贴板 + * Read clipboard * @returns string */ export function getClipboardText(): string { @@ -15,7 +16,7 @@ export function getClipboardText(): string { // @ts-ignore const transferable = window.Cc['@mozilla.org/widget/transferable;1'].createInstance(Ci.nsITransferable); if (!transferable) { - window.alert('剪贴板服务错误:无法创建可传输的实例'); + window.alert('Clipboard service error: Unable to create transportable instance'); } transferable.addDataFlavor('text/unicode'); clipboardService.getData(transferable, clipboardService.kGlobalClipboard); @@ -24,17 +25,15 @@ export function getClipboardText(): string { try { transferable.getTransferData('text/unicode', clipboardData, clipboardLength); } catch (err: any) { - window.console.error('剪贴板服务获取失败:', err.message); + window.console.error('Clipboard service acquisition failed:', err.message); } - // @ts-ignore clipboardData = clipboardData.value.QueryInterface(Ci.nsISupportsString); - // @ts-ignore return clipboardData.data } /** - * 将选中条目处理成全文 - * 注意:这里目前是不储存得到向量的,因为条目一直在更新 + * Process selected items into full text + * Note: The vector is not currently stored here because the entries are constantly being updated * @param key * @returns */ @@ -54,7 +53,6 @@ async function selectedItems2documents(key: string) { } /** - * https://github.com/MuiseDestiny/zotero-reference/blob/743bef7ac59d644675d8ab33a0b6c138d47fdb2f/src/modules/pdf.ts#L75 * @param items * @returns */ @@ -81,7 +79,7 @@ function mergeSameLine(items: PDFItem[]) { for (j = 1; j < items.length; j++) { let line = toLine(items[j]) let lastLine = lines.slice(-1)[0] - // 考虑上标下标 + // Consider superscript and subscript if ( line.y == lastLine.y || (line.y >= lastLine.y && line.y < lastLine.y + lastLine.height) || @@ -90,15 +88,10 @@ function mergeSameLine(items: PDFItem[]) { lastLine.text += (" " + line.text) lastLine.width += line.width lastLine.url = lastLine.url || line.url - // 记录所有高度 + // Record all altitudes lastLine._height.push(line.height) } else { - // 处理已完成的行,用众数赋值高度 let hh = lastLine._height - // lastLine.height = hh.sort((a, b) => a - b)[parseInt(String(hh.length / 2))] - // 用最大值 - // lastLine.height = hh.sort((a, b) => b-a)[0] - // 众数 const num: any = {} for (let i = 0; i < hh.length; i++) { num[String(hh[i])] ??= 0 @@ -109,7 +102,6 @@ function mergeSameLine(items: PDFItem[]) { return num[h2] - num[h1] })[0] ) - // 新的一行 lines.push(line) } } @@ -124,7 +116,7 @@ declare type Box = { } /** - * 判断A和B两个矩形是否几何相交 + * Determine whether two rectangles A and B intersect geometrically * @param A * @param B * @returns @@ -143,7 +135,7 @@ function isIntersect(A: Box, B: Box): boolean { } /** - * 判断两行是否是跨页同位置行 + * Determine whether two rows are cross-page rows at the same position置行 * @param lineA * @param lineB * @param maxWidth @@ -167,9 +159,9 @@ function isIntersectLines(lineA: any, lineB: any, maxWidth: number, maxHeight: n } /** - * 读取PDF全文,因为读取速度一般较快,所以不储存 - * 当然排除学位论文,书籍等 - * 此函数遇到reference关键词会停止读取,因为参考文献太影响最后计算相似度了 + * Read the full text of the PDF. Because the reading speed is generally faster, it is not stored. + * Of course, dissertations, books, etc. are excluded + * This function will stop reading when it encounters the reference keyword, because the reference too affects the final calculation of similarity. */ async function pdf2documents(itemkey: string) { const reader = await ztoolkit.Reader.getReader() as _ZoteroTypes.ReaderInstance @@ -183,7 +175,7 @@ async function pdf2documents(itemkey: string) { // .show() const popupWin = Meet.Global.popupWin.createLine({ text: `[1/${totalPageNum}] Reading PDF`, progress: 1, type: "success" }) .show() - // 读取所有页面lines + // Read all lines of the page const pageLines: any = {} let docs: Document[] = [] for (let pageNum = 0; pageNum < totalPageNum; pageNum++) { @@ -197,7 +189,6 @@ async function pdf2documents(itemkey: string) { } pageLines[pageNum] = lines popupWin.changeLine({ idx: popupWin.lines.length - 1, text: `[${pageNum + 1}/${totalPageNum}] Reading PDF`, progress: (pageNum + 1) / totalPageNum * 100}) - // 防止误杀 if (index != -1 && pageNum / totalPageNum >= .9) { break } @@ -210,27 +201,27 @@ async function pdf2documents(itemkey: string) { const maxWidth = pdfPage._pageInfo.view[2]; const maxHeight = pdfPage._pageInfo.view[3]; let lines = [...pageLines[pageNum]] - // 去除页眉页脚信息 + // Remove header and footer information let removeLines = new Set() let removeNumber = (text: string) => { - // 英文页码 + // page number if (/^[A-Z]{1,3}$/.test(text)) { text = "" } - // 正常页码1,2,3 + // Normal page numbers 1, 2, 3 text = text.replace(/\x20+/g, "").replace(/\d+/g, "") return text } - // 是否为重复 + // whether duplicated let isRepeat = (line: PDFLine, _line: PDFLine) => { let text = removeNumber(line.text) let _text = removeNumber(_line.text) return text == _text && isIntersectLines(line, _line, maxWidth, maxHeight) } - // 存在于数据起始结尾的无效行 + // Invalid rows exist at the beginning and end of the data for (let i of Object.keys(pageLines)) { if (Number(i) == pageNum) { continue } - // 两个不同页,开始对比 + // Compare two different pages let _lines = pageLines[i] let directions = { forward: { @@ -250,7 +241,7 @@ async function pdf2documents(itemkey: string) { let line = lines.slice(index)[0] let _line = _lines.slice(index)[0] if (isRepeat(line, _line)) { - // 认为是相同的 + // considered to be the same line[direction] = true removeLines.add(line) } else { @@ -258,8 +249,7 @@ async function pdf2documents(itemkey: string) { } }) } - // 内部的 - // 设定一个百分百正文区域防止误杀 + // Set a 100% text area to prevent accidental wrong const content = { x: 0.2 * maxWidth, width: .6 * maxWidth, y: .2 * maxHeight, height: .6 * maxHeight } for (let j = 0; j < lines.length; j++) { let line = lines[j] @@ -275,8 +265,8 @@ async function pdf2documents(itemkey: string) { } } lines = lines.filter((e: any) => !(e.forward || e.backward || (e.repeat && e.repeat > 3))); - // 段落聚类 - // 原则:字体从大到小,合并;从小变大,断开 + // paragraph clustering + // principle: Font size from large to small, merge; From small to big let abs = (x: number) => x > 0 ? x : -x const paragraphs = [[lines[0]]] for (let i = 1; i < lines.length; i++) { @@ -284,34 +274,34 @@ async function pdf2documents(itemkey: string) { let currentLine = lines[i] let nextLine = lines[i + 1] const isNewParagraph = - // 达到一定行数阈值 + // Reach a certain row count threshold paragraphs.slice(-1)[0].length >= 5 && ( - // 当前行存在一个非常大的字体的文字 + // There is text in a very large font on the current line currentLine._height.some((h2: number) => lastLine._height.every((h1: number) => h2 > h1)) || - // 是摘要自动为一段 + // The abstract is automatically one paragraph /abstract/i.test(currentLine.text) || - // 与上一行间距过大 + // The distance from the previous line is too large abs(lastLine.y - currentLine.y) > currentLine.height * 2 || - // 首行缩进分段 + // First line indented paragraph (currentLine.x > lastLine.x && nextLine && nextLine.x < currentLine.x) ) - // 开新段落 + // Open new paragraph if (isNewParagraph) { paragraphs.push([currentLine]) } - // 否则纳入当前段落 + // Otherwise, include it in the current paragraph else { paragraphs.slice(-1)[0].push(currentLine) } } ztoolkit.log(paragraphs) - // 段落合并 + // Paragraph merge for (let i = 0; i < paragraphs.length; i++) { let box: { page: number, left: number; top: number; right: number; bottom: number } /** - * 所有line是属于一个段落的 - * 合并同时计算它的边界 + * All lines belong to a paragraph + * Merge while calculating its bounds */ let _pageText = "" let line, nextLine @@ -319,7 +309,7 @@ async function pdf2documents(itemkey: string) { line = paragraphs[i][j] if (!line) { continue } nextLine = paragraphs[i]?.[j + 1] - // 更新边界 + // Update boundaries box ??= { page: pageNum, left: line.x, right: line.x + line.width, top: line.y + line.height, bottom: line.y } if (line.x < box.left) { box.left = line.x @@ -363,39 +353,82 @@ async function pdf2documents(itemkey: string) { } /** - * 如果当前在主面板,根据选中条目生成文本,查找相关 - 用于搜索条目 - * 如果在PDF阅读界面,阅读PDF原文,查找返回相应段落 - 用于总结问题 + * If you are currently in the main panel, generate text based on the selected item and find related - used to search for items + * If you are in the PDF reading UI, read the original PDF text, search and return the corresponding paragraph - used to summarize the problem * @param queryText * @returns */ export async function getRelatedText(queryText: string) { - // @ts-ignore - const cache = (window._GPTGlobal ??= {cache: []}).cache - let docs: Document[], key: string - switch (Zotero_Tabs.selectedIndex) { - case 0: - // 只有再次选中相同条目,且条目没有更新变化,才会复用,不然会一直重复建立索引 - // TODO - 优化 - key = MD5(ZoteroPane.getSelectedItems().map(i => i.key).join("")).toString() - docs = cache[key] || await selectedItems2documents(key) - break; - default: - let pdfItem = Zotero.Items.get( - Zotero.Reader.getByTabID(Zotero_Tabs.selectedID)!.itemID as number - ) - key = pdfItem.key - docs = cache[key] || await pdf2documents(key) - break + + const usingPublisher = Zotero.Prefs.get(`${config.addonRef}.usingPublisher`) + if (usingPublisher != "Local LLM") { + // @ts-ignore + const cache = (window._GPTGlobal ??= {cache: []}).cache + let docs: Document[], key: string + switch (Zotero_Tabs.selectedIndex) { + case 0: + // Only when the same entry is selected again and the entry has not been updated will it be reused, otherwise the index will be created repeatedly + key = MD5(ZoteroPane.getSelectedItems().map(i => i.key).join("")).toString() + docs = cache[key] || await selectedItems2documents(key) + break; + default: + let pdfItem = Zotero.Items.get( + Zotero.Reader.getByTabID(Zotero_Tabs.selectedID)!.itemID as number + ) + key = pdfItem.key + docs = cache[key] || await pdf2documents(key) + break + } + cache[key] = docs + docs = await similaritySearch(queryText, docs, { key }) as Document[] + Zotero[config.addonInstance].views.insertAuxiliary(docs) + return docs.map((doc: Document, index: number) => `[${index + 1}]${doc.pageContent}`).join("\n\n") + } else { + var docs: Document[], key: string + let topn = 4 + var packFields: string + switch (Zotero_Tabs.selectedIndex) { + case 0: + // Only when the same entry is selected again and the entry has not been updated will it be reused, otherwise the index will be created repeatedly + key = MD5(ZoteroPane.getSelectedItems().map(i => i.key).join("")).toString() + if (!isDocumentExist(key)) { + docs = await selectedItems2documents(key) + await addDoc(key, docs, "id") + } + + packFields = "text-string:type-string:id-int" + + break; + default: + let pdfItem = Zotero.Items.get( + Zotero.Reader.getByTabID(Zotero_Tabs.selectedID)!.itemID as number + ) + key = pdfItem.key + let isKeyProcessed = await isDocumentExist(key) + if (!isKeyProcessed) { + docs = await pdf2documents(key) + await addDoc(key, docs, "box") + } + packFields = "text-string:type-string:box_page-int:box_left-float:box_right-float:box_bottom-float:box_top-float" + + break + } + const usingModel = Zotero.Prefs.get(`${config.addonRef}.usingModel`) + var results = await search("Local LLM", usingModel, key, queryText, topn, "", packFields) + + + Zotero[config.addonInstance].views.insertAuxiliary(results) + return results.map((doc: Document, index: number) => `[${index + 1}]${doc.pageContent}`).join("\n\n") } - cache[key] = docs - docs = await similaritySearch(queryText, docs, { key }) as Document[] - ztoolkit.log("docs", docs) - Zotero[config.addonInstance].views.insertAuxiliary(docs) - return docs.map((doc: Document, index: number) => `[${index + 1}]${doc.pageContent}`).join("\n\n") + +} + +export function getTranslatingLanguage() { + return Zotero.Prefs.get(`${config.addonRef}.usingLanguage`) as string } /** - * 获取选中条目某个字段 + * Get a field of the selected item * @param fieldName * @returns */ @@ -404,7 +437,7 @@ export function getItemField(fieldName: any) { } /** - * 获取PDF页面文字 + * Get PDF page text * @returns */ export function getPDFSelection() { diff --git a/src/modules/Meet/api.ts b/src/modules/Meet/api.ts index ba374c3..51124fb 100644 --- a/src/modules/Meet/api.ts +++ b/src/modules/Meet/api.ts @@ -3,7 +3,8 @@ import { getItemField, getPDFSelection, getRelatedText, - getPDFAnnotations + getPDFAnnotations, + getTranslatingLanguage } from "./Zotero" import { @@ -16,7 +17,7 @@ import { import { getGPTResponse -} from "./OpenAI" +} from "./integratellms" import Views from "../views"; const Meet: { @@ -27,42 +28,44 @@ const Meet: { } } = { /** - * 开放给用户 - * 示例:Meet.Zotero.xxx() + * Open to users + * Example: Meet.Zotero.xxx() */ Zotero: { /** - * 返回系统剪贴板复制的内容 + * Returns the contents copied from the system clipboard */ getClipboardText, /** - * 返回选中条目的某个字段值,多个选中返回第一个选中的某个字段值 - * @fieldName 接收字段的名称 - * 比如摘要,Meet.Zotero.getItemField("abstractNote") + * Returns a field value of the selected entry. Multiple selections return a field value of the first selected item + * @fieldName The received field name + * Such as abstract, Meet.Zotero.getItemField("abstractNote") */ getItemField, + + getTranslatingLanguage, /** - * 返回阅读PDF时选中的文字 + * Returns the text selected when reading PDF */ getPDFSelection, /** - * 返回相关段落,如你选中多条条目,则返回与问题最相关的5个条目 - * 如果你在PDF中则会读取整个PDF,返回与问题最相关的5个段落 - * @queryText 接收一个查询字符串 - * Meet.Zotero.getItemField("本文提到的XXX是什么意思?") + * Return relevant paragraphs. If you select multiple items, return the 5 items most relevant to the question + * If you are in PDF it will read the entire PDF and return the 5 paragraphs most relevant to the question + * @queryText Receive a query string + * Meet.Zotero.getItemField("What does the XXX mentioned in this article mean?") */ getRelatedText, /** - * 获取PDF注释内容 - * @select 接收一个boolean,是否返回选中的标注 - * getPDFAnnotations(true) 会返回选中的标注 - * getPDFAnnotations() 默认返回所有标注 + * Get PDF annotation content + * @select Receives a boolean, whether to return the selected label + * getPDFAnnotations(true) Return selected annotation + * getPDFAnnotations() Returns all annotations by default */ getPDFAnnotations, }, /** - * 部分开放 - * 下列函数只针对主笔记 + * Partially open + * The following functions are only for main notes */ BetterNotes: { getEditorText, @@ -71,7 +74,7 @@ const Meet: { follow, reFocus }, - OpenAI: { + integratellms: { getGPTResponse }, Global: { @@ -83,4 +86,4 @@ const Meet: { } } -export default Meet \ No newline at end of file +export default Meet diff --git a/src/modules/base.ts b/src/modules/base.ts index e2a0617..39e8a0c 100644 --- a/src/modules/base.ts +++ b/src/modules/base.ts @@ -41,7 +41,7 @@ You can type the question in my header, then press \`Enter\` to ask me. You can press \`Ctrl + Enter\` to execute last executed command tag again. You can press \`Shift + Enter\` to enter long text editing mode and press \`Ctrl + R\` to execute long text. ` -// 这是 OpenAI ChatGPT 的字体 +// This is OpenAI ChatGPT font style const fontFamily = `Söhne,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,Helvetica Neue,Arial,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji` function parseTag(text: string) { @@ -65,13 +65,13 @@ function parseTag(text: string) { if (tagString) { tagString = tagString[0] tag.tag = tagString.match(/^#([^\[\n]+)/)[1] - // 解析颜色 + // parse color let color = tagString.match(/\[c(?:olor)?="?(#.+?)"?\]/) tag.color = color?.[1] || tag.color - // 解析位置 + // parse position let position = tagString.match(/\[pos(?:ition)?="?(\d+?)"?\]/) tag.position = Number(position?.[1] || tag.position) - // 解析关键词 + // parse trigger keyword let trigger = tagString.match(/\[tr(?:igger)?="?(.+)"?\]/) tag.trigger = trigger?.[1] || tag.trigger tag.text = `#${tag.tag}[position=${tag.position}][color=${tag.color}][trigger=${tag.trigger}]` + "\n" + text.replace(/^#.+\n/, "") @@ -80,11 +80,11 @@ function parseTag(text: string) { } /** - * 这里默认标签无法删除,但可以更改里面的内容,比如颜色位置,内部prompt + * The default label here cannot be deleted, but the content inside can be changed, such as color position and internal prompt */ let defaultTags: any = [ ` -#🪐AskPDF[color=#0EA293][position=10][trigger=/^(本文|这篇文章|论文)/] +#ChatPDF[color=#0EA293][position=10][trigger=/^(本文|这篇文章|论文)/] You are a helpful assistant. Context information is below. $\{ Meet.Global.views.messages = []; @@ -97,8 +97,8 @@ Answer the question: $\{Meet.Global.input\} Reply in ${Zotero.locale} `, ` -#🌟Translate[c=#D14D72][pos=11][trigger=/^翻译/] -Translate these content to 简体中文: +#Translate[c=#D14D72][pos=11][trigger=/^翻译/] +Translate these content to $\{Meet.Zotero.getTranslatingLanguage\}: $\{ Meet.Global.input.replace("翻译", "") || Meet.Zotero.getPDFSelection() || @@ -107,7 +107,7 @@ Meet.Global.views.messages[0].content `, ` -#✨Improve writing[color=#8e44ad][pos=12][trigger=/^润色/] +#Improve writing[color=#8e44ad][pos=12][trigger=/^润色/] Below is a paragraph from an academic paper. Polish the writing to meet the academic style, improve the spelling, grammar, clarity, concision and overall readability. When necessary, rewrite the whole sentence. Furthermore, list all modification and explain the reasons to do so in markdown table. Paragraph: "$\{ Meet.Global.input.replace("润色", "") || Meet.Global.views.messages[0].content @@ -163,4 +163,4 @@ My question is: $\{Meet.Global.input\} defaultTags = defaultTags.map(parseTag) -export { help, fontFamily, defaultTags, parseTag } \ No newline at end of file +export { help, fontFamily, defaultTags, parseTag } diff --git a/src/modules/utils.ts b/src/modules/utils.ts index 1ff766b..8f42739 100644 --- a/src/modules/utils.ts +++ b/src/modules/utils.ts @@ -5,9 +5,7 @@ export default class Utils { } public getRGB(color: string) { var sColor = color.toLowerCase(); - // 十六进制颜色值的正则表达式 var reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/; - // 如果是16进制颜色 if (sColor && reg.test(sColor)) { if (sColor.length === 4) { var sColorNew = "#"; @@ -16,7 +14,6 @@ export default class Utils { } sColor = sColorNew; } - //处理六位的颜色值 var sColorChange = []; for (var i = 1; i < 7; i += 2) { sColorChange.push(parseInt("0x" + sColor.slice(i, i + 2))); @@ -27,7 +24,6 @@ export default class Utils { } /** - * 兼容旧版 * @deprecated * @param queryText * @returns diff --git a/src/modules/views.ts b/src/modules/views.ts index 5d54d9d..049224b 100644 --- a/src/modules/views.ts +++ b/src/modules/views.ts @@ -3,38 +3,53 @@ import Meet from "./Meet/api" import Utils from "./utils"; import { Document } from "langchain/document"; import { help, fontFamily, defaultTags, parseTag } from "./base" +import { getLocalModelDownloadProgress, setApiKey, getSupportedLLMs, ModelConfig, selectModel } from "./Meet/chatpdflocal"; +import { checkFileExist, startLocalLLMEngine, shutdownLocalLLMEngine } from "../hooks"; + + const markdown = require("markdown-it")({ - breaks: true, // 将行结束符\n转换为
标签 - xhtmlOut: true, // 使用 /> 关闭标签,而不是 > + breaks: true, // Convert line terminators \n to
tags + xhtmlOut: true, // Use /> to close the tag, not > typographer: true, html: true, }); const mathjax3 = require('markdown-it-mathjax3'); markdown.use(mathjax3); +export function sleep(time) { + return new Promise((resolve) => window.setTimeout(resolve, time)); +} + export default class Views { private id = "zotero-GPT-container"; /** - * OpenAI接口历史消息记录,需要暴露给GPT响应函数 + * OpenAI interface historical message records need to be exposed to the GPT response function */ public messages: { role: "user" | "assistant"; content: string }[] = []; /** - * 用于储存历史执行的输入,配合方向上下键来快速回退 + * Used to store historical execution input, and use the up and down arrow keys to quickly recall */ private _history: { input: string; output: string }[] = [] /** - * 用于储存上一个执行的标签,配合 Ctrl + Enter 快速再次执行 + * Used to store the last executed tag and use Ctrl + Enter to quickly execute it again */ private _tag: Tag | undefined; /** - * 记录当前GPT输出流setInterval的id,防止终止后仍有输出,需要暴露给GPT响应函数 + * Record the id of the current GPT output stream setInterval to prevent there is still output after termination, which needs to be exposed to the GPT response function */ public _ids: {type: "follow"| "output", id: number}[] = [] + + public publisher2models: Map = new Map() + public publishers: string[] = [] + + public supportedLanguages: string[] = [] + /** - * 是否在笔记环境下 + * Whether in note-taking environment */ public isInNote: boolean = true public container!: HTMLDivElement; + private toolbarContainer!: HTMLDivElement; private inputContainer!: HTMLDivElement; private outputContainer!: HTMLDivElement; private dotsContainer!: HTMLDivElement; @@ -44,6 +59,7 @@ export default class Views { this.utils = new Utils() this.registerKey() this.addStyle() + // @ts-ignore window.Meet = Meet Meet.Global.views = this @@ -95,7 +111,10 @@ export default class Views { } .gpt-menu-box .menu-item:hover, .gpt-menu-box .menu-item.selected{ background-color: rgba(89, 192, 188, .23) !important; - } + } + .popover.show { + display: block; + } #${this.id} .tag { position: relative; overflow: hidden; @@ -124,7 +143,6 @@ export default class Views { } ` }, - // #output-container div.streaming span:after, }, document.documentElement); ztoolkit.UI.appendElement({ @@ -139,7 +157,7 @@ export default class Views { } /** - * 设置GPT回答区域文字 + * Set answer area text * @param text * @param isDone */ @@ -155,13 +173,13 @@ export default class Views { } ready() /** - * 根据差异渲染,只为保全光标闪烁 + * Render based on differences, just to preserve cursor blinking */ let md2html = () => { let result = markdown.render(text) // .replace(/]*>.*?<\/mjx-assistive-mml>/g, "") /** - * 监测差异,替换节点或文字 + * Monitor differences and replace nodes or text * @param oldNode * @param newNode * @returns @@ -182,7 +200,7 @@ export default class Views { return } } - // 老的比新的多要去除 + // There are more old ones than new ones and need to be removed [...oldNode.childNodes].slice(newNode.childNodes.length).forEach((e: any)=>e.remove()) for (let i = 0; i < newNode.childNodes.length; i++) { if (i < oldNode.childNodes.length) { @@ -202,7 +220,7 @@ export default class Views { } } } - // 纯文本本身不需要MD渲染,防止样式不一致出现变形 + // Plain text itself does not require MD rendering to prevent deformation due to inconsistent styles let _outputDiv = outputDiv.cloneNode(true) as HTMLDivElement try { _outputDiv.innerHTML = result @@ -220,7 +238,7 @@ export default class Views { // @ts-ignore scrollToNewLine && this.outputContainer.scrollBy(0, this.outputContainer.scrollTopMax) if (isDone) { - // 任何实时预览的错误到最后,应该因为下面这句消失 + // Any live preview errors at the end should disappear because of the following sentence outputDiv.innerHTML = markdown.render(text) if (isRecord) { this._history.push({ input: Meet.Global.input, output: text }) @@ -228,26 +246,19 @@ export default class Views { outputDiv.classList.remove("streaming") if (this.isInNote) { this.hide() - // 下面是完成回答后写入 Better Notes 主笔记的两种方案 + // The following is written after completing the answer Better Notes. Two options for master notes Meet.BetterNotes.insertEditorText(outputDiv.innerHTML) - // window.setTimeout(async () => { - // Meet.BetterNotes.insertEditorText(await Zotero.BetterNotes.api.convert.md2html(text)) - // }) } } } - /** - * GPT写的 - * @param node - */ private addDragEvent(node: HTMLDivElement) { let posX: number, posY: number let currentX: number, currentY: number let isDragging: boolean = false function handleMouseDown(event: MouseEvent) { - // 如果是input或textarea元素,跳过拖拽逻辑 + // If it is an input or textarea element, skip the drag logic if ( event.target instanceof window.HTMLInputElement || event.target instanceof window.HTMLTextAreaElement || @@ -280,12 +291,7 @@ export default class Views { } - /** - * GPT写的 - * @param inputNode - */ private bindUpDownKeys(inputNode: HTMLInputElement) { - // let currentIdx = this._history.length; inputNode.addEventListener("keydown", (e) => { this._history = this._history.filter(i=>i.input) let currentIdx = this._history.map(i=>i.input).indexOf(this.inputContainer!.querySelector("input")!.value) @@ -317,13 +323,13 @@ export default class Views { } /** - * 绑定ctrl+滚轮放大缩小 + * Bind ctrl+scroll wheel to zoom in and out * @param div */ private bindCtrlScrollZoom(div: HTMLDivElement) { - // 为指定的div绑定wheel事件 + // Bind the wheel event to the specified div div.addEventListener('DOMMouseScroll', (event: any) => { - // 检查是否按下了ctrl键 + // Check if the ctrl key is pressed if (event.ctrlKey || event.metaKey) { let _scale = div.style.transform.match(/scale\((.+)\)/) let scale = _scale ? parseFloat(_scale[1]) : 1 @@ -334,11 +340,11 @@ export default class Views { div.style.transformOrigin = "center center" } if (event.detail > 0) { - // 缩小 + // zoom out scale = scale - step div.style.transform = `scale(${scale < minScale ? minScale : scale})`; } else { - // 放大 + // zoom in scale = scale + step div.style.transform = `scale(${scale > maxScale ? maxScale : scale})`; } @@ -347,7 +353,7 @@ export default class Views { } /** - * 绑定ctrl+滚轮放大缩小控件内的所有元素 + * Bind the ctrl wheel to zoom in and out of all elements within the control * @param div */ private bindCtrlScrollZoomOutput(div: HTMLDivElement) { @@ -363,7 +369,7 @@ export default class Views { type StyleAttributes = { [K in StyleAttributeKeys]: string; }; - // 获取子元素的初始样式 + // Get the initial style of the child element const getChildStyles = (child: Element): StyleAttributes => { const style = window.getComputedStyle(child); const result: Partial = {}; @@ -374,7 +380,7 @@ export default class Views { return result as StyleAttributes; }; - // 更新并应用子元素的样式 + // Update and apply styles to child elements const applyNewStyles = (child: HTMLElement, style: StyleAttributes, scale: number) => { const newStyle = (value: string) => parseFloat(value) * scale + 'px'; @@ -382,13 +388,12 @@ export default class Views { child.style && (child.style[key as StyleAttributeKeys] = newStyle(style[key as StyleAttributeKeys])) } }; - // 为指定的div绑定wheel事件 + // Bind the wheel event to the specified div div.addEventListener('DOMMouseScroll', (event: any) => { const children = div.children[0].children; if (event.ctrlKey || event.metaKey) { const step = 0.05; event.preventDefault(); - // 阻止事件冒泡 event.stopPropagation(); const scale = event.detail > 0 ? 1 - step : 1 + step; Array.from(children).forEach((child) => { @@ -400,8 +405,462 @@ export default class Views { }); } + public createOrUpdateModelsContainer() { + var curPublisher = Zotero.Prefs.get(`${config.addonRef}.usingPublisher`) as string + const toolbarContainer = this.toolbarContainer + if (toolbarContainer == null) { + Zotero.Prefs.set(`${config.addonRef}.startLocalServer`, false) + return + } + const publishConfigContainer = toolbarContainer.querySelector(".publisher")! + var publishSelectContainer = toolbarContainer.querySelector(".publisherSelect")! + if (publishSelectContainer) { + publishSelectContainer.remove() + } + + const publishId = "publishid" + publishSelectContainer = ztoolkit.UI.appendElement({ + tag: "select", + id: publishId, + classList: ["publisherSelect"], + properties: { + value: "", + } + }, publishConfigContainer) as HTMLSelectElement//HTMLDivElement + + var publisherSelectIdx = 0 + for (var i = 0; i < this.publishers.length; i++) { + if (this.publishers[i] == curPublisher) { + publisherSelectIdx = i + } + var optionId = "option" + i + const optionContainer = ztoolkit.UI.appendElement({ + tag: "option", + id: optionId, + properties: { + innerHTML: this.publishers[i], + value: this.publishers[i] + } + }, publishSelectContainer) as HTMLDivElement + } + publishSelectContainer.selectedIndex = publisherSelectIdx + + publishSelectContainer.addEventListener("change", async event => { + event.stopPropagation(); + + curPublisher = publishSelectContainer.value + Zotero.Prefs.set(`${config.addonRef}.usingPublisher`, curPublisher) + var curPublisherElement = this.publisher2models.get(curPublisher) + if (curPublisherElement == null) return + var curAPIKey: string = curPublisherElement.apiKey + var curAPIUrl: string = curPublisherElement.apiUrl + Zotero.Prefs.set(`${config.addonRef}.usingAPIKEY`, curAPIKey) + Zotero.Prefs.set(`${config.addonRef}.usingAPIURL`, curAPIUrl) + + for (var i = 0; i < this.publishers.length; i++) { + if (this.publishers[i] == curPublisher) { + publishSelectContainer.selectedIndex = i + break + } + } + + curShowModels = curPublisherElement.models + + var modelNode = document.getElementById("modelSelect") as HTMLSelectElement + if (modelNode != null) { + modelNode.innerHTML = "" + } + + for (var i = 0; i < curShowModels.length; i++) { + var optionId = "optionModel" + i + var modelName = curShowModels[i] + if (modelName.includes(":")) { + let index = modelName.indexOf(":") + modelName = modelName.substr(0, index) + } + const optionContainer = ztoolkit.UI.appendElement({ + tag: "option", + id: optionId, + properties: { + innerHTML: modelName, + value: modelName + } + }, modelNode) as HTMLDivElement + } + modelNode.selectedIndex = curPublisherElement.defaultModelIdx + var curModel = curShowModels[modelNode.selectedIndex] + + Zotero.Prefs.set(`${config.addonRef}.usingModel`, curModel) + + var apiDivNode = document.getElementById("apidiv") + if (curPublisher == "Local LLM") { + if (apiDivNode != null) { + apiDivNode.remove() + } + + const progressContainer = toolbarContainer.querySelector(".progress")! as HTMLProgressElement + if (progressContainer != null) { + progressContainer.remove() + } + + var isModelReady = curPublisherElement.areModelsReady.get(curModel) + if (isModelReady) { + var retValue = await selectModel(curPublisher, curModel) + if (!retValue) { + Zotero.log("invoke selectModel error!") + } + } else { + var ret = await getLocalModelDownloadProgress(curModel) + + var trycount = 0 + while (ret < 0 || ret > 210) { + if (trycount >= 5) break + await sleep(1000) + ret = await getLocalModelDownloadProgress(curModel) + trycount = trycount + 1 + } + + if (ret == 200) { + curPublisherElement.areModelsReady.set(curModel, true) + } else if (/*ret == -1 ||*/ (ret >= 0 && ret <= 100)) { + //if (ret == -1) ret = 0 + + const modelConfigContainer = toolbarContainer.querySelector(".model")! as HTMLDivElement + + if (modelConfigContainer != null) { + const progressContainer = ztoolkit.UI.appendElement({ + tag: "progress", + id: "progress", + classList: ["progress"], + properties: { + max: "100", + value: ret + } + }, modelConfigContainer) as HTMLProgressElement + + + var timer: undefined | number; + const interval = async () =>{ + var ret = await getLocalModelDownloadProgress(curModel) + + var usingModel = Zotero.Prefs.get(`${config.addonRef}.usingModel`) + if (usingModel != curModel) { + window.clearTimeout(timer) + return + } + + if (ret >= 0 && ret < 100) { + progressContainer.value = ret + timer = window.setTimeout(interval, 2000) + } else { + if (ret == 100 || ret == 200) { + var curPublisherElement = this.publisher2models.get(curPublisher) + if (curPublisherElement != null) { + curPublisherElement.areModelsReady.set(curModel, true) + } + } + progressContainer.remove() + window.clearTimeout(timer) + } + } + + window.setTimeout(interval, 2000) + } + } + } + } else { + if (apiDivNode != null) { + apiDivNode.remove() + } + + const progressContainer = toolbarContainer.querySelector(".progress")! as HTMLProgressElement + if (progressContainer != null) { + progressContainer.remove() + } + + const modelConfigContainer = toolbarContainer.querySelector(".model")! as HTMLDivElement + var apiDivId = "apidiv" + const apiDivContainer = ztoolkit.UI.appendElement({ + tag: "div", + id: apiDivId, + classList: [apiDivId], + styles: { + margin: "6px" + } + }, modelConfigContainer) as HTMLDivElement + + var apiId = "api" + var apitext = curPublisher + " API KEY" + var apiContainer: HTMLDivElement + if (curPublisherElement.apiKey.length > 0) { + apitext = curPublisherElement.apiKey + + apiContainer = ztoolkit.UI.appendElement({ + tag: "input", + id: apiId, + styles: { + width: "150px" + }, + properties: { + type: "text", + value: apitext + } + }, apiDivContainer) as HTMLDivElement + } else { + apiContainer = ztoolkit.UI.appendElement({ + tag: "input", + id: apiId, + styles: { + width: "150px" + }, + properties: { + type: "text", + placeholder: apitext + } + }, apiDivContainer) as HTMLDivElement + } + + apiContainer.addEventListener("change", async event => { + if ((apiContainer).value == null) return + const curPublisherElement = this.publisher2models.get(curPublisher) + if (curPublisherElement != null) { + curPublisherElement.apiKey = (apiContainer).value + Zotero.Prefs.set(`${config.addonRef}.usingAPIKEY`, (apiContainer).value) + if (curPublisher == "OpenAI") { + Zotero.Prefs.set(`${config.addonRef}.openaiApiKey`, (apiContainer).value) + } else if (curPublisher == "Claude-3") { + Zotero.Prefs.set(`${config.addonRef}.claudeApiKey`, (apiContainer).value) + } else if (curPublisher == "Gemini") { + Zotero.Prefs.set(`${config.addonRef}.geminiApiKey`, (apiContainer).value) + } + if (Zotero.isMac) { + const response = await setApiKey(curPublisher, (apiContainer).value) + } + } + }) + } + }); + + + const modelConfigContainer = toolbarContainer.querySelector(".model")! as HTMLDivElement + + var modelSelectDivContainer = toolbarContainer.querySelector(".modelSelectDivCSS") + + if (modelSelectDivContainer != null) { + modelSelectDivContainer.remove() + } + + var modelSelectDivId = "modelSelectDiv" + modelSelectDivContainer = ztoolkit.UI.appendElement({ + tag: "div", + id: modelSelectDivId, + classList: ["modelSelectDivCSS"], + styles: { + margin: "6px" + } + }, modelConfigContainer) as HTMLDivElement + + + var modelSelectContainer = toolbarContainer.querySelector(".modelSelect")! + if (modelSelectContainer) { + modelSelectContainer.remove() + } + + var modelSelectId = "modelSelect" + modelSelectContainer = ztoolkit.UI.appendElement({ + tag: "select", + id: modelSelectId, + classList: ["modelSelect"], + }, modelSelectDivContainer) as HTMLSelectElement // DivElement + + var curShowPublisher = this.publisher2models.get(curPublisher) + if (curShowPublisher == null) { return} + var curShowModels = curShowPublisher.models + + for (var i = 0; i < curShowModels.length; i++) { + var optionId = "optionModel" + i + + var modelName = curShowModels[i] + if (modelName.includes(":")) { + let index = modelName.indexOf(":") + modelName = modelName.substr(0, index) + } + const optionContainer = ztoolkit.UI.appendElement({ + tag: "option", + id: optionId, + properties: { + innerHTML: modelName, + value: modelName + } + }, modelSelectContainer) as HTMLDivElement + } + + modelSelectContainer.selectedIndex = curShowPublisher.defaultModelIdx + + modelSelectContainer.addEventListener("change", async event => { + var curModel = modelSelectContainer.value + Zotero.Prefs.set(`${config.addonRef}.usingModel`, curModel) + + + for (var i = 0; i < curShowModels.length; i++) { + if (curModel == curShowModels[i] || curShowModels[i].includes(curModel)) { + modelSelectContainer.selectedIndex = i + var curPublisherElement = this.publisher2models.get(curPublisher) + if (curPublisherElement != null) { + curPublisherElement.defaultModelIdx = i + } + break + } + } + + if (curPublisher == "Local LLM") { + + const progressContainer = modelConfigContainer.querySelector(".progress")! as HTMLProgressElement + if (progressContainer != null) { + progressContainer.remove() + } + var curPublisherElement = this.publisher2models.get(curPublisher) + var isModelReady = curPublisherElement.areModelsReady.get(curModel) + if (isModelReady) { + var retValue = await selectModel(curPublisher, curModel) + if (!retValue) { + Zotero.log("invoke selectModel error!") + } + } else if (curPublisherElement != null + && !isModelReady) { + var ret = await getLocalModelDownloadProgress(curModel) + + var trycount = 0 + while (ret < 0 || ret > 210) { + if (trycount >= 5) break + await sleep(1000) + ret = await getLocalModelDownloadProgress(curModel) + trycount = trycount + 1 + } + + if (ret == 200) { + curPublisherElement.areModelsReady.set(curModel, true) + } else if (/*ret == -1 ||*/ (ret >= 0 && ret <= 100)) { + //if (ret == -1) ret = 0 + + const progressContainer = ztoolkit.UI.appendElement({ + tag: "progress", + id: "progress", + classList: ["progress"], + properties: { + max: "100", + value: ret + } + }, modelConfigContainer) as HTMLProgressElement + var timer: undefined | number; + const interval = async () =>{ + var ret = await getLocalModelDownloadProgress(curModel) + + var usingModel = Zotero.Prefs.get(`${config.addonRef}.usingModel`) + if (usingModel != curModel) { + window.clearTimeout(timer) + return + } + if (ret >= 0 && ret < 100) { + progressContainer.value = ret + timer = window.setTimeout(interval, 2000) + } else if (ret == 100 || ret == 200) { + var curPublisherElement = this.publisher2models.get(curPublisher) + if (curPublisherElement != null) { + curPublisherElement.areModelsReady.set(curModel, true) + } + progressContainer.remove() + window.clearTimeout(timer) + } + } + + window.setTimeout(interval, 2000) + } + } + } + }); + + var curPublisherConfig = this.publisher2models.get(curPublisher) + if (curPublisherConfig != null) { + if (curPublisherConfig != null && curPublisherConfig.hasApiKey) { + var apiDivId = "apidiv" + + var apiDivContainer = toolbarContainer.querySelector(".apidiv")! + if (apiDivContainer) { + apiDivContainer.remove() + } + + apiDivContainer = ztoolkit.UI.appendElement({ + tag: "div", + id: apiDivId, + classList: [apiDivId], + styles: { + margin: "6px" + } + }, modelConfigContainer) as HTMLDivElement + + var apiId = "api" + var apitext = curPublisher + " API KEY" + if (curPublisherConfig.apiKey.length > 0) { + apitext = curPublisherConfig.apiKey + } + + var apiContainer: HTMLDivElement + if (curPublisherConfig.apiKey.length > 0) { + apitext = curPublisherConfig.apiKey + + apiContainer = ztoolkit.UI.appendElement({ + tag: "input", + id: apiId, + styles: { + width: "150px" + }, + properties: { + type: "text", + value: apitext + } + }, apiDivContainer) as HTMLDivElement + + } else { + apiContainer = ztoolkit.UI.appendElement({ + tag: "input", + id: apiId, + styles: { + width: "150px" + }, + properties: { + type: "text", + placeholder: apitext + } + }, apiDivContainer) as HTMLDivElement + } + + apiContainer.addEventListener("change", async event => { + var curPublisherElement = this.publisher2models.get(curPublisher) + if (curPublisherElement != null) { + curPublisherElement.apiKey = (apiContainer).value + Zotero.Prefs.set(`${config.addonRef}.usingAPIKEY`, curPublisherElement.apiKey) + + if (curPublisher == "OpenAI") { + Zotero.Prefs.set(`${config.addonRef}.openaiApiKey`, (apiContainer).value) + } else if (curPublisher == "Claude-3") { + Zotero.Prefs.set(`${config.addonRef}.claudeApiKey`, (apiContainer).value) + } else if (curPublisher == "Gemini") { + Zotero.Prefs.set(`${config.addonRef}.geminiApiKey`, (apiContainer).value) + } + + if (Zotero.isMac) { + const response = await setApiKey(curPublisher, curPublisherElement.apiKey) + } + } + }) + } + } + } + + + private buildContainer() { - // 顶层容器 const container = ztoolkit.UI.createElement(document, "div", { id: this.id, styles: { @@ -419,11 +878,719 @@ export default class Views { 0px 6.3px 24.7px rgba(0, 0, 0, 0.112), 0px 30px 90px rgba(0, 0, 0, 0.2)`, fontFamily: fontFamily, + zIndex:1 } }) this.addDragEvent(container) this.bindCtrlScrollZoom(container) - // 输入 + + var curPublisher = Zotero.Prefs.get(`${config.addonRef}.usingPublisher`) as string + var curModel = Zotero.Prefs.get(`${config.addonRef}.usingModel`) as string + + // toolbar + const toolbarContainer = this.toolbarContainer = ztoolkit.UI.appendElement({ + tag: "div", + id: "toolbar-container", + styles: { + borderBottom: "1px solid #f6f6f6", + width: "100%", + display: "flex", + alignItems: "center", + }, + + children: [ + { + tag: "div", + id: "publishers", + classList: ["publisher"], + styles: { + margin: "6px", + float: "left" + } + }, + { + tag: "div", + id: "models", + classList: ["model"], + styles: { + margin: "6px", + float: "left" + } + }, + + { + tag: "div", + id: "registers", + classList: ["register"], + styles: { + marginLeft: "30%", + float: "right", + color: "blue", + fontSize: "20px" + }, + + children: [ + { + tag: "img", + id: "registerImg", + classList: ["registerImg"], + styles: { + width: "20px", + height: "20px", + backgroundColor: "#fff", + }, + properties: { + src: `chrome://${config.addonRef}/content/icons/subscribe.png` + } + } + ] + + } + + ] + }, container) as HTMLDivElement + + //create + this.createOrUpdateModelsContainer() + + const registerContainer = toolbarContainer.querySelector(".register")! as HTMLDivElement + + registerContainer.addEventListener("mouseup", async event => { + window.alert = function(msg, container) { + + const backgroundContainer = ztoolkit.UI.createElement(document, "div", { + id: "languagesBg", + styles: { + display: "block", + flexDirection: "column", + justifyContent: "flex-start", + alignItems: "center", + position: "fixed", + width: Zotero.Prefs.get(`${config.addonRef}.width`) as string, + fontSize: "18px", + borderRadius: "10px", + backgroundColor: "#000", + boxShadow: `0px 1.8px 7.3px rgba(0, 0, 0, 0.071), + 0px 6.3px 24.7px rgba(0, 0, 0, 0.112), + 0px 30px 90px rgba(0, 0, 0, 0.2)`, + fontFamily: fontFamily, + opacity: 0.6, + zIndex:2, + }, + }) + + const subscriberShowContainer = ztoolkit.UI.createElement(document, "div", { + id: "subscriber", + styles: { + display: "none", + //flexDirection: "column", + //justifyContent: "center", + //alignItems: "center", + position: "fixed", + width: Zotero.Prefs.get(`${config.addonRef}.width`) as string, + fontSize: "18px", + borderRadius: "10px", + backgroundColor: "#fff", + boxShadow: `0px 1.8px 7.3px rgba(0, 0, 0, 0.071), + 0px 6.3px 24.7px rgba(0, 0, 0, 0.112), + 0px 30px 90px rgba(0, 0, 0, 0.2)`, + fontFamily: fontFamily, + zIndex:3, + }, + }) + + const subscriberCloseContainer = ztoolkit.UI.appendElement({ + tag: "div", + id: "subscriberClose", + styles: { + display: "flex", + flexDirection: "column", + justifyContent: "flex-start", + //justifyContent: "center", + alignItems: "start", + position: "fixed", + //width: Zotero.Prefs.get(`${config.addonRef}.width`) as string, + fontSize: "15px", + borderRadius: "10px", + backgroundColor: "#fff", + boxShadow: `0px 1.8px 7.3px rgba(0, 0, 0, 0.071), + 0px 6.3px 24.7px rgba(0, 0, 0, 0.112), + 0px 30px 90px rgba(0, 0, 0, 0.2)`, + fontFamily: fontFamily, + color: "#1e90ff", + cursor: "pointer", + zIndex:3, + margin: "10px" + }, + properties: { + value: "", + innerHTML: "X" + } + }, subscriberShowContainer) as HTMLDivElement + + subscriberCloseContainer.addEventListener("click", async event => { + event.stopPropagation(); + backgroundContainer.style.display = "none" + subscriberShowContainer.style.display = "none" + }) + + + const subscriberNoteContainer = ztoolkit.UI.appendElement({ + tag: "div", + id: "subscriberNote", + styles: { + display: "flex", + //flexDirection: "column", + justifyContent: "center", + position: "fixed", + width: Zotero.Prefs.get(`${config.addonRef}.width`) as string, + fontSize: "25px", + //borderRadius: "10px", + //backgroundColor: "#fff", + //boxShadow: `0px 1.8px 7.3px rgba(0, 0, 0, 0.071), + //0px 6.3px 24.7px rgba(0, 0, 0, 0.112), + //0px 30px 90px rgba(0, 0, 0, 0.2)`, + fontFamily: fontFamily, + //color: "#1e90ff", + //cursor: "pointer", + zIndex:3, + //margin: "10px" + }, + + properties: { + value: "", + innerHTML: "Thank you for using zotero-chatpdf!" + } + }, subscriberCloseContainer) as HTMLDivElement + + const grade = Zotero.Prefs.get(`${config.addonRef}.grade`) as string + const imgLink = `chrome://${config.addonRef}/content/icons/` + grade + ".png" + const subscriberGradeContainer = ztoolkit.UI.appendElement({ + tag: "img", + id: "subscriberGrade", + styles: { + display: "flex", + justifyContent: "center", + position: "fixed", + width: "64px", + height: "64px", + backgroundColor: "#fff", + margin: "50px" + }, + + properties: { + src: imgLink + } + }, subscriberNoteContainer) as HTMLDivElement + + + + const registerWrapContainer = ztoolkit.UI.createElement(document, "div", { + id: "registerWrap", + styles: { + display: "flex", + flexDirection: "column", + //justifyContent: "flex-start", + justifyContent: "center", + alignItems: "center", + position: "fixed", + width: Zotero.Prefs.get(`${config.addonRef}.width`) as string, + fontSize: "18px", + borderRadius: "10px", + backgroundColor: "#fff", + boxShadow: `0px 1.8px 7.3px rgba(0, 0, 0, 0.071), + 0px 6.3px 24.7px rgba(0, 0, 0, 0.112), + 0px 30px 90px rgba(0, 0, 0, 0.2)`, + fontFamily: fontFamily, + //cursor: "pointer", + //spacing: "20px", + zIndex:3, + + }, + }) + + + const subscribeContainer = ztoolkit.UI.appendElement({ + tag: "input", + id: "subscribeInput", + styles: { + display: "flex", + flexDirection: "column", + //justifyContent: "flex-start", + justifyContent: "center", + alignItems: "center", + position: "fixed", + width: Zotero.Prefs.get(`${config.addonRef}.width`) as string, + fontSize: "15px", + borderRadius: "10px", + backgroundColor: "#fff", + boxShadow: `0px 1.8px 7.3px rgba(0, 0, 0, 0.071), + 0px 6.3px 24.7px rgba(0, 0, 0, 0.112), + 0px 30px 90px rgba(0, 0, 0, 0.2)`, + fontFamily: fontFamily, + zIndex:3, + + }, + properties: { + type: "text", + placeholder: "Email" + } + }, registerWrapContainer) as HTMLDivElement + + const subscribeWarnNoteContainer = ztoolkit.UI.appendElement({ + tag: "div", + id: "subscribeWarnNote", + styles: { + display: "none", + flexDirection: "column", + //justifyContent: "flex-start", + justifyContent: "center", + alignItems: "center", + position: "fixed", + width: Zotero.Prefs.get(`${config.addonRef}.width`) as string, + fontSize: "12px", + color: "red", + //borderRadius: "10px", + //backgroundColor: "#fff", + //boxShadow: `0px 1.8px 7.3px rgba(0, 0, 0, 0.071), + //0px 6.3px 24.7px rgba(0, 0, 0, 0.112), + //0px 30px 90px rgba(0, 0, 0, 0.2)`, + fontFamily: fontFamily, + //cursor: "pointer", + zIndex:3, + + }, + properties: { + innerHTML: "" + } + }, registerWrapContainer) as HTMLDivElement + + + const verifyWarnNoteContainer = ztoolkit.UI.appendElement({ + tag: "div", + id: "verifyWarnNote", + styles: { + display: "none", + flexDirection: "column", + //justifyContent: "flex-start", + justifyContent: "center", + alignItems: "center", + position: "fixed", + width: Zotero.Prefs.get(`${config.addonRef}.width`) as string, + fontSize: "12px", + color: "red", + //borderRadius: "10px", + //backgroundColor: "#fff", + //boxShadow: `0px 1.8px 7.3px rgba(0, 0, 0, 0.071), + //0px 6.3px 24.7px rgba(0, 0, 0, 0.112), + //0px 30px 90px rgba(0, 0, 0, 0.2)`, + fontFamily: fontFamily, + //cursor: "pointer", + zIndex:3, + + }, + properties: { + innerHTML: "" + } + }, registerWrapContainer) as HTMLDivElement + + + const registerNoteContainer = ztoolkit.UI.appendElement({ + tag: "div", + id: "registerNote", + styles: { + display: "flex", + flexDirection: "column", + //justifyContent: "flex-start", + //justifyContent: "center", + //alignItems: "center", + position: "fixed", + width: Zotero.Prefs.get(`${config.addonRef}.width`) as string, + fontSize: "15px", + //borderRadius: "10px", + //backgroundColor: "#fff", + //boxShadow: `0px 1.8px 7.3px rgba(0, 0, 0, 0.071), + //0px 6.3px 24.7px rgba(0, 0, 0, 0.112), + //0px 30px 90px rgba(0, 0, 0, 0.2)`, + fontFamily: fontFamily, + //color: "#1e90ff", + //cursor: "pointer", + zIndex:3, + //margin: "20px" + }, + + properties: { + value: "", + innerHTML: "Now subscribe for free to get the enhanced features:
1. For Mac users, chat with local SOTA LLMs(llama) without pay.
2. Access GPT-4o, Gemini and Claude in one client.
3. Secure for your data, All stored locally, not upload to the Cloud." + } + }, registerWrapContainer) as HTMLDivElement + + const closeContainer = ztoolkit.UI.appendElement({ + tag: "div", + id: "close", + styles: { + display: "flex", + flexDirection: "column", + position: "fixed", + width: Zotero.Prefs.get(`${config.addonRef}.width`) as string, + fontSize: "15px", + borderRadius: "10px", + backgroundColor: "#fff", + boxShadow: `0px 1.8px 7.3px rgba(0, 0, 0, 0.071), + 0px 6.3px 24.7px rgba(0, 0, 0, 0.112), + 0px 30px 90px rgba(0, 0, 0, 0.2)`, + fontFamily: fontFamily, + color: "#1e90ff", + cursor: "pointer", + zIndex:3, + margin: "20px" + }, + properties: { + value: "", + innerHTML: "X" + } + }, registerWrapContainer) as HTMLDivElement + + closeContainer.addEventListener("click", async event => { + event.stopPropagation(); + backgroundContainer.style.display = "none" + registerWrapContainer.style.display = "none" + }) + + const subscribeSubmitContainer = ztoolkit.UI.appendElement({ + tag: "div", + id: "subscribeSubmit", + styles: { + display: "flex", + flexDirection: "column", + justifyContent: "center", + alignItems: "center", + position: "fixed", + + backgroundColor: "#fff", + fontSize: "15px", + boxShadow: `0px 1.8px 7.3px rgba(0, 0, 0, 0.071), + 0px 6.3px 24.7px rgba(0, 0, 0, 0.112), + 0px 30px 90px rgba(0, 0, 0, 0.2)`, + borderRadius: "8px", + border: "1px solid #fff", + cursor: "pointer", + whiteSpace: "nowrap", + zIndex: 3 + }, + properties: { + innerHTML: "Subscribe" + }, + listeners: [ + { + type: "mousedown", + listener: (event: any) => { + subscribeSubmitContainer.style.backgroundColor = "#C0C0C0"; + } + }, + { + type: "mouseup", + listener: async (event: any) => { + event.stopPropagation(); + var emailRegExp=/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/; + var ok = emailRegExp.test(subscribeContainer.value) + + var message = "" + let res + if (ok) { + subscribeContainer.style.border = "" + const url = `https://www.chatpdflocal.com/api/zoterosubscribe` + try { + res = await Zotero.HTTP.request( + "POST", + url, + { + responseType: "json", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + email: subscribeContainer.value + }), + }) + } catch (error: any) { + message = "Network error! Please check your network and try it again!" + + subscribeWarnNoteContainer.style.display = "flex" + subscribeWarnNoteContainer.innerHTML = message + subscribeContainer.style.border = "1px solid red" + } + + if (res?.response) { + var code = res.response.status + if (code == 200) { + message = "Success! Please check license in email and activate!" + subscribeWarnNoteContainer.style.display = "flex" + subscribeWarnNoteContainer.innerHTML = message + subscribeWarnNoteContainer.style.color = "green" + subscribeWarnNoteContainer.style.justifyContent = "flex-start" + } else { + message = res.response.message + subscribeWarnNoteContainer.style.display = "flex" + subscribeWarnNoteContainer.innerHTML = message + subscribeContainer.style.border = "1px solid red" + } + } + } else { + message = "Email not valid!" + subscribeContainer.style.border = "1px solid red" + subscribeWarnNoteContainer.style.display = "flex" + subscribeWarnNoteContainer.innerHTML = message + } + + subscribeSubmitContainer.style.backgroundColor = "#fff"; + } + } + ] + }, registerWrapContainer) as HTMLSelectElement + + + const licenseContainer = ztoolkit.UI.appendElement({ + tag: "input", + id: "lcenseInput", + styles: { + display: "flex", + flexDirection: "column", + //justifyContent: "flex-start", + justifyContent: "center", + alignItems: "center", + position: "fixed", + width: Zotero.Prefs.get(`${config.addonRef}.width`) as string, + fontSize: "15px", + borderRadius: "10px", + backgroundColor: "#fff", + boxShadow: `0px 1.8px 7.3px rgba(0, 0, 0, 0.071), + 0px 6.3px 24.7px rgba(0, 0, 0, 0.112), + 0px 30px 90px rgba(0, 0, 0, 0.2)`, + fontFamily: fontFamily, + //color: "#1e90ff", + //cursor: "pointer", + //spacing: "20px", + zIndex:3, + + }, + properties: { + type: "text", + placeholder: "License" + } + }, registerWrapContainer) as HTMLDivElement + + const verifyLicenseContainer = ztoolkit.UI.appendElement({ + tag: "div", + id: "verifyLicense", + styles: { + display: "flex", + flexDirection: "column", + justifyContent: "center", + alignItems: "center", + position: "fixed", + width: Zotero.Prefs.get(`${config.addonRef}.width`) as string, + fontSize: "15px", + borderRadius: "8px", + backgroundColor: "#fff", + boxShadow: `0px 1.8px 7.3px rgba(0, 0, 0, 0.071), + 0px 6.3px 24.7px rgba(0, 0, 0, 0.112), + 0px 30px 90px rgba(0, 0, 0, 0.2)`, + fontFamily: fontFamily, + cursor: "pointer", + zIndex:3, + }, + properties: { + value: "", + innerHTML: "Activate" + }, + listeners: [ + { + type: "mousedown", + listener: (event: any) => { + verifyLicenseContainer.style.backgroundColor = "#C0C0C0"; + } + }, + { + type: "mouseup", + listener: async (event: any) => { + event.stopPropagation(); + + let res + const url = `https://www.chatpdflocal.com/api/zoteroactivate` + try { + res = await Zotero.HTTP.request( + "POST", + url, + { + responseType: "json", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + email: subscribeContainer.value, + license: licenseContainer.value, + }), + }) + } catch (error: any) { + licenseContainer.style.border = "1px solid red" + verifyWarnNoteContainer.style.display = "flex" + verifyWarnNoteContainer.innerHTML = "Network error! Please check your network and try it again!" + } + + if (res?.response) { + if (res.response.status && res.response.status == 200) { + const email = subscribeContainer.value + const token = licenseContainer.value + Zotero.Prefs.set(`${config.addonRef}.email`, email) + Zotero.Prefs.set(`${config.addonRef}.token`, token) + Zotero.Prefs.set(`${config.addonRef}.isLicenseActivated`, true) + Zotero.Prefs.set(`${config.addonRef}.grade`, res.response.grader) + + + await Zotero[config.addonInstance].views.updatePublisherModels(email, token) + Zotero[config.addonInstance].views.createOrUpdateModelsContainer() + + + backgroundContainer.style.display = "none" + + registerWrapContainer.style.display = "none" + + return + } else { + licenseContainer.style.border = "1px solid red" + verifyWarnNoteContainer.style.display = "flex" + verifyWarnNoteContainer.innerHTML = res.response.message + return + } + } + + verifyLicenseContainer.style.backgroundColor = "#fff"; + } + }] + }, registerWrapContainer) as HTMLDivElement + + + var curShowContainer = registerWrapContainer + var isActivated = Zotero.Prefs.get(`${config.addonRef}.isLicenseActivated`) + if (isActivated) { + registerWrapContainer.style.display = "none" + subscriberShowContainer.style.display = "flex" + curShowContainer = subscriberShowContainer + } + + document.documentElement.append(backgroundContainer) + document.documentElement.append(subscriberShowContainer) + document.documentElement.append(registerWrapContainer) + + backgroundContainer.style.display = "flex" + + backgroundContainer.style.height = "50%" + backgroundContainer.style.width = container.style.width + + backgroundContainer.style.left = container.style.left + backgroundContainer.style.top = container.style.top + + + var x = -1 + var y = -1 + if (x + y < 0) { + const rect = document.documentElement.getBoundingClientRect() + //x = rect.width / 2 - registerWrapContainer.offsetWidth / 2; + x = rect.width / 2 - curShowContainer.offsetWidth / 2; + //y = rect.height / 2 - registerWrapContainer.offsetHeight / 2; + y = rect.height / 2 - curShowContainer.offsetHeight / 2; + } + + // ensure container doesn't go off the right side of the screen + //if (x + registerWrapContainer.offsetWidth > window.innerWidth) { + if (x + curShowContainer.offsetWidth > window.innerWidth) { + //x = window.innerWidth - registerWrapContainer.offsetWidth + x = window.innerWidth - curShowContainer.offsetWidth + } + + // ensure container doesn't go off the bottom of the screen + //if (y + registerWrapContainer.offsetHeight > window.innerHeight) { + if (y + curShowContainer.offsetHeight > window.innerHeight) { + //y = window.innerHeight - registerWrapContainer.offsetHeight + y = window.innerHeight - curShowContainer.offsetHeight + } + + // ensure container doesn't go off the left side of the screen + if (x < 0) { + x = 0 + } + + // ensure container doesn't go off the top of the screen + if (y < 0) { + y = 0 + } + // this.container.style.display = "flex" + + + registerWrapContainer.style.left = `${x}px` + registerWrapContainer.style.top = `${y}px` + registerWrapContainer.style.height = "300px" + + subscriberShowContainer.style.left = `${x}px` + subscriberShowContainer.style.top = `${y}px` + subscriberShowContainer.style.height = "150px" + + + closeContainer.style.left = `${x}px` + closeContainer.style.top = `${y}px` + closeContainer.style.width = "6px" + closeContainer.style.height = "6px" + + subscriberCloseContainer.style.width = "6px" + subscriberCloseContainer.style.height = "6px" + + + registerNoteContainer.style.left = `${x + container.clientWidth * 0.1}px` + registerNoteContainer.style.top = `${y + 20}px` + registerNoteContainer.style.width = `${container.clientWidth * 0.85}px` + registerNoteContainer.style.height = "100px" + + subscribeContainer.style.left = `${x + container.clientWidth * 0.2}px` + subscribeContainer.style.top = `${y + 135}px` + subscribeContainer.style.width = `${container.clientWidth * 0.6}px` + subscribeContainer.style.height = "32px" + + subscribeWarnNoteContainer.style.left = `${x + container.clientWidth * 0.2}px` + subscribeWarnNoteContainer.style.top = `${y + 172}px` + subscribeWarnNoteContainer.style.width = `${container.clientWidth * 0.6}px` + subscribeWarnNoteContainer.style.height = "28px" + + + subscribeSubmitContainer.style.left = `${x + container.clientWidth * 0.8 + 15}px` + subscribeSubmitContainer.style.top = `${y + 134}px` + subscribeSubmitContainer.style.width = "68px" + subscribeSubmitContainer.style.height = "39px" + + verifyLicenseContainer.style.left = `${x + container.clientWidth * 0.8 + 15}px` + verifyLicenseContainer.style.top = `${y + 210}px` + verifyLicenseContainer.style.width = "68px" + verifyLicenseContainer.style.height = "39px" + + + + + + licenseContainer.style.left = `${x + container.clientWidth * 0.2}px` + licenseContainer.style.top = `${y + 210}px` + licenseContainer.style.width = `${container.clientWidth * 0.6}px` + licenseContainer.style.height = "32px" + + verifyWarnNoteContainer.style.left = `${x + container.clientWidth * 0.2}px` + verifyWarnNoteContainer.style.top = `${y + 240}px` + verifyWarnNoteContainer.style.width = `${container.clientWidth * 0.6}px` + verifyWarnNoteContainer.style.height = "28px" + + } + window.alert('Subscribe', this.container!); + }) + + // input const inputContainer = this.inputContainer = ztoolkit.UI.appendElement({ tag: "div", id: "input-container", @@ -466,7 +1633,6 @@ export default class Views { } } ] - }, container) as HTMLDivElement const inputNode = inputContainer.querySelector("input")! this.bindUpDownKeys(inputNode) @@ -479,13 +1645,13 @@ export default class Views { // @ts-ignore let text = Meet.Global.input = this.value if ((event.ctrlKey || event.metaKey) && ["s", "r"].indexOf(event.key) >= 0 && textareaNode.style.display != "none") { - // 必定保存,但未必运行 + // must save,but not necessary to execute const tag = parseTag(text) if (tag) { // @ts-ignore this.value = tag.text let tags = that.getTags() - // 如果tags存在,可能是更新,先从tags里将其移除 + // If tags exist, maybe to update, removed from tags tags = tags.filter((_tag: Tag) => { return _tag.tag != tag.tag }) @@ -498,16 +1664,15 @@ export default class Views { .show() return } - // 运行代码,并保存标签 + // Execute codes, and then save the tags if (event.key == "r") { return that.execTag(tag) } } - // 普通文本 + // normal text else { - // 运行文本呢 if (event.key == "r") { - // 长文本当作未保存的命令标签执行,长文本里可以写js + // Long text is executed as an unsaved command label, You can write js in long text return that.execTag({tag: "Untitled", position: -1, color: "", trigger: "", text}) } } @@ -517,14 +1682,11 @@ export default class Views { outputContainer.querySelector(".auxiliary")?.remove() - // 同时按Ctrl,会点击第一个标签 if (event.ctrlKey || event.metaKey) { - // 查找第一个点击 ztoolkit.log("Ctrl + Enter") let tag = that._tag || that.getTags()[0] return that.execTag(tag) } - // 按住Shift,进入长文本编辑模式,此时应该通过Ctrl+R来运行 if (event.shiftKey) { if (inputNode.style.display != "none") { inputNode.style.display = "none" @@ -534,7 +1696,6 @@ export default class Views { } return } - // 优先级最高,防止中文输入法回车转化成英文 if (text.length != lastInputText.length) { lastInputText = text return @@ -544,7 +1705,6 @@ export default class Views { inputNode.style.display = "none" textareaNode.style.display = "" textareaNode.focus() - // 判断本地是否存在这个标签 const tags = that.getTags(); const tag = tags.find((tag: any) => tag.text.startsWith(text.split("\n")[0])) if (tag) { @@ -555,8 +1715,6 @@ export default class Views { } } else if (text.startsWith("/")) { that._history.push(text) - // 尝试结束其它stream的生命 - // that._id = undefined that.stopAlloutput() text = text.slice(1) let [key, value] = text.split(" ") @@ -569,9 +1727,6 @@ export default class Views { that.setText(help, true, false) } else if (key == "report") { const secretKey = Zotero.Prefs.get(`${config.addonRef}.secretKey`) as string - // window.setTimeout(() => { - // Zotero.launchURL("https://platform.openai.com/account/usage") - // }, 1000) return that.setText(`\`api\` ${Zotero.Prefs.get(`${config.addonRef}.api`)}\n\`secretKey\` ${secretKey.slice(0, 3) + "..." + secretKey.slice(-4)}\n\`model\` ${Zotero.Prefs.get(`${config.addonRef}.model`)}\n\`temperature\` ${Zotero.Prefs.get(`${config.addonRef}.temperature`)}`, true, false) } else if (["secretKey", "model", "api", "temperature", "deltaTime", "width", "tagsMore", "chatNumber", "relatedNumber"].indexOf(key) >= 0) { if (value?.length > 0) { @@ -626,7 +1781,7 @@ export default class Views { } } else if (event.key == "Escape") { outputContainer.style.display = "none" - // 退出长文编辑模式 + // Exit long article editing mode if (textareaNode.style.display != "none") { textareaNode.style.display = "none" inputNode.value = "" @@ -642,6 +1797,17 @@ export default class Views { that.hide() that.container!.remove() that.isInNote && Meet.BetterNotes.reFocus() + if (Zotero.isMac) { + const window = Zotero.getMainWindow(); + const OS = window.OS; + var filename = "ChatPDFLocal" + if (!(OS.File.exists(filename))) { + const temp = Zotero.getTempDirectory(); + filename = OS.Path.join(temp.path.replace(temp.leafName, ""), `${filename}.dmg`); + } + shutdownLocalLLMEngine() + Zotero.Prefs.set(`${config.addonRef}.startLocalServer`, false) + } } else if (event.key == "/" && text == "/" && that.container.querySelector("input")?.style.display != "none") { const rect = that.container.querySelector("input")!.getBoundingClientRect() const commands = ["clear", "help", "report", "secretKey", "model", "api", "temperature", "chatNumber", "relatedNumber" , "deltaTime", "tagsMore", "width"] @@ -662,7 +1828,6 @@ export default class Views { } inputNode.addEventListener("keyup", inputListener) textareaNode.addEventListener("keyup", inputListener) - // 输出 const outputContainer = this.outputContainer = ztoolkit.UI.appendElement({ tag: "div", id: "output-container", @@ -687,7 +1852,7 @@ export default class Views { // margin: ".5em 0" }, properties: { - // 用于复制 + // Used to copy pureText: "" } } @@ -743,7 +1908,7 @@ export default class Views { ] }, container) as HTMLDivElement this.bindCtrlScrollZoomOutput(outputContainer) - // 命令标签 + // command tag const tagsMore = Zotero.Prefs.get(`${config.addonRef}.tagsMore`) as string const tagsContainer = this.tagsContainer = ztoolkit.UI.appendElement({ tag: "div", @@ -820,7 +1985,7 @@ export default class Views { }, container) as HTMLDivElement document.documentElement.append(container) this.renderTags() - // 聚焦 + // focus window.setTimeout(() => { container.focus() inputContainer.focus() @@ -830,7 +1995,7 @@ export default class Views { } /** - * 渲染标签,要根据position排序 + * Render tags, sorted according to position */ private renderTags() { this.tagsContainer!?.querySelectorAll("div").forEach(e=>e.remove()) @@ -841,11 +2006,12 @@ export default class Views { } /** - * 添加一个标签 + * add a tag */ private addTag(tag: Tag, index: number) { let [red, green, blue] = this.utils.getRGB(tag.color) let timer: undefined | number; + let container = this.tagsContainer! ztoolkit.UI.appendElement({ tag: "div", id: `tag-${index}`, @@ -874,7 +2040,7 @@ export default class Views { timer = window.setTimeout(() => { timer = undefined if (event.buttons == 1) { - // 进入编辑模式 + // Enter edit mode const textareaNode = this.inputContainer?.querySelector("textarea")! const inputNode = this.inputContainer?.querySelector("input")! inputNode.style.display = "none"; @@ -897,14 +2063,596 @@ export default class Views { window.clearTimeout(timer) timer = undefined this.outputContainer.querySelector(".auxiliary")?.remove() - await this.execTag(tag) + var curLanguage = Zotero.Prefs.get(`${config.addonRef}.usingLanguage`) as string + if (tag.tag.includes("Translate") && curLanguage.length == 0) { + window.alert = function(msg, parentContainer) { + const backgroundContainer = ztoolkit.UI.createElement(document, "div", { + id: "languagesBg", + + styles: { + display: "block", + flexDirection: "column", + justifyContent: "flex-start", + alignItems: "center", + position: "fixed", + //left: "0px", + //top: "0px", + width: Zotero.Prefs.get(`${config.addonRef}.width`) as string, + fontSize: "18px", + borderRadius: "10px", + backgroundColor: "#000", + boxShadow: `0px 1.8px 7.3px rgba(0, 0, 0, 0.071), + 0px 6.3px 24.7px rgba(0, 0, 0, 0.112), + 0px 30px 90px rgba(0, 0, 0, 0.2)`, + fontFamily: fontFamily, + opacity: 0.6, + zIndex:2, + }, + }) + + const allLanguagesContainer = ztoolkit.UI.createElement(document, "div", { + id: "allLanguages", + + styles: { + display: "block", + flexDirection: "column", + //justifyContent: "flex-start", + justifyContent: "center", + alignItems: "center", + position: "fixed", + width: Zotero.Prefs.get(`${config.addonRef}.width`) as string, + fontSize: "18px", + borderRadius: "10px", + backgroundColor: "#fff", + boxShadow: `0px 1.8px 7.3px rgba(0, 0, 0, 0.071), + 0px 6.3px 24.7px rgba(0, 0, 0, 0.112), + 0px 30px 90px rgba(0, 0, 0, 0.2)`, + fontFamily: fontFamily, + //cursor: "pointer", + //spacing: "20px", + zIndex:3, + + }, + }) + + + const languageContainer = ztoolkit.UI.appendElement({ + tag: "div", + id: "languages", + + styles: { + display: "flex", + //flexDirection: "column", + //justifyContent: "flex-start", + justifyContent: "center", + alignItems: "center", + position: "fixed", + width: Zotero.Prefs.get(`${config.addonRef}.width`) as string, + fontSize: "18px", + //borderRadius: "10px", + //backgroundColor: "#fff", + //boxShadow: `0px 1.8px 7.3px rgba(0, 0, 0, 0.071), + //0px 6.3px 24.7px rgba(0, 0, 0, 0.112), + //0px 30px 90px rgba(0, 0, 0, 0.2)`, + fontFamily: fontFamily, + color: "red", + cursor: "pointer", + //spacing: "20px", + zIndex:3, + + }, + properties: { + innerHTML: msg + } + }, allLanguagesContainer) as HTMLDivElement + + + + const closeContainer = ztoolkit.UI.appendElement({ + tag: "div", + id: "close", + styles: { + display: "flex", + flexDirection: "column", + //justifyContent: "flex-start", + justifyContent: "center", + alignItems: "center", + position: "fixed", + width: Zotero.Prefs.get(`${config.addonRef}.width`) as string, + fontSize: "15px", + borderRadius: "10px", + backgroundColor: "#fff", + boxShadow: `0px 1.8px 7.3px rgba(0, 0, 0, 0.071), + 0px 6.3px 24.7px rgba(0, 0, 0, 0.112), + 0px 30px 90px rgba(0, 0, 0, 0.2)`, + fontFamily: fontFamily, + color: "#1e90ff", + cursor: "pointer", + zIndex:3, + margin: "20px" + }, + properties: { + value: "", + innerHTML: "X" + } + }, allLanguagesContainer) as HTMLDivElement + + closeContainer.addEventListener("click", async event => { + event.stopPropagation(); + + backgroundContainer.style.display = "none" + allLanguagesContainer.style.display = "none" + + }) + + + + + const languageSelectContainer = ztoolkit.UI.appendElement({ + tag: "select", + id: "languagesSelect", + styles: { + margin: "20px" + }, + properties: { + value: "" + } + }, languageContainer) as HTMLSelectElement//HTMLDivElement + + + + let languagesJson + try { + languagesJson = Zotero.Prefs.get(`${config.addonRef}.languages`) as string + } catch {} + + var curLanguage = Zotero.Prefs.get(`${config.addonRef}.usingLanguage`) as string + var languageSelectIdx = 0 + this.supportedLanguages = JSON.parse(languagesJson) + if (this.supportedLanguages.length == 0) { + const defaultLanguages = ["Arbic","Chinese", "English", "French", "German", "Hindi", "Italian", "Japanese", "Portuguese", "Russian", "Spanish"] + for (let defaultLanguage of defaultLanguages) { + this.supportedLanguages.push(defaultLanguage) + } + } + + var idx = 0 + for (let language of this.supportedLanguages) { + if (curLanguage == language) { + languageSelectIdx = idx + 1 + break + } + idx = idx + 1 + } + + var optionId = "languageOption0" + const optionContainer = ztoolkit.UI.appendElement({ + tag: "option", + id: optionId, + properties: { + innerHTML: "", + value: "" + } + }, languageSelectContainer) as HTMLDivElement + + for (var i = 0; i < this.supportedLanguages.length; i++) { + if (this.supportedLanguages[i] == curLanguage) { + languageSelectIdx = i + 1 + } + var optionId = "languageOption" + (i + 1) + const optionContainer = ztoolkit.UI.appendElement({ + tag: "option", + id: optionId, + properties: { + innerHTML: this.supportedLanguages[i], + value: this.supportedLanguages[i] + } + }, languageSelectContainer) as HTMLDivElement + } + languageSelectContainer.selectedIndex = languageSelectIdx + + languageSelectContainer.addEventListener("change", async event => { + event.stopPropagation(); + curLanguage = languageSelectContainer.value + Zotero.Prefs.set(`${config.addonRef}.usingLanguage`, curLanguage) + + for (var i = 0; i < this.supportedLanguages.length; i++) { + if (this.supportedLanguages[i] == curLanguage) { + languageSelectContainer.selectedIndex = i + 1 + break + } + } + + backgroundContainer.style.display = "none" + allLanguagesContainer.style.display = "none" + + }) + + + + + + document.documentElement.append(backgroundContainer) + document.documentElement.append(allLanguagesContainer) + + backgroundContainer.style.display = "flex" + + //const rect = document.documentElement.getBoundingClientRect() + + backgroundContainer.style.height = "30%" + backgroundContainer.style.width = parentContainer.style.width + languageContainer.style.display = "flex" + + backgroundContainer.style.left = parentContainer.style.left + backgroundContainer.style.top = parentContainer.style.top + + + var x = -1 + var y = -1 + if (x + y < 0) { + const rect = document.documentElement.getBoundingClientRect() + x = rect.width / 2 - languageContainer.offsetWidth / 2; + y = rect.height / 2 - languageContainer.offsetHeight / 2; + } + + // ensure container doesn't go off the right side of the screen + if (x + languageContainer.offsetWidth > window.innerWidth) { + x = window.innerWidth - languageContainer.offsetWidth + } + + // ensure container doesn't go off the bottom of the screen + if (y + languageContainer.offsetHeight > window.innerHeight) { + y = window.innerHeight - languageContainer.offsetHeight + } + + // ensure container doesn't go off the left side of the screen + if (x < 0) { + x = 0 + } + + // ensure container doesn't go off the top of the screen + if (y < 0) { + y = 0 + } + // this.container.style.display = "flex" + languageContainer.style.left = `${x}px` + languageContainer.style.top = `${y}px` + + //returnConfirmContainer.style.left = `${x + allLanguagesContainer.clientWidth/2}px` + //returnConfirmContainer.style.left = `${window.innerWidth - 10}px` + //returnConfirmContainer.style.top = `${y + allLanguagesContainer.clientHeight/2}px` + //returnConfirmContainer.style.width = "80px" + //returnConfirmContainer.style.height = "40px" + + + allLanguagesContainer.style.left = `${x}px` + allLanguagesContainer.style.top = `${y}px` + allLanguagesContainer.style.height = "80px" + + + const percent = Number(Zotero.Prefs.get(`${config.addonRef}.width`)) + closeContainer.style.left = `${x}px` + closeContainer.style.top = `${y + 6}px`//allLanguagesContainer.style.top + closeContainer.style.width = "3px" + closeContainer.style.height = "5px" + + } + window.alert('Please specify language first:', this.container); + + } else { + await this.execTag(tag) + } } } } ] }, this.tagsContainer!) as HTMLDivElement + + if (tag.tag.includes("Translate")) { + var curLanguage = Zotero.Prefs.get(`${config.addonRef}.usingLanguage`) as string + if (curLanguage.length > 0) { + ztoolkit.UI.appendElement({ + tag: "div", + id: `translateLanguageConfig`, + styles: { + display: "inline-block", + flexShrink: "0", + fontSize: "0.5em", + height: "1.5em", + //color: `rgba(${red}, ${green}, ${blue}, 1)`, + backgroundColor: `rgba(${red}, ${green}, ${blue}, 0.15)`, + borderRadius: "1em", + border: "1px solid #fff", + margin: ".15em", + padding: "0 .6em", + cursor: "pointer", + whiteSpace: "nowrap" + }, + properties: { + innerHTML: "..." + }, + listeners: [ + { + type: "click", + listener: async () => { + var curLanguage = Zotero.Prefs.get(`${config.addonRef}.usingLanguage`) as string + window.alert = function(msg, parentContainer) { + const backgroundContainer = ztoolkit.UI.createElement(document, "div", { + id: "languagesBg", + + styles: { + display: "block", + flexDirection: "column", + justifyContent: "flex-start", + alignItems: "center", + position: "fixed", + //left: "0px", + //top: "0px", + width: Zotero.Prefs.get(`${config.addonRef}.width`) as string, + fontSize: "18px", + borderRadius: "10px", + backgroundColor: "#000", + boxShadow: `0px 1.8px 7.3px rgba(0, 0, 0, 0.071), + 0px 6.3px 24.7px rgba(0, 0, 0, 0.112), + 0px 30px 90px rgba(0, 0, 0, 0.2)`, + fontFamily: fontFamily, + opacity: 0.6, + zIndex:2, + }, + }) + + const allLanguagesContainer = ztoolkit.UI.createElement(document, "div", { + id: "allLanguages", + + styles: { + display: "block", + flexDirection: "column", + //justifyContent: "flex-start", + justifyContent: "center", + alignItems: "center", + position: "fixed", + width: Zotero.Prefs.get(`${config.addonRef}.width`) as string, + fontSize: "18px", + borderRadius: "10px", + backgroundColor: "#fff", + boxShadow: `0px 1.8px 7.3px rgba(0, 0, 0, 0.071), + 0px 6.3px 24.7px rgba(0, 0, 0, 0.112), + 0px 30px 90px rgba(0, 0, 0, 0.2)`, + fontFamily: fontFamily, + //cursor: "pointer", + //spacing: "20px", + zIndex:3, + + }, + }) + + + const languageContainer = ztoolkit.UI.appendElement({ + tag: "div", + id: "languages", + + styles: { + display: "flex", + //flexDirection: "column", + //justifyContent: "flex-start", + justifyContent: "center", + alignItems: "center", + position: "fixed", + width: Zotero.Prefs.get(`${config.addonRef}.width`) as string, + fontSize: "18px", + //borderRadius: "10px", + //backgroundColor: "#fff", + //boxShadow: `0px 1.8px 7.3px rgba(0, 0, 0, 0.071), + //0px 6.3px 24.7px rgba(0, 0, 0, 0.112), + //0px 30px 90px rgba(0, 0, 0, 0.2)`, + fontFamily: fontFamily, + color: "red", + cursor: "pointer", + //spacing: "20px", + zIndex:3, + + }, + properties: { + innerHTML: msg + } + }, allLanguagesContainer) as HTMLDivElement + + + + const closeContainer = ztoolkit.UI.appendElement({ + tag: "div", + id: "close", + styles: { + display: "flex", + flexDirection: "column", + //justifyContent: "flex-start", + justifyContent: "center", + alignItems: "center", + position: "fixed", + width: Zotero.Prefs.get(`${config.addonRef}.width`) as string, + fontSize: "15px", + borderRadius: "10px", + backgroundColor: "#fff", + boxShadow: `0px 1.8px 7.3px rgba(0, 0, 0, 0.071), + 0px 6.3px 24.7px rgba(0, 0, 0, 0.112), + 0px 30px 90px rgba(0, 0, 0, 0.2)`, + fontFamily: fontFamily, + color: "#1e90ff", + cursor: "pointer", + zIndex:3, + margin: "20px" + }, + properties: { + value: "", + innerHTML: "X" + } + }, allLanguagesContainer) as HTMLDivElement + + closeContainer.addEventListener("click", async event => { + event.stopPropagation(); + + backgroundContainer.style.display = "none" + allLanguagesContainer.style.display = "none" + + }) + + + + const languageSelectContainer = ztoolkit.UI.appendElement({ + tag: "select", + id: "languagesSelect", + styles: { + margin: "20px" + }, + properties: { + value: "" + } + }, languageContainer) as HTMLSelectElement//HTMLDivElement + + + + let languagesJson + try { + languagesJson = Zotero.Prefs.get(`${config.addonRef}.languages`) as string + } catch {} + + var curLanguage = Zotero.Prefs.get(`${config.addonRef}.usingLanguage`) as string + var languageSelectIdx = 0 + this.supportedLanguages = JSON.parse(languagesJson) + if (this.supportedLanguages.length == 0) { + const defaultLanguages = ["Arbic","Chinese", "English", "French", "German", "Hindi", "Italian", "Japanese", "Portuguese", "Russian", "Spanish"] + for (let defaultLanguage of defaultLanguages) { + this.supportedLanguages.push(defaultLanguage) + } + } + + var idx = 0 + for (let language of this.supportedLanguages) { + if (curLanguage == language) { + languageSelectIdx = idx + 1 + break + } + idx = idx + 1 + } + + var optionId = "languageOption0" + const optionContainer = ztoolkit.UI.appendElement({ + tag: "option", + id: optionId, + properties: { + innerHTML: "", + value: "" + } + }, languageSelectContainer) as HTMLDivElement + + for (var i = 0; i < this.supportedLanguages.length; i++) { + if (this.supportedLanguages[i] == curLanguage) { + languageSelectIdx = i + 1 + } + var optionId = "languageOption" + (i + 1) + const optionContainer = ztoolkit.UI.appendElement({ + tag: "option", + id: optionId, + properties: { + innerHTML: this.supportedLanguages[i], + value: this.supportedLanguages[i] + } + }, languageSelectContainer) as HTMLDivElement + } + languageSelectContainer.selectedIndex = languageSelectIdx + + languageSelectContainer.addEventListener("change", async event => { + event.stopPropagation(); + curLanguage = languageSelectContainer.value + Zotero.Prefs.set(`${config.addonRef}.usingLanguage`, curLanguage) + + for (var i = 0; i < this.supportedLanguages.length; i++) { + if (this.supportedLanguages[i] == curLanguage) { + languageSelectContainer.selectedIndex = i + 1 + break + } + } + + backgroundContainer.style.display = "none" + allLanguagesContainer.style.display = "none" + + }) + + + document.documentElement.append(backgroundContainer) + document.documentElement.append(allLanguagesContainer) + + backgroundContainer.style.display = "flex" + + backgroundContainer.style.height = "30%" + backgroundContainer.style.width = parentContainer.style.width + languageContainer.style.display = "flex" + + backgroundContainer.style.left = parentContainer.style.left + backgroundContainer.style.top = parentContainer.style.top + + + var x = -1 + var y = -1 + if (x + y < 0) { + const rect = document.documentElement.getBoundingClientRect() + x = rect.width / 2 - languageContainer.offsetWidth / 2; + y = rect.height / 2 - languageContainer.offsetHeight / 2; + } + + // ensure container doesn't go off the right side of the screen + if (x + languageContainer.offsetWidth > window.innerWidth) { + x = window.innerWidth - languageContainer.offsetWidth + } + + // ensure container doesn't go off the bottom of the screen + if (y + languageContainer.offsetHeight > window.innerHeight) { + y = window.innerHeight - languageContainer.offsetHeight + } + + // ensure container doesn't go off the left side of the screen + if (x < 0) { + x = 0 + } + + // ensure container doesn't go off the top of the screen + if (y < 0) { + y = 0 + } + // this.container.style.display = "flex" + languageContainer.style.left = `${x}px` + languageContainer.style.top = `${y}px` + + //returnConfirmContainer.style.left = `${x + allLanguagesContainer.clientWidth/2}px` + //returnConfirmContainer.style.left = `${window.innerWidth - 10}px` + //returnConfirmContainer.style.top = `${y + allLanguagesContainer.clientHeight/2}px` + //returnConfirmContainer.style.width = "80px" + //returnConfirmContainer.style.height = "40px" + + + allLanguagesContainer.style.left = `${x}px` + allLanguagesContainer.style.top = `${y}px` + allLanguagesContainer.style.height = "80px" + + const percent = Number(Zotero.Prefs.get(`${config.addonRef}.width`)) + closeContainer.style.left = `${x}px` + closeContainer.style.top = `${y + 6}px`//allLanguagesContainer.style.top + closeContainer.style.width = "3px" + closeContainer.style.height = "5px" + + } + + window.alert('Change translate language:', this.container); + } + } + ] + }, this.tagsContainer!) as HTMLDivElement + } + } + } + private rippleEffect(div: HTMLDivElement, color: string) { let [red, green, blue] = this.utils.getRGB(color) ztoolkit.UI.appendElement({ @@ -916,7 +2664,7 @@ export default class Views { }, div) } /** - * 执行标签 + * execute tag */ private async execTag(tag: Tag) { Meet.Global.input = this.inputContainer.querySelector("input")?.value as string @@ -938,14 +2686,13 @@ export default class Views { outputDiv.innerHTML = "" outputDiv.setAttribute("pureText", ""); let text = tag.text.replace(/^#.+\n/, "") - // 旧版语法不宜传播,MD语法会被转义 + // new match version for (let rawString of text.match(/```j(?:ava)?s(?:cript)?\n([\s\S]+?)\n```/g)! || []) { let codeString = rawString.match(/```j(?:ava)?s(?:cript)?\n([\s\S]+?)\n```/)![1] try { text = text.replace(rawString, await window.eval(`${codeString}`)) } catch { } } - // 新版语法容易分享传播 for (let rawString of text.match(/\$\{[\s\S]+?\}/g)! || []) { let codeString = rawString.match(/\$\{([\s\S]+?)\}/)![1] try { @@ -954,8 +2701,7 @@ export default class Views { } popunWin.createLine({ text: `Characters ${text.length}`, type: "success" }) popunWin.createLine({ text: "Answering...", type: "default" }) - // 运行替换其中js代码 - text = await Meet.OpenAI.getGPTResponse(text) as string + text = await Meet.integratellms.getGPTResponse(text) as string this.dotsContainer?.classList.remove("loading") if (text.trim().length) { try { @@ -974,12 +2720,12 @@ export default class Views { } /** - * 执行输入框文本 + * Execute input box text * @param text * @returns */ private async execText(text: string) { - // 如果文本中存在某一标签预设的关键词|正则表达式,则转为执行该标签 + // If there is a preset keyword | regular expression for a certain tag in the text, it will be converted to execute the tag const tag = this.getTags() .filter((tag: Tag) => tag.trigger?.length > 0) .find((tag: Tag) => { @@ -992,23 +2738,21 @@ export default class Views { }) if (tag) { return this.execTag(tag) } - // 没有匹配执行文本 this.outputContainer.style.display = "none" const outputDiv = this.outputContainer.querySelector("div")! outputDiv.innerHTML = "" outputDiv.setAttribute("pureText", ""); if (text.trim().length == 0) { return } this.dotsContainer?.classList.add("loading") - await Meet.OpenAI.getGPTResponse(text) + await Meet.integratellms.getGPTResponse(text) this.dotsContainer?.classList.remove("loading") } /** - * 从Zotero.Prefs获取所有已保存标签 - * 按照position顺序排序后返回 + * Get all saved tags from Zotero.Prefs + * Return after sorting according to position order */ private getTags() { - // 进行一个简单的处理,应该是中文/表情写入prefs.js导致的bug let tagsJson try { tagsJson = Zotero.Prefs.get(`${config.addonRef}.tags`) as string @@ -1030,11 +2774,6 @@ export default class Views { Zotero.Prefs.set(`${config.addonRef}.tags`, JSON.stringify(tags)) } - /** - * 下面代码是GPT写的 - * @param x - * @param y - */ public show(x: number = -1, y: number = -1, reBuild: boolean = true) { reBuild = reBuild || !this.container if (reBuild) { @@ -1075,7 +2814,7 @@ export default class Views { } /** - * 关闭界面清除所有setInterval + * Shutdown the ui and clear all the setIntervall */ public hide() { this.container.style.display = "none" @@ -1088,9 +2827,9 @@ export default class Views { } /** - * 在输出界面插入辅助按钮 - * 这是一个极具扩展性的函数 - * 帮助定位,比如定位条目,PDF段落,PDF注释 + * Enter auxiliary buttons on the output interface + * This is a very extensible function + * Help with positioning, such as locating entries, PDF comments, PDF paragraphs */ public insertAuxiliary(docs: Document[]) { this.outputContainer.querySelector(".auxiliary")?.remove() @@ -1147,9 +2886,6 @@ export default class Views { }) } - /** - * 创建选项 - */ public createMenuNode( rect: { x: number, y: number, width: number, height: number }, items: { name: string, listener: Function }[], @@ -1252,7 +2988,6 @@ export default class Views { const winRect = document.documentElement.getBoundingClientRect() const nodeRect = menuNode.getBoundingClientRect() - // 避免溢出 if (nodeRect.bottom > winRect.bottom) { menuNode.style.top = "" menuNode.style.bottom = "0px" @@ -1280,6 +3015,17 @@ export default class Views { removeNode() } else if (event.code == "Escape") { removeNode() + if (Zotero.isMac) { + const window = Zotero.getMainWindow(); + const OS = window.OS; + var filename = "ChatPDFLocal" + if (!(OS.File.exists(filename))) { + const temp = Zotero.getTempDirectory(); + filename = OS.Path.join(temp.path.replace(temp.leafName, ""), `${filename}.dmg`); + } + shutdownLocalLLMEngine() + Zotero.Prefs.set(`${config.addonRef}.startLocalServer`, false) + } } nodes.forEach(e => e.classList.remove("selected")) nodes[currentIndex].classList.add("selected") @@ -1288,12 +3034,62 @@ export default class Views { return menuNode } + public async updatePublisherModels(email: string, token: string) { + await getSupportedLLMs(this.publisher2models, this.publishers, email, token) + } + /** - * 绑定快捷键 + * Bind shortcut key */ private registerKey() { const callback = async () => { + this.publisher2models.clear() + this.publishers = [] + this.isInNote = false + const defaultModelApiKey = Zotero.Prefs.get(`${config.addonRef}.openaiApiKey`) + let modelConfig: ModelConfig = { + models: ["gpt-3.5-turbo", "gpt-4"], + hasApiKey: true, + apiKey: defaultModelApiKey, + areModelsReady: new Map(), + defaultModelIdx: 0, + apiUrl: "https://api.openai.com/v1/chat/completions" + } + + this.publisher2models.set("OpenAI", modelConfig) + this.publishers.push("OpenAI") + Zotero.Prefs.set(`${config.addonRef}.usingPublisher`, "OpenAI") + Zotero.Prefs.set(`${config.addonRef}.usingModel`, "gpt-3.5-turbo") + Zotero.Prefs.set(`${config.addonRef}.usingAPIURL`, "https://api.openai.com/v1/chat/completions") + Zotero.Prefs.set(`${config.addonRef}.usingAPIKEY`, defaultModelApiKey) + + var email = Zotero.Prefs.get(`${config.addonRef}.email`) + var token = Zotero.Prefs.get(`${config.addonRef}.token`) + if (Zotero.isMac) { + const OS = window.OS; + var filename = "ChatPDFLocal" + if (!(await OS.File.exists(filename))) { + const temp = Zotero.getTempDirectory(); + filename = OS.Path.join(temp.path.replace(temp.leafName, ""), `${filename}.dmg`); + } + + if (await checkFileExist(filename + ".done")) { + var startLocalServer = Zotero.Prefs.get(`${config.addonRef}.startLocalServer`) + if (!startLocalServer) { + await startLocalLLMEngine(filename) + + Zotero.Prefs.set(`${config.addonRef}.startLocalServer`, true) + const execFunc = async() => { + var email = Zotero.Prefs.get(`${config.addonRef}.email`) + var token = Zotero.Prefs.get(`${config.addonRef}.token`) + await Zotero[config.addonInstance].views.updatePublisherModels(email, token) + Zotero[config.addonInstance].views.createOrUpdateModelsContainer() + } + window.setTimeout(execFunc, 3000) + } + } + } if (Zotero_Tabs.selectedIndex == 0) { const div = document.querySelector("#item-tree-main-default .row.selected")! if (div) { @@ -1304,7 +3100,6 @@ export default class Views { } } else { const reader = await ztoolkit.Reader.getReader() - // const div = reader?._iframeWindow?.document.querySelector("#selection-menu")! const div = reader?._iframeWindow?.document.querySelector(".selection-popup")! if (div) { window.setTimeout(() => { @@ -1333,17 +3128,18 @@ export default class Views { } } if (Zotero.isMac) { + ztoolkit.Shortcut.register("event", { id: config.addonRef, modifiers: "meta", - key: "/", + key: "enter", callback: callback }) } else { ztoolkit.Shortcut.register("event", { id: config.addonRef, modifiers: "control", - key: "/", + key: "enter", callback: callback }) } @@ -1351,7 +3147,6 @@ export default class Views { document.addEventListener( "keydown", async (event: any) => { - // 笔记内按空格 if ( Zotero_Tabs.selectedIndex == 1 && event.explicitOriginalTarget.baseURI.indexOf("note-editor") >= 0 && diff --git a/tags/Readme.md b/tags/Readme.md index e8755ce..9825eda 100644 --- a/tags/Readme.md +++ b/tags/Readme.md @@ -10,4 +10,4 @@ You can long press me without releasing, then move me to a suitable position bef ## About Input Text You can type the question in my header, enter and ask me a question. -You can exit me by pressing Esc above my head and wake me up by pressing Shift + / in the Zotero window. \ No newline at end of file +You can exit me by pressing Esc above my head and wake me up by pressing meta(ctrl) + enter in the Zotero window. diff --git a/update.json b/update.json index 2c1406a..14bb36b 100644 --- a/update.json +++ b/update.json @@ -1,9 +1,9 @@ { "addons": { - "zoterogpt@polygon.org": { + "zoterochatpdf@chatpdflocal.com": { "updates": [ { - "version": "0.2.9", + "version": "0.0.1", "update_link": "", "applications": { "gecko": { @@ -12,7 +12,7 @@ } }, { - "version": "0.2.8", + "version": "0.0.1", "update_link": "", "applications": { "zotero": { diff --git a/update.rdf b/update.rdf index bfb2c5b..b95e6e3 100644 --- a/update.rdf +++ b/update.rdf @@ -1,11 +1,11 @@ - + - 0.2.9 + 0.0.1 zotero@chnm.gmu.edu @@ -27,4 +27,4 @@ - + \ No newline at end of file