MCPcopy Create free account
hub / github.com/NsLearning/LangHelper / cmdTip

Function cmdTip

ChatGPT/src-tauri/src/scripts/cmd.js:144–302  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

142}
143
144async function cmdTip() {
145 initDom();
146 const chatModelJson = await invoke('get_chat_model_cmd') || {};
147 const data = chatModelJson.data;
148 if (data.length <= 0) return;
149
150 let modelDom = document.querySelector('.chat-model-cmd-list');
151 if (!modelDom) {
152 const dom = document.createElement('div');
153 dom.classList.add('chat-model-cmd-list');
154 document.querySelector('form').appendChild(dom);
155 modelDom = document.querySelector('.chat-model-cmd-list');
156
157 // fix: tray window
158 if (__TAURI_METADATA__.__currentWindow.label === 'tray') {
159 modelDom.style.bottom = '54px';
160 }
161
162 const itemDom = (v) => `<div class="cmd-item" title="${v.prompt}" data-cmd="${v.cmd}" data-prompt="${encodeURIComponent(v.prompt)}"><b title="${v.cmd}">/${v.cmd}</b><i>${v.act}</i></div>`;
163 const renderList = (v) => {
164 initDom();
165 modelDom.innerHTML = `<div>${v.map(itemDom).join('')}</div>`;
166 window.__CHAT_MODEL_CMD_PROMPT__ = v[0]?.prompt.trim();
167 window.__CHAT_MODEL_CMD__ = v[0]?.cmd.trim();
168 window.__cmd_list = modelDom.querySelectorAll('.cmd-item');
169 window.__cmd_index = 0;
170 window.__cmd_list[window.__cmd_index].classList.add('selected');
171 };
172 const setPrompt = (v = '') => {
173 if (v.trim()) {
174 window.__CHAT_MODEL_CMD_PROMPT__ = window.__CHAT_MODEL_CMD_PROMPT__?.replace(/\{([^{}]*)\}/, `{${v.trim()}}`);
175 }
176 }
177 const searchInput = document.querySelector('form textarea');
178
179 // Enter a command starting with `/` and press a space to automatically fill `chatgpt prompt`.
180 // If more than one command appears in the search results, the first one will be used by default.
181 function cmdKeydown(event) {
182 if (!window.__CHAT_MODEL_CMD_PROMPT__) {
183 if (!event.shiftKey && event.keyCode === 13 && __TAURI_METADATA__.__currentWindow.label === 'tray') {
184 const btn = document.querySelector('form button');
185 if (btn) btn.click();
186 event.preventDefault();
187 }
188 return;
189 }
190
191 // ------------------ Keyboard scrolling (ArrowUp | ArrowDown) --------------------------
192 if (event.keyCode === 38 && window.__cmd_index > 0) { // ArrowUp
193 window.__cmd_list[window.__cmd_index].classList.remove('selected');
194 window.__cmd_index = window.__cmd_index - 1;
195 window.__cmd_list[window.__cmd_index].classList.add('selected');
196 window.__CHAT_MODEL_CMD_PROMPT__ = decodeURIComponent(window.__cmd_list[window.__cmd_index].getAttribute('data-prompt'));
197 searchInput.value = `/${window.__cmd_list[window.__cmd_index].getAttribute('data-cmd')}`;
198 event.preventDefault();
199 }
200
201 if (event.keyCode === 40 && window.__cmd_index < window.__cmd_list.length - 1) { // ArrowDown

Callers 1

initFunction · 0.85

Calls 2

initDomFunction · 0.85
invokeFunction · 0.85

Tested by

no test coverage detected