Skip to content

Instantly share code, notes, and snippets.

@duke79
Last active December 11, 2024 07:10
Show Gist options
  • Save duke79/3ca22c3931907fb1087e68bbac7d885a to your computer and use it in GitHub Desktop.
Save duke79/3ca22c3931907fb1087e68bbac7d885a to your computer and use it in GitHub Desktop.

It's hard to browse through the ChatGPT history.

Here's a command palette implementation.

Just press 'Cmd + k'.

Run it using Greasemonkey/Tampermonkey etc.

Credit:

https://lnkd.in/drGNi8UV

Steps

  1. Install Greasemonkey (firefox)/Tampermonkey (Chrome).
  2. Go to chat gpt website.
  3. Add script to greasemonkey/tampermonkey from chat-gpt-command-palette.js
  4. Look for Bearer in the script and replace it with the whole authorization bearer (to be done only once). This you can copy from one of the API requests on ChatGPT page.

image

  1. Refresh chat gpt page, wait 2-3 seconds (takes some time to load).
  2. Press Ctrl + k (windows) / Cmd + k (mac).
  3. Start searching...

image

Glad you made it until here! :) If any issue or feedback, please leave a comment on this linkedin post.

function _regeneratorRuntime() {
_regeneratorRuntime = function () {
return exports;
};
var exports = {},
Op = Object.prototype,
hasOwn = Op.hasOwnProperty,
defineProperty = Object.defineProperty || function (obj, key, desc) {
obj[key] = desc.value;
},
$Symbol = "function" == typeof Symbol ? Symbol : {},
iteratorSymbol = $Symbol.iterator || "@@iterator",
asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator",
toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";
function define(obj, key, value) {
return Object.defineProperty(obj, key, {
value: value,
enumerable: !0,
configurable: !0,
writable: !0
}), obj[key];
}
try {
define({}, "");
} catch (err) {
define = function (obj, key, value) {
return obj[key] = value;
};
}
function wrap(innerFn, outerFn, self, tryLocsList) {
var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,
generator = Object.create(protoGenerator.prototype),
context = new Context(tryLocsList || []);
return defineProperty(generator, "_invoke", {
value: makeInvokeMethod(innerFn, self, context)
}), generator;
}
function tryCatch(fn, obj, arg) {
try {
return {
type: "normal",
arg: fn.call(obj, arg)
};
} catch (err) {
return {
type: "throw",
arg: err
};
}
}
exports.wrap = wrap;
var ContinueSentinel = {};
function Generator() {}
function GeneratorFunction() {}
function GeneratorFunctionPrototype() {}
var IteratorPrototype = {};
define(IteratorPrototype, iteratorSymbol, function () {
return this;
});
var getProto = Object.getPrototypeOf,
NativeIteratorPrototype = getProto && getProto(getProto(values([])));
NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);
var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);
function defineIteratorMethods(prototype) {
["next", "throw", "return"].forEach(function (method) {
define(prototype, method, function (arg) {
return this._invoke(method, arg);
});
});
}
function AsyncIterator(generator, PromiseImpl) {
function invoke(method, arg, resolve, reject) {
var record = tryCatch(generator[method], generator, arg);
if ("throw" !== record.type) {
var result = record.arg,
value = result.value;
return value && "object" == typeof value && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) {
invoke("next", value, resolve, reject);
}, function (err) {
invoke("throw", err, resolve, reject);
}) : PromiseImpl.resolve(value).then(function (unwrapped) {
result.value = unwrapped, resolve(result);
}, function (error) {
return invoke("throw", error, resolve, reject);
});
}
reject(record.arg);
}
var previousPromise;
defineProperty(this, "_invoke", {
value: function (method, arg) {
function callInvokeWithMethodAndArg() {
return new PromiseImpl(function (resolve, reject) {
invoke(method, arg, resolve, reject);
});
}
return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();
}
});
}
function makeInvokeMethod(innerFn, self, context) {
var state = "suspendedStart";
return function (method, arg) {
if ("executing" === state) throw new Error("Generator is already running");
if ("completed" === state) {
if ("throw" === method) throw arg;
return doneResult();
}
for (context.method = method, context.arg = arg;;) {
var delegate = context.delegate;
if (delegate) {
var delegateResult = maybeInvokeDelegate(delegate, context);
if (delegateResult) {
if (delegateResult === ContinueSentinel) continue;
return delegateResult;
}
}
if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) {
if ("suspendedStart" === state) throw state = "completed", context.arg;
context.dispatchException(context.arg);
} else "return" === context.method && context.abrupt("return", context.arg);
state = "executing";
var record = tryCatch(innerFn, self, context);
if ("normal" === record.type) {
if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue;
return {
value: record.arg,
done: context.done
};
}
"throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg);
}
};
}
function maybeInvokeDelegate(delegate, context) {
var methodName = context.method,
method = delegate.iterator[methodName];
if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator.return && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel;
var record = tryCatch(method, delegate.iterator, context.arg);
if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel;
var info = record.arg;
return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel);
}
function pushTryEntry(locs) {
var entry = {
tryLoc: locs[0]
};
1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);
}
function resetTryEntry(entry) {
var record = entry.completion || {};
record.type = "normal", delete record.arg, entry.completion = record;
}
function Context(tryLocsList) {
this.tryEntries = [{
tryLoc: "root"
}], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);
}
function values(iterable) {
if (iterable) {
var iteratorMethod = iterable[iteratorSymbol];
if (iteratorMethod) return iteratorMethod.call(iterable);
if ("function" == typeof iterable.next) return iterable;
if (!isNaN(iterable.length)) {
var i = -1,
next = function next() {
for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;
return next.value = undefined, next.done = !0, next;
};
return next.next = next;
}
}
return {
next: doneResult
};
}
function doneResult() {
return {
value: undefined,
done: !0
};
}
return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", {
value: GeneratorFunctionPrototype,
configurable: !0
}), defineProperty(GeneratorFunctionPrototype, "constructor", {
value: GeneratorFunction,
configurable: !0
}), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) {
var ctor = "function" == typeof genFun && genFun.constructor;
return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name));
}, exports.mark = function (genFun) {
return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun;
}, exports.awrap = function (arg) {
return {
__await: arg
};
}, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {
return this;
}), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {
void 0 === PromiseImpl && (PromiseImpl = Promise);
var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);
return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {
return result.done ? result.value : iter.next();
});
}, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () {
return this;
}), define(Gp, "toString", function () {
return "[object Generator]";
}), exports.keys = function (val) {
var object = Object(val),
keys = [];
for (var key in object) keys.push(key);
return keys.reverse(), function next() {
for (; keys.length;) {
var key = keys.pop();
if (key in object) return next.value = key, next.done = !1, next;
}
return next.done = !0, next;
};
}, exports.values = values, Context.prototype = {
constructor: Context,
reset: function (skipTempReset) {
if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);
},
stop: function () {
this.done = !0;
var rootRecord = this.tryEntries[0].completion;
if ("throw" === rootRecord.type) throw rootRecord.arg;
return this.rval;
},
dispatchException: function (exception) {
if (this.done) throw exception;
var context = this;
function handle(loc, caught) {
return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught;
}
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
var entry = this.tryEntries[i],
record = entry.completion;
if ("root" === entry.tryLoc) return handle("end");
if (entry.tryLoc <= this.prev) {
var hasCatch = hasOwn.call(entry, "catchLoc"),
hasFinally = hasOwn.call(entry, "finallyLoc");
if (hasCatch && hasFinally) {
if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);
if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);
} else if (hasCatch) {
if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);
} else {
if (!hasFinally) throw new Error("try statement without catch or finally");
if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);
}
}
}
},
abrupt: function (type, arg) {
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
var entry = this.tryEntries[i];
if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) {
var finallyEntry = entry;
break;
}
}
finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);
var record = finallyEntry ? finallyEntry.completion : {};
return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);
},
complete: function (record, afterLoc) {
if ("throw" === record.type) throw record.arg;
return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;
},
finish: function (finallyLoc) {
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
var entry = this.tryEntries[i];
if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;
}
},
catch: function (tryLoc) {
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
var entry = this.tryEntries[i];
if (entry.tryLoc === tryLoc) {
var record = entry.completion;
if ("throw" === record.type) {
var thrown = record.arg;
resetTryEntry(entry);
}
return thrown;
}
}
throw new Error("illegal catch attempt");
},
delegateYield: function (iterable, resultName, nextLoc) {
return this.delegate = {
iterator: values(iterable),
resultName: resultName,
nextLoc: nextLoc
}, "next" === this.method && (this.arg = undefined), ContinueSentinel;
}
}, exports;
}
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
try {
var info = gen[key](arg);
var value = info.value;
} catch (error) {
reject(error);
return;
}
if (info.done) {
resolve(value);
} else {
Promise.resolve(value).then(_next, _throw);
}
}
function _asyncToGenerator(fn) {
return function () {
var self = this,
args = arguments;
return new Promise(function (resolve, reject) {
var gen = fn.apply(self, args);
function _next(value) {
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
}
function _throw(err) {
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
}
_next(undefined);
});
};
}
function _extends() {
_extends = Object.assign ? Object.assign.bind() : function (target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i];
for (var key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key];
}
}
}
return target;
};
return _extends.apply(this, arguments);
}
var ChatGptAPI = function ChatGptAPI() {};
ChatGptAPI.fetchChatById = /*#__PURE__*/function () {
var _ref = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(id) {
var chat, chatJson;
return _regeneratorRuntime().wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
_context.next = 2;
return fetch("https://chat.openai.com/backend-api/conversation/" + id, {
headers: {
accept: '*/*',
'accept-language': 'en-US,en;q=0.9',
authorization: 'Bearer ',
'cache-control': 'no-cache',
'content-type': 'application/json',
pragma: 'no-cache',
'sec-ch-ua': '"Chromium";v="110", "Not A(Brand";v="24", "Google Chrome";v="110"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"macOS"',
'sec-fetch-dest': 'empty',
'sec-fetch-mode': 'cors',
'sec-fetch-site': 'same-origin'
},
referrer: 'https://chat.openai.com/chat/94b7cc88-33cb-4f06-b172-431a40436738',
referrerPolicy: 'same-origin',
body: null,
method: 'GET',
mode: 'cors',
credentials: 'include'
});
case 2:
chat = _context.sent;
_context.next = 5;
return chat.json();
case 5:
chatJson = _context.sent;
return _context.abrupt("return", chatJson);
case 7:
case "end":
return _context.stop();
}
}, _callee);
}));
return function (_x) {
return _ref.apply(this, arguments);
};
}();
ChatGptAPI.fetchChatHistory = /*#__PURE__*/function () {
var _ref2 = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(offset, limit) {
var chatHistory, chatHistoryJson;
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
while (1) switch (_context2.prev = _context2.next) {
case 0:
_context2.next = 2;
return fetch("https://chat.openai.com/backend-api/conversations?limit=" + limit + "&offset=" + offset, {
headers: {
accept: '*/*',
'accept-language': 'en-US,en;q=0.9',
authorization: 'Bearer ',
'cache-control': 'no-cache',
'content-type': 'application/json',
pragma: 'no-cache',
'sec-ch-ua': '"Chromium";v="110", "Not A(Brand";v="24", "Google Chrome";v="110"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"macOS"',
'sec-fetch-dest': 'empty',
'sec-fetch-mode': 'cors',
'sec-fetch-site': 'same-origin'
},
referrer: 'https://chat.openai.com/chat',
referrerPolicy: 'same-origin',
body: null,
method: 'GET',
mode: 'cors',
credentials: 'include'
});
case 2:
chatHistory = _context2.sent;
_context2.next = 5;
return chatHistory.json();
case 5:
chatHistoryJson = _context2.sent;
console.log({
chatHistoryJson: chatHistoryJson
});
return _context2.abrupt("return", chatHistoryJson);
case 8:
case "end":
return _context2.stop();
}
}, _callee2);
}));
return function (_x2, _x3) {
return _ref2.apply(this, arguments);
};
}();
var HotKeys = function HotKeys() {
var _this = this;
this.recentChats = [];
this.chatHistory = {
loading: false,
items: [],
total: 0,
limit: 0,
offset: 0
};
this.fetchAllChatHistory = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
var limit, offset, total, chatHistoryResponse;
return _regeneratorRuntime().wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
_this.chatHistory.loading = true;
limit = 100;
offset = 0;
total = 0;
case 4:
_context.next = 6;
return ChatGptAPI.fetchChatHistory(offset, limit);
case 6:
chatHistoryResponse = _context.sent;
_this.chatHistory.items = _this.chatHistory.items.concat(chatHistoryResponse.items);
total = chatHistoryResponse.total;
offset += limit;
case 10:
if (_this.chatHistory.items.length < total) {
_context.next = 4;
break;
}
case 11:
_this.mergeRecentChats();
_this.sortChatHistory();
console.log('chatHistory', _this.chatHistory);
_this.chatHistory.loading = false;
case 15:
case "end":
return _context.stop();
}
}, _callee);
}));
this.mergeRecentChats = function () {
// merge recentChats with chatHistory.items
_this.chatHistory.items = _this.chatHistory.items.map(function (item) {
var recentChat = _this.recentChats.find(function (chat) {
return chat.id === item.id;
});
if (recentChat) {
return _extends({}, item, {
last_read: recentChat.last_read
});
}
return item;
});
};
this.sortChatHistory = function () {
// sort chatHistory.items based on last_read timestamp (which might be null)
_this.chatHistory.items = _this.chatHistory.items.sort(function (a, b) {
const isNewChat = v => v === "New chat";
if (isNewChat(a.title) && !isNewChat(b.title)) {
return 1;
}
if (isNewChat(b.title) && !isNewChat(a.title)) {
return -1;
}
var aDate = new Date(a.last_read || a.create_time);
var bDate = new Date(b.last_read || b.create_time);
return bDate.getTime() - aDate.getTime();
});
};
this.updateRecentChats = function (id) {
var recentChat = _this.recentChats.find(function (chat) {
return chat.id === id;
});
if (recentChat) {
recentChat.last_read = new Date().toISOString();
} else {
_this.recentChats.push({
id: id,
last_read: new Date().toISOString()
});
}
localStorage.setItem('recentChats', JSON.stringify(_this.recentChats));
_this.mergeRecentChats();
_this.sortChatHistory();
// update the ninja-keys data
var ninja = document.querySelector("ninja-keys");
_this.getHotKeys().then(function (data) {
console.log('updateRecentChats', data);
ninja.data = data;
});
};
this.handleChatClick = /*#__PURE__*/function () {
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(id) {
var url;
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
while (1) switch (_context2.prev = _context2.next) {
case 0:
_this.updateRecentChats(id);
// // fetch the chat
// const chat = await ChatGptAPI.fetchChatById(item.id);
// const messages = Object.values(chat.mapping);
// const ninja = document.querySelector("ninja-keys") as any;
// ninja.data = messages.filter((message) => message?.message?.content?.parts?.join("\n")).map((message) => {
// const title = message?.message?.content?.parts?.join("\n");
// console.log({ message, title });
// return {
// id: message.id,
// title,
// // title: JSON.stringify(message.message),
// handler: () => {
// const url = `/chat/${item.id}`;
// document.location.href = url;
// }
// };
// });
// ninja.open();
// - open the chat in the same tab
url = "/chat/" + id;
document.location.href = url;
case 3:
case "end":
return _context2.stop();
}
}, _callee2);
}));
return function (_x) {
return _ref2.apply(this, arguments);
};
}();
this.getChatTitle = function (item) {
return item.title + " | " + new Date(item.create_time).toLocaleString();
// .toLocaleString()}
// `${
// item.last_read ? ' [recent]' : ''
// // ? `read ${new Date(item.last_read).toLocaleString()}`
// // : 'unread'
// }`;
};
this.getHotKeys = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
var hotkeys;
return _regeneratorRuntime().wrap(function _callee4$(_context4) {
while (1) switch (_context4.prev = _context4.next) {
case 0:
hotkeys = _this.chatHistory.items.map(function (item) {
return {
id: item.id,
title: _this.getChatTitle(item),
// mdIcon: "home",
handler: function () {
var _handler = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
while (1) switch (_context3.prev = _context3.next) {
case 0:
return _context3.abrupt("return", _this.handleChatClick(item.id));
case 1:
case "end":
return _context3.stop();
}
}, _callee3);
}));
function handler() {
return _handler.apply(this, arguments);
}
return handler;
}()
};
});
return _context4.abrupt("return", hotkeys);
case 2:
case "end":
return _context4.stop();
}
}, _callee4);
}));
console.log('HotKeys constructor');
this.recentChats = JSON.parse(localStorage.getItem('recentChats') || '[]');
this.fetchAllChatHistory().then(function () {
var ninja = document.createElement("ninja-keys");
_this.getHotKeys().then(function (data) {
alert("Command palette ready!");
ninja.data = data;
document.body.appendChild(ninja);
});
});
};
var appendScriptTag = /*#__PURE__*/function () {
var _ref = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
var script;
return _regeneratorRuntime().wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
script = document.createElement('script');
script.src = 'https://unpkg.com/ninja-keys?module';
script.type = 'module';
document.head.appendChild(script);
case 4:
case "end":
return _context.stop();
}
}, _callee);
}));
return function appendScriptTag() {
return _ref.apply(this, arguments);
};
}();
var initCommandPalette = /*#__PURE__*/function () {
var _ref2 = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
while (1) switch (_context2.prev = _context2.next) {
case 0:
new HotKeys();
case 1:
case "end":
return _context2.stop();
}
}, _callee2);
}));
return function initCommandPalette() {
return _ref2.apply(this, arguments);
};
}();
var main = /*#__PURE__*/function () {
var _ref = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
return _regeneratorRuntime().wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
_context.next = 2;
return appendScriptTag();
case 2:
_context.next = 4;
return initCommandPalette();
case 4:
case "end":
return _context.stop();
}
}, _callee);
}));
return function main() {
return _ref.apply(this, arguments);
};
}();
document.addEventListener("DOMContentLoaded", main);
// main();
//# sourceMappingURL=chat-gpt-cmd-palette.esm.js.map
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment