vault backup: 2024-07-13 19:25:17
3
.obsidian/community-plugins.json
vendored
@ -25,5 +25,6 @@
|
||||
"obsidian-plantuml",
|
||||
"obsidian-hover-editor",
|
||||
"find-unlinked-files",
|
||||
"obsidian-git"
|
||||
"obsidian-git",
|
||||
"khoj"
|
||||
]
|
4
.obsidian/plugins/excalibrain/data.json
vendored
@ -292,8 +292,8 @@
|
||||
"_inbox/Read uncommitted.md",
|
||||
"_inbox/Read committed.md",
|
||||
"_inbox/Repeatable read.md",
|
||||
"Home.md",
|
||||
"_inbox/Serializable.md"
|
||||
"_inbox/Serializable.md",
|
||||
"Home.md"
|
||||
],
|
||||
"allowOntologySuggester": true,
|
||||
"ontologySuggesterParentTrigger": "::p",
|
||||
|
4
.obsidian/plugins/home-tab/data.json
vendored
@ -24,8 +24,8 @@
|
||||
"unresolvedLinks": false,
|
||||
"recentFilesStore": [
|
||||
{
|
||||
"filepath": "_inbox/2024-07-13 1720855435.md",
|
||||
"timestamp": 1720887626637
|
||||
"filepath": "Home.md",
|
||||
"timestamp": 1720887753090
|
||||
}
|
||||
],
|
||||
"bookmarkedFileStore": [],
|
||||
|
2
.obsidian/plugins/homepage/data.json
vendored
@ -1,5 +1,5 @@
|
||||
{
|
||||
"version": 3,
|
||||
"version": 4,
|
||||
"homepages": {
|
||||
"Main Homepage": {
|
||||
"value": "Home",
|
||||
|
4
.obsidian/plugins/homepage/main.js
vendored
2
.obsidian/plugins/homepage/manifest.json
vendored
@ -1,7 +1,7 @@
|
||||
{
|
||||
"id": "homepage",
|
||||
"name": "Homepage",
|
||||
"version": "3.8.0",
|
||||
"version": "4.0.2",
|
||||
"minAppVersion": "1.4.10",
|
||||
"description": "Open a specified note, canvas, or workspace on startup, or set it for quick access later.",
|
||||
"author": "novov",
|
||||
|
53
.obsidian/plugins/homepage/styles.css
vendored
@ -45,6 +45,10 @@
|
||||
padding: 10px 0 0;
|
||||
}
|
||||
|
||||
#nv-main-setting #nv-desc.mod-warning {
|
||||
color: var(--text-error);
|
||||
}
|
||||
|
||||
#nv-main-setting #nv-desc code {
|
||||
font-family: var(--font-monospace);
|
||||
font-size: var(--font-smaller);
|
||||
@ -77,21 +81,53 @@
|
||||
border: 1px solid var(--background-modifier-border-hover);
|
||||
border-radius: var(--radius-s);
|
||||
font-size: var(--font-ui-small);
|
||||
padding: var(--size-2-1) var(--size-2-3);
|
||||
padding: var(--size-2-1) var(--size-2-2) var(--size-2-1) var(--size-2-3) ;
|
||||
}
|
||||
|
||||
.nv-command-pill.nv-command-invalid {
|
||||
color: var(--text-faint);
|
||||
}
|
||||
|
||||
.nv-command-pill button {
|
||||
display: inline-block;
|
||||
padding: 0;
|
||||
margin: 0 0 0 var(--size-2-3);
|
||||
margin: 0 0 0 3px;
|
||||
vertical-align: bottom;
|
||||
}
|
||||
|
||||
.nv-command-pill button svg {
|
||||
.nv-command-pill button:first-of-type {
|
||||
margin-left: var(--size-4-2);
|
||||
}
|
||||
|
||||
.nv-command-pill button.nv-command-selected {
|
||||
margin-left: var(--size-2-2);
|
||||
padding: 0 var(--size-2-1);
|
||||
}
|
||||
|
||||
.nv-command-pill button.nv-command-selected span {
|
||||
color: var(--text-accent);
|
||||
display: inline-block;
|
||||
font-size: 0.9em;
|
||||
vertical-align: top;
|
||||
position: relative;
|
||||
top: -1px;
|
||||
}
|
||||
|
||||
.nv-command-pill > .svg-icon, .nv-command-pill button .svg-icon {
|
||||
height: 1em;
|
||||
width: 1em;
|
||||
}
|
||||
|
||||
.nv-command-pill > .svg-icon {
|
||||
vertical-align: text-bottom;
|
||||
position: relative;
|
||||
margin: 0 var(--size-2-1) 0 0;
|
||||
}
|
||||
|
||||
.nv-command-pill.nv-dragging {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.nv-command-add-button {
|
||||
font-size: var(--font-ui-small);
|
||||
padding: var(--size-2-2) var(--size-4-2);
|
||||
@ -133,3 +169,14 @@
|
||||
.is-phone .nv-command-pill button, .is-phone .nv-command-add-button {
|
||||
width: auto;
|
||||
}
|
||||
|
||||
.nv-mobile-setting {
|
||||
flex-wrap: wrap;
|
||||
row-gap: var(--size-2-2);
|
||||
}
|
||||
|
||||
.nv-mobile-setting .nv-mobile-info {
|
||||
font-size: var(--font-ui-smaller);
|
||||
width: 100%;
|
||||
margin-right: var(--size-4-18);
|
||||
}
|
||||
|
257
.obsidian/plugins/khoj/main.js
vendored
@ -82,9 +82,6 @@ var require_purify = __commonJS({
|
||||
const objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);
|
||||
const regExpTest = unapply(RegExp.prototype.test);
|
||||
const typeErrorCreate = unconstruct(TypeError);
|
||||
function numberIsNaN(x) {
|
||||
return typeof x === "number" && isNaN(x);
|
||||
}
|
||||
function unapply(func) {
|
||||
return function(thisArg) {
|
||||
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
||||
@ -243,7 +240,7 @@ var require_purify = __commonJS({
|
||||
function createDOMPurify() {
|
||||
let window2 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : getGlobal();
|
||||
const DOMPurify2 = (root) => createDOMPurify(root);
|
||||
DOMPurify2.version = "3.1.4";
|
||||
DOMPurify2.version = "3.1.5";
|
||||
DOMPurify2.removed = [];
|
||||
if (!window2 || !window2.document || window2.document.nodeType !== NODE_TYPE.document) {
|
||||
DOMPurify2.isSupported = false;
|
||||
@ -364,7 +361,6 @@ var require_purify = __commonJS({
|
||||
const DEFAULT_PARSER_MEDIA_TYPE = "text/html";
|
||||
let transformCaseFunc = null;
|
||||
let CONFIG = null;
|
||||
const MAX_NESTING_DEPTH = 255;
|
||||
const formElement = document2.createElement("form");
|
||||
const isRegexOrFunction = function isRegexOrFunction2(testValue) {
|
||||
return testValue instanceof RegExp || testValue instanceof Function;
|
||||
@ -624,7 +620,7 @@ var require_purify = __commonJS({
|
||||
return createNodeIterator.call(root.ownerDocument || root, root, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION, null);
|
||||
};
|
||||
const _isClobbered = function _isClobbered2(elm) {
|
||||
return elm instanceof HTMLFormElement && (typeof elm.__depth !== "undefined" && typeof elm.__depth !== "number" || typeof elm.__removalCount !== "undefined" && typeof elm.__removalCount !== "number" || typeof elm.nodeName !== "string" || typeof elm.textContent !== "string" || typeof elm.removeChild !== "function" || !(elm.attributes instanceof NamedNodeMap) || typeof elm.removeAttribute !== "function" || typeof elm.setAttribute !== "function" || typeof elm.namespaceURI !== "string" || typeof elm.insertBefore !== "function" || typeof elm.hasChildNodes !== "function");
|
||||
return elm instanceof HTMLFormElement && (typeof elm.nodeName !== "string" || typeof elm.textContent !== "string" || typeof elm.removeChild !== "function" || !(elm.attributes instanceof NamedNodeMap) || typeof elm.removeAttribute !== "function" || typeof elm.setAttribute !== "function" || typeof elm.namespaceURI !== "string" || typeof elm.insertBefore !== "function" || typeof elm.hasChildNodes !== "function");
|
||||
};
|
||||
const _isNode = function _isNode2(object) {
|
||||
return typeof Node === "function" && object instanceof Node;
|
||||
@ -709,7 +705,7 @@ var require_purify = __commonJS({
|
||||
return false;
|
||||
};
|
||||
const _isValidAttribute = function _isValidAttribute2(lcTag, lcName, value) {
|
||||
if (SANITIZE_DOM && (lcName === "id" || lcName === "name") && (value in document2 || value in formElement || value === "__depth" || value === "__removalCount")) {
|
||||
if (SANITIZE_DOM && (lcName === "id" || lcName === "name") && (value in document2 || value in formElement)) {
|
||||
return false;
|
||||
}
|
||||
if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR2, lcName))
|
||||
@ -838,19 +834,7 @@ var require_purify = __commonJS({
|
||||
if (_sanitizeElements(shadowNode)) {
|
||||
continue;
|
||||
}
|
||||
const parentNode = getParentNode(shadowNode);
|
||||
if (shadowNode.nodeType === NODE_TYPE.element) {
|
||||
if (parentNode && parentNode.__depth) {
|
||||
shadowNode.__depth = (shadowNode.__removalCount || 0) + parentNode.__depth + 1;
|
||||
} else {
|
||||
shadowNode.__depth = 1;
|
||||
}
|
||||
}
|
||||
if (shadowNode.__depth >= MAX_NESTING_DEPTH || shadowNode.__depth < 0 || numberIsNaN(shadowNode.__depth)) {
|
||||
_forceRemove(shadowNode);
|
||||
}
|
||||
if (shadowNode.content instanceof DocumentFragment) {
|
||||
shadowNode.content.__depth = shadowNode.__depth;
|
||||
_sanitizeShadowDOM2(shadowNode.content);
|
||||
}
|
||||
_sanitizeAttributes(shadowNode);
|
||||
@ -921,19 +905,7 @@ var require_purify = __commonJS({
|
||||
if (_sanitizeElements(currentNode)) {
|
||||
continue;
|
||||
}
|
||||
const parentNode = getParentNode(currentNode);
|
||||
if (currentNode.nodeType === NODE_TYPE.element) {
|
||||
if (parentNode && parentNode.__depth) {
|
||||
currentNode.__depth = (currentNode.__removalCount || 0) + parentNode.__depth + 1;
|
||||
} else {
|
||||
currentNode.__depth = 1;
|
||||
}
|
||||
}
|
||||
if (currentNode.__depth >= MAX_NESTING_DEPTH || currentNode.__depth < 0 || numberIsNaN(currentNode.__depth)) {
|
||||
_forceRemove(currentNode);
|
||||
}
|
||||
if (currentNode.content instanceof DocumentFragment) {
|
||||
currentNode.content.__depth = currentNode.__depth;
|
||||
_sanitizeShadowDOM(currentNode.content);
|
||||
}
|
||||
_sanitizeAttributes(currentNode);
|
||||
@ -1276,6 +1248,13 @@ function createCopyParentText(message, originalButton = "copy-plus") {
|
||||
return copyParentText(event, message, originalButton);
|
||||
};
|
||||
}
|
||||
function jumpToPreviousView() {
|
||||
var _a;
|
||||
const editor = (_a = this.app.workspace.getActiveFileView()) == null ? void 0 : _a.editor;
|
||||
if (!editor)
|
||||
return;
|
||||
editor.focus();
|
||||
}
|
||||
function pasteTextAtCursor(text) {
|
||||
var _a;
|
||||
const editor = (_a = this.app.workspace.getActiveFileView()) == null ? void 0 : _a.editor;
|
||||
@ -1516,8 +1495,14 @@ var KhojPaneView = class extends import_obsidian4.ItemView {
|
||||
leaf = workspace.getRightLeaf(false);
|
||||
await (leaf == null ? void 0 : leaf.setViewState({ type: viewType, active: true }));
|
||||
}
|
||||
if (leaf)
|
||||
if (leaf) {
|
||||
if (viewType === "khoj-chat-view" /* CHAT */) {
|
||||
let chatInput = this.contentEl.getElementsByClassName("khoj-chat-input")[0];
|
||||
if (chatInput)
|
||||
chatInput.focus();
|
||||
}
|
||||
workspace.revealLeaf(leaf);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@ -1525,6 +1510,12 @@ var KhojPaneView = class extends import_obsidian4.ItemView {
|
||||
var KhojChatView = class extends KhojPaneView {
|
||||
constructor(leaf, setting) {
|
||||
super(leaf, setting);
|
||||
this.keyPressTimeout = null;
|
||||
this.scope = new import_obsidian5.Scope(this.app.scope);
|
||||
this.scope.register(["Ctrl"], "n", (_) => this.createNewConversation());
|
||||
this.scope.register(["Ctrl"], "o", async (_) => await this.toggleChatSessions());
|
||||
this.scope.register(["Ctrl"], "f", (_) => new KhojSearchModal(this.app, this.setting).open());
|
||||
this.scope.register(["Ctrl"], "r", (_) => new KhojSearchModal(this.app, this.setting, true).open());
|
||||
this.waitingForLocation = true;
|
||||
fetch("https://ipapi.co/json").then((response) => response.json()).then((data) => {
|
||||
this.location = {
|
||||
@ -1548,12 +1539,12 @@ var KhojChatView = class extends KhojPaneView {
|
||||
getIcon() {
|
||||
return "message-circle";
|
||||
}
|
||||
async chat() {
|
||||
async chat(isVoice = false) {
|
||||
let input_el = this.contentEl.getElementsByClassName("khoj-chat-input")[0];
|
||||
let user_message = input_el.value.trim();
|
||||
input_el.value = "";
|
||||
this.autoResize();
|
||||
await this.getChatResponse(user_message);
|
||||
await this.getChatResponse(user_message, isVoice);
|
||||
}
|
||||
async onOpen() {
|
||||
let { contentEl } = this;
|
||||
@ -1568,17 +1559,17 @@ var KhojChatView = class extends KhojPaneView {
|
||||
const childSrc = `child-src 'none';`;
|
||||
const objectSrc = `object-src 'none';`;
|
||||
const csp = `${defaultSrc} ${scriptSrc} ${connectSrc} ${styleSrc} ${imgSrc} ${childSrc} ${objectSrc}`;
|
||||
document.head.createEl("meta", { attr: { "http-equiv": "Content-Security-Policy", "content": `${csp}` } });
|
||||
let chatBodyEl = contentEl.createDiv({ attr: { id: "khoj-chat-body", class: "khoj-chat-body" } });
|
||||
let inputRow = contentEl.createDiv("khoj-input-row");
|
||||
let chatSessions = inputRow.createEl("button", {
|
||||
text: "Chat Sessions",
|
||||
attr: {
|
||||
class: "khoj-input-row-button clickable-icon"
|
||||
class: "khoj-input-row-button clickable-icon",
|
||||
title: "Show Conversations (^O)"
|
||||
}
|
||||
});
|
||||
chatSessions.addEventListener("click", async (_) => {
|
||||
await this.toggleChatSessions(chatBodyEl);
|
||||
await this.toggleChatSessions();
|
||||
});
|
||||
(0, import_obsidian5.setIcon)(chatSessions, "history");
|
||||
let chatInput = inputRow.createEl("textarea", {
|
||||
@ -1594,15 +1585,21 @@ var KhojChatView = class extends KhojPaneView {
|
||||
chatInput.addEventListener("keydown", (event) => {
|
||||
this.incrementalChat(event);
|
||||
});
|
||||
this.contentEl.addEventListener("keydown", this.handleKeyDown.bind(this));
|
||||
this.contentEl.addEventListener("keyup", this.handleKeyUp.bind(this));
|
||||
let transcribe = inputRow.createEl("button", {
|
||||
text: "Transcribe",
|
||||
attr: {
|
||||
id: "khoj-transcribe",
|
||||
class: "khoj-transcribe khoj-input-row-button clickable-icon "
|
||||
class: "khoj-transcribe khoj-input-row-button clickable-icon ",
|
||||
title: "Start Voice Chat (^S)"
|
||||
}
|
||||
});
|
||||
transcribe.addEventListener("mousedown", async (event) => {
|
||||
await this.speechToText(event);
|
||||
transcribe.addEventListener("mousedown", (event) => {
|
||||
this.startSpeechToText(event);
|
||||
});
|
||||
transcribe.addEventListener("mouseup", async (event) => {
|
||||
await this.stopSpeechToText(event);
|
||||
});
|
||||
transcribe.addEventListener("touchstart", async (event) => {
|
||||
await this.speechToText(event);
|
||||
@ -1638,6 +1635,41 @@ var KhojChatView = class extends KhojPaneView {
|
||||
});
|
||||
});
|
||||
}
|
||||
startSpeechToText(event, timeout = 200) {
|
||||
if (!this.keyPressTimeout) {
|
||||
this.keyPressTimeout = setTimeout(async () => {
|
||||
if (this.sendMessageTimeout) {
|
||||
clearTimeout(this.sendMessageTimeout);
|
||||
const sendButton = this.contentEl.getElementsByClassName("khoj-chat-send")[0];
|
||||
(0, import_obsidian5.setIcon)(sendButton, "arrow-up-circle");
|
||||
let sendImg = sendButton.getElementsByClassName("lucide-arrow-up-circle")[0];
|
||||
sendImg.addEventListener("click", async (_) => {
|
||||
await this.chat();
|
||||
});
|
||||
const chatInput = this.contentEl.getElementsByClassName("khoj-chat-input")[0];
|
||||
chatInput.value = "";
|
||||
}
|
||||
await this.speechToText(event);
|
||||
}, timeout);
|
||||
}
|
||||
}
|
||||
async stopSpeechToText(event) {
|
||||
if (this.mediaRecorder) {
|
||||
await this.speechToText(event);
|
||||
}
|
||||
if (this.keyPressTimeout) {
|
||||
clearTimeout(this.keyPressTimeout);
|
||||
this.keyPressTimeout = null;
|
||||
}
|
||||
}
|
||||
handleKeyDown(event) {
|
||||
if (event.key === "s" && event.getModifierState("Control"))
|
||||
this.startSpeechToText(event);
|
||||
}
|
||||
async handleKeyUp(event) {
|
||||
if (event.key === "s" && event.getModifierState("Control"))
|
||||
await this.stopSpeechToText(event);
|
||||
}
|
||||
processOnlineReferences(referenceSection, onlineContext) {
|
||||
let numOnlineReferences = 0;
|
||||
for (let subquery in onlineContext) {
|
||||
@ -1745,20 +1777,59 @@ var KhojChatView = class extends KhojPaneView {
|
||||
});
|
||||
return referenceButton;
|
||||
}
|
||||
textToSpeech(message, event = null) {
|
||||
let loader = document.createElement("span");
|
||||
loader.classList.add("loader");
|
||||
let speechButton;
|
||||
let speechIcon;
|
||||
if (event === null) {
|
||||
let speechButtons = document.getElementsByClassName("speech-button");
|
||||
speechButton = speechButtons[speechButtons.length - 1];
|
||||
let speechIcons = document.getElementsByClassName("speech-icon");
|
||||
speechIcon = speechIcons[speechIcons.length - 1];
|
||||
} else {
|
||||
speechButton = event.currentTarget;
|
||||
speechIcon = event.target;
|
||||
}
|
||||
speechButton.appendChild(loader);
|
||||
speechButton.disabled = true;
|
||||
const context = new AudioContext();
|
||||
let textToSpeechApi = `${this.setting.khojUrl}/api/chat/speech?text=${encodeURIComponent(message)}`;
|
||||
fetch(textToSpeechApi, {
|
||||
method: "POST",
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
"Authorization": `Bearer ${this.setting.khojApiKey}`
|
||||
}
|
||||
}).then((response) => response.arrayBuffer()).then((arrayBuffer) => context.decodeAudioData(arrayBuffer)).then((audioBuffer) => {
|
||||
const source = context.createBufferSource();
|
||||
source.buffer = audioBuffer;
|
||||
source.connect(context.destination);
|
||||
source.start(0);
|
||||
source.onended = function() {
|
||||
speechButton.removeChild(loader);
|
||||
speechButton.disabled = false;
|
||||
};
|
||||
}).catch((err) => {
|
||||
console.error("Error playing speech:", err);
|
||||
speechButton.removeChild(loader);
|
||||
speechButton.disabled = false;
|
||||
});
|
||||
}
|
||||
formatHTMLMessage(message, raw = false, willReplace = true) {
|
||||
message = message.replace(/<s>\[INST\].+(<\/s>)?/g, "");
|
||||
message = DOMPurify.sanitize(message);
|
||||
let chat_message_body_text_el = this.contentEl.createDiv();
|
||||
chat_message_body_text_el.className = "chat-message-text-response";
|
||||
chat_message_body_text_el.innerHTML = this.markdownTextToSanitizedHtml(message);
|
||||
chat_message_body_text_el.innerHTML = this.markdownTextToSanitizedHtml(message, this);
|
||||
if (willReplace === true) {
|
||||
this.renderActionButtons(message, chat_message_body_text_el);
|
||||
}
|
||||
return chat_message_body_text_el;
|
||||
}
|
||||
markdownTextToSanitizedHtml(markdownText) {
|
||||
markdownTextToSanitizedHtml(markdownText, component) {
|
||||
let virtualChatMessageBodyTextEl = document.createElement("div");
|
||||
import_obsidian5.MarkdownRenderer.renderMarkdown(markdownText, virtualChatMessageBodyTextEl, "", null);
|
||||
import_obsidian5.MarkdownRenderer.renderMarkdown(markdownText, virtualChatMessageBodyTextEl, "", component);
|
||||
virtualChatMessageBodyTextEl.innerHTML = virtualChatMessageBodyTextEl.innerHTML.replace(/<img(?:(?!src=["'](app:|data:|https:\/\/generated\.khoj\.dev)).)*?>/gis, "");
|
||||
return DOMPurify.sanitize(virtualChatMessageBodyTextEl.innerHTML);
|
||||
}
|
||||
@ -1818,7 +1889,7 @@ ${inferredQuery}`;
|
||||
if (raw) {
|
||||
chat_message_body_text_el.innerHTML = message;
|
||||
} else {
|
||||
chat_message_body_text_el.innerHTML = this.markdownTextToSanitizedHtml(message);
|
||||
chat_message_body_text_el.innerHTML = this.markdownTextToSanitizedHtml(message, this);
|
||||
}
|
||||
if (willReplace === true) {
|
||||
this.renderActionButtons(message, chat_message_body_text_el);
|
||||
@ -1847,39 +1918,52 @@ ${inferredQuery}`;
|
||||
this.result += additionalMessage;
|
||||
htmlElement.innerHTML = "";
|
||||
this.result = DOMPurify.sanitize(this.result);
|
||||
htmlElement.innerHTML = this.markdownTextToSanitizedHtml(this.result);
|
||||
htmlElement.innerHTML = this.markdownTextToSanitizedHtml(this.result, this);
|
||||
this.renderActionButtons(this.result, htmlElement);
|
||||
this.scrollChatToBottom();
|
||||
}
|
||||
renderActionButtons(message, chat_message_body_text_el) {
|
||||
var _a;
|
||||
let copyButton = this.contentEl.createEl("button");
|
||||
copyButton.classList.add("copy-button");
|
||||
copyButton.classList.add("chat-action-button");
|
||||
copyButton.title = "Copy Message to Clipboard";
|
||||
(0, import_obsidian5.setIcon)(copyButton, "copy-plus");
|
||||
copyButton.addEventListener("click", createCopyParentText(message));
|
||||
chat_message_body_text_el.append(copyButton);
|
||||
let pasteToFile = this.contentEl.createEl("button");
|
||||
pasteToFile.classList.add("copy-button");
|
||||
pasteToFile.classList.add("chat-action-button");
|
||||
pasteToFile.title = "Paste Message to File";
|
||||
(0, import_obsidian5.setIcon)(pasteToFile, "clipboard-paste");
|
||||
pasteToFile.addEventListener("click", (event) => {
|
||||
pasteTextAtCursor(createCopyParentText(message, "clipboard-paste")(event));
|
||||
});
|
||||
chat_message_body_text_el.append(pasteToFile);
|
||||
let speechButton = null;
|
||||
if ((_a = this.setting.userInfo) == null ? void 0 : _a.is_active) {
|
||||
speechButton = this.contentEl.createEl("button");
|
||||
speechButton.classList.add("chat-action-button", "speech-button");
|
||||
speechButton.title = "Listen to Message";
|
||||
(0, import_obsidian5.setIcon)(speechButton, "speech");
|
||||
speechButton.addEventListener("click", (event) => this.textToSpeech(message, event));
|
||||
}
|
||||
chat_message_body_text_el.append(copyButton, pasteToFile);
|
||||
if (speechButton) {
|
||||
chat_message_body_text_el.append(speechButton);
|
||||
}
|
||||
}
|
||||
formatDate(date) {
|
||||
let time_string = date.toLocaleTimeString("en-IN", { hour: "2-digit", minute: "2-digit", hour12: false });
|
||||
let date_string = date.toLocaleString("en-IN", { year: "numeric", month: "short", day: "2-digit" }).replace(/-/g, " ");
|
||||
return `${time_string}, ${date_string}`;
|
||||
}
|
||||
createNewConversation(chatBodyEl) {
|
||||
createNewConversation() {
|
||||
let chatBodyEl = this.contentEl.getElementsByClassName("khoj-chat-body")[0];
|
||||
chatBodyEl.innerHTML = "";
|
||||
chatBodyEl.dataset.conversationId = "";
|
||||
chatBodyEl.dataset.conversationTitle = "";
|
||||
this.renderMessage(chatBodyEl, "Hey \u{1F44B}\u{1F3FE}, what's up?", "khoj");
|
||||
}
|
||||
async toggleChatSessions(chatBodyEl, forceShow = false) {
|
||||
async toggleChatSessions(forceShow = false) {
|
||||
var _a;
|
||||
let chatBodyEl = this.contentEl.getElementsByClassName("khoj-chat-body")[0];
|
||||
if (!forceShow && ((_a = this.contentEl.getElementsByClassName("side-panel")) == null ? void 0 : _a.length) > 0) {
|
||||
chatBodyEl.innerHTML = "";
|
||||
return this.getChatHistory(chatBodyEl);
|
||||
@ -1892,9 +1976,10 @@ ${inferredQuery}`;
|
||||
const newConversationButtonEl = newConversationEl.createEl("button");
|
||||
newConversationButtonEl.classList.add("new-conversation-button");
|
||||
newConversationButtonEl.classList.add("side-panel-button");
|
||||
newConversationButtonEl.addEventListener("click", (_) => this.createNewConversation(chatBodyEl));
|
||||
newConversationButtonEl.addEventListener("click", (_) => this.createNewConversation());
|
||||
(0, import_obsidian5.setIcon)(newConversationButtonEl, "plus");
|
||||
newConversationButtonEl.innerHTML += "New";
|
||||
newConversationButtonEl.title = "New Conversation (^N)";
|
||||
const existingConversationsEl = sidePanelEl.createDiv("existing-conversations");
|
||||
const conversationListEl = existingConversationsEl.createDiv("conversation-list");
|
||||
const conversationListBodyHeaderEl = conversationListEl.createDiv("conversation-list-header");
|
||||
@ -1942,8 +2027,7 @@ ${inferredQuery}`;
|
||||
let editConversationTitleButtonEl = this.contentEl.createEl("button");
|
||||
(0, import_obsidian5.setIcon)(editConversationTitleButtonEl, "edit");
|
||||
editConversationTitleButtonEl.title = "Rename";
|
||||
editConversationTitleButtonEl.classList.add("edit-title-button");
|
||||
editConversationTitleButtonEl.classList.add("three-dot-menu-button-item");
|
||||
editConversationTitleButtonEl.classList.add("edit-title-button", "three-dot-menu-button-item", "clickable-icon");
|
||||
if (selectedConversation)
|
||||
editConversationTitleButtonEl.classList.add("selected-conversation");
|
||||
editConversationTitleButtonEl.addEventListener("click", (event) => {
|
||||
@ -1968,7 +2052,7 @@ ${inferredQuery}`;
|
||||
let editConversationTitleSaveButtonEl = this.contentEl.createEl("button");
|
||||
conversationSessionTitleEl.replaceWith(editConversationTitleInputEl);
|
||||
editConversationTitleSaveButtonEl.innerHTML = "Save";
|
||||
editConversationTitleSaveButtonEl.classList.add("three-dot-menu-button-item");
|
||||
editConversationTitleSaveButtonEl.classList.add("three-dot-menu-button-item", "clickable-icon");
|
||||
if (selectedConversation)
|
||||
editConversationTitleSaveButtonEl.classList.add("selected-conversation");
|
||||
editConversationTitleSaveButtonEl.addEventListener("click", (event2) => {
|
||||
@ -2001,8 +2085,7 @@ ${inferredQuery}`;
|
||||
let deleteConversationButtonEl = this.contentEl.createEl("button");
|
||||
(0, import_obsidian5.setIcon)(deleteConversationButtonEl, "trash");
|
||||
deleteConversationButtonEl.title = "Delete";
|
||||
deleteConversationButtonEl.classList.add("delete-conversation-button");
|
||||
deleteConversationButtonEl.classList.add("three-dot-menu-button-item");
|
||||
deleteConversationButtonEl.classList.add("delete-conversation-button", "three-dot-menu-button-item", "clickable-icon");
|
||||
if (selectedConversation)
|
||||
deleteConversationButtonEl.classList.add("selected-conversation");
|
||||
deleteConversationButtonEl.addEventListener("click", () => {
|
||||
@ -2014,7 +2097,7 @@ ${inferredQuery}`;
|
||||
chatBodyEl.innerHTML = "";
|
||||
chatBodyEl.dataset.conversationId = "";
|
||||
chatBodyEl.dataset.conversationTitle = "";
|
||||
this.toggleChatSessions(chatBodyEl, true);
|
||||
this.toggleChatSessions(true);
|
||||
}).catch((err) => {
|
||||
return;
|
||||
});
|
||||
@ -2055,15 +2138,19 @@ ${inferredQuery}`;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
async readChatStream(response, responseElement) {
|
||||
async readChatStream(response, responseElement, isVoice = false) {
|
||||
var _a;
|
||||
if (response.body == null)
|
||||
return;
|
||||
const reader = response.body.getReader();
|
||||
const decoder = new TextDecoder();
|
||||
while (true) {
|
||||
const { value, done } = await reader.read();
|
||||
if (done)
|
||||
if (done) {
|
||||
if (isVoice && ((_a = this.setting.userInfo) == null ? void 0 : _a.is_active))
|
||||
this.textToSpeech(this.result);
|
||||
break;
|
||||
}
|
||||
let responseText = decoder.decode(value);
|
||||
if (responseText.includes("### compiled references:")) {
|
||||
const [additionalResponse, rawReference] = responseText.split("### compiled references:", 2);
|
||||
@ -2076,7 +2163,7 @@ ${inferredQuery}`;
|
||||
}
|
||||
}
|
||||
}
|
||||
async getChatResponse(query) {
|
||||
async getChatResponse(query, isVoice = false) {
|
||||
var _a;
|
||||
if (!query || query === "")
|
||||
return;
|
||||
@ -2144,7 +2231,7 @@ ${inferredQuery}`;
|
||||
await this.renderIncrementalMessage(responseElement, responseText);
|
||||
}
|
||||
} else {
|
||||
await this.readChatStream(response, responseElement);
|
||||
await this.readChatStream(response, responseElement, isVoice);
|
||||
}
|
||||
} catch (err) {
|
||||
console.log(`Khoj chat response failed with
|
||||
@ -2184,7 +2271,7 @@ ${err}`);
|
||||
}
|
||||
}
|
||||
async speechToText(event) {
|
||||
var _a;
|
||||
var _a, _b;
|
||||
event.preventDefault();
|
||||
const transcribeButton = this.contentEl.getElementsByClassName("khoj-transcribe")[0];
|
||||
const chatInput = this.contentEl.getElementsByClassName("khoj-chat-input")[0];
|
||||
@ -2215,9 +2302,20 @@ Content-Type: "application/octet-stream"\r
|
||||
contentType: `multipart/form-data; boundary=----${boundary_string}`,
|
||||
body: requestBody
|
||||
});
|
||||
let noSpeechText = [
|
||||
"Thanks for watching!",
|
||||
"Thanks for watching.",
|
||||
"Thank you for watching!",
|
||||
"Thank you for watching.",
|
||||
"You",
|
||||
"Bye."
|
||||
];
|
||||
let noSpeech = false;
|
||||
if (response.status === 200) {
|
||||
console.log(response);
|
||||
chatInput.value += response.json.text.trimStart();
|
||||
noSpeech = noSpeechText.includes(response.json.text.trimStart());
|
||||
if (!noSpeech)
|
||||
chatInput.value += response.json.text.trimStart();
|
||||
this.autoResize();
|
||||
} else if (response.status === 501) {
|
||||
throw new Error("\u26D4\uFE0F Configure speech-to-text model on server.");
|
||||
@ -2226,7 +2324,7 @@ Content-Type: "application/octet-stream"\r
|
||||
} else {
|
||||
throw new Error("\u26D4\uFE0F Failed to transcribe audio.");
|
||||
}
|
||||
if (chatInput.value.length === 0)
|
||||
if (chatInput.value.length === 0 || noSpeech)
|
||||
return;
|
||||
(0, import_obsidian5.setIcon)(sendButton, "stop-circle");
|
||||
let stopSendButtonImg = sendButton.getElementsByClassName("lucide-stop-circle")[0];
|
||||
@ -2234,13 +2332,14 @@ Content-Type: "application/octet-stream"\r
|
||||
this.cancelSendMessage();
|
||||
});
|
||||
stopSendButtonImg.getElementsByTagName("circle")[0].style.animation = "countdown 3s linear 1 forwards";
|
||||
stopSendButtonImg.getElementsByTagName("circle")[0].style.color = "var(--icon-color-active)";
|
||||
this.sendMessageTimeout = setTimeout(() => {
|
||||
(0, import_obsidian5.setIcon)(sendButton, "arrow-up-circle");
|
||||
let sendImg = sendButton.getElementsByClassName("lucide-arrow-up-circle")[0];
|
||||
sendImg.addEventListener("click", async (_) => {
|
||||
await this.chat();
|
||||
});
|
||||
this.chat();
|
||||
this.chat(true);
|
||||
}, 3e3);
|
||||
};
|
||||
const handleRecording = (stream) => {
|
||||
@ -2256,16 +2355,17 @@ Content-Type: "application/octet-stream"\r
|
||||
await sendToServer(audioBlob);
|
||||
});
|
||||
this.mediaRecorder.start();
|
||||
(0, import_obsidian5.setIcon)(transcribeButton, "mic-off");
|
||||
transcribeButton.classList.add("loading-encircle");
|
||||
};
|
||||
if (!this.mediaRecorder || this.mediaRecorder.state === "inactive" || event.type === "touchstart") {
|
||||
if (!this.mediaRecorder || this.mediaRecorder.state === "inactive" || event.type === "touchstart" || event.type === "mousedown" || event.type === "keydown") {
|
||||
(_a = navigator.mediaDevices.getUserMedia({ audio: true })) == null ? void 0 : _a.then(handleRecording).catch((e) => {
|
||||
this.flashStatusInChatInput("\u26D4\uFE0F Failed to access microphone");
|
||||
});
|
||||
} else if (this.mediaRecorder.state === "recording" || event.type === "touchend" || event.type === "touchcancel") {
|
||||
} else if (((_b = this.mediaRecorder) == null ? void 0 : _b.state) === "recording" || event.type === "touchend" || event.type === "touchcancel" || event.type === "mouseup" || event.type === "keyup") {
|
||||
this.mediaRecorder.stop();
|
||||
this.mediaRecorder.stream.getTracks().forEach((track) => track.stop());
|
||||
this.mediaRecorder = void 0;
|
||||
transcribeButton.classList.remove("loading-encircle");
|
||||
(0, import_obsidian5.setIcon)(transcribeButton, "mic");
|
||||
}
|
||||
}
|
||||
@ -2480,6 +2580,7 @@ var Khoj = class extends import_obsidian6.Plugin {
|
||||
this.unload();
|
||||
}
|
||||
async activateView(viewType) {
|
||||
var _a;
|
||||
const { workspace } = this.app;
|
||||
let leaf = null;
|
||||
const leaves = workspace.getLeavesOfType(viewType);
|
||||
@ -2489,8 +2590,20 @@ var Khoj = class extends import_obsidian6.Plugin {
|
||||
leaf = workspace.getRightLeaf(false);
|
||||
await (leaf == null ? void 0 : leaf.setViewState({ type: viewType, active: true }));
|
||||
}
|
||||
if (leaf)
|
||||
workspace.revealLeaf(leaf);
|
||||
if (leaf) {
|
||||
const activeKhojLeaf = (_a = workspace.getActiveViewOfType(KhojPaneView)) == null ? void 0 : _a.leaf;
|
||||
if (activeKhojLeaf === leaf)
|
||||
jumpToPreviousView();
|
||||
else {
|
||||
workspace.revealLeaf(leaf);
|
||||
if (viewType === "khoj-chat-view" /* CHAT */) {
|
||||
let chatView = leaf.view;
|
||||
let chatInput = chatView.contentEl.getElementsByClassName("khoj-chat-input")[0];
|
||||
if (chatInput)
|
||||
chatInput.focus();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
/*! @license DOMPurify 3.1.4 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.1.4/LICENSE */
|
||||
/*! @license DOMPurify 3.1.5 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.1.5/LICENSE */
|
||||
|
2
.obsidian/plugins/khoj/manifest.json
vendored
@ -1,7 +1,7 @@
|
||||
{
|
||||
"id": "khoj",
|
||||
"name": "Khoj",
|
||||
"version": "1.14.0",
|
||||
"version": "1.16.0",
|
||||
"minAppVersion": "0.15.0",
|
||||
"description": "An AI copilot for your Second Brain",
|
||||
"author": "Khoj Inc.",
|
||||
|
173
.obsidian/plugins/khoj/styles.css
vendored
@ -74,14 +74,14 @@ If your plugin does not need CSS, delete this file.
|
||||
padding: 10px;
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
max-width: 80%;
|
||||
text-align: left;
|
||||
user-select: text;
|
||||
color: var(--text-normal);
|
||||
background-color: var(--active-bg);
|
||||
}
|
||||
/* color chat bubble by khoj blue */
|
||||
.khoj-chat-message-text.khoj {
|
||||
color: var(--khoj-storm-grey);
|
||||
background: var(--khoj-winter-sun);
|
||||
border: 1px solid var(--khoj-sun);
|
||||
margin-left: auto;
|
||||
white-space: pre-line;
|
||||
}
|
||||
@ -92,14 +92,12 @@ If your plugin does not need CSS, delete this file.
|
||||
bottom: -2px;
|
||||
left: -7px;
|
||||
border: 10px solid transparent;
|
||||
border-top-color: var(--khoj-winter-sun);
|
||||
border-bottom: 0;
|
||||
transform: rotate(-60deg);
|
||||
}
|
||||
/* color chat bubble by you dark grey */
|
||||
.khoj-chat-message-text.you {
|
||||
color: var(--text-on-accent);
|
||||
background: var(--khoj-storm-grey);
|
||||
border: 1px solid var(--color-accent);
|
||||
margin-right: auto;
|
||||
}
|
||||
/* add right protrusion to you chat bubble */
|
||||
@ -109,7 +107,6 @@ If your plugin does not need CSS, delete this file.
|
||||
top: 91%;
|
||||
right: -2px;
|
||||
border: 10px solid transparent;
|
||||
border-left-color: var(--khoj-storm-grey);
|
||||
border-right: 0;
|
||||
margin-top: -10px;
|
||||
transform: rotate(-60deg)
|
||||
@ -160,9 +157,8 @@ div.expanded.reference-section {
|
||||
margin: 10px 0;
|
||||
}
|
||||
button.reference-button {
|
||||
background: var(--khoj-winter-sun);
|
||||
color: var(--khoj-storm-grey);
|
||||
border: 1px solid var(--khoj-storm-grey);
|
||||
background-color: transparent;
|
||||
border-radius: 5px;
|
||||
padding: 4px;
|
||||
font-size: 14px;
|
||||
@ -202,8 +198,7 @@ button.reference-button[aria-expanded="true"]::before {
|
||||
transform: rotate(90deg);
|
||||
}
|
||||
button.reference-expand-button {
|
||||
background: var(--khoj-winter-sun);
|
||||
color: var(--khoj-storm-grey);
|
||||
background-color: transparent;
|
||||
border: 1px solid var(--khoj-storm-grey);
|
||||
border-radius: 5px;
|
||||
padding: 8px;
|
||||
@ -216,8 +211,8 @@ button.reference-expand-button {
|
||||
text-align: left;
|
||||
}
|
||||
button.reference-expand-button:hover {
|
||||
background: var(--khoj-sun);
|
||||
color: var(--khoj-storm-grey);
|
||||
background: var(--background-modifier-active-hover);
|
||||
color: var(--text-normal);
|
||||
}
|
||||
a.inline-chat-link {
|
||||
color: #475569;
|
||||
@ -229,15 +224,6 @@ a.inline-chat-link {
|
||||
border-bottom: 1px dotted var(--khoj-storm-grey);
|
||||
}
|
||||
|
||||
button.copy-button {
|
||||
display: block;
|
||||
border-radius: 4px;
|
||||
background-color: var(--color-base-00);
|
||||
}
|
||||
button.copy-button:hover {
|
||||
background: #f5f5f5;
|
||||
cursor: pointer;
|
||||
}
|
||||
img {
|
||||
max-width: 60%;
|
||||
}
|
||||
@ -270,19 +256,8 @@ div.conversation-session {
|
||||
grid-template-columns: 1fr auto;
|
||||
}
|
||||
|
||||
.three-dot-menu {
|
||||
display: block;
|
||||
/* background: var(--background-color); */
|
||||
/* border: 1px solid var(--main-text-color); */
|
||||
border-radius: 5px;
|
||||
/* position: relative; */
|
||||
}
|
||||
|
||||
button.selected-conversation {
|
||||
background: var(--khoj-winter-sun);
|
||||
}
|
||||
button.three-dot-menu-button-item {
|
||||
color: var(--color-base-90);
|
||||
color: var(--text-accent);
|
||||
border: none;
|
||||
box-shadow: none;
|
||||
font-size: 14px;
|
||||
@ -296,26 +271,7 @@ button.three-dot-menu-button-item {
|
||||
}
|
||||
|
||||
button.three-dot-menu-button-item:hover {
|
||||
background: var(--khoj-storm-grey);
|
||||
color: var(--khoj-winter-sun);
|
||||
}
|
||||
|
||||
.three-dot-menu-button {
|
||||
background: var(--khoj-winter-sun);
|
||||
border: none;
|
||||
box-shadow: none;
|
||||
font-size: 14px;
|
||||
font-weight: 300;
|
||||
line-height: 1.5em;
|
||||
cursor: pointer;
|
||||
transition: background 0.3s ease-in-out;
|
||||
font-family: var(--font-family);
|
||||
border-radius: 4px;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
.conversation-button:hover .three-dot-menu {
|
||||
display: block;
|
||||
background: var(--background-modifier-active-hover);
|
||||
}
|
||||
|
||||
div.conversation-menu {
|
||||
@ -325,13 +281,15 @@ div.conversation-menu {
|
||||
text-align: right;
|
||||
border-radius: 5px;
|
||||
padding: 5px;
|
||||
display: grid;
|
||||
grid-gap: 4px;
|
||||
grid-auto-flow: column;
|
||||
}
|
||||
div.conversation-session:hover {
|
||||
transform: scale(1.03);
|
||||
}
|
||||
div.selected-conversation {
|
||||
background: var(--khoj-winter-sun) !important;
|
||||
color: var(--khoj-storm-grey) !important;
|
||||
background: var(--background-modifier-active-hover) !important;
|
||||
}
|
||||
|
||||
#khoj-chat-footer {
|
||||
@ -373,9 +331,8 @@ div.selected-conversation {
|
||||
position: relative;
|
||||
}
|
||||
#khoj-chat-send .lucide-arrow-up-circle {
|
||||
background: var(--khoj-sun);
|
||||
background: var(--background-modifier-active-hover);
|
||||
border-radius: 50%;
|
||||
color: #222;
|
||||
}
|
||||
#khoj-chat-send .lucide-stop-circle {
|
||||
transform: rotateY(-180deg) rotateZ(-90deg);
|
||||
@ -488,7 +445,7 @@ div.khoj-logo {
|
||||
}
|
||||
|
||||
.khoj-nav a {
|
||||
color: var(--main-text-color);
|
||||
color: var(--text-normal);
|
||||
text-decoration: none;
|
||||
font-size: small;
|
||||
font-weight: normal;
|
||||
@ -498,11 +455,11 @@ div.khoj-logo {
|
||||
margin: 0;
|
||||
}
|
||||
.khoj-nav a:hover {
|
||||
background-color: var(--khoj-sun);
|
||||
background-color: var(--background-modifier-active-hover);
|
||||
color: var(--main-text-color);
|
||||
}
|
||||
a.khoj-nav-selected {
|
||||
background-color: var(--khoj-winter-sun);
|
||||
background-color: var(--background-modifier-active-hover);
|
||||
}
|
||||
#similar-nav-icon-svg,
|
||||
.khoj-nav-icon {
|
||||
@ -520,10 +477,12 @@ span.khoj-nav-item-text {
|
||||
}
|
||||
|
||||
/* Copy button */
|
||||
button.copy-button {
|
||||
button.chat-action-button {
|
||||
display: block;
|
||||
border-radius: 4px;
|
||||
background-color: var(--background-color);
|
||||
border: 1px solid var(--main-text-color);
|
||||
color: var(--text-muted);
|
||||
background-color: transparent;
|
||||
border: 1px solid var(--khoj-storm-grey);
|
||||
text-align: center;
|
||||
font-size: 16px;
|
||||
transition: all 0.5s;
|
||||
@ -532,28 +491,54 @@ button.copy-button {
|
||||
margin-top: 8px;
|
||||
float: right;
|
||||
}
|
||||
button.copy-button span {
|
||||
button.chat-action-button span {
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
transition: 0.5s;
|
||||
}
|
||||
button.chat-action-button:hover {
|
||||
background-color: var(--background-modifier-active-hover);
|
||||
color: var(--text-normal);
|
||||
}
|
||||
|
||||
img.copy-icon {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
}
|
||||
.you button.copy-button {
|
||||
color: var(--text-on-accent);
|
||||
|
||||
/* Circular Loading Spinner */
|
||||
.loader {
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
border: 3px solid #FFF;
|
||||
border-radius: 50%;
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
box-sizing: border-box;
|
||||
animation: rotation 1s linear infinite;
|
||||
}
|
||||
.khoj button.copy-button {
|
||||
color: var(--khoj-storm-grey);
|
||||
.loader::after {
|
||||
content: '';
|
||||
box-sizing: border-box;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
top: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
border-radius: 50%;
|
||||
border: 3px solid transparent;
|
||||
border-bottom-color: var(--flower);
|
||||
}
|
||||
.you button.copy-button:hover {
|
||||
color: var(--khoj-storm-grey);
|
||||
background: var(--text-on-accent);
|
||||
}
|
||||
.khoj button.copy-button:hover {
|
||||
background: var(--text-on-accent);
|
||||
|
||||
@keyframes rotation {
|
||||
0% {
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
100% {
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
|
||||
/* Loading Spinner */
|
||||
@ -613,6 +598,44 @@ img.copy-icon {
|
||||
}
|
||||
}
|
||||
|
||||
/* Loading Encircle */
|
||||
.loading-encircle {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.loading-encircle::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin-top: -16px;
|
||||
margin-left: -16px;
|
||||
border: 4px solid transparent;
|
||||
border-color: var(--icon-color-active);
|
||||
border-radius: 50%;
|
||||
animation: pulse 3s ease-in-out infinite;
|
||||
}
|
||||
@keyframes pulse {
|
||||
0% {
|
||||
transform: scale(1);
|
||||
opacity: 1;
|
||||
}
|
||||
50% {
|
||||
transform: scale(1.2);
|
||||
opacity: 0.2;
|
||||
}
|
||||
100% {
|
||||
transform: scale(1);
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes spin {
|
||||
0% { transform: rotate(0deg); }
|
||||
100% { transform: rotate(360deg); }
|
||||
}
|
||||
@media only screen and (max-width: 600px) {
|
||||
div.khoj-header {
|
||||
display: grid;
|
||||
|
@ -92,7 +92,7 @@
|
||||
"library2": {
|
||||
"type": "excalidrawlib",
|
||||
"version": 2,
|
||||
"source": "https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/2.2.7",
|
||||
"source": "https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/2.2.9",
|
||||
"libraryItems": [
|
||||
{
|
||||
"status": "unpublished",
|
||||
@ -24536,7 +24536,7 @@
|
||||
"mdCSS": "",
|
||||
"scriptEngineSettings": {},
|
||||
"defaultTrayMode": true,
|
||||
"previousRelease": "2.2.7",
|
||||
"previousRelease": "2.2.9",
|
||||
"showReleaseNotes": true,
|
||||
"showNewVersionNotification": true,
|
||||
"latexBoilerplate": "\\color{blue}",
|
||||
|
@ -1,7 +1,7 @@
|
||||
{
|
||||
"id": "obsidian-excalidraw-plugin",
|
||||
"name": "Excalidraw",
|
||||
"version": "2.2.7",
|
||||
"version": "2.2.9",
|
||||
"minAppVersion": "1.1.6",
|
||||
"description": "An Obsidian plugin to edit and view Excalidraw drawings",
|
||||
"author": "Zsolt Viczian",
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"settings": {
|
||||
"migrated": 5,
|
||||
"migrated": 6,
|
||||
"iconPacksPath": ".obsidian/plugins/obsidian-icon-folder/icons",
|
||||
"fontSize": 16,
|
||||
"emojiStyle": "native",
|
||||
|
@ -1,17 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<circle cx="16" cy="4" r="1" />
|
||||
<path d="m18 19 1-7-5.87.94" />
|
||||
<path d="m5 8 3-3 5.5 3-2.21 3.1" />
|
||||
<path d="M4.24 14.48c-.19.58-.27 1.2-.23 1.84a5 5 0 0 0 5.31 4.67c.65-.04 1.25-.2 1.8-.46" />
|
||||
<path d="M13.76 17.52c.19-.58.27-1.2.23-1.84a5 5 0 0 0-5.31-4.67c-.65.04-1.25.2-1.8.46" />
|
||||
</svg>
|
Before Width: | Height: | Size: 504 B |
@ -1,13 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<polyline points="22 12 18 12 15 21 9 3 6 12 2 12" />
|
||||
</svg>
|
Before Width: | Height: | Size: 264 B |
@ -1,16 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M6 12H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2" />
|
||||
<path d="M6 8h12" />
|
||||
<path d="M18.3 17.7a2.5 2.5 0 0 1-3.16 3.83 2.53 2.53 0 0 1-1.14-2V12" />
|
||||
<path d="M6.6 15.6A2 2 0 1 0 10 17v-5" />
|
||||
</svg>
|
Before Width: | Height: | Size: 440 B |
@ -1,14 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M5 17H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-1" />
|
||||
<polygon points="12 15 17 21 7 21 12 15" />
|
||||
</svg>
|
Before Width: | Height: | Size: 344 B |
@ -1,18 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M12 21a8 8 0 1 0 0-16 8 8 0 0 0 0 16z" />
|
||||
<path d="M5 3 2 6" />
|
||||
<path d="m22 6-3-3" />
|
||||
<path d="m6 19-2 2" />
|
||||
<path d="m18 19 2 2" />
|
||||
<path d="m9 13 2 2 4-4" />
|
||||
</svg>
|
Before Width: | Height: | Size: 390 B |
@ -1,18 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<circle cx="12" cy="13" r="8" />
|
||||
<path d="M12 9v4l2 2" />
|
||||
<path d="M5 3 2 6" />
|
||||
<path d="m22 6-3-3" />
|
||||
<path d="m6 19-2 2" />
|
||||
<path d="m18 19 2 2" />
|
||||
</svg>
|
Before Width: | Height: | Size: 370 B |
@ -1,18 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M6.87 6.87a8 8 0 1 0 11.26 11.26" />
|
||||
<path d="M19.9 14.25A7.44 7.44 0 0 0 20 13a8 8 0 0 0-8-8 7.44 7.44 0 0 0-1.25.1" />
|
||||
<path d="m22 6-3-3" />
|
||||
<path d="m6 19-2 2" />
|
||||
<path d="m2 2 20 20" />
|
||||
<path d="M4 4 2 6" />
|
||||
</svg>
|
Before Width: | Height: | Size: 442 B |
@ -1,18 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M12 21a8 8 0 1 0 0-16 8 8 0 0 0 0 16z" />
|
||||
<path d="M5 3 2 6" />
|
||||
<path d="m22 6-3-3" />
|
||||
<path d="m6 19-2 2" />
|
||||
<path d="m18 19 2 2" />
|
||||
<path d="M9 13h6" />
|
||||
</svg>
|
Before Width: | Height: | Size: 384 B |
@ -1,19 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M12 21a8 8 0 1 0 0-16 8 8 0 0 0 0 16z" />
|
||||
<path d="M5 3 2 6" />
|
||||
<path d="m22 6-3-3" />
|
||||
<path d="m6 19-2 2" />
|
||||
<path d="m18 19 2 2" />
|
||||
<path d="M12 10v6" />
|
||||
<path d="M9 13h6" />
|
||||
</svg>
|
Before Width: | Height: | Size: 408 B |
@ -1,14 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<rect x="3" y="3" width="18" height="18" rx="2" ry="2" />
|
||||
<polyline points="11 3 11 11 14 8 17 11 17 3" />
|
||||
</svg>
|
Before Width: | Height: | Size: 319 B |
@ -1,15 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<circle cx="12" cy="12" r="10" />
|
||||
<line x1="12" y1="8" x2="12" y2="12" />
|
||||
<line x1="12" y1="16" x2="12.01" y2="16" />
|
||||
</svg>
|
Before Width: | Height: | Size: 332 B |
@ -1,15 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<polygon points="7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2" />
|
||||
<line x1="12" y1="8" x2="12" y2="12" />
|
||||
<line x1="12" y1="16" x2="12.01" y2="16" />
|
||||
</svg>
|
Before Width: | Height: | Size: 390 B |
@ -1,15 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z" />
|
||||
<line x1="12" y1="9" x2="12" y2="13" />
|
||||
<line x1="12" y1="17" x2="12.01" y2="17" />
|
||||
</svg>
|
Before Width: | Height: | Size: 385 B |
@ -1,15 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<line x1="21" y1="6" x2="3" y2="6" />
|
||||
<line x1="17" y1="12" x2="7" y2="12" />
|
||||
<line x1="19" y1="18" x2="5" y2="18" />
|
||||
</svg>
|
Before Width: | Height: | Size: 332 B |
@ -1,17 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M2 12h20" />
|
||||
<path d="M10 16v4a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-4" />
|
||||
<path d="M10 8V4a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v4" />
|
||||
<path d="M20 16v1a2 2 0 0 1-2 2h-2a2 2 0 0 1-2-2v-1" />
|
||||
<path d="M14 8V7c0-1.1.9-2 2-2h2a2 2 0 0 1 2 2v1" />
|
||||
</svg>
|
Before Width: | Height: | Size: 457 B |
@ -1,17 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M12 2v20" />
|
||||
<path d="M8 10H4a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h4" />
|
||||
<path d="M16 10h4a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2h-4" />
|
||||
<path d="M8 20H7a2 2 0 0 1-2-2v-2c0-1.1.9-2 2-2h1" />
|
||||
<path d="M16 14h1a2 2 0 0 1 2 2v2a2 2 0 0 1-2 2h-1" />
|
||||
</svg>
|
Before Width: | Height: | Size: 457 B |
@ -1,15 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<rect x="4" y="2" width="6" height="16" rx="2" />
|
||||
<rect x="14" y="9" width="6" height="9" rx="2" />
|
||||
<path d="M22 22H2" />
|
||||
</svg>
|
Before Width: | Height: | Size: 336 B |
@ -1,15 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<rect x="2" y="4" width="16" height="6" rx="2" />
|
||||
<rect x="9" y="14" width="9" height="6" rx="2" />
|
||||
<path d="M22 22V2" />
|
||||
</svg>
|
Before Width: | Height: | Size: 336 B |
@ -1,18 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<rect x="4" y="5" width="6" height="14" rx="2" />
|
||||
<rect x="14" y="7" width="6" height="10" rx="2" />
|
||||
<path d="M17 22v-5" />
|
||||
<path d="M17 7V2" />
|
||||
<path d="M7 22v-3" />
|
||||
<path d="M7 5V2" />
|
||||
</svg>
|
Before Width: | Height: | Size: 407 B |
@ -1,16 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<rect x="4" y="5" width="6" height="14" rx="2" />
|
||||
<rect x="14" y="7" width="6" height="10" rx="2" />
|
||||
<path d="M10 2v20" />
|
||||
<path d="M20 2v20" />
|
||||
</svg>
|
Before Width: | Height: | Size: 361 B |
@ -1,16 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<rect x="4" y="5" width="6" height="14" rx="2" />
|
||||
<rect x="14" y="7" width="6" height="10" rx="2" />
|
||||
<path d="M4 2v20" />
|
||||
<path d="M14 2v20" />
|
||||
</svg>
|
Before Width: | Height: | Size: 360 B |
@ -1,15 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<rect x="2" y="5" width="6" height="14" rx="2" />
|
||||
<rect x="16" y="7" width="6" height="10" rx="2" />
|
||||
<path d="M12 2v20" />
|
||||
</svg>
|
Before Width: | Height: | Size: 337 B |
@ -1,15 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<rect x="2" y="5" width="6" height="14" rx="2" />
|
||||
<rect x="12" y="7" width="6" height="10" rx="2" />
|
||||
<path d="M22 2v20" />
|
||||
</svg>
|
Before Width: | Height: | Size: 337 B |
@ -1,15 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<rect x="6" y="5" width="6" height="14" rx="2" />
|
||||
<rect x="16" y="7" width="6" height="10" rx="2" />
|
||||
<path d="M2 2v20" />
|
||||
</svg>
|
Before Width: | Height: | Size: 336 B |
@ -1,15 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<rect x="9" y="7" width="6" height="10" rx="2" />
|
||||
<path d="M4 22V2" />
|
||||
<path d="M20 22V2" />
|
||||
</svg>
|
Before Width: | Height: | Size: 307 B |
@ -1,16 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<rect x="3" y="5" width="6" height="14" rx="2" />
|
||||
<rect x="15" y="7" width="6" height="10" rx="2" />
|
||||
<path d="M3 2v20" />
|
||||
<path d="M21 2v20" />
|
||||
</svg>
|
Before Width: | Height: | Size: 360 B |
@ -1,15 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<line x1="3" y1="6" x2="21" y2="6" />
|
||||
<line x1="3" y1="12" x2="21" y2="12" />
|
||||
<line x1="3" y1="18" x2="21" y2="18" />
|
||||
</svg>
|
Before Width: | Height: | Size: 332 B |
@ -1,15 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<line x1="21" y1="6" x2="3" y2="6" />
|
||||
<line x1="15" y1="12" x2="3" y2="12" />
|
||||
<line x1="17" y1="18" x2="3" y2="18" />
|
||||
</svg>
|
Before Width: | Height: | Size: 332 B |
@ -1,15 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<line x1="21" y1="6" x2="3" y2="6" />
|
||||
<line x1="21" y1="12" x2="9" y2="12" />
|
||||
<line x1="21" y1="18" x2="7" y2="18" />
|
||||
</svg>
|
Before Width: | Height: | Size: 332 B |
@ -1,15 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<rect x="4" y="6" width="6" height="16" rx="2" />
|
||||
<rect x="14" y="6" width="6" height="9" rx="2" />
|
||||
<path d="M22 2H2" />
|
||||
</svg>
|
Before Width: | Height: | Size: 335 B |
@ -1,15 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<rect x="6" y="14" width="9" height="6" rx="2" />
|
||||
<rect x="6" y="4" width="16" height="6" rx="2" />
|
||||
<path d="M2 2v20" />
|
||||
</svg>
|
Before Width: | Height: | Size: 335 B |
@ -1,18 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<rect x="5" y="14" width="14" height="6" rx="2" />
|
||||
<rect x="7" y="4" width="10" height="6" rx="2" />
|
||||
<path d="M22 7h-5" />
|
||||
<path d="M7 7H1" />
|
||||
<path d="M22 17h-3" />
|
||||
<path d="M5 17H2" />
|
||||
</svg>
|
Before Width: | Height: | Size: 407 B |
@ -1,16 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<rect x="5" y="14" width="14" height="6" rx="2" />
|
||||
<rect x="7" y="4" width="10" height="6" rx="2" />
|
||||
<path d="M2 20h20" />
|
||||
<path d="M2 10h20" />
|
||||
</svg>
|
Before Width: | Height: | Size: 361 B |
@ -1,16 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<rect x="5" y="14" width="14" height="6" rx="2" />
|
||||
<rect x="7" y="4" width="10" height="6" rx="2" />
|
||||
<path d="M2 14h20" />
|
||||
<path d="M2 4h20" />
|
||||
</svg>
|
Before Width: | Height: | Size: 360 B |
@ -1,15 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<rect x="5" y="16" width="14" height="6" rx="2" />
|
||||
<rect x="7" y="2" width="10" height="6" rx="2" />
|
||||
<path d="M2 12h20" />
|
||||
</svg>
|
Before Width: | Height: | Size: 337 B |
@ -1,15 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<rect x="5" y="12" width="14" height="6" rx="2" />
|
||||
<rect x="7" y="2" width="10" height="6" rx="2" />
|
||||
<path d="M2 22h20" />
|
||||
</svg>
|
Before Width: | Height: | Size: 337 B |
@ -1,15 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<rect x="5" y="16" width="14" height="6" rx="2" />
|
||||
<rect x="7" y="6" width="10" height="6" rx="2" />
|
||||
<path d="M2 2h20" />
|
||||
</svg>
|
Before Width: | Height: | Size: 336 B |
@ -1,15 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<rect x="7" y="9" width="10" height="6" rx="2" />
|
||||
<path d="M22 20H2" />
|
||||
<path d="M22 4H2" />
|
||||
</svg>
|
Before Width: | Height: | Size: 307 B |
@ -1,16 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<rect x="5" y="15" width="14" height="6" rx="2" />
|
||||
<rect x="7" y="3" width="10" height="6" rx="2" />
|
||||
<path d="M2 21h20" />
|
||||
<path d="M2 3h20" />
|
||||
</svg>
|
Before Width: | Height: | Size: 360 B |
@ -1,15 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<circle cx="12" cy="5" r="3" />
|
||||
<line x1="12" y1="22" x2="12" y2="8" />
|
||||
<path d="M5 12H2a10 10 0 0 0 20 0h-3" />
|
||||
</svg>
|
Before Width: | Height: | Size: 327 B |
@ -1,18 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<circle cx="12" cy="12" r="10" />
|
||||
<path d="M16 16s-1.5-2-4-2-4 2-4 2" />
|
||||
<path d="M7.5 8 10 9" />
|
||||
<path d="m14 9 2.5-1" />
|
||||
<path d="M9 10h0" />
|
||||
<path d="M15 10h0" />
|
||||
</svg>
|
Before Width: | Height: | Size: 386 B |
@ -1,16 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<circle cx="12" cy="12" r="10" />
|
||||
<path d="M8 15h8" />
|
||||
<path d="M8 9h2" />
|
||||
<path d="M14 9h2" />
|
||||
</svg>
|
Before Width: | Height: | Size: 312 B |
@ -1,19 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<circle cx="12" cy="12" r="10" />
|
||||
<line x1="14.31" y1="8" x2="20.05" y2="17.94" />
|
||||
<line x1="9.69" y1="8" x2="21.17" y2="8" />
|
||||
<line x1="7.38" y1="12" x2="13.12" y2="2.06" />
|
||||
<line x1="9.69" y1="16" x2="3.95" y2="6.06" />
|
||||
<line x1="14.31" y1="16" x2="2.83" y2="16" />
|
||||
<line x1="16.62" y1="12" x2="10.88" y2="21.94" />
|
||||
</svg>
|
Before Width: | Height: | Size: 540 B |
@ -1,14 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M12 20.94c1.5 0 2.75 1.06 4 1.06 3 0 6-8 6-12.22A4.91 4.91 0 0 0 17 5c-2.22 0-4 1.44-5 2-1-.56-2.78-2-5-2a4.9 4.9 0 0 0-5 4.78C2 14 5 22 8 22c1.25 0 2.5-1.06 4-1.06Z" />
|
||||
<path d="M10 2c1 .5 2 2 2 5" />
|
||||
</svg>
|
Before Width: | Height: | Size: 423 B |
@ -1,15 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<rect x="2" y="4" width="20" height="5" rx="2" />
|
||||
<path d="M4 9v9a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9" />
|
||||
<path d="M10 13h4" />
|
||||
</svg>
|
Before Width: | Height: | Size: 339 B |
@ -1,17 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<rect x="2" y="4" width="20" height="5" rx="2" />
|
||||
<path d="M12 13v7" />
|
||||
<path d="m9 16 3-3 3 3" />
|
||||
<path d="M4 9v9a2 2 0 0 0 2 2h2" />
|
||||
<path d="M20 9v9a2 2 0 0 1-2 2h-2" />
|
||||
</svg>
|
Before Width: | Height: | Size: 391 B |
@ -1,16 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M19 9V6a2 2 0 0 0-2-2H7a2 2 0 0 0-2 2v3" />
|
||||
<path d="M3 11v5a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-5a2 2 0 0 0-4 0v2H7v-2a2 2 0 0 0-4 0Z" />
|
||||
<path d="M5 18v2" />
|
||||
<path d="M19 18v2" />
|
||||
</svg>
|
Before Width: | Height: | Size: 403 B |
@ -1,13 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M9 3h6v11h4l-7 7-7-7h4z" />
|
||||
</svg>
|
Before Width: | Height: | Size: 247 B |
@ -1,13 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="m3 12 7-7v4h11v6H10v4z" />
|
||||
</svg>
|
Before Width: | Height: | Size: 246 B |
@ -1,13 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="m21 12-7-7v4H3v6h11v4z" />
|
||||
</svg>
|
Before Width: | Height: | Size: 246 B |
@ -1,13 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M9 21V10H5l7-7 7 7h-4v11z" />
|
||||
</svg>
|
Before Width: | Height: | Size: 249 B |
@ -1,14 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<line x1="12" y1="5" x2="12" y2="19" />
|
||||
<polyline points="19 12 12 19 5 12" />
|
||||
</svg>
|
Before Width: | Height: | Size: 291 B |
@ -1,15 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<circle cx="12" cy="12" r="10" />
|
||||
<polyline points="8 12 12 16 16 12" />
|
||||
<line x1="12" y1="8" x2="12" y2="16" />
|
||||
</svg>
|
Before Width: | Height: | Size: 327 B |
@ -1,14 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<line x1="17" y1="7" x2="7" y2="17" />
|
||||
<polyline points="17 17 7 17 7 7" />
|
||||
</svg>
|
Before Width: | Height: | Size: 288 B |
@ -1,14 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<line x1="7" y1="7" x2="17" y2="17" />
|
||||
<polyline points="17 7 17 17 7 17" />
|
||||
</svg>
|
Before Width: | Height: | Size: 289 B |
@ -1,14 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<line x1="19" y1="12" x2="5" y2="12" />
|
||||
<polyline points="12 19 5 12 12 5" />
|
||||
</svg>
|
Before Width: | Height: | Size: 290 B |
@ -1,15 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<circle cx="12" cy="12" r="10" />
|
||||
<polyline points="12 8 8 12 12 16" />
|
||||
<line x1="16" y1="12" x2="8" y2="12" />
|
||||
</svg>
|
Before Width: | Height: | Size: 326 B |
@ -1,16 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<polyline points="17 11 21 7 17 3" />
|
||||
<line x1="21" y1="7" x2="9" y2="7" />
|
||||
<polyline points="7 21 3 17 7 13" />
|
||||
<line x1="15" y1="17" x2="3" y2="17" />
|
||||
</svg>
|
Before Width: | Height: | Size: 369 B |
@ -1,14 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<line x1="5" y1="12" x2="19" y2="12" />
|
||||
<polyline points="12 5 19 12 12 19" />
|
||||
</svg>
|
Before Width: | Height: | Size: 291 B |
@ -1,15 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<circle cx="12" cy="12" r="10" />
|
||||
<polyline points="12 16 16 12 12 8" />
|
||||
<line x1="8" y1="12" x2="16" y2="12" />
|
||||
</svg>
|
Before Width: | Height: | Size: 327 B |
@ -1,14 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<line x1="12" y1="19" x2="12" y2="5" />
|
||||
<polyline points="5 12 12 5 19 12" />
|
||||
</svg>
|
Before Width: | Height: | Size: 290 B |
@ -1,15 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<circle cx="12" cy="12" r="10" />
|
||||
<polyline points="16 12 12 8 8 12" />
|
||||
<line x1="12" y1="16" x2="12" y2="8" />
|
||||
</svg>
|
Before Width: | Height: | Size: 326 B |
@ -1,16 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<polyline points="11 17 7 21 3 17" />
|
||||
<line x1="7" y1="21" x2="7" y2="9" />
|
||||
<polyline points="21 7 17 3 13 7" />
|
||||
<line x1="17" y1="15" x2="17" y2="3" />
|
||||
</svg>
|
Before Width: | Height: | Size: 369 B |
@ -1,14 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<line x1="17" y1="17" x2="7" y2="7" />
|
||||
<polyline points="7 17 7 7 17 7" />
|
||||
</svg>
|
Before Width: | Height: | Size: 287 B |
@ -1,14 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<line x1="7" y1="17" x2="17" y2="7" />
|
||||
<polyline points="7 7 17 7 17 17" />
|
||||
</svg>
|
Before Width: | Height: | Size: 288 B |
@ -1,15 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M12 6v12" />
|
||||
<path d="M17.196 9 6.804 15" />
|
||||
<path d="m6.804 9 10.392 6" />
|
||||
</svg>
|
Before Width: | Height: | Size: 299 B |
@ -1,14 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<circle cx="12" cy="12" r="4" />
|
||||
<path d="M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-3.92 7.94" />
|
||||
</svg>
|
Before Width: | Height: | Size: 305 B |
@ -1,14 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<circle cx="12" cy="8" r="6" />
|
||||
<path d="M15.477 12.89 17 22l-5-3-5 3 1.523-9.11" />
|
||||
</svg>
|
Before Width: | Height: | Size: 297 B |
@ -1,14 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="m14 12-8.501 8.501a2.12 2.12 0 0 1-2.998 0h-.002a2.12 2.12 0 0 1 0-2.998L11 9.002" />
|
||||
<path d="m9 7 4-4 6 6h3l-.13.648a7.648 7.648 0 0 1-5.081 5.756L15 16v-3z" />
|
||||
</svg>
|
Before Width: | Height: | Size: 384 B |
@ -1,14 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M4 4v16h16" />
|
||||
<path d="m4 20 7-7" />
|
||||
</svg>
|
Before Width: | Height: | Size: 259 B |
@ -1,16 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M9 12h0.01" />
|
||||
<path d="M15 12h0.01" />
|
||||
<path d="M10 16c.5.3 1.2.5 2 .5s1.5-.2 2-.5" />
|
||||
<path d="M19 6.3a9 9 0 0 1 1.8 3.9 2 2 0 0 1 0 3.6 9 9 0 0 1-17.6 0 2 2 0 0 1 0-3.6A9 9 0 0 1 12 3c2 0 3.5 1.1 3.5 2.5s-.9 2.5-2 2.5c-.8 0-1.5-.4-1.5-1" />
|
||||
</svg>
|
Before Width: | Height: | Size: 469 B |
@ -1,17 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M4 20V10a4 4 0 0 1 4-4h8a4 4 0 0 1 4 4v10a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2Z" />
|
||||
<path d="M9 6V4a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2v2" />
|
||||
<path d="M8 21v-5a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v5" />
|
||||
<path d="M8 10h8" />
|
||||
<path d="M8 18h8" />
|
||||
</svg>
|
Before Width: | Height: | Size: 452 B |
@ -1,17 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M22 18H6a2 2 0 0 1-2-2V7a2 2 0 0 0-2-2" />
|
||||
<path d="M17 14V4a2 2 0 0 0-2-2h-1a2 2 0 0 0-2 2v10" />
|
||||
<rect x="8" y="6" width="13" height="8" rx="1" />
|
||||
<circle cx="18" cy="20" r="2" />
|
||||
<circle cx="9" cy="20" r="2" />
|
||||
</svg>
|
Before Width: | Height: | Size: 441 B |
@ -1,14 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M4 13c3.5-2 8-2 10 2a5.5 5.5 0 0 1 8 5" />
|
||||
<path d="M5.15 17.89c5.52-1.52 8.65-6.89 7-12C11.55 4 11.5 2 13 2c3.22 0 5 5.5 5 8 0 6.5-4.2 12-10.49 12C5.11 22 2 22 2 20c0-1.5 1.14-1.55 3.15-2.11Z" />
|
||||
</svg>
|
Before Width: | Height: | Size: 418 B |
@ -1,15 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<rect x="2" y="6" width="20" height="12" rx="2" />
|
||||
<circle cx="12" cy="12" r="2" />
|
||||
<path d="M6 12h.01M18 12h.01" />
|
||||
</svg>
|
Before Width: | Height: | Size: 331 B |
@ -1,15 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<line x1="12" y1="20" x2="12" y2="10" />
|
||||
<line x1="18" y1="20" x2="18" y2="4" />
|
||||
<line x1="6" y1="20" x2="6" y2="16" />
|
||||
</svg>
|
Before Width: | Height: | Size: 334 B |
@ -1,15 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<line x1="18" y1="20" x2="18" y2="10" />
|
||||
<line x1="12" y1="20" x2="12" y2="4" />
|
||||
<line x1="6" y1="20" x2="6" y2="14" />
|
||||
</svg>
|
Before Width: | Height: | Size: 334 B |
@ -1,16 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M3 3v18h18" />
|
||||
<path d="M18 17V9" />
|
||||
<path d="M13 17V5" />
|
||||
<path d="M8 17v-3" />
|
||||
</svg>
|
Before Width: | Height: | Size: 306 B |
@ -1,16 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M3 3v18h18" />
|
||||
<path d="M13 17V9" />
|
||||
<path d="M18 17V5" />
|
||||
<path d="M8 17v-3" />
|
||||
</svg>
|
Before Width: | Height: | Size: 306 B |
@ -1,16 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M3 3v18h18" />
|
||||
<path d="M7 16h8" />
|
||||
<path d="M7 11h12" />
|
||||
<path d="M7 6h3" />
|
||||
</svg>
|
Before Width: | Height: | Size: 303 B |
@ -1,15 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M4 20h16" />
|
||||
<path d="m6 16 6-12 6 12" />
|
||||
<path d="M8 12h8" />
|
||||
</svg>
|
Before Width: | Height: | Size: 286 B |
@ -1,17 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M9 6 6.5 3.5a1.5 1.5 0 0 0-1-.5C4.683 3 4 3.683 4 4.5V17a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-5" />
|
||||
<line x1="10" y1="5" x2="8" y2="7" />
|
||||
<line x1="2" y1="12" x2="22" y2="12" />
|
||||
<line x1="7" y1="19" x2="7" y2="21" />
|
||||
<line x1="17" y1="19" x2="17" y2="21" />
|
||||
</svg>
|
Before Width: | Height: | Size: 480 B |
@ -1,14 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<rect x="2" y="7" width="16" height="10" rx="2" ry="2" />
|
||||
<line x1="22" x2="22" y1="11" y2="13" />
|
||||
</svg>
|
Before Width: | Height: | Size: 311 B |
@ -1,16 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M15 7h1a2 2 0 0 1 2 2v6a2 2 0 0 1-2 2h-2" />
|
||||
<path d="M6 7H4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h1" />
|
||||
<path d="m11 7-3 5h4l-3 5" />
|
||||
<line x1="22" x2="22" y1="11" y2="13" />
|
||||
</svg>
|
Before Width: | Height: | Size: 393 B |
@ -1,17 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<rect x="2" y="7" width="16" height="10" rx="2" ry="2" />
|
||||
<line x1="22" x2="22" y1="11" y2="13" />
|
||||
<line x1="6" x2="6" y1="11" y2="13" />
|
||||
<line x1="10" x2="10" y1="11" y2="13" />
|
||||
<line x1="14" x2="14" y1="11" y2="13" />
|
||||
</svg>
|
Before Width: | Height: | Size: 438 B |
@ -1,15 +0,0 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<rect x="2" y="7" width="16" height="10" rx="2" ry="2" />
|
||||
<line x1="22" x2="22" y1="11" y2="13" />
|
||||
<line x1="6" x2="6" y1="11" y2="13" />
|
||||
</svg>
|
Before Width: | Height: | Size: 352 B |