diff --git a/.obsidian/app.json b/.obsidian/app.json deleted file mode 100644 index f7f5886..0000000 --- a/.obsidian/app.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "newFileLocation": "current" -} \ No newline at end of file diff --git a/.obsidian/appearance.json b/.obsidian/appearance.json deleted file mode 100644 index d5138f1..0000000 --- a/.obsidian/appearance.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "accentColor": "", - "cssTheme": "Blue Topaz", - "theme": "obsidian" -} \ No newline at end of file diff --git a/.obsidian/community-plugins.json b/.obsidian/community-plugins.json deleted file mode 100644 index d3f66fa..0000000 --- a/.obsidian/community-plugins.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - "obsidian-git" -] \ No newline at end of file diff --git a/.obsidian/core-plugins-migration.json b/.obsidian/core-plugins-migration.json deleted file mode 100644 index 436f43c..0000000 --- a/.obsidian/core-plugins-migration.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "file-explorer": true, - "global-search": true, - "switcher": true, - "graph": true, - "backlink": true, - "canvas": true, - "outgoing-link": true, - "tag-pane": true, - "properties": false, - "page-preview": true, - "daily-notes": true, - "templates": true, - "note-composer": true, - "command-palette": true, - "slash-command": false, - "editor-status": true, - "bookmarks": true, - "markdown-importer": false, - "zk-prefixer": false, - "random-note": false, - "outline": true, - "word-count": true, - "slides": false, - "audio-recorder": false, - "workspaces": false, - "file-recovery": true, - "publish": false, - "sync": false -} \ No newline at end of file diff --git a/.obsidian/core-plugins.json b/.obsidian/core-plugins.json deleted file mode 100644 index 9405bfd..0000000 --- a/.obsidian/core-plugins.json +++ /dev/null @@ -1,20 +0,0 @@ -[ - "file-explorer", - "global-search", - "switcher", - "graph", - "backlink", - "canvas", - "outgoing-link", - "tag-pane", - "page-preview", - "daily-notes", - "templates", - "note-composer", - "command-palette", - "editor-status", - "bookmarks", - "outline", - "word-count", - "file-recovery" -] \ No newline at end of file diff --git a/.obsidian/hotkeys.json b/.obsidian/hotkeys.json deleted file mode 100644 index da90636..0000000 --- a/.obsidian/hotkeys.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "obsidian-git:commit": [ - { - "modifiers": [ - "Alt" - ], - "key": "C" - } - ], - "obsidian-git:push2": [ - { - "modifiers": [ - "Alt" - ], - "key": "P" - } - ] -} \ No newline at end of file diff --git a/.obsidian/plugins/obsidian-git/data.json b/.obsidian/plugins/obsidian-git/data.json deleted file mode 100644 index e7bdb56..0000000 --- a/.obsidian/plugins/obsidian-git/data.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "commitMessage": "{{hostname}}上更新了 {{numFiles}}个文件", - "commitDateFormat": "YYYY-MM-DD HH:mm:ss", - "autoSaveInterval": 0, - "autoPushInterval": 0, - "autoPullInterval": 0, - "autoPullOnBoot": true, - "disablePush": false, - "pullBeforePush": true, - "disablePopups": false, - "disablePopupsForNoChanges": false, - "listChangedFilesInMessageBody": false, - "showStatusBar": true, - "updateSubmodules": false, - "syncMethod": "merge", - "customMessageOnAutoBackup": false, - "autoBackupAfterFileChange": false, - "treeStructure": false, - "refreshSourceControl": true, - "basePath": "", - "differentIntervalCommitAndPush": false, - "changedFilesInStatusBar": false, - "showedMobileNotice": true, - "refreshSourceControlTimer": 7000, - "showBranchStatusBar": true, - "setLastSaveToLastCommit": false, - "submoduleRecurseCheckout": false, - "gitDir": "", - "showFileMenu": true, - "authorInHistoryView": "hide", - "dateInHistoryView": false, - "lineAuthor": { - "show": false, - "followMovement": "inactive", - "authorDisplay": "initials", - "showCommitHash": false, - "dateTimeFormatOptions": "date", - "dateTimeFormatCustomString": "YYYY-MM-DD HH:mm", - "dateTimeTimezone": "viewer-local", - "coloringMaxAge": "1y", - "colorNew": { - "r": 255, - "g": 150, - "b": 150 - }, - "colorOld": { - "r": 120, - "g": 160, - "b": 255 - }, - "textColorCss": "var(--text-muted)", - "ignoreWhitespace": false, - "gutterSpacingFallbackLength": 5, - "lastShownAuthorDisplay": "initials", - "lastShownDateTimeFormatOptions": "date" - }, - "autoCommitMessage": "vault backup: {{date}}" -} \ No newline at end of file diff --git a/.obsidian/plugins/obsidian-git/main.js b/.obsidian/plugins/obsidian-git/main.js deleted file mode 100644 index 5b1b9f2..0000000 --- a/.obsidian/plugins/obsidian-git/main.js +++ /dev/null @@ -1,45279 +0,0 @@ -/* -THIS IS A GENERATED/BUNDLED FILE BY ESBUILD -if you want to view the source visit the plugins github repository (https://github.com/denolehov/obsidian-git) -*/ - -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __defNormalProp = (obj, key2, value) => key2 in obj ? __defProp(obj, key2, { enumerable: true, configurable: true, writable: true, value }) : obj[key2] = value; -var __esm = (fn, res) => function __init() { - return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; -}; -var __commonJS = (cb, mod) => function __require() { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; -}; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key2 of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key2) && key2 !== except) - __defProp(to, key2, { get: () => from[key2], enumerable: !(desc = __getOwnPropDesc(from, key2)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); -var __publicField = (obj, key2, value) => { - __defNormalProp(obj, typeof key2 !== "symbol" ? key2 + "" : key2, value); - return value; -}; - -// node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js -var require_base64_js = __commonJS({ - "node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js"(exports2) { - "use strict"; - init_polyfill_buffer(); - exports2.byteLength = byteLength; - exports2.toByteArray = toByteArray; - exports2.fromByteArray = fromByteArray; - var lookup = []; - var revLookup = []; - var Arr = typeof Uint8Array !== "undefined" ? Uint8Array : Array; - var code = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - for (i = 0, len = code.length; i < len; ++i) { - lookup[i] = code[i]; - revLookup[code.charCodeAt(i)] = i; - } - var i; - var len; - revLookup["-".charCodeAt(0)] = 62; - revLookup["_".charCodeAt(0)] = 63; - function getLens(b64) { - var len2 = b64.length; - if (len2 % 4 > 0) { - throw new Error("Invalid string. Length must be a multiple of 4"); - } - var validLen = b64.indexOf("="); - if (validLen === -1) - validLen = len2; - var placeHoldersLen = validLen === len2 ? 0 : 4 - validLen % 4; - return [validLen, placeHoldersLen]; - } - function byteLength(b64) { - var lens = getLens(b64); - var validLen = lens[0]; - var placeHoldersLen = lens[1]; - return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen; - } - function _byteLength(b64, validLen, placeHoldersLen) { - return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen; - } - function toByteArray(b64) { - var tmp; - var lens = getLens(b64); - var validLen = lens[0]; - var placeHoldersLen = lens[1]; - var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen)); - var curByte = 0; - var len2 = placeHoldersLen > 0 ? validLen - 4 : validLen; - var i2; - for (i2 = 0; i2 < len2; i2 += 4) { - tmp = revLookup[b64.charCodeAt(i2)] << 18 | revLookup[b64.charCodeAt(i2 + 1)] << 12 | revLookup[b64.charCodeAt(i2 + 2)] << 6 | revLookup[b64.charCodeAt(i2 + 3)]; - arr[curByte++] = tmp >> 16 & 255; - arr[curByte++] = tmp >> 8 & 255; - arr[curByte++] = tmp & 255; - } - if (placeHoldersLen === 2) { - tmp = revLookup[b64.charCodeAt(i2)] << 2 | revLookup[b64.charCodeAt(i2 + 1)] >> 4; - arr[curByte++] = tmp & 255; - } - if (placeHoldersLen === 1) { - tmp = revLookup[b64.charCodeAt(i2)] << 10 | revLookup[b64.charCodeAt(i2 + 1)] << 4 | revLookup[b64.charCodeAt(i2 + 2)] >> 2; - arr[curByte++] = tmp >> 8 & 255; - arr[curByte++] = tmp & 255; - } - return arr; - } - function tripletToBase64(num2) { - return lookup[num2 >> 18 & 63] + lookup[num2 >> 12 & 63] + lookup[num2 >> 6 & 63] + lookup[num2 & 63]; - } - function encodeChunk(uint8, start, end) { - var tmp; - var output = []; - for (var i2 = start; i2 < end; i2 += 3) { - tmp = (uint8[i2] << 16 & 16711680) + (uint8[i2 + 1] << 8 & 65280) + (uint8[i2 + 2] & 255); - output.push(tripletToBase64(tmp)); - } - return output.join(""); - } - function fromByteArray(uint8) { - var tmp; - var len2 = uint8.length; - var extraBytes = len2 % 3; - var parts = []; - var maxChunkLength = 16383; - for (var i2 = 0, len22 = len2 - extraBytes; i2 < len22; i2 += maxChunkLength) { - parts.push(encodeChunk(uint8, i2, i2 + maxChunkLength > len22 ? len22 : i2 + maxChunkLength)); - } - if (extraBytes === 1) { - tmp = uint8[len2 - 1]; - parts.push( - lookup[tmp >> 2] + lookup[tmp << 4 & 63] + "==" - ); - } else if (extraBytes === 2) { - tmp = (uint8[len2 - 2] << 8) + uint8[len2 - 1]; - parts.push( - lookup[tmp >> 10] + lookup[tmp >> 4 & 63] + lookup[tmp << 2 & 63] + "=" - ); - } - return parts.join(""); - } - } -}); - -// node_modules/.pnpm/ieee754@1.2.1/node_modules/ieee754/index.js -var require_ieee754 = __commonJS({ - "node_modules/.pnpm/ieee754@1.2.1/node_modules/ieee754/index.js"(exports2) { - init_polyfill_buffer(); - exports2.read = function(buffer2, offset, isLE, mLen, nBytes) { - var e, m; - var eLen = nBytes * 8 - mLen - 1; - var eMax = (1 << eLen) - 1; - var eBias = eMax >> 1; - var nBits = -7; - var i = isLE ? nBytes - 1 : 0; - var d = isLE ? -1 : 1; - var s = buffer2[offset + i]; - i += d; - e = s & (1 << -nBits) - 1; - s >>= -nBits; - nBits += eLen; - for (; nBits > 0; e = e * 256 + buffer2[offset + i], i += d, nBits -= 8) { - } - m = e & (1 << -nBits) - 1; - e >>= -nBits; - nBits += mLen; - for (; nBits > 0; m = m * 256 + buffer2[offset + i], i += d, nBits -= 8) { - } - if (e === 0) { - e = 1 - eBias; - } else if (e === eMax) { - return m ? NaN : (s ? -1 : 1) * Infinity; - } else { - m = m + Math.pow(2, mLen); - e = e - eBias; - } - return (s ? -1 : 1) * m * Math.pow(2, e - mLen); - }; - exports2.write = function(buffer2, value, offset, isLE, mLen, nBytes) { - var e, m, c; - var eLen = nBytes * 8 - mLen - 1; - var eMax = (1 << eLen) - 1; - var eBias = eMax >> 1; - var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0; - var i = isLE ? 0 : nBytes - 1; - var d = isLE ? 1 : -1; - var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0; - value = Math.abs(value); - if (isNaN(value) || value === Infinity) { - m = isNaN(value) ? 1 : 0; - e = eMax; - } else { - e = Math.floor(Math.log(value) / Math.LN2); - if (value * (c = Math.pow(2, -e)) < 1) { - e--; - c *= 2; - } - if (e + eBias >= 1) { - value += rt / c; - } else { - value += rt * Math.pow(2, 1 - eBias); - } - if (value * c >= 2) { - e++; - c /= 2; - } - if (e + eBias >= eMax) { - m = 0; - e = eMax; - } else if (e + eBias >= 1) { - m = (value * c - 1) * Math.pow(2, mLen); - e = e + eBias; - } else { - m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen); - e = 0; - } - } - for (; mLen >= 8; buffer2[offset + i] = m & 255, i += d, m /= 256, mLen -= 8) { - } - e = e << mLen | m; - eLen += mLen; - for (; eLen > 0; buffer2[offset + i] = e & 255, i += d, e /= 256, eLen -= 8) { - } - buffer2[offset + i - d] |= s * 128; - }; - } -}); - -// node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.js -var require_buffer = __commonJS({ - "node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.js"(exports2) { - "use strict"; - init_polyfill_buffer(); - var base64 = require_base64_js(); - var ieee754 = require_ieee754(); - var customInspectSymbol = typeof Symbol === "function" && typeof Symbol["for"] === "function" ? Symbol["for"]("nodejs.util.inspect.custom") : null; - exports2.Buffer = Buffer2; - exports2.SlowBuffer = SlowBuffer; - exports2.INSPECT_MAX_BYTES = 50; - var K_MAX_LENGTH = 2147483647; - exports2.kMaxLength = K_MAX_LENGTH; - Buffer2.TYPED_ARRAY_SUPPORT = typedArraySupport(); - if (!Buffer2.TYPED_ARRAY_SUPPORT && typeof console !== "undefined" && typeof console.error === "function") { - console.error( - "This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support." - ); - } - function typedArraySupport() { - try { - const arr = new Uint8Array(1); - const proto = { foo: function() { - return 42; - } }; - Object.setPrototypeOf(proto, Uint8Array.prototype); - Object.setPrototypeOf(arr, proto); - return arr.foo() === 42; - } catch (e) { - return false; - } - } - Object.defineProperty(Buffer2.prototype, "parent", { - enumerable: true, - get: function() { - if (!Buffer2.isBuffer(this)) - return void 0; - return this.buffer; - } - }); - Object.defineProperty(Buffer2.prototype, "offset", { - enumerable: true, - get: function() { - if (!Buffer2.isBuffer(this)) - return void 0; - return this.byteOffset; - } - }); - function createBuffer(length) { - if (length > K_MAX_LENGTH) { - throw new RangeError('The value "' + length + '" is invalid for option "size"'); - } - const buf = new Uint8Array(length); - Object.setPrototypeOf(buf, Buffer2.prototype); - return buf; - } - function Buffer2(arg, encodingOrOffset, length) { - if (typeof arg === "number") { - if (typeof encodingOrOffset === "string") { - throw new TypeError( - 'The "string" argument must be of type string. Received type number' - ); - } - return allocUnsafe(arg); - } - return from(arg, encodingOrOffset, length); - } - Buffer2.poolSize = 8192; - function from(value, encodingOrOffset, length) { - if (typeof value === "string") { - return fromString2(value, encodingOrOffset); - } - if (ArrayBuffer.isView(value)) { - return fromArrayView(value); - } - if (value == null) { - throw new TypeError( - "The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type " + typeof value - ); - } - if (isInstance(value, ArrayBuffer) || value && isInstance(value.buffer, ArrayBuffer)) { - return fromArrayBuffer(value, encodingOrOffset, length); - } - if (typeof SharedArrayBuffer !== "undefined" && (isInstance(value, SharedArrayBuffer) || value && isInstance(value.buffer, SharedArrayBuffer))) { - return fromArrayBuffer(value, encodingOrOffset, length); - } - if (typeof value === "number") { - throw new TypeError( - 'The "value" argument must not be of type number. Received type number' - ); - } - const valueOf = value.valueOf && value.valueOf(); - if (valueOf != null && valueOf !== value) { - return Buffer2.from(valueOf, encodingOrOffset, length); - } - const b = fromObject(value); - if (b) - return b; - if (typeof Symbol !== "undefined" && Symbol.toPrimitive != null && typeof value[Symbol.toPrimitive] === "function") { - return Buffer2.from(value[Symbol.toPrimitive]("string"), encodingOrOffset, length); - } - throw new TypeError( - "The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type " + typeof value - ); - } - Buffer2.from = function(value, encodingOrOffset, length) { - return from(value, encodingOrOffset, length); - }; - Object.setPrototypeOf(Buffer2.prototype, Uint8Array.prototype); - Object.setPrototypeOf(Buffer2, Uint8Array); - function assertSize(size) { - if (typeof size !== "number") { - throw new TypeError('"size" argument must be of type number'); - } else if (size < 0) { - throw new RangeError('The value "' + size + '" is invalid for option "size"'); - } - } - function alloc(size, fill, encoding) { - assertSize(size); - if (size <= 0) { - return createBuffer(size); - } - if (fill !== void 0) { - return typeof encoding === "string" ? createBuffer(size).fill(fill, encoding) : createBuffer(size).fill(fill); - } - return createBuffer(size); - } - Buffer2.alloc = function(size, fill, encoding) { - return alloc(size, fill, encoding); - }; - function allocUnsafe(size) { - assertSize(size); - return createBuffer(size < 0 ? 0 : checked(size) | 0); - } - Buffer2.allocUnsafe = function(size) { - return allocUnsafe(size); - }; - Buffer2.allocUnsafeSlow = function(size) { - return allocUnsafe(size); - }; - function fromString2(string, encoding) { - if (typeof encoding !== "string" || encoding === "") { - encoding = "utf8"; - } - if (!Buffer2.isEncoding(encoding)) { - throw new TypeError("Unknown encoding: " + encoding); - } - const length = byteLength(string, encoding) | 0; - let buf = createBuffer(length); - const actual = buf.write(string, encoding); - if (actual !== length) { - buf = buf.slice(0, actual); - } - return buf; - } - function fromArrayLike(array) { - const length = array.length < 0 ? 0 : checked(array.length) | 0; - const buf = createBuffer(length); - for (let i = 0; i < length; i += 1) { - buf[i] = array[i] & 255; - } - return buf; - } - function fromArrayView(arrayView) { - if (isInstance(arrayView, Uint8Array)) { - const copy2 = new Uint8Array(arrayView); - return fromArrayBuffer(copy2.buffer, copy2.byteOffset, copy2.byteLength); - } - return fromArrayLike(arrayView); - } - function fromArrayBuffer(array, byteOffset, length) { - if (byteOffset < 0 || array.byteLength < byteOffset) { - throw new RangeError('"offset" is outside of buffer bounds'); - } - if (array.byteLength < byteOffset + (length || 0)) { - throw new RangeError('"length" is outside of buffer bounds'); - } - let buf; - if (byteOffset === void 0 && length === void 0) { - buf = new Uint8Array(array); - } else if (length === void 0) { - buf = new Uint8Array(array, byteOffset); - } else { - buf = new Uint8Array(array, byteOffset, length); - } - Object.setPrototypeOf(buf, Buffer2.prototype); - return buf; - } - function fromObject(obj) { - if (Buffer2.isBuffer(obj)) { - const len = checked(obj.length) | 0; - const buf = createBuffer(len); - if (buf.length === 0) { - return buf; - } - obj.copy(buf, 0, 0, len); - return buf; - } - if (obj.length !== void 0) { - if (typeof obj.length !== "number" || numberIsNaN(obj.length)) { - return createBuffer(0); - } - return fromArrayLike(obj); - } - if (obj.type === "Buffer" && Array.isArray(obj.data)) { - return fromArrayLike(obj.data); - } - } - function checked(length) { - if (length >= K_MAX_LENGTH) { - throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x" + K_MAX_LENGTH.toString(16) + " bytes"); - } - return length | 0; - } - function SlowBuffer(length) { - if (+length != length) { - length = 0; - } - return Buffer2.alloc(+length); - } - Buffer2.isBuffer = function isBuffer(b) { - return b != null && b._isBuffer === true && b !== Buffer2.prototype; - }; - Buffer2.compare = function compare(a, b) { - if (isInstance(a, Uint8Array)) - a = Buffer2.from(a, a.offset, a.byteLength); - if (isInstance(b, Uint8Array)) - b = Buffer2.from(b, b.offset, b.byteLength); - if (!Buffer2.isBuffer(a) || !Buffer2.isBuffer(b)) { - throw new TypeError( - 'The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array' - ); - } - if (a === b) - return 0; - let x = a.length; - let y = b.length; - for (let i = 0, len = Math.min(x, y); i < len; ++i) { - if (a[i] !== b[i]) { - x = a[i]; - y = b[i]; - break; - } - } - if (x < y) - return -1; - if (y < x) - return 1; - return 0; - }; - Buffer2.isEncoding = function isEncoding(encoding) { - switch (String(encoding).toLowerCase()) { - case "hex": - case "utf8": - case "utf-8": - case "ascii": - case "latin1": - case "binary": - case "base64": - case "ucs2": - case "ucs-2": - case "utf16le": - case "utf-16le": - return true; - default: - return false; - } - }; - Buffer2.concat = function concat(list, length) { - if (!Array.isArray(list)) { - throw new TypeError('"list" argument must be an Array of Buffers'); - } - if (list.length === 0) { - return Buffer2.alloc(0); - } - let i; - if (length === void 0) { - length = 0; - for (i = 0; i < list.length; ++i) { - length += list[i].length; - } - } - const buffer2 = Buffer2.allocUnsafe(length); - let pos = 0; - for (i = 0; i < list.length; ++i) { - let buf = list[i]; - if (isInstance(buf, Uint8Array)) { - if (pos + buf.length > buffer2.length) { - if (!Buffer2.isBuffer(buf)) - buf = Buffer2.from(buf); - buf.copy(buffer2, pos); - } else { - Uint8Array.prototype.set.call( - buffer2, - buf, - pos - ); - } - } else if (!Buffer2.isBuffer(buf)) { - throw new TypeError('"list" argument must be an Array of Buffers'); - } else { - buf.copy(buffer2, pos); - } - pos += buf.length; - } - return buffer2; - }; - function byteLength(string, encoding) { - if (Buffer2.isBuffer(string)) { - return string.length; - } - if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) { - return string.byteLength; - } - if (typeof string !== "string") { - throw new TypeError( - 'The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type ' + typeof string - ); - } - const len = string.length; - const mustMatch = arguments.length > 2 && arguments[2] === true; - if (!mustMatch && len === 0) - return 0; - let loweredCase = false; - for (; ; ) { - switch (encoding) { - case "ascii": - case "latin1": - case "binary": - return len; - case "utf8": - case "utf-8": - return utf8ToBytes(string).length; - case "ucs2": - case "ucs-2": - case "utf16le": - case "utf-16le": - return len * 2; - case "hex": - return len >>> 1; - case "base64": - return base64ToBytes(string).length; - default: - if (loweredCase) { - return mustMatch ? -1 : utf8ToBytes(string).length; - } - encoding = ("" + encoding).toLowerCase(); - loweredCase = true; - } - } - } - Buffer2.byteLength = byteLength; - function slowToString(encoding, start, end) { - let loweredCase = false; - if (start === void 0 || start < 0) { - start = 0; - } - if (start > this.length) { - return ""; - } - if (end === void 0 || end > this.length) { - end = this.length; - } - if (end <= 0) { - return ""; - } - end >>>= 0; - start >>>= 0; - if (end <= start) { - return ""; - } - if (!encoding) - encoding = "utf8"; - while (true) { - switch (encoding) { - case "hex": - return hexSlice(this, start, end); - case "utf8": - case "utf-8": - return utf8Slice(this, start, end); - case "ascii": - return asciiSlice(this, start, end); - case "latin1": - case "binary": - return latin1Slice(this, start, end); - case "base64": - return base64Slice(this, start, end); - case "ucs2": - case "ucs-2": - case "utf16le": - case "utf-16le": - return utf16leSlice(this, start, end); - default: - if (loweredCase) - throw new TypeError("Unknown encoding: " + encoding); - encoding = (encoding + "").toLowerCase(); - loweredCase = true; - } - } - } - Buffer2.prototype._isBuffer = true; - function swap(b, n, m) { - const i = b[n]; - b[n] = b[m]; - b[m] = i; - } - Buffer2.prototype.swap16 = function swap16() { - const len = this.length; - if (len % 2 !== 0) { - throw new RangeError("Buffer size must be a multiple of 16-bits"); - } - for (let i = 0; i < len; i += 2) { - swap(this, i, i + 1); - } - return this; - }; - Buffer2.prototype.swap32 = function swap32() { - const len = this.length; - if (len % 4 !== 0) { - throw new RangeError("Buffer size must be a multiple of 32-bits"); - } - for (let i = 0; i < len; i += 4) { - swap(this, i, i + 3); - swap(this, i + 1, i + 2); - } - return this; - }; - Buffer2.prototype.swap64 = function swap64() { - const len = this.length; - if (len % 8 !== 0) { - throw new RangeError("Buffer size must be a multiple of 64-bits"); - } - for (let i = 0; i < len; i += 8) { - swap(this, i, i + 7); - swap(this, i + 1, i + 6); - swap(this, i + 2, i + 5); - swap(this, i + 3, i + 4); - } - return this; - }; - Buffer2.prototype.toString = function toString() { - const length = this.length; - if (length === 0) - return ""; - if (arguments.length === 0) - return utf8Slice(this, 0, length); - return slowToString.apply(this, arguments); - }; - Buffer2.prototype.toLocaleString = Buffer2.prototype.toString; - Buffer2.prototype.equals = function equals3(b) { - if (!Buffer2.isBuffer(b)) - throw new TypeError("Argument must be a Buffer"); - if (this === b) - return true; - return Buffer2.compare(this, b) === 0; - }; - Buffer2.prototype.inspect = function inspect() { - let str = ""; - const max = exports2.INSPECT_MAX_BYTES; - str = this.toString("hex", 0, max).replace(/(.{2})/g, "$1 ").trim(); - if (this.length > max) - str += " ... "; - return ""; - }; - if (customInspectSymbol) { - Buffer2.prototype[customInspectSymbol] = Buffer2.prototype.inspect; - } - Buffer2.prototype.compare = function compare(target, start, end, thisStart, thisEnd) { - if (isInstance(target, Uint8Array)) { - target = Buffer2.from(target, target.offset, target.byteLength); - } - if (!Buffer2.isBuffer(target)) { - throw new TypeError( - 'The "target" argument must be one of type Buffer or Uint8Array. Received type ' + typeof target - ); - } - if (start === void 0) { - start = 0; - } - if (end === void 0) { - end = target ? target.length : 0; - } - if (thisStart === void 0) { - thisStart = 0; - } - if (thisEnd === void 0) { - thisEnd = this.length; - } - if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { - throw new RangeError("out of range index"); - } - if (thisStart >= thisEnd && start >= end) { - return 0; - } - if (thisStart >= thisEnd) { - return -1; - } - if (start >= end) { - return 1; - } - start >>>= 0; - end >>>= 0; - thisStart >>>= 0; - thisEnd >>>= 0; - if (this === target) - return 0; - let x = thisEnd - thisStart; - let y = end - start; - const len = Math.min(x, y); - const thisCopy = this.slice(thisStart, thisEnd); - const targetCopy = target.slice(start, end); - for (let i = 0; i < len; ++i) { - if (thisCopy[i] !== targetCopy[i]) { - x = thisCopy[i]; - y = targetCopy[i]; - break; - } - } - if (x < y) - return -1; - if (y < x) - return 1; - return 0; - }; - function bidirectionalIndexOf(buffer2, val, byteOffset, encoding, dir) { - if (buffer2.length === 0) - return -1; - if (typeof byteOffset === "string") { - encoding = byteOffset; - byteOffset = 0; - } else if (byteOffset > 2147483647) { - byteOffset = 2147483647; - } else if (byteOffset < -2147483648) { - byteOffset = -2147483648; - } - byteOffset = +byteOffset; - if (numberIsNaN(byteOffset)) { - byteOffset = dir ? 0 : buffer2.length - 1; - } - if (byteOffset < 0) - byteOffset = buffer2.length + byteOffset; - if (byteOffset >= buffer2.length) { - if (dir) - return -1; - else - byteOffset = buffer2.length - 1; - } else if (byteOffset < 0) { - if (dir) - byteOffset = 0; - else - return -1; - } - if (typeof val === "string") { - val = Buffer2.from(val, encoding); - } - if (Buffer2.isBuffer(val)) { - if (val.length === 0) { - return -1; - } - return arrayIndexOf(buffer2, val, byteOffset, encoding, dir); - } else if (typeof val === "number") { - val = val & 255; - if (typeof Uint8Array.prototype.indexOf === "function") { - if (dir) { - return Uint8Array.prototype.indexOf.call(buffer2, val, byteOffset); - } else { - return Uint8Array.prototype.lastIndexOf.call(buffer2, val, byteOffset); - } - } - return arrayIndexOf(buffer2, [val], byteOffset, encoding, dir); - } - throw new TypeError("val must be string, number or Buffer"); - } - function arrayIndexOf(arr, val, byteOffset, encoding, dir) { - let indexSize = 1; - let arrLength = arr.length; - let valLength = val.length; - if (encoding !== void 0) { - encoding = String(encoding).toLowerCase(); - if (encoding === "ucs2" || encoding === "ucs-2" || encoding === "utf16le" || encoding === "utf-16le") { - if (arr.length < 2 || val.length < 2) { - return -1; - } - indexSize = 2; - arrLength /= 2; - valLength /= 2; - byteOffset /= 2; - } - } - function read(buf, i2) { - if (indexSize === 1) { - return buf[i2]; - } else { - return buf.readUInt16BE(i2 * indexSize); - } - } - let i; - if (dir) { - let foundIndex = -1; - for (i = byteOffset; i < arrLength; i++) { - if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { - if (foundIndex === -1) - foundIndex = i; - if (i - foundIndex + 1 === valLength) - return foundIndex * indexSize; - } else { - if (foundIndex !== -1) - i -= i - foundIndex; - foundIndex = -1; - } - } - } else { - if (byteOffset + valLength > arrLength) - byteOffset = arrLength - valLength; - for (i = byteOffset; i >= 0; i--) { - let found = true; - for (let j = 0; j < valLength; j++) { - if (read(arr, i + j) !== read(val, j)) { - found = false; - break; - } - } - if (found) - return i; - } - } - return -1; - } - Buffer2.prototype.includes = function includes(val, byteOffset, encoding) { - return this.indexOf(val, byteOffset, encoding) !== -1; - }; - Buffer2.prototype.indexOf = function indexOf(val, byteOffset, encoding) { - return bidirectionalIndexOf(this, val, byteOffset, encoding, true); - }; - Buffer2.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) { - return bidirectionalIndexOf(this, val, byteOffset, encoding, false); - }; - function hexWrite(buf, string, offset, length) { - offset = Number(offset) || 0; - const remaining = buf.length - offset; - if (!length) { - length = remaining; - } else { - length = Number(length); - if (length > remaining) { - length = remaining; - } - } - const strLen = string.length; - if (length > strLen / 2) { - length = strLen / 2; - } - let i; - for (i = 0; i < length; ++i) { - const parsed = parseInt(string.substr(i * 2, 2), 16); - if (numberIsNaN(parsed)) - return i; - buf[offset + i] = parsed; - } - return i; - } - function utf8Write(buf, string, offset, length) { - return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length); - } - function asciiWrite(buf, string, offset, length) { - return blitBuffer(asciiToBytes(string), buf, offset, length); - } - function base64Write(buf, string, offset, length) { - return blitBuffer(base64ToBytes(string), buf, offset, length); - } - function ucs2Write(buf, string, offset, length) { - return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length); - } - Buffer2.prototype.write = function write(string, offset, length, encoding) { - if (offset === void 0) { - encoding = "utf8"; - length = this.length; - offset = 0; - } else if (length === void 0 && typeof offset === "string") { - encoding = offset; - length = this.length; - offset = 0; - } else if (isFinite(offset)) { - offset = offset >>> 0; - if (isFinite(length)) { - length = length >>> 0; - if (encoding === void 0) - encoding = "utf8"; - } else { - encoding = length; - length = void 0; - } - } else { - throw new Error( - "Buffer.write(string, encoding, offset[, length]) is no longer supported" - ); - } - const remaining = this.length - offset; - if (length === void 0 || length > remaining) - length = remaining; - if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) { - throw new RangeError("Attempt to write outside buffer bounds"); - } - if (!encoding) - encoding = "utf8"; - let loweredCase = false; - for (; ; ) { - switch (encoding) { - case "hex": - return hexWrite(this, string, offset, length); - case "utf8": - case "utf-8": - return utf8Write(this, string, offset, length); - case "ascii": - case "latin1": - case "binary": - return asciiWrite(this, string, offset, length); - case "base64": - return base64Write(this, string, offset, length); - case "ucs2": - case "ucs-2": - case "utf16le": - case "utf-16le": - return ucs2Write(this, string, offset, length); - default: - if (loweredCase) - throw new TypeError("Unknown encoding: " + encoding); - encoding = ("" + encoding).toLowerCase(); - loweredCase = true; - } - } - }; - Buffer2.prototype.toJSON = function toJSON() { - return { - type: "Buffer", - data: Array.prototype.slice.call(this._arr || this, 0) - }; - }; - function base64Slice(buf, start, end) { - if (start === 0 && end === buf.length) { - return base64.fromByteArray(buf); - } else { - return base64.fromByteArray(buf.slice(start, end)); - } - } - function utf8Slice(buf, start, end) { - end = Math.min(buf.length, end); - const res = []; - let i = start; - while (i < end) { - const firstByte = buf[i]; - let codePoint = null; - let bytesPerSequence = firstByte > 239 ? 4 : firstByte > 223 ? 3 : firstByte > 191 ? 2 : 1; - if (i + bytesPerSequence <= end) { - let secondByte, thirdByte, fourthByte, tempCodePoint; - switch (bytesPerSequence) { - case 1: - if (firstByte < 128) { - codePoint = firstByte; - } - break; - case 2: - secondByte = buf[i + 1]; - if ((secondByte & 192) === 128) { - tempCodePoint = (firstByte & 31) << 6 | secondByte & 63; - if (tempCodePoint > 127) { - codePoint = tempCodePoint; - } - } - break; - case 3: - secondByte = buf[i + 1]; - thirdByte = buf[i + 2]; - if ((secondByte & 192) === 128 && (thirdByte & 192) === 128) { - tempCodePoint = (firstByte & 15) << 12 | (secondByte & 63) << 6 | thirdByte & 63; - if (tempCodePoint > 2047 && (tempCodePoint < 55296 || tempCodePoint > 57343)) { - codePoint = tempCodePoint; - } - } - break; - case 4: - secondByte = buf[i + 1]; - thirdByte = buf[i + 2]; - fourthByte = buf[i + 3]; - if ((secondByte & 192) === 128 && (thirdByte & 192) === 128 && (fourthByte & 192) === 128) { - tempCodePoint = (firstByte & 15) << 18 | (secondByte & 63) << 12 | (thirdByte & 63) << 6 | fourthByte & 63; - if (tempCodePoint > 65535 && tempCodePoint < 1114112) { - codePoint = tempCodePoint; - } - } - } - } - if (codePoint === null) { - codePoint = 65533; - bytesPerSequence = 1; - } else if (codePoint > 65535) { - codePoint -= 65536; - res.push(codePoint >>> 10 & 1023 | 55296); - codePoint = 56320 | codePoint & 1023; - } - res.push(codePoint); - i += bytesPerSequence; - } - return decodeCodePointsArray(res); - } - var MAX_ARGUMENTS_LENGTH = 4096; - function decodeCodePointsArray(codePoints) { - const len = codePoints.length; - if (len <= MAX_ARGUMENTS_LENGTH) { - return String.fromCharCode.apply(String, codePoints); - } - let res = ""; - let i = 0; - while (i < len) { - res += String.fromCharCode.apply( - String, - codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) - ); - } - return res; - } - function asciiSlice(buf, start, end) { - let ret = ""; - end = Math.min(buf.length, end); - for (let i = start; i < end; ++i) { - ret += String.fromCharCode(buf[i] & 127); - } - return ret; - } - function latin1Slice(buf, start, end) { - let ret = ""; - end = Math.min(buf.length, end); - for (let i = start; i < end; ++i) { - ret += String.fromCharCode(buf[i]); - } - return ret; - } - function hexSlice(buf, start, end) { - const len = buf.length; - if (!start || start < 0) - start = 0; - if (!end || end < 0 || end > len) - end = len; - let out = ""; - for (let i = start; i < end; ++i) { - out += hexSliceLookupTable[buf[i]]; - } - return out; - } - function utf16leSlice(buf, start, end) { - const bytes = buf.slice(start, end); - let res = ""; - for (let i = 0; i < bytes.length - 1; i += 2) { - res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256); - } - return res; - } - Buffer2.prototype.slice = function slice(start, end) { - const len = this.length; - start = ~~start; - end = end === void 0 ? len : ~~end; - if (start < 0) { - start += len; - if (start < 0) - start = 0; - } else if (start > len) { - start = len; - } - if (end < 0) { - end += len; - if (end < 0) - end = 0; - } else if (end > len) { - end = len; - } - if (end < start) - end = start; - const newBuf = this.subarray(start, end); - Object.setPrototypeOf(newBuf, Buffer2.prototype); - return newBuf; - }; - function checkOffset(offset, ext, length) { - if (offset % 1 !== 0 || offset < 0) - throw new RangeError("offset is not uint"); - if (offset + ext > length) - throw new RangeError("Trying to access beyond buffer length"); - } - Buffer2.prototype.readUintLE = Buffer2.prototype.readUIntLE = function readUIntLE(offset, byteLength2, noAssert) { - offset = offset >>> 0; - byteLength2 = byteLength2 >>> 0; - if (!noAssert) - checkOffset(offset, byteLength2, this.length); - let val = this[offset]; - let mul = 1; - let i = 0; - while (++i < byteLength2 && (mul *= 256)) { - val += this[offset + i] * mul; - } - return val; - }; - Buffer2.prototype.readUintBE = Buffer2.prototype.readUIntBE = function readUIntBE(offset, byteLength2, noAssert) { - offset = offset >>> 0; - byteLength2 = byteLength2 >>> 0; - if (!noAssert) { - checkOffset(offset, byteLength2, this.length); - } - let val = this[offset + --byteLength2]; - let mul = 1; - while (byteLength2 > 0 && (mul *= 256)) { - val += this[offset + --byteLength2] * mul; - } - return val; - }; - Buffer2.prototype.readUint8 = Buffer2.prototype.readUInt8 = function readUInt8(offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) - checkOffset(offset, 1, this.length); - return this[offset]; - }; - Buffer2.prototype.readUint16LE = Buffer2.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) - checkOffset(offset, 2, this.length); - return this[offset] | this[offset + 1] << 8; - }; - Buffer2.prototype.readUint16BE = Buffer2.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) - checkOffset(offset, 2, this.length); - return this[offset] << 8 | this[offset + 1]; - }; - Buffer2.prototype.readUint32LE = Buffer2.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) - checkOffset(offset, 4, this.length); - return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 16777216; - }; - Buffer2.prototype.readUint32BE = Buffer2.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) - checkOffset(offset, 4, this.length); - return this[offset] * 16777216 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]); - }; - Buffer2.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE(offset) { - offset = offset >>> 0; - validateNumber(offset, "offset"); - const first2 = this[offset]; - const last2 = this[offset + 7]; - if (first2 === void 0 || last2 === void 0) { - boundsError(offset, this.length - 8); - } - const lo = first2 + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 24; - const hi = this[++offset] + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + last2 * 2 ** 24; - return BigInt(lo) + (BigInt(hi) << BigInt(32)); - }); - Buffer2.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE(offset) { - offset = offset >>> 0; - validateNumber(offset, "offset"); - const first2 = this[offset]; - const last2 = this[offset + 7]; - if (first2 === void 0 || last2 === void 0) { - boundsError(offset, this.length - 8); - } - const hi = first2 * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + this[++offset]; - const lo = this[++offset] * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + last2; - return (BigInt(hi) << BigInt(32)) + BigInt(lo); - }); - Buffer2.prototype.readIntLE = function readIntLE(offset, byteLength2, noAssert) { - offset = offset >>> 0; - byteLength2 = byteLength2 >>> 0; - if (!noAssert) - checkOffset(offset, byteLength2, this.length); - let val = this[offset]; - let mul = 1; - let i = 0; - while (++i < byteLength2 && (mul *= 256)) { - val += this[offset + i] * mul; - } - mul *= 128; - if (val >= mul) - val -= Math.pow(2, 8 * byteLength2); - return val; - }; - Buffer2.prototype.readIntBE = function readIntBE(offset, byteLength2, noAssert) { - offset = offset >>> 0; - byteLength2 = byteLength2 >>> 0; - if (!noAssert) - checkOffset(offset, byteLength2, this.length); - let i = byteLength2; - let mul = 1; - let val = this[offset + --i]; - while (i > 0 && (mul *= 256)) { - val += this[offset + --i] * mul; - } - mul *= 128; - if (val >= mul) - val -= Math.pow(2, 8 * byteLength2); - return val; - }; - Buffer2.prototype.readInt8 = function readInt8(offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) - checkOffset(offset, 1, this.length); - if (!(this[offset] & 128)) - return this[offset]; - return (255 - this[offset] + 1) * -1; - }; - Buffer2.prototype.readInt16LE = function readInt16LE(offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) - checkOffset(offset, 2, this.length); - const val = this[offset] | this[offset + 1] << 8; - return val & 32768 ? val | 4294901760 : val; - }; - Buffer2.prototype.readInt16BE = function readInt16BE(offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) - checkOffset(offset, 2, this.length); - const val = this[offset + 1] | this[offset] << 8; - return val & 32768 ? val | 4294901760 : val; - }; - Buffer2.prototype.readInt32LE = function readInt32LE(offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) - checkOffset(offset, 4, this.length); - return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24; - }; - Buffer2.prototype.readInt32BE = function readInt32BE(offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) - checkOffset(offset, 4, this.length); - return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]; - }; - Buffer2.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE(offset) { - offset = offset >>> 0; - validateNumber(offset, "offset"); - const first2 = this[offset]; - const last2 = this[offset + 7]; - if (first2 === void 0 || last2 === void 0) { - boundsError(offset, this.length - 8); - } - const val = this[offset + 4] + this[offset + 5] * 2 ** 8 + this[offset + 6] * 2 ** 16 + (last2 << 24); - return (BigInt(val) << BigInt(32)) + BigInt(first2 + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 24); - }); - Buffer2.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE(offset) { - offset = offset >>> 0; - validateNumber(offset, "offset"); - const first2 = this[offset]; - const last2 = this[offset + 7]; - if (first2 === void 0 || last2 === void 0) { - boundsError(offset, this.length - 8); - } - const val = (first2 << 24) + // Overflow - this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + this[++offset]; - return (BigInt(val) << BigInt(32)) + BigInt(this[++offset] * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + last2); - }); - Buffer2.prototype.readFloatLE = function readFloatLE(offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) - checkOffset(offset, 4, this.length); - return ieee754.read(this, offset, true, 23, 4); - }; - Buffer2.prototype.readFloatBE = function readFloatBE(offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) - checkOffset(offset, 4, this.length); - return ieee754.read(this, offset, false, 23, 4); - }; - Buffer2.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) - checkOffset(offset, 8, this.length); - return ieee754.read(this, offset, true, 52, 8); - }; - Buffer2.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) - checkOffset(offset, 8, this.length); - return ieee754.read(this, offset, false, 52, 8); - }; - function checkInt(buf, value, offset, ext, max, min) { - if (!Buffer2.isBuffer(buf)) - throw new TypeError('"buffer" argument must be a Buffer instance'); - if (value > max || value < min) - throw new RangeError('"value" argument is out of bounds'); - if (offset + ext > buf.length) - throw new RangeError("Index out of range"); - } - Buffer2.prototype.writeUintLE = Buffer2.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength2, noAssert) { - value = +value; - offset = offset >>> 0; - byteLength2 = byteLength2 >>> 0; - if (!noAssert) { - const maxBytes = Math.pow(2, 8 * byteLength2) - 1; - checkInt(this, value, offset, byteLength2, maxBytes, 0); - } - let mul = 1; - let i = 0; - this[offset] = value & 255; - while (++i < byteLength2 && (mul *= 256)) { - this[offset + i] = value / mul & 255; - } - return offset + byteLength2; - }; - Buffer2.prototype.writeUintBE = Buffer2.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength2, noAssert) { - value = +value; - offset = offset >>> 0; - byteLength2 = byteLength2 >>> 0; - if (!noAssert) { - const maxBytes = Math.pow(2, 8 * byteLength2) - 1; - checkInt(this, value, offset, byteLength2, maxBytes, 0); - } - let i = byteLength2 - 1; - let mul = 1; - this[offset + i] = value & 255; - while (--i >= 0 && (mul *= 256)) { - this[offset + i] = value / mul & 255; - } - return offset + byteLength2; - }; - Buffer2.prototype.writeUint8 = Buffer2.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) - checkInt(this, value, offset, 1, 255, 0); - this[offset] = value & 255; - return offset + 1; - }; - Buffer2.prototype.writeUint16LE = Buffer2.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) - checkInt(this, value, offset, 2, 65535, 0); - this[offset] = value & 255; - this[offset + 1] = value >>> 8; - return offset + 2; - }; - Buffer2.prototype.writeUint16BE = Buffer2.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) - checkInt(this, value, offset, 2, 65535, 0); - this[offset] = value >>> 8; - this[offset + 1] = value & 255; - return offset + 2; - }; - Buffer2.prototype.writeUint32LE = Buffer2.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) - checkInt(this, value, offset, 4, 4294967295, 0); - this[offset + 3] = value >>> 24; - this[offset + 2] = value >>> 16; - this[offset + 1] = value >>> 8; - this[offset] = value & 255; - return offset + 4; - }; - Buffer2.prototype.writeUint32BE = Buffer2.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) - checkInt(this, value, offset, 4, 4294967295, 0); - this[offset] = value >>> 24; - this[offset + 1] = value >>> 16; - this[offset + 2] = value >>> 8; - this[offset + 3] = value & 255; - return offset + 4; - }; - function wrtBigUInt64LE(buf, value, offset, min, max) { - checkIntBI(value, min, max, buf, offset, 7); - let lo = Number(value & BigInt(4294967295)); - buf[offset++] = lo; - lo = lo >> 8; - buf[offset++] = lo; - lo = lo >> 8; - buf[offset++] = lo; - lo = lo >> 8; - buf[offset++] = lo; - let hi = Number(value >> BigInt(32) & BigInt(4294967295)); - buf[offset++] = hi; - hi = hi >> 8; - buf[offset++] = hi; - hi = hi >> 8; - buf[offset++] = hi; - hi = hi >> 8; - buf[offset++] = hi; - return offset; - } - function wrtBigUInt64BE(buf, value, offset, min, max) { - checkIntBI(value, min, max, buf, offset, 7); - let lo = Number(value & BigInt(4294967295)); - buf[offset + 7] = lo; - lo = lo >> 8; - buf[offset + 6] = lo; - lo = lo >> 8; - buf[offset + 5] = lo; - lo = lo >> 8; - buf[offset + 4] = lo; - let hi = Number(value >> BigInt(32) & BigInt(4294967295)); - buf[offset + 3] = hi; - hi = hi >> 8; - buf[offset + 2] = hi; - hi = hi >> 8; - buf[offset + 1] = hi; - hi = hi >> 8; - buf[offset] = hi; - return offset + 8; - } - Buffer2.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE(value, offset = 0) { - return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt("0xffffffffffffffff")); - }); - Buffer2.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE(value, offset = 0) { - return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt("0xffffffffffffffff")); - }); - Buffer2.prototype.writeIntLE = function writeIntLE(value, offset, byteLength2, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) { - const limit = Math.pow(2, 8 * byteLength2 - 1); - checkInt(this, value, offset, byteLength2, limit - 1, -limit); - } - let i = 0; - let mul = 1; - let sub = 0; - this[offset] = value & 255; - while (++i < byteLength2 && (mul *= 256)) { - if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { - sub = 1; - } - this[offset + i] = (value / mul >> 0) - sub & 255; - } - return offset + byteLength2; - }; - Buffer2.prototype.writeIntBE = function writeIntBE(value, offset, byteLength2, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) { - const limit = Math.pow(2, 8 * byteLength2 - 1); - checkInt(this, value, offset, byteLength2, limit - 1, -limit); - } - let i = byteLength2 - 1; - let mul = 1; - let sub = 0; - this[offset + i] = value & 255; - while (--i >= 0 && (mul *= 256)) { - if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { - sub = 1; - } - this[offset + i] = (value / mul >> 0) - sub & 255; - } - return offset + byteLength2; - }; - Buffer2.prototype.writeInt8 = function writeInt8(value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) - checkInt(this, value, offset, 1, 127, -128); - if (value < 0) - value = 255 + value + 1; - this[offset] = value & 255; - return offset + 1; - }; - Buffer2.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) - checkInt(this, value, offset, 2, 32767, -32768); - this[offset] = value & 255; - this[offset + 1] = value >>> 8; - return offset + 2; - }; - Buffer2.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) - checkInt(this, value, offset, 2, 32767, -32768); - this[offset] = value >>> 8; - this[offset + 1] = value & 255; - return offset + 2; - }; - Buffer2.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) - checkInt(this, value, offset, 4, 2147483647, -2147483648); - this[offset] = value & 255; - this[offset + 1] = value >>> 8; - this[offset + 2] = value >>> 16; - this[offset + 3] = value >>> 24; - return offset + 4; - }; - Buffer2.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) - checkInt(this, value, offset, 4, 2147483647, -2147483648); - if (value < 0) - value = 4294967295 + value + 1; - this[offset] = value >>> 24; - this[offset + 1] = value >>> 16; - this[offset + 2] = value >>> 8; - this[offset + 3] = value & 255; - return offset + 4; - }; - Buffer2.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE(value, offset = 0) { - return wrtBigUInt64LE(this, value, offset, -BigInt("0x8000000000000000"), BigInt("0x7fffffffffffffff")); - }); - Buffer2.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE(value, offset = 0) { - return wrtBigUInt64BE(this, value, offset, -BigInt("0x8000000000000000"), BigInt("0x7fffffffffffffff")); - }); - function checkIEEE754(buf, value, offset, ext, max, min) { - if (offset + ext > buf.length) - throw new RangeError("Index out of range"); - if (offset < 0) - throw new RangeError("Index out of range"); - } - function writeFloat(buf, value, offset, littleEndian, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) { - checkIEEE754(buf, value, offset, 4, 34028234663852886e22, -34028234663852886e22); - } - ieee754.write(buf, value, offset, littleEndian, 23, 4); - return offset + 4; - } - Buffer2.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) { - return writeFloat(this, value, offset, true, noAssert); - }; - Buffer2.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) { - return writeFloat(this, value, offset, false, noAssert); - }; - function writeDouble(buf, value, offset, littleEndian, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) { - checkIEEE754(buf, value, offset, 8, 17976931348623157e292, -17976931348623157e292); - } - ieee754.write(buf, value, offset, littleEndian, 52, 8); - return offset + 8; - } - Buffer2.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) { - return writeDouble(this, value, offset, true, noAssert); - }; - Buffer2.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) { - return writeDouble(this, value, offset, false, noAssert); - }; - Buffer2.prototype.copy = function copy2(target, targetStart, start, end) { - if (!Buffer2.isBuffer(target)) - throw new TypeError("argument should be a Buffer"); - if (!start) - start = 0; - if (!end && end !== 0) - end = this.length; - if (targetStart >= target.length) - targetStart = target.length; - if (!targetStart) - targetStart = 0; - if (end > 0 && end < start) - end = start; - if (end === start) - return 0; - if (target.length === 0 || this.length === 0) - return 0; - if (targetStart < 0) { - throw new RangeError("targetStart out of bounds"); - } - if (start < 0 || start >= this.length) - throw new RangeError("Index out of range"); - if (end < 0) - throw new RangeError("sourceEnd out of bounds"); - if (end > this.length) - end = this.length; - if (target.length - targetStart < end - start) { - end = target.length - targetStart + start; - } - const len = end - start; - if (this === target && typeof Uint8Array.prototype.copyWithin === "function") { - this.copyWithin(targetStart, start, end); - } else { - Uint8Array.prototype.set.call( - target, - this.subarray(start, end), - targetStart - ); - } - return len; - }; - Buffer2.prototype.fill = function fill(val, start, end, encoding) { - if (typeof val === "string") { - if (typeof start === "string") { - encoding = start; - start = 0; - end = this.length; - } else if (typeof end === "string") { - encoding = end; - end = this.length; - } - if (encoding !== void 0 && typeof encoding !== "string") { - throw new TypeError("encoding must be a string"); - } - if (typeof encoding === "string" && !Buffer2.isEncoding(encoding)) { - throw new TypeError("Unknown encoding: " + encoding); - } - if (val.length === 1) { - const code = val.charCodeAt(0); - if (encoding === "utf8" && code < 128 || encoding === "latin1") { - val = code; - } - } - } else if (typeof val === "number") { - val = val & 255; - } else if (typeof val === "boolean") { - val = Number(val); - } - if (start < 0 || this.length < start || this.length < end) { - throw new RangeError("Out of range index"); - } - if (end <= start) { - return this; - } - start = start >>> 0; - end = end === void 0 ? this.length : end >>> 0; - if (!val) - val = 0; - let i; - if (typeof val === "number") { - for (i = start; i < end; ++i) { - this[i] = val; - } - } else { - const bytes = Buffer2.isBuffer(val) ? val : Buffer2.from(val, encoding); - const len = bytes.length; - if (len === 0) { - throw new TypeError('The value "' + val + '" is invalid for argument "value"'); - } - for (i = 0; i < end - start; ++i) { - this[i + start] = bytes[i % len]; - } - } - return this; - }; - var errors = {}; - function E(sym, getMessage, Base) { - errors[sym] = class NodeError extends Base { - constructor() { - super(); - Object.defineProperty(this, "message", { - value: getMessage.apply(this, arguments), - writable: true, - configurable: true - }); - this.name = `${this.name} [${sym}]`; - this.stack; - delete this.name; - } - get code() { - return sym; - } - set code(value) { - Object.defineProperty(this, "code", { - configurable: true, - enumerable: true, - value, - writable: true - }); - } - toString() { - return `${this.name} [${sym}]: ${this.message}`; - } - }; - } - E( - "ERR_BUFFER_OUT_OF_BOUNDS", - function(name) { - if (name) { - return `${name} is outside of buffer bounds`; - } - return "Attempt to access memory outside buffer bounds"; - }, - RangeError - ); - E( - "ERR_INVALID_ARG_TYPE", - function(name, actual) { - return `The "${name}" argument must be of type number. Received type ${typeof actual}`; - }, - TypeError - ); - E( - "ERR_OUT_OF_RANGE", - function(str, range, input) { - let msg = `The value of "${str}" is out of range.`; - let received = input; - if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) { - received = addNumericalSeparator(String(input)); - } else if (typeof input === "bigint") { - received = String(input); - if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) { - received = addNumericalSeparator(received); - } - received += "n"; - } - msg += ` It must be ${range}. Received ${received}`; - return msg; - }, - RangeError - ); - function addNumericalSeparator(val) { - let res = ""; - let i = val.length; - const start = val[0] === "-" ? 1 : 0; - for (; i >= start + 4; i -= 3) { - res = `_${val.slice(i - 3, i)}${res}`; - } - return `${val.slice(0, i)}${res}`; - } - function checkBounds(buf, offset, byteLength2) { - validateNumber(offset, "offset"); - if (buf[offset] === void 0 || buf[offset + byteLength2] === void 0) { - boundsError(offset, buf.length - (byteLength2 + 1)); - } - } - function checkIntBI(value, min, max, buf, offset, byteLength2) { - if (value > max || value < min) { - const n = typeof min === "bigint" ? "n" : ""; - let range; - if (byteLength2 > 3) { - if (min === 0 || min === BigInt(0)) { - range = `>= 0${n} and < 2${n} ** ${(byteLength2 + 1) * 8}${n}`; - } else { - range = `>= -(2${n} ** ${(byteLength2 + 1) * 8 - 1}${n}) and < 2 ** ${(byteLength2 + 1) * 8 - 1}${n}`; - } - } else { - range = `>= ${min}${n} and <= ${max}${n}`; - } - throw new errors.ERR_OUT_OF_RANGE("value", range, value); - } - checkBounds(buf, offset, byteLength2); - } - function validateNumber(value, name) { - if (typeof value !== "number") { - throw new errors.ERR_INVALID_ARG_TYPE(name, "number", value); - } - } - function boundsError(value, length, type) { - if (Math.floor(value) !== value) { - validateNumber(value, type); - throw new errors.ERR_OUT_OF_RANGE(type || "offset", "an integer", value); - } - if (length < 0) { - throw new errors.ERR_BUFFER_OUT_OF_BOUNDS(); - } - throw new errors.ERR_OUT_OF_RANGE( - type || "offset", - `>= ${type ? 1 : 0} and <= ${length}`, - value - ); - } - var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g; - function base64clean(str) { - str = str.split("=")[0]; - str = str.trim().replace(INVALID_BASE64_RE, ""); - if (str.length < 2) - return ""; - while (str.length % 4 !== 0) { - str = str + "="; - } - return str; - } - function utf8ToBytes(string, units) { - units = units || Infinity; - let codePoint; - const length = string.length; - let leadSurrogate = null; - const bytes = []; - for (let i = 0; i < length; ++i) { - codePoint = string.charCodeAt(i); - if (codePoint > 55295 && codePoint < 57344) { - if (!leadSurrogate) { - if (codePoint > 56319) { - if ((units -= 3) > -1) - bytes.push(239, 191, 189); - continue; - } else if (i + 1 === length) { - if ((units -= 3) > -1) - bytes.push(239, 191, 189); - continue; - } - leadSurrogate = codePoint; - continue; - } - if (codePoint < 56320) { - if ((units -= 3) > -1) - bytes.push(239, 191, 189); - leadSurrogate = codePoint; - continue; - } - codePoint = (leadSurrogate - 55296 << 10 | codePoint - 56320) + 65536; - } else if (leadSurrogate) { - if ((units -= 3) > -1) - bytes.push(239, 191, 189); - } - leadSurrogate = null; - if (codePoint < 128) { - if ((units -= 1) < 0) - break; - bytes.push(codePoint); - } else if (codePoint < 2048) { - if ((units -= 2) < 0) - break; - bytes.push( - codePoint >> 6 | 192, - codePoint & 63 | 128 - ); - } else if (codePoint < 65536) { - if ((units -= 3) < 0) - break; - bytes.push( - codePoint >> 12 | 224, - codePoint >> 6 & 63 | 128, - codePoint & 63 | 128 - ); - } else if (codePoint < 1114112) { - if ((units -= 4) < 0) - break; - bytes.push( - codePoint >> 18 | 240, - codePoint >> 12 & 63 | 128, - codePoint >> 6 & 63 | 128, - codePoint & 63 | 128 - ); - } else { - throw new Error("Invalid code point"); - } - } - return bytes; - } - function asciiToBytes(str) { - const byteArray = []; - for (let i = 0; i < str.length; ++i) { - byteArray.push(str.charCodeAt(i) & 255); - } - return byteArray; - } - function utf16leToBytes(str, units) { - let c, hi, lo; - const byteArray = []; - for (let i = 0; i < str.length; ++i) { - if ((units -= 2) < 0) - break; - c = str.charCodeAt(i); - hi = c >> 8; - lo = c % 256; - byteArray.push(lo); - byteArray.push(hi); - } - return byteArray; - } - function base64ToBytes(str) { - return base64.toByteArray(base64clean(str)); - } - function blitBuffer(src, dst, offset, length) { - let i; - for (i = 0; i < length; ++i) { - if (i + offset >= dst.length || i >= src.length) - break; - dst[i + offset] = src[i]; - } - return i; - } - function isInstance(obj, type) { - return obj instanceof type || obj != null && obj.constructor != null && obj.constructor.name != null && obj.constructor.name === type.name; - } - function numberIsNaN(obj) { - return obj !== obj; - } - var hexSliceLookupTable = function() { - const alphabet = "0123456789abcdef"; - const table = new Array(256); - for (let i = 0; i < 16; ++i) { - const i16 = i * 16; - for (let j = 0; j < 16; ++j) { - table[i16 + j] = alphabet[i] + alphabet[j]; - } - } - return table; - }(); - function defineBigIntMethod(fn) { - return typeof BigInt === "undefined" ? BufferBigIntNotDefined : fn; - } - function BufferBigIntNotDefined() { - throw new Error("BigInt not supported"); - } - } -}); - -// polyfill_buffer.js -var import_obsidian, buffer, Buffer; -var init_polyfill_buffer = __esm({ - "polyfill_buffer.js"() { - import_obsidian = require("obsidian"); - if (import_obsidian.Platform.isMobileApp) { - buffer = require_buffer().Buffer; - } else { - buffer = global.Buffer; - } - Buffer = buffer; - } -}); - -// node_modules/.pnpm/async-lock@1.4.1/node_modules/async-lock/lib/index.js -var require_lib = __commonJS({ - "node_modules/.pnpm/async-lock@1.4.1/node_modules/async-lock/lib/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var AsyncLock2 = function(opts) { - opts = opts || {}; - this.Promise = opts.Promise || Promise; - this.queues = /* @__PURE__ */ Object.create(null); - this.domainReentrant = opts.domainReentrant || false; - if (this.domainReentrant) { - if (typeof process === "undefined" || typeof process.domain === "undefined") { - throw new Error( - "Domain-reentrant locks require `process.domain` to exist. Please flip `opts.domainReentrant = false`, use a NodeJS version that still implements Domain, or install a browser polyfill." - ); - } - this.domains = /* @__PURE__ */ Object.create(null); - } - this.timeout = opts.timeout || AsyncLock2.DEFAULT_TIMEOUT; - this.maxOccupationTime = opts.maxOccupationTime || AsyncLock2.DEFAULT_MAX_OCCUPATION_TIME; - this.maxExecutionTime = opts.maxExecutionTime || AsyncLock2.DEFAULT_MAX_EXECUTION_TIME; - if (opts.maxPending === Infinity || Number.isInteger(opts.maxPending) && opts.maxPending >= 0) { - this.maxPending = opts.maxPending; - } else { - this.maxPending = AsyncLock2.DEFAULT_MAX_PENDING; - } - }; - AsyncLock2.DEFAULT_TIMEOUT = 0; - AsyncLock2.DEFAULT_MAX_OCCUPATION_TIME = 0; - AsyncLock2.DEFAULT_MAX_EXECUTION_TIME = 0; - AsyncLock2.DEFAULT_MAX_PENDING = 1e3; - AsyncLock2.prototype.acquire = function(key2, fn, cb, opts) { - if (Array.isArray(key2)) { - return this._acquireBatch(key2, fn, cb, opts); - } - if (typeof fn !== "function") { - throw new Error("You must pass a function to execute"); - } - var deferredResolve = null; - var deferredReject = null; - var deferred2 = null; - if (typeof cb !== "function") { - opts = cb; - cb = null; - deferred2 = new this.Promise(function(resolve, reject) { - deferredResolve = resolve; - deferredReject = reject; - }); - } - opts = opts || {}; - var resolved = false; - var timer = null; - var occupationTimer = null; - var executionTimer = null; - var self2 = this; - var done = function(locked, err, ret) { - if (occupationTimer) { - clearTimeout(occupationTimer); - occupationTimer = null; - } - if (executionTimer) { - clearTimeout(executionTimer); - executionTimer = null; - } - if (locked) { - if (!!self2.queues[key2] && self2.queues[key2].length === 0) { - delete self2.queues[key2]; - } - if (self2.domainReentrant) { - delete self2.domains[key2]; - } - } - if (!resolved) { - if (!deferred2) { - if (typeof cb === "function") { - cb(err, ret); - } - } else { - if (err) { - deferredReject(err); - } else { - deferredResolve(ret); - } - } - resolved = true; - } - if (locked) { - if (!!self2.queues[key2] && self2.queues[key2].length > 0) { - self2.queues[key2].shift()(); - } - } - }; - var exec = function(locked) { - if (resolved) { - return done(locked); - } - if (timer) { - clearTimeout(timer); - timer = null; - } - if (self2.domainReentrant && locked) { - self2.domains[key2] = process.domain; - } - var maxExecutionTime = opts.maxExecutionTime || self2.maxExecutionTime; - if (maxExecutionTime) { - executionTimer = setTimeout(function() { - if (!!self2.queues[key2]) { - done(locked, new Error("Maximum execution time is exceeded " + key2)); - } - }, maxExecutionTime); - } - if (fn.length === 1) { - var called = false; - try { - fn(function(err, ret) { - if (!called) { - called = true; - done(locked, err, ret); - } - }); - } catch (err) { - if (!called) { - called = true; - done(locked, err); - } - } - } else { - self2._promiseTry(function() { - return fn(); - }).then(function(ret) { - done(locked, void 0, ret); - }, function(error) { - done(locked, error); - }); - } - }; - if (self2.domainReentrant && !!process.domain) { - exec = process.domain.bind(exec); - } - var maxPending = opts.maxPending || self2.maxPending; - if (!self2.queues[key2]) { - self2.queues[key2] = []; - exec(true); - } else if (self2.domainReentrant && !!process.domain && process.domain === self2.domains[key2]) { - exec(false); - } else if (self2.queues[key2].length >= maxPending) { - done(false, new Error("Too many pending tasks in queue " + key2)); - } else { - var taskFn = function() { - exec(true); - }; - if (opts.skipQueue) { - self2.queues[key2].unshift(taskFn); - } else { - self2.queues[key2].push(taskFn); - } - var timeout = opts.timeout || self2.timeout; - if (timeout) { - timer = setTimeout(function() { - timer = null; - done(false, new Error("async-lock timed out in queue " + key2)); - }, timeout); - } - } - var maxOccupationTime = opts.maxOccupationTime || self2.maxOccupationTime; - if (maxOccupationTime) { - occupationTimer = setTimeout(function() { - if (!!self2.queues[key2]) { - done(false, new Error("Maximum occupation time is exceeded in queue " + key2)); - } - }, maxOccupationTime); - } - if (deferred2) { - return deferred2; - } - }; - AsyncLock2.prototype._acquireBatch = function(keys, fn, cb, opts) { - if (typeof cb !== "function") { - opts = cb; - cb = null; - } - var self2 = this; - var getFn = function(key2, fn2) { - return function(cb2) { - self2.acquire(key2, fn2, cb2, opts); - }; - }; - var fnx = keys.reduceRight(function(prev, key2) { - return getFn(key2, prev); - }, fn); - if (typeof cb === "function") { - fnx(cb); - } else { - return new this.Promise(function(resolve, reject) { - if (fnx.length === 1) { - fnx(function(err, ret) { - if (err) { - reject(err); - } else { - resolve(ret); - } - }); - } else { - resolve(fnx()); - } - }); - } - }; - AsyncLock2.prototype.isBusy = function(key2) { - if (!key2) { - return Object.keys(this.queues).length > 0; - } else { - return !!this.queues[key2]; - } - }; - AsyncLock2.prototype._promiseTry = function(fn) { - try { - return this.Promise.resolve(fn()); - } catch (e) { - return this.Promise.reject(e); - } - }; - module2.exports = AsyncLock2; - } -}); - -// node_modules/.pnpm/async-lock@1.4.1/node_modules/async-lock/index.js -var require_async_lock = __commonJS({ - "node_modules/.pnpm/async-lock@1.4.1/node_modules/async-lock/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - module2.exports = require_lib(); - } -}); - -// node_modules/.pnpm/inherits@2.0.4/node_modules/inherits/inherits_browser.js -var require_inherits_browser = __commonJS({ - "node_modules/.pnpm/inherits@2.0.4/node_modules/inherits/inherits_browser.js"(exports2, module2) { - init_polyfill_buffer(); - if (typeof Object.create === "function") { - module2.exports = function inherits(ctor, superCtor) { - if (superCtor) { - ctor.super_ = superCtor; - ctor.prototype = Object.create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: false, - writable: true, - configurable: true - } - }); - } - }; - } else { - module2.exports = function inherits(ctor, superCtor) { - if (superCtor) { - ctor.super_ = superCtor; - var TempCtor = function() { - }; - TempCtor.prototype = superCtor.prototype; - ctor.prototype = new TempCtor(); - ctor.prototype.constructor = ctor; - } - }; - } - } -}); - -// node_modules/.pnpm/safe-buffer@5.2.1/node_modules/safe-buffer/index.js -var require_safe_buffer = __commonJS({ - "node_modules/.pnpm/safe-buffer@5.2.1/node_modules/safe-buffer/index.js"(exports2, module2) { - init_polyfill_buffer(); - var buffer2 = require_buffer(); - var Buffer2 = buffer2.Buffer; - function copyProps(src, dst) { - for (var key2 in src) { - dst[key2] = src[key2]; - } - } - if (Buffer2.from && Buffer2.alloc && Buffer2.allocUnsafe && Buffer2.allocUnsafeSlow) { - module2.exports = buffer2; - } else { - copyProps(buffer2, exports2); - exports2.Buffer = SafeBuffer; - } - function SafeBuffer(arg, encodingOrOffset, length) { - return Buffer2(arg, encodingOrOffset, length); - } - SafeBuffer.prototype = Object.create(Buffer2.prototype); - copyProps(Buffer2, SafeBuffer); - SafeBuffer.from = function(arg, encodingOrOffset, length) { - if (typeof arg === "number") { - throw new TypeError("Argument must not be a number"); - } - return Buffer2(arg, encodingOrOffset, length); - }; - SafeBuffer.alloc = function(size, fill, encoding) { - if (typeof size !== "number") { - throw new TypeError("Argument must be a number"); - } - var buf = Buffer2(size); - if (fill !== void 0) { - if (typeof encoding === "string") { - buf.fill(fill, encoding); - } else { - buf.fill(fill); - } - } else { - buf.fill(0); - } - return buf; - }; - SafeBuffer.allocUnsafe = function(size) { - if (typeof size !== "number") { - throw new TypeError("Argument must be a number"); - } - return Buffer2(size); - }; - SafeBuffer.allocUnsafeSlow = function(size) { - if (typeof size !== "number") { - throw new TypeError("Argument must be a number"); - } - return buffer2.SlowBuffer(size); - }; - } -}); - -// node_modules/.pnpm/sha.js@2.4.11/node_modules/sha.js/hash.js -var require_hash = __commonJS({ - "node_modules/.pnpm/sha.js@2.4.11/node_modules/sha.js/hash.js"(exports2, module2) { - init_polyfill_buffer(); - var Buffer2 = require_safe_buffer().Buffer; - function Hash2(blockSize, finalSize) { - this._block = Buffer2.alloc(blockSize); - this._finalSize = finalSize; - this._blockSize = blockSize; - this._len = 0; - } - Hash2.prototype.update = function(data, enc) { - if (typeof data === "string") { - enc = enc || "utf8"; - data = Buffer2.from(data, enc); - } - var block = this._block; - var blockSize = this._blockSize; - var length = data.length; - var accum = this._len; - for (var offset = 0; offset < length; ) { - var assigned = accum % blockSize; - var remainder = Math.min(length - offset, blockSize - assigned); - for (var i = 0; i < remainder; i++) { - block[assigned + i] = data[offset + i]; - } - accum += remainder; - offset += remainder; - if (accum % blockSize === 0) { - this._update(block); - } - } - this._len += length; - return this; - }; - Hash2.prototype.digest = function(enc) { - var rem = this._len % this._blockSize; - this._block[rem] = 128; - this._block.fill(0, rem + 1); - if (rem >= this._finalSize) { - this._update(this._block); - this._block.fill(0); - } - var bits = this._len * 8; - if (bits <= 4294967295) { - this._block.writeUInt32BE(bits, this._blockSize - 4); - } else { - var lowBits = (bits & 4294967295) >>> 0; - var highBits = (bits - lowBits) / 4294967296; - this._block.writeUInt32BE(highBits, this._blockSize - 8); - this._block.writeUInt32BE(lowBits, this._blockSize - 4); - } - this._update(this._block); - var hash2 = this._hash(); - return enc ? hash2.toString(enc) : hash2; - }; - Hash2.prototype._update = function() { - throw new Error("_update must be implemented by subclass"); - }; - module2.exports = Hash2; - } -}); - -// node_modules/.pnpm/sha.js@2.4.11/node_modules/sha.js/sha1.js -var require_sha1 = __commonJS({ - "node_modules/.pnpm/sha.js@2.4.11/node_modules/sha.js/sha1.js"(exports2, module2) { - init_polyfill_buffer(); - var inherits = require_inherits_browser(); - var Hash2 = require_hash(); - var Buffer2 = require_safe_buffer().Buffer; - var K2 = [ - 1518500249, - 1859775393, - 2400959708 | 0, - 3395469782 | 0 - ]; - var W = new Array(80); - function Sha1() { - this.init(); - this._w = W; - Hash2.call(this, 64, 56); - } - inherits(Sha1, Hash2); - Sha1.prototype.init = function() { - this._a = 1732584193; - this._b = 4023233417; - this._c = 2562383102; - this._d = 271733878; - this._e = 3285377520; - return this; - }; - function rotl1(num2) { - return num2 << 1 | num2 >>> 31; - } - function rotl5(num2) { - return num2 << 5 | num2 >>> 27; - } - function rotl30(num2) { - return num2 << 30 | num2 >>> 2; - } - function ft(s, b, c, d) { - if (s === 0) - return b & c | ~b & d; - if (s === 2) - return b & c | b & d | c & d; - return b ^ c ^ d; - } - Sha1.prototype._update = function(M) { - var W2 = this._w; - var a = this._a | 0; - var b = this._b | 0; - var c = this._c | 0; - var d = this._d | 0; - var e = this._e | 0; - for (var i = 0; i < 16; ++i) - W2[i] = M.readInt32BE(i * 4); - for (; i < 80; ++i) - W2[i] = rotl1(W2[i - 3] ^ W2[i - 8] ^ W2[i - 14] ^ W2[i - 16]); - for (var j = 0; j < 80; ++j) { - var s = ~~(j / 20); - var t = rotl5(a) + ft(s, b, c, d) + e + W2[j] + K2[s] | 0; - e = d; - d = c; - c = rotl30(b); - b = a; - a = t; - } - this._a = a + this._a | 0; - this._b = b + this._b | 0; - this._c = c + this._c | 0; - this._d = d + this._d | 0; - this._e = e + this._e | 0; - }; - Sha1.prototype._hash = function() { - var H = Buffer2.allocUnsafe(20); - H.writeInt32BE(this._a | 0, 0); - H.writeInt32BE(this._b | 0, 4); - H.writeInt32BE(this._c | 0, 8); - H.writeInt32BE(this._d | 0, 12); - H.writeInt32BE(this._e | 0, 16); - return H; - }; - module2.exports = Sha1; - } -}); - -// node_modules/.pnpm/crc-32@1.2.2/node_modules/crc-32/crc32.js -var require_crc32 = __commonJS({ - "node_modules/.pnpm/crc-32@1.2.2/node_modules/crc-32/crc32.js"(exports2) { - init_polyfill_buffer(); - var CRC32; - (function(factory) { - if (typeof DO_NOT_EXPORT_CRC === "undefined") { - if ("object" === typeof exports2) { - factory(exports2); - } else if ("function" === typeof define && define.amd) { - define(function() { - var module3 = {}; - factory(module3); - return module3; - }); - } else { - factory(CRC32 = {}); - } - } else { - factory(CRC32 = {}); - } - })(function(CRC322) { - CRC322.version = "1.2.2"; - function signed_crc_table() { - var c = 0, table = new Array(256); - for (var n = 0; n != 256; ++n) { - c = n; - c = c & 1 ? -306674912 ^ c >>> 1 : c >>> 1; - c = c & 1 ? -306674912 ^ c >>> 1 : c >>> 1; - c = c & 1 ? -306674912 ^ c >>> 1 : c >>> 1; - c = c & 1 ? -306674912 ^ c >>> 1 : c >>> 1; - c = c & 1 ? -306674912 ^ c >>> 1 : c >>> 1; - c = c & 1 ? -306674912 ^ c >>> 1 : c >>> 1; - c = c & 1 ? -306674912 ^ c >>> 1 : c >>> 1; - c = c & 1 ? -306674912 ^ c >>> 1 : c >>> 1; - table[n] = c; - } - return typeof Int32Array !== "undefined" ? new Int32Array(table) : table; - } - var T0 = signed_crc_table(); - function slice_by_16_tables(T) { - var c = 0, v = 0, n = 0, table = typeof Int32Array !== "undefined" ? new Int32Array(4096) : new Array(4096); - for (n = 0; n != 256; ++n) - table[n] = T[n]; - for (n = 0; n != 256; ++n) { - v = T[n]; - for (c = 256 + n; c < 4096; c += 256) - v = table[c] = v >>> 8 ^ T[v & 255]; - } - var out = []; - for (n = 1; n != 16; ++n) - out[n - 1] = typeof Int32Array !== "undefined" ? table.subarray(n * 256, n * 256 + 256) : table.slice(n * 256, n * 256 + 256); - return out; - } - var TT = slice_by_16_tables(T0); - var T1 = TT[0], T2 = TT[1], T3 = TT[2], T4 = TT[3], T5 = TT[4]; - var T6 = TT[5], T7 = TT[6], T8 = TT[7], T9 = TT[8], Ta = TT[9]; - var Tb = TT[10], Tc = TT[11], Td = TT[12], Te = TT[13], Tf = TT[14]; - function crc32_bstr(bstr, seed) { - var C = seed ^ -1; - for (var i = 0, L = bstr.length; i < L; ) - C = C >>> 8 ^ T0[(C ^ bstr.charCodeAt(i++)) & 255]; - return ~C; - } - function crc32_buf(B, seed) { - var C = seed ^ -1, L = B.length - 15, i = 0; - for (; i < L; ) - C = Tf[B[i++] ^ C & 255] ^ Te[B[i++] ^ C >> 8 & 255] ^ Td[B[i++] ^ C >> 16 & 255] ^ Tc[B[i++] ^ C >>> 24] ^ Tb[B[i++]] ^ Ta[B[i++]] ^ T9[B[i++]] ^ T8[B[i++]] ^ T7[B[i++]] ^ T6[B[i++]] ^ T5[B[i++]] ^ T4[B[i++]] ^ T3[B[i++]] ^ T2[B[i++]] ^ T1[B[i++]] ^ T0[B[i++]]; - L += 15; - while (i < L) - C = C >>> 8 ^ T0[(C ^ B[i++]) & 255]; - return ~C; - } - function crc32_str(str, seed) { - var C = seed ^ -1; - for (var i = 0, L = str.length, c = 0, d = 0; i < L; ) { - c = str.charCodeAt(i++); - if (c < 128) { - C = C >>> 8 ^ T0[(C ^ c) & 255]; - } else if (c < 2048) { - C = C >>> 8 ^ T0[(C ^ (192 | c >> 6 & 31)) & 255]; - C = C >>> 8 ^ T0[(C ^ (128 | c & 63)) & 255]; - } else if (c >= 55296 && c < 57344) { - c = (c & 1023) + 64; - d = str.charCodeAt(i++) & 1023; - C = C >>> 8 ^ T0[(C ^ (240 | c >> 8 & 7)) & 255]; - C = C >>> 8 ^ T0[(C ^ (128 | c >> 2 & 63)) & 255]; - C = C >>> 8 ^ T0[(C ^ (128 | d >> 6 & 15 | (c & 3) << 4)) & 255]; - C = C >>> 8 ^ T0[(C ^ (128 | d & 63)) & 255]; - } else { - C = C >>> 8 ^ T0[(C ^ (224 | c >> 12 & 15)) & 255]; - C = C >>> 8 ^ T0[(C ^ (128 | c >> 6 & 63)) & 255]; - C = C >>> 8 ^ T0[(C ^ (128 | c & 63)) & 255]; - } - } - return ~C; - } - CRC322.table = T0; - CRC322.bstr = crc32_bstr; - CRC322.buf = crc32_buf; - CRC322.str = crc32_str; - }); - } -}); - -// node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/utils/common.js -var require_common = __commonJS({ - "node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/utils/common.js"(exports2) { - "use strict"; - init_polyfill_buffer(); - var TYPED_OK = typeof Uint8Array !== "undefined" && typeof Uint16Array !== "undefined" && typeof Int32Array !== "undefined"; - function _has(obj, key2) { - return Object.prototype.hasOwnProperty.call(obj, key2); - } - exports2.assign = function(obj) { - var sources = Array.prototype.slice.call(arguments, 1); - while (sources.length) { - var source = sources.shift(); - if (!source) { - continue; - } - if (typeof source !== "object") { - throw new TypeError(source + "must be non-object"); - } - for (var p in source) { - if (_has(source, p)) { - obj[p] = source[p]; - } - } - } - return obj; - }; - exports2.shrinkBuf = function(buf, size) { - if (buf.length === size) { - return buf; - } - if (buf.subarray) { - return buf.subarray(0, size); - } - buf.length = size; - return buf; - }; - var fnTyped = { - arraySet: function(dest, src, src_offs, len, dest_offs) { - if (src.subarray && dest.subarray) { - dest.set(src.subarray(src_offs, src_offs + len), dest_offs); - return; - } - for (var i = 0; i < len; i++) { - dest[dest_offs + i] = src[src_offs + i]; - } - }, - // Join array of chunks to single array. - flattenChunks: function(chunks) { - var i, l, len, pos, chunk, result; - len = 0; - for (i = 0, l = chunks.length; i < l; i++) { - len += chunks[i].length; - } - result = new Uint8Array(len); - pos = 0; - for (i = 0, l = chunks.length; i < l; i++) { - chunk = chunks[i]; - result.set(chunk, pos); - pos += chunk.length; - } - return result; - } - }; - var fnUntyped = { - arraySet: function(dest, src, src_offs, len, dest_offs) { - for (var i = 0; i < len; i++) { - dest[dest_offs + i] = src[src_offs + i]; - } - }, - // Join array of chunks to single array. - flattenChunks: function(chunks) { - return [].concat.apply([], chunks); - } - }; - exports2.setTyped = function(on) { - if (on) { - exports2.Buf8 = Uint8Array; - exports2.Buf16 = Uint16Array; - exports2.Buf32 = Int32Array; - exports2.assign(exports2, fnTyped); - } else { - exports2.Buf8 = Array; - exports2.Buf16 = Array; - exports2.Buf32 = Array; - exports2.assign(exports2, fnUntyped); - } - }; - exports2.setTyped(TYPED_OK); - } -}); - -// node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/trees.js -var require_trees = __commonJS({ - "node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/trees.js"(exports2) { - "use strict"; - init_polyfill_buffer(); - var utils = require_common(); - var Z_FIXED = 4; - var Z_BINARY = 0; - var Z_TEXT = 1; - var Z_UNKNOWN = 2; - function zero(buf) { - var len = buf.length; - while (--len >= 0) { - buf[len] = 0; - } - } - var STORED_BLOCK = 0; - var STATIC_TREES = 1; - var DYN_TREES = 2; - var MIN_MATCH = 3; - var MAX_MATCH = 258; - var LENGTH_CODES = 29; - var LITERALS = 256; - var L_CODES = LITERALS + 1 + LENGTH_CODES; - var D_CODES = 30; - var BL_CODES = 19; - var HEAP_SIZE = 2 * L_CODES + 1; - var MAX_BITS = 15; - var Buf_size = 16; - var MAX_BL_BITS = 7; - var END_BLOCK = 256; - var REP_3_6 = 16; - var REPZ_3_10 = 17; - var REPZ_11_138 = 18; - var extra_lbits = ( - /* extra bits for each length code */ - [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0] - ); - var extra_dbits = ( - /* extra bits for each distance code */ - [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13] - ); - var extra_blbits = ( - /* extra bits for each bit length code */ - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7] - ); - var bl_order = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]; - var DIST_CODE_LEN = 512; - var static_ltree = new Array((L_CODES + 2) * 2); - zero(static_ltree); - var static_dtree = new Array(D_CODES * 2); - zero(static_dtree); - var _dist_code = new Array(DIST_CODE_LEN); - zero(_dist_code); - var _length_code = new Array(MAX_MATCH - MIN_MATCH + 1); - zero(_length_code); - var base_length = new Array(LENGTH_CODES); - zero(base_length); - var base_dist = new Array(D_CODES); - zero(base_dist); - function StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) { - this.static_tree = static_tree; - this.extra_bits = extra_bits; - this.extra_base = extra_base; - this.elems = elems; - this.max_length = max_length; - this.has_stree = static_tree && static_tree.length; - } - var static_l_desc; - var static_d_desc; - var static_bl_desc; - function TreeDesc(dyn_tree, stat_desc) { - this.dyn_tree = dyn_tree; - this.max_code = 0; - this.stat_desc = stat_desc; - } - function d_code(dist) { - return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)]; - } - function put_short(s, w) { - s.pending_buf[s.pending++] = w & 255; - s.pending_buf[s.pending++] = w >>> 8 & 255; - } - function send_bits(s, value, length) { - if (s.bi_valid > Buf_size - length) { - s.bi_buf |= value << s.bi_valid & 65535; - put_short(s, s.bi_buf); - s.bi_buf = value >> Buf_size - s.bi_valid; - s.bi_valid += length - Buf_size; - } else { - s.bi_buf |= value << s.bi_valid & 65535; - s.bi_valid += length; - } - } - function send_code(s, c, tree) { - send_bits( - s, - tree[c * 2], - tree[c * 2 + 1] - /*.Len*/ - ); - } - function bi_reverse(code, len) { - var res = 0; - do { - res |= code & 1; - code >>>= 1; - res <<= 1; - } while (--len > 0); - return res >>> 1; - } - function bi_flush(s) { - if (s.bi_valid === 16) { - put_short(s, s.bi_buf); - s.bi_buf = 0; - s.bi_valid = 0; - } else if (s.bi_valid >= 8) { - s.pending_buf[s.pending++] = s.bi_buf & 255; - s.bi_buf >>= 8; - s.bi_valid -= 8; - } - } - function gen_bitlen(s, desc) { - var tree = desc.dyn_tree; - var max_code = desc.max_code; - var stree = desc.stat_desc.static_tree; - var has_stree = desc.stat_desc.has_stree; - var extra = desc.stat_desc.extra_bits; - var base = desc.stat_desc.extra_base; - var max_length = desc.stat_desc.max_length; - var h; - var n, m; - var bits; - var xbits; - var f; - var overflow = 0; - for (bits = 0; bits <= MAX_BITS; bits++) { - s.bl_count[bits] = 0; - } - tree[s.heap[s.heap_max] * 2 + 1] = 0; - for (h = s.heap_max + 1; h < HEAP_SIZE; h++) { - n = s.heap[h]; - bits = tree[tree[n * 2 + 1] * 2 + 1] + 1; - if (bits > max_length) { - bits = max_length; - overflow++; - } - tree[n * 2 + 1] = bits; - if (n > max_code) { - continue; - } - s.bl_count[bits]++; - xbits = 0; - if (n >= base) { - xbits = extra[n - base]; - } - f = tree[n * 2]; - s.opt_len += f * (bits + xbits); - if (has_stree) { - s.static_len += f * (stree[n * 2 + 1] + xbits); - } - } - if (overflow === 0) { - return; - } - do { - bits = max_length - 1; - while (s.bl_count[bits] === 0) { - bits--; - } - s.bl_count[bits]--; - s.bl_count[bits + 1] += 2; - s.bl_count[max_length]--; - overflow -= 2; - } while (overflow > 0); - for (bits = max_length; bits !== 0; bits--) { - n = s.bl_count[bits]; - while (n !== 0) { - m = s.heap[--h]; - if (m > max_code) { - continue; - } - if (tree[m * 2 + 1] !== bits) { - s.opt_len += (bits - tree[m * 2 + 1]) * tree[m * 2]; - tree[m * 2 + 1] = bits; - } - n--; - } - } - } - function gen_codes(tree, max_code, bl_count) { - var next_code = new Array(MAX_BITS + 1); - var code = 0; - var bits; - var n; - for (bits = 1; bits <= MAX_BITS; bits++) { - next_code[bits] = code = code + bl_count[bits - 1] << 1; - } - for (n = 0; n <= max_code; n++) { - var len = tree[n * 2 + 1]; - if (len === 0) { - continue; - } - tree[n * 2] = bi_reverse(next_code[len]++, len); - } - } - function tr_static_init() { - var n; - var bits; - var length; - var code; - var dist; - var bl_count = new Array(MAX_BITS + 1); - length = 0; - for (code = 0; code < LENGTH_CODES - 1; code++) { - base_length[code] = length; - for (n = 0; n < 1 << extra_lbits[code]; n++) { - _length_code[length++] = code; - } - } - _length_code[length - 1] = code; - dist = 0; - for (code = 0; code < 16; code++) { - base_dist[code] = dist; - for (n = 0; n < 1 << extra_dbits[code]; n++) { - _dist_code[dist++] = code; - } - } - dist >>= 7; - for (; code < D_CODES; code++) { - base_dist[code] = dist << 7; - for (n = 0; n < 1 << extra_dbits[code] - 7; n++) { - _dist_code[256 + dist++] = code; - } - } - for (bits = 0; bits <= MAX_BITS; bits++) { - bl_count[bits] = 0; - } - n = 0; - while (n <= 143) { - static_ltree[n * 2 + 1] = 8; - n++; - bl_count[8]++; - } - while (n <= 255) { - static_ltree[n * 2 + 1] = 9; - n++; - bl_count[9]++; - } - while (n <= 279) { - static_ltree[n * 2 + 1] = 7; - n++; - bl_count[7]++; - } - while (n <= 287) { - static_ltree[n * 2 + 1] = 8; - n++; - bl_count[8]++; - } - gen_codes(static_ltree, L_CODES + 1, bl_count); - for (n = 0; n < D_CODES; n++) { - static_dtree[n * 2 + 1] = 5; - static_dtree[n * 2] = bi_reverse(n, 5); - } - static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS); - static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES, MAX_BITS); - static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES, MAX_BL_BITS); - } - function init_block(s) { - var n; - for (n = 0; n < L_CODES; n++) { - s.dyn_ltree[n * 2] = 0; - } - for (n = 0; n < D_CODES; n++) { - s.dyn_dtree[n * 2] = 0; - } - for (n = 0; n < BL_CODES; n++) { - s.bl_tree[n * 2] = 0; - } - s.dyn_ltree[END_BLOCK * 2] = 1; - s.opt_len = s.static_len = 0; - s.last_lit = s.matches = 0; - } - function bi_windup(s) { - if (s.bi_valid > 8) { - put_short(s, s.bi_buf); - } else if (s.bi_valid > 0) { - s.pending_buf[s.pending++] = s.bi_buf; - } - s.bi_buf = 0; - s.bi_valid = 0; - } - function copy_block(s, buf, len, header) { - bi_windup(s); - if (header) { - put_short(s, len); - put_short(s, ~len); - } - utils.arraySet(s.pending_buf, s.window, buf, len, s.pending); - s.pending += len; - } - function smaller(tree, n, m, depth) { - var _n2 = n * 2; - var _m2 = m * 2; - return tree[_n2] < tree[_m2] || tree[_n2] === tree[_m2] && depth[n] <= depth[m]; - } - function pqdownheap(s, tree, k) { - var v = s.heap[k]; - var j = k << 1; - while (j <= s.heap_len) { - if (j < s.heap_len && smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) { - j++; - } - if (smaller(tree, v, s.heap[j], s.depth)) { - break; - } - s.heap[k] = s.heap[j]; - k = j; - j <<= 1; - } - s.heap[k] = v; - } - function compress_block(s, ltree, dtree) { - var dist; - var lc; - var lx = 0; - var code; - var extra; - if (s.last_lit !== 0) { - do { - dist = s.pending_buf[s.d_buf + lx * 2] << 8 | s.pending_buf[s.d_buf + lx * 2 + 1]; - lc = s.pending_buf[s.l_buf + lx]; - lx++; - if (dist === 0) { - send_code(s, lc, ltree); - } else { - code = _length_code[lc]; - send_code(s, code + LITERALS + 1, ltree); - extra = extra_lbits[code]; - if (extra !== 0) { - lc -= base_length[code]; - send_bits(s, lc, extra); - } - dist--; - code = d_code(dist); - send_code(s, code, dtree); - extra = extra_dbits[code]; - if (extra !== 0) { - dist -= base_dist[code]; - send_bits(s, dist, extra); - } - } - } while (lx < s.last_lit); - } - send_code(s, END_BLOCK, ltree); - } - function build_tree(s, desc) { - var tree = desc.dyn_tree; - var stree = desc.stat_desc.static_tree; - var has_stree = desc.stat_desc.has_stree; - var elems = desc.stat_desc.elems; - var n, m; - var max_code = -1; - var node; - s.heap_len = 0; - s.heap_max = HEAP_SIZE; - for (n = 0; n < elems; n++) { - if (tree[n * 2] !== 0) { - s.heap[++s.heap_len] = max_code = n; - s.depth[n] = 0; - } else { - tree[n * 2 + 1] = 0; - } - } - while (s.heap_len < 2) { - node = s.heap[++s.heap_len] = max_code < 2 ? ++max_code : 0; - tree[node * 2] = 1; - s.depth[node] = 0; - s.opt_len--; - if (has_stree) { - s.static_len -= stree[node * 2 + 1]; - } - } - desc.max_code = max_code; - for (n = s.heap_len >> 1; n >= 1; n--) { - pqdownheap(s, tree, n); - } - node = elems; - do { - n = s.heap[ - 1 - /*SMALLEST*/ - ]; - s.heap[ - 1 - /*SMALLEST*/ - ] = s.heap[s.heap_len--]; - pqdownheap( - s, - tree, - 1 - /*SMALLEST*/ - ); - m = s.heap[ - 1 - /*SMALLEST*/ - ]; - s.heap[--s.heap_max] = n; - s.heap[--s.heap_max] = m; - tree[node * 2] = tree[n * 2] + tree[m * 2]; - s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1; - tree[n * 2 + 1] = tree[m * 2 + 1] = node; - s.heap[ - 1 - /*SMALLEST*/ - ] = node++; - pqdownheap( - s, - tree, - 1 - /*SMALLEST*/ - ); - } while (s.heap_len >= 2); - s.heap[--s.heap_max] = s.heap[ - 1 - /*SMALLEST*/ - ]; - gen_bitlen(s, desc); - gen_codes(tree, max_code, s.bl_count); - } - function scan_tree(s, tree, max_code) { - var n; - var prevlen = -1; - var curlen; - var nextlen = tree[0 * 2 + 1]; - var count = 0; - var max_count = 7; - var min_count = 4; - if (nextlen === 0) { - max_count = 138; - min_count = 3; - } - tree[(max_code + 1) * 2 + 1] = 65535; - for (n = 0; n <= max_code; n++) { - curlen = nextlen; - nextlen = tree[(n + 1) * 2 + 1]; - if (++count < max_count && curlen === nextlen) { - continue; - } else if (count < min_count) { - s.bl_tree[curlen * 2] += count; - } else if (curlen !== 0) { - if (curlen !== prevlen) { - s.bl_tree[curlen * 2]++; - } - s.bl_tree[REP_3_6 * 2]++; - } else if (count <= 10) { - s.bl_tree[REPZ_3_10 * 2]++; - } else { - s.bl_tree[REPZ_11_138 * 2]++; - } - count = 0; - prevlen = curlen; - if (nextlen === 0) { - max_count = 138; - min_count = 3; - } else if (curlen === nextlen) { - max_count = 6; - min_count = 3; - } else { - max_count = 7; - min_count = 4; - } - } - } - function send_tree(s, tree, max_code) { - var n; - var prevlen = -1; - var curlen; - var nextlen = tree[0 * 2 + 1]; - var count = 0; - var max_count = 7; - var min_count = 4; - if (nextlen === 0) { - max_count = 138; - min_count = 3; - } - for (n = 0; n <= max_code; n++) { - curlen = nextlen; - nextlen = tree[(n + 1) * 2 + 1]; - if (++count < max_count && curlen === nextlen) { - continue; - } else if (count < min_count) { - do { - send_code(s, curlen, s.bl_tree); - } while (--count !== 0); - } else if (curlen !== 0) { - if (curlen !== prevlen) { - send_code(s, curlen, s.bl_tree); - count--; - } - send_code(s, REP_3_6, s.bl_tree); - send_bits(s, count - 3, 2); - } else if (count <= 10) { - send_code(s, REPZ_3_10, s.bl_tree); - send_bits(s, count - 3, 3); - } else { - send_code(s, REPZ_11_138, s.bl_tree); - send_bits(s, count - 11, 7); - } - count = 0; - prevlen = curlen; - if (nextlen === 0) { - max_count = 138; - min_count = 3; - } else if (curlen === nextlen) { - max_count = 6; - min_count = 3; - } else { - max_count = 7; - min_count = 4; - } - } - } - function build_bl_tree(s) { - var max_blindex; - scan_tree(s, s.dyn_ltree, s.l_desc.max_code); - scan_tree(s, s.dyn_dtree, s.d_desc.max_code); - build_tree(s, s.bl_desc); - for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) { - if (s.bl_tree[bl_order[max_blindex] * 2 + 1] !== 0) { - break; - } - } - s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4; - return max_blindex; - } - function send_all_trees(s, lcodes, dcodes, blcodes) { - var rank; - send_bits(s, lcodes - 257, 5); - send_bits(s, dcodes - 1, 5); - send_bits(s, blcodes - 4, 4); - for (rank = 0; rank < blcodes; rank++) { - send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1], 3); - } - send_tree(s, s.dyn_ltree, lcodes - 1); - send_tree(s, s.dyn_dtree, dcodes - 1); - } - function detect_data_type(s) { - var black_mask = 4093624447; - var n; - for (n = 0; n <= 31; n++, black_mask >>>= 1) { - if (black_mask & 1 && s.dyn_ltree[n * 2] !== 0) { - return Z_BINARY; - } - } - if (s.dyn_ltree[9 * 2] !== 0 || s.dyn_ltree[10 * 2] !== 0 || s.dyn_ltree[13 * 2] !== 0) { - return Z_TEXT; - } - for (n = 32; n < LITERALS; n++) { - if (s.dyn_ltree[n * 2] !== 0) { - return Z_TEXT; - } - } - return Z_BINARY; - } - var static_init_done = false; - function _tr_init(s) { - if (!static_init_done) { - tr_static_init(); - static_init_done = true; - } - s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc); - s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc); - s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc); - s.bi_buf = 0; - s.bi_valid = 0; - init_block(s); - } - function _tr_stored_block(s, buf, stored_len, last2) { - send_bits(s, (STORED_BLOCK << 1) + (last2 ? 1 : 0), 3); - copy_block(s, buf, stored_len, true); - } - function _tr_align(s) { - send_bits(s, STATIC_TREES << 1, 3); - send_code(s, END_BLOCK, static_ltree); - bi_flush(s); - } - function _tr_flush_block(s, buf, stored_len, last2) { - var opt_lenb, static_lenb; - var max_blindex = 0; - if (s.level > 0) { - if (s.strm.data_type === Z_UNKNOWN) { - s.strm.data_type = detect_data_type(s); - } - build_tree(s, s.l_desc); - build_tree(s, s.d_desc); - max_blindex = build_bl_tree(s); - opt_lenb = s.opt_len + 3 + 7 >>> 3; - static_lenb = s.static_len + 3 + 7 >>> 3; - if (static_lenb <= opt_lenb) { - opt_lenb = static_lenb; - } - } else { - opt_lenb = static_lenb = stored_len + 5; - } - if (stored_len + 4 <= opt_lenb && buf !== -1) { - _tr_stored_block(s, buf, stored_len, last2); - } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) { - send_bits(s, (STATIC_TREES << 1) + (last2 ? 1 : 0), 3); - compress_block(s, static_ltree, static_dtree); - } else { - send_bits(s, (DYN_TREES << 1) + (last2 ? 1 : 0), 3); - send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1); - compress_block(s, s.dyn_ltree, s.dyn_dtree); - } - init_block(s); - if (last2) { - bi_windup(s); - } - } - function _tr_tally(s, dist, lc) { - s.pending_buf[s.d_buf + s.last_lit * 2] = dist >>> 8 & 255; - s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 255; - s.pending_buf[s.l_buf + s.last_lit] = lc & 255; - s.last_lit++; - if (dist === 0) { - s.dyn_ltree[lc * 2]++; - } else { - s.matches++; - dist--; - s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]++; - s.dyn_dtree[d_code(dist) * 2]++; - } - return s.last_lit === s.lit_bufsize - 1; - } - exports2._tr_init = _tr_init; - exports2._tr_stored_block = _tr_stored_block; - exports2._tr_flush_block = _tr_flush_block; - exports2._tr_tally = _tr_tally; - exports2._tr_align = _tr_align; - } -}); - -// node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/adler32.js -var require_adler32 = __commonJS({ - "node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/adler32.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - function adler32(adler, buf, len, pos) { - var s1 = adler & 65535 | 0, s2 = adler >>> 16 & 65535 | 0, n = 0; - while (len !== 0) { - n = len > 2e3 ? 2e3 : len; - len -= n; - do { - s1 = s1 + buf[pos++] | 0; - s2 = s2 + s1 | 0; - } while (--n); - s1 %= 65521; - s2 %= 65521; - } - return s1 | s2 << 16 | 0; - } - module2.exports = adler32; - } -}); - -// node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/crc32.js -var require_crc322 = __commonJS({ - "node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/crc32.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - function makeTable() { - var c, table = []; - for (var n = 0; n < 256; n++) { - c = n; - for (var k = 0; k < 8; k++) { - c = c & 1 ? 3988292384 ^ c >>> 1 : c >>> 1; - } - table[n] = c; - } - return table; - } - var crcTable = makeTable(); - function crc322(crc, buf, len, pos) { - var t = crcTable, end = pos + len; - crc ^= -1; - for (var i = pos; i < end; i++) { - crc = crc >>> 8 ^ t[(crc ^ buf[i]) & 255]; - } - return crc ^ -1; - } - module2.exports = crc322; - } -}); - -// node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/messages.js -var require_messages = __commonJS({ - "node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/messages.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - module2.exports = { - 2: "need dictionary", - /* Z_NEED_DICT 2 */ - 1: "stream end", - /* Z_STREAM_END 1 */ - 0: "", - /* Z_OK 0 */ - "-1": "file error", - /* Z_ERRNO (-1) */ - "-2": "stream error", - /* Z_STREAM_ERROR (-2) */ - "-3": "data error", - /* Z_DATA_ERROR (-3) */ - "-4": "insufficient memory", - /* Z_MEM_ERROR (-4) */ - "-5": "buffer error", - /* Z_BUF_ERROR (-5) */ - "-6": "incompatible version" - /* Z_VERSION_ERROR (-6) */ - }; - } -}); - -// node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/deflate.js -var require_deflate = __commonJS({ - "node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/deflate.js"(exports2) { - "use strict"; - init_polyfill_buffer(); - var utils = require_common(); - var trees = require_trees(); - var adler32 = require_adler32(); - var crc322 = require_crc322(); - var msg = require_messages(); - var Z_NO_FLUSH = 0; - var Z_PARTIAL_FLUSH = 1; - var Z_FULL_FLUSH = 3; - var Z_FINISH = 4; - var Z_BLOCK = 5; - var Z_OK = 0; - var Z_STREAM_END = 1; - var Z_STREAM_ERROR = -2; - var Z_DATA_ERROR = -3; - var Z_BUF_ERROR = -5; - var Z_DEFAULT_COMPRESSION = -1; - var Z_FILTERED = 1; - var Z_HUFFMAN_ONLY = 2; - var Z_RLE = 3; - var Z_FIXED = 4; - var Z_DEFAULT_STRATEGY = 0; - var Z_UNKNOWN = 2; - var Z_DEFLATED = 8; - var MAX_MEM_LEVEL = 9; - var MAX_WBITS = 15; - var DEF_MEM_LEVEL = 8; - var LENGTH_CODES = 29; - var LITERALS = 256; - var L_CODES = LITERALS + 1 + LENGTH_CODES; - var D_CODES = 30; - var BL_CODES = 19; - var HEAP_SIZE = 2 * L_CODES + 1; - var MAX_BITS = 15; - var MIN_MATCH = 3; - var MAX_MATCH = 258; - var MIN_LOOKAHEAD = MAX_MATCH + MIN_MATCH + 1; - var PRESET_DICT = 32; - var INIT_STATE = 42; - var EXTRA_STATE = 69; - var NAME_STATE = 73; - var COMMENT_STATE = 91; - var HCRC_STATE = 103; - var BUSY_STATE = 113; - var FINISH_STATE = 666; - var BS_NEED_MORE = 1; - var BS_BLOCK_DONE = 2; - var BS_FINISH_STARTED = 3; - var BS_FINISH_DONE = 4; - var OS_CODE = 3; - function err(strm, errorCode) { - strm.msg = msg[errorCode]; - return errorCode; - } - function rank(f) { - return (f << 1) - (f > 4 ? 9 : 0); - } - function zero(buf) { - var len = buf.length; - while (--len >= 0) { - buf[len] = 0; - } - } - function flush_pending(strm) { - var s = strm.state; - var len = s.pending; - if (len > strm.avail_out) { - len = strm.avail_out; - } - if (len === 0) { - return; - } - utils.arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out); - strm.next_out += len; - s.pending_out += len; - strm.total_out += len; - strm.avail_out -= len; - s.pending -= len; - if (s.pending === 0) { - s.pending_out = 0; - } - } - function flush_block_only(s, last2) { - trees._tr_flush_block(s, s.block_start >= 0 ? s.block_start : -1, s.strstart - s.block_start, last2); - s.block_start = s.strstart; - flush_pending(s.strm); - } - function put_byte(s, b) { - s.pending_buf[s.pending++] = b; - } - function putShortMSB(s, b) { - s.pending_buf[s.pending++] = b >>> 8 & 255; - s.pending_buf[s.pending++] = b & 255; - } - function read_buf(strm, buf, start, size) { - var len = strm.avail_in; - if (len > size) { - len = size; - } - if (len === 0) { - return 0; - } - strm.avail_in -= len; - utils.arraySet(buf, strm.input, strm.next_in, len, start); - if (strm.state.wrap === 1) { - strm.adler = adler32(strm.adler, buf, len, start); - } else if (strm.state.wrap === 2) { - strm.adler = crc322(strm.adler, buf, len, start); - } - strm.next_in += len; - strm.total_in += len; - return len; - } - function longest_match(s, cur_match) { - var chain_length = s.max_chain_length; - var scan = s.strstart; - var match; - var len; - var best_len = s.prev_length; - var nice_match = s.nice_match; - var limit = s.strstart > s.w_size - MIN_LOOKAHEAD ? s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0; - var _win = s.window; - var wmask = s.w_mask; - var prev = s.prev; - var strend = s.strstart + MAX_MATCH; - var scan_end1 = _win[scan + best_len - 1]; - var scan_end = _win[scan + best_len]; - if (s.prev_length >= s.good_match) { - chain_length >>= 2; - } - if (nice_match > s.lookahead) { - nice_match = s.lookahead; - } - do { - match = cur_match; - if (_win[match + best_len] !== scan_end || _win[match + best_len - 1] !== scan_end1 || _win[match] !== _win[scan] || _win[++match] !== _win[scan + 1]) { - continue; - } - scan += 2; - match++; - do { - } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && scan < strend); - len = MAX_MATCH - (strend - scan); - scan = strend - MAX_MATCH; - if (len > best_len) { - s.match_start = cur_match; - best_len = len; - if (len >= nice_match) { - break; - } - scan_end1 = _win[scan + best_len - 1]; - scan_end = _win[scan + best_len]; - } - } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0); - if (best_len <= s.lookahead) { - return best_len; - } - return s.lookahead; - } - function fill_window(s) { - var _w_size = s.w_size; - var p, n, m, more, str; - do { - more = s.window_size - s.lookahead - s.strstart; - if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) { - utils.arraySet(s.window, s.window, _w_size, _w_size, 0); - s.match_start -= _w_size; - s.strstart -= _w_size; - s.block_start -= _w_size; - n = s.hash_size; - p = n; - do { - m = s.head[--p]; - s.head[p] = m >= _w_size ? m - _w_size : 0; - } while (--n); - n = _w_size; - p = n; - do { - m = s.prev[--p]; - s.prev[p] = m >= _w_size ? m - _w_size : 0; - } while (--n); - more += _w_size; - } - if (s.strm.avail_in === 0) { - break; - } - n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more); - s.lookahead += n; - if (s.lookahead + s.insert >= MIN_MATCH) { - str = s.strstart - s.insert; - s.ins_h = s.window[str]; - s.ins_h = (s.ins_h << s.hash_shift ^ s.window[str + 1]) & s.hash_mask; - while (s.insert) { - s.ins_h = (s.ins_h << s.hash_shift ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask; - s.prev[str & s.w_mask] = s.head[s.ins_h]; - s.head[s.ins_h] = str; - str++; - s.insert--; - if (s.lookahead + s.insert < MIN_MATCH) { - break; - } - } - } - } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0); - } - function deflate_stored(s, flush2) { - var max_block_size = 65535; - if (max_block_size > s.pending_buf_size - 5) { - max_block_size = s.pending_buf_size - 5; - } - for (; ; ) { - if (s.lookahead <= 1) { - fill_window(s); - if (s.lookahead === 0 && flush2 === Z_NO_FLUSH) { - return BS_NEED_MORE; - } - if (s.lookahead === 0) { - break; - } - } - s.strstart += s.lookahead; - s.lookahead = 0; - var max_start = s.block_start + max_block_size; - if (s.strstart === 0 || s.strstart >= max_start) { - s.lookahead = s.strstart - max_start; - s.strstart = max_start; - flush_block_only(s, false); - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; - } - } - if (s.strstart - s.block_start >= s.w_size - MIN_LOOKAHEAD) { - flush_block_only(s, false); - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; - } - } - } - s.insert = 0; - if (flush2 === Z_FINISH) { - flush_block_only(s, true); - if (s.strm.avail_out === 0) { - return BS_FINISH_STARTED; - } - return BS_FINISH_DONE; - } - if (s.strstart > s.block_start) { - flush_block_only(s, false); - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; - } - } - return BS_NEED_MORE; - } - function deflate_fast(s, flush2) { - var hash_head; - var bflush; - for (; ; ) { - if (s.lookahead < MIN_LOOKAHEAD) { - fill_window(s); - if (s.lookahead < MIN_LOOKAHEAD && flush2 === Z_NO_FLUSH) { - return BS_NEED_MORE; - } - if (s.lookahead === 0) { - break; - } - } - hash_head = 0; - if (s.lookahead >= MIN_MATCH) { - s.ins_h = (s.ins_h << s.hash_shift ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask; - hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h]; - s.head[s.ins_h] = s.strstart; - } - if (hash_head !== 0 && s.strstart - hash_head <= s.w_size - MIN_LOOKAHEAD) { - s.match_length = longest_match(s, hash_head); - } - if (s.match_length >= MIN_MATCH) { - bflush = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH); - s.lookahead -= s.match_length; - if (s.match_length <= s.max_lazy_match && s.lookahead >= MIN_MATCH) { - s.match_length--; - do { - s.strstart++; - s.ins_h = (s.ins_h << s.hash_shift ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask; - hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h]; - s.head[s.ins_h] = s.strstart; - } while (--s.match_length !== 0); - s.strstart++; - } else { - s.strstart += s.match_length; - s.match_length = 0; - s.ins_h = s.window[s.strstart]; - s.ins_h = (s.ins_h << s.hash_shift ^ s.window[s.strstart + 1]) & s.hash_mask; - } - } else { - bflush = trees._tr_tally(s, 0, s.window[s.strstart]); - s.lookahead--; - s.strstart++; - } - if (bflush) { - flush_block_only(s, false); - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; - } - } - } - s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1; - if (flush2 === Z_FINISH) { - flush_block_only(s, true); - if (s.strm.avail_out === 0) { - return BS_FINISH_STARTED; - } - return BS_FINISH_DONE; - } - if (s.last_lit) { - flush_block_only(s, false); - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; - } - } - return BS_BLOCK_DONE; - } - function deflate_slow(s, flush2) { - var hash_head; - var bflush; - var max_insert; - for (; ; ) { - if (s.lookahead < MIN_LOOKAHEAD) { - fill_window(s); - if (s.lookahead < MIN_LOOKAHEAD && flush2 === Z_NO_FLUSH) { - return BS_NEED_MORE; - } - if (s.lookahead === 0) { - break; - } - } - hash_head = 0; - if (s.lookahead >= MIN_MATCH) { - s.ins_h = (s.ins_h << s.hash_shift ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask; - hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h]; - s.head[s.ins_h] = s.strstart; - } - s.prev_length = s.match_length; - s.prev_match = s.match_start; - s.match_length = MIN_MATCH - 1; - if (hash_head !== 0 && s.prev_length < s.max_lazy_match && s.strstart - hash_head <= s.w_size - MIN_LOOKAHEAD) { - s.match_length = longest_match(s, hash_head); - if (s.match_length <= 5 && (s.strategy === Z_FILTERED || s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096)) { - s.match_length = MIN_MATCH - 1; - } - } - if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) { - max_insert = s.strstart + s.lookahead - MIN_MATCH; - bflush = trees._tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH); - s.lookahead -= s.prev_length - 1; - s.prev_length -= 2; - do { - if (++s.strstart <= max_insert) { - s.ins_h = (s.ins_h << s.hash_shift ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask; - hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h]; - s.head[s.ins_h] = s.strstart; - } - } while (--s.prev_length !== 0); - s.match_available = 0; - s.match_length = MIN_MATCH - 1; - s.strstart++; - if (bflush) { - flush_block_only(s, false); - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; - } - } - } else if (s.match_available) { - bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]); - if (bflush) { - flush_block_only(s, false); - } - s.strstart++; - s.lookahead--; - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; - } - } else { - s.match_available = 1; - s.strstart++; - s.lookahead--; - } - } - if (s.match_available) { - bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]); - s.match_available = 0; - } - s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1; - if (flush2 === Z_FINISH) { - flush_block_only(s, true); - if (s.strm.avail_out === 0) { - return BS_FINISH_STARTED; - } - return BS_FINISH_DONE; - } - if (s.last_lit) { - flush_block_only(s, false); - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; - } - } - return BS_BLOCK_DONE; - } - function deflate_rle(s, flush2) { - var bflush; - var prev; - var scan, strend; - var _win = s.window; - for (; ; ) { - if (s.lookahead <= MAX_MATCH) { - fill_window(s); - if (s.lookahead <= MAX_MATCH && flush2 === Z_NO_FLUSH) { - return BS_NEED_MORE; - } - if (s.lookahead === 0) { - break; - } - } - s.match_length = 0; - if (s.lookahead >= MIN_MATCH && s.strstart > 0) { - scan = s.strstart - 1; - prev = _win[scan]; - if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) { - strend = s.strstart + MAX_MATCH; - do { - } while (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && scan < strend); - s.match_length = MAX_MATCH - (strend - scan); - if (s.match_length > s.lookahead) { - s.match_length = s.lookahead; - } - } - } - if (s.match_length >= MIN_MATCH) { - bflush = trees._tr_tally(s, 1, s.match_length - MIN_MATCH); - s.lookahead -= s.match_length; - s.strstart += s.match_length; - s.match_length = 0; - } else { - bflush = trees._tr_tally(s, 0, s.window[s.strstart]); - s.lookahead--; - s.strstart++; - } - if (bflush) { - flush_block_only(s, false); - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; - } - } - } - s.insert = 0; - if (flush2 === Z_FINISH) { - flush_block_only(s, true); - if (s.strm.avail_out === 0) { - return BS_FINISH_STARTED; - } - return BS_FINISH_DONE; - } - if (s.last_lit) { - flush_block_only(s, false); - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; - } - } - return BS_BLOCK_DONE; - } - function deflate_huff(s, flush2) { - var bflush; - for (; ; ) { - if (s.lookahead === 0) { - fill_window(s); - if (s.lookahead === 0) { - if (flush2 === Z_NO_FLUSH) { - return BS_NEED_MORE; - } - break; - } - } - s.match_length = 0; - bflush = trees._tr_tally(s, 0, s.window[s.strstart]); - s.lookahead--; - s.strstart++; - if (bflush) { - flush_block_only(s, false); - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; - } - } - } - s.insert = 0; - if (flush2 === Z_FINISH) { - flush_block_only(s, true); - if (s.strm.avail_out === 0) { - return BS_FINISH_STARTED; - } - return BS_FINISH_DONE; - } - if (s.last_lit) { - flush_block_only(s, false); - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; - } - } - return BS_BLOCK_DONE; - } - function Config(good_length, max_lazy, nice_length, max_chain, func) { - this.good_length = good_length; - this.max_lazy = max_lazy; - this.nice_length = nice_length; - this.max_chain = max_chain; - this.func = func; - } - var configuration_table; - configuration_table = [ - /* good lazy nice chain */ - new Config(0, 0, 0, 0, deflate_stored), - /* 0 store only */ - new Config(4, 4, 8, 4, deflate_fast), - /* 1 max speed, no lazy matches */ - new Config(4, 5, 16, 8, deflate_fast), - /* 2 */ - new Config(4, 6, 32, 32, deflate_fast), - /* 3 */ - new Config(4, 4, 16, 16, deflate_slow), - /* 4 lazy matches */ - new Config(8, 16, 32, 32, deflate_slow), - /* 5 */ - new Config(8, 16, 128, 128, deflate_slow), - /* 6 */ - new Config(8, 32, 128, 256, deflate_slow), - /* 7 */ - new Config(32, 128, 258, 1024, deflate_slow), - /* 8 */ - new Config(32, 258, 258, 4096, deflate_slow) - /* 9 max compression */ - ]; - function lm_init(s) { - s.window_size = 2 * s.w_size; - zero(s.head); - s.max_lazy_match = configuration_table[s.level].max_lazy; - s.good_match = configuration_table[s.level].good_length; - s.nice_match = configuration_table[s.level].nice_length; - s.max_chain_length = configuration_table[s.level].max_chain; - s.strstart = 0; - s.block_start = 0; - s.lookahead = 0; - s.insert = 0; - s.match_length = s.prev_length = MIN_MATCH - 1; - s.match_available = 0; - s.ins_h = 0; - } - function DeflateState() { - this.strm = null; - this.status = 0; - this.pending_buf = null; - this.pending_buf_size = 0; - this.pending_out = 0; - this.pending = 0; - this.wrap = 0; - this.gzhead = null; - this.gzindex = 0; - this.method = Z_DEFLATED; - this.last_flush = -1; - this.w_size = 0; - this.w_bits = 0; - this.w_mask = 0; - this.window = null; - this.window_size = 0; - this.prev = null; - this.head = null; - this.ins_h = 0; - this.hash_size = 0; - this.hash_bits = 0; - this.hash_mask = 0; - this.hash_shift = 0; - this.block_start = 0; - this.match_length = 0; - this.prev_match = 0; - this.match_available = 0; - this.strstart = 0; - this.match_start = 0; - this.lookahead = 0; - this.prev_length = 0; - this.max_chain_length = 0; - this.max_lazy_match = 0; - this.level = 0; - this.strategy = 0; - this.good_match = 0; - this.nice_match = 0; - this.dyn_ltree = new utils.Buf16(HEAP_SIZE * 2); - this.dyn_dtree = new utils.Buf16((2 * D_CODES + 1) * 2); - this.bl_tree = new utils.Buf16((2 * BL_CODES + 1) * 2); - zero(this.dyn_ltree); - zero(this.dyn_dtree); - zero(this.bl_tree); - this.l_desc = null; - this.d_desc = null; - this.bl_desc = null; - this.bl_count = new utils.Buf16(MAX_BITS + 1); - this.heap = new utils.Buf16(2 * L_CODES + 1); - zero(this.heap); - this.heap_len = 0; - this.heap_max = 0; - this.depth = new utils.Buf16(2 * L_CODES + 1); - zero(this.depth); - this.l_buf = 0; - this.lit_bufsize = 0; - this.last_lit = 0; - this.d_buf = 0; - this.opt_len = 0; - this.static_len = 0; - this.matches = 0; - this.insert = 0; - this.bi_buf = 0; - this.bi_valid = 0; - } - function deflateResetKeep(strm) { - var s; - if (!strm || !strm.state) { - return err(strm, Z_STREAM_ERROR); - } - strm.total_in = strm.total_out = 0; - strm.data_type = Z_UNKNOWN; - s = strm.state; - s.pending = 0; - s.pending_out = 0; - if (s.wrap < 0) { - s.wrap = -s.wrap; - } - s.status = s.wrap ? INIT_STATE : BUSY_STATE; - strm.adler = s.wrap === 2 ? 0 : 1; - s.last_flush = Z_NO_FLUSH; - trees._tr_init(s); - return Z_OK; - } - function deflateReset(strm) { - var ret = deflateResetKeep(strm); - if (ret === Z_OK) { - lm_init(strm.state); - } - return ret; - } - function deflateSetHeader(strm, head) { - if (!strm || !strm.state) { - return Z_STREAM_ERROR; - } - if (strm.state.wrap !== 2) { - return Z_STREAM_ERROR; - } - strm.state.gzhead = head; - return Z_OK; - } - function deflateInit2(strm, level, method2, windowBits, memLevel, strategy) { - if (!strm) { - return Z_STREAM_ERROR; - } - var wrap = 1; - if (level === Z_DEFAULT_COMPRESSION) { - level = 6; - } - if (windowBits < 0) { - wrap = 0; - windowBits = -windowBits; - } else if (windowBits > 15) { - wrap = 2; - windowBits -= 16; - } - if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method2 !== Z_DEFLATED || windowBits < 8 || windowBits > 15 || level < 0 || level > 9 || strategy < 0 || strategy > Z_FIXED) { - return err(strm, Z_STREAM_ERROR); - } - if (windowBits === 8) { - windowBits = 9; - } - var s = new DeflateState(); - strm.state = s; - s.strm = strm; - s.wrap = wrap; - s.gzhead = null; - s.w_bits = windowBits; - s.w_size = 1 << s.w_bits; - s.w_mask = s.w_size - 1; - s.hash_bits = memLevel + 7; - s.hash_size = 1 << s.hash_bits; - s.hash_mask = s.hash_size - 1; - s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH); - s.window = new utils.Buf8(s.w_size * 2); - s.head = new utils.Buf16(s.hash_size); - s.prev = new utils.Buf16(s.w_size); - s.lit_bufsize = 1 << memLevel + 6; - s.pending_buf_size = s.lit_bufsize * 4; - s.pending_buf = new utils.Buf8(s.pending_buf_size); - s.d_buf = 1 * s.lit_bufsize; - s.l_buf = (1 + 2) * s.lit_bufsize; - s.level = level; - s.strategy = strategy; - s.method = method2; - return deflateReset(strm); - } - function deflateInit(strm, level) { - return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY); - } - function deflate2(strm, flush2) { - var old_flush, s; - var beg, val; - if (!strm || !strm.state || flush2 > Z_BLOCK || flush2 < 0) { - return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR; - } - s = strm.state; - if (!strm.output || !strm.input && strm.avail_in !== 0 || s.status === FINISH_STATE && flush2 !== Z_FINISH) { - return err(strm, strm.avail_out === 0 ? Z_BUF_ERROR : Z_STREAM_ERROR); - } - s.strm = strm; - old_flush = s.last_flush; - s.last_flush = flush2; - if (s.status === INIT_STATE) { - if (s.wrap === 2) { - strm.adler = 0; - put_byte(s, 31); - put_byte(s, 139); - put_byte(s, 8); - if (!s.gzhead) { - put_byte(s, 0); - put_byte(s, 0); - put_byte(s, 0); - put_byte(s, 0); - put_byte(s, 0); - put_byte(s, s.level === 9 ? 2 : s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ? 4 : 0); - put_byte(s, OS_CODE); - s.status = BUSY_STATE; - } else { - put_byte( - s, - (s.gzhead.text ? 1 : 0) + (s.gzhead.hcrc ? 2 : 0) + (!s.gzhead.extra ? 0 : 4) + (!s.gzhead.name ? 0 : 8) + (!s.gzhead.comment ? 0 : 16) - ); - put_byte(s, s.gzhead.time & 255); - put_byte(s, s.gzhead.time >> 8 & 255); - put_byte(s, s.gzhead.time >> 16 & 255); - put_byte(s, s.gzhead.time >> 24 & 255); - put_byte(s, s.level === 9 ? 2 : s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ? 4 : 0); - put_byte(s, s.gzhead.os & 255); - if (s.gzhead.extra && s.gzhead.extra.length) { - put_byte(s, s.gzhead.extra.length & 255); - put_byte(s, s.gzhead.extra.length >> 8 & 255); - } - if (s.gzhead.hcrc) { - strm.adler = crc322(strm.adler, s.pending_buf, s.pending, 0); - } - s.gzindex = 0; - s.status = EXTRA_STATE; - } - } else { - var header = Z_DEFLATED + (s.w_bits - 8 << 4) << 8; - var level_flags = -1; - if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) { - level_flags = 0; - } else if (s.level < 6) { - level_flags = 1; - } else if (s.level === 6) { - level_flags = 2; - } else { - level_flags = 3; - } - header |= level_flags << 6; - if (s.strstart !== 0) { - header |= PRESET_DICT; - } - header += 31 - header % 31; - s.status = BUSY_STATE; - putShortMSB(s, header); - if (s.strstart !== 0) { - putShortMSB(s, strm.adler >>> 16); - putShortMSB(s, strm.adler & 65535); - } - strm.adler = 1; - } - } - if (s.status === EXTRA_STATE) { - if (s.gzhead.extra) { - beg = s.pending; - while (s.gzindex < (s.gzhead.extra.length & 65535)) { - if (s.pending === s.pending_buf_size) { - if (s.gzhead.hcrc && s.pending > beg) { - strm.adler = crc322(strm.adler, s.pending_buf, s.pending - beg, beg); - } - flush_pending(strm); - beg = s.pending; - if (s.pending === s.pending_buf_size) { - break; - } - } - put_byte(s, s.gzhead.extra[s.gzindex] & 255); - s.gzindex++; - } - if (s.gzhead.hcrc && s.pending > beg) { - strm.adler = crc322(strm.adler, s.pending_buf, s.pending - beg, beg); - } - if (s.gzindex === s.gzhead.extra.length) { - s.gzindex = 0; - s.status = NAME_STATE; - } - } else { - s.status = NAME_STATE; - } - } - if (s.status === NAME_STATE) { - if (s.gzhead.name) { - beg = s.pending; - do { - if (s.pending === s.pending_buf_size) { - if (s.gzhead.hcrc && s.pending > beg) { - strm.adler = crc322(strm.adler, s.pending_buf, s.pending - beg, beg); - } - flush_pending(strm); - beg = s.pending; - if (s.pending === s.pending_buf_size) { - val = 1; - break; - } - } - if (s.gzindex < s.gzhead.name.length) { - val = s.gzhead.name.charCodeAt(s.gzindex++) & 255; - } else { - val = 0; - } - put_byte(s, val); - } while (val !== 0); - if (s.gzhead.hcrc && s.pending > beg) { - strm.adler = crc322(strm.adler, s.pending_buf, s.pending - beg, beg); - } - if (val === 0) { - s.gzindex = 0; - s.status = COMMENT_STATE; - } - } else { - s.status = COMMENT_STATE; - } - } - if (s.status === COMMENT_STATE) { - if (s.gzhead.comment) { - beg = s.pending; - do { - if (s.pending === s.pending_buf_size) { - if (s.gzhead.hcrc && s.pending > beg) { - strm.adler = crc322(strm.adler, s.pending_buf, s.pending - beg, beg); - } - flush_pending(strm); - beg = s.pending; - if (s.pending === s.pending_buf_size) { - val = 1; - break; - } - } - if (s.gzindex < s.gzhead.comment.length) { - val = s.gzhead.comment.charCodeAt(s.gzindex++) & 255; - } else { - val = 0; - } - put_byte(s, val); - } while (val !== 0); - if (s.gzhead.hcrc && s.pending > beg) { - strm.adler = crc322(strm.adler, s.pending_buf, s.pending - beg, beg); - } - if (val === 0) { - s.status = HCRC_STATE; - } - } else { - s.status = HCRC_STATE; - } - } - if (s.status === HCRC_STATE) { - if (s.gzhead.hcrc) { - if (s.pending + 2 > s.pending_buf_size) { - flush_pending(strm); - } - if (s.pending + 2 <= s.pending_buf_size) { - put_byte(s, strm.adler & 255); - put_byte(s, strm.adler >> 8 & 255); - strm.adler = 0; - s.status = BUSY_STATE; - } - } else { - s.status = BUSY_STATE; - } - } - if (s.pending !== 0) { - flush_pending(strm); - if (strm.avail_out === 0) { - s.last_flush = -1; - return Z_OK; - } - } else if (strm.avail_in === 0 && rank(flush2) <= rank(old_flush) && flush2 !== Z_FINISH) { - return err(strm, Z_BUF_ERROR); - } - if (s.status === FINISH_STATE && strm.avail_in !== 0) { - return err(strm, Z_BUF_ERROR); - } - if (strm.avail_in !== 0 || s.lookahead !== 0 || flush2 !== Z_NO_FLUSH && s.status !== FINISH_STATE) { - var bstate = s.strategy === Z_HUFFMAN_ONLY ? deflate_huff(s, flush2) : s.strategy === Z_RLE ? deflate_rle(s, flush2) : configuration_table[s.level].func(s, flush2); - if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) { - s.status = FINISH_STATE; - } - if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) { - if (strm.avail_out === 0) { - s.last_flush = -1; - } - return Z_OK; - } - if (bstate === BS_BLOCK_DONE) { - if (flush2 === Z_PARTIAL_FLUSH) { - trees._tr_align(s); - } else if (flush2 !== Z_BLOCK) { - trees._tr_stored_block(s, 0, 0, false); - if (flush2 === Z_FULL_FLUSH) { - zero(s.head); - if (s.lookahead === 0) { - s.strstart = 0; - s.block_start = 0; - s.insert = 0; - } - } - } - flush_pending(strm); - if (strm.avail_out === 0) { - s.last_flush = -1; - return Z_OK; - } - } - } - if (flush2 !== Z_FINISH) { - return Z_OK; - } - if (s.wrap <= 0) { - return Z_STREAM_END; - } - if (s.wrap === 2) { - put_byte(s, strm.adler & 255); - put_byte(s, strm.adler >> 8 & 255); - put_byte(s, strm.adler >> 16 & 255); - put_byte(s, strm.adler >> 24 & 255); - put_byte(s, strm.total_in & 255); - put_byte(s, strm.total_in >> 8 & 255); - put_byte(s, strm.total_in >> 16 & 255); - put_byte(s, strm.total_in >> 24 & 255); - } else { - putShortMSB(s, strm.adler >>> 16); - putShortMSB(s, strm.adler & 65535); - } - flush_pending(strm); - if (s.wrap > 0) { - s.wrap = -s.wrap; - } - return s.pending !== 0 ? Z_OK : Z_STREAM_END; - } - function deflateEnd(strm) { - var status2; - if (!strm || !strm.state) { - return Z_STREAM_ERROR; - } - status2 = strm.state.status; - if (status2 !== INIT_STATE && status2 !== EXTRA_STATE && status2 !== NAME_STATE && status2 !== COMMENT_STATE && status2 !== HCRC_STATE && status2 !== BUSY_STATE && status2 !== FINISH_STATE) { - return err(strm, Z_STREAM_ERROR); - } - strm.state = null; - return status2 === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK; - } - function deflateSetDictionary(strm, dictionary) { - var dictLength = dictionary.length; - var s; - var str, n; - var wrap; - var avail; - var next; - var input; - var tmpDict; - if (!strm || !strm.state) { - return Z_STREAM_ERROR; - } - s = strm.state; - wrap = s.wrap; - if (wrap === 2 || wrap === 1 && s.status !== INIT_STATE || s.lookahead) { - return Z_STREAM_ERROR; - } - if (wrap === 1) { - strm.adler = adler32(strm.adler, dictionary, dictLength, 0); - } - s.wrap = 0; - if (dictLength >= s.w_size) { - if (wrap === 0) { - zero(s.head); - s.strstart = 0; - s.block_start = 0; - s.insert = 0; - } - tmpDict = new utils.Buf8(s.w_size); - utils.arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0); - dictionary = tmpDict; - dictLength = s.w_size; - } - avail = strm.avail_in; - next = strm.next_in; - input = strm.input; - strm.avail_in = dictLength; - strm.next_in = 0; - strm.input = dictionary; - fill_window(s); - while (s.lookahead >= MIN_MATCH) { - str = s.strstart; - n = s.lookahead - (MIN_MATCH - 1); - do { - s.ins_h = (s.ins_h << s.hash_shift ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask; - s.prev[str & s.w_mask] = s.head[s.ins_h]; - s.head[s.ins_h] = str; - str++; - } while (--n); - s.strstart = str; - s.lookahead = MIN_MATCH - 1; - fill_window(s); - } - s.strstart += s.lookahead; - s.block_start = s.strstart; - s.insert = s.lookahead; - s.lookahead = 0; - s.match_length = s.prev_length = MIN_MATCH - 1; - s.match_available = 0; - strm.next_in = next; - strm.input = input; - strm.avail_in = avail; - s.wrap = wrap; - return Z_OK; - } - exports2.deflateInit = deflateInit; - exports2.deflateInit2 = deflateInit2; - exports2.deflateReset = deflateReset; - exports2.deflateResetKeep = deflateResetKeep; - exports2.deflateSetHeader = deflateSetHeader; - exports2.deflate = deflate2; - exports2.deflateEnd = deflateEnd; - exports2.deflateSetDictionary = deflateSetDictionary; - exports2.deflateInfo = "pako deflate (from Nodeca project)"; - } -}); - -// node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/utils/strings.js -var require_strings = __commonJS({ - "node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/utils/strings.js"(exports2) { - "use strict"; - init_polyfill_buffer(); - var utils = require_common(); - var STR_APPLY_OK = true; - var STR_APPLY_UIA_OK = true; - try { - String.fromCharCode.apply(null, [0]); - } catch (__) { - STR_APPLY_OK = false; - } - try { - String.fromCharCode.apply(null, new Uint8Array(1)); - } catch (__) { - STR_APPLY_UIA_OK = false; - } - var _utf8len = new utils.Buf8(256); - for (q = 0; q < 256; q++) { - _utf8len[q] = q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1; - } - var q; - _utf8len[254] = _utf8len[254] = 1; - exports2.string2buf = function(str) { - var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0; - for (m_pos = 0; m_pos < str_len; m_pos++) { - c = str.charCodeAt(m_pos); - if ((c & 64512) === 55296 && m_pos + 1 < str_len) { - c2 = str.charCodeAt(m_pos + 1); - if ((c2 & 64512) === 56320) { - c = 65536 + (c - 55296 << 10) + (c2 - 56320); - m_pos++; - } - } - buf_len += c < 128 ? 1 : c < 2048 ? 2 : c < 65536 ? 3 : 4; - } - buf = new utils.Buf8(buf_len); - for (i = 0, m_pos = 0; i < buf_len; m_pos++) { - c = str.charCodeAt(m_pos); - if ((c & 64512) === 55296 && m_pos + 1 < str_len) { - c2 = str.charCodeAt(m_pos + 1); - if ((c2 & 64512) === 56320) { - c = 65536 + (c - 55296 << 10) + (c2 - 56320); - m_pos++; - } - } - if (c < 128) { - buf[i++] = c; - } else if (c < 2048) { - buf[i++] = 192 | c >>> 6; - buf[i++] = 128 | c & 63; - } else if (c < 65536) { - buf[i++] = 224 | c >>> 12; - buf[i++] = 128 | c >>> 6 & 63; - buf[i++] = 128 | c & 63; - } else { - buf[i++] = 240 | c >>> 18; - buf[i++] = 128 | c >>> 12 & 63; - buf[i++] = 128 | c >>> 6 & 63; - buf[i++] = 128 | c & 63; - } - } - return buf; - }; - function buf2binstring(buf, len) { - if (len < 65534) { - if (buf.subarray && STR_APPLY_UIA_OK || !buf.subarray && STR_APPLY_OK) { - return String.fromCharCode.apply(null, utils.shrinkBuf(buf, len)); - } - } - var result = ""; - for (var i = 0; i < len; i++) { - result += String.fromCharCode(buf[i]); - } - return result; - } - exports2.buf2binstring = function(buf) { - return buf2binstring(buf, buf.length); - }; - exports2.binstring2buf = function(str) { - var buf = new utils.Buf8(str.length); - for (var i = 0, len = buf.length; i < len; i++) { - buf[i] = str.charCodeAt(i); - } - return buf; - }; - exports2.buf2string = function(buf, max) { - var i, out, c, c_len; - var len = max || buf.length; - var utf16buf = new Array(len * 2); - for (out = 0, i = 0; i < len; ) { - c = buf[i++]; - if (c < 128) { - utf16buf[out++] = c; - continue; - } - c_len = _utf8len[c]; - if (c_len > 4) { - utf16buf[out++] = 65533; - i += c_len - 1; - continue; - } - c &= c_len === 2 ? 31 : c_len === 3 ? 15 : 7; - while (c_len > 1 && i < len) { - c = c << 6 | buf[i++] & 63; - c_len--; - } - if (c_len > 1) { - utf16buf[out++] = 65533; - continue; - } - if (c < 65536) { - utf16buf[out++] = c; - } else { - c -= 65536; - utf16buf[out++] = 55296 | c >> 10 & 1023; - utf16buf[out++] = 56320 | c & 1023; - } - } - return buf2binstring(utf16buf, out); - }; - exports2.utf8border = function(buf, max) { - var pos; - max = max || buf.length; - if (max > buf.length) { - max = buf.length; - } - pos = max - 1; - while (pos >= 0 && (buf[pos] & 192) === 128) { - pos--; - } - if (pos < 0) { - return max; - } - if (pos === 0) { - return max; - } - return pos + _utf8len[buf[pos]] > max ? pos : max; - }; - } -}); - -// node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/zstream.js -var require_zstream = __commonJS({ - "node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/zstream.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - function ZStream() { - this.input = null; - this.next_in = 0; - this.avail_in = 0; - this.total_in = 0; - this.output = null; - this.next_out = 0; - this.avail_out = 0; - this.total_out = 0; - this.msg = ""; - this.state = null; - this.data_type = 2; - this.adler = 0; - } - module2.exports = ZStream; - } -}); - -// node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/deflate.js -var require_deflate2 = __commonJS({ - "node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/deflate.js"(exports2) { - "use strict"; - init_polyfill_buffer(); - var zlib_deflate = require_deflate(); - var utils = require_common(); - var strings = require_strings(); - var msg = require_messages(); - var ZStream = require_zstream(); - var toString = Object.prototype.toString; - var Z_NO_FLUSH = 0; - var Z_FINISH = 4; - var Z_OK = 0; - var Z_STREAM_END = 1; - var Z_SYNC_FLUSH = 2; - var Z_DEFAULT_COMPRESSION = -1; - var Z_DEFAULT_STRATEGY = 0; - var Z_DEFLATED = 8; - function Deflate(options) { - if (!(this instanceof Deflate)) - return new Deflate(options); - this.options = utils.assign({ - level: Z_DEFAULT_COMPRESSION, - method: Z_DEFLATED, - chunkSize: 16384, - windowBits: 15, - memLevel: 8, - strategy: Z_DEFAULT_STRATEGY, - to: "" - }, options || {}); - var opt = this.options; - if (opt.raw && opt.windowBits > 0) { - opt.windowBits = -opt.windowBits; - } else if (opt.gzip && opt.windowBits > 0 && opt.windowBits < 16) { - opt.windowBits += 16; - } - this.err = 0; - this.msg = ""; - this.ended = false; - this.chunks = []; - this.strm = new ZStream(); - this.strm.avail_out = 0; - var status2 = zlib_deflate.deflateInit2( - this.strm, - opt.level, - opt.method, - opt.windowBits, - opt.memLevel, - opt.strategy - ); - if (status2 !== Z_OK) { - throw new Error(msg[status2]); - } - if (opt.header) { - zlib_deflate.deflateSetHeader(this.strm, opt.header); - } - if (opt.dictionary) { - var dict; - if (typeof opt.dictionary === "string") { - dict = strings.string2buf(opt.dictionary); - } else if (toString.call(opt.dictionary) === "[object ArrayBuffer]") { - dict = new Uint8Array(opt.dictionary); - } else { - dict = opt.dictionary; - } - status2 = zlib_deflate.deflateSetDictionary(this.strm, dict); - if (status2 !== Z_OK) { - throw new Error(msg[status2]); - } - this._dict_set = true; - } - } - Deflate.prototype.push = function(data, mode) { - var strm = this.strm; - var chunkSize = this.options.chunkSize; - var status2, _mode; - if (this.ended) { - return false; - } - _mode = mode === ~~mode ? mode : mode === true ? Z_FINISH : Z_NO_FLUSH; - if (typeof data === "string") { - strm.input = strings.string2buf(data); - } else if (toString.call(data) === "[object ArrayBuffer]") { - strm.input = new Uint8Array(data); - } else { - strm.input = data; - } - strm.next_in = 0; - strm.avail_in = strm.input.length; - do { - if (strm.avail_out === 0) { - strm.output = new utils.Buf8(chunkSize); - strm.next_out = 0; - strm.avail_out = chunkSize; - } - status2 = zlib_deflate.deflate(strm, _mode); - if (status2 !== Z_STREAM_END && status2 !== Z_OK) { - this.onEnd(status2); - this.ended = true; - return false; - } - if (strm.avail_out === 0 || strm.avail_in === 0 && (_mode === Z_FINISH || _mode === Z_SYNC_FLUSH)) { - if (this.options.to === "string") { - this.onData(strings.buf2binstring(utils.shrinkBuf(strm.output, strm.next_out))); - } else { - this.onData(utils.shrinkBuf(strm.output, strm.next_out)); - } - } - } while ((strm.avail_in > 0 || strm.avail_out === 0) && status2 !== Z_STREAM_END); - if (_mode === Z_FINISH) { - status2 = zlib_deflate.deflateEnd(this.strm); - this.onEnd(status2); - this.ended = true; - return status2 === Z_OK; - } - if (_mode === Z_SYNC_FLUSH) { - this.onEnd(Z_OK); - strm.avail_out = 0; - return true; - } - return true; - }; - Deflate.prototype.onData = function(chunk) { - this.chunks.push(chunk); - }; - Deflate.prototype.onEnd = function(status2) { - if (status2 === Z_OK) { - if (this.options.to === "string") { - this.result = this.chunks.join(""); - } else { - this.result = utils.flattenChunks(this.chunks); - } - } - this.chunks = []; - this.err = status2; - this.msg = this.strm.msg; - }; - function deflate2(input, options) { - var deflator = new Deflate(options); - deflator.push(input, true); - if (deflator.err) { - throw deflator.msg || msg[deflator.err]; - } - return deflator.result; - } - function deflateRaw(input, options) { - options = options || {}; - options.raw = true; - return deflate2(input, options); - } - function gzip(input, options) { - options = options || {}; - options.gzip = true; - return deflate2(input, options); - } - exports2.Deflate = Deflate; - exports2.deflate = deflate2; - exports2.deflateRaw = deflateRaw; - exports2.gzip = gzip; - } -}); - -// node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/inffast.js -var require_inffast = __commonJS({ - "node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/inffast.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var BAD = 30; - var TYPE = 12; - module2.exports = function inflate_fast(strm, start) { - var state; - var _in; - var last2; - var _out; - var beg; - var end; - var dmax; - var wsize; - var whave; - var wnext; - var s_window; - var hold; - var bits; - var lcode; - var dcode; - var lmask; - var dmask; - var here; - var op; - var len; - var dist; - var from; - var from_source; - var input, output; - state = strm.state; - _in = strm.next_in; - input = strm.input; - last2 = _in + (strm.avail_in - 5); - _out = strm.next_out; - output = strm.output; - beg = _out - (start - strm.avail_out); - end = _out + (strm.avail_out - 257); - dmax = state.dmax; - wsize = state.wsize; - whave = state.whave; - wnext = state.wnext; - s_window = state.window; - hold = state.hold; - bits = state.bits; - lcode = state.lencode; - dcode = state.distcode; - lmask = (1 << state.lenbits) - 1; - dmask = (1 << state.distbits) - 1; - top: - do { - if (bits < 15) { - hold += input[_in++] << bits; - bits += 8; - hold += input[_in++] << bits; - bits += 8; - } - here = lcode[hold & lmask]; - dolen: - for (; ; ) { - op = here >>> 24; - hold >>>= op; - bits -= op; - op = here >>> 16 & 255; - if (op === 0) { - output[_out++] = here & 65535; - } else if (op & 16) { - len = here & 65535; - op &= 15; - if (op) { - if (bits < op) { - hold += input[_in++] << bits; - bits += 8; - } - len += hold & (1 << op) - 1; - hold >>>= op; - bits -= op; - } - if (bits < 15) { - hold += input[_in++] << bits; - bits += 8; - hold += input[_in++] << bits; - bits += 8; - } - here = dcode[hold & dmask]; - dodist: - for (; ; ) { - op = here >>> 24; - hold >>>= op; - bits -= op; - op = here >>> 16 & 255; - if (op & 16) { - dist = here & 65535; - op &= 15; - if (bits < op) { - hold += input[_in++] << bits; - bits += 8; - if (bits < op) { - hold += input[_in++] << bits; - bits += 8; - } - } - dist += hold & (1 << op) - 1; - if (dist > dmax) { - strm.msg = "invalid distance too far back"; - state.mode = BAD; - break top; - } - hold >>>= op; - bits -= op; - op = _out - beg; - if (dist > op) { - op = dist - op; - if (op > whave) { - if (state.sane) { - strm.msg = "invalid distance too far back"; - state.mode = BAD; - break top; - } - } - from = 0; - from_source = s_window; - if (wnext === 0) { - from += wsize - op; - if (op < len) { - len -= op; - do { - output[_out++] = s_window[from++]; - } while (--op); - from = _out - dist; - from_source = output; - } - } else if (wnext < op) { - from += wsize + wnext - op; - op -= wnext; - if (op < len) { - len -= op; - do { - output[_out++] = s_window[from++]; - } while (--op); - from = 0; - if (wnext < len) { - op = wnext; - len -= op; - do { - output[_out++] = s_window[from++]; - } while (--op); - from = _out - dist; - from_source = output; - } - } - } else { - from += wnext - op; - if (op < len) { - len -= op; - do { - output[_out++] = s_window[from++]; - } while (--op); - from = _out - dist; - from_source = output; - } - } - while (len > 2) { - output[_out++] = from_source[from++]; - output[_out++] = from_source[from++]; - output[_out++] = from_source[from++]; - len -= 3; - } - if (len) { - output[_out++] = from_source[from++]; - if (len > 1) { - output[_out++] = from_source[from++]; - } - } - } else { - from = _out - dist; - do { - output[_out++] = output[from++]; - output[_out++] = output[from++]; - output[_out++] = output[from++]; - len -= 3; - } while (len > 2); - if (len) { - output[_out++] = output[from++]; - if (len > 1) { - output[_out++] = output[from++]; - } - } - } - } else if ((op & 64) === 0) { - here = dcode[(here & 65535) + (hold & (1 << op) - 1)]; - continue dodist; - } else { - strm.msg = "invalid distance code"; - state.mode = BAD; - break top; - } - break; - } - } else if ((op & 64) === 0) { - here = lcode[(here & 65535) + (hold & (1 << op) - 1)]; - continue dolen; - } else if (op & 32) { - state.mode = TYPE; - break top; - } else { - strm.msg = "invalid literal/length code"; - state.mode = BAD; - break top; - } - break; - } - } while (_in < last2 && _out < end); - len = bits >> 3; - _in -= len; - bits -= len << 3; - hold &= (1 << bits) - 1; - strm.next_in = _in; - strm.next_out = _out; - strm.avail_in = _in < last2 ? 5 + (last2 - _in) : 5 - (_in - last2); - strm.avail_out = _out < end ? 257 + (end - _out) : 257 - (_out - end); - state.hold = hold; - state.bits = bits; - return; - }; - } -}); - -// node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/inftrees.js -var require_inftrees = __commonJS({ - "node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/inftrees.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var utils = require_common(); - var MAXBITS = 15; - var ENOUGH_LENS = 852; - var ENOUGH_DISTS = 592; - var CODES = 0; - var LENS = 1; - var DISTS = 2; - var lbase = [ - /* Length codes 257..285 base */ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 13, - 15, - 17, - 19, - 23, - 27, - 31, - 35, - 43, - 51, - 59, - 67, - 83, - 99, - 115, - 131, - 163, - 195, - 227, - 258, - 0, - 0 - ]; - var lext = [ - /* Length codes 257..285 extra */ - 16, - 16, - 16, - 16, - 16, - 16, - 16, - 16, - 17, - 17, - 17, - 17, - 18, - 18, - 18, - 18, - 19, - 19, - 19, - 19, - 20, - 20, - 20, - 20, - 21, - 21, - 21, - 21, - 16, - 72, - 78 - ]; - var dbase = [ - /* Distance codes 0..29 base */ - 1, - 2, - 3, - 4, - 5, - 7, - 9, - 13, - 17, - 25, - 33, - 49, - 65, - 97, - 129, - 193, - 257, - 385, - 513, - 769, - 1025, - 1537, - 2049, - 3073, - 4097, - 6145, - 8193, - 12289, - 16385, - 24577, - 0, - 0 - ]; - var dext = [ - /* Distance codes 0..29 extra */ - 16, - 16, - 16, - 16, - 17, - 17, - 18, - 18, - 19, - 19, - 20, - 20, - 21, - 21, - 22, - 22, - 23, - 23, - 24, - 24, - 25, - 25, - 26, - 26, - 27, - 27, - 28, - 28, - 29, - 29, - 64, - 64 - ]; - module2.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts) { - var bits = opts.bits; - var len = 0; - var sym = 0; - var min = 0, max = 0; - var root2 = 0; - var curr = 0; - var drop = 0; - var left = 0; - var used = 0; - var huff = 0; - var incr; - var fill; - var low; - var mask; - var next; - var base = null; - var base_index = 0; - var end; - var count = new utils.Buf16(MAXBITS + 1); - var offs = new utils.Buf16(MAXBITS + 1); - var extra = null; - var extra_index = 0; - var here_bits, here_op, here_val; - for (len = 0; len <= MAXBITS; len++) { - count[len] = 0; - } - for (sym = 0; sym < codes; sym++) { - count[lens[lens_index + sym]]++; - } - root2 = bits; - for (max = MAXBITS; max >= 1; max--) { - if (count[max] !== 0) { - break; - } - } - if (root2 > max) { - root2 = max; - } - if (max === 0) { - table[table_index++] = 1 << 24 | 64 << 16 | 0; - table[table_index++] = 1 << 24 | 64 << 16 | 0; - opts.bits = 1; - return 0; - } - for (min = 1; min < max; min++) { - if (count[min] !== 0) { - break; - } - } - if (root2 < min) { - root2 = min; - } - left = 1; - for (len = 1; len <= MAXBITS; len++) { - left <<= 1; - left -= count[len]; - if (left < 0) { - return -1; - } - } - if (left > 0 && (type === CODES || max !== 1)) { - return -1; - } - offs[1] = 0; - for (len = 1; len < MAXBITS; len++) { - offs[len + 1] = offs[len] + count[len]; - } - for (sym = 0; sym < codes; sym++) { - if (lens[lens_index + sym] !== 0) { - work[offs[lens[lens_index + sym]]++] = sym; - } - } - if (type === CODES) { - base = extra = work; - end = 19; - } else if (type === LENS) { - base = lbase; - base_index -= 257; - extra = lext; - extra_index -= 257; - end = 256; - } else { - base = dbase; - extra = dext; - end = -1; - } - huff = 0; - sym = 0; - len = min; - next = table_index; - curr = root2; - drop = 0; - low = -1; - used = 1 << root2; - mask = used - 1; - if (type === LENS && used > ENOUGH_LENS || type === DISTS && used > ENOUGH_DISTS) { - return 1; - } - for (; ; ) { - here_bits = len - drop; - if (work[sym] < end) { - here_op = 0; - here_val = work[sym]; - } else if (work[sym] > end) { - here_op = extra[extra_index + work[sym]]; - here_val = base[base_index + work[sym]]; - } else { - here_op = 32 + 64; - here_val = 0; - } - incr = 1 << len - drop; - fill = 1 << curr; - min = fill; - do { - fill -= incr; - table[next + (huff >> drop) + fill] = here_bits << 24 | here_op << 16 | here_val | 0; - } while (fill !== 0); - incr = 1 << len - 1; - while (huff & incr) { - incr >>= 1; - } - if (incr !== 0) { - huff &= incr - 1; - huff += incr; - } else { - huff = 0; - } - sym++; - if (--count[len] === 0) { - if (len === max) { - break; - } - len = lens[lens_index + work[sym]]; - } - if (len > root2 && (huff & mask) !== low) { - if (drop === 0) { - drop = root2; - } - next += min; - curr = len - drop; - left = 1 << curr; - while (curr + drop < max) { - left -= count[curr + drop]; - if (left <= 0) { - break; - } - curr++; - left <<= 1; - } - used += 1 << curr; - if (type === LENS && used > ENOUGH_LENS || type === DISTS && used > ENOUGH_DISTS) { - return 1; - } - low = huff & mask; - table[low] = root2 << 24 | curr << 16 | next - table_index | 0; - } - } - if (huff !== 0) { - table[next + huff] = len - drop << 24 | 64 << 16 | 0; - } - opts.bits = root2; - return 0; - }; - } -}); - -// node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/inflate.js -var require_inflate = __commonJS({ - "node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/inflate.js"(exports2) { - "use strict"; - init_polyfill_buffer(); - var utils = require_common(); - var adler32 = require_adler32(); - var crc322 = require_crc322(); - var inflate_fast = require_inffast(); - var inflate_table = require_inftrees(); - var CODES = 0; - var LENS = 1; - var DISTS = 2; - var Z_FINISH = 4; - var Z_BLOCK = 5; - var Z_TREES = 6; - var Z_OK = 0; - var Z_STREAM_END = 1; - var Z_NEED_DICT = 2; - var Z_STREAM_ERROR = -2; - var Z_DATA_ERROR = -3; - var Z_MEM_ERROR = -4; - var Z_BUF_ERROR = -5; - var Z_DEFLATED = 8; - var HEAD = 1; - var FLAGS = 2; - var TIME = 3; - var OS = 4; - var EXLEN = 5; - var EXTRA2 = 6; - var NAME = 7; - var COMMENT = 8; - var HCRC = 9; - var DICTID = 10; - var DICT = 11; - var TYPE = 12; - var TYPEDO = 13; - var STORED = 14; - var COPY_ = 15; - var COPY = 16; - var TABLE = 17; - var LENLENS = 18; - var CODELENS = 19; - var LEN_ = 20; - var LEN = 21; - var LENEXT = 22; - var DIST = 23; - var DISTEXT = 24; - var MATCH = 25; - var LIT = 26; - var CHECK = 27; - var LENGTH = 28; - var DONE = 29; - var BAD = 30; - var MEM = 31; - var SYNC = 32; - var ENOUGH_LENS = 852; - var ENOUGH_DISTS = 592; - var MAX_WBITS = 15; - var DEF_WBITS = MAX_WBITS; - function zswap32(q) { - return (q >>> 24 & 255) + (q >>> 8 & 65280) + ((q & 65280) << 8) + ((q & 255) << 24); - } - function InflateState() { - this.mode = 0; - this.last = false; - this.wrap = 0; - this.havedict = false; - this.flags = 0; - this.dmax = 0; - this.check = 0; - this.total = 0; - this.head = null; - this.wbits = 0; - this.wsize = 0; - this.whave = 0; - this.wnext = 0; - this.window = null; - this.hold = 0; - this.bits = 0; - this.length = 0; - this.offset = 0; - this.extra = 0; - this.lencode = null; - this.distcode = null; - this.lenbits = 0; - this.distbits = 0; - this.ncode = 0; - this.nlen = 0; - this.ndist = 0; - this.have = 0; - this.next = null; - this.lens = new utils.Buf16(320); - this.work = new utils.Buf16(288); - this.lendyn = null; - this.distdyn = null; - this.sane = 0; - this.back = 0; - this.was = 0; - } - function inflateResetKeep(strm) { - var state; - if (!strm || !strm.state) { - return Z_STREAM_ERROR; - } - state = strm.state; - strm.total_in = strm.total_out = state.total = 0; - strm.msg = ""; - if (state.wrap) { - strm.adler = state.wrap & 1; - } - state.mode = HEAD; - state.last = 0; - state.havedict = 0; - state.dmax = 32768; - state.head = null; - state.hold = 0; - state.bits = 0; - state.lencode = state.lendyn = new utils.Buf32(ENOUGH_LENS); - state.distcode = state.distdyn = new utils.Buf32(ENOUGH_DISTS); - state.sane = 1; - state.back = -1; - return Z_OK; - } - function inflateReset(strm) { - var state; - if (!strm || !strm.state) { - return Z_STREAM_ERROR; - } - state = strm.state; - state.wsize = 0; - state.whave = 0; - state.wnext = 0; - return inflateResetKeep(strm); - } - function inflateReset2(strm, windowBits) { - var wrap; - var state; - if (!strm || !strm.state) { - return Z_STREAM_ERROR; - } - state = strm.state; - if (windowBits < 0) { - wrap = 0; - windowBits = -windowBits; - } else { - wrap = (windowBits >> 4) + 1; - if (windowBits < 48) { - windowBits &= 15; - } - } - if (windowBits && (windowBits < 8 || windowBits > 15)) { - return Z_STREAM_ERROR; - } - if (state.window !== null && state.wbits !== windowBits) { - state.window = null; - } - state.wrap = wrap; - state.wbits = windowBits; - return inflateReset(strm); - } - function inflateInit2(strm, windowBits) { - var ret; - var state; - if (!strm) { - return Z_STREAM_ERROR; - } - state = new InflateState(); - strm.state = state; - state.window = null; - ret = inflateReset2(strm, windowBits); - if (ret !== Z_OK) { - strm.state = null; - } - return ret; - } - function inflateInit(strm) { - return inflateInit2(strm, DEF_WBITS); - } - var virgin = true; - var lenfix; - var distfix; - function fixedtables(state) { - if (virgin) { - var sym; - lenfix = new utils.Buf32(512); - distfix = new utils.Buf32(32); - sym = 0; - while (sym < 144) { - state.lens[sym++] = 8; - } - while (sym < 256) { - state.lens[sym++] = 9; - } - while (sym < 280) { - state.lens[sym++] = 7; - } - while (sym < 288) { - state.lens[sym++] = 8; - } - inflate_table(LENS, state.lens, 0, 288, lenfix, 0, state.work, { bits: 9 }); - sym = 0; - while (sym < 32) { - state.lens[sym++] = 5; - } - inflate_table(DISTS, state.lens, 0, 32, distfix, 0, state.work, { bits: 5 }); - virgin = false; - } - state.lencode = lenfix; - state.lenbits = 9; - state.distcode = distfix; - state.distbits = 5; - } - function updatewindow(strm, src, end, copy2) { - var dist; - var state = strm.state; - if (state.window === null) { - state.wsize = 1 << state.wbits; - state.wnext = 0; - state.whave = 0; - state.window = new utils.Buf8(state.wsize); - } - if (copy2 >= state.wsize) { - utils.arraySet(state.window, src, end - state.wsize, state.wsize, 0); - state.wnext = 0; - state.whave = state.wsize; - } else { - dist = state.wsize - state.wnext; - if (dist > copy2) { - dist = copy2; - } - utils.arraySet(state.window, src, end - copy2, dist, state.wnext); - copy2 -= dist; - if (copy2) { - utils.arraySet(state.window, src, end - copy2, copy2, 0); - state.wnext = copy2; - state.whave = state.wsize; - } else { - state.wnext += dist; - if (state.wnext === state.wsize) { - state.wnext = 0; - } - if (state.whave < state.wsize) { - state.whave += dist; - } - } - } - return 0; - } - function inflate2(strm, flush2) { - var state; - var input, output; - var next; - var put; - var have, left; - var hold; - var bits; - var _in, _out; - var copy2; - var from; - var from_source; - var here = 0; - var here_bits, here_op, here_val; - var last_bits, last_op, last_val; - var len; - var ret; - var hbuf = new utils.Buf8(4); - var opts; - var n; - var order = ( - /* permutation of code lengths */ - [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15] - ); - if (!strm || !strm.state || !strm.output || !strm.input && strm.avail_in !== 0) { - return Z_STREAM_ERROR; - } - state = strm.state; - if (state.mode === TYPE) { - state.mode = TYPEDO; - } - put = strm.next_out; - output = strm.output; - left = strm.avail_out; - next = strm.next_in; - input = strm.input; - have = strm.avail_in; - hold = state.hold; - bits = state.bits; - _in = have; - _out = left; - ret = Z_OK; - inf_leave: - for (; ; ) { - switch (state.mode) { - case HEAD: - if (state.wrap === 0) { - state.mode = TYPEDO; - break; - } - while (bits < 16) { - if (have === 0) { - break inf_leave; - } - have--; - hold += input[next++] << bits; - bits += 8; - } - if (state.wrap & 2 && hold === 35615) { - state.check = 0; - hbuf[0] = hold & 255; - hbuf[1] = hold >>> 8 & 255; - state.check = crc322(state.check, hbuf, 2, 0); - hold = 0; - bits = 0; - state.mode = FLAGS; - break; - } - state.flags = 0; - if (state.head) { - state.head.done = false; - } - if (!(state.wrap & 1) || /* check if zlib header allowed */ - (((hold & 255) << 8) + (hold >> 8)) % 31) { - strm.msg = "incorrect header check"; - state.mode = BAD; - break; - } - if ((hold & 15) !== Z_DEFLATED) { - strm.msg = "unknown compression method"; - state.mode = BAD; - break; - } - hold >>>= 4; - bits -= 4; - len = (hold & 15) + 8; - if (state.wbits === 0) { - state.wbits = len; - } else if (len > state.wbits) { - strm.msg = "invalid window size"; - state.mode = BAD; - break; - } - state.dmax = 1 << len; - strm.adler = state.check = 1; - state.mode = hold & 512 ? DICTID : TYPE; - hold = 0; - bits = 0; - break; - case FLAGS: - while (bits < 16) { - if (have === 0) { - break inf_leave; - } - have--; - hold += input[next++] << bits; - bits += 8; - } - state.flags = hold; - if ((state.flags & 255) !== Z_DEFLATED) { - strm.msg = "unknown compression method"; - state.mode = BAD; - break; - } - if (state.flags & 57344) { - strm.msg = "unknown header flags set"; - state.mode = BAD; - break; - } - if (state.head) { - state.head.text = hold >> 8 & 1; - } - if (state.flags & 512) { - hbuf[0] = hold & 255; - hbuf[1] = hold >>> 8 & 255; - state.check = crc322(state.check, hbuf, 2, 0); - } - hold = 0; - bits = 0; - state.mode = TIME; - case TIME: - while (bits < 32) { - if (have === 0) { - break inf_leave; - } - have--; - hold += input[next++] << bits; - bits += 8; - } - if (state.head) { - state.head.time = hold; - } - if (state.flags & 512) { - hbuf[0] = hold & 255; - hbuf[1] = hold >>> 8 & 255; - hbuf[2] = hold >>> 16 & 255; - hbuf[3] = hold >>> 24 & 255; - state.check = crc322(state.check, hbuf, 4, 0); - } - hold = 0; - bits = 0; - state.mode = OS; - case OS: - while (bits < 16) { - if (have === 0) { - break inf_leave; - } - have--; - hold += input[next++] << bits; - bits += 8; - } - if (state.head) { - state.head.xflags = hold & 255; - state.head.os = hold >> 8; - } - if (state.flags & 512) { - hbuf[0] = hold & 255; - hbuf[1] = hold >>> 8 & 255; - state.check = crc322(state.check, hbuf, 2, 0); - } - hold = 0; - bits = 0; - state.mode = EXLEN; - case EXLEN: - if (state.flags & 1024) { - while (bits < 16) { - if (have === 0) { - break inf_leave; - } - have--; - hold += input[next++] << bits; - bits += 8; - } - state.length = hold; - if (state.head) { - state.head.extra_len = hold; - } - if (state.flags & 512) { - hbuf[0] = hold & 255; - hbuf[1] = hold >>> 8 & 255; - state.check = crc322(state.check, hbuf, 2, 0); - } - hold = 0; - bits = 0; - } else if (state.head) { - state.head.extra = null; - } - state.mode = EXTRA2; - case EXTRA2: - if (state.flags & 1024) { - copy2 = state.length; - if (copy2 > have) { - copy2 = have; - } - if (copy2) { - if (state.head) { - len = state.head.extra_len - state.length; - if (!state.head.extra) { - state.head.extra = new Array(state.head.extra_len); - } - utils.arraySet( - state.head.extra, - input, - next, - // extra field is limited to 65536 bytes - // - no need for additional size check - copy2, - /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/ - len - ); - } - if (state.flags & 512) { - state.check = crc322(state.check, input, copy2, next); - } - have -= copy2; - next += copy2; - state.length -= copy2; - } - if (state.length) { - break inf_leave; - } - } - state.length = 0; - state.mode = NAME; - case NAME: - if (state.flags & 2048) { - if (have === 0) { - break inf_leave; - } - copy2 = 0; - do { - len = input[next + copy2++]; - if (state.head && len && state.length < 65536) { - state.head.name += String.fromCharCode(len); - } - } while (len && copy2 < have); - if (state.flags & 512) { - state.check = crc322(state.check, input, copy2, next); - } - have -= copy2; - next += copy2; - if (len) { - break inf_leave; - } - } else if (state.head) { - state.head.name = null; - } - state.length = 0; - state.mode = COMMENT; - case COMMENT: - if (state.flags & 4096) { - if (have === 0) { - break inf_leave; - } - copy2 = 0; - do { - len = input[next + copy2++]; - if (state.head && len && state.length < 65536) { - state.head.comment += String.fromCharCode(len); - } - } while (len && copy2 < have); - if (state.flags & 512) { - state.check = crc322(state.check, input, copy2, next); - } - have -= copy2; - next += copy2; - if (len) { - break inf_leave; - } - } else if (state.head) { - state.head.comment = null; - } - state.mode = HCRC; - case HCRC: - if (state.flags & 512) { - while (bits < 16) { - if (have === 0) { - break inf_leave; - } - have--; - hold += input[next++] << bits; - bits += 8; - } - if (hold !== (state.check & 65535)) { - strm.msg = "header crc mismatch"; - state.mode = BAD; - break; - } - hold = 0; - bits = 0; - } - if (state.head) { - state.head.hcrc = state.flags >> 9 & 1; - state.head.done = true; - } - strm.adler = state.check = 0; - state.mode = TYPE; - break; - case DICTID: - while (bits < 32) { - if (have === 0) { - break inf_leave; - } - have--; - hold += input[next++] << bits; - bits += 8; - } - strm.adler = state.check = zswap32(hold); - hold = 0; - bits = 0; - state.mode = DICT; - case DICT: - if (state.havedict === 0) { - strm.next_out = put; - strm.avail_out = left; - strm.next_in = next; - strm.avail_in = have; - state.hold = hold; - state.bits = bits; - return Z_NEED_DICT; - } - strm.adler = state.check = 1; - state.mode = TYPE; - case TYPE: - if (flush2 === Z_BLOCK || flush2 === Z_TREES) { - break inf_leave; - } - case TYPEDO: - if (state.last) { - hold >>>= bits & 7; - bits -= bits & 7; - state.mode = CHECK; - break; - } - while (bits < 3) { - if (have === 0) { - break inf_leave; - } - have--; - hold += input[next++] << bits; - bits += 8; - } - state.last = hold & 1; - hold >>>= 1; - bits -= 1; - switch (hold & 3) { - case 0: - state.mode = STORED; - break; - case 1: - fixedtables(state); - state.mode = LEN_; - if (flush2 === Z_TREES) { - hold >>>= 2; - bits -= 2; - break inf_leave; - } - break; - case 2: - state.mode = TABLE; - break; - case 3: - strm.msg = "invalid block type"; - state.mode = BAD; - } - hold >>>= 2; - bits -= 2; - break; - case STORED: - hold >>>= bits & 7; - bits -= bits & 7; - while (bits < 32) { - if (have === 0) { - break inf_leave; - } - have--; - hold += input[next++] << bits; - bits += 8; - } - if ((hold & 65535) !== (hold >>> 16 ^ 65535)) { - strm.msg = "invalid stored block lengths"; - state.mode = BAD; - break; - } - state.length = hold & 65535; - hold = 0; - bits = 0; - state.mode = COPY_; - if (flush2 === Z_TREES) { - break inf_leave; - } - case COPY_: - state.mode = COPY; - case COPY: - copy2 = state.length; - if (copy2) { - if (copy2 > have) { - copy2 = have; - } - if (copy2 > left) { - copy2 = left; - } - if (copy2 === 0) { - break inf_leave; - } - utils.arraySet(output, input, next, copy2, put); - have -= copy2; - next += copy2; - left -= copy2; - put += copy2; - state.length -= copy2; - break; - } - state.mode = TYPE; - break; - case TABLE: - while (bits < 14) { - if (have === 0) { - break inf_leave; - } - have--; - hold += input[next++] << bits; - bits += 8; - } - state.nlen = (hold & 31) + 257; - hold >>>= 5; - bits -= 5; - state.ndist = (hold & 31) + 1; - hold >>>= 5; - bits -= 5; - state.ncode = (hold & 15) + 4; - hold >>>= 4; - bits -= 4; - if (state.nlen > 286 || state.ndist > 30) { - strm.msg = "too many length or distance symbols"; - state.mode = BAD; - break; - } - state.have = 0; - state.mode = LENLENS; - case LENLENS: - while (state.have < state.ncode) { - while (bits < 3) { - if (have === 0) { - break inf_leave; - } - have--; - hold += input[next++] << bits; - bits += 8; - } - state.lens[order[state.have++]] = hold & 7; - hold >>>= 3; - bits -= 3; - } - while (state.have < 19) { - state.lens[order[state.have++]] = 0; - } - state.lencode = state.lendyn; - state.lenbits = 7; - opts = { bits: state.lenbits }; - ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts); - state.lenbits = opts.bits; - if (ret) { - strm.msg = "invalid code lengths set"; - state.mode = BAD; - break; - } - state.have = 0; - state.mode = CODELENS; - case CODELENS: - while (state.have < state.nlen + state.ndist) { - for (; ; ) { - here = state.lencode[hold & (1 << state.lenbits) - 1]; - here_bits = here >>> 24; - here_op = here >>> 16 & 255; - here_val = here & 65535; - if (here_bits <= bits) { - break; - } - if (have === 0) { - break inf_leave; - } - have--; - hold += input[next++] << bits; - bits += 8; - } - if (here_val < 16) { - hold >>>= here_bits; - bits -= here_bits; - state.lens[state.have++] = here_val; - } else { - if (here_val === 16) { - n = here_bits + 2; - while (bits < n) { - if (have === 0) { - break inf_leave; - } - have--; - hold += input[next++] << bits; - bits += 8; - } - hold >>>= here_bits; - bits -= here_bits; - if (state.have === 0) { - strm.msg = "invalid bit length repeat"; - state.mode = BAD; - break; - } - len = state.lens[state.have - 1]; - copy2 = 3 + (hold & 3); - hold >>>= 2; - bits -= 2; - } else if (here_val === 17) { - n = here_bits + 3; - while (bits < n) { - if (have === 0) { - break inf_leave; - } - have--; - hold += input[next++] << bits; - bits += 8; - } - hold >>>= here_bits; - bits -= here_bits; - len = 0; - copy2 = 3 + (hold & 7); - hold >>>= 3; - bits -= 3; - } else { - n = here_bits + 7; - while (bits < n) { - if (have === 0) { - break inf_leave; - } - have--; - hold += input[next++] << bits; - bits += 8; - } - hold >>>= here_bits; - bits -= here_bits; - len = 0; - copy2 = 11 + (hold & 127); - hold >>>= 7; - bits -= 7; - } - if (state.have + copy2 > state.nlen + state.ndist) { - strm.msg = "invalid bit length repeat"; - state.mode = BAD; - break; - } - while (copy2--) { - state.lens[state.have++] = len; - } - } - } - if (state.mode === BAD) { - break; - } - if (state.lens[256] === 0) { - strm.msg = "invalid code -- missing end-of-block"; - state.mode = BAD; - break; - } - state.lenbits = 9; - opts = { bits: state.lenbits }; - ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts); - state.lenbits = opts.bits; - if (ret) { - strm.msg = "invalid literal/lengths set"; - state.mode = BAD; - break; - } - state.distbits = 6; - state.distcode = state.distdyn; - opts = { bits: state.distbits }; - ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts); - state.distbits = opts.bits; - if (ret) { - strm.msg = "invalid distances set"; - state.mode = BAD; - break; - } - state.mode = LEN_; - if (flush2 === Z_TREES) { - break inf_leave; - } - case LEN_: - state.mode = LEN; - case LEN: - if (have >= 6 && left >= 258) { - strm.next_out = put; - strm.avail_out = left; - strm.next_in = next; - strm.avail_in = have; - state.hold = hold; - state.bits = bits; - inflate_fast(strm, _out); - put = strm.next_out; - output = strm.output; - left = strm.avail_out; - next = strm.next_in; - input = strm.input; - have = strm.avail_in; - hold = state.hold; - bits = state.bits; - if (state.mode === TYPE) { - state.back = -1; - } - break; - } - state.back = 0; - for (; ; ) { - here = state.lencode[hold & (1 << state.lenbits) - 1]; - here_bits = here >>> 24; - here_op = here >>> 16 & 255; - here_val = here & 65535; - if (here_bits <= bits) { - break; - } - if (have === 0) { - break inf_leave; - } - have--; - hold += input[next++] << bits; - bits += 8; - } - if (here_op && (here_op & 240) === 0) { - last_bits = here_bits; - last_op = here_op; - last_val = here_val; - for (; ; ) { - here = state.lencode[last_val + ((hold & (1 << last_bits + last_op) - 1) >> last_bits)]; - here_bits = here >>> 24; - here_op = here >>> 16 & 255; - here_val = here & 65535; - if (last_bits + here_bits <= bits) { - break; - } - if (have === 0) { - break inf_leave; - } - have--; - hold += input[next++] << bits; - bits += 8; - } - hold >>>= last_bits; - bits -= last_bits; - state.back += last_bits; - } - hold >>>= here_bits; - bits -= here_bits; - state.back += here_bits; - state.length = here_val; - if (here_op === 0) { - state.mode = LIT; - break; - } - if (here_op & 32) { - state.back = -1; - state.mode = TYPE; - break; - } - if (here_op & 64) { - strm.msg = "invalid literal/length code"; - state.mode = BAD; - break; - } - state.extra = here_op & 15; - state.mode = LENEXT; - case LENEXT: - if (state.extra) { - n = state.extra; - while (bits < n) { - if (have === 0) { - break inf_leave; - } - have--; - hold += input[next++] << bits; - bits += 8; - } - state.length += hold & (1 << state.extra) - 1; - hold >>>= state.extra; - bits -= state.extra; - state.back += state.extra; - } - state.was = state.length; - state.mode = DIST; - case DIST: - for (; ; ) { - here = state.distcode[hold & (1 << state.distbits) - 1]; - here_bits = here >>> 24; - here_op = here >>> 16 & 255; - here_val = here & 65535; - if (here_bits <= bits) { - break; - } - if (have === 0) { - break inf_leave; - } - have--; - hold += input[next++] << bits; - bits += 8; - } - if ((here_op & 240) === 0) { - last_bits = here_bits; - last_op = here_op; - last_val = here_val; - for (; ; ) { - here = state.distcode[last_val + ((hold & (1 << last_bits + last_op) - 1) >> last_bits)]; - here_bits = here >>> 24; - here_op = here >>> 16 & 255; - here_val = here & 65535; - if (last_bits + here_bits <= bits) { - break; - } - if (have === 0) { - break inf_leave; - } - have--; - hold += input[next++] << bits; - bits += 8; - } - hold >>>= last_bits; - bits -= last_bits; - state.back += last_bits; - } - hold >>>= here_bits; - bits -= here_bits; - state.back += here_bits; - if (here_op & 64) { - strm.msg = "invalid distance code"; - state.mode = BAD; - break; - } - state.offset = here_val; - state.extra = here_op & 15; - state.mode = DISTEXT; - case DISTEXT: - if (state.extra) { - n = state.extra; - while (bits < n) { - if (have === 0) { - break inf_leave; - } - have--; - hold += input[next++] << bits; - bits += 8; - } - state.offset += hold & (1 << state.extra) - 1; - hold >>>= state.extra; - bits -= state.extra; - state.back += state.extra; - } - if (state.offset > state.dmax) { - strm.msg = "invalid distance too far back"; - state.mode = BAD; - break; - } - state.mode = MATCH; - case MATCH: - if (left === 0) { - break inf_leave; - } - copy2 = _out - left; - if (state.offset > copy2) { - copy2 = state.offset - copy2; - if (copy2 > state.whave) { - if (state.sane) { - strm.msg = "invalid distance too far back"; - state.mode = BAD; - break; - } - } - if (copy2 > state.wnext) { - copy2 -= state.wnext; - from = state.wsize - copy2; - } else { - from = state.wnext - copy2; - } - if (copy2 > state.length) { - copy2 = state.length; - } - from_source = state.window; - } else { - from_source = output; - from = put - state.offset; - copy2 = state.length; - } - if (copy2 > left) { - copy2 = left; - } - left -= copy2; - state.length -= copy2; - do { - output[put++] = from_source[from++]; - } while (--copy2); - if (state.length === 0) { - state.mode = LEN; - } - break; - case LIT: - if (left === 0) { - break inf_leave; - } - output[put++] = state.length; - left--; - state.mode = LEN; - break; - case CHECK: - if (state.wrap) { - while (bits < 32) { - if (have === 0) { - break inf_leave; - } - have--; - hold |= input[next++] << bits; - bits += 8; - } - _out -= left; - strm.total_out += _out; - state.total += _out; - if (_out) { - strm.adler = state.check = /*UPDATE(state.check, put - _out, _out);*/ - state.flags ? crc322(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out); - } - _out = left; - if ((state.flags ? hold : zswap32(hold)) !== state.check) { - strm.msg = "incorrect data check"; - state.mode = BAD; - break; - } - hold = 0; - bits = 0; - } - state.mode = LENGTH; - case LENGTH: - if (state.wrap && state.flags) { - while (bits < 32) { - if (have === 0) { - break inf_leave; - } - have--; - hold += input[next++] << bits; - bits += 8; - } - if (hold !== (state.total & 4294967295)) { - strm.msg = "incorrect length check"; - state.mode = BAD; - break; - } - hold = 0; - bits = 0; - } - state.mode = DONE; - case DONE: - ret = Z_STREAM_END; - break inf_leave; - case BAD: - ret = Z_DATA_ERROR; - break inf_leave; - case MEM: - return Z_MEM_ERROR; - case SYNC: - default: - return Z_STREAM_ERROR; - } - } - strm.next_out = put; - strm.avail_out = left; - strm.next_in = next; - strm.avail_in = have; - state.hold = hold; - state.bits = bits; - if (state.wsize || _out !== strm.avail_out && state.mode < BAD && (state.mode < CHECK || flush2 !== Z_FINISH)) { - if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) { - state.mode = MEM; - return Z_MEM_ERROR; - } - } - _in -= strm.avail_in; - _out -= strm.avail_out; - strm.total_in += _in; - strm.total_out += _out; - state.total += _out; - if (state.wrap && _out) { - strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/ - state.flags ? crc322(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out); - } - strm.data_type = state.bits + (state.last ? 64 : 0) + (state.mode === TYPE ? 128 : 0) + (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0); - if ((_in === 0 && _out === 0 || flush2 === Z_FINISH) && ret === Z_OK) { - ret = Z_BUF_ERROR; - } - return ret; - } - function inflateEnd(strm) { - if (!strm || !strm.state) { - return Z_STREAM_ERROR; - } - var state = strm.state; - if (state.window) { - state.window = null; - } - strm.state = null; - return Z_OK; - } - function inflateGetHeader(strm, head) { - var state; - if (!strm || !strm.state) { - return Z_STREAM_ERROR; - } - state = strm.state; - if ((state.wrap & 2) === 0) { - return Z_STREAM_ERROR; - } - state.head = head; - head.done = false; - return Z_OK; - } - function inflateSetDictionary(strm, dictionary) { - var dictLength = dictionary.length; - var state; - var dictid; - var ret; - if (!strm || !strm.state) { - return Z_STREAM_ERROR; - } - state = strm.state; - if (state.wrap !== 0 && state.mode !== DICT) { - return Z_STREAM_ERROR; - } - if (state.mode === DICT) { - dictid = 1; - dictid = adler32(dictid, dictionary, dictLength, 0); - if (dictid !== state.check) { - return Z_DATA_ERROR; - } - } - ret = updatewindow(strm, dictionary, dictLength, dictLength); - if (ret) { - state.mode = MEM; - return Z_MEM_ERROR; - } - state.havedict = 1; - return Z_OK; - } - exports2.inflateReset = inflateReset; - exports2.inflateReset2 = inflateReset2; - exports2.inflateResetKeep = inflateResetKeep; - exports2.inflateInit = inflateInit; - exports2.inflateInit2 = inflateInit2; - exports2.inflate = inflate2; - exports2.inflateEnd = inflateEnd; - exports2.inflateGetHeader = inflateGetHeader; - exports2.inflateSetDictionary = inflateSetDictionary; - exports2.inflateInfo = "pako inflate (from Nodeca project)"; - } -}); - -// node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/constants.js -var require_constants = __commonJS({ - "node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/constants.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - module2.exports = { - /* Allowed flush values; see deflate() and inflate() below for details */ - Z_NO_FLUSH: 0, - Z_PARTIAL_FLUSH: 1, - Z_SYNC_FLUSH: 2, - Z_FULL_FLUSH: 3, - Z_FINISH: 4, - Z_BLOCK: 5, - Z_TREES: 6, - /* Return codes for the compression/decompression functions. Negative values - * are errors, positive values are used for special but normal events. - */ - Z_OK: 0, - Z_STREAM_END: 1, - Z_NEED_DICT: 2, - Z_ERRNO: -1, - Z_STREAM_ERROR: -2, - Z_DATA_ERROR: -3, - //Z_MEM_ERROR: -4, - Z_BUF_ERROR: -5, - //Z_VERSION_ERROR: -6, - /* compression levels */ - Z_NO_COMPRESSION: 0, - Z_BEST_SPEED: 1, - Z_BEST_COMPRESSION: 9, - Z_DEFAULT_COMPRESSION: -1, - Z_FILTERED: 1, - Z_HUFFMAN_ONLY: 2, - Z_RLE: 3, - Z_FIXED: 4, - Z_DEFAULT_STRATEGY: 0, - /* Possible values of the data_type field (though see inflate()) */ - Z_BINARY: 0, - Z_TEXT: 1, - //Z_ASCII: 1, // = Z_TEXT (deprecated) - Z_UNKNOWN: 2, - /* The deflate compression method */ - Z_DEFLATED: 8 - //Z_NULL: null // Use -1 or null inline, depending on var type - }; - } -}); - -// node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/gzheader.js -var require_gzheader = __commonJS({ - "node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/gzheader.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - function GZheader() { - this.text = 0; - this.time = 0; - this.xflags = 0; - this.os = 0; - this.extra = null; - this.extra_len = 0; - this.name = ""; - this.comment = ""; - this.hcrc = 0; - this.done = false; - } - module2.exports = GZheader; - } -}); - -// node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/inflate.js -var require_inflate2 = __commonJS({ - "node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/inflate.js"(exports2) { - "use strict"; - init_polyfill_buffer(); - var zlib_inflate = require_inflate(); - var utils = require_common(); - var strings = require_strings(); - var c = require_constants(); - var msg = require_messages(); - var ZStream = require_zstream(); - var GZheader = require_gzheader(); - var toString = Object.prototype.toString; - function Inflate(options) { - if (!(this instanceof Inflate)) - return new Inflate(options); - this.options = utils.assign({ - chunkSize: 16384, - windowBits: 0, - to: "" - }, options || {}); - var opt = this.options; - if (opt.raw && opt.windowBits >= 0 && opt.windowBits < 16) { - opt.windowBits = -opt.windowBits; - if (opt.windowBits === 0) { - opt.windowBits = -15; - } - } - if (opt.windowBits >= 0 && opt.windowBits < 16 && !(options && options.windowBits)) { - opt.windowBits += 32; - } - if (opt.windowBits > 15 && opt.windowBits < 48) { - if ((opt.windowBits & 15) === 0) { - opt.windowBits |= 15; - } - } - this.err = 0; - this.msg = ""; - this.ended = false; - this.chunks = []; - this.strm = new ZStream(); - this.strm.avail_out = 0; - var status2 = zlib_inflate.inflateInit2( - this.strm, - opt.windowBits - ); - if (status2 !== c.Z_OK) { - throw new Error(msg[status2]); - } - this.header = new GZheader(); - zlib_inflate.inflateGetHeader(this.strm, this.header); - if (opt.dictionary) { - if (typeof opt.dictionary === "string") { - opt.dictionary = strings.string2buf(opt.dictionary); - } else if (toString.call(opt.dictionary) === "[object ArrayBuffer]") { - opt.dictionary = new Uint8Array(opt.dictionary); - } - if (opt.raw) { - status2 = zlib_inflate.inflateSetDictionary(this.strm, opt.dictionary); - if (status2 !== c.Z_OK) { - throw new Error(msg[status2]); - } - } - } - } - Inflate.prototype.push = function(data, mode) { - var strm = this.strm; - var chunkSize = this.options.chunkSize; - var dictionary = this.options.dictionary; - var status2, _mode; - var next_out_utf8, tail, utf8str; - var allowBufError = false; - if (this.ended) { - return false; - } - _mode = mode === ~~mode ? mode : mode === true ? c.Z_FINISH : c.Z_NO_FLUSH; - if (typeof data === "string") { - strm.input = strings.binstring2buf(data); - } else if (toString.call(data) === "[object ArrayBuffer]") { - strm.input = new Uint8Array(data); - } else { - strm.input = data; - } - strm.next_in = 0; - strm.avail_in = strm.input.length; - do { - if (strm.avail_out === 0) { - strm.output = new utils.Buf8(chunkSize); - strm.next_out = 0; - strm.avail_out = chunkSize; - } - status2 = zlib_inflate.inflate(strm, c.Z_NO_FLUSH); - if (status2 === c.Z_NEED_DICT && dictionary) { - status2 = zlib_inflate.inflateSetDictionary(this.strm, dictionary); - } - if (status2 === c.Z_BUF_ERROR && allowBufError === true) { - status2 = c.Z_OK; - allowBufError = false; - } - if (status2 !== c.Z_STREAM_END && status2 !== c.Z_OK) { - this.onEnd(status2); - this.ended = true; - return false; - } - if (strm.next_out) { - if (strm.avail_out === 0 || status2 === c.Z_STREAM_END || strm.avail_in === 0 && (_mode === c.Z_FINISH || _mode === c.Z_SYNC_FLUSH)) { - if (this.options.to === "string") { - next_out_utf8 = strings.utf8border(strm.output, strm.next_out); - tail = strm.next_out - next_out_utf8; - utf8str = strings.buf2string(strm.output, next_out_utf8); - strm.next_out = tail; - strm.avail_out = chunkSize - tail; - if (tail) { - utils.arraySet(strm.output, strm.output, next_out_utf8, tail, 0); - } - this.onData(utf8str); - } else { - this.onData(utils.shrinkBuf(strm.output, strm.next_out)); - } - } - } - if (strm.avail_in === 0 && strm.avail_out === 0) { - allowBufError = true; - } - } while ((strm.avail_in > 0 || strm.avail_out === 0) && status2 !== c.Z_STREAM_END); - if (status2 === c.Z_STREAM_END) { - _mode = c.Z_FINISH; - } - if (_mode === c.Z_FINISH) { - status2 = zlib_inflate.inflateEnd(this.strm); - this.onEnd(status2); - this.ended = true; - return status2 === c.Z_OK; - } - if (_mode === c.Z_SYNC_FLUSH) { - this.onEnd(c.Z_OK); - strm.avail_out = 0; - return true; - } - return true; - }; - Inflate.prototype.onData = function(chunk) { - this.chunks.push(chunk); - }; - Inflate.prototype.onEnd = function(status2) { - if (status2 === c.Z_OK) { - if (this.options.to === "string") { - this.result = this.chunks.join(""); - } else { - this.result = utils.flattenChunks(this.chunks); - } - } - this.chunks = []; - this.err = status2; - this.msg = this.strm.msg; - }; - function inflate2(input, options) { - var inflator = new Inflate(options); - inflator.push(input, true); - if (inflator.err) { - throw inflator.msg || msg[inflator.err]; - } - return inflator.result; - } - function inflateRaw(input, options) { - options = options || {}; - options.raw = true; - return inflate2(input, options); - } - exports2.Inflate = Inflate; - exports2.inflate = inflate2; - exports2.inflateRaw = inflateRaw; - exports2.ungzip = inflate2; - } -}); - -// node_modules/.pnpm/pako@1.0.11/node_modules/pako/index.js -var require_pako = __commonJS({ - "node_modules/.pnpm/pako@1.0.11/node_modules/pako/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var assign2 = require_common().assign; - var deflate2 = require_deflate2(); - var inflate2 = require_inflate2(); - var constants = require_constants(); - var pako2 = {}; - assign2(pako2, deflate2, inflate2, constants); - module2.exports = pako2; - } -}); - -// node_modules/.pnpm/pify@4.0.1/node_modules/pify/index.js -var require_pify = __commonJS({ - "node_modules/.pnpm/pify@4.0.1/node_modules/pify/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var processFn = (fn, options) => function(...args) { - const P = options.promiseModule; - return new P((resolve, reject) => { - if (options.multiArgs) { - args.push((...result) => { - if (options.errorFirst) { - if (result[0]) { - reject(result); - } else { - result.shift(); - resolve(result); - } - } else { - resolve(result); - } - }); - } else if (options.errorFirst) { - args.push((error, result) => { - if (error) { - reject(error); - } else { - resolve(result); - } - }); - } else { - args.push(resolve); - } - fn.apply(this, args); - }); - }; - module2.exports = (input, options) => { - options = Object.assign({ - exclude: [/.+(Sync|Stream)$/], - errorFirst: true, - promiseModule: Promise - }, options); - const objType = typeof input; - if (!(input !== null && (objType === "object" || objType === "function"))) { - throw new TypeError(`Expected \`input\` to be a \`Function\` or \`Object\`, got \`${input === null ? "null" : objType}\``); - } - const filter = (key2) => { - const match = (pattern) => typeof pattern === "string" ? key2 === pattern : pattern.test(key2); - return options.include ? options.include.some(match) : !options.exclude.some(match); - }; - let ret; - if (objType === "function") { - ret = function(...args) { - return options.excludeMain ? input(...args) : processFn(input, options).apply(this, args); - }; - } else { - ret = Object.create(Object.getPrototypeOf(input)); - } - for (const key2 in input) { - const property = input[key2]; - ret[key2] = typeof property === "function" && filter(key2) ? processFn(property, options) : property; - } - return ret; - }; - } -}); - -// node_modules/.pnpm/ignore@5.3.1/node_modules/ignore/index.js -var require_ignore = __commonJS({ - "node_modules/.pnpm/ignore@5.3.1/node_modules/ignore/index.js"(exports2, module2) { - init_polyfill_buffer(); - function makeArray(subject) { - return Array.isArray(subject) ? subject : [subject]; - } - var EMPTY = ""; - var SPACE = " "; - var ESCAPE = "\\"; - var REGEX_TEST_BLANK_LINE = /^\s+$/; - var REGEX_INVALID_TRAILING_BACKSLASH = /(?:[^\\]|^)\\$/; - var REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION = /^\\!/; - var REGEX_REPLACE_LEADING_EXCAPED_HASH = /^\\#/; - var REGEX_SPLITALL_CRLF = /\r?\n/g; - var REGEX_TEST_INVALID_PATH = /^\.*\/|^\.+$/; - var SLASH = "/"; - var TMP_KEY_IGNORE = "node-ignore"; - if (typeof Symbol !== "undefined") { - TMP_KEY_IGNORE = Symbol.for("node-ignore"); - } - var KEY_IGNORE = TMP_KEY_IGNORE; - var define2 = (object, key2, value) => Object.defineProperty(object, key2, { value }); - var REGEX_REGEXP_RANGE = /([0-z])-([0-z])/g; - var RETURN_FALSE = () => false; - var sanitizeRange = (range) => range.replace( - REGEX_REGEXP_RANGE, - (match, from, to) => from.charCodeAt(0) <= to.charCodeAt(0) ? match : EMPTY - ); - var cleanRangeBackSlash = (slashes) => { - const { length } = slashes; - return slashes.slice(0, length - length % 2); - }; - var REPLACERS = [ - [ - // remove BOM - // TODO: - // Other similar zero-width characters? - /^\uFEFF/, - () => EMPTY - ], - // > Trailing spaces are ignored unless they are quoted with backslash ("\") - [ - // (a\ ) -> (a ) - // (a ) -> (a) - // (a \ ) -> (a ) - /\\?\s+$/, - (match) => match.indexOf("\\") === 0 ? SPACE : EMPTY - ], - // replace (\ ) with ' ' - [ - /\\\s/g, - () => SPACE - ], - // Escape metacharacters - // which is written down by users but means special for regular expressions. - // > There are 12 characters with special meanings: - // > - the backslash \, - // > - the caret ^, - // > - the dollar sign $, - // > - the period or dot ., - // > - the vertical bar or pipe symbol |, - // > - the question mark ?, - // > - the asterisk or star *, - // > - the plus sign +, - // > - the opening parenthesis (, - // > - the closing parenthesis ), - // > - and the opening square bracket [, - // > - the opening curly brace {, - // > These special characters are often called "metacharacters". - [ - /[\\$.|*+(){^]/g, - (match) => `\\${match}` - ], - [ - // > a question mark (?) matches a single character - /(?!\\)\?/g, - () => "[^/]" - ], - // leading slash - [ - // > A leading slash matches the beginning of the pathname. - // > For example, "/*.c" matches "cat-file.c" but not "mozilla-sha1/sha1.c". - // A leading slash matches the beginning of the pathname - /^\//, - () => "^" - ], - // replace special metacharacter slash after the leading slash - [ - /\//g, - () => "\\/" - ], - [ - // > A leading "**" followed by a slash means match in all directories. - // > For example, "**/foo" matches file or directory "foo" anywhere, - // > the same as pattern "foo". - // > "**/foo/bar" matches file or directory "bar" anywhere that is directly - // > under directory "foo". - // Notice that the '*'s have been replaced as '\\*' - /^\^*\\\*\\\*\\\//, - // '**/foo' <-> 'foo' - () => "^(?:.*\\/)?" - ], - // starting - [ - // there will be no leading '/' - // (which has been replaced by section "leading slash") - // If starts with '**', adding a '^' to the regular expression also works - /^(?=[^^])/, - function startingReplacer() { - return !/\/(?!$)/.test(this) ? "(?:^|\\/)" : "^"; - } - ], - // two globstars - [ - // Use lookahead assertions so that we could match more than one `'/**'` - /\\\/\\\*\\\*(?=\\\/|$)/g, - // Zero, one or several directories - // should not use '*', or it will be replaced by the next replacer - // Check if it is not the last `'/**'` - (_, index2, str) => index2 + 6 < str.length ? "(?:\\/[^\\/]+)*" : "\\/.+" - ], - // normal intermediate wildcards - [ - // Never replace escaped '*' - // ignore rule '\*' will match the path '*' - // 'abc.*/' -> go - // 'abc.*' -> skip this rule, - // coz trailing single wildcard will be handed by [trailing wildcard] - /(^|[^\\]+)(\\\*)+(?=.+)/g, - // '*.js' matches '.js' - // '*.js' doesn't match 'abc' - (_, p1, p2) => { - const unescaped = p2.replace(/\\\*/g, "[^\\/]*"); - return p1 + unescaped; - } - ], - [ - // unescape, revert step 3 except for back slash - // For example, if a user escape a '\\*', - // after step 3, the result will be '\\\\\\*' - /\\\\\\(?=[$.|*+(){^])/g, - () => ESCAPE - ], - [ - // '\\\\' -> '\\' - /\\\\/g, - () => ESCAPE - ], - [ - // > The range notation, e.g. [a-zA-Z], - // > can be used to match one of the characters in a range. - // `\` is escaped by step 3 - /(\\)?\[([^\]/]*?)(\\*)($|\])/g, - (match, leadEscape, range, endEscape, close) => leadEscape === ESCAPE ? `\\[${range}${cleanRangeBackSlash(endEscape)}${close}` : close === "]" ? endEscape.length % 2 === 0 ? `[${sanitizeRange(range)}${endEscape}]` : "[]" : "[]" - ], - // ending - [ - // 'js' will not match 'js.' - // 'ab' will not match 'abc' - /(?:[^*])$/, - // WTF! - // https://git-scm.com/docs/gitignore - // changes in [2.22.1](https://git-scm.com/docs/gitignore/2.22.1) - // which re-fixes #24, #38 - // > If there is a separator at the end of the pattern then the pattern - // > will only match directories, otherwise the pattern can match both - // > files and directories. - // 'js*' will not match 'a.js' - // 'js/' will not match 'a.js' - // 'js' will match 'a.js' and 'a.js/' - (match) => /\/$/.test(match) ? `${match}$` : `${match}(?=$|\\/$)` - ], - // trailing wildcard - [ - /(\^|\\\/)?\\\*$/, - (_, p1) => { - const prefix = p1 ? `${p1}[^/]+` : "[^/]*"; - return `${prefix}(?=$|\\/$)`; - } - ] - ]; - var regexCache = /* @__PURE__ */ Object.create(null); - var makeRegex = (pattern, ignoreCase) => { - let source = regexCache[pattern]; - if (!source) { - source = REPLACERS.reduce( - (prev, current) => prev.replace(current[0], current[1].bind(pattern)), - pattern - ); - regexCache[pattern] = source; - } - return ignoreCase ? new RegExp(source, "i") : new RegExp(source); - }; - var isString = (subject) => typeof subject === "string"; - var checkPattern = (pattern) => pattern && isString(pattern) && !REGEX_TEST_BLANK_LINE.test(pattern) && !REGEX_INVALID_TRAILING_BACKSLASH.test(pattern) && pattern.indexOf("#") !== 0; - var splitPattern = (pattern) => pattern.split(REGEX_SPLITALL_CRLF); - var IgnoreRule = class { - constructor(origin, pattern, negative, regex2) { - this.origin = origin; - this.pattern = pattern; - this.negative = negative; - this.regex = regex2; - } - }; - var createRule = (pattern, ignoreCase) => { - const origin = pattern; - let negative = false; - if (pattern.indexOf("!") === 0) { - negative = true; - pattern = pattern.substr(1); - } - pattern = pattern.replace(REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION, "!").replace(REGEX_REPLACE_LEADING_EXCAPED_HASH, "#"); - const regex2 = makeRegex(pattern, ignoreCase); - return new IgnoreRule( - origin, - pattern, - negative, - regex2 - ); - }; - var throwError = (message, Ctor) => { - throw new Ctor(message); - }; - var checkPath = (path2, originalPath, doThrow) => { - if (!isString(path2)) { - return doThrow( - `path must be a string, but got \`${originalPath}\``, - TypeError - ); - } - if (!path2) { - return doThrow(`path must not be empty`, TypeError); - } - if (checkPath.isNotRelative(path2)) { - const r = "`path.relative()`d"; - return doThrow( - `path should be a ${r} string, but got "${originalPath}"`, - RangeError - ); - } - return true; - }; - var isNotRelative = (path2) => REGEX_TEST_INVALID_PATH.test(path2); - checkPath.isNotRelative = isNotRelative; - checkPath.convert = (p) => p; - var Ignore = class { - constructor({ - ignorecase = true, - ignoreCase = ignorecase, - allowRelativePaths = false - } = {}) { - define2(this, KEY_IGNORE, true); - this._rules = []; - this._ignoreCase = ignoreCase; - this._allowRelativePaths = allowRelativePaths; - this._initCache(); - } - _initCache() { - this._ignoreCache = /* @__PURE__ */ Object.create(null); - this._testCache = /* @__PURE__ */ Object.create(null); - } - _addPattern(pattern) { - if (pattern && pattern[KEY_IGNORE]) { - this._rules = this._rules.concat(pattern._rules); - this._added = true; - return; - } - if (checkPattern(pattern)) { - const rule = createRule(pattern, this._ignoreCase); - this._added = true; - this._rules.push(rule); - } - } - // @param {Array | string | Ignore} pattern - add(pattern) { - this._added = false; - makeArray( - isString(pattern) ? splitPattern(pattern) : pattern - ).forEach(this._addPattern, this); - if (this._added) { - this._initCache(); - } - return this; - } - // legacy - addPattern(pattern) { - return this.add(pattern); - } - // | ignored : unignored - // negative | 0:0 | 0:1 | 1:0 | 1:1 - // -------- | ------- | ------- | ------- | -------- - // 0 | TEST | TEST | SKIP | X - // 1 | TESTIF | SKIP | TEST | X - // - SKIP: always skip - // - TEST: always test - // - TESTIF: only test if checkUnignored - // - X: that never happen - // @param {boolean} whether should check if the path is unignored, - // setting `checkUnignored` to `false` could reduce additional - // path matching. - // @returns {TestResult} true if a file is ignored - _testOne(path2, checkUnignored) { - let ignored = false; - let unignored = false; - this._rules.forEach((rule) => { - const { negative } = rule; - if (unignored === negative && ignored !== unignored || negative && !ignored && !unignored && !checkUnignored) { - return; - } - const matched = rule.regex.test(path2); - if (matched) { - ignored = !negative; - unignored = negative; - } - }); - return { - ignored, - unignored - }; - } - // @returns {TestResult} - _test(originalPath, cache, checkUnignored, slices) { - const path2 = originalPath && checkPath.convert(originalPath); - checkPath( - path2, - originalPath, - this._allowRelativePaths ? RETURN_FALSE : throwError - ); - return this._t(path2, cache, checkUnignored, slices); - } - _t(path2, cache, checkUnignored, slices) { - if (path2 in cache) { - return cache[path2]; - } - if (!slices) { - slices = path2.split(SLASH); - } - slices.pop(); - if (!slices.length) { - return cache[path2] = this._testOne(path2, checkUnignored); - } - const parent = this._t( - slices.join(SLASH) + SLASH, - cache, - checkUnignored, - slices - ); - return cache[path2] = parent.ignored ? parent : this._testOne(path2, checkUnignored); - } - ignores(path2) { - return this._test(path2, this._ignoreCache, false).ignored; - } - createFilter() { - return (path2) => !this.ignores(path2); - } - filter(paths) { - return makeArray(paths).filter(this.createFilter()); - } - // @returns {TestResult} - test(path2) { - return this._test(path2, this._testCache, true); - } - }; - var factory = (options) => new Ignore(options); - var isPathValid = (path2) => checkPath(path2 && checkPath.convert(path2), path2, RETURN_FALSE); - factory.isPathValid = isPathValid; - factory.default = factory; - module2.exports = factory; - if ( - // Detect `process` so that it can run in browsers. - typeof process !== "undefined" && (process.env && process.env.IGNORE_TEST_WIN32 || process.platform === "win32") - ) { - const makePosix = (str) => /^\\\\\?\\/.test(str) || /["<>|\u0000-\u001F]+/u.test(str) ? str : str.replace(/\\/g, "/"); - checkPath.convert = makePosix; - const REGIX_IS_WINDOWS_PATH_ABSOLUTE = /^[a-z]:\//i; - checkPath.isNotRelative = (path2) => REGIX_IS_WINDOWS_PATH_ABSOLUTE.test(path2) || isNotRelative(path2); - } - } -}); - -// node_modules/.pnpm/clean-git-ref@2.0.1/node_modules/clean-git-ref/lib/index.js -var require_lib2 = __commonJS({ - "node_modules/.pnpm/clean-git-ref@2.0.1/node_modules/clean-git-ref/lib/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - function escapeRegExp(string) { - return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); - } - function replaceAll(str, search, replacement) { - search = search instanceof RegExp ? search : new RegExp(escapeRegExp(search), "g"); - return str.replace(search, replacement); - } - var CleanGitRef = { - clean: function clean(value) { - if (typeof value !== "string") { - throw new Error("Expected a string, received: " + value); - } - value = replaceAll(value, "./", "/"); - value = replaceAll(value, "..", "."); - value = replaceAll(value, " ", "-"); - value = replaceAll(value, /^[~^:?*\\\-]/g, ""); - value = replaceAll(value, /[~^:?*\\]/g, "-"); - value = replaceAll(value, /[~^:?*\\\-]$/g, ""); - value = replaceAll(value, "@{", "-"); - value = replaceAll(value, /\.$/g, ""); - value = replaceAll(value, /\/$/g, ""); - value = replaceAll(value, /\.lock$/g, ""); - return value; - } - }; - module2.exports = CleanGitRef; - } -}); - -// node_modules/.pnpm/diff3@0.0.3/node_modules/diff3/onp.js -var require_onp = __commonJS({ - "node_modules/.pnpm/diff3@0.0.3/node_modules/diff3/onp.js"(exports2, module2) { - init_polyfill_buffer(); - module2.exports = function(a_, b_) { - var a = a_, b = b_, m = a.length, n = b.length, reverse = false, ed = null, offset = m + 1, path2 = [], pathposi = [], ses = [], lcs = "", SES_DELETE = -1, SES_COMMON = 0, SES_ADD = 1; - var tmp1, tmp2; - var init3 = function() { - if (m >= n) { - tmp1 = a; - tmp2 = m; - a = b; - b = tmp1; - m = n; - n = tmp2; - reverse = true; - offset = m + 1; - } - }; - var P = function(x, y, k) { - return { - "x": x, - "y": y, - "k": k - }; - }; - var seselem = function(elem, t) { - return { - "elem": elem, - "t": t - }; - }; - var snake = function(k, p, pp) { - var r, x, y; - if (p > pp) { - r = path2[k - 1 + offset]; - } else { - r = path2[k + 1 + offset]; - } - y = Math.max(p, pp); - x = y - k; - while (x < m && y < n && a[x] === b[y]) { - ++x; - ++y; - } - path2[k + offset] = pathposi.length; - pathposi[pathposi.length] = new P(x, y, r); - return y; - }; - var recordseq = function(epc) { - var x_idx, y_idx, px_idx, py_idx, i; - x_idx = y_idx = 1; - px_idx = py_idx = 0; - for (i = epc.length - 1; i >= 0; --i) { - while (px_idx < epc[i].x || py_idx < epc[i].y) { - if (epc[i].y - epc[i].x > py_idx - px_idx) { - if (reverse) { - ses[ses.length] = new seselem(b[py_idx], SES_DELETE); - } else { - ses[ses.length] = new seselem(b[py_idx], SES_ADD); - } - ++y_idx; - ++py_idx; - } else if (epc[i].y - epc[i].x < py_idx - px_idx) { - if (reverse) { - ses[ses.length] = new seselem(a[px_idx], SES_ADD); - } else { - ses[ses.length] = new seselem(a[px_idx], SES_DELETE); - } - ++x_idx; - ++px_idx; - } else { - ses[ses.length] = new seselem(a[px_idx], SES_COMMON); - lcs += a[px_idx]; - ++x_idx; - ++y_idx; - ++px_idx; - ++py_idx; - } - } - } - }; - init3(); - return { - SES_DELETE: -1, - SES_COMMON: 0, - SES_ADD: 1, - editdistance: function() { - return ed; - }, - getlcs: function() { - return lcs; - }, - getses: function() { - return ses; - }, - compose: function() { - var delta, size, fp, p, r, epc, i, k; - delta = n - m; - size = m + n + 3; - fp = {}; - for (i = 0; i < size; ++i) { - fp[i] = -1; - path2[i] = -1; - } - p = -1; - do { - ++p; - for (k = -p; k <= delta - 1; ++k) { - fp[k + offset] = snake(k, fp[k - 1 + offset] + 1, fp[k + 1 + offset]); - } - for (k = delta + p; k >= delta + 1; --k) { - fp[k + offset] = snake(k, fp[k - 1 + offset] + 1, fp[k + 1 + offset]); - } - fp[delta + offset] = snake(delta, fp[delta - 1 + offset] + 1, fp[delta + 1 + offset]); - } while (fp[delta + offset] !== n); - ed = delta + 2 * p; - r = path2[delta + offset]; - epc = []; - while (r !== -1) { - epc[epc.length] = new P(pathposi[r].x, pathposi[r].y, null); - r = pathposi[r].k; - } - recordseq(epc); - } - }; - }; - } -}); - -// node_modules/.pnpm/diff3@0.0.3/node_modules/diff3/diff3.js -var require_diff3 = __commonJS({ - "node_modules/.pnpm/diff3@0.0.3/node_modules/diff3/diff3.js"(exports2, module2) { - init_polyfill_buffer(); - var onp = require_onp(); - function longestCommonSubsequence(file1, file2) { - var diff3 = new onp(file1, file2); - diff3.compose(); - var ses = diff3.getses(); - var root2; - var prev; - var file1RevIdx = file1.length - 1, file2RevIdx = file2.length - 1; - for (var i = ses.length - 1; i >= 0; --i) { - if (ses[i].t === diff3.SES_COMMON) { - if (prev) { - prev.chain = { - file1index: file1RevIdx, - file2index: file2RevIdx, - chain: null - }; - prev = prev.chain; - } else { - root2 = { - file1index: file1RevIdx, - file2index: file2RevIdx, - chain: null - }; - prev = root2; - } - file1RevIdx--; - file2RevIdx--; - } else if (ses[i].t === diff3.SES_DELETE) { - file1RevIdx--; - } else if (ses[i].t === diff3.SES_ADD) { - file2RevIdx--; - } - } - var tail = { - file1index: -1, - file2index: -1, - chain: null - }; - if (!prev) { - return tail; - } - prev.chain = tail; - return root2; - } - function diffIndices(file1, file2) { - var result = []; - var tail1 = file1.length; - var tail2 = file2.length; - for (var candidate = longestCommonSubsequence(file1, file2); candidate !== null; candidate = candidate.chain) { - var mismatchLength1 = tail1 - candidate.file1index - 1; - var mismatchLength2 = tail2 - candidate.file2index - 1; - tail1 = candidate.file1index; - tail2 = candidate.file2index; - if (mismatchLength1 || mismatchLength2) { - result.push({ - file1: [tail1 + 1, mismatchLength1], - file2: [tail2 + 1, mismatchLength2] - }); - } - } - result.reverse(); - return result; - } - function diff3MergeIndices(a, o, b) { - var i; - var m1 = diffIndices(o, a); - var m2 = diffIndices(o, b); - var hunks = []; - function addHunk(h, side2) { - hunks.push([h.file1[0], side2, h.file1[1], h.file2[0], h.file2[1]]); - } - for (i = 0; i < m1.length; i++) { - addHunk(m1[i], 0); - } - for (i = 0; i < m2.length; i++) { - addHunk(m2[i], 2); - } - hunks.sort(function(x, y) { - return x[0] - y[0]; - }); - var result = []; - var commonOffset = 0; - function copyCommon(targetOffset) { - if (targetOffset > commonOffset) { - result.push([1, commonOffset, targetOffset - commonOffset]); - commonOffset = targetOffset; - } - } - for (var hunkIndex = 0; hunkIndex < hunks.length; hunkIndex++) { - var firstHunkIndex = hunkIndex; - var hunk = hunks[hunkIndex]; - var regionLhs = hunk[0]; - var regionRhs = regionLhs + hunk[2]; - while (hunkIndex < hunks.length - 1) { - var maybeOverlapping = hunks[hunkIndex + 1]; - var maybeLhs = maybeOverlapping[0]; - if (maybeLhs > regionRhs) - break; - regionRhs = Math.max(regionRhs, maybeLhs + maybeOverlapping[2]); - hunkIndex++; - } - copyCommon(regionLhs); - if (firstHunkIndex == hunkIndex) { - if (hunk[4] > 0) { - result.push([hunk[1], hunk[3], hunk[4]]); - } - } else { - var regions = { - 0: [a.length, -1, o.length, -1], - 2: [b.length, -1, o.length, -1] - }; - for (i = firstHunkIndex; i <= hunkIndex; i++) { - hunk = hunks[i]; - var side = hunk[1]; - var r = regions[side]; - var oLhs = hunk[0]; - var oRhs = oLhs + hunk[2]; - var abLhs = hunk[3]; - var abRhs = abLhs + hunk[4]; - r[0] = Math.min(abLhs, r[0]); - r[1] = Math.max(abRhs, r[1]); - r[2] = Math.min(oLhs, r[2]); - r[3] = Math.max(oRhs, r[3]); - } - var aLhs = regions[0][0] + (regionLhs - regions[0][2]); - var aRhs = regions[0][1] + (regionRhs - regions[0][3]); - var bLhs = regions[2][0] + (regionLhs - regions[2][2]); - var bRhs = regions[2][1] + (regionRhs - regions[2][3]); - result.push([ - -1, - aLhs, - aRhs - aLhs, - regionLhs, - regionRhs - regionLhs, - bLhs, - bRhs - bLhs - ]); - } - commonOffset = regionRhs; - } - copyCommon(o.length); - return result; - } - function diff3Merge2(a, o, b) { - var result = []; - var files = [a, o, b]; - var indices = diff3MergeIndices(a, o, b); - var okLines = []; - function flushOk() { - if (okLines.length) { - result.push({ - ok: okLines - }); - } - okLines = []; - } - function pushOk(xs) { - for (var j = 0; j < xs.length; j++) { - okLines.push(xs[j]); - } - } - function isTrueConflict(rec) { - if (rec[2] != rec[6]) - return true; - var aoff = rec[1]; - var boff = rec[5]; - for (var j = 0; j < rec[2]; j++) { - if (a[j + aoff] != b[j + boff]) - return true; - } - return false; - } - for (var i = 0; i < indices.length; i++) { - var x = indices[i]; - var side = x[0]; - if (side == -1) { - if (!isTrueConflict(x)) { - pushOk(files[0].slice(x[1], x[1] + x[2])); - } else { - flushOk(); - result.push({ - conflict: { - a: a.slice(x[1], x[1] + x[2]), - aIndex: x[1], - o: o.slice(x[3], x[3] + x[4]), - oIndex: x[3], - b: b.slice(x[5], x[5] + x[6]), - bIndex: x[5] - } - }); - } - } else { - pushOk(files[side].slice(x[1], x[1] + x[2])); - } - } - flushOk(); - return result; - } - module2.exports = diff3Merge2; - } -}); - -// node_modules/.pnpm/ms@2.1.2/node_modules/ms/index.js -var require_ms = __commonJS({ - "node_modules/.pnpm/ms@2.1.2/node_modules/ms/index.js"(exports2, module2) { - init_polyfill_buffer(); - var s = 1e3; - var m = s * 60; - var h = m * 60; - var d = h * 24; - var w = d * 7; - var y = d * 365.25; - module2.exports = function(val, options) { - options = options || {}; - var type = typeof val; - if (type === "string" && val.length > 0) { - return parse2(val); - } else if (type === "number" && isFinite(val)) { - return options.long ? fmtLong(val) : fmtShort(val); - } - throw new Error( - "val is not a non-empty string or a valid number. val=" + JSON.stringify(val) - ); - }; - function parse2(str) { - str = String(str); - if (str.length > 100) { - return; - } - var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec( - str - ); - if (!match) { - return; - } - var n = parseFloat(match[1]); - var type = (match[2] || "ms").toLowerCase(); - switch (type) { - case "years": - case "year": - case "yrs": - case "yr": - case "y": - return n * y; - case "weeks": - case "week": - case "w": - return n * w; - case "days": - case "day": - case "d": - return n * d; - case "hours": - case "hour": - case "hrs": - case "hr": - case "h": - return n * h; - case "minutes": - case "minute": - case "mins": - case "min": - case "m": - return n * m; - case "seconds": - case "second": - case "secs": - case "sec": - case "s": - return n * s; - case "milliseconds": - case "millisecond": - case "msecs": - case "msec": - case "ms": - return n; - default: - return void 0; - } - } - function fmtShort(ms) { - var msAbs = Math.abs(ms); - if (msAbs >= d) { - return Math.round(ms / d) + "d"; - } - if (msAbs >= h) { - return Math.round(ms / h) + "h"; - } - if (msAbs >= m) { - return Math.round(ms / m) + "m"; - } - if (msAbs >= s) { - return Math.round(ms / s) + "s"; - } - return ms + "ms"; - } - function fmtLong(ms) { - var msAbs = Math.abs(ms); - if (msAbs >= d) { - return plural(ms, msAbs, d, "day"); - } - if (msAbs >= h) { - return plural(ms, msAbs, h, "hour"); - } - if (msAbs >= m) { - return plural(ms, msAbs, m, "minute"); - } - if (msAbs >= s) { - return plural(ms, msAbs, s, "second"); - } - return ms + " ms"; - } - function plural(ms, msAbs, n, name) { - var isPlural = msAbs >= n * 1.5; - return Math.round(ms / n) + " " + name + (isPlural ? "s" : ""); - } - } -}); - -// node_modules/.pnpm/debug@4.3.4_supports-color@9.4.0/node_modules/debug/src/common.js -var require_common2 = __commonJS({ - "node_modules/.pnpm/debug@4.3.4_supports-color@9.4.0/node_modules/debug/src/common.js"(exports2, module2) { - init_polyfill_buffer(); - function setup(env) { - createDebug.debug = createDebug; - createDebug.default = createDebug; - createDebug.coerce = coerce; - createDebug.disable = disable; - createDebug.enable = enable; - createDebug.enabled = enabled; - createDebug.humanize = require_ms(); - createDebug.destroy = destroy; - Object.keys(env).forEach((key2) => { - createDebug[key2] = env[key2]; - }); - createDebug.names = []; - createDebug.skips = []; - createDebug.formatters = {}; - function selectColor(namespace) { - let hash2 = 0; - for (let i = 0; i < namespace.length; i++) { - hash2 = (hash2 << 5) - hash2 + namespace.charCodeAt(i); - hash2 |= 0; - } - return createDebug.colors[Math.abs(hash2) % createDebug.colors.length]; - } - createDebug.selectColor = selectColor; - function createDebug(namespace) { - let prevTime; - let enableOverride = null; - let namespacesCache; - let enabledCache; - function debug3(...args) { - if (!debug3.enabled) { - return; - } - const self2 = debug3; - const curr = Number(/* @__PURE__ */ new Date()); - const ms = curr - (prevTime || curr); - self2.diff = ms; - self2.prev = prevTime; - self2.curr = curr; - prevTime = curr; - args[0] = createDebug.coerce(args[0]); - if (typeof args[0] !== "string") { - args.unshift("%O"); - } - let index2 = 0; - args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => { - if (match === "%%") { - return "%"; - } - index2++; - const formatter = createDebug.formatters[format]; - if (typeof formatter === "function") { - const val = args[index2]; - match = formatter.call(self2, val); - args.splice(index2, 1); - index2--; - } - return match; - }); - createDebug.formatArgs.call(self2, args); - const logFn = self2.log || createDebug.log; - logFn.apply(self2, args); - } - debug3.namespace = namespace; - debug3.useColors = createDebug.useColors(); - debug3.color = createDebug.selectColor(namespace); - debug3.extend = extend; - debug3.destroy = createDebug.destroy; - Object.defineProperty(debug3, "enabled", { - enumerable: true, - configurable: false, - get: () => { - if (enableOverride !== null) { - return enableOverride; - } - if (namespacesCache !== createDebug.namespaces) { - namespacesCache = createDebug.namespaces; - enabledCache = createDebug.enabled(namespace); - } - return enabledCache; - }, - set: (v) => { - enableOverride = v; - } - }); - if (typeof createDebug.init === "function") { - createDebug.init(debug3); - } - return debug3; - } - function extend(namespace, delimiter) { - const newDebug = createDebug(this.namespace + (typeof delimiter === "undefined" ? ":" : delimiter) + namespace); - newDebug.log = this.log; - return newDebug; - } - function enable(namespaces) { - createDebug.save(namespaces); - createDebug.namespaces = namespaces; - createDebug.names = []; - createDebug.skips = []; - let i; - const split = (typeof namespaces === "string" ? namespaces : "").split(/[\s,]+/); - const len = split.length; - for (i = 0; i < len; i++) { - if (!split[i]) { - continue; - } - namespaces = split[i].replace(/\*/g, ".*?"); - if (namespaces[0] === "-") { - createDebug.skips.push(new RegExp("^" + namespaces.slice(1) + "$")); - } else { - createDebug.names.push(new RegExp("^" + namespaces + "$")); - } - } - } - function disable() { - const namespaces = [ - ...createDebug.names.map(toNamespace), - ...createDebug.skips.map(toNamespace).map((namespace) => "-" + namespace) - ].join(","); - createDebug.enable(""); - return namespaces; - } - function enabled(name) { - if (name[name.length - 1] === "*") { - return true; - } - let i; - let len; - for (i = 0, len = createDebug.skips.length; i < len; i++) { - if (createDebug.skips[i].test(name)) { - return false; - } - } - for (i = 0, len = createDebug.names.length; i < len; i++) { - if (createDebug.names[i].test(name)) { - return true; - } - } - return false; - } - function toNamespace(regexp) { - return regexp.toString().substring(2, regexp.toString().length - 2).replace(/\.\*\?$/, "*"); - } - function coerce(val) { - if (val instanceof Error) { - return val.stack || val.message; - } - return val; - } - function destroy() { - console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."); - } - createDebug.enable(createDebug.load()); - return createDebug; - } - module2.exports = setup; - } -}); - -// node_modules/.pnpm/debug@4.3.4_supports-color@9.4.0/node_modules/debug/src/browser.js -var require_browser = __commonJS({ - "node_modules/.pnpm/debug@4.3.4_supports-color@9.4.0/node_modules/debug/src/browser.js"(exports2, module2) { - init_polyfill_buffer(); - exports2.formatArgs = formatArgs; - exports2.save = save; - exports2.load = load; - exports2.useColors = useColors; - exports2.storage = localstorage(); - exports2.destroy = /* @__PURE__ */ (() => { - let warned = false; - return () => { - if (!warned) { - warned = true; - console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."); - } - }; - })(); - exports2.colors = [ - "#0000CC", - "#0000FF", - "#0033CC", - "#0033FF", - "#0066CC", - "#0066FF", - "#0099CC", - "#0099FF", - "#00CC00", - "#00CC33", - "#00CC66", - "#00CC99", - "#00CCCC", - "#00CCFF", - "#3300CC", - "#3300FF", - "#3333CC", - "#3333FF", - "#3366CC", - "#3366FF", - "#3399CC", - "#3399FF", - "#33CC00", - "#33CC33", - "#33CC66", - "#33CC99", - "#33CCCC", - "#33CCFF", - "#6600CC", - "#6600FF", - "#6633CC", - "#6633FF", - "#66CC00", - "#66CC33", - "#9900CC", - "#9900FF", - "#9933CC", - "#9933FF", - "#99CC00", - "#99CC33", - "#CC0000", - "#CC0033", - "#CC0066", - "#CC0099", - "#CC00CC", - "#CC00FF", - "#CC3300", - "#CC3333", - "#CC3366", - "#CC3399", - "#CC33CC", - "#CC33FF", - "#CC6600", - "#CC6633", - "#CC9900", - "#CC9933", - "#CCCC00", - "#CCCC33", - "#FF0000", - "#FF0033", - "#FF0066", - "#FF0099", - "#FF00CC", - "#FF00FF", - "#FF3300", - "#FF3333", - "#FF3366", - "#FF3399", - "#FF33CC", - "#FF33FF", - "#FF6600", - "#FF6633", - "#FF9900", - "#FF9933", - "#FFCC00", - "#FFCC33" - ]; - function useColors() { - if (typeof window !== "undefined" && window.process && (window.process.type === "renderer" || window.process.__nwjs)) { - return true; - } - if (typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { - return false; - } - return typeof document !== "undefined" && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773 - typeof window !== "undefined" && window.console && (window.console.firebug || window.console.exception && window.console.table) || // Is firefox >= v31? - // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages - typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31 || // Double check webkit in userAgent just in case we are in a worker - typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/); - } - function formatArgs(args) { - args[0] = (this.useColors ? "%c" : "") + this.namespace + (this.useColors ? " %c" : " ") + args[0] + (this.useColors ? "%c " : " ") + "+" + module2.exports.humanize(this.diff); - if (!this.useColors) { - return; - } - const c = "color: " + this.color; - args.splice(1, 0, c, "color: inherit"); - let index2 = 0; - let lastC = 0; - args[0].replace(/%[a-zA-Z%]/g, (match) => { - if (match === "%%") { - return; - } - index2++; - if (match === "%c") { - lastC = index2; - } - }); - args.splice(lastC, 0, c); - } - exports2.log = console.debug || console.log || (() => { - }); - function save(namespaces) { - try { - if (namespaces) { - exports2.storage.setItem("debug", namespaces); - } else { - exports2.storage.removeItem("debug"); - } - } catch (error) { - } - } - function load() { - let r; - try { - r = exports2.storage.getItem("debug"); - } catch (error) { - } - if (!r && typeof process !== "undefined" && "env" in process) { - r = process.env.DEBUG; - } - return r; - } - function localstorage() { - try { - return localStorage; - } catch (error) { - } - } - module2.exports = require_common2()(exports2); - var { formatters } = module2.exports; - formatters.j = function(v) { - try { - return JSON.stringify(v); - } catch (error) { - return "[UnexpectedJSONParseError]: " + error.message; - } - }; - } -}); - -// node_modules/.pnpm/@kwsites+file-exists@1.1.1_supports-color@9.4.0/node_modules/@kwsites/file-exists/dist/src/index.js -var require_src = __commonJS({ - "node_modules/.pnpm/@kwsites+file-exists@1.1.1_supports-color@9.4.0/node_modules/@kwsites/file-exists/dist/src/index.js"(exports2) { - "use strict"; - init_polyfill_buffer(); - var __importDefault = exports2 && exports2.__importDefault || function(mod) { - return mod && mod.__esModule ? mod : { "default": mod }; - }; - Object.defineProperty(exports2, "__esModule", { value: true }); - var fs_1 = require("fs"); - var debug_1 = __importDefault(require_browser()); - var log2 = debug_1.default("@kwsites/file-exists"); - function check(path2, isFile, isDirectory) { - log2(`checking %s`, path2); - try { - const stat = fs_1.statSync(path2); - if (stat.isFile() && isFile) { - log2(`[OK] path represents a file`); - return true; - } - if (stat.isDirectory() && isDirectory) { - log2(`[OK] path represents a directory`); - return true; - } - log2(`[FAIL] path represents something other than a file or directory`); - return false; - } catch (e) { - if (e.code === "ENOENT") { - log2(`[FAIL] path is not accessible: %o`, e); - return false; - } - log2(`[FATAL] %o`, e); - throw e; - } - } - function exists2(path2, type = exports2.READABLE) { - return check(path2, (type & exports2.FILE) > 0, (type & exports2.FOLDER) > 0); - } - exports2.exists = exists2; - exports2.FILE = 1; - exports2.FOLDER = 2; - exports2.READABLE = exports2.FILE + exports2.FOLDER; - } -}); - -// node_modules/.pnpm/@kwsites+file-exists@1.1.1_supports-color@9.4.0/node_modules/@kwsites/file-exists/dist/index.js -var require_dist = __commonJS({ - "node_modules/.pnpm/@kwsites+file-exists@1.1.1_supports-color@9.4.0/node_modules/@kwsites/file-exists/dist/index.js"(exports2) { - "use strict"; - init_polyfill_buffer(); - function __export3(m) { - for (var p in m) - if (!exports2.hasOwnProperty(p)) - exports2[p] = m[p]; - } - Object.defineProperty(exports2, "__esModule", { value: true }); - __export3(require_src()); - } -}); - -// node_modules/.pnpm/@kwsites+promise-deferred@1.1.1/node_modules/@kwsites/promise-deferred/dist/index.js -var require_dist2 = __commonJS({ - "node_modules/.pnpm/@kwsites+promise-deferred@1.1.1/node_modules/@kwsites/promise-deferred/dist/index.js"(exports2) { - "use strict"; - init_polyfill_buffer(); - Object.defineProperty(exports2, "__esModule", { value: true }); - exports2.createDeferred = exports2.deferred = void 0; - function deferred2() { - let done; - let fail; - let status2 = "pending"; - const promise2 = new Promise((_done, _fail) => { - done = _done; - fail = _fail; - }); - return { - promise: promise2, - done(result) { - if (status2 === "pending") { - status2 = "resolved"; - done(result); - } - }, - fail(error) { - if (status2 === "pending") { - status2 = "rejected"; - fail(error); - } - }, - get fulfilled() { - return status2 !== "pending"; - }, - get status() { - return status2; - } - }; - } - exports2.deferred = deferred2; - exports2.createDeferred = deferred2; - exports2.default = deferred2; - } -}); - -// node_modules/.pnpm/color-name@1.1.4/node_modules/color-name/index.js -var require_color_name = __commonJS({ - "node_modules/.pnpm/color-name@1.1.4/node_modules/color-name/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - module2.exports = { - "aliceblue": [240, 248, 255], - "antiquewhite": [250, 235, 215], - "aqua": [0, 255, 255], - "aquamarine": [127, 255, 212], - "azure": [240, 255, 255], - "beige": [245, 245, 220], - "bisque": [255, 228, 196], - "black": [0, 0, 0], - "blanchedalmond": [255, 235, 205], - "blue": [0, 0, 255], - "blueviolet": [138, 43, 226], - "brown": [165, 42, 42], - "burlywood": [222, 184, 135], - "cadetblue": [95, 158, 160], - "chartreuse": [127, 255, 0], - "chocolate": [210, 105, 30], - "coral": [255, 127, 80], - "cornflowerblue": [100, 149, 237], - "cornsilk": [255, 248, 220], - "crimson": [220, 20, 60], - "cyan": [0, 255, 255], - "darkblue": [0, 0, 139], - "darkcyan": [0, 139, 139], - "darkgoldenrod": [184, 134, 11], - "darkgray": [169, 169, 169], - "darkgreen": [0, 100, 0], - "darkgrey": [169, 169, 169], - "darkkhaki": [189, 183, 107], - "darkmagenta": [139, 0, 139], - "darkolivegreen": [85, 107, 47], - "darkorange": [255, 140, 0], - "darkorchid": [153, 50, 204], - "darkred": [139, 0, 0], - "darksalmon": [233, 150, 122], - "darkseagreen": [143, 188, 143], - "darkslateblue": [72, 61, 139], - "darkslategray": [47, 79, 79], - "darkslategrey": [47, 79, 79], - "darkturquoise": [0, 206, 209], - "darkviolet": [148, 0, 211], - "deeppink": [255, 20, 147], - "deepskyblue": [0, 191, 255], - "dimgray": [105, 105, 105], - "dimgrey": [105, 105, 105], - "dodgerblue": [30, 144, 255], - "firebrick": [178, 34, 34], - "floralwhite": [255, 250, 240], - "forestgreen": [34, 139, 34], - "fuchsia": [255, 0, 255], - "gainsboro": [220, 220, 220], - "ghostwhite": [248, 248, 255], - "gold": [255, 215, 0], - "goldenrod": [218, 165, 32], - "gray": [128, 128, 128], - "green": [0, 128, 0], - "greenyellow": [173, 255, 47], - "grey": [128, 128, 128], - "honeydew": [240, 255, 240], - "hotpink": [255, 105, 180], - "indianred": [205, 92, 92], - "indigo": [75, 0, 130], - "ivory": [255, 255, 240], - "khaki": [240, 230, 140], - "lavender": [230, 230, 250], - "lavenderblush": [255, 240, 245], - "lawngreen": [124, 252, 0], - "lemonchiffon": [255, 250, 205], - "lightblue": [173, 216, 230], - "lightcoral": [240, 128, 128], - "lightcyan": [224, 255, 255], - "lightgoldenrodyellow": [250, 250, 210], - "lightgray": [211, 211, 211], - "lightgreen": [144, 238, 144], - "lightgrey": [211, 211, 211], - "lightpink": [255, 182, 193], - "lightsalmon": [255, 160, 122], - "lightseagreen": [32, 178, 170], - "lightskyblue": [135, 206, 250], - "lightslategray": [119, 136, 153], - "lightslategrey": [119, 136, 153], - "lightsteelblue": [176, 196, 222], - "lightyellow": [255, 255, 224], - "lime": [0, 255, 0], - "limegreen": [50, 205, 50], - "linen": [250, 240, 230], - "magenta": [255, 0, 255], - "maroon": [128, 0, 0], - "mediumaquamarine": [102, 205, 170], - "mediumblue": [0, 0, 205], - "mediumorchid": [186, 85, 211], - "mediumpurple": [147, 112, 219], - "mediumseagreen": [60, 179, 113], - "mediumslateblue": [123, 104, 238], - "mediumspringgreen": [0, 250, 154], - "mediumturquoise": [72, 209, 204], - "mediumvioletred": [199, 21, 133], - "midnightblue": [25, 25, 112], - "mintcream": [245, 255, 250], - "mistyrose": [255, 228, 225], - "moccasin": [255, 228, 181], - "navajowhite": [255, 222, 173], - "navy": [0, 0, 128], - "oldlace": [253, 245, 230], - "olive": [128, 128, 0], - "olivedrab": [107, 142, 35], - "orange": [255, 165, 0], - "orangered": [255, 69, 0], - "orchid": [218, 112, 214], - "palegoldenrod": [238, 232, 170], - "palegreen": [152, 251, 152], - "paleturquoise": [175, 238, 238], - "palevioletred": [219, 112, 147], - "papayawhip": [255, 239, 213], - "peachpuff": [255, 218, 185], - "peru": [205, 133, 63], - "pink": [255, 192, 203], - "plum": [221, 160, 221], - "powderblue": [176, 224, 230], - "purple": [128, 0, 128], - "rebeccapurple": [102, 51, 153], - "red": [255, 0, 0], - "rosybrown": [188, 143, 143], - "royalblue": [65, 105, 225], - "saddlebrown": [139, 69, 19], - "salmon": [250, 128, 114], - "sandybrown": [244, 164, 96], - "seagreen": [46, 139, 87], - "seashell": [255, 245, 238], - "sienna": [160, 82, 45], - "silver": [192, 192, 192], - "skyblue": [135, 206, 235], - "slateblue": [106, 90, 205], - "slategray": [112, 128, 144], - "slategrey": [112, 128, 144], - "snow": [255, 250, 250], - "springgreen": [0, 255, 127], - "steelblue": [70, 130, 180], - "tan": [210, 180, 140], - "teal": [0, 128, 128], - "thistle": [216, 191, 216], - "tomato": [255, 99, 71], - "turquoise": [64, 224, 208], - "violet": [238, 130, 238], - "wheat": [245, 222, 179], - "white": [255, 255, 255], - "whitesmoke": [245, 245, 245], - "yellow": [255, 255, 0], - "yellowgreen": [154, 205, 50] - }; - } -}); - -// node_modules/.pnpm/css-unit-converter@1.1.2/node_modules/css-unit-converter/index.js -var require_css_unit_converter = __commonJS({ - "node_modules/.pnpm/css-unit-converter@1.1.2/node_modules/css-unit-converter/index.js"(exports2, module2) { - init_polyfill_buffer(); - var conversions = { - // length - "px": { - "px": 1, - "cm": 96 / 2.54, - "mm": 96 / 25.4, - "in": 96, - "pt": 96 / 72, - "pc": 16 - }, - "cm": { - "px": 2.54 / 96, - "cm": 1, - "mm": 0.1, - "in": 2.54, - "pt": 2.54 / 72, - "pc": 2.54 / 6 - }, - "mm": { - "px": 25.4 / 96, - "cm": 10, - "mm": 1, - "in": 25.4, - "pt": 25.4 / 72, - "pc": 25.4 / 6 - }, - "in": { - "px": 1 / 96, - "cm": 1 / 2.54, - "mm": 1 / 25.4, - "in": 1, - "pt": 1 / 72, - "pc": 1 / 6 - }, - "pt": { - "px": 0.75, - "cm": 72 / 2.54, - "mm": 72 / 25.4, - "in": 72, - "pt": 1, - "pc": 12 - }, - "pc": { - "px": 6 / 96, - "cm": 6 / 2.54, - "mm": 6 / 25.4, - "in": 6, - "pt": 6 / 72, - "pc": 1 - }, - // angle - "deg": { - "deg": 1, - "grad": 0.9, - "rad": 180 / Math.PI, - "turn": 360 - }, - "grad": { - "deg": 400 / 360, - "grad": 1, - "rad": 200 / Math.PI, - "turn": 400 - }, - "rad": { - "deg": Math.PI / 180, - "grad": Math.PI / 200, - "rad": 1, - "turn": Math.PI * 2 - }, - "turn": { - "deg": 1 / 360, - "grad": 1 / 400, - "rad": 0.5 / Math.PI, - "turn": 1 - }, - // time - "s": { - "s": 1, - "ms": 1 / 1e3 - }, - "ms": { - "s": 1e3, - "ms": 1 - }, - // frequency - "Hz": { - "Hz": 1, - "kHz": 1e3 - }, - "kHz": { - "Hz": 1 / 1e3, - "kHz": 1 - }, - // resolution - "dpi": { - "dpi": 1, - "dpcm": 1 / 2.54, - "dppx": 1 / 96 - }, - "dpcm": { - "dpi": 2.54, - "dpcm": 1, - "dppx": 2.54 / 96 - }, - "dppx": { - "dpi": 96, - "dpcm": 96 / 2.54, - "dppx": 1 - } - }; - module2.exports = function(value, sourceUnit, targetUnit, precision) { - if (!conversions.hasOwnProperty(targetUnit)) - throw new Error("Cannot convert to " + targetUnit); - if (!conversions[targetUnit].hasOwnProperty(sourceUnit)) - throw new Error("Cannot convert from " + sourceUnit + " to " + targetUnit); - var converted = conversions[targetUnit][sourceUnit] * value; - if (precision !== false) { - precision = Math.pow(10, parseInt(precision) || 5); - return Math.round(converted * precision) / precision; - } - return converted; - }; - } -}); - -// node_modules/.pnpm/css-color-converter@2.0.0/node_modules/css-color-converter/lib/index.js -var require_lib3 = __commonJS({ - "node_modules/.pnpm/css-color-converter@2.0.0/node_modules/css-color-converter/lib/index.js"(exports2) { - "use strict"; - init_polyfill_buffer(); - Object.defineProperty(exports2, "__esModule", { - value: true - }); - exports2.fromRgba = fromRgba; - exports2.fromRgb = fromRgb; - exports2.fromHsla = fromHsla; - exports2.fromHsl = fromHsl; - exports2.fromString = fromString2; - exports2["default"] = void 0; - var _colorName = _interopRequireDefault(require_color_name()); - var _cssUnitConverter = _interopRequireDefault(require_css_unit_converter()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { "default": obj }; - } - function _classCallCheck(instance10, Constructor) { - if (!(instance10 instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) - descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) - _defineProperties(Constructor.prototype, protoProps); - if (staticProps) - _defineProperties(Constructor, staticProps); - return Constructor; - } - function _slicedToArray(arr, i) { - return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray2(arr, i) || _nonIterableRest(); - } - function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - function _unsupportedIterableToArray2(o, minLen) { - if (!o) - return; - if (typeof o === "string") - return _arrayLikeToArray2(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) - n = o.constructor.name; - if (n === "Map" || n === "Set") - return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) - return _arrayLikeToArray2(o, minLen); - } - function _arrayLikeToArray2(arr, len) { - if (len == null || len > arr.length) - len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - function _iterableToArrayLimit(arr, i) { - if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) - return; - var _arr = []; - var _n = true; - var _d = false; - var _e = void 0; - try { - for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { - _arr.push(_s.value); - if (i && _arr.length === i) - break; - } - } catch (err) { - _d = true; - _e = err; - } finally { - try { - if (!_n && _i["return"] != null) - _i["return"](); - } finally { - if (_d) - throw _e; - } - } - return _arr; - } - function _arrayWithHoles(arr) { - if (Array.isArray(arr)) - return arr; - } - var hex = /^#([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})?$/; - var shortHex = /^#([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])?$/; - var rgb = /^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)(?:\s*,\s*(0|1|0?\.\d+|\d+%))?\s*\)$/; - var rgbfn = /^rgba?\(\s*(\d+)\s+(\d+)\s+(\d+)(?:\s*\/\s*(0|1|0?\.\d+|\d+%))?\s*\)$/; - var rgbperc = /^rgba?\(\s*(\d+%)\s*,\s*(\d+%)\s*,\s*(\d+%)(?:\s*,\s*(0|1|0?\.\d+|\d+%))?\s*\)$/; - var rgbpercfn = /^rgba?\(\s*(\d+%)\s+(\d+%)\s+(\d+%)(?:\s*\/\s*(0|1|0?\.\d+|\d+%))?\s*\)$/; - var hsl = /^hsla?\(\s*(\d+)(deg|rad|grad|turn)?\s*,\s*(\d+)%\s*,\s*(\d+)%(?:\s*,\s*(0|1|0?\.\d+|\d+%))?\s*\)$/; - function contains2(haystack, needle) { - return haystack.indexOf(needle) > -1; - } - function rgbToHsl(r, g, b) { - var rprim = r / 255; - var gprim = g / 255; - var bprim = b / 255; - var cmax = Math.max(rprim, gprim, bprim); - var cmin = Math.min(rprim, gprim, bprim); - var delta = cmax - cmin; - var l = (cmax + cmin) / 2; - if (delta === 0) { - return [0, 0, l * 100]; - } - var s = delta / (1 - Math.abs(2 * l - 1)); - var h = function() { - switch (cmax) { - case rprim: { - return (gprim - bprim) / delta % 6; - } - case gprim: { - return (bprim - rprim) / delta + 2; - } - default: { - return (rprim - gprim) / delta + 4; - } - } - }(); - return [h * 60, s * 100, l * 100]; - } - function hslToRgb(h, s, l) { - var hprim = h / 60; - var sprim = s / 100; - var lprim = l / 100; - var c = (1 - Math.abs(2 * lprim - 1)) * sprim; - var x = c * (1 - Math.abs(hprim % 2 - 1)); - var m = lprim - c / 2; - var _ref = function() { - if (hprim < 1) - return [c, x, 0]; - if (hprim < 2) - return [x, c, 0]; - if (hprim < 3) - return [0, c, x]; - if (hprim < 4) - return [0, x, c]; - if (hprim < 5) - return [x, 0, c]; - return [c, 0, x]; - }(), _ref2 = _slicedToArray(_ref, 3), rprim = _ref2[0], gprim = _ref2[1], bprim = _ref2[2]; - return [(rprim + m) * 255, (gprim + m) * 255, (bprim + m) * 255]; - } - var Color = /* @__PURE__ */ function() { - function Color2(_ref3) { - var _ref4 = _slicedToArray(_ref3, 4), r = _ref4[0], g = _ref4[1], b = _ref4[2], a = _ref4[3]; - _classCallCheck(this, Color2); - this.values = [Math.max(Math.min(parseInt(r, 10), 255), 0), Math.max(Math.min(parseInt(g, 10), 255), 0), Math.max(Math.min(parseInt(b, 10), 255), 0), a == null ? 1 : Math.max(Math.min(parseFloat(a), 255), 0)]; - } - _createClass(Color2, [{ - key: "toRgbString", - value: function toRgbString() { - var _this$values = _slicedToArray(this.values, 4), r = _this$values[0], g = _this$values[1], b = _this$values[2], a = _this$values[3]; - if (a === 1) { - return "rgb(".concat(r, ", ").concat(g, ", ").concat(b, ")"); - } - return "rgba(".concat(r, ", ").concat(g, ", ").concat(b, ", ").concat(a, ")"); - } - }, { - key: "toHslString", - value: function toHslString() { - var _this$toHslaArray = this.toHslaArray(), _this$toHslaArray2 = _slicedToArray(_this$toHslaArray, 4), h = _this$toHslaArray2[0], s = _this$toHslaArray2[1], l = _this$toHslaArray2[2], a = _this$toHslaArray2[3]; - if (a === 1) { - return "hsl(".concat(h, ", ").concat(s, "%, ").concat(l, "%)"); - } - return "hsla(".concat(h, ", ").concat(s, "%, ").concat(l, "%, ").concat(a, ")"); - } - }, { - key: "toHexString", - value: function toHexString() { - var _this$values2 = _slicedToArray(this.values, 4), r = _this$values2[0], g = _this$values2[1], b = _this$values2[2], a = _this$values2[3]; - r = Number(r).toString(16).padStart(2, "0"); - g = Number(g).toString(16).padStart(2, "0"); - b = Number(b).toString(16).padStart(2, "0"); - a = a < 1 ? parseInt(a * 255, 10).toString(16).padStart(2, "0") : ""; - return "#".concat(r).concat(g).concat(b).concat(a); - } - }, { - key: "toRgbaArray", - value: function toRgbaArray() { - return this.values; - } - }, { - key: "toHslaArray", - value: function toHslaArray() { - var _this$values3 = _slicedToArray(this.values, 4), r = _this$values3[0], g = _this$values3[1], b = _this$values3[2], a = _this$values3[3]; - var _rgbToHsl = rgbToHsl(r, g, b), _rgbToHsl2 = _slicedToArray(_rgbToHsl, 3), h = _rgbToHsl2[0], s = _rgbToHsl2[1], l = _rgbToHsl2[2]; - return [h, s, l, a]; - } - }]); - return Color2; - }(); - function fromRgba(_ref5) { - var _ref6 = _slicedToArray(_ref5, 4), r = _ref6[0], g = _ref6[1], b = _ref6[2], a = _ref6[3]; - return new Color([r, g, b, a]); - } - function fromRgb(_ref7) { - var _ref8 = _slicedToArray(_ref7, 3), r = _ref8[0], g = _ref8[1], b = _ref8[2]; - return fromRgba([r, g, b, 1]); - } - function fromHsla(_ref9) { - var _ref10 = _slicedToArray(_ref9, 4), h = _ref10[0], s = _ref10[1], l = _ref10[2], a = _ref10[3]; - var _hslToRgb = hslToRgb(h, s, l), _hslToRgb2 = _slicedToArray(_hslToRgb, 3), r = _hslToRgb2[0], g = _hslToRgb2[1], b = _hslToRgb2[2]; - return fromRgba([r, g, b, a]); - } - function fromHsl(_ref11) { - var _ref12 = _slicedToArray(_ref11, 3), h = _ref12[0], s = _ref12[1], l = _ref12[2]; - return fromHsla([h, s, l, 1]); - } - function fromHexString(str) { - var _ref13 = hex.exec(str) || shortHex.exec(str), _ref14 = _slicedToArray(_ref13, 5), r = _ref14[1], g = _ref14[2], b = _ref14[3], a = _ref14[4]; - r = parseInt(r.length < 2 ? r.repeat(2) : r, 16); - g = parseInt(g.length < 2 ? g.repeat(2) : g, 16); - b = parseInt(b.length < 2 ? b.repeat(2) : b, 16); - a = a && (parseInt(a.length < 2 ? a.repeat(2) : a, 16) / 255).toPrecision(1) || 1; - return fromRgba([r, g, b, a]); - } - function fromRgbString(str) { - var _ref15 = rgb.exec(str) || rgbperc.exec(str) || rgbfn.exec(str) || rgbpercfn.exec(str), _ref16 = _slicedToArray(_ref15, 5), r = _ref16[1], g = _ref16[2], b = _ref16[3], a = _ref16[4]; - r = contains2(r, "%") ? parseInt(r, 10) * 255 / 100 : parseInt(r, 10); - g = contains2(g, "%") ? parseInt(g, 10) * 255 / 100 : parseInt(g, 10); - b = contains2(b, "%") > 0 ? parseInt(b, 10) * 255 / 100 : parseInt(b, 10); - a = a === void 0 ? 1 : parseFloat(a) / (contains2(a, "%") ? 100 : 1); - return fromRgba([r, g, b, a]); - } - function fromHslString(str) { - var _hsl$exec = hsl.exec(str), _hsl$exec2 = _slicedToArray(_hsl$exec, 6), h = _hsl$exec2[1], unit = _hsl$exec2[2], s = _hsl$exec2[3], l = _hsl$exec2[4], a = _hsl$exec2[5]; - unit = unit || "deg"; - h = (0, _cssUnitConverter["default"])(parseFloat(h), unit, "deg"); - s = parseFloat(s); - l = parseFloat(l); - a = a === void 0 ? 1 : parseFloat(a) / (contains2(a, "%") ? 100 : 1); - return fromHsla([h, s, l, a]); - } - function fromString2(str) { - if (_colorName["default"][str]) { - return fromRgb(_colorName["default"][str]); - } - if (hex.test(str) || shortHex.test(str)) { - return fromHexString(str); - } - if (rgb.test(str) || rgbperc.test(str) || rgbfn.test(str) || rgbpercfn.test(str)) { - return fromRgbString(str); - } - if (hsl.test(str)) { - return fromHslString(str); - } - return null; - } - var _default = { - fromString: fromString2, - fromRgb, - fromRgba, - fromHsl, - fromHsla - }; - exports2["default"] = _default; - } -}); - -// node_modules/.pnpm/object-keys@1.1.1/node_modules/object-keys/isArguments.js -var require_isArguments = __commonJS({ - "node_modules/.pnpm/object-keys@1.1.1/node_modules/object-keys/isArguments.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var toStr = Object.prototype.toString; - module2.exports = function isArguments(value) { - var str = toStr.call(value); - var isArgs = str === "[object Arguments]"; - if (!isArgs) { - isArgs = str !== "[object Array]" && value !== null && typeof value === "object" && typeof value.length === "number" && value.length >= 0 && toStr.call(value.callee) === "[object Function]"; - } - return isArgs; - }; - } -}); - -// node_modules/.pnpm/object-keys@1.1.1/node_modules/object-keys/implementation.js -var require_implementation = __commonJS({ - "node_modules/.pnpm/object-keys@1.1.1/node_modules/object-keys/implementation.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var keysShim; - if (!Object.keys) { - has = Object.prototype.hasOwnProperty; - toStr = Object.prototype.toString; - isArgs = require_isArguments(); - isEnumerable = Object.prototype.propertyIsEnumerable; - hasDontEnumBug = !isEnumerable.call({ toString: null }, "toString"); - hasProtoEnumBug = isEnumerable.call(function() { - }, "prototype"); - dontEnums = [ - "toString", - "toLocaleString", - "valueOf", - "hasOwnProperty", - "isPrototypeOf", - "propertyIsEnumerable", - "constructor" - ]; - equalsConstructorPrototype = function(o) { - var ctor = o.constructor; - return ctor && ctor.prototype === o; - }; - excludedKeys = { - $applicationCache: true, - $console: true, - $external: true, - $frame: true, - $frameElement: true, - $frames: true, - $innerHeight: true, - $innerWidth: true, - $onmozfullscreenchange: true, - $onmozfullscreenerror: true, - $outerHeight: true, - $outerWidth: true, - $pageXOffset: true, - $pageYOffset: true, - $parent: true, - $scrollLeft: true, - $scrollTop: true, - $scrollX: true, - $scrollY: true, - $self: true, - $webkitIndexedDB: true, - $webkitStorageInfo: true, - $window: true - }; - hasAutomationEqualityBug = function() { - if (typeof window === "undefined") { - return false; - } - for (var k in window) { - try { - if (!excludedKeys["$" + k] && has.call(window, k) && window[k] !== null && typeof window[k] === "object") { - try { - equalsConstructorPrototype(window[k]); - } catch (e) { - return true; - } - } - } catch (e) { - return true; - } - } - return false; - }(); - equalsConstructorPrototypeIfNotBuggy = function(o) { - if (typeof window === "undefined" || !hasAutomationEqualityBug) { - return equalsConstructorPrototype(o); - } - try { - return equalsConstructorPrototype(o); - } catch (e) { - return false; - } - }; - keysShim = function keys(object) { - var isObject2 = object !== null && typeof object === "object"; - var isFunction2 = toStr.call(object) === "[object Function]"; - var isArguments = isArgs(object); - var isString = isObject2 && toStr.call(object) === "[object String]"; - var theKeys = []; - if (!isObject2 && !isFunction2 && !isArguments) { - throw new TypeError("Object.keys called on a non-object"); - } - var skipProto = hasProtoEnumBug && isFunction2; - if (isString && object.length > 0 && !has.call(object, 0)) { - for (var i = 0; i < object.length; ++i) { - theKeys.push(String(i)); - } - } - if (isArguments && object.length > 0) { - for (var j = 0; j < object.length; ++j) { - theKeys.push(String(j)); - } - } else { - for (var name in object) { - if (!(skipProto && name === "prototype") && has.call(object, name)) { - theKeys.push(String(name)); - } - } - } - if (hasDontEnumBug) { - var skipConstructor = equalsConstructorPrototypeIfNotBuggy(object); - for (var k = 0; k < dontEnums.length; ++k) { - if (!(skipConstructor && dontEnums[k] === "constructor") && has.call(object, dontEnums[k])) { - theKeys.push(dontEnums[k]); - } - } - } - return theKeys; - }; - } - var has; - var toStr; - var isArgs; - var isEnumerable; - var hasDontEnumBug; - var hasProtoEnumBug; - var dontEnums; - var equalsConstructorPrototype; - var excludedKeys; - var hasAutomationEqualityBug; - var equalsConstructorPrototypeIfNotBuggy; - module2.exports = keysShim; - } -}); - -// node_modules/.pnpm/object-keys@1.1.1/node_modules/object-keys/index.js -var require_object_keys = __commonJS({ - "node_modules/.pnpm/object-keys@1.1.1/node_modules/object-keys/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var slice = Array.prototype.slice; - var isArgs = require_isArguments(); - var origKeys = Object.keys; - var keysShim = origKeys ? function keys(o) { - return origKeys(o); - } : require_implementation(); - var originalKeys = Object.keys; - keysShim.shim = function shimObjectKeys() { - if (Object.keys) { - var keysWorksWithArguments = function() { - var args = Object.keys(arguments); - return args && args.length === arguments.length; - }(1, 2); - if (!keysWorksWithArguments) { - Object.keys = function keys(object) { - if (isArgs(object)) { - return originalKeys(slice.call(object)); - } - return originalKeys(object); - }; - } - } else { - Object.keys = keysShim; - } - return Object.keys || keysShim; - }; - module2.exports = keysShim; - } -}); - -// node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/index.js -var require_es_errors = __commonJS({ - "node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - module2.exports = Error; - } -}); - -// node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/eval.js -var require_eval = __commonJS({ - "node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/eval.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - module2.exports = EvalError; - } -}); - -// node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/range.js -var require_range = __commonJS({ - "node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/range.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - module2.exports = RangeError; - } -}); - -// node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/ref.js -var require_ref = __commonJS({ - "node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/ref.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - module2.exports = ReferenceError; - } -}); - -// node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/syntax.js -var require_syntax = __commonJS({ - "node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/syntax.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - module2.exports = SyntaxError; - } -}); - -// node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/type.js -var require_type = __commonJS({ - "node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/type.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - module2.exports = TypeError; - } -}); - -// node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/uri.js -var require_uri = __commonJS({ - "node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/uri.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - module2.exports = URIError; - } -}); - -// node_modules/.pnpm/has-symbols@1.0.3/node_modules/has-symbols/shams.js -var require_shams = __commonJS({ - "node_modules/.pnpm/has-symbols@1.0.3/node_modules/has-symbols/shams.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - module2.exports = function hasSymbols() { - if (typeof Symbol !== "function" || typeof Object.getOwnPropertySymbols !== "function") { - return false; - } - if (typeof Symbol.iterator === "symbol") { - return true; - } - var obj = {}; - var sym = Symbol("test"); - var symObj = Object(sym); - if (typeof sym === "string") { - return false; - } - if (Object.prototype.toString.call(sym) !== "[object Symbol]") { - return false; - } - if (Object.prototype.toString.call(symObj) !== "[object Symbol]") { - return false; - } - var symVal = 42; - obj[sym] = symVal; - for (sym in obj) { - return false; - } - if (typeof Object.keys === "function" && Object.keys(obj).length !== 0) { - return false; - } - if (typeof Object.getOwnPropertyNames === "function" && Object.getOwnPropertyNames(obj).length !== 0) { - return false; - } - var syms = Object.getOwnPropertySymbols(obj); - if (syms.length !== 1 || syms[0] !== sym) { - return false; - } - if (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { - return false; - } - if (typeof Object.getOwnPropertyDescriptor === "function") { - var descriptor = Object.getOwnPropertyDescriptor(obj, sym); - if (descriptor.value !== symVal || descriptor.enumerable !== true) { - return false; - } - } - return true; - }; - } -}); - -// node_modules/.pnpm/has-symbols@1.0.3/node_modules/has-symbols/index.js -var require_has_symbols = __commonJS({ - "node_modules/.pnpm/has-symbols@1.0.3/node_modules/has-symbols/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var origSymbol = typeof Symbol !== "undefined" && Symbol; - var hasSymbolSham = require_shams(); - module2.exports = function hasNativeSymbols() { - if (typeof origSymbol !== "function") { - return false; - } - if (typeof Symbol !== "function") { - return false; - } - if (typeof origSymbol("foo") !== "symbol") { - return false; - } - if (typeof Symbol("bar") !== "symbol") { - return false; - } - return hasSymbolSham(); - }; - } -}); - -// node_modules/.pnpm/has-proto@1.0.1/node_modules/has-proto/index.js -var require_has_proto = __commonJS({ - "node_modules/.pnpm/has-proto@1.0.1/node_modules/has-proto/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var test = { - foo: {} - }; - var $Object = Object; - module2.exports = function hasProto() { - return { __proto__: test }.foo === test.foo && !({ __proto__: null } instanceof $Object); - }; - } -}); - -// node_modules/.pnpm/function-bind@1.1.2/node_modules/function-bind/implementation.js -var require_implementation2 = __commonJS({ - "node_modules/.pnpm/function-bind@1.1.2/node_modules/function-bind/implementation.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var ERROR_MESSAGE = "Function.prototype.bind called on incompatible "; - var toStr = Object.prototype.toString; - var max = Math.max; - var funcType = "[object Function]"; - var concatty = function concatty2(a, b) { - var arr = []; - for (var i = 0; i < a.length; i += 1) { - arr[i] = a[i]; - } - for (var j = 0; j < b.length; j += 1) { - arr[j + a.length] = b[j]; - } - return arr; - }; - var slicy = function slicy2(arrLike, offset) { - var arr = []; - for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) { - arr[j] = arrLike[i]; - } - return arr; - }; - var joiny = function(arr, joiner) { - var str = ""; - for (var i = 0; i < arr.length; i += 1) { - str += arr[i]; - if (i + 1 < arr.length) { - str += joiner; - } - } - return str; - }; - module2.exports = function bind(that) { - var target = this; - if (typeof target !== "function" || toStr.apply(target) !== funcType) { - throw new TypeError(ERROR_MESSAGE + target); - } - var args = slicy(arguments, 1); - var bound; - var binder = function() { - if (this instanceof bound) { - var result = target.apply( - this, - concatty(args, arguments) - ); - if (Object(result) === result) { - return result; - } - return this; - } - return target.apply( - that, - concatty(args, arguments) - ); - }; - var boundLength = max(0, target.length - args.length); - var boundArgs = []; - for (var i = 0; i < boundLength; i++) { - boundArgs[i] = "$" + i; - } - bound = Function("binder", "return function (" + joiny(boundArgs, ",") + "){ return binder.apply(this,arguments); }")(binder); - if (target.prototype) { - var Empty = function Empty2() { - }; - Empty.prototype = target.prototype; - bound.prototype = new Empty(); - Empty.prototype = null; - } - return bound; - }; - } -}); - -// node_modules/.pnpm/function-bind@1.1.2/node_modules/function-bind/index.js -var require_function_bind = __commonJS({ - "node_modules/.pnpm/function-bind@1.1.2/node_modules/function-bind/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var implementation = require_implementation2(); - module2.exports = Function.prototype.bind || implementation; - } -}); - -// node_modules/.pnpm/hasown@2.0.1/node_modules/hasown/index.js -var require_hasown = __commonJS({ - "node_modules/.pnpm/hasown@2.0.1/node_modules/hasown/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var call = Function.prototype.call; - var $hasOwn = Object.prototype.hasOwnProperty; - var bind = require_function_bind(); - module2.exports = bind.call(call, $hasOwn); - } -}); - -// node_modules/.pnpm/get-intrinsic@1.2.4/node_modules/get-intrinsic/index.js -var require_get_intrinsic = __commonJS({ - "node_modules/.pnpm/get-intrinsic@1.2.4/node_modules/get-intrinsic/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var undefined2; - var $Error = require_es_errors(); - var $EvalError = require_eval(); - var $RangeError = require_range(); - var $ReferenceError = require_ref(); - var $SyntaxError = require_syntax(); - var $TypeError = require_type(); - var $URIError = require_uri(); - var $Function = Function; - var getEvalledConstructor = function(expressionSyntax) { - try { - return $Function('"use strict"; return (' + expressionSyntax + ").constructor;")(); - } catch (e) { - } - }; - var $gOPD = Object.getOwnPropertyDescriptor; - if ($gOPD) { - try { - $gOPD({}, ""); - } catch (e) { - $gOPD = null; - } - } - var throwTypeError = function() { - throw new $TypeError(); - }; - var ThrowTypeError = $gOPD ? function() { - try { - arguments.callee; - return throwTypeError; - } catch (calleeThrows) { - try { - return $gOPD(arguments, "callee").get; - } catch (gOPDthrows) { - return throwTypeError; - } - } - }() : throwTypeError; - var hasSymbols = require_has_symbols()(); - var hasProto = require_has_proto()(); - var getProto = Object.getPrototypeOf || (hasProto ? function(x) { - return x.__proto__; - } : null); - var needsEval = {}; - var TypedArray = typeof Uint8Array === "undefined" || !getProto ? undefined2 : getProto(Uint8Array); - var INTRINSICS = { - __proto__: null, - "%AggregateError%": typeof AggregateError === "undefined" ? undefined2 : AggregateError, - "%Array%": Array, - "%ArrayBuffer%": typeof ArrayBuffer === "undefined" ? undefined2 : ArrayBuffer, - "%ArrayIteratorPrototype%": hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined2, - "%AsyncFromSyncIteratorPrototype%": undefined2, - "%AsyncFunction%": needsEval, - "%AsyncGenerator%": needsEval, - "%AsyncGeneratorFunction%": needsEval, - "%AsyncIteratorPrototype%": needsEval, - "%Atomics%": typeof Atomics === "undefined" ? undefined2 : Atomics, - "%BigInt%": typeof BigInt === "undefined" ? undefined2 : BigInt, - "%BigInt64Array%": typeof BigInt64Array === "undefined" ? undefined2 : BigInt64Array, - "%BigUint64Array%": typeof BigUint64Array === "undefined" ? undefined2 : BigUint64Array, - "%Boolean%": Boolean, - "%DataView%": typeof DataView === "undefined" ? undefined2 : DataView, - "%Date%": Date, - "%decodeURI%": decodeURI, - "%decodeURIComponent%": decodeURIComponent, - "%encodeURI%": encodeURI, - "%encodeURIComponent%": encodeURIComponent, - "%Error%": $Error, - "%eval%": eval, - // eslint-disable-line no-eval - "%EvalError%": $EvalError, - "%Float32Array%": typeof Float32Array === "undefined" ? undefined2 : Float32Array, - "%Float64Array%": typeof Float64Array === "undefined" ? undefined2 : Float64Array, - "%FinalizationRegistry%": typeof FinalizationRegistry === "undefined" ? undefined2 : FinalizationRegistry, - "%Function%": $Function, - "%GeneratorFunction%": needsEval, - "%Int8Array%": typeof Int8Array === "undefined" ? undefined2 : Int8Array, - "%Int16Array%": typeof Int16Array === "undefined" ? undefined2 : Int16Array, - "%Int32Array%": typeof Int32Array === "undefined" ? undefined2 : Int32Array, - "%isFinite%": isFinite, - "%isNaN%": isNaN, - "%IteratorPrototype%": hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined2, - "%JSON%": typeof JSON === "object" ? JSON : undefined2, - "%Map%": typeof Map === "undefined" ? undefined2 : Map, - "%MapIteratorPrototype%": typeof Map === "undefined" || !hasSymbols || !getProto ? undefined2 : getProto((/* @__PURE__ */ new Map())[Symbol.iterator]()), - "%Math%": Math, - "%Number%": Number, - "%Object%": Object, - "%parseFloat%": parseFloat, - "%parseInt%": parseInt, - "%Promise%": typeof Promise === "undefined" ? undefined2 : Promise, - "%Proxy%": typeof Proxy === "undefined" ? undefined2 : Proxy, - "%RangeError%": $RangeError, - "%ReferenceError%": $ReferenceError, - "%Reflect%": typeof Reflect === "undefined" ? undefined2 : Reflect, - "%RegExp%": RegExp, - "%Set%": typeof Set === "undefined" ? undefined2 : Set, - "%SetIteratorPrototype%": typeof Set === "undefined" || !hasSymbols || !getProto ? undefined2 : getProto((/* @__PURE__ */ new Set())[Symbol.iterator]()), - "%SharedArrayBuffer%": typeof SharedArrayBuffer === "undefined" ? undefined2 : SharedArrayBuffer, - "%String%": String, - "%StringIteratorPrototype%": hasSymbols && getProto ? getProto(""[Symbol.iterator]()) : undefined2, - "%Symbol%": hasSymbols ? Symbol : undefined2, - "%SyntaxError%": $SyntaxError, - "%ThrowTypeError%": ThrowTypeError, - "%TypedArray%": TypedArray, - "%TypeError%": $TypeError, - "%Uint8Array%": typeof Uint8Array === "undefined" ? undefined2 : Uint8Array, - "%Uint8ClampedArray%": typeof Uint8ClampedArray === "undefined" ? undefined2 : Uint8ClampedArray, - "%Uint16Array%": typeof Uint16Array === "undefined" ? undefined2 : Uint16Array, - "%Uint32Array%": typeof Uint32Array === "undefined" ? undefined2 : Uint32Array, - "%URIError%": $URIError, - "%WeakMap%": typeof WeakMap === "undefined" ? undefined2 : WeakMap, - "%WeakRef%": typeof WeakRef === "undefined" ? undefined2 : WeakRef, - "%WeakSet%": typeof WeakSet === "undefined" ? undefined2 : WeakSet - }; - if (getProto) { - try { - null.error; - } catch (e) { - errorProto = getProto(getProto(e)); - INTRINSICS["%Error.prototype%"] = errorProto; - } - } - var errorProto; - var doEval = function doEval2(name) { - var value; - if (name === "%AsyncFunction%") { - value = getEvalledConstructor("async function () {}"); - } else if (name === "%GeneratorFunction%") { - value = getEvalledConstructor("function* () {}"); - } else if (name === "%AsyncGeneratorFunction%") { - value = getEvalledConstructor("async function* () {}"); - } else if (name === "%AsyncGenerator%") { - var fn = doEval2("%AsyncGeneratorFunction%"); - if (fn) { - value = fn.prototype; - } - } else if (name === "%AsyncIteratorPrototype%") { - var gen = doEval2("%AsyncGenerator%"); - if (gen && getProto) { - value = getProto(gen.prototype); - } - } - INTRINSICS[name] = value; - return value; - }; - var LEGACY_ALIASES = { - __proto__: null, - "%ArrayBufferPrototype%": ["ArrayBuffer", "prototype"], - "%ArrayPrototype%": ["Array", "prototype"], - "%ArrayProto_entries%": ["Array", "prototype", "entries"], - "%ArrayProto_forEach%": ["Array", "prototype", "forEach"], - "%ArrayProto_keys%": ["Array", "prototype", "keys"], - "%ArrayProto_values%": ["Array", "prototype", "values"], - "%AsyncFunctionPrototype%": ["AsyncFunction", "prototype"], - "%AsyncGenerator%": ["AsyncGeneratorFunction", "prototype"], - "%AsyncGeneratorPrototype%": ["AsyncGeneratorFunction", "prototype", "prototype"], - "%BooleanPrototype%": ["Boolean", "prototype"], - "%DataViewPrototype%": ["DataView", "prototype"], - "%DatePrototype%": ["Date", "prototype"], - "%ErrorPrototype%": ["Error", "prototype"], - "%EvalErrorPrototype%": ["EvalError", "prototype"], - "%Float32ArrayPrototype%": ["Float32Array", "prototype"], - "%Float64ArrayPrototype%": ["Float64Array", "prototype"], - "%FunctionPrototype%": ["Function", "prototype"], - "%Generator%": ["GeneratorFunction", "prototype"], - "%GeneratorPrototype%": ["GeneratorFunction", "prototype", "prototype"], - "%Int8ArrayPrototype%": ["Int8Array", "prototype"], - "%Int16ArrayPrototype%": ["Int16Array", "prototype"], - "%Int32ArrayPrototype%": ["Int32Array", "prototype"], - "%JSONParse%": ["JSON", "parse"], - "%JSONStringify%": ["JSON", "stringify"], - "%MapPrototype%": ["Map", "prototype"], - "%NumberPrototype%": ["Number", "prototype"], - "%ObjectPrototype%": ["Object", "prototype"], - "%ObjProto_toString%": ["Object", "prototype", "toString"], - "%ObjProto_valueOf%": ["Object", "prototype", "valueOf"], - "%PromisePrototype%": ["Promise", "prototype"], - "%PromiseProto_then%": ["Promise", "prototype", "then"], - "%Promise_all%": ["Promise", "all"], - "%Promise_reject%": ["Promise", "reject"], - "%Promise_resolve%": ["Promise", "resolve"], - "%RangeErrorPrototype%": ["RangeError", "prototype"], - "%ReferenceErrorPrototype%": ["ReferenceError", "prototype"], - "%RegExpPrototype%": ["RegExp", "prototype"], - "%SetPrototype%": ["Set", "prototype"], - "%SharedArrayBufferPrototype%": ["SharedArrayBuffer", "prototype"], - "%StringPrototype%": ["String", "prototype"], - "%SymbolPrototype%": ["Symbol", "prototype"], - "%SyntaxErrorPrototype%": ["SyntaxError", "prototype"], - "%TypedArrayPrototype%": ["TypedArray", "prototype"], - "%TypeErrorPrototype%": ["TypeError", "prototype"], - "%Uint8ArrayPrototype%": ["Uint8Array", "prototype"], - "%Uint8ClampedArrayPrototype%": ["Uint8ClampedArray", "prototype"], - "%Uint16ArrayPrototype%": ["Uint16Array", "prototype"], - "%Uint32ArrayPrototype%": ["Uint32Array", "prototype"], - "%URIErrorPrototype%": ["URIError", "prototype"], - "%WeakMapPrototype%": ["WeakMap", "prototype"], - "%WeakSetPrototype%": ["WeakSet", "prototype"] - }; - var bind = require_function_bind(); - var hasOwn = require_hasown(); - var $concat = bind.call(Function.call, Array.prototype.concat); - var $spliceApply = bind.call(Function.apply, Array.prototype.splice); - var $replace = bind.call(Function.call, String.prototype.replace); - var $strSlice = bind.call(Function.call, String.prototype.slice); - var $exec = bind.call(Function.call, RegExp.prototype.exec); - var rePropName = /[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g; - var reEscapeChar = /\\(\\)?/g; - var stringToPath = function stringToPath2(string) { - var first2 = $strSlice(string, 0, 1); - var last2 = $strSlice(string, -1); - if (first2 === "%" && last2 !== "%") { - throw new $SyntaxError("invalid intrinsic syntax, expected closing `%`"); - } else if (last2 === "%" && first2 !== "%") { - throw new $SyntaxError("invalid intrinsic syntax, expected opening `%`"); - } - var result = []; - $replace(string, rePropName, function(match, number, quote, subString) { - result[result.length] = quote ? $replace(subString, reEscapeChar, "$1") : number || match; - }); - return result; - }; - var getBaseIntrinsic = function getBaseIntrinsic2(name, allowMissing) { - var intrinsicName = name; - var alias; - if (hasOwn(LEGACY_ALIASES, intrinsicName)) { - alias = LEGACY_ALIASES[intrinsicName]; - intrinsicName = "%" + alias[0] + "%"; - } - if (hasOwn(INTRINSICS, intrinsicName)) { - var value = INTRINSICS[intrinsicName]; - if (value === needsEval) { - value = doEval(intrinsicName); - } - if (typeof value === "undefined" && !allowMissing) { - throw new $TypeError("intrinsic " + name + " exists, but is not available. Please file an issue!"); - } - return { - alias, - name: intrinsicName, - value - }; - } - throw new $SyntaxError("intrinsic " + name + " does not exist!"); - }; - module2.exports = function GetIntrinsic(name, allowMissing) { - if (typeof name !== "string" || name.length === 0) { - throw new $TypeError("intrinsic name must be a non-empty string"); - } - if (arguments.length > 1 && typeof allowMissing !== "boolean") { - throw new $TypeError('"allowMissing" argument must be a boolean'); - } - if ($exec(/^%?[^%]*%?$/, name) === null) { - throw new $SyntaxError("`%` may not be present anywhere but at the beginning and end of the intrinsic name"); - } - var parts = stringToPath(name); - var intrinsicBaseName = parts.length > 0 ? parts[0] : ""; - var intrinsic = getBaseIntrinsic("%" + intrinsicBaseName + "%", allowMissing); - var intrinsicRealName = intrinsic.name; - var value = intrinsic.value; - var skipFurtherCaching = false; - var alias = intrinsic.alias; - if (alias) { - intrinsicBaseName = alias[0]; - $spliceApply(parts, $concat([0, 1], alias)); - } - for (var i = 1, isOwn = true; i < parts.length; i += 1) { - var part = parts[i]; - var first2 = $strSlice(part, 0, 1); - var last2 = $strSlice(part, -1); - if ((first2 === '"' || first2 === "'" || first2 === "`" || (last2 === '"' || last2 === "'" || last2 === "`")) && first2 !== last2) { - throw new $SyntaxError("property names with quotes must have matching quotes"); - } - if (part === "constructor" || !isOwn) { - skipFurtherCaching = true; - } - intrinsicBaseName += "." + part; - intrinsicRealName = "%" + intrinsicBaseName + "%"; - if (hasOwn(INTRINSICS, intrinsicRealName)) { - value = INTRINSICS[intrinsicRealName]; - } else if (value != null) { - if (!(part in value)) { - if (!allowMissing) { - throw new $TypeError("base intrinsic for " + name + " exists, but the property is not available."); - } - return void 0; - } - if ($gOPD && i + 1 >= parts.length) { - var desc = $gOPD(value, part); - isOwn = !!desc; - if (isOwn && "get" in desc && !("originalValue" in desc.get)) { - value = desc.get; - } else { - value = value[part]; - } - } else { - isOwn = hasOwn(value, part); - value = value[part]; - } - if (isOwn && !skipFurtherCaching) { - INTRINSICS[intrinsicRealName] = value; - } - } - } - return value; - }; - } -}); - -// node_modules/.pnpm/has-property-descriptors@1.0.1/node_modules/has-property-descriptors/index.js -var require_has_property_descriptors = __commonJS({ - "node_modules/.pnpm/has-property-descriptors@1.0.1/node_modules/has-property-descriptors/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var GetIntrinsic = require_get_intrinsic(); - var $defineProperty = GetIntrinsic("%Object.defineProperty%", true); - var hasPropertyDescriptors = function hasPropertyDescriptors2() { - if ($defineProperty) { - try { - $defineProperty({}, "a", { value: 1 }); - return true; - } catch (e) { - return false; - } - } - return false; - }; - hasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() { - if (!hasPropertyDescriptors()) { - return null; - } - try { - return $defineProperty([], "length", { value: 1 }).length !== 1; - } catch (e) { - return true; - } - }; - module2.exports = hasPropertyDescriptors; - } -}); - -// node_modules/.pnpm/gopd@1.0.1/node_modules/gopd/index.js -var require_gopd = __commonJS({ - "node_modules/.pnpm/gopd@1.0.1/node_modules/gopd/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var GetIntrinsic = require_get_intrinsic(); - var $gOPD = GetIntrinsic("%Object.getOwnPropertyDescriptor%", true); - if ($gOPD) { - try { - $gOPD([], "length"); - } catch (e) { - $gOPD = null; - } - } - module2.exports = $gOPD; - } -}); - -// node_modules/.pnpm/define-data-property@1.1.2/node_modules/define-data-property/index.js -var require_define_data_property = __commonJS({ - "node_modules/.pnpm/define-data-property@1.1.2/node_modules/define-data-property/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var hasPropertyDescriptors = require_has_property_descriptors()(); - var GetIntrinsic = require_get_intrinsic(); - var $defineProperty = hasPropertyDescriptors && GetIntrinsic("%Object.defineProperty%", true); - if ($defineProperty) { - try { - $defineProperty({}, "a", { value: 1 }); - } catch (e) { - $defineProperty = false; - } - } - var $SyntaxError = require_syntax(); - var $TypeError = require_type(); - var gopd = require_gopd(); - module2.exports = function defineDataProperty(obj, property, value) { - if (!obj || typeof obj !== "object" && typeof obj !== "function") { - throw new $TypeError("`obj` must be an object or a function`"); - } - if (typeof property !== "string" && typeof property !== "symbol") { - throw new $TypeError("`property` must be a string or a symbol`"); - } - if (arguments.length > 3 && typeof arguments[3] !== "boolean" && arguments[3] !== null) { - throw new $TypeError("`nonEnumerable`, if provided, must be a boolean or null"); - } - if (arguments.length > 4 && typeof arguments[4] !== "boolean" && arguments[4] !== null) { - throw new $TypeError("`nonWritable`, if provided, must be a boolean or null"); - } - if (arguments.length > 5 && typeof arguments[5] !== "boolean" && arguments[5] !== null) { - throw new $TypeError("`nonConfigurable`, if provided, must be a boolean or null"); - } - if (arguments.length > 6 && typeof arguments[6] !== "boolean") { - throw new $TypeError("`loose`, if provided, must be a boolean"); - } - var nonEnumerable = arguments.length > 3 ? arguments[3] : null; - var nonWritable = arguments.length > 4 ? arguments[4] : null; - var nonConfigurable = arguments.length > 5 ? arguments[5] : null; - var loose = arguments.length > 6 ? arguments[6] : false; - var desc = !!gopd && gopd(obj, property); - if ($defineProperty) { - $defineProperty(obj, property, { - configurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable, - enumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable, - value, - writable: nonWritable === null && desc ? desc.writable : !nonWritable - }); - } else if (loose || !nonEnumerable && !nonWritable && !nonConfigurable) { - obj[property] = value; - } else { - throw new $SyntaxError("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable."); - } - }; - } -}); - -// node_modules/.pnpm/define-properties@1.2.1/node_modules/define-properties/index.js -var require_define_properties = __commonJS({ - "node_modules/.pnpm/define-properties@1.2.1/node_modules/define-properties/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var keys = require_object_keys(); - var hasSymbols = typeof Symbol === "function" && typeof Symbol("foo") === "symbol"; - var toStr = Object.prototype.toString; - var concat = Array.prototype.concat; - var defineDataProperty = require_define_data_property(); - var isFunction2 = function(fn) { - return typeof fn === "function" && toStr.call(fn) === "[object Function]"; - }; - var supportsDescriptors = require_has_property_descriptors()(); - var defineProperty = function(object, name, value, predicate) { - if (name in object) { - if (predicate === true) { - if (object[name] === value) { - return; - } - } else if (!isFunction2(predicate) || !predicate()) { - return; - } - } - if (supportsDescriptors) { - defineDataProperty(object, name, value, true); - } else { - defineDataProperty(object, name, value); - } - }; - var defineProperties = function(object, map) { - var predicates = arguments.length > 2 ? arguments[2] : {}; - var props = keys(map); - if (hasSymbols) { - props = concat.call(props, Object.getOwnPropertySymbols(map)); - } - for (var i = 0; i < props.length; i += 1) { - defineProperty(object, props[i], map[props[i]], predicates[props[i]]); - } - }; - defineProperties.supportsDescriptors = !!supportsDescriptors; - module2.exports = defineProperties; - } -}); - -// node_modules/.pnpm/set-function-length@1.2.1/node_modules/set-function-length/index.js -var require_set_function_length = __commonJS({ - "node_modules/.pnpm/set-function-length@1.2.1/node_modules/set-function-length/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var GetIntrinsic = require_get_intrinsic(); - var define2 = require_define_data_property(); - var hasDescriptors = require_has_property_descriptors()(); - var gOPD = require_gopd(); - var $TypeError = require_type(); - var $floor = GetIntrinsic("%Math.floor%"); - module2.exports = function setFunctionLength(fn, length) { - if (typeof fn !== "function") { - throw new $TypeError("`fn` is not a function"); - } - if (typeof length !== "number" || length < 0 || length > 4294967295 || $floor(length) !== length) { - throw new $TypeError("`length` must be a positive 32-bit integer"); - } - var loose = arguments.length > 2 && !!arguments[2]; - var functionLengthIsConfigurable = true; - var functionLengthIsWritable = true; - if ("length" in fn && gOPD) { - var desc = gOPD(fn, "length"); - if (desc && !desc.configurable) { - functionLengthIsConfigurable = false; - } - if (desc && !desc.writable) { - functionLengthIsWritable = false; - } - } - if (functionLengthIsConfigurable || functionLengthIsWritable || !loose) { - if (hasDescriptors) { - define2( - /** @type {Parameters[0]} */ - fn, - "length", - length, - true, - true - ); - } else { - define2( - /** @type {Parameters[0]} */ - fn, - "length", - length - ); - } - } - return fn; - }; - } -}); - -// node_modules/.pnpm/call-bind@1.0.6/node_modules/call-bind/index.js -var require_call_bind = __commonJS({ - "node_modules/.pnpm/call-bind@1.0.6/node_modules/call-bind/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var bind = require_function_bind(); - var GetIntrinsic = require_get_intrinsic(); - var setFunctionLength = require_set_function_length(); - var $TypeError = require_type(); - var $apply = GetIntrinsic("%Function.prototype.apply%"); - var $call = GetIntrinsic("%Function.prototype.call%"); - var $reflectApply = GetIntrinsic("%Reflect.apply%", true) || bind.call($call, $apply); - var $defineProperty = GetIntrinsic("%Object.defineProperty%", true); - var $max = GetIntrinsic("%Math.max%"); - if ($defineProperty) { - try { - $defineProperty({}, "a", { value: 1 }); - } catch (e) { - $defineProperty = null; - } - } - module2.exports = function callBind(originalFunction) { - if (typeof originalFunction !== "function") { - throw new $TypeError("a function is required"); - } - var func = $reflectApply(bind, $call, arguments); - return setFunctionLength( - func, - 1 + $max(0, originalFunction.length - (arguments.length - 1)), - true - ); - }; - var applyBind = function applyBind2() { - return $reflectApply(bind, $apply, arguments); - }; - if ($defineProperty) { - $defineProperty(module2.exports, "apply", { value: applyBind }); - } else { - module2.exports.apply = applyBind; - } - } -}); - -// node_modules/.pnpm/call-bind@1.0.6/node_modules/call-bind/callBound.js -var require_callBound = __commonJS({ - "node_modules/.pnpm/call-bind@1.0.6/node_modules/call-bind/callBound.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var GetIntrinsic = require_get_intrinsic(); - var callBind = require_call_bind(); - var $indexOf = callBind(GetIntrinsic("String.prototype.indexOf")); - module2.exports = function callBoundIntrinsic(name, allowMissing) { - var intrinsic = GetIntrinsic(name, !!allowMissing); - if (typeof intrinsic === "function" && $indexOf(name, ".prototype.") > -1) { - return callBind(intrinsic); - } - return intrinsic; - }; - } -}); - -// node_modules/.pnpm/object.assign@4.1.5/node_modules/object.assign/implementation.js -var require_implementation3 = __commonJS({ - "node_modules/.pnpm/object.assign@4.1.5/node_modules/object.assign/implementation.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var objectKeys = require_object_keys(); - var hasSymbols = require_shams()(); - var callBound = require_callBound(); - var toObject = Object; - var $push = callBound("Array.prototype.push"); - var $propIsEnumerable = callBound("Object.prototype.propertyIsEnumerable"); - var originalGetSymbols = hasSymbols ? Object.getOwnPropertySymbols : null; - module2.exports = function assign2(target, source1) { - if (target == null) { - throw new TypeError("target must be an object"); - } - var to = toObject(target); - if (arguments.length === 1) { - return to; - } - for (var s = 1; s < arguments.length; ++s) { - var from = toObject(arguments[s]); - var keys = objectKeys(from); - var getSymbols = hasSymbols && (Object.getOwnPropertySymbols || originalGetSymbols); - if (getSymbols) { - var syms = getSymbols(from); - for (var j = 0; j < syms.length; ++j) { - var key2 = syms[j]; - if ($propIsEnumerable(from, key2)) { - $push(keys, key2); - } - } - } - for (var i = 0; i < keys.length; ++i) { - var nextKey = keys[i]; - if ($propIsEnumerable(from, nextKey)) { - var propValue = from[nextKey]; - to[nextKey] = propValue; - } - } - } - return to; - }; - } -}); - -// node_modules/.pnpm/object.assign@4.1.5/node_modules/object.assign/polyfill.js -var require_polyfill = __commonJS({ - "node_modules/.pnpm/object.assign@4.1.5/node_modules/object.assign/polyfill.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var implementation = require_implementation3(); - var lacksProperEnumerationOrder = function() { - if (!Object.assign) { - return false; - } - var str = "abcdefghijklmnopqrst"; - var letters = str.split(""); - var map = {}; - for (var i = 0; i < letters.length; ++i) { - map[letters[i]] = letters[i]; - } - var obj = Object.assign({}, map); - var actual = ""; - for (var k in obj) { - actual += k; - } - return str !== actual; - }; - var assignHasPendingExceptions = function() { - if (!Object.assign || !Object.preventExtensions) { - return false; - } - var thrower = Object.preventExtensions({ 1: 2 }); - try { - Object.assign(thrower, "xy"); - } catch (e) { - return thrower[1] === "y"; - } - return false; - }; - module2.exports = function getPolyfill() { - if (!Object.assign) { - return implementation; - } - if (lacksProperEnumerationOrder()) { - return implementation; - } - if (assignHasPendingExceptions()) { - return implementation; - } - return Object.assign; - }; - } -}); - -// node_modules/.pnpm/object.assign@4.1.5/node_modules/object.assign/shim.js -var require_shim = __commonJS({ - "node_modules/.pnpm/object.assign@4.1.5/node_modules/object.assign/shim.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var define2 = require_define_properties(); - var getPolyfill = require_polyfill(); - module2.exports = function shimAssign() { - var polyfill = getPolyfill(); - define2( - Object, - { assign: polyfill }, - { assign: function() { - return Object.assign !== polyfill; - } } - ); - return polyfill; - }; - } -}); - -// node_modules/.pnpm/object.assign@4.1.5/node_modules/object.assign/index.js -var require_object = __commonJS({ - "node_modules/.pnpm/object.assign@4.1.5/node_modules/object.assign/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var defineProperties = require_define_properties(); - var callBind = require_call_bind(); - var implementation = require_implementation3(); - var getPolyfill = require_polyfill(); - var shim = require_shim(); - var polyfill = callBind.apply(getPolyfill()); - var bound = function assign2(target, source1) { - return polyfill(Object, arguments); - }; - defineProperties(bound, { - getPolyfill, - implementation, - shim - }); - module2.exports = bound; - } -}); - -// node_modules/.pnpm/functions-have-names@1.2.3/node_modules/functions-have-names/index.js -var require_functions_have_names = __commonJS({ - "node_modules/.pnpm/functions-have-names@1.2.3/node_modules/functions-have-names/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var functionsHaveNames = function functionsHaveNames2() { - return typeof function f() { - }.name === "string"; - }; - var gOPD = Object.getOwnPropertyDescriptor; - if (gOPD) { - try { - gOPD([], "length"); - } catch (e) { - gOPD = null; - } - } - functionsHaveNames.functionsHaveConfigurableNames = function functionsHaveConfigurableNames() { - if (!functionsHaveNames() || !gOPD) { - return false; - } - var desc = gOPD(function() { - }, "name"); - return !!desc && !!desc.configurable; - }; - var $bind = Function.prototype.bind; - functionsHaveNames.boundFunctionsHaveNames = function boundFunctionsHaveNames() { - return functionsHaveNames() && typeof $bind === "function" && function f() { - }.bind().name !== ""; - }; - module2.exports = functionsHaveNames; - } -}); - -// node_modules/.pnpm/set-function-name@2.0.1/node_modules/set-function-name/index.js -var require_set_function_name = __commonJS({ - "node_modules/.pnpm/set-function-name@2.0.1/node_modules/set-function-name/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var define2 = require_define_data_property(); - var hasDescriptors = require_has_property_descriptors()(); - var functionsHaveConfigurableNames = require_functions_have_names().functionsHaveConfigurableNames(); - var $TypeError = TypeError; - module2.exports = function setFunctionName(fn, name) { - if (typeof fn !== "function") { - throw new $TypeError("`fn` is not a function"); - } - var loose = arguments.length > 2 && !!arguments[2]; - if (!loose || functionsHaveConfigurableNames) { - if (hasDescriptors) { - define2(fn, "name", name, true, true); - } else { - define2(fn, "name", name); - } - } - return fn; - }; - } -}); - -// node_modules/.pnpm/regexp.prototype.flags@1.5.2/node_modules/regexp.prototype.flags/implementation.js -var require_implementation4 = __commonJS({ - "node_modules/.pnpm/regexp.prototype.flags@1.5.2/node_modules/regexp.prototype.flags/implementation.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var setFunctionName = require_set_function_name(); - var $TypeError = require_type(); - var $Object = Object; - module2.exports = setFunctionName(function flags() { - if (this == null || this !== $Object(this)) { - throw new $TypeError("RegExp.prototype.flags getter called on non-object"); - } - var result = ""; - if (this.hasIndices) { - result += "d"; - } - if (this.global) { - result += "g"; - } - if (this.ignoreCase) { - result += "i"; - } - if (this.multiline) { - result += "m"; - } - if (this.dotAll) { - result += "s"; - } - if (this.unicode) { - result += "u"; - } - if (this.unicodeSets) { - result += "v"; - } - if (this.sticky) { - result += "y"; - } - return result; - }, "get flags", true); - } -}); - -// node_modules/.pnpm/regexp.prototype.flags@1.5.2/node_modules/regexp.prototype.flags/polyfill.js -var require_polyfill2 = __commonJS({ - "node_modules/.pnpm/regexp.prototype.flags@1.5.2/node_modules/regexp.prototype.flags/polyfill.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var implementation = require_implementation4(); - var supportsDescriptors = require_define_properties().supportsDescriptors; - var $gOPD = Object.getOwnPropertyDescriptor; - module2.exports = function getPolyfill() { - if (supportsDescriptors && /a/mig.flags === "gim") { - var descriptor = $gOPD(RegExp.prototype, "flags"); - if (descriptor && typeof descriptor.get === "function" && typeof RegExp.prototype.dotAll === "boolean" && typeof RegExp.prototype.hasIndices === "boolean") { - var calls = ""; - var o = {}; - Object.defineProperty(o, "hasIndices", { - get: function() { - calls += "d"; - } - }); - Object.defineProperty(o, "sticky", { - get: function() { - calls += "y"; - } - }); - if (calls === "dy") { - return descriptor.get; - } - } - } - return implementation; - }; - } -}); - -// node_modules/.pnpm/regexp.prototype.flags@1.5.2/node_modules/regexp.prototype.flags/shim.js -var require_shim2 = __commonJS({ - "node_modules/.pnpm/regexp.prototype.flags@1.5.2/node_modules/regexp.prototype.flags/shim.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var supportsDescriptors = require_define_properties().supportsDescriptors; - var getPolyfill = require_polyfill2(); - var gOPD = Object.getOwnPropertyDescriptor; - var defineProperty = Object.defineProperty; - var TypeErr = TypeError; - var getProto = Object.getPrototypeOf; - var regex2 = /a/; - module2.exports = function shimFlags() { - if (!supportsDescriptors || !getProto) { - throw new TypeErr("RegExp.prototype.flags requires a true ES5 environment that supports property descriptors"); - } - var polyfill = getPolyfill(); - var proto = getProto(regex2); - var descriptor = gOPD(proto, "flags"); - if (!descriptor || descriptor.get !== polyfill) { - defineProperty(proto, "flags", { - configurable: true, - enumerable: false, - get: polyfill - }); - } - return polyfill; - }; - } -}); - -// node_modules/.pnpm/regexp.prototype.flags@1.5.2/node_modules/regexp.prototype.flags/index.js -var require_regexp_prototype = __commonJS({ - "node_modules/.pnpm/regexp.prototype.flags@1.5.2/node_modules/regexp.prototype.flags/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var define2 = require_define_properties(); - var callBind = require_call_bind(); - var implementation = require_implementation4(); - var getPolyfill = require_polyfill2(); - var shim = require_shim2(); - var flagsBound = callBind(getPolyfill()); - define2(flagsBound, { - getPolyfill, - implementation, - shim - }); - module2.exports = flagsBound; - } -}); - -// node_modules/.pnpm/has-tostringtag@1.0.2/node_modules/has-tostringtag/shams.js -var require_shams2 = __commonJS({ - "node_modules/.pnpm/has-tostringtag@1.0.2/node_modules/has-tostringtag/shams.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var hasSymbols = require_shams(); - module2.exports = function hasToStringTagShams() { - return hasSymbols() && !!Symbol.toStringTag; - }; - } -}); - -// node_modules/.pnpm/is-arguments@1.1.1/node_modules/is-arguments/index.js -var require_is_arguments = __commonJS({ - "node_modules/.pnpm/is-arguments@1.1.1/node_modules/is-arguments/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var hasToStringTag = require_shams2()(); - var callBound = require_callBound(); - var $toString = callBound("Object.prototype.toString"); - var isStandardArguments = function isArguments(value) { - if (hasToStringTag && value && typeof value === "object" && Symbol.toStringTag in value) { - return false; - } - return $toString(value) === "[object Arguments]"; - }; - var isLegacyArguments = function isArguments(value) { - if (isStandardArguments(value)) { - return true; - } - return value !== null && typeof value === "object" && typeof value.length === "number" && value.length >= 0 && $toString(value) !== "[object Array]" && $toString(value.callee) === "[object Function]"; - }; - var supportsStandardArguments = function() { - return isStandardArguments(arguments); - }(); - isStandardArguments.isLegacyArguments = isLegacyArguments; - module2.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments; - } -}); - -// (disabled):node_modules/.pnpm/object-inspect@1.13.1/node_modules/object-inspect/util.inspect -var require_util = __commonJS({ - "(disabled):node_modules/.pnpm/object-inspect@1.13.1/node_modules/object-inspect/util.inspect"() { - init_polyfill_buffer(); - } -}); - -// node_modules/.pnpm/object-inspect@1.13.1/node_modules/object-inspect/index.js -var require_object_inspect = __commonJS({ - "node_modules/.pnpm/object-inspect@1.13.1/node_modules/object-inspect/index.js"(exports2, module2) { - init_polyfill_buffer(); - var hasMap = typeof Map === "function" && Map.prototype; - var mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, "size") : null; - var mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === "function" ? mapSizeDescriptor.get : null; - var mapForEach = hasMap && Map.prototype.forEach; - var hasSet = typeof Set === "function" && Set.prototype; - var setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, "size") : null; - var setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === "function" ? setSizeDescriptor.get : null; - var setForEach = hasSet && Set.prototype.forEach; - var hasWeakMap = typeof WeakMap === "function" && WeakMap.prototype; - var weakMapHas = hasWeakMap ? WeakMap.prototype.has : null; - var hasWeakSet = typeof WeakSet === "function" && WeakSet.prototype; - var weakSetHas = hasWeakSet ? WeakSet.prototype.has : null; - var hasWeakRef = typeof WeakRef === "function" && WeakRef.prototype; - var weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null; - var booleanValueOf = Boolean.prototype.valueOf; - var objectToString2 = Object.prototype.toString; - var functionToString = Function.prototype.toString; - var $match = String.prototype.match; - var $slice = String.prototype.slice; - var $replace = String.prototype.replace; - var $toUpperCase = String.prototype.toUpperCase; - var $toLowerCase = String.prototype.toLowerCase; - var $test = RegExp.prototype.test; - var $concat = Array.prototype.concat; - var $join = Array.prototype.join; - var $arrSlice = Array.prototype.slice; - var $floor = Math.floor; - var bigIntValueOf = typeof BigInt === "function" ? BigInt.prototype.valueOf : null; - var gOPS = Object.getOwnPropertySymbols; - var symToString = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? Symbol.prototype.toString : null; - var hasShammedSymbols = typeof Symbol === "function" && typeof Symbol.iterator === "object"; - var toStringTag = typeof Symbol === "function" && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? "object" : "symbol") ? Symbol.toStringTag : null; - var isEnumerable = Object.prototype.propertyIsEnumerable; - var gPO = (typeof Reflect === "function" ? Reflect.getPrototypeOf : Object.getPrototypeOf) || ([].__proto__ === Array.prototype ? function(O) { - return O.__proto__; - } : null); - function addNumericSeparator(num2, str) { - if (num2 === Infinity || num2 === -Infinity || num2 !== num2 || num2 && num2 > -1e3 && num2 < 1e3 || $test.call(/e/, str)) { - return str; - } - var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g; - if (typeof num2 === "number") { - var int = num2 < 0 ? -$floor(-num2) : $floor(num2); - if (int !== num2) { - var intStr = String(int); - var dec = $slice.call(str, intStr.length + 1); - return $replace.call(intStr, sepRegex, "$&_") + "." + $replace.call($replace.call(dec, /([0-9]{3})/g, "$&_"), /_$/, ""); - } - } - return $replace.call(str, sepRegex, "$&_"); - } - var utilInspect = require_util(); - var inspectCustom = utilInspect.custom; - var inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null; - module2.exports = function inspect_(obj, options, depth, seen) { - var opts = options || {}; - if (has(opts, "quoteStyle") && (opts.quoteStyle !== "single" && opts.quoteStyle !== "double")) { - throw new TypeError('option "quoteStyle" must be "single" or "double"'); - } - if (has(opts, "maxStringLength") && (typeof opts.maxStringLength === "number" ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity : opts.maxStringLength !== null)) { - throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`'); - } - var customInspect = has(opts, "customInspect") ? opts.customInspect : true; - if (typeof customInspect !== "boolean" && customInspect !== "symbol") { - throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`"); - } - if (has(opts, "indent") && opts.indent !== null && opts.indent !== " " && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)) { - throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`'); - } - if (has(opts, "numericSeparator") && typeof opts.numericSeparator !== "boolean") { - throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`'); - } - var numericSeparator = opts.numericSeparator; - if (typeof obj === "undefined") { - return "undefined"; - } - if (obj === null) { - return "null"; - } - if (typeof obj === "boolean") { - return obj ? "true" : "false"; - } - if (typeof obj === "string") { - return inspectString(obj, opts); - } - if (typeof obj === "number") { - if (obj === 0) { - return Infinity / obj > 0 ? "0" : "-0"; - } - var str = String(obj); - return numericSeparator ? addNumericSeparator(obj, str) : str; - } - if (typeof obj === "bigint") { - var bigIntStr = String(obj) + "n"; - return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr; - } - var maxDepth = typeof opts.depth === "undefined" ? 5 : opts.depth; - if (typeof depth === "undefined") { - depth = 0; - } - if (depth >= maxDepth && maxDepth > 0 && typeof obj === "object") { - return isArray(obj) ? "[Array]" : "[Object]"; - } - var indent2 = getIndent(opts, depth); - if (typeof seen === "undefined") { - seen = []; - } else if (indexOf(seen, obj) >= 0) { - return "[Circular]"; - } - function inspect(value, from, noIndent) { - if (from) { - seen = $arrSlice.call(seen); - seen.push(from); - } - if (noIndent) { - var newOpts = { - depth: opts.depth - }; - if (has(opts, "quoteStyle")) { - newOpts.quoteStyle = opts.quoteStyle; - } - return inspect_(value, newOpts, depth + 1, seen); - } - return inspect_(value, opts, depth + 1, seen); - } - if (typeof obj === "function" && !isRegExp(obj)) { - var name = nameOf(obj); - var keys = arrObjKeys(obj, inspect); - return "[Function" + (name ? ": " + name : " (anonymous)") + "]" + (keys.length > 0 ? " { " + $join.call(keys, ", ") + " }" : ""); - } - if (isSymbol(obj)) { - var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\(.*\))_[^)]*$/, "$1") : symToString.call(obj); - return typeof obj === "object" && !hasShammedSymbols ? markBoxed(symString) : symString; - } - if (isElement(obj)) { - var s = "<" + $toLowerCase.call(String(obj.nodeName)); - var attrs = obj.attributes || []; - for (var i = 0; i < attrs.length; i++) { - s += " " + attrs[i].name + "=" + wrapQuotes(quote(attrs[i].value), "double", opts); - } - s += ">"; - if (obj.childNodes && obj.childNodes.length) { - s += "..."; - } - s += ""; - return s; - } - if (isArray(obj)) { - if (obj.length === 0) { - return "[]"; - } - var xs = arrObjKeys(obj, inspect); - if (indent2 && !singleLineValues(xs)) { - return "[" + indentedJoin(xs, indent2) + "]"; - } - return "[ " + $join.call(xs, ", ") + " ]"; - } - if (isError(obj)) { - var parts = arrObjKeys(obj, inspect); - if (!("cause" in Error.prototype) && "cause" in obj && !isEnumerable.call(obj, "cause")) { - return "{ [" + String(obj) + "] " + $join.call($concat.call("[cause]: " + inspect(obj.cause), parts), ", ") + " }"; - } - if (parts.length === 0) { - return "[" + String(obj) + "]"; - } - return "{ [" + String(obj) + "] " + $join.call(parts, ", ") + " }"; - } - if (typeof obj === "object" && customInspect) { - if (inspectSymbol && typeof obj[inspectSymbol] === "function" && utilInspect) { - return utilInspect(obj, { depth: maxDepth - depth }); - } else if (customInspect !== "symbol" && typeof obj.inspect === "function") { - return obj.inspect(); - } - } - if (isMap(obj)) { - var mapParts = []; - if (mapForEach) { - mapForEach.call(obj, function(value, key2) { - mapParts.push(inspect(key2, obj, true) + " => " + inspect(value, obj)); - }); - } - return collectionOf("Map", mapSize.call(obj), mapParts, indent2); - } - if (isSet(obj)) { - var setParts = []; - if (setForEach) { - setForEach.call(obj, function(value) { - setParts.push(inspect(value, obj)); - }); - } - return collectionOf("Set", setSize.call(obj), setParts, indent2); - } - if (isWeakMap(obj)) { - return weakCollectionOf("WeakMap"); - } - if (isWeakSet(obj)) { - return weakCollectionOf("WeakSet"); - } - if (isWeakRef(obj)) { - return weakCollectionOf("WeakRef"); - } - if (isNumber(obj)) { - return markBoxed(inspect(Number(obj))); - } - if (isBigInt(obj)) { - return markBoxed(inspect(bigIntValueOf.call(obj))); - } - if (isBoolean(obj)) { - return markBoxed(booleanValueOf.call(obj)); - } - if (isString(obj)) { - return markBoxed(inspect(String(obj))); - } - if (typeof window !== "undefined" && obj === window) { - return "{ [object Window] }"; - } - if (obj === global) { - return "{ [object globalThis] }"; - } - if (!isDate(obj) && !isRegExp(obj)) { - var ys = arrObjKeys(obj, inspect); - var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object; - var protoTag = obj instanceof Object ? "" : "null prototype"; - var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? "Object" : ""; - var constructorTag = isPlainObject || typeof obj.constructor !== "function" ? "" : obj.constructor.name ? obj.constructor.name + " " : ""; - var tag2 = constructorTag + (stringTag || protoTag ? "[" + $join.call($concat.call([], stringTag || [], protoTag || []), ": ") + "] " : ""); - if (ys.length === 0) { - return tag2 + "{}"; - } - if (indent2) { - return tag2 + "{" + indentedJoin(ys, indent2) + "}"; - } - return tag2 + "{ " + $join.call(ys, ", ") + " }"; - } - return String(obj); - }; - function wrapQuotes(s, defaultStyle, opts) { - var quoteChar = (opts.quoteStyle || defaultStyle) === "double" ? '"' : "'"; - return quoteChar + s + quoteChar; - } - function quote(s) { - return $replace.call(String(s), /"/g, """); - } - function isArray(obj) { - return toStr(obj) === "[object Array]" && (!toStringTag || !(typeof obj === "object" && toStringTag in obj)); - } - function isDate(obj) { - return toStr(obj) === "[object Date]" && (!toStringTag || !(typeof obj === "object" && toStringTag in obj)); - } - function isRegExp(obj) { - return toStr(obj) === "[object RegExp]" && (!toStringTag || !(typeof obj === "object" && toStringTag in obj)); - } - function isError(obj) { - return toStr(obj) === "[object Error]" && (!toStringTag || !(typeof obj === "object" && toStringTag in obj)); - } - function isString(obj) { - return toStr(obj) === "[object String]" && (!toStringTag || !(typeof obj === "object" && toStringTag in obj)); - } - function isNumber(obj) { - return toStr(obj) === "[object Number]" && (!toStringTag || !(typeof obj === "object" && toStringTag in obj)); - } - function isBoolean(obj) { - return toStr(obj) === "[object Boolean]" && (!toStringTag || !(typeof obj === "object" && toStringTag in obj)); - } - function isSymbol(obj) { - if (hasShammedSymbols) { - return obj && typeof obj === "object" && obj instanceof Symbol; - } - if (typeof obj === "symbol") { - return true; - } - if (!obj || typeof obj !== "object" || !symToString) { - return false; - } - try { - symToString.call(obj); - return true; - } catch (e) { - } - return false; - } - function isBigInt(obj) { - if (!obj || typeof obj !== "object" || !bigIntValueOf) { - return false; - } - try { - bigIntValueOf.call(obj); - return true; - } catch (e) { - } - return false; - } - var hasOwn = Object.prototype.hasOwnProperty || function(key2) { - return key2 in this; - }; - function has(obj, key2) { - return hasOwn.call(obj, key2); - } - function toStr(obj) { - return objectToString2.call(obj); - } - function nameOf(f) { - if (f.name) { - return f.name; - } - var m = $match.call(functionToString.call(f), /^function\s*([\w$]+)/); - if (m) { - return m[1]; - } - return null; - } - function indexOf(xs, x) { - if (xs.indexOf) { - return xs.indexOf(x); - } - for (var i = 0, l = xs.length; i < l; i++) { - if (xs[i] === x) { - return i; - } - } - return -1; - } - function isMap(x) { - if (!mapSize || !x || typeof x !== "object") { - return false; - } - try { - mapSize.call(x); - try { - setSize.call(x); - } catch (s) { - return true; - } - return x instanceof Map; - } catch (e) { - } - return false; - } - function isWeakMap(x) { - if (!weakMapHas || !x || typeof x !== "object") { - return false; - } - try { - weakMapHas.call(x, weakMapHas); - try { - weakSetHas.call(x, weakSetHas); - } catch (s) { - return true; - } - return x instanceof WeakMap; - } catch (e) { - } - return false; - } - function isWeakRef(x) { - if (!weakRefDeref || !x || typeof x !== "object") { - return false; - } - try { - weakRefDeref.call(x); - return true; - } catch (e) { - } - return false; - } - function isSet(x) { - if (!setSize || !x || typeof x !== "object") { - return false; - } - try { - setSize.call(x); - try { - mapSize.call(x); - } catch (m) { - return true; - } - return x instanceof Set; - } catch (e) { - } - return false; - } - function isWeakSet(x) { - if (!weakSetHas || !x || typeof x !== "object") { - return false; - } - try { - weakSetHas.call(x, weakSetHas); - try { - weakMapHas.call(x, weakMapHas); - } catch (s) { - return true; - } - return x instanceof WeakSet; - } catch (e) { - } - return false; - } - function isElement(x) { - if (!x || typeof x !== "object") { - return false; - } - if (typeof HTMLElement !== "undefined" && x instanceof HTMLElement) { - return true; - } - return typeof x.nodeName === "string" && typeof x.getAttribute === "function"; - } - function inspectString(str, opts) { - if (str.length > opts.maxStringLength) { - var remaining = str.length - opts.maxStringLength; - var trailer = "... " + remaining + " more character" + (remaining > 1 ? "s" : ""); - return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer; - } - var s = $replace.call($replace.call(str, /(['\\])/g, "\\$1"), /[\x00-\x1f]/g, lowbyte); - return wrapQuotes(s, "single", opts); - } - function lowbyte(c) { - var n = c.charCodeAt(0); - var x = { - 8: "b", - 9: "t", - 10: "n", - 12: "f", - 13: "r" - }[n]; - if (x) { - return "\\" + x; - } - return "\\x" + (n < 16 ? "0" : "") + $toUpperCase.call(n.toString(16)); - } - function markBoxed(str) { - return "Object(" + str + ")"; - } - function weakCollectionOf(type) { - return type + " { ? }"; - } - function collectionOf(type, size, entries, indent2) { - var joinedEntries = indent2 ? indentedJoin(entries, indent2) : $join.call(entries, ", "); - return type + " (" + size + ") {" + joinedEntries + "}"; - } - function singleLineValues(xs) { - for (var i = 0; i < xs.length; i++) { - if (indexOf(xs[i], "\n") >= 0) { - return false; - } - } - return true; - } - function getIndent(opts, depth) { - var baseIndent; - if (opts.indent === " ") { - baseIndent = " "; - } else if (typeof opts.indent === "number" && opts.indent > 0) { - baseIndent = $join.call(Array(opts.indent + 1), " "); - } else { - return null; - } - return { - base: baseIndent, - prev: $join.call(Array(depth + 1), baseIndent) - }; - } - function indentedJoin(xs, indent2) { - if (xs.length === 0) { - return ""; - } - var lineJoiner = "\n" + indent2.prev + indent2.base; - return lineJoiner + $join.call(xs, "," + lineJoiner) + "\n" + indent2.prev; - } - function arrObjKeys(obj, inspect) { - var isArr = isArray(obj); - var xs = []; - if (isArr) { - xs.length = obj.length; - for (var i = 0; i < obj.length; i++) { - xs[i] = has(obj, i) ? inspect(obj[i], obj) : ""; - } - } - var syms = typeof gOPS === "function" ? gOPS(obj) : []; - var symMap; - if (hasShammedSymbols) { - symMap = {}; - for (var k = 0; k < syms.length; k++) { - symMap["$" + syms[k]] = syms[k]; - } - } - for (var key2 in obj) { - if (!has(obj, key2)) { - continue; - } - if (isArr && String(Number(key2)) === key2 && key2 < obj.length) { - continue; - } - if (hasShammedSymbols && symMap["$" + key2] instanceof Symbol) { - continue; - } else if ($test.call(/[^\w$]/, key2)) { - xs.push(inspect(key2, obj) + ": " + inspect(obj[key2], obj)); - } else { - xs.push(key2 + ": " + inspect(obj[key2], obj)); - } - } - if (typeof gOPS === "function") { - for (var j = 0; j < syms.length; j++) { - if (isEnumerable.call(obj, syms[j])) { - xs.push("[" + inspect(syms[j]) + "]: " + inspect(obj[syms[j]], obj)); - } - } - } - return xs; - } - } -}); - -// node_modules/.pnpm/side-channel@1.0.5/node_modules/side-channel/index.js -var require_side_channel = __commonJS({ - "node_modules/.pnpm/side-channel@1.0.5/node_modules/side-channel/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var GetIntrinsic = require_get_intrinsic(); - var callBound = require_callBound(); - var inspect = require_object_inspect(); - var $TypeError = require_type(); - var $WeakMap = GetIntrinsic("%WeakMap%", true); - var $Map = GetIntrinsic("%Map%", true); - var $weakMapGet = callBound("WeakMap.prototype.get", true); - var $weakMapSet = callBound("WeakMap.prototype.set", true); - var $weakMapHas = callBound("WeakMap.prototype.has", true); - var $mapGet = callBound("Map.prototype.get", true); - var $mapSet = callBound("Map.prototype.set", true); - var $mapHas = callBound("Map.prototype.has", true); - var listGetNode = function(list, key2) { - for (var prev = list, curr; (curr = prev.next) !== null; prev = curr) { - if (curr.key === key2) { - prev.next = curr.next; - curr.next = list.next; - list.next = curr; - return curr; - } - } - }; - var listGet = function(objects, key2) { - var node = listGetNode(objects, key2); - return node && node.value; - }; - var listSet = function(objects, key2, value) { - var node = listGetNode(objects, key2); - if (node) { - node.value = value; - } else { - objects.next = { - // eslint-disable-line no-param-reassign - key: key2, - next: objects.next, - value - }; - } - }; - var listHas = function(objects, key2) { - return !!listGetNode(objects, key2); - }; - module2.exports = function getSideChannel() { - var $wm; - var $m; - var $o; - var channel = { - assert: function(key2) { - if (!channel.has(key2)) { - throw new $TypeError("Side channel does not contain " + inspect(key2)); - } - }, - get: function(key2) { - if ($WeakMap && key2 && (typeof key2 === "object" || typeof key2 === "function")) { - if ($wm) { - return $weakMapGet($wm, key2); - } - } else if ($Map) { - if ($m) { - return $mapGet($m, key2); - } - } else { - if ($o) { - return listGet($o, key2); - } - } - }, - has: function(key2) { - if ($WeakMap && key2 && (typeof key2 === "object" || typeof key2 === "function")) { - if ($wm) { - return $weakMapHas($wm, key2); - } - } else if ($Map) { - if ($m) { - return $mapHas($m, key2); - } - } else { - if ($o) { - return listHas($o, key2); - } - } - return false; - }, - set: function(key2, value) { - if ($WeakMap && key2 && (typeof key2 === "object" || typeof key2 === "function")) { - if (!$wm) { - $wm = new $WeakMap(); - } - $weakMapSet($wm, key2, value); - } else if ($Map) { - if (!$m) { - $m = new $Map(); - } - $mapSet($m, key2, value); - } else { - if (!$o) { - $o = { key: {}, next: null }; - } - listSet($o, key2, value); - } - } - }; - return channel; - }; - } -}); - -// node_modules/.pnpm/internal-slot@1.0.7/node_modules/internal-slot/index.js -var require_internal_slot = __commonJS({ - "node_modules/.pnpm/internal-slot@1.0.7/node_modules/internal-slot/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var hasOwn = require_hasown(); - var channel = require_side_channel()(); - var $TypeError = require_type(); - var SLOT = { - assert: function(O, slot) { - if (!O || typeof O !== "object" && typeof O !== "function") { - throw new $TypeError("`O` is not an object"); - } - if (typeof slot !== "string") { - throw new $TypeError("`slot` must be a string"); - } - channel.assert(O); - if (!SLOT.has(O, slot)) { - throw new $TypeError("`" + slot + "` is not present on `O`"); - } - }, - get: function(O, slot) { - if (!O || typeof O !== "object" && typeof O !== "function") { - throw new $TypeError("`O` is not an object"); - } - if (typeof slot !== "string") { - throw new $TypeError("`slot` must be a string"); - } - var slots = channel.get(O); - return slots && slots["$" + slot]; - }, - has: function(O, slot) { - if (!O || typeof O !== "object" && typeof O !== "function") { - throw new $TypeError("`O` is not an object"); - } - if (typeof slot !== "string") { - throw new $TypeError("`slot` must be a string"); - } - var slots = channel.get(O); - return !!slots && hasOwn(slots, "$" + slot); - }, - set: function(O, slot, V) { - if (!O || typeof O !== "object" && typeof O !== "function") { - throw new $TypeError("`O` is not an object"); - } - if (typeof slot !== "string") { - throw new $TypeError("`slot` must be a string"); - } - var slots = channel.get(O); - if (!slots) { - slots = {}; - channel.set(O, slots); - } - slots["$" + slot] = V; - } - }; - if (Object.freeze) { - Object.freeze(SLOT); - } - module2.exports = SLOT; - } -}); - -// node_modules/.pnpm/stop-iteration-iterator@1.0.0/node_modules/stop-iteration-iterator/index.js -var require_stop_iteration_iterator = __commonJS({ - "node_modules/.pnpm/stop-iteration-iterator@1.0.0/node_modules/stop-iteration-iterator/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var SLOT = require_internal_slot(); - var $SyntaxError = SyntaxError; - var $StopIteration = typeof StopIteration === "object" ? StopIteration : null; - module2.exports = function getStopIterationIterator(origIterator) { - if (!$StopIteration) { - throw new $SyntaxError("this environment lacks StopIteration"); - } - SLOT.set(origIterator, "[[Done]]", false); - var siIterator = { - next: function next() { - var iterator = SLOT.get(this, "[[Iterator]]"); - var done = SLOT.get(iterator, "[[Done]]"); - try { - return { - done, - value: done ? void 0 : iterator.next() - }; - } catch (e) { - SLOT.set(iterator, "[[Done]]", true); - if (e !== $StopIteration) { - throw e; - } - return { - done: true, - value: void 0 - }; - } - } - }; - SLOT.set(siIterator, "[[Iterator]]", origIterator); - return siIterator; - }; - } -}); - -// node_modules/.pnpm/isarray@2.0.5/node_modules/isarray/index.js -var require_isarray = __commonJS({ - "node_modules/.pnpm/isarray@2.0.5/node_modules/isarray/index.js"(exports2, module2) { - init_polyfill_buffer(); - var toString = {}.toString; - module2.exports = Array.isArray || function(arr) { - return toString.call(arr) == "[object Array]"; - }; - } -}); - -// node_modules/.pnpm/is-string@1.0.7/node_modules/is-string/index.js -var require_is_string = __commonJS({ - "node_modules/.pnpm/is-string@1.0.7/node_modules/is-string/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var strValue = String.prototype.valueOf; - var tryStringObject = function tryStringObject2(value) { - try { - strValue.call(value); - return true; - } catch (e) { - return false; - } - }; - var toStr = Object.prototype.toString; - var strClass = "[object String]"; - var hasToStringTag = require_shams2()(); - module2.exports = function isString(value) { - if (typeof value === "string") { - return true; - } - if (typeof value !== "object") { - return false; - } - return hasToStringTag ? tryStringObject(value) : toStr.call(value) === strClass; - }; - } -}); - -// node_modules/.pnpm/is-map@2.0.2/node_modules/is-map/index.js -var require_is_map = __commonJS({ - "node_modules/.pnpm/is-map@2.0.2/node_modules/is-map/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var $Map = typeof Map === "function" && Map.prototype ? Map : null; - var $Set = typeof Set === "function" && Set.prototype ? Set : null; - var exported; - if (!$Map) { - exported = function isMap(x) { - return false; - }; - } - var $mapHas = $Map ? Map.prototype.has : null; - var $setHas = $Set ? Set.prototype.has : null; - if (!exported && !$mapHas) { - exported = function isMap(x) { - return false; - }; - } - module2.exports = exported || function isMap(x) { - if (!x || typeof x !== "object") { - return false; - } - try { - $mapHas.call(x); - if ($setHas) { - try { - $setHas.call(x); - } catch (e) { - return true; - } - } - return x instanceof $Map; - } catch (e) { - } - return false; - }; - } -}); - -// node_modules/.pnpm/is-set@2.0.2/node_modules/is-set/index.js -var require_is_set = __commonJS({ - "node_modules/.pnpm/is-set@2.0.2/node_modules/is-set/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var $Map = typeof Map === "function" && Map.prototype ? Map : null; - var $Set = typeof Set === "function" && Set.prototype ? Set : null; - var exported; - if (!$Set) { - exported = function isSet(x) { - return false; - }; - } - var $mapHas = $Map ? Map.prototype.has : null; - var $setHas = $Set ? Set.prototype.has : null; - if (!exported && !$setHas) { - exported = function isSet(x) { - return false; - }; - } - module2.exports = exported || function isSet(x) { - if (!x || typeof x !== "object") { - return false; - } - try { - $setHas.call(x); - if ($mapHas) { - try { - $mapHas.call(x); - } catch (e) { - return true; - } - } - return x instanceof $Set; - } catch (e) { - } - return false; - }; - } -}); - -// node_modules/.pnpm/es-get-iterator@1.1.3/node_modules/es-get-iterator/index.js -var require_es_get_iterator = __commonJS({ - "node_modules/.pnpm/es-get-iterator@1.1.3/node_modules/es-get-iterator/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var isArguments = require_is_arguments(); - var getStopIterationIterator = require_stop_iteration_iterator(); - if (require_has_symbols()() || require_shams()()) { - $iterator = Symbol.iterator; - module2.exports = function getIterator3(iterable) { - if (iterable != null && typeof iterable[$iterator] !== "undefined") { - return iterable[$iterator](); - } - if (isArguments(iterable)) { - return Array.prototype[$iterator].call(iterable); - } - }; - } else { - isArray = require_isarray(); - isString = require_is_string(); - GetIntrinsic = require_get_intrinsic(); - $Map = GetIntrinsic("%Map%", true); - $Set = GetIntrinsic("%Set%", true); - callBound = require_callBound(); - $arrayPush = callBound("Array.prototype.push"); - $charCodeAt = callBound("String.prototype.charCodeAt"); - $stringSlice = callBound("String.prototype.slice"); - advanceStringIndex = function advanceStringIndex2(S, index2) { - var length = S.length; - if (index2 + 1 >= length) { - return index2 + 1; - } - var first2 = $charCodeAt(S, index2); - if (first2 < 55296 || first2 > 56319) { - return index2 + 1; - } - var second = $charCodeAt(S, index2 + 1); - if (second < 56320 || second > 57343) { - return index2 + 1; - } - return index2 + 2; - }; - getArrayIterator = function getArrayIterator2(arraylike) { - var i = 0; - return { - next: function next() { - var done = i >= arraylike.length; - var value; - if (!done) { - value = arraylike[i]; - i += 1; - } - return { - done, - value - }; - } - }; - }; - getNonCollectionIterator = function getNonCollectionIterator2(iterable, noPrimordialCollections) { - if (isArray(iterable) || isArguments(iterable)) { - return getArrayIterator(iterable); - } - if (isString(iterable)) { - var i = 0; - return { - next: function next() { - var nextIndex = advanceStringIndex(iterable, i); - var value = $stringSlice(iterable, i, nextIndex); - i = nextIndex; - return { - done: nextIndex > iterable.length, - value - }; - } - }; - } - if (noPrimordialCollections && typeof iterable["_es6-shim iterator_"] !== "undefined") { - return iterable["_es6-shim iterator_"](); - } - }; - if (!$Map && !$Set) { - module2.exports = function getIterator3(iterable) { - if (iterable != null) { - return getNonCollectionIterator(iterable, true); - } - }; - } else { - isMap = require_is_map(); - isSet = require_is_set(); - $mapForEach = callBound("Map.prototype.forEach", true); - $setForEach = callBound("Set.prototype.forEach", true); - if (typeof process === "undefined" || !process.versions || !process.versions.node) { - $mapIterator = callBound("Map.prototype.iterator", true); - $setIterator = callBound("Set.prototype.iterator", true); - } - $mapAtAtIterator = callBound("Map.prototype.@@iterator", true) || callBound("Map.prototype._es6-shim iterator_", true); - $setAtAtIterator = callBound("Set.prototype.@@iterator", true) || callBound("Set.prototype._es6-shim iterator_", true); - getCollectionIterator = function getCollectionIterator2(iterable) { - if (isMap(iterable)) { - if ($mapIterator) { - return getStopIterationIterator($mapIterator(iterable)); - } - if ($mapAtAtIterator) { - return $mapAtAtIterator(iterable); - } - if ($mapForEach) { - var entries = []; - $mapForEach(iterable, function(v, k) { - $arrayPush(entries, [k, v]); - }); - return getArrayIterator(entries); - } - } - if (isSet(iterable)) { - if ($setIterator) { - return getStopIterationIterator($setIterator(iterable)); - } - if ($setAtAtIterator) { - return $setAtAtIterator(iterable); - } - if ($setForEach) { - var values = []; - $setForEach(iterable, function(v) { - $arrayPush(values, v); - }); - return getArrayIterator(values); - } - } - }; - module2.exports = function getIterator3(iterable) { - return getCollectionIterator(iterable) || getNonCollectionIterator(iterable); - }; - } - } - var $iterator; - var isArray; - var isString; - var GetIntrinsic; - var $Map; - var $Set; - var callBound; - var $arrayPush; - var $charCodeAt; - var $stringSlice; - var advanceStringIndex; - var getArrayIterator; - var getNonCollectionIterator; - var isMap; - var isSet; - var $mapForEach; - var $setForEach; - var $mapIterator; - var $setIterator; - var $mapAtAtIterator; - var $setAtAtIterator; - var getCollectionIterator; - } -}); - -// node_modules/.pnpm/object-is@1.1.5/node_modules/object-is/implementation.js -var require_implementation5 = __commonJS({ - "node_modules/.pnpm/object-is@1.1.5/node_modules/object-is/implementation.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var numberIsNaN = function(value) { - return value !== value; - }; - module2.exports = function is(a, b) { - if (a === 0 && b === 0) { - return 1 / a === 1 / b; - } - if (a === b) { - return true; - } - if (numberIsNaN(a) && numberIsNaN(b)) { - return true; - } - return false; - }; - } -}); - -// node_modules/.pnpm/object-is@1.1.5/node_modules/object-is/polyfill.js -var require_polyfill3 = __commonJS({ - "node_modules/.pnpm/object-is@1.1.5/node_modules/object-is/polyfill.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var implementation = require_implementation5(); - module2.exports = function getPolyfill() { - return typeof Object.is === "function" ? Object.is : implementation; - }; - } -}); - -// node_modules/.pnpm/object-is@1.1.5/node_modules/object-is/shim.js -var require_shim3 = __commonJS({ - "node_modules/.pnpm/object-is@1.1.5/node_modules/object-is/shim.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var getPolyfill = require_polyfill3(); - var define2 = require_define_properties(); - module2.exports = function shimObjectIs() { - var polyfill = getPolyfill(); - define2(Object, { is: polyfill }, { - is: function testObjectIs() { - return Object.is !== polyfill; - } - }); - return polyfill; - }; - } -}); - -// node_modules/.pnpm/object-is@1.1.5/node_modules/object-is/index.js -var require_object_is = __commonJS({ - "node_modules/.pnpm/object-is@1.1.5/node_modules/object-is/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var define2 = require_define_properties(); - var callBind = require_call_bind(); - var implementation = require_implementation5(); - var getPolyfill = require_polyfill3(); - var shim = require_shim3(); - var polyfill = callBind(getPolyfill(), Object); - define2(polyfill, { - getPolyfill, - implementation, - shim - }); - module2.exports = polyfill; - } -}); - -// node_modules/.pnpm/is-array-buffer@3.0.4/node_modules/is-array-buffer/index.js -var require_is_array_buffer = __commonJS({ - "node_modules/.pnpm/is-array-buffer@3.0.4/node_modules/is-array-buffer/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var callBind = require_call_bind(); - var callBound = require_callBound(); - var GetIntrinsic = require_get_intrinsic(); - var $ArrayBuffer = GetIntrinsic("%ArrayBuffer%", true); - var $byteLength = callBound("ArrayBuffer.prototype.byteLength", true); - var $toString = callBound("Object.prototype.toString"); - var abSlice = !!$ArrayBuffer && !$byteLength && new $ArrayBuffer(0).slice; - var $abSlice = !!abSlice && callBind(abSlice); - module2.exports = $byteLength || $abSlice ? function isArrayBuffer(obj) { - if (!obj || typeof obj !== "object") { - return false; - } - try { - if ($byteLength) { - $byteLength(obj); - } else { - $abSlice(obj, 0); - } - return true; - } catch (e) { - return false; - } - } : $ArrayBuffer ? function isArrayBuffer(obj) { - return $toString(obj) === "[object ArrayBuffer]"; - } : function isArrayBuffer(obj) { - return false; - }; - } -}); - -// node_modules/.pnpm/is-date-object@1.0.5/node_modules/is-date-object/index.js -var require_is_date_object = __commonJS({ - "node_modules/.pnpm/is-date-object@1.0.5/node_modules/is-date-object/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var getDay = Date.prototype.getDay; - var tryDateObject = function tryDateGetDayCall(value) { - try { - getDay.call(value); - return true; - } catch (e) { - return false; - } - }; - var toStr = Object.prototype.toString; - var dateClass = "[object Date]"; - var hasToStringTag = require_shams2()(); - module2.exports = function isDateObject(value) { - if (typeof value !== "object" || value === null) { - return false; - } - return hasToStringTag ? tryDateObject(value) : toStr.call(value) === dateClass; - }; - } -}); - -// node_modules/.pnpm/is-regex@1.1.4/node_modules/is-regex/index.js -var require_is_regex = __commonJS({ - "node_modules/.pnpm/is-regex@1.1.4/node_modules/is-regex/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var callBound = require_callBound(); - var hasToStringTag = require_shams2()(); - var has; - var $exec; - var isRegexMarker; - var badStringifier; - if (hasToStringTag) { - has = callBound("Object.prototype.hasOwnProperty"); - $exec = callBound("RegExp.prototype.exec"); - isRegexMarker = {}; - throwRegexMarker = function() { - throw isRegexMarker; - }; - badStringifier = { - toString: throwRegexMarker, - valueOf: throwRegexMarker - }; - if (typeof Symbol.toPrimitive === "symbol") { - badStringifier[Symbol.toPrimitive] = throwRegexMarker; - } - } - var throwRegexMarker; - var $toString = callBound("Object.prototype.toString"); - var gOPD = Object.getOwnPropertyDescriptor; - var regexClass = "[object RegExp]"; - module2.exports = hasToStringTag ? function isRegex(value) { - if (!value || typeof value !== "object") { - return false; - } - var descriptor = gOPD(value, "lastIndex"); - var hasLastIndexDataProperty = descriptor && has(descriptor, "value"); - if (!hasLastIndexDataProperty) { - return false; - } - try { - $exec(value, badStringifier); - } catch (e) { - return e === isRegexMarker; - } - } : function isRegex(value) { - if (!value || typeof value !== "object" && typeof value !== "function") { - return false; - } - return $toString(value) === regexClass; - }; - } -}); - -// node_modules/.pnpm/is-shared-array-buffer@1.0.2/node_modules/is-shared-array-buffer/index.js -var require_is_shared_array_buffer = __commonJS({ - "node_modules/.pnpm/is-shared-array-buffer@1.0.2/node_modules/is-shared-array-buffer/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var callBound = require_callBound(); - var $byteLength = callBound("SharedArrayBuffer.prototype.byteLength", true); - module2.exports = $byteLength ? function isSharedArrayBuffer(obj) { - if (!obj || typeof obj !== "object") { - return false; - } - try { - $byteLength(obj); - return true; - } catch (e) { - return false; - } - } : function isSharedArrayBuffer(obj) { - return false; - }; - } -}); - -// node_modules/.pnpm/is-number-object@1.0.7/node_modules/is-number-object/index.js -var require_is_number_object = __commonJS({ - "node_modules/.pnpm/is-number-object@1.0.7/node_modules/is-number-object/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var numToStr = Number.prototype.toString; - var tryNumberObject = function tryNumberObject2(value) { - try { - numToStr.call(value); - return true; - } catch (e) { - return false; - } - }; - var toStr = Object.prototype.toString; - var numClass = "[object Number]"; - var hasToStringTag = require_shams2()(); - module2.exports = function isNumberObject(value) { - if (typeof value === "number") { - return true; - } - if (typeof value !== "object") { - return false; - } - return hasToStringTag ? tryNumberObject(value) : toStr.call(value) === numClass; - }; - } -}); - -// node_modules/.pnpm/is-boolean-object@1.1.2/node_modules/is-boolean-object/index.js -var require_is_boolean_object = __commonJS({ - "node_modules/.pnpm/is-boolean-object@1.1.2/node_modules/is-boolean-object/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var callBound = require_callBound(); - var $boolToStr = callBound("Boolean.prototype.toString"); - var $toString = callBound("Object.prototype.toString"); - var tryBooleanObject = function booleanBrandCheck(value) { - try { - $boolToStr(value); - return true; - } catch (e) { - return false; - } - }; - var boolClass = "[object Boolean]"; - var hasToStringTag = require_shams2()(); - module2.exports = function isBoolean(value) { - if (typeof value === "boolean") { - return true; - } - if (value === null || typeof value !== "object") { - return false; - } - return hasToStringTag && Symbol.toStringTag in value ? tryBooleanObject(value) : $toString(value) === boolClass; - }; - } -}); - -// node_modules/.pnpm/is-symbol@1.0.4/node_modules/is-symbol/index.js -var require_is_symbol = __commonJS({ - "node_modules/.pnpm/is-symbol@1.0.4/node_modules/is-symbol/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var toStr = Object.prototype.toString; - var hasSymbols = require_has_symbols()(); - if (hasSymbols) { - symToStr = Symbol.prototype.toString; - symStringRegex = /^Symbol\(.*\)$/; - isSymbolObject = function isRealSymbolObject(value) { - if (typeof value.valueOf() !== "symbol") { - return false; - } - return symStringRegex.test(symToStr.call(value)); - }; - module2.exports = function isSymbol(value) { - if (typeof value === "symbol") { - return true; - } - if (toStr.call(value) !== "[object Symbol]") { - return false; - } - try { - return isSymbolObject(value); - } catch (e) { - return false; - } - }; - } else { - module2.exports = function isSymbol(value) { - return false; - }; - } - var symToStr; - var symStringRegex; - var isSymbolObject; - } -}); - -// node_modules/.pnpm/has-bigints@1.0.2/node_modules/has-bigints/index.js -var require_has_bigints = __commonJS({ - "node_modules/.pnpm/has-bigints@1.0.2/node_modules/has-bigints/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var $BigInt = typeof BigInt !== "undefined" && BigInt; - module2.exports = function hasNativeBigInts() { - return typeof $BigInt === "function" && typeof BigInt === "function" && typeof $BigInt(42) === "bigint" && typeof BigInt(42) === "bigint"; - }; - } -}); - -// node_modules/.pnpm/is-bigint@1.0.4/node_modules/is-bigint/index.js -var require_is_bigint = __commonJS({ - "node_modules/.pnpm/is-bigint@1.0.4/node_modules/is-bigint/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var hasBigInts = require_has_bigints()(); - if (hasBigInts) { - bigIntValueOf = BigInt.prototype.valueOf; - tryBigInt = function tryBigIntObject(value) { - try { - bigIntValueOf.call(value); - return true; - } catch (e) { - } - return false; - }; - module2.exports = function isBigInt(value) { - if (value === null || typeof value === "undefined" || typeof value === "boolean" || typeof value === "string" || typeof value === "number" || typeof value === "symbol" || typeof value === "function") { - return false; - } - if (typeof value === "bigint") { - return true; - } - return tryBigInt(value); - }; - } else { - module2.exports = function isBigInt(value) { - return false; - }; - } - var bigIntValueOf; - var tryBigInt; - } -}); - -// node_modules/.pnpm/which-boxed-primitive@1.0.2/node_modules/which-boxed-primitive/index.js -var require_which_boxed_primitive = __commonJS({ - "node_modules/.pnpm/which-boxed-primitive@1.0.2/node_modules/which-boxed-primitive/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var isString = require_is_string(); - var isNumber = require_is_number_object(); - var isBoolean = require_is_boolean_object(); - var isSymbol = require_is_symbol(); - var isBigInt = require_is_bigint(); - module2.exports = function whichBoxedPrimitive(value) { - if (value == null || typeof value !== "object" && typeof value !== "function") { - return null; - } - if (isString(value)) { - return "String"; - } - if (isNumber(value)) { - return "Number"; - } - if (isBoolean(value)) { - return "Boolean"; - } - if (isSymbol(value)) { - return "Symbol"; - } - if (isBigInt(value)) { - return "BigInt"; - } - }; - } -}); - -// node_modules/.pnpm/is-weakmap@2.0.1/node_modules/is-weakmap/index.js -var require_is_weakmap = __commonJS({ - "node_modules/.pnpm/is-weakmap@2.0.1/node_modules/is-weakmap/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var $WeakMap = typeof WeakMap === "function" && WeakMap.prototype ? WeakMap : null; - var $WeakSet = typeof WeakSet === "function" && WeakSet.prototype ? WeakSet : null; - var exported; - if (!$WeakMap) { - exported = function isWeakMap(x) { - return false; - }; - } - var $mapHas = $WeakMap ? $WeakMap.prototype.has : null; - var $setHas = $WeakSet ? $WeakSet.prototype.has : null; - if (!exported && !$mapHas) { - exported = function isWeakMap(x) { - return false; - }; - } - module2.exports = exported || function isWeakMap(x) { - if (!x || typeof x !== "object") { - return false; - } - try { - $mapHas.call(x, $mapHas); - if ($setHas) { - try { - $setHas.call(x, $setHas); - } catch (e) { - return true; - } - } - return x instanceof $WeakMap; - } catch (e) { - } - return false; - }; - } -}); - -// node_modules/.pnpm/is-weakset@2.0.2/node_modules/is-weakset/index.js -var require_is_weakset = __commonJS({ - "node_modules/.pnpm/is-weakset@2.0.2/node_modules/is-weakset/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var GetIntrinsic = require_get_intrinsic(); - var callBound = require_callBound(); - var $WeakSet = GetIntrinsic("%WeakSet%", true); - var $setHas = callBound("WeakSet.prototype.has", true); - if ($setHas) { - $mapHas = callBound("WeakMap.prototype.has", true); - module2.exports = function isWeakSet(x) { - if (!x || typeof x !== "object") { - return false; - } - try { - $setHas(x, $setHas); - if ($mapHas) { - try { - $mapHas(x, $mapHas); - } catch (e) { - return true; - } - } - return x instanceof $WeakSet; - } catch (e) { - } - return false; - }; - } else { - module2.exports = function isWeakSet(x) { - return false; - }; - } - var $mapHas; - } -}); - -// node_modules/.pnpm/which-collection@1.0.1/node_modules/which-collection/index.js -var require_which_collection = __commonJS({ - "node_modules/.pnpm/which-collection@1.0.1/node_modules/which-collection/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var isMap = require_is_map(); - var isSet = require_is_set(); - var isWeakMap = require_is_weakmap(); - var isWeakSet = require_is_weakset(); - module2.exports = function whichCollection(value) { - if (value && typeof value === "object") { - if (isMap(value)) { - return "Map"; - } - if (isSet(value)) { - return "Set"; - } - if (isWeakMap(value)) { - return "WeakMap"; - } - if (isWeakSet(value)) { - return "WeakSet"; - } - } - return false; - }; - } -}); - -// node_modules/.pnpm/is-callable@1.2.7/node_modules/is-callable/index.js -var require_is_callable = __commonJS({ - "node_modules/.pnpm/is-callable@1.2.7/node_modules/is-callable/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var fnToStr = Function.prototype.toString; - var reflectApply = typeof Reflect === "object" && Reflect !== null && Reflect.apply; - var badArrayLike; - var isCallableMarker; - if (typeof reflectApply === "function" && typeof Object.defineProperty === "function") { - try { - badArrayLike = Object.defineProperty({}, "length", { - get: function() { - throw isCallableMarker; - } - }); - isCallableMarker = {}; - reflectApply(function() { - throw 42; - }, null, badArrayLike); - } catch (_) { - if (_ !== isCallableMarker) { - reflectApply = null; - } - } - } else { - reflectApply = null; - } - var constructorRegex = /^\s*class\b/; - var isES6ClassFn = function isES6ClassFunction(value) { - try { - var fnStr = fnToStr.call(value); - return constructorRegex.test(fnStr); - } catch (e) { - return false; - } - }; - var tryFunctionObject = function tryFunctionToStr(value) { - try { - if (isES6ClassFn(value)) { - return false; - } - fnToStr.call(value); - return true; - } catch (e) { - return false; - } - }; - var toStr = Object.prototype.toString; - var objectClass = "[object Object]"; - var fnClass = "[object Function]"; - var genClass = "[object GeneratorFunction]"; - var ddaClass = "[object HTMLAllCollection]"; - var ddaClass2 = "[object HTML document.all class]"; - var ddaClass3 = "[object HTMLCollection]"; - var hasToStringTag = typeof Symbol === "function" && !!Symbol.toStringTag; - var isIE68 = !(0 in [,]); - var isDDA = function isDocumentDotAll() { - return false; - }; - if (typeof document === "object") { - all = document.all; - if (toStr.call(all) === toStr.call(document.all)) { - isDDA = function isDocumentDotAll(value) { - if ((isIE68 || !value) && (typeof value === "undefined" || typeof value === "object")) { - try { - var str = toStr.call(value); - return (str === ddaClass || str === ddaClass2 || str === ddaClass3 || str === objectClass) && value("") == null; - } catch (e) { - } - } - return false; - }; - } - } - var all; - module2.exports = reflectApply ? function isCallable(value) { - if (isDDA(value)) { - return true; - } - if (!value) { - return false; - } - if (typeof value !== "function" && typeof value !== "object") { - return false; - } - try { - reflectApply(value, null, badArrayLike); - } catch (e) { - if (e !== isCallableMarker) { - return false; - } - } - return !isES6ClassFn(value) && tryFunctionObject(value); - } : function isCallable(value) { - if (isDDA(value)) { - return true; - } - if (!value) { - return false; - } - if (typeof value !== "function" && typeof value !== "object") { - return false; - } - if (hasToStringTag) { - return tryFunctionObject(value); - } - if (isES6ClassFn(value)) { - return false; - } - var strClass = toStr.call(value); - if (strClass !== fnClass && strClass !== genClass && !/^\[object HTML/.test(strClass)) { - return false; - } - return tryFunctionObject(value); - }; - } -}); - -// node_modules/.pnpm/for-each@0.3.3/node_modules/for-each/index.js -var require_for_each = __commonJS({ - "node_modules/.pnpm/for-each@0.3.3/node_modules/for-each/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var isCallable = require_is_callable(); - var toStr = Object.prototype.toString; - var hasOwnProperty = Object.prototype.hasOwnProperty; - var forEachArray = function forEachArray2(array, iterator, receiver) { - for (var i = 0, len = array.length; i < len; i++) { - if (hasOwnProperty.call(array, i)) { - if (receiver == null) { - iterator(array[i], i, array); - } else { - iterator.call(receiver, array[i], i, array); - } - } - } - }; - var forEachString = function forEachString2(string, iterator, receiver) { - for (var i = 0, len = string.length; i < len; i++) { - if (receiver == null) { - iterator(string.charAt(i), i, string); - } else { - iterator.call(receiver, string.charAt(i), i, string); - } - } - }; - var forEachObject = function forEachObject2(object, iterator, receiver) { - for (var k in object) { - if (hasOwnProperty.call(object, k)) { - if (receiver == null) { - iterator(object[k], k, object); - } else { - iterator.call(receiver, object[k], k, object); - } - } - } - }; - var forEach2 = function forEach3(list, iterator, thisArg) { - if (!isCallable(iterator)) { - throw new TypeError("iterator must be a function"); - } - var receiver; - if (arguments.length >= 3) { - receiver = thisArg; - } - if (toStr.call(list) === "[object Array]") { - forEachArray(list, iterator, receiver); - } else if (typeof list === "string") { - forEachString(list, iterator, receiver); - } else { - forEachObject(list, iterator, receiver); - } - }; - module2.exports = forEach2; - } -}); - -// node_modules/.pnpm/available-typed-arrays@1.0.6/node_modules/available-typed-arrays/index.js -var require_available_typed_arrays = __commonJS({ - "node_modules/.pnpm/available-typed-arrays@1.0.6/node_modules/available-typed-arrays/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var possibleNames = [ - "BigInt64Array", - "BigUint64Array", - "Float32Array", - "Float64Array", - "Int16Array", - "Int32Array", - "Int8Array", - "Uint16Array", - "Uint32Array", - "Uint8Array", - "Uint8ClampedArray" - ]; - var g = typeof globalThis === "undefined" ? global : globalThis; - module2.exports = function availableTypedArrays() { - var out = []; - for (var i = 0; i < possibleNames.length; i++) { - if (typeof g[possibleNames[i]] === "function") { - out[out.length] = possibleNames[i]; - } - } - return out; - }; - } -}); - -// node_modules/.pnpm/which-typed-array@1.1.14/node_modules/which-typed-array/index.js -var require_which_typed_array = __commonJS({ - "node_modules/.pnpm/which-typed-array@1.1.14/node_modules/which-typed-array/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var forEach2 = require_for_each(); - var availableTypedArrays = require_available_typed_arrays(); - var callBind = require_call_bind(); - var callBound = require_callBound(); - var gOPD = require_gopd(); - var $toString = callBound("Object.prototype.toString"); - var hasToStringTag = require_shams2()(); - var g = typeof globalThis === "undefined" ? global : globalThis; - var typedArrays = availableTypedArrays(); - var $slice = callBound("String.prototype.slice"); - var getPrototypeOf = Object.getPrototypeOf; - var $indexOf = callBound("Array.prototype.indexOf", true) || /** @type {(array: readonly unknown[], value: unknown) => keyof array} */ - function indexOf(array, value) { - for (var i = 0; i < array.length; i += 1) { - if (array[i] === value) { - return i; - } - } - return -1; - }; - var cache = { __proto__: null }; - if (hasToStringTag && gOPD && getPrototypeOf) { - forEach2(typedArrays, function(typedArray) { - var arr = new g[typedArray](); - if (Symbol.toStringTag in arr) { - var proto = getPrototypeOf(arr); - var descriptor = gOPD(proto, Symbol.toStringTag); - if (!descriptor) { - var superProto = getPrototypeOf(proto); - descriptor = gOPD(superProto, Symbol.toStringTag); - } - cache["$" + typedArray] = callBind(descriptor.get); - } - }); - } else { - forEach2(typedArrays, function(typedArray) { - var arr = new g[typedArray](); - var fn = arr.slice || arr.set; - if (fn) { - cache["$" + typedArray] = callBind(fn); - } - }); - } - var tryTypedArrays = function tryAllTypedArrays(value) { - var found = false; - forEach2( - // eslint-disable-next-line no-extra-parens - /** @type {Record<`\$${TypedArrayName}`, typeof cache>} */ - /** @type {any} */ - cache, - /** @type {(getter: typeof cache, name: `\$${TypedArrayName}`) => void} */ - function(getter, typedArray) { - if (!found) { - try { - if ("$" + getter(value) === typedArray) { - found = $slice(typedArray, 1); - } - } catch (e) { - } - } - } - ); - return found; - }; - var trySlices = function tryAllSlices(value) { - var found = false; - forEach2( - // eslint-disable-next-line no-extra-parens - /** @type {any} */ - cache, - /** @type {(getter: typeof cache, name: `\$${TypedArrayName}`) => void} */ - function(getter, name) { - if (!found) { - try { - getter(value); - found = $slice(name, 1); - } catch (e) { - } - } - } - ); - return found; - }; - module2.exports = function whichTypedArray(value) { - if (!value || typeof value !== "object") { - return false; - } - if (!hasToStringTag) { - var tag2 = $slice($toString(value), 8, -1); - if ($indexOf(typedArrays, tag2) > -1) { - return tag2; - } - if (tag2 !== "Object") { - return false; - } - return trySlices(value); - } - if (!gOPD) { - return null; - } - return tryTypedArrays(value); - }; - } -}); - -// node_modules/.pnpm/array-buffer-byte-length@1.0.1/node_modules/array-buffer-byte-length/index.js -var require_array_buffer_byte_length = __commonJS({ - "node_modules/.pnpm/array-buffer-byte-length@1.0.1/node_modules/array-buffer-byte-length/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var callBound = require_callBound(); - var $byteLength = callBound("ArrayBuffer.prototype.byteLength", true); - var isArrayBuffer = require_is_array_buffer(); - module2.exports = function byteLength(ab) { - if (!isArrayBuffer(ab)) { - return NaN; - } - return $byteLength ? $byteLength(ab) : ab.byteLength; - }; - } -}); - -// node_modules/.pnpm/deep-equal@2.2.3/node_modules/deep-equal/index.js -var require_deep_equal = __commonJS({ - "node_modules/.pnpm/deep-equal@2.2.3/node_modules/deep-equal/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var assign2 = require_object(); - var callBound = require_callBound(); - var flags = require_regexp_prototype(); - var GetIntrinsic = require_get_intrinsic(); - var getIterator3 = require_es_get_iterator(); - var getSideChannel = require_side_channel(); - var is = require_object_is(); - var isArguments = require_is_arguments(); - var isArray = require_isarray(); - var isArrayBuffer = require_is_array_buffer(); - var isDate = require_is_date_object(); - var isRegex = require_is_regex(); - var isSharedArrayBuffer = require_is_shared_array_buffer(); - var objectKeys = require_object_keys(); - var whichBoxedPrimitive = require_which_boxed_primitive(); - var whichCollection = require_which_collection(); - var whichTypedArray = require_which_typed_array(); - var byteLength = require_array_buffer_byte_length(); - var sabByteLength = callBound("SharedArrayBuffer.prototype.byteLength", true); - var $getTime = callBound("Date.prototype.getTime"); - var gPO = Object.getPrototypeOf; - var $objToString = callBound("Object.prototype.toString"); - var $Set = GetIntrinsic("%Set%", true); - var $mapHas = callBound("Map.prototype.has", true); - var $mapGet = callBound("Map.prototype.get", true); - var $mapSize = callBound("Map.prototype.size", true); - var $setAdd = callBound("Set.prototype.add", true); - var $setDelete = callBound("Set.prototype.delete", true); - var $setHas = callBound("Set.prototype.has", true); - var $setSize = callBound("Set.prototype.size", true); - function setHasEqualElement(set, val1, opts, channel) { - var i = getIterator3(set); - var result; - while ((result = i.next()) && !result.done) { - if (internalDeepEqual(val1, result.value, opts, channel)) { - $setDelete(set, result.value); - return true; - } - } - return false; - } - function findLooseMatchingPrimitives(prim) { - if (typeof prim === "undefined") { - return null; - } - if (typeof prim === "object") { - return void 0; - } - if (typeof prim === "symbol") { - return false; - } - if (typeof prim === "string" || typeof prim === "number") { - return +prim === +prim; - } - return true; - } - function mapMightHaveLoosePrim(a, b, prim, item, opts, channel) { - var altValue = findLooseMatchingPrimitives(prim); - if (altValue != null) { - return altValue; - } - var curB = $mapGet(b, altValue); - var looseOpts = assign2({}, opts, { strict: false }); - if (typeof curB === "undefined" && !$mapHas(b, altValue) || !internalDeepEqual(item, curB, looseOpts, channel)) { - return false; - } - return !$mapHas(a, altValue) && internalDeepEqual(item, curB, looseOpts, channel); - } - function setMightHaveLoosePrim(a, b, prim) { - var altValue = findLooseMatchingPrimitives(prim); - if (altValue != null) { - return altValue; - } - return $setHas(b, altValue) && !$setHas(a, altValue); - } - function mapHasEqualEntry(set, map, key1, item1, opts, channel) { - var i = getIterator3(set); - var result; - var key2; - while ((result = i.next()) && !result.done) { - key2 = result.value; - if ( - // eslint-disable-next-line no-use-before-define - internalDeepEqual(key1, key2, opts, channel) && internalDeepEqual(item1, $mapGet(map, key2), opts, channel) - ) { - $setDelete(set, key2); - return true; - } - } - return false; - } - function internalDeepEqual(actual, expected, options, channel) { - var opts = options || {}; - if (opts.strict ? is(actual, expected) : actual === expected) { - return true; - } - var actualBoxed = whichBoxedPrimitive(actual); - var expectedBoxed = whichBoxedPrimitive(expected); - if (actualBoxed !== expectedBoxed) { - return false; - } - if (!actual || !expected || typeof actual !== "object" && typeof expected !== "object") { - return opts.strict ? is(actual, expected) : actual == expected; - } - var hasActual = channel.has(actual); - var hasExpected = channel.has(expected); - var sentinel; - if (hasActual && hasExpected) { - if (channel.get(actual) === channel.get(expected)) { - return true; - } - } else { - sentinel = {}; - } - if (!hasActual) { - channel.set(actual, sentinel); - } - if (!hasExpected) { - channel.set(expected, sentinel); - } - return objEquiv(actual, expected, opts, channel); - } - function isBuffer(x) { - if (!x || typeof x !== "object" || typeof x.length !== "number") { - return false; - } - if (typeof x.copy !== "function" || typeof x.slice !== "function") { - return false; - } - if (x.length > 0 && typeof x[0] !== "number") { - return false; - } - return !!(x.constructor && x.constructor.isBuffer && x.constructor.isBuffer(x)); - } - function setEquiv(a, b, opts, channel) { - if ($setSize(a) !== $setSize(b)) { - return false; - } - var iA = getIterator3(a); - var iB = getIterator3(b); - var resultA; - var resultB; - var set; - while ((resultA = iA.next()) && !resultA.done) { - if (resultA.value && typeof resultA.value === "object") { - if (!set) { - set = new $Set(); - } - $setAdd(set, resultA.value); - } else if (!$setHas(b, resultA.value)) { - if (opts.strict) { - return false; - } - if (!setMightHaveLoosePrim(a, b, resultA.value)) { - return false; - } - if (!set) { - set = new $Set(); - } - $setAdd(set, resultA.value); - } - } - if (set) { - while ((resultB = iB.next()) && !resultB.done) { - if (resultB.value && typeof resultB.value === "object") { - if (!setHasEqualElement(set, resultB.value, opts.strict, channel)) { - return false; - } - } else if (!opts.strict && !$setHas(a, resultB.value) && !setHasEqualElement(set, resultB.value, opts.strict, channel)) { - return false; - } - } - return $setSize(set) === 0; - } - return true; - } - function mapEquiv(a, b, opts, channel) { - if ($mapSize(a) !== $mapSize(b)) { - return false; - } - var iA = getIterator3(a); - var iB = getIterator3(b); - var resultA; - var resultB; - var set; - var key2; - var item1; - var item2; - while ((resultA = iA.next()) && !resultA.done) { - key2 = resultA.value[0]; - item1 = resultA.value[1]; - if (key2 && typeof key2 === "object") { - if (!set) { - set = new $Set(); - } - $setAdd(set, key2); - } else { - item2 = $mapGet(b, key2); - if (typeof item2 === "undefined" && !$mapHas(b, key2) || !internalDeepEqual(item1, item2, opts, channel)) { - if (opts.strict) { - return false; - } - if (!mapMightHaveLoosePrim(a, b, key2, item1, opts, channel)) { - return false; - } - if (!set) { - set = new $Set(); - } - $setAdd(set, key2); - } - } - } - if (set) { - while ((resultB = iB.next()) && !resultB.done) { - key2 = resultB.value[0]; - item2 = resultB.value[1]; - if (key2 && typeof key2 === "object") { - if (!mapHasEqualEntry(set, a, key2, item2, opts, channel)) { - return false; - } - } else if (!opts.strict && (!a.has(key2) || !internalDeepEqual($mapGet(a, key2), item2, opts, channel)) && !mapHasEqualEntry(set, a, key2, item2, assign2({}, opts, { strict: false }), channel)) { - return false; - } - } - return $setSize(set) === 0; - } - return true; - } - function objEquiv(a, b, opts, channel) { - var i, key2; - if (typeof a !== typeof b) { - return false; - } - if (a == null || b == null) { - return false; - } - if ($objToString(a) !== $objToString(b)) { - return false; - } - if (isArguments(a) !== isArguments(b)) { - return false; - } - var aIsArray = isArray(a); - var bIsArray = isArray(b); - if (aIsArray !== bIsArray) { - return false; - } - var aIsError = a instanceof Error; - var bIsError = b instanceof Error; - if (aIsError !== bIsError) { - return false; - } - if (aIsError || bIsError) { - if (a.name !== b.name || a.message !== b.message) { - return false; - } - } - var aIsRegex = isRegex(a); - var bIsRegex = isRegex(b); - if (aIsRegex !== bIsRegex) { - return false; - } - if ((aIsRegex || bIsRegex) && (a.source !== b.source || flags(a) !== flags(b))) { - return false; - } - var aIsDate = isDate(a); - var bIsDate = isDate(b); - if (aIsDate !== bIsDate) { - return false; - } - if (aIsDate || bIsDate) { - if ($getTime(a) !== $getTime(b)) { - return false; - } - } - if (opts.strict && gPO && gPO(a) !== gPO(b)) { - return false; - } - var aWhich = whichTypedArray(a); - var bWhich = whichTypedArray(b); - if (aWhich !== bWhich) { - return false; - } - if (aWhich || bWhich) { - if (a.length !== b.length) { - return false; - } - for (i = 0; i < a.length; i++) { - if (a[i] !== b[i]) { - return false; - } - } - return true; - } - var aIsBuffer = isBuffer(a); - var bIsBuffer = isBuffer(b); - if (aIsBuffer !== bIsBuffer) { - return false; - } - if (aIsBuffer || bIsBuffer) { - if (a.length !== b.length) { - return false; - } - for (i = 0; i < a.length; i++) { - if (a[i] !== b[i]) { - return false; - } - } - return true; - } - var aIsArrayBuffer = isArrayBuffer(a); - var bIsArrayBuffer = isArrayBuffer(b); - if (aIsArrayBuffer !== bIsArrayBuffer) { - return false; - } - if (aIsArrayBuffer || bIsArrayBuffer) { - if (byteLength(a) !== byteLength(b)) { - return false; - } - return typeof Uint8Array === "function" && internalDeepEqual(new Uint8Array(a), new Uint8Array(b), opts, channel); - } - var aIsSAB = isSharedArrayBuffer(a); - var bIsSAB = isSharedArrayBuffer(b); - if (aIsSAB !== bIsSAB) { - return false; - } - if (aIsSAB || bIsSAB) { - if (sabByteLength(a) !== sabByteLength(b)) { - return false; - } - return typeof Uint8Array === "function" && internalDeepEqual(new Uint8Array(a), new Uint8Array(b), opts, channel); - } - if (typeof a !== typeof b) { - return false; - } - var ka = objectKeys(a); - var kb = objectKeys(b); - if (ka.length !== kb.length) { - return false; - } - ka.sort(); - kb.sort(); - for (i = ka.length - 1; i >= 0; i--) { - if (ka[i] != kb[i]) { - return false; - } - } - for (i = ka.length - 1; i >= 0; i--) { - key2 = ka[i]; - if (!internalDeepEqual(a[key2], b[key2], opts, channel)) { - return false; - } - } - var aCollection = whichCollection(a); - var bCollection = whichCollection(b); - if (aCollection !== bCollection) { - return false; - } - if (aCollection === "Set" || bCollection === "Set") { - return setEquiv(a, b, opts, channel); - } - if (aCollection === "Map") { - return mapEquiv(a, b, opts, channel); - } - return true; - } - module2.exports = function deepEqual2(a, b, opts) { - return internalDeepEqual(a, b, opts, getSideChannel()); - }; - } -}); - -// node_modules/.pnpm/js-sha256@0.9.0/node_modules/js-sha256/src/sha256.js -var require_sha256 = __commonJS({ - "node_modules/.pnpm/js-sha256@0.9.0/node_modules/js-sha256/src/sha256.js"(exports, module) { - init_polyfill_buffer(); - (function() { - "use strict"; - var ERROR = "input is invalid type"; - var WINDOW = typeof window === "object"; - var root = WINDOW ? window : {}; - if (root.JS_SHA256_NO_WINDOW) { - WINDOW = false; - } - var WEB_WORKER = !WINDOW && typeof self === "object"; - var NODE_JS = !root.JS_SHA256_NO_NODE_JS && typeof process === "object" && process.versions && process.versions.node; - if (NODE_JS) { - root = global; - } else if (WEB_WORKER) { - root = self; - } - var COMMON_JS = !root.JS_SHA256_NO_COMMON_JS && typeof module === "object" && module.exports; - var AMD = typeof define === "function" && define.amd; - var ARRAY_BUFFER = !root.JS_SHA256_NO_ARRAY_BUFFER && typeof ArrayBuffer !== "undefined"; - var HEX_CHARS = "0123456789abcdef".split(""); - var EXTRA = [-2147483648, 8388608, 32768, 128]; - var SHIFT = [24, 16, 8, 0]; - var K = [ - 1116352408, - 1899447441, - 3049323471, - 3921009573, - 961987163, - 1508970993, - 2453635748, - 2870763221, - 3624381080, - 310598401, - 607225278, - 1426881987, - 1925078388, - 2162078206, - 2614888103, - 3248222580, - 3835390401, - 4022224774, - 264347078, - 604807628, - 770255983, - 1249150122, - 1555081692, - 1996064986, - 2554220882, - 2821834349, - 2952996808, - 3210313671, - 3336571891, - 3584528711, - 113926993, - 338241895, - 666307205, - 773529912, - 1294757372, - 1396182291, - 1695183700, - 1986661051, - 2177026350, - 2456956037, - 2730485921, - 2820302411, - 3259730800, - 3345764771, - 3516065817, - 3600352804, - 4094571909, - 275423344, - 430227734, - 506948616, - 659060556, - 883997877, - 958139571, - 1322822218, - 1537002063, - 1747873779, - 1955562222, - 2024104815, - 2227730452, - 2361852424, - 2428436474, - 2756734187, - 3204031479, - 3329325298 - ]; - var OUTPUT_TYPES = ["hex", "array", "digest", "arrayBuffer"]; - var blocks = []; - if (root.JS_SHA256_NO_NODE_JS || !Array.isArray) { - Array.isArray = function(obj) { - return Object.prototype.toString.call(obj) === "[object Array]"; - }; - } - if (ARRAY_BUFFER && (root.JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) { - ArrayBuffer.isView = function(obj) { - return typeof obj === "object" && obj.buffer && obj.buffer.constructor === ArrayBuffer; - }; - } - var createOutputMethod = function(outputType, is2242) { - return function(message) { - return new Sha256(is2242, true).update(message)[outputType](); - }; - }; - var createMethod = function(is2242) { - var method2 = createOutputMethod("hex", is2242); - if (NODE_JS) { - method2 = nodeWrap(method2, is2242); - } - method2.create = function() { - return new Sha256(is2242); - }; - method2.update = function(message) { - return method2.create().update(message); - }; - for (var i = 0; i < OUTPUT_TYPES.length; ++i) { - var type = OUTPUT_TYPES[i]; - method2[type] = createOutputMethod(type, is2242); - } - return method2; - }; - var nodeWrap = function(method, is224) { - var crypto = eval("require('crypto')"); - var Buffer = eval("require('buffer').Buffer"); - var algorithm = is224 ? "sha224" : "sha256"; - var nodeMethod = function(message) { - if (typeof message === "string") { - return crypto.createHash(algorithm).update(message, "utf8").digest("hex"); - } else { - if (message === null || message === void 0) { - throw new Error(ERROR); - } else if (message.constructor === ArrayBuffer) { - message = new Uint8Array(message); - } - } - if (Array.isArray(message) || ArrayBuffer.isView(message) || message.constructor === Buffer) { - return crypto.createHash(algorithm).update(new Buffer(message)).digest("hex"); - } else { - return method(message); - } - }; - return nodeMethod; - }; - var createHmacOutputMethod = function(outputType, is2242) { - return function(key2, message) { - return new HmacSha256(key2, is2242, true).update(message)[outputType](); - }; - }; - var createHmacMethod = function(is2242) { - var method2 = createHmacOutputMethod("hex", is2242); - method2.create = function(key2) { - return new HmacSha256(key2, is2242); - }; - method2.update = function(key2, message) { - return method2.create(key2).update(message); - }; - for (var i = 0; i < OUTPUT_TYPES.length; ++i) { - var type = OUTPUT_TYPES[i]; - method2[type] = createHmacOutputMethod(type, is2242); - } - return method2; - }; - function Sha256(is2242, sharedMemory) { - if (sharedMemory) { - blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] = blocks[6] = blocks[7] = blocks[8] = blocks[9] = blocks[10] = blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0; - this.blocks = blocks; - } else { - this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; - } - if (is2242) { - this.h0 = 3238371032; - this.h1 = 914150663; - this.h2 = 812702999; - this.h3 = 4144912697; - this.h4 = 4290775857; - this.h5 = 1750603025; - this.h6 = 1694076839; - this.h7 = 3204075428; - } else { - this.h0 = 1779033703; - this.h1 = 3144134277; - this.h2 = 1013904242; - this.h3 = 2773480762; - this.h4 = 1359893119; - this.h5 = 2600822924; - this.h6 = 528734635; - this.h7 = 1541459225; - } - this.block = this.start = this.bytes = this.hBytes = 0; - this.finalized = this.hashed = false; - this.first = true; - this.is224 = is2242; - } - Sha256.prototype.update = function(message) { - if (this.finalized) { - return; - } - var notString, type = typeof message; - if (type !== "string") { - if (type === "object") { - if (message === null) { - throw new Error(ERROR); - } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) { - message = new Uint8Array(message); - } else if (!Array.isArray(message)) { - if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) { - throw new Error(ERROR); - } - } - } else { - throw new Error(ERROR); - } - notString = true; - } - var code, index2 = 0, i, length = message.length, blocks2 = this.blocks; - while (index2 < length) { - if (this.hashed) { - this.hashed = false; - blocks2[0] = this.block; - blocks2[16] = blocks2[1] = blocks2[2] = blocks2[3] = blocks2[4] = blocks2[5] = blocks2[6] = blocks2[7] = blocks2[8] = blocks2[9] = blocks2[10] = blocks2[11] = blocks2[12] = blocks2[13] = blocks2[14] = blocks2[15] = 0; - } - if (notString) { - for (i = this.start; index2 < length && i < 64; ++index2) { - blocks2[i >> 2] |= message[index2] << SHIFT[i++ & 3]; - } - } else { - for (i = this.start; index2 < length && i < 64; ++index2) { - code = message.charCodeAt(index2); - if (code < 128) { - blocks2[i >> 2] |= code << SHIFT[i++ & 3]; - } else if (code < 2048) { - blocks2[i >> 2] |= (192 | code >> 6) << SHIFT[i++ & 3]; - blocks2[i >> 2] |= (128 | code & 63) << SHIFT[i++ & 3]; - } else if (code < 55296 || code >= 57344) { - blocks2[i >> 2] |= (224 | code >> 12) << SHIFT[i++ & 3]; - blocks2[i >> 2] |= (128 | code >> 6 & 63) << SHIFT[i++ & 3]; - blocks2[i >> 2] |= (128 | code & 63) << SHIFT[i++ & 3]; - } else { - code = 65536 + ((code & 1023) << 10 | message.charCodeAt(++index2) & 1023); - blocks2[i >> 2] |= (240 | code >> 18) << SHIFT[i++ & 3]; - blocks2[i >> 2] |= (128 | code >> 12 & 63) << SHIFT[i++ & 3]; - blocks2[i >> 2] |= (128 | code >> 6 & 63) << SHIFT[i++ & 3]; - blocks2[i >> 2] |= (128 | code & 63) << SHIFT[i++ & 3]; - } - } - } - this.lastByteIndex = i; - this.bytes += i - this.start; - if (i >= 64) { - this.block = blocks2[16]; - this.start = i - 64; - this.hash(); - this.hashed = true; - } else { - this.start = i; - } - } - if (this.bytes > 4294967295) { - this.hBytes += this.bytes / 4294967296 << 0; - this.bytes = this.bytes % 4294967296; - } - return this; - }; - Sha256.prototype.finalize = function() { - if (this.finalized) { - return; - } - this.finalized = true; - var blocks2 = this.blocks, i = this.lastByteIndex; - blocks2[16] = this.block; - blocks2[i >> 2] |= EXTRA[i & 3]; - this.block = blocks2[16]; - if (i >= 56) { - if (!this.hashed) { - this.hash(); - } - blocks2[0] = this.block; - blocks2[16] = blocks2[1] = blocks2[2] = blocks2[3] = blocks2[4] = blocks2[5] = blocks2[6] = blocks2[7] = blocks2[8] = blocks2[9] = blocks2[10] = blocks2[11] = blocks2[12] = blocks2[13] = blocks2[14] = blocks2[15] = 0; - } - blocks2[14] = this.hBytes << 3 | this.bytes >>> 29; - blocks2[15] = this.bytes << 3; - this.hash(); - }; - Sha256.prototype.hash = function() { - var a = this.h0, b = this.h1, c = this.h2, d = this.h3, e = this.h4, f = this.h5, g = this.h6, h = this.h7, blocks2 = this.blocks, j, s0, s1, maj, t1, t2, ch, ab, da, cd, bc; - for (j = 16; j < 64; ++j) { - t1 = blocks2[j - 15]; - s0 = (t1 >>> 7 | t1 << 25) ^ (t1 >>> 18 | t1 << 14) ^ t1 >>> 3; - t1 = blocks2[j - 2]; - s1 = (t1 >>> 17 | t1 << 15) ^ (t1 >>> 19 | t1 << 13) ^ t1 >>> 10; - blocks2[j] = blocks2[j - 16] + s0 + blocks2[j - 7] + s1 << 0; - } - bc = b & c; - for (j = 0; j < 64; j += 4) { - if (this.first) { - if (this.is224) { - ab = 300032; - t1 = blocks2[0] - 1413257819; - h = t1 - 150054599 << 0; - d = t1 + 24177077 << 0; - } else { - ab = 704751109; - t1 = blocks2[0] - 210244248; - h = t1 - 1521486534 << 0; - d = t1 + 143694565 << 0; - } - this.first = false; - } else { - s0 = (a >>> 2 | a << 30) ^ (a >>> 13 | a << 19) ^ (a >>> 22 | a << 10); - s1 = (e >>> 6 | e << 26) ^ (e >>> 11 | e << 21) ^ (e >>> 25 | e << 7); - ab = a & b; - maj = ab ^ a & c ^ bc; - ch = e & f ^ ~e & g; - t1 = h + s1 + ch + K[j] + blocks2[j]; - t2 = s0 + maj; - h = d + t1 << 0; - d = t1 + t2 << 0; - } - s0 = (d >>> 2 | d << 30) ^ (d >>> 13 | d << 19) ^ (d >>> 22 | d << 10); - s1 = (h >>> 6 | h << 26) ^ (h >>> 11 | h << 21) ^ (h >>> 25 | h << 7); - da = d & a; - maj = da ^ d & b ^ ab; - ch = h & e ^ ~h & f; - t1 = g + s1 + ch + K[j + 1] + blocks2[j + 1]; - t2 = s0 + maj; - g = c + t1 << 0; - c = t1 + t2 << 0; - s0 = (c >>> 2 | c << 30) ^ (c >>> 13 | c << 19) ^ (c >>> 22 | c << 10); - s1 = (g >>> 6 | g << 26) ^ (g >>> 11 | g << 21) ^ (g >>> 25 | g << 7); - cd = c & d; - maj = cd ^ c & a ^ da; - ch = g & h ^ ~g & e; - t1 = f + s1 + ch + K[j + 2] + blocks2[j + 2]; - t2 = s0 + maj; - f = b + t1 << 0; - b = t1 + t2 << 0; - s0 = (b >>> 2 | b << 30) ^ (b >>> 13 | b << 19) ^ (b >>> 22 | b << 10); - s1 = (f >>> 6 | f << 26) ^ (f >>> 11 | f << 21) ^ (f >>> 25 | f << 7); - bc = b & c; - maj = bc ^ b & d ^ cd; - ch = f & g ^ ~f & h; - t1 = e + s1 + ch + K[j + 3] + blocks2[j + 3]; - t2 = s0 + maj; - e = a + t1 << 0; - a = t1 + t2 << 0; - } - this.h0 = this.h0 + a << 0; - this.h1 = this.h1 + b << 0; - this.h2 = this.h2 + c << 0; - this.h3 = this.h3 + d << 0; - this.h4 = this.h4 + e << 0; - this.h5 = this.h5 + f << 0; - this.h6 = this.h6 + g << 0; - this.h7 = this.h7 + h << 0; - }; - Sha256.prototype.hex = function() { - this.finalize(); - var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5, h6 = this.h6, h7 = this.h7; - var hex = HEX_CHARS[h0 >> 28 & 15] + HEX_CHARS[h0 >> 24 & 15] + HEX_CHARS[h0 >> 20 & 15] + HEX_CHARS[h0 >> 16 & 15] + HEX_CHARS[h0 >> 12 & 15] + HEX_CHARS[h0 >> 8 & 15] + HEX_CHARS[h0 >> 4 & 15] + HEX_CHARS[h0 & 15] + HEX_CHARS[h1 >> 28 & 15] + HEX_CHARS[h1 >> 24 & 15] + HEX_CHARS[h1 >> 20 & 15] + HEX_CHARS[h1 >> 16 & 15] + HEX_CHARS[h1 >> 12 & 15] + HEX_CHARS[h1 >> 8 & 15] + HEX_CHARS[h1 >> 4 & 15] + HEX_CHARS[h1 & 15] + HEX_CHARS[h2 >> 28 & 15] + HEX_CHARS[h2 >> 24 & 15] + HEX_CHARS[h2 >> 20 & 15] + HEX_CHARS[h2 >> 16 & 15] + HEX_CHARS[h2 >> 12 & 15] + HEX_CHARS[h2 >> 8 & 15] + HEX_CHARS[h2 >> 4 & 15] + HEX_CHARS[h2 & 15] + HEX_CHARS[h3 >> 28 & 15] + HEX_CHARS[h3 >> 24 & 15] + HEX_CHARS[h3 >> 20 & 15] + HEX_CHARS[h3 >> 16 & 15] + HEX_CHARS[h3 >> 12 & 15] + HEX_CHARS[h3 >> 8 & 15] + HEX_CHARS[h3 >> 4 & 15] + HEX_CHARS[h3 & 15] + HEX_CHARS[h4 >> 28 & 15] + HEX_CHARS[h4 >> 24 & 15] + HEX_CHARS[h4 >> 20 & 15] + HEX_CHARS[h4 >> 16 & 15] + HEX_CHARS[h4 >> 12 & 15] + HEX_CHARS[h4 >> 8 & 15] + HEX_CHARS[h4 >> 4 & 15] + HEX_CHARS[h4 & 15] + HEX_CHARS[h5 >> 28 & 15] + HEX_CHARS[h5 >> 24 & 15] + HEX_CHARS[h5 >> 20 & 15] + HEX_CHARS[h5 >> 16 & 15] + HEX_CHARS[h5 >> 12 & 15] + HEX_CHARS[h5 >> 8 & 15] + HEX_CHARS[h5 >> 4 & 15] + HEX_CHARS[h5 & 15] + HEX_CHARS[h6 >> 28 & 15] + HEX_CHARS[h6 >> 24 & 15] + HEX_CHARS[h6 >> 20 & 15] + HEX_CHARS[h6 >> 16 & 15] + HEX_CHARS[h6 >> 12 & 15] + HEX_CHARS[h6 >> 8 & 15] + HEX_CHARS[h6 >> 4 & 15] + HEX_CHARS[h6 & 15]; - if (!this.is224) { - hex += HEX_CHARS[h7 >> 28 & 15] + HEX_CHARS[h7 >> 24 & 15] + HEX_CHARS[h7 >> 20 & 15] + HEX_CHARS[h7 >> 16 & 15] + HEX_CHARS[h7 >> 12 & 15] + HEX_CHARS[h7 >> 8 & 15] + HEX_CHARS[h7 >> 4 & 15] + HEX_CHARS[h7 & 15]; - } - return hex; - }; - Sha256.prototype.toString = Sha256.prototype.hex; - Sha256.prototype.digest = function() { - this.finalize(); - var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5, h6 = this.h6, h7 = this.h7; - var arr = [ - h0 >> 24 & 255, - h0 >> 16 & 255, - h0 >> 8 & 255, - h0 & 255, - h1 >> 24 & 255, - h1 >> 16 & 255, - h1 >> 8 & 255, - h1 & 255, - h2 >> 24 & 255, - h2 >> 16 & 255, - h2 >> 8 & 255, - h2 & 255, - h3 >> 24 & 255, - h3 >> 16 & 255, - h3 >> 8 & 255, - h3 & 255, - h4 >> 24 & 255, - h4 >> 16 & 255, - h4 >> 8 & 255, - h4 & 255, - h5 >> 24 & 255, - h5 >> 16 & 255, - h5 >> 8 & 255, - h5 & 255, - h6 >> 24 & 255, - h6 >> 16 & 255, - h6 >> 8 & 255, - h6 & 255 - ]; - if (!this.is224) { - arr.push(h7 >> 24 & 255, h7 >> 16 & 255, h7 >> 8 & 255, h7 & 255); - } - return arr; - }; - Sha256.prototype.array = Sha256.prototype.digest; - Sha256.prototype.arrayBuffer = function() { - this.finalize(); - var buffer2 = new ArrayBuffer(this.is224 ? 28 : 32); - var dataView = new DataView(buffer2); - dataView.setUint32(0, this.h0); - dataView.setUint32(4, this.h1); - dataView.setUint32(8, this.h2); - dataView.setUint32(12, this.h3); - dataView.setUint32(16, this.h4); - dataView.setUint32(20, this.h5); - dataView.setUint32(24, this.h6); - if (!this.is224) { - dataView.setUint32(28, this.h7); - } - return buffer2; - }; - function HmacSha256(key2, is2242, sharedMemory) { - var i, type = typeof key2; - if (type === "string") { - var bytes = [], length = key2.length, index2 = 0, code; - for (i = 0; i < length; ++i) { - code = key2.charCodeAt(i); - if (code < 128) { - bytes[index2++] = code; - } else if (code < 2048) { - bytes[index2++] = 192 | code >> 6; - bytes[index2++] = 128 | code & 63; - } else if (code < 55296 || code >= 57344) { - bytes[index2++] = 224 | code >> 12; - bytes[index2++] = 128 | code >> 6 & 63; - bytes[index2++] = 128 | code & 63; - } else { - code = 65536 + ((code & 1023) << 10 | key2.charCodeAt(++i) & 1023); - bytes[index2++] = 240 | code >> 18; - bytes[index2++] = 128 | code >> 12 & 63; - bytes[index2++] = 128 | code >> 6 & 63; - bytes[index2++] = 128 | code & 63; - } - } - key2 = bytes; - } else { - if (type === "object") { - if (key2 === null) { - throw new Error(ERROR); - } else if (ARRAY_BUFFER && key2.constructor === ArrayBuffer) { - key2 = new Uint8Array(key2); - } else if (!Array.isArray(key2)) { - if (!ARRAY_BUFFER || !ArrayBuffer.isView(key2)) { - throw new Error(ERROR); - } - } - } else { - throw new Error(ERROR); - } - } - if (key2.length > 64) { - key2 = new Sha256(is2242, true).update(key2).array(); - } - var oKeyPad = [], iKeyPad = []; - for (i = 0; i < 64; ++i) { - var b = key2[i] || 0; - oKeyPad[i] = 92 ^ b; - iKeyPad[i] = 54 ^ b; - } - Sha256.call(this, is2242, sharedMemory); - this.update(iKeyPad); - this.oKeyPad = oKeyPad; - this.inner = true; - this.sharedMemory = sharedMemory; - } - HmacSha256.prototype = new Sha256(); - HmacSha256.prototype.finalize = function() { - Sha256.prototype.finalize.call(this); - if (this.inner) { - this.inner = false; - var innerHash = this.array(); - Sha256.call(this, this.is224, this.sharedMemory); - this.update(this.oKeyPad); - this.update(innerHash); - Sha256.prototype.finalize.call(this); - } - }; - var exports = createMethod(); - exports.sha256 = exports; - exports.sha224 = createMethod(true); - exports.sha256.hmac = createHmacMethod(); - exports.sha224.hmac = createHmacMethod(true); - if (COMMON_JS) { - module.exports = exports; - } else { - root.sha256 = exports.sha256; - root.sha224 = exports.sha224; - if (AMD) { - define(function() { - return exports; - }); - } - } - })(); - } -}); - -// node_modules/.pnpm/hogan.js@3.0.2/node_modules/hogan.js/lib/compiler.js -var require_compiler = __commonJS({ - "node_modules/.pnpm/hogan.js@3.0.2/node_modules/hogan.js/lib/compiler.js"(exports2) { - init_polyfill_buffer(); - (function(Hogan4) { - var rIsWhitespace = /\S/, rQuot = /\"/g, rNewline = /\n/g, rCr = /\r/g, rSlash = /\\/g, rLineSep = /\u2028/, rParagraphSep = /\u2029/; - Hogan4.tags = { - "#": 1, - "^": 2, - "<": 3, - "$": 4, - "/": 5, - "!": 6, - ">": 7, - "=": 8, - "_v": 9, - "{": 10, - "&": 11, - "_t": 12 - }; - Hogan4.scan = function scan(text2, delimiters) { - var len = text2.length, IN_TEXT = 0, IN_TAG_TYPE = 1, IN_TAG = 2, state = IN_TEXT, tagType = null, tag2 = null, buf = "", tokens = [], seenTag = false, i = 0, lineStart = 0, otag = "{{", ctag = "}}"; - function addBuf() { - if (buf.length > 0) { - tokens.push({ tag: "_t", text: new String(buf) }); - buf = ""; - } - } - function lineIsWhitespace() { - var isAllWhitespace = true; - for (var j = lineStart; j < tokens.length; j++) { - isAllWhitespace = Hogan4.tags[tokens[j].tag] < Hogan4.tags["_v"] || tokens[j].tag == "_t" && tokens[j].text.match(rIsWhitespace) === null; - if (!isAllWhitespace) { - return false; - } - } - return isAllWhitespace; - } - function filterLine(haveSeenTag, noNewLine) { - addBuf(); - if (haveSeenTag && lineIsWhitespace()) { - for (var j = lineStart, next; j < tokens.length; j++) { - if (tokens[j].text) { - if ((next = tokens[j + 1]) && next.tag == ">") { - next.indent = tokens[j].text.toString(); - } - tokens.splice(j, 1); - } - } - } else if (!noNewLine) { - tokens.push({ tag: "\n" }); - } - seenTag = false; - lineStart = tokens.length; - } - function changeDelimiters(text3, index2) { - var close = "=" + ctag, closeIndex = text3.indexOf(close, index2), delimiters2 = trim( - text3.substring(text3.indexOf("=", index2) + 1, closeIndex) - ).split(" "); - otag = delimiters2[0]; - ctag = delimiters2[delimiters2.length - 1]; - return closeIndex + close.length - 1; - } - if (delimiters) { - delimiters = delimiters.split(" "); - otag = delimiters[0]; - ctag = delimiters[1]; - } - for (i = 0; i < len; i++) { - if (state == IN_TEXT) { - if (tagChange(otag, text2, i)) { - --i; - addBuf(); - state = IN_TAG_TYPE; - } else { - if (text2.charAt(i) == "\n") { - filterLine(seenTag); - } else { - buf += text2.charAt(i); - } - } - } else if (state == IN_TAG_TYPE) { - i += otag.length - 1; - tag2 = Hogan4.tags[text2.charAt(i + 1)]; - tagType = tag2 ? text2.charAt(i + 1) : "_v"; - if (tagType == "=") { - i = changeDelimiters(text2, i); - state = IN_TEXT; - } else { - if (tag2) { - i++; - } - state = IN_TAG; - } - seenTag = i; - } else { - if (tagChange(ctag, text2, i)) { - tokens.push({ - tag: tagType, - n: trim(buf), - otag, - ctag, - i: tagType == "/" ? seenTag - otag.length : i + ctag.length - }); - buf = ""; - i += ctag.length - 1; - state = IN_TEXT; - if (tagType == "{") { - if (ctag == "}}") { - i++; - } else { - cleanTripleStache(tokens[tokens.length - 1]); - } - } - } else { - buf += text2.charAt(i); - } - } - } - filterLine(seenTag, true); - return tokens; - }; - function cleanTripleStache(token) { - if (token.n.substr(token.n.length - 1) === "}") { - token.n = token.n.substring(0, token.n.length - 1); - } - } - function trim(s) { - if (s.trim) { - return s.trim(); - } - return s.replace(/^\s*|\s*$/g, ""); - } - function tagChange(tag2, text2, index2) { - if (text2.charAt(index2) != tag2.charAt(0)) { - return false; - } - for (var i = 1, l = tag2.length; i < l; i++) { - if (text2.charAt(index2 + i) != tag2.charAt(i)) { - return false; - } - } - return true; - } - var allowedInSuper = { "_t": true, "\n": true, "$": true, "/": true }; - function buildTree(tokens, kind, stack, customTags) { - var instructions = [], opener = null, tail = null, token = null; - tail = stack[stack.length - 1]; - while (tokens.length > 0) { - token = tokens.shift(); - if (tail && tail.tag == "<" && !(token.tag in allowedInSuper)) { - throw new Error("Illegal content in < super tag."); - } - if (Hogan4.tags[token.tag] <= Hogan4.tags["$"] || isOpener(token, customTags)) { - stack.push(token); - token.nodes = buildTree(tokens, token.tag, stack, customTags); - } else if (token.tag == "/") { - if (stack.length === 0) { - throw new Error("Closing tag without opener: /" + token.n); - } - opener = stack.pop(); - if (token.n != opener.n && !isCloser(token.n, opener.n, customTags)) { - throw new Error("Nesting error: " + opener.n + " vs. " + token.n); - } - opener.end = token.i; - return instructions; - } else if (token.tag == "\n") { - token.last = tokens.length == 0 || tokens[0].tag == "\n"; - } - instructions.push(token); - } - if (stack.length > 0) { - throw new Error("missing closing tag: " + stack.pop().n); - } - return instructions; - } - function isOpener(token, tags) { - for (var i = 0, l = tags.length; i < l; i++) { - if (tags[i].o == token.n) { - token.tag = "#"; - return true; - } - } - } - function isCloser(close, open, tags) { - for (var i = 0, l = tags.length; i < l; i++) { - if (tags[i].c == close && tags[i].o == open) { - return true; - } - } - } - function stringifySubstitutions(obj) { - var items = []; - for (var key2 in obj) { - items.push('"' + esc(key2) + '": function(c,p,t,i) {' + obj[key2] + "}"); - } - return "{ " + items.join(",") + " }"; - } - function stringifyPartials(codeObj) { - var partials = []; - for (var key2 in codeObj.partials) { - partials.push('"' + esc(key2) + '":{name:"' + esc(codeObj.partials[key2].name) + '", ' + stringifyPartials(codeObj.partials[key2]) + "}"); - } - return "partials: {" + partials.join(",") + "}, subs: " + stringifySubstitutions(codeObj.subs); - } - Hogan4.stringify = function(codeObj, text2, options) { - return "{code: function (c,p,i) { " + Hogan4.wrapMain(codeObj.code) + " }," + stringifyPartials(codeObj) + "}"; - }; - var serialNo = 0; - Hogan4.generate = function(tree, text2, options) { - serialNo = 0; - var context = { code: "", subs: {}, partials: {} }; - Hogan4.walk(tree, context); - if (options.asString) { - return this.stringify(context, text2, options); - } - return this.makeTemplate(context, text2, options); - }; - Hogan4.wrapMain = function(code) { - return 'var t=this;t.b(i=i||"");' + code + "return t.fl();"; - }; - Hogan4.template = Hogan4.Template; - Hogan4.makeTemplate = function(codeObj, text2, options) { - var template = this.makePartials(codeObj); - template.code = new Function("c", "p", "i", this.wrapMain(codeObj.code)); - return new this.template(template, text2, this, options); - }; - Hogan4.makePartials = function(codeObj) { - var key2, template = { subs: {}, partials: codeObj.partials, name: codeObj.name }; - for (key2 in template.partials) { - template.partials[key2] = this.makePartials(template.partials[key2]); - } - for (key2 in codeObj.subs) { - template.subs[key2] = new Function("c", "p", "t", "i", codeObj.subs[key2]); - } - return template; - }; - function esc(s) { - return s.replace(rSlash, "\\\\").replace(rQuot, '\\"').replace(rNewline, "\\n").replace(rCr, "\\r").replace(rLineSep, "\\u2028").replace(rParagraphSep, "\\u2029"); - } - function chooseMethod(s) { - return ~s.indexOf(".") ? "d" : "f"; - } - function createPartial(node, context) { - var prefix = "<" + (context.prefix || ""); - var sym = prefix + node.n + serialNo++; - context.partials[sym] = { name: node.n, partials: {} }; - context.code += 't.b(t.rp("' + esc(sym) + '",c,p,"' + (node.indent || "") + '"));'; - return sym; - } - Hogan4.codegen = { - "#": function(node, context) { - context.code += "if(t.s(t." + chooseMethod(node.n) + '("' + esc(node.n) + '",c,p,1),c,p,0,' + node.i + "," + node.end + ',"' + node.otag + " " + node.ctag + '")){t.rs(c,p,function(c,p,t){'; - Hogan4.walk(node.nodes, context); - context.code += "});c.pop();}"; - }, - "^": function(node, context) { - context.code += "if(!t.s(t." + chooseMethod(node.n) + '("' + esc(node.n) + '",c,p,1),c,p,1,0,0,"")){'; - Hogan4.walk(node.nodes, context); - context.code += "};"; - }, - ">": createPartial, - "<": function(node, context) { - var ctx = { partials: {}, code: "", subs: {}, inPartial: true }; - Hogan4.walk(node.nodes, ctx); - var template = context.partials[createPartial(node, context)]; - template.subs = ctx.subs; - template.partials = ctx.partials; - }, - "$": function(node, context) { - var ctx = { subs: {}, code: "", partials: context.partials, prefix: node.n }; - Hogan4.walk(node.nodes, ctx); - context.subs[node.n] = ctx.code; - if (!context.inPartial) { - context.code += 't.sub("' + esc(node.n) + '",c,p,i);'; - } - }, - "\n": function(node, context) { - context.code += write('"\\n"' + (node.last ? "" : " + i")); - }, - "_v": function(node, context) { - context.code += "t.b(t.v(t." + chooseMethod(node.n) + '("' + esc(node.n) + '",c,p,0)));'; - }, - "_t": function(node, context) { - context.code += write('"' + esc(node.text) + '"'); - }, - "{": tripleStache, - "&": tripleStache - }; - function tripleStache(node, context) { - context.code += "t.b(t.t(t." + chooseMethod(node.n) + '("' + esc(node.n) + '",c,p,0)));'; - } - function write(s) { - return "t.b(" + s + ");"; - } - Hogan4.walk = function(nodelist, context) { - var func; - for (var i = 0, l = nodelist.length; i < l; i++) { - func = Hogan4.codegen[nodelist[i].tag]; - func && func(nodelist[i], context); - } - return context; - }; - Hogan4.parse = function(tokens, text2, options) { - options = options || {}; - return buildTree(tokens, "", [], options.sectionTags || []); - }; - Hogan4.cache = {}; - Hogan4.cacheKey = function(text2, options) { - return [text2, !!options.asString, !!options.disableLambda, options.delimiters, !!options.modelGet].join("||"); - }; - Hogan4.compile = function(text2, options) { - options = options || {}; - var key2 = Hogan4.cacheKey(text2, options); - var template = this.cache[key2]; - if (template) { - var partials = template.partials; - for (var name in partials) { - delete partials[name].instance; - } - return template; - } - template = this.generate(this.parse(this.scan(text2, options.delimiters), text2, options), text2, options); - return this.cache[key2] = template; - }; - })(typeof exports2 !== "undefined" ? exports2 : Hogan); - } -}); - -// node_modules/.pnpm/hogan.js@3.0.2/node_modules/hogan.js/lib/template.js -var require_template = __commonJS({ - "node_modules/.pnpm/hogan.js@3.0.2/node_modules/hogan.js/lib/template.js"(exports2) { - init_polyfill_buffer(); - var Hogan4 = {}; - (function(Hogan5) { - Hogan5.Template = function(codeObj, text2, compiler, options) { - codeObj = codeObj || {}; - this.r = codeObj.code || this.r; - this.c = compiler; - this.options = options || {}; - this.text = text2 || ""; - this.partials = codeObj.partials || {}; - this.subs = codeObj.subs || {}; - this.buf = ""; - }; - Hogan5.Template.prototype = { - // render: replaced by generated code. - r: function(context, partials, indent2) { - return ""; - }, - // variable escaping - v: hoganEscape, - // triple stache - t: coerceToString, - render: function render(context, partials, indent2) { - return this.ri([context], partials || {}, indent2); - }, - // render internal -- a hook for overrides that catches partials too - ri: function(context, partials, indent2) { - return this.r(context, partials, indent2); - }, - // ensurePartial - ep: function(symbol, partials) { - var partial = this.partials[symbol]; - var template = partials[partial.name]; - if (partial.instance && partial.base == template) { - return partial.instance; - } - if (typeof template == "string") { - if (!this.c) { - throw new Error("No compiler available."); - } - template = this.c.compile(template, this.options); - } - if (!template) { - return null; - } - this.partials[symbol].base = template; - if (partial.subs) { - if (!partials.stackText) - partials.stackText = {}; - for (key in partial.subs) { - if (!partials.stackText[key]) { - partials.stackText[key] = this.activeSub !== void 0 && partials.stackText[this.activeSub] ? partials.stackText[this.activeSub] : this.text; - } - } - template = createSpecializedPartial( - template, - partial.subs, - partial.partials, - this.stackSubs, - this.stackPartials, - partials.stackText - ); - } - this.partials[symbol].instance = template; - return template; - }, - // tries to find a partial in the current scope and render it - rp: function(symbol, context, partials, indent2) { - var partial = this.ep(symbol, partials); - if (!partial) { - return ""; - } - return partial.ri(context, partials, indent2); - }, - // render a section - rs: function(context, partials, section) { - var tail = context[context.length - 1]; - if (!isArray(tail)) { - section(context, partials, this); - return; - } - for (var i = 0; i < tail.length; i++) { - context.push(tail[i]); - section(context, partials, this); - context.pop(); - } - }, - // maybe start a section - s: function(val, ctx, partials, inverted, start, end, tags) { - var pass; - if (isArray(val) && val.length === 0) { - return false; - } - if (typeof val == "function") { - val = this.ms(val, ctx, partials, inverted, start, end, tags); - } - pass = !!val; - if (!inverted && pass && ctx) { - ctx.push(typeof val == "object" ? val : ctx[ctx.length - 1]); - } - return pass; - }, - // find values with dotted names - d: function(key2, ctx, partials, returnFound) { - var found, names = key2.split("."), val = this.f(names[0], ctx, partials, returnFound), doModelGet = this.options.modelGet, cx = null; - if (key2 === "." && isArray(ctx[ctx.length - 2])) { - val = ctx[ctx.length - 1]; - } else { - for (var i = 1; i < names.length; i++) { - found = findInScope(names[i], val, doModelGet); - if (found !== void 0) { - cx = val; - val = found; - } else { - val = ""; - } - } - } - if (returnFound && !val) { - return false; - } - if (!returnFound && typeof val == "function") { - ctx.push(cx); - val = this.mv(val, ctx, partials); - ctx.pop(); - } - return val; - }, - // find values with normal names - f: function(key2, ctx, partials, returnFound) { - var val = false, v = null, found = false, doModelGet = this.options.modelGet; - for (var i = ctx.length - 1; i >= 0; i--) { - v = ctx[i]; - val = findInScope(key2, v, doModelGet); - if (val !== void 0) { - found = true; - break; - } - } - if (!found) { - return returnFound ? false : ""; - } - if (!returnFound && typeof val == "function") { - val = this.mv(val, ctx, partials); - } - return val; - }, - // higher order templates - ls: function(func, cx, partials, text2, tags) { - var oldTags = this.options.delimiters; - this.options.delimiters = tags; - this.b(this.ct(coerceToString(func.call(cx, text2)), cx, partials)); - this.options.delimiters = oldTags; - return false; - }, - // compile text - ct: function(text2, cx, partials) { - if (this.options.disableLambda) { - throw new Error("Lambda features disabled."); - } - return this.c.compile(text2, this.options).render(cx, partials); - }, - // template result buffering - b: function(s) { - this.buf += s; - }, - fl: function() { - var r = this.buf; - this.buf = ""; - return r; - }, - // method replace section - ms: function(func, ctx, partials, inverted, start, end, tags) { - var textSource, cx = ctx[ctx.length - 1], result = func.call(cx); - if (typeof result == "function") { - if (inverted) { - return true; - } else { - textSource = this.activeSub && this.subsText && this.subsText[this.activeSub] ? this.subsText[this.activeSub] : this.text; - return this.ls(result, cx, partials, textSource.substring(start, end), tags); - } - } - return result; - }, - // method replace variable - mv: function(func, ctx, partials) { - var cx = ctx[ctx.length - 1]; - var result = func.call(cx); - if (typeof result == "function") { - return this.ct(coerceToString(result.call(cx)), cx, partials); - } - return result; - }, - sub: function(name, context, partials, indent2) { - var f = this.subs[name]; - if (f) { - this.activeSub = name; - f(context, partials, this, indent2); - this.activeSub = false; - } - } - }; - function findInScope(key2, scope, doModelGet) { - var val; - if (scope && typeof scope == "object") { - if (scope[key2] !== void 0) { - val = scope[key2]; - } else if (doModelGet && scope.get && typeof scope.get == "function") { - val = scope.get(key2); - } - } - return val; - } - function createSpecializedPartial(instance10, subs, partials, stackSubs, stackPartials, stackText) { - function PartialTemplate() { - } - ; - PartialTemplate.prototype = instance10; - function Substitutions() { - } - ; - Substitutions.prototype = instance10.subs; - var key2; - var partial = new PartialTemplate(); - partial.subs = new Substitutions(); - partial.subsText = {}; - partial.buf = ""; - stackSubs = stackSubs || {}; - partial.stackSubs = stackSubs; - partial.subsText = stackText; - for (key2 in subs) { - if (!stackSubs[key2]) - stackSubs[key2] = subs[key2]; - } - for (key2 in stackSubs) { - partial.subs[key2] = stackSubs[key2]; - } - stackPartials = stackPartials || {}; - partial.stackPartials = stackPartials; - for (key2 in partials) { - if (!stackPartials[key2]) - stackPartials[key2] = partials[key2]; - } - for (key2 in stackPartials) { - partial.partials[key2] = stackPartials[key2]; - } - return partial; - } - var rAmp = /&/g, rLt = //g, rApos = /\'/g, rQuot = /\"/g, hChars = /[&<>\"\']/; - function coerceToString(val) { - return String(val === null || val === void 0 ? "" : val); - } - function hoganEscape(str) { - str = coerceToString(str); - return hChars.test(str) ? str.replace(rAmp, "&").replace(rLt, "<").replace(rGt, ">").replace(rApos, "'").replace(rQuot, """) : str; - } - var isArray = Array.isArray || function(a) { - return Object.prototype.toString.call(a) === "[object Array]"; - }; - })(typeof exports2 !== "undefined" ? exports2 : Hogan4); - } -}); - -// node_modules/.pnpm/hogan.js@3.0.2/node_modules/hogan.js/lib/hogan.js -var require_hogan = __commonJS({ - "node_modules/.pnpm/hogan.js@3.0.2/node_modules/hogan.js/lib/hogan.js"(exports2, module2) { - init_polyfill_buffer(); - var Hogan4 = require_compiler(); - Hogan4.Template = require_template().Template; - Hogan4.template = Hogan4.Template; - module2.exports = Hogan4; - } -}); - -// node_modules/.pnpm/feather-icons@4.29.1/node_modules/feather-icons/dist/feather.js -var require_feather = __commonJS({ - "node_modules/.pnpm/feather-icons@4.29.1/node_modules/feather-icons/dist/feather.js"(exports2, module2) { - init_polyfill_buffer(); - (function webpackUniversalModuleDefinition(root2, factory) { - if (typeof exports2 === "object" && typeof module2 === "object") - module2.exports = factory(); - else if (typeof define === "function" && define.amd) - define([], factory); - else if (typeof exports2 === "object") - exports2["feather"] = factory(); - else - root2["feather"] = factory(); - })(typeof self !== "undefined" ? self : exports2, function() { - return ( - /******/ - function(modules) { - var installedModules = {}; - function __webpack_require__(moduleId) { - if (installedModules[moduleId]) { - return installedModules[moduleId].exports; - } - var module3 = installedModules[moduleId] = { - /******/ - i: moduleId, - /******/ - l: false, - /******/ - exports: {} - /******/ - }; - modules[moduleId].call(module3.exports, module3, module3.exports, __webpack_require__); - module3.l = true; - return module3.exports; - } - __webpack_require__.m = modules; - __webpack_require__.c = installedModules; - __webpack_require__.d = function(exports3, name, getter) { - if (!__webpack_require__.o(exports3, name)) { - Object.defineProperty(exports3, name, { - /******/ - configurable: false, - /******/ - enumerable: true, - /******/ - get: getter - /******/ - }); - } - }; - __webpack_require__.r = function(exports3) { - Object.defineProperty(exports3, "__esModule", { value: true }); - }; - __webpack_require__.n = function(module3) { - var getter = module3 && module3.__esModule ? ( - /******/ - function getDefault() { - return module3["default"]; - } - ) : ( - /******/ - function getModuleExports() { - return module3; - } - ); - __webpack_require__.d(getter, "a", getter); - return getter; - }; - __webpack_require__.o = function(object, property) { - return Object.prototype.hasOwnProperty.call(object, property); - }; - __webpack_require__.p = ""; - return __webpack_require__(__webpack_require__.s = 0); - }({ - /***/ - "./dist/icons.json": ( - /*!*************************!*\ - !*** ./dist/icons.json ***! - \*************************/ - /*! exports provided: activity, airplay, alert-circle, alert-octagon, alert-triangle, align-center, align-justify, align-left, align-right, anchor, aperture, archive, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, award, bar-chart-2, bar-chart, battery-charging, battery, bell-off, bell, bluetooth, bold, book-open, book, bookmark, box, briefcase, calendar, camera-off, camera, cast, check-circle, check-square, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, chrome, circle, clipboard, clock, cloud-drizzle, cloud-lightning, cloud-off, cloud-rain, cloud-snow, cloud, code, codepen, codesandbox, coffee, columns, command, compass, copy, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, cpu, credit-card, crop, crosshair, database, delete, disc, divide-circle, divide-square, divide, dollar-sign, download-cloud, download, dribbble, droplet, edit-2, edit-3, edit, external-link, eye-off, eye, facebook, fast-forward, feather, figma, file-minus, file-plus, file-text, file, film, filter, flag, folder-minus, folder-plus, folder, framer, frown, gift, git-branch, git-commit, git-merge, git-pull-request, github, gitlab, globe, grid, hard-drive, hash, headphones, heart, help-circle, hexagon, home, image, inbox, info, instagram, italic, key, layers, layout, life-buoy, link-2, link, linkedin, list, loader, lock, log-in, log-out, mail, map-pin, map, maximize-2, maximize, meh, menu, message-circle, message-square, mic-off, mic, minimize-2, minimize, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, mouse-pointer, move, music, navigation-2, navigation, octagon, package, paperclip, pause-circle, pause, pen-tool, percent, phone-call, phone-forwarded, phone-incoming, phone-missed, phone-off, phone-outgoing, phone, pie-chart, play-circle, play, plus-circle, plus-square, plus, pocket, power, printer, radio, refresh-ccw, refresh-cw, repeat, rewind, rotate-ccw, rotate-cw, rss, save, scissors, search, send, server, settings, share-2, share, shield-off, shield, shopping-bag, shopping-cart, shuffle, sidebar, skip-back, skip-forward, slack, slash, sliders, smartphone, smile, speaker, square, star, stop-circle, sun, sunrise, sunset, table, tablet, tag, target, terminal, thermometer, thumbs-down, thumbs-up, toggle-left, toggle-right, tool, trash-2, trash, trello, trending-down, trending-up, triangle, truck, tv, twitch, twitter, type, umbrella, underline, unlock, upload-cloud, upload, user-check, user-minus, user-plus, user-x, user, users, video-off, video, voicemail, volume-1, volume-2, volume-x, volume, watch, wifi-off, wifi, wind, x-circle, x-octagon, x-square, x, youtube, zap-off, zap, zoom-in, zoom-out, default */ - /***/ - function(module3) { - module3.exports = { "activity": '', "airplay": '', "alert-circle": '', "alert-octagon": '', "alert-triangle": '', "align-center": '', "align-justify": '', "align-left": '', "align-right": '', "anchor": '', "aperture": '', "archive": '', "arrow-down-circle": '', "arrow-down-left": '', "arrow-down-right": '', "arrow-down": '', "arrow-left-circle": '', "arrow-left": '', "arrow-right-circle": '', "arrow-right": '', "arrow-up-circle": '', "arrow-up-left": '', "arrow-up-right": '', "arrow-up": '', "at-sign": '', "award": '', "bar-chart-2": '', "bar-chart": '', "battery-charging": '', "battery": '', "bell-off": '', "bell": '', "bluetooth": '', "bold": '', "book-open": '', "book": '', "bookmark": '', "box": '', "briefcase": '', "calendar": '', "camera-off": '', "camera": '', "cast": '', "check-circle": '', "check-square": '', "check": '', "chevron-down": '', "chevron-left": '', "chevron-right": '', "chevron-up": '', "chevrons-down": '', "chevrons-left": '', "chevrons-right": '', "chevrons-up": '', "chrome": '', "circle": '', "clipboard": '', "clock": '', "cloud-drizzle": '', "cloud-lightning": '', "cloud-off": '', "cloud-rain": '', "cloud-snow": '', "cloud": '', "code": '', "codepen": '', "codesandbox": '', "coffee": '', "columns": '', "command": '', "compass": '', "copy": '', "corner-down-left": '', "corner-down-right": '', "corner-left-down": '', "corner-left-up": '', "corner-right-down": '', "corner-right-up": '', "corner-up-left": '', "corner-up-right": '', "cpu": '', "credit-card": '', "crop": '', "crosshair": '', "database": '', "delete": '', "disc": '', "divide-circle": '', "divide-square": '', "divide": '', "dollar-sign": '', "download-cloud": '', "download": '', "dribbble": '', "droplet": '', "edit-2": '', "edit-3": '', "edit": '', "external-link": '', "eye-off": '', "eye": '', "facebook": '', "fast-forward": '', "feather": '', "figma": '', "file-minus": '', "file-plus": '', "file-text": '', "file": '', "film": '', "filter": '', "flag": '', "folder-minus": '', "folder-plus": '', "folder": '', "framer": '', "frown": '', "gift": '', "git-branch": '', "git-commit": '', "git-merge": '', "git-pull-request": '', "github": '', "gitlab": '', "globe": '', "grid": '', "hard-drive": '', "hash": '', "headphones": '', "heart": '', "help-circle": '', "hexagon": '', "home": '', "image": '', "inbox": '', "info": '', "instagram": '', "italic": '', "key": '', "layers": '', "layout": '', "life-buoy": '', "link-2": '', "link": '', "linkedin": '', "list": '', "loader": '', "lock": '', "log-in": '', "log-out": '', "mail": '', "map-pin": '', "map": '', "maximize-2": '', "maximize": '', "meh": '', "menu": '', "message-circle": '', "message-square": '', "mic-off": '', "mic": '', "minimize-2": '', "minimize": '', "minus-circle": '', "minus-square": '', "minus": '', "monitor": '', "moon": '', "more-horizontal": '', "more-vertical": '', "mouse-pointer": '', "move": '', "music": '', "navigation-2": '', "navigation": '', "octagon": '', "package": '', "paperclip": '', "pause-circle": '', "pause": '', "pen-tool": '', "percent": '', "phone-call": '', "phone-forwarded": '', "phone-incoming": '', "phone-missed": '', "phone-off": '', "phone-outgoing": '', "phone": '', "pie-chart": '', "play-circle": '', "play": '', "plus-circle": '', "plus-square": '', "plus": '', "pocket": '', "power": '', "printer": '', "radio": '', "refresh-ccw": '', "refresh-cw": '', "repeat": '', "rewind": '', "rotate-ccw": '', "rotate-cw": '', "rss": '', "save": '', "scissors": '', "search": '', "send": '', "server": '', "settings": '', "share-2": '', "share": '', "shield-off": '', "shield": '', "shopping-bag": '', "shopping-cart": '', "shuffle": '', "sidebar": '', "skip-back": '', "skip-forward": '', "slack": '', "slash": '', "sliders": '', "smartphone": '', "smile": '', "speaker": '', "square": '', "star": '', "stop-circle": '', "sun": '', "sunrise": '', "sunset": '', "table": '', "tablet": '', "tag": '', "target": '', "terminal": '', "thermometer": '', "thumbs-down": '', "thumbs-up": '', "toggle-left": '', "toggle-right": '', "tool": '', "trash-2": '', "trash": '', "trello": '', "trending-down": '', "trending-up": '', "triangle": '', "truck": '', "tv": '', "twitch": '', "twitter": '', "type": '', "umbrella": '', "underline": '', "unlock": '', "upload-cloud": '', "upload": '', "user-check": '', "user-minus": '', "user-plus": '', "user-x": '', "user": '', "users": '', "video-off": '', "video": '', "voicemail": '', "volume-1": '', "volume-2": '', "volume-x": '', "volume": '', "watch": '', "wifi-off": '', "wifi": '', "wind": '', "x-circle": '', "x-octagon": '', "x-square": '', "x": '', "youtube": '', "zap-off": '', "zap": '', "zoom-in": '', "zoom-out": '' }; - } - ), - /***/ - "./node_modules/classnames/dedupe.js": ( - /*!*******************************************!*\ - !*** ./node_modules/classnames/dedupe.js ***! - \*******************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; - (function() { - "use strict"; - var classNames = function() { - function StorageObject() { - } - StorageObject.prototype = /* @__PURE__ */ Object.create(null); - function _parseArray(resultSet, array) { - var length = array.length; - for (var i = 0; i < length; ++i) { - _parse(resultSet, array[i]); - } - } - var hasOwn = {}.hasOwnProperty; - function _parseNumber(resultSet, num2) { - resultSet[num2] = true; - } - function _parseObject(resultSet, object) { - for (var k in object) { - if (hasOwn.call(object, k)) { - resultSet[k] = !!object[k]; - } - } - } - var SPACE = /\s+/; - function _parseString(resultSet, str) { - var array = str.split(SPACE); - var length = array.length; - for (var i = 0; i < length; ++i) { - resultSet[array[i]] = true; - } - } - function _parse(resultSet, arg) { - if (!arg) - return; - var argType = typeof arg; - if (argType === "string") { - _parseString(resultSet, arg); - } else if (Array.isArray(arg)) { - _parseArray(resultSet, arg); - } else if (argType === "object") { - _parseObject(resultSet, arg); - } else if (argType === "number") { - _parseNumber(resultSet, arg); - } - } - function _classNames() { - var len = arguments.length; - var args = Array(len); - for (var i = 0; i < len; i++) { - args[i] = arguments[i]; - } - var classSet = new StorageObject(); - _parseArray(classSet, args); - var list = []; - for (var k in classSet) { - if (classSet[k]) { - list.push(k); - } - } - return list.join(" "); - } - return _classNames; - }(); - if (typeof module3 !== "undefined" && module3.exports) { - module3.exports = classNames; - } else if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function() { - return classNames; - }.apply(exports3, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== void 0 && (module3.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - } else { - } - })(); - } - ), - /***/ - "./node_modules/core-js/es/array/from.js": ( - /*!***********************************************!*\ - !*** ./node_modules/core-js/es/array/from.js ***! - \***********************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - __webpack_require__( - /*! ../../modules/es.string.iterator */ - "./node_modules/core-js/modules/es.string.iterator.js" - ); - __webpack_require__( - /*! ../../modules/es.array.from */ - "./node_modules/core-js/modules/es.array.from.js" - ); - var path2 = __webpack_require__( - /*! ../../internals/path */ - "./node_modules/core-js/internals/path.js" - ); - module3.exports = path2.Array.from; - } - ), - /***/ - "./node_modules/core-js/internals/a-function.js": ( - /*!******************************************************!*\ - !*** ./node_modules/core-js/internals/a-function.js ***! - \******************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3) { - module3.exports = function(it) { - if (typeof it != "function") { - throw TypeError(String(it) + " is not a function"); - } - return it; - }; - } - ), - /***/ - "./node_modules/core-js/internals/an-object.js": ( - /*!*****************************************************!*\ - !*** ./node_modules/core-js/internals/an-object.js ***! - \*****************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - var isObject2 = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/core-js/internals/is-object.js" - ); - module3.exports = function(it) { - if (!isObject2(it)) { - throw TypeError(String(it) + " is not an object"); - } - return it; - }; - } - ), - /***/ - "./node_modules/core-js/internals/array-from.js": ( - /*!******************************************************!*\ - !*** ./node_modules/core-js/internals/array-from.js ***! - \******************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - "use strict"; - var bind = __webpack_require__( - /*! ../internals/bind-context */ - "./node_modules/core-js/internals/bind-context.js" - ); - var toObject = __webpack_require__( - /*! ../internals/to-object */ - "./node_modules/core-js/internals/to-object.js" - ); - var callWithSafeIterationClosing = __webpack_require__( - /*! ../internals/call-with-safe-iteration-closing */ - "./node_modules/core-js/internals/call-with-safe-iteration-closing.js" - ); - var isArrayIteratorMethod = __webpack_require__( - /*! ../internals/is-array-iterator-method */ - "./node_modules/core-js/internals/is-array-iterator-method.js" - ); - var toLength = __webpack_require__( - /*! ../internals/to-length */ - "./node_modules/core-js/internals/to-length.js" - ); - var createProperty = __webpack_require__( - /*! ../internals/create-property */ - "./node_modules/core-js/internals/create-property.js" - ); - var getIteratorMethod = __webpack_require__( - /*! ../internals/get-iterator-method */ - "./node_modules/core-js/internals/get-iterator-method.js" - ); - module3.exports = function from(arrayLike) { - var O = toObject(arrayLike); - var C = typeof this == "function" ? this : Array; - var argumentsLength = arguments.length; - var mapfn = argumentsLength > 1 ? arguments[1] : void 0; - var mapping = mapfn !== void 0; - var index2 = 0; - var iteratorMethod = getIteratorMethod(O); - var length, result, step, iterator; - if (mapping) - mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : void 0, 2); - if (iteratorMethod != void 0 && !(C == Array && isArrayIteratorMethod(iteratorMethod))) { - iterator = iteratorMethod.call(O); - result = new C(); - for (; !(step = iterator.next()).done; index2++) { - createProperty( - result, - index2, - mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index2], true) : step.value - ); - } - } else { - length = toLength(O.length); - result = new C(length); - for (; length > index2; index2++) { - createProperty(result, index2, mapping ? mapfn(O[index2], index2) : O[index2]); - } - } - result.length = index2; - return result; - }; - } - ), - /***/ - "./node_modules/core-js/internals/array-includes.js": ( - /*!**********************************************************!*\ - !*** ./node_modules/core-js/internals/array-includes.js ***! - \**********************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - var toIndexedObject = __webpack_require__( - /*! ../internals/to-indexed-object */ - "./node_modules/core-js/internals/to-indexed-object.js" - ); - var toLength = __webpack_require__( - /*! ../internals/to-length */ - "./node_modules/core-js/internals/to-length.js" - ); - var toAbsoluteIndex = __webpack_require__( - /*! ../internals/to-absolute-index */ - "./node_modules/core-js/internals/to-absolute-index.js" - ); - module3.exports = function(IS_INCLUDES) { - return function($this, el, fromIndex) { - var O = toIndexedObject($this); - var length = toLength(O.length); - var index2 = toAbsoluteIndex(fromIndex, length); - var value; - if (IS_INCLUDES && el != el) - while (length > index2) { - value = O[index2++]; - if (value != value) - return true; - } - else - for (; length > index2; index2++) - if (IS_INCLUDES || index2 in O) { - if (O[index2] === el) - return IS_INCLUDES || index2 || 0; - } - return !IS_INCLUDES && -1; - }; - }; - } - ), - /***/ - "./node_modules/core-js/internals/bind-context.js": ( - /*!********************************************************!*\ - !*** ./node_modules/core-js/internals/bind-context.js ***! - \********************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - var aFunction = __webpack_require__( - /*! ../internals/a-function */ - "./node_modules/core-js/internals/a-function.js" - ); - module3.exports = function(fn, that, length) { - aFunction(fn); - if (that === void 0) - return fn; - switch (length) { - case 0: - return function() { - return fn.call(that); - }; - case 1: - return function(a) { - return fn.call(that, a); - }; - case 2: - return function(a, b) { - return fn.call(that, a, b); - }; - case 3: - return function(a, b, c) { - return fn.call(that, a, b, c); - }; - } - return function() { - return fn.apply(that, arguments); - }; - }; - } - ), - /***/ - "./node_modules/core-js/internals/call-with-safe-iteration-closing.js": ( - /*!****************************************************************************!*\ - !*** ./node_modules/core-js/internals/call-with-safe-iteration-closing.js ***! - \****************************************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/core-js/internals/an-object.js" - ); - module3.exports = function(iterator, fn, value, ENTRIES) { - try { - return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value); - } catch (error) { - var returnMethod = iterator["return"]; - if (returnMethod !== void 0) - anObject(returnMethod.call(iterator)); - throw error; - } - }; - } - ), - /***/ - "./node_modules/core-js/internals/check-correctness-of-iteration.js": ( - /*!**************************************************************************!*\ - !*** ./node_modules/core-js/internals/check-correctness-of-iteration.js ***! - \**************************************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/core-js/internals/well-known-symbol.js" - ); - var ITERATOR = wellKnownSymbol("iterator"); - var SAFE_CLOSING = false; - try { - var called = 0; - var iteratorWithReturn = { - next: function() { - return { done: !!called++ }; - }, - "return": function() { - SAFE_CLOSING = true; - } - }; - iteratorWithReturn[ITERATOR] = function() { - return this; - }; - Array.from(iteratorWithReturn, function() { - throw 2; - }); - } catch (error) { - } - module3.exports = function(exec, SKIP_CLOSING) { - if (!SKIP_CLOSING && !SAFE_CLOSING) - return false; - var ITERATION_SUPPORT = false; - try { - var object = {}; - object[ITERATOR] = function() { - return { - next: function() { - return { done: ITERATION_SUPPORT = true }; - } - }; - }; - exec(object); - } catch (error) { - } - return ITERATION_SUPPORT; - }; - } - ), - /***/ - "./node_modules/core-js/internals/classof-raw.js": ( - /*!*******************************************************!*\ - !*** ./node_modules/core-js/internals/classof-raw.js ***! - \*******************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3) { - var toString = {}.toString; - module3.exports = function(it) { - return toString.call(it).slice(8, -1); - }; - } - ), - /***/ - "./node_modules/core-js/internals/classof.js": ( - /*!***************************************************!*\ - !*** ./node_modules/core-js/internals/classof.js ***! - \***************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - var classofRaw = __webpack_require__( - /*! ../internals/classof-raw */ - "./node_modules/core-js/internals/classof-raw.js" - ); - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/core-js/internals/well-known-symbol.js" - ); - var TO_STRING_TAG = wellKnownSymbol("toStringTag"); - var CORRECT_ARGUMENTS = classofRaw(/* @__PURE__ */ function() { - return arguments; - }()) == "Arguments"; - var tryGet = function(it, key2) { - try { - return it[key2]; - } catch (error) { - } - }; - module3.exports = function(it) { - var O, tag2, result; - return it === void 0 ? "Undefined" : it === null ? "Null" : typeof (tag2 = tryGet(O = Object(it), TO_STRING_TAG)) == "string" ? tag2 : CORRECT_ARGUMENTS ? classofRaw(O) : (result = classofRaw(O)) == "Object" && typeof O.callee == "function" ? "Arguments" : result; - }; - } - ), - /***/ - "./node_modules/core-js/internals/copy-constructor-properties.js": ( - /*!***********************************************************************!*\ - !*** ./node_modules/core-js/internals/copy-constructor-properties.js ***! - \***********************************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - var has = __webpack_require__( - /*! ../internals/has */ - "./node_modules/core-js/internals/has.js" - ); - var ownKeys = __webpack_require__( - /*! ../internals/own-keys */ - "./node_modules/core-js/internals/own-keys.js" - ); - var getOwnPropertyDescriptorModule = __webpack_require__( - /*! ../internals/object-get-own-property-descriptor */ - "./node_modules/core-js/internals/object-get-own-property-descriptor.js" - ); - var definePropertyModule = __webpack_require__( - /*! ../internals/object-define-property */ - "./node_modules/core-js/internals/object-define-property.js" - ); - module3.exports = function(target, source) { - var keys = ownKeys(source); - var defineProperty = definePropertyModule.f; - var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; - for (var i = 0; i < keys.length; i++) { - var key2 = keys[i]; - if (!has(target, key2)) - defineProperty(target, key2, getOwnPropertyDescriptor(source, key2)); - } - }; - } - ), - /***/ - "./node_modules/core-js/internals/correct-prototype-getter.js": ( - /*!********************************************************************!*\ - !*** ./node_modules/core-js/internals/correct-prototype-getter.js ***! - \********************************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/core-js/internals/fails.js" - ); - module3.exports = !fails(function() { - function F() { - } - F.prototype.constructor = null; - return Object.getPrototypeOf(new F()) !== F.prototype; - }); - } - ), - /***/ - "./node_modules/core-js/internals/create-iterator-constructor.js": ( - /*!***********************************************************************!*\ - !*** ./node_modules/core-js/internals/create-iterator-constructor.js ***! - \***********************************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - "use strict"; - var IteratorPrototype = __webpack_require__( - /*! ../internals/iterators-core */ - "./node_modules/core-js/internals/iterators-core.js" - ).IteratorPrototype; - var create = __webpack_require__( - /*! ../internals/object-create */ - "./node_modules/core-js/internals/object-create.js" - ); - var createPropertyDescriptor = __webpack_require__( - /*! ../internals/create-property-descriptor */ - "./node_modules/core-js/internals/create-property-descriptor.js" - ); - var setToStringTag = __webpack_require__( - /*! ../internals/set-to-string-tag */ - "./node_modules/core-js/internals/set-to-string-tag.js" - ); - var Iterators = __webpack_require__( - /*! ../internals/iterators */ - "./node_modules/core-js/internals/iterators.js" - ); - var returnThis = function() { - return this; - }; - module3.exports = function(IteratorConstructor, NAME, next) { - var TO_STRING_TAG = NAME + " Iterator"; - IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) }); - setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true); - Iterators[TO_STRING_TAG] = returnThis; - return IteratorConstructor; - }; - } - ), - /***/ - "./node_modules/core-js/internals/create-property-descriptor.js": ( - /*!**********************************************************************!*\ - !*** ./node_modules/core-js/internals/create-property-descriptor.js ***! - \**********************************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3) { - module3.exports = function(bitmap, value) { - return { - enumerable: !(bitmap & 1), - configurable: !(bitmap & 2), - writable: !(bitmap & 4), - value - }; - }; - } - ), - /***/ - "./node_modules/core-js/internals/create-property.js": ( - /*!***********************************************************!*\ - !*** ./node_modules/core-js/internals/create-property.js ***! - \***********************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - "use strict"; - var toPrimitive = __webpack_require__( - /*! ../internals/to-primitive */ - "./node_modules/core-js/internals/to-primitive.js" - ); - var definePropertyModule = __webpack_require__( - /*! ../internals/object-define-property */ - "./node_modules/core-js/internals/object-define-property.js" - ); - var createPropertyDescriptor = __webpack_require__( - /*! ../internals/create-property-descriptor */ - "./node_modules/core-js/internals/create-property-descriptor.js" - ); - module3.exports = function(object, key2, value) { - var propertyKey = toPrimitive(key2); - if (propertyKey in object) - definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value)); - else - object[propertyKey] = value; - }; - } - ), - /***/ - "./node_modules/core-js/internals/define-iterator.js": ( - /*!***********************************************************!*\ - !*** ./node_modules/core-js/internals/define-iterator.js ***! - \***********************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - "use strict"; - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/core-js/internals/export.js" - ); - var createIteratorConstructor = __webpack_require__( - /*! ../internals/create-iterator-constructor */ - "./node_modules/core-js/internals/create-iterator-constructor.js" - ); - var getPrototypeOf = __webpack_require__( - /*! ../internals/object-get-prototype-of */ - "./node_modules/core-js/internals/object-get-prototype-of.js" - ); - var setPrototypeOf = __webpack_require__( - /*! ../internals/object-set-prototype-of */ - "./node_modules/core-js/internals/object-set-prototype-of.js" - ); - var setToStringTag = __webpack_require__( - /*! ../internals/set-to-string-tag */ - "./node_modules/core-js/internals/set-to-string-tag.js" - ); - var hide = __webpack_require__( - /*! ../internals/hide */ - "./node_modules/core-js/internals/hide.js" - ); - var redefine = __webpack_require__( - /*! ../internals/redefine */ - "./node_modules/core-js/internals/redefine.js" - ); - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/core-js/internals/well-known-symbol.js" - ); - var IS_PURE = __webpack_require__( - /*! ../internals/is-pure */ - "./node_modules/core-js/internals/is-pure.js" - ); - var Iterators = __webpack_require__( - /*! ../internals/iterators */ - "./node_modules/core-js/internals/iterators.js" - ); - var IteratorsCore = __webpack_require__( - /*! ../internals/iterators-core */ - "./node_modules/core-js/internals/iterators-core.js" - ); - var IteratorPrototype = IteratorsCore.IteratorPrototype; - var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS; - var ITERATOR = wellKnownSymbol("iterator"); - var KEYS = "keys"; - var VALUES = "values"; - var ENTRIES = "entries"; - var returnThis = function() { - return this; - }; - module3.exports = function(Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) { - createIteratorConstructor(IteratorConstructor, NAME, next); - var getIterationMethod = function(KIND) { - if (KIND === DEFAULT && defaultIterator) - return defaultIterator; - if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) - return IterablePrototype[KIND]; - switch (KIND) { - case KEYS: - return function keys() { - return new IteratorConstructor(this, KIND); - }; - case VALUES: - return function values() { - return new IteratorConstructor(this, KIND); - }; - case ENTRIES: - return function entries() { - return new IteratorConstructor(this, KIND); - }; - } - return function() { - return new IteratorConstructor(this); - }; - }; - var TO_STRING_TAG = NAME + " Iterator"; - var INCORRECT_VALUES_NAME = false; - var IterablePrototype = Iterable.prototype; - var nativeIterator = IterablePrototype[ITERATOR] || IterablePrototype["@@iterator"] || DEFAULT && IterablePrototype[DEFAULT]; - var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT); - var anyNativeIterator = NAME == "Array" ? IterablePrototype.entries || nativeIterator : nativeIterator; - var CurrentIteratorPrototype, methods, KEY; - if (anyNativeIterator) { - CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable())); - if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) { - if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) { - if (setPrototypeOf) { - setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype); - } else if (typeof CurrentIteratorPrototype[ITERATOR] != "function") { - hide(CurrentIteratorPrototype, ITERATOR, returnThis); - } - } - setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true); - if (IS_PURE) - Iterators[TO_STRING_TAG] = returnThis; - } - } - if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) { - INCORRECT_VALUES_NAME = true; - defaultIterator = function values() { - return nativeIterator.call(this); - }; - } - if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) { - hide(IterablePrototype, ITERATOR, defaultIterator); - } - Iterators[NAME] = defaultIterator; - if (DEFAULT) { - methods = { - values: getIterationMethod(VALUES), - keys: IS_SET ? defaultIterator : getIterationMethod(KEYS), - entries: getIterationMethod(ENTRIES) - }; - if (FORCED) - for (KEY in methods) { - if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) { - redefine(IterablePrototype, KEY, methods[KEY]); - } - } - else - $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods); - } - return methods; - }; - } - ), - /***/ - "./node_modules/core-js/internals/descriptors.js": ( - /*!*******************************************************!*\ - !*** ./node_modules/core-js/internals/descriptors.js ***! - \*******************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/core-js/internals/fails.js" - ); - module3.exports = !fails(function() { - return Object.defineProperty({}, "a", { get: function() { - return 7; - } }).a != 7; - }); - } - ), - /***/ - "./node_modules/core-js/internals/document-create-element.js": ( - /*!*******************************************************************!*\ - !*** ./node_modules/core-js/internals/document-create-element.js ***! - \*******************************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - var global2 = __webpack_require__( - /*! ../internals/global */ - "./node_modules/core-js/internals/global.js" - ); - var isObject2 = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/core-js/internals/is-object.js" - ); - var document2 = global2.document; - var exist = isObject2(document2) && isObject2(document2.createElement); - module3.exports = function(it) { - return exist ? document2.createElement(it) : {}; - }; - } - ), - /***/ - "./node_modules/core-js/internals/enum-bug-keys.js": ( - /*!*********************************************************!*\ - !*** ./node_modules/core-js/internals/enum-bug-keys.js ***! - \*********************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3) { - module3.exports = [ - "constructor", - "hasOwnProperty", - "isPrototypeOf", - "propertyIsEnumerable", - "toLocaleString", - "toString", - "valueOf" - ]; - } - ), - /***/ - "./node_modules/core-js/internals/export.js": ( - /*!**************************************************!*\ - !*** ./node_modules/core-js/internals/export.js ***! - \**************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - var global2 = __webpack_require__( - /*! ../internals/global */ - "./node_modules/core-js/internals/global.js" - ); - var getOwnPropertyDescriptor = __webpack_require__( - /*! ../internals/object-get-own-property-descriptor */ - "./node_modules/core-js/internals/object-get-own-property-descriptor.js" - ).f; - var hide = __webpack_require__( - /*! ../internals/hide */ - "./node_modules/core-js/internals/hide.js" - ); - var redefine = __webpack_require__( - /*! ../internals/redefine */ - "./node_modules/core-js/internals/redefine.js" - ); - var setGlobal = __webpack_require__( - /*! ../internals/set-global */ - "./node_modules/core-js/internals/set-global.js" - ); - var copyConstructorProperties = __webpack_require__( - /*! ../internals/copy-constructor-properties */ - "./node_modules/core-js/internals/copy-constructor-properties.js" - ); - var isForced = __webpack_require__( - /*! ../internals/is-forced */ - "./node_modules/core-js/internals/is-forced.js" - ); - module3.exports = function(options, source) { - var TARGET = options.target; - var GLOBAL = options.global; - var STATIC = options.stat; - var FORCED, target, key2, targetProperty, sourceProperty, descriptor; - if (GLOBAL) { - target = global2; - } else if (STATIC) { - target = global2[TARGET] || setGlobal(TARGET, {}); - } else { - target = (global2[TARGET] || {}).prototype; - } - if (target) - for (key2 in source) { - sourceProperty = source[key2]; - if (options.noTargetGet) { - descriptor = getOwnPropertyDescriptor(target, key2); - targetProperty = descriptor && descriptor.value; - } else - targetProperty = target[key2]; - FORCED = isForced(GLOBAL ? key2 : TARGET + (STATIC ? "." : "#") + key2, options.forced); - if (!FORCED && targetProperty !== void 0) { - if (typeof sourceProperty === typeof targetProperty) - continue; - copyConstructorProperties(sourceProperty, targetProperty); - } - if (options.sham || targetProperty && targetProperty.sham) { - hide(sourceProperty, "sham", true); - } - redefine(target, key2, sourceProperty, options); - } - }; - } - ), - /***/ - "./node_modules/core-js/internals/fails.js": ( - /*!*************************************************!*\ - !*** ./node_modules/core-js/internals/fails.js ***! - \*************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3) { - module3.exports = function(exec) { - try { - return !!exec(); - } catch (error) { - return true; - } - }; - } - ), - /***/ - "./node_modules/core-js/internals/function-to-string.js": ( - /*!**************************************************************!*\ - !*** ./node_modules/core-js/internals/function-to-string.js ***! - \**************************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - var shared = __webpack_require__( - /*! ../internals/shared */ - "./node_modules/core-js/internals/shared.js" - ); - module3.exports = shared("native-function-to-string", Function.toString); - } - ), - /***/ - "./node_modules/core-js/internals/get-iterator-method.js": ( - /*!***************************************************************!*\ - !*** ./node_modules/core-js/internals/get-iterator-method.js ***! - \***************************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - var classof = __webpack_require__( - /*! ../internals/classof */ - "./node_modules/core-js/internals/classof.js" - ); - var Iterators = __webpack_require__( - /*! ../internals/iterators */ - "./node_modules/core-js/internals/iterators.js" - ); - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/core-js/internals/well-known-symbol.js" - ); - var ITERATOR = wellKnownSymbol("iterator"); - module3.exports = function(it) { - if (it != void 0) - return it[ITERATOR] || it["@@iterator"] || Iterators[classof(it)]; - }; - } - ), - /***/ - "./node_modules/core-js/internals/global.js": ( - /*!**************************************************!*\ - !*** ./node_modules/core-js/internals/global.js ***! - \**************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - (function(global2) { - var O = "object"; - var check = function(it) { - return it && it.Math == Math && it; - }; - module3.exports = // eslint-disable-next-line no-undef - check(typeof globalThis == O && globalThis) || check(typeof window == O && window) || check(typeof self == O && self) || check(typeof global2 == O && global2) || // eslint-disable-next-line no-new-func - Function("return this")(); - }).call(this, __webpack_require__( - /*! ./../../webpack/buildin/global.js */ - "./node_modules/webpack/buildin/global.js" - )); - } - ), - /***/ - "./node_modules/core-js/internals/has.js": ( - /*!***********************************************!*\ - !*** ./node_modules/core-js/internals/has.js ***! - \***********************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3) { - var hasOwnProperty = {}.hasOwnProperty; - module3.exports = function(it, key2) { - return hasOwnProperty.call(it, key2); - }; - } - ), - /***/ - "./node_modules/core-js/internals/hidden-keys.js": ( - /*!*******************************************************!*\ - !*** ./node_modules/core-js/internals/hidden-keys.js ***! - \*******************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3) { - module3.exports = {}; - } - ), - /***/ - "./node_modules/core-js/internals/hide.js": ( - /*!************************************************!*\ - !*** ./node_modules/core-js/internals/hide.js ***! - \************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - var DESCRIPTORS = __webpack_require__( - /*! ../internals/descriptors */ - "./node_modules/core-js/internals/descriptors.js" - ); - var definePropertyModule = __webpack_require__( - /*! ../internals/object-define-property */ - "./node_modules/core-js/internals/object-define-property.js" - ); - var createPropertyDescriptor = __webpack_require__( - /*! ../internals/create-property-descriptor */ - "./node_modules/core-js/internals/create-property-descriptor.js" - ); - module3.exports = DESCRIPTORS ? function(object, key2, value) { - return definePropertyModule.f(object, key2, createPropertyDescriptor(1, value)); - } : function(object, key2, value) { - object[key2] = value; - return object; - }; - } - ), - /***/ - "./node_modules/core-js/internals/html.js": ( - /*!************************************************!*\ - !*** ./node_modules/core-js/internals/html.js ***! - \************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - var global2 = __webpack_require__( - /*! ../internals/global */ - "./node_modules/core-js/internals/global.js" - ); - var document2 = global2.document; - module3.exports = document2 && document2.documentElement; - } - ), - /***/ - "./node_modules/core-js/internals/ie8-dom-define.js": ( - /*!**********************************************************!*\ - !*** ./node_modules/core-js/internals/ie8-dom-define.js ***! - \**********************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - var DESCRIPTORS = __webpack_require__( - /*! ../internals/descriptors */ - "./node_modules/core-js/internals/descriptors.js" - ); - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/core-js/internals/fails.js" - ); - var createElement = __webpack_require__( - /*! ../internals/document-create-element */ - "./node_modules/core-js/internals/document-create-element.js" - ); - module3.exports = !DESCRIPTORS && !fails(function() { - return Object.defineProperty(createElement("div"), "a", { - get: function() { - return 7; - } - }).a != 7; - }); - } - ), - /***/ - "./node_modules/core-js/internals/indexed-object.js": ( - /*!**********************************************************!*\ - !*** ./node_modules/core-js/internals/indexed-object.js ***! - \**********************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/core-js/internals/fails.js" - ); - var classof = __webpack_require__( - /*! ../internals/classof-raw */ - "./node_modules/core-js/internals/classof-raw.js" - ); - var split = "".split; - module3.exports = fails(function() { - return !Object("z").propertyIsEnumerable(0); - }) ? function(it) { - return classof(it) == "String" ? split.call(it, "") : Object(it); - } : Object; - } - ), - /***/ - "./node_modules/core-js/internals/internal-state.js": ( - /*!**********************************************************!*\ - !*** ./node_modules/core-js/internals/internal-state.js ***! - \**********************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - var NATIVE_WEAK_MAP = __webpack_require__( - /*! ../internals/native-weak-map */ - "./node_modules/core-js/internals/native-weak-map.js" - ); - var global2 = __webpack_require__( - /*! ../internals/global */ - "./node_modules/core-js/internals/global.js" - ); - var isObject2 = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/core-js/internals/is-object.js" - ); - var hide = __webpack_require__( - /*! ../internals/hide */ - "./node_modules/core-js/internals/hide.js" - ); - var objectHas = __webpack_require__( - /*! ../internals/has */ - "./node_modules/core-js/internals/has.js" - ); - var sharedKey = __webpack_require__( - /*! ../internals/shared-key */ - "./node_modules/core-js/internals/shared-key.js" - ); - var hiddenKeys = __webpack_require__( - /*! ../internals/hidden-keys */ - "./node_modules/core-js/internals/hidden-keys.js" - ); - var WeakMap2 = global2.WeakMap; - var set, get, has; - var enforce = function(it) { - return has(it) ? get(it) : set(it, {}); - }; - var getterFor = function(TYPE) { - return function(it) { - var state; - if (!isObject2(it) || (state = get(it)).type !== TYPE) { - throw TypeError("Incompatible receiver, " + TYPE + " required"); - } - return state; - }; - }; - if (NATIVE_WEAK_MAP) { - var store = new WeakMap2(); - var wmget = store.get; - var wmhas = store.has; - var wmset = store.set; - set = function(it, metadata) { - wmset.call(store, it, metadata); - return metadata; - }; - get = function(it) { - return wmget.call(store, it) || {}; - }; - has = function(it) { - return wmhas.call(store, it); - }; - } else { - var STATE = sharedKey("state"); - hiddenKeys[STATE] = true; - set = function(it, metadata) { - hide(it, STATE, metadata); - return metadata; - }; - get = function(it) { - return objectHas(it, STATE) ? it[STATE] : {}; - }; - has = function(it) { - return objectHas(it, STATE); - }; - } - module3.exports = { - set, - get, - has, - enforce, - getterFor - }; - } - ), - /***/ - "./node_modules/core-js/internals/is-array-iterator-method.js": ( - /*!********************************************************************!*\ - !*** ./node_modules/core-js/internals/is-array-iterator-method.js ***! - \********************************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/core-js/internals/well-known-symbol.js" - ); - var Iterators = __webpack_require__( - /*! ../internals/iterators */ - "./node_modules/core-js/internals/iterators.js" - ); - var ITERATOR = wellKnownSymbol("iterator"); - var ArrayPrototype = Array.prototype; - module3.exports = function(it) { - return it !== void 0 && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it); - }; - } - ), - /***/ - "./node_modules/core-js/internals/is-forced.js": ( - /*!*****************************************************!*\ - !*** ./node_modules/core-js/internals/is-forced.js ***! - \*****************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/core-js/internals/fails.js" - ); - var replacement = /#|\.prototype\./; - var isForced = function(feature, detection) { - var value = data[normalize2(feature)]; - return value == POLYFILL ? true : value == NATIVE ? false : typeof detection == "function" ? fails(detection) : !!detection; - }; - var normalize2 = isForced.normalize = function(string) { - return String(string).replace(replacement, ".").toLowerCase(); - }; - var data = isForced.data = {}; - var NATIVE = isForced.NATIVE = "N"; - var POLYFILL = isForced.POLYFILL = "P"; - module3.exports = isForced; - } - ), - /***/ - "./node_modules/core-js/internals/is-object.js": ( - /*!*****************************************************!*\ - !*** ./node_modules/core-js/internals/is-object.js ***! - \*****************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3) { - module3.exports = function(it) { - return typeof it === "object" ? it !== null : typeof it === "function"; - }; - } - ), - /***/ - "./node_modules/core-js/internals/is-pure.js": ( - /*!***************************************************!*\ - !*** ./node_modules/core-js/internals/is-pure.js ***! - \***************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3) { - module3.exports = false; - } - ), - /***/ - "./node_modules/core-js/internals/iterators-core.js": ( - /*!**********************************************************!*\ - !*** ./node_modules/core-js/internals/iterators-core.js ***! - \**********************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - "use strict"; - var getPrototypeOf = __webpack_require__( - /*! ../internals/object-get-prototype-of */ - "./node_modules/core-js/internals/object-get-prototype-of.js" - ); - var hide = __webpack_require__( - /*! ../internals/hide */ - "./node_modules/core-js/internals/hide.js" - ); - var has = __webpack_require__( - /*! ../internals/has */ - "./node_modules/core-js/internals/has.js" - ); - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/core-js/internals/well-known-symbol.js" - ); - var IS_PURE = __webpack_require__( - /*! ../internals/is-pure */ - "./node_modules/core-js/internals/is-pure.js" - ); - var ITERATOR = wellKnownSymbol("iterator"); - var BUGGY_SAFARI_ITERATORS = false; - var returnThis = function() { - return this; - }; - var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator; - if ([].keys) { - arrayIterator = [].keys(); - if (!("next" in arrayIterator)) - BUGGY_SAFARI_ITERATORS = true; - else { - PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator)); - if (PrototypeOfArrayIteratorPrototype !== Object.prototype) - IteratorPrototype = PrototypeOfArrayIteratorPrototype; - } - } - if (IteratorPrototype == void 0) - IteratorPrototype = {}; - if (!IS_PURE && !has(IteratorPrototype, ITERATOR)) - hide(IteratorPrototype, ITERATOR, returnThis); - module3.exports = { - IteratorPrototype, - BUGGY_SAFARI_ITERATORS - }; - } - ), - /***/ - "./node_modules/core-js/internals/iterators.js": ( - /*!*****************************************************!*\ - !*** ./node_modules/core-js/internals/iterators.js ***! - \*****************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3) { - module3.exports = {}; - } - ), - /***/ - "./node_modules/core-js/internals/native-symbol.js": ( - /*!*********************************************************!*\ - !*** ./node_modules/core-js/internals/native-symbol.js ***! - \*********************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/core-js/internals/fails.js" - ); - module3.exports = !!Object.getOwnPropertySymbols && !fails(function() { - return !String(Symbol()); - }); - } - ), - /***/ - "./node_modules/core-js/internals/native-weak-map.js": ( - /*!***********************************************************!*\ - !*** ./node_modules/core-js/internals/native-weak-map.js ***! - \***********************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - var global2 = __webpack_require__( - /*! ../internals/global */ - "./node_modules/core-js/internals/global.js" - ); - var nativeFunctionToString = __webpack_require__( - /*! ../internals/function-to-string */ - "./node_modules/core-js/internals/function-to-string.js" - ); - var WeakMap2 = global2.WeakMap; - module3.exports = typeof WeakMap2 === "function" && /native code/.test(nativeFunctionToString.call(WeakMap2)); - } - ), - /***/ - "./node_modules/core-js/internals/object-create.js": ( - /*!*********************************************************!*\ - !*** ./node_modules/core-js/internals/object-create.js ***! - \*********************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/core-js/internals/an-object.js" - ); - var defineProperties = __webpack_require__( - /*! ../internals/object-define-properties */ - "./node_modules/core-js/internals/object-define-properties.js" - ); - var enumBugKeys = __webpack_require__( - /*! ../internals/enum-bug-keys */ - "./node_modules/core-js/internals/enum-bug-keys.js" - ); - var hiddenKeys = __webpack_require__( - /*! ../internals/hidden-keys */ - "./node_modules/core-js/internals/hidden-keys.js" - ); - var html2 = __webpack_require__( - /*! ../internals/html */ - "./node_modules/core-js/internals/html.js" - ); - var documentCreateElement = __webpack_require__( - /*! ../internals/document-create-element */ - "./node_modules/core-js/internals/document-create-element.js" - ); - var sharedKey = __webpack_require__( - /*! ../internals/shared-key */ - "./node_modules/core-js/internals/shared-key.js" - ); - var IE_PROTO = sharedKey("IE_PROTO"); - var PROTOTYPE = "prototype"; - var Empty = function() { - }; - var createDict = function() { - var iframe = documentCreateElement("iframe"); - var length = enumBugKeys.length; - var lt = "<"; - var script = "script"; - var gt = ">"; - var js = "java" + script + ":"; - var iframeDocument; - iframe.style.display = "none"; - html2.appendChild(iframe); - iframe.src = String(js); - iframeDocument = iframe.contentWindow.document; - iframeDocument.open(); - iframeDocument.write(lt + script + gt + "document.F=Object" + lt + "/" + script + gt); - iframeDocument.close(); - createDict = iframeDocument.F; - while (length--) - delete createDict[PROTOTYPE][enumBugKeys[length]]; - return createDict(); - }; - module3.exports = Object.create || function create(O, Properties) { - var result; - if (O !== null) { - Empty[PROTOTYPE] = anObject(O); - result = new Empty(); - Empty[PROTOTYPE] = null; - result[IE_PROTO] = O; - } else - result = createDict(); - return Properties === void 0 ? result : defineProperties(result, Properties); - }; - hiddenKeys[IE_PROTO] = true; - } - ), - /***/ - "./node_modules/core-js/internals/object-define-properties.js": ( - /*!********************************************************************!*\ - !*** ./node_modules/core-js/internals/object-define-properties.js ***! - \********************************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - var DESCRIPTORS = __webpack_require__( - /*! ../internals/descriptors */ - "./node_modules/core-js/internals/descriptors.js" - ); - var definePropertyModule = __webpack_require__( - /*! ../internals/object-define-property */ - "./node_modules/core-js/internals/object-define-property.js" - ); - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/core-js/internals/an-object.js" - ); - var objectKeys = __webpack_require__( - /*! ../internals/object-keys */ - "./node_modules/core-js/internals/object-keys.js" - ); - module3.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) { - anObject(O); - var keys = objectKeys(Properties); - var length = keys.length; - var i = 0; - var key2; - while (length > i) - definePropertyModule.f(O, key2 = keys[i++], Properties[key2]); - return O; - }; - } - ), - /***/ - "./node_modules/core-js/internals/object-define-property.js": ( - /*!******************************************************************!*\ - !*** ./node_modules/core-js/internals/object-define-property.js ***! - \******************************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - var DESCRIPTORS = __webpack_require__( - /*! ../internals/descriptors */ - "./node_modules/core-js/internals/descriptors.js" - ); - var IE8_DOM_DEFINE = __webpack_require__( - /*! ../internals/ie8-dom-define */ - "./node_modules/core-js/internals/ie8-dom-define.js" - ); - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/core-js/internals/an-object.js" - ); - var toPrimitive = __webpack_require__( - /*! ../internals/to-primitive */ - "./node_modules/core-js/internals/to-primitive.js" - ); - var nativeDefineProperty = Object.defineProperty; - exports3.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) { - anObject(O); - P = toPrimitive(P, true); - anObject(Attributes); - if (IE8_DOM_DEFINE) - try { - return nativeDefineProperty(O, P, Attributes); - } catch (error) { - } - if ("get" in Attributes || "set" in Attributes) - throw TypeError("Accessors not supported"); - if ("value" in Attributes) - O[P] = Attributes.value; - return O; - }; - } - ), - /***/ - "./node_modules/core-js/internals/object-get-own-property-descriptor.js": ( - /*!******************************************************************************!*\ - !*** ./node_modules/core-js/internals/object-get-own-property-descriptor.js ***! - \******************************************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - var DESCRIPTORS = __webpack_require__( - /*! ../internals/descriptors */ - "./node_modules/core-js/internals/descriptors.js" - ); - var propertyIsEnumerableModule = __webpack_require__( - /*! ../internals/object-property-is-enumerable */ - "./node_modules/core-js/internals/object-property-is-enumerable.js" - ); - var createPropertyDescriptor = __webpack_require__( - /*! ../internals/create-property-descriptor */ - "./node_modules/core-js/internals/create-property-descriptor.js" - ); - var toIndexedObject = __webpack_require__( - /*! ../internals/to-indexed-object */ - "./node_modules/core-js/internals/to-indexed-object.js" - ); - var toPrimitive = __webpack_require__( - /*! ../internals/to-primitive */ - "./node_modules/core-js/internals/to-primitive.js" - ); - var has = __webpack_require__( - /*! ../internals/has */ - "./node_modules/core-js/internals/has.js" - ); - var IE8_DOM_DEFINE = __webpack_require__( - /*! ../internals/ie8-dom-define */ - "./node_modules/core-js/internals/ie8-dom-define.js" - ); - var nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; - exports3.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) { - O = toIndexedObject(O); - P = toPrimitive(P, true); - if (IE8_DOM_DEFINE) - try { - return nativeGetOwnPropertyDescriptor(O, P); - } catch (error) { - } - if (has(O, P)) - return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]); - }; - } - ), - /***/ - "./node_modules/core-js/internals/object-get-own-property-names.js": ( - /*!*************************************************************************!*\ - !*** ./node_modules/core-js/internals/object-get-own-property-names.js ***! - \*************************************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - var internalObjectKeys = __webpack_require__( - /*! ../internals/object-keys-internal */ - "./node_modules/core-js/internals/object-keys-internal.js" - ); - var enumBugKeys = __webpack_require__( - /*! ../internals/enum-bug-keys */ - "./node_modules/core-js/internals/enum-bug-keys.js" - ); - var hiddenKeys = enumBugKeys.concat("length", "prototype"); - exports3.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { - return internalObjectKeys(O, hiddenKeys); - }; - } - ), - /***/ - "./node_modules/core-js/internals/object-get-own-property-symbols.js": ( - /*!***************************************************************************!*\ - !*** ./node_modules/core-js/internals/object-get-own-property-symbols.js ***! - \***************************************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3) { - exports3.f = Object.getOwnPropertySymbols; - } - ), - /***/ - "./node_modules/core-js/internals/object-get-prototype-of.js": ( - /*!*******************************************************************!*\ - !*** ./node_modules/core-js/internals/object-get-prototype-of.js ***! - \*******************************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - var has = __webpack_require__( - /*! ../internals/has */ - "./node_modules/core-js/internals/has.js" - ); - var toObject = __webpack_require__( - /*! ../internals/to-object */ - "./node_modules/core-js/internals/to-object.js" - ); - var sharedKey = __webpack_require__( - /*! ../internals/shared-key */ - "./node_modules/core-js/internals/shared-key.js" - ); - var CORRECT_PROTOTYPE_GETTER = __webpack_require__( - /*! ../internals/correct-prototype-getter */ - "./node_modules/core-js/internals/correct-prototype-getter.js" - ); - var IE_PROTO = sharedKey("IE_PROTO"); - var ObjectPrototype = Object.prototype; - module3.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function(O) { - O = toObject(O); - if (has(O, IE_PROTO)) - return O[IE_PROTO]; - if (typeof O.constructor == "function" && O instanceof O.constructor) { - return O.constructor.prototype; - } - return O instanceof Object ? ObjectPrototype : null; - }; - } - ), - /***/ - "./node_modules/core-js/internals/object-keys-internal.js": ( - /*!****************************************************************!*\ - !*** ./node_modules/core-js/internals/object-keys-internal.js ***! - \****************************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - var has = __webpack_require__( - /*! ../internals/has */ - "./node_modules/core-js/internals/has.js" - ); - var toIndexedObject = __webpack_require__( - /*! ../internals/to-indexed-object */ - "./node_modules/core-js/internals/to-indexed-object.js" - ); - var arrayIncludes = __webpack_require__( - /*! ../internals/array-includes */ - "./node_modules/core-js/internals/array-includes.js" - ); - var hiddenKeys = __webpack_require__( - /*! ../internals/hidden-keys */ - "./node_modules/core-js/internals/hidden-keys.js" - ); - var arrayIndexOf = arrayIncludes(false); - module3.exports = function(object, names) { - var O = toIndexedObject(object); - var i = 0; - var result = []; - var key2; - for (key2 in O) - !has(hiddenKeys, key2) && has(O, key2) && result.push(key2); - while (names.length > i) - if (has(O, key2 = names[i++])) { - ~arrayIndexOf(result, key2) || result.push(key2); - } - return result; - }; - } - ), - /***/ - "./node_modules/core-js/internals/object-keys.js": ( - /*!*******************************************************!*\ - !*** ./node_modules/core-js/internals/object-keys.js ***! - \*******************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - var internalObjectKeys = __webpack_require__( - /*! ../internals/object-keys-internal */ - "./node_modules/core-js/internals/object-keys-internal.js" - ); - var enumBugKeys = __webpack_require__( - /*! ../internals/enum-bug-keys */ - "./node_modules/core-js/internals/enum-bug-keys.js" - ); - module3.exports = Object.keys || function keys(O) { - return internalObjectKeys(O, enumBugKeys); - }; - } - ), - /***/ - "./node_modules/core-js/internals/object-property-is-enumerable.js": ( - /*!*************************************************************************!*\ - !*** ./node_modules/core-js/internals/object-property-is-enumerable.js ***! - \*************************************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - "use strict"; - var nativePropertyIsEnumerable = {}.propertyIsEnumerable; - var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; - var NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1); - exports3.f = NASHORN_BUG ? function propertyIsEnumerable(V) { - var descriptor = getOwnPropertyDescriptor(this, V); - return !!descriptor && descriptor.enumerable; - } : nativePropertyIsEnumerable; - } - ), - /***/ - "./node_modules/core-js/internals/object-set-prototype-of.js": ( - /*!*******************************************************************!*\ - !*** ./node_modules/core-js/internals/object-set-prototype-of.js ***! - \*******************************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - var validateSetPrototypeOfArguments = __webpack_require__( - /*! ../internals/validate-set-prototype-of-arguments */ - "./node_modules/core-js/internals/validate-set-prototype-of-arguments.js" - ); - module3.exports = Object.setPrototypeOf || ("__proto__" in {} ? function() { - var correctSetter = false; - var test = {}; - var setter; - try { - setter = Object.getOwnPropertyDescriptor(Object.prototype, "__proto__").set; - setter.call(test, []); - correctSetter = test instanceof Array; - } catch (error) { - } - return function setPrototypeOf(O, proto) { - validateSetPrototypeOfArguments(O, proto); - if (correctSetter) - setter.call(O, proto); - else - O.__proto__ = proto; - return O; - }; - }() : void 0); - } - ), - /***/ - "./node_modules/core-js/internals/own-keys.js": ( - /*!****************************************************!*\ - !*** ./node_modules/core-js/internals/own-keys.js ***! - \****************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - var global2 = __webpack_require__( - /*! ../internals/global */ - "./node_modules/core-js/internals/global.js" - ); - var getOwnPropertyNamesModule = __webpack_require__( - /*! ../internals/object-get-own-property-names */ - "./node_modules/core-js/internals/object-get-own-property-names.js" - ); - var getOwnPropertySymbolsModule = __webpack_require__( - /*! ../internals/object-get-own-property-symbols */ - "./node_modules/core-js/internals/object-get-own-property-symbols.js" - ); - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/core-js/internals/an-object.js" - ); - var Reflect2 = global2.Reflect; - module3.exports = Reflect2 && Reflect2.ownKeys || function ownKeys(it) { - var keys = getOwnPropertyNamesModule.f(anObject(it)); - var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; - return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys; - }; - } - ), - /***/ - "./node_modules/core-js/internals/path.js": ( - /*!************************************************!*\ - !*** ./node_modules/core-js/internals/path.js ***! - \************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - module3.exports = __webpack_require__( - /*! ../internals/global */ - "./node_modules/core-js/internals/global.js" - ); - } - ), - /***/ - "./node_modules/core-js/internals/redefine.js": ( - /*!****************************************************!*\ - !*** ./node_modules/core-js/internals/redefine.js ***! - \****************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - var global2 = __webpack_require__( - /*! ../internals/global */ - "./node_modules/core-js/internals/global.js" - ); - var shared = __webpack_require__( - /*! ../internals/shared */ - "./node_modules/core-js/internals/shared.js" - ); - var hide = __webpack_require__( - /*! ../internals/hide */ - "./node_modules/core-js/internals/hide.js" - ); - var has = __webpack_require__( - /*! ../internals/has */ - "./node_modules/core-js/internals/has.js" - ); - var setGlobal = __webpack_require__( - /*! ../internals/set-global */ - "./node_modules/core-js/internals/set-global.js" - ); - var nativeFunctionToString = __webpack_require__( - /*! ../internals/function-to-string */ - "./node_modules/core-js/internals/function-to-string.js" - ); - var InternalStateModule = __webpack_require__( - /*! ../internals/internal-state */ - "./node_modules/core-js/internals/internal-state.js" - ); - var getInternalState = InternalStateModule.get; - var enforceInternalState = InternalStateModule.enforce; - var TEMPLATE = String(nativeFunctionToString).split("toString"); - shared("inspectSource", function(it) { - return nativeFunctionToString.call(it); - }); - (module3.exports = function(O, key2, value, options) { - var unsafe = options ? !!options.unsafe : false; - var simple2 = options ? !!options.enumerable : false; - var noTargetGet = options ? !!options.noTargetGet : false; - if (typeof value == "function") { - if (typeof key2 == "string" && !has(value, "name")) - hide(value, "name", key2); - enforceInternalState(value).source = TEMPLATE.join(typeof key2 == "string" ? key2 : ""); - } - if (O === global2) { - if (simple2) - O[key2] = value; - else - setGlobal(key2, value); - return; - } else if (!unsafe) { - delete O[key2]; - } else if (!noTargetGet && O[key2]) { - simple2 = true; - } - if (simple2) - O[key2] = value; - else - hide(O, key2, value); - })(Function.prototype, "toString", function toString() { - return typeof this == "function" && getInternalState(this).source || nativeFunctionToString.call(this); - }); - } - ), - /***/ - "./node_modules/core-js/internals/require-object-coercible.js": ( - /*!********************************************************************!*\ - !*** ./node_modules/core-js/internals/require-object-coercible.js ***! - \********************************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3) { - module3.exports = function(it) { - if (it == void 0) - throw TypeError("Can't call method on " + it); - return it; - }; - } - ), - /***/ - "./node_modules/core-js/internals/set-global.js": ( - /*!******************************************************!*\ - !*** ./node_modules/core-js/internals/set-global.js ***! - \******************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - var global2 = __webpack_require__( - /*! ../internals/global */ - "./node_modules/core-js/internals/global.js" - ); - var hide = __webpack_require__( - /*! ../internals/hide */ - "./node_modules/core-js/internals/hide.js" - ); - module3.exports = function(key2, value) { - try { - hide(global2, key2, value); - } catch (error) { - global2[key2] = value; - } - return value; - }; - } - ), - /***/ - "./node_modules/core-js/internals/set-to-string-tag.js": ( - /*!*************************************************************!*\ - !*** ./node_modules/core-js/internals/set-to-string-tag.js ***! - \*************************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - var defineProperty = __webpack_require__( - /*! ../internals/object-define-property */ - "./node_modules/core-js/internals/object-define-property.js" - ).f; - var has = __webpack_require__( - /*! ../internals/has */ - "./node_modules/core-js/internals/has.js" - ); - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/core-js/internals/well-known-symbol.js" - ); - var TO_STRING_TAG = wellKnownSymbol("toStringTag"); - module3.exports = function(it, TAG, STATIC) { - if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) { - defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG }); - } - }; - } - ), - /***/ - "./node_modules/core-js/internals/shared-key.js": ( - /*!******************************************************!*\ - !*** ./node_modules/core-js/internals/shared-key.js ***! - \******************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - var shared = __webpack_require__( - /*! ../internals/shared */ - "./node_modules/core-js/internals/shared.js" - ); - var uid = __webpack_require__( - /*! ../internals/uid */ - "./node_modules/core-js/internals/uid.js" - ); - var keys = shared("keys"); - module3.exports = function(key2) { - return keys[key2] || (keys[key2] = uid(key2)); - }; - } - ), - /***/ - "./node_modules/core-js/internals/shared.js": ( - /*!**************************************************!*\ - !*** ./node_modules/core-js/internals/shared.js ***! - \**************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - var global2 = __webpack_require__( - /*! ../internals/global */ - "./node_modules/core-js/internals/global.js" - ); - var setGlobal = __webpack_require__( - /*! ../internals/set-global */ - "./node_modules/core-js/internals/set-global.js" - ); - var IS_PURE = __webpack_require__( - /*! ../internals/is-pure */ - "./node_modules/core-js/internals/is-pure.js" - ); - var SHARED = "__core-js_shared__"; - var store = global2[SHARED] || setGlobal(SHARED, {}); - (module3.exports = function(key2, value) { - return store[key2] || (store[key2] = value !== void 0 ? value : {}); - })("versions", []).push({ - version: "3.1.3", - mode: IS_PURE ? "pure" : "global", - copyright: "\xA9 2019 Denis Pushkarev (zloirock.ru)" - }); - } - ), - /***/ - "./node_modules/core-js/internals/string-at.js": ( - /*!*****************************************************!*\ - !*** ./node_modules/core-js/internals/string-at.js ***! - \*****************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - var toInteger = __webpack_require__( - /*! ../internals/to-integer */ - "./node_modules/core-js/internals/to-integer.js" - ); - var requireObjectCoercible = __webpack_require__( - /*! ../internals/require-object-coercible */ - "./node_modules/core-js/internals/require-object-coercible.js" - ); - module3.exports = function(that, pos, CONVERT_TO_STRING) { - var S = String(requireObjectCoercible(that)); - var position = toInteger(pos); - var size = S.length; - var first2, second; - if (position < 0 || position >= size) - return CONVERT_TO_STRING ? "" : void 0; - first2 = S.charCodeAt(position); - return first2 < 55296 || first2 > 56319 || position + 1 === size || (second = S.charCodeAt(position + 1)) < 56320 || second > 57343 ? CONVERT_TO_STRING ? S.charAt(position) : first2 : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first2 - 55296 << 10) + (second - 56320) + 65536; - }; - } - ), - /***/ - "./node_modules/core-js/internals/to-absolute-index.js": ( - /*!*************************************************************!*\ - !*** ./node_modules/core-js/internals/to-absolute-index.js ***! - \*************************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - var toInteger = __webpack_require__( - /*! ../internals/to-integer */ - "./node_modules/core-js/internals/to-integer.js" - ); - var max = Math.max; - var min = Math.min; - module3.exports = function(index2, length) { - var integer = toInteger(index2); - return integer < 0 ? max(integer + length, 0) : min(integer, length); - }; - } - ), - /***/ - "./node_modules/core-js/internals/to-indexed-object.js": ( - /*!*************************************************************!*\ - !*** ./node_modules/core-js/internals/to-indexed-object.js ***! - \*************************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - var IndexedObject = __webpack_require__( - /*! ../internals/indexed-object */ - "./node_modules/core-js/internals/indexed-object.js" - ); - var requireObjectCoercible = __webpack_require__( - /*! ../internals/require-object-coercible */ - "./node_modules/core-js/internals/require-object-coercible.js" - ); - module3.exports = function(it) { - return IndexedObject(requireObjectCoercible(it)); - }; - } - ), - /***/ - "./node_modules/core-js/internals/to-integer.js": ( - /*!******************************************************!*\ - !*** ./node_modules/core-js/internals/to-integer.js ***! - \******************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3) { - var ceil = Math.ceil; - var floor = Math.floor; - module3.exports = function(argument) { - return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument); - }; - } - ), - /***/ - "./node_modules/core-js/internals/to-length.js": ( - /*!*****************************************************!*\ - !*** ./node_modules/core-js/internals/to-length.js ***! - \*****************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - var toInteger = __webpack_require__( - /*! ../internals/to-integer */ - "./node_modules/core-js/internals/to-integer.js" - ); - var min = Math.min; - module3.exports = function(argument) { - return argument > 0 ? min(toInteger(argument), 9007199254740991) : 0; - }; - } - ), - /***/ - "./node_modules/core-js/internals/to-object.js": ( - /*!*****************************************************!*\ - !*** ./node_modules/core-js/internals/to-object.js ***! - \*****************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - var requireObjectCoercible = __webpack_require__( - /*! ../internals/require-object-coercible */ - "./node_modules/core-js/internals/require-object-coercible.js" - ); - module3.exports = function(argument) { - return Object(requireObjectCoercible(argument)); - }; - } - ), - /***/ - "./node_modules/core-js/internals/to-primitive.js": ( - /*!********************************************************!*\ - !*** ./node_modules/core-js/internals/to-primitive.js ***! - \********************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - var isObject2 = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/core-js/internals/is-object.js" - ); - module3.exports = function(it, S) { - if (!isObject2(it)) - return it; - var fn, val; - if (S && typeof (fn = it.toString) == "function" && !isObject2(val = fn.call(it))) - return val; - if (typeof (fn = it.valueOf) == "function" && !isObject2(val = fn.call(it))) - return val; - if (!S && typeof (fn = it.toString) == "function" && !isObject2(val = fn.call(it))) - return val; - throw TypeError("Can't convert object to primitive value"); - }; - } - ), - /***/ - "./node_modules/core-js/internals/uid.js": ( - /*!***********************************************!*\ - !*** ./node_modules/core-js/internals/uid.js ***! - \***********************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3) { - var id = 0; - var postfix = Math.random(); - module3.exports = function(key2) { - return "Symbol(".concat(key2 === void 0 ? "" : key2, ")_", (++id + postfix).toString(36)); - }; - } - ), - /***/ - "./node_modules/core-js/internals/validate-set-prototype-of-arguments.js": ( - /*!*******************************************************************************!*\ - !*** ./node_modules/core-js/internals/validate-set-prototype-of-arguments.js ***! - \*******************************************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - var isObject2 = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/core-js/internals/is-object.js" - ); - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/core-js/internals/an-object.js" - ); - module3.exports = function(O, proto) { - anObject(O); - if (!isObject2(proto) && proto !== null) { - throw TypeError("Can't set " + String(proto) + " as a prototype"); - } - }; - } - ), - /***/ - "./node_modules/core-js/internals/well-known-symbol.js": ( - /*!*************************************************************!*\ - !*** ./node_modules/core-js/internals/well-known-symbol.js ***! - \*************************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - var global2 = __webpack_require__( - /*! ../internals/global */ - "./node_modules/core-js/internals/global.js" - ); - var shared = __webpack_require__( - /*! ../internals/shared */ - "./node_modules/core-js/internals/shared.js" - ); - var uid = __webpack_require__( - /*! ../internals/uid */ - "./node_modules/core-js/internals/uid.js" - ); - var NATIVE_SYMBOL = __webpack_require__( - /*! ../internals/native-symbol */ - "./node_modules/core-js/internals/native-symbol.js" - ); - var Symbol2 = global2.Symbol; - var store = shared("wks"); - module3.exports = function(name) { - return store[name] || (store[name] = NATIVE_SYMBOL && Symbol2[name] || (NATIVE_SYMBOL ? Symbol2 : uid)("Symbol." + name)); - }; - } - ), - /***/ - "./node_modules/core-js/modules/es.array.from.js": ( - /*!*******************************************************!*\ - !*** ./node_modules/core-js/modules/es.array.from.js ***! - \*******************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/core-js/internals/export.js" - ); - var from = __webpack_require__( - /*! ../internals/array-from */ - "./node_modules/core-js/internals/array-from.js" - ); - var checkCorrectnessOfIteration = __webpack_require__( - /*! ../internals/check-correctness-of-iteration */ - "./node_modules/core-js/internals/check-correctness-of-iteration.js" - ); - var INCORRECT_ITERATION = !checkCorrectnessOfIteration(function(iterable) { - Array.from(iterable); - }); - $({ target: "Array", stat: true, forced: INCORRECT_ITERATION }, { - from - }); - } - ), - /***/ - "./node_modules/core-js/modules/es.string.iterator.js": ( - /*!************************************************************!*\ - !*** ./node_modules/core-js/modules/es.string.iterator.js ***! - \************************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - "use strict"; - var codePointAt = __webpack_require__( - /*! ../internals/string-at */ - "./node_modules/core-js/internals/string-at.js" - ); - var InternalStateModule = __webpack_require__( - /*! ../internals/internal-state */ - "./node_modules/core-js/internals/internal-state.js" - ); - var defineIterator = __webpack_require__( - /*! ../internals/define-iterator */ - "./node_modules/core-js/internals/define-iterator.js" - ); - var STRING_ITERATOR = "String Iterator"; - var setInternalState = InternalStateModule.set; - var getInternalState = InternalStateModule.getterFor(STRING_ITERATOR); - defineIterator(String, "String", function(iterated) { - setInternalState(this, { - type: STRING_ITERATOR, - string: String(iterated), - index: 0 - }); - }, function next() { - var state = getInternalState(this); - var string = state.string; - var index2 = state.index; - var point; - if (index2 >= string.length) - return { value: void 0, done: true }; - point = codePointAt(string, index2, true); - state.index += point.length; - return { value: point, done: false }; - }); - } - ), - /***/ - "./node_modules/webpack/buildin/global.js": ( - /*!***********************************!*\ - !*** (webpack)/buildin/global.js ***! - \***********************************/ - /*! no static exports found */ - /***/ - function(module3, exports3) { - var g; - g = /* @__PURE__ */ function() { - return this; - }(); - try { - g = g || Function("return this")() || (1, eval)("this"); - } catch (e) { - if (typeof window === "object") - g = window; - } - module3.exports = g; - } - ), - /***/ - "./src/default-attrs.json": ( - /*!********************************!*\ - !*** ./src/default-attrs.json ***! - \********************************/ - /*! exports provided: xmlns, width, height, viewBox, fill, stroke, stroke-width, stroke-linecap, stroke-linejoin, default */ - /***/ - function(module3) { - module3.exports = { "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" }; - } - ), - /***/ - "./src/icon.js": ( - /*!*********************!*\ - !*** ./src/icon.js ***! - \*********************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - "use strict"; - Object.defineProperty(exports3, "__esModule", { - value: true - }); - var _extends = Object.assign || function(target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i]; - for (var key2 in source) { - if (Object.prototype.hasOwnProperty.call(source, key2)) { - target[key2] = source[key2]; - } - } - } - return target; - }; - var _createClass = /* @__PURE__ */ function() { - function defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) - descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - return function(Constructor, protoProps, staticProps) { - if (protoProps) - defineProperties(Constructor.prototype, protoProps); - if (staticProps) - defineProperties(Constructor, staticProps); - return Constructor; - }; - }(); - var _dedupe = __webpack_require__( - /*! classnames/dedupe */ - "./node_modules/classnames/dedupe.js" - ); - var _dedupe2 = _interopRequireDefault(_dedupe); - var _defaultAttrs = __webpack_require__( - /*! ./default-attrs.json */ - "./src/default-attrs.json" - ); - var _defaultAttrs2 = _interopRequireDefault(_defaultAttrs); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function _classCallCheck(instance10, Constructor) { - if (!(instance10 instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - var Icon = function() { - function Icon2(name, contents) { - var tags = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : []; - _classCallCheck(this, Icon2); - this.name = name; - this.contents = contents; - this.tags = tags; - this.attrs = _extends({}, _defaultAttrs2.default, { class: "feather feather-" + name }); - } - _createClass(Icon2, [{ - key: "toSvg", - value: function toSvg() { - var attrs = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; - var combinedAttrs = _extends({}, this.attrs, attrs, { class: (0, _dedupe2.default)(this.attrs.class, attrs.class) }); - return "" + this.contents + ""; - } - /** - * Return string representation of an `Icon`. - * - * Added for backward compatibility. If old code expects `feather.icons.` - * to be a string, `toString()` will get implicitly called. - * - * @returns {string} - */ - }, { - key: "toString", - value: function toString() { - return this.contents; - } - }]); - return Icon2; - }(); - function attrsToString(attrs) { - return Object.keys(attrs).map(function(key2) { - return key2 + '="' + attrs[key2] + '"'; - }).join(" "); - } - exports3.default = Icon; - } - ), - /***/ - "./src/icons.js": ( - /*!**********************!*\ - !*** ./src/icons.js ***! - \**********************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - "use strict"; - Object.defineProperty(exports3, "__esModule", { - value: true - }); - var _icon = __webpack_require__( - /*! ./icon */ - "./src/icon.js" - ); - var _icon2 = _interopRequireDefault(_icon); - var _icons = __webpack_require__( - /*! ../dist/icons.json */ - "./dist/icons.json" - ); - var _icons2 = _interopRequireDefault(_icons); - var _tags = __webpack_require__( - /*! ./tags.json */ - "./src/tags.json" - ); - var _tags2 = _interopRequireDefault(_tags); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - exports3.default = Object.keys(_icons2.default).map(function(key2) { - return new _icon2.default(key2, _icons2.default[key2], _tags2.default[key2]); - }).reduce(function(object, icon) { - object[icon.name] = icon; - return object; - }, {}); - } - ), - /***/ - "./src/index.js": ( - /*!**********************!*\ - !*** ./src/index.js ***! - \**********************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - "use strict"; - var _icons = __webpack_require__( - /*! ./icons */ - "./src/icons.js" - ); - var _icons2 = _interopRequireDefault(_icons); - var _toSvg = __webpack_require__( - /*! ./to-svg */ - "./src/to-svg.js" - ); - var _toSvg2 = _interopRequireDefault(_toSvg); - var _replace = __webpack_require__( - /*! ./replace */ - "./src/replace.js" - ); - var _replace2 = _interopRequireDefault(_replace); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - module3.exports = { icons: _icons2.default, toSvg: _toSvg2.default, replace: _replace2.default }; - } - ), - /***/ - "./src/replace.js": ( - /*!************************!*\ - !*** ./src/replace.js ***! - \************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - "use strict"; - Object.defineProperty(exports3, "__esModule", { - value: true - }); - var _extends = Object.assign || function(target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i]; - for (var key2 in source) { - if (Object.prototype.hasOwnProperty.call(source, key2)) { - target[key2] = source[key2]; - } - } - } - return target; - }; - var _dedupe = __webpack_require__( - /*! classnames/dedupe */ - "./node_modules/classnames/dedupe.js" - ); - var _dedupe2 = _interopRequireDefault(_dedupe); - var _icons = __webpack_require__( - /*! ./icons */ - "./src/icons.js" - ); - var _icons2 = _interopRequireDefault(_icons); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function replace() { - var attrs = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; - if (typeof document === "undefined") { - throw new Error("`feather.replace()` only works in a browser environment."); - } - var elementsToReplace = document.querySelectorAll("[data-feather]"); - Array.from(elementsToReplace).forEach(function(element2) { - return replaceElement(element2, attrs); - }); - } - function replaceElement(element2) { - var attrs = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; - var elementAttrs = getAttrs(element2); - var name = elementAttrs["data-feather"]; - delete elementAttrs["data-feather"]; - var svgString = _icons2.default[name].toSvg(_extends({}, attrs, elementAttrs, { class: (0, _dedupe2.default)(attrs.class, elementAttrs.class) })); - var svgDocument = new DOMParser().parseFromString(svgString, "image/svg+xml"); - var svgElement = svgDocument.querySelector("svg"); - element2.parentNode.replaceChild(svgElement, element2); - } - function getAttrs(element2) { - return Array.from(element2.attributes).reduce(function(attrs, attr2) { - attrs[attr2.name] = attr2.value; - return attrs; - }, {}); - } - exports3.default = replace; - } - ), - /***/ - "./src/tags.json": ( - /*!***********************!*\ - !*** ./src/tags.json ***! - \***********************/ - /*! exports provided: activity, airplay, alert-circle, alert-octagon, alert-triangle, align-center, align-justify, align-left, align-right, anchor, archive, at-sign, award, aperture, bar-chart, bar-chart-2, battery, battery-charging, bell, bell-off, bluetooth, book-open, book, bookmark, box, briefcase, calendar, camera, cast, chevron-down, chevron-up, circle, clipboard, clock, cloud-drizzle, cloud-lightning, cloud-rain, cloud-snow, cloud, codepen, codesandbox, code, coffee, columns, command, compass, copy, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, cpu, credit-card, crop, crosshair, database, delete, disc, dollar-sign, droplet, edit, edit-2, edit-3, eye, eye-off, external-link, facebook, fast-forward, figma, file-minus, file-plus, file-text, film, filter, flag, folder-minus, folder-plus, folder, framer, frown, gift, git-branch, git-commit, git-merge, git-pull-request, github, gitlab, globe, hard-drive, hash, headphones, heart, help-circle, hexagon, home, image, inbox, instagram, key, layers, layout, life-buoy, link, link-2, linkedin, list, lock, log-in, log-out, mail, map-pin, map, maximize, maximize-2, meh, menu, message-circle, message-square, mic-off, mic, minimize, minimize-2, minus, monitor, moon, more-horizontal, more-vertical, mouse-pointer, move, music, navigation, navigation-2, octagon, package, paperclip, pause, pause-circle, pen-tool, percent, phone-call, phone-forwarded, phone-incoming, phone-missed, phone-off, phone-outgoing, phone, play, pie-chart, play-circle, plus, plus-circle, plus-square, pocket, power, printer, radio, refresh-cw, refresh-ccw, repeat, rewind, rotate-ccw, rotate-cw, rss, save, scissors, search, send, settings, share-2, shield, shield-off, shopping-bag, shopping-cart, shuffle, skip-back, skip-forward, slack, slash, sliders, smartphone, smile, speaker, star, stop-circle, sun, sunrise, sunset, tablet, tag, target, terminal, thermometer, thumbs-down, thumbs-up, toggle-left, toggle-right, tool, trash, trash-2, triangle, truck, tv, twitch, twitter, type, umbrella, unlock, user-check, user-minus, user-plus, user-x, user, users, video-off, video, voicemail, volume, volume-1, volume-2, volume-x, watch, wifi-off, wifi, wind, x-circle, x-octagon, x-square, x, youtube, zap-off, zap, zoom-in, zoom-out, default */ - /***/ - function(module3) { - module3.exports = { "activity": ["pulse", "health", "action", "motion"], "airplay": ["stream", "cast", "mirroring"], "alert-circle": ["warning", "alert", "danger"], "alert-octagon": ["warning", "alert", "danger"], "alert-triangle": ["warning", "alert", "danger"], "align-center": ["text alignment", "center"], "align-justify": ["text alignment", "justified"], "align-left": ["text alignment", "left"], "align-right": ["text alignment", "right"], "anchor": [], "archive": ["index", "box"], "at-sign": ["mention", "at", "email", "message"], "award": ["achievement", "badge"], "aperture": ["camera", "photo"], "bar-chart": ["statistics", "diagram", "graph"], "bar-chart-2": ["statistics", "diagram", "graph"], "battery": ["power", "electricity"], "battery-charging": ["power", "electricity"], "bell": ["alarm", "notification", "sound"], "bell-off": ["alarm", "notification", "silent"], "bluetooth": ["wireless"], "book-open": ["read", "library"], "book": ["read", "dictionary", "booklet", "magazine", "library"], "bookmark": ["read", "clip", "marker", "tag"], "box": ["cube"], "briefcase": ["work", "bag", "baggage", "folder"], "calendar": ["date"], "camera": ["photo"], "cast": ["chromecast", "airplay"], "chevron-down": ["expand"], "chevron-up": ["collapse"], "circle": ["off", "zero", "record"], "clipboard": ["copy"], "clock": ["time", "watch", "alarm"], "cloud-drizzle": ["weather", "shower"], "cloud-lightning": ["weather", "bolt"], "cloud-rain": ["weather"], "cloud-snow": ["weather", "blizzard"], "cloud": ["weather"], "codepen": ["logo"], "codesandbox": ["logo"], "code": ["source", "programming"], "coffee": ["drink", "cup", "mug", "tea", "cafe", "hot", "beverage"], "columns": ["layout"], "command": ["keyboard", "cmd", "terminal", "prompt"], "compass": ["navigation", "safari", "travel", "direction"], "copy": ["clone", "duplicate"], "corner-down-left": ["arrow", "return"], "corner-down-right": ["arrow"], "corner-left-down": ["arrow"], "corner-left-up": ["arrow"], "corner-right-down": ["arrow"], "corner-right-up": ["arrow"], "corner-up-left": ["arrow"], "corner-up-right": ["arrow"], "cpu": ["processor", "technology"], "credit-card": ["purchase", "payment", "cc"], "crop": ["photo", "image"], "crosshair": ["aim", "target"], "database": ["storage", "memory"], "delete": ["remove"], "disc": ["album", "cd", "dvd", "music"], "dollar-sign": ["currency", "money", "payment"], "droplet": ["water"], "edit": ["pencil", "change"], "edit-2": ["pencil", "change"], "edit-3": ["pencil", "change"], "eye": ["view", "watch"], "eye-off": ["view", "watch", "hide", "hidden"], "external-link": ["outbound"], "facebook": ["logo", "social"], "fast-forward": ["music"], "figma": ["logo", "design", "tool"], "file-minus": ["delete", "remove", "erase"], "file-plus": ["add", "create", "new"], "file-text": ["data", "txt", "pdf"], "film": ["movie", "video"], "filter": ["funnel", "hopper"], "flag": ["report"], "folder-minus": ["directory"], "folder-plus": ["directory"], "folder": ["directory"], "framer": ["logo", "design", "tool"], "frown": ["emoji", "face", "bad", "sad", "emotion"], "gift": ["present", "box", "birthday", "party"], "git-branch": ["code", "version control"], "git-commit": ["code", "version control"], "git-merge": ["code", "version control"], "git-pull-request": ["code", "version control"], "github": ["logo", "version control"], "gitlab": ["logo", "version control"], "globe": ["world", "browser", "language", "translate"], "hard-drive": ["computer", "server", "memory", "data"], "hash": ["hashtag", "number", "pound"], "headphones": ["music", "audio", "sound"], "heart": ["like", "love", "emotion"], "help-circle": ["question mark"], "hexagon": ["shape", "node.js", "logo"], "home": ["house", "living"], "image": ["picture"], "inbox": ["email"], "instagram": ["logo", "camera"], "key": ["password", "login", "authentication", "secure"], "layers": ["stack"], "layout": ["window", "webpage"], "life-buoy": ["help", "life ring", "support"], "link": ["chain", "url"], "link-2": ["chain", "url"], "linkedin": ["logo", "social media"], "list": ["options"], "lock": ["security", "password", "secure"], "log-in": ["sign in", "arrow", "enter"], "log-out": ["sign out", "arrow", "exit"], "mail": ["email", "message"], "map-pin": ["location", "navigation", "travel", "marker"], "map": ["location", "navigation", "travel"], "maximize": ["fullscreen"], "maximize-2": ["fullscreen", "arrows", "expand"], "meh": ["emoji", "face", "neutral", "emotion"], "menu": ["bars", "navigation", "hamburger"], "message-circle": ["comment", "chat"], "message-square": ["comment", "chat"], "mic-off": ["record", "sound", "mute"], "mic": ["record", "sound", "listen"], "minimize": ["exit fullscreen", "close"], "minimize-2": ["exit fullscreen", "arrows", "close"], "minus": ["subtract"], "monitor": ["tv", "screen", "display"], "moon": ["dark", "night"], "more-horizontal": ["ellipsis"], "more-vertical": ["ellipsis"], "mouse-pointer": ["arrow", "cursor"], "move": ["arrows"], "music": ["note"], "navigation": ["location", "travel"], "navigation-2": ["location", "travel"], "octagon": ["stop"], "package": ["box", "container"], "paperclip": ["attachment"], "pause": ["music", "stop"], "pause-circle": ["music", "audio", "stop"], "pen-tool": ["vector", "drawing"], "percent": ["discount"], "phone-call": ["ring"], "phone-forwarded": ["call"], "phone-incoming": ["call"], "phone-missed": ["call"], "phone-off": ["call", "mute"], "phone-outgoing": ["call"], "phone": ["call"], "play": ["music", "start"], "pie-chart": ["statistics", "diagram"], "play-circle": ["music", "start"], "plus": ["add", "new"], "plus-circle": ["add", "new"], "plus-square": ["add", "new"], "pocket": ["logo", "save"], "power": ["on", "off"], "printer": ["fax", "office", "device"], "radio": ["signal"], "refresh-cw": ["synchronise", "arrows"], "refresh-ccw": ["arrows"], "repeat": ["loop", "arrows"], "rewind": ["music"], "rotate-ccw": ["arrow"], "rotate-cw": ["arrow"], "rss": ["feed", "subscribe"], "save": ["floppy disk"], "scissors": ["cut"], "search": ["find", "magnifier", "magnifying glass"], "send": ["message", "mail", "email", "paper airplane", "paper aeroplane"], "settings": ["cog", "edit", "gear", "preferences"], "share-2": ["network", "connections"], "shield": ["security", "secure"], "shield-off": ["security", "insecure"], "shopping-bag": ["ecommerce", "cart", "purchase", "store"], "shopping-cart": ["ecommerce", "cart", "purchase", "store"], "shuffle": ["music"], "skip-back": ["music"], "skip-forward": ["music"], "slack": ["logo"], "slash": ["ban", "no"], "sliders": ["settings", "controls"], "smartphone": ["cellphone", "device"], "smile": ["emoji", "face", "happy", "good", "emotion"], "speaker": ["audio", "music"], "star": ["bookmark", "favorite", "like"], "stop-circle": ["media", "music"], "sun": ["brightness", "weather", "light"], "sunrise": ["weather", "time", "morning", "day"], "sunset": ["weather", "time", "evening", "night"], "tablet": ["device"], "tag": ["label"], "target": ["logo", "bullseye"], "terminal": ["code", "command line", "prompt"], "thermometer": ["temperature", "celsius", "fahrenheit", "weather"], "thumbs-down": ["dislike", "bad", "emotion"], "thumbs-up": ["like", "good", "emotion"], "toggle-left": ["on", "off", "switch"], "toggle-right": ["on", "off", "switch"], "tool": ["settings", "spanner"], "trash": ["garbage", "delete", "remove", "bin"], "trash-2": ["garbage", "delete", "remove", "bin"], "triangle": ["delta"], "truck": ["delivery", "van", "shipping", "transport", "lorry"], "tv": ["television", "stream"], "twitch": ["logo"], "twitter": ["logo", "social"], "type": ["text"], "umbrella": ["rain", "weather"], "unlock": ["security"], "user-check": ["followed", "subscribed"], "user-minus": ["delete", "remove", "unfollow", "unsubscribe"], "user-plus": ["new", "add", "create", "follow", "subscribe"], "user-x": ["delete", "remove", "unfollow", "unsubscribe", "unavailable"], "user": ["person", "account"], "users": ["group"], "video-off": ["camera", "movie", "film"], "video": ["camera", "movie", "film"], "voicemail": ["phone"], "volume": ["music", "sound", "mute"], "volume-1": ["music", "sound"], "volume-2": ["music", "sound"], "volume-x": ["music", "sound", "mute"], "watch": ["clock", "time"], "wifi-off": ["disabled"], "wifi": ["connection", "signal", "wireless"], "wind": ["weather", "air"], "x-circle": ["cancel", "close", "delete", "remove", "times", "clear"], "x-octagon": ["delete", "stop", "alert", "warning", "times", "clear"], "x-square": ["cancel", "close", "delete", "remove", "times", "clear"], "x": ["cancel", "close", "delete", "remove", "times", "clear"], "youtube": ["logo", "video", "play"], "zap-off": ["flash", "camera", "lightning"], "zap": ["flash", "camera", "lightning"], "zoom-in": ["magnifying glass"], "zoom-out": ["magnifying glass"] }; - } - ), - /***/ - "./src/to-svg.js": ( - /*!***********************!*\ - !*** ./src/to-svg.js ***! - \***********************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - "use strict"; - Object.defineProperty(exports3, "__esModule", { - value: true - }); - var _icons = __webpack_require__( - /*! ./icons */ - "./src/icons.js" - ); - var _icons2 = _interopRequireDefault(_icons); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function toSvg(name) { - var attrs = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; - console.warn("feather.toSvg() is deprecated. Please use feather.icons[name].toSvg() instead."); - if (!name) { - throw new Error("The required `key` (icon name) parameter is missing."); - } - if (!_icons2.default[name]) { - throw new Error("No icon matching '" + name + "'. See the complete list of icons at https://feathericons.com"); - } - return _icons2.default[name].toSvg(attrs); - } - exports3.default = toSvg; - } - ), - /***/ - 0: ( - /*!**************************************************!*\ - !*** multi core-js/es/array/from ./src/index.js ***! - \**************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports3, __webpack_require__) { - __webpack_require__( - /*! core-js/es/array/from */ - "./node_modules/core-js/es/array/from.js" - ); - module3.exports = __webpack_require__( - /*! /home/runner/work/feather/feather/src/index.js */ - "./src/index.js" - ); - } - ) - /******/ - }) - ); - }); - } -}); - -// src/main.ts -var main_exports = {}; -__export(main_exports, { - default: () => ObsidianGit -}); -module.exports = __toCommonJS(main_exports); -init_polyfill_buffer(); - -// node_modules/.pnpm/isomorphic-git@1.25.3/node_modules/isomorphic-git/index.js -init_polyfill_buffer(); -var import_async_lock = __toESM(require_async_lock(), 1); -var import_sha1 = __toESM(require_sha1(), 1); -var import_crc_32 = __toESM(require_crc32(), 1); -var import_pako = __toESM(require_pako(), 1); -var import_pify = __toESM(require_pify(), 1); -var import_ignore = __toESM(require_ignore(), 1); -var import_clean_git_ref = __toESM(require_lib2(), 1); -var import_diff3 = __toESM(require_diff3(), 1); -var BaseError = class _BaseError extends Error { - constructor(message) { - super(message); - this.caller = ""; - } - toJSON() { - return { - code: this.code, - data: this.data, - caller: this.caller, - message: this.message, - stack: this.stack - }; - } - fromJSON(json) { - const e = new _BaseError(json.message); - e.code = json.code; - e.data = json.data; - e.caller = json.caller; - e.stack = json.stack; - return e; - } - get isIsomorphicGitError() { - return true; - } -}; -var UnmergedPathsError = class _UnmergedPathsError extends BaseError { - /** - * @param {Array} filepaths - */ - constructor(filepaths) { - super( - `Modifying the index is not possible because you have unmerged files: ${filepaths.toString}. Fix them up in the work tree, and then use 'git add/rm as appropriate to mark resolution and make a commit.` - ); - this.code = this.name = _UnmergedPathsError.code; - this.data = { filepaths }; - } -}; -UnmergedPathsError.code = "UnmergedPathsError"; -var InternalError = class _InternalError extends BaseError { - /** - * @param {string} message - */ - constructor(message) { - super( - `An internal error caused this command to fail. Please file a bug report at https://github.com/isomorphic-git/isomorphic-git/issues with this error message: ${message}` - ); - this.code = this.name = _InternalError.code; - this.data = { message }; - } -}; -InternalError.code = "InternalError"; -var UnsafeFilepathError = class _UnsafeFilepathError extends BaseError { - /** - * @param {string} filepath - */ - constructor(filepath) { - super(`The filepath "${filepath}" contains unsafe character sequences`); - this.code = this.name = _UnsafeFilepathError.code; - this.data = { filepath }; - } -}; -UnsafeFilepathError.code = "UnsafeFilepathError"; -var BufferCursor = class { - constructor(buffer2) { - this.buffer = buffer2; - this._start = 0; - } - eof() { - return this._start >= this.buffer.length; - } - tell() { - return this._start; - } - seek(n) { - this._start = n; - } - slice(n) { - const r = this.buffer.slice(this._start, this._start + n); - this._start += n; - return r; - } - toString(enc, length) { - const r = this.buffer.toString(enc, this._start, this._start + length); - this._start += length; - return r; - } - write(value, length, enc) { - const r = this.buffer.write(value, this._start, length, enc); - this._start += length; - return r; - } - copy(source, start, end) { - const r = source.copy(this.buffer, this._start, start, end); - this._start += r; - return r; - } - readUInt8() { - const r = this.buffer.readUInt8(this._start); - this._start += 1; - return r; - } - writeUInt8(value) { - const r = this.buffer.writeUInt8(value, this._start); - this._start += 1; - return r; - } - readUInt16BE() { - const r = this.buffer.readUInt16BE(this._start); - this._start += 2; - return r; - } - writeUInt16BE(value) { - const r = this.buffer.writeUInt16BE(value, this._start); - this._start += 2; - return r; - } - readUInt32BE() { - const r = this.buffer.readUInt32BE(this._start); - this._start += 4; - return r; - } - writeUInt32BE(value) { - const r = this.buffer.writeUInt32BE(value, this._start); - this._start += 4; - return r; - } -}; -function compareStrings(a, b) { - return -(a < b) || +(a > b); -} -function comparePath(a, b) { - return compareStrings(a.path, b.path); -} -function normalizeMode(mode) { - let type = mode > 0 ? mode >> 12 : 0; - if (type !== 4 && type !== 8 && type !== 10 && type !== 14) { - type = 8; - } - let permissions = mode & 511; - if (permissions & 73) { - permissions = 493; - } else { - permissions = 420; - } - if (type !== 8) - permissions = 0; - return (type << 12) + permissions; -} -var MAX_UINT32 = 2 ** 32; -function SecondsNanoseconds(givenSeconds, givenNanoseconds, milliseconds, date) { - if (givenSeconds !== void 0 && givenNanoseconds !== void 0) { - return [givenSeconds, givenNanoseconds]; - } - if (milliseconds === void 0) { - milliseconds = date.valueOf(); - } - const seconds = Math.floor(milliseconds / 1e3); - const nanoseconds = (milliseconds - seconds * 1e3) * 1e6; - return [seconds, nanoseconds]; -} -function normalizeStats(e) { - const [ctimeSeconds, ctimeNanoseconds] = SecondsNanoseconds( - e.ctimeSeconds, - e.ctimeNanoseconds, - e.ctimeMs, - e.ctime - ); - const [mtimeSeconds, mtimeNanoseconds] = SecondsNanoseconds( - e.mtimeSeconds, - e.mtimeNanoseconds, - e.mtimeMs, - e.mtime - ); - return { - ctimeSeconds: ctimeSeconds % MAX_UINT32, - ctimeNanoseconds: ctimeNanoseconds % MAX_UINT32, - mtimeSeconds: mtimeSeconds % MAX_UINT32, - mtimeNanoseconds: mtimeNanoseconds % MAX_UINT32, - dev: e.dev % MAX_UINT32, - ino: e.ino % MAX_UINT32, - mode: normalizeMode(e.mode % MAX_UINT32), - uid: e.uid % MAX_UINT32, - gid: e.gid % MAX_UINT32, - // size of -1 happens over a BrowserFS HTTP Backend that doesn't serve Content-Length headers - // (like the Karma webserver) because BrowserFS HTTP Backend uses HTTP HEAD requests to do fs.stat - size: e.size > -1 ? e.size % MAX_UINT32 : 0 - }; -} -function toHex(buffer2) { - let hex = ""; - for (const byte of new Uint8Array(buffer2)) { - if (byte < 16) - hex += "0"; - hex += byte.toString(16); - } - return hex; -} -var supportsSubtleSHA1 = null; -async function shasum(buffer2) { - if (supportsSubtleSHA1 === null) { - supportsSubtleSHA1 = await testSubtleSHA1(); - } - return supportsSubtleSHA1 ? subtleSHA1(buffer2) : shasumSync(buffer2); -} -function shasumSync(buffer2) { - return new import_sha1.default().update(buffer2).digest("hex"); -} -async function subtleSHA1(buffer2) { - const hash2 = await crypto.subtle.digest("SHA-1", buffer2); - return toHex(hash2); -} -async function testSubtleSHA1() { - try { - const hash2 = await subtleSHA1(new Uint8Array([])); - if (hash2 === "da39a3ee5e6b4b0d3255bfef95601890afd80709") - return true; - } catch (_) { - } - return false; -} -function parseCacheEntryFlags(bits) { - return { - assumeValid: Boolean(bits & 32768), - extended: Boolean(bits & 16384), - stage: (bits & 12288) >> 12, - nameLength: bits & 4095 - }; -} -function renderCacheEntryFlags(entry) { - const flags = entry.flags; - flags.extended = false; - flags.nameLength = Math.min(Buffer.from(entry.path).length, 4095); - return (flags.assumeValid ? 32768 : 0) + (flags.extended ? 16384 : 0) + ((flags.stage & 3) << 12) + (flags.nameLength & 4095); -} -var GitIndex = class _GitIndex { - /*:: - _entries: Map - _dirty: boolean // Used to determine if index needs to be saved to filesystem - */ - constructor(entries, unmergedPaths) { - this._dirty = false; - this._unmergedPaths = unmergedPaths || /* @__PURE__ */ new Set(); - this._entries = entries || /* @__PURE__ */ new Map(); - } - _addEntry(entry) { - if (entry.flags.stage === 0) { - entry.stages = [entry]; - this._entries.set(entry.path, entry); - this._unmergedPaths.delete(entry.path); - } else { - let existingEntry = this._entries.get(entry.path); - if (!existingEntry) { - this._entries.set(entry.path, entry); - existingEntry = entry; - } - existingEntry.stages[entry.flags.stage] = entry; - this._unmergedPaths.add(entry.path); - } - } - static async from(buffer2) { - if (Buffer.isBuffer(buffer2)) { - return _GitIndex.fromBuffer(buffer2); - } else if (buffer2 === null) { - return new _GitIndex(null); - } else { - throw new InternalError("invalid type passed to GitIndex.from"); - } - } - static async fromBuffer(buffer2) { - if (buffer2.length === 0) { - throw new InternalError("Index file is empty (.git/index)"); - } - const index2 = new _GitIndex(); - const reader = new BufferCursor(buffer2); - const magic = reader.toString("utf8", 4); - if (magic !== "DIRC") { - throw new InternalError(`Invalid dircache magic file number: ${magic}`); - } - const shaComputed = await shasum(buffer2.slice(0, -20)); - const shaClaimed = buffer2.slice(-20).toString("hex"); - if (shaClaimed !== shaComputed) { - throw new InternalError( - `Invalid checksum in GitIndex buffer: expected ${shaClaimed} but saw ${shaComputed}` - ); - } - const version2 = reader.readUInt32BE(); - if (version2 !== 2) { - throw new InternalError(`Unsupported dircache version: ${version2}`); - } - const numEntries = reader.readUInt32BE(); - let i = 0; - while (!reader.eof() && i < numEntries) { - const entry = {}; - entry.ctimeSeconds = reader.readUInt32BE(); - entry.ctimeNanoseconds = reader.readUInt32BE(); - entry.mtimeSeconds = reader.readUInt32BE(); - entry.mtimeNanoseconds = reader.readUInt32BE(); - entry.dev = reader.readUInt32BE(); - entry.ino = reader.readUInt32BE(); - entry.mode = reader.readUInt32BE(); - entry.uid = reader.readUInt32BE(); - entry.gid = reader.readUInt32BE(); - entry.size = reader.readUInt32BE(); - entry.oid = reader.slice(20).toString("hex"); - const flags = reader.readUInt16BE(); - entry.flags = parseCacheEntryFlags(flags); - const pathlength = buffer2.indexOf(0, reader.tell() + 1) - reader.tell(); - if (pathlength < 1) { - throw new InternalError(`Got a path length of: ${pathlength}`); - } - entry.path = reader.toString("utf8", pathlength); - if (entry.path.includes("..\\") || entry.path.includes("../")) { - throw new UnsafeFilepathError(entry.path); - } - let padding = 8 - (reader.tell() - 12) % 8; - if (padding === 0) - padding = 8; - while (padding--) { - const tmp = reader.readUInt8(); - if (tmp !== 0) { - throw new InternalError( - `Expected 1-8 null characters but got '${tmp}' after ${entry.path}` - ); - } else if (reader.eof()) { - throw new InternalError("Unexpected end of file"); - } - } - entry.stages = []; - index2._addEntry(entry); - i++; - } - return index2; - } - get unmergedPaths() { - return [...this._unmergedPaths]; - } - get entries() { - return [...this._entries.values()].sort(comparePath); - } - get entriesMap() { - return this._entries; - } - get entriesFlat() { - return [...this.entries].flatMap((entry) => { - return entry.stages.length > 1 ? entry.stages.filter((x) => x) : entry; - }); - } - *[Symbol.iterator]() { - for (const entry of this.entries) { - yield entry; - } - } - insert({ filepath, stats, oid, stage = 0 }) { - if (!stats) { - stats = { - ctimeSeconds: 0, - ctimeNanoseconds: 0, - mtimeSeconds: 0, - mtimeNanoseconds: 0, - dev: 0, - ino: 0, - mode: 0, - uid: 0, - gid: 0, - size: 0 - }; - } - stats = normalizeStats(stats); - const bfilepath = Buffer.from(filepath); - const entry = { - ctimeSeconds: stats.ctimeSeconds, - ctimeNanoseconds: stats.ctimeNanoseconds, - mtimeSeconds: stats.mtimeSeconds, - mtimeNanoseconds: stats.mtimeNanoseconds, - dev: stats.dev, - ino: stats.ino, - // We provide a fallback value for `mode` here because not all fs - // implementations assign it, but we use it in GitTree. - // '100644' is for a "regular non-executable file" - mode: stats.mode || 33188, - uid: stats.uid, - gid: stats.gid, - size: stats.size, - path: filepath, - oid, - flags: { - assumeValid: false, - extended: false, - stage, - nameLength: bfilepath.length < 4095 ? bfilepath.length : 4095 - }, - stages: [] - }; - this._addEntry(entry); - this._dirty = true; - } - delete({ filepath }) { - if (this._entries.has(filepath)) { - this._entries.delete(filepath); - } else { - for (const key2 of this._entries.keys()) { - if (key2.startsWith(filepath + "/")) { - this._entries.delete(key2); - } - } - } - if (this._unmergedPaths.has(filepath)) { - this._unmergedPaths.delete(filepath); - } - this._dirty = true; - } - clear() { - this._entries.clear(); - this._dirty = true; - } - has({ filepath }) { - return this._entries.has(filepath); - } - render() { - return this.entries.map((entry) => `${entry.mode.toString(8)} ${entry.oid} ${entry.path}`).join("\n"); - } - static async _entryToBuffer(entry) { - const bpath = Buffer.from(entry.path); - const length = Math.ceil((62 + bpath.length + 1) / 8) * 8; - const written = Buffer.alloc(length); - const writer = new BufferCursor(written); - const stat = normalizeStats(entry); - writer.writeUInt32BE(stat.ctimeSeconds); - writer.writeUInt32BE(stat.ctimeNanoseconds); - writer.writeUInt32BE(stat.mtimeSeconds); - writer.writeUInt32BE(stat.mtimeNanoseconds); - writer.writeUInt32BE(stat.dev); - writer.writeUInt32BE(stat.ino); - writer.writeUInt32BE(stat.mode); - writer.writeUInt32BE(stat.uid); - writer.writeUInt32BE(stat.gid); - writer.writeUInt32BE(stat.size); - writer.write(entry.oid, 20, "hex"); - writer.writeUInt16BE(renderCacheEntryFlags(entry)); - writer.write(entry.path, bpath.length, "utf8"); - return written; - } - async toObject() { - const header = Buffer.alloc(12); - const writer = new BufferCursor(header); - writer.write("DIRC", 4, "utf8"); - writer.writeUInt32BE(2); - writer.writeUInt32BE(this.entriesFlat.length); - let entryBuffers = []; - for (const entry of this.entries) { - entryBuffers.push(_GitIndex._entryToBuffer(entry)); - if (entry.stages.length > 1) { - for (const stage of entry.stages) { - if (stage && stage !== entry) { - entryBuffers.push(_GitIndex._entryToBuffer(stage)); - } - } - } - } - entryBuffers = await Promise.all(entryBuffers); - const body = Buffer.concat(entryBuffers); - const main = Buffer.concat([header, body]); - const sum = await shasum(main); - return Buffer.concat([main, Buffer.from(sum, "hex")]); - } -}; -function compareStats(entry, stats) { - const e = normalizeStats(entry); - const s = normalizeStats(stats); - const staleness = e.mode !== s.mode || e.mtimeSeconds !== s.mtimeSeconds || e.ctimeSeconds !== s.ctimeSeconds || e.uid !== s.uid || e.gid !== s.gid || e.ino !== s.ino || e.size !== s.size; - return staleness; -} -var lock = null; -var IndexCache = Symbol("IndexCache"); -function createCache() { - return { - map: /* @__PURE__ */ new Map(), - stats: /* @__PURE__ */ new Map() - }; -} -async function updateCachedIndexFile(fs, filepath, cache) { - const stat = await fs.lstat(filepath); - const rawIndexFile = await fs.read(filepath); - const index2 = await GitIndex.from(rawIndexFile); - cache.map.set(filepath, index2); - cache.stats.set(filepath, stat); -} -async function isIndexStale(fs, filepath, cache) { - const savedStats = cache.stats.get(filepath); - if (savedStats === void 0) - return true; - const currStats = await fs.lstat(filepath); - if (savedStats === null) - return false; - if (currStats === null) - return false; - return compareStats(savedStats, currStats); -} -var GitIndexManager = class { - /** - * - * @param {object} opts - * @param {import('../models/FileSystem.js').FileSystem} opts.fs - * @param {string} opts.gitdir - * @param {object} opts.cache - * @param {bool} opts.allowUnmerged - * @param {function(GitIndex): any} closure - */ - static async acquire({ fs, gitdir, cache, allowUnmerged = true }, closure) { - if (!cache[IndexCache]) - cache[IndexCache] = createCache(); - const filepath = `${gitdir}/index`; - if (lock === null) - lock = new import_async_lock.default({ maxPending: Infinity }); - let result; - let unmergedPaths = []; - await lock.acquire(filepath, async () => { - if (await isIndexStale(fs, filepath, cache[IndexCache])) { - await updateCachedIndexFile(fs, filepath, cache[IndexCache]); - } - const index2 = cache[IndexCache].map.get(filepath); - unmergedPaths = index2.unmergedPaths; - if (unmergedPaths.length && !allowUnmerged) - throw new UnmergedPathsError(unmergedPaths); - result = await closure(index2); - if (index2._dirty) { - const buffer2 = await index2.toObject(); - await fs.write(filepath, buffer2); - cache[IndexCache].stats.set(filepath, await fs.lstat(filepath)); - index2._dirty = false; - } - }); - return result; - } -}; -function basename(path2) { - const last2 = Math.max(path2.lastIndexOf("/"), path2.lastIndexOf("\\")); - if (last2 > -1) { - path2 = path2.slice(last2 + 1); - } - return path2; -} -function dirname(path2) { - const last2 = Math.max(path2.lastIndexOf("/"), path2.lastIndexOf("\\")); - if (last2 === -1) - return "."; - if (last2 === 0) - return "/"; - return path2.slice(0, last2); -} -function flatFileListToDirectoryStructure(files) { - const inodes = /* @__PURE__ */ new Map(); - const mkdir = function(name) { - if (!inodes.has(name)) { - const dir = { - type: "tree", - fullpath: name, - basename: basename(name), - metadata: {}, - children: [] - }; - inodes.set(name, dir); - dir.parent = mkdir(dirname(name)); - if (dir.parent && dir.parent !== dir) - dir.parent.children.push(dir); - } - return inodes.get(name); - }; - const mkfile = function(name, metadata) { - if (!inodes.has(name)) { - const file = { - type: "blob", - fullpath: name, - basename: basename(name), - metadata, - // This recursively generates any missing parent folders. - parent: mkdir(dirname(name)), - children: [] - }; - if (file.parent) - file.parent.children.push(file); - inodes.set(name, file); - } - return inodes.get(name); - }; - mkdir("."); - for (const file of files) { - mkfile(file.path, file); - } - return inodes; -} -function mode2type(mode) { - switch (mode) { - case 16384: - return "tree"; - case 33188: - return "blob"; - case 33261: - return "blob"; - case 40960: - return "blob"; - case 57344: - return "commit"; - } - throw new InternalError(`Unexpected GitTree entry mode: ${mode.toString(8)}`); -} -var GitWalkerIndex = class { - constructor({ fs, gitdir, cache }) { - this.treePromise = GitIndexManager.acquire( - { fs, gitdir, cache }, - async function(index2) { - return flatFileListToDirectoryStructure(index2.entries); - } - ); - const walker = this; - this.ConstructEntry = class StageEntry { - constructor(fullpath) { - this._fullpath = fullpath; - this._type = false; - this._mode = false; - this._stat = false; - this._oid = false; - } - async type() { - return walker.type(this); - } - async mode() { - return walker.mode(this); - } - async stat() { - return walker.stat(this); - } - async content() { - return walker.content(this); - } - async oid() { - return walker.oid(this); - } - }; - } - async readdir(entry) { - const filepath = entry._fullpath; - const tree = await this.treePromise; - const inode = tree.get(filepath); - if (!inode) - return null; - if (inode.type === "blob") - return null; - if (inode.type !== "tree") { - throw new Error(`ENOTDIR: not a directory, scandir '${filepath}'`); - } - const names = inode.children.map((inode2) => inode2.fullpath); - names.sort(compareStrings); - return names; - } - async type(entry) { - if (entry._type === false) { - await entry.stat(); - } - return entry._type; - } - async mode(entry) { - if (entry._mode === false) { - await entry.stat(); - } - return entry._mode; - } - async stat(entry) { - if (entry._stat === false) { - const tree = await this.treePromise; - const inode = tree.get(entry._fullpath); - if (!inode) { - throw new Error( - `ENOENT: no such file or directory, lstat '${entry._fullpath}'` - ); - } - const stats = inode.type === "tree" ? {} : normalizeStats(inode.metadata); - entry._type = inode.type === "tree" ? "tree" : mode2type(stats.mode); - entry._mode = stats.mode; - if (inode.type === "tree") { - entry._stat = void 0; - } else { - entry._stat = stats; - } - } - return entry._stat; - } - async content(_entry) { - } - async oid(entry) { - if (entry._oid === false) { - const tree = await this.treePromise; - const inode = tree.get(entry._fullpath); - entry._oid = inode.metadata.oid; - } - return entry._oid; - } -}; -var GitWalkSymbol = Symbol("GitWalkSymbol"); -function STAGE() { - const o = /* @__PURE__ */ Object.create(null); - Object.defineProperty(o, GitWalkSymbol, { - value: function({ fs, gitdir, cache }) { - return new GitWalkerIndex({ fs, gitdir, cache }); - } - }); - Object.freeze(o); - return o; -} -var NotFoundError = class _NotFoundError extends BaseError { - /** - * @param {string} what - */ - constructor(what) { - super(`Could not find ${what}.`); - this.code = this.name = _NotFoundError.code; - this.data = { what }; - } -}; -NotFoundError.code = "NotFoundError"; -var ObjectTypeError = class _ObjectTypeError extends BaseError { - /** - * @param {string} oid - * @param {'blob'|'commit'|'tag'|'tree'} actual - * @param {'blob'|'commit'|'tag'|'tree'} expected - * @param {string} [filepath] - */ - constructor(oid, actual, expected, filepath) { - super( - `Object ${oid} ${filepath ? `at ${filepath}` : ""}was anticipated to be a ${expected} but it is a ${actual}.` - ); - this.code = this.name = _ObjectTypeError.code; - this.data = { oid, actual, expected, filepath }; - } -}; -ObjectTypeError.code = "ObjectTypeError"; -var InvalidOidError = class _InvalidOidError extends BaseError { - /** - * @param {string} value - */ - constructor(value) { - super(`Expected a 40-char hex object id but saw "${value}".`); - this.code = this.name = _InvalidOidError.code; - this.data = { value }; - } -}; -InvalidOidError.code = "InvalidOidError"; -var NoRefspecError = class _NoRefspecError extends BaseError { - /** - * @param {string} remote - */ - constructor(remote) { - super(`Could not find a fetch refspec for remote "${remote}". Make sure the config file has an entry like the following: -[remote "${remote}"] - fetch = +refs/heads/*:refs/remotes/origin/* -`); - this.code = this.name = _NoRefspecError.code; - this.data = { remote }; - } -}; -NoRefspecError.code = "NoRefspecError"; -var GitPackedRefs = class _GitPackedRefs { - constructor(text2) { - this.refs = /* @__PURE__ */ new Map(); - this.parsedConfig = []; - if (text2) { - let key2 = null; - this.parsedConfig = text2.trim().split("\n").map((line) => { - if (/^\s*#/.test(line)) { - return { line, comment: true }; - } - const i = line.indexOf(" "); - if (line.startsWith("^")) { - const value = line.slice(1); - this.refs.set(key2 + "^{}", value); - return { line, ref: key2, peeled: value }; - } else { - const value = line.slice(0, i); - key2 = line.slice(i + 1); - this.refs.set(key2, value); - return { line, ref: key2, oid: value }; - } - }); - } - return this; - } - static from(text2) { - return new _GitPackedRefs(text2); - } - delete(ref) { - this.parsedConfig = this.parsedConfig.filter((entry) => entry.ref !== ref); - this.refs.delete(ref); - } - toString() { - return this.parsedConfig.map(({ line }) => line).join("\n") + "\n"; - } -}; -var GitRefSpec = class _GitRefSpec { - constructor({ remotePath, localPath, force, matchPrefix }) { - Object.assign(this, { - remotePath, - localPath, - force, - matchPrefix - }); - } - static from(refspec) { - const [ - forceMatch, - remotePath, - remoteGlobMatch, - localPath, - localGlobMatch - ] = refspec.match(/^(\+?)(.*?)(\*?):(.*?)(\*?)$/).slice(1); - const force = forceMatch === "+"; - const remoteIsGlob = remoteGlobMatch === "*"; - const localIsGlob = localGlobMatch === "*"; - if (remoteIsGlob !== localIsGlob) { - throw new InternalError("Invalid refspec"); - } - return new _GitRefSpec({ - remotePath, - localPath, - force, - matchPrefix: remoteIsGlob - }); - } - translate(remoteBranch) { - if (this.matchPrefix) { - if (remoteBranch.startsWith(this.remotePath)) { - return this.localPath + remoteBranch.replace(this.remotePath, ""); - } - } else { - if (remoteBranch === this.remotePath) - return this.localPath; - } - return null; - } - reverseTranslate(localBranch) { - if (this.matchPrefix) { - if (localBranch.startsWith(this.localPath)) { - return this.remotePath + localBranch.replace(this.localPath, ""); - } - } else { - if (localBranch === this.localPath) - return this.remotePath; - } - return null; - } -}; -var GitRefSpecSet = class _GitRefSpecSet { - constructor(rules = []) { - this.rules = rules; - } - static from(refspecs) { - const rules = []; - for (const refspec of refspecs) { - rules.push(GitRefSpec.from(refspec)); - } - return new _GitRefSpecSet(rules); - } - add(refspec) { - const rule = GitRefSpec.from(refspec); - this.rules.push(rule); - } - translate(remoteRefs) { - const result = []; - for (const rule of this.rules) { - for (const remoteRef of remoteRefs) { - const localRef = rule.translate(remoteRef); - if (localRef) { - result.push([remoteRef, localRef]); - } - } - } - return result; - } - translateOne(remoteRef) { - let result = null; - for (const rule of this.rules) { - const localRef = rule.translate(remoteRef); - if (localRef) { - result = localRef; - } - } - return result; - } - localNamespaces() { - return this.rules.filter((rule) => rule.matchPrefix).map((rule) => rule.localPath.replace(/\/$/, "")); - } -}; -function compareRefNames(a, b) { - const _a2 = a.replace(/\^\{\}$/, ""); - const _b = b.replace(/\^\{\}$/, ""); - const tmp = -(_a2 < _b) || +(_a2 > _b); - if (tmp === 0) { - return a.endsWith("^{}") ? 1 : -1; - } - return tmp; -} -var memo = /* @__PURE__ */ new Map(); -function normalizePath(path2) { - let normalizedPath = memo.get(path2); - if (!normalizedPath) { - normalizedPath = normalizePathInternal(path2); - memo.set(path2, normalizedPath); - } - return normalizedPath; -} -function normalizePathInternal(path2) { - path2 = path2.split("/./").join("/").replace(/\/{2,}/g, "/"); - if (path2 === "/.") - return "/"; - if (path2 === "./") - return "."; - if (path2.startsWith("./")) - path2 = path2.slice(2); - if (path2.endsWith("/.")) - path2 = path2.slice(0, -2); - if (path2.length > 1 && path2.endsWith("/")) - path2 = path2.slice(0, -1); - if (path2 === "") - return "."; - return path2; -} -function join(...parts) { - return normalizePath(parts.map(normalizePath).join("/")); -} -var num = (val) => { - val = val.toLowerCase(); - let n = parseInt(val); - if (val.endsWith("k")) - n *= 1024; - if (val.endsWith("m")) - n *= 1024 * 1024; - if (val.endsWith("g")) - n *= 1024 * 1024 * 1024; - return n; -}; -var bool = (val) => { - val = val.trim().toLowerCase(); - if (val === "true" || val === "yes" || val === "on") - return true; - if (val === "false" || val === "no" || val === "off") - return false; - throw Error( - `Expected 'true', 'false', 'yes', 'no', 'on', or 'off', but got ${val}` - ); -}; -var schema = { - core: { - filemode: bool, - bare: bool, - logallrefupdates: bool, - symlinks: bool, - ignorecase: bool, - bigFileThreshold: num - } -}; -var SECTION_LINE_REGEX = /^\[([A-Za-z0-9-.]+)(?: "(.*)")?\]$/; -var SECTION_REGEX = /^[A-Za-z0-9-.]+$/; -var VARIABLE_LINE_REGEX = /^([A-Za-z][A-Za-z-]*)(?: *= *(.*))?$/; -var VARIABLE_NAME_REGEX = /^[A-Za-z][A-Za-z-]*$/; -var VARIABLE_VALUE_COMMENT_REGEX = /^(.*?)( *[#;].*)$/; -var extractSectionLine = (line) => { - const matches = SECTION_LINE_REGEX.exec(line); - if (matches != null) { - const [section, subsection] = matches.slice(1); - return [section, subsection]; - } - return null; -}; -var extractVariableLine = (line) => { - const matches = VARIABLE_LINE_REGEX.exec(line); - if (matches != null) { - const [name, rawValue = "true"] = matches.slice(1); - const valueWithoutComments = removeComments(rawValue); - const valueWithoutQuotes = removeQuotes(valueWithoutComments); - return [name, valueWithoutQuotes]; - } - return null; -}; -var removeComments = (rawValue) => { - const commentMatches = VARIABLE_VALUE_COMMENT_REGEX.exec(rawValue); - if (commentMatches == null) { - return rawValue; - } - const [valueWithoutComment, comment] = commentMatches.slice(1); - if (hasOddNumberOfQuotes(valueWithoutComment) && hasOddNumberOfQuotes(comment)) { - return `${valueWithoutComment}${comment}`; - } - return valueWithoutComment; -}; -var hasOddNumberOfQuotes = (text2) => { - const numberOfQuotes = (text2.match(/(?:^|[^\\])"/g) || []).length; - return numberOfQuotes % 2 !== 0; -}; -var removeQuotes = (text2) => { - return text2.split("").reduce((newText, c, idx, text3) => { - const isQuote = c === '"' && text3[idx - 1] !== "\\"; - const isEscapeForQuote = c === "\\" && text3[idx + 1] === '"'; - if (isQuote || isEscapeForQuote) { - return newText; - } - return newText + c; - }, ""); -}; -var lower = (text2) => { - return text2 != null ? text2.toLowerCase() : null; -}; -var getPath = (section, subsection, name) => { - return [lower(section), subsection, lower(name)].filter((a) => a != null).join("."); -}; -var normalizePath$1 = (path2) => { - const pathSegments = path2.split("."); - const section = pathSegments.shift(); - const name = pathSegments.pop(); - const subsection = pathSegments.length ? pathSegments.join(".") : void 0; - return { - section, - subsection, - name, - path: getPath(section, subsection, name), - sectionPath: getPath(section, subsection, null) - }; -}; -var findLastIndex = (array, callback) => { - return array.reduce((lastIndex, item, index2) => { - return callback(item) ? index2 : lastIndex; - }, -1); -}; -var GitConfig = class _GitConfig { - constructor(text2) { - let section = null; - let subsection = null; - this.parsedConfig = text2.split("\n").map((line) => { - let name = null; - let value = null; - const trimmedLine = line.trim(); - const extractedSection = extractSectionLine(trimmedLine); - const isSection = extractedSection != null; - if (isSection) { - ; - [section, subsection] = extractedSection; - } else { - const extractedVariable = extractVariableLine(trimmedLine); - const isVariable = extractedVariable != null; - if (isVariable) { - ; - [name, value] = extractedVariable; - } - } - const path2 = getPath(section, subsection, name); - return { line, isSection, section, subsection, name, value, path: path2 }; - }); - } - static from(text2) { - return new _GitConfig(text2); - } - async get(path2, getall = false) { - const normalizedPath = normalizePath$1(path2).path; - const allValues = this.parsedConfig.filter((config) => config.path === normalizedPath).map(({ section, name, value }) => { - const fn = schema[section] && schema[section][name]; - return fn ? fn(value) : value; - }); - return getall ? allValues : allValues.pop(); - } - async getall(path2) { - return this.get(path2, true); - } - async getSubsections(section) { - return this.parsedConfig.filter((config) => config.section === section && config.isSection).map((config) => config.subsection); - } - async deleteSection(section, subsection) { - this.parsedConfig = this.parsedConfig.filter( - (config) => !(config.section === section && config.subsection === subsection) - ); - } - async append(path2, value) { - return this.set(path2, value, true); - } - async set(path2, value, append3 = false) { - const { - section, - subsection, - name, - path: normalizedPath, - sectionPath - } = normalizePath$1(path2); - const configIndex = findLastIndex( - this.parsedConfig, - (config) => config.path === normalizedPath - ); - if (value == null) { - if (configIndex !== -1) { - this.parsedConfig.splice(configIndex, 1); - } - } else { - if (configIndex !== -1) { - const config = this.parsedConfig[configIndex]; - const modifiedConfig = Object.assign({}, config, { - name, - value, - modified: true - }); - if (append3) { - this.parsedConfig.splice(configIndex + 1, 0, modifiedConfig); - } else { - this.parsedConfig[configIndex] = modifiedConfig; - } - } else { - const sectionIndex = this.parsedConfig.findIndex( - (config) => config.path === sectionPath - ); - const newConfig = { - section, - subsection, - name, - value, - modified: true, - path: normalizedPath - }; - if (SECTION_REGEX.test(section) && VARIABLE_NAME_REGEX.test(name)) { - if (sectionIndex >= 0) { - this.parsedConfig.splice(sectionIndex + 1, 0, newConfig); - } else { - const newSection = { - section, - subsection, - modified: true, - path: sectionPath - }; - this.parsedConfig.push(newSection, newConfig); - } - } - } - } - } - toString() { - return this.parsedConfig.map(({ line, section, subsection, name, value, modified: modified2 = false }) => { - if (!modified2) { - return line; - } - if (name != null && value != null) { - if (typeof value === "string" && /[#;]/.test(value)) { - return ` ${name} = "${value}"`; - } - return ` ${name} = ${value}`; - } - if (subsection != null) { - return `[${section} "${subsection}"]`; - } - return `[${section}]`; - }).join("\n"); - } -}; -var GitConfigManager = class { - static async get({ fs, gitdir }) { - const text2 = await fs.read(`${gitdir}/config`, { encoding: "utf8" }); - return GitConfig.from(text2); - } - static async save({ fs, gitdir, config }) { - await fs.write(`${gitdir}/config`, config.toString(), { - encoding: "utf8" - }); - } -}; -var refpaths = (ref) => [ - `${ref}`, - `refs/${ref}`, - `refs/tags/${ref}`, - `refs/heads/${ref}`, - `refs/remotes/${ref}`, - `refs/remotes/${ref}/HEAD` -]; -var GIT_FILES = ["config", "description", "index", "shallow", "commondir"]; -var GitRefManager = class _GitRefManager { - static async updateRemoteRefs({ - fs, - gitdir, - remote, - refs, - symrefs, - tags, - refspecs = void 0, - prune = false, - pruneTags = false - }) { - for (const value of refs.values()) { - if (!value.match(/[0-9a-f]{40}/)) { - throw new InvalidOidError(value); - } - } - const config = await GitConfigManager.get({ fs, gitdir }); - if (!refspecs) { - refspecs = await config.getall(`remote.${remote}.fetch`); - if (refspecs.length === 0) { - throw new NoRefspecError(remote); - } - refspecs.unshift(`+HEAD:refs/remotes/${remote}/HEAD`); - } - const refspec = GitRefSpecSet.from(refspecs); - const actualRefsToWrite = /* @__PURE__ */ new Map(); - if (pruneTags) { - const tags2 = await _GitRefManager.listRefs({ - fs, - gitdir, - filepath: "refs/tags" - }); - await _GitRefManager.deleteRefs({ - fs, - gitdir, - refs: tags2.map((tag2) => `refs/tags/${tag2}`) - }); - } - if (tags) { - for (const serverRef of refs.keys()) { - if (serverRef.startsWith("refs/tags") && !serverRef.endsWith("^{}")) { - if (!await _GitRefManager.exists({ fs, gitdir, ref: serverRef })) { - const oid = refs.get(serverRef); - actualRefsToWrite.set(serverRef, oid); - } - } - } - } - const refTranslations = refspec.translate([...refs.keys()]); - for (const [serverRef, translatedRef] of refTranslations) { - const value = refs.get(serverRef); - actualRefsToWrite.set(translatedRef, value); - } - const symrefTranslations = refspec.translate([...symrefs.keys()]); - for (const [serverRef, translatedRef] of symrefTranslations) { - const value = symrefs.get(serverRef); - const symtarget = refspec.translateOne(value); - if (symtarget) { - actualRefsToWrite.set(translatedRef, `ref: ${symtarget}`); - } - } - const pruned = []; - if (prune) { - for (const filepath of refspec.localNamespaces()) { - const refs2 = (await _GitRefManager.listRefs({ - fs, - gitdir, - filepath - })).map((file) => `${filepath}/${file}`); - for (const ref of refs2) { - if (!actualRefsToWrite.has(ref)) { - pruned.push(ref); - } - } - } - if (pruned.length > 0) { - await _GitRefManager.deleteRefs({ fs, gitdir, refs: pruned }); - } - } - for (const [key2, value] of actualRefsToWrite) { - await fs.write(join(gitdir, key2), `${value.trim()} -`, "utf8"); - } - return { pruned }; - } - // TODO: make this less crude? - static async writeRef({ fs, gitdir, ref, value }) { - if (!value.match(/[0-9a-f]{40}/)) { - throw new InvalidOidError(value); - } - await fs.write(join(gitdir, ref), `${value.trim()} -`, "utf8"); - } - static async writeSymbolicRef({ fs, gitdir, ref, value }) { - await fs.write(join(gitdir, ref), `ref: ${value.trim()} -`, "utf8"); - } - static async deleteRef({ fs, gitdir, ref }) { - return _GitRefManager.deleteRefs({ fs, gitdir, refs: [ref] }); - } - static async deleteRefs({ fs, gitdir, refs }) { - await Promise.all(refs.map((ref) => fs.rm(join(gitdir, ref)))); - let text2 = await fs.read(`${gitdir}/packed-refs`, { encoding: "utf8" }); - const packed = GitPackedRefs.from(text2); - const beforeSize = packed.refs.size; - for (const ref of refs) { - if (packed.refs.has(ref)) { - packed.delete(ref); - } - } - if (packed.refs.size < beforeSize) { - text2 = packed.toString(); - await fs.write(`${gitdir}/packed-refs`, text2, { encoding: "utf8" }); - } - } - /** - * @param {object} args - * @param {import('../models/FileSystem.js').FileSystem} args.fs - * @param {string} args.gitdir - * @param {string} args.ref - * @param {number} [args.depth] - * @returns {Promise} - */ - static async resolve({ fs, gitdir, ref, depth = void 0 }) { - if (depth !== void 0) { - depth--; - if (depth === -1) { - return ref; - } - } - let sha; - if (ref.startsWith("ref: ")) { - ref = ref.slice("ref: ".length); - return _GitRefManager.resolve({ fs, gitdir, ref, depth }); - } - if (ref.length === 40 && /[0-9a-f]{40}/.test(ref)) { - return ref; - } - const packedMap = await _GitRefManager.packedRefs({ fs, gitdir }); - const allpaths = refpaths(ref).filter((p) => !GIT_FILES.includes(p)); - for (const ref2 of allpaths) { - sha = await fs.read(`${gitdir}/${ref2}`, { encoding: "utf8" }) || packedMap.get(ref2); - if (sha) { - return _GitRefManager.resolve({ fs, gitdir, ref: sha.trim(), depth }); - } - } - throw new NotFoundError(ref); - } - static async exists({ fs, gitdir, ref }) { - try { - await _GitRefManager.expand({ fs, gitdir, ref }); - return true; - } catch (err) { - return false; - } - } - static async expand({ fs, gitdir, ref }) { - if (ref.length === 40 && /[0-9a-f]{40}/.test(ref)) { - return ref; - } - const packedMap = await _GitRefManager.packedRefs({ fs, gitdir }); - const allpaths = refpaths(ref); - for (const ref2 of allpaths) { - if (await fs.exists(`${gitdir}/${ref2}`)) - return ref2; - if (packedMap.has(ref2)) - return ref2; - } - throw new NotFoundError(ref); - } - static async expandAgainstMap({ ref, map }) { - const allpaths = refpaths(ref); - for (const ref2 of allpaths) { - if (await map.has(ref2)) - return ref2; - } - throw new NotFoundError(ref); - } - static resolveAgainstMap({ ref, fullref = ref, depth = void 0, map }) { - if (depth !== void 0) { - depth--; - if (depth === -1) { - return { fullref, oid: ref }; - } - } - if (ref.startsWith("ref: ")) { - ref = ref.slice("ref: ".length); - return _GitRefManager.resolveAgainstMap({ ref, fullref, depth, map }); - } - if (ref.length === 40 && /[0-9a-f]{40}/.test(ref)) { - return { fullref, oid: ref }; - } - const allpaths = refpaths(ref); - for (const ref2 of allpaths) { - const sha = map.get(ref2); - if (sha) { - return _GitRefManager.resolveAgainstMap({ - ref: sha.trim(), - fullref: ref2, - depth, - map - }); - } - } - throw new NotFoundError(ref); - } - static async packedRefs({ fs, gitdir }) { - const text2 = await fs.read(`${gitdir}/packed-refs`, { encoding: "utf8" }); - const packed = GitPackedRefs.from(text2); - return packed.refs; - } - // List all the refs that match the `filepath` prefix - static async listRefs({ fs, gitdir, filepath }) { - const packedMap = _GitRefManager.packedRefs({ fs, gitdir }); - let files = null; - try { - files = await fs.readdirDeep(`${gitdir}/${filepath}`); - files = files.map((x) => x.replace(`${gitdir}/${filepath}/`, "")); - } catch (err) { - files = []; - } - for (let key2 of (await packedMap).keys()) { - if (key2.startsWith(filepath)) { - key2 = key2.replace(filepath + "/", ""); - if (!files.includes(key2)) { - files.push(key2); - } - } - } - files.sort(compareRefNames); - return files; - } - static async listBranches({ fs, gitdir, remote }) { - if (remote) { - return _GitRefManager.listRefs({ - fs, - gitdir, - filepath: `refs/remotes/${remote}` - }); - } else { - return _GitRefManager.listRefs({ fs, gitdir, filepath: `refs/heads` }); - } - } - static async listTags({ fs, gitdir }) { - const tags = await _GitRefManager.listRefs({ - fs, - gitdir, - filepath: `refs/tags` - }); - return tags.filter((x) => !x.endsWith("^{}")); - } -}; -function compareTreeEntryPath(a, b) { - return compareStrings(appendSlashIfDir(a), appendSlashIfDir(b)); -} -function appendSlashIfDir(entry) { - return entry.mode === "040000" ? entry.path + "/" : entry.path; -} -function mode2type$1(mode) { - switch (mode) { - case "040000": - return "tree"; - case "100644": - return "blob"; - case "100755": - return "blob"; - case "120000": - return "blob"; - case "160000": - return "commit"; - } - throw new InternalError(`Unexpected GitTree entry mode: ${mode}`); -} -function parseBuffer(buffer2) { - const _entries = []; - let cursor = 0; - while (cursor < buffer2.length) { - const space2 = buffer2.indexOf(32, cursor); - if (space2 === -1) { - throw new InternalError( - `GitTree: Error parsing buffer at byte location ${cursor}: Could not find the next space character.` - ); - } - const nullchar = buffer2.indexOf(0, cursor); - if (nullchar === -1) { - throw new InternalError( - `GitTree: Error parsing buffer at byte location ${cursor}: Could not find the next null character.` - ); - } - let mode = buffer2.slice(cursor, space2).toString("utf8"); - if (mode === "40000") - mode = "040000"; - const type = mode2type$1(mode); - const path2 = buffer2.slice(space2 + 1, nullchar).toString("utf8"); - if (path2.includes("\\") || path2.includes("/")) { - throw new UnsafeFilepathError(path2); - } - const oid = buffer2.slice(nullchar + 1, nullchar + 21).toString("hex"); - cursor = nullchar + 21; - _entries.push({ mode, path: path2, oid, type }); - } - return _entries; -} -function limitModeToAllowed(mode) { - if (typeof mode === "number") { - mode = mode.toString(8); - } - if (mode.match(/^0?4.*/)) - return "040000"; - if (mode.match(/^1006.*/)) - return "100644"; - if (mode.match(/^1007.*/)) - return "100755"; - if (mode.match(/^120.*/)) - return "120000"; - if (mode.match(/^160.*/)) - return "160000"; - throw new InternalError(`Could not understand file mode: ${mode}`); -} -function nudgeIntoShape(entry) { - if (!entry.oid && entry.sha) { - entry.oid = entry.sha; - } - entry.mode = limitModeToAllowed(entry.mode); - if (!entry.type) { - entry.type = mode2type$1(entry.mode); - } - return entry; -} -var GitTree = class _GitTree { - constructor(entries) { - if (Buffer.isBuffer(entries)) { - this._entries = parseBuffer(entries); - } else if (Array.isArray(entries)) { - this._entries = entries.map(nudgeIntoShape); - } else { - throw new InternalError("invalid type passed to GitTree constructor"); - } - this._entries.sort(comparePath); - } - static from(tree) { - return new _GitTree(tree); - } - render() { - return this._entries.map((entry) => `${entry.mode} ${entry.type} ${entry.oid} ${entry.path}`).join("\n"); - } - toObject() { - const entries = [...this._entries]; - entries.sort(compareTreeEntryPath); - return Buffer.concat( - entries.map((entry) => { - const mode = Buffer.from(entry.mode.replace(/^0/, "")); - const space2 = Buffer.from(" "); - const path2 = Buffer.from(entry.path, "utf8"); - const nullchar = Buffer.from([0]); - const oid = Buffer.from(entry.oid, "hex"); - return Buffer.concat([mode, space2, path2, nullchar, oid]); - }) - ); - } - /** - * @returns {TreeEntry[]} - */ - entries() { - return this._entries; - } - *[Symbol.iterator]() { - for (const entry of this._entries) { - yield entry; - } - } -}; -var GitObject = class { - static wrap({ type, object }) { - return Buffer.concat([ - Buffer.from(`${type} ${object.byteLength.toString()}\0`), - Buffer.from(object) - ]); - } - static unwrap(buffer2) { - const s = buffer2.indexOf(32); - const i = buffer2.indexOf(0); - const type = buffer2.slice(0, s).toString("utf8"); - const length = buffer2.slice(s + 1, i).toString("utf8"); - const actualLength = buffer2.length - (i + 1); - if (parseInt(length) !== actualLength) { - throw new InternalError( - `Length mismatch: expected ${length} bytes but got ${actualLength} instead.` - ); - } - return { - type, - object: Buffer.from(buffer2.slice(i + 1)) - }; - } -}; -async function readObjectLoose({ fs, gitdir, oid }) { - const source = `objects/${oid.slice(0, 2)}/${oid.slice(2)}`; - const file = await fs.read(`${gitdir}/${source}`); - if (!file) { - return null; - } - return { object: file, format: "deflated", source }; -} -function applyDelta(delta, source) { - const reader = new BufferCursor(delta); - const sourceSize = readVarIntLE(reader); - if (sourceSize !== source.byteLength) { - throw new InternalError( - `applyDelta expected source buffer to be ${sourceSize} bytes but the provided buffer was ${source.length} bytes` - ); - } - const targetSize = readVarIntLE(reader); - let target; - const firstOp = readOp(reader, source); - if (firstOp.byteLength === targetSize) { - target = firstOp; - } else { - target = Buffer.alloc(targetSize); - const writer = new BufferCursor(target); - writer.copy(firstOp); - while (!reader.eof()) { - writer.copy(readOp(reader, source)); - } - const tell = writer.tell(); - if (targetSize !== tell) { - throw new InternalError( - `applyDelta expected target buffer to be ${targetSize} bytes but the resulting buffer was ${tell} bytes` - ); - } - } - return target; -} -function readVarIntLE(reader) { - let result = 0; - let shift = 0; - let byte = null; - do { - byte = reader.readUInt8(); - result |= (byte & 127) << shift; - shift += 7; - } while (byte & 128); - return result; -} -function readCompactLE(reader, flags, size) { - let result = 0; - let shift = 0; - while (size--) { - if (flags & 1) { - result |= reader.readUInt8() << shift; - } - flags >>= 1; - shift += 8; - } - return result; -} -function readOp(reader, source) { - const byte = reader.readUInt8(); - const COPY = 128; - const OFFS = 15; - const SIZE = 112; - if (byte & COPY) { - const offset = readCompactLE(reader, byte & OFFS, 4); - let size = readCompactLE(reader, (byte & SIZE) >> 4, 3); - if (size === 0) - size = 65536; - return source.slice(offset, offset + size); - } else { - return reader.slice(byte); - } -} -function fromValue(value) { - let queue = [value]; - return { - next() { - return Promise.resolve({ done: queue.length === 0, value: queue.pop() }); - }, - return() { - queue = []; - return {}; - }, - [Symbol.asyncIterator]() { - return this; - } - }; -} -function getIterator(iterable) { - if (iterable[Symbol.asyncIterator]) { - return iterable[Symbol.asyncIterator](); - } - if (iterable[Symbol.iterator]) { - return iterable[Symbol.iterator](); - } - if (iterable.next) { - return iterable; - } - return fromValue(iterable); -} -var StreamReader = class { - constructor(stream) { - this.stream = getIterator(stream); - this.buffer = null; - this.cursor = 0; - this.undoCursor = 0; - this.started = false; - this._ended = false; - this._discardedBytes = 0; - } - eof() { - return this._ended && this.cursor === this.buffer.length; - } - tell() { - return this._discardedBytes + this.cursor; - } - async byte() { - if (this.eof()) - return; - if (!this.started) - await this._init(); - if (this.cursor === this.buffer.length) { - await this._loadnext(); - if (this._ended) - return; - } - this._moveCursor(1); - return this.buffer[this.undoCursor]; - } - async chunk() { - if (this.eof()) - return; - if (!this.started) - await this._init(); - if (this.cursor === this.buffer.length) { - await this._loadnext(); - if (this._ended) - return; - } - this._moveCursor(this.buffer.length); - return this.buffer.slice(this.undoCursor, this.cursor); - } - async read(n) { - if (this.eof()) - return; - if (!this.started) - await this._init(); - if (this.cursor + n > this.buffer.length) { - this._trim(); - await this._accumulate(n); - } - this._moveCursor(n); - return this.buffer.slice(this.undoCursor, this.cursor); - } - async skip(n) { - if (this.eof()) - return; - if (!this.started) - await this._init(); - if (this.cursor + n > this.buffer.length) { - this._trim(); - await this._accumulate(n); - } - this._moveCursor(n); - } - async undo() { - this.cursor = this.undoCursor; - } - async _next() { - this.started = true; - let { done, value } = await this.stream.next(); - if (done) { - this._ended = true; - if (!value) - return Buffer.alloc(0); - } - if (value) { - value = Buffer.from(value); - } - return value; - } - _trim() { - this.buffer = this.buffer.slice(this.undoCursor); - this.cursor -= this.undoCursor; - this._discardedBytes += this.undoCursor; - this.undoCursor = 0; - } - _moveCursor(n) { - this.undoCursor = this.cursor; - this.cursor += n; - if (this.cursor > this.buffer.length) { - this.cursor = this.buffer.length; - } - } - async _accumulate(n) { - if (this._ended) - return; - const buffers = [this.buffer]; - while (this.cursor + n > lengthBuffers(buffers)) { - const nextbuffer = await this._next(); - if (this._ended) - break; - buffers.push(nextbuffer); - } - this.buffer = Buffer.concat(buffers); - } - async _loadnext() { - this._discardedBytes += this.buffer.length; - this.undoCursor = 0; - this.cursor = 0; - this.buffer = await this._next(); - } - async _init() { - this.buffer = await this._next(); - } -}; -function lengthBuffers(buffers) { - return buffers.reduce((acc, buffer2) => acc + buffer2.length, 0); -} -async function listpack(stream, onData) { - const reader = new StreamReader(stream); - let PACK = await reader.read(4); - PACK = PACK.toString("utf8"); - if (PACK !== "PACK") { - throw new InternalError(`Invalid PACK header '${PACK}'`); - } - let version2 = await reader.read(4); - version2 = version2.readUInt32BE(0); - if (version2 !== 2) { - throw new InternalError(`Invalid packfile version: ${version2}`); - } - let numObjects = await reader.read(4); - numObjects = numObjects.readUInt32BE(0); - if (numObjects < 1) - return; - while (!reader.eof() && numObjects--) { - const offset = reader.tell(); - const { type, length, ofs, reference } = await parseHeader(reader); - const inflator = new import_pako.default.Inflate(); - while (!inflator.result) { - const chunk = await reader.chunk(); - if (!chunk) - break; - inflator.push(chunk, false); - if (inflator.err) { - throw new InternalError(`Pako error: ${inflator.msg}`); - } - if (inflator.result) { - if (inflator.result.length !== length) { - throw new InternalError( - `Inflated object size is different from that stated in packfile.` - ); - } - await reader.undo(); - await reader.read(chunk.length - inflator.strm.avail_in); - const end = reader.tell(); - await onData({ - data: inflator.result, - type, - num: numObjects, - offset, - end, - reference, - ofs - }); - } - } - } -} -async function parseHeader(reader) { - let byte = await reader.byte(); - const type = byte >> 4 & 7; - let length = byte & 15; - if (byte & 128) { - let shift = 4; - do { - byte = await reader.byte(); - length |= (byte & 127) << shift; - shift += 7; - } while (byte & 128); - } - let ofs; - let reference; - if (type === 6) { - let shift = 0; - ofs = 0; - const bytes = []; - do { - byte = await reader.byte(); - ofs |= (byte & 127) << shift; - shift += 7; - bytes.push(byte); - } while (byte & 128); - reference = Buffer.from(bytes); - } - if (type === 7) { - const buf = await reader.read(20); - reference = buf; - } - return { type, length, ofs, reference }; -} -var supportsDecompressionStream = false; -async function inflate(buffer2) { - if (supportsDecompressionStream === null) { - supportsDecompressionStream = testDecompressionStream(); - } - return supportsDecompressionStream ? browserInflate(buffer2) : import_pako.default.inflate(buffer2); -} -async function browserInflate(buffer2) { - const ds = new DecompressionStream("deflate"); - const d = new Blob([buffer2]).stream().pipeThrough(ds); - return new Uint8Array(await new Response(d).arrayBuffer()); -} -function testDecompressionStream() { - try { - const ds = new DecompressionStream("deflate"); - if (ds) - return true; - } catch (_) { - } - return false; -} -function decodeVarInt(reader) { - const bytes = []; - let byte = 0; - let multibyte = 0; - do { - byte = reader.readUInt8(); - const lastSeven = byte & 127; - bytes.push(lastSeven); - multibyte = byte & 128; - } while (multibyte); - return bytes.reduce((a, b) => a + 1 << 7 | b, -1); -} -function otherVarIntDecode(reader, startWith) { - let result = startWith; - let shift = 4; - let byte = null; - do { - byte = reader.readUInt8(); - result |= (byte & 127) << shift; - shift += 7; - } while (byte & 128); - return result; -} -var GitPackIndex = class _GitPackIndex { - constructor(stuff) { - Object.assign(this, stuff); - this.offsetCache = {}; - } - static async fromIdx({ idx, getExternalRefDelta }) { - const reader = new BufferCursor(idx); - const magic = reader.slice(4).toString("hex"); - if (magic !== "ff744f63") { - return; - } - const version2 = reader.readUInt32BE(); - if (version2 !== 2) { - throw new InternalError( - `Unable to read version ${version2} packfile IDX. (Only version 2 supported)` - ); - } - if (idx.byteLength > 2048 * 1024 * 1024) { - throw new InternalError( - `To keep implementation simple, I haven't implemented the layer 5 feature needed to support packfiles > 2GB in size.` - ); - } - reader.seek(reader.tell() + 4 * 255); - const size = reader.readUInt32BE(); - const hashes = []; - for (let i = 0; i < size; i++) { - const hash2 = reader.slice(20).toString("hex"); - hashes[i] = hash2; - } - reader.seek(reader.tell() + 4 * size); - const offsets = /* @__PURE__ */ new Map(); - for (let i = 0; i < size; i++) { - offsets.set(hashes[i], reader.readUInt32BE()); - } - const packfileSha = reader.slice(20).toString("hex"); - return new _GitPackIndex({ - hashes, - crcs: {}, - offsets, - packfileSha, - getExternalRefDelta - }); - } - static async fromPack({ pack, getExternalRefDelta, onProgress }) { - const listpackTypes = { - 1: "commit", - 2: "tree", - 3: "blob", - 4: "tag", - 6: "ofs-delta", - 7: "ref-delta" - }; - const offsetToObject = {}; - const packfileSha = pack.slice(-20).toString("hex"); - const hashes = []; - const crcs = {}; - const offsets = /* @__PURE__ */ new Map(); - let totalObjectCount = null; - let lastPercent = null; - await listpack([pack], async ({ data, type, reference, offset, num: num2 }) => { - if (totalObjectCount === null) - totalObjectCount = num2; - const percent = Math.floor( - (totalObjectCount - num2) * 100 / totalObjectCount - ); - if (percent !== lastPercent) { - if (onProgress) { - await onProgress({ - phase: "Receiving objects", - loaded: totalObjectCount - num2, - total: totalObjectCount - }); - } - } - lastPercent = percent; - type = listpackTypes[type]; - if (["commit", "tree", "blob", "tag"].includes(type)) { - offsetToObject[offset] = { - type, - offset - }; - } else if (type === "ofs-delta") { - offsetToObject[offset] = { - type, - offset - }; - } else if (type === "ref-delta") { - offsetToObject[offset] = { - type, - offset - }; - } - }); - const offsetArray = Object.keys(offsetToObject).map(Number); - for (const [i, start] of offsetArray.entries()) { - const end = i + 1 === offsetArray.length ? pack.byteLength - 20 : offsetArray[i + 1]; - const o = offsetToObject[start]; - const crc = import_crc_32.default.buf(pack.slice(start, end)) >>> 0; - o.end = end; - o.crc = crc; - } - const p = new _GitPackIndex({ - pack: Promise.resolve(pack), - packfileSha, - crcs, - hashes, - offsets, - getExternalRefDelta - }); - lastPercent = null; - let count = 0; - const objectsByDepth = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; - for (let offset in offsetToObject) { - offset = Number(offset); - const percent = Math.floor(count * 100 / totalObjectCount); - if (percent !== lastPercent) { - if (onProgress) { - await onProgress({ - phase: "Resolving deltas", - loaded: count, - total: totalObjectCount - }); - } - } - count++; - lastPercent = percent; - const o = offsetToObject[offset]; - if (o.oid) - continue; - try { - p.readDepth = 0; - p.externalReadDepth = 0; - const { type, object } = await p.readSlice({ start: offset }); - objectsByDepth[p.readDepth] += 1; - const oid = await shasum(GitObject.wrap({ type, object })); - o.oid = oid; - hashes.push(oid); - offsets.set(oid, offset); - crcs[oid] = o.crc; - } catch (err) { - continue; - } - } - hashes.sort(); - return p; - } - async toBuffer() { - const buffers = []; - const write = (str, encoding) => { - buffers.push(Buffer.from(str, encoding)); - }; - write("ff744f63", "hex"); - write("00000002", "hex"); - const fanoutBuffer = new BufferCursor(Buffer.alloc(256 * 4)); - for (let i = 0; i < 256; i++) { - let count = 0; - for (const hash2 of this.hashes) { - if (parseInt(hash2.slice(0, 2), 16) <= i) - count++; - } - fanoutBuffer.writeUInt32BE(count); - } - buffers.push(fanoutBuffer.buffer); - for (const hash2 of this.hashes) { - write(hash2, "hex"); - } - const crcsBuffer = new BufferCursor(Buffer.alloc(this.hashes.length * 4)); - for (const hash2 of this.hashes) { - crcsBuffer.writeUInt32BE(this.crcs[hash2]); - } - buffers.push(crcsBuffer.buffer); - const offsetsBuffer = new BufferCursor(Buffer.alloc(this.hashes.length * 4)); - for (const hash2 of this.hashes) { - offsetsBuffer.writeUInt32BE(this.offsets.get(hash2)); - } - buffers.push(offsetsBuffer.buffer); - write(this.packfileSha, "hex"); - const totalBuffer = Buffer.concat(buffers); - const sha = await shasum(totalBuffer); - const shaBuffer = Buffer.alloc(20); - shaBuffer.write(sha, "hex"); - return Buffer.concat([totalBuffer, shaBuffer]); - } - async load({ pack }) { - this.pack = pack; - } - async unload() { - this.pack = null; - } - async read({ oid }) { - if (!this.offsets.get(oid)) { - if (this.getExternalRefDelta) { - this.externalReadDepth++; - return this.getExternalRefDelta(oid); - } else { - throw new InternalError(`Could not read object ${oid} from packfile`); - } - } - const start = this.offsets.get(oid); - return this.readSlice({ start }); - } - async readSlice({ start }) { - if (this.offsetCache[start]) { - return Object.assign({}, this.offsetCache[start]); - } - this.readDepth++; - const types2 = { - 16: "commit", - 32: "tree", - 48: "blob", - 64: "tag", - 96: "ofs_delta", - 112: "ref_delta" - }; - if (!this.pack) { - throw new InternalError( - "Tried to read from a GitPackIndex with no packfile loaded into memory" - ); - } - const raw = (await this.pack).slice(start); - const reader = new BufferCursor(raw); - const byte = reader.readUInt8(); - const btype = byte & 112; - let type = types2[btype]; - if (type === void 0) { - throw new InternalError("Unrecognized type: 0b" + btype.toString(2)); - } - const lastFour = byte & 15; - let length = lastFour; - const multibyte = byte & 128; - if (multibyte) { - length = otherVarIntDecode(reader, lastFour); - } - let base = null; - let object = null; - if (type === "ofs_delta") { - const offset = decodeVarInt(reader); - const baseOffset = start - offset; - ({ object: base, type } = await this.readSlice({ start: baseOffset })); - } - if (type === "ref_delta") { - const oid = reader.slice(20).toString("hex"); - ({ object: base, type } = await this.read({ oid })); - } - const buffer2 = raw.slice(reader.tell()); - object = Buffer.from(await inflate(buffer2)); - if (object.byteLength !== length) { - throw new InternalError( - `Packfile told us object would have length ${length} but it had length ${object.byteLength}` - ); - } - if (base) { - object = Buffer.from(applyDelta(object, base)); - } - if (this.readDepth > 3) { - this.offsetCache[start] = { type, object }; - } - return { type, format: "content", object }; - } -}; -var PackfileCache = Symbol("PackfileCache"); -async function loadPackIndex({ - fs, - filename, - getExternalRefDelta, - emitter, - emitterPrefix -}) { - const idx = await fs.read(filename); - return GitPackIndex.fromIdx({ idx, getExternalRefDelta }); -} -function readPackIndex({ - fs, - cache, - filename, - getExternalRefDelta, - emitter, - emitterPrefix -}) { - if (!cache[PackfileCache]) - cache[PackfileCache] = /* @__PURE__ */ new Map(); - let p = cache[PackfileCache].get(filename); - if (!p) { - p = loadPackIndex({ - fs, - filename, - getExternalRefDelta, - emitter, - emitterPrefix - }); - cache[PackfileCache].set(filename, p); - } - return p; -} -async function readObjectPacked({ - fs, - cache, - gitdir, - oid, - format = "content", - getExternalRefDelta -}) { - let list = await fs.readdir(join(gitdir, "objects/pack")); - list = list.filter((x) => x.endsWith(".idx")); - for (const filename of list) { - const indexFile = `${gitdir}/objects/pack/${filename}`; - const p = await readPackIndex({ - fs, - cache, - filename: indexFile, - getExternalRefDelta - }); - if (p.error) - throw new InternalError(p.error); - if (p.offsets.has(oid)) { - if (!p.pack) { - const packFile = indexFile.replace(/idx$/, "pack"); - p.pack = fs.read(packFile); - } - const result = await p.read({ oid, getExternalRefDelta }); - result.format = "content"; - result.source = `objects/pack/${filename.replace(/idx$/, "pack")}`; - return result; - } - } - return null; -} -async function _readObject({ - fs, - cache, - gitdir, - oid, - format = "content" -}) { - const getExternalRefDelta = (oid2) => _readObject({ fs, cache, gitdir, oid: oid2 }); - let result; - if (oid === "4b825dc642cb6eb9a060e54bf8d69288fbee4904") { - result = { format: "wrapped", object: Buffer.from(`tree 0\0`) }; - } - if (!result) { - result = await readObjectLoose({ fs, gitdir, oid }); - } - if (!result) { - result = await readObjectPacked({ - fs, - cache, - gitdir, - oid, - getExternalRefDelta - }); - } - if (!result) { - throw new NotFoundError(oid); - } - if (format === "deflated") { - return result; - } - if (result.format === "deflated") { - result.object = Buffer.from(await inflate(result.object)); - result.format = "wrapped"; - } - if (result.format === "wrapped") { - if (format === "wrapped" && result.format === "wrapped") { - return result; - } - const sha = await shasum(result.object); - if (sha !== oid) { - throw new InternalError( - `SHA check failed! Expected ${oid}, computed ${sha}` - ); - } - const { object, type } = GitObject.unwrap(result.object); - result.type = type; - result.object = object; - result.format = "content"; - } - if (result.format === "content") { - if (format === "content") - return result; - return; - } - throw new InternalError(`invalid format "${result.format}"`); -} -var AlreadyExistsError = class _AlreadyExistsError extends BaseError { - /** - * @param {'note'|'remote'|'tag'|'branch'} noun - * @param {string} where - * @param {boolean} canForce - */ - constructor(noun, where, canForce = true) { - super( - `Failed to create ${noun} at ${where} because it already exists.${canForce ? ` (Hint: use 'force: true' parameter to overwrite existing ${noun}.)` : ""}` - ); - this.code = this.name = _AlreadyExistsError.code; - this.data = { noun, where, canForce }; - } -}; -AlreadyExistsError.code = "AlreadyExistsError"; -var AmbiguousError = class _AmbiguousError extends BaseError { - /** - * @param {'oids'|'refs'} nouns - * @param {string} short - * @param {string[]} matches - */ - constructor(nouns, short, matches) { - super( - `Found multiple ${nouns} matching "${short}" (${matches.join( - ", " - )}). Use a longer abbreviation length to disambiguate them.` - ); - this.code = this.name = _AmbiguousError.code; - this.data = { nouns, short, matches }; - } -}; -AmbiguousError.code = "AmbiguousError"; -var CheckoutConflictError = class _CheckoutConflictError extends BaseError { - /** - * @param {string[]} filepaths - */ - constructor(filepaths) { - super( - `Your local changes to the following files would be overwritten by checkout: ${filepaths.join( - ", " - )}` - ); - this.code = this.name = _CheckoutConflictError.code; - this.data = { filepaths }; - } -}; -CheckoutConflictError.code = "CheckoutConflictError"; -var CommitNotFetchedError = class _CommitNotFetchedError extends BaseError { - /** - * @param {string} ref - * @param {string} oid - */ - constructor(ref, oid) { - super( - `Failed to checkout "${ref}" because commit ${oid} is not available locally. Do a git fetch to make the branch available locally.` - ); - this.code = this.name = _CommitNotFetchedError.code; - this.data = { ref, oid }; - } -}; -CommitNotFetchedError.code = "CommitNotFetchedError"; -var EmptyServerResponseError = class _EmptyServerResponseError extends BaseError { - constructor() { - super(`Empty response from git server.`); - this.code = this.name = _EmptyServerResponseError.code; - this.data = {}; - } -}; -EmptyServerResponseError.code = "EmptyServerResponseError"; -var FastForwardError = class _FastForwardError extends BaseError { - constructor() { - super(`A simple fast-forward merge was not possible.`); - this.code = this.name = _FastForwardError.code; - this.data = {}; - } -}; -FastForwardError.code = "FastForwardError"; -var GitPushError = class _GitPushError extends BaseError { - /** - * @param {string} prettyDetails - * @param {PushResult} result - */ - constructor(prettyDetails, result) { - super(`One or more branches were not updated: ${prettyDetails}`); - this.code = this.name = _GitPushError.code; - this.data = { prettyDetails, result }; - } -}; -GitPushError.code = "GitPushError"; -var HttpError = class _HttpError extends BaseError { - /** - * @param {number} statusCode - * @param {string} statusMessage - * @param {string} response - */ - constructor(statusCode, statusMessage, response) { - super(`HTTP Error: ${statusCode} ${statusMessage}`); - this.code = this.name = _HttpError.code; - this.data = { statusCode, statusMessage, response }; - } -}; -HttpError.code = "HttpError"; -var InvalidFilepathError = class _InvalidFilepathError extends BaseError { - /** - * @param {'leading-slash'|'trailing-slash'|'directory'} [reason] - */ - constructor(reason) { - let message = "invalid filepath"; - if (reason === "leading-slash" || reason === "trailing-slash") { - message = `"filepath" parameter should not include leading or trailing directory separators because these can cause problems on some platforms.`; - } else if (reason === "directory") { - message = `"filepath" should not be a directory.`; - } - super(message); - this.code = this.name = _InvalidFilepathError.code; - this.data = { reason }; - } -}; -InvalidFilepathError.code = "InvalidFilepathError"; -var InvalidRefNameError = class _InvalidRefNameError extends BaseError { - /** - * @param {string} ref - * @param {string} suggestion - * @param {boolean} canForce - */ - constructor(ref, suggestion) { - super( - `"${ref}" would be an invalid git reference. (Hint: a valid alternative would be "${suggestion}".)` - ); - this.code = this.name = _InvalidRefNameError.code; - this.data = { ref, suggestion }; - } -}; -InvalidRefNameError.code = "InvalidRefNameError"; -var MaxDepthError = class _MaxDepthError extends BaseError { - /** - * @param {number} depth - */ - constructor(depth) { - super(`Maximum search depth of ${depth} exceeded.`); - this.code = this.name = _MaxDepthError.code; - this.data = { depth }; - } -}; -MaxDepthError.code = "MaxDepthError"; -var MergeNotSupportedError = class _MergeNotSupportedError extends BaseError { - constructor() { - super(`Merges with conflicts are not supported yet.`); - this.code = this.name = _MergeNotSupportedError.code; - this.data = {}; - } -}; -MergeNotSupportedError.code = "MergeNotSupportedError"; -var MergeConflictError = class _MergeConflictError extends BaseError { - /** - * @param {Array} filepaths - * @param {Array} bothModified - * @param {Array} deleteByUs - * @param {Array} deleteByTheirs - */ - constructor(filepaths, bothModified, deleteByUs, deleteByTheirs) { - super( - `Automatic merge failed with one or more merge conflicts in the following files: ${filepaths.toString()}. Fix conflicts then commit the result.` - ); - this.code = this.name = _MergeConflictError.code; - this.data = { filepaths, bothModified, deleteByUs, deleteByTheirs }; - } -}; -MergeConflictError.code = "MergeConflictError"; -var MissingNameError = class _MissingNameError extends BaseError { - /** - * @param {'author'|'committer'|'tagger'} role - */ - constructor(role) { - super( - `No name was provided for ${role} in the argument or in the .git/config file.` - ); - this.code = this.name = _MissingNameError.code; - this.data = { role }; - } -}; -MissingNameError.code = "MissingNameError"; -var MissingParameterError = class _MissingParameterError extends BaseError { - /** - * @param {string} parameter - */ - constructor(parameter) { - super( - `The function requires a "${parameter}" parameter but none was provided.` - ); - this.code = this.name = _MissingParameterError.code; - this.data = { parameter }; - } -}; -MissingParameterError.code = "MissingParameterError"; -var MultipleGitError = class _MultipleGitError extends BaseError { - /** - * @param {Error[]} errors - * @param {string} message - */ - constructor(errors) { - super( - `There are multiple errors that were thrown by the method. Please refer to the "errors" property to see more` - ); - this.code = this.name = _MultipleGitError.code; - this.data = { errors }; - this.errors = errors; - } -}; -MultipleGitError.code = "MultipleGitError"; -var ParseError = class _ParseError extends BaseError { - /** - * @param {string} expected - * @param {string} actual - */ - constructor(expected, actual) { - super(`Expected "${expected}" but received "${actual}".`); - this.code = this.name = _ParseError.code; - this.data = { expected, actual }; - } -}; -ParseError.code = "ParseError"; -var PushRejectedError = class _PushRejectedError extends BaseError { - /** - * @param {'not-fast-forward'|'tag-exists'} reason - */ - constructor(reason) { - let message = ""; - if (reason === "not-fast-forward") { - message = " because it was not a simple fast-forward"; - } else if (reason === "tag-exists") { - message = " because tag already exists"; - } - super(`Push rejected${message}. Use "force: true" to override.`); - this.code = this.name = _PushRejectedError.code; - this.data = { reason }; - } -}; -PushRejectedError.code = "PushRejectedError"; -var RemoteCapabilityError = class _RemoteCapabilityError extends BaseError { - /** - * @param {'shallow'|'deepen-since'|'deepen-not'|'deepen-relative'} capability - * @param {'depth'|'since'|'exclude'|'relative'} parameter - */ - constructor(capability, parameter) { - super( - `Remote does not support the "${capability}" so the "${parameter}" parameter cannot be used.` - ); - this.code = this.name = _RemoteCapabilityError.code; - this.data = { capability, parameter }; - } -}; -RemoteCapabilityError.code = "RemoteCapabilityError"; -var SmartHttpError = class _SmartHttpError extends BaseError { - /** - * @param {string} preview - * @param {string} response - */ - constructor(preview, response) { - super( - `Remote did not reply using the "smart" HTTP protocol. Expected "001e# service=git-upload-pack" but received: ${preview}` - ); - this.code = this.name = _SmartHttpError.code; - this.data = { preview, response }; - } -}; -SmartHttpError.code = "SmartHttpError"; -var UnknownTransportError = class _UnknownTransportError extends BaseError { - /** - * @param {string} url - * @param {string} transport - * @param {string} [suggestion] - */ - constructor(url, transport, suggestion) { - super( - `Git remote "${url}" uses an unrecognized transport protocol: "${transport}"` - ); - this.code = this.name = _UnknownTransportError.code; - this.data = { url, transport, suggestion }; - } -}; -UnknownTransportError.code = "UnknownTransportError"; -var UrlParseError = class _UrlParseError extends BaseError { - /** - * @param {string} url - */ - constructor(url) { - super(`Cannot parse remote URL: "${url}"`); - this.code = this.name = _UrlParseError.code; - this.data = { url }; - } -}; -UrlParseError.code = "UrlParseError"; -var UserCanceledError = class _UserCanceledError extends BaseError { - constructor() { - super(`The operation was canceled.`); - this.code = this.name = _UserCanceledError.code; - this.data = {}; - } -}; -UserCanceledError.code = "UserCanceledError"; -var IndexResetError = class _IndexResetError extends BaseError { - /** - * @param {Array} filepaths - */ - constructor(filepath) { - super( - `Could not merge index: Entry for '${filepath}' is not up to date. Either reset the index entry to HEAD, or stage your unstaged chages.` - ); - this.code = this.name = _IndexResetError.code; - this.data = { filepath }; - } -}; -IndexResetError.code = "IndexResetError"; -var Errors = /* @__PURE__ */ Object.freeze({ - __proto__: null, - AlreadyExistsError, - AmbiguousError, - CheckoutConflictError, - CommitNotFetchedError, - EmptyServerResponseError, - FastForwardError, - GitPushError, - HttpError, - InternalError, - InvalidFilepathError, - InvalidOidError, - InvalidRefNameError, - MaxDepthError, - MergeNotSupportedError, - MergeConflictError, - MissingNameError, - MissingParameterError, - MultipleGitError, - NoRefspecError, - NotFoundError, - ObjectTypeError, - ParseError, - PushRejectedError, - RemoteCapabilityError, - SmartHttpError, - UnknownTransportError, - UnsafeFilepathError, - UrlParseError, - UserCanceledError, - UnmergedPathsError, - IndexResetError -}); -function formatAuthor({ name, email, timestamp, timezoneOffset }) { - timezoneOffset = formatTimezoneOffset(timezoneOffset); - return `${name} <${email}> ${timestamp} ${timezoneOffset}`; -} -function formatTimezoneOffset(minutes) { - const sign = simpleSign(negateExceptForZero(minutes)); - minutes = Math.abs(minutes); - const hours = Math.floor(minutes / 60); - minutes -= hours * 60; - let strHours = String(hours); - let strMinutes = String(minutes); - if (strHours.length < 2) - strHours = "0" + strHours; - if (strMinutes.length < 2) - strMinutes = "0" + strMinutes; - return (sign === -1 ? "-" : "+") + strHours + strMinutes; -} -function simpleSign(n) { - return Math.sign(n) || (Object.is(n, -0) ? -1 : 1); -} -function negateExceptForZero(n) { - return n === 0 ? n : -n; -} -function normalizeNewlines(str) { - str = str.replace(/\r/g, ""); - str = str.replace(/^\n+/, ""); - str = str.replace(/\n+$/, "") + "\n"; - return str; -} -function parseAuthor(author) { - const [, name, email, timestamp, offset] = author.match( - /^(.*) <(.*)> (.*) (.*)$/ - ); - return { - name, - email, - timestamp: Number(timestamp), - timezoneOffset: parseTimezoneOffset(offset) - }; -} -function parseTimezoneOffset(offset) { - let [, sign, hours, minutes] = offset.match(/(\+|-)(\d\d)(\d\d)/); - minutes = (sign === "+" ? 1 : -1) * (Number(hours) * 60 + Number(minutes)); - return negateExceptForZero$1(minutes); -} -function negateExceptForZero$1(n) { - return n === 0 ? n : -n; -} -var GitAnnotatedTag = class _GitAnnotatedTag { - constructor(tag2) { - if (typeof tag2 === "string") { - this._tag = tag2; - } else if (Buffer.isBuffer(tag2)) { - this._tag = tag2.toString("utf8"); - } else if (typeof tag2 === "object") { - this._tag = _GitAnnotatedTag.render(tag2); - } else { - throw new InternalError( - "invalid type passed to GitAnnotatedTag constructor" - ); - } - } - static from(tag2) { - return new _GitAnnotatedTag(tag2); - } - static render(obj) { - return `object ${obj.object} -type ${obj.type} -tag ${obj.tag} -tagger ${formatAuthor(obj.tagger)} - -${obj.message} -${obj.gpgsig ? obj.gpgsig : ""}`; - } - justHeaders() { - return this._tag.slice(0, this._tag.indexOf("\n\n")); - } - message() { - const tag2 = this.withoutSignature(); - return tag2.slice(tag2.indexOf("\n\n") + 2); - } - parse() { - return Object.assign(this.headers(), { - message: this.message(), - gpgsig: this.gpgsig() - }); - } - render() { - return this._tag; - } - headers() { - const headers = this.justHeaders().split("\n"); - const hs = []; - for (const h of headers) { - if (h[0] === " ") { - hs[hs.length - 1] += "\n" + h.slice(1); - } else { - hs.push(h); - } - } - const obj = {}; - for (const h of hs) { - const key2 = h.slice(0, h.indexOf(" ")); - const value = h.slice(h.indexOf(" ") + 1); - if (Array.isArray(obj[key2])) { - obj[key2].push(value); - } else { - obj[key2] = value; - } - } - if (obj.tagger) { - obj.tagger = parseAuthor(obj.tagger); - } - if (obj.committer) { - obj.committer = parseAuthor(obj.committer); - } - return obj; - } - withoutSignature() { - const tag2 = normalizeNewlines(this._tag); - if (tag2.indexOf("\n-----BEGIN PGP SIGNATURE-----") === -1) - return tag2; - return tag2.slice(0, tag2.lastIndexOf("\n-----BEGIN PGP SIGNATURE-----")); - } - gpgsig() { - if (this._tag.indexOf("\n-----BEGIN PGP SIGNATURE-----") === -1) - return; - const signature = this._tag.slice( - this._tag.indexOf("-----BEGIN PGP SIGNATURE-----"), - this._tag.indexOf("-----END PGP SIGNATURE-----") + "-----END PGP SIGNATURE-----".length - ); - return normalizeNewlines(signature); - } - payload() { - return this.withoutSignature() + "\n"; - } - toObject() { - return Buffer.from(this._tag, "utf8"); - } - static async sign(tag2, sign, secretKey) { - const payload = tag2.payload(); - let { signature } = await sign({ payload, secretKey }); - signature = normalizeNewlines(signature); - const signedTag = payload + signature; - return _GitAnnotatedTag.from(signedTag); - } -}; -function indent(str) { - return str.trim().split("\n").map((x) => " " + x).join("\n") + "\n"; -} -function outdent(str) { - return str.split("\n").map((x) => x.replace(/^ /, "")).join("\n"); -} -var GitCommit = class _GitCommit { - constructor(commit2) { - if (typeof commit2 === "string") { - this._commit = commit2; - } else if (Buffer.isBuffer(commit2)) { - this._commit = commit2.toString("utf8"); - } else if (typeof commit2 === "object") { - this._commit = _GitCommit.render(commit2); - } else { - throw new InternalError("invalid type passed to GitCommit constructor"); - } - } - static fromPayloadSignature({ payload, signature }) { - const headers = _GitCommit.justHeaders(payload); - const message = _GitCommit.justMessage(payload); - const commit2 = normalizeNewlines( - headers + "\ngpgsig" + indent(signature) + "\n" + message - ); - return new _GitCommit(commit2); - } - static from(commit2) { - return new _GitCommit(commit2); - } - toObject() { - return Buffer.from(this._commit, "utf8"); - } - // Todo: allow setting the headers and message - headers() { - return this.parseHeaders(); - } - // Todo: allow setting the headers and message - message() { - return _GitCommit.justMessage(this._commit); - } - parse() { - return Object.assign({ message: this.message() }, this.headers()); - } - static justMessage(commit2) { - return normalizeNewlines(commit2.slice(commit2.indexOf("\n\n") + 2)); - } - static justHeaders(commit2) { - return commit2.slice(0, commit2.indexOf("\n\n")); - } - parseHeaders() { - const headers = _GitCommit.justHeaders(this._commit).split("\n"); - const hs = []; - for (const h of headers) { - if (h[0] === " ") { - hs[hs.length - 1] += "\n" + h.slice(1); - } else { - hs.push(h); - } - } - const obj = { - parent: [] - }; - for (const h of hs) { - const key2 = h.slice(0, h.indexOf(" ")); - const value = h.slice(h.indexOf(" ") + 1); - if (Array.isArray(obj[key2])) { - obj[key2].push(value); - } else { - obj[key2] = value; - } - } - if (obj.author) { - obj.author = parseAuthor(obj.author); - } - if (obj.committer) { - obj.committer = parseAuthor(obj.committer); - } - return obj; - } - static renderHeaders(obj) { - let headers = ""; - if (obj.tree) { - headers += `tree ${obj.tree} -`; - } else { - headers += `tree 4b825dc642cb6eb9a060e54bf8d69288fbee4904 -`; - } - if (obj.parent) { - if (obj.parent.length === void 0) { - throw new InternalError(`commit 'parent' property should be an array`); - } - for (const p of obj.parent) { - headers += `parent ${p} -`; - } - } - const author = obj.author; - headers += `author ${formatAuthor(author)} -`; - const committer = obj.committer || obj.author; - headers += `committer ${formatAuthor(committer)} -`; - if (obj.gpgsig) { - headers += "gpgsig" + indent(obj.gpgsig); - } - return headers; - } - static render(obj) { - return _GitCommit.renderHeaders(obj) + "\n" + normalizeNewlines(obj.message); - } - render() { - return this._commit; - } - withoutSignature() { - const commit2 = normalizeNewlines(this._commit); - if (commit2.indexOf("\ngpgsig") === -1) - return commit2; - const headers = commit2.slice(0, commit2.indexOf("\ngpgsig")); - const message = commit2.slice( - commit2.indexOf("-----END PGP SIGNATURE-----\n") + "-----END PGP SIGNATURE-----\n".length - ); - return normalizeNewlines(headers + "\n" + message); - } - isolateSignature() { - const signature = this._commit.slice( - this._commit.indexOf("-----BEGIN PGP SIGNATURE-----"), - this._commit.indexOf("-----END PGP SIGNATURE-----") + "-----END PGP SIGNATURE-----".length - ); - return outdent(signature); - } - static async sign(commit2, sign, secretKey) { - const payload = commit2.withoutSignature(); - const message = _GitCommit.justMessage(commit2._commit); - let { signature } = await sign({ payload, secretKey }); - signature = normalizeNewlines(signature); - const headers = _GitCommit.justHeaders(commit2._commit); - const signedCommit = headers + "\ngpgsig" + indent(signature) + "\n" + message; - return _GitCommit.from(signedCommit); - } -}; -async function resolveTree({ fs, cache, gitdir, oid }) { - if (oid === "4b825dc642cb6eb9a060e54bf8d69288fbee4904") { - return { tree: GitTree.from([]), oid }; - } - const { type, object } = await _readObject({ fs, cache, gitdir, oid }); - if (type === "tag") { - oid = GitAnnotatedTag.from(object).parse().object; - return resolveTree({ fs, cache, gitdir, oid }); - } - if (type === "commit") { - oid = GitCommit.from(object).parse().tree; - return resolveTree({ fs, cache, gitdir, oid }); - } - if (type !== "tree") { - throw new ObjectTypeError(oid, type, "tree"); - } - return { tree: GitTree.from(object), oid }; -} -var GitWalkerRepo = class { - constructor({ fs, gitdir, ref, cache }) { - this.fs = fs; - this.cache = cache; - this.gitdir = gitdir; - this.mapPromise = (async () => { - const map = /* @__PURE__ */ new Map(); - let oid; - try { - oid = await GitRefManager.resolve({ fs, gitdir, ref }); - } catch (e) { - if (e instanceof NotFoundError) { - oid = "4b825dc642cb6eb9a060e54bf8d69288fbee4904"; - } - } - const tree = await resolveTree({ fs, cache: this.cache, gitdir, oid }); - tree.type = "tree"; - tree.mode = "40000"; - map.set(".", tree); - return map; - })(); - const walker = this; - this.ConstructEntry = class TreeEntry { - constructor(fullpath) { - this._fullpath = fullpath; - this._type = false; - this._mode = false; - this._stat = false; - this._content = false; - this._oid = false; - } - async type() { - return walker.type(this); - } - async mode() { - return walker.mode(this); - } - async stat() { - return walker.stat(this); - } - async content() { - return walker.content(this); - } - async oid() { - return walker.oid(this); - } - }; - } - async readdir(entry) { - const filepath = entry._fullpath; - const { fs, cache, gitdir } = this; - const map = await this.mapPromise; - const obj = map.get(filepath); - if (!obj) - throw new Error(`No obj for ${filepath}`); - const oid = obj.oid; - if (!oid) - throw new Error(`No oid for obj ${JSON.stringify(obj)}`); - if (obj.type !== "tree") { - return null; - } - const { type, object } = await _readObject({ fs, cache, gitdir, oid }); - if (type !== obj.type) { - throw new ObjectTypeError(oid, type, obj.type); - } - const tree = GitTree.from(object); - for (const entry2 of tree) { - map.set(join(filepath, entry2.path), entry2); - } - return tree.entries().map((entry2) => join(filepath, entry2.path)); - } - async type(entry) { - if (entry._type === false) { - const map = await this.mapPromise; - const { type } = map.get(entry._fullpath); - entry._type = type; - } - return entry._type; - } - async mode(entry) { - if (entry._mode === false) { - const map = await this.mapPromise; - const { mode } = map.get(entry._fullpath); - entry._mode = normalizeMode(parseInt(mode, 8)); - } - return entry._mode; - } - async stat(_entry) { - } - async content(entry) { - if (entry._content === false) { - const map = await this.mapPromise; - const { fs, cache, gitdir } = this; - const obj = map.get(entry._fullpath); - const oid = obj.oid; - const { type, object } = await _readObject({ fs, cache, gitdir, oid }); - if (type !== "blob") { - entry._content = void 0; - } else { - entry._content = new Uint8Array(object); - } - } - return entry._content; - } - async oid(entry) { - if (entry._oid === false) { - const map = await this.mapPromise; - const obj = map.get(entry._fullpath); - entry._oid = obj.oid; - } - return entry._oid; - } -}; -function TREE({ ref = "HEAD" } = {}) { - const o = /* @__PURE__ */ Object.create(null); - Object.defineProperty(o, GitWalkSymbol, { - value: function({ fs, gitdir, cache }) { - return new GitWalkerRepo({ fs, gitdir, ref, cache }); - } - }); - Object.freeze(o); - return o; -} -var GitWalkerFs = class { - constructor({ fs, dir, gitdir, cache }) { - this.fs = fs; - this.cache = cache; - this.dir = dir; - this.gitdir = gitdir; - const walker = this; - this.ConstructEntry = class WorkdirEntry { - constructor(fullpath) { - this._fullpath = fullpath; - this._type = false; - this._mode = false; - this._stat = false; - this._content = false; - this._oid = false; - } - async type() { - return walker.type(this); - } - async mode() { - return walker.mode(this); - } - async stat() { - return walker.stat(this); - } - async content() { - return walker.content(this); - } - async oid() { - return walker.oid(this); - } - }; - } - async readdir(entry) { - const filepath = entry._fullpath; - const { fs, dir } = this; - const names = await fs.readdir(join(dir, filepath)); - if (names === null) - return null; - return names.map((name) => join(filepath, name)); - } - async type(entry) { - if (entry._type === false) { - await entry.stat(); - } - return entry._type; - } - async mode(entry) { - if (entry._mode === false) { - await entry.stat(); - } - return entry._mode; - } - async stat(entry) { - if (entry._stat === false) { - const { fs, dir } = this; - let stat = await fs.lstat(`${dir}/${entry._fullpath}`); - if (!stat) { - throw new Error( - `ENOENT: no such file or directory, lstat '${entry._fullpath}'` - ); - } - let type = stat.isDirectory() ? "tree" : "blob"; - if (type === "blob" && !stat.isFile() && !stat.isSymbolicLink()) { - type = "special"; - } - entry._type = type; - stat = normalizeStats(stat); - entry._mode = stat.mode; - if (stat.size === -1 && entry._actualSize) { - stat.size = entry._actualSize; - } - entry._stat = stat; - } - return entry._stat; - } - async content(entry) { - if (entry._content === false) { - const { fs, dir } = this; - if (await entry.type() === "tree") { - entry._content = void 0; - } else { - const content = await fs.read(`${dir}/${entry._fullpath}`); - entry._actualSize = content.length; - if (entry._stat && entry._stat.size === -1) { - entry._stat.size = entry._actualSize; - } - entry._content = new Uint8Array(content); - } - } - return entry._content; - } - async oid(entry) { - if (entry._oid === false) { - const { fs, gitdir, cache } = this; - let oid; - await GitIndexManager.acquire({ fs, gitdir, cache }, async function(index2) { - const stage = index2.entriesMap.get(entry._fullpath); - const stats = await entry.stat(); - if (!stage || compareStats(stats, stage)) { - const content = await entry.content(); - if (content === void 0) { - oid = void 0; - } else { - oid = await shasum( - GitObject.wrap({ type: "blob", object: await entry.content() }) - ); - if (stage && oid === stage.oid && stats.mode === stage.mode && compareStats(stats, stage)) { - index2.insert({ - filepath: entry._fullpath, - stats, - oid - }); - } - } - } else { - oid = stage.oid; - } - }); - entry._oid = oid; - } - return entry._oid; - } -}; -function WORKDIR() { - const o = /* @__PURE__ */ Object.create(null); - Object.defineProperty(o, GitWalkSymbol, { - value: function({ fs, dir, gitdir, cache }) { - return new GitWalkerFs({ fs, dir, gitdir, cache }); - } - }); - Object.freeze(o); - return o; -} -function arrayRange(start, end) { - const length = end - start; - return Array.from({ length }, (_, i) => start + i); -} -var flat = typeof Array.prototype.flat === "undefined" ? (entries) => entries.reduce((acc, x) => acc.concat(x), []) : (entries) => entries.flat(); -var RunningMinimum = class { - constructor() { - this.value = null; - } - consider(value) { - if (value === null || value === void 0) - return; - if (this.value === null) { - this.value = value; - } else if (value < this.value) { - this.value = value; - } - } - reset() { - this.value = null; - } -}; -function* unionOfIterators(sets) { - const min = new RunningMinimum(); - let minimum; - const heads = []; - const numsets = sets.length; - for (let i = 0; i < numsets; i++) { - heads[i] = sets[i].next().value; - if (heads[i] !== void 0) { - min.consider(heads[i]); - } - } - if (min.value === null) - return; - while (true) { - const result = []; - minimum = min.value; - min.reset(); - for (let i = 0; i < numsets; i++) { - if (heads[i] !== void 0 && heads[i] === minimum) { - result[i] = heads[i]; - heads[i] = sets[i].next().value; - } else { - result[i] = null; - } - if (heads[i] !== void 0) { - min.consider(heads[i]); - } - } - yield result; - if (min.value === null) - return; - } -} -async function _walk({ - fs, - cache, - dir, - gitdir, - trees, - // @ts-ignore - map = async (_, entry) => entry, - // The default reducer is a flatmap that filters out undefineds. - reduce = async (parent, children2) => { - const flatten = flat(children2); - if (parent !== void 0) - flatten.unshift(parent); - return flatten; - }, - // The default iterate function walks all children concurrently - iterate = (walk2, children2) => Promise.all([...children2].map(walk2)) -}) { - const walkers = trees.map( - (proxy) => proxy[GitWalkSymbol]({ fs, dir, gitdir, cache }) - ); - const root2 = new Array(walkers.length).fill("."); - const range = arrayRange(0, walkers.length); - const unionWalkerFromReaddir = async (entries) => { - range.map((i) => { - entries[i] = entries[i] && new walkers[i].ConstructEntry(entries[i]); - }); - const subdirs = await Promise.all( - range.map((i) => entries[i] ? walkers[i].readdir(entries[i]) : []) - ); - const iterators = subdirs.map((array) => array === null ? [] : array).map((array) => array[Symbol.iterator]()); - return { - entries, - children: unionOfIterators(iterators) - }; - }; - const walk2 = async (root3) => { - const { entries, children: children2 } = await unionWalkerFromReaddir(root3); - const fullpath = entries.find((entry) => entry && entry._fullpath)._fullpath; - const parent = await map(fullpath, entries); - if (parent !== null) { - let walkedChildren = await iterate(walk2, children2); - walkedChildren = walkedChildren.filter((x) => x !== void 0); - return reduce(parent, walkedChildren); - } - }; - return walk2(root2); -} -async function rmRecursive(fs, filepath) { - const entries = await fs.readdir(filepath); - if (entries == null) { - await fs.rm(filepath); - } else if (entries.length) { - await Promise.all( - entries.map((entry) => { - const subpath = join(filepath, entry); - return fs.lstat(subpath).then((stat) => { - if (!stat) - return; - return stat.isDirectory() ? rmRecursive(fs, subpath) : fs.rm(subpath); - }); - }) - ).then(() => fs.rmdir(filepath)); - } else { - await fs.rmdir(filepath); - } -} -function isPromiseLike(obj) { - return isObject(obj) && isFunction(obj.then) && isFunction(obj.catch); -} -function isObject(obj) { - return obj && typeof obj === "object"; -} -function isFunction(obj) { - return typeof obj === "function"; -} -function isPromiseFs(fs) { - const test = (targetFs) => { - try { - return targetFs.readFile().catch((e) => e); - } catch (e) { - return e; - } - }; - return isPromiseLike(test(fs)); -} -var commands = [ - "readFile", - "writeFile", - "mkdir", - "rmdir", - "unlink", - "stat", - "lstat", - "readdir", - "readlink", - "symlink" -]; -function bindFs(target, fs) { - if (isPromiseFs(fs)) { - for (const command of commands) { - target[`_${command}`] = fs[command].bind(fs); - } - } else { - for (const command of commands) { - target[`_${command}`] = (0, import_pify.default)(fs[command].bind(fs)); - } - } - if (isPromiseFs(fs)) { - if (fs.rm) - target._rm = fs.rm.bind(fs); - else if (fs.rmdir.length > 1) - target._rm = fs.rmdir.bind(fs); - else - target._rm = rmRecursive.bind(null, target); - } else { - if (fs.rm) - target._rm = (0, import_pify.default)(fs.rm.bind(fs)); - else if (fs.rmdir.length > 2) - target._rm = (0, import_pify.default)(fs.rmdir.bind(fs)); - else - target._rm = rmRecursive.bind(null, target); - } -} -var FileSystem = class { - constructor(fs) { - if (typeof fs._original_unwrapped_fs !== "undefined") - return fs; - const promises = Object.getOwnPropertyDescriptor(fs, "promises"); - if (promises && promises.enumerable) { - bindFs(this, fs.promises); - } else { - bindFs(this, fs); - } - this._original_unwrapped_fs = fs; - } - /** - * Return true if a file exists, false if it doesn't exist. - * Rethrows errors that aren't related to file existance. - */ - async exists(filepath, options = {}) { - try { - await this._stat(filepath); - return true; - } catch (err) { - if (err.code === "ENOENT" || err.code === "ENOTDIR") { - return false; - } else { - console.log('Unhandled error in "FileSystem.exists()" function', err); - throw err; - } - } - } - /** - * Return the contents of a file if it exists, otherwise returns null. - * - * @param {string} filepath - * @param {object} [options] - * - * @returns {Promise} - */ - async read(filepath, options = {}) { - try { - let buffer2 = await this._readFile(filepath, options); - if (typeof buffer2 !== "string") { - buffer2 = Buffer.from(buffer2); - } - return buffer2; - } catch (err) { - return null; - } - } - /** - * Write a file (creating missing directories if need be) without throwing errors. - * - * @param {string} filepath - * @param {Buffer|Uint8Array|string} contents - * @param {object|string} [options] - */ - async write(filepath, contents, options = {}) { - try { - await this._writeFile(filepath, contents, options); - return; - } catch (err) { - await this.mkdir(dirname(filepath)); - await this._writeFile(filepath, contents, options); - } - } - /** - * Make a directory (or series of nested directories) without throwing an error if it already exists. - */ - async mkdir(filepath, _selfCall = false) { - try { - await this._mkdir(filepath); - return; - } catch (err) { - if (err === null) - return; - if (err.code === "EEXIST") - return; - if (_selfCall) - throw err; - if (err.code === "ENOENT") { - const parent = dirname(filepath); - if (parent === "." || parent === "/" || parent === filepath) - throw err; - await this.mkdir(parent); - await this.mkdir(filepath, true); - } - } - } - /** - * Delete a file without throwing an error if it is already deleted. - */ - async rm(filepath) { - try { - await this._unlink(filepath); - } catch (err) { - if (err.code !== "ENOENT") - throw err; - } - } - /** - * Delete a directory without throwing an error if it is already deleted. - */ - async rmdir(filepath, opts) { - try { - if (opts && opts.recursive) { - await this._rm(filepath, opts); - } else { - await this._rmdir(filepath); - } - } catch (err) { - if (err.code !== "ENOENT") - throw err; - } - } - /** - * Read a directory without throwing an error is the directory doesn't exist - */ - async readdir(filepath) { - try { - const names = await this._readdir(filepath); - names.sort(compareStrings); - return names; - } catch (err) { - if (err.code === "ENOTDIR") - return null; - return []; - } - } - /** - * Return a flast list of all the files nested inside a directory - * - * Based on an elegant concurrent recursive solution from SO - * https://stackoverflow.com/a/45130990/2168416 - */ - async readdirDeep(dir) { - const subdirs = await this._readdir(dir); - const files = await Promise.all( - subdirs.map(async (subdir) => { - const res = dir + "/" + subdir; - return (await this._stat(res)).isDirectory() ? this.readdirDeep(res) : res; - }) - ); - return files.reduce((a, f) => a.concat(f), []); - } - /** - * Return the Stats of a file/symlink if it exists, otherwise returns null. - * Rethrows errors that aren't related to file existance. - */ - async lstat(filename) { - try { - const stats = await this._lstat(filename); - return stats; - } catch (err) { - if (err.code === "ENOENT") { - return null; - } - throw err; - } - } - /** - * Reads the contents of a symlink if it exists, otherwise returns null. - * Rethrows errors that aren't related to file existance. - */ - async readlink(filename, opts = { encoding: "buffer" }) { - try { - const link = await this._readlink(filename, opts); - return Buffer.isBuffer(link) ? link : Buffer.from(link); - } catch (err) { - if (err.code === "ENOENT") { - return null; - } - throw err; - } - } - /** - * Write the contents of buffer to a symlink. - */ - async writelink(filename, buffer2) { - return this._symlink(buffer2.toString("utf8"), filename); - } -}; -function assertParameter(name, value) { - if (value === void 0) { - throw new MissingParameterError(name); - } -} -async function modified(entry, base) { - if (!entry && !base) - return false; - if (entry && !base) - return true; - if (!entry && base) - return true; - if (await entry.type() === "tree" && await base.type() === "tree") { - return false; - } - if (await entry.type() === await base.type() && await entry.mode() === await base.mode() && await entry.oid() === await base.oid()) { - return false; - } - return true; -} -async function abortMerge({ - fs: _fs, - dir, - gitdir = join(dir, ".git"), - commit: commit2 = "HEAD", - cache = {} -}) { - try { - assertParameter("fs", _fs); - assertParameter("dir", dir); - assertParameter("gitdir", gitdir); - const fs = new FileSystem(_fs); - const trees = [TREE({ ref: commit2 }), WORKDIR(), STAGE()]; - let unmergedPaths = []; - await GitIndexManager.acquire({ fs, gitdir, cache }, async function(index2) { - unmergedPaths = index2.unmergedPaths; - }); - const results = await _walk({ - fs, - cache, - dir, - gitdir, - trees, - map: async function(path2, [head, workdir, index2]) { - const staged = !await modified(workdir, index2); - const unmerged = unmergedPaths.includes(path2); - const unmodified = !await modified(index2, head); - if (staged || unmerged) { - return head ? { - path: path2, - mode: await head.mode(), - oid: await head.oid(), - type: await head.type(), - content: await head.content() - } : void 0; - } - if (unmodified) - return false; - else - throw new IndexResetError(path2); - } - }); - await GitIndexManager.acquire({ fs, gitdir, cache }, async function(index2) { - for (const entry of results) { - if (entry === false) - continue; - if (!entry) { - await fs.rmdir(`${dir}/${entry.path}`, { recursive: true }); - index2.delete({ filepath: entry.path }); - continue; - } - if (entry.type === "blob") { - const content = new TextDecoder().decode(entry.content); - await fs.write(`${dir}/${entry.path}`, content, { mode: entry.mode }); - index2.insert({ - filepath: entry.path, - oid: entry.oid, - stage: 0 - }); - } - } - }); - } catch (err) { - err.caller = "git.abortMerge"; - throw err; - } -} -var GitIgnoreManager = class { - static async isIgnored({ fs, dir, gitdir = join(dir, ".git"), filepath }) { - if (basename(filepath) === ".git") - return true; - if (filepath === ".") - return false; - let excludes = ""; - const excludesFile = join(gitdir, "info", "exclude"); - if (await fs.exists(excludesFile)) { - excludes = await fs.read(excludesFile, "utf8"); - } - const pairs = [ - { - gitignore: join(dir, ".gitignore"), - filepath - } - ]; - const pieces = filepath.split("/").filter(Boolean); - for (let i = 1; i < pieces.length; i++) { - const folder = pieces.slice(0, i).join("/"); - const file = pieces.slice(i).join("/"); - pairs.push({ - gitignore: join(dir, folder, ".gitignore"), - filepath: file - }); - } - let ignoredStatus = false; - for (const p of pairs) { - let file; - try { - file = await fs.read(p.gitignore, "utf8"); - } catch (err) { - if (err.code === "NOENT") - continue; - } - const ign = (0, import_ignore.default)().add(excludes); - ign.add(file); - const parentdir = dirname(p.filepath); - if (parentdir !== "." && ign.ignores(parentdir)) - return true; - if (ignoredStatus) { - ignoredStatus = !ign.test(p.filepath).unignored; - } else { - ignoredStatus = ign.test(p.filepath).ignored; - } - } - return ignoredStatus; - } -}; -async function writeObjectLoose({ fs, gitdir, object, format, oid }) { - if (format !== "deflated") { - throw new InternalError( - "GitObjectStoreLoose expects objects to write to be in deflated format" - ); - } - const source = `objects/${oid.slice(0, 2)}/${oid.slice(2)}`; - const filepath = `${gitdir}/${source}`; - if (!await fs.exists(filepath)) - await fs.write(filepath, object); -} -var supportsCompressionStream = null; -async function deflate(buffer2) { - if (supportsCompressionStream === null) { - supportsCompressionStream = testCompressionStream(); - } - return supportsCompressionStream ? browserDeflate(buffer2) : import_pako.default.deflate(buffer2); -} -async function browserDeflate(buffer2) { - const cs = new CompressionStream("deflate"); - const c = new Blob([buffer2]).stream().pipeThrough(cs); - return new Uint8Array(await new Response(c).arrayBuffer()); -} -function testCompressionStream() { - try { - const cs = new CompressionStream("deflate"); - new Blob([]).stream(); - if (cs) - return true; - } catch (_) { - } - return false; -} -async function _writeObject({ - fs, - gitdir, - type, - object, - format = "content", - oid = void 0, - dryRun = false -}) { - if (format !== "deflated") { - if (format !== "wrapped") { - object = GitObject.wrap({ type, object }); - } - oid = await shasum(object); - object = Buffer.from(await deflate(object)); - } - if (!dryRun) { - await writeObjectLoose({ fs, gitdir, object, format: "deflated", oid }); - } - return oid; -} -function posixifyPathBuffer(buffer2) { - let idx; - while (~(idx = buffer2.indexOf(92))) - buffer2[idx] = 47; - return buffer2; -} -async function add({ - fs: _fs, - dir, - gitdir = join(dir, ".git"), - filepath, - cache = {}, - force = false, - parallel = true -}) { - try { - assertParameter("fs", _fs); - assertParameter("dir", dir); - assertParameter("gitdir", gitdir); - assertParameter("filepath", filepath); - const fs = new FileSystem(_fs); - await GitIndexManager.acquire({ fs, gitdir, cache }, async (index2) => { - return addToIndex({ - dir, - gitdir, - fs, - filepath, - index: index2, - force, - parallel - }); - }); - } catch (err) { - err.caller = "git.add"; - throw err; - } -} -async function addToIndex({ - dir, - gitdir, - fs, - filepath, - index: index2, - force, - parallel -}) { - filepath = Array.isArray(filepath) ? filepath : [filepath]; - const promises = filepath.map(async (currentFilepath) => { - if (!force) { - const ignored = await GitIgnoreManager.isIgnored({ - fs, - dir, - gitdir, - filepath: currentFilepath - }); - if (ignored) - return; - } - const stats = await fs.lstat(join(dir, currentFilepath)); - if (!stats) - throw new NotFoundError(currentFilepath); - if (stats.isDirectory()) { - const children2 = await fs.readdir(join(dir, currentFilepath)); - if (parallel) { - const promises2 = children2.map( - (child) => addToIndex({ - dir, - gitdir, - fs, - filepath: [join(currentFilepath, child)], - index: index2, - force, - parallel - }) - ); - await Promise.all(promises2); - } else { - for (const child of children2) { - await addToIndex({ - dir, - gitdir, - fs, - filepath: [join(currentFilepath, child)], - index: index2, - force, - parallel - }); - } - } - } else { - const object = stats.isSymbolicLink() ? await fs.readlink(join(dir, currentFilepath)).then(posixifyPathBuffer) : await fs.read(join(dir, currentFilepath)); - if (object === null) - throw new NotFoundError(currentFilepath); - const oid = await _writeObject({ fs, gitdir, type: "blob", object }); - index2.insert({ filepath: currentFilepath, stats, oid }); - } - }); - const settledPromises = await Promise.allSettled(promises); - const rejectedPromises = settledPromises.filter((settle) => settle.status === "rejected").map((settle) => settle.reason); - if (rejectedPromises.length > 1) { - throw new MultipleGitError(rejectedPromises); - } - if (rejectedPromises.length === 1) { - throw rejectedPromises[0]; - } - const fulfilledPromises = settledPromises.filter((settle) => settle.status === "fulfilled" && settle.value).map((settle) => settle.value); - return fulfilledPromises; -} -async function _commit({ - fs, - cache, - onSign, - gitdir, - message, - author, - committer, - signingKey, - dryRun = false, - noUpdateBranch = false, - ref, - parent, - tree -}) { - if (!ref) { - ref = await GitRefManager.resolve({ - fs, - gitdir, - ref: "HEAD", - depth: 2 - }); - } - return GitIndexManager.acquire( - { fs, gitdir, cache, allowUnmerged: false }, - async function(index2) { - const inodes = flatFileListToDirectoryStructure(index2.entries); - const inode = inodes.get("."); - if (!tree) { - tree = await constructTree({ fs, gitdir, inode, dryRun }); - } - if (!parent) { - try { - parent = [ - await GitRefManager.resolve({ - fs, - gitdir, - ref - }) - ]; - } catch (err) { - parent = []; - } - } else { - parent = await Promise.all( - parent.map((p) => { - return GitRefManager.resolve({ fs, gitdir, ref: p }); - }) - ); - } - let comm = GitCommit.from({ - tree, - parent, - author, - committer, - message - }); - if (signingKey) { - comm = await GitCommit.sign(comm, onSign, signingKey); - } - const oid = await _writeObject({ - fs, - gitdir, - type: "commit", - object: comm.toObject(), - dryRun - }); - if (!noUpdateBranch && !dryRun) { - await GitRefManager.writeRef({ - fs, - gitdir, - ref, - value: oid - }); - } - return oid; - } - ); -} -async function constructTree({ fs, gitdir, inode, dryRun }) { - const children2 = inode.children; - for (const inode2 of children2) { - if (inode2.type === "tree") { - inode2.metadata.mode = "040000"; - inode2.metadata.oid = await constructTree({ fs, gitdir, inode: inode2, dryRun }); - } - } - const entries = children2.map((inode2) => ({ - mode: inode2.metadata.mode, - path: inode2.basename, - oid: inode2.metadata.oid, - type: inode2.type - })); - const tree = GitTree.from(entries); - const oid = await _writeObject({ - fs, - gitdir, - type: "tree", - object: tree.toObject(), - dryRun - }); - return oid; -} -async function resolveFilepath({ fs, cache, gitdir, oid, filepath }) { - if (filepath.startsWith("/")) { - throw new InvalidFilepathError("leading-slash"); - } else if (filepath.endsWith("/")) { - throw new InvalidFilepathError("trailing-slash"); - } - const _oid = oid; - const result = await resolveTree({ fs, cache, gitdir, oid }); - const tree = result.tree; - if (filepath === "") { - oid = result.oid; - } else { - const pathArray = filepath.split("/"); - oid = await _resolveFilepath({ - fs, - cache, - gitdir, - tree, - pathArray, - oid: _oid, - filepath - }); - } - return oid; -} -async function _resolveFilepath({ - fs, - cache, - gitdir, - tree, - pathArray, - oid, - filepath -}) { - const name = pathArray.shift(); - for (const entry of tree) { - if (entry.path === name) { - if (pathArray.length === 0) { - return entry.oid; - } else { - const { type, object } = await _readObject({ - fs, - cache, - gitdir, - oid: entry.oid - }); - if (type !== "tree") { - throw new ObjectTypeError(oid, type, "tree", filepath); - } - tree = GitTree.from(object); - return _resolveFilepath({ - fs, - cache, - gitdir, - tree, - pathArray, - oid, - filepath - }); - } - } - } - throw new NotFoundError(`file or directory found at "${oid}:${filepath}"`); -} -async function _readTree({ - fs, - cache, - gitdir, - oid, - filepath = void 0 -}) { - if (filepath !== void 0) { - oid = await resolveFilepath({ fs, cache, gitdir, oid, filepath }); - } - const { tree, oid: treeOid } = await resolveTree({ fs, cache, gitdir, oid }); - const result = { - oid: treeOid, - tree: tree.entries() - }; - return result; -} -async function _writeTree({ fs, gitdir, tree }) { - const object = GitTree.from(tree).toObject(); - const oid = await _writeObject({ - fs, - gitdir, - type: "tree", - object, - format: "content" - }); - return oid; -} -async function _addNote({ - fs, - cache, - onSign, - gitdir, - ref, - oid, - note, - force, - author, - committer, - signingKey -}) { - let parent; - try { - parent = await GitRefManager.resolve({ gitdir, fs, ref }); - } catch (err) { - if (!(err instanceof NotFoundError)) { - throw err; - } - } - const result = await _readTree({ - fs, - cache, - gitdir, - oid: parent || "4b825dc642cb6eb9a060e54bf8d69288fbee4904" - }); - let tree = result.tree; - if (force) { - tree = tree.filter((entry) => entry.path !== oid); - } else { - for (const entry of tree) { - if (entry.path === oid) { - throw new AlreadyExistsError("note", oid); - } - } - } - if (typeof note === "string") { - note = Buffer.from(note, "utf8"); - } - const noteOid = await _writeObject({ - fs, - gitdir, - type: "blob", - object: note, - format: "content" - }); - tree.push({ mode: "100644", path: oid, oid: noteOid, type: "blob" }); - const treeOid = await _writeTree({ - fs, - gitdir, - tree - }); - const commitOid = await _commit({ - fs, - cache, - onSign, - gitdir, - ref, - tree: treeOid, - parent: parent && [parent], - message: `Note added by 'isomorphic-git addNote' -`, - author, - committer, - signingKey - }); - return commitOid; -} -async function _getConfig({ fs, gitdir, path: path2 }) { - const config = await GitConfigManager.get({ fs, gitdir }); - return config.get(path2); -} -async function normalizeAuthorObject({ fs, gitdir, author = {} }) { - let { name, email, timestamp, timezoneOffset } = author; - name = name || await _getConfig({ fs, gitdir, path: "user.name" }); - email = email || await _getConfig({ fs, gitdir, path: "user.email" }) || ""; - if (name === void 0) { - return void 0; - } - timestamp = timestamp != null ? timestamp : Math.floor(Date.now() / 1e3); - timezoneOffset = timezoneOffset != null ? timezoneOffset : new Date(timestamp * 1e3).getTimezoneOffset(); - return { name, email, timestamp, timezoneOffset }; -} -async function normalizeCommitterObject({ - fs, - gitdir, - author, - committer -}) { - committer = Object.assign({}, committer || author); - if (author) { - committer.timestamp = committer.timestamp || author.timestamp; - committer.timezoneOffset = committer.timezoneOffset || author.timezoneOffset; - } - committer = await normalizeAuthorObject({ fs, gitdir, author: committer }); - return committer; -} -async function addNote({ - fs: _fs, - onSign, - dir, - gitdir = join(dir, ".git"), - ref = "refs/notes/commits", - oid, - note, - force, - author: _author, - committer: _committer, - signingKey, - cache = {} -}) { - try { - assertParameter("fs", _fs); - assertParameter("gitdir", gitdir); - assertParameter("oid", oid); - assertParameter("note", note); - if (signingKey) { - assertParameter("onSign", onSign); - } - const fs = new FileSystem(_fs); - const author = await normalizeAuthorObject({ fs, gitdir, author: _author }); - if (!author) - throw new MissingNameError("author"); - const committer = await normalizeCommitterObject({ - fs, - gitdir, - author, - committer: _committer - }); - if (!committer) - throw new MissingNameError("committer"); - return await _addNote({ - fs: new FileSystem(fs), - cache, - onSign, - gitdir, - ref, - oid, - note, - force, - author, - committer, - signingKey - }); - } catch (err) { - err.caller = "git.addNote"; - throw err; - } -} -async function _addRemote({ fs, gitdir, remote, url, force }) { - if (remote !== import_clean_git_ref.default.clean(remote)) { - throw new InvalidRefNameError(remote, import_clean_git_ref.default.clean(remote)); - } - const config = await GitConfigManager.get({ fs, gitdir }); - if (!force) { - const remoteNames = await config.getSubsections("remote"); - if (remoteNames.includes(remote)) { - if (url !== await config.get(`remote.${remote}.url`)) { - throw new AlreadyExistsError("remote", remote); - } - } - } - await config.set(`remote.${remote}.url`, url); - await config.set( - `remote.${remote}.fetch`, - `+refs/heads/*:refs/remotes/${remote}/*` - ); - await GitConfigManager.save({ fs, gitdir, config }); -} -async function addRemote({ - fs, - dir, - gitdir = join(dir, ".git"), - remote, - url, - force = false -}) { - try { - assertParameter("fs", fs); - assertParameter("gitdir", gitdir); - assertParameter("remote", remote); - assertParameter("url", url); - return await _addRemote({ - fs: new FileSystem(fs), - gitdir, - remote, - url, - force - }); - } catch (err) { - err.caller = "git.addRemote"; - throw err; - } -} -async function _annotatedTag({ - fs, - cache, - onSign, - gitdir, - ref, - tagger, - message = ref, - gpgsig, - object, - signingKey, - force = false -}) { - ref = ref.startsWith("refs/tags/") ? ref : `refs/tags/${ref}`; - if (!force && await GitRefManager.exists({ fs, gitdir, ref })) { - throw new AlreadyExistsError("tag", ref); - } - const oid = await GitRefManager.resolve({ - fs, - gitdir, - ref: object || "HEAD" - }); - const { type } = await _readObject({ fs, cache, gitdir, oid }); - let tagObject = GitAnnotatedTag.from({ - object: oid, - type, - tag: ref.replace("refs/tags/", ""), - tagger, - message, - gpgsig - }); - if (signingKey) { - tagObject = await GitAnnotatedTag.sign(tagObject, onSign, signingKey); - } - const value = await _writeObject({ - fs, - gitdir, - type: "tag", - object: tagObject.toObject() - }); - await GitRefManager.writeRef({ fs, gitdir, ref, value }); -} -async function annotatedTag({ - fs: _fs, - onSign, - dir, - gitdir = join(dir, ".git"), - ref, - tagger: _tagger, - message = ref, - gpgsig, - object, - signingKey, - force = false, - cache = {} -}) { - try { - assertParameter("fs", _fs); - assertParameter("gitdir", gitdir); - assertParameter("ref", ref); - if (signingKey) { - assertParameter("onSign", onSign); - } - const fs = new FileSystem(_fs); - const tagger = await normalizeAuthorObject({ fs, gitdir, author: _tagger }); - if (!tagger) - throw new MissingNameError("tagger"); - return await _annotatedTag({ - fs, - cache, - onSign, - gitdir, - ref, - tagger, - message, - gpgsig, - object, - signingKey, - force - }); - } catch (err) { - err.caller = "git.annotatedTag"; - throw err; - } -} -async function _branch({ - fs, - gitdir, - ref, - object, - checkout: checkout2 = false, - force = false -}) { - if (ref !== import_clean_git_ref.default.clean(ref)) { - throw new InvalidRefNameError(ref, import_clean_git_ref.default.clean(ref)); - } - const fullref = `refs/heads/${ref}`; - if (!force) { - const exist = await GitRefManager.exists({ fs, gitdir, ref: fullref }); - if (exist) { - throw new AlreadyExistsError("branch", ref, false); - } - } - let oid; - try { - oid = await GitRefManager.resolve({ fs, gitdir, ref: object || "HEAD" }); - } catch (e) { - } - if (oid) { - await GitRefManager.writeRef({ fs, gitdir, ref: fullref, value: oid }); - } - if (checkout2) { - await GitRefManager.writeSymbolicRef({ - fs, - gitdir, - ref: "HEAD", - value: fullref - }); - } -} -async function branch({ - fs, - dir, - gitdir = join(dir, ".git"), - ref, - object, - checkout: checkout2 = false, - force = false -}) { - try { - assertParameter("fs", fs); - assertParameter("gitdir", gitdir); - assertParameter("ref", ref); - return await _branch({ - fs: new FileSystem(fs), - gitdir, - ref, - object, - checkout: checkout2, - force - }); - } catch (err) { - err.caller = "git.branch"; - throw err; - } -} -var worthWalking = (filepath, root2) => { - if (filepath === "." || root2 == null || root2.length === 0 || root2 === ".") { - return true; - } - if (root2.length >= filepath.length) { - return root2.startsWith(filepath); - } else { - return filepath.startsWith(root2); - } -}; -async function _checkout({ - fs, - cache, - onProgress, - dir, - gitdir, - remote, - ref, - filepaths, - noCheckout, - noUpdateHead, - dryRun, - force, - track = true -}) { - let oid; - try { - oid = await GitRefManager.resolve({ fs, gitdir, ref }); - } catch (err) { - if (ref === "HEAD") - throw err; - const remoteRef = `${remote}/${ref}`; - oid = await GitRefManager.resolve({ - fs, - gitdir, - ref: remoteRef - }); - if (track) { - const config = await GitConfigManager.get({ fs, gitdir }); - await config.set(`branch.${ref}.remote`, remote); - await config.set(`branch.${ref}.merge`, `refs/heads/${ref}`); - await GitConfigManager.save({ fs, gitdir, config }); - } - await GitRefManager.writeRef({ - fs, - gitdir, - ref: `refs/heads/${ref}`, - value: oid - }); - } - if (!noCheckout) { - let ops; - try { - ops = await analyze({ - fs, - cache, - onProgress, - dir, - gitdir, - ref, - force, - filepaths - }); - } catch (err) { - if (err instanceof NotFoundError && err.data.what === oid) { - throw new CommitNotFetchedError(ref, oid); - } else { - throw err; - } - } - const conflicts2 = ops.filter(([method2]) => method2 === "conflict").map(([method2, fullpath]) => fullpath); - if (conflicts2.length > 0) { - throw new CheckoutConflictError(conflicts2); - } - const errors = ops.filter(([method2]) => method2 === "error").map(([method2, fullpath]) => fullpath); - if (errors.length > 0) { - throw new InternalError(errors.join(", ")); - } - if (dryRun) { - return; - } - let count = 0; - const total = ops.length; - await GitIndexManager.acquire({ fs, gitdir, cache }, async function(index2) { - await Promise.all( - ops.filter( - ([method2]) => method2 === "delete" || method2 === "delete-index" - ).map(async function([method2, fullpath]) { - const filepath = `${dir}/${fullpath}`; - if (method2 === "delete") { - await fs.rm(filepath); - } - index2.delete({ filepath: fullpath }); - if (onProgress) { - await onProgress({ - phase: "Updating workdir", - loaded: ++count, - total - }); - } - }) - ); - }); - await GitIndexManager.acquire({ fs, gitdir, cache }, async function(index2) { - for (const [method2, fullpath] of ops) { - if (method2 === "rmdir" || method2 === "rmdir-index") { - const filepath = `${dir}/${fullpath}`; - try { - if (method2 === "rmdir-index") { - index2.delete({ filepath: fullpath }); - } - await fs.rmdir(filepath); - if (onProgress) { - await onProgress({ - phase: "Updating workdir", - loaded: ++count, - total - }); - } - } catch (e) { - if (e.code === "ENOTEMPTY") { - console.log( - `Did not delete ${fullpath} because directory is not empty` - ); - } else { - throw e; - } - } - } - } - }); - await Promise.all( - ops.filter(([method2]) => method2 === "mkdir" || method2 === "mkdir-index").map(async function([_, fullpath]) { - const filepath = `${dir}/${fullpath}`; - await fs.mkdir(filepath); - if (onProgress) { - await onProgress({ - phase: "Updating workdir", - loaded: ++count, - total - }); - } - }) - ); - await GitIndexManager.acquire({ fs, gitdir, cache }, async function(index2) { - await Promise.all( - ops.filter( - ([method2]) => method2 === "create" || method2 === "create-index" || method2 === "update" || method2 === "mkdir-index" - ).map(async function([method2, fullpath, oid2, mode, chmod]) { - const filepath = `${dir}/${fullpath}`; - try { - if (method2 !== "create-index" && method2 !== "mkdir-index") { - const { object } = await _readObject({ fs, cache, gitdir, oid: oid2 }); - if (chmod) { - await fs.rm(filepath); - } - if (mode === 33188) { - await fs.write(filepath, object); - } else if (mode === 33261) { - await fs.write(filepath, object, { mode: 511 }); - } else if (mode === 40960) { - await fs.writelink(filepath, object); - } else { - throw new InternalError( - `Invalid mode 0o${mode.toString(8)} detected in blob ${oid2}` - ); - } - } - const stats = await fs.lstat(filepath); - if (mode === 33261) { - stats.mode = 493; - } - if (method2 === "mkdir-index") { - stats.mode = 57344; - } - index2.insert({ - filepath: fullpath, - stats, - oid: oid2 - }); - if (onProgress) { - await onProgress({ - phase: "Updating workdir", - loaded: ++count, - total - }); - } - } catch (e) { - console.log(e); - } - }) - ); - }); - } - if (!noUpdateHead) { - const fullRef = await GitRefManager.expand({ fs, gitdir, ref }); - if (fullRef.startsWith("refs/heads")) { - await GitRefManager.writeSymbolicRef({ - fs, - gitdir, - ref: "HEAD", - value: fullRef - }); - } else { - await GitRefManager.writeRef({ fs, gitdir, ref: "HEAD", value: oid }); - } - } -} -async function analyze({ - fs, - cache, - onProgress, - dir, - gitdir, - ref, - force, - filepaths -}) { - let count = 0; - return _walk({ - fs, - cache, - dir, - gitdir, - trees: [TREE({ ref }), WORKDIR(), STAGE()], - map: async function(fullpath, [commit2, workdir, stage]) { - if (fullpath === ".") - return; - if (filepaths && !filepaths.some((base) => worthWalking(fullpath, base))) { - return null; - } - if (onProgress) { - await onProgress({ phase: "Analyzing workdir", loaded: ++count }); - } - const key2 = [!!stage, !!commit2, !!workdir].map(Number).join(""); - switch (key2) { - case "000": - return; - case "001": - if (force && filepaths && filepaths.includes(fullpath)) { - return ["delete", fullpath]; - } - return; - case "010": { - switch (await commit2.type()) { - case "tree": { - return ["mkdir", fullpath]; - } - case "blob": { - return [ - "create", - fullpath, - await commit2.oid(), - await commit2.mode() - ]; - } - case "commit": { - return [ - "mkdir-index", - fullpath, - await commit2.oid(), - await commit2.mode() - ]; - } - default: { - return [ - "error", - `new entry Unhandled type ${await commit2.type()}` - ]; - } - } - } - case "011": { - switch (`${await commit2.type()}-${await workdir.type()}`) { - case "tree-tree": { - return; - } - case "tree-blob": - case "blob-tree": { - return ["conflict", fullpath]; - } - case "blob-blob": { - if (await commit2.oid() !== await workdir.oid()) { - if (force) { - return [ - "update", - fullpath, - await commit2.oid(), - await commit2.mode(), - await commit2.mode() !== await workdir.mode() - ]; - } else { - return ["conflict", fullpath]; - } - } else { - if (await commit2.mode() !== await workdir.mode()) { - if (force) { - return [ - "update", - fullpath, - await commit2.oid(), - await commit2.mode(), - true - ]; - } else { - return ["conflict", fullpath]; - } - } else { - return [ - "create-index", - fullpath, - await commit2.oid(), - await commit2.mode() - ]; - } - } - } - case "commit-tree": { - return; - } - case "commit-blob": { - return ["conflict", fullpath]; - } - default: { - return ["error", `new entry Unhandled type ${commit2.type}`]; - } - } - } - case "100": { - return ["delete-index", fullpath]; - } - case "101": { - switch (await stage.type()) { - case "tree": { - return ["rmdir", fullpath]; - } - case "blob": { - if (await stage.oid() !== await workdir.oid()) { - if (force) { - return ["delete", fullpath]; - } else { - return ["conflict", fullpath]; - } - } else { - return ["delete", fullpath]; - } - } - case "commit": { - return ["rmdir-index", fullpath]; - } - default: { - return [ - "error", - `delete entry Unhandled type ${await stage.type()}` - ]; - } - } - } - case "110": - case "111": { - switch (`${await stage.type()}-${await commit2.type()}`) { - case "tree-tree": { - return; - } - case "blob-blob": { - if (await stage.oid() === await commit2.oid() && await stage.mode() === await commit2.mode() && !force) { - return; - } - if (workdir) { - if (await workdir.oid() !== await stage.oid() && await workdir.oid() !== await commit2.oid()) { - if (force) { - return [ - "update", - fullpath, - await commit2.oid(), - await commit2.mode(), - await commit2.mode() !== await workdir.mode() - ]; - } else { - return ["conflict", fullpath]; - } - } - } else if (force) { - return [ - "update", - fullpath, - await commit2.oid(), - await commit2.mode(), - await commit2.mode() !== await stage.mode() - ]; - } - if (await commit2.mode() !== await stage.mode()) { - return [ - "update", - fullpath, - await commit2.oid(), - await commit2.mode(), - true - ]; - } - if (await commit2.oid() !== await stage.oid()) { - return [ - "update", - fullpath, - await commit2.oid(), - await commit2.mode(), - false - ]; - } else { - return; - } - } - case "tree-blob": { - return ["update-dir-to-blob", fullpath, await commit2.oid()]; - } - case "blob-tree": { - return ["update-blob-to-tree", fullpath]; - } - case "commit-commit": { - return [ - "mkdir-index", - fullpath, - await commit2.oid(), - await commit2.mode() - ]; - } - default: { - return [ - "error", - `update entry Unhandled type ${await stage.type()}-${await commit2.type()}` - ]; - } - } - } - } - }, - // Modify the default flat mapping - reduce: async function(parent, children2) { - children2 = flat(children2); - if (!parent) { - return children2; - } else if (parent && parent[0] === "rmdir") { - children2.push(parent); - return children2; - } else { - children2.unshift(parent); - return children2; - } - } - }); -} -async function checkout({ - fs, - onProgress, - dir, - gitdir = join(dir, ".git"), - remote = "origin", - ref: _ref, - filepaths, - noCheckout = false, - noUpdateHead = _ref === void 0, - dryRun = false, - force = false, - track = true, - cache = {} -}) { - try { - assertParameter("fs", fs); - assertParameter("dir", dir); - assertParameter("gitdir", gitdir); - const ref = _ref || "HEAD"; - return await _checkout({ - fs: new FileSystem(fs), - cache, - onProgress, - dir, - gitdir, - remote, - ref, - filepaths, - noCheckout, - noUpdateHead, - dryRun, - force, - track - }); - } catch (err) { - err.caller = "git.checkout"; - throw err; - } -} -var abbreviateRx = new RegExp("^refs/(heads/|tags/|remotes/)?(.*)"); -function abbreviateRef(ref) { - const match = abbreviateRx.exec(ref); - if (match) { - if (match[1] === "remotes/" && ref.endsWith("/HEAD")) { - return match[2].slice(0, -5); - } else { - return match[2]; - } - } - return ref; -} -async function _currentBranch({ - fs, - gitdir, - fullname = false, - test = false -}) { - const ref = await GitRefManager.resolve({ - fs, - gitdir, - ref: "HEAD", - depth: 2 - }); - if (test) { - try { - await GitRefManager.resolve({ fs, gitdir, ref }); - } catch (_) { - return; - } - } - if (!ref.startsWith("refs/")) - return; - return fullname ? ref : abbreviateRef(ref); -} -function translateSSHtoHTTP(url) { - url = url.replace(/^git@([^:]+):/, "https://$1/"); - url = url.replace(/^ssh:\/\//, "https://"); - return url; -} -function calculateBasicAuthHeader({ username = "", password = "" }) { - return `Basic ${Buffer.from(`${username}:${password}`).toString("base64")}`; -} -async function forAwait(iterable, cb) { - const iter = getIterator(iterable); - while (true) { - const { value, done } = await iter.next(); - if (value) - await cb(value); - if (done) - break; - } - if (iter.return) - iter.return(); -} -async function collect(iterable) { - let size = 0; - const buffers = []; - await forAwait(iterable, (value) => { - buffers.push(value); - size += value.byteLength; - }); - const result = new Uint8Array(size); - let nextIndex = 0; - for (const buffer2 of buffers) { - result.set(buffer2, nextIndex); - nextIndex += buffer2.byteLength; - } - return result; -} -function extractAuthFromUrl(url) { - let userpass = url.match(/^https?:\/\/([^/]+)@/); - if (userpass == null) - return { url, auth: {} }; - userpass = userpass[1]; - const [username, password] = userpass.split(":"); - url = url.replace(`${userpass}@`, ""); - return { url, auth: { username, password } }; -} -function padHex(b, n) { - const s = n.toString(16); - return "0".repeat(b - s.length) + s; -} -var GitPktLine = class { - static flush() { - return Buffer.from("0000", "utf8"); - } - static delim() { - return Buffer.from("0001", "utf8"); - } - static encode(line) { - if (typeof line === "string") { - line = Buffer.from(line); - } - const length = line.length + 4; - const hexlength = padHex(4, length); - return Buffer.concat([Buffer.from(hexlength, "utf8"), line]); - } - static streamReader(stream) { - const reader = new StreamReader(stream); - return async function read() { - try { - let length = await reader.read(4); - if (length == null) - return true; - length = parseInt(length.toString("utf8"), 16); - if (length === 0) - return null; - if (length === 1) - return null; - const buffer2 = await reader.read(length - 4); - if (buffer2 == null) - return true; - return buffer2; - } catch (err) { - stream.error = err; - return true; - } - }; - } -}; -async function parseCapabilitiesV2(read) { - const capabilities2 = {}; - let line; - while (true) { - line = await read(); - if (line === true) - break; - if (line === null) - continue; - line = line.toString("utf8").replace(/\n$/, ""); - const i = line.indexOf("="); - if (i > -1) { - const key2 = line.slice(0, i); - const value = line.slice(i + 1); - capabilities2[key2] = value; - } else { - capabilities2[line] = true; - } - } - return { protocolVersion: 2, capabilities2 }; -} -async function parseRefsAdResponse(stream, { service }) { - const capabilities = /* @__PURE__ */ new Set(); - const refs = /* @__PURE__ */ new Map(); - const symrefs = /* @__PURE__ */ new Map(); - const read = GitPktLine.streamReader(stream); - let lineOne = await read(); - while (lineOne === null) - lineOne = await read(); - if (lineOne === true) - throw new EmptyServerResponseError(); - if (lineOne.includes("version 2")) { - return parseCapabilitiesV2(read); - } - if (lineOne.toString("utf8").replace(/\n$/, "") !== `# service=${service}`) { - throw new ParseError(`# service=${service}\\n`, lineOne.toString("utf8")); - } - let lineTwo = await read(); - while (lineTwo === null) - lineTwo = await read(); - if (lineTwo === true) - return { capabilities, refs, symrefs }; - lineTwo = lineTwo.toString("utf8"); - if (lineTwo.includes("version 2")) { - return parseCapabilitiesV2(read); - } - const [firstRef, capabilitiesLine] = splitAndAssert(lineTwo, "\0", "\\x00"); - capabilitiesLine.split(" ").map((x) => capabilities.add(x)); - const [ref, name] = splitAndAssert(firstRef, " ", " "); - refs.set(name, ref); - while (true) { - const line = await read(); - if (line === true) - break; - if (line !== null) { - const [ref2, name2] = splitAndAssert(line.toString("utf8"), " ", " "); - refs.set(name2, ref2); - } - } - for (const cap of capabilities) { - if (cap.startsWith("symref=")) { - const m = cap.match(/symref=([^:]+):(.*)/); - if (m.length === 3) { - symrefs.set(m[1], m[2]); - } - } - } - return { protocolVersion: 1, capabilities, refs, symrefs }; -} -function splitAndAssert(line, sep2, expected) { - const split = line.trim().split(sep2); - if (split.length !== 2) { - throw new ParseError( - `Two strings separated by '${expected}'`, - line.toString("utf8") - ); - } - return split; -} -var corsProxify = (corsProxy, url) => corsProxy.endsWith("?") ? `${corsProxy}${url}` : `${corsProxy}/${url.replace(/^https?:\/\//, "")}`; -var updateHeaders = (headers, auth) => { - if (auth.username || auth.password) { - headers.Authorization = calculateBasicAuthHeader(auth); - } - if (auth.headers) { - Object.assign(headers, auth.headers); - } -}; -var stringifyBody = async (res) => { - try { - const data = Buffer.from(await collect(res.body)); - const response = data.toString("utf8"); - const preview = response.length < 256 ? response : response.slice(0, 256) + "..."; - return { preview, response, data }; - } catch (e) { - return {}; - } -}; -var GitRemoteHTTP = class { - static async capabilities() { - return ["discover", "connect"]; - } - /** - * @param {Object} args - * @param {HttpClient} args.http - * @param {ProgressCallback} [args.onProgress] - * @param {AuthCallback} [args.onAuth] - * @param {AuthFailureCallback} [args.onAuthFailure] - * @param {AuthSuccessCallback} [args.onAuthSuccess] - * @param {string} [args.corsProxy] - * @param {string} args.service - * @param {string} args.url - * @param {Object} args.headers - * @param {1 | 2} args.protocolVersion - Git Protocol Version - */ - static async discover({ - http, - onProgress, - onAuth, - onAuthSuccess, - onAuthFailure, - corsProxy, - service, - url: _origUrl, - headers, - protocolVersion - }) { - let { url, auth } = extractAuthFromUrl(_origUrl); - const proxifiedURL = corsProxy ? corsProxify(corsProxy, url) : url; - if (auth.username || auth.password) { - headers.Authorization = calculateBasicAuthHeader(auth); - } - if (protocolVersion === 2) { - headers["Git-Protocol"] = "version=2"; - } - let res; - let tryAgain; - let providedAuthBefore = false; - do { - res = await http.request({ - onProgress, - method: "GET", - url: `${proxifiedURL}/info/refs?service=${service}`, - headers - }); - tryAgain = false; - if (res.statusCode === 401 || res.statusCode === 203) { - const getAuth = providedAuthBefore ? onAuthFailure : onAuth; - if (getAuth) { - auth = await getAuth(url, { - ...auth, - headers: { ...headers } - }); - if (auth && auth.cancel) { - throw new UserCanceledError(); - } else if (auth) { - updateHeaders(headers, auth); - providedAuthBefore = true; - tryAgain = true; - } - } - } else if (res.statusCode === 200 && providedAuthBefore && onAuthSuccess) { - await onAuthSuccess(url, auth); - } - } while (tryAgain); - if (res.statusCode !== 200) { - const { response } = await stringifyBody(res); - throw new HttpError(res.statusCode, res.statusMessage, response); - } - if (res.headers["content-type"] === `application/x-${service}-advertisement`) { - const remoteHTTP = await parseRefsAdResponse(res.body, { service }); - remoteHTTP.auth = auth; - return remoteHTTP; - } else { - const { preview, response, data } = await stringifyBody(res); - try { - const remoteHTTP = await parseRefsAdResponse([data], { service }); - remoteHTTP.auth = auth; - return remoteHTTP; - } catch (e) { - throw new SmartHttpError(preview, response); - } - } - } - /** - * @param {Object} args - * @param {HttpClient} args.http - * @param {ProgressCallback} [args.onProgress] - * @param {string} [args.corsProxy] - * @param {string} args.service - * @param {string} args.url - * @param {Object} [args.headers] - * @param {any} args.body - * @param {any} args.auth - */ - static async connect({ - http, - onProgress, - corsProxy, - service, - url, - auth, - body, - headers - }) { - const urlAuth = extractAuthFromUrl(url); - if (urlAuth) - url = urlAuth.url; - if (corsProxy) - url = corsProxify(corsProxy, url); - headers["content-type"] = `application/x-${service}-request`; - headers.accept = `application/x-${service}-result`; - updateHeaders(headers, auth); - const res = await http.request({ - onProgress, - method: "POST", - url: `${url}/${service}`, - body, - headers - }); - if (res.statusCode !== 200) { - const { response } = stringifyBody(res); - throw new HttpError(res.statusCode, res.statusMessage, response); - } - return res; - } -}; -function parseRemoteUrl({ url }) { - if (url.startsWith("git@")) { - return { - transport: "ssh", - address: url - }; - } - const matches = url.match(/(\w+)(:\/\/|::)(.*)/); - if (matches === null) - return; - if (matches[2] === "://") { - return { - transport: matches[1], - address: matches[0] - }; - } - if (matches[2] === "::") { - return { - transport: matches[1], - address: matches[3] - }; - } -} -var GitRemoteManager = class { - static getRemoteHelperFor({ url }) { - const remoteHelpers = /* @__PURE__ */ new Map(); - remoteHelpers.set("http", GitRemoteHTTP); - remoteHelpers.set("https", GitRemoteHTTP); - const parts = parseRemoteUrl({ url }); - if (!parts) { - throw new UrlParseError(url); - } - if (remoteHelpers.has(parts.transport)) { - return remoteHelpers.get(parts.transport); - } - throw new UnknownTransportError( - url, - parts.transport, - parts.transport === "ssh" ? translateSSHtoHTTP(url) : void 0 - ); - } -}; -var lock$1 = null; -var GitShallowManager = class { - static async read({ fs, gitdir }) { - if (lock$1 === null) - lock$1 = new import_async_lock.default(); - const filepath = join(gitdir, "shallow"); - const oids = /* @__PURE__ */ new Set(); - await lock$1.acquire(filepath, async function() { - const text2 = await fs.read(filepath, { encoding: "utf8" }); - if (text2 === null) - return oids; - if (text2.trim() === "") - return oids; - text2.trim().split("\n").map((oid) => oids.add(oid)); - }); - return oids; - } - static async write({ fs, gitdir, oids }) { - if (lock$1 === null) - lock$1 = new import_async_lock.default(); - const filepath = join(gitdir, "shallow"); - if (oids.size > 0) { - const text2 = [...oids].join("\n") + "\n"; - await lock$1.acquire(filepath, async function() { - await fs.write(filepath, text2, { - encoding: "utf8" - }); - }); - } else { - await lock$1.acquire(filepath, async function() { - await fs.rm(filepath); - }); - } - } -}; -async function hasObjectLoose({ fs, gitdir, oid }) { - const source = `objects/${oid.slice(0, 2)}/${oid.slice(2)}`; - return fs.exists(`${gitdir}/${source}`); -} -async function hasObjectPacked({ - fs, - cache, - gitdir, - oid, - getExternalRefDelta -}) { - let list = await fs.readdir(join(gitdir, "objects/pack")); - list = list.filter((x) => x.endsWith(".idx")); - for (const filename of list) { - const indexFile = `${gitdir}/objects/pack/${filename}`; - const p = await readPackIndex({ - fs, - cache, - filename: indexFile, - getExternalRefDelta - }); - if (p.error) - throw new InternalError(p.error); - if (p.offsets.has(oid)) { - return true; - } - } - return false; -} -async function hasObject({ - fs, - cache, - gitdir, - oid, - format = "content" -}) { - const getExternalRefDelta = (oid2) => _readObject({ fs, cache, gitdir, oid: oid2 }); - let result = await hasObjectLoose({ fs, gitdir, oid }); - if (!result) { - result = await hasObjectPacked({ - fs, - cache, - gitdir, - oid, - getExternalRefDelta - }); - } - return result; -} -function emptyPackfile(pack) { - const pheader = "5041434b"; - const version2 = "00000002"; - const obCount = "00000000"; - const header = pheader + version2 + obCount; - return pack.slice(0, 12).toString("hex") === header; -} -function filterCapabilities(server, client) { - const serverNames = server.map((cap) => cap.split("=", 1)[0]); - return client.filter((cap) => { - const name = cap.split("=", 1)[0]; - return serverNames.includes(name); - }); -} -var pkg = { - name: "isomorphic-git", - version: "1.25.3", - agent: "git/isomorphic-git@1.25.3" -}; -var FIFO = class { - constructor() { - this._queue = []; - } - write(chunk) { - if (this._ended) { - throw Error("You cannot write to a FIFO that has already been ended!"); - } - if (this._waiting) { - const resolve = this._waiting; - this._waiting = null; - resolve({ value: chunk }); - } else { - this._queue.push(chunk); - } - } - end() { - this._ended = true; - if (this._waiting) { - const resolve = this._waiting; - this._waiting = null; - resolve({ done: true }); - } - } - destroy(err) { - this.error = err; - this.end(); - } - async next() { - if (this._queue.length > 0) { - return { value: this._queue.shift() }; - } - if (this._ended) { - return { done: true }; - } - if (this._waiting) { - throw Error( - "You cannot call read until the previous call to read has returned!" - ); - } - return new Promise((resolve) => { - this._waiting = resolve; - }); - } -}; -function findSplit(str) { - const r = str.indexOf("\r"); - const n = str.indexOf("\n"); - if (r === -1 && n === -1) - return -1; - if (r === -1) - return n + 1; - if (n === -1) - return r + 1; - if (n === r + 1) - return n + 1; - return Math.min(r, n) + 1; -} -function splitLines(input) { - const output = new FIFO(); - let tmp = ""; - (async () => { - await forAwait(input, (chunk) => { - chunk = chunk.toString("utf8"); - tmp += chunk; - while (true) { - const i = findSplit(tmp); - if (i === -1) - break; - output.write(tmp.slice(0, i)); - tmp = tmp.slice(i); - } - }); - if (tmp.length > 0) { - output.write(tmp); - } - output.end(); - })(); - return output; -} -var GitSideBand = class { - static demux(input) { - const read = GitPktLine.streamReader(input); - const packetlines = new FIFO(); - const packfile = new FIFO(); - const progress = new FIFO(); - const nextBit = async function() { - const line = await read(); - if (line === null) - return nextBit(); - if (line === true) { - packetlines.end(); - progress.end(); - input.error ? packfile.destroy(input.error) : packfile.end(); - return; - } - switch (line[0]) { - case 1: { - packfile.write(line.slice(1)); - break; - } - case 2: { - progress.write(line.slice(1)); - break; - } - case 3: { - const error = line.slice(1); - progress.write(error); - packetlines.end(); - progress.end(); - packfile.destroy(new Error(error.toString("utf8"))); - return; - } - default: { - packetlines.write(line); - } - } - nextBit(); - }; - nextBit(); - return { - packetlines, - packfile, - progress - }; - } - // static mux ({ - // protocol, // 'side-band' or 'side-band-64k' - // packetlines, - // packfile, - // progress, - // error - // }) { - // const MAX_PACKET_LENGTH = protocol === 'side-band-64k' ? 999 : 65519 - // let output = new PassThrough() - // packetlines.on('data', data => { - // if (data === null) { - // output.write(GitPktLine.flush()) - // } else { - // output.write(GitPktLine.encode(data)) - // } - // }) - // let packfileWasEmpty = true - // let packfileEnded = false - // let progressEnded = false - // let errorEnded = false - // let goodbye = Buffer.concat([ - // GitPktLine.encode(Buffer.from('010A', 'hex')), - // GitPktLine.flush() - // ]) - // packfile - // .on('data', data => { - // packfileWasEmpty = false - // const buffers = splitBuffer(data, MAX_PACKET_LENGTH) - // for (const buffer of buffers) { - // output.write( - // GitPktLine.encode(Buffer.concat([Buffer.from('01', 'hex'), buffer])) - // ) - // } - // }) - // .on('end', () => { - // packfileEnded = true - // if (!packfileWasEmpty) output.write(goodbye) - // if (progressEnded && errorEnded) output.end() - // }) - // progress - // .on('data', data => { - // const buffers = splitBuffer(data, MAX_PACKET_LENGTH) - // for (const buffer of buffers) { - // output.write( - // GitPktLine.encode(Buffer.concat([Buffer.from('02', 'hex'), buffer])) - // ) - // } - // }) - // .on('end', () => { - // progressEnded = true - // if (packfileEnded && errorEnded) output.end() - // }) - // error - // .on('data', data => { - // const buffers = splitBuffer(data, MAX_PACKET_LENGTH) - // for (const buffer of buffers) { - // output.write( - // GitPktLine.encode(Buffer.concat([Buffer.from('03', 'hex'), buffer])) - // ) - // } - // }) - // .on('end', () => { - // errorEnded = true - // if (progressEnded && packfileEnded) output.end() - // }) - // return output - // } -}; -async function parseUploadPackResponse(stream) { - const { packetlines, packfile, progress } = GitSideBand.demux(stream); - const shallows = []; - const unshallows = []; - const acks = []; - let nak = false; - let done = false; - return new Promise((resolve, reject) => { - forAwait(packetlines, (data) => { - const line = data.toString("utf8").trim(); - if (line.startsWith("shallow")) { - const oid = line.slice(-41).trim(); - if (oid.length !== 40) { - reject(new InvalidOidError(oid)); - } - shallows.push(oid); - } else if (line.startsWith("unshallow")) { - const oid = line.slice(-41).trim(); - if (oid.length !== 40) { - reject(new InvalidOidError(oid)); - } - unshallows.push(oid); - } else if (line.startsWith("ACK")) { - const [, oid, status2] = line.split(" "); - acks.push({ oid, status: status2 }); - if (!status2) - done = true; - } else if (line.startsWith("NAK")) { - nak = true; - done = true; - } else { - done = true; - nak = true; - } - if (done) { - stream.error ? reject(stream.error) : resolve({ shallows, unshallows, acks, nak, packfile, progress }); - } - }).finally(() => { - if (!done) { - stream.error ? reject(stream.error) : resolve({ shallows, unshallows, acks, nak, packfile, progress }); - } - }); - }); -} -function writeUploadPackRequest({ - capabilities = [], - wants = [], - haves = [], - shallows = [], - depth = null, - since = null, - exclude = [] -}) { - const packstream = []; - wants = [...new Set(wants)]; - let firstLineCapabilities = ` ${capabilities.join(" ")}`; - for (const oid of wants) { - packstream.push(GitPktLine.encode(`want ${oid}${firstLineCapabilities} -`)); - firstLineCapabilities = ""; - } - for (const oid of shallows) { - packstream.push(GitPktLine.encode(`shallow ${oid} -`)); - } - if (depth !== null) { - packstream.push(GitPktLine.encode(`deepen ${depth} -`)); - } - if (since !== null) { - packstream.push( - GitPktLine.encode(`deepen-since ${Math.floor(since.valueOf() / 1e3)} -`) - ); - } - for (const oid of exclude) { - packstream.push(GitPktLine.encode(`deepen-not ${oid} -`)); - } - packstream.push(GitPktLine.flush()); - for (const oid of haves) { - packstream.push(GitPktLine.encode(`have ${oid} -`)); - } - packstream.push(GitPktLine.encode(`done -`)); - return packstream; -} -async function _fetch({ - fs, - cache, - http, - onProgress, - onMessage, - onAuth, - onAuthSuccess, - onAuthFailure, - gitdir, - ref: _ref, - remoteRef: _remoteRef, - remote: _remote, - url: _url, - corsProxy, - depth = null, - since = null, - exclude = [], - relative: relative2 = false, - tags = false, - singleBranch = false, - headers = {}, - prune = false, - pruneTags = false -}) { - const ref = _ref || await _currentBranch({ fs, gitdir, test: true }); - const config = await GitConfigManager.get({ fs, gitdir }); - const remote = _remote || ref && await config.get(`branch.${ref}.remote`) || "origin"; - const url = _url || await config.get(`remote.${remote}.url`); - if (typeof url === "undefined") { - throw new MissingParameterError("remote OR url"); - } - const remoteRef = _remoteRef || ref && await config.get(`branch.${ref}.merge`) || _ref || "HEAD"; - if (corsProxy === void 0) { - corsProxy = await config.get("http.corsProxy"); - } - const GitRemoteHTTP2 = GitRemoteManager.getRemoteHelperFor({ url }); - const remoteHTTP = await GitRemoteHTTP2.discover({ - http, - onAuth, - onAuthSuccess, - onAuthFailure, - corsProxy, - service: "git-upload-pack", - url, - headers, - protocolVersion: 1 - }); - const auth = remoteHTTP.auth; - const remoteRefs = remoteHTTP.refs; - if (remoteRefs.size === 0) { - return { - defaultBranch: null, - fetchHead: null, - fetchHeadDescription: null - }; - } - if (depth !== null && !remoteHTTP.capabilities.has("shallow")) { - throw new RemoteCapabilityError("shallow", "depth"); - } - if (since !== null && !remoteHTTP.capabilities.has("deepen-since")) { - throw new RemoteCapabilityError("deepen-since", "since"); - } - if (exclude.length > 0 && !remoteHTTP.capabilities.has("deepen-not")) { - throw new RemoteCapabilityError("deepen-not", "exclude"); - } - if (relative2 === true && !remoteHTTP.capabilities.has("deepen-relative")) { - throw new RemoteCapabilityError("deepen-relative", "relative"); - } - const { oid, fullref } = GitRefManager.resolveAgainstMap({ - ref: remoteRef, - map: remoteRefs - }); - for (const remoteRef2 of remoteRefs.keys()) { - if (remoteRef2 === fullref || remoteRef2 === "HEAD" || remoteRef2.startsWith("refs/heads/") || tags && remoteRef2.startsWith("refs/tags/")) { - continue; - } - remoteRefs.delete(remoteRef2); - } - const capabilities = filterCapabilities( - [...remoteHTTP.capabilities], - [ - "multi_ack_detailed", - "no-done", - "side-band-64k", - // Note: I removed 'thin-pack' option since our code doesn't "fatten" packfiles, - // which is necessary for compatibility with git. It was the cause of mysterious - // 'fatal: pack has [x] unresolved deltas' errors that plagued us for some time. - // isomorphic-git is perfectly happy with thin packfiles in .git/objects/pack but - // canonical git it turns out is NOT. - "ofs-delta", - `agent=${pkg.agent}` - ] - ); - if (relative2) - capabilities.push("deepen-relative"); - const wants = singleBranch ? [oid] : remoteRefs.values(); - const haveRefs = singleBranch ? [ref] : await GitRefManager.listRefs({ - fs, - gitdir, - filepath: `refs` - }); - let haves = []; - for (let ref2 of haveRefs) { - try { - ref2 = await GitRefManager.expand({ fs, gitdir, ref: ref2 }); - const oid2 = await GitRefManager.resolve({ fs, gitdir, ref: ref2 }); - if (await hasObject({ fs, cache, gitdir, oid: oid2 })) { - haves.push(oid2); - } - } catch (err) { - } - } - haves = [...new Set(haves)]; - const oids = await GitShallowManager.read({ fs, gitdir }); - const shallows = remoteHTTP.capabilities.has("shallow") ? [...oids] : []; - const packstream = writeUploadPackRequest({ - capabilities, - wants, - haves, - shallows, - depth, - since, - exclude - }); - const packbuffer = Buffer.from(await collect(packstream)); - const raw = await GitRemoteHTTP2.connect({ - http, - onProgress, - corsProxy, - service: "git-upload-pack", - url, - auth, - body: [packbuffer], - headers - }); - const response = await parseUploadPackResponse(raw.body); - if (raw.headers) { - response.headers = raw.headers; - } - for (const oid2 of response.shallows) { - if (!oids.has(oid2)) { - try { - const { object } = await _readObject({ fs, cache, gitdir, oid: oid2 }); - const commit2 = new GitCommit(object); - const hasParents = await Promise.all( - commit2.headers().parent.map((oid3) => hasObject({ fs, cache, gitdir, oid: oid3 })) - ); - const haveAllParents = hasParents.length === 0 || hasParents.every((has) => has); - if (!haveAllParents) { - oids.add(oid2); - } - } catch (err) { - oids.add(oid2); - } - } - } - for (const oid2 of response.unshallows) { - oids.delete(oid2); - } - await GitShallowManager.write({ fs, gitdir, oids }); - if (singleBranch) { - const refs = /* @__PURE__ */ new Map([[fullref, oid]]); - const symrefs = /* @__PURE__ */ new Map(); - let bail = 10; - let key2 = fullref; - while (bail--) { - const value = remoteHTTP.symrefs.get(key2); - if (value === void 0) - break; - symrefs.set(key2, value); - key2 = value; - } - const realRef = remoteRefs.get(key2); - if (realRef) { - refs.set(key2, realRef); - } - const { pruned } = await GitRefManager.updateRemoteRefs({ - fs, - gitdir, - remote, - refs, - symrefs, - tags, - prune - }); - if (prune) { - response.pruned = pruned; - } - } else { - const { pruned } = await GitRefManager.updateRemoteRefs({ - fs, - gitdir, - remote, - refs: remoteRefs, - symrefs: remoteHTTP.symrefs, - tags, - prune, - pruneTags - }); - if (prune) { - response.pruned = pruned; - } - } - response.HEAD = remoteHTTP.symrefs.get("HEAD"); - if (response.HEAD === void 0) { - const { oid: oid2 } = GitRefManager.resolveAgainstMap({ - ref: "HEAD", - map: remoteRefs - }); - for (const [key2, value] of remoteRefs.entries()) { - if (key2 !== "HEAD" && value === oid2) { - response.HEAD = key2; - break; - } - } - } - const noun = fullref.startsWith("refs/tags") ? "tag" : "branch"; - response.FETCH_HEAD = { - oid, - description: `${noun} '${abbreviateRef(fullref)}' of ${url}` - }; - if (onProgress || onMessage) { - const lines = splitLines(response.progress); - forAwait(lines, async (line) => { - if (onMessage) - await onMessage(line); - if (onProgress) { - const matches = line.match(/([^:]*).*\((\d+?)\/(\d+?)\)/); - if (matches) { - await onProgress({ - phase: matches[1].trim(), - loaded: parseInt(matches[2], 10), - total: parseInt(matches[3], 10) - }); - } - } - }); - } - const packfile = Buffer.from(await collect(response.packfile)); - if (raw.body.error) - throw raw.body.error; - const packfileSha = packfile.slice(-20).toString("hex"); - const res = { - defaultBranch: response.HEAD, - fetchHead: response.FETCH_HEAD.oid, - fetchHeadDescription: response.FETCH_HEAD.description - }; - if (response.headers) { - res.headers = response.headers; - } - if (prune) { - res.pruned = response.pruned; - } - if (packfileSha !== "" && !emptyPackfile(packfile)) { - res.packfile = `objects/pack/pack-${packfileSha}.pack`; - const fullpath = join(gitdir, res.packfile); - await fs.write(fullpath, packfile); - const getExternalRefDelta = (oid2) => _readObject({ fs, cache, gitdir, oid: oid2 }); - const idx = await GitPackIndex.fromPack({ - pack: packfile, - getExternalRefDelta, - onProgress - }); - await fs.write(fullpath.replace(/\.pack$/, ".idx"), await idx.toBuffer()); - } - return res; -} -async function _init({ - fs, - bare = false, - dir, - gitdir = bare ? dir : join(dir, ".git"), - defaultBranch = "master" -}) { - if (await fs.exists(gitdir + "/config")) - return; - let folders = [ - "hooks", - "info", - "objects/info", - "objects/pack", - "refs/heads", - "refs/tags" - ]; - folders = folders.map((dir2) => gitdir + "/" + dir2); - for (const folder of folders) { - await fs.mkdir(folder); - } - await fs.write( - gitdir + "/config", - `[core] - repositoryformatversion = 0 - filemode = false - bare = ${bare} -` + (bare ? "" : " logallrefupdates = true\n") + " symlinks = false\n ignorecase = true\n" - ); - await fs.write(gitdir + "/HEAD", `ref: refs/heads/${defaultBranch} -`); -} -async function _clone({ - fs, - cache, - http, - onProgress, - onMessage, - onAuth, - onAuthSuccess, - onAuthFailure, - dir, - gitdir, - url, - corsProxy, - ref, - remote, - depth, - since, - exclude, - relative: relative2, - singleBranch, - noCheckout, - noTags, - headers -}) { - try { - await _init({ fs, gitdir }); - await _addRemote({ fs, gitdir, remote, url, force: false }); - if (corsProxy) { - const config = await GitConfigManager.get({ fs, gitdir }); - await config.set(`http.corsProxy`, corsProxy); - await GitConfigManager.save({ fs, gitdir, config }); - } - const { defaultBranch, fetchHead } = await _fetch({ - fs, - cache, - http, - onProgress, - onMessage, - onAuth, - onAuthSuccess, - onAuthFailure, - gitdir, - ref, - remote, - corsProxy, - depth, - since, - exclude, - relative: relative2, - singleBranch, - headers, - tags: !noTags - }); - if (fetchHead === null) - return; - ref = ref || defaultBranch; - ref = ref.replace("refs/heads/", ""); - await _checkout({ - fs, - cache, - onProgress, - dir, - gitdir, - ref, - remote, - noCheckout - }); - } catch (err) { - await fs.rmdir(gitdir, { recursive: true, maxRetries: 10 }).catch(() => void 0); - throw err; - } -} -async function clone({ - fs, - http, - onProgress, - onMessage, - onAuth, - onAuthSuccess, - onAuthFailure, - dir, - gitdir = join(dir, ".git"), - url, - corsProxy = void 0, - ref = void 0, - remote = "origin", - depth = void 0, - since = void 0, - exclude = [], - relative: relative2 = false, - singleBranch = false, - noCheckout = false, - noTags = false, - headers = {}, - cache = {} -}) { - try { - assertParameter("fs", fs); - assertParameter("http", http); - assertParameter("gitdir", gitdir); - if (!noCheckout) { - assertParameter("dir", dir); - } - assertParameter("url", url); - return await _clone({ - fs: new FileSystem(fs), - cache, - http, - onProgress, - onMessage, - onAuth, - onAuthSuccess, - onAuthFailure, - dir, - gitdir, - url, - corsProxy, - ref, - remote, - depth, - since, - exclude, - relative: relative2, - singleBranch, - noCheckout, - noTags, - headers - }); - } catch (err) { - err.caller = "git.clone"; - throw err; - } -} -async function commit({ - fs: _fs, - onSign, - dir, - gitdir = join(dir, ".git"), - message, - author: _author, - committer: _committer, - signingKey, - dryRun = false, - noUpdateBranch = false, - ref, - parent, - tree, - cache = {} -}) { - try { - assertParameter("fs", _fs); - assertParameter("message", message); - if (signingKey) { - assertParameter("onSign", onSign); - } - const fs = new FileSystem(_fs); - const author = await normalizeAuthorObject({ fs, gitdir, author: _author }); - if (!author) - throw new MissingNameError("author"); - const committer = await normalizeCommitterObject({ - fs, - gitdir, - author, - committer: _committer - }); - if (!committer) - throw new MissingNameError("committer"); - return await _commit({ - fs, - cache, - onSign, - gitdir, - message, - author, - committer, - signingKey, - dryRun, - noUpdateBranch, - ref, - parent, - tree - }); - } catch (err) { - err.caller = "git.commit"; - throw err; - } -} -async function currentBranch({ - fs, - dir, - gitdir = join(dir, ".git"), - fullname = false, - test = false -}) { - try { - assertParameter("fs", fs); - assertParameter("gitdir", gitdir); - return await _currentBranch({ - fs: new FileSystem(fs), - gitdir, - fullname, - test - }); - } catch (err) { - err.caller = "git.currentBranch"; - throw err; - } -} -async function _deleteBranch({ fs, gitdir, ref }) { - ref = ref.startsWith("refs/heads/") ? ref : `refs/heads/${ref}`; - const exist = await GitRefManager.exists({ fs, gitdir, ref }); - if (!exist) { - throw new NotFoundError(ref); - } - const fullRef = await GitRefManager.expand({ fs, gitdir, ref }); - const currentRef = await _currentBranch({ fs, gitdir, fullname: true }); - if (fullRef === currentRef) { - const value = await GitRefManager.resolve({ fs, gitdir, ref: fullRef }); - await GitRefManager.writeRef({ fs, gitdir, ref: "HEAD", value }); - } - await GitRefManager.deleteRef({ fs, gitdir, ref: fullRef }); -} -async function deleteBranch({ - fs, - dir, - gitdir = join(dir, ".git"), - ref -}) { - try { - assertParameter("fs", fs); - assertParameter("ref", ref); - return await _deleteBranch({ - fs: new FileSystem(fs), - gitdir, - ref - }); - } catch (err) { - err.caller = "git.deleteBranch"; - throw err; - } -} -async function deleteRef({ fs, dir, gitdir = join(dir, ".git"), ref }) { - try { - assertParameter("fs", fs); - assertParameter("ref", ref); - await GitRefManager.deleteRef({ fs: new FileSystem(fs), gitdir, ref }); - } catch (err) { - err.caller = "git.deleteRef"; - throw err; - } -} -async function _deleteRemote({ fs, gitdir, remote }) { - const config = await GitConfigManager.get({ fs, gitdir }); - await config.deleteSection("remote", remote); - await GitConfigManager.save({ fs, gitdir, config }); -} -async function deleteRemote({ - fs, - dir, - gitdir = join(dir, ".git"), - remote -}) { - try { - assertParameter("fs", fs); - assertParameter("remote", remote); - return await _deleteRemote({ - fs: new FileSystem(fs), - gitdir, - remote - }); - } catch (err) { - err.caller = "git.deleteRemote"; - throw err; - } -} -async function _deleteTag({ fs, gitdir, ref }) { - ref = ref.startsWith("refs/tags/") ? ref : `refs/tags/${ref}`; - await GitRefManager.deleteRef({ fs, gitdir, ref }); -} -async function deleteTag({ fs, dir, gitdir = join(dir, ".git"), ref }) { - try { - assertParameter("fs", fs); - assertParameter("ref", ref); - return await _deleteTag({ - fs: new FileSystem(fs), - gitdir, - ref - }); - } catch (err) { - err.caller = "git.deleteTag"; - throw err; - } -} -async function expandOidLoose({ fs, gitdir, oid: short }) { - const prefix = short.slice(0, 2); - const objectsSuffixes = await fs.readdir(`${gitdir}/objects/${prefix}`); - return objectsSuffixes.map((suffix) => `${prefix}${suffix}`).filter((_oid) => _oid.startsWith(short)); -} -async function expandOidPacked({ - fs, - cache, - gitdir, - oid: short, - getExternalRefDelta -}) { - const results = []; - let list = await fs.readdir(join(gitdir, "objects/pack")); - list = list.filter((x) => x.endsWith(".idx")); - for (const filename of list) { - const indexFile = `${gitdir}/objects/pack/${filename}`; - const p = await readPackIndex({ - fs, - cache, - filename: indexFile, - getExternalRefDelta - }); - if (p.error) - throw new InternalError(p.error); - for (const oid of p.offsets.keys()) { - if (oid.startsWith(short)) - results.push(oid); - } - } - return results; -} -async function _expandOid({ fs, cache, gitdir, oid: short }) { - const getExternalRefDelta = (oid) => _readObject({ fs, cache, gitdir, oid }); - const results = await expandOidLoose({ fs, gitdir, oid: short }); - const packedOids = await expandOidPacked({ - fs, - cache, - gitdir, - oid: short, - getExternalRefDelta - }); - for (const packedOid of packedOids) { - if (results.indexOf(packedOid) === -1) { - results.push(packedOid); - } - } - if (results.length === 1) { - return results[0]; - } - if (results.length > 1) { - throw new AmbiguousError("oids", short, results); - } - throw new NotFoundError(`an object matching "${short}"`); -} -async function expandOid({ - fs, - dir, - gitdir = join(dir, ".git"), - oid, - cache = {} -}) { - try { - assertParameter("fs", fs); - assertParameter("gitdir", gitdir); - assertParameter("oid", oid); - return await _expandOid({ - fs: new FileSystem(fs), - cache, - gitdir, - oid - }); - } catch (err) { - err.caller = "git.expandOid"; - throw err; - } -} -async function expandRef({ fs, dir, gitdir = join(dir, ".git"), ref }) { - try { - assertParameter("fs", fs); - assertParameter("gitdir", gitdir); - assertParameter("ref", ref); - return await GitRefManager.expand({ - fs: new FileSystem(fs), - gitdir, - ref - }); - } catch (err) { - err.caller = "git.expandRef"; - throw err; - } -} -async function _findMergeBase({ fs, cache, gitdir, oids }) { - const visits = {}; - const passes = oids.length; - let heads = oids.map((oid, index2) => ({ index: index2, oid })); - while (heads.length) { - const result = /* @__PURE__ */ new Set(); - for (const { oid, index: index2 } of heads) { - if (!visits[oid]) - visits[oid] = /* @__PURE__ */ new Set(); - visits[oid].add(index2); - if (visits[oid].size === passes) { - result.add(oid); - } - } - if (result.size > 0) { - return [...result]; - } - const newheads = /* @__PURE__ */ new Map(); - for (const { oid, index: index2 } of heads) { - try { - const { object } = await _readObject({ fs, cache, gitdir, oid }); - const commit2 = GitCommit.from(object); - const { parent } = commit2.parseHeaders(); - for (const oid2 of parent) { - if (!visits[oid2] || !visits[oid2].has(index2)) { - newheads.set(oid2 + ":" + index2, { oid: oid2, index: index2 }); - } - } - } catch (err) { - } - } - heads = Array.from(newheads.values()); - } - return []; -} -var LINEBREAKS = /^.*(\r?\n|$)/gm; -function mergeFile({ branches, contents }) { - const ourName = branches[1]; - const theirName = branches[2]; - const baseContent = contents[0]; - const ourContent = contents[1]; - const theirContent = contents[2]; - const ours = ourContent.match(LINEBREAKS); - const base = baseContent.match(LINEBREAKS); - const theirs = theirContent.match(LINEBREAKS); - const result = (0, import_diff3.default)(ours, base, theirs); - const markerSize = 7; - let mergedText = ""; - let cleanMerge = true; - for (const item of result) { - if (item.ok) { - mergedText += item.ok.join(""); - } - if (item.conflict) { - cleanMerge = false; - mergedText += `${"<".repeat(markerSize)} ${ourName} -`; - mergedText += item.conflict.a.join(""); - mergedText += `${"=".repeat(markerSize)} -`; - mergedText += item.conflict.b.join(""); - mergedText += `${">".repeat(markerSize)} ${theirName} -`; - } - } - return { cleanMerge, mergedText }; -} -async function mergeTree({ - fs, - cache, - dir, - gitdir = join(dir, ".git"), - index: index2, - ourOid, - baseOid, - theirOid, - ourName = "ours", - baseName = "base", - theirName = "theirs", - dryRun = false, - abortOnConflict = true, - mergeDriver -}) { - const ourTree = TREE({ ref: ourOid }); - const baseTree = TREE({ ref: baseOid }); - const theirTree = TREE({ ref: theirOid }); - const unmergedFiles = []; - const bothModified = []; - const deleteByUs = []; - const deleteByTheirs = []; - const results = await _walk({ - fs, - cache, - dir, - gitdir, - trees: [ourTree, baseTree, theirTree], - map: async function(filepath, [ours, base, theirs]) { - const path2 = basename(filepath); - const ourChange = await modified(ours, base); - const theirChange = await modified(theirs, base); - switch (`${ourChange}-${theirChange}`) { - case "false-false": { - return { - mode: await base.mode(), - path: path2, - oid: await base.oid(), - type: await base.type() - }; - } - case "false-true": { - return theirs ? { - mode: await theirs.mode(), - path: path2, - oid: await theirs.oid(), - type: await theirs.type() - } : void 0; - } - case "true-false": { - return ours ? { - mode: await ours.mode(), - path: path2, - oid: await ours.oid(), - type: await ours.type() - } : void 0; - } - case "true-true": { - if (ours && base && theirs && await ours.type() === "blob" && await base.type() === "blob" && await theirs.type() === "blob") { - return mergeBlobs({ - fs, - gitdir, - path: path2, - ours, - base, - theirs, - ourName, - baseName, - theirName, - mergeDriver - }).then(async (r) => { - if (!r.cleanMerge) { - unmergedFiles.push(filepath); - bothModified.push(filepath); - if (!abortOnConflict) { - const baseOid2 = await base.oid(); - const ourOid2 = await ours.oid(); - const theirOid2 = await theirs.oid(); - index2.delete({ filepath }); - index2.insert({ filepath, oid: baseOid2, stage: 1 }); - index2.insert({ filepath, oid: ourOid2, stage: 2 }); - index2.insert({ filepath, oid: theirOid2, stage: 3 }); - } - } else if (!abortOnConflict) { - index2.insert({ filepath, oid: r.mergeResult.oid, stage: 0 }); - } - return r.mergeResult; - }); - } - if (base && !ours && theirs && await base.type() === "blob" && await theirs.type() === "blob") { - unmergedFiles.push(filepath); - deleteByUs.push(filepath); - if (!abortOnConflict) { - const baseOid2 = await base.oid(); - const theirOid2 = await theirs.oid(); - index2.delete({ filepath }); - index2.insert({ filepath, oid: baseOid2, stage: 1 }); - index2.insert({ filepath, oid: theirOid2, stage: 3 }); - } - return { - mode: await theirs.mode(), - oid: await theirs.oid(), - type: "blob", - path: path2 - }; - } - if (base && ours && !theirs && await base.type() === "blob" && await ours.type() === "blob") { - unmergedFiles.push(filepath); - deleteByTheirs.push(filepath); - if (!abortOnConflict) { - const baseOid2 = await base.oid(); - const ourOid2 = await ours.oid(); - index2.delete({ filepath }); - index2.insert({ filepath, oid: baseOid2, stage: 1 }); - index2.insert({ filepath, oid: ourOid2, stage: 2 }); - } - return { - mode: await ours.mode(), - oid: await ours.oid(), - type: "blob", - path: path2 - }; - } - if (base && !ours && !theirs && await base.type() === "blob") { - return void 0; - } - throw new MergeNotSupportedError(); - } - } - }, - /** - * @param {TreeEntry} [parent] - * @param {Array} children - */ - reduce: unmergedFiles.length !== 0 && (!dir || abortOnConflict) ? void 0 : async (parent, children2) => { - const entries = children2.filter(Boolean); - if (!parent) - return; - if (parent && parent.type === "tree" && entries.length === 0) - return; - if (entries.length > 0) { - const tree = new GitTree(entries); - const object = tree.toObject(); - const oid = await _writeObject({ - fs, - gitdir, - type: "tree", - object, - dryRun - }); - parent.oid = oid; - } - return parent; - } - }); - if (unmergedFiles.length !== 0) { - if (dir && !abortOnConflict) { - await _walk({ - fs, - cache, - dir, - gitdir, - trees: [TREE({ ref: results.oid })], - map: async function(filepath, [entry]) { - const path2 = `${dir}/${filepath}`; - if (await entry.type() === "blob") { - const mode = await entry.mode(); - const content = new TextDecoder().decode(await entry.content()); - await fs.write(path2, content, { mode }); - } - return true; - } - }); - } - return new MergeConflictError( - unmergedFiles, - bothModified, - deleteByUs, - deleteByTheirs - ); - } - return results.oid; -} -async function mergeBlobs({ - fs, - gitdir, - path: path2, - ours, - base, - theirs, - ourName, - theirName, - baseName, - dryRun, - mergeDriver = mergeFile -}) { - const type = "blob"; - const mode = await base.mode() === await ours.mode() ? await theirs.mode() : await ours.mode(); - if (await ours.oid() === await theirs.oid()) { - return { - cleanMerge: true, - mergeResult: { mode, path: path2, oid: await ours.oid(), type } - }; - } - if (await ours.oid() === await base.oid()) { - return { - cleanMerge: true, - mergeResult: { mode, path: path2, oid: await theirs.oid(), type } - }; - } - if (await theirs.oid() === await base.oid()) { - return { - cleanMerge: true, - mergeResult: { mode, path: path2, oid: await ours.oid(), type } - }; - } - const ourContent = Buffer.from(await ours.content()).toString("utf8"); - const baseContent = Buffer.from(await base.content()).toString("utf8"); - const theirContent = Buffer.from(await theirs.content()).toString("utf8"); - const { mergedText, cleanMerge } = await mergeDriver({ - branches: [baseName, ourName, theirName], - contents: [baseContent, ourContent, theirContent], - path: path2 - }); - const oid = await _writeObject({ - fs, - gitdir, - type: "blob", - object: Buffer.from(mergedText, "utf8"), - dryRun - }); - return { cleanMerge, mergeResult: { mode, path: path2, oid, type } }; -} -async function _merge({ - fs, - cache, - dir, - gitdir, - ours, - theirs, - fastForward: fastForward2 = true, - fastForwardOnly = false, - dryRun = false, - noUpdateBranch = false, - abortOnConflict = true, - message, - author, - committer, - signingKey, - onSign, - mergeDriver -}) { - if (ours === void 0) { - ours = await _currentBranch({ fs, gitdir, fullname: true }); - } - ours = await GitRefManager.expand({ - fs, - gitdir, - ref: ours - }); - theirs = await GitRefManager.expand({ - fs, - gitdir, - ref: theirs - }); - const ourOid = await GitRefManager.resolve({ - fs, - gitdir, - ref: ours - }); - const theirOid = await GitRefManager.resolve({ - fs, - gitdir, - ref: theirs - }); - const baseOids = await _findMergeBase({ - fs, - cache, - gitdir, - oids: [ourOid, theirOid] - }); - if (baseOids.length !== 1) { - throw new MergeNotSupportedError(); - } - const baseOid = baseOids[0]; - if (baseOid === theirOid) { - return { - oid: ourOid, - alreadyMerged: true - }; - } - if (fastForward2 && baseOid === ourOid) { - if (!dryRun && !noUpdateBranch) { - await GitRefManager.writeRef({ fs, gitdir, ref: ours, value: theirOid }); - } - return { - oid: theirOid, - fastForward: true - }; - } else { - if (fastForwardOnly) { - throw new FastForwardError(); - } - const tree = await GitIndexManager.acquire( - { fs, gitdir, cache, allowUnmerged: false }, - async (index2) => { - return mergeTree({ - fs, - cache, - dir, - gitdir, - index: index2, - ourOid, - theirOid, - baseOid, - ourName: abbreviateRef(ours), - baseName: "base", - theirName: abbreviateRef(theirs), - dryRun, - abortOnConflict, - mergeDriver - }); - } - ); - if (tree instanceof MergeConflictError) - throw tree; - if (!message) { - message = `Merge branch '${abbreviateRef(theirs)}' into ${abbreviateRef( - ours - )}`; - } - const oid = await _commit({ - fs, - cache, - gitdir, - message, - ref: ours, - tree, - parent: [ourOid, theirOid], - author, - committer, - signingKey, - onSign, - dryRun, - noUpdateBranch - }); - return { - oid, - tree, - mergeCommit: true - }; - } -} -async function _pull({ - fs, - cache, - http, - onProgress, - onMessage, - onAuth, - onAuthSuccess, - onAuthFailure, - dir, - gitdir, - ref, - url, - remote, - remoteRef, - prune, - pruneTags, - fastForward: fastForward2, - fastForwardOnly, - corsProxy, - singleBranch, - headers, - author, - committer, - signingKey -}) { - try { - if (!ref) { - const head = await _currentBranch({ fs, gitdir }); - if (!head) { - throw new MissingParameterError("ref"); - } - ref = head; - } - const { fetchHead, fetchHeadDescription } = await _fetch({ - fs, - cache, - http, - onProgress, - onMessage, - onAuth, - onAuthSuccess, - onAuthFailure, - gitdir, - corsProxy, - ref, - url, - remote, - remoteRef, - singleBranch, - headers, - prune, - pruneTags - }); - await _merge({ - fs, - cache, - gitdir, - ours: ref, - theirs: fetchHead, - fastForward: fastForward2, - fastForwardOnly, - message: `Merge ${fetchHeadDescription}`, - author, - committer, - signingKey, - dryRun: false, - noUpdateBranch: false - }); - await _checkout({ - fs, - cache, - onProgress, - dir, - gitdir, - ref, - remote, - noCheckout: false - }); - } catch (err) { - err.caller = "git.pull"; - throw err; - } -} -async function fastForward({ - fs, - http, - onProgress, - onMessage, - onAuth, - onAuthSuccess, - onAuthFailure, - dir, - gitdir = join(dir, ".git"), - ref, - url, - remote, - remoteRef, - corsProxy, - singleBranch, - headers = {}, - cache = {} -}) { - try { - assertParameter("fs", fs); - assertParameter("http", http); - assertParameter("gitdir", gitdir); - const thisWillNotBeUsed = { - name: "", - email: "", - timestamp: Date.now(), - timezoneOffset: 0 - }; - return await _pull({ - fs: new FileSystem(fs), - cache, - http, - onProgress, - onMessage, - onAuth, - onAuthSuccess, - onAuthFailure, - dir, - gitdir, - ref, - url, - remote, - remoteRef, - fastForwardOnly: true, - corsProxy, - singleBranch, - headers, - author: thisWillNotBeUsed, - committer: thisWillNotBeUsed - }); - } catch (err) { - err.caller = "git.fastForward"; - throw err; - } -} -async function fetch({ - fs, - http, - onProgress, - onMessage, - onAuth, - onAuthSuccess, - onAuthFailure, - dir, - gitdir = join(dir, ".git"), - ref, - remote, - remoteRef, - url, - corsProxy, - depth = null, - since = null, - exclude = [], - relative: relative2 = false, - tags = false, - singleBranch = false, - headers = {}, - prune = false, - pruneTags = false, - cache = {} -}) { - try { - assertParameter("fs", fs); - assertParameter("http", http); - assertParameter("gitdir", gitdir); - return await _fetch({ - fs: new FileSystem(fs), - cache, - http, - onProgress, - onMessage, - onAuth, - onAuthSuccess, - onAuthFailure, - gitdir, - ref, - remote, - remoteRef, - url, - corsProxy, - depth, - since, - exclude, - relative: relative2, - tags, - singleBranch, - headers, - prune, - pruneTags - }); - } catch (err) { - err.caller = "git.fetch"; - throw err; - } -} -async function findMergeBase({ - fs, - dir, - gitdir = join(dir, ".git"), - oids, - cache = {} -}) { - try { - assertParameter("fs", fs); - assertParameter("gitdir", gitdir); - assertParameter("oids", oids); - return await _findMergeBase({ - fs: new FileSystem(fs), - cache, - gitdir, - oids - }); - } catch (err) { - err.caller = "git.findMergeBase"; - throw err; - } -} -async function _findRoot({ fs, filepath }) { - if (await fs.exists(join(filepath, ".git"))) { - return filepath; - } else { - const parent = dirname(filepath); - if (parent === filepath) { - throw new NotFoundError(`git root for ${filepath}`); - } - return _findRoot({ fs, filepath: parent }); - } -} -async function findRoot({ fs, filepath }) { - try { - assertParameter("fs", fs); - assertParameter("filepath", filepath); - return await _findRoot({ fs: new FileSystem(fs), filepath }); - } catch (err) { - err.caller = "git.findRoot"; - throw err; - } -} -async function getConfig({ fs, dir, gitdir = join(dir, ".git"), path: path2 }) { - try { - assertParameter("fs", fs); - assertParameter("gitdir", gitdir); - assertParameter("path", path2); - return await _getConfig({ - fs: new FileSystem(fs), - gitdir, - path: path2 - }); - } catch (err) { - err.caller = "git.getConfig"; - throw err; - } -} -async function _getConfigAll({ fs, gitdir, path: path2 }) { - const config = await GitConfigManager.get({ fs, gitdir }); - return config.getall(path2); -} -async function getConfigAll({ - fs, - dir, - gitdir = join(dir, ".git"), - path: path2 -}) { - try { - assertParameter("fs", fs); - assertParameter("gitdir", gitdir); - assertParameter("path", path2); - return await _getConfigAll({ - fs: new FileSystem(fs), - gitdir, - path: path2 - }); - } catch (err) { - err.caller = "git.getConfigAll"; - throw err; - } -} -async function getRemoteInfo({ - http, - onAuth, - onAuthSuccess, - onAuthFailure, - corsProxy, - url, - headers = {}, - forPush = false -}) { - try { - assertParameter("http", http); - assertParameter("url", url); - const GitRemoteHTTP2 = GitRemoteManager.getRemoteHelperFor({ url }); - const remote = await GitRemoteHTTP2.discover({ - http, - onAuth, - onAuthSuccess, - onAuthFailure, - corsProxy, - service: forPush ? "git-receive-pack" : "git-upload-pack", - url, - headers, - protocolVersion: 1 - }); - const result = { - capabilities: [...remote.capabilities] - }; - for (const [ref, oid] of remote.refs) { - const parts = ref.split("/"); - const last2 = parts.pop(); - let o = result; - for (const part of parts) { - o[part] = o[part] || {}; - o = o[part]; - } - o[last2] = oid; - } - for (const [symref, ref] of remote.symrefs) { - const parts = symref.split("/"); - const last2 = parts.pop(); - let o = result; - for (const part of parts) { - o[part] = o[part] || {}; - o = o[part]; - } - o[last2] = ref; - } - return result; - } catch (err) { - err.caller = "git.getRemoteInfo"; - throw err; - } -} -function formatInfoRefs(remote, prefix, symrefs, peelTags) { - const refs = []; - for (const [key2, value] of remote.refs) { - if (prefix && !key2.startsWith(prefix)) - continue; - if (key2.endsWith("^{}")) { - if (peelTags) { - const _key = key2.replace("^{}", ""); - const last2 = refs[refs.length - 1]; - const r = last2.ref === _key ? last2 : refs.find((x) => x.ref === _key); - if (r === void 0) { - throw new Error("I did not expect this to happen"); - } - r.peeled = value; - } - continue; - } - const ref = { ref: key2, oid: value }; - if (symrefs) { - if (remote.symrefs.has(key2)) { - ref.target = remote.symrefs.get(key2); - } - } - refs.push(ref); - } - return refs; -} -async function getRemoteInfo2({ - http, - onAuth, - onAuthSuccess, - onAuthFailure, - corsProxy, - url, - headers = {}, - forPush = false, - protocolVersion = 2 -}) { - try { - assertParameter("http", http); - assertParameter("url", url); - const GitRemoteHTTP2 = GitRemoteManager.getRemoteHelperFor({ url }); - const remote = await GitRemoteHTTP2.discover({ - http, - onAuth, - onAuthSuccess, - onAuthFailure, - corsProxy, - service: forPush ? "git-receive-pack" : "git-upload-pack", - url, - headers, - protocolVersion - }); - if (remote.protocolVersion === 2) { - return { - protocolVersion: remote.protocolVersion, - capabilities: remote.capabilities2 - }; - } - const capabilities = {}; - for (const cap of remote.capabilities) { - const [key2, value] = cap.split("="); - if (value) { - capabilities[key2] = value; - } else { - capabilities[key2] = true; - } - } - return { - protocolVersion: 1, - capabilities, - refs: formatInfoRefs(remote, void 0, true, true) - }; - } catch (err) { - err.caller = "git.getRemoteInfo2"; - throw err; - } -} -async function hashObject({ - type, - object, - format = "content", - oid = void 0 -}) { - if (format !== "deflated") { - if (format !== "wrapped") { - object = GitObject.wrap({ type, object }); - } - oid = await shasum(object); - } - return { oid, object }; -} -async function hashBlob({ object }) { - try { - assertParameter("object", object); - if (typeof object === "string") { - object = Buffer.from(object, "utf8"); - } else { - object = Buffer.from(object); - } - const type = "blob"; - const { oid, object: _object } = await hashObject({ - type: "blob", - format: "content", - object - }); - return { oid, type, object: new Uint8Array(_object), format: "wrapped" }; - } catch (err) { - err.caller = "git.hashBlob"; - throw err; - } -} -async function _indexPack({ - fs, - cache, - onProgress, - dir, - gitdir, - filepath -}) { - try { - filepath = join(dir, filepath); - const pack = await fs.read(filepath); - const getExternalRefDelta = (oid) => _readObject({ fs, cache, gitdir, oid }); - const idx = await GitPackIndex.fromPack({ - pack, - getExternalRefDelta, - onProgress - }); - await fs.write(filepath.replace(/\.pack$/, ".idx"), await idx.toBuffer()); - return { - oids: [...idx.hashes] - }; - } catch (err) { - err.caller = "git.indexPack"; - throw err; - } -} -async function indexPack({ - fs, - onProgress, - dir, - gitdir = join(dir, ".git"), - filepath, - cache = {} -}) { - try { - assertParameter("fs", fs); - assertParameter("dir", dir); - assertParameter("gitdir", dir); - assertParameter("filepath", filepath); - return await _indexPack({ - fs: new FileSystem(fs), - cache, - onProgress, - dir, - gitdir, - filepath - }); - } catch (err) { - err.caller = "git.indexPack"; - throw err; - } -} -async function init({ - fs, - bare = false, - dir, - gitdir = bare ? dir : join(dir, ".git"), - defaultBranch = "master" -}) { - try { - assertParameter("fs", fs); - assertParameter("gitdir", gitdir); - if (!bare) { - assertParameter("dir", dir); - } - return await _init({ - fs: new FileSystem(fs), - bare, - dir, - gitdir, - defaultBranch - }); - } catch (err) { - err.caller = "git.init"; - throw err; - } -} -async function _isDescendent({ - fs, - cache, - gitdir, - oid, - ancestor, - depth -}) { - const shallows = await GitShallowManager.read({ fs, gitdir }); - if (!oid) { - throw new MissingParameterError("oid"); - } - if (!ancestor) { - throw new MissingParameterError("ancestor"); - } - if (oid === ancestor) - return false; - const queue = [oid]; - const visited = /* @__PURE__ */ new Set(); - let searchdepth = 0; - while (queue.length) { - if (searchdepth++ === depth) { - throw new MaxDepthError(depth); - } - const oid2 = queue.shift(); - const { type, object } = await _readObject({ - fs, - cache, - gitdir, - oid: oid2 - }); - if (type !== "commit") { - throw new ObjectTypeError(oid2, type, "commit"); - } - const commit2 = GitCommit.from(object).parse(); - for (const parent of commit2.parent) { - if (parent === ancestor) - return true; - } - if (!shallows.has(oid2)) { - for (const parent of commit2.parent) { - if (!visited.has(parent)) { - queue.push(parent); - visited.add(parent); - } - } - } - } - return false; -} -async function isDescendent({ - fs, - dir, - gitdir = join(dir, ".git"), - oid, - ancestor, - depth = -1, - cache = {} -}) { - try { - assertParameter("fs", fs); - assertParameter("gitdir", gitdir); - assertParameter("oid", oid); - assertParameter("ancestor", ancestor); - return await _isDescendent({ - fs: new FileSystem(fs), - cache, - gitdir, - oid, - ancestor, - depth - }); - } catch (err) { - err.caller = "git.isDescendent"; - throw err; - } -} -async function isIgnored({ - fs, - dir, - gitdir = join(dir, ".git"), - filepath -}) { - try { - assertParameter("fs", fs); - assertParameter("dir", dir); - assertParameter("gitdir", gitdir); - assertParameter("filepath", filepath); - return GitIgnoreManager.isIgnored({ - fs: new FileSystem(fs), - dir, - gitdir, - filepath - }); - } catch (err) { - err.caller = "git.isIgnored"; - throw err; - } -} -async function listBranches({ - fs, - dir, - gitdir = join(dir, ".git"), - remote -}) { - try { - assertParameter("fs", fs); - assertParameter("gitdir", gitdir); - return GitRefManager.listBranches({ - fs: new FileSystem(fs), - gitdir, - remote - }); - } catch (err) { - err.caller = "git.listBranches"; - throw err; - } -} -async function _listFiles({ fs, gitdir, ref, cache }) { - if (ref) { - const oid = await GitRefManager.resolve({ gitdir, fs, ref }); - const filenames = []; - await accumulateFilesFromOid({ - fs, - cache, - gitdir, - oid, - filenames, - prefix: "" - }); - return filenames; - } else { - return GitIndexManager.acquire({ fs, gitdir, cache }, async function(index2) { - return index2.entries.map((x) => x.path); - }); - } -} -async function accumulateFilesFromOid({ - fs, - cache, - gitdir, - oid, - filenames, - prefix -}) { - const { tree } = await _readTree({ fs, cache, gitdir, oid }); - for (const entry of tree) { - if (entry.type === "tree") { - await accumulateFilesFromOid({ - fs, - cache, - gitdir, - oid: entry.oid, - filenames, - prefix: join(prefix, entry.path) - }); - } else { - filenames.push(join(prefix, entry.path)); - } - } -} -async function listFiles({ - fs, - dir, - gitdir = join(dir, ".git"), - ref, - cache = {} -}) { - try { - assertParameter("fs", fs); - assertParameter("gitdir", gitdir); - return await _listFiles({ - fs: new FileSystem(fs), - cache, - gitdir, - ref - }); - } catch (err) { - err.caller = "git.listFiles"; - throw err; - } -} -async function _listNotes({ fs, cache, gitdir, ref }) { - let parent; - try { - parent = await GitRefManager.resolve({ gitdir, fs, ref }); - } catch (err) { - if (err instanceof NotFoundError) { - return []; - } - } - const result = await _readTree({ - fs, - cache, - gitdir, - oid: parent - }); - const notes = result.tree.map((entry) => ({ - target: entry.path, - note: entry.oid - })); - return notes; -} -async function listNotes({ - fs, - dir, - gitdir = join(dir, ".git"), - ref = "refs/notes/commits", - cache = {} -}) { - try { - assertParameter("fs", fs); - assertParameter("gitdir", gitdir); - assertParameter("ref", ref); - return await _listNotes({ - fs: new FileSystem(fs), - cache, - gitdir, - ref - }); - } catch (err) { - err.caller = "git.listNotes"; - throw err; - } -} -async function _listRemotes({ fs, gitdir }) { - const config = await GitConfigManager.get({ fs, gitdir }); - const remoteNames = await config.getSubsections("remote"); - const remotes = Promise.all( - remoteNames.map(async (remote) => { - const url = await config.get(`remote.${remote}.url`); - return { remote, url }; - }) - ); - return remotes; -} -async function listRemotes({ fs, dir, gitdir = join(dir, ".git") }) { - try { - assertParameter("fs", fs); - assertParameter("gitdir", gitdir); - return await _listRemotes({ - fs: new FileSystem(fs), - gitdir - }); - } catch (err) { - err.caller = "git.listRemotes"; - throw err; - } -} -async function parseListRefsResponse(stream) { - const read = GitPktLine.streamReader(stream); - const refs = []; - let line; - while (true) { - line = await read(); - if (line === true) - break; - if (line === null) - continue; - line = line.toString("utf8").replace(/\n$/, ""); - const [oid, ref, ...attrs] = line.split(" "); - const r = { ref, oid }; - for (const attr2 of attrs) { - const [name, value] = attr2.split(":"); - if (name === "symref-target") { - r.target = value; - } else if (name === "peeled") { - r.peeled = value; - } - } - refs.push(r); - } - return refs; -} -async function writeListRefsRequest({ prefix, symrefs, peelTags }) { - const packstream = []; - packstream.push(GitPktLine.encode("command=ls-refs\n")); - packstream.push(GitPktLine.encode(`agent=${pkg.agent} -`)); - if (peelTags || symrefs || prefix) { - packstream.push(GitPktLine.delim()); - } - if (peelTags) - packstream.push(GitPktLine.encode("peel")); - if (symrefs) - packstream.push(GitPktLine.encode("symrefs")); - if (prefix) - packstream.push(GitPktLine.encode(`ref-prefix ${prefix}`)); - packstream.push(GitPktLine.flush()); - return packstream; -} -async function listServerRefs({ - http, - onAuth, - onAuthSuccess, - onAuthFailure, - corsProxy, - url, - headers = {}, - forPush = false, - protocolVersion = 2, - prefix, - symrefs, - peelTags -}) { - try { - assertParameter("http", http); - assertParameter("url", url); - const remote = await GitRemoteHTTP.discover({ - http, - onAuth, - onAuthSuccess, - onAuthFailure, - corsProxy, - service: forPush ? "git-receive-pack" : "git-upload-pack", - url, - headers, - protocolVersion - }); - if (remote.protocolVersion === 1) { - return formatInfoRefs(remote, prefix, symrefs, peelTags); - } - const body = await writeListRefsRequest({ prefix, symrefs, peelTags }); - const res = await GitRemoteHTTP.connect({ - http, - auth: remote.auth, - headers, - corsProxy, - service: forPush ? "git-receive-pack" : "git-upload-pack", - url, - body - }); - return parseListRefsResponse(res.body); - } catch (err) { - err.caller = "git.listServerRefs"; - throw err; - } -} -async function listTags({ fs, dir, gitdir = join(dir, ".git") }) { - try { - assertParameter("fs", fs); - assertParameter("gitdir", gitdir); - return GitRefManager.listTags({ fs: new FileSystem(fs), gitdir }); - } catch (err) { - err.caller = "git.listTags"; - throw err; - } -} -async function resolveCommit({ fs, cache, gitdir, oid }) { - const { type, object } = await _readObject({ fs, cache, gitdir, oid }); - if (type === "tag") { - oid = GitAnnotatedTag.from(object).parse().object; - return resolveCommit({ fs, cache, gitdir, oid }); - } - if (type !== "commit") { - throw new ObjectTypeError(oid, type, "commit"); - } - return { commit: GitCommit.from(object), oid }; -} -async function _readCommit({ fs, cache, gitdir, oid }) { - const { commit: commit2, oid: commitOid } = await resolveCommit({ - fs, - cache, - gitdir, - oid - }); - const result = { - oid: commitOid, - commit: commit2.parse(), - payload: commit2.withoutSignature() - }; - return result; -} -function compareAge(a, b) { - return a.committer.timestamp - b.committer.timestamp; -} -var EMPTY_OID = "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391"; -async function resolveFileIdInTree({ fs, cache, gitdir, oid, fileId }) { - if (fileId === EMPTY_OID) - return; - const _oid = oid; - let filepath; - const result = await resolveTree({ fs, cache, gitdir, oid }); - const tree = result.tree; - if (fileId === result.oid) { - filepath = result.path; - } else { - filepath = await _resolveFileId({ - fs, - cache, - gitdir, - tree, - fileId, - oid: _oid - }); - if (Array.isArray(filepath)) { - if (filepath.length === 0) - filepath = void 0; - else if (filepath.length === 1) - filepath = filepath[0]; - } - } - return filepath; -} -async function _resolveFileId({ - fs, - cache, - gitdir, - tree, - fileId, - oid, - filepaths = [], - parentPath = "" -}) { - const walks = tree.entries().map(function(entry) { - let result; - if (entry.oid === fileId) { - result = join(parentPath, entry.path); - filepaths.push(result); - } else if (entry.type === "tree") { - result = _readObject({ - fs, - cache, - gitdir, - oid: entry.oid - }).then(function({ object }) { - return _resolveFileId({ - fs, - cache, - gitdir, - tree: GitTree.from(object), - fileId, - oid, - filepaths, - parentPath: join(parentPath, entry.path) - }); - }); - } - return result; - }); - await Promise.all(walks); - return filepaths; -} -async function _log({ - fs, - cache, - gitdir, - filepath, - ref, - depth, - since, - force, - follow -}) { - const sinceTimestamp = typeof since === "undefined" ? void 0 : Math.floor(since.valueOf() / 1e3); - const commits = []; - const shallowCommits = await GitShallowManager.read({ fs, gitdir }); - const oid = await GitRefManager.resolve({ fs, gitdir, ref }); - const tips = [await _readCommit({ fs, cache, gitdir, oid })]; - let lastFileOid; - let lastCommit; - let isOk; - function endCommit(commit2) { - if (isOk && filepath) - commits.push(commit2); - } - while (tips.length > 0) { - const commit2 = tips.pop(); - if (sinceTimestamp !== void 0 && commit2.commit.committer.timestamp <= sinceTimestamp) { - break; - } - if (filepath) { - let vFileOid; - try { - vFileOid = await resolveFilepath({ - fs, - cache, - gitdir, - oid: commit2.commit.tree, - filepath - }); - if (lastCommit && lastFileOid !== vFileOid) { - commits.push(lastCommit); - } - lastFileOid = vFileOid; - lastCommit = commit2; - isOk = true; - } catch (e) { - if (e instanceof NotFoundError) { - let found = follow && lastFileOid; - if (found) { - found = await resolveFileIdInTree({ - fs, - cache, - gitdir, - oid: commit2.commit.tree, - fileId: lastFileOid - }); - if (found) { - if (Array.isArray(found)) { - if (lastCommit) { - const lastFound = await resolveFileIdInTree({ - fs, - cache, - gitdir, - oid: lastCommit.commit.tree, - fileId: lastFileOid - }); - if (Array.isArray(lastFound)) { - found = found.filter((p) => lastFound.indexOf(p) === -1); - if (found.length === 1) { - found = found[0]; - filepath = found; - if (lastCommit) - commits.push(lastCommit); - } else { - found = false; - if (lastCommit) - commits.push(lastCommit); - break; - } - } - } - } else { - filepath = found; - if (lastCommit) - commits.push(lastCommit); - } - } - } - if (!found) { - if (isOk && lastFileOid) { - commits.push(lastCommit); - if (!force) - break; - } - if (!force && !follow) - throw e; - } - lastCommit = commit2; - isOk = false; - } else - throw e; - } - } else { - commits.push(commit2); - } - if (depth !== void 0 && commits.length === depth) { - endCommit(commit2); - break; - } - if (!shallowCommits.has(commit2.oid)) { - for (const oid2 of commit2.commit.parent) { - const commit3 = await _readCommit({ fs, cache, gitdir, oid: oid2 }); - if (!tips.map((commit4) => commit4.oid).includes(commit3.oid)) { - tips.push(commit3); - } - } - } - if (tips.length === 0) { - endCommit(commit2); - } - tips.sort((a, b) => compareAge(a.commit, b.commit)); - } - return commits; -} -async function log({ - fs, - dir, - gitdir = join(dir, ".git"), - filepath, - ref = "HEAD", - depth, - since, - // Date - force, - follow, - cache = {} -}) { - try { - assertParameter("fs", fs); - assertParameter("gitdir", gitdir); - assertParameter("ref", ref); - return await _log({ - fs: new FileSystem(fs), - cache, - gitdir, - filepath, - ref, - depth, - since, - force, - follow - }); - } catch (err) { - err.caller = "git.log"; - throw err; - } -} -async function merge({ - fs: _fs, - onSign, - dir, - gitdir = join(dir, ".git"), - ours, - theirs, - fastForward: fastForward2 = true, - fastForwardOnly = false, - dryRun = false, - noUpdateBranch = false, - abortOnConflict = true, - message, - author: _author, - committer: _committer, - signingKey, - cache = {}, - mergeDriver -}) { - try { - assertParameter("fs", _fs); - if (signingKey) { - assertParameter("onSign", onSign); - } - const fs = new FileSystem(_fs); - const author = await normalizeAuthorObject({ fs, gitdir, author: _author }); - if (!author && (!fastForwardOnly || !fastForward2)) { - throw new MissingNameError("author"); - } - const committer = await normalizeCommitterObject({ - fs, - gitdir, - author, - committer: _committer - }); - if (!committer && (!fastForwardOnly || !fastForward2)) { - throw new MissingNameError("committer"); - } - return await _merge({ - fs, - cache, - dir, - gitdir, - ours, - theirs, - fastForward: fastForward2, - fastForwardOnly, - dryRun, - noUpdateBranch, - abortOnConflict, - message, - author, - committer, - signingKey, - onSign, - mergeDriver - }); - } catch (err) { - err.caller = "git.merge"; - throw err; - } -} -var types = { - commit: 16, - tree: 32, - blob: 48, - tag: 64, - ofs_delta: 96, - ref_delta: 112 -}; -async function _pack({ - fs, - cache, - dir, - gitdir = join(dir, ".git"), - oids -}) { - const hash2 = new import_sha1.default(); - const outputStream = []; - function write(chunk, enc) { - const buff = Buffer.from(chunk, enc); - outputStream.push(buff); - hash2.update(buff); - } - async function writeObject2({ stype, object }) { - const type = types[stype]; - let length = object.length; - let multibyte = length > 15 ? 128 : 0; - const lastFour = length & 15; - length = length >>> 4; - let byte = (multibyte | type | lastFour).toString(16); - write(byte, "hex"); - while (multibyte) { - multibyte = length > 127 ? 128 : 0; - byte = multibyte | length & 127; - write(padHex(2, byte), "hex"); - length = length >>> 7; - } - write(Buffer.from(await deflate(object))); - } - write("PACK"); - write("00000002", "hex"); - write(padHex(8, oids.length), "hex"); - for (const oid of oids) { - const { type, object } = await _readObject({ fs, cache, gitdir, oid }); - await writeObject2({ write, object, stype: type }); - } - const digest = hash2.digest(); - outputStream.push(digest); - return outputStream; -} -async function _packObjects({ fs, cache, gitdir, oids, write }) { - const buffers = await _pack({ fs, cache, gitdir, oids }); - const packfile = Buffer.from(await collect(buffers)); - const packfileSha = packfile.slice(-20).toString("hex"); - const filename = `pack-${packfileSha}.pack`; - if (write) { - await fs.write(join(gitdir, `objects/pack/${filename}`), packfile); - return { filename }; - } - return { - filename, - packfile: new Uint8Array(packfile) - }; -} -async function packObjects({ - fs, - dir, - gitdir = join(dir, ".git"), - oids, - write = false, - cache = {} -}) { - try { - assertParameter("fs", fs); - assertParameter("gitdir", gitdir); - assertParameter("oids", oids); - return await _packObjects({ - fs: new FileSystem(fs), - cache, - gitdir, - oids, - write - }); - } catch (err) { - err.caller = "git.packObjects"; - throw err; - } -} -async function pull({ - fs: _fs, - http, - onProgress, - onMessage, - onAuth, - onAuthSuccess, - onAuthFailure, - dir, - gitdir = join(dir, ".git"), - ref, - url, - remote, - remoteRef, - prune = false, - pruneTags = false, - fastForward: fastForward2 = true, - fastForwardOnly = false, - corsProxy, - singleBranch, - headers = {}, - author: _author, - committer: _committer, - signingKey, - cache = {} -}) { - try { - assertParameter("fs", _fs); - assertParameter("gitdir", gitdir); - const fs = new FileSystem(_fs); - const author = await normalizeAuthorObject({ fs, gitdir, author: _author }); - if (!author) - throw new MissingNameError("author"); - const committer = await normalizeCommitterObject({ - fs, - gitdir, - author, - committer: _committer - }); - if (!committer) - throw new MissingNameError("committer"); - return await _pull({ - fs, - cache, - http, - onProgress, - onMessage, - onAuth, - onAuthSuccess, - onAuthFailure, - dir, - gitdir, - ref, - url, - remote, - remoteRef, - fastForward: fastForward2, - fastForwardOnly, - corsProxy, - singleBranch, - headers, - author, - committer, - signingKey, - prune, - pruneTags - }); - } catch (err) { - err.caller = "git.pull"; - throw err; - } -} -async function listCommitsAndTags({ - fs, - cache, - dir, - gitdir = join(dir, ".git"), - start, - finish -}) { - const shallows = await GitShallowManager.read({ fs, gitdir }); - const startingSet = /* @__PURE__ */ new Set(); - const finishingSet = /* @__PURE__ */ new Set(); - for (const ref of start) { - startingSet.add(await GitRefManager.resolve({ fs, gitdir, ref })); - } - for (const ref of finish) { - try { - const oid = await GitRefManager.resolve({ fs, gitdir, ref }); - finishingSet.add(oid); - } catch (err) { - } - } - const visited = /* @__PURE__ */ new Set(); - async function walk2(oid) { - visited.add(oid); - const { type, object } = await _readObject({ fs, cache, gitdir, oid }); - if (type === "tag") { - const tag2 = GitAnnotatedTag.from(object); - const commit2 = tag2.headers().object; - return walk2(commit2); - } - if (type !== "commit") { - throw new ObjectTypeError(oid, type, "commit"); - } - if (!shallows.has(oid)) { - const commit2 = GitCommit.from(object); - const parents = commit2.headers().parent; - for (oid of parents) { - if (!finishingSet.has(oid) && !visited.has(oid)) { - await walk2(oid); - } - } - } - } - for (const oid of startingSet) { - await walk2(oid); - } - return visited; -} -async function listObjects({ - fs, - cache, - dir, - gitdir = join(dir, ".git"), - oids -}) { - const visited = /* @__PURE__ */ new Set(); - async function walk2(oid) { - if (visited.has(oid)) - return; - visited.add(oid); - const { type, object } = await _readObject({ fs, cache, gitdir, oid }); - if (type === "tag") { - const tag2 = GitAnnotatedTag.from(object); - const obj = tag2.headers().object; - await walk2(obj); - } else if (type === "commit") { - const commit2 = GitCommit.from(object); - const tree = commit2.headers().tree; - await walk2(tree); - } else if (type === "tree") { - const tree = GitTree.from(object); - for (const entry of tree) { - if (entry.type === "blob") { - visited.add(entry.oid); - } - if (entry.type === "tree") { - await walk2(entry.oid); - } - } - } - } - for (const oid of oids) { - await walk2(oid); - } - return visited; -} -async function parseReceivePackResponse(packfile) { - const result = {}; - let response = ""; - const read = GitPktLine.streamReader(packfile); - let line = await read(); - while (line !== true) { - if (line !== null) - response += line.toString("utf8") + "\n"; - line = await read(); - } - const lines = response.toString("utf8").split("\n"); - line = lines.shift(); - if (!line.startsWith("unpack ")) { - throw new ParseError('unpack ok" or "unpack [error message]', line); - } - result.ok = line === "unpack ok"; - if (!result.ok) { - result.error = line.slice("unpack ".length); - } - result.refs = {}; - for (const line2 of lines) { - if (line2.trim() === "") - continue; - const status2 = line2.slice(0, 2); - const refAndMessage = line2.slice(3); - let space2 = refAndMessage.indexOf(" "); - if (space2 === -1) - space2 = refAndMessage.length; - const ref = refAndMessage.slice(0, space2); - const error = refAndMessage.slice(space2 + 1); - result.refs[ref] = { - ok: status2 === "ok", - error - }; - } - return result; -} -async function writeReceivePackRequest({ - capabilities = [], - triplets = [] -}) { - const packstream = []; - let capsFirstLine = `\0 ${capabilities.join(" ")}`; - for (const trip of triplets) { - packstream.push( - GitPktLine.encode( - `${trip.oldoid} ${trip.oid} ${trip.fullRef}${capsFirstLine} -` - ) - ); - capsFirstLine = ""; - } - packstream.push(GitPktLine.flush()); - return packstream; -} -async function _push({ - fs, - cache, - http, - onProgress, - onMessage, - onAuth, - onAuthSuccess, - onAuthFailure, - gitdir, - ref: _ref, - remoteRef: _remoteRef, - remote, - url: _url, - force = false, - delete: _delete = false, - corsProxy, - headers = {} -}) { - const ref = _ref || await _currentBranch({ fs, gitdir }); - if (typeof ref === "undefined") { - throw new MissingParameterError("ref"); - } - const config = await GitConfigManager.get({ fs, gitdir }); - remote = remote || await config.get(`branch.${ref}.pushRemote`) || await config.get("remote.pushDefault") || await config.get(`branch.${ref}.remote`) || "origin"; - const url = _url || await config.get(`remote.${remote}.pushurl`) || await config.get(`remote.${remote}.url`); - if (typeof url === "undefined") { - throw new MissingParameterError("remote OR url"); - } - const remoteRef = _remoteRef || await config.get(`branch.${ref}.merge`); - if (typeof url === "undefined") { - throw new MissingParameterError("remoteRef"); - } - if (corsProxy === void 0) { - corsProxy = await config.get("http.corsProxy"); - } - const fullRef = await GitRefManager.expand({ fs, gitdir, ref }); - const oid = _delete ? "0000000000000000000000000000000000000000" : await GitRefManager.resolve({ fs, gitdir, ref: fullRef }); - const GitRemoteHTTP2 = GitRemoteManager.getRemoteHelperFor({ url }); - const httpRemote = await GitRemoteHTTP2.discover({ - http, - onAuth, - onAuthSuccess, - onAuthFailure, - corsProxy, - service: "git-receive-pack", - url, - headers, - protocolVersion: 1 - }); - const auth = httpRemote.auth; - let fullRemoteRef; - if (!remoteRef) { - fullRemoteRef = fullRef; - } else { - try { - fullRemoteRef = await GitRefManager.expandAgainstMap({ - ref: remoteRef, - map: httpRemote.refs - }); - } catch (err) { - if (err instanceof NotFoundError) { - fullRemoteRef = remoteRef.startsWith("refs/") ? remoteRef : `refs/heads/${remoteRef}`; - } else { - throw err; - } - } - } - const oldoid = httpRemote.refs.get(fullRemoteRef) || "0000000000000000000000000000000000000000"; - const thinPack = !httpRemote.capabilities.has("no-thin"); - let objects = /* @__PURE__ */ new Set(); - if (!_delete) { - const finish = [...httpRemote.refs.values()]; - let skipObjects = /* @__PURE__ */ new Set(); - if (oldoid !== "0000000000000000000000000000000000000000") { - const mergebase = await _findMergeBase({ - fs, - cache, - gitdir, - oids: [oid, oldoid] - }); - for (const oid2 of mergebase) - finish.push(oid2); - if (thinPack) { - skipObjects = await listObjects({ fs, cache, gitdir, oids: mergebase }); - } - } - if (!finish.includes(oid)) { - const commits = await listCommitsAndTags({ - fs, - cache, - gitdir, - start: [oid], - finish - }); - objects = await listObjects({ fs, cache, gitdir, oids: commits }); - } - if (thinPack) { - try { - const ref2 = await GitRefManager.resolve({ - fs, - gitdir, - ref: `refs/remotes/${remote}/HEAD`, - depth: 2 - }); - const { oid: oid2 } = await GitRefManager.resolveAgainstMap({ - ref: ref2.replace(`refs/remotes/${remote}/`, ""), - fullref: ref2, - map: httpRemote.refs - }); - const oids = [oid2]; - for (const oid3 of await listObjects({ fs, cache, gitdir, oids })) { - skipObjects.add(oid3); - } - } catch (e) { - } - for (const oid2 of skipObjects) { - objects.delete(oid2); - } - } - if (oid === oldoid) - force = true; - if (!force) { - if (fullRef.startsWith("refs/tags") && oldoid !== "0000000000000000000000000000000000000000") { - throw new PushRejectedError("tag-exists"); - } - if (oid !== "0000000000000000000000000000000000000000" && oldoid !== "0000000000000000000000000000000000000000" && !await _isDescendent({ - fs, - cache, - gitdir, - oid, - ancestor: oldoid, - depth: -1 - })) { - throw new PushRejectedError("not-fast-forward"); - } - } - } - const capabilities = filterCapabilities( - [...httpRemote.capabilities], - ["report-status", "side-band-64k", `agent=${pkg.agent}`] - ); - const packstream1 = await writeReceivePackRequest({ - capabilities, - triplets: [{ oldoid, oid, fullRef: fullRemoteRef }] - }); - const packstream2 = _delete ? [] : await _pack({ - fs, - cache, - gitdir, - oids: [...objects] - }); - const res = await GitRemoteHTTP2.connect({ - http, - onProgress, - corsProxy, - service: "git-receive-pack", - url, - auth, - headers, - body: [...packstream1, ...packstream2] - }); - const { packfile, progress } = await GitSideBand.demux(res.body); - if (onMessage) { - const lines = splitLines(progress); - forAwait(lines, async (line) => { - await onMessage(line); - }); - } - const result = await parseReceivePackResponse(packfile); - if (res.headers) { - result.headers = res.headers; - } - if (remote && result.ok && result.refs[fullRemoteRef].ok) { - const ref2 = `refs/remotes/${remote}/${fullRemoteRef.replace( - "refs/heads", - "" - )}`; - if (_delete) { - await GitRefManager.deleteRef({ fs, gitdir, ref: ref2 }); - } else { - await GitRefManager.writeRef({ fs, gitdir, ref: ref2, value: oid }); - } - } - if (result.ok && Object.values(result.refs).every((result2) => result2.ok)) { - return result; - } else { - const prettyDetails = Object.entries(result.refs).filter(([k, v]) => !v.ok).map(([k, v]) => ` - - ${k}: ${v.error}`).join(""); - throw new GitPushError(prettyDetails, result); - } -} -async function push({ - fs, - http, - onProgress, - onMessage, - onAuth, - onAuthSuccess, - onAuthFailure, - dir, - gitdir = join(dir, ".git"), - ref, - remoteRef, - remote = "origin", - url, - force = false, - delete: _delete = false, - corsProxy, - headers = {}, - cache = {} -}) { - try { - assertParameter("fs", fs); - assertParameter("http", http); - assertParameter("gitdir", gitdir); - return await _push({ - fs: new FileSystem(fs), - cache, - http, - onProgress, - onMessage, - onAuth, - onAuthSuccess, - onAuthFailure, - gitdir, - ref, - remoteRef, - remote, - url, - force, - delete: _delete, - corsProxy, - headers - }); - } catch (err) { - err.caller = "git.push"; - throw err; - } -} -async function resolveBlob({ fs, cache, gitdir, oid }) { - const { type, object } = await _readObject({ fs, cache, gitdir, oid }); - if (type === "tag") { - oid = GitAnnotatedTag.from(object).parse().object; - return resolveBlob({ fs, cache, gitdir, oid }); - } - if (type !== "blob") { - throw new ObjectTypeError(oid, type, "blob"); - } - return { oid, blob: new Uint8Array(object) }; -} -async function _readBlob({ - fs, - cache, - gitdir, - oid, - filepath = void 0 -}) { - if (filepath !== void 0) { - oid = await resolveFilepath({ fs, cache, gitdir, oid, filepath }); - } - const blob = await resolveBlob({ - fs, - cache, - gitdir, - oid - }); - return blob; -} -async function readBlob({ - fs, - dir, - gitdir = join(dir, ".git"), - oid, - filepath, - cache = {} -}) { - try { - assertParameter("fs", fs); - assertParameter("gitdir", gitdir); - assertParameter("oid", oid); - return await _readBlob({ - fs: new FileSystem(fs), - cache, - gitdir, - oid, - filepath - }); - } catch (err) { - err.caller = "git.readBlob"; - throw err; - } -} -async function readCommit({ - fs, - dir, - gitdir = join(dir, ".git"), - oid, - cache = {} -}) { - try { - assertParameter("fs", fs); - assertParameter("gitdir", gitdir); - assertParameter("oid", oid); - return await _readCommit({ - fs: new FileSystem(fs), - cache, - gitdir, - oid - }); - } catch (err) { - err.caller = "git.readCommit"; - throw err; - } -} -async function _readNote({ - fs, - cache, - gitdir, - ref = "refs/notes/commits", - oid -}) { - const parent = await GitRefManager.resolve({ gitdir, fs, ref }); - const { blob } = await _readBlob({ - fs, - cache, - gitdir, - oid: parent, - filepath: oid - }); - return blob; -} -async function readNote({ - fs, - dir, - gitdir = join(dir, ".git"), - ref = "refs/notes/commits", - oid, - cache = {} -}) { - try { - assertParameter("fs", fs); - assertParameter("gitdir", gitdir); - assertParameter("ref", ref); - assertParameter("oid", oid); - return await _readNote({ - fs: new FileSystem(fs), - cache, - gitdir, - ref, - oid - }); - } catch (err) { - err.caller = "git.readNote"; - throw err; - } -} -async function readObject({ - fs: _fs, - dir, - gitdir = join(dir, ".git"), - oid, - format = "parsed", - filepath = void 0, - encoding = void 0, - cache = {} -}) { - try { - assertParameter("fs", _fs); - assertParameter("gitdir", gitdir); - assertParameter("oid", oid); - const fs = new FileSystem(_fs); - if (filepath !== void 0) { - oid = await resolveFilepath({ - fs, - cache, - gitdir, - oid, - filepath - }); - } - const _format = format === "parsed" ? "content" : format; - const result = await _readObject({ - fs, - cache, - gitdir, - oid, - format: _format - }); - result.oid = oid; - if (format === "parsed") { - result.format = "parsed"; - switch (result.type) { - case "commit": - result.object = GitCommit.from(result.object).parse(); - break; - case "tree": - result.object = GitTree.from(result.object).entries(); - break; - case "blob": - if (encoding) { - result.object = result.object.toString(encoding); - } else { - result.object = new Uint8Array(result.object); - result.format = "content"; - } - break; - case "tag": - result.object = GitAnnotatedTag.from(result.object).parse(); - break; - default: - throw new ObjectTypeError( - result.oid, - result.type, - "blob|commit|tag|tree" - ); - } - } else if (result.format === "deflated" || result.format === "wrapped") { - result.type = result.format; - } - return result; - } catch (err) { - err.caller = "git.readObject"; - throw err; - } -} -async function _readTag({ fs, cache, gitdir, oid }) { - const { type, object } = await _readObject({ - fs, - cache, - gitdir, - oid, - format: "content" - }); - if (type !== "tag") { - throw new ObjectTypeError(oid, type, "tag"); - } - const tag2 = GitAnnotatedTag.from(object); - const result = { - oid, - tag: tag2.parse(), - payload: tag2.payload() - }; - return result; -} -async function readTag({ - fs, - dir, - gitdir = join(dir, ".git"), - oid, - cache = {} -}) { - try { - assertParameter("fs", fs); - assertParameter("gitdir", gitdir); - assertParameter("oid", oid); - return await _readTag({ - fs: new FileSystem(fs), - cache, - gitdir, - oid - }); - } catch (err) { - err.caller = "git.readTag"; - throw err; - } -} -async function readTree({ - fs, - dir, - gitdir = join(dir, ".git"), - oid, - filepath = void 0, - cache = {} -}) { - try { - assertParameter("fs", fs); - assertParameter("gitdir", gitdir); - assertParameter("oid", oid); - return await _readTree({ - fs: new FileSystem(fs), - cache, - gitdir, - oid, - filepath - }); - } catch (err) { - err.caller = "git.readTree"; - throw err; - } -} -async function remove({ - fs: _fs, - dir, - gitdir = join(dir, ".git"), - filepath, - cache = {} -}) { - try { - assertParameter("fs", _fs); - assertParameter("gitdir", gitdir); - assertParameter("filepath", filepath); - await GitIndexManager.acquire( - { fs: new FileSystem(_fs), gitdir, cache }, - async function(index2) { - index2.delete({ filepath }); - } - ); - } catch (err) { - err.caller = "git.remove"; - throw err; - } -} -async function _removeNote({ - fs, - cache, - onSign, - gitdir, - ref = "refs/notes/commits", - oid, - author, - committer, - signingKey -}) { - let parent; - try { - parent = await GitRefManager.resolve({ gitdir, fs, ref }); - } catch (err) { - if (!(err instanceof NotFoundError)) { - throw err; - } - } - const result = await _readTree({ - fs, - gitdir, - oid: parent || "4b825dc642cb6eb9a060e54bf8d69288fbee4904" - }); - let tree = result.tree; - tree = tree.filter((entry) => entry.path !== oid); - const treeOid = await _writeTree({ - fs, - gitdir, - tree - }); - const commitOid = await _commit({ - fs, - cache, - onSign, - gitdir, - ref, - tree: treeOid, - parent: parent && [parent], - message: `Note removed by 'isomorphic-git removeNote' -`, - author, - committer, - signingKey - }); - return commitOid; -} -async function removeNote({ - fs: _fs, - onSign, - dir, - gitdir = join(dir, ".git"), - ref = "refs/notes/commits", - oid, - author: _author, - committer: _committer, - signingKey, - cache = {} -}) { - try { - assertParameter("fs", _fs); - assertParameter("gitdir", gitdir); - assertParameter("oid", oid); - const fs = new FileSystem(_fs); - const author = await normalizeAuthorObject({ fs, gitdir, author: _author }); - if (!author) - throw new MissingNameError("author"); - const committer = await normalizeCommitterObject({ - fs, - gitdir, - author, - committer: _committer - }); - if (!committer) - throw new MissingNameError("committer"); - return await _removeNote({ - fs, - cache, - onSign, - gitdir, - ref, - oid, - author, - committer, - signingKey - }); - } catch (err) { - err.caller = "git.removeNote"; - throw err; - } -} -async function _renameBranch({ - fs, - gitdir, - oldref, - ref, - checkout: checkout2 = false -}) { - if (ref !== import_clean_git_ref.default.clean(ref)) { - throw new InvalidRefNameError(ref, import_clean_git_ref.default.clean(ref)); - } - if (oldref !== import_clean_git_ref.default.clean(oldref)) { - throw new InvalidRefNameError(oldref, import_clean_git_ref.default.clean(oldref)); - } - const fulloldref = `refs/heads/${oldref}`; - const fullnewref = `refs/heads/${ref}`; - const newexist = await GitRefManager.exists({ fs, gitdir, ref: fullnewref }); - if (newexist) { - throw new AlreadyExistsError("branch", ref, false); - } - const value = await GitRefManager.resolve({ - fs, - gitdir, - ref: fulloldref, - depth: 1 - }); - await GitRefManager.writeRef({ fs, gitdir, ref: fullnewref, value }); - await GitRefManager.deleteRef({ fs, gitdir, ref: fulloldref }); - const fullCurrentBranchRef = await _currentBranch({ - fs, - gitdir, - fullname: true - }); - const isCurrentBranch = fullCurrentBranchRef === fulloldref; - if (checkout2 || isCurrentBranch) { - await GitRefManager.writeSymbolicRef({ - fs, - gitdir, - ref: "HEAD", - value: fullnewref - }); - } -} -async function renameBranch({ - fs, - dir, - gitdir = join(dir, ".git"), - ref, - oldref, - checkout: checkout2 = false -}) { - try { - assertParameter("fs", fs); - assertParameter("gitdir", gitdir); - assertParameter("ref", ref); - assertParameter("oldref", oldref); - return await _renameBranch({ - fs: new FileSystem(fs), - gitdir, - ref, - oldref, - checkout: checkout2 - }); - } catch (err) { - err.caller = "git.renameBranch"; - throw err; - } -} -async function hashObject$1({ gitdir, type, object }) { - return shasum(GitObject.wrap({ type, object })); -} -async function resetIndex({ - fs: _fs, - dir, - gitdir = join(dir, ".git"), - filepath, - ref, - cache = {} -}) { - try { - assertParameter("fs", _fs); - assertParameter("gitdir", gitdir); - assertParameter("filepath", filepath); - const fs = new FileSystem(_fs); - let oid; - let workdirOid; - try { - oid = await GitRefManager.resolve({ fs, gitdir, ref: ref || "HEAD" }); - } catch (e) { - if (ref) { - throw e; - } - } - if (oid) { - try { - oid = await resolveFilepath({ - fs, - cache, - gitdir, - oid, - filepath - }); - } catch (e) { - oid = null; - } - } - let stats = { - ctime: /* @__PURE__ */ new Date(0), - mtime: /* @__PURE__ */ new Date(0), - dev: 0, - ino: 0, - mode: 0, - uid: 0, - gid: 0, - size: 0 - }; - const object = dir && await fs.read(join(dir, filepath)); - if (object) { - workdirOid = await hashObject$1({ - gitdir, - type: "blob", - object - }); - if (oid === workdirOid) { - stats = await fs.lstat(join(dir, filepath)); - } - } - await GitIndexManager.acquire({ fs, gitdir, cache }, async function(index2) { - index2.delete({ filepath }); - if (oid) { - index2.insert({ filepath, stats, oid }); - } - }); - } catch (err) { - err.caller = "git.reset"; - throw err; - } -} -async function resolveRef({ - fs, - dir, - gitdir = join(dir, ".git"), - ref, - depth -}) { - try { - assertParameter("fs", fs); - assertParameter("gitdir", gitdir); - assertParameter("ref", ref); - const oid = await GitRefManager.resolve({ - fs: new FileSystem(fs), - gitdir, - ref, - depth - }); - return oid; - } catch (err) { - err.caller = "git.resolveRef"; - throw err; - } -} -async function setConfig({ - fs: _fs, - dir, - gitdir = join(dir, ".git"), - path: path2, - value, - append: append3 = false -}) { - try { - assertParameter("fs", _fs); - assertParameter("gitdir", gitdir); - assertParameter("path", path2); - const fs = new FileSystem(_fs); - const config = await GitConfigManager.get({ fs, gitdir }); - if (append3) { - await config.append(path2, value); - } else { - await config.set(path2, value); - } - await GitConfigManager.save({ fs, gitdir, config }); - } catch (err) { - err.caller = "git.setConfig"; - throw err; - } -} -async function status({ - fs: _fs, - dir, - gitdir = join(dir, ".git"), - filepath, - cache = {} -}) { - try { - assertParameter("fs", _fs); - assertParameter("gitdir", gitdir); - assertParameter("filepath", filepath); - const fs = new FileSystem(_fs); - const ignored = await GitIgnoreManager.isIgnored({ - fs, - gitdir, - dir, - filepath - }); - if (ignored) { - return "ignored"; - } - const headTree = await getHeadTree({ fs, cache, gitdir }); - const treeOid = await getOidAtPath({ - fs, - cache, - gitdir, - tree: headTree, - path: filepath - }); - const indexEntry = await GitIndexManager.acquire( - { fs, gitdir, cache }, - async function(index2) { - for (const entry of index2) { - if (entry.path === filepath) - return entry; - } - return null; - } - ); - const stats = await fs.lstat(join(dir, filepath)); - const H = treeOid !== null; - const I = indexEntry !== null; - const W = stats !== null; - const getWorkdirOid = async () => { - if (I && !compareStats(indexEntry, stats)) { - return indexEntry.oid; - } else { - const object = await fs.read(join(dir, filepath)); - const workdirOid = await hashObject$1({ - gitdir, - type: "blob", - object - }); - if (I && indexEntry.oid === workdirOid) { - if (stats.size !== -1) { - GitIndexManager.acquire({ fs, gitdir, cache }, async function(index2) { - index2.insert({ filepath, stats, oid: workdirOid }); - }); - } - } - return workdirOid; - } - }; - if (!H && !W && !I) - return "absent"; - if (!H && !W && I) - return "*absent"; - if (!H && W && !I) - return "*added"; - if (!H && W && I) { - const workdirOid = await getWorkdirOid(); - return workdirOid === indexEntry.oid ? "added" : "*added"; - } - if (H && !W && !I) - return "deleted"; - if (H && !W && I) { - return treeOid === indexEntry.oid ? "*deleted" : "*deleted"; - } - if (H && W && !I) { - const workdirOid = await getWorkdirOid(); - return workdirOid === treeOid ? "*undeleted" : "*undeletemodified"; - } - if (H && W && I) { - const workdirOid = await getWorkdirOid(); - if (workdirOid === treeOid) { - return workdirOid === indexEntry.oid ? "unmodified" : "*unmodified"; - } else { - return workdirOid === indexEntry.oid ? "modified" : "*modified"; - } - } - } catch (err) { - err.caller = "git.status"; - throw err; - } -} -async function getOidAtPath({ fs, cache, gitdir, tree, path: path2 }) { - if (typeof path2 === "string") - path2 = path2.split("/"); - const dirname3 = path2.shift(); - for (const entry of tree) { - if (entry.path === dirname3) { - if (path2.length === 0) { - return entry.oid; - } - const { type, object } = await _readObject({ - fs, - cache, - gitdir, - oid: entry.oid - }); - if (type === "tree") { - const tree2 = GitTree.from(object); - return getOidAtPath({ fs, cache, gitdir, tree: tree2, path: path2 }); - } - if (type === "blob") { - throw new ObjectTypeError(entry.oid, type, "blob", path2.join("/")); - } - } - } - return null; -} -async function getHeadTree({ fs, cache, gitdir }) { - let oid; - try { - oid = await GitRefManager.resolve({ fs, gitdir, ref: "HEAD" }); - } catch (e) { - if (e instanceof NotFoundError) { - return []; - } - } - const { tree } = await _readTree({ fs, cache, gitdir, oid }); - return tree; -} -async function statusMatrix({ - fs: _fs, - dir, - gitdir = join(dir, ".git"), - ref = "HEAD", - filepaths = ["."], - filter, - cache = {}, - ignored: shouldIgnore = false -}) { - try { - assertParameter("fs", _fs); - assertParameter("gitdir", gitdir); - assertParameter("ref", ref); - const fs = new FileSystem(_fs); - return await _walk({ - fs, - cache, - dir, - gitdir, - trees: [TREE({ ref }), WORKDIR(), STAGE()], - map: async function(filepath, [head, workdir, stage]) { - if (!head && !stage && workdir) { - if (!shouldIgnore) { - const isIgnored2 = await GitIgnoreManager.isIgnored({ - fs, - dir, - filepath - }); - if (isIgnored2) { - return null; - } - } - } - if (!filepaths.some((base) => worthWalking(filepath, base))) { - return null; - } - if (filter) { - if (!filter(filepath)) - return; - } - const [headType, workdirType, stageType] = await Promise.all([ - head && head.type(), - workdir && workdir.type(), - stage && stage.type() - ]); - const isBlob = [headType, workdirType, stageType].includes("blob"); - if ((headType === "tree" || headType === "special") && !isBlob) - return; - if (headType === "commit") - return null; - if ((workdirType === "tree" || workdirType === "special") && !isBlob) - return; - if (stageType === "commit") - return null; - if ((stageType === "tree" || stageType === "special") && !isBlob) - return; - const headOid = headType === "blob" ? await head.oid() : void 0; - const stageOid = stageType === "blob" ? await stage.oid() : void 0; - let workdirOid; - if (headType !== "blob" && workdirType === "blob" && stageType !== "blob") { - workdirOid = "42"; - } else if (workdirType === "blob") { - workdirOid = await workdir.oid(); - } - const entry = [void 0, headOid, workdirOid, stageOid]; - const result = entry.map((value) => entry.indexOf(value)); - result.shift(); - return [filepath, ...result]; - } - }); - } catch (err) { - err.caller = "git.statusMatrix"; - throw err; - } -} -async function tag({ - fs: _fs, - dir, - gitdir = join(dir, ".git"), - ref, - object, - force = false -}) { - try { - assertParameter("fs", _fs); - assertParameter("gitdir", gitdir); - assertParameter("ref", ref); - const fs = new FileSystem(_fs); - if (ref === void 0) { - throw new MissingParameterError("ref"); - } - ref = ref.startsWith("refs/tags/") ? ref : `refs/tags/${ref}`; - const value = await GitRefManager.resolve({ - fs, - gitdir, - ref: object || "HEAD" - }); - if (!force && await GitRefManager.exists({ fs, gitdir, ref })) { - throw new AlreadyExistsError("tag", ref); - } - await GitRefManager.writeRef({ fs, gitdir, ref, value }); - } catch (err) { - err.caller = "git.tag"; - throw err; - } -} -async function updateIndex({ - fs: _fs, - dir, - gitdir = join(dir, ".git"), - cache = {}, - filepath, - oid, - mode, - add: add2, - remove: remove3, - force -}) { - try { - assertParameter("fs", _fs); - assertParameter("gitdir", gitdir); - assertParameter("filepath", filepath); - const fs = new FileSystem(_fs); - if (remove3) { - return await GitIndexManager.acquire( - { fs, gitdir, cache }, - async function(index2) { - let fileStats2; - if (!force) { - fileStats2 = await fs.lstat(join(dir, filepath)); - if (fileStats2) { - if (fileStats2.isDirectory()) { - throw new InvalidFilepathError("directory"); - } - return; - } - } - if (index2.has({ filepath })) { - index2.delete({ - filepath - }); - } - } - ); - } - let fileStats; - if (!oid) { - fileStats = await fs.lstat(join(dir, filepath)); - if (!fileStats) { - throw new NotFoundError( - `file at "${filepath}" on disk and "remove" not set` - ); - } - if (fileStats.isDirectory()) { - throw new InvalidFilepathError("directory"); - } - } - return await GitIndexManager.acquire({ fs, gitdir, cache }, async function(index2) { - if (!add2 && !index2.has({ filepath })) { - throw new NotFoundError( - `file at "${filepath}" in index and "add" not set` - ); - } - let stats = { - ctime: /* @__PURE__ */ new Date(0), - mtime: /* @__PURE__ */ new Date(0), - dev: 0, - ino: 0, - mode, - uid: 0, - gid: 0, - size: 0 - }; - if (!oid) { - stats = fileStats; - const object = stats.isSymbolicLink() ? await fs.readlink(join(dir, filepath)) : await fs.read(join(dir, filepath)); - oid = await _writeObject({ - fs, - gitdir, - type: "blob", - format: "content", - object - }); - } - index2.insert({ - filepath, - oid, - stats - }); - return oid; - }); - } catch (err) { - err.caller = "git.updateIndex"; - throw err; - } -} -function version() { - try { - return pkg.version; - } catch (err) { - err.caller = "git.version"; - throw err; - } -} -async function walk({ - fs, - dir, - gitdir = join(dir, ".git"), - trees, - map, - reduce, - iterate, - cache = {} -}) { - try { - assertParameter("fs", fs); - assertParameter("gitdir", gitdir); - assertParameter("trees", trees); - return await _walk({ - fs: new FileSystem(fs), - cache, - dir, - gitdir, - trees, - map, - reduce, - iterate - }); - } catch (err) { - err.caller = "git.walk"; - throw err; - } -} -async function writeBlob({ fs, dir, gitdir = join(dir, ".git"), blob }) { - try { - assertParameter("fs", fs); - assertParameter("gitdir", gitdir); - assertParameter("blob", blob); - return await _writeObject({ - fs: new FileSystem(fs), - gitdir, - type: "blob", - object: blob, - format: "content" - }); - } catch (err) { - err.caller = "git.writeBlob"; - throw err; - } -} -async function _writeCommit({ fs, gitdir, commit: commit2 }) { - const object = GitCommit.from(commit2).toObject(); - const oid = await _writeObject({ - fs, - gitdir, - type: "commit", - object, - format: "content" - }); - return oid; -} -async function writeCommit({ - fs, - dir, - gitdir = join(dir, ".git"), - commit: commit2 -}) { - try { - assertParameter("fs", fs); - assertParameter("gitdir", gitdir); - assertParameter("commit", commit2); - return await _writeCommit({ - fs: new FileSystem(fs), - gitdir, - commit: commit2 - }); - } catch (err) { - err.caller = "git.writeCommit"; - throw err; - } -} -async function writeObject({ - fs: _fs, - dir, - gitdir = join(dir, ".git"), - type, - object, - format = "parsed", - oid, - encoding = void 0 -}) { - try { - const fs = new FileSystem(_fs); - if (format === "parsed") { - switch (type) { - case "commit": - object = GitCommit.from(object).toObject(); - break; - case "tree": - object = GitTree.from(object).toObject(); - break; - case "blob": - object = Buffer.from(object, encoding); - break; - case "tag": - object = GitAnnotatedTag.from(object).toObject(); - break; - default: - throw new ObjectTypeError(oid || "", type, "blob|commit|tag|tree"); - } - format = "content"; - } - oid = await _writeObject({ - fs, - gitdir, - type, - object, - oid, - format - }); - return oid; - } catch (err) { - err.caller = "git.writeObject"; - throw err; - } -} -async function writeRef({ - fs: _fs, - dir, - gitdir = join(dir, ".git"), - ref, - value, - force = false, - symbolic = false -}) { - try { - assertParameter("fs", _fs); - assertParameter("gitdir", gitdir); - assertParameter("ref", ref); - assertParameter("value", value); - const fs = new FileSystem(_fs); - if (ref !== import_clean_git_ref.default.clean(ref)) { - throw new InvalidRefNameError(ref, import_clean_git_ref.default.clean(ref)); - } - if (!force && await GitRefManager.exists({ fs, gitdir, ref })) { - throw new AlreadyExistsError("ref", ref); - } - if (symbolic) { - await GitRefManager.writeSymbolicRef({ - fs, - gitdir, - ref, - value - }); - } else { - value = await GitRefManager.resolve({ - fs, - gitdir, - ref: value - }); - await GitRefManager.writeRef({ - fs, - gitdir, - ref, - value - }); - } - } catch (err) { - err.caller = "git.writeRef"; - throw err; - } -} -async function _writeTag({ fs, gitdir, tag: tag2 }) { - const object = GitAnnotatedTag.from(tag2).toObject(); - const oid = await _writeObject({ - fs, - gitdir, - type: "tag", - object, - format: "content" - }); - return oid; -} -async function writeTag({ fs, dir, gitdir = join(dir, ".git"), tag: tag2 }) { - try { - assertParameter("fs", fs); - assertParameter("gitdir", gitdir); - assertParameter("tag", tag2); - return await _writeTag({ - fs: new FileSystem(fs), - gitdir, - tag: tag2 - }); - } catch (err) { - err.caller = "git.writeTag"; - throw err; - } -} -async function writeTree({ fs, dir, gitdir = join(dir, ".git"), tree }) { - try { - assertParameter("fs", fs); - assertParameter("gitdir", gitdir); - assertParameter("tree", tree); - return await _writeTree({ - fs: new FileSystem(fs), - gitdir, - tree - }); - } catch (err) { - err.caller = "git.writeTree"; - throw err; - } -} -var index = { - Errors, - STAGE, - TREE, - WORKDIR, - add, - abortMerge, - addNote, - addRemote, - annotatedTag, - branch, - checkout, - clone, - commit, - getConfig, - getConfigAll, - setConfig, - currentBranch, - deleteBranch, - deleteRef, - deleteRemote, - deleteTag, - expandOid, - expandRef, - fastForward, - fetch, - findMergeBase, - findRoot, - getRemoteInfo, - getRemoteInfo2, - hashBlob, - indexPack, - init, - isDescendent, - isIgnored, - listBranches, - listFiles, - listNotes, - listRemotes, - listServerRefs, - listTags, - log, - merge, - packObjects, - pull, - push, - readBlob, - readCommit, - readNote, - readObject, - readTag, - readTree, - remove, - removeNote, - renameBranch, - resetIndex, - updateIndex, - resolveRef, - status, - statusMatrix, - tag, - version, - walk, - writeBlob, - writeCommit, - writeObject, - writeRef, - writeTag, - writeTree -}; -var isomorphic_git_default = index; - -// src/main.ts -var import_obsidian31 = require("obsidian"); - -// src/lineAuthor/lineAuthorIntegration.ts -init_polyfill_buffer(); -var import_obsidian12 = require("obsidian"); - -// src/gitManager/simpleGit.ts -init_polyfill_buffer(); -var import_child_process2 = require("child_process"); -var import_debug2 = __toESM(require_browser()); -var import_obsidian4 = require("obsidian"); -var path = __toESM(require("path")); -var import_path = require("path"); - -// node_modules/.pnpm/github.com+Vinzent03+git-js@6b9a2d899bc8256e38a1d6f0b8a88116ba2bf56a_supports-color@9.4.0_rdkutdaeyye3o67thmklazfzta/node_modules/simple-git/dist/esm/index.js -init_polyfill_buffer(); -var import_file_exists = __toESM(require_dist(), 1); -var import_debug = __toESM(require_browser(), 1); -var import_child_process = require("child_process"); -var import_promise_deferred = __toESM(require_dist2(), 1); -var import_promise_deferred2 = __toESM(require_dist2(), 1); -var __defProp2 = Object.defineProperty; -var __defProps = Object.defineProperties; -var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor; -var __getOwnPropDescs = Object.getOwnPropertyDescriptors; -var __getOwnPropNames2 = Object.getOwnPropertyNames; -var __getOwnPropSymbols = Object.getOwnPropertySymbols; -var __hasOwnProp2 = Object.prototype.hasOwnProperty; -var __propIsEnum = Object.prototype.propertyIsEnumerable; -var __defNormalProp2 = (obj, key2, value) => key2 in obj ? __defProp2(obj, key2, { enumerable: true, configurable: true, writable: true, value }) : obj[key2] = value; -var __spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (__hasOwnProp2.call(b, prop)) - __defNormalProp2(a, prop, b[prop]); - if (__getOwnPropSymbols) - for (var prop of __getOwnPropSymbols(b)) { - if (__propIsEnum.call(b, prop)) - __defNormalProp2(a, prop, b[prop]); - } - return a; -}; -var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); -var __markAsModule = (target) => __defProp2(target, "__esModule", { value: true }); -var __esm2 = (fn, res) => function __init() { - return fn && (res = (0, fn[__getOwnPropNames2(fn)[0]])(fn = 0)), res; -}; -var __commonJS2 = (cb, mod) => function __require() { - return mod || (0, cb[__getOwnPropNames2(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; -}; -var __export2 = (target, all) => { - for (var name in all) - __defProp2(target, name, { get: all[name], enumerable: true }); -}; -var __reExport = (target, module2, copyDefault, desc) => { - if (module2 && typeof module2 === "object" || typeof module2 === "function") { - for (let key2 of __getOwnPropNames2(module2)) - if (!__hasOwnProp2.call(target, key2) && (copyDefault || key2 !== "default")) - __defProp2(target, key2, { get: () => module2[key2], enumerable: !(desc = __getOwnPropDesc2(module2, key2)) || desc.enumerable }); - } - return target; -}; -var __toCommonJS2 = /* @__PURE__ */ ((cache) => { - return (module2, temp) => { - return cache && cache.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache && cache.set(module2, temp), temp); - }; -})(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0); -var __async = (__this, __arguments, generator) => { - return new Promise((resolve, reject) => { - var fulfilled = (value) => { - try { - step(generator.next(value)); - } catch (e) { - reject(e); - } - }; - var rejected = (value) => { - try { - step(generator.throw(value)); - } catch (e) { - reject(e); - } - }; - var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); - step((generator = generator.apply(__this, __arguments)).next()); - }); -}; -var GitError; -var init_git_error = __esm2({ - "src/lib/errors/git-error.ts"() { - GitError = class extends Error { - constructor(task, message) { - super(message); - this.task = task; - Object.setPrototypeOf(this, new.target.prototype); - } - }; - } -}); -var GitResponseError; -var init_git_response_error = __esm2({ - "src/lib/errors/git-response-error.ts"() { - init_git_error(); - GitResponseError = class extends GitError { - constructor(git, message) { - super(void 0, message || String(git)); - this.git = git; - } - }; - } -}); -var TaskConfigurationError; -var init_task_configuration_error = __esm2({ - "src/lib/errors/task-configuration-error.ts"() { - init_git_error(); - TaskConfigurationError = class extends GitError { - constructor(message) { - super(void 0, message); - } - }; - } -}); -function asFunction(source) { - return typeof source === "function" ? source : NOOP; -} -function isUserFunction(source) { - return typeof source === "function" && source !== NOOP; -} -function splitOn(input, char) { - const index2 = input.indexOf(char); - if (index2 <= 0) { - return [input, ""]; - } - return [input.substr(0, index2), input.substr(index2 + 1)]; -} -function first(input, offset = 0) { - return isArrayLike(input) && input.length > offset ? input[offset] : void 0; -} -function last(input, offset = 0) { - if (isArrayLike(input) && input.length > offset) { - return input[input.length - 1 - offset]; - } -} -function isArrayLike(input) { - return !!(input && typeof input.length === "number"); -} -function toLinesWithContent(input = "", trimmed2 = true, separator2 = "\n") { - return input.split(separator2).reduce((output, line) => { - const lineContent = trimmed2 ? line.trim() : line; - if (lineContent) { - output.push(lineContent); - } - return output; - }, []); -} -function forEachLineWithContent(input, callback) { - return toLinesWithContent(input, true).map((line) => callback(line)); -} -function folderExists(path2) { - return (0, import_file_exists.exists)(path2, import_file_exists.FOLDER); -} -function append(target, item) { - if (Array.isArray(target)) { - if (!target.includes(item)) { - target.push(item); - } - } else { - target.add(item); - } - return item; -} -function including(target, item) { - if (Array.isArray(target) && !target.includes(item)) { - target.push(item); - } - return target; -} -function remove2(target, item) { - if (Array.isArray(target)) { - const index2 = target.indexOf(item); - if (index2 >= 0) { - target.splice(index2, 1); - } - } else { - target.delete(item); - } - return item; -} -function asArray(source) { - return Array.isArray(source) ? source : [source]; -} -function asStringArray(source) { - return asArray(source).map(String); -} -function asNumber(source, onNaN = 0) { - if (source == null) { - return onNaN; - } - const num2 = parseInt(source, 10); - return isNaN(num2) ? onNaN : num2; -} -function prefixedArray(input, prefix) { - const output = []; - for (let i = 0, max = input.length; i < max; i++) { - output.push(prefix, input[i]); - } - return output; -} -function bufferToString(input) { - return (Array.isArray(input) ? Buffer.concat(input) : input).toString("utf-8"); -} -function pick(source, properties) { - return Object.assign({}, ...properties.map((property) => property in source ? { [property]: source[property] } : {})); -} -function delay(duration = 0) { - return new Promise((done) => setTimeout(done, duration)); -} -var NULL; -var NOOP; -var objectToString; -var init_util = __esm2({ - "src/lib/utils/util.ts"() { - NULL = "\0"; - NOOP = () => { - }; - objectToString = Object.prototype.toString.call.bind(Object.prototype.toString); - } -}); -function filterType(input, filter, def) { - if (filter(input)) { - return input; - } - return arguments.length > 2 ? def : void 0; -} -function filterPrimitives(input, omit) { - return /number|string|boolean/.test(typeof input) && (!omit || !omit.includes(typeof input)); -} -function filterPlainObject(input) { - return !!input && objectToString(input) === "[object Object]"; -} -function filterFunction(input) { - return typeof input === "function"; -} -var filterArray; -var filterString; -var filterStringArray; -var filterStringOrStringArray; -var filterHasLength; -var init_argument_filters = __esm2({ - "src/lib/utils/argument-filters.ts"() { - init_util(); - filterArray = (input) => { - return Array.isArray(input); - }; - filterString = (input) => { - return typeof input === "string"; - }; - filterStringArray = (input) => { - return Array.isArray(input) && input.every(filterString); - }; - filterStringOrStringArray = (input) => { - return filterString(input) || Array.isArray(input) && input.every(filterString); - }; - filterHasLength = (input) => { - if (input == null || "number|boolean|function".includes(typeof input)) { - return false; - } - return Array.isArray(input) || typeof input === "string" || typeof input.length === "number"; - }; - } -}); -var ExitCodes; -var init_exit_codes = __esm2({ - "src/lib/utils/exit-codes.ts"() { - ExitCodes = /* @__PURE__ */ ((ExitCodes2) => { - ExitCodes2[ExitCodes2["SUCCESS"] = 0] = "SUCCESS"; - ExitCodes2[ExitCodes2["ERROR"] = 1] = "ERROR"; - ExitCodes2[ExitCodes2["NOT_FOUND"] = -2] = "NOT_FOUND"; - ExitCodes2[ExitCodes2["UNCLEAN"] = 128] = "UNCLEAN"; - return ExitCodes2; - })(ExitCodes || {}); - } -}); -var GitOutputStreams; -var init_git_output_streams = __esm2({ - "src/lib/utils/git-output-streams.ts"() { - GitOutputStreams = class { - constructor(stdOut, stdErr) { - this.stdOut = stdOut; - this.stdErr = stdErr; - } - asStrings() { - return new GitOutputStreams(this.stdOut.toString("utf8"), this.stdErr.toString("utf8")); - } - }; - } -}); -var LineParser; -var RemoteLineParser; -var init_line_parser = __esm2({ - "src/lib/utils/line-parser.ts"() { - LineParser = class { - constructor(regExp, useMatches) { - this.matches = []; - this.parse = (line, target) => { - this.resetMatches(); - if (!this._regExp.every((reg, index2) => this.addMatch(reg, index2, line(index2)))) { - return false; - } - return this.useMatches(target, this.prepareMatches()) !== false; - }; - this._regExp = Array.isArray(regExp) ? regExp : [regExp]; - if (useMatches) { - this.useMatches = useMatches; - } - } - useMatches(target, match) { - throw new Error(`LineParser:useMatches not implemented`); - } - resetMatches() { - this.matches.length = 0; - } - prepareMatches() { - return this.matches; - } - addMatch(reg, index2, line) { - const matched = line && reg.exec(line); - if (matched) { - this.pushMatch(index2, matched); - } - return !!matched; - } - pushMatch(_index, matched) { - this.matches.push(...matched.slice(1)); - } - }; - RemoteLineParser = class extends LineParser { - addMatch(reg, index2, line) { - return /^remote:\s/.test(String(line)) && super.addMatch(reg, index2, line); - } - pushMatch(index2, matched) { - if (index2 > 0 || matched.length > 1) { - super.pushMatch(index2, matched); - } - } - }; - } -}); -function createInstanceConfig(...options) { - const baseDir = process.cwd(); - const config = Object.assign(__spreadValues({ baseDir }, defaultOptions), ...options.filter((o) => typeof o === "object" && o)); - config.baseDir = config.baseDir || baseDir; - config.trimmed = config.trimmed === true; - return config; -} -var defaultOptions; -var init_simple_git_options = __esm2({ - "src/lib/utils/simple-git-options.ts"() { - defaultOptions = { - binary: "git", - maxConcurrentProcesses: 5, - config: [], - trimmed: false - }; - } -}); -function appendTaskOptions(options, commands2 = []) { - if (!filterPlainObject(options)) { - return commands2; - } - return Object.keys(options).reduce((commands22, key2) => { - const value = options[key2]; - if (filterPrimitives(value, ["boolean"])) { - commands22.push(key2 + "=" + value); - } else { - commands22.push(key2); - } - return commands22; - }, commands2); -} -function getTrailingOptions(args, initialPrimitive = 0, objectOnly = false) { - const command = []; - for (let i = 0, max = initialPrimitive < 0 ? args.length : initialPrimitive; i < max; i++) { - if ("string|number".includes(typeof args[i])) { - command.push(String(args[i])); - } - } - appendTaskOptions(trailingOptionsArgument(args), command); - if (!objectOnly) { - command.push(...trailingArrayArgument(args)); - } - return command; -} -function trailingArrayArgument(args) { - const hasTrailingCallback = typeof last(args) === "function"; - return filterType(last(args, hasTrailingCallback ? 1 : 0), filterArray, []); -} -function trailingOptionsArgument(args) { - const hasTrailingCallback = filterFunction(last(args)); - return filterType(last(args, hasTrailingCallback ? 1 : 0), filterPlainObject); -} -function trailingFunctionArgument(args, includeNoop = true) { - const callback = asFunction(last(args)); - return includeNoop || isUserFunction(callback) ? callback : void 0; -} -var init_task_options = __esm2({ - "src/lib/utils/task-options.ts"() { - init_argument_filters(); - init_util(); - } -}); -function callTaskParser(parser3, streams) { - return parser3(streams.stdOut, streams.stdErr); -} -function parseStringResponse(result, parsers12, texts, trim = true) { - asArray(texts).forEach((text2) => { - for (let lines = toLinesWithContent(text2, trim), i = 0, max = lines.length; i < max; i++) { - const line = (offset = 0) => { - if (i + offset >= max) { - return; - } - return lines[i + offset]; - }; - parsers12.some(({ parse: parse2 }) => parse2(line, result)); - } - }); - return result; -} -var init_task_parser = __esm2({ - "src/lib/utils/task-parser.ts"() { - init_util(); - } -}); -var utils_exports = {}; -__export2(utils_exports, { - ExitCodes: () => ExitCodes, - GitOutputStreams: () => GitOutputStreams, - LineParser: () => LineParser, - NOOP: () => NOOP, - NULL: () => NULL, - RemoteLineParser: () => RemoteLineParser, - append: () => append, - appendTaskOptions: () => appendTaskOptions, - asArray: () => asArray, - asFunction: () => asFunction, - asNumber: () => asNumber, - asStringArray: () => asStringArray, - bufferToString: () => bufferToString, - callTaskParser: () => callTaskParser, - createInstanceConfig: () => createInstanceConfig, - delay: () => delay, - filterArray: () => filterArray, - filterFunction: () => filterFunction, - filterHasLength: () => filterHasLength, - filterPlainObject: () => filterPlainObject, - filterPrimitives: () => filterPrimitives, - filterString: () => filterString, - filterStringArray: () => filterStringArray, - filterStringOrStringArray: () => filterStringOrStringArray, - filterType: () => filterType, - first: () => first, - folderExists: () => folderExists, - forEachLineWithContent: () => forEachLineWithContent, - getTrailingOptions: () => getTrailingOptions, - including: () => including, - isUserFunction: () => isUserFunction, - last: () => last, - objectToString: () => objectToString, - parseStringResponse: () => parseStringResponse, - pick: () => pick, - prefixedArray: () => prefixedArray, - remove: () => remove2, - splitOn: () => splitOn, - toLinesWithContent: () => toLinesWithContent, - trailingFunctionArgument: () => trailingFunctionArgument, - trailingOptionsArgument: () => trailingOptionsArgument -}); -var init_utils = __esm2({ - "src/lib/utils/index.ts"() { - init_argument_filters(); - init_exit_codes(); - init_git_output_streams(); - init_line_parser(); - init_simple_git_options(); - init_task_options(); - init_task_parser(); - init_util(); - } -}); -var check_is_repo_exports = {}; -__export2(check_is_repo_exports, { - CheckRepoActions: () => CheckRepoActions, - checkIsBareRepoTask: () => checkIsBareRepoTask, - checkIsRepoRootTask: () => checkIsRepoRootTask, - checkIsRepoTask: () => checkIsRepoTask -}); -function checkIsRepoTask(action) { - switch (action) { - case "bare": - return checkIsBareRepoTask(); - case "root": - return checkIsRepoRootTask(); - } - const commands2 = ["rev-parse", "--is-inside-work-tree"]; - return { - commands: commands2, - format: "utf-8", - onError, - parser - }; -} -function checkIsRepoRootTask() { - const commands2 = ["rev-parse", "--git-dir"]; - return { - commands: commands2, - format: "utf-8", - onError, - parser(path2) { - return /^\.(git)?$/.test(path2.trim()); - } - }; -} -function checkIsBareRepoTask() { - const commands2 = ["rev-parse", "--is-bare-repository"]; - return { - commands: commands2, - format: "utf-8", - onError, - parser - }; -} -function isNotRepoMessage(error) { - return /(Not a git repository|Kein Git-Repository)/i.test(String(error)); -} -var CheckRepoActions; -var onError; -var parser; -var init_check_is_repo = __esm2({ - "src/lib/tasks/check-is-repo.ts"() { - init_utils(); - CheckRepoActions = /* @__PURE__ */ ((CheckRepoActions2) => { - CheckRepoActions2["BARE"] = "bare"; - CheckRepoActions2["IN_TREE"] = "tree"; - CheckRepoActions2["IS_REPO_ROOT"] = "root"; - return CheckRepoActions2; - })(CheckRepoActions || {}); - onError = ({ exitCode }, error, done, fail) => { - if (exitCode === 128 && isNotRepoMessage(error)) { - return done(Buffer.from("false")); - } - fail(error); - }; - parser = (text2) => { - return text2.trim() === "true"; - }; - } -}); -function cleanSummaryParser(dryRun, text2) { - const summary = new CleanResponse(dryRun); - const regexp = dryRun ? dryRunRemovalRegexp : removalRegexp; - toLinesWithContent(text2).forEach((line) => { - const removed = line.replace(regexp, ""); - summary.paths.push(removed); - (isFolderRegexp.test(removed) ? summary.folders : summary.files).push(removed); - }); - return summary; -} -var CleanResponse; -var removalRegexp; -var dryRunRemovalRegexp; -var isFolderRegexp; -var init_CleanSummary = __esm2({ - "src/lib/responses/CleanSummary.ts"() { - init_utils(); - CleanResponse = class { - constructor(dryRun) { - this.dryRun = dryRun; - this.paths = []; - this.files = []; - this.folders = []; - } - }; - removalRegexp = /^[a-z]+\s*/i; - dryRunRemovalRegexp = /^[a-z]+\s+[a-z]+\s*/i; - isFolderRegexp = /\/$/; - } -}); -var task_exports = {}; -__export2(task_exports, { - EMPTY_COMMANDS: () => EMPTY_COMMANDS, - adhocExecTask: () => adhocExecTask, - configurationErrorTask: () => configurationErrorTask, - isBufferTask: () => isBufferTask, - isEmptyTask: () => isEmptyTask, - straightThroughBufferTask: () => straightThroughBufferTask, - straightThroughStringTask: () => straightThroughStringTask -}); -function adhocExecTask(parser3) { - return { - commands: EMPTY_COMMANDS, - format: "empty", - parser: parser3 - }; -} -function configurationErrorTask(error) { - return { - commands: EMPTY_COMMANDS, - format: "empty", - parser() { - throw typeof error === "string" ? new TaskConfigurationError(error) : error; - } - }; -} -function straightThroughStringTask(commands2, trimmed2 = false) { - return { - commands: commands2, - format: "utf-8", - parser(text2) { - return trimmed2 ? String(text2).trim() : text2; - } - }; -} -function straightThroughBufferTask(commands2) { - return { - commands: commands2, - format: "buffer", - parser(buffer2) { - return buffer2; - } - }; -} -function isBufferTask(task) { - return task.format === "buffer"; -} -function isEmptyTask(task) { - return task.format === "empty" || !task.commands.length; -} -var EMPTY_COMMANDS; -var init_task = __esm2({ - "src/lib/tasks/task.ts"() { - init_task_configuration_error(); - EMPTY_COMMANDS = []; - } -}); -var clean_exports = {}; -__export2(clean_exports, { - CONFIG_ERROR_INTERACTIVE_MODE: () => CONFIG_ERROR_INTERACTIVE_MODE, - CONFIG_ERROR_MODE_REQUIRED: () => CONFIG_ERROR_MODE_REQUIRED, - CONFIG_ERROR_UNKNOWN_OPTION: () => CONFIG_ERROR_UNKNOWN_OPTION, - CleanOptions: () => CleanOptions, - cleanTask: () => cleanTask, - cleanWithOptionsTask: () => cleanWithOptionsTask, - isCleanOptionsArray: () => isCleanOptionsArray -}); -function cleanWithOptionsTask(mode, customArgs) { - const { cleanMode, options, valid } = getCleanOptions(mode); - if (!cleanMode) { - return configurationErrorTask(CONFIG_ERROR_MODE_REQUIRED); - } - if (!valid.options) { - return configurationErrorTask(CONFIG_ERROR_UNKNOWN_OPTION + JSON.stringify(mode)); - } - options.push(...customArgs); - if (options.some(isInteractiveMode)) { - return configurationErrorTask(CONFIG_ERROR_INTERACTIVE_MODE); - } - return cleanTask(cleanMode, options); -} -function cleanTask(mode, customArgs) { - const commands2 = ["clean", `-${mode}`, ...customArgs]; - return { - commands: commands2, - format: "utf-8", - parser(text2) { - return cleanSummaryParser(mode === "n", text2); - } - }; -} -function isCleanOptionsArray(input) { - return Array.isArray(input) && input.every((test) => CleanOptionValues.has(test)); -} -function getCleanOptions(input) { - let cleanMode; - let options = []; - let valid = { cleanMode: false, options: true }; - input.replace(/[^a-z]i/g, "").split("").forEach((char) => { - if (isCleanMode(char)) { - cleanMode = char; - valid.cleanMode = true; - } else { - valid.options = valid.options && isKnownOption(options[options.length] = `-${char}`); - } - }); - return { - cleanMode, - options, - valid - }; -} -function isCleanMode(cleanMode) { - return cleanMode === "f" || cleanMode === "n"; -} -function isKnownOption(option) { - return /^-[a-z]$/i.test(option) && CleanOptionValues.has(option.charAt(1)); -} -function isInteractiveMode(option) { - if (/^-[^\-]/.test(option)) { - return option.indexOf("i") > 0; - } - return option === "--interactive"; -} -var CONFIG_ERROR_INTERACTIVE_MODE; -var CONFIG_ERROR_MODE_REQUIRED; -var CONFIG_ERROR_UNKNOWN_OPTION; -var CleanOptions; -var CleanOptionValues; -var init_clean = __esm2({ - "src/lib/tasks/clean.ts"() { - init_CleanSummary(); - init_utils(); - init_task(); - CONFIG_ERROR_INTERACTIVE_MODE = "Git clean interactive mode is not supported"; - CONFIG_ERROR_MODE_REQUIRED = 'Git clean mode parameter ("n" or "f") is required'; - CONFIG_ERROR_UNKNOWN_OPTION = "Git clean unknown option found in: "; - CleanOptions = /* @__PURE__ */ ((CleanOptions2) => { - CleanOptions2["DRY_RUN"] = "n"; - CleanOptions2["FORCE"] = "f"; - CleanOptions2["IGNORED_INCLUDED"] = "x"; - CleanOptions2["IGNORED_ONLY"] = "X"; - CleanOptions2["EXCLUDING"] = "e"; - CleanOptions2["QUIET"] = "q"; - CleanOptions2["RECURSIVE"] = "d"; - return CleanOptions2; - })(CleanOptions || {}); - CleanOptionValues = /* @__PURE__ */ new Set([ - "i", - ...asStringArray(Object.values(CleanOptions)) - ]); - } -}); -function configListParser(text2) { - const config = new ConfigList(); - for (const item of configParser(text2)) { - config.addValue(item.file, String(item.key), item.value); - } - return config; -} -function configGetParser(text2, key2) { - let value = null; - const values = []; - const scopes = /* @__PURE__ */ new Map(); - for (const item of configParser(text2, key2)) { - if (item.key !== key2) { - continue; - } - values.push(value = item.value); - if (!scopes.has(item.file)) { - scopes.set(item.file, []); - } - scopes.get(item.file).push(value); - } - return { - key: key2, - paths: Array.from(scopes.keys()), - scopes, - value, - values - }; -} -function configFilePath(filePath) { - return filePath.replace(/^(file):/, ""); -} -function* configParser(text2, requestedKey = null) { - const lines = text2.split("\0"); - for (let i = 0, max = lines.length - 1; i < max; ) { - const file = configFilePath(lines[i++]); - let value = lines[i++]; - let key2 = requestedKey; - if (value.includes("\n")) { - const line = splitOn(value, "\n"); - key2 = line[0]; - value = line[1]; - } - yield { file, key: key2, value }; - } -} -var ConfigList; -var init_ConfigList = __esm2({ - "src/lib/responses/ConfigList.ts"() { - init_utils(); - ConfigList = class { - constructor() { - this.files = []; - this.values = /* @__PURE__ */ Object.create(null); - } - get all() { - if (!this._all) { - this._all = this.files.reduce((all, file) => { - return Object.assign(all, this.values[file]); - }, {}); - } - return this._all; - } - addFile(file) { - if (!(file in this.values)) { - const latest = last(this.files); - this.values[file] = latest ? Object.create(this.values[latest]) : {}; - this.files.push(file); - } - return this.values[file]; - } - addValue(file, key2, value) { - const values = this.addFile(file); - if (!values.hasOwnProperty(key2)) { - values[key2] = value; - } else if (Array.isArray(values[key2])) { - values[key2].push(value); - } else { - values[key2] = [values[key2], value]; - } - this._all = void 0; - } - }; - } -}); -function asConfigScope(scope, fallback) { - if (typeof scope === "string" && GitConfigScope.hasOwnProperty(scope)) { - return scope; - } - return fallback; -} -function addConfigTask(key2, value, append22, scope) { - const commands2 = ["config", `--${scope}`]; - if (append22) { - commands2.push("--add"); - } - commands2.push(key2, value); - return { - commands: commands2, - format: "utf-8", - parser(text2) { - return text2; - } - }; -} -function getConfigTask(key2, scope) { - const commands2 = ["config", "--null", "--show-origin", "--get-all", key2]; - if (scope) { - commands2.splice(1, 0, `--${scope}`); - } - return { - commands: commands2, - format: "utf-8", - parser(text2) { - return configGetParser(text2, key2); - } - }; -} -function listConfigTask(scope) { - const commands2 = ["config", "--list", "--show-origin", "--null"]; - if (scope) { - commands2.push(`--${scope}`); - } - return { - commands: commands2, - format: "utf-8", - parser(text2) { - return configListParser(text2); - } - }; -} -function config_default() { - return { - addConfig(key2, value, ...rest) { - return this._runTask(addConfigTask(key2, value, rest[0] === true, asConfigScope( - rest[1], - "local" - /* local */ - )), trailingFunctionArgument(arguments)); - }, - getConfig(key2, scope) { - return this._runTask(getConfigTask(key2, asConfigScope(scope, void 0)), trailingFunctionArgument(arguments)); - }, - listConfig(...rest) { - return this._runTask(listConfigTask(asConfigScope(rest[0], void 0)), trailingFunctionArgument(arguments)); - } - }; -} -var GitConfigScope; -var init_config = __esm2({ - "src/lib/tasks/config.ts"() { - init_ConfigList(); - init_utils(); - GitConfigScope = /* @__PURE__ */ ((GitConfigScope2) => { - GitConfigScope2["system"] = "system"; - GitConfigScope2["global"] = "global"; - GitConfigScope2["local"] = "local"; - GitConfigScope2["worktree"] = "worktree"; - return GitConfigScope2; - })(GitConfigScope || {}); - } -}); -function grepQueryBuilder(...params) { - return new GrepQuery().param(...params); -} -function parseGrep(grep) { - const paths = /* @__PURE__ */ new Set(); - const results = {}; - forEachLineWithContent(grep, (input) => { - const [path2, line, preview] = input.split(NULL); - paths.add(path2); - (results[path2] = results[path2] || []).push({ - line: asNumber(line), - path: path2, - preview - }); - }); - return { - paths, - results - }; -} -function grep_default() { - return { - grep(searchTerm) { - const then = trailingFunctionArgument(arguments); - const options = getTrailingOptions(arguments); - for (const option of disallowedOptions) { - if (options.includes(option)) { - return this._runTask(configurationErrorTask(`git.grep: use of "${option}" is not supported.`), then); - } - } - if (typeof searchTerm === "string") { - searchTerm = grepQueryBuilder().param(searchTerm); - } - const commands2 = ["grep", "--null", "-n", "--full-name", ...options, ...searchTerm]; - return this._runTask({ - commands: commands2, - format: "utf-8", - parser(stdOut) { - return parseGrep(stdOut); - } - }, then); - } - }; -} -var disallowedOptions; -var Query; -var _a; -var GrepQuery; -var init_grep = __esm2({ - "src/lib/tasks/grep.ts"() { - init_utils(); - init_task(); - disallowedOptions = ["-h"]; - Query = Symbol("grepQuery"); - GrepQuery = class { - constructor() { - this[_a] = []; - } - *[(_a = Query, Symbol.iterator)]() { - for (const query of this[Query]) { - yield query; - } - } - and(...and) { - and.length && this[Query].push("--and", "(", ...prefixedArray(and, "-e"), ")"); - return this; - } - param(...param) { - this[Query].push(...prefixedArray(param, "-e")); - return this; - } - }; - } -}); -var reset_exports = {}; -__export2(reset_exports, { - ResetMode: () => ResetMode, - getResetMode: () => getResetMode, - resetTask: () => resetTask -}); -function resetTask(mode, customArgs) { - const commands2 = ["reset"]; - if (isValidResetMode(mode)) { - commands2.push(`--${mode}`); - } - commands2.push(...customArgs); - return straightThroughStringTask(commands2); -} -function getResetMode(mode) { - if (isValidResetMode(mode)) { - return mode; - } - switch (typeof mode) { - case "string": - case "undefined": - return "soft"; - } - return; -} -function isValidResetMode(mode) { - return ResetModes.includes(mode); -} -var ResetMode; -var ResetModes; -var init_reset = __esm2({ - "src/lib/tasks/reset.ts"() { - init_task(); - ResetMode = /* @__PURE__ */ ((ResetMode2) => { - ResetMode2["MIXED"] = "mixed"; - ResetMode2["SOFT"] = "soft"; - ResetMode2["HARD"] = "hard"; - ResetMode2["MERGE"] = "merge"; - ResetMode2["KEEP"] = "keep"; - return ResetMode2; - })(ResetMode || {}); - ResetModes = Array.from(Object.values(ResetMode)); - } -}); -function createLog() { - return (0, import_debug.default)("simple-git"); -} -function prefixedLogger(to, prefix, forward) { - if (!prefix || !String(prefix).replace(/\s*/, "")) { - return !forward ? to : (message, ...args) => { - to(message, ...args); - forward(message, ...args); - }; - } - return (message, ...args) => { - to(`%s ${message}`, prefix, ...args); - if (forward) { - forward(message, ...args); - } - }; -} -function childLoggerName(name, childDebugger, { namespace: parentNamespace }) { - if (typeof name === "string") { - return name; - } - const childNamespace = childDebugger && childDebugger.namespace || ""; - if (childNamespace.startsWith(parentNamespace)) { - return childNamespace.substr(parentNamespace.length + 1); - } - return childNamespace || parentNamespace; -} -function createLogger(label, verbose, initialStep, infoDebugger = createLog()) { - const labelPrefix = label && `[${label}]` || ""; - const spawned = []; - const debugDebugger = typeof verbose === "string" ? infoDebugger.extend(verbose) : verbose; - const key2 = childLoggerName(filterType(verbose, filterString), debugDebugger, infoDebugger); - return step(initialStep); - function sibling(name, initial) { - return append(spawned, createLogger(label, key2.replace(/^[^:]+/, name), initial, infoDebugger)); - } - function step(phase) { - const stepPrefix = phase && `[${phase}]` || ""; - const debug22 = debugDebugger && prefixedLogger(debugDebugger, stepPrefix) || NOOP; - const info = prefixedLogger(infoDebugger, `${labelPrefix} ${stepPrefix}`, debug22); - return Object.assign(debugDebugger ? debug22 : info, { - label, - sibling, - info, - step - }); - } -} -var init_git_logger = __esm2({ - "src/lib/git-logger.ts"() { - init_utils(); - import_debug.default.formatters.L = (value) => String(filterHasLength(value) ? value.length : "-"); - import_debug.default.formatters.B = (value) => { - if (Buffer.isBuffer(value)) { - return value.toString("utf8"); - } - return objectToString(value); - }; - } -}); -var _TasksPendingQueue; -var TasksPendingQueue; -var init_tasks_pending_queue = __esm2({ - "src/lib/runners/tasks-pending-queue.ts"() { - init_git_error(); - init_git_logger(); - _TasksPendingQueue = class { - constructor(logLabel = "GitExecutor") { - this.logLabel = logLabel; - this._queue = /* @__PURE__ */ new Map(); - } - withProgress(task) { - return this._queue.get(task); - } - createProgress(task) { - const name = _TasksPendingQueue.getName(task.commands[0]); - const logger = createLogger(this.logLabel, name); - return { - task, - logger, - name - }; - } - push(task) { - const progress = this.createProgress(task); - progress.logger("Adding task to the queue, commands = %o", task.commands); - this._queue.set(task, progress); - return progress; - } - fatal(err) { - for (const [task, { logger }] of Array.from(this._queue.entries())) { - if (task === err.task) { - logger.info(`Failed %o`, err); - logger(`Fatal exception, any as-yet un-started tasks run through this executor will not be attempted`); - } else { - logger.info(`A fatal exception occurred in a previous task, the queue has been purged: %o`, err.message); - } - this.complete(task); - } - if (this._queue.size !== 0) { - throw new Error(`Queue size should be zero after fatal: ${this._queue.size}`); - } - } - complete(task) { - const progress = this.withProgress(task); - if (progress) { - this._queue.delete(task); - } - } - attempt(task) { - const progress = this.withProgress(task); - if (!progress) { - throw new GitError(void 0, "TasksPendingQueue: attempt called for an unknown task"); - } - progress.logger("Starting task"); - return progress; - } - static getName(name = "empty") { - return `task:${name}:${++_TasksPendingQueue.counter}`; - } - }; - TasksPendingQueue = _TasksPendingQueue; - TasksPendingQueue.counter = 0; - } -}); -function pluginContext(task, commands2) { - return { - method: first(task.commands) || "", - commands: commands2 - }; -} -function onErrorReceived(target, logger) { - return (err) => { - logger(`[ERROR] child process exception %o`, err); - target.push(Buffer.from(String(err.stack), "ascii")); - }; -} -function onDataReceived(target, name, logger, output) { - return (buffer2) => { - logger(`%s received %L bytes`, name, buffer2); - output(`%B`, buffer2); - target.push(buffer2); - }; -} -var GitExecutorChain; -var init_git_executor_chain = __esm2({ - "src/lib/runners/git-executor-chain.ts"() { - init_git_error(); - init_task(); - init_utils(); - init_tasks_pending_queue(); - GitExecutorChain = class { - constructor(_executor, _scheduler, _plugins) { - this._executor = _executor; - this._scheduler = _scheduler; - this._plugins = _plugins; - this._chain = Promise.resolve(); - this._queue = new TasksPendingQueue(); - } - get binary() { - return this._executor.binary; - } - get cwd() { - return this._cwd || this._executor.cwd; - } - set cwd(cwd) { - this._cwd = cwd; - } - get env() { - return this._executor.env; - } - get outputHandler() { - return this._executor.outputHandler; - } - chain() { - return this; - } - push(task) { - this._queue.push(task); - return this._chain = this._chain.then(() => this.attemptTask(task)); - } - attemptTask(task) { - return __async(this, null, function* () { - const onScheduleComplete = yield this._scheduler.next(); - const onQueueComplete = () => this._queue.complete(task); - try { - const { logger } = this._queue.attempt(task); - return yield isEmptyTask(task) ? this.attemptEmptyTask(task, logger) : this.attemptRemoteTask(task, logger); - } catch (e) { - throw this.onFatalException(task, e); - } finally { - onQueueComplete(); - onScheduleComplete(); - } - }); - } - onFatalException(task, e) { - const gitError = e instanceof GitError ? Object.assign(e, { task }) : new GitError(task, e && String(e)); - this._chain = Promise.resolve(); - this._queue.fatal(gitError); - return gitError; - } - attemptRemoteTask(task, logger) { - return __async(this, null, function* () { - const args = this._plugins.exec("spawn.args", [...task.commands], pluginContext(task, task.commands)); - const raw = yield this.gitResponse(task, this.binary, args, this.outputHandler, logger.step("SPAWN")); - const outputStreams = yield this.handleTaskData(task, args, raw, logger.step("HANDLE")); - logger(`passing response to task's parser as a %s`, task.format); - if (isBufferTask(task)) { - return callTaskParser(task.parser, outputStreams); - } - return callTaskParser(task.parser, outputStreams.asStrings()); - }); - } - attemptEmptyTask(task, logger) { - return __async(this, null, function* () { - logger(`empty task bypassing child process to call to task's parser`); - return task.parser(this); - }); - } - handleTaskData(task, args, result, logger) { - const { exitCode, rejection, stdOut, stdErr } = result; - return new Promise((done, fail) => { - logger(`Preparing to handle process response exitCode=%d stdOut=`, exitCode); - const { error } = this._plugins.exec("task.error", { error: rejection }, __spreadValues(__spreadValues({}, pluginContext(task, args)), result)); - if (error && task.onError) { - logger.info(`exitCode=%s handling with custom error handler`); - return task.onError(result, error, (newStdOut) => { - logger.info(`custom error handler treated as success`); - logger(`custom error returned a %s`, objectToString(newStdOut)); - done(new GitOutputStreams(Array.isArray(newStdOut) ? Buffer.concat(newStdOut) : newStdOut, Buffer.concat(stdErr))); - }, fail); - } - if (error) { - logger.info(`handling as error: exitCode=%s stdErr=%s rejection=%o`, exitCode, stdErr.length, rejection); - return fail(error); - } - logger.info(`retrieving task output complete`); - done(new GitOutputStreams(Buffer.concat(stdOut), Buffer.concat(stdErr))); - }); - } - gitResponse(task, command, args, outputHandler, logger) { - return __async(this, null, function* () { - const outputLogger = logger.sibling("output"); - const spawnOptions = this._plugins.exec("spawn.options", { - cwd: this.cwd, - env: this.env, - windowsHide: true - }, pluginContext(task, task.commands)); - return new Promise((done) => { - const stdOut = []; - const stdErr = []; - logger.info(`%s %o`, command, args); - logger("%O", spawnOptions); - let rejection = this._beforeSpawn(task, args); - if (rejection) { - return done({ - stdOut, - stdErr, - exitCode: 9901, - rejection - }); - } - this._plugins.exec("spawn.before", void 0, __spreadProps(__spreadValues({}, pluginContext(task, args)), { - kill(reason) { - rejection = reason || rejection; - } - })); - const spawned = (0, import_child_process.spawn)(command, args, spawnOptions); - spawned.stdout.on("data", onDataReceived(stdOut, "stdOut", logger, outputLogger.step("stdOut"))); - spawned.stderr.on("data", onDataReceived(stdErr, "stdErr", logger, outputLogger.step("stdErr"))); - spawned.on("error", onErrorReceived(stdErr, logger)); - if (outputHandler) { - logger(`Passing child process stdOut/stdErr to custom outputHandler`); - outputHandler(command, spawned.stdout, spawned.stderr, [...args]); - } - this._plugins.exec("spawn.after", void 0, __spreadProps(__spreadValues({}, pluginContext(task, args)), { - spawned, - close(exitCode, reason) { - done({ - stdOut, - stdErr, - exitCode, - rejection: rejection || reason - }); - }, - kill(reason) { - if (spawned.killed) { - return; - } - rejection = reason; - spawned.kill("SIGINT"); - } - })); - }); - }); - } - _beforeSpawn(task, args) { - let rejection; - this._plugins.exec("spawn.before", void 0, __spreadProps(__spreadValues({}, pluginContext(task, args)), { - kill(reason) { - rejection = reason || rejection; - } - })); - return rejection; - } - }; - } -}); -var git_executor_exports = {}; -__export2(git_executor_exports, { - GitExecutor: () => GitExecutor -}); -var GitExecutor; -var init_git_executor = __esm2({ - "src/lib/runners/git-executor.ts"() { - init_git_executor_chain(); - GitExecutor = class { - constructor(binary = "git", cwd, _scheduler, _plugins) { - this.binary = binary; - this.cwd = cwd; - this._scheduler = _scheduler; - this._plugins = _plugins; - this._chain = new GitExecutorChain(this, this._scheduler, this._plugins); - } - chain() { - return new GitExecutorChain(this, this._scheduler, this._plugins); - } - push(task) { - return this._chain.push(task); - } - }; - } -}); -function taskCallback(task, response, callback = NOOP) { - const onSuccess = (data) => { - callback(null, data); - }; - const onError2 = (err) => { - if ((err == null ? void 0 : err.task) === task) { - callback(err instanceof GitResponseError ? addDeprecationNoticeToError(err) : err, void 0); - } - }; - response.then(onSuccess, onError2); -} -function addDeprecationNoticeToError(err) { - let log2 = (name) => { - console.warn(`simple-git deprecation notice: accessing GitResponseError.${name} should be GitResponseError.git.${name}, this will no longer be available in version 3`); - log2 = NOOP; - }; - return Object.create(err, Object.getOwnPropertyNames(err.git).reduce(descriptorReducer, {})); - function descriptorReducer(all, name) { - if (name in err) { - return all; - } - all[name] = { - enumerable: false, - configurable: false, - get() { - log2(name); - return err.git[name]; - } - }; - return all; - } -} -var init_task_callback = __esm2({ - "src/lib/task-callback.ts"() { - init_git_response_error(); - init_utils(); - } -}); -function changeWorkingDirectoryTask(directory, root2) { - return adhocExecTask((instance10) => { - if (!folderExists(directory)) { - throw new Error(`Git.cwd: cannot change to non-directory "${directory}"`); - } - return (root2 || instance10).cwd = directory; - }); -} -var init_change_working_directory = __esm2({ - "src/lib/tasks/change-working-directory.ts"() { - init_utils(); - init_task(); - } -}); -function checkoutTask(args) { - const commands2 = ["checkout", ...args]; - if (commands2[1] === "-b" && commands2.includes("-B")) { - commands2[1] = remove2(commands2, "-B"); - } - return straightThroughStringTask(commands2); -} -function checkout_default() { - return { - checkout() { - return this._runTask(checkoutTask(getTrailingOptions(arguments, 1)), trailingFunctionArgument(arguments)); - }, - checkoutBranch(branchName, startPoint) { - return this._runTask(checkoutTask(["-b", branchName, startPoint, ...getTrailingOptions(arguments)]), trailingFunctionArgument(arguments)); - }, - checkoutLocalBranch(branchName) { - return this._runTask(checkoutTask(["-b", branchName, ...getTrailingOptions(arguments)]), trailingFunctionArgument(arguments)); - } - }; -} -var init_checkout = __esm2({ - "src/lib/tasks/checkout.ts"() { - init_utils(); - init_task(); - } -}); -function parseCommitResult(stdOut) { - const result = { - author: null, - branch: "", - commit: "", - root: false, - summary: { - changes: 0, - insertions: 0, - deletions: 0 - } - }; - return parseStringResponse(result, parsers, stdOut); -} -var parsers; -var init_parse_commit = __esm2({ - "src/lib/parsers/parse-commit.ts"() { - init_utils(); - parsers = [ - new LineParser(/^\[([^\s]+)( \([^)]+\))? ([^\]]+)/, (result, [branch2, root2, commit2]) => { - result.branch = branch2; - result.commit = commit2; - result.root = !!root2; - }), - new LineParser(/\s*Author:\s(.+)/i, (result, [author]) => { - const parts = author.split("<"); - const email = parts.pop(); - if (!email || !email.includes("@")) { - return; - } - result.author = { - email: email.substr(0, email.length - 1), - name: parts.join("<").trim() - }; - }), - new LineParser(/(\d+)[^,]*(?:,\s*(\d+)[^,]*)(?:,\s*(\d+))/g, (result, [changes, insertions, deletions]) => { - result.summary.changes = parseInt(changes, 10) || 0; - result.summary.insertions = parseInt(insertions, 10) || 0; - result.summary.deletions = parseInt(deletions, 10) || 0; - }), - new LineParser(/^(\d+)[^,]*(?:,\s*(\d+)[^(]+\(([+-]))?/, (result, [changes, lines, direction]) => { - result.summary.changes = parseInt(changes, 10) || 0; - const count = parseInt(lines, 10) || 0; - if (direction === "-") { - result.summary.deletions = count; - } else if (direction === "+") { - result.summary.insertions = count; - } - }) - ]; - } -}); -function commitTask(message, files, customArgs) { - const commands2 = [ - "-c", - "core.abbrev=40", - "commit", - ...prefixedArray(message, "-m"), - ...files, - ...customArgs - ]; - return { - commands: commands2, - format: "utf-8", - parser: parseCommitResult - }; -} -function commit_default() { - return { - commit(message, ...rest) { - const next = trailingFunctionArgument(arguments); - const task = rejectDeprecatedSignatures(message) || commitTask(asArray(message), asArray(filterType(rest[0], filterStringOrStringArray, [])), [...filterType(rest[1], filterArray, []), ...getTrailingOptions(arguments, 0, true)]); - return this._runTask(task, next); - } - }; - function rejectDeprecatedSignatures(message) { - return !filterStringOrStringArray(message) && configurationErrorTask(`git.commit: requires the commit message to be supplied as a string/string[]`); - } -} -var init_commit = __esm2({ - "src/lib/tasks/commit.ts"() { - init_parse_commit(); - init_utils(); - init_task(); - } -}); -function hashObjectTask(filePath, write) { - const commands2 = ["hash-object", filePath]; - if (write) { - commands2.push("-w"); - } - return straightThroughStringTask(commands2, true); -} -var init_hash_object = __esm2({ - "src/lib/tasks/hash-object.ts"() { - init_task(); - } -}); -function parseInit(bare, path2, text2) { - const response = String(text2).trim(); - let result; - if (result = initResponseRegex.exec(response)) { - return new InitSummary(bare, path2, false, result[1]); - } - if (result = reInitResponseRegex.exec(response)) { - return new InitSummary(bare, path2, true, result[1]); - } - let gitDir = ""; - const tokens = response.split(" "); - while (tokens.length) { - const token = tokens.shift(); - if (token === "in") { - gitDir = tokens.join(" "); - break; - } - } - return new InitSummary(bare, path2, /^re/i.test(response), gitDir); -} -var InitSummary; -var initResponseRegex; -var reInitResponseRegex; -var init_InitSummary = __esm2({ - "src/lib/responses/InitSummary.ts"() { - InitSummary = class { - constructor(bare, path2, existing, gitDir) { - this.bare = bare; - this.path = path2; - this.existing = existing; - this.gitDir = gitDir; - } - }; - initResponseRegex = /^Init.+ repository in (.+)$/; - reInitResponseRegex = /^Rein.+ in (.+)$/; - } -}); -function hasBareCommand(command) { - return command.includes(bareCommand); -} -function initTask(bare = false, path2, customArgs) { - const commands2 = ["init", ...customArgs]; - if (bare && !hasBareCommand(commands2)) { - commands2.splice(1, 0, bareCommand); - } - return { - commands: commands2, - format: "utf-8", - parser(text2) { - return parseInit(commands2.includes("--bare"), path2, text2); - } - }; -} -var bareCommand; -var init_init = __esm2({ - "src/lib/tasks/init.ts"() { - init_InitSummary(); - bareCommand = "--bare"; - } -}); -function logFormatFromCommand(customArgs) { - for (let i = 0; i < customArgs.length; i++) { - const format = logFormatRegex.exec(customArgs[i]); - if (format) { - return `--${format[1]}`; - } - } - return ""; -} -function isLogFormat(customArg) { - return logFormatRegex.test(customArg); -} -var logFormatRegex; -var init_log_format = __esm2({ - "src/lib/args/log-format.ts"() { - logFormatRegex = /^--(stat|numstat|name-only|name-status)(=|$)/; - } -}); -var DiffSummary; -var init_DiffSummary = __esm2({ - "src/lib/responses/DiffSummary.ts"() { - DiffSummary = class { - constructor() { - this.changed = 0; - this.deletions = 0; - this.insertions = 0; - this.files = []; - } - }; - } -}); -function getDiffParser(format = "") { - const parser3 = diffSummaryParsers[format]; - return (stdOut) => parseStringResponse(new DiffSummary(), parser3, stdOut, false); -} -var statParser; -var numStatParser; -var nameOnlyParser; -var nameStatusParser; -var diffSummaryParsers; -var init_parse_diff_summary = __esm2({ - "src/lib/parsers/parse-diff-summary.ts"() { - init_log_format(); - init_DiffSummary(); - init_utils(); - statParser = [ - new LineParser(/(.+)\s+\|\s+(\d+)(\s+[+\-]+)?$/, (result, [file, changes, alterations = ""]) => { - result.files.push({ - file: file.trim(), - changes: asNumber(changes), - insertions: alterations.replace(/[^+]/g, "").length, - deletions: alterations.replace(/[^-]/g, "").length, - binary: false - }); - }), - new LineParser(/(.+) \|\s+Bin ([0-9.]+) -> ([0-9.]+) ([a-z]+)/, (result, [file, before, after]) => { - result.files.push({ - file: file.trim(), - before: asNumber(before), - after: asNumber(after), - binary: true - }); - }), - new LineParser(/(\d+) files? changed\s*((?:, \d+ [^,]+){0,2})/, (result, [changed, summary]) => { - const inserted = /(\d+) i/.exec(summary); - const deleted = /(\d+) d/.exec(summary); - result.changed = asNumber(changed); - result.insertions = asNumber(inserted == null ? void 0 : inserted[1]); - result.deletions = asNumber(deleted == null ? void 0 : deleted[1]); - }) - ]; - numStatParser = [ - new LineParser(/(\d+)\t(\d+)\t(.+)$/, (result, [changesInsert, changesDelete, file]) => { - const insertions = asNumber(changesInsert); - const deletions = asNumber(changesDelete); - result.changed++; - result.insertions += insertions; - result.deletions += deletions; - result.files.push({ - file, - changes: insertions + deletions, - insertions, - deletions, - binary: false - }); - }), - new LineParser(/-\t-\t(.+)$/, (result, [file]) => { - result.changed++; - result.files.push({ - file, - after: 0, - before: 0, - binary: true - }); - }) - ]; - nameOnlyParser = [ - new LineParser(/(.+)$/, (result, [file]) => { - result.changed++; - result.files.push({ - file, - changes: 0, - insertions: 0, - deletions: 0, - binary: false - }); - }) - ]; - nameStatusParser = [ - new LineParser(/([ACDMRTUXB])([0-9][0-9][0-9])?\t(.[^\t]+)\t?(.*)?$/, (result, [status2, _similarity, from, to]) => { - result.changed++; - result.files.push({ - file: to != null ? to : from, - changes: 0, - status: status2, - insertions: 0, - deletions: 0, - binary: false - }); - }) - ]; - diffSummaryParsers = { - [ - "" - /* NONE */ - ]: statParser, - [ - "--stat" - /* STAT */ - ]: statParser, - [ - "--numstat" - /* NUM_STAT */ - ]: numStatParser, - [ - "--name-status" - /* NAME_STATUS */ - ]: nameStatusParser, - [ - "--name-only" - /* NAME_ONLY */ - ]: nameOnlyParser - }; - } -}); -function lineBuilder(tokens, fields) { - return fields.reduce((line, field, index2) => { - line[field] = tokens[index2] || ""; - return line; - }, /* @__PURE__ */ Object.create({ diff: null })); -} -function createListLogSummaryParser(splitter = SPLITTER, fields = defaultFieldNames, logFormat = "") { - const parseDiffResult = getDiffParser(logFormat); - return function(stdOut) { - const all = toLinesWithContent(stdOut, true, START_BOUNDARY).map(function(item) { - const lineDetail = item.trim().split(COMMIT_BOUNDARY); - const listLogLine = lineBuilder(lineDetail[0].trim().split(splitter), fields); - if (lineDetail.length > 1 && !!lineDetail[1].trim()) { - listLogLine.diff = parseDiffResult(lineDetail[1]); - } - return listLogLine; - }); - return { - all, - latest: all.length && all[0] || null, - total: all.length - }; - }; -} -var START_BOUNDARY; -var COMMIT_BOUNDARY; -var SPLITTER; -var defaultFieldNames; -var init_parse_list_log_summary = __esm2({ - "src/lib/parsers/parse-list-log-summary.ts"() { - init_utils(); - init_parse_diff_summary(); - init_log_format(); - START_BOUNDARY = "\xF2\xF2\xF2\xF2\xF2\xF2 "; - COMMIT_BOUNDARY = " \xF2\xF2"; - SPLITTER = " \xF2 "; - defaultFieldNames = ["hash", "date", "message", "refs", "author_name", "author_email"]; - } -}); -var diff_exports = {}; -__export2(diff_exports, { - diffSummaryTask: () => diffSummaryTask, - validateLogFormatConfig: () => validateLogFormatConfig -}); -function diffSummaryTask(customArgs) { - let logFormat = logFormatFromCommand(customArgs); - const commands2 = ["diff"]; - if (logFormat === "") { - logFormat = "--stat"; - commands2.push("--stat=4096"); - } - commands2.push(...customArgs); - return validateLogFormatConfig(commands2) || { - commands: commands2, - format: "utf-8", - parser: getDiffParser(logFormat) - }; -} -function validateLogFormatConfig(customArgs) { - const flags = customArgs.filter(isLogFormat); - if (flags.length > 1) { - return configurationErrorTask(`Summary flags are mutually exclusive - pick one of ${flags.join(",")}`); - } - if (flags.length && customArgs.includes("-z")) { - return configurationErrorTask(`Summary flag ${flags} parsing is not compatible with null termination option '-z'`); - } -} -var init_diff = __esm2({ - "src/lib/tasks/diff.ts"() { - init_log_format(); - init_parse_diff_summary(); - init_task(); - } -}); -function prettyFormat(format, splitter) { - const fields = []; - const formatStr = []; - Object.keys(format).forEach((field) => { - fields.push(field); - formatStr.push(String(format[field])); - }); - return [fields, formatStr.join(splitter)]; -} -function userOptions(input) { - return Object.keys(input).reduce((out, key2) => { - if (!(key2 in excludeOptions)) { - out[key2] = input[key2]; - } - return out; - }, {}); -} -function parseLogOptions(opt = {}, customArgs = []) { - const splitter = filterType(opt.splitter, filterString, SPLITTER); - const format = !filterPrimitives(opt.format) && opt.format ? opt.format : { - hash: "%H", - date: opt.strictDate === false ? "%ai" : "%aI", - message: "%s", - refs: "%D", - body: opt.multiLine ? "%B" : "%b", - author_name: opt.mailMap !== false ? "%aN" : "%an", - author_email: opt.mailMap !== false ? "%aE" : "%ae" - }; - const [fields, formatStr] = prettyFormat(format, splitter); - const suffix = []; - const command = [ - `--pretty=format:${START_BOUNDARY}${formatStr}${COMMIT_BOUNDARY}`, - ...customArgs - ]; - const maxCount = opt.n || opt["max-count"] || opt.maxCount; - if (maxCount) { - command.push(`--max-count=${maxCount}`); - } - if (opt.from || opt.to) { - const rangeOperator = opt.symmetric !== false ? "..." : ".."; - suffix.push(`${opt.from || ""}${rangeOperator}${opt.to || ""}`); - } - if (filterString(opt.file)) { - suffix.push("--follow", opt.file); - } - appendTaskOptions(userOptions(opt), command); - return { - fields, - splitter, - commands: [...command, ...suffix] - }; -} -function logTask(splitter, fields, customArgs) { - const parser3 = createListLogSummaryParser(splitter, fields, logFormatFromCommand(customArgs)); - return { - commands: ["log", ...customArgs], - format: "utf-8", - parser: parser3 - }; -} -function log_default() { - return { - log(...rest) { - const next = trailingFunctionArgument(arguments); - const options = parseLogOptions(trailingOptionsArgument(arguments), filterType(arguments[0], filterArray)); - const task = rejectDeprecatedSignatures(...rest) || validateLogFormatConfig(options.commands) || createLogTask(options); - return this._runTask(task, next); - } - }; - function createLogTask(options) { - return logTask(options.splitter, options.fields, options.commands); - } - function rejectDeprecatedSignatures(from, to) { - return filterString(from) && filterString(to) && configurationErrorTask(`git.log(string, string) should be replaced with git.log({ from: string, to: string })`); - } -} -var excludeOptions; -var init_log = __esm2({ - "src/lib/tasks/log.ts"() { - init_log_format(); - init_parse_list_log_summary(); - init_utils(); - init_task(); - init_diff(); - excludeOptions = /* @__PURE__ */ ((excludeOptions2) => { - excludeOptions2[excludeOptions2["--pretty"] = 0] = "--pretty"; - excludeOptions2[excludeOptions2["max-count"] = 1] = "max-count"; - excludeOptions2[excludeOptions2["maxCount"] = 2] = "maxCount"; - excludeOptions2[excludeOptions2["n"] = 3] = "n"; - excludeOptions2[excludeOptions2["file"] = 4] = "file"; - excludeOptions2[excludeOptions2["format"] = 5] = "format"; - excludeOptions2[excludeOptions2["from"] = 6] = "from"; - excludeOptions2[excludeOptions2["to"] = 7] = "to"; - excludeOptions2[excludeOptions2["splitter"] = 8] = "splitter"; - excludeOptions2[excludeOptions2["symmetric"] = 9] = "symmetric"; - excludeOptions2[excludeOptions2["mailMap"] = 10] = "mailMap"; - excludeOptions2[excludeOptions2["multiLine"] = 11] = "multiLine"; - excludeOptions2[excludeOptions2["strictDate"] = 12] = "strictDate"; - return excludeOptions2; - })(excludeOptions || {}); - } -}); -var MergeSummaryConflict; -var MergeSummaryDetail; -var init_MergeSummary = __esm2({ - "src/lib/responses/MergeSummary.ts"() { - MergeSummaryConflict = class { - constructor(reason, file = null, meta) { - this.reason = reason; - this.file = file; - this.meta = meta; - } - toString() { - return `${this.file}:${this.reason}`; - } - }; - MergeSummaryDetail = class { - constructor() { - this.conflicts = []; - this.merges = []; - this.result = "success"; - } - get failed() { - return this.conflicts.length > 0; - } - get reason() { - return this.result; - } - toString() { - if (this.conflicts.length) { - return `CONFLICTS: ${this.conflicts.join(", ")}`; - } - return "OK"; - } - }; - } -}); -var PullSummary; -var PullFailedSummary; -var init_PullSummary = __esm2({ - "src/lib/responses/PullSummary.ts"() { - PullSummary = class { - constructor() { - this.remoteMessages = { - all: [] - }; - this.created = []; - this.deleted = []; - this.files = []; - this.deletions = {}; - this.insertions = {}; - this.summary = { - changes: 0, - deletions: 0, - insertions: 0 - }; - } - }; - PullFailedSummary = class { - constructor() { - this.remote = ""; - this.hash = { - local: "", - remote: "" - }; - this.branch = { - local: "", - remote: "" - }; - this.message = ""; - } - toString() { - return this.message; - } - }; - } -}); -function objectEnumerationResult(remoteMessages) { - return remoteMessages.objects = remoteMessages.objects || { - compressing: 0, - counting: 0, - enumerating: 0, - packReused: 0, - reused: { count: 0, delta: 0 }, - total: { count: 0, delta: 0 } - }; -} -function asObjectCount(source) { - const count = /^\s*(\d+)/.exec(source); - const delta = /delta (\d+)/i.exec(source); - return { - count: asNumber(count && count[1] || "0"), - delta: asNumber(delta && delta[1] || "0") - }; -} -var remoteMessagesObjectParsers; -var init_parse_remote_objects = __esm2({ - "src/lib/parsers/parse-remote-objects.ts"() { - init_utils(); - remoteMessagesObjectParsers = [ - new RemoteLineParser(/^remote:\s*(enumerating|counting|compressing) objects: (\d+),/i, (result, [action, count]) => { - const key2 = action.toLowerCase(); - const enumeration = objectEnumerationResult(result.remoteMessages); - Object.assign(enumeration, { [key2]: asNumber(count) }); - }), - new RemoteLineParser(/^remote:\s*(enumerating|counting|compressing) objects: \d+% \(\d+\/(\d+)\),/i, (result, [action, count]) => { - const key2 = action.toLowerCase(); - const enumeration = objectEnumerationResult(result.remoteMessages); - Object.assign(enumeration, { [key2]: asNumber(count) }); - }), - new RemoteLineParser(/total ([^,]+), reused ([^,]+), pack-reused (\d+)/i, (result, [total, reused, packReused]) => { - const objects = objectEnumerationResult(result.remoteMessages); - objects.total = asObjectCount(total); - objects.reused = asObjectCount(reused); - objects.packReused = asNumber(packReused); - }) - ]; - } -}); -function parseRemoteMessages(_stdOut, stdErr) { - return parseStringResponse({ remoteMessages: new RemoteMessageSummary() }, parsers2, stdErr); -} -var parsers2; -var RemoteMessageSummary; -var init_parse_remote_messages = __esm2({ - "src/lib/parsers/parse-remote-messages.ts"() { - init_utils(); - init_parse_remote_objects(); - parsers2 = [ - new RemoteLineParser(/^remote:\s*(.+)$/, (result, [text2]) => { - result.remoteMessages.all.push(text2.trim()); - return false; - }), - ...remoteMessagesObjectParsers, - new RemoteLineParser([/create a (?:pull|merge) request/i, /\s(https?:\/\/\S+)$/], (result, [pullRequestUrl]) => { - result.remoteMessages.pullRequestUrl = pullRequestUrl; - }), - new RemoteLineParser([/found (\d+) vulnerabilities.+\(([^)]+)\)/i, /\s(https?:\/\/\S+)$/], (result, [count, summary, url]) => { - result.remoteMessages.vulnerabilities = { - count: asNumber(count), - summary, - url - }; - }) - ]; - RemoteMessageSummary = class { - constructor() { - this.all = []; - } - }; - } -}); -function parsePullErrorResult(stdOut, stdErr) { - const pullError = parseStringResponse(new PullFailedSummary(), errorParsers, [stdOut, stdErr]); - return pullError.message && pullError; -} -var FILE_UPDATE_REGEX; -var SUMMARY_REGEX; -var ACTION_REGEX; -var parsers3; -var errorParsers; -var parsePullDetail; -var parsePullResult; -var init_parse_pull = __esm2({ - "src/lib/parsers/parse-pull.ts"() { - init_PullSummary(); - init_utils(); - init_parse_remote_messages(); - FILE_UPDATE_REGEX = /^\s*(.+?)\s+\|\s+\d+\s*(\+*)(-*)/; - SUMMARY_REGEX = /(\d+)\D+((\d+)\D+\(\+\))?(\D+(\d+)\D+\(-\))?/; - ACTION_REGEX = /^(create|delete) mode \d+ (.+)/; - parsers3 = [ - new LineParser(FILE_UPDATE_REGEX, (result, [file, insertions, deletions]) => { - result.files.push(file); - if (insertions) { - result.insertions[file] = insertions.length; - } - if (deletions) { - result.deletions[file] = deletions.length; - } - }), - new LineParser(SUMMARY_REGEX, (result, [changes, , insertions, , deletions]) => { - if (insertions !== void 0 || deletions !== void 0) { - result.summary.changes = +changes || 0; - result.summary.insertions = +insertions || 0; - result.summary.deletions = +deletions || 0; - return true; - } - return false; - }), - new LineParser(ACTION_REGEX, (result, [action, file]) => { - append(result.files, file); - append(action === "create" ? result.created : result.deleted, file); - }) - ]; - errorParsers = [ - new LineParser(/^from\s(.+)$/i, (result, [remote]) => void (result.remote = remote)), - new LineParser(/^fatal:\s(.+)$/, (result, [message]) => void (result.message = message)), - new LineParser(/([a-z0-9]+)\.\.([a-z0-9]+)\s+(\S+)\s+->\s+(\S+)$/, (result, [hashLocal, hashRemote, branchLocal, branchRemote]) => { - result.branch.local = branchLocal; - result.hash.local = hashLocal; - result.branch.remote = branchRemote; - result.hash.remote = hashRemote; - }) - ]; - parsePullDetail = (stdOut, stdErr) => { - return parseStringResponse(new PullSummary(), parsers3, [stdOut, stdErr]); - }; - parsePullResult = (stdOut, stdErr) => { - return Object.assign(new PullSummary(), parsePullDetail(stdOut, stdErr), parseRemoteMessages(stdOut, stdErr)); - }; - } -}); -var parsers4; -var parseMergeResult; -var parseMergeDetail; -var init_parse_merge = __esm2({ - "src/lib/parsers/parse-merge.ts"() { - init_MergeSummary(); - init_utils(); - init_parse_pull(); - parsers4 = [ - new LineParser(/^Auto-merging\s+(.+)$/, (summary, [autoMerge]) => { - summary.merges.push(autoMerge); - }), - new LineParser(/^CONFLICT\s+\((.+)\): Merge conflict in (.+)$/, (summary, [reason, file]) => { - summary.conflicts.push(new MergeSummaryConflict(reason, file)); - }), - new LineParser(/^CONFLICT\s+\((.+\/delete)\): (.+) deleted in (.+) and/, (summary, [reason, file, deleteRef2]) => { - summary.conflicts.push(new MergeSummaryConflict(reason, file, { deleteRef: deleteRef2 })); - }), - new LineParser(/^CONFLICT\s+\((.+)\):/, (summary, [reason]) => { - summary.conflicts.push(new MergeSummaryConflict(reason, null)); - }), - new LineParser(/^Automatic merge failed;\s+(.+)$/, (summary, [result]) => { - summary.result = result; - }) - ]; - parseMergeResult = (stdOut, stdErr) => { - return Object.assign(parseMergeDetail(stdOut, stdErr), parsePullResult(stdOut, stdErr)); - }; - parseMergeDetail = (stdOut) => { - return parseStringResponse(new MergeSummaryDetail(), parsers4, stdOut); - }; - } -}); -function mergeTask(customArgs) { - if (!customArgs.length) { - return configurationErrorTask("Git.merge requires at least one option"); - } - return { - commands: ["merge", ...customArgs], - format: "utf-8", - parser(stdOut, stdErr) { - const merge2 = parseMergeResult(stdOut, stdErr); - if (merge2.failed) { - throw new GitResponseError(merge2); - } - return merge2; - } - }; -} -var init_merge = __esm2({ - "src/lib/tasks/merge.ts"() { - init_git_response_error(); - init_parse_merge(); - init_task(); - } -}); -function pushResultPushedItem(local, remote, status2) { - const deleted = status2.includes("deleted"); - const tag2 = status2.includes("tag") || /^refs\/tags/.test(local); - const alreadyUpdated = !status2.includes("new"); - return { - deleted, - tag: tag2, - branch: !tag2, - new: !alreadyUpdated, - alreadyUpdated, - local, - remote - }; -} -var parsers5; -var parsePushResult; -var parsePushDetail; -var init_parse_push = __esm2({ - "src/lib/parsers/parse-push.ts"() { - init_utils(); - init_parse_remote_messages(); - parsers5 = [ - new LineParser(/^Pushing to (.+)$/, (result, [repo]) => { - result.repo = repo; - }), - new LineParser(/^updating local tracking ref '(.+)'/, (result, [local]) => { - result.ref = __spreadProps(__spreadValues({}, result.ref || {}), { - local - }); - }), - new LineParser(/^[=*-]\s+([^:]+):(\S+)\s+\[(.+)]$/, (result, [local, remote, type]) => { - result.pushed.push(pushResultPushedItem(local, remote, type)); - }), - new LineParser(/^Branch '([^']+)' set up to track remote branch '([^']+)' from '([^']+)'/, (result, [local, remote, remoteName]) => { - result.branch = __spreadProps(__spreadValues({}, result.branch || {}), { - local, - remote, - remoteName - }); - }), - new LineParser(/^([^:]+):(\S+)\s+([a-z0-9]+)\.\.([a-z0-9]+)$/, (result, [local, remote, from, to]) => { - result.update = { - head: { - local, - remote - }, - hash: { - from, - to - } - }; - }) - ]; - parsePushResult = (stdOut, stdErr) => { - const pushDetail = parsePushDetail(stdOut, stdErr); - const responseDetail = parseRemoteMessages(stdOut, stdErr); - return __spreadValues(__spreadValues({}, pushDetail), responseDetail); - }; - parsePushDetail = (stdOut, stdErr) => { - return parseStringResponse({ pushed: [] }, parsers5, [stdOut, stdErr]); - }; - } -}); -var push_exports = {}; -__export2(push_exports, { - pushTagsTask: () => pushTagsTask, - pushTask: () => pushTask -}); -function pushTagsTask(ref = {}, customArgs) { - append(customArgs, "--tags"); - return pushTask(ref, customArgs); -} -function pushTask(ref = {}, customArgs) { - const commands2 = ["push", ...customArgs]; - if (ref.branch) { - commands2.splice(1, 0, ref.branch); - } - if (ref.remote) { - commands2.splice(1, 0, ref.remote); - } - remove2(commands2, "-v"); - append(commands2, "--verbose"); - append(commands2, "--porcelain"); - return { - commands: commands2, - format: "utf-8", - parser: parsePushResult - }; -} -var init_push = __esm2({ - "src/lib/tasks/push.ts"() { - init_parse_push(); - init_utils(); - } -}); -var fromPathRegex; -var FileStatusSummary; -var init_FileStatusSummary = __esm2({ - "src/lib/responses/FileStatusSummary.ts"() { - fromPathRegex = /^(.+) -> (.+)$/; - FileStatusSummary = class { - constructor(path2, index2, working_dir) { - this.path = path2; - this.index = index2; - this.working_dir = working_dir; - if (index2 + working_dir === "R") { - const detail = fromPathRegex.exec(path2) || [null, path2, path2]; - this.from = detail[1] || ""; - this.path = detail[2] || ""; - } - } - }; - } -}); -function renamedFile(line) { - const [to, from] = line.split(NULL); - return { - from: from || to, - to - }; -} -function parser2(indexX, indexY, handler) { - return [`${indexX}${indexY}`, handler]; -} -function conflicts(indexX, ...indexY) { - return indexY.map((y) => parser2(indexX, y, (result, file) => append(result.conflicted, file))); -} -function splitLine(result, lineStr) { - const trimmed2 = lineStr.trim(); - switch (" ") { - case trimmed2.charAt(2): - return data(trimmed2.charAt(0), trimmed2.charAt(1), trimmed2.substr(3)); - case trimmed2.charAt(1): - return data(" ", trimmed2.charAt(0), trimmed2.substr(2)); - default: - return; - } - function data(index2, workingDir, path2) { - const raw = `${index2}${workingDir}`; - const handler = parsers6.get(raw); - if (handler) { - handler(result, path2); - } - if (raw !== "##" && raw !== "!!") { - result.files.push(new FileStatusSummary(path2.replace(/\0.+$/, ""), index2, workingDir)); - } - } -} -var StatusSummary; -var parsers6; -var parseStatusSummary; -var init_StatusSummary = __esm2({ - "src/lib/responses/StatusSummary.ts"() { - init_utils(); - init_FileStatusSummary(); - StatusSummary = class { - constructor() { - this.not_added = []; - this.conflicted = []; - this.created = []; - this.deleted = []; - this.ignored = void 0; - this.modified = []; - this.renamed = []; - this.files = []; - this.staged = []; - this.ahead = 0; - this.behind = 0; - this.current = null; - this.tracking = null; - this.detached = false; - this.isClean = () => { - return !this.files.length; - }; - } - }; - parsers6 = new Map([ - parser2(" ", "A", (result, file) => append(result.created, file)), - parser2(" ", "D", (result, file) => append(result.deleted, file)), - parser2(" ", "M", (result, file) => append(result.modified, file)), - parser2("A", " ", (result, file) => append(result.created, file) && append(result.staged, file)), - parser2("A", "M", (result, file) => append(result.created, file) && append(result.staged, file) && append(result.modified, file)), - parser2("D", " ", (result, file) => append(result.deleted, file) && append(result.staged, file)), - parser2("M", " ", (result, file) => append(result.modified, file) && append(result.staged, file)), - parser2("M", "M", (result, file) => append(result.modified, file) && append(result.staged, file)), - parser2("R", " ", (result, file) => { - append(result.renamed, renamedFile(file)); - }), - parser2("R", "M", (result, file) => { - const renamed = renamedFile(file); - append(result.renamed, renamed); - append(result.modified, renamed.to); - }), - parser2("!", "!", (_result, _file) => { - append(_result.ignored = _result.ignored || [], _file); - }), - parser2("?", "?", (result, file) => append(result.not_added, file)), - ...conflicts( - "A", - "A", - "U" - /* UNMERGED */ - ), - ...conflicts( - "D", - "D", - "U" - /* UNMERGED */ - ), - ...conflicts( - "U", - "A", - "D", - "U" - /* UNMERGED */ - ), - [ - "##", - (result, line) => { - const aheadReg = /ahead (\d+)/; - const behindReg = /behind (\d+)/; - const currentReg = /^(.+?(?=(?:\.{3}|\s|$)))/; - const trackingReg = /\.{3}(\S*)/; - const onEmptyBranchReg = /\son\s([\S]+)$/; - let regexResult; - regexResult = aheadReg.exec(line); - result.ahead = regexResult && +regexResult[1] || 0; - regexResult = behindReg.exec(line); - result.behind = regexResult && +regexResult[1] || 0; - regexResult = currentReg.exec(line); - result.current = regexResult && regexResult[1]; - regexResult = trackingReg.exec(line); - result.tracking = regexResult && regexResult[1]; - regexResult = onEmptyBranchReg.exec(line); - result.current = regexResult && regexResult[1] || result.current; - result.detached = /\(no branch\)/.test(line); - } - ] - ]); - parseStatusSummary = function(text2) { - const lines = text2.split(NULL); - const status2 = new StatusSummary(); - for (let i = 0, l = lines.length; i < l; ) { - let line = lines[i++].trim(); - if (!line) { - continue; - } - if (line.charAt(0) === "R") { - line += NULL + (lines[i++] || ""); - } - splitLine(status2, line); - } - return status2; - }; - } -}); -function statusTask(customArgs) { - const commands2 = [ - "status", - "--porcelain", - "-b", - "-u", - "--null", - ...customArgs.filter((arg) => !ignoredOptions.includes(arg)) - ]; - return { - format: "utf-8", - commands: commands2, - parser(text2) { - return parseStatusSummary(text2); - } - }; -} -var ignoredOptions; -var init_status = __esm2({ - "src/lib/tasks/status.ts"() { - init_StatusSummary(); - ignoredOptions = ["--null", "-z"]; - } -}); -function versionResponse(major = 0, minor = 0, patch = 0, agent = "", installed = true) { - return Object.defineProperty({ - major, - minor, - patch, - agent, - installed - }, "toString", { - value() { - return `${this.major}.${this.minor}.${this.patch}`; - }, - configurable: false, - enumerable: false - }); -} -function notInstalledResponse() { - return versionResponse(0, 0, 0, "", false); -} -function version_default() { - return { - version() { - return this._runTask({ - commands: ["--version"], - format: "utf-8", - parser: versionParser, - onError(result, error, done, fail) { - if (result.exitCode === -2) { - return done(Buffer.from(NOT_INSTALLED)); - } - fail(error); - } - }); - } - }; -} -function versionParser(stdOut) { - if (stdOut === NOT_INSTALLED) { - return notInstalledResponse(); - } - return parseStringResponse(versionResponse(0, 0, 0, stdOut), parsers7, stdOut); -} -var NOT_INSTALLED; -var parsers7; -var init_version = __esm2({ - "src/lib/tasks/version.ts"() { - init_utils(); - NOT_INSTALLED = "installed=false"; - parsers7 = [ - new LineParser(/version (\d+)\.(\d+)\.(\d+)(?:\s*\((.+)\))?/, (result, [major, minor, patch, agent = ""]) => { - Object.assign(result, versionResponse(asNumber(major), asNumber(minor), asNumber(patch), agent)); - }), - new LineParser(/version (\d+)\.(\d+)\.(\D+)(.+)?$/, (result, [major, minor, patch, agent = ""]) => { - Object.assign(result, versionResponse(asNumber(major), asNumber(minor), patch, agent)); - }) - ]; - } -}); -var simple_git_api_exports = {}; -__export2(simple_git_api_exports, { - SimpleGitApi: () => SimpleGitApi -}); -var SimpleGitApi; -var init_simple_git_api = __esm2({ - "src/lib/simple-git-api.ts"() { - init_task_callback(); - init_change_working_directory(); - init_checkout(); - init_commit(); - init_config(); - init_grep(); - init_hash_object(); - init_init(); - init_log(); - init_merge(); - init_push(); - init_status(); - init_task(); - init_version(); - init_utils(); - SimpleGitApi = class { - constructor(_executor) { - this._executor = _executor; - } - _runTask(task, then) { - const chain = this._executor.chain(); - const promise2 = chain.push(task); - if (then) { - taskCallback(task, promise2, then); - } - return Object.create(this, { - then: { value: promise2.then.bind(promise2) }, - catch: { value: promise2.catch.bind(promise2) }, - _executor: { value: chain } - }); - } - add(files) { - return this._runTask(straightThroughStringTask(["add", ...asArray(files)]), trailingFunctionArgument(arguments)); - } - cwd(directory) { - const next = trailingFunctionArgument(arguments); - if (typeof directory === "string") { - return this._runTask(changeWorkingDirectoryTask(directory, this._executor), next); - } - if (typeof (directory == null ? void 0 : directory.path) === "string") { - return this._runTask(changeWorkingDirectoryTask(directory.path, directory.root && this._executor || void 0), next); - } - return this._runTask(configurationErrorTask("Git.cwd: workingDirectory must be supplied as a string"), next); - } - hashObject(path2, write) { - return this._runTask(hashObjectTask(path2, write === true), trailingFunctionArgument(arguments)); - } - init(bare) { - return this._runTask(initTask(bare === true, this._executor.cwd, getTrailingOptions(arguments)), trailingFunctionArgument(arguments)); - } - merge() { - return this._runTask(mergeTask(getTrailingOptions(arguments)), trailingFunctionArgument(arguments)); - } - mergeFromTo(remote, branch2) { - if (!(filterString(remote) && filterString(branch2))) { - return this._runTask(configurationErrorTask(`Git.mergeFromTo requires that the 'remote' and 'branch' arguments are supplied as strings`)); - } - return this._runTask(mergeTask([remote, branch2, ...getTrailingOptions(arguments)]), trailingFunctionArgument(arguments, false)); - } - outputHandler(handler) { - this._executor.outputHandler = handler; - return this; - } - push() { - const task = pushTask({ - remote: filterType(arguments[0], filterString), - branch: filterType(arguments[1], filterString) - }, getTrailingOptions(arguments)); - return this._runTask(task, trailingFunctionArgument(arguments)); - } - stash() { - return this._runTask(straightThroughStringTask(["stash", ...getTrailingOptions(arguments)]), trailingFunctionArgument(arguments)); - } - status() { - return this._runTask(statusTask(getTrailingOptions(arguments)), trailingFunctionArgument(arguments)); - } - }; - Object.assign(SimpleGitApi.prototype, checkout_default(), commit_default(), config_default(), grep_default(), log_default(), version_default()); - } -}); -var scheduler_exports = {}; -__export2(scheduler_exports, { - Scheduler: () => Scheduler -}); -var createScheduledTask; -var Scheduler; -var init_scheduler = __esm2({ - "src/lib/runners/scheduler.ts"() { - init_utils(); - init_git_logger(); - createScheduledTask = /* @__PURE__ */ (() => { - let id = 0; - return () => { - id++; - const { promise: promise2, done } = (0, import_promise_deferred.createDeferred)(); - return { - promise: promise2, - done, - id - }; - }; - })(); - Scheduler = class { - constructor(concurrency = 2) { - this.concurrency = concurrency; - this.logger = createLogger("", "scheduler"); - this.pending = []; - this.running = []; - this.logger(`Constructed, concurrency=%s`, concurrency); - } - schedule() { - if (!this.pending.length || this.running.length >= this.concurrency) { - this.logger(`Schedule attempt ignored, pending=%s running=%s concurrency=%s`, this.pending.length, this.running.length, this.concurrency); - return; - } - const task = append(this.running, this.pending.shift()); - this.logger(`Attempting id=%s`, task.id); - task.done(() => { - this.logger(`Completing id=`, task.id); - remove2(this.running, task); - this.schedule(); - }); - } - next() { - const { promise: promise2, id } = append(this.pending, createScheduledTask()); - this.logger(`Scheduling id=%s`, id); - this.schedule(); - return promise2; - } - }; - } -}); -var apply_patch_exports = {}; -__export2(apply_patch_exports, { - applyPatchTask: () => applyPatchTask -}); -function applyPatchTask(patches, customArgs) { - return straightThroughStringTask(["apply", ...customArgs, ...patches]); -} -var init_apply_patch = __esm2({ - "src/lib/tasks/apply-patch.ts"() { - init_task(); - } -}); -function branchDeletionSuccess(branch2, hash2) { - return { - branch: branch2, - hash: hash2, - success: true - }; -} -function branchDeletionFailure(branch2) { - return { - branch: branch2, - hash: null, - success: false - }; -} -var BranchDeletionBatch; -var init_BranchDeleteSummary = __esm2({ - "src/lib/responses/BranchDeleteSummary.ts"() { - BranchDeletionBatch = class { - constructor() { - this.all = []; - this.branches = {}; - this.errors = []; - } - get success() { - return !this.errors.length; - } - }; - } -}); -function hasBranchDeletionError(data, processExitCode) { - return processExitCode === 1 && deleteErrorRegex.test(data); -} -var deleteSuccessRegex; -var deleteErrorRegex; -var parsers8; -var parseBranchDeletions; -var init_parse_branch_delete = __esm2({ - "src/lib/parsers/parse-branch-delete.ts"() { - init_BranchDeleteSummary(); - init_utils(); - deleteSuccessRegex = /(\S+)\s+\(\S+\s([^)]+)\)/; - deleteErrorRegex = /^error[^']+'([^']+)'/m; - parsers8 = [ - new LineParser(deleteSuccessRegex, (result, [branch2, hash2]) => { - const deletion = branchDeletionSuccess(branch2, hash2); - result.all.push(deletion); - result.branches[branch2] = deletion; - }), - new LineParser(deleteErrorRegex, (result, [branch2]) => { - const deletion = branchDeletionFailure(branch2); - result.errors.push(deletion); - result.all.push(deletion); - result.branches[branch2] = deletion; - }) - ]; - parseBranchDeletions = (stdOut, stdErr) => { - return parseStringResponse(new BranchDeletionBatch(), parsers8, [stdOut, stdErr]); - }; - } -}); -var BranchSummaryResult; -var init_BranchSummary = __esm2({ - "src/lib/responses/BranchSummary.ts"() { - BranchSummaryResult = class { - constructor() { - this.all = []; - this.branches = {}; - this.current = ""; - this.detached = false; - } - push(status2, detached, name, commit2, label) { - if (status2 === "*") { - this.detached = detached; - this.current = name; - } - this.all.push(name); - this.branches[name] = { - current: status2 === "*", - linkedWorkTree: status2 === "+", - name, - commit: commit2, - label - }; - } - }; - } -}); -function branchStatus(input) { - return input ? input.charAt(0) : ""; -} -function parseBranchSummary(stdOut) { - return parseStringResponse(new BranchSummaryResult(), parsers9, stdOut); -} -var parsers9; -var init_parse_branch = __esm2({ - "src/lib/parsers/parse-branch.ts"() { - init_BranchSummary(); - init_utils(); - parsers9 = [ - new LineParser(/^([*+]\s)?\((?:HEAD )?detached (?:from|at) (\S+)\)\s+([a-z0-9]+)\s(.*)$/, (result, [current, name, commit2, label]) => { - result.push(branchStatus(current), true, name, commit2, label); - }), - new LineParser(/^([*+]\s)?(\S+)\s+([a-z0-9]+)\s?(.*)$/s, (result, [current, name, commit2, label]) => { - result.push(branchStatus(current), false, name, commit2, label); - }) - ]; - } -}); -var branch_exports = {}; -__export2(branch_exports, { - branchLocalTask: () => branchLocalTask, - branchTask: () => branchTask, - containsDeleteBranchCommand: () => containsDeleteBranchCommand, - deleteBranchTask: () => deleteBranchTask, - deleteBranchesTask: () => deleteBranchesTask -}); -function containsDeleteBranchCommand(commands2) { - const deleteCommands = ["-d", "-D", "--delete"]; - return commands2.some((command) => deleteCommands.includes(command)); -} -function branchTask(customArgs) { - const isDelete = containsDeleteBranchCommand(customArgs); - const commands2 = ["branch", ...customArgs]; - if (commands2.length === 1) { - commands2.push("-a"); - } - if (!commands2.includes("-v")) { - commands2.splice(1, 0, "-v"); - } - return { - format: "utf-8", - commands: commands2, - parser(stdOut, stdErr) { - if (isDelete) { - return parseBranchDeletions(stdOut, stdErr).all[0]; - } - return parseBranchSummary(stdOut); - } - }; -} -function branchLocalTask() { - const parser3 = parseBranchSummary; - return { - format: "utf-8", - commands: ["branch", "-v"], - parser: parser3 - }; -} -function deleteBranchesTask(branches, forceDelete = false) { - return { - format: "utf-8", - commands: ["branch", "-v", forceDelete ? "-D" : "-d", ...branches], - parser(stdOut, stdErr) { - return parseBranchDeletions(stdOut, stdErr); - }, - onError({ exitCode, stdOut }, error, done, fail) { - if (!hasBranchDeletionError(String(error), exitCode)) { - return fail(error); - } - done(stdOut); - } - }; -} -function deleteBranchTask(branch2, forceDelete = false) { - const task = { - format: "utf-8", - commands: ["branch", "-v", forceDelete ? "-D" : "-d", branch2], - parser(stdOut, stdErr) { - return parseBranchDeletions(stdOut, stdErr).branches[branch2]; - }, - onError({ exitCode, stdErr, stdOut }, error, _, fail) { - if (!hasBranchDeletionError(String(error), exitCode)) { - return fail(error); - } - throw new GitResponseError(task.parser(bufferToString(stdOut), bufferToString(stdErr)), String(error)); - } - }; - return task; -} -var init_branch = __esm2({ - "src/lib/tasks/branch.ts"() { - init_git_response_error(); - init_parse_branch_delete(); - init_parse_branch(); - init_utils(); - } -}); -var parseCheckIgnore; -var init_CheckIgnore = __esm2({ - "src/lib/responses/CheckIgnore.ts"() { - parseCheckIgnore = (text2) => { - return text2.split(/\n/g).map((line) => line.trim()).filter((file) => !!file); - }; - } -}); -var check_ignore_exports = {}; -__export2(check_ignore_exports, { - checkIgnoreTask: () => checkIgnoreTask -}); -function checkIgnoreTask(paths) { - return { - commands: ["check-ignore", ...paths], - format: "utf-8", - parser: parseCheckIgnore - }; -} -var init_check_ignore = __esm2({ - "src/lib/tasks/check-ignore.ts"() { - init_CheckIgnore(); - } -}); -var clone_exports = {}; -__export2(clone_exports, { - cloneMirrorTask: () => cloneMirrorTask, - cloneTask: () => cloneTask -}); -function disallowedCommand(command) { - return /^--upload-pack(=|$)/.test(command); -} -function cloneTask(repo, directory, customArgs) { - const commands2 = ["clone", ...customArgs]; - filterString(repo) && commands2.push(repo); - filterString(directory) && commands2.push(directory); - const banned = commands2.find(disallowedCommand); - if (banned) { - return configurationErrorTask(`git.fetch: potential exploit argument blocked.`); - } - return straightThroughStringTask(commands2); -} -function cloneMirrorTask(repo, directory, customArgs) { - append(customArgs, "--mirror"); - return cloneTask(repo, directory, customArgs); -} -var init_clone = __esm2({ - "src/lib/tasks/clone.ts"() { - init_task(); - init_utils(); - } -}); -function parseFetchResult(stdOut, stdErr) { - const result = { - raw: stdOut, - remote: null, - branches: [], - tags: [], - updated: [], - deleted: [] - }; - return parseStringResponse(result, parsers10, [stdOut, stdErr]); -} -var parsers10; -var init_parse_fetch = __esm2({ - "src/lib/parsers/parse-fetch.ts"() { - init_utils(); - parsers10 = [ - new LineParser(/From (.+)$/, (result, [remote]) => { - result.remote = remote; - }), - new LineParser(/\* \[new branch]\s+(\S+)\s*-> (.+)$/, (result, [name, tracking]) => { - result.branches.push({ - name, - tracking - }); - }), - new LineParser(/\* \[new tag]\s+(\S+)\s*-> (.+)$/, (result, [name, tracking]) => { - result.tags.push({ - name, - tracking - }); - }), - new LineParser(/- \[deleted]\s+\S+\s*-> (.+)$/, (result, [tracking]) => { - result.deleted.push({ - tracking - }); - }), - new LineParser(/\s*([^.]+)\.\.(\S+)\s+(\S+)\s*-> (.+)$/, (result, [from, to, name, tracking]) => { - result.updated.push({ - name, - tracking, - to, - from - }); - }) - ]; - } -}); -var fetch_exports = {}; -__export2(fetch_exports, { - fetchTask: () => fetchTask -}); -function disallowedCommand2(command) { - return /^--upload-pack(=|$)/.test(command); -} -function fetchTask(remote, branch2, customArgs) { - const commands2 = ["fetch", ...customArgs]; - if (remote && branch2) { - commands2.push(remote, branch2); - } - const banned = commands2.find(disallowedCommand2); - if (banned) { - return configurationErrorTask(`git.fetch: potential exploit argument blocked.`); - } - return { - commands: commands2, - format: "utf-8", - parser: parseFetchResult - }; -} -var init_fetch = __esm2({ - "src/lib/tasks/fetch.ts"() { - init_parse_fetch(); - init_task(); - } -}); -function parseMoveResult(stdOut) { - return parseStringResponse({ moves: [] }, parsers11, stdOut); -} -var parsers11; -var init_parse_move = __esm2({ - "src/lib/parsers/parse-move.ts"() { - init_utils(); - parsers11 = [ - new LineParser(/^Renaming (.+) to (.+)$/, (result, [from, to]) => { - result.moves.push({ from, to }); - }) - ]; - } -}); -var move_exports = {}; -__export2(move_exports, { - moveTask: () => moveTask -}); -function moveTask(from, to) { - return { - commands: ["mv", "-v", ...asArray(from), to], - format: "utf-8", - parser: parseMoveResult - }; -} -var init_move = __esm2({ - "src/lib/tasks/move.ts"() { - init_parse_move(); - init_utils(); - } -}); -var pull_exports = {}; -__export2(pull_exports, { - pullTask: () => pullTask -}); -function pullTask(remote, branch2, customArgs) { - const commands2 = ["pull", ...customArgs]; - if (remote && branch2) { - commands2.splice(1, 0, remote, branch2); - } - return { - commands: commands2, - format: "utf-8", - parser(stdOut, stdErr) { - return parsePullResult(stdOut, stdErr); - }, - onError(result, _error, _done, fail) { - const pullError = parsePullErrorResult(bufferToString(result.stdOut), bufferToString(result.stdErr)); - if (pullError) { - return fail(new GitResponseError(pullError)); - } - fail(_error); - } - }; -} -var init_pull = __esm2({ - "src/lib/tasks/pull.ts"() { - init_git_response_error(); - init_parse_pull(); - init_utils(); - } -}); -function parseGetRemotes(text2) { - const remotes = {}; - forEach(text2, ([name]) => remotes[name] = { name }); - return Object.values(remotes); -} -function parseGetRemotesVerbose(text2) { - const remotes = {}; - forEach(text2, ([name, url, purpose]) => { - if (!remotes.hasOwnProperty(name)) { - remotes[name] = { - name, - refs: { fetch: "", push: "" } - }; - } - if (purpose && url) { - remotes[name].refs[purpose.replace(/[^a-z]/g, "")] = url; - } - }); - return Object.values(remotes); -} -function forEach(text2, handler) { - forEachLineWithContent(text2, (line) => handler(line.split(/\s+/))); -} -var init_GetRemoteSummary = __esm2({ - "src/lib/responses/GetRemoteSummary.ts"() { - init_utils(); - } -}); -var remote_exports = {}; -__export2(remote_exports, { - addRemoteTask: () => addRemoteTask, - getRemotesTask: () => getRemotesTask, - listRemotesTask: () => listRemotesTask, - remoteTask: () => remoteTask, - removeRemoteTask: () => removeRemoteTask -}); -function addRemoteTask(remoteName, remoteRepo, customArgs = []) { - return straightThroughStringTask(["remote", "add", ...customArgs, remoteName, remoteRepo]); -} -function getRemotesTask(verbose) { - const commands2 = ["remote"]; - if (verbose) { - commands2.push("-v"); - } - return { - commands: commands2, - format: "utf-8", - parser: verbose ? parseGetRemotesVerbose : parseGetRemotes - }; -} -function listRemotesTask(customArgs = []) { - const commands2 = [...customArgs]; - if (commands2[0] !== "ls-remote") { - commands2.unshift("ls-remote"); - } - return straightThroughStringTask(commands2); -} -function remoteTask(customArgs = []) { - const commands2 = [...customArgs]; - if (commands2[0] !== "remote") { - commands2.unshift("remote"); - } - return straightThroughStringTask(commands2); -} -function removeRemoteTask(remoteName) { - return straightThroughStringTask(["remote", "remove", remoteName]); -} -var init_remote = __esm2({ - "src/lib/tasks/remote.ts"() { - init_GetRemoteSummary(); - init_task(); - } -}); -var stash_list_exports = {}; -__export2(stash_list_exports, { - stashListTask: () => stashListTask -}); -function stashListTask(opt = {}, customArgs) { - const options = parseLogOptions(opt); - const commands2 = ["stash", "list", ...options.commands, ...customArgs]; - const parser3 = createListLogSummaryParser(options.splitter, options.fields, logFormatFromCommand(commands2)); - return validateLogFormatConfig(commands2) || { - commands: commands2, - format: "utf-8", - parser: parser3 - }; -} -var init_stash_list = __esm2({ - "src/lib/tasks/stash-list.ts"() { - init_log_format(); - init_parse_list_log_summary(); - init_diff(); - init_log(); - } -}); -var sub_module_exports = {}; -__export2(sub_module_exports, { - addSubModuleTask: () => addSubModuleTask, - initSubModuleTask: () => initSubModuleTask, - subModuleTask: () => subModuleTask, - updateSubModuleTask: () => updateSubModuleTask -}); -function addSubModuleTask(repo, path2) { - return subModuleTask(["add", repo, path2]); -} -function initSubModuleTask(customArgs) { - return subModuleTask(["init", ...customArgs]); -} -function subModuleTask(customArgs) { - const commands2 = [...customArgs]; - if (commands2[0] !== "submodule") { - commands2.unshift("submodule"); - } - return straightThroughStringTask(commands2); -} -function updateSubModuleTask(customArgs) { - return subModuleTask(["update", ...customArgs]); -} -var init_sub_module = __esm2({ - "src/lib/tasks/sub-module.ts"() { - init_task(); - } -}); -function singleSorted(a, b) { - const aIsNum = isNaN(a); - const bIsNum = isNaN(b); - if (aIsNum !== bIsNum) { - return aIsNum ? 1 : -1; - } - return aIsNum ? sorted(a, b) : 0; -} -function sorted(a, b) { - return a === b ? 0 : a > b ? 1 : -1; -} -function trimmed(input) { - return input.trim(); -} -function toNumber(input) { - if (typeof input === "string") { - return parseInt(input.replace(/^\D+/g, ""), 10) || 0; - } - return 0; -} -var TagList; -var parseTagList; -var init_TagList = __esm2({ - "src/lib/responses/TagList.ts"() { - TagList = class { - constructor(all, latest) { - this.all = all; - this.latest = latest; - } - }; - parseTagList = function(data, customSort = false) { - const tags = data.split("\n").map(trimmed).filter(Boolean); - if (!customSort) { - tags.sort(function(tagA, tagB) { - const partsA = tagA.split("."); - const partsB = tagB.split("."); - if (partsA.length === 1 || partsB.length === 1) { - return singleSorted(toNumber(partsA[0]), toNumber(partsB[0])); - } - for (let i = 0, l = Math.max(partsA.length, partsB.length); i < l; i++) { - const diff3 = sorted(toNumber(partsA[i]), toNumber(partsB[i])); - if (diff3) { - return diff3; - } - } - return 0; - }); - } - const latest = customSort ? tags[0] : [...tags].reverse().find((tag2) => tag2.indexOf(".") >= 0); - return new TagList(tags, latest); - }; - } -}); -var tag_exports = {}; -__export2(tag_exports, { - addAnnotatedTagTask: () => addAnnotatedTagTask, - addTagTask: () => addTagTask, - tagListTask: () => tagListTask -}); -function tagListTask(customArgs = []) { - const hasCustomSort = customArgs.some((option) => /^--sort=/.test(option)); - return { - format: "utf-8", - commands: ["tag", "-l", ...customArgs], - parser(text2) { - return parseTagList(text2, hasCustomSort); - } - }; -} -function addTagTask(name) { - return { - format: "utf-8", - commands: ["tag", name], - parser() { - return { name }; - } - }; -} -function addAnnotatedTagTask(name, tagMessage) { - return { - format: "utf-8", - commands: ["tag", "-a", "-m", tagMessage, name], - parser() { - return { name }; - } - }; -} -var init_tag = __esm2({ - "src/lib/tasks/tag.ts"() { - init_TagList(); - } -}); -var require_git = __commonJS2({ - "src/git.js"(exports2, module2) { - var { GitExecutor: GitExecutor2 } = (init_git_executor(), __toCommonJS2(git_executor_exports)); - var { SimpleGitApi: SimpleGitApi2 } = (init_simple_git_api(), __toCommonJS2(simple_git_api_exports)); - var { Scheduler: Scheduler2 } = (init_scheduler(), __toCommonJS2(scheduler_exports)); - var { configurationErrorTask: configurationErrorTask2 } = (init_task(), __toCommonJS2(task_exports)); - var { - asArray: asArray2, - filterArray: filterArray2, - filterPrimitives: filterPrimitives2, - filterString: filterString2, - filterStringOrStringArray: filterStringOrStringArray2, - filterType: filterType2, - getTrailingOptions: getTrailingOptions2, - trailingFunctionArgument: trailingFunctionArgument2, - trailingOptionsArgument: trailingOptionsArgument2 - } = (init_utils(), __toCommonJS2(utils_exports)); - var { applyPatchTask: applyPatchTask2 } = (init_apply_patch(), __toCommonJS2(apply_patch_exports)); - var { - branchTask: branchTask2, - branchLocalTask: branchLocalTask2, - deleteBranchesTask: deleteBranchesTask2, - deleteBranchTask: deleteBranchTask2 - } = (init_branch(), __toCommonJS2(branch_exports)); - var { checkIgnoreTask: checkIgnoreTask2 } = (init_check_ignore(), __toCommonJS2(check_ignore_exports)); - var { checkIsRepoTask: checkIsRepoTask2 } = (init_check_is_repo(), __toCommonJS2(check_is_repo_exports)); - var { cloneTask: cloneTask2, cloneMirrorTask: cloneMirrorTask2 } = (init_clone(), __toCommonJS2(clone_exports)); - var { cleanWithOptionsTask: cleanWithOptionsTask2, isCleanOptionsArray: isCleanOptionsArray2 } = (init_clean(), __toCommonJS2(clean_exports)); - var { diffSummaryTask: diffSummaryTask2 } = (init_diff(), __toCommonJS2(diff_exports)); - var { fetchTask: fetchTask2 } = (init_fetch(), __toCommonJS2(fetch_exports)); - var { moveTask: moveTask2 } = (init_move(), __toCommonJS2(move_exports)); - var { pullTask: pullTask2 } = (init_pull(), __toCommonJS2(pull_exports)); - var { pushTagsTask: pushTagsTask2 } = (init_push(), __toCommonJS2(push_exports)); - var { - addRemoteTask: addRemoteTask2, - getRemotesTask: getRemotesTask2, - listRemotesTask: listRemotesTask2, - remoteTask: remoteTask2, - removeRemoteTask: removeRemoteTask2 - } = (init_remote(), __toCommonJS2(remote_exports)); - var { getResetMode: getResetMode2, resetTask: resetTask2 } = (init_reset(), __toCommonJS2(reset_exports)); - var { stashListTask: stashListTask2 } = (init_stash_list(), __toCommonJS2(stash_list_exports)); - var { - addSubModuleTask: addSubModuleTask2, - initSubModuleTask: initSubModuleTask2, - subModuleTask: subModuleTask2, - updateSubModuleTask: updateSubModuleTask2 - } = (init_sub_module(), __toCommonJS2(sub_module_exports)); - var { addAnnotatedTagTask: addAnnotatedTagTask2, addTagTask: addTagTask2, tagListTask: tagListTask2 } = (init_tag(), __toCommonJS2(tag_exports)); - var { straightThroughBufferTask: straightThroughBufferTask2, straightThroughStringTask: straightThroughStringTask2 } = (init_task(), __toCommonJS2(task_exports)); - function Git2(options, plugins) { - this._executor = new GitExecutor2(options.binary, options.baseDir, new Scheduler2(options.maxConcurrentProcesses), plugins); - this._trimmed = options.trimmed; - } - (Git2.prototype = Object.create(SimpleGitApi2.prototype)).constructor = Git2; - Git2.prototype.customBinary = function(command) { - this._executor.binary = command; - return this; - }; - Git2.prototype.env = function(name, value) { - if (arguments.length === 1 && typeof name === "object") { - this._executor.env = name; - } else { - (this._executor.env = this._executor.env || {})[name] = value; - } - return this; - }; - Git2.prototype.stashList = function(options) { - return this._runTask(stashListTask2(trailingOptionsArgument2(arguments) || {}, filterArray2(options) && options || []), trailingFunctionArgument2(arguments)); - }; - function createCloneTask(api, task, repoPath, localPath) { - if (typeof repoPath !== "string") { - return configurationErrorTask2(`git.${api}() requires a string 'repoPath'`); - } - return task(repoPath, filterType2(localPath, filterString2), getTrailingOptions2(arguments)); - } - Git2.prototype.clone = function() { - return this._runTask(createCloneTask("clone", cloneTask2, ...arguments), trailingFunctionArgument2(arguments)); - }; - Git2.prototype.mirror = function() { - return this._runTask(createCloneTask("mirror", cloneMirrorTask2, ...arguments), trailingFunctionArgument2(arguments)); - }; - Git2.prototype.mv = function(from, to) { - return this._runTask(moveTask2(from, to), trailingFunctionArgument2(arguments)); - }; - Git2.prototype.checkoutLatestTag = function(then) { - var git = this; - return this.pull(function() { - git.tags(function(err, tags) { - git.checkout(tags.latest, then); - }); - }); - }; - Git2.prototype.pull = function(remote, branch2, options, then) { - return this._runTask(pullTask2(filterType2(remote, filterString2), filterType2(branch2, filterString2), getTrailingOptions2(arguments)), trailingFunctionArgument2(arguments)); - }; - Git2.prototype.fetch = function(remote, branch2) { - return this._runTask(fetchTask2(filterType2(remote, filterString2), filterType2(branch2, filterString2), getTrailingOptions2(arguments)), trailingFunctionArgument2(arguments)); - }; - Git2.prototype.silent = function(silence) { - console.warn("simple-git deprecation notice: git.silent: logging should be configured using the `debug` library / `DEBUG` environment variable, this will be an error in version 3"); - return this; - }; - Git2.prototype.tags = function(options, then) { - return this._runTask(tagListTask2(getTrailingOptions2(arguments)), trailingFunctionArgument2(arguments)); - }; - Git2.prototype.rebase = function() { - return this._runTask(straightThroughStringTask2(["rebase", ...getTrailingOptions2(arguments)]), trailingFunctionArgument2(arguments)); - }; - Git2.prototype.reset = function(mode) { - return this._runTask(resetTask2(getResetMode2(mode), getTrailingOptions2(arguments)), trailingFunctionArgument2(arguments)); - }; - Git2.prototype.revert = function(commit2) { - const next = trailingFunctionArgument2(arguments); - if (typeof commit2 !== "string") { - return this._runTask(configurationErrorTask2("Commit must be a string"), next); - } - return this._runTask(straightThroughStringTask2(["revert", ...getTrailingOptions2(arguments, 0, true), commit2]), next); - }; - Git2.prototype.addTag = function(name) { - const task = typeof name === "string" ? addTagTask2(name) : configurationErrorTask2("Git.addTag requires a tag name"); - return this._runTask(task, trailingFunctionArgument2(arguments)); - }; - Git2.prototype.addAnnotatedTag = function(tagName, tagMessage) { - return this._runTask(addAnnotatedTagTask2(tagName, tagMessage), trailingFunctionArgument2(arguments)); - }; - Git2.prototype.deleteLocalBranch = function(branchName, forceDelete, then) { - return this._runTask(deleteBranchTask2(branchName, typeof forceDelete === "boolean" ? forceDelete : false), trailingFunctionArgument2(arguments)); - }; - Git2.prototype.deleteLocalBranches = function(branchNames, forceDelete, then) { - return this._runTask(deleteBranchesTask2(branchNames, typeof forceDelete === "boolean" ? forceDelete : false), trailingFunctionArgument2(arguments)); - }; - Git2.prototype.branch = function(options, then) { - return this._runTask(branchTask2(getTrailingOptions2(arguments)), trailingFunctionArgument2(arguments)); - }; - Git2.prototype.branchLocal = function(then) { - return this._runTask(branchLocalTask2(), trailingFunctionArgument2(arguments)); - }; - Git2.prototype.raw = function(commands2) { - const createRestCommands = !Array.isArray(commands2); - const command = [].slice.call(createRestCommands ? arguments : commands2, 0); - for (let i = 0; i < command.length && createRestCommands; i++) { - if (!filterPrimitives2(command[i])) { - command.splice(i, command.length - i); - break; - } - } - command.push(...getTrailingOptions2(arguments, 0, true)); - var next = trailingFunctionArgument2(arguments); - if (!command.length) { - return this._runTask(configurationErrorTask2("Raw: must supply one or more command to execute"), next); - } - return this._runTask(straightThroughStringTask2(command, this._trimmed), next); - }; - Git2.prototype.submoduleAdd = function(repo, path2, then) { - return this._runTask(addSubModuleTask2(repo, path2), trailingFunctionArgument2(arguments)); - }; - Git2.prototype.submoduleUpdate = function(args, then) { - return this._runTask(updateSubModuleTask2(getTrailingOptions2(arguments, true)), trailingFunctionArgument2(arguments)); - }; - Git2.prototype.submoduleInit = function(args, then) { - return this._runTask(initSubModuleTask2(getTrailingOptions2(arguments, true)), trailingFunctionArgument2(arguments)); - }; - Git2.prototype.subModule = function(options, then) { - return this._runTask(subModuleTask2(getTrailingOptions2(arguments)), trailingFunctionArgument2(arguments)); - }; - Git2.prototype.listRemote = function() { - return this._runTask(listRemotesTask2(getTrailingOptions2(arguments)), trailingFunctionArgument2(arguments)); - }; - Git2.prototype.addRemote = function(remoteName, remoteRepo, then) { - return this._runTask(addRemoteTask2(remoteName, remoteRepo, getTrailingOptions2(arguments)), trailingFunctionArgument2(arguments)); - }; - Git2.prototype.removeRemote = function(remoteName, then) { - return this._runTask(removeRemoteTask2(remoteName), trailingFunctionArgument2(arguments)); - }; - Git2.prototype.getRemotes = function(verbose, then) { - return this._runTask(getRemotesTask2(verbose === true), trailingFunctionArgument2(arguments)); - }; - Git2.prototype.remote = function(options, then) { - return this._runTask(remoteTask2(getTrailingOptions2(arguments)), trailingFunctionArgument2(arguments)); - }; - Git2.prototype.tag = function(options, then) { - const command = getTrailingOptions2(arguments); - if (command[0] !== "tag") { - command.unshift("tag"); - } - return this._runTask(straightThroughStringTask2(command), trailingFunctionArgument2(arguments)); - }; - Git2.prototype.updateServerInfo = function(then) { - return this._runTask(straightThroughStringTask2(["update-server-info"]), trailingFunctionArgument2(arguments)); - }; - Git2.prototype.pushTags = function(remote, then) { - const task = pushTagsTask2({ remote: filterType2(remote, filterString2) }, getTrailingOptions2(arguments)); - return this._runTask(task, trailingFunctionArgument2(arguments)); - }; - Git2.prototype.rm = function(files) { - return this._runTask(straightThroughStringTask2(["rm", "-f", ...asArray2(files)]), trailingFunctionArgument2(arguments)); - }; - Git2.prototype.rmKeepLocal = function(files) { - return this._runTask(straightThroughStringTask2(["rm", "--cached", ...asArray2(files)]), trailingFunctionArgument2(arguments)); - }; - Git2.prototype.catFile = function(options, then) { - return this._catFile("utf-8", arguments); - }; - Git2.prototype.binaryCatFile = function() { - return this._catFile("buffer", arguments); - }; - Git2.prototype._catFile = function(format, args) { - var handler = trailingFunctionArgument2(args); - var command = ["cat-file"]; - var options = args[0]; - if (typeof options === "string") { - return this._runTask(configurationErrorTask2("Git.catFile: options must be supplied as an array of strings"), handler); - } - if (Array.isArray(options)) { - command.push.apply(command, options); - } - const task = format === "buffer" ? straightThroughBufferTask2(command) : straightThroughStringTask2(command); - return this._runTask(task, handler); - }; - Git2.prototype.diff = function(options, then) { - const task = filterString2(options) ? configurationErrorTask2("git.diff: supplying options as a single string is no longer supported, switch to an array of strings") : straightThroughStringTask2(["diff", ...getTrailingOptions2(arguments)]); - return this._runTask(task, trailingFunctionArgument2(arguments)); - }; - Git2.prototype.diffSummary = function() { - return this._runTask(diffSummaryTask2(getTrailingOptions2(arguments, 1)), trailingFunctionArgument2(arguments)); - }; - Git2.prototype.applyPatch = function(patches) { - const task = !filterStringOrStringArray2(patches) ? configurationErrorTask2(`git.applyPatch requires one or more string patches as the first argument`) : applyPatchTask2(asArray2(patches), getTrailingOptions2([].slice.call(arguments, 1))); - return this._runTask(task, trailingFunctionArgument2(arguments)); - }; - Git2.prototype.revparse = function() { - const commands2 = ["rev-parse", ...getTrailingOptions2(arguments, true)]; - return this._runTask(straightThroughStringTask2(commands2, true), trailingFunctionArgument2(arguments)); - }; - Git2.prototype.show = function(options, then) { - return this._runTask(straightThroughStringTask2(["show", ...getTrailingOptions2(arguments, 1)]), trailingFunctionArgument2(arguments)); - }; - Git2.prototype.clean = function(mode, options, then) { - const usingCleanOptionsArray = isCleanOptionsArray2(mode); - const cleanMode = usingCleanOptionsArray && mode.join("") || filterType2(mode, filterString2) || ""; - const customArgs = getTrailingOptions2([].slice.call(arguments, usingCleanOptionsArray ? 1 : 0)); - return this._runTask(cleanWithOptionsTask2(cleanMode, customArgs), trailingFunctionArgument2(arguments)); - }; - Git2.prototype.exec = function(then) { - const task = { - commands: [], - format: "utf-8", - parser() { - if (typeof then === "function") { - then(); - } - } - }; - return this._runTask(task); - }; - Git2.prototype.clearQueue = function() { - return this; - }; - Git2.prototype.checkIgnore = function(pathnames, then) { - return this._runTask(checkIgnoreTask2(asArray2(filterType2(pathnames, filterStringOrStringArray2, []))), trailingFunctionArgument2(arguments)); - }; - Git2.prototype.checkIsRepo = function(checkType, then) { - return this._runTask(checkIsRepoTask2(filterType2(checkType, filterString2)), trailingFunctionArgument2(arguments)); - }; - module2.exports = Git2; - } -}); -init_git_error(); -var GitConstructError = class extends GitError { - constructor(config, message) { - super(void 0, message); - this.config = config; - } -}; -init_git_error(); -init_git_error(); -var GitPluginError = class extends GitError { - constructor(task, plugin, message) { - super(task, message); - this.task = task; - this.plugin = plugin; - Object.setPrototypeOf(this, new.target.prototype); - } -}; -init_git_response_error(); -init_task_configuration_error(); -init_check_is_repo(); -init_clean(); -init_config(); -init_grep(); -init_reset(); -function abortPlugin(signal) { - if (!signal) { - return; - } - const onSpawnAfter = { - type: "spawn.after", - action(_data, context) { - function kill() { - context.kill(new GitPluginError(void 0, "abort", "Abort signal received")); - } - signal.addEventListener("abort", kill); - context.spawned.on("close", () => signal.removeEventListener("abort", kill)); - } - }; - const onSpawnBefore = { - type: "spawn.before", - action(_data, context) { - if (signal.aborted) { - context.kill(new GitPluginError(void 0, "abort", "Abort already signaled")); - } - } - }; - return [onSpawnBefore, onSpawnAfter]; -} -function isConfigSwitch(arg) { - return typeof arg === "string" && arg.trim().toLowerCase() === "-c"; -} -function preventProtocolOverride(arg, next) { - if (!isConfigSwitch(arg)) { - return; - } - if (!/^\s*protocol(.[a-z]+)?.allow/.test(next)) { - return; - } - throw new GitPluginError(void 0, "unsafe", "Configuring protocol.allow is not permitted without enabling allowUnsafeExtProtocol"); -} -function preventUploadPack(arg, method2) { - if (/^\s*--(upload|receive)-pack/.test(arg)) { - throw new GitPluginError(void 0, "unsafe", `Use of --upload-pack or --receive-pack is not permitted without enabling allowUnsafePack`); - } - if (method2 === "clone" && /^\s*-u\b/.test(arg)) { - throw new GitPluginError(void 0, "unsafe", `Use of clone with option -u is not permitted without enabling allowUnsafePack`); - } - if (method2 === "push" && /^\s*--exec\b/.test(arg)) { - throw new GitPluginError(void 0, "unsafe", `Use of push with option --exec is not permitted without enabling allowUnsafePack`); - } -} -function blockUnsafeOperationsPlugin({ - allowUnsafeProtocolOverride = false, - allowUnsafePack = false -} = {}) { - return { - type: "spawn.args", - action(args, context) { - args.forEach((current, index2) => { - const next = index2 < args.length ? args[index2 + 1] : ""; - allowUnsafeProtocolOverride || preventProtocolOverride(current, next); - allowUnsafePack || preventUploadPack(current, context.method); - }); - return args; - } - }; -} -init_utils(); -function commandConfigPrefixingPlugin(configuration) { - const prefix = prefixedArray(configuration, "-c"); - return { - type: "spawn.args", - action(data) { - return [...prefix, ...data]; - } - }; -} -init_utils(); -var never = (0, import_promise_deferred2.deferred)().promise; -function completionDetectionPlugin({ - onClose = true, - onExit = 50 -} = {}) { - function createEvents() { - let exitCode = -1; - const events = { - close: (0, import_promise_deferred2.deferred)(), - closeTimeout: (0, import_promise_deferred2.deferred)(), - exit: (0, import_promise_deferred2.deferred)(), - exitTimeout: (0, import_promise_deferred2.deferred)() - }; - const result = Promise.race([ - onClose === false ? never : events.closeTimeout.promise, - onExit === false ? never : events.exitTimeout.promise - ]); - configureTimeout(onClose, events.close, events.closeTimeout); - configureTimeout(onExit, events.exit, events.exitTimeout); - return { - close(code) { - exitCode = code; - events.close.done(); - }, - exit(code) { - exitCode = code; - events.exit.done(); - }, - get exitCode() { - return exitCode; - }, - result - }; - } - function configureTimeout(flag, event, timeout) { - if (flag === false) { - return; - } - (flag === true ? event.promise : event.promise.then(() => delay(flag))).then(timeout.done); - } - return { - type: "spawn.after", - action(_0, _1) { - return __async(this, arguments, function* (_data, { spawned, close }) { - var _a2, _b; - const events = createEvents(); - let deferClose = true; - let quickClose = () => void (deferClose = false); - (_a2 = spawned.stdout) == null ? void 0 : _a2.on("data", quickClose); - (_b = spawned.stderr) == null ? void 0 : _b.on("data", quickClose); - spawned.on("error", quickClose); - spawned.on("close", (code) => events.close(code)); - spawned.on("exit", (code) => events.exit(code)); - try { - yield events.result; - if (deferClose) { - yield delay(50); - } - close(events.exitCode); - } catch (err) { - close(events.exitCode, err); - } - }); - } - }; -} -init_git_error(); -function isTaskError(result) { - return !!(result.exitCode && result.stdErr.length); -} -function getErrorMessage(result) { - return Buffer.concat([...result.stdOut, ...result.stdErr]); -} -function errorDetectionHandler(overwrite = false, isError = isTaskError, errorMessage = getErrorMessage) { - return (error, result) => { - if (!overwrite && error || !isError(result)) { - return error; - } - return errorMessage(result); - }; -} -function errorDetectionPlugin(config) { - return { - type: "task.error", - action(data, context) { - const error = config(data.error, { - stdErr: context.stdErr, - stdOut: context.stdOut, - exitCode: context.exitCode - }); - if (Buffer.isBuffer(error)) { - return { error: new GitError(void 0, error.toString("utf-8")) }; - } - return { - error - }; - } - }; -} -init_utils(); -var PluginStore = class { - constructor() { - this.plugins = /* @__PURE__ */ new Set(); - } - add(plugin) { - const plugins = []; - asArray(plugin).forEach((plugin2) => plugin2 && this.plugins.add(append(plugins, plugin2))); - return () => { - plugins.forEach((plugin2) => this.plugins.delete(plugin2)); - }; - } - exec(type, data, context) { - let output = data; - const contextual = Object.freeze(Object.create(context)); - for (const plugin of this.plugins) { - if (plugin.type === type) { - output = plugin.action(output, contextual); - } - } - return output; - } -}; -init_utils(); -function progressMonitorPlugin(progress) { - const progressCommand = "--progress"; - const progressMethods = ["checkout", "clone", "fetch", "pull", "push"]; - const onProgress = { - type: "spawn.after", - action(_data, context) { - var _a2; - if (!context.commands.includes(progressCommand)) { - return; - } - (_a2 = context.spawned.stderr) == null ? void 0 : _a2.on("data", (chunk) => { - const message = /^([\s\S]+?):\s*(\d+)% \((\d+)\/(\d+)\)/.exec(chunk.toString("utf8")); - if (!message) { - return; - } - progress({ - method: context.method, - stage: progressEventStage(message[1]), - progress: asNumber(message[2]), - processed: asNumber(message[3]), - total: asNumber(message[4]) - }); - }); - } - }; - const onArgs = { - type: "spawn.args", - action(args, context) { - if (!progressMethods.includes(context.method)) { - return args; - } - return including(args, progressCommand); - } - }; - return [onArgs, onProgress]; -} -function progressEventStage(input) { - return String(input.toLowerCase().split(" ", 1)) || "unknown"; -} -init_utils(); -function spawnOptionsPlugin(spawnOptions) { - const options = pick(spawnOptions, ["uid", "gid"]); - return { - type: "spawn.options", - action(data) { - return __spreadValues(__spreadValues({}, options), data); - } - }; -} -function timeoutPlugin({ - block, - stdErr = true, - stdOut = true -}) { - if (block > 0) { - return { - type: "spawn.after", - action(_data, context) { - var _a2, _b; - let timeout; - function wait3() { - timeout && clearTimeout(timeout); - timeout = setTimeout(kill, block); - } - function stop() { - var _a3, _b2; - (_a3 = context.spawned.stdout) == null ? void 0 : _a3.off("data", wait3); - (_b2 = context.spawned.stderr) == null ? void 0 : _b2.off("data", wait3); - context.spawned.off("exit", stop); - context.spawned.off("close", stop); - timeout && clearTimeout(timeout); - } - function kill() { - stop(); - context.kill(new GitPluginError(void 0, "timeout", `block timeout reached`)); - } - stdOut && ((_a2 = context.spawned.stdout) == null ? void 0 : _a2.on("data", wait3)); - stdErr && ((_b = context.spawned.stderr) == null ? void 0 : _b.on("data", wait3)); - context.spawned.on("exit", stop); - context.spawned.on("close", stop); - wait3(); - } - }; - } -} -init_utils(); -var Git = require_git(); -function gitInstanceFactory(baseDir, options) { - const plugins = new PluginStore(); - const config = createInstanceConfig(baseDir && (typeof baseDir === "string" ? { baseDir } : baseDir) || {}, options); - if (!folderExists(config.baseDir)) { - throw new GitConstructError(config, `Cannot use simple-git on a directory that does not exist`); - } - if (Array.isArray(config.config)) { - plugins.add(commandConfigPrefixingPlugin(config.config)); - } - plugins.add(blockUnsafeOperationsPlugin(config.unsafe)); - plugins.add(completionDetectionPlugin(config.completion)); - config.abort && plugins.add(abortPlugin(config.abort)); - config.progress && plugins.add(progressMonitorPlugin(config.progress)); - config.timeout && plugins.add(timeoutPlugin(config.timeout)); - config.spawnOptions && plugins.add(spawnOptionsPlugin(config.spawnOptions)); - plugins.add(errorDetectionPlugin(errorDetectionHandler(true))); - config.errors && plugins.add(errorDetectionPlugin(config.errors)); - return new Git(config, plugins); -} -init_git_response_error(); -var esm_default = gitInstanceFactory; - -// src/constants.ts -init_polyfill_buffer(); -var import_obsidian2 = require("obsidian"); -var DATE_FORMAT = "YYYY-MM-DD"; -var DATE_TIME_FORMAT_MINUTES = `${DATE_FORMAT} HH:mm`; -var DATE_TIME_FORMAT_SECONDS = `${DATE_FORMAT} HH:mm:ss`; -var GIT_LINE_AUTHORING_MOVEMENT_DETECTION_MINIMAL_LENGTH = 40; -var DEFAULT_SETTINGS = { - commitMessage: "vault backup: {{date}}", - commitDateFormat: DATE_TIME_FORMAT_SECONDS, - autoSaveInterval: 0, - autoPushInterval: 0, - autoPullInterval: 0, - autoPullOnBoot: false, - disablePush: false, - pullBeforePush: true, - disablePopups: false, - disablePopupsForNoChanges: false, - listChangedFilesInMessageBody: false, - showStatusBar: true, - updateSubmodules: false, - syncMethod: "merge", - customMessageOnAutoBackup: false, - autoBackupAfterFileChange: false, - treeStructure: false, - refreshSourceControl: import_obsidian2.Platform.isDesktopApp, - basePath: "", - differentIntervalCommitAndPush: false, - changedFilesInStatusBar: false, - showedMobileNotice: false, - refreshSourceControlTimer: 7e3, - showBranchStatusBar: true, - setLastSaveToLastCommit: false, - submoduleRecurseCheckout: false, - gitDir: "", - showFileMenu: true, - authorInHistoryView: "hide", - dateInHistoryView: false, - lineAuthor: { - show: false, - followMovement: "inactive", - authorDisplay: "initials", - showCommitHash: false, - dateTimeFormatOptions: "date", - dateTimeFormatCustomString: DATE_TIME_FORMAT_MINUTES, - dateTimeTimezone: "viewer-local", - coloringMaxAge: "1y", - // colors were picked via: - // https://color.adobe.com/de/create/color-accessibility - colorNew: { r: 255, g: 150, b: 150 }, - colorOld: { r: 120, g: 160, b: 255 }, - textColorCss: "var(--text-muted)", - // more pronounced than line numbers, but less than the content text - ignoreWhitespace: false, - gutterSpacingFallbackLength: 5 - } -}; -var SOURCE_CONTROL_VIEW_CONFIG = { - type: "git-view", - name: "Source Control", - icon: "git-pull-request" -}; -var HISTORY_VIEW_CONFIG = { - type: "git-history-view", - name: "History", - icon: "history" -}; -var DIFF_VIEW_CONFIG = { - type: "diff-view", - name: "Diff View", - icon: "git-pull-request" -}; - -// src/types.ts -init_polyfill_buffer(); -function mergeSettingsByPriority(low, high) { - const lineAuthor = Object.assign({}, low.lineAuthor, high.lineAuthor); - return Object.assign({}, low, high, { lineAuthor }); -} - -// src/utils.ts -init_polyfill_buffer(); -var cssColorConverter = __toESM(require_lib3()); -var import_deep_equal = __toESM(require_deep_equal()); -var import_obsidian3 = require("obsidian"); -var worthWalking2 = (filepath, root2) => { - if (filepath === "." || root2 == null || root2.length === 0 || root2 === ".") { - return true; - } - if (root2.length >= filepath.length) { - return root2.startsWith(filepath); - } else { - return filepath.startsWith(root2); - } -}; -function getNewLeaf(event) { - let leaf; - if (event) { - if (event.button === 0 || event.button === 1) { - const type = import_obsidian3.Keymap.isModEvent(event); - leaf = app.workspace.getLeaf(type); - } - } else { - leaf = app.workspace.getLeaf(false); - } - return leaf; -} -function impossibleBranch(x) { - throw new Error("Impossible branch: " + x); -} -function rgbToString(rgb) { - return `rgb(${rgb.r},${rgb.g},${rgb.b})`; -} -function convertToRgb(str) { - var _a2; - const color = (_a2 = cssColorConverter.fromString(str)) == null ? void 0 : _a2.toRgbaArray(); - if (color === void 0) { - return void 0; - } - const [r, g, b] = color; - return { r, g, b }; -} -function momentToEpochSeconds(instant) { - return instant.diff(import_obsidian3.moment.unix(0), "seconds"); -} -function median(array) { - if (array.length === 0) - return void 0; - return array.slice().sort()[Math.floor(array.length / 2)]; -} -function strictDeepEqual(a, b) { - return (0, import_deep_equal.default)(a, b, { strict: true }); -} -function resizeToLength(original, desiredLength, fillChar) { - if (original.length <= desiredLength) { - const prefix = new Array(desiredLength - original.length).fill(fillChar).join(""); - return prefix + original; - } else { - return original.substring(original.length - desiredLength); - } -} -function prefixOfLengthAsWhitespace(toBeRenderedText, whitespacePrefixLength) { - if (whitespacePrefixLength <= 0) - return toBeRenderedText; - const whitespacePrefix = new Array(whitespacePrefixLength).fill(" ").join(""); - const originalSuffix = toBeRenderedText.substring( - whitespacePrefixLength, - toBeRenderedText.length - ); - return whitespacePrefix + originalSuffix; -} -function between(l, x, r) { - return l <= x && x <= r; -} -function splitRemoteBranch(remoteBranch) { - const [remote, ...branch2] = remoteBranch.split("/"); - return [remote, branch2.length === 0 ? void 0 : branch2.join("/")]; -} -function getDisplayPath(path2) { - if (path2.endsWith("/")) - return path2; - return path2.split("/").last().replace(".md", ""); -} -function formatMinutes(minutes) { - if (minutes === 1) - return "1 minute"; - return `${minutes} minutes`; -} - -// src/gitManager/gitManager.ts -init_polyfill_buffer(); -var GitManager = class { - constructor(plugin) { - this.plugin = plugin; - this.app = plugin.app; - } - // Constructs a path relative to the vault from a path relative to the git repository - getRelativeVaultPath(path2) { - if (this.plugin.settings.basePath) { - return this.plugin.settings.basePath + "/" + path2; - } else { - return path2; - } - } - // Constructs a path relative to the git repository from a path relative to the vault - // - // @param doConversion - If false, the path is returned as is. This is added because that parameter is often passed on to functions where this method is called. - getRelativeRepoPath(path2, doConversion = true) { - if (doConversion) { - if (this.plugin.settings.basePath.length > 0) { - return path2.substring(this.plugin.settings.basePath.length + 1); - } - } - return path2; - } - _getTreeStructure(children2, beginLength = 0) { - const list = []; - children2 = [...children2]; - while (children2.length > 0) { - const first2 = children2.first(); - const restPath = first2.path.substring(beginLength); - if (restPath.contains("/")) { - const title = restPath.substring(0, restPath.indexOf("/")); - const childrenWithSameTitle = children2.filter((item) => { - return item.path.substring(beginLength).startsWith(title + "/"); - }); - childrenWithSameTitle.forEach((item) => children2.remove(item)); - const path2 = first2.path.substring( - 0, - restPath.indexOf("/") + beginLength - ); - list.push({ - title, - path: path2, - vaultPath: this.getRelativeVaultPath(path2), - children: this._getTreeStructure( - childrenWithSameTitle, - (beginLength > 0 ? beginLength + title.length : title.length) + 1 - ) - }); - } else { - list.push({ - title: restPath, - data: first2, - path: first2.path, - vaultPath: this.getRelativeVaultPath(first2.path) - }); - children2.remove(first2); - } - } - return list; - } - /* - * Sorts the children and simplifies the title - * If a node only contains another subdirectory, that subdirectory is moved up one level and integrated into the parent node - */ - simplify(tree) { - var _a2, _b, _c, _d; - for (const node of tree) { - while (true) { - const singleChild = ((_a2 = node.children) == null ? void 0 : _a2.length) == 1; - const singleChildIsDir = ((_c = (_b = node.children) == null ? void 0 : _b.first()) == null ? void 0 : _c.data) == void 0; - if (!(node.children != void 0 && singleChild && singleChildIsDir)) - break; - const child = node.children.first(); - node.title += "/" + child.title; - node.data = child.data; - node.path = child.path; - node.vaultPath = child.vaultPath; - node.children = child.children; - } - if (node.children != void 0) { - this.simplify(node.children); - } - (_d = node.children) == null ? void 0 : _d.sort((a, b) => { - const dirCompare = (b.data == void 0 ? 1 : 0) - (a.data == void 0 ? 1 : 0); - if (dirCompare != 0) { - return dirCompare; - } else { - return a.title.localeCompare(b.title); - } - }); - } - return tree.sort((a, b) => { - const dirCompare = (b.data == void 0 ? 1 : 0) - (a.data == void 0 ? 1 : 0); - if (dirCompare != 0) { - return dirCompare; - } else { - return a.title.localeCompare(b.title); - } - }); - } - getTreeStructure(children2) { - const tree = this._getTreeStructure(children2); - const res = this.simplify(tree); - return res; - } - async formatCommitMessage(template) { - let status2; - if (template.includes("{{numFiles}}")) { - status2 = await this.status(); - const numFiles = status2.staged.length; - template = template.replace("{{numFiles}}", String(numFiles)); - } - if (template.includes("{{hostname}}")) { - const hostname = this.plugin.localStorage.getHostname() || ""; - template = template.replace("{{hostname}}", hostname); - } - if (template.includes("{{files}}")) { - status2 = status2 != null ? status2 : await this.status(); - const changeset = {}; - status2.staged.forEach((value) => { - if (value.index in changeset) { - changeset[value.index].push(value.path); - } else { - changeset[value.index] = [value.path]; - } - }); - const chunks = []; - for (const [action, files2] of Object.entries(changeset)) { - chunks.push(action + " " + files2.join(" ")); - } - const files = chunks.join(", "); - template = template.replace("{{files}}", files); - } - const moment6 = window.moment; - template = template.replace( - "{{date}}", - moment6().format(this.plugin.settings.commitDateFormat) - ); - if (this.plugin.settings.listChangedFilesInMessageBody) { - template = template + "\n\nAffected files:\n" + (status2 != null ? status2 : await this.status()).staged.map((e) => e.path).join("\n"); - } - return template; - } -}; - -// src/gitManager/simpleGit.ts -var SimpleGit = class extends GitManager { - constructor(plugin) { - super(plugin); - } - async setGitInstance(ignoreError = false) { - if (this.isGitInstalled()) { - const adapter = this.app.vault.adapter; - const path2 = adapter.getBasePath(); - let basePath = path2; - if (this.plugin.settings.basePath) { - const exists2 = await adapter.exists( - (0, import_obsidian4.normalizePath)(this.plugin.settings.basePath) - ); - if (exists2) { - basePath = path2 + import_path.sep + this.plugin.settings.basePath; - } else if (!ignoreError) { - new import_obsidian4.Notice("ObsidianGit: Base path does not exist"); - } - } - this.git = esm_default({ - baseDir: basePath, - binary: this.plugin.localStorage.getGitPath() || void 0, - config: ["core.quotepath=off"] - }); - const pathPaths = this.plugin.localStorage.getPATHPaths(); - const envVars = this.plugin.localStorage.getEnvVars(); - const gitDir = this.plugin.settings.gitDir; - if (pathPaths.length > 0) { - const path3 = process.env["PATH"] + ":" + pathPaths.join(":"); - process.env["PATH"] = path3; - } - if (gitDir) { - process.env["GIT_DIR"] = gitDir; - } - for (const envVar of envVars) { - const [key2, value] = envVar.split("="); - process.env[key2] = value; - } - import_debug2.default.enable("simple-git"); - if (await this.git.checkIsRepo()) { - await this.git.cwd(await this.git.revparse("--show-toplevel")); - } - } - } - async status() { - this.plugin.setState(1 /* status */); - const status2 = await this.git.status((err) => this.onError(err)); - this.plugin.setState(0 /* idle */); - const allFilesFormatted = status2.files.map((e) => { - const res = this.formatPath(e); - return { - path: res.path, - from: res.from, - index: e.index === "?" ? "U" : e.index, - working_dir: e.working_dir === "?" ? "U" : e.working_dir, - vault_path: this.getRelativeVaultPath(res.path) - }; - }); - return { - all: allFilesFormatted, - changed: allFilesFormatted.filter((e) => e.working_dir !== " "), - staged: allFilesFormatted.filter( - (e) => e.index !== " " && e.index != "U" - ), - conflicted: status2.conflicted.map( - (path2) => this.formatPath({ path: path2 }).path - ) - }; - } - async submoduleAwareHeadRevisonInContainingDirectory(filepath) { - const repoPath = this.getRelativeRepoPath(filepath); - const containingDirectory = path.dirname(repoPath); - const args = ["-C", containingDirectory, "rev-parse", "HEAD"]; - const result = this.git.raw(args); - result.catch( - (err) => console.warn("obsidian-git: rev-parse error:", err) - ); - return result; - } - async getSubmodulePaths() { - return new Promise(async (resolve) => { - this.git.outputHandler(async (cmd, stdout, stderr, args) => { - if (!(args.contains("submodule") && args.contains("foreach"))) { - return; - } - let body = ""; - const root2 = this.app.vault.adapter.getBasePath() + (this.plugin.settings.basePath ? "/" + this.plugin.settings.basePath : ""); - stdout.on("data", (chunk) => { - body += chunk.toString("utf8"); - }); - stdout.on("end", async () => { - const submods = body.split("\n"); - const strippedSubmods = submods.map((i) => { - const submod = i.match(/'([^']*)'/); - if (submod != void 0) { - return root2 + "/" + submod[1] + import_path.sep; - } - }).filter((i) => !!i); - strippedSubmods.reverse(); - resolve(strippedSubmods); - }); - }); - await this.git.subModule(["foreach", "--recursive", ""]); - this.git.outputHandler(() => { - }); - }); - } - //Remove wrong `"` like "My file.md" - formatPath(path2, renamed = false) { - function format(path3) { - if (path3 == void 0) - return void 0; - if (path3.startsWith('"') && path3.endsWith('"')) { - return path3.substring(1, path3.length - 1); - } else { - return path3; - } - } - if (renamed) { - return { - from: format(path2.from), - path: format(path2.path) - }; - } else { - return { - path: format(path2.path) - }; - } - } - async blame(path2, trackMovement, ignoreWhitespace) { - path2 = this.getRelativeRepoPath(path2); - if (!await this.isTracked(path2)) - return "untracked"; - const inSubmodule = await this.getSubmoduleOfFile(path2); - const args = inSubmodule ? ["-C", inSubmodule.submodule] : []; - const relativePath = inSubmodule ? inSubmodule.relativeFilepath : path2; - args.push("blame", "--porcelain"); - if (ignoreWhitespace) - args.push("-w"); - const trackCArg = `-C${GIT_LINE_AUTHORING_MOVEMENT_DETECTION_MINIMAL_LENGTH}`; - switch (trackMovement) { - case "inactive": - break; - case "same-commit": - args.push("-C", trackCArg); - break; - case "all-commits": - args.push("-C", "-C", trackCArg); - break; - default: - impossibleBranch(trackMovement); - } - args.push("--", relativePath); - const rawBlame = await this.git.raw( - args, - (err) => err && console.warn("git-blame", err) - ); - return parseBlame(rawBlame); - } - async isTracked(path2) { - const inSubmodule = await this.getSubmoduleOfFile(path2); - const args = inSubmodule ? ["-C", inSubmodule.submodule] : []; - const relativePath = inSubmodule ? inSubmodule.relativeFilepath : path2; - args.push("ls-files", "--", relativePath); - return this.git.raw(args, (err) => err && console.warn("ls-files", err)).then((x) => x.trim() !== ""); - } - async commitAll({ message }) { - if (this.plugin.settings.updateSubmodules) { - this.plugin.setState(4 /* commit */); - const submodulePaths = await this.getSubmodulePaths(); - for (const item of submodulePaths) { - await this.git.cwd({ path: item, root: false }).add("-A", (err) => this.onError(err)); - await this.git.cwd({ path: item, root: false }).commit( - await this.formatCommitMessage(message), - (err) => this.onError(err) - ); - } - } - this.plugin.setState(3 /* add */); - await this.git.add("-A", (err) => this.onError(err)); - this.plugin.setState(4 /* commit */); - const res = await this.git.commit( - await this.formatCommitMessage(message), - (err) => this.onError(err) - ); - dispatchEvent(new CustomEvent("git-head-update")); - return res.summary.changes; - } - async commit({ - message, - amend - }) { - this.plugin.setState(4 /* commit */); - const res = (await this.git.commit( - await this.formatCommitMessage(message), - amend ? ["--amend"] : [], - (err) => this.onError(err) - )).summary.changes; - dispatchEvent(new CustomEvent("git-head-update")); - this.plugin.setState(0 /* idle */); - return res; - } - async stage(path2, relativeToVault) { - this.plugin.setState(3 /* add */); - path2 = this.getRelativeRepoPath(path2, relativeToVault); - await this.git.add(["--", path2], (err) => this.onError(err)); - this.plugin.setState(0 /* idle */); - } - async stageAll({ dir }) { - this.plugin.setState(3 /* add */); - await this.git.add(dir != null ? dir : "-A", (err) => this.onError(err)); - this.plugin.setState(0 /* idle */); - } - async unstageAll({ dir }) { - this.plugin.setState(3 /* add */); - await this.git.reset( - dir != void 0 ? ["--", dir] : [], - (err) => this.onError(err) - ); - this.plugin.setState(0 /* idle */); - } - async unstage(path2, relativeToVault) { - this.plugin.setState(3 /* add */); - path2 = this.getRelativeRepoPath(path2, relativeToVault); - await this.git.reset(["--", path2], (err) => this.onError(err)); - this.plugin.setState(0 /* idle */); - } - async discard(filepath) { - this.plugin.setState(3 /* add */); - await this.git.checkout(["--", filepath], (err) => this.onError(err)); - this.plugin.setState(0 /* idle */); - } - async hashObject(filepath) { - filepath = this.getRelativeRepoPath(filepath); - const inSubmodule = await this.getSubmoduleOfFile(filepath); - const args = inSubmodule ? ["-C", inSubmodule.submodule] : []; - const relativeFilepath = inSubmodule ? inSubmodule.relativeFilepath : filepath; - args.push("hash-object", "--", relativeFilepath); - const revision = this.git.raw(args); - revision.catch( - (err) => err && console.warn("obsidian-git. hash-object failed:", err == null ? void 0 : err.message) - ); - return revision; - } - async discardAll({ dir }) { - return this.discard(dir != null ? dir : "."); - } - async pull() { - this.plugin.setState(2 /* pull */); - if (this.plugin.settings.updateSubmodules) - await this.git.subModule( - ["update", "--remote", "--merge", "--recursive"], - (err) => this.onError(err) - ); - const branchInfo = await this.branchInfo(); - const localCommit = await this.git.revparse( - [branchInfo.current], - (err) => this.onError(err) - ); - if (!branchInfo.tracking && this.plugin.settings.updateSubmodules) { - this.plugin.log( - "No tracking branch found. Ignoring pull of main repo and updating submodules only." - ); - return; - } - await this.git.fetch((err) => this.onError(err)); - const upstreamCommit = await this.git.revparse( - [branchInfo.tracking], - (err) => this.onError(err) - ); - if (localCommit !== upstreamCommit) { - if (this.plugin.settings.syncMethod === "merge" || this.plugin.settings.syncMethod === "rebase") { - try { - switch (this.plugin.settings.syncMethod) { - case "merge": - await this.git.merge([branchInfo.tracking]); - break; - case "rebase": - await this.git.rebase([branchInfo.tracking]); - } - } catch (err) { - this.plugin.displayError( - `Pull failed (${this.plugin.settings.syncMethod}): ${err.message}` - ); - return; - } - } else if (this.plugin.settings.syncMethod === "reset") { - try { - await this.git.raw( - [ - "update-ref", - `refs/heads/${branchInfo.current}`, - upstreamCommit - ], - (err) => this.onError(err) - ); - await this.unstageAll({}); - } catch (err) { - this.plugin.displayError( - `Sync failed (${this.plugin.settings.syncMethod}): ${err.message}` - ); - } - } - dispatchEvent(new CustomEvent("git-head-update")); - const afterMergeCommit = await this.git.revparse( - [branchInfo.current], - (err) => this.onError(err) - ); - const filesChanged = await this.git.diff([ - `${localCommit}..${afterMergeCommit}`, - "--name-only" - ]); - return filesChanged.split(/\r\n|\r|\n/).filter((value) => value.length > 0).map((e) => { - return { - path: e, - working_dir: "P", - vault_path: this.getRelativeVaultPath(e) - }; - }); - } else { - return []; - } - } - async push() { - this.plugin.setState(5 /* push */); - if (this.plugin.settings.updateSubmodules) { - const res = await this.git.env({ ...process.env, OBSIDIAN_GIT: 1 }).subModule( - [ - "foreach", - "--recursive", - `tracking=$(git for-each-ref --format='%(upstream:short)' "$(git symbolic-ref -q HEAD)"); echo $tracking; if [ ! -z "$(git diff --shortstat $tracking)" ]; then git push; fi` - ], - (err) => this.onError(err) - ); - console.log(res); - } - const status2 = await this.git.status(); - const trackingBranch = status2.tracking; - const currentBranch2 = status2.current; - if (!trackingBranch && this.plugin.settings.updateSubmodules) { - this.plugin.log( - "No tracking branch found. Ignoring push of main repo and updating submodules only." - ); - return void 0; - } - const remoteChangedFiles = (await this.git.diffSummary( - [currentBranch2, trackingBranch, "--"], - (err) => this.onError(err) - )).changed; - await this.git.env({ ...process.env, OBSIDIAN_GIT: 1 }).push((err) => this.onError(err)); - return remoteChangedFiles; - } - async getUnpushedCommits() { - const status2 = await this.git.status(); - const trackingBranch = status2.tracking; - const currentBranch2 = status2.current; - if (trackingBranch == null || currentBranch2 == null) { - return 0; - } - const remoteChangedFiles = (await this.git.diffSummary( - [currentBranch2, trackingBranch, "--"], - (err) => this.onError(err) - )).changed; - return remoteChangedFiles; - } - async canPush() { - if (this.plugin.settings.updateSubmodules === true) { - return true; - } - const status2 = await this.git.status((err) => this.onError(err)); - const trackingBranch = status2.tracking; - const currentBranch2 = status2.current; - const remoteChangedFiles = (await this.git.diffSummary([currentBranch2, trackingBranch, "--"])).changed; - return remoteChangedFiles !== 0; - } - async checkRequirements() { - if (!this.isGitInstalled()) { - return "missing-git"; - } - if (!await this.git.checkIsRepo()) { - return "missing-repo"; - } - return "valid"; - } - async branchInfo() { - const status2 = await this.git.status((err) => this.onError(err)); - const branches = await this.git.branch( - ["--no-color"], - (err) => this.onError(err) - ); - return { - current: status2.current || void 0, - tracking: status2.tracking || void 0, - branches: branches.all - }; - } - async getRemoteUrl(remote) { - try { - return await this.git.remote(["get-url", remote]) || void 0; - } catch (error) { - if (error.toString().contains(remote)) { - return void 0; - } else { - this.onError(error); - } - } - } - // https://github.com/kometenstaub/obsidian-version-history-diff/issues/3 - async log(file, relativeToVault = true, limit) { - let path2; - if (file) { - path2 = this.getRelativeRepoPath(file, relativeToVault); - } - const res = await this.git.log( - { - file: path2, - maxCount: limit, - "-m": null, - "--name-status": null - }, - (err) => this.onError(err) - ); - return res.all.map((e) => { - var _a2, _b, _c, _d; - return { - ...e, - author: { - name: e.author_name, - email: e.author_email - }, - refs: e.refs.split(", ").filter((e2) => e2.length > 0), - diff: { - ...e.diff, - files: (_b = (_a2 = e.diff) == null ? void 0 : _a2.files.map((f) => ({ - ...f, - status: f.status, - path: f.file, - hash: e.hash, - vault_path: this.getRelativeVaultPath(f.file) - }))) != null ? _b : [] - }, - fileName: (_d = (_c = e.diff) == null ? void 0 : _c.files.first()) == null ? void 0 : _d.file - }; - }); - } - async show(commitHash, file, relativeToVault = true) { - const path2 = this.getRelativeRepoPath(file, relativeToVault); - return this.git.show( - [commitHash + ":" + path2], - (err) => this.onError(err) - ); - } - async checkout(branch2, remote) { - if (remote) { - branch2 = `${remote}/${branch2}`; - } - await this.git.checkout(branch2, (err) => this.onError(err)); - if (this.plugin.settings.submoduleRecurseCheckout) { - const submodulePaths = await this.getSubmodulePaths(); - for (const submodulePath of submodulePaths) { - const branchSummary = await this.git.cwd({ path: submodulePath, root: false }).branch(); - if (Object.keys(branchSummary.branches).includes(branch2)) { - await this.git.cwd({ path: submodulePath, root: false }).checkout(branch2, (err) => this.onError(err)); - } - } - } - } - async createBranch(branch2) { - await this.git.checkout(["-b", branch2], (err) => this.onError(err)); - } - async deleteBranch(branch2, force) { - await this.git.branch( - [force ? "-D" : "-d", branch2], - (err) => this.onError(err) - ); - } - async branchIsMerged(branch2) { - const notMergedBranches = await this.git.branch( - ["--no-merged"], - (err) => this.onError(err) - ); - return !notMergedBranches.all.contains(branch2); - } - async init() { - await this.git.init(false, (err) => this.onError(err)); - } - async clone(url, dir, depth) { - await this.git.clone( - url, - path.join( - this.app.vault.adapter.getBasePath(), - dir - ), - depth ? ["--depth", `${depth}`] : [], - (err) => this.onError(err) - ); - } - async setConfig(path2, value) { - if (value == void 0) { - await this.git.raw(["config", "--local", "--unset", path2]); - } else { - await this.git.addConfig(path2, value, (err) => this.onError(err)); - } - } - async getConfig(path2) { - const config = await this.git.listConfig( - "local", - (err) => this.onError(err) - ); - return config.all[path2]; - } - async fetch(remote) { - await this.git.fetch( - remote != void 0 ? [remote] : [], - (err) => this.onError(err) - ); - } - async setRemote(name, url) { - if ((await this.getRemotes()).includes(name)) - await this.git.remote( - ["set-url", name, url], - (err) => this.onError(err) - ); - else { - await this.git.remote( - ["add", name, url], - (err) => this.onError(err) - ); - } - } - async getRemoteBranches(remote) { - const res = await this.git.branch( - ["-r", "--list", `${remote}*`], - (err) => this.onError(err) - ); - const list = []; - for (const item in res.branches) { - list.push(res.branches[item].name); - } - return list; - } - async getRemotes() { - const res = await this.git.remote([], (err) => this.onError(err)); - if (res) { - return res.trim().split("\n"); - } else { - return []; - } - } - async removeRemote(remoteName) { - await this.git.removeRemote(remoteName); - } - async updateUpstreamBranch(remoteBranch) { - try { - await this.git.branch(["--set-upstream-to", remoteBranch]); - } catch (e) { - console.error(e); - try { - await this.git.branch(["--set-upstream", remoteBranch]); - } catch (e2) { - console.error(e2); - await this.git.push( - // A type error occurs here because the third element could be undefined. - // However, it is unlikely to be undefined due to the `remoteBranch`'s format, and error handling is in place. - // Therefore, we temporarily ignore the error. - // @ts-ignore - ["--set-upstream", ...splitRemoteBranch(remoteBranch)], - (err) => this.onError(err) - ); - } - } - } - updateGitPath(gitPath) { - this.setGitInstance(); - } - updateBasePath(basePath) { - this.setGitInstance(true); - } - async getDiffString(filePath, stagedChanges = false, hash2) { - if (stagedChanges) - return await this.git.diff(["--cached", "--", filePath]); - if (hash2) - return await this.git.show([`${hash2}`, "--", filePath]); - else - return await this.git.diff(["--", filePath]); - } - async diff(file, commit1, commit2) { - return await this.git.diff([`${commit1}..${commit2}`, "--", file]); - } - async getSubmoduleOfFile(repositoryRelativeFile) { - let submoduleRoot = await this.git.raw( - [ - "-C", - path.dirname(repositoryRelativeFile), - "rev-parse", - "--show-toplevel" - ], - (err) => err && console.warn("get-submodule-of-file", err == null ? void 0 : err.message) - ); - submoduleRoot = submoduleRoot.trim(); - const superProject = await this.git.raw( - [ - "-C", - path.dirname(repositoryRelativeFile), - "rev-parse", - "--show-superproject-working-tree" - ], - (err) => err && console.warn("get-submodule-of-file", err == null ? void 0 : err.message) - ); - if (superProject.trim() === "") { - return void 0; - } - const fsAdapter = this.app.vault.adapter; - const absolutePath = fsAdapter.getFullPath( - path.normalize(repositoryRelativeFile) - ); - const newRelativePath = path.relative(submoduleRoot, absolutePath); - return { submodule: submoduleRoot, relativeFilepath: newRelativePath }; - } - async getLastCommitTime() { - const res = await this.git.log({ n: 1 }, (err) => this.onError(err)); - if (res != null && res.latest != null) { - return new Date(res.latest.date); - } - } - isGitInstalled() { - const command = (0, import_child_process2.spawnSync)( - this.plugin.localStorage.getGitPath() || "git", - ["--version"], - { - stdio: "ignore" - } - ); - if (command.error) { - console.error(command.error); - return false; - } - return true; - } - onError(error) { - if (error) { - const networkFailure = error.message.contains("Could not resolve host") || error.message.match( - /ssh: connect to host .*? port .*?: Operation timed out/ - ) || error.message.match( - /ssh: connect to host .*? port .*?: Network is unreachable/ - ); - if (!networkFailure) { - this.plugin.displayError(error.message); - this.plugin.setState(0 /* idle */); - } else if (!this.plugin.offlineMode) { - this.plugin.displayError( - "Git: Going into offline mode. Future network errors will no longer be displayed.", - 2e3 - ); - } - if (networkFailure) { - this.plugin.offlineMode = true; - this.plugin.setState(0 /* idle */); - } - } - } -}; -var zeroCommit = { - hash: "000000", - isZeroCommit: true, - summary: "" -}; -function parseBlame(blameOutputUnnormalized) { - const blameOutput = blameOutputUnnormalized.replace("\r\n", "\n"); - const blameLines = blameOutput.split("\n"); - const result = { - commits: /* @__PURE__ */ new Map(), - hashPerLine: [void 0], - // one-based indices - originalFileLineNrPerLine: [void 0], - finalFileLineNrPerLine: [void 0], - groupSizePerStartingLine: /* @__PURE__ */ new Map() - }; - let line = 1; - for (let bi = 0; bi < blameLines.length; ) { - if (startsWithNonWhitespace(blameLines[bi])) { - const lineInfo = blameLines[bi].split(" "); - const commitHash = parseLineInfoInto(lineInfo, line, result); - bi++; - for (; startsWithNonWhitespace(blameLines[bi]); bi++) { - const spaceSeparatedHeaderValues = blameLines[bi].split(" "); - parseHeaderInto(spaceSeparatedHeaderValues, result, line); - } - finalizeBlameCommitInfo(result.commits.get(commitHash)); - line += 1; - } else if (blameLines[bi] === "" && bi === blameLines.length - 1) { - } else { - throw Error( - `Expected non-whitespace line or EOF, but found: ${blameLines[bi]}` - ); - } - bi++; - } - return result; -} -function parseLineInfoInto(lineInfo, line, result) { - const hash2 = lineInfo[0]; - result.hashPerLine.push(hash2); - result.originalFileLineNrPerLine.push(parseInt(lineInfo[1])); - result.finalFileLineNrPerLine.push(parseInt(lineInfo[2])); - lineInfo.length >= 4 && result.groupSizePerStartingLine.set(line, parseInt(lineInfo[3])); - if (parseInt(lineInfo[2]) !== line) { - throw Error( - `git-blame output is out of order: ${line} vs ${lineInfo[2]}` - ); - } - return hash2; -} -function parseHeaderInto(header, out, line) { - const key2 = header[0]; - const value = header.slice(1).join(" "); - const commitHash = out.hashPerLine[line]; - const commit2 = out.commits.get(commitHash) || { - hash: commitHash, - author: {}, - committer: {}, - previous: {} - }; - switch (key2) { - case "summary": - commit2.summary = value; - break; - case "author": - commit2.author.name = value; - break; - case "author-mail": - commit2.author.email = removeEmailBrackets(value); - break; - case "author-time": - commit2.author.epochSeconds = parseInt(value); - break; - case "author-tz": - commit2.author.tz = value; - break; - case "committer": - commit2.committer.name = value; - break; - case "committer-mail": - commit2.committer.email = removeEmailBrackets(value); - break; - case "committer-time": - commit2.committer.epochSeconds = parseInt(value); - break; - case "committer-tz": - commit2.committer.tz = value; - break; - case "previous": - commit2.previous.commitHash = value; - break; - case "filename": - commit2.previous.filename = value; - break; - } - out.commits.set(commitHash, commit2); -} -function finalizeBlameCommitInfo(commit2) { - if (commit2.summary === void 0) { - throw Error(`Summary not provided for commit: ${commit2.hash}`); - } - if (isUndefinedOrEmptyObject(commit2.author)) { - commit2.author = void 0; - } - if (isUndefinedOrEmptyObject(commit2.committer)) { - commit2.committer = void 0; - } - if (isUndefinedOrEmptyObject(commit2.previous)) { - commit2.previous = void 0; - } - commit2.isZeroCommit = Boolean(commit2.hash.match(/^0*$/)); -} -function isUndefinedOrEmptyObject(obj) { - return !obj || Object.keys(obj).length === 0; -} -function startsWithNonWhitespace(str) { - return str.length > 0 && str[0].trim() === str[0]; -} -function removeEmailBrackets(gitEmail) { - const prefixCleaned = gitEmail.startsWith("<") ? gitEmail.substring(1) : gitEmail; - return prefixCleaned.endsWith(">") ? prefixCleaned.substring(0, prefixCleaned.length - 1) : prefixCleaned; -} - -// src/lineAuthor/lineAuthorProvider.ts -init_polyfill_buffer(); -var import_state4 = require("@codemirror/state"); - -// src/lineAuthor/control.ts -init_polyfill_buffer(); -var import_state2 = require("@codemirror/state"); -var import_obsidian9 = require("obsidian"); - -// src/lineAuthor/eventsPerFilepath.ts -init_polyfill_buffer(); -var SECONDS = 1e3; -var REMOVE_STALES_FREQUENCY = 60 * SECONDS; -var EventsPerFilePath = class { - constructor() { - this.eventsPerFilepath = /* @__PURE__ */ new Map(); - this.startRemoveStalesSubscribersInterval(); - } - /** - * Run the {@link handler} on the subscribers to {@link filepath}. - */ - ifFilepathDefinedTransformSubscribers(filepath, handler) { - if (!filepath) - return; - this.ensureInitialized(filepath); - return handler(this.eventsPerFilepath.get(filepath)); - } - forEachSubscriber(handler) { - this.eventsPerFilepath.forEach((subs) => subs.forEach(handler)); - } - ensureInitialized(filepath) { - if (!this.eventsPerFilepath.get(filepath)) - this.eventsPerFilepath.set(filepath, /* @__PURE__ */ new Set()); - } - startRemoveStalesSubscribersInterval() { - this.removeStalesSubscribersTimer = window.setInterval( - () => this == null ? void 0 : this.forEachSubscriber((las) => las == null ? void 0 : las.removeIfStale()), - REMOVE_STALES_FREQUENCY - ); - } - clear() { - window.clearInterval(this.removeStalesSubscribersTimer); - this.eventsPerFilepath.clear(); - } -}; -var eventsPerFilePathSingleton = new EventsPerFilePath(); - -// src/lineAuthor/model.ts -init_polyfill_buffer(); -var import_state = require("@codemirror/state"); -var import_js_sha256 = __toESM(require_sha256()); - -// src/setting/settings.ts -init_polyfill_buffer(); -var import_obsidian8 = require("obsidian"); - -// src/gitManager/isomorphicGit.ts -init_polyfill_buffer(); - -// node_modules/.pnpm/diff@5.2.0/node_modules/diff/lib/index.mjs -init_polyfill_buffer(); -function Diff() { -} -Diff.prototype = { - diff: function diff(oldString, newString) { - var _options$timeout; - var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; - var callback = options.callback; - if (typeof options === "function") { - callback = options; - options = {}; - } - this.options = options; - var self2 = this; - function done(value) { - if (callback) { - setTimeout(function() { - callback(void 0, value); - }, 0); - return true; - } else { - return value; - } - } - oldString = this.castInput(oldString); - newString = this.castInput(newString); - oldString = this.removeEmpty(this.tokenize(oldString)); - newString = this.removeEmpty(this.tokenize(newString)); - var newLen = newString.length, oldLen = oldString.length; - var editLength = 1; - var maxEditLength = newLen + oldLen; - if (options.maxEditLength) { - maxEditLength = Math.min(maxEditLength, options.maxEditLength); - } - var maxExecutionTime = (_options$timeout = options.timeout) !== null && _options$timeout !== void 0 ? _options$timeout : Infinity; - var abortAfterTimestamp = Date.now() + maxExecutionTime; - var bestPath = [{ - oldPos: -1, - lastComponent: void 0 - }]; - var newPos = this.extractCommon(bestPath[0], newString, oldString, 0); - if (bestPath[0].oldPos + 1 >= oldLen && newPos + 1 >= newLen) { - return done([{ - value: this.join(newString), - count: newString.length - }]); - } - var minDiagonalToConsider = -Infinity, maxDiagonalToConsider = Infinity; - function execEditLength() { - for (var diagonalPath = Math.max(minDiagonalToConsider, -editLength); diagonalPath <= Math.min(maxDiagonalToConsider, editLength); diagonalPath += 2) { - var basePath = void 0; - var removePath = bestPath[diagonalPath - 1], addPath = bestPath[diagonalPath + 1]; - if (removePath) { - bestPath[diagonalPath - 1] = void 0; - } - var canAdd = false; - if (addPath) { - var addPathNewPos = addPath.oldPos - diagonalPath; - canAdd = addPath && 0 <= addPathNewPos && addPathNewPos < newLen; - } - var canRemove = removePath && removePath.oldPos + 1 < oldLen; - if (!canAdd && !canRemove) { - bestPath[diagonalPath] = void 0; - continue; - } - if (!canRemove || canAdd && removePath.oldPos + 1 < addPath.oldPos) { - basePath = self2.addToPath(addPath, true, void 0, 0); - } else { - basePath = self2.addToPath(removePath, void 0, true, 1); - } - newPos = self2.extractCommon(basePath, newString, oldString, diagonalPath); - if (basePath.oldPos + 1 >= oldLen && newPos + 1 >= newLen) { - return done(buildValues(self2, basePath.lastComponent, newString, oldString, self2.useLongestToken)); - } else { - bestPath[diagonalPath] = basePath; - if (basePath.oldPos + 1 >= oldLen) { - maxDiagonalToConsider = Math.min(maxDiagonalToConsider, diagonalPath - 1); - } - if (newPos + 1 >= newLen) { - minDiagonalToConsider = Math.max(minDiagonalToConsider, diagonalPath + 1); - } - } - } - editLength++; - } - if (callback) { - (function exec() { - setTimeout(function() { - if (editLength > maxEditLength || Date.now() > abortAfterTimestamp) { - return callback(); - } - if (!execEditLength()) { - exec(); - } - }, 0); - })(); - } else { - while (editLength <= maxEditLength && Date.now() <= abortAfterTimestamp) { - var ret = execEditLength(); - if (ret) { - return ret; - } - } - } - }, - addToPath: function addToPath(path2, added, removed, oldPosInc) { - var last2 = path2.lastComponent; - if (last2 && last2.added === added && last2.removed === removed) { - return { - oldPos: path2.oldPos + oldPosInc, - lastComponent: { - count: last2.count + 1, - added, - removed, - previousComponent: last2.previousComponent - } - }; - } else { - return { - oldPos: path2.oldPos + oldPosInc, - lastComponent: { - count: 1, - added, - removed, - previousComponent: last2 - } - }; - } - }, - extractCommon: function extractCommon(basePath, newString, oldString, diagonalPath) { - var newLen = newString.length, oldLen = oldString.length, oldPos = basePath.oldPos, newPos = oldPos - diagonalPath, commonCount = 0; - while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newString[newPos + 1], oldString[oldPos + 1])) { - newPos++; - oldPos++; - commonCount++; - } - if (commonCount) { - basePath.lastComponent = { - count: commonCount, - previousComponent: basePath.lastComponent - }; - } - basePath.oldPos = oldPos; - return newPos; - }, - equals: function equals(left, right) { - if (this.options.comparator) { - return this.options.comparator(left, right); - } else { - return left === right || this.options.ignoreCase && left.toLowerCase() === right.toLowerCase(); - } - }, - removeEmpty: function removeEmpty(array) { - var ret = []; - for (var i = 0; i < array.length; i++) { - if (array[i]) { - ret.push(array[i]); - } - } - return ret; - }, - castInput: function castInput(value) { - return value; - }, - tokenize: function tokenize(value) { - return value.split(""); - }, - join: function join3(chars) { - return chars.join(""); - } -}; -function buildValues(diff3, lastComponent, newString, oldString, useLongestToken) { - var components = []; - var nextComponent; - while (lastComponent) { - components.push(lastComponent); - nextComponent = lastComponent.previousComponent; - delete lastComponent.previousComponent; - lastComponent = nextComponent; - } - components.reverse(); - var componentPos = 0, componentLen = components.length, newPos = 0, oldPos = 0; - for (; componentPos < componentLen; componentPos++) { - var component = components[componentPos]; - if (!component.removed) { - if (!component.added && useLongestToken) { - var value = newString.slice(newPos, newPos + component.count); - value = value.map(function(value2, i) { - var oldValue = oldString[oldPos + i]; - return oldValue.length > value2.length ? oldValue : value2; - }); - component.value = diff3.join(value); - } else { - component.value = diff3.join(newString.slice(newPos, newPos + component.count)); - } - newPos += component.count; - if (!component.added) { - oldPos += component.count; - } - } else { - component.value = diff3.join(oldString.slice(oldPos, oldPos + component.count)); - oldPos += component.count; - if (componentPos && components[componentPos - 1].added) { - var tmp = components[componentPos - 1]; - components[componentPos - 1] = components[componentPos]; - components[componentPos] = tmp; - } - } - } - var finalComponent = components[componentLen - 1]; - if (componentLen > 1 && typeof finalComponent.value === "string" && (finalComponent.added || finalComponent.removed) && diff3.equals("", finalComponent.value)) { - components[componentLen - 2].value += finalComponent.value; - components.pop(); - } - return components; -} -var characterDiff = new Diff(); -var extendedWordChars = /^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/; -var reWhitespace = /\S/; -var wordDiff = new Diff(); -wordDiff.equals = function(left, right) { - if (this.options.ignoreCase) { - left = left.toLowerCase(); - right = right.toLowerCase(); - } - return left === right || this.options.ignoreWhitespace && !reWhitespace.test(left) && !reWhitespace.test(right); -}; -wordDiff.tokenize = function(value) { - var tokens = value.split(/([^\S\r\n]+|[()[\]{}'"\r\n]|\b)/); - for (var i = 0; i < tokens.length - 1; i++) { - if (!tokens[i + 1] && tokens[i + 2] && extendedWordChars.test(tokens[i]) && extendedWordChars.test(tokens[i + 2])) { - tokens[i] += tokens[i + 2]; - tokens.splice(i + 1, 2); - i--; - } - } - return tokens; -}; -var lineDiff = new Diff(); -lineDiff.tokenize = function(value) { - if (this.options.stripTrailingCr) { - value = value.replace(/\r\n/g, "\n"); - } - var retLines = [], linesAndNewlines = value.split(/(\n|\r\n)/); - if (!linesAndNewlines[linesAndNewlines.length - 1]) { - linesAndNewlines.pop(); - } - for (var i = 0; i < linesAndNewlines.length; i++) { - var line = linesAndNewlines[i]; - if (i % 2 && !this.options.newlineIsToken) { - retLines[retLines.length - 1] += line; - } else { - if (this.options.ignoreWhitespace) { - line = line.trim(); - } - retLines.push(line); - } - } - return retLines; -}; -function diffLines(oldStr, newStr, callback) { - return lineDiff.diff(oldStr, newStr, callback); -} -var sentenceDiff = new Diff(); -sentenceDiff.tokenize = function(value) { - return value.split(/(\S.+?[.!?])(?=\s+|$)/); -}; -var cssDiff = new Diff(); -cssDiff.tokenize = function(value) { - return value.split(/([{}:;,]|\s+)/); -}; -function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function(obj2) { - return typeof obj2; - }; - } else { - _typeof = function(obj2) { - return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; - }; - } - return _typeof(obj); -} -function _toConsumableArray(arr) { - return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); -} -function _arrayWithoutHoles(arr) { - if (Array.isArray(arr)) - return _arrayLikeToArray(arr); -} -function _iterableToArray(iter) { - if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) - return Array.from(iter); -} -function _unsupportedIterableToArray(o, minLen) { - if (!o) - return; - if (typeof o === "string") - return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) - n = o.constructor.name; - if (n === "Map" || n === "Set") - return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) - return _arrayLikeToArray(o, minLen); -} -function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) - len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) - arr2[i] = arr[i]; - return arr2; -} -function _nonIterableSpread() { - throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); -} -var objectPrototypeToString = Object.prototype.toString; -var jsonDiff = new Diff(); -jsonDiff.useLongestToken = true; -jsonDiff.tokenize = lineDiff.tokenize; -jsonDiff.castInput = function(value) { - var _this$options = this.options, undefinedReplacement = _this$options.undefinedReplacement, _this$options$stringi = _this$options.stringifyReplacer, stringifyReplacer = _this$options$stringi === void 0 ? function(k, v) { - return typeof v === "undefined" ? undefinedReplacement : v; - } : _this$options$stringi; - return typeof value === "string" ? value : JSON.stringify(canonicalize(value, null, null, stringifyReplacer), stringifyReplacer, " "); -}; -jsonDiff.equals = function(left, right) { - return Diff.prototype.equals.call(jsonDiff, left.replace(/,([\r\n])/g, "$1"), right.replace(/,([\r\n])/g, "$1")); -}; -function canonicalize(obj, stack, replacementStack, replacer, key2) { - stack = stack || []; - replacementStack = replacementStack || []; - if (replacer) { - obj = replacer(key2, obj); - } - var i; - for (i = 0; i < stack.length; i += 1) { - if (stack[i] === obj) { - return replacementStack[i]; - } - } - var canonicalizedObj; - if ("[object Array]" === objectPrototypeToString.call(obj)) { - stack.push(obj); - canonicalizedObj = new Array(obj.length); - replacementStack.push(canonicalizedObj); - for (i = 0; i < obj.length; i += 1) { - canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack, replacer, key2); - } - stack.pop(); - replacementStack.pop(); - return canonicalizedObj; - } - if (obj && obj.toJSON) { - obj = obj.toJSON(); - } - if (_typeof(obj) === "object" && obj !== null) { - stack.push(obj); - canonicalizedObj = {}; - replacementStack.push(canonicalizedObj); - var sortedKeys = [], _key; - for (_key in obj) { - if (obj.hasOwnProperty(_key)) { - sortedKeys.push(_key); - } - } - sortedKeys.sort(); - for (i = 0; i < sortedKeys.length; i += 1) { - _key = sortedKeys[i]; - canonicalizedObj[_key] = canonicalize(obj[_key], stack, replacementStack, replacer, _key); - } - stack.pop(); - replacementStack.pop(); - } else { - canonicalizedObj = obj; - } - return canonicalizedObj; -} -var arrayDiff = new Diff(); -arrayDiff.tokenize = function(value) { - return value.slice(); -}; -arrayDiff.join = arrayDiff.removeEmpty = function(value) { - return value; -}; -function structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) { - if (!options) { - options = {}; - } - if (typeof options.context === "undefined") { - options.context = 4; - } - var diff3 = diffLines(oldStr, newStr, options); - if (!diff3) { - return; - } - diff3.push({ - value: "", - lines: [] - }); - function contextLines(lines) { - return lines.map(function(entry) { - return " " + entry; - }); - } - var hunks = []; - var oldRangeStart = 0, newRangeStart = 0, curRange = [], oldLine = 1, newLine = 1; - var _loop = function _loop2(i2) { - var current = diff3[i2], lines = current.lines || current.value.replace(/\n$/, "").split("\n"); - current.lines = lines; - if (current.added || current.removed) { - var _curRange; - if (!oldRangeStart) { - var prev = diff3[i2 - 1]; - oldRangeStart = oldLine; - newRangeStart = newLine; - if (prev) { - curRange = options.context > 0 ? contextLines(prev.lines.slice(-options.context)) : []; - oldRangeStart -= curRange.length; - newRangeStart -= curRange.length; - } - } - (_curRange = curRange).push.apply(_curRange, _toConsumableArray(lines.map(function(entry) { - return (current.added ? "+" : "-") + entry; - }))); - if (current.added) { - newLine += lines.length; - } else { - oldLine += lines.length; - } - } else { - if (oldRangeStart) { - if (lines.length <= options.context * 2 && i2 < diff3.length - 2) { - var _curRange2; - (_curRange2 = curRange).push.apply(_curRange2, _toConsumableArray(contextLines(lines))); - } else { - var _curRange3; - var contextSize = Math.min(lines.length, options.context); - (_curRange3 = curRange).push.apply(_curRange3, _toConsumableArray(contextLines(lines.slice(0, contextSize)))); - var hunk = { - oldStart: oldRangeStart, - oldLines: oldLine - oldRangeStart + contextSize, - newStart: newRangeStart, - newLines: newLine - newRangeStart + contextSize, - lines: curRange - }; - if (i2 >= diff3.length - 2 && lines.length <= options.context) { - var oldEOFNewline = /\n$/.test(oldStr); - var newEOFNewline = /\n$/.test(newStr); - var noNlBeforeAdds = lines.length == 0 && curRange.length > hunk.oldLines; - if (!oldEOFNewline && noNlBeforeAdds && oldStr.length > 0) { - curRange.splice(hunk.oldLines, 0, "\\ No newline at end of file"); - } - if (!oldEOFNewline && !noNlBeforeAdds || !newEOFNewline) { - curRange.push("\\ No newline at end of file"); - } - } - hunks.push(hunk); - oldRangeStart = 0; - newRangeStart = 0; - curRange = []; - } - } - oldLine += lines.length; - newLine += lines.length; - } - }; - for (var i = 0; i < diff3.length; i++) { - _loop(i); - } - return { - oldFileName, - newFileName, - oldHeader, - newHeader, - hunks - }; -} -function formatPatch(diff3) { - if (Array.isArray(diff3)) { - return diff3.map(formatPatch).join("\n"); - } - var ret = []; - if (diff3.oldFileName == diff3.newFileName) { - ret.push("Index: " + diff3.oldFileName); - } - ret.push("==================================================================="); - ret.push("--- " + diff3.oldFileName + (typeof diff3.oldHeader === "undefined" ? "" : " " + diff3.oldHeader)); - ret.push("+++ " + diff3.newFileName + (typeof diff3.newHeader === "undefined" ? "" : " " + diff3.newHeader)); - for (var i = 0; i < diff3.hunks.length; i++) { - var hunk = diff3.hunks[i]; - if (hunk.oldLines === 0) { - hunk.oldStart -= 1; - } - if (hunk.newLines === 0) { - hunk.newStart -= 1; - } - ret.push("@@ -" + hunk.oldStart + "," + hunk.oldLines + " +" + hunk.newStart + "," + hunk.newLines + " @@"); - ret.push.apply(ret, hunk.lines); - } - return ret.join("\n") + "\n"; -} -function createTwoFilesPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) { - return formatPatch(structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options)); -} -function createPatch(fileName, oldStr, newStr, oldHeader, newHeader, options) { - return createTwoFilesPatch(fileName, fileName, oldStr, newStr, oldHeader, newHeader, options); -} - -// src/gitManager/isomorphicGit.ts -var import_obsidian7 = require("obsidian"); - -// src/ui/modals/generalModal.ts -init_polyfill_buffer(); -var import_obsidian5 = require("obsidian"); -var generalModalConfigDefaults = { - options: [], - placeholder: "", - allowEmpty: false, - onlySelection: false, - initialValue: void 0 -}; -var GeneralModal = class extends import_obsidian5.SuggestModal { - constructor(config) { - super(app); - this.config = { ...generalModalConfigDefaults, ...config }; - this.setPlaceholder(this.config.placeholder); - } - open() { - super.open(); - if (this.config.initialValue != void 0) { - this.inputEl.value = this.config.initialValue; - this.inputEl.dispatchEvent(new Event("input")); - } - return new Promise((resolve) => { - this.resolve = resolve; - }); - } - selectSuggestion(value, evt) { - if (this.resolve) { - let res; - if (this.config.allowEmpty && value === " ") - res = ""; - else if (value === "...") - res = void 0; - else - res = value; - this.resolve(res); - } - super.selectSuggestion(value, evt); - } - onClose() { - if (this.resolve) - this.resolve(void 0); - } - getSuggestions(query) { - if (this.config.onlySelection) { - return this.config.options; - } else if (this.config.allowEmpty) { - return [query.length > 0 ? query : " ", ...this.config.options]; - } else { - return [query.length > 0 ? query : "...", ...this.config.options]; - } - } - renderSuggestion(value, el) { - el.setText(value); - } - onChooseSuggestion(item, evt) { - } -}; - -// src/gitManager/myAdapter.ts -init_polyfill_buffer(); -var import_obsidian6 = require("obsidian"); -var MyAdapter = class { - constructor(vault, plugin) { - this.plugin = plugin; - this.promises = {}; - this.adapter = vault.adapter; - this.vault = vault; - this.lastBasePath = this.plugin.settings.basePath; - this.promises.readFile = this.readFile.bind(this); - this.promises.writeFile = this.writeFile.bind(this); - this.promises.readdir = this.readdir.bind(this); - this.promises.mkdir = this.mkdir.bind(this); - this.promises.rmdir = this.rmdir.bind(this); - this.promises.stat = this.stat.bind(this); - this.promises.unlink = this.unlink.bind(this); - this.promises.lstat = this.lstat.bind(this); - this.promises.readlink = this.readlink.bind(this); - this.promises.symlink = this.symlink.bind(this); - } - async readFile(path2, opts) { - var _a2; - this.maybeLog("Read: " + path2 + JSON.stringify(opts)); - if (opts == "utf8" || opts.encoding == "utf8") { - const file = this.vault.getAbstractFileByPath(path2); - if (file instanceof import_obsidian6.TFile) { - this.maybeLog("Reuse"); - return this.vault.read(file); - } else { - return this.adapter.read(path2); - } - } else { - if (path2.endsWith(this.gitDir + "/index")) { - if (this.plugin.settings.basePath != this.lastBasePath) { - this.clearIndex(); - this.lastBasePath = this.plugin.settings.basePath; - return this.adapter.readBinary(path2); - } - return (_a2 = this.index) != null ? _a2 : this.adapter.readBinary(path2); - } - const file = this.vault.getAbstractFileByPath(path2); - if (file instanceof import_obsidian6.TFile) { - this.maybeLog("Reuse"); - return this.vault.readBinary(file); - } else { - return this.adapter.readBinary(path2); - } - } - } - async writeFile(path2, data) { - this.maybeLog("Write: " + path2); - if (typeof data === "string") { - const file = this.vault.getAbstractFileByPath(path2); - if (file instanceof import_obsidian6.TFile) { - return this.vault.modify(file, data); - } else { - return this.adapter.write(path2, data); - } - } else { - if (path2.endsWith(this.gitDir + "/index")) { - this.index = data; - this.indexmtime = Date.now(); - } else { - const file = this.vault.getAbstractFileByPath(path2); - if (file instanceof import_obsidian6.TFile) { - return this.vault.modifyBinary(file, data); - } else { - return this.adapter.writeBinary(path2, data); - } - } - } - } - async readdir(path2) { - if (path2 === ".") - path2 = "/"; - const res = await this.adapter.list(path2); - const all = [...res.files, ...res.folders]; - let formattedAll; - if (path2 !== "/") { - formattedAll = all.map( - (e) => (0, import_obsidian6.normalizePath)(e.substring(path2.length)) - ); - } else { - formattedAll = all; - } - return formattedAll; - } - async mkdir(path2) { - return this.adapter.mkdir(path2); - } - async rmdir(path2, opts) { - var _a2, _b; - return this.adapter.rmdir(path2, (_b = (_a2 = opts == null ? void 0 : opts.options) == null ? void 0 : _a2.recursive) != null ? _b : false); - } - async stat(path2) { - if (path2.endsWith(this.gitDir + "/index")) { - if (this.index !== void 0 && this.indexctime != void 0 && this.indexmtime != void 0) { - return { - isFile: () => true, - isDirectory: () => false, - isSymbolicLink: () => false, - size: this.index.length, - type: "file", - ctimeMs: this.indexctime, - mtimeMs: this.indexmtime - }; - } else { - const stat = await this.adapter.stat(path2); - if (stat == void 0) { - throw { code: "ENOENT" }; - } - this.indexctime = stat.ctime; - this.indexmtime = stat.mtime; - return { - ctimeMs: stat.ctime, - mtimeMs: stat.mtime, - size: stat.size, - type: "file", - isFile: () => true, - isDirectory: () => false, - isSymbolicLink: () => false - }; - } - } - if (path2 === ".") - path2 = "/"; - const file = this.vault.getAbstractFileByPath(path2); - this.maybeLog("Stat: " + path2); - if (file instanceof import_obsidian6.TFile) { - this.maybeLog("Reuse stat"); - return { - ctimeMs: file.stat.ctime, - mtimeMs: file.stat.mtime, - size: file.stat.size, - type: "file", - isFile: () => true, - isDirectory: () => false, - isSymbolicLink: () => false - }; - } else { - const stat = await this.adapter.stat(path2); - if (stat) { - return { - ctimeMs: stat.ctime, - mtimeMs: stat.mtime, - size: stat.size, - type: stat.type === "folder" ? "directory" : stat.type, - isFile: () => stat.type === "file", - isDirectory: () => stat.type === "folder", - isSymbolicLink: () => false - }; - } else { - throw { code: "ENOENT" }; - } - } - } - async unlink(path2) { - return this.adapter.remove(path2); - } - async lstat(path2) { - return this.stat(path2); - } - async readlink(path2) { - throw new Error(`readlink of (${path2}) is not implemented.`); - } - async symlink(path2) { - throw new Error(`symlink of (${path2}) is not implemented.`); - } - async saveAndClear() { - if (this.index !== void 0) { - await this.adapter.writeBinary( - this.plugin.gitManager.getRelativeVaultPath( - this.gitDir + "/index" - ), - this.index, - { - ctime: this.indexctime, - mtime: this.indexmtime - } - ); - } - this.clearIndex(); - } - clearIndex() { - this.index = void 0; - this.indexctime = void 0; - this.indexmtime = void 0; - } - get gitDir() { - return this.plugin.settings.gitDir || ".git"; - } - maybeLog(text2) { - } -}; - -// src/gitManager/isomorphicGit.ts -var IsomorphicGit = class extends GitManager { - constructor(plugin) { - super(plugin); - this.FILE = 0; - this.HEAD = 1; - this.WORKDIR = 2; - this.STAGE = 3; - // Mapping from statusMatrix to git status codes based off git status --short - // See: https://isomorphic-git.org/docs/en/statusMatrix - this.status_mapping = { - "000": " ", - "003": "AD", - "020": "??", - "022": "A ", - "023": "AM", - "100": "D ", - "101": " D", - "103": "MD", - "110": "DA", - // Technically, two files: first one is deleted "D " and second one is untracked "??" - "111": " ", - "113": "MM", - "120": "DA", - // Same as "110" - "121": " M", - "122": "M ", - "123": "MM" - }; - this.noticeLength = 999999; - this.fs = new MyAdapter(this.app.vault, this.plugin); - } - getRepo() { - return { - fs: this.fs, - dir: this.plugin.settings.basePath, - gitdir: this.plugin.settings.gitDir || void 0, - onAuth: () => { - var _a2, _b; - return { - username: (_a2 = this.plugin.localStorage.getUsername()) != null ? _a2 : void 0, - password: (_b = this.plugin.localStorage.getPassword()) != null ? _b : void 0 - }; - }, - onAuthFailure: async () => { - new import_obsidian7.Notice( - "Authentication failed. Please try with different credentials" - ); - const username = await new GeneralModal({ - placeholder: "Specify your username" - }).open(); - if (username) { - const password = await new GeneralModal({ - placeholder: "Specify your password/personal access token" - }).open(); - if (password) { - this.plugin.localStorage.setUsername(username); - this.plugin.localStorage.setPassword(password); - return { - username, - password - }; - } - } - return { cancel: true }; - }, - http: { - async request({ - url, - method: method2, - headers, - body - }) { - if (body) { - body = await collect2(body); - body = body.buffer; - } - const res = await (0, import_obsidian7.requestUrl)({ - url, - method: method2, - headers, - body, - throw: false - }); - return { - url, - method: method2, - headers: res.headers, - body: [new Uint8Array(res.arrayBuffer)], - statusCode: res.status, - statusMessage: res.status.toString() - }; - } - } - }; - } - async wrapFS(call) { - try { - const res = await call; - await this.fs.saveAndClear(); - return res; - } catch (error) { - await this.fs.saveAndClear(); - throw error; - } - } - async status() { - let notice; - const timeout = window.setTimeout(function() { - notice = new import_obsidian7.Notice( - "This takes longer: Getting status", - this.noticeLength - ); - }, 2e4); - try { - this.plugin.setState(1 /* status */); - const status2 = (await this.wrapFS(isomorphic_git_default.statusMatrix({ ...this.getRepo() }))).map((row) => this.getFileStatusResult(row)); - const changed = status2.filter( - (fileStatus) => fileStatus.working_dir !== " " - ); - const staged = status2.filter( - (fileStatus) => fileStatus.index !== " " && fileStatus.index !== "U" - ); - const conflicted = []; - window.clearTimeout(timeout); - notice == null ? void 0 : notice.hide(); - return { all: status2, changed, staged, conflicted }; - } catch (error) { - window.clearTimeout(timeout); - notice == null ? void 0 : notice.hide(); - this.plugin.displayError(error); - throw error; - } - } - async commitAll({ - message, - status: status2, - unstagedFiles - }) { - try { - await this.checkAuthorInfo(); - await this.stageAll({ status: status2, unstagedFiles }); - return this.commit({ message }); - } catch (error) { - this.plugin.displayError(error); - throw error; - } - } - async commit({ - message - }) { - try { - await this.checkAuthorInfo(); - this.plugin.setState(4 /* commit */); - const formatMessage = await this.formatCommitMessage(message); - const hadConflict = this.plugin.localStorage.getConflict(); - let parent = void 0; - if (hadConflict) { - const branchInfo = await this.branchInfo(); - parent = [branchInfo.current, branchInfo.tracking]; - } - await this.wrapFS( - isomorphic_git_default.commit({ - ...this.getRepo(), - message: formatMessage, - parent - }) - ); - this.plugin.localStorage.setConflict(false); - return; - } catch (error) { - this.plugin.displayError(error); - throw error; - } - } - async stage(filepath, relativeToVault) { - const gitPath = this.getRelativeRepoPath(filepath, relativeToVault); - let vaultPath; - if (relativeToVault) { - vaultPath = filepath; - } else { - vaultPath = this.getRelativeVaultPath(filepath); - } - try { - this.plugin.setState(3 /* add */); - if (await this.app.vault.adapter.exists(vaultPath)) { - await this.wrapFS( - isomorphic_git_default.add({ ...this.getRepo(), filepath: gitPath }) - ); - } else { - await this.wrapFS( - isomorphic_git_default.remove({ ...this.getRepo(), filepath: gitPath }) - ); - } - } catch (error) { - this.plugin.displayError(error); - throw error; - } - } - async stageAll({ - dir, - status: status2, - unstagedFiles - }) { - try { - if (status2) { - await Promise.all( - status2.changed.map( - (file) => file.working_dir !== "D" ? this.wrapFS( - isomorphic_git_default.add({ - ...this.getRepo(), - filepath: file.path - }) - ) : isomorphic_git_default.remove({ - ...this.getRepo(), - filepath: file.path - }) - ) - ); - } else { - const filesToStage = unstagedFiles != null ? unstagedFiles : await this.getUnstagedFiles(dir != null ? dir : "."); - await Promise.all( - filesToStage.map( - ({ filepath, deleted }) => deleted ? isomorphic_git_default.remove({ ...this.getRepo(), filepath }) : this.wrapFS( - isomorphic_git_default.add({ ...this.getRepo(), filepath }) - ) - ) - ); - } - } catch (error) { - this.plugin.displayError(error); - throw error; - } - } - async unstage(filepath, relativeToVault) { - try { - this.plugin.setState(3 /* add */); - filepath = this.getRelativeRepoPath(filepath, relativeToVault); - await this.wrapFS( - isomorphic_git_default.resetIndex({ ...this.getRepo(), filepath }) - ); - } catch (error) { - this.plugin.displayError(error); - throw error; - } - } - async unstageAll({ - dir, - status: status2 - }) { - try { - let staged; - if (status2) { - staged = status2.staged.map((file) => file.path); - } else { - const res = await this.getStagedFiles(dir != null ? dir : "."); - staged = res.map(({ filepath }) => filepath); - } - await this.wrapFS( - Promise.all( - staged.map( - (file) => isomorphic_git_default.resetIndex({ ...this.getRepo(), filepath: file }) - ) - ) - ); - } catch (error) { - this.plugin.displayError(error); - throw error; - } - } - async discard(filepath) { - try { - this.plugin.setState(3 /* add */); - await this.wrapFS( - isomorphic_git_default.checkout({ - ...this.getRepo(), - filepaths: [filepath], - force: true - }) - ); - } catch (error) { - this.plugin.displayError(error); - throw error; - } - } - async discardAll({ - dir, - status: status2 - }) { - let files = []; - if (status2) { - if (dir != void 0) { - files = status2.changed.filter((file) => file.path.startsWith(dir)).map((file) => file.path); - } else { - files = status2.changed.map((file) => file.path); - } - } else { - files = (await this.getUnstagedFiles(dir)).map( - ({ filepath }) => filepath - ); - } - try { - await this.wrapFS( - isomorphic_git_default.checkout({ - ...this.getRepo(), - filepaths: files, - force: true - }) - ); - } catch (error) { - this.plugin.displayError(error); - throw error; - } - } - getProgressText(action, event) { - let out = `${action} progress:`; - if (event.phase) { - out = `${out} ${event.phase}:`; - } - if (event.loaded) { - out = `${out} ${event.loaded}`; - if (event.total) { - out = `${out} of ${event.total}`; - } - } - return out; - } - resolveRef(ref) { - return this.wrapFS(isomorphic_git_default.resolveRef({ ...this.getRepo(), ref })); - } - async pull() { - const progressNotice = this.showNotice("Initializing pull"); - try { - this.plugin.setState(2 /* pull */); - const localCommit = await this.resolveRef("HEAD"); - await this.fetch(); - const branchInfo = await this.branchInfo(); - await this.checkAuthorInfo(); - const mergeRes = await this.wrapFS( - isomorphic_git_default.merge({ - ...this.getRepo(), - ours: branchInfo.current, - theirs: branchInfo.tracking, - abortOnConflict: false - }) - ); - if (!mergeRes.alreadyMerged) { - await this.wrapFS( - isomorphic_git_default.checkout({ - ...this.getRepo(), - ref: branchInfo.current, - onProgress: (progress) => { - if (progressNotice !== void 0) { - progressNotice.noticeEl.innerText = this.getProgressText("Checkout", progress); - } - }, - remote: branchInfo.remote - }) - ); - } - progressNotice == null ? void 0 : progressNotice.hide(); - const upstreamCommit = await this.resolveRef("HEAD"); - const changedFiles = await this.getFileChangesCount( - localCommit, - upstreamCommit - ); - this.showNotice("Finished pull", false); - return changedFiles.map((file) => ({ - path: file.path, - working_dir: "P", - index: "P", - vault_path: this.getRelativeVaultPath(file.path) - })); - } catch (error) { - progressNotice == null ? void 0 : progressNotice.hide(); - if (error instanceof Errors.MergeConflictError) { - this.plugin.handleConflict( - error.data.filepaths.map( - (file) => this.getRelativeVaultPath(file) - ) - ); - } - this.plugin.displayError(error); - throw error; - } - } - async push() { - if (!await this.canPush()) { - return 0; - } - const progressNotice = this.showNotice("Initializing push"); - try { - this.plugin.setState(1 /* status */); - const status2 = await this.branchInfo(); - const trackingBranch = status2.tracking; - const currentBranch2 = status2.current; - const numChangedFiles = (await this.getFileChangesCount(currentBranch2, trackingBranch)).length; - this.plugin.setState(5 /* push */); - await this.wrapFS( - isomorphic_git_default.push({ - ...this.getRepo(), - onProgress: (progress) => { - if (progressNotice !== void 0) { - progressNotice.noticeEl.innerText = this.getProgressText("Pushing", progress); - } - } - }) - ); - progressNotice == null ? void 0 : progressNotice.hide(); - return numChangedFiles; - } catch (error) { - progressNotice == null ? void 0 : progressNotice.hide(); - this.plugin.displayError(error); - throw error; - } - } - async getUnpushedCommits() { - const status2 = await this.branchInfo(); - const trackingBranch = status2.tracking; - const currentBranch2 = status2.current; - if (trackingBranch == null || currentBranch2 == null) { - return 0; - } - const localCommit = await this.resolveRef(currentBranch2); - const upstreamCommit = await this.resolveRef(trackingBranch); - const changedFiles = await this.getFileChangesCount( - localCommit, - upstreamCommit - ); - return changedFiles.length; - } - async canPush() { - const status2 = await this.branchInfo(); - const trackingBranch = status2.tracking; - const currentBranch2 = status2.current; - const current = await this.resolveRef(currentBranch2); - const tracking = await this.resolveRef(trackingBranch); - return current != tracking; - } - async checkRequirements() { - const headExists = await this.plugin.app.vault.adapter.exists( - `${this.getRepo().dir}/.git/HEAD` - ); - return headExists ? "valid" : "missing-repo"; - } - async branchInfo() { - var _a2, _b; - try { - const current = await isomorphic_git_default.currentBranch(this.getRepo()) || ""; - const branches = await isomorphic_git_default.listBranches(this.getRepo()); - const remote = (_a2 = await this.getConfig(`branch.${current}.remote`)) != null ? _a2 : "origin"; - const trackingBranch = (_b = await this.getConfig(`branch.${current}.merge`)) == null ? void 0 : _b.split("refs/heads")[1]; - const tracking = trackingBranch ? remote + trackingBranch : void 0; - return { - current, - tracking, - branches, - remote - }; - } catch (error) { - this.plugin.displayError(error); - throw error; - } - } - async getCurrentRemote() { - var _a2; - const current = await isomorphic_git_default.currentBranch(this.getRepo()) || ""; - const remote = (_a2 = await this.getConfig(`branch.${current}.remote`)) != null ? _a2 : "origin"; - return remote; - } - async checkout(branch2, remote) { - try { - return this.wrapFS( - isomorphic_git_default.checkout({ - ...this.getRepo(), - ref: branch2, - force: !!remote, - remote - }) - ); - } catch (error) { - this.plugin.displayError(error); - throw error; - } - } - async createBranch(branch2) { - try { - await this.wrapFS( - isomorphic_git_default.branch({ ...this.getRepo(), ref: branch2, checkout: true }) - ); - } catch (error) { - this.plugin.displayError(error); - throw error; - } - } - async deleteBranch(branch2) { - try { - await this.wrapFS( - isomorphic_git_default.deleteBranch({ ...this.getRepo(), ref: branch2 }) - ); - } catch (error) { - this.plugin.displayError(error); - throw error; - } - } - async branchIsMerged(_) { - return true; - } - async init() { - try { - await this.wrapFS(isomorphic_git_default.init(this.getRepo())); - } catch (error) { - this.plugin.displayError(error); - throw error; - } - } - async clone(url, dir, depth) { - const progressNotice = this.showNotice("Initializing clone"); - try { - await this.wrapFS( - isomorphic_git_default.clone({ - ...this.getRepo(), - dir, - url, - depth, - onProgress: (progress) => { - if (progressNotice !== void 0) { - progressNotice.noticeEl.innerText = this.getProgressText("Cloning", progress); - } - } - }) - ); - progressNotice == null ? void 0 : progressNotice.hide(); - } catch (error) { - progressNotice == null ? void 0 : progressNotice.hide(); - this.plugin.displayError(error); - throw error; - } - } - async setConfig(path2, value) { - try { - return this.wrapFS( - isomorphic_git_default.setConfig({ - ...this.getRepo(), - path: path2, - value - }) - ); - } catch (error) { - this.plugin.displayError(error); - throw error; - } - } - async getConfig(path2) { - try { - return this.wrapFS( - isomorphic_git_default.getConfig({ - ...this.getRepo(), - path: path2 - }) - ); - } catch (error) { - this.plugin.displayError(error); - throw error; - } - } - async fetch(remote) { - const progressNotice = this.showNotice("Initializing fetch"); - try { - const args = { - ...this.getRepo(), - onProgress: (progress) => { - if (progressNotice !== void 0) { - progressNotice.noticeEl.innerText = this.getProgressText("Fetching", progress); - } - }, - remote: remote != null ? remote : await this.getCurrentRemote() - }; - await this.wrapFS(isomorphic_git_default.fetch(args)); - progressNotice == null ? void 0 : progressNotice.hide(); - } catch (error) { - this.plugin.displayError(error); - progressNotice == null ? void 0 : progressNotice.hide(); - throw error; - } - } - async setRemote(name, url) { - try { - await this.wrapFS( - isomorphic_git_default.addRemote({ - ...this.getRepo(), - remote: name, - url, - force: true - }) - ); - } catch (error) { - this.plugin.displayError(error); - throw error; - } - } - async getRemoteBranches(remote) { - let remoteBranches = []; - remoteBranches.push( - ...await this.wrapFS( - isomorphic_git_default.listBranches({ ...this.getRepo(), remote }) - ) - ); - remoteBranches.remove("HEAD"); - remoteBranches = remoteBranches.map((e) => `${remote}/${e}`); - return remoteBranches; - } - async getRemotes() { - return (await this.wrapFS(isomorphic_git_default.listRemotes({ ...this.getRepo() }))).map( - (remoteUrl) => remoteUrl.remote - ); - } - async removeRemote(remoteName) { - await this.wrapFS( - isomorphic_git_default.deleteRemote({ ...this.getRepo(), remote: remoteName }) - ); - } - async getRemoteUrl(remote) { - var _a2; - return (_a2 = (await this.wrapFS(isomorphic_git_default.listRemotes({ ...this.getRepo() }))).filter((item) => item.remote == remote)[0]) == null ? void 0 : _a2.url; - } - async log(_, __ = true, limit) { - const logs = await this.wrapFS( - isomorphic_git_default.log({ ...this.getRepo(), depth: limit }) - ); - return Promise.all( - logs.map(async (log2) => { - const completeMessage = log2.commit.message.split("\n\n"); - return { - message: completeMessage[0], - author: { - name: log2.commit.author.name, - email: log2.commit.author.email - }, - body: completeMessage.slice(1).join("\n\n"), - date: new Date( - log2.commit.committer.timestamp - ).toDateString(), - diff: { - changed: 0, - files: (await this.getFileChangesCount( - log2.commit.parent.first(), - log2.oid - )).map((item) => { - return { - path: item.path, - status: item.type, - vault_path: this.getRelativeVaultPath( - item.path - ), - hash: log2.oid, - binary: void 0 - }; - }) - }, - hash: log2.oid, - refs: [] - }; - }) - ); - } - updateBasePath(basePath) { - this.getRepo().dir = basePath; - } - async updateUpstreamBranch(remoteBranch) { - const [remote, branch2] = splitRemoteBranch(remoteBranch); - const branchInfo = await this.branchInfo(); - await this.setConfig( - `branch.${branchInfo.current}.merge`, - `refs/heads/${branch2}` - ); - await this.setConfig(`branch.${branch2}.remote`, remote); - } - updateGitPath(_) { - return; - } - async getFileChangesCount(commitHash1, commitHash2) { - return this.walkDifference({ - walkers: [ - isomorphic_git_default.TREE({ ref: commitHash1 }), - isomorphic_git_default.TREE({ ref: commitHash2 }) - ] - }); - } - async walkDifference({ - walkers, - dir: base - }) { - const res = await this.wrapFS( - isomorphic_git_default.walk({ - ...this.getRepo(), - trees: walkers, - map: async function(filepath, [A, B]) { - if (!worthWalking2(filepath, base)) { - return null; - } - if (await (A == null ? void 0 : A.type()) === "tree" || await (B == null ? void 0 : B.type()) === "tree") { - return; - } - const Aoid = await (A == null ? void 0 : A.oid()); - const Boid = await (B == null ? void 0 : B.oid()); - let type = "equal"; - if (Aoid !== Boid) { - type = "M"; - } - if (Aoid === void 0) { - type = "A"; - } - if (Boid === void 0) { - type = "D"; - } - if (Aoid === void 0 && Boid === void 0) { - console.log("Something weird happened:"); - console.log(A); - console.log(B); - } - if (type === "equal") { - return; - } - return { - path: filepath, - type - }; - } - }) - ); - return res; - } - async getStagedFiles(dir = ".") { - const res = await this.walkDifference({ - walkers: [isomorphic_git_default.TREE({ ref: "HEAD" }), isomorphic_git_default.STAGE()], - dir - }); - return res.map((file) => { - return { - vault_path: this.getRelativeVaultPath(file.path), - filepath: file.path - }; - }); - } - async getUnstagedFiles(base = ".") { - let notice; - const timeout = window.setTimeout(function() { - notice = new import_obsidian7.Notice( - "This takes longer: Getting status", - this.noticeLength - ); - }, 2e4); - try { - const repo = this.getRepo(); - const res = await this.wrapFS( - //Modified from `git.statusMatrix` - isomorphic_git_default.walk({ - ...repo, - trees: [isomorphic_git_default.WORKDIR(), isomorphic_git_default.STAGE()], - map: async function(filepath, [workdir, stage]) { - if (!stage && workdir) { - const isIgnored2 = await isomorphic_git_default.isIgnored({ - ...repo, - filepath - }); - if (isIgnored2) { - return null; - } - } - if (!worthWalking2(filepath, base)) { - return null; - } - const [workdirType, stageType] = await Promise.all([ - workdir && workdir.type(), - stage && stage.type() - ]); - const isBlob = [workdirType, stageType].includes( - "blob" - ); - if ((workdirType === "tree" || workdirType === "special") && !isBlob) - return; - if (stageType === "commit") - return null; - if ((stageType === "tree" || stageType === "special") && !isBlob) - return; - const stageOid = stageType === "blob" ? await stage.oid() : void 0; - let workdirOid; - if (workdirType === "blob" && stageType !== "blob") { - workdirOid = "42"; - } else if (workdirType === "blob") { - workdirOid = await workdir.oid(); - } - if (!workdirOid) { - return { - filepath, - deleted: true - }; - } - if (workdirOid !== stageOid) { - return { - filepath, - deleted: false - }; - } - return null; - } - }) - ); - window.clearTimeout(timeout); - notice == null ? void 0 : notice.hide(); - return res; - } catch (error) { - window.clearTimeout(timeout); - notice == null ? void 0 : notice.hide(); - this.plugin.displayError(error); - throw error; - } - } - async getDiffString(filePath, stagedChanges = false, hash2) { - const vaultPath = this.getRelativeVaultPath(filePath); - const map = async (file, [A]) => { - if (filePath == file) { - const oid = await A.oid(); - const contents = await isomorphic_git_default.readBlob({ - ...this.getRepo(), - oid - }); - return contents.blob; - } - }; - if (hash2) { - const commitContent = await readBlob({ - ...this.getRepo(), - filepath: filePath, - oid: hash2 - }).then((headBlob) => new TextDecoder().decode(headBlob.blob)).catch((err) => { - if (err instanceof isomorphic_git_default.Errors.NotFoundError) - return void 0; - throw err; - }); - const commit2 = await isomorphic_git_default.readCommit({ - ...this.getRepo(), - oid: hash2 - }); - const previousContent = await readBlob({ - ...this.getRepo(), - filepath: filePath, - oid: commit2.commit.parent.first() - }).then((headBlob) => new TextDecoder().decode(headBlob.blob)).catch((err) => { - if (err instanceof isomorphic_git_default.Errors.NotFoundError) - return void 0; - throw err; - }); - const diff3 = createPatch( - vaultPath, - previousContent != null ? previousContent : "", - commitContent != null ? commitContent : "" - ); - return diff3; - } - const stagedBlob = (await isomorphic_git_default.walk({ - ...this.getRepo(), - trees: [isomorphic_git_default.STAGE()], - map - })).first(); - const stagedContent = new TextDecoder().decode(stagedBlob); - if (stagedChanges) { - const headContent = await this.resolveRef("HEAD").then( - (oid) => readBlob({ - ...this.getRepo(), - filepath: filePath, - oid - }) - ).then((headBlob) => new TextDecoder().decode(headBlob.blob)).catch((err) => { - if (err instanceof isomorphic_git_default.Errors.NotFoundError) - return void 0; - throw err; - }); - const diff3 = createPatch( - vaultPath, - headContent != null ? headContent : "", - stagedContent - ); - return diff3; - } else { - let workdirContent; - if (await this.app.vault.adapter.exists(vaultPath)) { - workdirContent = await this.app.vault.adapter.read(vaultPath); - } else { - workdirContent = ""; - } - const diff3 = createPatch(vaultPath, stagedContent, workdirContent); - return diff3; - } - } - async getLastCommitTime() { - const repo = this.getRepo(); - const oid = await this.resolveRef("HEAD"); - const commit2 = await isomorphic_git_default.readCommit({ ...repo, oid }); - const date = commit2.commit.committer.timestamp; - return new Date(date * 1e3); - } - getFileStatusResult(row) { - const status2 = this.status_mapping[`${row[this.HEAD]}${row[this.WORKDIR]}${row[this.STAGE]}`]; - return { - index: status2[0] == "?" ? "U" : status2[0], - working_dir: status2[1] == "?" ? "U" : status2[1], - path: row[this.FILE], - vault_path: this.getRelativeVaultPath(row[this.FILE]) - }; - } - async checkAuthorInfo() { - const name = await this.getConfig("user.name"); - const email = await this.getConfig("user.email"); - if (!name || !email) { - throw "Git author information is not set. Please set it in the settings."; - } - } - showNotice(message, infinity = true) { - if (!this.plugin.settings.disablePopups) { - return new import_obsidian7.Notice( - message, - infinity ? this.noticeLength : void 0 - ); - } - } -}; -function fromValue2(value) { - let queue = [value]; - return { - next() { - return Promise.resolve({ - done: queue.length === 0, - value: queue.pop() - }); - }, - return() { - queue = []; - return {}; - }, - [Symbol.asyncIterator]() { - return this; - } - }; -} -function getIterator2(iterable) { - if (iterable[Symbol.asyncIterator]) { - return iterable[Symbol.asyncIterator](); - } - if (iterable[Symbol.iterator]) { - return iterable[Symbol.iterator](); - } - if (iterable.next) { - return iterable; - } - return fromValue2(iterable); -} -async function forAwait2(iterable, cb) { - const iter = getIterator2(iterable); - while (true) { - const { value, done } = await iter.next(); - if (value) - await cb(value); - if (done) - break; - } - if (iter.return) - iter.return(); -} -async function collect2(iterable) { - let size = 0; - const buffers = []; - await forAwait2(iterable, (value) => { - buffers.push(value); - size += value.byteLength; - }); - const result = new Uint8Array(size); - let nextIndex = 0; - for (const buffer2 of buffers) { - result.set(buffer2, nextIndex); - nextIndex += buffer2.byteLength; - } - return result; -} - -// src/setting/settings.ts -var FORMAT_STRING_REFERENCE_URL = "https://momentjs.com/docs/#/parsing/string-format/"; -var LINE_AUTHOR_FEATURE_WIKI_LINK = "https://publish.obsidian.md/git-doc/Line+Authoring"; -var ObsidianGitSettingsTab = class extends import_obsidian8.PluginSettingTab { - constructor() { - super(...arguments); - this.lineAuthorColorSettings = /* @__PURE__ */ new Map(); - } - // narrow type from PluginSettingTab.plugin - get settings() { - return this.plugin.settings; - } - display() { - const { containerEl } = this; - const plugin = this.plugin; - const commitOrBackup = plugin.settings.differentIntervalCommitAndPush ? "commit" : "backup"; - const gitReady = plugin.gitReady; - containerEl.empty(); - containerEl.createEl("h2", { text: "Git Backup settings" }); - if (!gitReady) { - containerEl.createEl("p", { - text: "Git is not ready. When all settings are correct you can configure auto backup, etc." - }); - } - if (gitReady) { - containerEl.createEl("br"); - containerEl.createEl("h3", { text: "Automatic" }); - new import_obsidian8.Setting(containerEl).setName("Split automatic commit and push").setDesc("Enable to use separate timer for commit and push").addToggle( - (toggle) => toggle.setValue( - plugin.settings.differentIntervalCommitAndPush - ).onChange((value) => { - plugin.settings.differentIntervalCommitAndPush = value; - plugin.saveSettings(); - plugin.clearAutoBackup(); - plugin.clearAutoPush(); - if (plugin.settings.autoSaveInterval > 0) { - plugin.startAutoBackup( - plugin.settings.autoSaveInterval - ); - } - if (value && plugin.settings.autoPushInterval > 0) { - plugin.startAutoPush( - plugin.settings.autoPushInterval - ); - } - this.display(); - }) - ); - new import_obsidian8.Setting(containerEl).setName(`Vault ${commitOrBackup} interval (minutes)`).setDesc( - `${plugin.settings.differentIntervalCommitAndPush ? "Commit" : "Commit and push"} changes every X minutes. Set to 0 (default) to disable. (See below setting for further configuration!)` - ).addText( - (text2) => text2.setValue(String(plugin.settings.autoSaveInterval)).onChange((value) => { - if (!isNaN(Number(value))) { - plugin.settings.autoSaveInterval = Number(value); - plugin.saveSettings(); - if (plugin.settings.autoSaveInterval > 0) { - plugin.clearAutoBackup(); - plugin.startAutoBackup( - plugin.settings.autoSaveInterval - ); - new import_obsidian8.Notice( - `Automatic ${commitOrBackup} enabled! Every ${formatMinutes( - plugin.settings.autoSaveInterval - )}.` - ); - } else if (plugin.settings.autoSaveInterval <= 0) { - plugin.clearAutoBackup() && new import_obsidian8.Notice( - `Automatic ${commitOrBackup} disabled!` - ); - } - } else { - new import_obsidian8.Notice("Please specify a valid number."); - } - }) - ); - if (!plugin.settings.setLastSaveToLastCommit) - new import_obsidian8.Setting(containerEl).setName(`Auto Backup after stopping file edits`).setDesc( - `Requires the ${commitOrBackup} interval not to be 0. - If turned on, do auto ${commitOrBackup} every ${formatMinutes( - plugin.settings.autoSaveInterval - )} after stopping file edits. - This also prevents auto ${commitOrBackup} while editing a file. If turned off, it's independent from the last change.` - ).addToggle( - (toggle) => toggle.setValue(plugin.settings.autoBackupAfterFileChange).onChange((value) => { - plugin.settings.autoBackupAfterFileChange = value; - this.display(); - plugin.saveSettings(); - plugin.clearAutoBackup(); - if (plugin.settings.autoSaveInterval > 0) { - plugin.startAutoBackup( - plugin.settings.autoSaveInterval - ); - } - }) - ); - if (!plugin.settings.autoBackupAfterFileChange) - new import_obsidian8.Setting(containerEl).setName(`Auto ${commitOrBackup} after latest commit`).setDesc( - `If turned on, set last auto ${commitOrBackup} time to latest commit` - ).addToggle( - (toggle) => toggle.setValue(plugin.settings.setLastSaveToLastCommit).onChange(async (value) => { - plugin.settings.setLastSaveToLastCommit = value; - plugin.saveSettings(); - this.display(); - plugin.clearAutoBackup(); - await plugin.setUpAutoBackup(); - }) - ); - if (plugin.settings.differentIntervalCommitAndPush) { - new import_obsidian8.Setting(containerEl).setName(`Vault push interval (minutes)`).setDesc( - "Push changes every X minutes. Set to 0 (default) to disable." - ).addText( - (text2) => text2.setValue(String(plugin.settings.autoPushInterval)).onChange((value) => { - if (!isNaN(Number(value))) { - plugin.settings.autoPushInterval = Number(value); - plugin.saveSettings(); - if (plugin.settings.autoPushInterval > 0) { - plugin.clearAutoPush(); - plugin.startAutoPush( - plugin.settings.autoPushInterval - ); - new import_obsidian8.Notice( - `Automatic push enabled! Every ${formatMinutes( - plugin.settings.autoPushInterval - )}.` - ); - } else if (plugin.settings.autoPushInterval <= 0) { - plugin.clearAutoPush() && new import_obsidian8.Notice( - "Automatic push disabled!" - ); - } - } else { - new import_obsidian8.Notice( - "Please specify a valid number." - ); - } - }) - ); - } - new import_obsidian8.Setting(containerEl).setName("Auto pull interval (minutes)").setDesc( - "Pull changes every X minutes. Set to 0 (default) to disable." - ).addText( - (text2) => text2.setValue(String(plugin.settings.autoPullInterval)).onChange((value) => { - if (!isNaN(Number(value))) { - plugin.settings.autoPullInterval = Number(value); - plugin.saveSettings(); - if (plugin.settings.autoPullInterval > 0) { - plugin.clearAutoPull(); - plugin.startAutoPull( - plugin.settings.autoPullInterval - ); - new import_obsidian8.Notice( - `Automatic pull enabled! Every ${formatMinutes( - plugin.settings.autoPullInterval - )}.` - ); - } else if (plugin.settings.autoPullInterval <= 0) { - plugin.clearAutoPull() && new import_obsidian8.Notice("Automatic pull disabled!"); - } - } else { - new import_obsidian8.Notice("Please specify a valid number."); - } - }) - ); - new import_obsidian8.Setting(containerEl).setName("Specify custom commit message on auto backup").setDesc("You will get a pop up to specify your message").addToggle( - (toggle) => toggle.setValue(plugin.settings.customMessageOnAutoBackup).onChange((value) => { - plugin.settings.customMessageOnAutoBackup = value; - plugin.saveSettings(); - }) - ); - new import_obsidian8.Setting(containerEl).setName("Commit message on auto backup/commit").setDesc( - "Available placeholders: {{date}} (see below), {{hostname}} (see below), {{numFiles}} (number of changed files in the commit) and {{files}} (changed files in commit message)" - ).addTextArea( - (text2) => text2.setPlaceholder("vault backup: {{date}}").setValue(plugin.settings.autoCommitMessage).onChange((value) => { - plugin.settings.autoCommitMessage = value; - plugin.saveSettings(); - }) - ); - containerEl.createEl("br"); - containerEl.createEl("h3", { text: "Commit message" }); - new import_obsidian8.Setting(containerEl).setName("Commit message on manual backup/commit").setDesc( - "Available placeholders: {{date}} (see below), {{hostname}} (see below), {{numFiles}} (number of changed files in the commit) and {{files}} (changed files in commit message)" - ).addTextArea( - (text2) => text2.setPlaceholder("vault backup: {{date}}").setValue( - plugin.settings.commitMessage ? plugin.settings.commitMessage : "" - ).onChange((value) => { - plugin.settings.commitMessage = value; - plugin.saveSettings(); - }) - ); - const datePlaceholderSetting = new import_obsidian8.Setting(containerEl).setName("{{date}} placeholder format").addText( - (text2) => text2.setPlaceholder(plugin.settings.commitDateFormat).setValue(plugin.settings.commitDateFormat).onChange(async (value) => { - plugin.settings.commitDateFormat = value; - await plugin.saveSettings(); - }) - ); - datePlaceholderSetting.descEl.innerHTML = ` - Specify custom date format. E.g. "${DATE_TIME_FORMAT_SECONDS}. See Moment.js for more formats.`; - new import_obsidian8.Setting(containerEl).setName("{{hostname}} placeholder replacement").setDesc("Specify custom hostname for every device.").addText( - (text2) => { - var _a2; - return text2.setValue((_a2 = plugin.localStorage.getHostname()) != null ? _a2 : "").onChange(async (value) => { - plugin.localStorage.setHostname(value); - }); - } - ); - new import_obsidian8.Setting(containerEl).setName("Preview commit message").addButton( - (button) => button.setButtonText("Preview").onClick(async () => { - const commitMessagePreview = await plugin.gitManager.formatCommitMessage( - plugin.settings.commitMessage - ); - new import_obsidian8.Notice(`${commitMessagePreview}`); - }) - ); - new import_obsidian8.Setting(containerEl).setName("List filenames affected by commit in the commit body").addToggle( - (toggle) => toggle.setValue(plugin.settings.listChangedFilesInMessageBody).onChange((value) => { - plugin.settings.listChangedFilesInMessageBody = value; - plugin.saveSettings(); - }) - ); - containerEl.createEl("br"); - containerEl.createEl("h3", { text: "Backup" }); - if (plugin.gitManager instanceof SimpleGit) - new import_obsidian8.Setting(containerEl).setName("Sync Method").setDesc( - "Selects the method used for handling new changes found in your remote git repository." - ).addDropdown((dropdown) => { - const options = { - merge: "Merge", - rebase: "Rebase", - reset: "Other sync service (Only updates the HEAD without touching the working directory)" - }; - dropdown.addOptions(options); - dropdown.setValue(plugin.settings.syncMethod); - dropdown.onChange(async (option) => { - plugin.settings.syncMethod = option; - plugin.saveSettings(); - }); - }); - new import_obsidian8.Setting(containerEl).setName("Pull updates on startup").setDesc("Automatically pull updates when Obsidian starts").addToggle( - (toggle) => toggle.setValue(plugin.settings.autoPullOnBoot).onChange((value) => { - plugin.settings.autoPullOnBoot = value; - plugin.saveSettings(); - }) - ); - new import_obsidian8.Setting(containerEl).setName("Push on backup").setDesc("Disable to only commit changes").addToggle( - (toggle) => toggle.setValue(!plugin.settings.disablePush).onChange((value) => { - plugin.settings.disablePush = !value; - plugin.saveSettings(); - }) - ); - new import_obsidian8.Setting(containerEl).setName("Pull changes before push").setDesc("Commit -> pull -> push (Only if pushing is enabled)").addToggle( - (toggle) => toggle.setValue(plugin.settings.pullBeforePush).onChange((value) => { - plugin.settings.pullBeforePush = value; - plugin.saveSettings(); - }) - ); - if (plugin.gitManager instanceof SimpleGit) { - containerEl.createEl("br"); - containerEl.createEl("h3", { text: "Line author information" }); - this.addLineAuthorInfoSettings(); - } - } - containerEl.createEl("br"); - containerEl.createEl("h3", { text: "History View" }); - new import_obsidian8.Setting(containerEl).setName("Show Author").setDesc("Show the author of the commit in the history view").addDropdown((dropdown) => { - const options = { - hide: "Hide", - full: "Full", - initials: "Initials" - }; - dropdown.addOptions(options); - dropdown.setValue(plugin.settings.authorInHistoryView); - dropdown.onChange(async (option) => { - plugin.settings.authorInHistoryView = option; - plugin.saveSettings(); - plugin.refresh(); - }); - }); - new import_obsidian8.Setting(containerEl).setName("Show Date").setDesc( - "Show the date of the commit in the history view. The {{date}} placeholder format is used to display the date." - ).addToggle( - (toggle) => toggle.setValue(plugin.settings.dateInHistoryView).onChange((value) => { - plugin.settings.dateInHistoryView = value; - plugin.saveSettings(); - plugin.refresh(); - }) - ); - containerEl.createEl("br"); - containerEl.createEl("h3", { text: "Source Control View" }); - new import_obsidian8.Setting(containerEl).setName( - "Automatically refresh Source Control View on file changes" - ).setDesc( - "On slower machines this may cause lags. If so, just disable this option" - ).addToggle( - (toggle) => toggle.setValue(plugin.settings.refreshSourceControl).onChange((value) => { - plugin.settings.refreshSourceControl = value; - plugin.saveSettings(); - }) - ); - new import_obsidian8.Setting(containerEl).setName("Source Control View refresh interval").setDesc( - "Milliseconds to wait after file change before refreshing the Source Control View" - ).addText( - (toggle) => toggle.setValue( - plugin.settings.refreshSourceControlTimer.toString() - ).setPlaceholder("7000").onChange((value) => { - plugin.settings.refreshSourceControlTimer = Math.max( - parseInt(value), - 500 - ); - plugin.saveSettings(); - plugin.setRefreshDebouncer(); - }) - ); - containerEl.createEl("br"); - containerEl.createEl("h3", { text: "Miscellaneous" }); - new import_obsidian8.Setting(containerEl).setName("Disable notifications").setDesc( - "Disable notifications for git operations to minimize distraction (refer to status bar for updates). Errors are still shown as notifications even if you enable this setting" - ).addToggle( - (toggle) => toggle.setValue(plugin.settings.disablePopups).onChange((value) => { - plugin.settings.disablePopups = value; - this.display(); - plugin.saveSettings(); - }) - ); - if (!plugin.settings.disablePopups) - new import_obsidian8.Setting(containerEl).setName("Hide notifications for no changes").setDesc( - "Don't show notifications when there are no changes to commit/push" - ).addToggle( - (toggle) => toggle.setValue(plugin.settings.disablePopupsForNoChanges).onChange((value) => { - plugin.settings.disablePopupsForNoChanges = value; - plugin.saveSettings(); - }) - ); - new import_obsidian8.Setting(containerEl).setName("Show status bar").setDesc( - "Obsidian must be restarted for the changes to take affect" - ).addToggle( - (toggle) => toggle.setValue(plugin.settings.showStatusBar).onChange((value) => { - plugin.settings.showStatusBar = value; - plugin.saveSettings(); - }) - ); - new import_obsidian8.Setting(containerEl).setName("Show stage/unstage button in file menu").addToggle( - (toggle) => toggle.setValue(plugin.settings.showFileMenu).onChange((value) => { - plugin.settings.showFileMenu = value; - plugin.saveSettings(); - }) - ); - new import_obsidian8.Setting(containerEl).setName("Show branch status bar").setDesc( - "Obsidian must be restarted for the changes to take affect" - ).addToggle( - (toggle) => toggle.setValue(plugin.settings.showBranchStatusBar).onChange((value) => { - plugin.settings.showBranchStatusBar = value; - plugin.saveSettings(); - }) - ); - new import_obsidian8.Setting(containerEl).setName("Show the count of modified files in the status bar").addToggle( - (toggle) => toggle.setValue(plugin.settings.changedFilesInStatusBar).onChange((value) => { - plugin.settings.changedFilesInStatusBar = value; - plugin.saveSettings(); - }) - ); - containerEl.createEl("br"); - if (plugin.gitManager instanceof IsomorphicGit) { - containerEl.createEl("h3", { - text: "Authentication/Commit Author" - }); - } else { - containerEl.createEl("h3", { text: "Commit Author" }); - } - if (plugin.gitManager instanceof IsomorphicGit) - new import_obsidian8.Setting(containerEl).setName( - "Username on your git server. E.g. your username on GitHub" - ).addText((cb) => { - var _a2; - cb.setValue((_a2 = plugin.localStorage.getUsername()) != null ? _a2 : ""); - cb.onChange((value) => { - plugin.localStorage.setUsername(value); - }); - }); - if (plugin.gitManager instanceof IsomorphicGit) - new import_obsidian8.Setting(containerEl).setName("Password/Personal access token").setDesc( - "Type in your password. You won't be able to see it again." - ).addText((cb) => { - cb.inputEl.autocapitalize = "off"; - cb.inputEl.autocomplete = "off"; - cb.inputEl.spellcheck = false; - cb.onChange((value) => { - plugin.localStorage.setPassword(value); - }); - }); - if (plugin.gitReady) - new import_obsidian8.Setting(containerEl).setName("Author name for commit").addText(async (cb) => { - cb.setValue(await plugin.gitManager.getConfig("user.name")); - cb.onChange((value) => { - plugin.gitManager.setConfig( - "user.name", - value == "" ? void 0 : value - ); - }); - }); - if (plugin.gitReady) - new import_obsidian8.Setting(containerEl).setName("Author email for commit").addText(async (cb) => { - cb.setValue( - await plugin.gitManager.getConfig("user.email") - ); - cb.onChange((value) => { - plugin.gitManager.setConfig( - "user.email", - value == "" ? void 0 : value - ); - }); - }); - containerEl.createEl("br"); - containerEl.createEl("h3", { text: "Advanced" }); - if (plugin.gitManager instanceof SimpleGit) { - new import_obsidian8.Setting(containerEl).setName("Update submodules").setDesc( - '"Create backup" and "pull" takes care of submodules. Missing features: Conflicted files, count of pulled/pushed/committed files. Tracking branch needs to be set for each submodule' - ).addToggle( - (toggle) => toggle.setValue(plugin.settings.updateSubmodules).onChange((value) => { - plugin.settings.updateSubmodules = value; - plugin.saveSettings(); - }) - ); - if (plugin.settings.updateSubmodules) { - new import_obsidian8.Setting(containerEl).setName("Submodule recurse checkout/switch").setDesc( - "Whenever a checkout happens on the root repository, recurse the checkout on the submodules (if the branches exist)." - ).addToggle( - (toggle) => toggle.setValue(plugin.settings.submoduleRecurseCheckout).onChange((value) => { - plugin.settings.submoduleRecurseCheckout = value; - plugin.saveSettings(); - }) - ); - } - } - if (plugin.gitManager instanceof SimpleGit) - new import_obsidian8.Setting(containerEl).setName("Custom Git binary path").addText((cb) => { - var _a2; - cb.setValue((_a2 = plugin.localStorage.getGitPath()) != null ? _a2 : ""); - cb.setPlaceholder("git"); - cb.onChange((value) => { - plugin.localStorage.setGitPath(value); - plugin.gitManager.updateGitPath(value || "git"); - }); - }); - if (plugin.gitManager instanceof SimpleGit) - new import_obsidian8.Setting(containerEl).setName("Additional environment variables").setDesc( - "Use each line for a new environment variable in the format KEY=VALUE" - ).addTextArea((cb) => { - cb.setPlaceholder("GIT_DIR=/path/to/git/dir"); - cb.setValue(plugin.localStorage.getEnvVars().join("\n")); - cb.onChange((value) => { - plugin.localStorage.setEnvVars(value.split("\n")); - }); - }); - if (plugin.gitManager instanceof SimpleGit) - new import_obsidian8.Setting(containerEl).setName("Additional PATH environment variable paths").setDesc("Use each line for one path").addTextArea((cb) => { - cb.setValue(plugin.localStorage.getPATHPaths().join("\n")); - cb.onChange((value) => { - plugin.localStorage.setPATHPaths(value.split("\n")); - }); - }); - if (plugin.gitManager instanceof SimpleGit) - new import_obsidian8.Setting(containerEl).setName("Reload with new environment variables").setDesc( - "Removing previously added environment variables will not take effect until Obsidian is restarted." - ).addButton((cb) => { - cb.setButtonText("Reload"); - cb.setCta(); - cb.onClick(() => { - plugin.gitManager.setGitInstance(); - }); - }); - new import_obsidian8.Setting(containerEl).setName("Custom base path (Git repository path)").setDesc( - ` - Sets the relative path to the vault from which the Git binary should be executed. - Mostly used to set the path to the Git repository, which is only required if the Git repository is below the vault root directory. Use "\\" instead of "/" on Windows. - ` - ).addText((cb) => { - cb.setValue(plugin.settings.basePath); - cb.setPlaceholder("directory/directory-with-git-repo"); - cb.onChange((value) => { - plugin.settings.basePath = value; - plugin.saveSettings(); - plugin.gitManager.updateBasePath(value || ""); - }); - }); - new import_obsidian8.Setting(containerEl).setName("Custom Git directory path (Instead of '.git')").setDesc( - `Requires restart of Obsidian to take effect. Use "\\" instead of "/" on Windows.` - ).addText((cb) => { - cb.setValue(plugin.settings.gitDir); - cb.setPlaceholder(".git"); - cb.onChange((value) => { - plugin.settings.gitDir = value; - plugin.saveSettings(); - }); - }); - new import_obsidian8.Setting(containerEl).setName("Disable on this device").setDesc( - "Disables the plugin on this device. This setting is not synced." - ).addToggle( - (toggle) => toggle.setValue(plugin.localStorage.getPluginDisabled()).onChange((value) => { - plugin.localStorage.setPluginDisabled(value); - if (value) { - plugin.unloadPlugin(); - } else { - plugin.loadPlugin(); - } - new import_obsidian8.Notice( - "Obsidian must be restarted for the changes to take affect" - ); - }) - ); - new import_obsidian8.Setting(containerEl).setName("Donate").setDesc( - "If you like this Plugin, consider donating to support continued development." - ).addButton((bt) => { - bt.buttonEl.outerHTML = "Buy Me a Coffee at ko-fi.com"; - }); - const info = containerEl.createDiv(); - info.setAttr("align", "center"); - info.setText( - "Debugging and logging:\nYou can always see the logs of this and every other plugin by opening the console with" - ); - const keys = containerEl.createDiv(); - keys.setAttr("align", "center"); - keys.addClass("obsidian-git-shortcuts"); - if (import_obsidian8.Platform.isMacOS === true) { - keys.createEl("kbd", { text: "CMD (\u2318) + OPTION (\u2325) + I" }); - } else { - keys.createEl("kbd", { text: "CTRL + SHIFT + I" }); - } - } - configureLineAuthorShowStatus(show) { - this.settings.lineAuthor.show = show; - this.plugin.saveSettings(); - if (show) - this.plugin.lineAuthoringFeature.activateFeature(); - else - this.plugin.lineAuthoringFeature.deactivateFeature(); - } - /** - * Persists the setting {@link key} with value {@link value} and - * refreshes the line author info views. - */ - lineAuthorSettingHandler(key2, value) { - this.settings.lineAuthor[key2] = value; - this.plugin.saveSettings(); - this.plugin.lineAuthoringFeature.refreshLineAuthorViews(); - } - /** - * Ensure, that certain last shown values are persisten in the settings. - * - * Necessary for the line author info gutter context menus. - */ - beforeSaveSettings() { - const laSettings = this.settings.lineAuthor; - if (laSettings.authorDisplay !== "hide") { - laSettings.lastShownAuthorDisplay = laSettings.authorDisplay; - } - if (laSettings.dateTimeFormatOptions !== "hide") { - laSettings.lastShownDateTimeFormatOptions = laSettings.dateTimeFormatOptions; - } - } - addLineAuthorInfoSettings() { - const baseLineAuthorInfoSetting = new import_obsidian8.Setting(this.containerEl).setName( - "Show commit authoring information next to each line" - ); - if (!this.plugin.lineAuthoringFeature.isAvailableOnCurrentPlatform()) { - baseLineAuthorInfoSetting.setDesc("Only available on desktop currently.").setDisabled(true); - } - baseLineAuthorInfoSetting.descEl.innerHTML = ` - Feature guide and quick examples
- The commit hash, author name and authoring date can all be individually toggled.
Hide everything, to only show the age-colored sidebar.`; - baseLineAuthorInfoSetting.addToggle( - (toggle) => toggle.setValue(this.settings.lineAuthor.show).onChange((value) => { - this.configureLineAuthorShowStatus(value); - this.display(); - }) - ); - if (this.settings.lineAuthor.show) { - const trackMovement = new import_obsidian8.Setting(this.containerEl).setName("Follow movement and copies across files and commits").setDesc("").addDropdown((dropdown) => { - dropdown.addOptions({ - inactive: "Do not follow (default)", - "same-commit": "Follow within same commit", - "all-commits": "Follow within all commits (maybe slow)" - }); - dropdown.setValue(this.settings.lineAuthor.followMovement); - dropdown.onChange( - (value) => this.lineAuthorSettingHandler("followMovement", value) - ); - }); - trackMovement.descEl.innerHTML = ` - By default (deactivated), each line only shows the newest commit where it was changed. -
- With same commit, cut-copy-paste-ing of text is followed within the same commit and the original commit of authoring will be shown. -
- With all commits, cut-copy-paste-ing text inbetween multiple commits will be detected. -
- It uses git-blame and - for matches (at least ${GIT_LINE_AUTHORING_MOVEMENT_DETECTION_MINIMAL_LENGTH} characters) within the same (or all) commit(s), the originating commit's information is shown.`; - new import_obsidian8.Setting(this.containerEl).setName("Show commit hash").addToggle((tgl) => { - tgl.setValue(this.settings.lineAuthor.showCommitHash); - tgl.onChange( - async (value) => this.lineAuthorSettingHandler("showCommitHash", value) - ); - }); - new import_obsidian8.Setting(this.containerEl).setName("Author name display").setDesc("If and how the author is displayed").addDropdown((dropdown) => { - const options = { - hide: "Hide", - initials: "Initials (default)", - "first name": "First name", - "last name": "Last name", - full: "Full name" - }; - dropdown.addOptions(options); - dropdown.setValue(this.settings.lineAuthor.authorDisplay); - dropdown.onChange( - async (value) => this.lineAuthorSettingHandler("authorDisplay", value) - ); - }); - new import_obsidian8.Setting(this.containerEl).setName("Authoring date display").setDesc( - "If and how the date and time of authoring the line is displayed" - ).addDropdown((dropdown) => { - const options = { - hide: "Hide", - date: "Date (default)", - datetime: "Date and time", - "natural language": "Natural language", - custom: "Custom" - }; - dropdown.addOptions(options); - dropdown.setValue( - this.settings.lineAuthor.dateTimeFormatOptions - ); - dropdown.onChange( - async (value) => { - this.lineAuthorSettingHandler( - "dateTimeFormatOptions", - value - ); - this.display(); - } - ); - }); - if (this.settings.lineAuthor.dateTimeFormatOptions === "custom") { - const dateTimeFormatCustomStringSetting = new import_obsidian8.Setting( - this.containerEl - ); - dateTimeFormatCustomStringSetting.setName("Custom authoring date format").addText((cb) => { - cb.setValue( - this.settings.lineAuthor.dateTimeFormatCustomString - ); - cb.setPlaceholder("YYYY-MM-DD HH:mm"); - cb.onChange((value) => { - this.lineAuthorSettingHandler( - "dateTimeFormatCustomString", - value - ); - dateTimeFormatCustomStringSetting.descEl.innerHTML = this.previewCustomDateTimeDescriptionHtml( - value - ); - }); - }); - dateTimeFormatCustomStringSetting.descEl.innerHTML = this.previewCustomDateTimeDescriptionHtml( - this.settings.lineAuthor.dateTimeFormatCustomString - ); - } - new import_obsidian8.Setting(this.containerEl).setName("Authoring date display timezone").addDropdown((dropdown) => { - const options = { - "viewer-local": "My local (default)", - "author-local": "Author's local", - utc0000: "UTC+0000/Z" - }; - dropdown.addOptions(options); - dropdown.setValue( - this.settings.lineAuthor.dateTimeTimezone - ); - dropdown.onChange( - async (value) => this.lineAuthorSettingHandler("dateTimeTimezone", value) - ); - }).descEl.innerHTML = ` - The time-zone in which the authoring date should be shown. - Either your local time-zone (default), - the author's time-zone during commit creation or - UTC\xB100:00. - `; - const oldestAgeSetting = new import_obsidian8.Setting(this.containerEl).setName( - "Oldest age in coloring" - ); - oldestAgeSetting.descEl.innerHTML = this.previewOldestAgeDescriptionHtml( - this.settings.lineAuthor.coloringMaxAge - )[0]; - oldestAgeSetting.addText((text2) => { - text2.setPlaceholder("1y"); - text2.setValue(this.settings.lineAuthor.coloringMaxAge); - text2.onChange((value) => { - const [preview, valid] = this.previewOldestAgeDescriptionHtml(value); - oldestAgeSetting.descEl.innerHTML = preview; - if (valid) { - this.lineAuthorSettingHandler("coloringMaxAge", value); - this.refreshColorSettingsName("oldest"); - } - }); - }); - this.createColorSetting("newest"); - this.createColorSetting("oldest"); - new import_obsidian8.Setting(this.containerEl).setName("Text color").addText((field) => { - field.setValue(this.settings.lineAuthor.textColorCss); - field.onChange((value) => { - this.lineAuthorSettingHandler("textColorCss", value); - }); - }).descEl.innerHTML = ` - The CSS color of the gutter text.
- - It is higly recommended to use - - CSS variables - defined by themes - (e.g.
var(--text-muted)
or -
var(--text-on-accent)
, - because they automatically adapt to theme changes.
- - See: - List of available CSS variables in Obsidian - - `; - new import_obsidian8.Setting(this.containerEl).setName("Ignore whitespace and newlines in changes").addToggle((tgl) => { - tgl.setValue(this.settings.lineAuthor.ignoreWhitespace); - tgl.onChange( - (value) => this.lineAuthorSettingHandler("ignoreWhitespace", value) - ); - }).descEl.innerHTML = ` - Whitespace and newlines are interpreted as - part of the document and in changes - by default (hence not ignored). - This makes the last line being shown as 'changed' - when a new subsequent line is added, - even if the previously last line's text is the same. -
- If you don't care about purely-whitespace changes - (e.g. list nesting / quote indentation changes), - then activating this will provide more meaningful change detection. - `; - } - } - createColorSetting(which) { - const setting = new import_obsidian8.Setting(this.containerEl).setName("").addText((text2) => { - const color = pickColor(which, this.settings.lineAuthor); - const defaultColor = pickColor( - which, - DEFAULT_SETTINGS.lineAuthor - ); - text2.setPlaceholder(rgbToString(defaultColor)); - text2.setValue(rgbToString(color)); - text2.onChange((colorNew) => { - const rgb = convertToRgb(colorNew); - if (rgb !== void 0) { - const key2 = which === "newest" ? "colorNew" : "colorOld"; - this.lineAuthorSettingHandler(key2, rgb); - } - this.refreshColorSettingsDesc(which, rgb); - }); - }); - this.lineAuthorColorSettings.set(which, setting); - this.refreshColorSettingsName(which); - this.refreshColorSettingsDesc( - which, - pickColor(which, this.settings.lineAuthor) - ); - } - refreshColorSettingsName(which) { - const settingsDom = this.lineAuthorColorSettings.get(which); - if (settingsDom) { - const whichDescriber = which === "oldest" ? `oldest (${this.settings.lineAuthor.coloringMaxAge} or older)` : "newest"; - settingsDom.nameEl.innerText = `Color for ${whichDescriber} commits`; - } - } - refreshColorSettingsDesc(which, rgb) { - const settingsDom = this.lineAuthorColorSettings.get(which); - if (settingsDom) { - settingsDom.descEl.innerHTML = this.colorSettingPreviewDescHtml( - which, - this.settings.lineAuthor, - rgb !== void 0 - ); - } - } - colorSettingPreviewDescHtml(which, laSettings, colorIsValid) { - const rgbStr = colorIsValid ? previewColor(which, laSettings) : `rgba(127,127,127,0.3)`; - const today = import_obsidian8.moment.unix(import_obsidian8.moment.now() / 1e3).format("YYYY-MM-DD"); - const text2 = colorIsValid ? `abcdef Author Name ${today}` : "invalid color"; - const preview = `
${text2}
`; - return `Supports 'rgb(r,g,b)', 'hsl(h,s,l)', hex (#) and - named colors (e.g. 'black', 'purple'). Color preview: ${preview}`; - } - previewCustomDateTimeDescriptionHtml(dateTimeFormatCustomString) { - const formattedDateTime = (0, import_obsidian8.moment)().format(dateTimeFormatCustomString); - return `
Format string to display the authoring date.
Currently: ${formattedDateTime}`; - } - previewOldestAgeDescriptionHtml(coloringMaxAge) { - const duration = parseColoringMaxAgeDuration(coloringMaxAge); - const durationString = duration !== void 0 ? `${duration.asDays()} days` : "invalid!"; - return [ - `The oldest age in the line author coloring. Everything older will have the same color. -
Smallest valid age is "1d". Currently: ${durationString}`, - duration - ]; - } -}; -function pickColor(which, las) { - return which === "oldest" ? las.colorOld : las.colorNew; -} -function parseColoringMaxAgeDuration(durationString) { - const duration = import_obsidian8.moment.duration("P" + durationString.toUpperCase()); - return duration.isValid() && duration.asDays() && duration.asDays() >= 1 ? duration : void 0; -} - -// src/lineAuthor/model.ts -function lineAuthoringId(head, objHash, path2) { - if (head === void 0 || objHash === void 0 || path2 === void 0) { - return void 0; - } - return `head${head}-obj${objHash}-path${path2}`; -} -var LineAuthoringContainerType = import_state.Annotation.define(); -function newComputationResultAsTransaction(key2, la, state) { - return state.update({ - annotations: LineAuthoringContainerType.of({ - key: key2, - la, - lineOffsetsFromUnsavedChanges: /* @__PURE__ */ new Map() - }) - }); -} -function getLineAuthorAnnotation(tr) { - return tr.annotation(LineAuthoringContainerType); -} -var lineAuthorState = import_state.StateField.define({ - create: (_state) => void 0, - /** - * The state can be updated from either an annotated transaction containing - * the newest line authoring (for the saved document) - or from - * unsaved changes of the document as the user is actively typing in the editor. - * - * In the first case, we take the new line authoring and discard anything we had remembered - * from unsaved changes. In the second case, we use the unsaved changes in {@link enrichUnsavedChanges} to pre-compute information to immediately update the - * line author gutter without needing to wait until the document is saved and the - * line authoring is properly computed. - */ - update: (previous, transaction) => { - var _a2; - return (_a2 = getLineAuthorAnnotation(transaction)) != null ? _a2 : enrichUnsavedChanges(transaction, previous); - }, - // compare cache keys. - // equality rate is >= 95% :) - // hence avoids recomputation of views - compare: (l, r) => (l == null ? void 0 : l.key) === (r == null ? void 0 : r.key) -}); -function laStateDigest(laState) { - var _a2; - const digest = import_js_sha256.sha256.create(); - if (!laState) - return digest; - const { la, key: key2, lineOffsetsFromUnsavedChanges } = laState; - digest.update(la === "untracked" ? "t" : "f"); - digest.update(key2); - for (const [k, v] of (_a2 = lineOffsetsFromUnsavedChanges.entries()) != null ? _a2 : []) - digest.update([k, v]); - return digest; -} -var latestSettings = { - get: void 0, - save: void 0 -}; -function provideSettingsAccess(settingsGetter, settingsSetter) { - latestSettings.get = settingsGetter; - latestSettings.save = settingsSetter; -} -function maxAgeInDaysFromSettings(settings) { - var _a2, _b; - return (_b = (_a2 = parseColoringMaxAgeDuration(settings.coloringMaxAge)) == null ? void 0 : _a2.asDays()) != null ? _b : parseColoringMaxAgeDuration( - DEFAULT_SETTINGS.lineAuthor.coloringMaxAge - ).asDays(); -} -function enrichUnsavedChanges(tr, prev) { - if (!prev) - return void 0; - if (!tr.changes.empty) { - tr.changes.iterChanges((fromA, toA, fromB, toB) => { - var _a2; - const oldDoc = tr.startState.doc; - const { newDoc } = tr; - const beforeFrom = oldDoc.lineAt(fromA).number; - const beforeTo = oldDoc.lineAt(toA).number; - const afterFrom = newDoc.lineAt(fromB).number; - const afterTo = newDoc.lineAt(toB).number; - const beforeLen = beforeTo - beforeFrom + 1; - const afterLen = afterTo - afterFrom + 1; - for (let afterI = afterFrom; afterI <= afterTo; afterI++) { - let offset = (_a2 = prev.lineOffsetsFromUnsavedChanges.get(afterI)) != null ? _a2 : 0; - const isLastLine = afterTo === afterI; - const changeInNumberOfLines = afterLen - beforeLen; - if (isLastLine) - offset += changeInNumberOfLines; - prev.lineOffsetsFromUnsavedChanges.set(afterI, offset); - } - }); - } - return prev; -} - -// src/lineAuthor/control.ts -var LineAuthoringSubscriber = class { - // remember path to detect and adapt to renames - constructor(state) { - this.state = state; - this.subscribeMe(); - } - async notifyLineAuthoring(id, la) { - if (this.view === void 0) { - console.warn( - `Git: View is not defined for editor cache key. Unforeseen situation. id: ${id}` - ); - return; - } - const state = this.view.state; - const transaction = newComputationResultAsTransaction(id, la, state); - this.view.dispatch(transaction); - } - updateToNewState(state) { - const filepathChanged = this.lastSeenPath && this.filepath != this.lastSeenPath; - this.state = state; - if (filepathChanged) { - this.unsubscribeMe(this.lastSeenPath); - this.subscribeMe(); - } - return this; - } - removeIfStale() { - if (this.view.destroyed) { - this.unsubscribeMe(this.lastSeenPath); - } - } - subscribeMe() { - if (this.filepath === void 0) - return; - eventsPerFilePathSingleton.ifFilepathDefinedTransformSubscribers( - this.filepath, - (subs) => subs.add(this) - ); - this.lastSeenPath = this.filepath; - } - unsubscribeMe(oldFilepath) { - eventsPerFilePathSingleton.ifFilepathDefinedTransformSubscribers( - oldFilepath, - (subs) => subs.delete(this) - ); - } - get filepath() { - var _a2, _b; - return (_b = (_a2 = this.state.field(import_obsidian9.editorViewField)) == null ? void 0 : _a2.file) == null ? void 0 : _b.path; - } - get view() { - return this.state.field(import_obsidian9.editorEditorField); - } -}; -var subscribeNewEditor = import_state2.StateField.define({ - create: (state) => new LineAuthoringSubscriber(state), - update: (v, transaction) => v.updateToNewState(transaction.state), - compare: (a, b) => a === b -}); - -// src/lineAuthor/view/cache.ts -init_polyfill_buffer(); -function clearViewCache() { - longestRenderedGutter = void 0; - renderedAgeInDaysForAdaptiveInitialColoring = []; - ageIdx = 0; - gutterInstances.clear(); - gutterMarkersRangeSet.clear(); - attachedGutterElements.clear(); -} -var longestRenderedGutter = void 0; -var getLongestRenderedGutter = () => longestRenderedGutter; -function conditionallyUpdateLongestRenderedGutter(gutter2, text2) { - var _a2; - const length = text2.length; - if (length < ((_a2 = longestRenderedGutter == null ? void 0 : longestRenderedGutter.length) != null ? _a2 : 0)) - return; - longestRenderedGutter = { gutter: gutter2, length, text: text2 }; - const settings = latestSettings.get(); - if (length !== settings.gutterSpacingFallbackLength) { - settings.gutterSpacingFallbackLength = length; - latestSettings.save(settings); - } -} -var renderedAgeInDaysForAdaptiveInitialColoring = []; -var ADAPTIVE_INITIAL_COLORING_AGE_CACHE_SIZE = 15; -var ageIdx = 0; -function recordRenderedAgeInDays(age) { - renderedAgeInDaysForAdaptiveInitialColoring[ageIdx] = age; - ageIdx = (ageIdx + 1) % ADAPTIVE_INITIAL_COLORING_AGE_CACHE_SIZE; -} -function computeAdaptiveInitialColoringAgeInDays() { - return median(renderedAgeInDaysForAdaptiveInitialColoring); -} -var gutterInstances = /* @__PURE__ */ new Map(); -var gutterMarkersRangeSet = /* @__PURE__ */ new Map(); -var attachedGutterElements = /* @__PURE__ */ new Set(); - -// src/lineAuthor/view/view.ts -init_polyfill_buffer(); -var import_state3 = require("@codemirror/state"); -var import_view2 = require("@codemirror/view"); - -// src/lineAuthor/view/gutter/gutter.ts -init_polyfill_buffer(); -var import_view = require("@codemirror/view"); -var import_js_sha2562 = __toESM(require_sha256()); -var import_obsidian10 = require("obsidian"); - -// src/lineAuthor/view/contextMenu.ts -init_polyfill_buffer(); - -// src/lineAuthor/view/gutter/gutterElementSearch.ts -init_polyfill_buffer(); -var mouseXY = { x: -10, y: -10 }; -function prepareGutterSearchForContextMenuHandling() { - if (mouseXY.x === -10) { - window.addEventListener("mousedown", (e) => { - mouseXY.x = e.clientX; - mouseXY.y = e.clientY; - }); - } -} -function findGutterElementUnderMouse() { - for (const elt of attachedGutterElements) { - if (contains(elt, mouseXY)) - return elt; - } -} -function contains(elt, pt) { - const { x, y, width, height } = elt.getBoundingClientRect(); - return x <= pt.x && pt.x <= x + width && y <= pt.y && pt.y <= y + height; -} - -// src/pluginGlobalRef.ts -init_polyfill_buffer(); -var pluginRef = {}; - -// src/lineAuthor/view/contextMenu.ts -var COMMIT_ATTR = "data-commit"; -function handleContextMenu(menu, editor, _mdv) { - if (editor.hasFocus()) - return; - const gutterElement = findGutterElementUnderMouse(); - if (!gutterElement) - return; - const info = getCommitInfo(gutterElement); - if (!info) - return; - if (!info.isZeroCommit && !info.isWaitingGutter) { - addCopyHashMenuItem(info, menu); - } - addConfigurableLineAuthorSettings("showCommitHash", menu); - addConfigurableLineAuthorSettings("authorDisplay", menu); - addConfigurableLineAuthorSettings("dateTimeFormatOptions", menu); -} -function addCopyHashMenuItem(commit2, menu) { - menu.addItem( - (item) => item.setTitle("Copy commit hash").setIcon("copy").setSection("obs-git-line-author-copy").onClick((_e) => navigator.clipboard.writeText(commit2.hash)) - ); -} -function addConfigurableLineAuthorSettings(key2, menu) { - var _a2, _b; - let title; - let actionNewValue; - const settings = pluginRef.plugin.settings.lineAuthor; - const currentValue = settings[key2]; - const currentlyShown = typeof currentValue === "boolean" ? currentValue : currentValue !== "hide"; - const defaultValue = DEFAULT_SETTINGS.lineAuthor[key2]; - if (key2 === "showCommitHash") { - title = "Show commit hash"; - actionNewValue = !currentValue; - } else if (key2 === "authorDisplay") { - const showOption = (_a2 = settings.lastShownAuthorDisplay) != null ? _a2 : defaultValue; - title = "Show author " + (currentlyShown ? currentValue : showOption); - actionNewValue = currentlyShown ? "hide" : showOption; - } else if (key2 === "dateTimeFormatOptions") { - const showOption = (_b = settings.lastShownDateTimeFormatOptions) != null ? _b : defaultValue; - title = "Show " + (currentlyShown ? currentValue : showOption); - title += !title.contains("date") ? " date" : ""; - actionNewValue = currentlyShown ? "hide" : showOption; - } else { - impossibleBranch(key2); - } - menu.addItem( - (item) => item.setTitle(title).setSection("obs-git-line-author-configure").setChecked(currentlyShown).onClick( - (_e) => { - var _a3, _b2; - return (_b2 = (_a3 = pluginRef.plugin) == null ? void 0 : _a3.settingsTab) == null ? void 0 : _b2.lineAuthorSettingHandler( - key2, - actionNewValue - ); - } - ) - ); -} -function enrichCommitInfoForContextMenu(commit2, isWaitingGutter, elt) { - elt.setAttr( - COMMIT_ATTR, - JSON.stringify({ - hash: commit2.hash, - isZeroCommit: commit2.isZeroCommit, - isWaitingGutter - }) - ); -} -function getCommitInfo(elt) { - const commitInfoStr = elt.getAttr(COMMIT_ATTR); - return commitInfoStr ? JSON.parse(commitInfoStr) : void 0; -} - -// src/lineAuthor/view/gutter/coloring.ts -init_polyfill_buffer(); -function previewColor(which, settings) { - return which === "oldest" ? coloringBasedOnCommitAge(0, false, settings).color : coloringBasedOnCommitAge(void 0, true, settings).color; -} -function coloringBasedOnCommitAge(commitAuthorEpochSeonds, isZeroCommit, settings) { - const maxAgeInDays = maxAgeInDaysFromSettings(settings); - const epochSecondsNow = Date.now() / 1e3; - const authoringEpochSeconds = commitAuthorEpochSeonds != null ? commitAuthorEpochSeonds : 0; - const secondsSinceCommit = isZeroCommit ? 0 : epochSecondsNow - authoringEpochSeconds; - const daysSinceCommit = secondsSinceCommit / 60 / 60 / 24; - const x = Math.pow( - Math.clamp(daysSinceCommit / maxAgeInDays, 0, 1), - 1 / 2.3 - ); - const dark = isDarkMode(); - const color0 = settings.colorNew; - const color1 = settings.colorOld; - const scaling = dark ? 0.4 : 1; - const r = lin(color0.r, color1.r, x) * scaling; - const g = lin(color0.g, color1.g, x) * scaling; - const b = lin(color0.b, color1.b, x) * scaling; - const a = dark ? 0.75 : 0.25; - return { color: `rgba(${r},${g},${b},${a})`, daysSinceCommit }; -} -function lin(z0, z1, x) { - return z0 + (z1 - z0) * x; -} -function isDarkMode() { - const obsidian = window == null ? void 0 : window.app; - return (obsidian == null ? void 0 : obsidian.getTheme()) === "obsidian"; -} -function setTextColorCssBasedOnSetting(settings) { - document.body.style.setProperty( - "--obs-git-gutter-text", - settings.textColorCss - ); -} - -// src/lineAuthor/view/gutter/commitChoice.ts -init_polyfill_buffer(); -function chooseNewestCommit(lineAuthoring, startLine, endLine) { - let newest = void 0; - for (let line = startLine; line <= endLine; line++) { - const currentHash = lineAuthoring.hashPerLine[line]; - const currentCommit = lineAuthoring.commits.get(currentHash); - if (!newest || currentCommit.isZeroCommit || isNewerThan(currentCommit, newest)) { - newest = currentCommit; - } - } - return newest; -} -function isNewerThan(left, right) { - var _a2, _b, _c, _d; - const l = (_b = (_a2 = left.author) == null ? void 0 : _a2.epochSeconds) != null ? _b : 0; - const r = (_d = (_c = right.author) == null ? void 0 : _c.epochSeconds) != null ? _d : 0; - return l > r; -} - -// src/lineAuthor/view/gutter/gutter.ts -var VALUE_NOT_FOUND_FALLBACK = "-"; -var NEW_CHANGE_CHARACTER = "+"; -var NEW_CHANGE_NUMBER_OF_CHARACTERS = 3; -var DIFFERING_AUTHOR_COMMITTER_MARKER = "*"; -var NON_WHITESPACE_REGEXP = /\S/g; -var UNINTRUSIVE_CHARACTER_FOR_WAITING_RENDERING = "%"; -var TextGutter = class extends import_view.GutterMarker { - constructor(text2) { - super(); - this.text = text2; - } - eq(other) { - return this.text === (other == null ? void 0 : other.text); - } - toDOM() { - return document.createTextNode(this.text); - } - destroy(dom) { - if (!document.body.contains(dom)) - dom.remove(); - } -}; -var LineAuthoringGutter = class extends import_view.GutterMarker { - /** - * **This should only be called {@link lineAuthoringGutterMarker}!** - * - * We want to avoid creating the same instance multiple times for improved performance. - */ - constructor(lineAuthoring, startLine, endLine, key2, settings, options) { - super(); - this.lineAuthoring = lineAuthoring; - this.startLine = startLine; - this.endLine = endLine; - this.key = key2; - this.settings = settings; - this.options = options; - this.point = false; - this.elementClass = "obs-git-blame-gutter"; - } - // Equality used by CodeMirror for optimisations - eq(other) { - return this.key === (other == null ? void 0 : other.key) && this.startLine === (other == null ? void 0 : other.startLine) && this.endLine === (other == null ? void 0 : other.endLine) && (this == null ? void 0 : this.options) === (other == null ? void 0 : other.options); - } - /** - * Renders to a Html node. - * - * It choses the newest commit within the line-range, - * renders it, makes adjustments for fake-commits and finally warps - * it into HTML. - * - * The DOM is actually precomputed with {@link computeDom}, - * which provides a finaliser to run before the DOM is handed over to CodeMirror. - * This is done, because this method is called frequently. It is called, - * whenever a gutter gets into the viewport and needs to be rendered. - * - * The age in days is recorded via {@link recordRenderedAgeInDays} to enable adaptive coloring. - */ - toDOM() { - var _a2; - this.precomputedDomProvider = (_a2 = this.precomputedDomProvider) != null ? _a2 : this.computeDom(); - return this.precomputedDomProvider(); - } - destroy(dom) { - if (!document.body.contains(dom)) { - dom.remove(); - attachedGutterElements.delete(dom); - } - } - /** - * Prepares the DOM for this gutter. - */ - computeDom() { - const commit2 = chooseNewestCommit( - this.lineAuthoring, - this.startLine, - this.endLine - ); - let toBeRenderedText = commit2.isZeroCommit ? "" : this.renderNonZeroCommit(commit2); - const isTrueCommit = !commit2.isZeroCommit && this.options !== "waiting-for-result"; - if (isTrueCommit) { - conditionallyUpdateLongestRenderedGutter(this, toBeRenderedText); - } else { - toBeRenderedText = this.adaptTextForFakeCommit( - commit2, - toBeRenderedText, - this.options - ); - } - const domProvider = this.createHtmlNode( - commit2, - toBeRenderedText, - this.options === "waiting-for-result" - ); - return domProvider; - } - createHtmlNode(commit2, text2, isWaitingGutter) { - var _a2; - const templateElt = window.createDiv(); - templateElt.innerText = text2; - const { color, daysSinceCommit } = coloringBasedOnCommitAge( - (_a2 = commit2 == null ? void 0 : commit2.author) == null ? void 0 : _a2.epochSeconds, - commit2 == null ? void 0 : commit2.isZeroCommit, - this.settings - ); - templateElt.style.backgroundColor = color; - enrichCommitInfoForContextMenu(commit2, isWaitingGutter, templateElt); - function prepareForDomAttachment() { - const elt = templateElt.cloneNode(true); - attachedGutterElements.add(elt); - if (!isWaitingGutter) - recordRenderedAgeInDays(daysSinceCommit); - return elt; - } - return prepareForDomAttachment; - } - renderNonZeroCommit(commit2) { - const optionalShortHash = this.settings.showCommitHash ? this.renderHash(commit2) : ""; - const optionalAuthorName = this.settings.authorDisplay === "hide" ? "" : `${this.renderAuthorName( - commit2, - this.settings.authorDisplay - )}`; - const optionalAuthoringDate = this.settings.dateTimeFormatOptions === "hide" ? "" : `${this.renderAuthoringDate( - commit2, - this.settings.dateTimeFormatOptions, - this.settings.dateTimeFormatCustomString, - this.settings.dateTimeTimezone - )}`; - const parts = [ - optionalShortHash, - optionalAuthorName, - optionalAuthoringDate - ]; - return parts.filter((x) => x.length >= 1).join(" "); - } - renderHash(nonZeroCommit) { - return nonZeroCommit.hash.substring(0, 6); - } - renderAuthorName(nonZeroCommit, authorDisplay) { - var _a2, _b, _c, _d; - const name = (_b = (_a2 = nonZeroCommit == null ? void 0 : nonZeroCommit.author) == null ? void 0 : _a2.name) != null ? _b : ""; - const words = name.split(" ").filter((word) => word.length >= 1); - let rendered; - switch (authorDisplay) { - case "initials": - rendered = words.map((word) => word[0].toUpperCase()).join(""); - break; - case "first name": - rendered = (_c = words.first()) != null ? _c : VALUE_NOT_FOUND_FALLBACK; - break; - case "last name": - rendered = (_d = words.last()) != null ? _d : VALUE_NOT_FOUND_FALLBACK; - break; - case "full": - rendered = name; - break; - default: - return impossibleBranch(authorDisplay); - } - if (!strictDeepEqual(nonZeroCommit == null ? void 0 : nonZeroCommit.author, nonZeroCommit == null ? void 0 : nonZeroCommit.committer)) { - rendered = rendered + DIFFERING_AUTHOR_COMMITTER_MARKER; - } - return rendered; - } - renderAuthoringDate(nonZeroCommit, dateTimeFormatOptions, dateTimeFormatCustomString, dateTimeTimezone) { - var _a2; - const FALLBACK_COMMIT_DATE = "?"; - if (((_a2 = nonZeroCommit == null ? void 0 : nonZeroCommit.author) == null ? void 0 : _a2.epochSeconds) === void 0) - return FALLBACK_COMMIT_DATE; - let dateTimeFormatting; - switch (dateTimeFormatOptions) { - case "date": - dateTimeFormatting = DATE_FORMAT; - break; - case "datetime": - dateTimeFormatting = DATE_TIME_FORMAT_MINUTES; - break; - case "custom": - dateTimeFormatting = dateTimeFormatCustomString; - break; - case "natural language": - dateTimeFormatting = (time) => { - const diff3 = time.diff((0, import_obsidian10.moment)()); - const addFluentSuffix = true; - return import_obsidian10.moment.duration(diff3).humanize(addFluentSuffix); - }; - break; - default: - return impossibleBranch(dateTimeFormatOptions); - } - let authoringDate = import_obsidian10.moment.unix( - nonZeroCommit.author.epochSeconds - ); - switch (dateTimeTimezone) { - case "viewer-local": - break; - case "author-local": - authoringDate = authoringDate.utcOffset( - nonZeroCommit.author.tz - ); - dateTimeFormatting += " Z"; - break; - case "utc0000": - authoringDate = authoringDate.utc(); - dateTimeFormatting += "[Z]"; - break; - default: - return impossibleBranch(dateTimeTimezone); - } - if (typeof dateTimeFormatting === "string") { - return authoringDate.format(dateTimeFormatting); - } else { - return dateTimeFormatting(authoringDate); - } - } - adaptTextForFakeCommit(commit2, toBeRenderedText, options) { - var _a2, _b, _c, _d; - const original = (_b = (_a2 = getLongestRenderedGutter()) == null ? void 0 : _a2.text) != null ? _b : toBeRenderedText; - const fillCharacter = options !== "waiting-for-result" && commit2.isZeroCommit ? NEW_CHANGE_CHARACTER : UNINTRUSIVE_CHARACTER_FOR_WAITING_RENDERING; - toBeRenderedText = original.replace( - NON_WHITESPACE_REGEXP, - fillCharacter - ); - const desiredTextLength = (_d = (_c = latestSettings.get()) == null ? void 0 : _c.gutterSpacingFallbackLength) != null ? _d : toBeRenderedText.length; - toBeRenderedText = resizeToLength( - toBeRenderedText, - desiredTextLength, - fillCharacter - ); - if (options !== "waiting-for-result" && commit2.isZeroCommit) { - const numberOfLastCharactersToKeep = Math.min( - desiredTextLength, - NEW_CHANGE_NUMBER_OF_CHARACTERS - ); - toBeRenderedText = prefixOfLengthAsWhitespace( - toBeRenderedText, - desiredTextLength - numberOfLastCharactersToKeep - ); - } - return toBeRenderedText; - } -}; -function lineAuthoringGutterMarker(la, startLine, endLine, key2, settings, options) { - const digest = import_js_sha2562.sha256.create(); - digest.update(Object.values(settings).join(",")); - digest.update(`s${startLine}-e${endLine}-k${key2}-o${options}`); - const cacheKey = digest.hex(); - const cached = gutterInstances.get(cacheKey); - if (cached) - return cached; - const result = new LineAuthoringGutter( - la, - startLine, - endLine, - key2, - settings, - options - ); - gutterInstances.set(cacheKey, result); - return result; -} - -// src/lineAuthor/view/gutter/initial.ts -init_polyfill_buffer(); -var import_obsidian11 = require("obsidian"); -function initialSpacingGutter() { - var _a2, _b; - const length = (_b = (_a2 = latestSettings.get()) == null ? void 0 : _a2.gutterSpacingFallbackLength) != null ? _b : DEFAULT_SETTINGS.lineAuthor.gutterSpacingFallbackLength; - return new TextGutter(Array(length).fill("-").join("")); -} -function initialLineAuthoringGutter(settings) { - const { lineAuthoring, ageForInitialRender } = adaptiveInitialColoredWaitingLineAuthoring(settings); - return lineAuthoringGutterMarker( - lineAuthoring, - 1, - 1, - "initialGutter" + ageForInitialRender, - // use a age coloring based cache key - settings, - "waiting-for-result" - ); -} -function adaptiveInitialColoredWaitingLineAuthoring(settings) { - var _a2; - const ageForInitialRender = (_a2 = computeAdaptiveInitialColoringAgeInDays()) != null ? _a2 : maxAgeInDaysFromSettings(settings) * 0.25; - const slightlyOlderAgeForInitialRender = (0, import_obsidian11.moment)().add( - -ageForInitialRender, - "days" - ); - const dummyAuthor = { - name: "", - epochSeconds: momentToEpochSeconds(slightlyOlderAgeForInitialRender), - tz: "+0000" - }; - const dummyCommit = { - hash: "waiting-for-result", - author: dummyAuthor, - committer: dummyAuthor, - isZeroCommit: false - }; - return { - lineAuthoring: { - hashPerLine: [void 0, "waiting-for-result"], - commits: /* @__PURE__ */ new Map([["waiting-for-result", dummyCommit]]) - }, - ageForInitialRender - }; -} - -// src/lineAuthor/view/gutter/untrackedFile.ts -init_polyfill_buffer(); -function newUntrackedFileGutter(key2, settings) { - const dummyLineAuthoring = { - hashPerLine: [void 0, "000000"], - commits: /* @__PURE__ */ new Map([["000000", zeroCommit]]) - }; - return lineAuthoringGutterMarker(dummyLineAuthoring, 1, 1, key2, settings); -} - -// src/lineAuthor/view/view.ts -var UNDISPLAYED = new TextGutter(""); -var lineAuthorGutter = (0, import_view2.gutter)({ - class: "line-author-gutter-container", - markers(view) { - const lineAuthoring = view.state.field(lineAuthorState, false); - return lineAuthoringGutterMarkersRangeSet(view, lineAuthoring); - }, - lineMarkerChange(update2) { - const newLineAuthoringId = laStateDigest( - update2.state.field(lineAuthorState) - ); - const oldLineAuthoringId = laStateDigest( - update2.startState.field(lineAuthorState) - ); - return oldLineAuthoringId !== newLineAuthoringId; - }, - renderEmptyElements: true, - initialSpacer: (view) => { - temporaryWorkaroundGutterSpacingForRenderedLineAuthoring(view); - return initialSpacingGutter(); - }, - updateSpacer: (_sp, update2) => { - var _a2, _b; - temporaryWorkaroundGutterSpacingForRenderedLineAuthoring(update2.view); - return (_b = (_a2 = getLongestRenderedGutter()) == null ? void 0 : _a2.gutter) != null ? _b : initialSpacingGutter(); - } -}); -function lineAuthoringGutterMarkersRangeSet(view, optLA) { - const digest = laStateDigest(optLA); - const doc = view.state.doc; - const lineBlockEndPos = /* @__PURE__ */ new Map(); - for (let line = 1; line <= doc.lines; line++) { - const from = doc.line(line).from; - const to = view.lineBlockAt(from).to; - lineBlockEndPos.set(line, [from, to]); - digest.update([from, to, 0]); - } - const laSettings = latestSettings.get(); - digest.update("s" + Object.values(latestSettings).join(",")); - const cacheKey = digest.hex(); - const cached = gutterMarkersRangeSet.get(cacheKey); - if (cached) - return cached; - const { result, allowCache } = computeLineAuthoringGutterMarkersRangeSet( - doc, - lineBlockEndPos, - laSettings, - optLA - ); - if (allowCache) - gutterMarkersRangeSet.set(cacheKey, result); - return result; -} -function computeLineAuthoringGutterMarkersRangeSet(doc, blocksPerLine, settings, optLA) { - let allowCache = true; - const docLastLine = doc.lines; - const ranges = []; - function add2(from, to, gutter2) { - return ranges.push(gutter2.range(from, to)); - } - const lineFrom = computeLineMappingForUnsavedChanges(docLastLine, optLA); - const emptyDoc = doc.length === 0; - const lastLineIsEmpty = doc.iterLines(docLastLine, docLastLine + 1).next().value === ""; - for (let startLine = 1; startLine <= docLastLine; startLine++) { - const [from, to] = blocksPerLine.get(startLine); - const endLine = doc.lineAt(to).number; - if (emptyDoc) { - add2(from, to, UNDISPLAYED); - continue; - } - if (startLine === docLastLine && lastLineIsEmpty) { - add2(from, to, UNDISPLAYED); - continue; - } - if (optLA === void 0) { - add2(from, to, initialLineAuthoringGutter(settings)); - allowCache = false; - continue; - } - const { key: key2, la } = optLA; - if (la === "untracked") { - add2(from, to, newUntrackedFileGutter(la, settings)); - continue; - } - const lastAuthorLine = la.hashPerLine.length - 1; - const laStartLine = lineFrom[startLine]; - const laEndLine = lineFrom[endLine]; - if (laEndLine && laEndLine > lastAuthorLine) { - add2(from, to, UNDISPLAYED); - } - if (laStartLine !== void 0 && between(1, laStartLine, lastAuthorLine) && laEndLine !== void 0 && between(1, laEndLine, lastAuthorLine)) { - add2( - from, - to, - lineAuthoringGutterMarker( - la, - laStartLine, - laEndLine, - key2, - settings - ) - ); - continue; - } - if (lastAuthorLine < 1) { - add2(from, to, initialLineAuthoringGutter(settings)); - allowCache = false; - continue; - } - const start = Math.clamp(laStartLine != null ? laStartLine : startLine, 1, lastAuthorLine); - const end = Math.clamp(laEndLine != null ? laEndLine : endLine, 1, lastAuthorLine); - add2( - from, - to, - lineAuthoringGutterMarker( - la, - start, - end, - key2 + "computing", - settings, - "waiting-for-result" - ) - ); - } - return { result: import_state3.RangeSet.of( - ranges, - /* sort = */ - true - ), allowCache }; -} -function computeLineMappingForUnsavedChanges(docLastLine, optLA) { - if (!(optLA == null ? void 0 : optLA.lineOffsetsFromUnsavedChanges)) { - return Array.from(new Array(docLastLine + 1), (ln) => ln); - } - const lineFrom = [void 0]; - let cumulativeLineOffset = 0; - for (let ln = 1; ln <= docLastLine; ln++) { - const unsavedChanges = optLA.lineOffsetsFromUnsavedChanges.get(ln); - cumulativeLineOffset += unsavedChanges != null ? unsavedChanges : 0; - lineFrom[ln] = unsavedChanges === void 0 ? ln - cumulativeLineOffset : void 0; - } - return lineFrom; -} -function temporaryWorkaroundGutterSpacingForRenderedLineAuthoring(view) { - const guttersContainers = view.dom.querySelectorAll( - ".cm-gutters" - ); - guttersContainers.forEach((cont) => { - if (!(cont == null ? void 0 : cont.style)) - return; - if (!cont.style.marginLeft) { - cont.style.marginLeft = "unset"; - } - }); -} - -// src/lineAuthor/lineAuthorProvider.ts -var LineAuthorProvider = class { - constructor(plugin) { - this.plugin = plugin; - /** - * Saves all computed line authoring results. - * - * See {@link LineAuthoringId} - */ - this.lineAuthorings = /* @__PURE__ */ new Map(); - } - async trackChanged(file) { - this.trackChangedHelper(file).catch((reason) => { - console.warn("Git: Error in trackChanged." + reason); - return Promise.reject(reason); - }); - } - async trackChangedHelper(file) { - if (!file) - return; - if (file.path === void 0) { - console.warn( - "Git: Attempted to track change of undefined filepath. Unforeseen situation." - ); - return; - } - this.computeLineAuthorInfo(file.path); - } - destroy() { - this.lineAuthorings.clear(); - eventsPerFilePathSingleton.clear(); - clearViewCache(); - } - async computeLineAuthorInfo(filepath) { - const gitManager = this.plugin.lineAuthoringFeature.isAvailableOnCurrentPlatform().gitManager; - const headRevision = await gitManager.submoduleAwareHeadRevisonInContainingDirectory( - filepath - ); - const fileHash = await gitManager.hashObject(filepath); - const key2 = lineAuthoringId(headRevision, fileHash, filepath); - if (key2 === void 0) { - return; - } - if (this.lineAuthorings.has(key2)) { - } else { - const gitAuthorResult = await gitManager.blame( - filepath, - this.plugin.settings.lineAuthor.followMovement, - this.plugin.settings.lineAuthor.ignoreWhitespace - ); - this.lineAuthorings.set(key2, gitAuthorResult); - } - this.notifyComputationResultToSubscribers(filepath, key2); - } - notifyComputationResultToSubscribers(filepath, key2) { - eventsPerFilePathSingleton.ifFilepathDefinedTransformSubscribers( - filepath, - async (subs) => subs.forEach( - (sub) => sub.notifyLineAuthoring(key2, this.lineAuthorings.get(key2)) - ) - ); - } -}; -var enabledLineAuthorInfoExtensions = import_state4.Prec.high([ - subscribeNewEditor, - lineAuthorState, - lineAuthorGutter -]); - -// src/lineAuthor/lineAuthorIntegration.ts -var LineAuthoringFeature = class { - constructor(plg) { - this.plg = plg; - this.codeMirrorExtensions = []; - this.handleWorkspaceLeaf = (leaf) => { - const obsView = leaf == null ? void 0 : leaf.view; - const file = obsView == null ? void 0 : obsView.file; - if (!this.lineAuthorInfoProvider) { - console.warn( - "Git: undefined lineAuthorInfoProvider. Unexpected situation." - ); - return; - } - if (file === void 0 || (obsView == null ? void 0 : obsView.allowNoFile) === true) - return; - this.lineAuthorInfoProvider.trackChanged(file); - }; - } - // ========================= INIT and DE-INIT ========================== - onLoadPlugin() { - this.plg.registerEditorExtension(this.codeMirrorExtensions); - provideSettingsAccess( - () => this.plg.settings.lineAuthor, - (laSettings) => { - this.plg.settings.lineAuthor = laSettings; - this.plg.saveSettings(); - } - ); - } - conditionallyActivateBySettings() { - if (this.plg.settings.lineAuthor.show) { - this.activateFeature(); - } - } - activateFeature() { - try { - if (!this.isAvailableOnCurrentPlatform().available) - return; - setTextColorCssBasedOnSetting(this.plg.settings.lineAuthor); - this.lineAuthorInfoProvider = new LineAuthorProvider(this.plg); - this.createEventHandlers(); - this.activateCodeMirrorExtensions(); - console.log(this.plg.manifest.name + ": Enabled line authoring."); - } catch (e) { - console.warn("Git: Error while loading line authoring feature.", e); - this.deactivateFeature(); - } - } - /** - * Deactivates the feature. This function is very defensive, as it is also - * called to cleanup, if a critical error in the line authoring has occurred. - */ - deactivateFeature() { - var _a2; - this.destroyEventHandlers(); - this.deactivateCodeMirrorExtensions(); - (_a2 = this.lineAuthorInfoProvider) == null ? void 0 : _a2.destroy(); - this.lineAuthorInfoProvider = void 0; - console.log(this.plg.manifest.name + ": Disabled line authoring."); - } - isAvailableOnCurrentPlatform() { - return { - available: this.plg.useSimpleGit && import_obsidian12.Platform.isDesktopApp, - gitManager: this.plg.gitManager instanceof SimpleGit ? this.plg.gitManager : void 0 - }; - } - // ========================= REFRESH ========================== - refreshLineAuthorViews() { - if (this.plg.settings.lineAuthor.show) { - this.deactivateFeature(); - this.activateFeature(); - } - } - // ========================= CODEMIRROR EXTENSIONS ========================== - activateCodeMirrorExtensions() { - this.codeMirrorExtensions.push(enabledLineAuthorInfoExtensions); - this.plg.app.workspace.updateOptions(); - this.plg.app.workspace.iterateAllLeaves(this.handleWorkspaceLeaf); - } - deactivateCodeMirrorExtensions() { - for (const ext of this.codeMirrorExtensions) { - this.codeMirrorExtensions.remove(ext); - } - this.plg.app.workspace.updateOptions(); - } - // ========================= HANDLERS ========================== - createEventHandlers() { - this.gutterContextMenuEvent = this.createGutterContextMenuHandler(); - this.fileOpenEvent = this.createFileOpenEvent(); - this.workspaceLeafChangeEvent = this.createWorkspaceLeafChangeEvent(); - this.fileModificationEvent = this.createVaultFileModificationHandler(); - this.refreshOnCssChangeEvent = this.createCssRefreshHandler(); - this.fileRenameEvent = this.createFileRenameEvent(); - prepareGutterSearchForContextMenuHandling(); - this.plg.registerEvent(this.gutterContextMenuEvent); - this.plg.registerEvent(this.refreshOnCssChangeEvent); - this.plg.registerEvent(this.fileOpenEvent); - this.plg.registerEvent(this.workspaceLeafChangeEvent); - this.plg.registerEvent(this.fileModificationEvent); - this.plg.registerEvent(this.fileRenameEvent); - } - destroyEventHandlers() { - this.plg.app.workspace.offref(this.refreshOnCssChangeEvent); - this.plg.app.workspace.offref(this.fileOpenEvent); - this.plg.app.workspace.offref(this.workspaceLeafChangeEvent); - this.plg.app.workspace.offref(this.refreshOnCssChangeEvent); - this.plg.app.vault.offref(this.fileRenameEvent); - this.plg.app.workspace.offref(this.gutterContextMenuEvent); - } - createFileOpenEvent() { - return this.plg.app.workspace.on( - "file-open", - (file) => { - var _a2; - return (_a2 = this.lineAuthorInfoProvider) == null ? void 0 : _a2.trackChanged(file); - } - ); - } - createWorkspaceLeafChangeEvent() { - return this.plg.app.workspace.on( - "active-leaf-change", - this.handleWorkspaceLeaf - ); - } - createFileRenameEvent() { - return this.plg.app.vault.on( - "rename", - (file, _old) => { - var _a2; - return file instanceof import_obsidian12.TFile && ((_a2 = this.lineAuthorInfoProvider) == null ? void 0 : _a2.trackChanged(file)); - } - ); - } - createVaultFileModificationHandler() { - return this.plg.app.vault.on( - "modify", - (anyPath) => { - var _a2; - return anyPath instanceof import_obsidian12.TFile && ((_a2 = this.lineAuthorInfoProvider) == null ? void 0 : _a2.trackChanged(anyPath)); - } - ); - } - createCssRefreshHandler() { - return this.plg.app.workspace.on( - "css-change", - () => this.refreshLineAuthorViews() - ); - } - createGutterContextMenuHandler() { - return this.plg.app.workspace.on("editor-menu", handleContextMenu); - } -}; - -// src/promiseQueue.ts -init_polyfill_buffer(); -var PromiseQueue = class { - constructor() { - this.tasks = []; - } - addTask(task) { - this.tasks.push(task); - if (this.tasks.length === 1) { - this.handleTask(); - } - } - async handleTask() { - if (this.tasks.length > 0) { - this.tasks[0]().finally(() => { - this.tasks.shift(); - this.handleTask(); - }); - } - } -}; - -// src/statusBar.ts -init_polyfill_buffer(); -var import_obsidian13 = require("obsidian"); -var StatusBar = class { - constructor(statusBarEl, plugin) { - this.statusBarEl = statusBarEl; - this.plugin = plugin; - this.messages = []; - this.base = "obsidian-git-statusbar-"; - this.statusBarEl.setAttribute("data-tooltip-position", "top"); - addEventListener("git-refresh", this.refreshCommitTimestamp.bind(this)); - } - displayMessage(message, timeout) { - this.messages.push({ - message: `Git: ${message.slice(0, 100)}`, - timeout - }); - this.display(); - } - display() { - if (this.messages.length > 0 && !this.currentMessage) { - this.currentMessage = this.messages.shift(); - this.statusBarEl.addClass(this.base + "message"); - this.statusBarEl.ariaLabel = ""; - this.statusBarEl.setText(this.currentMessage.message); - this.lastMessageTimestamp = Date.now(); - } else if (this.currentMessage) { - const messageAge = Date.now() - this.lastMessageTimestamp; - if (messageAge >= this.currentMessage.timeout) { - this.currentMessage = null; - this.lastMessageTimestamp = null; - } - } else { - this.displayState(); - } - } - displayState() { - if (this.statusBarEl.getText().length > 3 || !this.statusBarEl.hasChildNodes()) { - this.statusBarEl.empty(); - this.iconEl = this.statusBarEl.createDiv(); - this.textEl = this.statusBarEl.createDiv(); - this.textEl.style.float = "right"; - this.textEl.style.marginLeft = "5px"; - this.iconEl.style.float = "left"; - } - switch (this.plugin.state) { - case 0 /* idle */: - this.displayFromNow(); - break; - case 1 /* status */: - this.statusBarEl.ariaLabel = "Checking repository status..."; - (0, import_obsidian13.setIcon)(this.iconEl, "refresh-cw"); - this.statusBarEl.addClass(this.base + "status"); - break; - case 3 /* add */: - this.statusBarEl.ariaLabel = "Adding files..."; - (0, import_obsidian13.setIcon)(this.iconEl, "refresh-w"); - this.statusBarEl.addClass(this.base + "add"); - break; - case 4 /* commit */: - this.statusBarEl.ariaLabel = "Committing changes..."; - (0, import_obsidian13.setIcon)(this.iconEl, "git-commit"); - this.statusBarEl.addClass(this.base + "commit"); - break; - case 5 /* push */: - this.statusBarEl.ariaLabel = "Pushing changes..."; - (0, import_obsidian13.setIcon)(this.iconEl, "upload"); - this.statusBarEl.addClass(this.base + "push"); - break; - case 2 /* pull */: - this.statusBarEl.ariaLabel = "Pulling changes..."; - (0, import_obsidian13.setIcon)(this.iconEl, "download"); - this.statusBarEl.addClass(this.base + "pull"); - break; - case 6 /* conflicted */: - this.statusBarEl.ariaLabel = "You have conflict files..."; - (0, import_obsidian13.setIcon)(this.iconEl, "alert-circle"); - this.statusBarEl.addClass(this.base + "conflict"); - break; - default: - this.statusBarEl.ariaLabel = "Failed on initialization!"; - (0, import_obsidian13.setIcon)(this.iconEl, "alert-triangle"); - this.statusBarEl.addClass(this.base + "failed-init"); - break; - } - } - displayFromNow() { - var _a2; - const timestamp = this.lastCommitTimestamp; - if (timestamp) { - const moment6 = window.moment; - const fromNow = moment6(timestamp).fromNow(); - this.statusBarEl.ariaLabel = `${this.plugin.offlineMode ? "Offline: " : ""}Last Commit: ${fromNow}`; - if ((_a2 = this.unPushedCommits) != null ? _a2 : 0 > 0) { - this.statusBarEl.ariaLabel += ` -(${this.unPushedCommits} unpushed commits)`; - } - } else { - this.statusBarEl.ariaLabel = this.plugin.offlineMode ? "Git is offline" : "Git is ready"; - } - if (this.plugin.offlineMode) { - (0, import_obsidian13.setIcon)(this.iconEl, "globe"); - } else { - (0, import_obsidian13.setIcon)(this.iconEl, "check"); - } - if (this.plugin.settings.changedFilesInStatusBar && this.plugin.cachedStatus) { - this.textEl.setText( - this.plugin.cachedStatus.changed.length.toString() - ); - } - this.statusBarEl.addClass(this.base + "idle"); - } - async refreshCommitTimestamp() { - this.lastCommitTimestamp = await this.plugin.gitManager.getLastCommitTime(); - this.unPushedCommits = await this.plugin.gitManager.getUnpushedCommits(); - } -}; - -// src/ui/modals/changedFilesModal.ts -init_polyfill_buffer(); -var import_obsidian14 = require("obsidian"); -var ChangedFilesModal = class extends import_obsidian14.FuzzySuggestModal { - constructor(plugin, changedFiles) { - super(plugin.app); - this.plugin = plugin; - this.changedFiles = changedFiles; - this.setPlaceholder( - "Not supported files will be opened by default app!" - ); - } - getItems() { - return this.changedFiles; - } - getItemText(item) { - if (item.index == "U" && item.working_dir == "U") { - return `Untracked | ${item.vault_path}`; - } - let working_dir = ""; - let index2 = ""; - if (item.working_dir != " ") - working_dir = `Working Dir: ${item.working_dir} `; - if (item.index != " ") - index2 = `Index: ${item.index}`; - return `${working_dir}${index2} | ${item.vault_path}`; - } - onChooseItem(item, _) { - if (this.plugin.app.metadataCache.getFirstLinkpathDest( - item.vault_path, - "" - ) == null) { - this.app.openWithDefaultApp(item.vault_path); - } else { - this.plugin.app.workspace.openLinkText(item.vault_path, "/"); - } - } -}; - -// src/ui/modals/customMessageModal.ts -init_polyfill_buffer(); -var import_obsidian15 = require("obsidian"); -var CustomMessageModal = class extends import_obsidian15.SuggestModal { - constructor(plugin, fromAutoBackup) { - super(plugin.app); - this.fromAutoBackup = fromAutoBackup; - this.resolve = null; - this.plugin = plugin; - this.setPlaceholder( - "Type your message and select optional the version with the added date." - ); - } - open() { - super.open(); - return new Promise((resolve) => { - this.resolve = resolve; - }); - } - onClose() { - if (this.resolve) - this.resolve(void 0); - } - selectSuggestion(value, evt) { - if (this.resolve) - this.resolve(value); - super.selectSuggestion(value, evt); - } - getSuggestions(query) { - const date = window.moment().format(this.plugin.settings.commitDateFormat); - if (query == "") - query = "..."; - return [query, `${date}: ${query}`, `${query}: ${date}`]; - } - renderSuggestion(value, el) { - el.innerText = value; - } - onChooseSuggestion(item, _) { - } -}; - -// src/openInGitHub.ts -init_polyfill_buffer(); -var import_obsidian16 = require("obsidian"); -async function openLineInGitHub(editor, file, manager) { - const data = await getData(manager); - if (data.result === "failure") { - new import_obsidian16.Notice(data.reason); - return; - } - const { isGitHub, branch: branch2, repo, user } = data; - if (isGitHub) { - const path2 = manager.getRelativeRepoPath(file.path); - const from = editor.getCursor("from").line + 1; - const to = editor.getCursor("to").line + 1; - if (from === to) { - window.open( - `https://github.com/${user}/${repo}/blob/${branch2}/${path2}?plain=1#L${from}` - ); - } else { - window.open( - `https://github.com/${user}/${repo}/blob/${branch2}/${path2}?plain=1#L${from}-L${to}` - ); - } - } else { - new import_obsidian16.Notice("It seems like you are not using GitHub"); - } -} -async function openHistoryInGitHub(file, manager) { - const data = await getData(manager); - if (data.result === "failure") { - new import_obsidian16.Notice(data.reason); - return; - } - const { isGitHub, branch: branch2, repo, user } = data; - const path2 = manager.getRelativeRepoPath(file.path); - if (isGitHub) { - window.open( - `https://github.com/${user}/${repo}/commits/${branch2}/${path2}` - ); - } else { - new import_obsidian16.Notice("It seems like you are not using GitHub"); - } -} -async function getData(manager) { - const branchInfo = await manager.branchInfo(); - const remoteBranch = branchInfo.tracking; - const branch2 = branchInfo.current; - if (remoteBranch == null) { - return { - result: "failure", - reason: "Remote branch is not configured" - }; - } - if (branch2 == null) { - return { - result: "failure", - reason: "Failed to get current branch name" - }; - } - const remote = remoteBranch.substring(0, remoteBranch.indexOf("/")); - const remoteUrl = await manager.getConfig( - `remote.${remote}.url` - ); - const [isGitHub, httpsUser, httpsRepo, sshUser, sshRepo] = remoteUrl.match( - /(?:^https:\/\/github\.com\/(.*)\/(.*)\.git$)|(?:^[a-zA-Z]+@github\.com:(.*)\/(.*)\.git$)/ - ); - return { - result: "success", - isGitHub: !!isGitHub, - repo: httpsRepo || sshRepo, - user: httpsUser || sshUser, - branch: branch2 - }; -} - -// src/setting/localStorageSettings.ts -init_polyfill_buffer(); -var LocalStorageSettings = class { - constructor(plugin) { - this.plugin = plugin; - this.prefix = this.plugin.manifest.id + ":"; - } - migrate() { - const keys = [ - "password", - "hostname", - "conflict", - "lastAutoPull", - "lastAutoBackup", - "lastAutoPush", - "gitPath", - "pluginDisabled" - ]; - for (const key2 of keys) { - const old = localStorage.getItem(this.prefix + key2); - if (app.loadLocalStorage(this.prefix + key2) == null && old != null) { - if (old != null) { - app.saveLocalStorage(this.prefix + key2, old); - localStorage.removeItem(this.prefix + key2); - } - } - } - } - getPassword() { - return app.loadLocalStorage(this.prefix + "password"); - } - setPassword(value) { - return app.saveLocalStorage(this.prefix + "password", value); - } - getUsername() { - return app.loadLocalStorage(this.prefix + "username"); - } - setUsername(value) { - return app.saveLocalStorage(this.prefix + "username", value); - } - getHostname() { - return app.loadLocalStorage(this.prefix + "hostname"); - } - setHostname(value) { - return app.saveLocalStorage(this.prefix + "hostname", value); - } - getConflict() { - return app.loadLocalStorage(this.prefix + "conflict") == "true"; - } - setConflict(value) { - return app.saveLocalStorage(this.prefix + "conflict", `${value}`); - } - getLastAutoPull() { - return app.loadLocalStorage(this.prefix + "lastAutoPull"); - } - setLastAutoPull(value) { - return app.saveLocalStorage(this.prefix + "lastAutoPull", value); - } - getLastAutoBackup() { - return app.loadLocalStorage(this.prefix + "lastAutoBackup"); - } - setLastAutoBackup(value) { - return app.saveLocalStorage(this.prefix + "lastAutoBackup", value); - } - getLastAutoPush() { - return app.loadLocalStorage(this.prefix + "lastAutoPush"); - } - setLastAutoPush(value) { - return app.saveLocalStorage(this.prefix + "lastAutoPush", value); - } - getGitPath() { - return app.loadLocalStorage(this.prefix + "gitPath"); - } - setGitPath(value) { - return app.saveLocalStorage(this.prefix + "gitPath", value); - } - getPATHPaths() { - var _a2, _b; - return (_b = (_a2 = app.loadLocalStorage(this.prefix + "PATHPaths")) == null ? void 0 : _a2.split(":")) != null ? _b : []; - } - setPATHPaths(value) { - return app.saveLocalStorage(this.prefix + "PATHPaths", value.join(":")); - } - getEnvVars() { - var _a2; - return JSON.parse( - (_a2 = app.loadLocalStorage(this.prefix + "envVars")) != null ? _a2 : "[]" - ); - } - setEnvVars(value) { - return app.saveLocalStorage( - this.prefix + "envVars", - JSON.stringify(value) - ); - } - getPluginDisabled() { - return app.loadLocalStorage(this.prefix + "pluginDisabled") == "true"; - } - setPluginDisabled(value) { - return app.saveLocalStorage(this.prefix + "pluginDisabled", `${value}`); - } -}; - -// src/ui/diff/diffView.ts -init_polyfill_buffer(); - -// node_modules/.pnpm/diff2html@3.4.47/node_modules/diff2html/lib-esm/diff2html.js -init_polyfill_buffer(); - -// node_modules/.pnpm/diff2html@3.4.47/node_modules/diff2html/lib-esm/diff-parser.js -init_polyfill_buffer(); - -// node_modules/.pnpm/diff2html@3.4.47/node_modules/diff2html/lib-esm/types.js -init_polyfill_buffer(); -var LineType; -(function(LineType2) { - LineType2["INSERT"] = "insert"; - LineType2["DELETE"] = "delete"; - LineType2["CONTEXT"] = "context"; -})(LineType || (LineType = {})); -var OutputFormatType = { - LINE_BY_LINE: "line-by-line", - SIDE_BY_SIDE: "side-by-side" -}; -var LineMatchingType = { - LINES: "lines", - WORDS: "words", - NONE: "none" -}; -var DiffStyleType = { - WORD: "word", - CHAR: "char" -}; -var ColorSchemeType; -(function(ColorSchemeType2) { - ColorSchemeType2["AUTO"] = "auto"; - ColorSchemeType2["DARK"] = "dark"; - ColorSchemeType2["LIGHT"] = "light"; -})(ColorSchemeType || (ColorSchemeType = {})); - -// node_modules/.pnpm/diff2html@3.4.47/node_modules/diff2html/lib-esm/utils.js -init_polyfill_buffer(); -var specials = [ - "-", - "[", - "]", - "/", - "{", - "}", - "(", - ")", - "*", - "+", - "?", - ".", - "\\", - "^", - "$", - "|" -]; -var regex = RegExp("[" + specials.join("\\") + "]", "g"); -function escapeForRegExp(str) { - return str.replace(regex, "\\$&"); -} -function unifyPath(path2) { - return path2 ? path2.replace(/\\/g, "/") : path2; -} -function hashCode(text2) { - let i, chr, len; - let hash2 = 0; - for (i = 0, len = text2.length; i < len; i++) { - chr = text2.charCodeAt(i); - hash2 = (hash2 << 5) - hash2 + chr; - hash2 |= 0; - } - return hash2; -} - -// node_modules/.pnpm/diff2html@3.4.47/node_modules/diff2html/lib-esm/diff-parser.js -function getExtension(filename, language) { - const filenameParts = filename.split("."); - return filenameParts.length > 1 ? filenameParts[filenameParts.length - 1] : language; -} -function startsWithAny(str, prefixes) { - return prefixes.reduce((startsWith, prefix) => startsWith || str.startsWith(prefix), false); -} -var baseDiffFilenamePrefixes = ["a/", "b/", "i/", "w/", "c/", "o/"]; -function getFilename(line, linePrefix, extraPrefix) { - const prefixes = extraPrefix !== void 0 ? [...baseDiffFilenamePrefixes, extraPrefix] : baseDiffFilenamePrefixes; - const FilenameRegExp = linePrefix ? new RegExp(`^${escapeForRegExp(linePrefix)} "?(.+?)"?$`) : new RegExp('^"?(.+?)"?$'); - const [, filename = ""] = FilenameRegExp.exec(line) || []; - const matchingPrefix = prefixes.find((p) => filename.indexOf(p) === 0); - const fnameWithoutPrefix = matchingPrefix ? filename.slice(matchingPrefix.length) : filename; - return fnameWithoutPrefix.replace(/\s+\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}(?:\.\d+)? [+-]\d{4}.*$/, ""); -} -function getSrcFilename(line, srcPrefix) { - return getFilename(line, "---", srcPrefix); -} -function getDstFilename(line, dstPrefix) { - return getFilename(line, "+++", dstPrefix); -} -function parse(diffInput, config = {}) { - const files = []; - let currentFile = null; - let currentBlock = null; - let oldLine = null; - let oldLine2 = null; - let newLine = null; - let possibleOldName = null; - let possibleNewName = null; - const oldFileNameHeader = "--- "; - const newFileNameHeader = "+++ "; - const hunkHeaderPrefix = "@@"; - const oldMode = /^old mode (\d{6})/; - const newMode = /^new mode (\d{6})/; - const deletedFileMode = /^deleted file mode (\d{6})/; - const newFileMode = /^new file mode (\d{6})/; - const copyFrom = /^copy from "?(.+)"?/; - const copyTo = /^copy to "?(.+)"?/; - const renameFrom = /^rename from "?(.+)"?/; - const renameTo = /^rename to "?(.+)"?/; - const similarityIndex = /^similarity index (\d+)%/; - const dissimilarityIndex = /^dissimilarity index (\d+)%/; - const index2 = /^index ([\da-z]+)\.\.([\da-z]+)\s*(\d{6})?/; - const binaryFiles = /^Binary files (.*) and (.*) differ/; - const binaryDiff = /^GIT binary patch/; - const combinedIndex = /^index ([\da-z]+),([\da-z]+)\.\.([\da-z]+)/; - const combinedMode = /^mode (\d{6}),(\d{6})\.\.(\d{6})/; - const combinedNewFile = /^new file mode (\d{6})/; - const combinedDeletedFile = /^deleted file mode (\d{6}),(\d{6})/; - const diffLines2 = diffInput.replace(/\\ No newline at end of file/g, "").replace(/\r\n?/g, "\n").split("\n"); - function saveBlock() { - if (currentBlock !== null && currentFile !== null) { - currentFile.blocks.push(currentBlock); - currentBlock = null; - } - } - function saveFile() { - if (currentFile !== null) { - if (!currentFile.oldName && possibleOldName !== null) { - currentFile.oldName = possibleOldName; - } - if (!currentFile.newName && possibleNewName !== null) { - currentFile.newName = possibleNewName; - } - if (currentFile.newName) { - files.push(currentFile); - currentFile = null; - } - } - possibleOldName = null; - possibleNewName = null; - } - function startFile() { - saveBlock(); - saveFile(); - currentFile = { - blocks: [], - deletedLines: 0, - addedLines: 0 - }; - } - function startBlock(line) { - saveBlock(); - let values; - if (currentFile !== null) { - if (values = /^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@.*/.exec(line)) { - currentFile.isCombined = false; - oldLine = parseInt(values[1], 10); - newLine = parseInt(values[2], 10); - } else if (values = /^@@@ -(\d+)(?:,\d+)? -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@@.*/.exec(line)) { - currentFile.isCombined = true; - oldLine = parseInt(values[1], 10); - oldLine2 = parseInt(values[2], 10); - newLine = parseInt(values[3], 10); - } else { - if (line.startsWith(hunkHeaderPrefix)) { - console.error("Failed to parse lines, starting in 0!"); - } - oldLine = 0; - newLine = 0; - currentFile.isCombined = false; - } - } - currentBlock = { - lines: [], - oldStartLine: oldLine, - oldStartLine2: oldLine2, - newStartLine: newLine, - header: line - }; - } - function createLine(line) { - if (currentFile === null || currentBlock === null || oldLine === null || newLine === null) - return; - const currentLine = { - content: line - }; - const addedPrefixes = currentFile.isCombined ? ["+ ", " +", "++"] : ["+"]; - const deletedPrefixes = currentFile.isCombined ? ["- ", " -", "--"] : ["-"]; - if (startsWithAny(line, addedPrefixes)) { - currentFile.addedLines++; - currentLine.type = LineType.INSERT; - currentLine.oldNumber = void 0; - currentLine.newNumber = newLine++; - } else if (startsWithAny(line, deletedPrefixes)) { - currentFile.deletedLines++; - currentLine.type = LineType.DELETE; - currentLine.oldNumber = oldLine++; - currentLine.newNumber = void 0; - } else { - currentLine.type = LineType.CONTEXT; - currentLine.oldNumber = oldLine++; - currentLine.newNumber = newLine++; - } - currentBlock.lines.push(currentLine); - } - function existHunkHeader(line, lineIdx) { - let idx = lineIdx; - while (idx < diffLines2.length - 3) { - if (line.startsWith("diff")) { - return false; - } - if (diffLines2[idx].startsWith(oldFileNameHeader) && diffLines2[idx + 1].startsWith(newFileNameHeader) && diffLines2[idx + 2].startsWith(hunkHeaderPrefix)) { - return true; - } - idx++; - } - return false; - } - diffLines2.forEach((line, lineIndex) => { - if (!line || line.startsWith("*")) { - return; - } - let values; - const prevLine = diffLines2[lineIndex - 1]; - const nxtLine = diffLines2[lineIndex + 1]; - const afterNxtLine = diffLines2[lineIndex + 2]; - if (line.startsWith("diff --git") || line.startsWith("diff --combined")) { - startFile(); - const gitDiffStart = /^diff --git "?([a-ciow]\/.+)"? "?([a-ciow]\/.+)"?/; - if (values = gitDiffStart.exec(line)) { - possibleOldName = getFilename(values[1], void 0, config.dstPrefix); - possibleNewName = getFilename(values[2], void 0, config.srcPrefix); - } - if (currentFile === null) { - throw new Error("Where is my file !!!"); - } - currentFile.isGitDiff = true; - return; - } - if (line.startsWith("Binary files") && !(currentFile === null || currentFile === void 0 ? void 0 : currentFile.isGitDiff)) { - startFile(); - const unixDiffBinaryStart = /^Binary files "?([a-ciow]\/.+)"? and "?([a-ciow]\/.+)"? differ/; - if (values = unixDiffBinaryStart.exec(line)) { - possibleOldName = getFilename(values[1], void 0, config.dstPrefix); - possibleNewName = getFilename(values[2], void 0, config.srcPrefix); - } - if (currentFile === null) { - throw new Error("Where is my file !!!"); - } - currentFile.isBinary = true; - return; - } - if (!currentFile || !currentFile.isGitDiff && currentFile && line.startsWith(oldFileNameHeader) && nxtLine.startsWith(newFileNameHeader) && afterNxtLine.startsWith(hunkHeaderPrefix)) { - startFile(); - } - if (currentFile === null || currentFile === void 0 ? void 0 : currentFile.isTooBig) { - return; - } - if (currentFile && (typeof config.diffMaxChanges === "number" && currentFile.addedLines + currentFile.deletedLines > config.diffMaxChanges || typeof config.diffMaxLineLength === "number" && line.length > config.diffMaxLineLength)) { - currentFile.isTooBig = true; - currentFile.addedLines = 0; - currentFile.deletedLines = 0; - currentFile.blocks = []; - currentBlock = null; - const message = typeof config.diffTooBigMessage === "function" ? config.diffTooBigMessage(files.length) : "Diff too big to be displayed"; - startBlock(message); - return; - } - if (line.startsWith(oldFileNameHeader) && nxtLine.startsWith(newFileNameHeader) || line.startsWith(newFileNameHeader) && prevLine.startsWith(oldFileNameHeader)) { - if (currentFile && !currentFile.oldName && line.startsWith("--- ") && (values = getSrcFilename(line, config.srcPrefix))) { - currentFile.oldName = values; - currentFile.language = getExtension(currentFile.oldName, currentFile.language); - return; - } - if (currentFile && !currentFile.newName && line.startsWith("+++ ") && (values = getDstFilename(line, config.dstPrefix))) { - currentFile.newName = values; - currentFile.language = getExtension(currentFile.newName, currentFile.language); - return; - } - } - if (currentFile && (line.startsWith(hunkHeaderPrefix) || currentFile.isGitDiff && currentFile.oldName && currentFile.newName && !currentBlock)) { - startBlock(line); - return; - } - if (currentBlock && (line.startsWith("+") || line.startsWith("-") || line.startsWith(" "))) { - createLine(line); - return; - } - const doesNotExistHunkHeader = !existHunkHeader(line, lineIndex); - if (currentFile === null) { - throw new Error("Where is my file !!!"); - } - if (values = oldMode.exec(line)) { - currentFile.oldMode = values[1]; - } else if (values = newMode.exec(line)) { - currentFile.newMode = values[1]; - } else if (values = deletedFileMode.exec(line)) { - currentFile.deletedFileMode = values[1]; - currentFile.isDeleted = true; - } else if (values = newFileMode.exec(line)) { - currentFile.newFileMode = values[1]; - currentFile.isNew = true; - } else if (values = copyFrom.exec(line)) { - if (doesNotExistHunkHeader) { - currentFile.oldName = values[1]; - } - currentFile.isCopy = true; - } else if (values = copyTo.exec(line)) { - if (doesNotExistHunkHeader) { - currentFile.newName = values[1]; - } - currentFile.isCopy = true; - } else if (values = renameFrom.exec(line)) { - if (doesNotExistHunkHeader) { - currentFile.oldName = values[1]; - } - currentFile.isRename = true; - } else if (values = renameTo.exec(line)) { - if (doesNotExistHunkHeader) { - currentFile.newName = values[1]; - } - currentFile.isRename = true; - } else if (values = binaryFiles.exec(line)) { - currentFile.isBinary = true; - currentFile.oldName = getFilename(values[1], void 0, config.srcPrefix); - currentFile.newName = getFilename(values[2], void 0, config.dstPrefix); - startBlock("Binary file"); - } else if (binaryDiff.test(line)) { - currentFile.isBinary = true; - startBlock(line); - } else if (values = similarityIndex.exec(line)) { - currentFile.unchangedPercentage = parseInt(values[1], 10); - } else if (values = dissimilarityIndex.exec(line)) { - currentFile.changedPercentage = parseInt(values[1], 10); - } else if (values = index2.exec(line)) { - currentFile.checksumBefore = values[1]; - currentFile.checksumAfter = values[2]; - values[3] && (currentFile.mode = values[3]); - } else if (values = combinedIndex.exec(line)) { - currentFile.checksumBefore = [values[2], values[3]]; - currentFile.checksumAfter = values[1]; - } else if (values = combinedMode.exec(line)) { - currentFile.oldMode = [values[2], values[3]]; - currentFile.newMode = values[1]; - } else if (values = combinedNewFile.exec(line)) { - currentFile.newFileMode = values[1]; - currentFile.isNew = true; - } else if (values = combinedDeletedFile.exec(line)) { - currentFile.deletedFileMode = values[1]; - currentFile.isDeleted = true; - } - }); - saveBlock(); - saveFile(); - return files; -} - -// node_modules/.pnpm/diff2html@3.4.47/node_modules/diff2html/lib-esm/file-list-renderer.js -init_polyfill_buffer(); - -// node_modules/.pnpm/diff2html@3.4.47/node_modules/diff2html/lib-esm/render-utils.js -init_polyfill_buffer(); - -// node_modules/.pnpm/diff@5.1.0/node_modules/diff/lib/index.mjs -init_polyfill_buffer(); -function Diff2() { -} -Diff2.prototype = { - diff: function diff2(oldString, newString) { - var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; - var callback = options.callback; - if (typeof options === "function") { - callback = options; - options = {}; - } - this.options = options; - var self2 = this; - function done(value) { - if (callback) { - setTimeout(function() { - callback(void 0, value); - }, 0); - return true; - } else { - return value; - } - } - oldString = this.castInput(oldString); - newString = this.castInput(newString); - oldString = this.removeEmpty(this.tokenize(oldString)); - newString = this.removeEmpty(this.tokenize(newString)); - var newLen = newString.length, oldLen = oldString.length; - var editLength = 1; - var maxEditLength = newLen + oldLen; - if (options.maxEditLength) { - maxEditLength = Math.min(maxEditLength, options.maxEditLength); - } - var bestPath = [{ - newPos: -1, - components: [] - }]; - var oldPos = this.extractCommon(bestPath[0], newString, oldString, 0); - if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) { - return done([{ - value: this.join(newString), - count: newString.length - }]); - } - function execEditLength() { - for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) { - var basePath = void 0; - var addPath = bestPath[diagonalPath - 1], removePath = bestPath[diagonalPath + 1], _oldPos = (removePath ? removePath.newPos : 0) - diagonalPath; - if (addPath) { - bestPath[diagonalPath - 1] = void 0; - } - var canAdd = addPath && addPath.newPos + 1 < newLen, canRemove = removePath && 0 <= _oldPos && _oldPos < oldLen; - if (!canAdd && !canRemove) { - bestPath[diagonalPath] = void 0; - continue; - } - if (!canAdd || canRemove && addPath.newPos < removePath.newPos) { - basePath = clonePath(removePath); - self2.pushComponent(basePath.components, void 0, true); - } else { - basePath = addPath; - basePath.newPos++; - self2.pushComponent(basePath.components, true, void 0); - } - _oldPos = self2.extractCommon(basePath, newString, oldString, diagonalPath); - if (basePath.newPos + 1 >= newLen && _oldPos + 1 >= oldLen) { - return done(buildValues2(self2, basePath.components, newString, oldString, self2.useLongestToken)); - } else { - bestPath[diagonalPath] = basePath; - } - } - editLength++; - } - if (callback) { - (function exec() { - setTimeout(function() { - if (editLength > maxEditLength) { - return callback(); - } - if (!execEditLength()) { - exec(); - } - }, 0); - })(); - } else { - while (editLength <= maxEditLength) { - var ret = execEditLength(); - if (ret) { - return ret; - } - } - } - }, - pushComponent: function pushComponent(components, added, removed) { - var last2 = components[components.length - 1]; - if (last2 && last2.added === added && last2.removed === removed) { - components[components.length - 1] = { - count: last2.count + 1, - added, - removed - }; - } else { - components.push({ - count: 1, - added, - removed - }); - } - }, - extractCommon: function extractCommon2(basePath, newString, oldString, diagonalPath) { - var newLen = newString.length, oldLen = oldString.length, newPos = basePath.newPos, oldPos = newPos - diagonalPath, commonCount = 0; - while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newString[newPos + 1], oldString[oldPos + 1])) { - newPos++; - oldPos++; - commonCount++; - } - if (commonCount) { - basePath.components.push({ - count: commonCount - }); - } - basePath.newPos = newPos; - return oldPos; - }, - equals: function equals2(left, right) { - if (this.options.comparator) { - return this.options.comparator(left, right); - } else { - return left === right || this.options.ignoreCase && left.toLowerCase() === right.toLowerCase(); - } - }, - removeEmpty: function removeEmpty2(array) { - var ret = []; - for (var i = 0; i < array.length; i++) { - if (array[i]) { - ret.push(array[i]); - } - } - return ret; - }, - castInput: function castInput2(value) { - return value; - }, - tokenize: function tokenize2(value) { - return value.split(""); - }, - join: function join4(chars) { - return chars.join(""); - } -}; -function buildValues2(diff3, components, newString, oldString, useLongestToken) { - var componentPos = 0, componentLen = components.length, newPos = 0, oldPos = 0; - for (; componentPos < componentLen; componentPos++) { - var component = components[componentPos]; - if (!component.removed) { - if (!component.added && useLongestToken) { - var value = newString.slice(newPos, newPos + component.count); - value = value.map(function(value2, i) { - var oldValue = oldString[oldPos + i]; - return oldValue.length > value2.length ? oldValue : value2; - }); - component.value = diff3.join(value); - } else { - component.value = diff3.join(newString.slice(newPos, newPos + component.count)); - } - newPos += component.count; - if (!component.added) { - oldPos += component.count; - } - } else { - component.value = diff3.join(oldString.slice(oldPos, oldPos + component.count)); - oldPos += component.count; - if (componentPos && components[componentPos - 1].added) { - var tmp = components[componentPos - 1]; - components[componentPos - 1] = components[componentPos]; - components[componentPos] = tmp; - } - } - } - var lastComponent = components[componentLen - 1]; - if (componentLen > 1 && typeof lastComponent.value === "string" && (lastComponent.added || lastComponent.removed) && diff3.equals("", lastComponent.value)) { - components[componentLen - 2].value += lastComponent.value; - components.pop(); - } - return components; -} -function clonePath(path2) { - return { - newPos: path2.newPos, - components: path2.components.slice(0) - }; -} -var characterDiff2 = new Diff2(); -function diffChars(oldStr, newStr, options) { - return characterDiff2.diff(oldStr, newStr, options); -} -var extendedWordChars2 = /^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/; -var reWhitespace2 = /\S/; -var wordDiff2 = new Diff2(); -wordDiff2.equals = function(left, right) { - if (this.options.ignoreCase) { - left = left.toLowerCase(); - right = right.toLowerCase(); - } - return left === right || this.options.ignoreWhitespace && !reWhitespace2.test(left) && !reWhitespace2.test(right); -}; -wordDiff2.tokenize = function(value) { - var tokens = value.split(/([^\S\r\n]+|[()[\]{}'"\r\n]|\b)/); - for (var i = 0; i < tokens.length - 1; i++) { - if (!tokens[i + 1] && tokens[i + 2] && extendedWordChars2.test(tokens[i]) && extendedWordChars2.test(tokens[i + 2])) { - tokens[i] += tokens[i + 2]; - tokens.splice(i + 1, 2); - i--; - } - } - return tokens; -}; -function diffWordsWithSpace(oldStr, newStr, options) { - return wordDiff2.diff(oldStr, newStr, options); -} -var lineDiff2 = new Diff2(); -lineDiff2.tokenize = function(value) { - var retLines = [], linesAndNewlines = value.split(/(\n|\r\n)/); - if (!linesAndNewlines[linesAndNewlines.length - 1]) { - linesAndNewlines.pop(); - } - for (var i = 0; i < linesAndNewlines.length; i++) { - var line = linesAndNewlines[i]; - if (i % 2 && !this.options.newlineIsToken) { - retLines[retLines.length - 1] += line; - } else { - if (this.options.ignoreWhitespace) { - line = line.trim(); - } - retLines.push(line); - } - } - return retLines; -}; -var sentenceDiff2 = new Diff2(); -sentenceDiff2.tokenize = function(value) { - return value.split(/(\S.+?[.!?])(?=\s+|$)/); -}; -var cssDiff2 = new Diff2(); -cssDiff2.tokenize = function(value) { - return value.split(/([{}:;,]|\s+)/); -}; -function _typeof2(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof2 = function(obj2) { - return typeof obj2; - }; - } else { - _typeof2 = function(obj2) { - return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; - }; - } - return _typeof2(obj); -} -var objectPrototypeToString2 = Object.prototype.toString; -var jsonDiff2 = new Diff2(); -jsonDiff2.useLongestToken = true; -jsonDiff2.tokenize = lineDiff2.tokenize; -jsonDiff2.castInput = function(value) { - var _this$options = this.options, undefinedReplacement = _this$options.undefinedReplacement, _this$options$stringi = _this$options.stringifyReplacer, stringifyReplacer = _this$options$stringi === void 0 ? function(k, v) { - return typeof v === "undefined" ? undefinedReplacement : v; - } : _this$options$stringi; - return typeof value === "string" ? value : JSON.stringify(canonicalize2(value, null, null, stringifyReplacer), stringifyReplacer, " "); -}; -jsonDiff2.equals = function(left, right) { - return Diff2.prototype.equals.call(jsonDiff2, left.replace(/,([\r\n])/g, "$1"), right.replace(/,([\r\n])/g, "$1")); -}; -function canonicalize2(obj, stack, replacementStack, replacer, key2) { - stack = stack || []; - replacementStack = replacementStack || []; - if (replacer) { - obj = replacer(key2, obj); - } - var i; - for (i = 0; i < stack.length; i += 1) { - if (stack[i] === obj) { - return replacementStack[i]; - } - } - var canonicalizedObj; - if ("[object Array]" === objectPrototypeToString2.call(obj)) { - stack.push(obj); - canonicalizedObj = new Array(obj.length); - replacementStack.push(canonicalizedObj); - for (i = 0; i < obj.length; i += 1) { - canonicalizedObj[i] = canonicalize2(obj[i], stack, replacementStack, replacer, key2); - } - stack.pop(); - replacementStack.pop(); - return canonicalizedObj; - } - if (obj && obj.toJSON) { - obj = obj.toJSON(); - } - if (_typeof2(obj) === "object" && obj !== null) { - stack.push(obj); - canonicalizedObj = {}; - replacementStack.push(canonicalizedObj); - var sortedKeys = [], _key; - for (_key in obj) { - if (obj.hasOwnProperty(_key)) { - sortedKeys.push(_key); - } - } - sortedKeys.sort(); - for (i = 0; i < sortedKeys.length; i += 1) { - _key = sortedKeys[i]; - canonicalizedObj[_key] = canonicalize2(obj[_key], stack, replacementStack, replacer, _key); - } - stack.pop(); - replacementStack.pop(); - } else { - canonicalizedObj = obj; - } - return canonicalizedObj; -} -var arrayDiff2 = new Diff2(); -arrayDiff2.tokenize = function(value) { - return value.slice(); -}; -arrayDiff2.join = arrayDiff2.removeEmpty = function(value) { - return value; -}; - -// node_modules/.pnpm/diff2html@3.4.47/node_modules/diff2html/lib-esm/rematch.js -init_polyfill_buffer(); -function levenshtein(a, b) { - if (a.length === 0) { - return b.length; - } - if (b.length === 0) { - return a.length; - } - const matrix = []; - let i; - for (i = 0; i <= b.length; i++) { - matrix[i] = [i]; - } - let j; - for (j = 0; j <= a.length; j++) { - matrix[0][j] = j; - } - for (i = 1; i <= b.length; i++) { - for (j = 1; j <= a.length; j++) { - if (b.charAt(i - 1) === a.charAt(j - 1)) { - matrix[i][j] = matrix[i - 1][j - 1]; - } else { - matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, Math.min(matrix[i][j - 1] + 1, matrix[i - 1][j] + 1)); - } - } - } - return matrix[b.length][a.length]; -} -function newDistanceFn(str) { - return (x, y) => { - const xValue = str(x).trim(); - const yValue = str(y).trim(); - const lev = levenshtein(xValue, yValue); - return lev / (xValue.length + yValue.length); - }; -} -function newMatcherFn(distance2) { - function findBestMatch(a, b, cache = /* @__PURE__ */ new Map()) { - let bestMatchDist = Infinity; - let bestMatch; - for (let i = 0; i < a.length; ++i) { - for (let j = 0; j < b.length; ++j) { - const cacheKey = JSON.stringify([a[i], b[j]]); - let md; - if (!(cache.has(cacheKey) && (md = cache.get(cacheKey)))) { - md = distance2(a[i], b[j]); - cache.set(cacheKey, md); - } - if (md < bestMatchDist) { - bestMatchDist = md; - bestMatch = { indexA: i, indexB: j, score: bestMatchDist }; - } - } - } - return bestMatch; - } - function group(a, b, level = 0, cache = /* @__PURE__ */ new Map()) { - const bm = findBestMatch(a, b, cache); - if (!bm || a.length + b.length < 3) { - return [[a, b]]; - } - const a1 = a.slice(0, bm.indexA); - const b1 = b.slice(0, bm.indexB); - const aMatch = [a[bm.indexA]]; - const bMatch = [b[bm.indexB]]; - const tailA = bm.indexA + 1; - const tailB = bm.indexB + 1; - const a2 = a.slice(tailA); - const b2 = b.slice(tailB); - const group1 = group(a1, b1, level + 1, cache); - const groupMatch = group(aMatch, bMatch, level + 1, cache); - const group2 = group(a2, b2, level + 1, cache); - let result = groupMatch; - if (bm.indexA > 0 || bm.indexB > 0) { - result = group1.concat(result); - } - if (a.length > tailA || b.length > tailB) { - result = result.concat(group2); - } - return result; - } - return group; -} - -// node_modules/.pnpm/diff2html@3.4.47/node_modules/diff2html/lib-esm/render-utils.js -var CSSLineClass = { - INSERTS: "d2h-ins", - DELETES: "d2h-del", - CONTEXT: "d2h-cntx", - INFO: "d2h-info", - INSERT_CHANGES: "d2h-ins d2h-change", - DELETE_CHANGES: "d2h-del d2h-change" -}; -var defaultRenderConfig = { - matching: LineMatchingType.NONE, - matchWordsThreshold: 0.25, - maxLineLengthHighlight: 1e4, - diffStyle: DiffStyleType.WORD, - colorScheme: ColorSchemeType.LIGHT -}; -var separator = "/"; -var distance = newDistanceFn((change) => change.value); -var matcher = newMatcherFn(distance); -function isDevNullName(name) { - return name.indexOf("dev/null") !== -1; -} -function removeInsElements(line) { - return line.replace(/(]*>((.|\n)*?)<\/ins>)/g, ""); -} -function removeDelElements(line) { - return line.replace(/(]*>((.|\n)*?)<\/del>)/g, ""); -} -function toCSSClass(lineType) { - switch (lineType) { - case LineType.CONTEXT: - return CSSLineClass.CONTEXT; - case LineType.INSERT: - return CSSLineClass.INSERTS; - case LineType.DELETE: - return CSSLineClass.DELETES; - } -} -function colorSchemeToCss(colorScheme) { - switch (colorScheme) { - case ColorSchemeType.DARK: - return "d2h-dark-color-scheme"; - case ColorSchemeType.AUTO: - return "d2h-auto-color-scheme"; - case ColorSchemeType.LIGHT: - default: - return "d2h-light-color-scheme"; - } -} -function prefixLength(isCombined) { - return isCombined ? 2 : 1; -} -function escapeForHtml(str) { - return str.slice(0).replace(/&/g, "&").replace(//g, ">").replace(/"/g, """).replace(/'/g, "'").replace(/\//g, "/"); -} -function deconstructLine(line, isCombined, escape = true) { - const indexToSplit = prefixLength(isCombined); - return { - prefix: line.substring(0, indexToSplit), - content: escape ? escapeForHtml(line.substring(indexToSplit)) : line.substring(indexToSplit) - }; -} -function filenameDiff(file) { - const oldFilename = unifyPath(file.oldName); - const newFilename = unifyPath(file.newName); - if (oldFilename !== newFilename && !isDevNullName(oldFilename) && !isDevNullName(newFilename)) { - const prefixPaths = []; - const suffixPaths = []; - const oldFilenameParts = oldFilename.split(separator); - const newFilenameParts = newFilename.split(separator); - const oldFilenamePartsSize = oldFilenameParts.length; - const newFilenamePartsSize = newFilenameParts.length; - let i = 0; - let j = oldFilenamePartsSize - 1; - let k = newFilenamePartsSize - 1; - while (i < j && i < k) { - if (oldFilenameParts[i] === newFilenameParts[i]) { - prefixPaths.push(newFilenameParts[i]); - i += 1; - } else { - break; - } - } - while (j > i && k > i) { - if (oldFilenameParts[j] === newFilenameParts[k]) { - suffixPaths.unshift(newFilenameParts[k]); - j -= 1; - k -= 1; - } else { - break; - } - } - const finalPrefix = prefixPaths.join(separator); - const finalSuffix = suffixPaths.join(separator); - const oldRemainingPath = oldFilenameParts.slice(i, j + 1).join(separator); - const newRemainingPath = newFilenameParts.slice(i, k + 1).join(separator); - if (finalPrefix.length && finalSuffix.length) { - return finalPrefix + separator + "{" + oldRemainingPath + " \u2192 " + newRemainingPath + "}" + separator + finalSuffix; - } else if (finalPrefix.length) { - return finalPrefix + separator + "{" + oldRemainingPath + " \u2192 " + newRemainingPath + "}"; - } else if (finalSuffix.length) { - return "{" + oldRemainingPath + " \u2192 " + newRemainingPath + "}" + separator + finalSuffix; - } - return oldFilename + " \u2192 " + newFilename; - } else if (!isDevNullName(newFilename)) { - return newFilename; - } else { - return oldFilename; - } -} -function getHtmlId(file) { - return `d2h-${hashCode(filenameDiff(file)).toString().slice(-6)}`; -} -function getFileIcon(file) { - let templateName = "file-changed"; - if (file.isRename) { - templateName = "file-renamed"; - } else if (file.isCopy) { - templateName = "file-renamed"; - } else if (file.isNew) { - templateName = "file-added"; - } else if (file.isDeleted) { - templateName = "file-deleted"; - } else if (file.newName !== file.oldName) { - templateName = "file-renamed"; - } - return templateName; -} -function diffHighlight(diffLine1, diffLine2, isCombined, config = {}) { - const { matching, maxLineLengthHighlight, matchWordsThreshold, diffStyle } = Object.assign(Object.assign({}, defaultRenderConfig), config); - const line1 = deconstructLine(diffLine1, isCombined, false); - const line2 = deconstructLine(diffLine2, isCombined, false); - if (line1.content.length > maxLineLengthHighlight || line2.content.length > maxLineLengthHighlight) { - return { - oldLine: { - prefix: line1.prefix, - content: escapeForHtml(line1.content) - }, - newLine: { - prefix: line2.prefix, - content: escapeForHtml(line2.content) - } - }; - } - const diff3 = diffStyle === "char" ? diffChars(line1.content, line2.content) : diffWordsWithSpace(line1.content, line2.content); - const changedWords = []; - if (diffStyle === "word" && matching === "words") { - const removed = diff3.filter((element2) => element2.removed); - const added = diff3.filter((element2) => element2.added); - const chunks = matcher(added, removed); - chunks.forEach((chunk) => { - if (chunk[0].length === 1 && chunk[1].length === 1) { - const dist = distance(chunk[0][0], chunk[1][0]); - if (dist < matchWordsThreshold) { - changedWords.push(chunk[0][0]); - changedWords.push(chunk[1][0]); - } - } - }); - } - const highlightedLine = diff3.reduce((highlightedLine2, part) => { - const elemType = part.added ? "ins" : part.removed ? "del" : null; - const addClass = changedWords.indexOf(part) > -1 ? ' class="d2h-change"' : ""; - const escapedValue = escapeForHtml(part.value); - return elemType !== null ? `${highlightedLine2}<${elemType}${addClass}>${escapedValue}` : `${highlightedLine2}${escapedValue}`; - }, ""); - return { - oldLine: { - prefix: line1.prefix, - content: removeInsElements(highlightedLine) - }, - newLine: { - prefix: line2.prefix, - content: removeDelElements(highlightedLine) - } - }; -} - -// node_modules/.pnpm/diff2html@3.4.47/node_modules/diff2html/lib-esm/file-list-renderer.js -var baseTemplatesPath = "file-summary"; -var iconsBaseTemplatesPath = "icon"; -var defaultFileListRendererConfig = { - colorScheme: defaultRenderConfig.colorScheme -}; -var FileListRenderer = class { - constructor(hoganUtils, config = {}) { - this.hoganUtils = hoganUtils; - this.config = Object.assign(Object.assign({}, defaultFileListRendererConfig), config); - } - render(diffFiles) { - const files = diffFiles.map((file) => this.hoganUtils.render(baseTemplatesPath, "line", { - fileHtmlId: getHtmlId(file), - oldName: file.oldName, - newName: file.newName, - fileName: filenameDiff(file), - deletedLines: "-" + file.deletedLines, - addedLines: "+" + file.addedLines - }, { - fileIcon: this.hoganUtils.template(iconsBaseTemplatesPath, getFileIcon(file)) - })).join("\n"); - return this.hoganUtils.render(baseTemplatesPath, "wrapper", { - colorScheme: colorSchemeToCss(this.config.colorScheme), - filesNumber: diffFiles.length, - files - }); - } -}; - -// node_modules/.pnpm/diff2html@3.4.47/node_modules/diff2html/lib-esm/line-by-line-renderer.js -init_polyfill_buffer(); -var defaultLineByLineRendererConfig = Object.assign(Object.assign({}, defaultRenderConfig), { renderNothingWhenEmpty: false, matchingMaxComparisons: 2500, maxLineSizeInBlockForComparison: 200 }); -var genericTemplatesPath = "generic"; -var baseTemplatesPath2 = "line-by-line"; -var iconsBaseTemplatesPath2 = "icon"; -var tagsBaseTemplatesPath = "tag"; -var LineByLineRenderer = class { - constructor(hoganUtils, config = {}) { - this.hoganUtils = hoganUtils; - this.config = Object.assign(Object.assign({}, defaultLineByLineRendererConfig), config); - } - render(diffFiles) { - const diffsHtml = diffFiles.map((file) => { - let diffs; - if (file.blocks.length) { - diffs = this.generateFileHtml(file); - } else { - diffs = this.generateEmptyDiff(); - } - return this.makeFileDiffHtml(file, diffs); - }).join("\n"); - return this.hoganUtils.render(genericTemplatesPath, "wrapper", { - colorScheme: colorSchemeToCss(this.config.colorScheme), - content: diffsHtml - }); - } - makeFileDiffHtml(file, diffs) { - if (this.config.renderNothingWhenEmpty && Array.isArray(file.blocks) && file.blocks.length === 0) - return ""; - const fileDiffTemplate = this.hoganUtils.template(baseTemplatesPath2, "file-diff"); - const filePathTemplate = this.hoganUtils.template(genericTemplatesPath, "file-path"); - const fileIconTemplate = this.hoganUtils.template(iconsBaseTemplatesPath2, "file"); - const fileTagTemplate = this.hoganUtils.template(tagsBaseTemplatesPath, getFileIcon(file)); - return fileDiffTemplate.render({ - file, - fileHtmlId: getHtmlId(file), - diffs, - filePath: filePathTemplate.render({ - fileDiffName: filenameDiff(file) - }, { - fileIcon: fileIconTemplate, - fileTag: fileTagTemplate - }) - }); - } - generateEmptyDiff() { - return this.hoganUtils.render(genericTemplatesPath, "empty-diff", { - contentClass: "d2h-code-line", - CSSLineClass - }); - } - generateFileHtml(file) { - const matcher2 = newMatcherFn(newDistanceFn((e) => deconstructLine(e.content, file.isCombined).content)); - return file.blocks.map((block) => { - let lines = this.hoganUtils.render(genericTemplatesPath, "block-header", { - CSSLineClass, - blockHeader: file.isTooBig ? block.header : escapeForHtml(block.header), - lineClass: "d2h-code-linenumber", - contentClass: "d2h-code-line" - }); - this.applyLineGroupping(block).forEach(([contextLines, oldLines, newLines]) => { - if (oldLines.length && newLines.length && !contextLines.length) { - this.applyRematchMatching(oldLines, newLines, matcher2).map(([oldLines2, newLines2]) => { - const { left, right } = this.processChangedLines(file, file.isCombined, oldLines2, newLines2); - lines += left; - lines += right; - }); - } else if (contextLines.length) { - contextLines.forEach((line) => { - const { prefix, content } = deconstructLine(line.content, file.isCombined); - lines += this.generateSingleLineHtml(file, { - type: CSSLineClass.CONTEXT, - prefix, - content, - oldNumber: line.oldNumber, - newNumber: line.newNumber - }); - }); - } else if (oldLines.length || newLines.length) { - const { left, right } = this.processChangedLines(file, file.isCombined, oldLines, newLines); - lines += left; - lines += right; - } else { - console.error("Unknown state reached while processing groups of lines", contextLines, oldLines, newLines); - } - }); - return lines; - }).join("\n"); - } - applyLineGroupping(block) { - const blockLinesGroups = []; - let oldLines = []; - let newLines = []; - for (let i = 0; i < block.lines.length; i++) { - const diffLine = block.lines[i]; - if (diffLine.type !== LineType.INSERT && newLines.length || diffLine.type === LineType.CONTEXT && oldLines.length > 0) { - blockLinesGroups.push([[], oldLines, newLines]); - oldLines = []; - newLines = []; - } - if (diffLine.type === LineType.CONTEXT) { - blockLinesGroups.push([[diffLine], [], []]); - } else if (diffLine.type === LineType.INSERT && oldLines.length === 0) { - blockLinesGroups.push([[], [], [diffLine]]); - } else if (diffLine.type === LineType.INSERT && oldLines.length > 0) { - newLines.push(diffLine); - } else if (diffLine.type === LineType.DELETE) { - oldLines.push(diffLine); - } - } - if (oldLines.length || newLines.length) { - blockLinesGroups.push([[], oldLines, newLines]); - oldLines = []; - newLines = []; - } - return blockLinesGroups; - } - applyRematchMatching(oldLines, newLines, matcher2) { - const comparisons = oldLines.length * newLines.length; - const maxLineSizeInBlock = Math.max.apply(null, [0].concat(oldLines.concat(newLines).map((elem) => elem.content.length))); - const doMatching = comparisons < this.config.matchingMaxComparisons && maxLineSizeInBlock < this.config.maxLineSizeInBlockForComparison && (this.config.matching === "lines" || this.config.matching === "words"); - return doMatching ? matcher2(oldLines, newLines) : [[oldLines, newLines]]; - } - processChangedLines(file, isCombined, oldLines, newLines) { - const fileHtml = { - right: "", - left: "" - }; - const maxLinesNumber = Math.max(oldLines.length, newLines.length); - for (let i = 0; i < maxLinesNumber; i++) { - const oldLine = oldLines[i]; - const newLine = newLines[i]; - const diff3 = oldLine !== void 0 && newLine !== void 0 ? diffHighlight(oldLine.content, newLine.content, isCombined, this.config) : void 0; - const preparedOldLine = oldLine !== void 0 && oldLine.oldNumber !== void 0 ? Object.assign(Object.assign({}, diff3 !== void 0 ? { - prefix: diff3.oldLine.prefix, - content: diff3.oldLine.content, - type: CSSLineClass.DELETE_CHANGES - } : Object.assign(Object.assign({}, deconstructLine(oldLine.content, isCombined)), { type: toCSSClass(oldLine.type) })), { oldNumber: oldLine.oldNumber, newNumber: oldLine.newNumber }) : void 0; - const preparedNewLine = newLine !== void 0 && newLine.newNumber !== void 0 ? Object.assign(Object.assign({}, diff3 !== void 0 ? { - prefix: diff3.newLine.prefix, - content: diff3.newLine.content, - type: CSSLineClass.INSERT_CHANGES - } : Object.assign(Object.assign({}, deconstructLine(newLine.content, isCombined)), { type: toCSSClass(newLine.type) })), { oldNumber: newLine.oldNumber, newNumber: newLine.newNumber }) : void 0; - const { left, right } = this.generateLineHtml(file, preparedOldLine, preparedNewLine); - fileHtml.left += left; - fileHtml.right += right; - } - return fileHtml; - } - generateLineHtml(file, oldLine, newLine) { - return { - left: this.generateSingleLineHtml(file, oldLine), - right: this.generateSingleLineHtml(file, newLine) - }; - } - generateSingleLineHtml(file, line) { - if (line === void 0) - return ""; - const lineNumberHtml = this.hoganUtils.render(baseTemplatesPath2, "numbers", { - oldNumber: line.oldNumber || "", - newNumber: line.newNumber || "" - }); - return this.hoganUtils.render(genericTemplatesPath, "line", { - type: line.type, - lineClass: "d2h-code-linenumber", - contentClass: "d2h-code-line", - prefix: line.prefix === " " ? " " : line.prefix, - content: line.content, - lineNumber: lineNumberHtml, - line, - file - }); - } -}; - -// node_modules/.pnpm/diff2html@3.4.47/node_modules/diff2html/lib-esm/side-by-side-renderer.js -init_polyfill_buffer(); -var defaultSideBySideRendererConfig = Object.assign(Object.assign({}, defaultRenderConfig), { renderNothingWhenEmpty: false, matchingMaxComparisons: 2500, maxLineSizeInBlockForComparison: 200 }); -var genericTemplatesPath2 = "generic"; -var baseTemplatesPath3 = "side-by-side"; -var iconsBaseTemplatesPath3 = "icon"; -var tagsBaseTemplatesPath2 = "tag"; -var SideBySideRenderer = class { - constructor(hoganUtils, config = {}) { - this.hoganUtils = hoganUtils; - this.config = Object.assign(Object.assign({}, defaultSideBySideRendererConfig), config); - } - render(diffFiles) { - const diffsHtml = diffFiles.map((file) => { - let diffs; - if (file.blocks.length) { - diffs = this.generateFileHtml(file); - } else { - diffs = this.generateEmptyDiff(); - } - return this.makeFileDiffHtml(file, diffs); - }).join("\n"); - return this.hoganUtils.render(genericTemplatesPath2, "wrapper", { - colorScheme: colorSchemeToCss(this.config.colorScheme), - content: diffsHtml - }); - } - makeFileDiffHtml(file, diffs) { - if (this.config.renderNothingWhenEmpty && Array.isArray(file.blocks) && file.blocks.length === 0) - return ""; - const fileDiffTemplate = this.hoganUtils.template(baseTemplatesPath3, "file-diff"); - const filePathTemplate = this.hoganUtils.template(genericTemplatesPath2, "file-path"); - const fileIconTemplate = this.hoganUtils.template(iconsBaseTemplatesPath3, "file"); - const fileTagTemplate = this.hoganUtils.template(tagsBaseTemplatesPath2, getFileIcon(file)); - return fileDiffTemplate.render({ - file, - fileHtmlId: getHtmlId(file), - diffs, - filePath: filePathTemplate.render({ - fileDiffName: filenameDiff(file) - }, { - fileIcon: fileIconTemplate, - fileTag: fileTagTemplate - }) - }); - } - generateEmptyDiff() { - return { - right: "", - left: this.hoganUtils.render(genericTemplatesPath2, "empty-diff", { - contentClass: "d2h-code-side-line", - CSSLineClass - }) - }; - } - generateFileHtml(file) { - const matcher2 = newMatcherFn(newDistanceFn((e) => deconstructLine(e.content, file.isCombined).content)); - return file.blocks.map((block) => { - const fileHtml = { - left: this.makeHeaderHtml(block.header, file), - right: this.makeHeaderHtml("") - }; - this.applyLineGroupping(block).forEach(([contextLines, oldLines, newLines]) => { - if (oldLines.length && newLines.length && !contextLines.length) { - this.applyRematchMatching(oldLines, newLines, matcher2).map(([oldLines2, newLines2]) => { - const { left, right } = this.processChangedLines(file.isCombined, oldLines2, newLines2); - fileHtml.left += left; - fileHtml.right += right; - }); - } else if (contextLines.length) { - contextLines.forEach((line) => { - const { prefix, content } = deconstructLine(line.content, file.isCombined); - const { left, right } = this.generateLineHtml({ - type: CSSLineClass.CONTEXT, - prefix, - content, - number: line.oldNumber - }, { - type: CSSLineClass.CONTEXT, - prefix, - content, - number: line.newNumber - }); - fileHtml.left += left; - fileHtml.right += right; - }); - } else if (oldLines.length || newLines.length) { - const { left, right } = this.processChangedLines(file.isCombined, oldLines, newLines); - fileHtml.left += left; - fileHtml.right += right; - } else { - console.error("Unknown state reached while processing groups of lines", contextLines, oldLines, newLines); - } - }); - return fileHtml; - }).reduce((accomulated, html2) => { - return { left: accomulated.left + html2.left, right: accomulated.right + html2.right }; - }, { left: "", right: "" }); - } - applyLineGroupping(block) { - const blockLinesGroups = []; - let oldLines = []; - let newLines = []; - for (let i = 0; i < block.lines.length; i++) { - const diffLine = block.lines[i]; - if (diffLine.type !== LineType.INSERT && newLines.length || diffLine.type === LineType.CONTEXT && oldLines.length > 0) { - blockLinesGroups.push([[], oldLines, newLines]); - oldLines = []; - newLines = []; - } - if (diffLine.type === LineType.CONTEXT) { - blockLinesGroups.push([[diffLine], [], []]); - } else if (diffLine.type === LineType.INSERT && oldLines.length === 0) { - blockLinesGroups.push([[], [], [diffLine]]); - } else if (diffLine.type === LineType.INSERT && oldLines.length > 0) { - newLines.push(diffLine); - } else if (diffLine.type === LineType.DELETE) { - oldLines.push(diffLine); - } - } - if (oldLines.length || newLines.length) { - blockLinesGroups.push([[], oldLines, newLines]); - oldLines = []; - newLines = []; - } - return blockLinesGroups; - } - applyRematchMatching(oldLines, newLines, matcher2) { - const comparisons = oldLines.length * newLines.length; - const maxLineSizeInBlock = Math.max.apply(null, [0].concat(oldLines.concat(newLines).map((elem) => elem.content.length))); - const doMatching = comparisons < this.config.matchingMaxComparisons && maxLineSizeInBlock < this.config.maxLineSizeInBlockForComparison && (this.config.matching === "lines" || this.config.matching === "words"); - return doMatching ? matcher2(oldLines, newLines) : [[oldLines, newLines]]; - } - makeHeaderHtml(blockHeader, file) { - return this.hoganUtils.render(genericTemplatesPath2, "block-header", { - CSSLineClass, - blockHeader: (file === null || file === void 0 ? void 0 : file.isTooBig) ? blockHeader : escapeForHtml(blockHeader), - lineClass: "d2h-code-side-linenumber", - contentClass: "d2h-code-side-line" - }); - } - processChangedLines(isCombined, oldLines, newLines) { - const fileHtml = { - right: "", - left: "" - }; - const maxLinesNumber = Math.max(oldLines.length, newLines.length); - for (let i = 0; i < maxLinesNumber; i++) { - const oldLine = oldLines[i]; - const newLine = newLines[i]; - const diff3 = oldLine !== void 0 && newLine !== void 0 ? diffHighlight(oldLine.content, newLine.content, isCombined, this.config) : void 0; - const preparedOldLine = oldLine !== void 0 && oldLine.oldNumber !== void 0 ? Object.assign(Object.assign({}, diff3 !== void 0 ? { - prefix: diff3.oldLine.prefix, - content: diff3.oldLine.content, - type: CSSLineClass.DELETE_CHANGES - } : Object.assign(Object.assign({}, deconstructLine(oldLine.content, isCombined)), { type: toCSSClass(oldLine.type) })), { number: oldLine.oldNumber }) : void 0; - const preparedNewLine = newLine !== void 0 && newLine.newNumber !== void 0 ? Object.assign(Object.assign({}, diff3 !== void 0 ? { - prefix: diff3.newLine.prefix, - content: diff3.newLine.content, - type: CSSLineClass.INSERT_CHANGES - } : Object.assign(Object.assign({}, deconstructLine(newLine.content, isCombined)), { type: toCSSClass(newLine.type) })), { number: newLine.newNumber }) : void 0; - const { left, right } = this.generateLineHtml(preparedOldLine, preparedNewLine); - fileHtml.left += left; - fileHtml.right += right; - } - return fileHtml; - } - generateLineHtml(oldLine, newLine) { - return { - left: this.generateSingleHtml(oldLine), - right: this.generateSingleHtml(newLine) - }; - } - generateSingleHtml(line) { - const lineClass = "d2h-code-side-linenumber"; - const contentClass = "d2h-code-side-line"; - return this.hoganUtils.render(genericTemplatesPath2, "line", { - type: (line === null || line === void 0 ? void 0 : line.type) || `${CSSLineClass.CONTEXT} d2h-emptyplaceholder`, - lineClass: line !== void 0 ? lineClass : `${lineClass} d2h-code-side-emptyplaceholder`, - contentClass: line !== void 0 ? contentClass : `${contentClass} d2h-code-side-emptyplaceholder`, - prefix: (line === null || line === void 0 ? void 0 : line.prefix) === " " ? " " : line === null || line === void 0 ? void 0 : line.prefix, - content: line === null || line === void 0 ? void 0 : line.content, - lineNumber: line === null || line === void 0 ? void 0 : line.number - }); - } -}; - -// node_modules/.pnpm/diff2html@3.4.47/node_modules/diff2html/lib-esm/hoganjs-utils.js -init_polyfill_buffer(); -var Hogan3 = __toESM(require_hogan()); - -// node_modules/.pnpm/diff2html@3.4.47/node_modules/diff2html/lib-esm/diff2html-templates.js -init_polyfill_buffer(); -var Hogan2 = __toESM(require_hogan()); -var defaultTemplates = {}; -defaultTemplates["file-summary-line"] = new Hogan2.Template({ code: function(c, p, i) { - var t = this; - t.b(i = i || ""); - t.b('
  • '); - t.b("\n" + i); - t.b(' '); - t.b("\n" + i); - t.b(t.rp("'); - t.b(t.v(t.f("fileName", c, p, 0))); - t.b(""); - t.b("\n" + i); - t.b(' '); - t.b("\n" + i); - t.b(' '); - t.b(t.v(t.f("addedLines", c, p, 0))); - t.b(""); - t.b("\n" + i); - t.b(' '); - t.b(t.v(t.f("deletedLines", c, p, 0))); - t.b(""); - t.b("\n" + i); - t.b(" "); - t.b("\n" + i); - t.b(" "); - t.b("\n" + i); - t.b("
  • "); - return t.fl(); -}, partials: { "'); - t.b("\n" + i); - t.b('
    '); - t.b("\n" + i); - t.b(' Files changed ('); - t.b(t.v(t.f("filesNumber", c, p, 0))); - t.b(")"); - t.b("\n" + i); - t.b(' hide'); - t.b("\n" + i); - t.b(' show'); - t.b("\n" + i); - t.b("
    "); - t.b("\n" + i); - t.b('
      '); - t.b("\n" + i); - t.b(" "); - t.b(t.t(t.f("files", c, p, 0))); - t.b("\n" + i); - t.b("
    "); - t.b("\n" + i); - t.b(""); - return t.fl(); -}, partials: {}, subs: {} }); -defaultTemplates["generic-block-header"] = new Hogan2.Template({ code: function(c, p, i) { - var t = this; - t.b(i = i || ""); - t.b(""); - t.b("\n" + i); - t.b(' '); - t.b("\n" + i); - t.b(' '); - t.b("\n" + i); - t.b('
    '); - if (t.s(t.f("blockHeader", c, p, 1), c, p, 0, 156, 173, "{{ }}")) { - t.rs(c, p, function(c2, p2, t2) { - t2.b(t2.t(t2.f("blockHeader", c2, p2, 0))); - }); - c.pop(); - } - if (!t.s(t.f("blockHeader", c, p, 1), c, p, 1, 0, 0, "")) { - t.b(" "); - } - ; - t.b("
    "); - t.b("\n" + i); - t.b(" "); - t.b("\n" + i); - t.b(""); - return t.fl(); -}, partials: {}, subs: {} }); -defaultTemplates["generic-empty-diff"] = new Hogan2.Template({ code: function(c, p, i) { - var t = this; - t.b(i = i || ""); - t.b(""); - t.b("\n" + i); - t.b(' '); - t.b("\n" + i); - t.b('
    '); - t.b("\n" + i); - t.b(" File without changes"); - t.b("\n" + i); - t.b("
    "); - t.b("\n" + i); - t.b(" "); - t.b("\n" + i); - t.b(""); - return t.fl(); -}, partials: {}, subs: {} }); -defaultTemplates["generic-file-path"] = new Hogan2.Template({ code: function(c, p, i) { - var t = this; - t.b(i = i || ""); - t.b(''); - t.b("\n" + i); - t.b(t.rp("'); - t.b(t.v(t.f("fileDiffName", c, p, 0))); - t.b(""); - t.b("\n" + i); - t.b(t.rp(""); - t.b("\n" + i); - t.b('"); - return t.fl(); -}, partials: { ""); - t.b("\n" + i); - t.b(' '); - t.b("\n" + i); - t.b(" "); - t.b(t.t(t.f("lineNumber", c, p, 0))); - t.b("\n" + i); - t.b(" "); - t.b("\n" + i); - t.b(' '); - t.b("\n" + i); - t.b('
    '); - t.b("\n" + i); - if (t.s(t.f("prefix", c, p, 1), c, p, 0, 162, 238, "{{ }}")) { - t.rs(c, p, function(c2, p2, t2) { - t2.b(' '); - t2.b(t2.t(t2.f("prefix", c2, p2, 0))); - t2.b(""); - t2.b("\n" + i); - }); - c.pop(); - } - if (!t.s(t.f("prefix", c, p, 1), c, p, 1, 0, 0, "")) { - t.b('  '); - t.b("\n" + i); - } - ; - if (t.s(t.f("content", c, p, 1), c, p, 0, 371, 445, "{{ }}")) { - t.rs(c, p, function(c2, p2, t2) { - t2.b(' '); - t2.b(t2.t(t2.f("content", c2, p2, 0))); - t2.b(""); - t2.b("\n" + i); - }); - c.pop(); - } - if (!t.s(t.f("content", c, p, 1), c, p, 1, 0, 0, "")) { - t.b('
    '); - t.b("\n" + i); - } - ; - t.b("
    "); - t.b("\n" + i); - t.b(" "); - t.b("\n" + i); - t.b(""); - return t.fl(); -}, partials: {}, subs: {} }); -defaultTemplates["generic-wrapper"] = new Hogan2.Template({ code: function(c, p, i) { - var t = this; - t.b(i = i || ""); - t.b('
    '); - t.b("\n" + i); - t.b(" "); - t.b(t.t(t.f("content", c, p, 0))); - t.b("\n" + i); - t.b("
    "); - return t.fl(); -}, partials: {}, subs: {} }); -defaultTemplates["icon-file-added"] = new Hogan2.Template({ code: function(c, p, i) { - var t = this; - t.b(i = i || ""); - t.b('"); - return t.fl(); -}, partials: {}, subs: {} }); -defaultTemplates["icon-file-changed"] = new Hogan2.Template({ code: function(c, p, i) { - var t = this; - t.b(i = i || ""); - t.b('"); - return t.fl(); -}, partials: {}, subs: {} }); -defaultTemplates["icon-file-deleted"] = new Hogan2.Template({ code: function(c, p, i) { - var t = this; - t.b(i = i || ""); - t.b('"); - return t.fl(); -}, partials: {}, subs: {} }); -defaultTemplates["icon-file-renamed"] = new Hogan2.Template({ code: function(c, p, i) { - var t = this; - t.b(i = i || ""); - t.b('"); - return t.fl(); -}, partials: {}, subs: {} }); -defaultTemplates["icon-file"] = new Hogan2.Template({ code: function(c, p, i) { - var t = this; - t.b(i = i || ""); - t.b('"); - return t.fl(); -}, partials: {}, subs: {} }); -defaultTemplates["line-by-line-file-diff"] = new Hogan2.Template({ code: function(c, p, i) { - var t = this; - t.b(i = i || ""); - t.b('
    '); - t.b("\n" + i); - t.b('
    '); - t.b("\n" + i); - t.b(" "); - t.b(t.t(t.f("filePath", c, p, 0))); - t.b("\n" + i); - t.b("
    "); - t.b("\n" + i); - t.b('
    '); - t.b("\n" + i); - t.b('
    '); - t.b("\n" + i); - t.b(' '); - t.b("\n" + i); - t.b(' '); - t.b("\n" + i); - t.b(" "); - t.b(t.t(t.f("diffs", c, p, 0))); - t.b("\n" + i); - t.b(" "); - t.b("\n" + i); - t.b("
    "); - t.b("\n" + i); - t.b("
    "); - t.b("\n" + i); - t.b("
    "); - t.b("\n" + i); - t.b("
    "); - return t.fl(); -}, partials: {}, subs: {} }); -defaultTemplates["line-by-line-numbers"] = new Hogan2.Template({ code: function(c, p, i) { - var t = this; - t.b(i = i || ""); - t.b('
    '); - t.b(t.v(t.f("oldNumber", c, p, 0))); - t.b("
    "); - t.b("\n" + i); - t.b('
    '); - t.b(t.v(t.f("newNumber", c, p, 0))); - t.b("
    "); - return t.fl(); -}, partials: {}, subs: {} }); -defaultTemplates["side-by-side-file-diff"] = new Hogan2.Template({ code: function(c, p, i) { - var t = this; - t.b(i = i || ""); - t.b('
    '); - t.b("\n" + i); - t.b('
    '); - t.b("\n" + i); - t.b(" "); - t.b(t.t(t.f("filePath", c, p, 0))); - t.b("\n" + i); - t.b("
    "); - t.b("\n" + i); - t.b('
    '); - t.b("\n" + i); - t.b('
    '); - t.b("\n" + i); - t.b('
    '); - t.b("\n" + i); - t.b(' '); - t.b("\n" + i); - t.b(' '); - t.b("\n" + i); - t.b(" "); - t.b(t.t(t.d("diffs.left", c, p, 0))); - t.b("\n" + i); - t.b(" "); - t.b("\n" + i); - t.b("
    "); - t.b("\n" + i); - t.b("
    "); - t.b("\n" + i); - t.b("
    "); - t.b("\n" + i); - t.b('
    '); - t.b("\n" + i); - t.b('
    '); - t.b("\n" + i); - t.b(' '); - t.b("\n" + i); - t.b(' '); - t.b("\n" + i); - t.b(" "); - t.b(t.t(t.d("diffs.right", c, p, 0))); - t.b("\n" + i); - t.b(" "); - t.b("\n" + i); - t.b("
    "); - t.b("\n" + i); - t.b("
    "); - t.b("\n" + i); - t.b("
    "); - t.b("\n" + i); - t.b("
    "); - t.b("\n" + i); - t.b("
    "); - return t.fl(); -}, partials: {}, subs: {} }); -defaultTemplates["tag-file-added"] = new Hogan2.Template({ code: function(c, p, i) { - var t = this; - t.b(i = i || ""); - t.b('ADDED'); - return t.fl(); -}, partials: {}, subs: {} }); -defaultTemplates["tag-file-changed"] = new Hogan2.Template({ code: function(c, p, i) { - var t = this; - t.b(i = i || ""); - t.b('CHANGED'); - return t.fl(); -}, partials: {}, subs: {} }); -defaultTemplates["tag-file-deleted"] = new Hogan2.Template({ code: function(c, p, i) { - var t = this; - t.b(i = i || ""); - t.b('DELETED'); - return t.fl(); -}, partials: {}, subs: {} }); -defaultTemplates["tag-file-renamed"] = new Hogan2.Template({ code: function(c, p, i) { - var t = this; - t.b(i = i || ""); - t.b('RENAMED'); - return t.fl(); -}, partials: {}, subs: {} }); - -// node_modules/.pnpm/diff2html@3.4.47/node_modules/diff2html/lib-esm/hoganjs-utils.js -var HoganJsUtils = class { - constructor({ compiledTemplates = {}, rawTemplates = {} }) { - const compiledRawTemplates = Object.entries(rawTemplates).reduce((previousTemplates, [name, templateString]) => { - const compiledTemplate = Hogan3.compile(templateString, { asString: false }); - return Object.assign(Object.assign({}, previousTemplates), { [name]: compiledTemplate }); - }, {}); - this.preCompiledTemplates = Object.assign(Object.assign(Object.assign({}, defaultTemplates), compiledTemplates), compiledRawTemplates); - } - static compile(templateString) { - return Hogan3.compile(templateString, { asString: false }); - } - render(namespace, view, params, partials, indent2) { - const templateKey = this.templateKey(namespace, view); - try { - const template = this.preCompiledTemplates[templateKey]; - return template.render(params, partials, indent2); - } catch (e) { - throw new Error(`Could not find template to render '${templateKey}'`); - } - } - template(namespace, view) { - return this.preCompiledTemplates[this.templateKey(namespace, view)]; - } - templateKey(namespace, view) { - return `${namespace}-${view}`; - } -}; - -// node_modules/.pnpm/diff2html@3.4.47/node_modules/diff2html/lib-esm/diff2html.js -var defaultDiff2HtmlConfig = Object.assign(Object.assign(Object.assign({}, defaultLineByLineRendererConfig), defaultSideBySideRendererConfig), { outputFormat: OutputFormatType.LINE_BY_LINE, drawFileList: true }); -function html(diffInput, configuration = {}) { - const config = Object.assign(Object.assign({}, defaultDiff2HtmlConfig), configuration); - const diffJson = typeof diffInput === "string" ? parse(diffInput, config) : diffInput; - const hoganUtils = new HoganJsUtils(config); - const { colorScheme } = config; - const fileListRendererConfig = { colorScheme }; - const fileList = config.drawFileList ? new FileListRenderer(hoganUtils, fileListRendererConfig).render(diffJson) : ""; - const diffOutput = config.outputFormat === "side-by-side" ? new SideBySideRenderer(hoganUtils, config).render(diffJson) : new LineByLineRenderer(hoganUtils, config).render(diffJson); - return fileList + diffOutput; -} - -// src/ui/diff/diffView.ts -var import_obsidian17 = require("obsidian"); -var DiffView = class extends import_obsidian17.ItemView { - constructor(leaf, plugin) { - super(leaf); - this.plugin = plugin; - this.gettingDiff = false; - this.gitRefreshBind = this.refresh.bind(this); - this.gitViewRefreshBind = this.refresh.bind(this); - this.parser = new DOMParser(); - this.navigation = true; - addEventListener("git-refresh", this.gitRefreshBind); - addEventListener("git-view-refresh", this.gitViewRefreshBind); - } - getViewType() { - return DIFF_VIEW_CONFIG.type; - } - getDisplayText() { - var _a2; - if (((_a2 = this.state) == null ? void 0 : _a2.file) != null) { - let fileName = this.state.file.split("/").last(); - if (fileName == null ? void 0 : fileName.endsWith(".md")) - fileName = fileName.slice(0, -3); - return DIFF_VIEW_CONFIG.name + ` (${fileName})`; - } - return DIFF_VIEW_CONFIG.name; - } - getIcon() { - return DIFF_VIEW_CONFIG.icon; - } - async setState(state, result) { - this.state = state; - if (import_obsidian17.Platform.isMobile) { - this.leaf.view.titleEl.textContent = this.getDisplayText(); - } - await this.refresh(); - } - getState() { - return this.state; - } - onClose() { - removeEventListener("git-refresh", this.gitRefreshBind); - removeEventListener("git-view-refresh", this.gitViewRefreshBind); - return super.onClose(); - } - onOpen() { - this.refresh(); - return super.onOpen(); - } - async refresh() { - var _a2; - if (((_a2 = this.state) == null ? void 0 : _a2.file) && !this.gettingDiff && this.plugin.gitManager) { - this.gettingDiff = true; - try { - let diff3 = await this.plugin.gitManager.getDiffString( - this.state.file, - this.state.staged, - this.state.hash - ); - this.contentEl.empty(); - if (!diff3) { - if (this.plugin.gitManager instanceof SimpleGit && await this.plugin.gitManager.isTracked( - this.state.file - )) { - diff3 = [ - `--- ${this.state.file}`, - `+++ ${this.state.file}`, - "" - ].join("\n"); - } else { - const content = await this.app.vault.adapter.read( - this.plugin.gitManager.getRelativeVaultPath( - this.state.file - ) - ); - const header = `--- /dev/null -+++ ${this.state.file} -@@ -0,0 +1,${content.split("\n").length} @@`; - diff3 = [ - ...header.split("\n"), - ...content.split("\n").map((line) => `+${line}`) - ].join("\n"); - } - } - const diffEl = this.parser.parseFromString(html(diff3), "text/html").querySelector(".d2h-file-diff"); - this.contentEl.append(diffEl); - } finally { - this.gettingDiff = false; - } - } - } -}; - -// src/ui/history/historyView.ts -init_polyfill_buffer(); -var import_obsidian21 = require("obsidian"); - -// src/ui/history/historyView.svelte -init_polyfill_buffer(); - -// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/runtime/internal/index.js -init_polyfill_buffer(); - -// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/runtime/internal/animations.js -init_polyfill_buffer(); - -// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/runtime/internal/utils.js -init_polyfill_buffer(); -function noop() { -} -var identity = (x) => x; -function run(fn) { - return fn(); -} -function blank_object() { - return /* @__PURE__ */ Object.create(null); -} -function run_all(fns) { - fns.forEach(run); -} -function is_function(thing) { - return typeof thing === "function"; -} -function safe_not_equal(a, b) { - return a != a ? b == b : a !== b || a && typeof a === "object" || typeof a === "function"; -} -function is_empty(obj) { - return Object.keys(obj).length === 0; -} - -// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/runtime/internal/environment.js -init_polyfill_buffer(); -var is_client = typeof window !== "undefined"; -var now = is_client ? () => window.performance.now() : () => Date.now(); -var raf = is_client ? (cb) => requestAnimationFrame(cb) : noop; - -// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/runtime/internal/loop.js -init_polyfill_buffer(); -var tasks = /* @__PURE__ */ new Set(); -function run_tasks(now2) { - tasks.forEach((task) => { - if (!task.c(now2)) { - tasks.delete(task); - task.f(); - } - }); - if (tasks.size !== 0) - raf(run_tasks); -} -function loop(callback) { - let task; - if (tasks.size === 0) - raf(run_tasks); - return { - promise: new Promise((fulfill) => { - tasks.add(task = { c: callback, f: fulfill }); - }), - abort() { - tasks.delete(task); - } - }; -} - -// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/runtime/internal/style_manager.js -init_polyfill_buffer(); - -// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/runtime/internal/dom.js -init_polyfill_buffer(); - -// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/runtime/internal/ResizeObserverSingleton.js -init_polyfill_buffer(); - -// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/runtime/internal/globals.js -init_polyfill_buffer(); -var globals = typeof window !== "undefined" ? window : typeof globalThis !== "undefined" ? globalThis : ( - // @ts-ignore Node typings have this - global -); - -// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/runtime/internal/ResizeObserverSingleton.js -var ResizeObserverSingleton = class _ResizeObserverSingleton { - /** @param {ResizeObserverOptions} options */ - constructor(options) { - /** - * @private - * @readonly - * @type {WeakMap} - */ - __publicField(this, "_listeners", "WeakMap" in globals ? /* @__PURE__ */ new WeakMap() : void 0); - /** - * @private - * @type {ResizeObserver} - */ - __publicField(this, "_observer"); - /** @type {ResizeObserverOptions} */ - __publicField(this, "options"); - this.options = options; - } - /** - * @param {Element} element - * @param {import('./private.js').Listener} listener - * @returns {() => void} - */ - observe(element2, listener) { - this._listeners.set(element2, listener); - this._getObserver().observe(element2, this.options); - return () => { - this._listeners.delete(element2); - this._observer.unobserve(element2); - }; - } - /** - * @private - */ - _getObserver() { - var _a2; - return (_a2 = this._observer) != null ? _a2 : this._observer = new ResizeObserver((entries) => { - var _a3; - for (const entry of entries) { - _ResizeObserverSingleton.entries.set(entry.target, entry); - (_a3 = this._listeners.get(entry.target)) == null ? void 0 : _a3(entry); - } - }); - } -}; -ResizeObserverSingleton.entries = "WeakMap" in globals ? /* @__PURE__ */ new WeakMap() : void 0; - -// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/runtime/internal/dom.js -var is_hydrating = false; -function start_hydrating() { - is_hydrating = true; -} -function end_hydrating() { - is_hydrating = false; -} -function append2(target, node) { - target.appendChild(node); -} -function append_styles(target, style_sheet_id, styles) { - const append_styles_to = get_root_for_style(target); - if (!append_styles_to.getElementById(style_sheet_id)) { - const style = element("style"); - style.id = style_sheet_id; - style.textContent = styles; - append_stylesheet(append_styles_to, style); - } -} -function get_root_for_style(node) { - if (!node) - return document; - const root2 = node.getRootNode ? node.getRootNode() : node.ownerDocument; - if (root2 && /** @type {ShadowRoot} */ - root2.host) { - return ( - /** @type {ShadowRoot} */ - root2 - ); - } - return node.ownerDocument; -} -function append_empty_stylesheet(node) { - const style_element = element("style"); - style_element.textContent = "/* empty */"; - append_stylesheet(get_root_for_style(node), style_element); - return style_element.sheet; -} -function append_stylesheet(node, style) { - append2( - /** @type {Document} */ - node.head || node, - style - ); - return style.sheet; -} -function insert(target, node, anchor) { - target.insertBefore(node, anchor || null); -} -function detach(node) { - if (node.parentNode) { - node.parentNode.removeChild(node); - } -} -function destroy_each(iterations, detaching) { - for (let i = 0; i < iterations.length; i += 1) { - if (iterations[i]) - iterations[i].d(detaching); - } -} -function element(name) { - return document.createElement(name); -} -function text(data) { - return document.createTextNode(data); -} -function space() { - return text(" "); -} -function empty() { - return text(""); -} -function listen(node, event, handler, options) { - node.addEventListener(event, handler, options); - return () => node.removeEventListener(event, handler, options); -} -function stop_propagation(fn) { - return function(event) { - event.stopPropagation(); - return fn.call(this, event); - }; -} -function attr(node, attribute, value) { - if (value == null) - node.removeAttribute(attribute); - else if (node.getAttribute(attribute) !== value) - node.setAttribute(attribute, value); -} -function children(element2) { - return Array.from(element2.childNodes); -} -function set_data(text2, data) { - data = "" + data; - if (text2.data === data) - return; - text2.data = /** @type {string} */ - data; -} -function set_input_value(input, value) { - input.value = value == null ? "" : value; -} -function set_style(node, key2, value, important) { - if (value == null) { - node.style.removeProperty(key2); - } else { - node.style.setProperty(key2, value, important ? "important" : ""); - } -} -function toggle_class(element2, name, toggle) { - element2.classList.toggle(name, !!toggle); -} -function custom_event(type, detail, { bubbles = false, cancelable = false } = {}) { - return new CustomEvent(type, { detail, bubbles, cancelable }); -} -function get_custom_elements_slots(element2) { - const result = {}; - element2.childNodes.forEach( - /** @param {Element} node */ - (node) => { - result[node.slot || "default"] = true; - } - ); - return result; -} - -// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/runtime/internal/style_manager.js -var managed_styles = /* @__PURE__ */ new Map(); -var active = 0; -function hash(str) { - let hash2 = 5381; - let i = str.length; - while (i--) - hash2 = (hash2 << 5) - hash2 ^ str.charCodeAt(i); - return hash2 >>> 0; -} -function create_style_information(doc, node) { - const info = { stylesheet: append_empty_stylesheet(node), rules: {} }; - managed_styles.set(doc, info); - return info; -} -function create_rule(node, a, b, duration, delay2, ease, fn, uid = 0) { - const step = 16.666 / duration; - let keyframes = "{\n"; - for (let p = 0; p <= 1; p += step) { - const t = a + (b - a) * ease(p); - keyframes += p * 100 + `%{${fn(t, 1 - t)}} -`; - } - const rule = keyframes + `100% {${fn(b, 1 - b)}} -}`; - const name = `__svelte_${hash(rule)}_${uid}`; - const doc = get_root_for_style(node); - const { stylesheet, rules } = managed_styles.get(doc) || create_style_information(doc, node); - if (!rules[name]) { - rules[name] = true; - stylesheet.insertRule(`@keyframes ${name} ${rule}`, stylesheet.cssRules.length); - } - const animation = node.style.animation || ""; - node.style.animation = `${animation ? `${animation}, ` : ""}${name} ${duration}ms linear ${delay2}ms 1 both`; - active += 1; - return name; -} -function delete_rule(node, name) { - const previous = (node.style.animation || "").split(", "); - const next = previous.filter( - name ? (anim) => anim.indexOf(name) < 0 : (anim) => anim.indexOf("__svelte") === -1 - // remove all Svelte animations - ); - const deleted = previous.length - next.length; - if (deleted) { - node.style.animation = next.join(", "); - active -= deleted; - if (!active) - clear_rules(); - } -} -function clear_rules() { - raf(() => { - if (active) - return; - managed_styles.forEach((info) => { - const { ownerNode } = info.stylesheet; - if (ownerNode) - detach(ownerNode); - }); - managed_styles.clear(); - }); -} - -// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/runtime/internal/await_block.js -init_polyfill_buffer(); - -// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/runtime/internal/transitions.js -init_polyfill_buffer(); - -// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/runtime/internal/scheduler.js -init_polyfill_buffer(); - -// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/runtime/internal/lifecycle.js -init_polyfill_buffer(); -var current_component; -function set_current_component(component) { - current_component = component; -} -function get_current_component() { - if (!current_component) - throw new Error("Function called outside component initialization"); - return current_component; -} -function onDestroy(fn) { - get_current_component().$$.on_destroy.push(fn); -} -function bubble(component, event) { - const callbacks = component.$$.callbacks[event.type]; - if (callbacks) { - callbacks.slice().forEach((fn) => fn.call(this, event)); - } -} - -// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/runtime/internal/scheduler.js -var dirty_components = []; -var binding_callbacks = []; -var render_callbacks = []; -var flush_callbacks = []; -var resolved_promise = /* @__PURE__ */ Promise.resolve(); -var update_scheduled = false; -function schedule_update() { - if (!update_scheduled) { - update_scheduled = true; - resolved_promise.then(flush); - } -} -function add_render_callback(fn) { - render_callbacks.push(fn); -} -var seen_callbacks = /* @__PURE__ */ new Set(); -var flushidx = 0; -function flush() { - if (flushidx !== 0) { - return; - } - const saved_component = current_component; - do { - try { - while (flushidx < dirty_components.length) { - const component = dirty_components[flushidx]; - flushidx++; - set_current_component(component); - update(component.$$); - } - } catch (e) { - dirty_components.length = 0; - flushidx = 0; - throw e; - } - set_current_component(null); - dirty_components.length = 0; - flushidx = 0; - while (binding_callbacks.length) - binding_callbacks.pop()(); - for (let i = 0; i < render_callbacks.length; i += 1) { - const callback = render_callbacks[i]; - if (!seen_callbacks.has(callback)) { - seen_callbacks.add(callback); - callback(); - } - } - render_callbacks.length = 0; - } while (dirty_components.length); - while (flush_callbacks.length) { - flush_callbacks.pop()(); - } - update_scheduled = false; - seen_callbacks.clear(); - set_current_component(saved_component); -} -function update($$) { - if ($$.fragment !== null) { - $$.update(); - run_all($$.before_update); - const dirty = $$.dirty; - $$.dirty = [-1]; - $$.fragment && $$.fragment.p($$.ctx, dirty); - $$.after_update.forEach(add_render_callback); - } -} -function flush_render_callbacks(fns) { - const filtered = []; - const targets = []; - render_callbacks.forEach((c) => fns.indexOf(c) === -1 ? filtered.push(c) : targets.push(c)); - targets.forEach((c) => c()); - render_callbacks = filtered; -} - -// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/runtime/internal/transitions.js -var promise; -function wait() { - if (!promise) { - promise = Promise.resolve(); - promise.then(() => { - promise = null; - }); - } - return promise; -} -function dispatch(node, direction, kind) { - node.dispatchEvent(custom_event(`${direction ? "intro" : "outro"}${kind}`)); -} -var outroing = /* @__PURE__ */ new Set(); -var outros; -function group_outros() { - outros = { - r: 0, - c: [], - p: outros - // parent group - }; -} -function check_outros() { - if (!outros.r) { - run_all(outros.c); - } - outros = outros.p; -} -function transition_in(block, local) { - if (block && block.i) { - outroing.delete(block); - block.i(local); - } -} -function transition_out(block, local, detach2, callback) { - if (block && block.o) { - if (outroing.has(block)) - return; - outroing.add(block); - outros.c.push(() => { - outroing.delete(block); - if (callback) { - if (detach2) - block.d(1); - callback(); - } - }); - block.o(local); - } else if (callback) { - callback(); - } -} -var null_transition = { duration: 0 }; -function create_bidirectional_transition(node, fn, params, intro) { - const options = { direction: "both" }; - let config = fn(node, params, options); - let t = intro ? 0 : 1; - let running_program = null; - let pending_program = null; - let animation_name = null; - let original_inert_value; - function clear_animation() { - if (animation_name) - delete_rule(node, animation_name); - } - function init3(program, duration) { - const d = ( - /** @type {Program['d']} */ - program.b - t - ); - duration *= Math.abs(d); - return { - a: t, - b: program.b, - d, - duration, - start: program.start, - end: program.start + duration, - group: program.group - }; - } - function go(b) { - const { - delay: delay2 = 0, - duration = 300, - easing = identity, - tick: tick2 = noop, - css - } = config || null_transition; - const program = { - start: now() + delay2, - b - }; - if (!b) { - program.group = outros; - outros.r += 1; - } - if ("inert" in node) { - if (b) { - if (original_inert_value !== void 0) { - node.inert = original_inert_value; - } - } else { - original_inert_value = /** @type {HTMLElement} */ - node.inert; - node.inert = true; - } - } - if (running_program || pending_program) { - pending_program = program; - } else { - if (css) { - clear_animation(); - animation_name = create_rule(node, t, b, duration, delay2, easing, css); - } - if (b) - tick2(0, 1); - running_program = init3(program, duration); - add_render_callback(() => dispatch(node, b, "start")); - loop((now2) => { - if (pending_program && now2 > pending_program.start) { - running_program = init3(pending_program, duration); - pending_program = null; - dispatch(node, running_program.b, "start"); - if (css) { - clear_animation(); - animation_name = create_rule( - node, - t, - running_program.b, - running_program.duration, - 0, - easing, - config.css - ); - } - } - if (running_program) { - if (now2 >= running_program.end) { - tick2(t = running_program.b, 1 - t); - dispatch(node, running_program.b, "end"); - if (!pending_program) { - if (running_program.b) { - clear_animation(); - } else { - if (!--running_program.group.r) - run_all(running_program.group.c); - } - } - running_program = null; - } else if (now2 >= running_program.start) { - const p = now2 - running_program.start; - t = running_program.a + running_program.d * easing(p / running_program.duration); - tick2(t, 1 - t); - } - } - return !!(running_program || pending_program); - }); - } - } - return { - run(b) { - if (is_function(config)) { - wait().then(() => { - const opts = { direction: b ? "in" : "out" }; - config = config(opts); - go(b); - }); - } else { - go(b); - } - }, - end() { - clear_animation(); - running_program = pending_program = null; - } - }; -} - -// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/runtime/internal/each.js -init_polyfill_buffer(); -function ensure_array_like(array_like_or_iterator) { - return (array_like_or_iterator == null ? void 0 : array_like_or_iterator.length) !== void 0 ? array_like_or_iterator : Array.from(array_like_or_iterator); -} - -// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/runtime/internal/spread.js -init_polyfill_buffer(); - -// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/runtime/internal/ssr.js -init_polyfill_buffer(); - -// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/shared/boolean_attributes.js -init_polyfill_buffer(); -var _boolean_attributes = ( - /** @type {const} */ - [ - "allowfullscreen", - "allowpaymentrequest", - "async", - "autofocus", - "autoplay", - "checked", - "controls", - "default", - "defer", - "disabled", - "formnovalidate", - "hidden", - "inert", - "ismap", - "loop", - "multiple", - "muted", - "nomodule", - "novalidate", - "open", - "playsinline", - "readonly", - "required", - "reversed", - "selected" - ] -); -var boolean_attributes = /* @__PURE__ */ new Set([..._boolean_attributes]); - -// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/shared/utils/names.js -init_polyfill_buffer(); - -// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/runtime/internal/Component.js -init_polyfill_buffer(); -function create_component(block) { - block && block.c(); -} -function mount_component(component, target, anchor) { - const { fragment, after_update } = component.$$; - fragment && fragment.m(target, anchor); - add_render_callback(() => { - const new_on_destroy = component.$$.on_mount.map(run).filter(is_function); - if (component.$$.on_destroy) { - component.$$.on_destroy.push(...new_on_destroy); - } else { - run_all(new_on_destroy); - } - component.$$.on_mount = []; - }); - after_update.forEach(add_render_callback); -} -function destroy_component(component, detaching) { - const $$ = component.$$; - if ($$.fragment !== null) { - flush_render_callbacks($$.after_update); - run_all($$.on_destroy); - $$.fragment && $$.fragment.d(detaching); - $$.on_destroy = $$.fragment = null; - $$.ctx = []; - } -} -function make_dirty(component, i) { - if (component.$$.dirty[0] === -1) { - dirty_components.push(component); - schedule_update(); - component.$$.dirty.fill(0); - } - component.$$.dirty[i / 31 | 0] |= 1 << i % 31; -} -function init2(component, options, instance10, create_fragment10, not_equal, props, append_styles2 = null, dirty = [-1]) { - const parent_component = current_component; - set_current_component(component); - const $$ = component.$$ = { - fragment: null, - ctx: [], - // state - props, - update: noop, - not_equal, - bound: blank_object(), - // lifecycle - on_mount: [], - on_destroy: [], - on_disconnect: [], - before_update: [], - after_update: [], - context: new Map(options.context || (parent_component ? parent_component.$$.context : [])), - // everything else - callbacks: blank_object(), - dirty, - skip_bound: false, - root: options.target || parent_component.$$.root - }; - append_styles2 && append_styles2($$.root); - let ready = false; - $$.ctx = instance10 ? instance10(component, options.props || {}, (i, ret, ...rest) => { - const value = rest.length ? rest[0] : ret; - if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) { - if (!$$.skip_bound && $$.bound[i]) - $$.bound[i](value); - if (ready) - make_dirty(component, i); - } - return ret; - }) : []; - $$.update(); - ready = true; - run_all($$.before_update); - $$.fragment = create_fragment10 ? create_fragment10($$.ctx) : false; - if (options.target) { - if (options.hydrate) { - start_hydrating(); - const nodes = children(options.target); - $$.fragment && $$.fragment.l(nodes); - nodes.forEach(detach); - } else { - $$.fragment && $$.fragment.c(); - } - if (options.intro) - transition_in(component.$$.fragment); - mount_component(component, options.target, options.anchor); - end_hydrating(); - flush(); - } - set_current_component(parent_component); -} -var SvelteElement; -if (typeof HTMLElement === "function") { - SvelteElement = class extends HTMLElement { - constructor($$componentCtor, $$slots, use_shadow_dom) { - super(); - /** The Svelte component constructor */ - __publicField(this, "$$ctor"); - /** Slots */ - __publicField(this, "$$s"); - /** The Svelte component instance */ - __publicField(this, "$$c"); - /** Whether or not the custom element is connected */ - __publicField(this, "$$cn", false); - /** Component props data */ - __publicField(this, "$$d", {}); - /** `true` if currently in the process of reflecting component props back to attributes */ - __publicField(this, "$$r", false); - /** @type {Record} Props definition (name, reflected, type etc) */ - __publicField(this, "$$p_d", {}); - /** @type {Record} Event listeners */ - __publicField(this, "$$l", {}); - /** @type {Map} Event listener unsubscribe functions */ - __publicField(this, "$$l_u", /* @__PURE__ */ new Map()); - this.$$ctor = $$componentCtor; - this.$$s = $$slots; - if (use_shadow_dom) { - this.attachShadow({ mode: "open" }); - } - } - addEventListener(type, listener, options) { - this.$$l[type] = this.$$l[type] || []; - this.$$l[type].push(listener); - if (this.$$c) { - const unsub = this.$$c.$on(type, listener); - this.$$l_u.set(listener, unsub); - } - super.addEventListener(type, listener, options); - } - removeEventListener(type, listener, options) { - super.removeEventListener(type, listener, options); - if (this.$$c) { - const unsub = this.$$l_u.get(listener); - if (unsub) { - unsub(); - this.$$l_u.delete(listener); - } - } - } - async connectedCallback() { - this.$$cn = true; - if (!this.$$c) { - let create_slot = function(name) { - return () => { - let node; - const obj = { - c: function create() { - node = element("slot"); - if (name !== "default") { - attr(node, "name", name); - } - }, - /** - * @param {HTMLElement} target - * @param {HTMLElement} [anchor] - */ - m: function mount(target, anchor) { - insert(target, node, anchor); - }, - d: function destroy(detaching) { - if (detaching) { - detach(node); - } - } - }; - return obj; - }; - }; - await Promise.resolve(); - if (!this.$$cn) { - return; - } - const $$slots = {}; - const existing_slots = get_custom_elements_slots(this); - for (const name of this.$$s) { - if (name in existing_slots) { - $$slots[name] = [create_slot(name)]; - } - } - for (const attribute of this.attributes) { - const name = this.$$g_p(attribute.name); - if (!(name in this.$$d)) { - this.$$d[name] = get_custom_element_value(name, attribute.value, this.$$p_d, "toProp"); - } - } - for (const key2 in this.$$p_d) { - if (!(key2 in this.$$d) && this[key2] !== void 0) { - this.$$d[key2] = this[key2]; - delete this[key2]; - } - } - this.$$c = new this.$$ctor({ - target: this.shadowRoot || this, - props: { - ...this.$$d, - $$slots, - $$scope: { - ctx: [] - } - } - }); - const reflect_attributes = () => { - this.$$r = true; - for (const key2 in this.$$p_d) { - this.$$d[key2] = this.$$c.$$.ctx[this.$$c.$$.props[key2]]; - if (this.$$p_d[key2].reflect) { - const attribute_value = get_custom_element_value( - key2, - this.$$d[key2], - this.$$p_d, - "toAttribute" - ); - if (attribute_value == null) { - this.removeAttribute(this.$$p_d[key2].attribute || key2); - } else { - this.setAttribute(this.$$p_d[key2].attribute || key2, attribute_value); - } - } - } - this.$$r = false; - }; - this.$$c.$$.after_update.push(reflect_attributes); - reflect_attributes(); - for (const type in this.$$l) { - for (const listener of this.$$l[type]) { - const unsub = this.$$c.$on(type, listener); - this.$$l_u.set(listener, unsub); - } - } - this.$$l = {}; - } - } - // We don't need this when working within Svelte code, but for compatibility of people using this outside of Svelte - // and setting attributes through setAttribute etc, this is helpful - attributeChangedCallback(attr2, _oldValue, newValue) { - var _a2; - if (this.$$r) - return; - attr2 = this.$$g_p(attr2); - this.$$d[attr2] = get_custom_element_value(attr2, newValue, this.$$p_d, "toProp"); - (_a2 = this.$$c) == null ? void 0 : _a2.$set({ [attr2]: this.$$d[attr2] }); - } - disconnectedCallback() { - this.$$cn = false; - Promise.resolve().then(() => { - if (!this.$$cn) { - this.$$c.$destroy(); - this.$$c = void 0; - } - }); - } - $$g_p(attribute_name) { - return Object.keys(this.$$p_d).find( - (key2) => this.$$p_d[key2].attribute === attribute_name || !this.$$p_d[key2].attribute && key2.toLowerCase() === attribute_name - ) || attribute_name; - } - }; -} -function get_custom_element_value(prop, value, props_definition, transform) { - var _a2; - const type = (_a2 = props_definition[prop]) == null ? void 0 : _a2.type; - value = type === "Boolean" && typeof value !== "boolean" ? value != null : value; - if (!transform || !props_definition[prop]) { - return value; - } else if (transform === "toAttribute") { - switch (type) { - case "Object": - case "Array": - return value == null ? null : JSON.stringify(value); - case "Boolean": - return value ? "" : null; - case "Number": - return value == null ? null : value; - default: - return value; - } - } else { - switch (type) { - case "Object": - case "Array": - return value && JSON.parse(value); - case "Boolean": - return value; - case "Number": - return value != null ? +value : value; - default: - return value; - } - } -} -var SvelteComponent = class { - constructor() { - /** - * ### PRIVATE API - * - * Do not use, may change at any time - * - * @type {any} - */ - __publicField(this, "$$"); - /** - * ### PRIVATE API - * - * Do not use, may change at any time - * - * @type {any} - */ - __publicField(this, "$$set"); - } - /** @returns {void} */ - $destroy() { - destroy_component(this, 1); - this.$destroy = noop; - } - /** - * @template {Extract} K - * @param {K} type - * @param {((e: Events[K]) => void) | null | undefined} callback - * @returns {() => void} - */ - $on(type, callback) { - if (!is_function(callback)) { - return noop; - } - const callbacks = this.$$.callbacks[type] || (this.$$.callbacks[type] = []); - callbacks.push(callback); - return () => { - const index2 = callbacks.indexOf(callback); - if (index2 !== -1) - callbacks.splice(index2, 1); - }; - } - /** - * @param {Partial} props - * @returns {void} - */ - $set(props) { - if (this.$$set && !is_empty(props)) { - this.$$.skip_bound = true; - this.$$set(props); - this.$$.skip_bound = false; - } - } -}; - -// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/runtime/internal/dev.js -init_polyfill_buffer(); - -// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/shared/version.js -init_polyfill_buffer(); -var PUBLIC_VERSION = "4"; - -// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/runtime/internal/disclose-version/index.js -init_polyfill_buffer(); -if (typeof window !== "undefined") - (window.__svelte || (window.__svelte = { v: /* @__PURE__ */ new Set() })).v.add(PUBLIC_VERSION); - -// node_modules/.pnpm/tslib@2.6.2/node_modules/tslib/tslib.es6.mjs -init_polyfill_buffer(); -function __awaiter(thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P ? value : new P(function(resolve) { - resolve(value); - }); - } - return new (P || (P = Promise))(function(resolve, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); - } - } - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e) { - reject(e); - } - } - function step(result) { - result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); - } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -} - -// src/ui/history/historyView.svelte -var import_obsidian20 = require("obsidian"); - -// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/runtime/index.js -init_polyfill_buffer(); - -// src/ui/history/components/logComponent.svelte -init_polyfill_buffer(); -var import_obsidian19 = require("obsidian"); - -// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/runtime/transition/index.js -init_polyfill_buffer(); - -// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/runtime/easing/index.js -init_polyfill_buffer(); -function cubicOut(t) { - const f = t - 1; - return f * f * f + 1; -} - -// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/runtime/transition/index.js -function slide(node, { delay: delay2 = 0, duration = 400, easing = cubicOut, axis = "y" } = {}) { - const style = getComputedStyle(node); - const opacity = +style.opacity; - const primary_property = axis === "y" ? "height" : "width"; - const primary_property_value = parseFloat(style[primary_property]); - const secondary_properties = axis === "y" ? ["top", "bottom"] : ["left", "right"]; - const capitalized_secondary_properties = secondary_properties.map( - (e) => `${e[0].toUpperCase()}${e.slice(1)}` - ); - const padding_start_value = parseFloat(style[`padding${capitalized_secondary_properties[0]}`]); - const padding_end_value = parseFloat(style[`padding${capitalized_secondary_properties[1]}`]); - const margin_start_value = parseFloat(style[`margin${capitalized_secondary_properties[0]}`]); - const margin_end_value = parseFloat(style[`margin${capitalized_secondary_properties[1]}`]); - const border_width_start_value = parseFloat( - style[`border${capitalized_secondary_properties[0]}Width`] - ); - const border_width_end_value = parseFloat( - style[`border${capitalized_secondary_properties[1]}Width`] - ); - return { - delay: delay2, - duration, - easing, - css: (t) => `overflow: hidden;opacity: ${Math.min(t * 20, 1) * opacity};${primary_property}: ${t * primary_property_value}px;padding-${secondary_properties[0]}: ${t * padding_start_value}px;padding-${secondary_properties[1]}: ${t * padding_end_value}px;margin-${secondary_properties[0]}: ${t * margin_start_value}px;margin-${secondary_properties[1]}: ${t * margin_end_value}px;border-${secondary_properties[0]}-width: ${t * border_width_start_value}px;border-${secondary_properties[1]}-width: ${t * border_width_end_value}px;` - }; -} - -// src/ui/history/components/logFileComponent.svelte -init_polyfill_buffer(); -var import_obsidian18 = require("obsidian"); -function add_css(target) { - append_styles(target, "svelte-1wbh8tp", "main.svelte-1wbh8tp .nav-file-title.svelte-1wbh8tp{align-items:center}"); -} -function create_if_block(ctx) { - let div; - let mounted; - let dispose; - return { - c() { - div = element("div"); - attr(div, "data-icon", "go-to-file"); - attr(div, "aria-label", "Open File"); - attr(div, "class", "clickable-icon"); - }, - m(target, anchor) { - insert(target, div, anchor); - ctx[7](div); - if (!mounted) { - dispose = [ - listen(div, "auxclick", stop_propagation( - /*open*/ - ctx[4] - )), - listen(div, "click", stop_propagation( - /*open*/ - ctx[4] - )) - ]; - mounted = true; - } - }, - p: noop, - d(detaching) { - if (detaching) { - detach(div); - } - ctx[7](null); - mounted = false; - run_all(dispose); - } - }; -} -function create_fragment(ctx) { - let main; - let div3; - let div0; - let t0_value = getDisplayPath( - /*diff*/ - ctx[0].vault_path - ) + ""; - let t0; - let t1; - let div2; - let div1; - let show_if = ( - /*view*/ - ctx[1].app.vault.getAbstractFileByPath( - /*diff*/ - ctx[0].vault_path - ) - ); - let t2; - let span; - let t3_value = ( - /*diff*/ - ctx[0].status + "" - ); - let t3; - let span_data_type_value; - let div3_data_path_value; - let div3_aria_label_value; - let mounted; - let dispose; - let if_block = show_if && create_if_block(ctx); - return { - c() { - var _a2, _b; - main = element("main"); - div3 = element("div"); - div0 = element("div"); - t0 = text(t0_value); - t1 = space(); - div2 = element("div"); - div1 = element("div"); - if (if_block) - if_block.c(); - t2 = space(); - span = element("span"); - t3 = text(t3_value); - attr(div0, "class", "tree-item-inner nav-file-title-content"); - attr(div1, "class", "buttons"); - attr(span, "class", "type"); - attr(span, "data-type", span_data_type_value = /*diff*/ - ctx[0].status); - attr(div2, "class", "git-tools"); - attr(div3, "class", "tree-item-self is-clickable nav-file-title svelte-1wbh8tp"); - attr(div3, "data-path", div3_data_path_value = /*diff*/ - ctx[0].vault_path); - attr( - div3, - "data-tooltip-position", - /*side*/ - ctx[3] - ); - attr(div3, "aria-label", div3_aria_label_value = /*diff*/ - ctx[0].vault_path); - toggle_class( - div3, - "is-active", - /*view*/ - ((_a2 = ctx[1].plugin.lastDiffViewState) == null ? void 0 : _a2.file) == /*diff*/ - ctx[0].vault_path && /*view*/ - ((_b = ctx[1].plugin.lastDiffViewState) == null ? void 0 : _b.hash) - ); - attr(main, "class", "tree-item nav-file svelte-1wbh8tp"); - }, - m(target, anchor) { - insert(target, main, anchor); - append2(main, div3); - append2(div3, div0); - append2(div0, t0); - append2(div3, t1); - append2(div3, div2); - append2(div2, div1); - if (if_block) - if_block.m(div1, null); - append2(div2, t2); - append2(div2, span); - append2(span, t3); - if (!mounted) { - dispose = [ - listen(main, "click", stop_propagation( - /*showDiff*/ - ctx[5] - )), - listen(main, "auxclick", stop_propagation( - /*showDiff*/ - ctx[5] - )), - listen( - main, - "focus", - /*focus_handler*/ - ctx[6] - ) - ]; - mounted = true; - } - }, - p(ctx2, [dirty]) { - var _a2, _b; - if (dirty & /*diff*/ - 1 && t0_value !== (t0_value = getDisplayPath( - /*diff*/ - ctx2[0].vault_path - ) + "")) - set_data(t0, t0_value); - if (dirty & /*view, diff*/ - 3) - show_if = /*view*/ - ctx2[1].app.vault.getAbstractFileByPath( - /*diff*/ - ctx2[0].vault_path - ); - if (show_if) { - if (if_block) { - if_block.p(ctx2, dirty); - } else { - if_block = create_if_block(ctx2); - if_block.c(); - if_block.m(div1, null); - } - } else if (if_block) { - if_block.d(1); - if_block = null; - } - if (dirty & /*diff*/ - 1 && t3_value !== (t3_value = /*diff*/ - ctx2[0].status + "")) - set_data(t3, t3_value); - if (dirty & /*diff*/ - 1 && span_data_type_value !== (span_data_type_value = /*diff*/ - ctx2[0].status)) { - attr(span, "data-type", span_data_type_value); - } - if (dirty & /*diff*/ - 1 && div3_data_path_value !== (div3_data_path_value = /*diff*/ - ctx2[0].vault_path)) { - attr(div3, "data-path", div3_data_path_value); - } - if (dirty & /*side*/ - 8) { - attr( - div3, - "data-tooltip-position", - /*side*/ - ctx2[3] - ); - } - if (dirty & /*diff*/ - 1 && div3_aria_label_value !== (div3_aria_label_value = /*diff*/ - ctx2[0].vault_path)) { - attr(div3, "aria-label", div3_aria_label_value); - } - if (dirty & /*view, diff*/ - 3) { - toggle_class( - div3, - "is-active", - /*view*/ - ((_a2 = ctx2[1].plugin.lastDiffViewState) == null ? void 0 : _a2.file) == /*diff*/ - ctx2[0].vault_path && /*view*/ - ((_b = ctx2[1].plugin.lastDiffViewState) == null ? void 0 : _b.hash) - ); - } - }, - i: noop, - o: noop, - d(detaching) { - if (detaching) { - detach(main); - } - if (if_block) - if_block.d(); - mounted = false; - run_all(dispose); - } - }; -} -function instance($$self, $$props, $$invalidate) { - let side; - let { diff: diff3 } = $$props; - let { view } = $$props; - let buttons = []; - window.setTimeout(() => buttons.forEach((b) => (0, import_obsidian18.setIcon)(b, b.getAttr("data-icon"))), 0); - function open(event) { - var _a2; - const file = view.app.vault.getAbstractFileByPath(diff3.vault_path); - if (file instanceof import_obsidian18.TFile) { - (_a2 = getNewLeaf(event)) === null || _a2 === void 0 ? void 0 : _a2.openFile(file); - } - } - function showDiff(event) { - var _a2; - (_a2 = getNewLeaf(event)) === null || _a2 === void 0 ? void 0 : _a2.setViewState({ - type: DIFF_VIEW_CONFIG.type, - active: true, - state: { - file: diff3.path, - staged: false, - hash: diff3.hash - } - }); - } - function focus_handler(event) { - bubble.call(this, $$self, event); - } - function div_binding($$value) { - binding_callbacks[$$value ? "unshift" : "push"](() => { - buttons[0] = $$value; - $$invalidate(2, buttons); - }); - } - $$self.$$set = ($$props2) => { - if ("diff" in $$props2) - $$invalidate(0, diff3 = $$props2.diff); - if ("view" in $$props2) - $$invalidate(1, view = $$props2.view); - }; - $$self.$$.update = () => { - if ($$self.$$.dirty & /*view*/ - 2) { - $: - $$invalidate(3, side = view.leaf.getRoot().side == "left" ? "right" : "left"); - } - }; - return [diff3, view, buttons, side, open, showDiff, focus_handler, div_binding]; -} -var LogFileComponent = class extends SvelteComponent { - constructor(options) { - super(); - init2(this, options, instance, create_fragment, safe_not_equal, { diff: 0, view: 1 }, add_css); - } -}; -var logFileComponent_default = LogFileComponent; - -// src/ui/history/components/logTreeComponent.svelte -init_polyfill_buffer(); -function add_css2(target) { - append_styles(target, "svelte-1lnl15d", "main.svelte-1lnl15d .nav-folder-title-content.svelte-1lnl15d{display:flex;align-items:center}"); -} -function get_each_context(ctx, list, i) { - const child_ctx = ctx.slice(); - child_ctx[8] = list[i]; - return child_ctx; -} -function create_else_block(ctx) { - let div4; - let div3; - let div0; - let t0; - let div1; - let t1; - let div2; - let t2_value = ( - /*entity*/ - ctx[8].title + "" - ); - let t2; - let div3_aria_label_value; - let t3; - let t4; - let current; - let mounted; - let dispose; - function click_handler() { - return ( - /*click_handler*/ - ctx[7]( - /*entity*/ - ctx[8] - ) - ); - } - let if_block = !/*closed*/ - ctx[4][ - /*entity*/ - ctx[8].title - ] && create_if_block_1(ctx); - return { - c() { - div4 = element("div"); - div3 = element("div"); - div0 = element("div"); - t0 = space(); - div1 = element("div"); - div1.innerHTML = ``; - t1 = space(); - div2 = element("div"); - t2 = text(t2_value); - t3 = space(); - if (if_block) - if_block.c(); - t4 = space(); - attr(div0, "data-icon", "folder"); - set_style(div0, "padding-right", "5px"); - set_style(div0, "display", "flex"); - attr(div1, "class", "tree-item-icon nav-folder-collapse-indicator collapse-icon"); - toggle_class( - div1, - "is-collapsed", - /*closed*/ - ctx[4][ - /*entity*/ - ctx[8].title - ] - ); - attr(div2, "class", "tree-item-inner nav-folder-title-content svelte-1lnl15d"); - attr(div3, "class", "tree-item-self is-clickable nav-folder-title"); - attr( - div3, - "data-tooltip-position", - /*side*/ - ctx[5] - ); - attr(div3, "aria-label", div3_aria_label_value = /*entity*/ - ctx[8].vaultPath); - attr(div4, "class", "tree-item nav-folder"); - toggle_class( - div4, - "is-collapsed", - /*closed*/ - ctx[4][ - /*entity*/ - ctx[8].title - ] - ); - }, - m(target, anchor) { - insert(target, div4, anchor); - append2(div4, div3); - append2(div3, div0); - append2(div3, t0); - append2(div3, div1); - append2(div3, t1); - append2(div3, div2); - append2(div2, t2); - append2(div4, t3); - if (if_block) - if_block.m(div4, null); - append2(div4, t4); - current = true; - if (!mounted) { - dispose = listen(div3, "click", click_handler); - mounted = true; - } - }, - p(new_ctx, dirty) { - ctx = new_ctx; - if (!current || dirty & /*closed, hierarchy*/ - 17) { - toggle_class( - div1, - "is-collapsed", - /*closed*/ - ctx[4][ - /*entity*/ - ctx[8].title - ] - ); - } - if ((!current || dirty & /*hierarchy*/ - 1) && t2_value !== (t2_value = /*entity*/ - ctx[8].title + "")) - set_data(t2, t2_value); - if (!current || dirty & /*side*/ - 32) { - attr( - div3, - "data-tooltip-position", - /*side*/ - ctx[5] - ); - } - if (!current || dirty & /*hierarchy*/ - 1 && div3_aria_label_value !== (div3_aria_label_value = /*entity*/ - ctx[8].vaultPath)) { - attr(div3, "aria-label", div3_aria_label_value); - } - if (!/*closed*/ - ctx[4][ - /*entity*/ - ctx[8].title - ]) { - if (if_block) { - if_block.p(ctx, dirty); - if (dirty & /*closed, hierarchy*/ - 17) { - transition_in(if_block, 1); - } - } else { - if_block = create_if_block_1(ctx); - if_block.c(); - transition_in(if_block, 1); - if_block.m(div4, t4); - } - } else if (if_block) { - group_outros(); - transition_out(if_block, 1, 1, () => { - if_block = null; - }); - check_outros(); - } - if (!current || dirty & /*closed, hierarchy*/ - 17) { - toggle_class( - div4, - "is-collapsed", - /*closed*/ - ctx[4][ - /*entity*/ - ctx[8].title - ] - ); - } - }, - i(local) { - if (current) - return; - transition_in(if_block); - current = true; - }, - o(local) { - transition_out(if_block); - current = false; - }, - d(detaching) { - if (detaching) { - detach(div4); - } - if (if_block) - if_block.d(); - mounted = false; - dispose(); - } - }; -} -function create_if_block2(ctx) { - let div; - let logfilecomponent; - let t; - let current; - logfilecomponent = new logFileComponent_default({ - props: { - diff: ( - /*entity*/ - ctx[8].data - ), - view: ( - /*view*/ - ctx[2] - ) - } - }); - return { - c() { - div = element("div"); - create_component(logfilecomponent.$$.fragment); - t = space(); - }, - m(target, anchor) { - insert(target, div, anchor); - mount_component(logfilecomponent, div, null); - append2(div, t); - current = true; - }, - p(ctx2, dirty) { - const logfilecomponent_changes = {}; - if (dirty & /*hierarchy*/ - 1) - logfilecomponent_changes.diff = /*entity*/ - ctx2[8].data; - if (dirty & /*view*/ - 4) - logfilecomponent_changes.view = /*view*/ - ctx2[2]; - logfilecomponent.$set(logfilecomponent_changes); - }, - i(local) { - if (current) - return; - transition_in(logfilecomponent.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(logfilecomponent.$$.fragment, local); - current = false; - }, - d(detaching) { - if (detaching) { - detach(div); - } - destroy_component(logfilecomponent); - } - }; -} -function create_if_block_1(ctx) { - let div; - let logtreecomponent; - let div_transition; - let current; - logtreecomponent = new LogTreeComponent({ - props: { - hierarchy: ( - /*entity*/ - ctx[8] - ), - plugin: ( - /*plugin*/ - ctx[1] - ), - view: ( - /*view*/ - ctx[2] - ) - } - }); - return { - c() { - div = element("div"); - create_component(logtreecomponent.$$.fragment); - attr(div, "class", "tree-item-children nav-folder-children"); - }, - m(target, anchor) { - insert(target, div, anchor); - mount_component(logtreecomponent, div, null); - current = true; - }, - p(ctx2, dirty) { - const logtreecomponent_changes = {}; - if (dirty & /*hierarchy*/ - 1) - logtreecomponent_changes.hierarchy = /*entity*/ - ctx2[8]; - if (dirty & /*plugin*/ - 2) - logtreecomponent_changes.plugin = /*plugin*/ - ctx2[1]; - if (dirty & /*view*/ - 4) - logtreecomponent_changes.view = /*view*/ - ctx2[2]; - logtreecomponent.$set(logtreecomponent_changes); - }, - i(local) { - if (current) - return; - transition_in(logtreecomponent.$$.fragment, local); - if (local) { - add_render_callback(() => { - if (!current) - return; - if (!div_transition) - div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, true); - div_transition.run(1); - }); - } - current = true; - }, - o(local) { - transition_out(logtreecomponent.$$.fragment, local); - if (local) { - if (!div_transition) - div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, false); - div_transition.run(0); - } - current = false; - }, - d(detaching) { - if (detaching) { - detach(div); - } - destroy_component(logtreecomponent); - if (detaching && div_transition) - div_transition.end(); - } - }; -} -function create_each_block(ctx) { - let current_block_type_index; - let if_block; - let if_block_anchor; - let current; - const if_block_creators = [create_if_block2, create_else_block]; - const if_blocks = []; - function select_block_type(ctx2, dirty) { - if ( - /*entity*/ - ctx2[8].data - ) - return 0; - return 1; - } - current_block_type_index = select_block_type(ctx, -1); - if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx); - return { - c() { - if_block.c(); - if_block_anchor = empty(); - }, - m(target, anchor) { - if_blocks[current_block_type_index].m(target, anchor); - insert(target, if_block_anchor, anchor); - current = true; - }, - p(ctx2, dirty) { - let previous_block_index = current_block_type_index; - current_block_type_index = select_block_type(ctx2, dirty); - if (current_block_type_index === previous_block_index) { - if_blocks[current_block_type_index].p(ctx2, dirty); - } else { - group_outros(); - transition_out(if_blocks[previous_block_index], 1, 1, () => { - if_blocks[previous_block_index] = null; - }); - check_outros(); - if_block = if_blocks[current_block_type_index]; - if (!if_block) { - if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx2); - if_block.c(); - } else { - if_block.p(ctx2, dirty); - } - transition_in(if_block, 1); - if_block.m(if_block_anchor.parentNode, if_block_anchor); - } - }, - i(local) { - if (current) - return; - transition_in(if_block); - current = true; - }, - o(local) { - transition_out(if_block); - current = false; - }, - d(detaching) { - if (detaching) { - detach(if_block_anchor); - } - if_blocks[current_block_type_index].d(detaching); - } - }; -} -function create_fragment2(ctx) { - let main; - let current; - let each_value = ensure_array_like( - /*hierarchy*/ - ctx[0].children - ); - let each_blocks = []; - for (let i = 0; i < each_value.length; i += 1) { - each_blocks[i] = create_each_block(get_each_context(ctx, each_value, i)); - } - const out = (i) => transition_out(each_blocks[i], 1, 1, () => { - each_blocks[i] = null; - }); - return { - c() { - main = element("main"); - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].c(); - } - attr(main, "class", "svelte-1lnl15d"); - toggle_class( - main, - "topLevel", - /*topLevel*/ - ctx[3] - ); - }, - m(target, anchor) { - insert(target, main, anchor); - for (let i = 0; i < each_blocks.length; i += 1) { - if (each_blocks[i]) { - each_blocks[i].m(main, null); - } - } - current = true; - }, - p(ctx2, [dirty]) { - if (dirty & /*hierarchy, view, closed, plugin, side, fold*/ - 119) { - each_value = ensure_array_like( - /*hierarchy*/ - ctx2[0].children - ); - let i; - for (i = 0; i < each_value.length; i += 1) { - const child_ctx = get_each_context(ctx2, each_value, i); - if (each_blocks[i]) { - each_blocks[i].p(child_ctx, dirty); - transition_in(each_blocks[i], 1); - } else { - each_blocks[i] = create_each_block(child_ctx); - each_blocks[i].c(); - transition_in(each_blocks[i], 1); - each_blocks[i].m(main, null); - } - } - group_outros(); - for (i = each_value.length; i < each_blocks.length; i += 1) { - out(i); - } - check_outros(); - } - if (!current || dirty & /*topLevel*/ - 8) { - toggle_class( - main, - "topLevel", - /*topLevel*/ - ctx2[3] - ); - } - }, - i(local) { - if (current) - return; - for (let i = 0; i < each_value.length; i += 1) { - transition_in(each_blocks[i]); - } - current = true; - }, - o(local) { - each_blocks = each_blocks.filter(Boolean); - for (let i = 0; i < each_blocks.length; i += 1) { - transition_out(each_blocks[i]); - } - current = false; - }, - d(detaching) { - if (detaching) { - detach(main); - } - destroy_each(each_blocks, detaching); - } - }; -} -function instance2($$self, $$props, $$invalidate) { - let side; - let { hierarchy } = $$props; - let { plugin } = $$props; - let { view } = $$props; - let { topLevel = false } = $$props; - const closed = {}; - function fold(item) { - $$invalidate(4, closed[item.title] = !closed[item.title], closed); - } - const click_handler = (entity) => fold(entity); - $$self.$$set = ($$props2) => { - if ("hierarchy" in $$props2) - $$invalidate(0, hierarchy = $$props2.hierarchy); - if ("plugin" in $$props2) - $$invalidate(1, plugin = $$props2.plugin); - if ("view" in $$props2) - $$invalidate(2, view = $$props2.view); - if ("topLevel" in $$props2) - $$invalidate(3, topLevel = $$props2.topLevel); - }; - $$self.$$.update = () => { - if ($$self.$$.dirty & /*view*/ - 4) { - $: - $$invalidate(5, side = view.leaf.getRoot().side == "left" ? "right" : "left"); - } - }; - return [hierarchy, plugin, view, topLevel, closed, side, fold, click_handler]; -} -var LogTreeComponent = class extends SvelteComponent { - constructor(options) { - super(); - init2( - this, - options, - instance2, - create_fragment2, - safe_not_equal, - { - hierarchy: 0, - plugin: 1, - view: 2, - topLevel: 3 - }, - add_css2 - ); - } -}; -var logTreeComponent_default = LogTreeComponent; - -// src/ui/history/components/logComponent.svelte -function get_each_context2(ctx, list, i) { - const child_ctx = ctx.slice(); - child_ctx[9] = list[i]; - return child_ctx; -} -function create_if_block_4(ctx) { - let div; - let t_value = ( - /*log*/ - ctx[0].refs.join(", ") + "" - ); - let t; - return { - c() { - div = element("div"); - t = text(t_value); - attr(div, "class", "git-ref"); - }, - m(target, anchor) { - insert(target, div, anchor); - append2(div, t); - }, - p(ctx2, dirty) { - if (dirty & /*log*/ - 1 && t_value !== (t_value = /*log*/ - ctx2[0].refs.join(", ") + "")) - set_data(t, t_value); - }, - d(detaching) { - if (detaching) { - detach(div); - } - } - }; -} -function create_if_block_3(ctx) { - let div; - let t_value = ( - /*authorToString*/ - ctx[7]( - /*log*/ - ctx[0] - ) + "" - ); - let t; - return { - c() { - div = element("div"); - t = text(t_value); - attr(div, "class", "git-author"); - }, - m(target, anchor) { - insert(target, div, anchor); - append2(div, t); - }, - p(ctx2, dirty) { - if (dirty & /*log*/ - 1 && t_value !== (t_value = /*authorToString*/ - ctx2[7]( - /*log*/ - ctx2[0] - ) + "")) - set_data(t, t_value); - }, - d(detaching) { - if (detaching) { - detach(div); - } - } - }; -} -function create_if_block_2(ctx) { - let div; - let t_value = (0, import_obsidian19.moment)( - /*log*/ - ctx[0].date - ).format( - /*plugin*/ - ctx[3].settings.commitDateFormat - ) + ""; - let t; - return { - c() { - div = element("div"); - t = text(t_value); - attr(div, "class", "git-date"); - }, - m(target, anchor) { - insert(target, div, anchor); - append2(div, t); - }, - p(ctx2, dirty) { - if (dirty & /*log, plugin*/ - 9 && t_value !== (t_value = (0, import_obsidian19.moment)( - /*log*/ - ctx2[0].date - ).format( - /*plugin*/ - ctx2[3].settings.commitDateFormat - ) + "")) - set_data(t, t_value); - }, - d(detaching) { - if (detaching) { - detach(div); - } - } - }; -} -function create_if_block3(ctx) { - let div; - let current_block_type_index; - let if_block; - let div_transition; - let current; - const if_block_creators = [create_if_block_12, create_else_block2]; - const if_blocks = []; - function select_block_type(ctx2, dirty) { - if ( - /*showTree*/ - ctx2[2] - ) - return 0; - return 1; - } - current_block_type_index = select_block_type(ctx, -1); - if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx); - return { - c() { - div = element("div"); - if_block.c(); - attr(div, "class", "tree-item-children nav-folder-children"); - }, - m(target, anchor) { - insert(target, div, anchor); - if_blocks[current_block_type_index].m(div, null); - current = true; - }, - p(ctx2, dirty) { - let previous_block_index = current_block_type_index; - current_block_type_index = select_block_type(ctx2, dirty); - if (current_block_type_index === previous_block_index) { - if_blocks[current_block_type_index].p(ctx2, dirty); - } else { - group_outros(); - transition_out(if_blocks[previous_block_index], 1, 1, () => { - if_blocks[previous_block_index] = null; - }); - check_outros(); - if_block = if_blocks[current_block_type_index]; - if (!if_block) { - if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx2); - if_block.c(); - } else { - if_block.p(ctx2, dirty); - } - transition_in(if_block, 1); - if_block.m(div, null); - } - }, - i(local) { - if (current) - return; - transition_in(if_block); - if (local) { - add_render_callback(() => { - if (!current) - return; - if (!div_transition) - div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, true); - div_transition.run(1); - }); - } - current = true; - }, - o(local) { - transition_out(if_block); - if (local) { - if (!div_transition) - div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, false); - div_transition.run(0); - } - current = false; - }, - d(detaching) { - if (detaching) { - detach(div); - } - if_blocks[current_block_type_index].d(); - if (detaching && div_transition) - div_transition.end(); - } - }; -} -function create_else_block2(ctx) { - let each_1_anchor; - let current; - let each_value = ensure_array_like( - /*log*/ - ctx[0].diff.files - ); - let each_blocks = []; - for (let i = 0; i < each_value.length; i += 1) { - each_blocks[i] = create_each_block2(get_each_context2(ctx, each_value, i)); - } - const out = (i) => transition_out(each_blocks[i], 1, 1, () => { - each_blocks[i] = null; - }); - return { - c() { - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].c(); - } - each_1_anchor = empty(); - }, - m(target, anchor) { - for (let i = 0; i < each_blocks.length; i += 1) { - if (each_blocks[i]) { - each_blocks[i].m(target, anchor); - } - } - insert(target, each_1_anchor, anchor); - current = true; - }, - p(ctx2, dirty) { - if (dirty & /*view, log*/ - 3) { - each_value = ensure_array_like( - /*log*/ - ctx2[0].diff.files - ); - let i; - for (i = 0; i < each_value.length; i += 1) { - const child_ctx = get_each_context2(ctx2, each_value, i); - if (each_blocks[i]) { - each_blocks[i].p(child_ctx, dirty); - transition_in(each_blocks[i], 1); - } else { - each_blocks[i] = create_each_block2(child_ctx); - each_blocks[i].c(); - transition_in(each_blocks[i], 1); - each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor); - } - } - group_outros(); - for (i = each_value.length; i < each_blocks.length; i += 1) { - out(i); - } - check_outros(); - } - }, - i(local) { - if (current) - return; - for (let i = 0; i < each_value.length; i += 1) { - transition_in(each_blocks[i]); - } - current = true; - }, - o(local) { - each_blocks = each_blocks.filter(Boolean); - for (let i = 0; i < each_blocks.length; i += 1) { - transition_out(each_blocks[i]); - } - current = false; - }, - d(detaching) { - if (detaching) { - detach(each_1_anchor); - } - destroy_each(each_blocks, detaching); - } - }; -} -function create_if_block_12(ctx) { - let logtreecomponent; - let current; - logtreecomponent = new logTreeComponent_default({ - props: { - hierarchy: ( - /*logsHierarchy*/ - ctx[6] - ), - plugin: ( - /*plugin*/ - ctx[3] - ), - view: ( - /*view*/ - ctx[1] - ), - topLevel: true - } - }); - return { - c() { - create_component(logtreecomponent.$$.fragment); - }, - m(target, anchor) { - mount_component(logtreecomponent, target, anchor); - current = true; - }, - p(ctx2, dirty) { - const logtreecomponent_changes = {}; - if (dirty & /*logsHierarchy*/ - 64) - logtreecomponent_changes.hierarchy = /*logsHierarchy*/ - ctx2[6]; - if (dirty & /*plugin*/ - 8) - logtreecomponent_changes.plugin = /*plugin*/ - ctx2[3]; - if (dirty & /*view*/ - 2) - logtreecomponent_changes.view = /*view*/ - ctx2[1]; - logtreecomponent.$set(logtreecomponent_changes); - }, - i(local) { - if (current) - return; - transition_in(logtreecomponent.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(logtreecomponent.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(logtreecomponent, detaching); - } - }; -} -function create_each_block2(ctx) { - let logfilecomponent; - let current; - logfilecomponent = new logFileComponent_default({ - props: { - view: ( - /*view*/ - ctx[1] - ), - diff: ( - /*file*/ - ctx[9] - ) - } - }); - return { - c() { - create_component(logfilecomponent.$$.fragment); - }, - m(target, anchor) { - mount_component(logfilecomponent, target, anchor); - current = true; - }, - p(ctx2, dirty) { - const logfilecomponent_changes = {}; - if (dirty & /*view*/ - 2) - logfilecomponent_changes.view = /*view*/ - ctx2[1]; - if (dirty & /*log*/ - 1) - logfilecomponent_changes.diff = /*file*/ - ctx2[9]; - logfilecomponent.$set(logfilecomponent_changes); - }, - i(local) { - if (current) - return; - transition_in(logfilecomponent.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(logfilecomponent.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(logfilecomponent, detaching); - } - }; -} -function create_fragment3(ctx) { - var _a2; - let main; - let div4; - let div3; - let div0; - let t0; - let div2; - let t1; - let t2; - let t3; - let div1; - let t4_value = ( - /*log*/ - ctx[0].message + "" - ); - let t4; - let div3_aria_label_value; - let t5; - let current; - let mounted; - let dispose; - let if_block0 = ( - /*log*/ - ctx[0].refs.length > 0 && create_if_block_4(ctx) - ); - let if_block1 = ( - /*plugin*/ - ctx[3].settings.authorInHistoryView != "hide" && /*log*/ - ((_a2 = ctx[0].author) == null ? void 0 : _a2.name) && create_if_block_3(ctx) - ); - let if_block2 = ( - /*plugin*/ - ctx[3].settings.dateInHistoryView && create_if_block_2(ctx) - ); - let if_block3 = !/*isCollapsed*/ - ctx[4] && create_if_block3(ctx); - return { - c() { - var _a3; - main = element("main"); - div4 = element("div"); - div3 = element("div"); - div0 = element("div"); - div0.innerHTML = ``; - t0 = space(); - div2 = element("div"); - if (if_block0) - if_block0.c(); - t1 = space(); - if (if_block1) - if_block1.c(); - t2 = space(); - if (if_block2) - if_block2.c(); - t3 = space(); - div1 = element("div"); - t4 = text(t4_value); - t5 = space(); - if (if_block3) - if_block3.c(); - attr(div0, "class", "tree-item-icon nav-folder-collapse-indicator collapse-icon"); - toggle_class( - div0, - "is-collapsed", - /*isCollapsed*/ - ctx[4] - ); - attr(div1, "class", "tree-item-inner nav-folder-title-content"); - attr(div3, "class", "tree-item-self is-clickable nav-folder-title"); - attr(div3, "aria-label", div3_aria_label_value = `${/*log*/ - ctx[0].refs.length > 0 ? ( - /*log*/ - ctx[0].refs.join(", ") + "\n" - ) : ""}${/*log*/ - (_a3 = ctx[0].author) == null ? void 0 : _a3.name} -${(0, import_obsidian19.moment)( - /*log*/ - ctx[0].date - ).format( - /*plugin*/ - ctx[3].settings.commitDateFormat - )} -${/*log*/ - ctx[0].message}`); - attr( - div3, - "data-tooltip-position", - /*side*/ - ctx[5] - ); - attr(div4, "class", "tree-item nav-folder"); - toggle_class( - div4, - "is-collapsed", - /*isCollapsed*/ - ctx[4] - ); - }, - m(target, anchor) { - insert(target, main, anchor); - append2(main, div4); - append2(div4, div3); - append2(div3, div0); - append2(div3, t0); - append2(div3, div2); - if (if_block0) - if_block0.m(div2, null); - append2(div2, t1); - if (if_block1) - if_block1.m(div2, null); - append2(div2, t2); - if (if_block2) - if_block2.m(div2, null); - append2(div2, t3); - append2(div2, div1); - append2(div1, t4); - append2(div4, t5); - if (if_block3) - if_block3.m(div4, null); - current = true; - if (!mounted) { - dispose = listen( - div3, - "click", - /*click_handler*/ - ctx[8] - ); - mounted = true; - } - }, - p(ctx2, [dirty]) { - var _a3, _b; - if (!current || dirty & /*isCollapsed*/ - 16) { - toggle_class( - div0, - "is-collapsed", - /*isCollapsed*/ - ctx2[4] - ); - } - if ( - /*log*/ - ctx2[0].refs.length > 0 - ) { - if (if_block0) { - if_block0.p(ctx2, dirty); - } else { - if_block0 = create_if_block_4(ctx2); - if_block0.c(); - if_block0.m(div2, t1); - } - } else if (if_block0) { - if_block0.d(1); - if_block0 = null; - } - if ( - /*plugin*/ - ctx2[3].settings.authorInHistoryView != "hide" && /*log*/ - ((_a3 = ctx2[0].author) == null ? void 0 : _a3.name) - ) { - if (if_block1) { - if_block1.p(ctx2, dirty); - } else { - if_block1 = create_if_block_3(ctx2); - if_block1.c(); - if_block1.m(div2, t2); - } - } else if (if_block1) { - if_block1.d(1); - if_block1 = null; - } - if ( - /*plugin*/ - ctx2[3].settings.dateInHistoryView - ) { - if (if_block2) { - if_block2.p(ctx2, dirty); - } else { - if_block2 = create_if_block_2(ctx2); - if_block2.c(); - if_block2.m(div2, t3); - } - } else if (if_block2) { - if_block2.d(1); - if_block2 = null; - } - if ((!current || dirty & /*log*/ - 1) && t4_value !== (t4_value = /*log*/ - ctx2[0].message + "")) - set_data(t4, t4_value); - if (!current || dirty & /*log, plugin*/ - 9 && div3_aria_label_value !== (div3_aria_label_value = `${/*log*/ - ctx2[0].refs.length > 0 ? ( - /*log*/ - ctx2[0].refs.join(", ") + "\n" - ) : ""}${/*log*/ - (_b = ctx2[0].author) == null ? void 0 : _b.name} -${(0, import_obsidian19.moment)( - /*log*/ - ctx2[0].date - ).format( - /*plugin*/ - ctx2[3].settings.commitDateFormat - )} -${/*log*/ - ctx2[0].message}`)) { - attr(div3, "aria-label", div3_aria_label_value); - } - if (!current || dirty & /*side*/ - 32) { - attr( - div3, - "data-tooltip-position", - /*side*/ - ctx2[5] - ); - } - if (!/*isCollapsed*/ - ctx2[4]) { - if (if_block3) { - if_block3.p(ctx2, dirty); - if (dirty & /*isCollapsed*/ - 16) { - transition_in(if_block3, 1); - } - } else { - if_block3 = create_if_block3(ctx2); - if_block3.c(); - transition_in(if_block3, 1); - if_block3.m(div4, null); - } - } else if (if_block3) { - group_outros(); - transition_out(if_block3, 1, 1, () => { - if_block3 = null; - }); - check_outros(); - } - if (!current || dirty & /*isCollapsed*/ - 16) { - toggle_class( - div4, - "is-collapsed", - /*isCollapsed*/ - ctx2[4] - ); - } - }, - i(local) { - if (current) - return; - transition_in(if_block3); - current = true; - }, - o(local) { - transition_out(if_block3); - current = false; - }, - d(detaching) { - if (detaching) { - detach(main); - } - if (if_block0) - if_block0.d(); - if (if_block1) - if_block1.d(); - if (if_block2) - if_block2.d(); - if (if_block3) - if_block3.d(); - mounted = false; - dispose(); - } - }; -} -function instance3($$self, $$props, $$invalidate) { - let logsHierarchy; - let side; - let { log: log2 } = $$props; - let { view } = $$props; - let { showTree } = $$props; - let { plugin } = $$props; - let isCollapsed = true; - function authorToString(log3) { - const name = log3.author.name; - if (plugin.settings.authorInHistoryView == "full") { - return name; - } else if (plugin.settings.authorInHistoryView == "initials") { - const words = name.split(" ").filter((word) => word.length > 0); - return words.map((word) => word[0].toUpperCase()).join(""); - } - } - const click_handler = () => $$invalidate(4, isCollapsed = !isCollapsed); - $$self.$$set = ($$props2) => { - if ("log" in $$props2) - $$invalidate(0, log2 = $$props2.log); - if ("view" in $$props2) - $$invalidate(1, view = $$props2.view); - if ("showTree" in $$props2) - $$invalidate(2, showTree = $$props2.showTree); - if ("plugin" in $$props2) - $$invalidate(3, plugin = $$props2.plugin); - }; - $$self.$$.update = () => { - if ($$self.$$.dirty & /*plugin, log*/ - 9) { - $: - $$invalidate(6, logsHierarchy = { - title: "", - path: "", - vaultPath: "", - children: plugin.gitManager.getTreeStructure(log2.diff.files) - }); - } - if ($$self.$$.dirty & /*view*/ - 2) { - $: - $$invalidate(5, side = view.leaf.getRoot().side == "left" ? "right" : "left"); - } - }; - return [ - log2, - view, - showTree, - plugin, - isCollapsed, - side, - logsHierarchy, - authorToString, - click_handler - ]; -} -var LogComponent = class extends SvelteComponent { - constructor(options) { - super(); - init2(this, options, instance3, create_fragment3, safe_not_equal, { log: 0, view: 1, showTree: 2, plugin: 3 }); - } -}; -var logComponent_default = LogComponent; - -// src/ui/history/historyView.svelte -function get_each_context3(ctx, list, i) { - const child_ctx = ctx.slice(); - child_ctx[11] = list[i]; - return child_ctx; -} -function create_if_block4(ctx) { - let div1; - let div0; - let current; - let each_value = ensure_array_like( - /*logs*/ - ctx[6] - ); - let each_blocks = []; - for (let i = 0; i < each_value.length; i += 1) { - each_blocks[i] = create_each_block3(get_each_context3(ctx, each_value, i)); - } - const out = (i) => transition_out(each_blocks[i], 1, 1, () => { - each_blocks[i] = null; - }); - return { - c() { - div1 = element("div"); - div0 = element("div"); - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].c(); - } - attr(div0, "class", "tree-item-children nav-folder-children"); - attr(div1, "class", "tree-item nav-folder mod-root"); - }, - m(target, anchor) { - insert(target, div1, anchor); - append2(div1, div0); - for (let i = 0; i < each_blocks.length; i += 1) { - if (each_blocks[i]) { - each_blocks[i].m(div0, null); - } - } - current = true; - }, - p(ctx2, dirty) { - if (dirty & /*view, showTree, logs, plugin*/ - 71) { - each_value = ensure_array_like( - /*logs*/ - ctx2[6] - ); - let i; - for (i = 0; i < each_value.length; i += 1) { - const child_ctx = get_each_context3(ctx2, each_value, i); - if (each_blocks[i]) { - each_blocks[i].p(child_ctx, dirty); - transition_in(each_blocks[i], 1); - } else { - each_blocks[i] = create_each_block3(child_ctx); - each_blocks[i].c(); - transition_in(each_blocks[i], 1); - each_blocks[i].m(div0, null); - } - } - group_outros(); - for (i = each_value.length; i < each_blocks.length; i += 1) { - out(i); - } - check_outros(); - } - }, - i(local) { - if (current) - return; - for (let i = 0; i < each_value.length; i += 1) { - transition_in(each_blocks[i]); - } - current = true; - }, - o(local) { - each_blocks = each_blocks.filter(Boolean); - for (let i = 0; i < each_blocks.length; i += 1) { - transition_out(each_blocks[i]); - } - current = false; - }, - d(detaching) { - if (detaching) { - detach(div1); - } - destroy_each(each_blocks, detaching); - } - }; -} -function create_each_block3(ctx) { - let logcomponent; - let current; - logcomponent = new logComponent_default({ - props: { - view: ( - /*view*/ - ctx[1] - ), - showTree: ( - /*showTree*/ - ctx[2] - ), - log: ( - /*log*/ - ctx[11] - ), - plugin: ( - /*plugin*/ - ctx[0] - ) - } - }); - return { - c() { - create_component(logcomponent.$$.fragment); - }, - m(target, anchor) { - mount_component(logcomponent, target, anchor); - current = true; - }, - p(ctx2, dirty) { - const logcomponent_changes = {}; - if (dirty & /*view*/ - 2) - logcomponent_changes.view = /*view*/ - ctx2[1]; - if (dirty & /*showTree*/ - 4) - logcomponent_changes.showTree = /*showTree*/ - ctx2[2]; - if (dirty & /*logs*/ - 64) - logcomponent_changes.log = /*log*/ - ctx2[11]; - if (dirty & /*plugin*/ - 1) - logcomponent_changes.plugin = /*plugin*/ - ctx2[0]; - logcomponent.$set(logcomponent_changes); - }, - i(local) { - if (current) - return; - transition_in(logcomponent.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(logcomponent.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(logcomponent, detaching); - } - }; -} -function create_fragment4(ctx) { - let main; - let div3; - let div2; - let div0; - let t0; - let div1; - let t1; - let div4; - let current; - let mounted; - let dispose; - let if_block = ( - /*logs*/ - ctx[6] && create_if_block4(ctx) - ); - return { - c() { - main = element("main"); - div3 = element("div"); - div2 = element("div"); - div0 = element("div"); - t0 = space(); - div1 = element("div"); - t1 = space(); - div4 = element("div"); - if (if_block) - if_block.c(); - attr(div0, "id", "layoutChange"); - attr(div0, "class", "clickable-icon nav-action-button"); - attr(div0, "aria-label", "Change Layout"); - attr(div1, "id", "refresh"); - attr(div1, "class", "clickable-icon nav-action-button"); - attr(div1, "data-icon", "refresh-cw"); - attr(div1, "aria-label", "Refresh"); - set_style(div1, "margin", "1px"); - toggle_class( - div1, - "loading", - /*loading*/ - ctx[4] - ); - attr(div2, "class", "nav-buttons-container"); - attr(div3, "class", "nav-header"); - attr(div4, "class", "nav-files-container"); - set_style(div4, "position", "relative"); - }, - m(target, anchor) { - insert(target, main, anchor); - append2(main, div3); - append2(div3, div2); - append2(div2, div0); - ctx[7](div0); - append2(div2, t0); - append2(div2, div1); - ctx[9](div1); - append2(main, t1); - append2(main, div4); - if (if_block) - if_block.m(div4, null); - current = true; - if (!mounted) { - dispose = [ - listen( - div0, - "click", - /*click_handler*/ - ctx[8] - ), - listen(div1, "click", triggerRefresh) - ]; - mounted = true; - } - }, - p(ctx2, [dirty]) { - if (!current || dirty & /*loading*/ - 16) { - toggle_class( - div1, - "loading", - /*loading*/ - ctx2[4] - ); - } - if ( - /*logs*/ - ctx2[6] - ) { - if (if_block) { - if_block.p(ctx2, dirty); - if (dirty & /*logs*/ - 64) { - transition_in(if_block, 1); - } - } else { - if_block = create_if_block4(ctx2); - if_block.c(); - transition_in(if_block, 1); - if_block.m(div4, null); - } - } else if (if_block) { - group_outros(); - transition_out(if_block, 1, 1, () => { - if_block = null; - }); - check_outros(); - } - }, - i(local) { - if (current) - return; - transition_in(if_block); - current = true; - }, - o(local) { - transition_out(if_block); - current = false; - }, - d(detaching) { - if (detaching) { - detach(main); - } - ctx[7](null); - ctx[9](null); - if (if_block) - if_block.d(); - mounted = false; - run_all(dispose); - } - }; -} -function triggerRefresh() { - dispatchEvent(new CustomEvent("git-refresh")); -} -function instance4($$self, $$props, $$invalidate) { - let { plugin } = $$props; - let { view } = $$props; - let loading; - let buttons = []; - let logs; - let showTree = plugin.settings.treeStructure; - let layoutBtn; - addEventListener("git-view-refresh", refresh); - plugin.app.workspace.onLayoutReady(() => { - window.setTimeout( - () => { - buttons.forEach((btn) => (0, import_obsidian20.setIcon)(btn, btn.getAttr("data-icon"))); - (0, import_obsidian20.setIcon)(layoutBtn, showTree ? "list" : "folder"); - }, - 0 - ); - }); - onDestroy(() => { - removeEventListener("git-view-refresh", refresh); - }); - function refresh() { - return __awaiter(this, void 0, void 0, function* () { - $$invalidate(4, loading = true); - const isSimpleGit = plugin.gitManager instanceof SimpleGit; - $$invalidate(6, logs = yield plugin.gitManager.log(void 0, false, isSimpleGit ? 50 : 10)); - $$invalidate(4, loading = false); - }); - } - function div0_binding($$value) { - binding_callbacks[$$value ? "unshift" : "push"](() => { - layoutBtn = $$value; - $$invalidate(3, layoutBtn); - }); - } - const click_handler = () => { - $$invalidate(2, showTree = !showTree); - $$invalidate(0, plugin.settings.treeStructure = showTree, plugin); - plugin.saveSettings(); - }; - function div1_binding($$value) { - binding_callbacks[$$value ? "unshift" : "push"](() => { - buttons[6] = $$value; - $$invalidate(5, buttons); - }); - } - $$self.$$set = ($$props2) => { - if ("plugin" in $$props2) - $$invalidate(0, plugin = $$props2.plugin); - if ("view" in $$props2) - $$invalidate(1, view = $$props2.view); - }; - $$self.$$.update = () => { - if ($$self.$$.dirty & /*layoutBtn, showTree*/ - 12) { - $: { - if (layoutBtn) { - layoutBtn.empty(); - (0, import_obsidian20.setIcon)(layoutBtn, showTree ? "list" : "folder"); - } - } - } - }; - return [ - plugin, - view, - showTree, - layoutBtn, - loading, - buttons, - logs, - div0_binding, - click_handler, - div1_binding - ]; -} -var HistoryView = class extends SvelteComponent { - constructor(options) { - super(); - init2(this, options, instance4, create_fragment4, safe_not_equal, { plugin: 0, view: 1 }); - } -}; -var historyView_default = HistoryView; - -// src/ui/history/historyView.ts -var HistoryView2 = class extends import_obsidian21.ItemView { - constructor(leaf, plugin) { - super(leaf); - this.plugin = plugin; - this.hoverPopover = null; - } - getViewType() { - return HISTORY_VIEW_CONFIG.type; - } - getDisplayText() { - return HISTORY_VIEW_CONFIG.name; - } - getIcon() { - return HISTORY_VIEW_CONFIG.icon; - } - onClose() { - return super.onClose(); - } - onOpen() { - this._view = new historyView_default({ - target: this.contentEl, - props: { - plugin: this.plugin, - view: this - } - }); - return super.onOpen(); - } -}; - -// src/ui/modals/branchModal.ts -init_polyfill_buffer(); -var import_obsidian22 = require("obsidian"); -var BranchModal = class extends import_obsidian22.FuzzySuggestModal { - constructor(branches) { - super(app); - this.branches = branches; - this.setPlaceholder("Select branch to checkout"); - } - getItems() { - return this.branches; - } - getItemText(item) { - return item; - } - onChooseItem(item, evt) { - this.resolve(item); - } - open() { - super.open(); - return new Promise((resolve) => { - this.resolve = resolve; - }); - } - async onClose() { - await new Promise((resolve) => setTimeout(resolve, 10)); - if (this.resolve) - this.resolve(void 0); - } -}; - -// src/ui/modals/ignoreModal.ts -init_polyfill_buffer(); -var import_obsidian23 = require("obsidian"); -var IgnoreModal = class extends import_obsidian23.Modal { - constructor(app2, content) { - super(app2); - this.content = content; - this.resolve = null; - } - open() { - super.open(); - return new Promise((resolve) => { - this.resolve = resolve; - }); - } - onOpen() { - const { contentEl, titleEl } = this; - titleEl.setText("Edit .gitignore"); - const div = contentEl.createDiv(); - const text2 = div.createEl("textarea", { - text: this.content, - cls: ["obsidian-git-textarea"], - attr: { rows: 10, cols: 30, wrap: "off" } - }); - div.createEl("button", { - cls: ["mod-cta", "obsidian-git-center-button"], - text: "Save" - }).addEventListener("click", async () => { - this.resolve(text2.value); - this.close(); - }); - } - onClose() { - const { contentEl } = this; - this.resolve(void 0); - contentEl.empty(); - } -}; - -// src/ui/sourceControl/sourceControl.ts -init_polyfill_buffer(); -var import_obsidian30 = require("obsidian"); - -// src/ui/sourceControl/sourceControl.svelte -init_polyfill_buffer(); -var import_obsidian29 = require("obsidian"); - -// src/ui/modals/discardModal.ts -init_polyfill_buffer(); -var import_obsidian24 = require("obsidian"); -var DiscardModal = class extends import_obsidian24.Modal { - constructor(app2, deletion, filename) { - super(app2); - this.deletion = deletion; - this.filename = filename; - this.resolve = null; - } - myOpen() { - this.open(); - return new Promise((resolve) => { - this.resolve = resolve; - }); - } - onOpen() { - const { contentEl, titleEl } = this; - titleEl.setText(`${this.deletion ? "Delete" : "Discard"} this file?`); - contentEl.createEl("p").setText( - `Do you really want to ${this.deletion ? "delete" : "discard the changes of"} "${this.filename}"` - ); - const div = contentEl.createDiv({ cls: "modal-button-container" }); - const discard = div.createEl("button", { - cls: "mod-warning", - text: this.deletion ? "Delete" : "Discard" - }); - discard.addEventListener("click", async () => { - if (this.resolve) - this.resolve(true); - this.close(); - }); - discard.addEventListener("keypress", async () => { - if (this.resolve) - this.resolve(true); - this.close(); - }); - const close = div.createEl("button", { - text: "Cancel" - }); - close.addEventListener("click", () => { - if (this.resolve) - this.resolve(false); - return this.close(); - }); - close.addEventListener("keypress", () => { - if (this.resolve) - this.resolve(false); - return this.close(); - }); - } - onClose() { - const { contentEl } = this; - contentEl.empty(); - } -}; - -// src/ui/sourceControl/components/fileComponent.svelte -init_polyfill_buffer(); -var import_obsidian26 = require("obsidian"); - -// node_modules/.pnpm/github.com+Vinzent03+obsidian-community-lib@e663de4f95c879b40613090da78ea599ff621d24_@codemir_xyncsguozhhawq25qkwtwp76my/node_modules/obsidian-community-lib/dist/index.js -init_polyfill_buffer(); - -// node_modules/.pnpm/github.com+Vinzent03+obsidian-community-lib@e663de4f95c879b40613090da78ea599ff621d24_@codemir_xyncsguozhhawq25qkwtwp76my/node_modules/obsidian-community-lib/dist/utils.js -init_polyfill_buffer(); -var feather = __toESM(require_feather()); -var import_obsidian25 = require("obsidian"); -function hoverPreview(event, view, to) { - const targetEl = event.target; - app.workspace.trigger("hover-link", { - event, - source: view.getViewType(), - hoverParent: view, - targetEl, - linktext: to - }); -} - -// src/ui/sourceControl/components/fileComponent.svelte -function add_css3(target) { - append_styles(target, "svelte-1wbh8tp", "main.svelte-1wbh8tp .nav-file-title.svelte-1wbh8tp{align-items:center}"); -} -function create_if_block5(ctx) { - let div; - let mounted; - let dispose; - return { - c() { - div = element("div"); - attr(div, "data-icon", "go-to-file"); - attr(div, "aria-label", "Open File"); - attr(div, "class", "clickable-icon"); - }, - m(target, anchor) { - insert(target, div, anchor); - ctx[11](div); - if (!mounted) { - dispose = [ - listen(div, "auxclick", stop_propagation( - /*open*/ - ctx[5] - )), - listen(div, "click", stop_propagation( - /*open*/ - ctx[5] - )) - ]; - mounted = true; - } - }, - p: noop, - d(detaching) { - if (detaching) { - detach(div); - } - ctx[11](null); - mounted = false; - run_all(dispose); - } - }; -} -function create_fragment5(ctx) { - let main; - let div6; - let div0; - let t0_value = getDisplayPath( - /*change*/ - ctx[0].vault_path - ) + ""; - let t0; - let t1; - let div5; - let div3; - let show_if = ( - /*view*/ - ctx[1].app.vault.getAbstractFileByPath( - /*change*/ - ctx[0].vault_path - ) - ); - let t2; - let div1; - let t3; - let div2; - let t4; - let div4; - let t5_value = ( - /*change*/ - ctx[0].working_dir + "" - ); - let t5; - let div4_data_type_value; - let div6_data_path_value; - let div6_aria_label_value; - let mounted; - let dispose; - let if_block = show_if && create_if_block5(ctx); - return { - c() { - var _a2, _b, _c; - main = element("main"); - div6 = element("div"); - div0 = element("div"); - t0 = text(t0_value); - t1 = space(); - div5 = element("div"); - div3 = element("div"); - if (if_block) - if_block.c(); - t2 = space(); - div1 = element("div"); - t3 = space(); - div2 = element("div"); - t4 = space(); - div4 = element("div"); - t5 = text(t5_value); - attr(div0, "class", "tree-item-inner nav-file-title-content"); - attr(div1, "data-icon", "undo"); - attr(div1, "aria-label", "Discard"); - attr(div1, "class", "clickable-icon"); - attr(div2, "data-icon", "plus"); - attr(div2, "aria-label", "Stage"); - attr(div2, "class", "clickable-icon"); - attr(div3, "class", "buttons"); - attr(div4, "class", "type"); - attr(div4, "data-type", div4_data_type_value = /*change*/ - ctx[0].working_dir); - attr(div5, "class", "git-tools"); - attr(div6, "class", "tree-item-self is-clickable nav-file-title svelte-1wbh8tp"); - attr(div6, "data-path", div6_data_path_value = /*change*/ - ctx[0].vault_path); - attr( - div6, - "data-tooltip-position", - /*side*/ - ctx[3] - ); - attr(div6, "aria-label", div6_aria_label_value = /*change*/ - ctx[0].vault_path); - toggle_class( - div6, - "is-active", - /*view*/ - ((_a2 = ctx[1].plugin.lastDiffViewState) == null ? void 0 : _a2.file) == /*change*/ - ctx[0].vault_path && !/*view*/ - ((_b = ctx[1].plugin.lastDiffViewState) == null ? void 0 : _b.hash) && !/*view*/ - ((_c = ctx[1].plugin.lastDiffViewState) == null ? void 0 : _c.staged) - ); - attr(main, "class", "tree-item nav-file svelte-1wbh8tp"); - }, - m(target, anchor) { - insert(target, main, anchor); - append2(main, div6); - append2(div6, div0); - append2(div0, t0); - append2(div6, t1); - append2(div6, div5); - append2(div5, div3); - if (if_block) - if_block.m(div3, null); - append2(div3, t2); - append2(div3, div1); - ctx[12](div1); - append2(div3, t3); - append2(div3, div2); - ctx[13](div2); - append2(div5, t4); - append2(div5, div4); - append2(div4, t5); - if (!mounted) { - dispose = [ - listen(div1, "click", stop_propagation( - /*discard*/ - ctx[8] - )), - listen(div2, "click", stop_propagation( - /*stage*/ - ctx[6] - )), - listen( - main, - "mouseover", - /*hover*/ - ctx[4] - ), - listen(main, "click", stop_propagation( - /*showDiff*/ - ctx[7] - )), - listen(main, "auxclick", stop_propagation( - /*showDiff*/ - ctx[7] - )), - listen( - main, - "focus", - /*focus_handler*/ - ctx[10] - ) - ]; - mounted = true; - } - }, - p(ctx2, [dirty]) { - var _a2, _b, _c; - if (dirty & /*change*/ - 1 && t0_value !== (t0_value = getDisplayPath( - /*change*/ - ctx2[0].vault_path - ) + "")) - set_data(t0, t0_value); - if (dirty & /*view, change*/ - 3) - show_if = /*view*/ - ctx2[1].app.vault.getAbstractFileByPath( - /*change*/ - ctx2[0].vault_path - ); - if (show_if) { - if (if_block) { - if_block.p(ctx2, dirty); - } else { - if_block = create_if_block5(ctx2); - if_block.c(); - if_block.m(div3, t2); - } - } else if (if_block) { - if_block.d(1); - if_block = null; - } - if (dirty & /*change*/ - 1 && t5_value !== (t5_value = /*change*/ - ctx2[0].working_dir + "")) - set_data(t5, t5_value); - if (dirty & /*change*/ - 1 && div4_data_type_value !== (div4_data_type_value = /*change*/ - ctx2[0].working_dir)) { - attr(div4, "data-type", div4_data_type_value); - } - if (dirty & /*change*/ - 1 && div6_data_path_value !== (div6_data_path_value = /*change*/ - ctx2[0].vault_path)) { - attr(div6, "data-path", div6_data_path_value); - } - if (dirty & /*side*/ - 8) { - attr( - div6, - "data-tooltip-position", - /*side*/ - ctx2[3] - ); - } - if (dirty & /*change*/ - 1 && div6_aria_label_value !== (div6_aria_label_value = /*change*/ - ctx2[0].vault_path)) { - attr(div6, "aria-label", div6_aria_label_value); - } - if (dirty & /*view, change*/ - 3) { - toggle_class( - div6, - "is-active", - /*view*/ - ((_a2 = ctx2[1].plugin.lastDiffViewState) == null ? void 0 : _a2.file) == /*change*/ - ctx2[0].vault_path && !/*view*/ - ((_b = ctx2[1].plugin.lastDiffViewState) == null ? void 0 : _b.hash) && !/*view*/ - ((_c = ctx2[1].plugin.lastDiffViewState) == null ? void 0 : _c.staged) - ); - } - }, - i: noop, - o: noop, - d(detaching) { - if (detaching) { - detach(main); - } - if (if_block) - if_block.d(); - ctx[12](null); - ctx[13](null); - mounted = false; - run_all(dispose); - } - }; -} -function instance5($$self, $$props, $$invalidate) { - let side; - let { change } = $$props; - let { view } = $$props; - let { manager } = $$props; - let buttons = []; - window.setTimeout(() => buttons.forEach((b) => (0, import_obsidian26.setIcon)(b, b.getAttr("data-icon"))), 0); - function hover(event) { - if (app.vault.getAbstractFileByPath(change.vault_path)) { - hoverPreview(event, view, change.vault_path); - } - } - function open(event) { - var _a2; - const file = view.app.vault.getAbstractFileByPath(change.vault_path); - console.log(event); - if (file instanceof import_obsidian26.TFile) { - (_a2 = getNewLeaf(event)) === null || _a2 === void 0 ? void 0 : _a2.openFile(file); - } - } - function stage() { - manager.stage(change.path, false).finally(() => { - dispatchEvent(new CustomEvent("git-refresh")); - }); - } - function showDiff(event) { - var _a2; - (_a2 = getNewLeaf(event)) === null || _a2 === void 0 ? void 0 : _a2.setViewState({ - type: DIFF_VIEW_CONFIG.type, - active: true, - state: { file: change.path, staged: false } - }); - } - function discard() { - const deleteFile = change.working_dir == "U"; - new DiscardModal(view.app, deleteFile, change.vault_path).myOpen().then((shouldDiscard) => { - if (shouldDiscard === true) { - if (deleteFile) { - view.app.vault.adapter.remove(change.vault_path).finally(() => { - dispatchEvent(new CustomEvent("git-refresh")); - }); - } else { - manager.discard(change.path).finally(() => { - dispatchEvent(new CustomEvent("git-refresh")); - }); - } - } - }); - } - function focus_handler(event) { - bubble.call(this, $$self, event); - } - function div_binding($$value) { - binding_callbacks[$$value ? "unshift" : "push"](() => { - buttons[1] = $$value; - $$invalidate(2, buttons); - }); - } - function div1_binding($$value) { - binding_callbacks[$$value ? "unshift" : "push"](() => { - buttons[0] = $$value; - $$invalidate(2, buttons); - }); - } - function div2_binding($$value) { - binding_callbacks[$$value ? "unshift" : "push"](() => { - buttons[2] = $$value; - $$invalidate(2, buttons); - }); - } - $$self.$$set = ($$props2) => { - if ("change" in $$props2) - $$invalidate(0, change = $$props2.change); - if ("view" in $$props2) - $$invalidate(1, view = $$props2.view); - if ("manager" in $$props2) - $$invalidate(9, manager = $$props2.manager); - }; - $$self.$$.update = () => { - if ($$self.$$.dirty & /*view*/ - 2) { - $: - $$invalidate(3, side = view.leaf.getRoot().side == "left" ? "right" : "left"); - } - }; - return [ - change, - view, - buttons, - side, - hover, - open, - stage, - showDiff, - discard, - manager, - focus_handler, - div_binding, - div1_binding, - div2_binding - ]; -} -var FileComponent = class extends SvelteComponent { - constructor(options) { - super(); - init2(this, options, instance5, create_fragment5, safe_not_equal, { change: 0, view: 1, manager: 9 }, add_css3); - } -}; -var fileComponent_default = FileComponent; - -// src/ui/sourceControl/components/pulledFileComponent.svelte -init_polyfill_buffer(); -var import_obsidian27 = require("obsidian"); -function add_css4(target) { - append_styles(target, "svelte-1wbh8tp", "main.svelte-1wbh8tp .nav-file-title.svelte-1wbh8tp{align-items:center}"); -} -function create_fragment6(ctx) { - let main; - let div2; - let div0; - let t0_value = getDisplayPath( - /*change*/ - ctx[0].vault_path - ) + ""; - let t0; - let t1; - let div1; - let span; - let t2_value = ( - /*change*/ - ctx[0].working_dir + "" - ); - let t2; - let span_data_type_value; - let div2_data_path_value; - let div2_aria_label_value; - let mounted; - let dispose; - return { - c() { - main = element("main"); - div2 = element("div"); - div0 = element("div"); - t0 = text(t0_value); - t1 = space(); - div1 = element("div"); - span = element("span"); - t2 = text(t2_value); - attr(div0, "class", "tree-item-inner nav-file-title-content"); - attr(span, "class", "type"); - attr(span, "data-type", span_data_type_value = /*change*/ - ctx[0].working_dir); - attr(div1, "class", "git-tools"); - attr(div2, "class", "tree-item-self is-clickable nav-file-title svelte-1wbh8tp"); - attr(div2, "data-path", div2_data_path_value = /*change*/ - ctx[0].vault_path); - attr( - div2, - "data-tooltip-position", - /*side*/ - ctx[1] - ); - attr(div2, "aria-label", div2_aria_label_value = /*change*/ - ctx[0].vault_path); - attr(main, "class", "tree-item nav-file svelte-1wbh8tp"); - }, - m(target, anchor) { - insert(target, main, anchor); - append2(main, div2); - append2(div2, div0); - append2(div0, t0); - append2(div2, t1); - append2(div2, div1); - append2(div1, span); - append2(span, t2); - if (!mounted) { - dispose = [ - listen( - main, - "mouseover", - /*hover*/ - ctx[2] - ), - listen(main, "click", stop_propagation( - /*open*/ - ctx[3] - )), - listen(main, "auxclick", stop_propagation( - /*open*/ - ctx[3] - )), - listen( - main, - "focus", - /*focus_handler*/ - ctx[5] - ) - ]; - mounted = true; - } - }, - p(ctx2, [dirty]) { - if (dirty & /*change*/ - 1 && t0_value !== (t0_value = getDisplayPath( - /*change*/ - ctx2[0].vault_path - ) + "")) - set_data(t0, t0_value); - if (dirty & /*change*/ - 1 && t2_value !== (t2_value = /*change*/ - ctx2[0].working_dir + "")) - set_data(t2, t2_value); - if (dirty & /*change*/ - 1 && span_data_type_value !== (span_data_type_value = /*change*/ - ctx2[0].working_dir)) { - attr(span, "data-type", span_data_type_value); - } - if (dirty & /*change*/ - 1 && div2_data_path_value !== (div2_data_path_value = /*change*/ - ctx2[0].vault_path)) { - attr(div2, "data-path", div2_data_path_value); - } - if (dirty & /*side*/ - 2) { - attr( - div2, - "data-tooltip-position", - /*side*/ - ctx2[1] - ); - } - if (dirty & /*change*/ - 1 && div2_aria_label_value !== (div2_aria_label_value = /*change*/ - ctx2[0].vault_path)) { - attr(div2, "aria-label", div2_aria_label_value); - } - }, - i: noop, - o: noop, - d(detaching) { - if (detaching) { - detach(main); - } - mounted = false; - run_all(dispose); - } - }; -} -function instance6($$self, $$props, $$invalidate) { - let side; - let { change } = $$props; - let { view } = $$props; - function hover(event) { - if (app.vault.getAbstractFileByPath(change.vault_path)) { - hoverPreview(event, view, change.vault_path); - } - } - function open(event) { - var _a2; - const file = view.app.vault.getAbstractFileByPath(change.vault_path); - if (file instanceof import_obsidian27.TFile) { - (_a2 = getNewLeaf(event)) === null || _a2 === void 0 ? void 0 : _a2.openFile(file); - } - } - function focus_handler(event) { - bubble.call(this, $$self, event); - } - $$self.$$set = ($$props2) => { - if ("change" in $$props2) - $$invalidate(0, change = $$props2.change); - if ("view" in $$props2) - $$invalidate(4, view = $$props2.view); - }; - $$self.$$.update = () => { - if ($$self.$$.dirty & /*view*/ - 16) { - $: - $$invalidate(1, side = view.leaf.getRoot().side == "left" ? "right" : "left"); - } - }; - return [change, side, hover, open, view, focus_handler]; -} -var PulledFileComponent = class extends SvelteComponent { - constructor(options) { - super(); - init2(this, options, instance6, create_fragment6, safe_not_equal, { change: 0, view: 4 }, add_css4); - } -}; -var pulledFileComponent_default = PulledFileComponent; - -// src/ui/sourceControl/components/stagedFileComponent.svelte -init_polyfill_buffer(); -var import_obsidian28 = require("obsidian"); -function add_css5(target) { - append_styles(target, "svelte-1wbh8tp", "main.svelte-1wbh8tp .nav-file-title.svelte-1wbh8tp{align-items:center}"); -} -function create_if_block6(ctx) { - let div; - let mounted; - let dispose; - return { - c() { - div = element("div"); - attr(div, "data-icon", "go-to-file"); - attr(div, "aria-label", "Open File"); - attr(div, "class", "clickable-icon"); - }, - m(target, anchor) { - insert(target, div, anchor); - ctx[10](div); - if (!mounted) { - dispose = listen(div, "click", stop_propagation( - /*open*/ - ctx[5] - )); - mounted = true; - } - }, - p: noop, - d(detaching) { - if (detaching) { - detach(div); - } - ctx[10](null); - mounted = false; - dispose(); - } - }; -} -function create_fragment7(ctx) { - let main; - let div5; - let div0; - let t0_value = getDisplayPath( - /*change*/ - ctx[0].vault_path - ) + ""; - let t0; - let t1; - let div4; - let div2; - let show_if = ( - /*view*/ - ctx[1].app.vault.getAbstractFileByPath( - /*change*/ - ctx[0].vault_path - ) - ); - let t2; - let div1; - let t3; - let div3; - let t4_value = ( - /*change*/ - ctx[0].index + "" - ); - let t4; - let div3_data_type_value; - let div5_data_path_value; - let div5_aria_label_value; - let mounted; - let dispose; - let if_block = show_if && create_if_block6(ctx); - return { - c() { - var _a2, _b, _c; - main = element("main"); - div5 = element("div"); - div0 = element("div"); - t0 = text(t0_value); - t1 = space(); - div4 = element("div"); - div2 = element("div"); - if (if_block) - if_block.c(); - t2 = space(); - div1 = element("div"); - t3 = space(); - div3 = element("div"); - t4 = text(t4_value); - attr(div0, "class", "tree-item-inner nav-file-title-content"); - attr(div1, "data-icon", "minus"); - attr(div1, "aria-label", "Unstage"); - attr(div1, "class", "clickable-icon"); - attr(div2, "class", "buttons"); - attr(div3, "class", "type"); - attr(div3, "data-type", div3_data_type_value = /*change*/ - ctx[0].index); - attr(div4, "class", "git-tools"); - attr(div5, "class", "tree-item-self is-clickable nav-file-title svelte-1wbh8tp"); - attr(div5, "data-path", div5_data_path_value = /*change*/ - ctx[0].vault_path); - attr( - div5, - "data-tooltip-position", - /*side*/ - ctx[3] - ); - attr(div5, "aria-label", div5_aria_label_value = /*change*/ - ctx[0].vault_path); - toggle_class( - div5, - "is-active", - /*view*/ - ((_a2 = ctx[1].plugin.lastDiffViewState) == null ? void 0 : _a2.file) == /*change*/ - ctx[0].vault_path && !/*view*/ - ((_b = ctx[1].plugin.lastDiffViewState) == null ? void 0 : _b.hash) && /*view*/ - ((_c = ctx[1].plugin.lastDiffViewState) == null ? void 0 : _c.staged) - ); - attr(main, "class", "tree-item nav-file svelte-1wbh8tp"); - }, - m(target, anchor) { - insert(target, main, anchor); - append2(main, div5); - append2(div5, div0); - append2(div0, t0); - append2(div5, t1); - append2(div5, div4); - append2(div4, div2); - if (if_block) - if_block.m(div2, null); - append2(div2, t2); - append2(div2, div1); - ctx[11](div1); - append2(div4, t3); - append2(div4, div3); - append2(div3, t4); - if (!mounted) { - dispose = [ - listen(div1, "click", stop_propagation( - /*unstage*/ - ctx[7] - )), - listen( - main, - "mouseover", - /*hover*/ - ctx[4] - ), - listen( - main, - "focus", - /*focus_handler*/ - ctx[9] - ), - listen(main, "click", stop_propagation( - /*showDiff*/ - ctx[6] - )), - listen(main, "auxclick", stop_propagation( - /*showDiff*/ - ctx[6] - )) - ]; - mounted = true; - } - }, - p(ctx2, [dirty]) { - var _a2, _b, _c; - if (dirty & /*change*/ - 1 && t0_value !== (t0_value = getDisplayPath( - /*change*/ - ctx2[0].vault_path - ) + "")) - set_data(t0, t0_value); - if (dirty & /*view, change*/ - 3) - show_if = /*view*/ - ctx2[1].app.vault.getAbstractFileByPath( - /*change*/ - ctx2[0].vault_path - ); - if (show_if) { - if (if_block) { - if_block.p(ctx2, dirty); - } else { - if_block = create_if_block6(ctx2); - if_block.c(); - if_block.m(div2, t2); - } - } else if (if_block) { - if_block.d(1); - if_block = null; - } - if (dirty & /*change*/ - 1 && t4_value !== (t4_value = /*change*/ - ctx2[0].index + "")) - set_data(t4, t4_value); - if (dirty & /*change*/ - 1 && div3_data_type_value !== (div3_data_type_value = /*change*/ - ctx2[0].index)) { - attr(div3, "data-type", div3_data_type_value); - } - if (dirty & /*change*/ - 1 && div5_data_path_value !== (div5_data_path_value = /*change*/ - ctx2[0].vault_path)) { - attr(div5, "data-path", div5_data_path_value); - } - if (dirty & /*side*/ - 8) { - attr( - div5, - "data-tooltip-position", - /*side*/ - ctx2[3] - ); - } - if (dirty & /*change*/ - 1 && div5_aria_label_value !== (div5_aria_label_value = /*change*/ - ctx2[0].vault_path)) { - attr(div5, "aria-label", div5_aria_label_value); - } - if (dirty & /*view, change*/ - 3) { - toggle_class( - div5, - "is-active", - /*view*/ - ((_a2 = ctx2[1].plugin.lastDiffViewState) == null ? void 0 : _a2.file) == /*change*/ - ctx2[0].vault_path && !/*view*/ - ((_b = ctx2[1].plugin.lastDiffViewState) == null ? void 0 : _b.hash) && /*view*/ - ((_c = ctx2[1].plugin.lastDiffViewState) == null ? void 0 : _c.staged) - ); - } - }, - i: noop, - o: noop, - d(detaching) { - if (detaching) { - detach(main); - } - if (if_block) - if_block.d(); - ctx[11](null); - mounted = false; - run_all(dispose); - } - }; -} -function instance7($$self, $$props, $$invalidate) { - let side; - let { change } = $$props; - let { view } = $$props; - let { manager } = $$props; - let buttons = []; - window.setTimeout(() => buttons.forEach((b) => (0, import_obsidian28.setIcon)(b, b.getAttr("data-icon"))), 0); - function hover(event) { - if (app.vault.getAbstractFileByPath(change.vault_path)) { - hoverPreview(event, view, change.vault_path); - } - } - function open(event) { - var _a2; - const file = view.app.vault.getAbstractFileByPath(change.vault_path); - if (file instanceof import_obsidian28.TFile) { - (_a2 = getNewLeaf(event)) === null || _a2 === void 0 ? void 0 : _a2.openFile(file); - } - } - function showDiff(event) { - var _a2; - (_a2 = getNewLeaf(event)) === null || _a2 === void 0 ? void 0 : _a2.setViewState({ - type: DIFF_VIEW_CONFIG.type, - active: true, - state: { file: change.path, staged: true } - }); - } - function unstage() { - manager.unstage(change.path, false).finally(() => { - dispatchEvent(new CustomEvent("git-refresh")); - }); - } - function focus_handler(event) { - bubble.call(this, $$self, event); - } - function div_binding($$value) { - binding_callbacks[$$value ? "unshift" : "push"](() => { - buttons[1] = $$value; - $$invalidate(2, buttons); - }); - } - function div1_binding($$value) { - binding_callbacks[$$value ? "unshift" : "push"](() => { - buttons[0] = $$value; - $$invalidate(2, buttons); - }); - } - $$self.$$set = ($$props2) => { - if ("change" in $$props2) - $$invalidate(0, change = $$props2.change); - if ("view" in $$props2) - $$invalidate(1, view = $$props2.view); - if ("manager" in $$props2) - $$invalidate(8, manager = $$props2.manager); - }; - $$self.$$.update = () => { - if ($$self.$$.dirty & /*view*/ - 2) { - $: - $$invalidate(3, side = view.leaf.getRoot().side == "left" ? "right" : "left"); - } - }; - return [ - change, - view, - buttons, - side, - hover, - open, - showDiff, - unstage, - manager, - focus_handler, - div_binding, - div1_binding - ]; -} -var StagedFileComponent = class extends SvelteComponent { - constructor(options) { - super(); - init2(this, options, instance7, create_fragment7, safe_not_equal, { change: 0, view: 1, manager: 8 }, add_css5); - } -}; -var stagedFileComponent_default = StagedFileComponent; - -// src/ui/sourceControl/components/treeComponent.svelte -init_polyfill_buffer(); -function add_css6(target) { - append_styles(target, "svelte-hup5mn", "main.svelte-hup5mn .nav-folder-title.svelte-hup5mn{align-items:center}"); -} -function get_each_context4(ctx, list, i) { - const child_ctx = ctx.slice(); - child_ctx[15] = list[i]; - return child_ctx; -} -function create_else_block3(ctx) { - let div7; - let div6; - let div0; - let t0; - let div1; - let t1; - let div2; - let t2_value = ( - /*entity*/ - ctx[15].title + "" - ); - let t2; - let t3; - let div5; - let div4; - let t4; - let div3; - let div6_aria_label_value; - let t5; - let t6; - let current; - let mounted; - let dispose; - function select_block_type_2(ctx2, dirty) { - if ( - /*fileType*/ - ctx2[3] == 0 /* staged */ - ) - return create_if_block_5; - return create_else_block_1; - } - let current_block_type = select_block_type_2(ctx, -1); - let if_block0 = current_block_type(ctx); - let if_block1 = !/*closed*/ - ctx[5][ - /*entity*/ - ctx[15].title - ] && create_if_block_42(ctx); - function click_handler_3() { - return ( - /*click_handler_3*/ - ctx[14]( - /*entity*/ - ctx[15] - ) - ); - } - return { - c() { - div7 = element("div"); - div6 = element("div"); - div0 = element("div"); - t0 = space(); - div1 = element("div"); - div1.innerHTML = ``; - t1 = space(); - div2 = element("div"); - t2 = text(t2_value); - t3 = space(); - div5 = element("div"); - div4 = element("div"); - if_block0.c(); - t4 = space(); - div3 = element("div"); - t5 = space(); - if (if_block1) - if_block1.c(); - t6 = space(); - attr(div0, "data-icon", "folder"); - set_style(div0, "padding-right", "5px"); - set_style(div0, "display", "flex"); - attr(div1, "class", "tree-item-icon nav-folder-collapse-indicator collapse-icon"); - toggle_class( - div1, - "is-collapsed", - /*closed*/ - ctx[5][ - /*entity*/ - ctx[15].title - ] - ); - attr(div2, "class", "tree-item-inner nav-folder-title-content"); - set_style(div3, "width", "11px"); - attr(div4, "class", "buttons"); - attr(div5, "class", "git-tools"); - attr(div6, "class", "tree-item-self is-clickable nav-folder-title svelte-hup5mn"); - attr( - div6, - "data-tooltip-position", - /*side*/ - ctx[6] - ); - attr(div6, "aria-label", div6_aria_label_value = /*entity*/ - ctx[15].vaultPath); - attr(div7, "class", "tree-item nav-folder"); - toggle_class( - div7, - "is-collapsed", - /*closed*/ - ctx[5][ - /*entity*/ - ctx[15].title - ] - ); - }, - m(target, anchor) { - insert(target, div7, anchor); - append2(div7, div6); - append2(div6, div0); - append2(div6, t0); - append2(div6, div1); - append2(div6, t1); - append2(div6, div2); - append2(div2, t2); - append2(div6, t3); - append2(div6, div5); - append2(div5, div4); - if_block0.m(div4, null); - append2(div4, t4); - append2(div4, div3); - append2(div7, t5); - if (if_block1) - if_block1.m(div7, null); - append2(div7, t6); - current = true; - if (!mounted) { - dispose = listen(div7, "click", stop_propagation(click_handler_3)); - mounted = true; - } - }, - p(new_ctx, dirty) { - ctx = new_ctx; - if (!current || dirty & /*closed, hierarchy*/ - 33) { - toggle_class( - div1, - "is-collapsed", - /*closed*/ - ctx[5][ - /*entity*/ - ctx[15].title - ] - ); - } - if ((!current || dirty & /*hierarchy*/ - 1) && t2_value !== (t2_value = /*entity*/ - ctx[15].title + "")) - set_data(t2, t2_value); - if (current_block_type === (current_block_type = select_block_type_2(ctx, dirty)) && if_block0) { - if_block0.p(ctx, dirty); - } else { - if_block0.d(1); - if_block0 = current_block_type(ctx); - if (if_block0) { - if_block0.c(); - if_block0.m(div4, t4); - } - } - if (!current || dirty & /*side*/ - 64) { - attr( - div6, - "data-tooltip-position", - /*side*/ - ctx[6] - ); - } - if (!current || dirty & /*hierarchy*/ - 1 && div6_aria_label_value !== (div6_aria_label_value = /*entity*/ - ctx[15].vaultPath)) { - attr(div6, "aria-label", div6_aria_label_value); - } - if (!/*closed*/ - ctx[5][ - /*entity*/ - ctx[15].title - ]) { - if (if_block1) { - if_block1.p(ctx, dirty); - if (dirty & /*closed, hierarchy*/ - 33) { - transition_in(if_block1, 1); - } - } else { - if_block1 = create_if_block_42(ctx); - if_block1.c(); - transition_in(if_block1, 1); - if_block1.m(div7, t6); - } - } else if (if_block1) { - group_outros(); - transition_out(if_block1, 1, 1, () => { - if_block1 = null; - }); - check_outros(); - } - if (!current || dirty & /*closed, hierarchy*/ - 33) { - toggle_class( - div7, - "is-collapsed", - /*closed*/ - ctx[5][ - /*entity*/ - ctx[15].title - ] - ); - } - }, - i(local) { - if (current) - return; - transition_in(if_block1); - current = true; - }, - o(local) { - transition_out(if_block1); - current = false; - }, - d(detaching) { - if (detaching) { - detach(div7); - } - if_block0.d(); - if (if_block1) - if_block1.d(); - mounted = false; - dispose(); - } - }; -} -function create_if_block7(ctx) { - let div; - let current_block_type_index; - let if_block; - let t; - let current; - const if_block_creators = [create_if_block_13, create_if_block_22, create_if_block_32]; - const if_blocks = []; - function select_block_type_1(ctx2, dirty) { - if ( - /*fileType*/ - ctx2[3] == 0 /* staged */ - ) - return 0; - if ( - /*fileType*/ - ctx2[3] == 1 /* changed */ - ) - return 1; - if ( - /*fileType*/ - ctx2[3] == 2 /* pulled */ - ) - return 2; - return -1; - } - if (~(current_block_type_index = select_block_type_1(ctx, -1))) { - if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx); - } - return { - c() { - div = element("div"); - if (if_block) - if_block.c(); - t = space(); - }, - m(target, anchor) { - insert(target, div, anchor); - if (~current_block_type_index) { - if_blocks[current_block_type_index].m(div, null); - } - append2(div, t); - current = true; - }, - p(ctx2, dirty) { - let previous_block_index = current_block_type_index; - current_block_type_index = select_block_type_1(ctx2, dirty); - if (current_block_type_index === previous_block_index) { - if (~current_block_type_index) { - if_blocks[current_block_type_index].p(ctx2, dirty); - } - } else { - if (if_block) { - group_outros(); - transition_out(if_blocks[previous_block_index], 1, 1, () => { - if_blocks[previous_block_index] = null; - }); - check_outros(); - } - if (~current_block_type_index) { - if_block = if_blocks[current_block_type_index]; - if (!if_block) { - if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx2); - if_block.c(); - } else { - if_block.p(ctx2, dirty); - } - transition_in(if_block, 1); - if_block.m(div, t); - } else { - if_block = null; - } - } - }, - i(local) { - if (current) - return; - transition_in(if_block); - current = true; - }, - o(local) { - transition_out(if_block); - current = false; - }, - d(detaching) { - if (detaching) { - detach(div); - } - if (~current_block_type_index) { - if_blocks[current_block_type_index].d(); - } - } - }; -} -function create_else_block_1(ctx) { - let div0; - let t; - let div1; - let mounted; - let dispose; - function click_handler_1() { - return ( - /*click_handler_1*/ - ctx[12]( - /*entity*/ - ctx[15] - ) - ); - } - function click_handler_2() { - return ( - /*click_handler_2*/ - ctx[13]( - /*entity*/ - ctx[15] - ) - ); - } - return { - c() { - div0 = element("div"); - div0.innerHTML = ``; - t = space(); - div1 = element("div"); - div1.innerHTML = ``; - attr(div0, "data-icon", "undo"); - attr(div0, "aria-label", "Discard"); - attr(div0, "class", "clickable-icon"); - attr(div1, "data-icon", "plus"); - attr(div1, "aria-label", "Stage"); - attr(div1, "class", "clickable-icon"); - }, - m(target, anchor) { - insert(target, div0, anchor); - insert(target, t, anchor); - insert(target, div1, anchor); - if (!mounted) { - dispose = [ - listen(div0, "click", stop_propagation(click_handler_1)), - listen(div1, "click", stop_propagation(click_handler_2)) - ]; - mounted = true; - } - }, - p(new_ctx, dirty) { - ctx = new_ctx; - }, - d(detaching) { - if (detaching) { - detach(div0); - detach(t); - detach(div1); - } - mounted = false; - run_all(dispose); - } - }; -} -function create_if_block_5(ctx) { - let div; - let mounted; - let dispose; - function click_handler() { - return ( - /*click_handler*/ - ctx[11]( - /*entity*/ - ctx[15] - ) - ); - } - return { - c() { - div = element("div"); - div.innerHTML = ``; - attr(div, "data-icon", "minus"); - attr(div, "aria-label", "Unstage"); - attr(div, "class", "clickable-icon"); - }, - m(target, anchor) { - insert(target, div, anchor); - if (!mounted) { - dispose = listen(div, "click", stop_propagation(click_handler)); - mounted = true; - } - }, - p(new_ctx, dirty) { - ctx = new_ctx; - }, - d(detaching) { - if (detaching) { - detach(div); - } - mounted = false; - dispose(); - } - }; -} -function create_if_block_42(ctx) { - let div; - let treecomponent; - let div_transition; - let current; - treecomponent = new TreeComponent({ - props: { - hierarchy: ( - /*entity*/ - ctx[15] - ), - plugin: ( - /*plugin*/ - ctx[1] - ), - view: ( - /*view*/ - ctx[2] - ), - fileType: ( - /*fileType*/ - ctx[3] - ) - } - }); - return { - c() { - div = element("div"); - create_component(treecomponent.$$.fragment); - attr(div, "class", "tree-item-children nav-folder-children"); - }, - m(target, anchor) { - insert(target, div, anchor); - mount_component(treecomponent, div, null); - current = true; - }, - p(ctx2, dirty) { - const treecomponent_changes = {}; - if (dirty & /*hierarchy*/ - 1) - treecomponent_changes.hierarchy = /*entity*/ - ctx2[15]; - if (dirty & /*plugin*/ - 2) - treecomponent_changes.plugin = /*plugin*/ - ctx2[1]; - if (dirty & /*view*/ - 4) - treecomponent_changes.view = /*view*/ - ctx2[2]; - if (dirty & /*fileType*/ - 8) - treecomponent_changes.fileType = /*fileType*/ - ctx2[3]; - treecomponent.$set(treecomponent_changes); - }, - i(local) { - if (current) - return; - transition_in(treecomponent.$$.fragment, local); - if (local) { - add_render_callback(() => { - if (!current) - return; - if (!div_transition) - div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, true); - div_transition.run(1); - }); - } - current = true; - }, - o(local) { - transition_out(treecomponent.$$.fragment, local); - if (local) { - if (!div_transition) - div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, false); - div_transition.run(0); - } - current = false; - }, - d(detaching) { - if (detaching) { - detach(div); - } - destroy_component(treecomponent); - if (detaching && div_transition) - div_transition.end(); - } - }; -} -function create_if_block_32(ctx) { - let pulledfilecomponent; - let current; - pulledfilecomponent = new pulledFileComponent_default({ - props: { - change: ( - /*entity*/ - ctx[15].data - ), - view: ( - /*view*/ - ctx[2] - ) - } - }); - return { - c() { - create_component(pulledfilecomponent.$$.fragment); - }, - m(target, anchor) { - mount_component(pulledfilecomponent, target, anchor); - current = true; - }, - p(ctx2, dirty) { - const pulledfilecomponent_changes = {}; - if (dirty & /*hierarchy*/ - 1) - pulledfilecomponent_changes.change = /*entity*/ - ctx2[15].data; - if (dirty & /*view*/ - 4) - pulledfilecomponent_changes.view = /*view*/ - ctx2[2]; - pulledfilecomponent.$set(pulledfilecomponent_changes); - }, - i(local) { - if (current) - return; - transition_in(pulledfilecomponent.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(pulledfilecomponent.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(pulledfilecomponent, detaching); - } - }; -} -function create_if_block_22(ctx) { - let filecomponent; - let current; - filecomponent = new fileComponent_default({ - props: { - change: ( - /*entity*/ - ctx[15].data - ), - manager: ( - /*plugin*/ - ctx[1].gitManager - ), - view: ( - /*view*/ - ctx[2] - ) - } - }); - return { - c() { - create_component(filecomponent.$$.fragment); - }, - m(target, anchor) { - mount_component(filecomponent, target, anchor); - current = true; - }, - p(ctx2, dirty) { - const filecomponent_changes = {}; - if (dirty & /*hierarchy*/ - 1) - filecomponent_changes.change = /*entity*/ - ctx2[15].data; - if (dirty & /*plugin*/ - 2) - filecomponent_changes.manager = /*plugin*/ - ctx2[1].gitManager; - if (dirty & /*view*/ - 4) - filecomponent_changes.view = /*view*/ - ctx2[2]; - filecomponent.$set(filecomponent_changes); - }, - i(local) { - if (current) - return; - transition_in(filecomponent.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(filecomponent.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(filecomponent, detaching); - } - }; -} -function create_if_block_13(ctx) { - let stagedfilecomponent; - let current; - stagedfilecomponent = new stagedFileComponent_default({ - props: { - change: ( - /*entity*/ - ctx[15].data - ), - manager: ( - /*plugin*/ - ctx[1].gitManager - ), - view: ( - /*view*/ - ctx[2] - ) - } - }); - return { - c() { - create_component(stagedfilecomponent.$$.fragment); - }, - m(target, anchor) { - mount_component(stagedfilecomponent, target, anchor); - current = true; - }, - p(ctx2, dirty) { - const stagedfilecomponent_changes = {}; - if (dirty & /*hierarchy*/ - 1) - stagedfilecomponent_changes.change = /*entity*/ - ctx2[15].data; - if (dirty & /*plugin*/ - 2) - stagedfilecomponent_changes.manager = /*plugin*/ - ctx2[1].gitManager; - if (dirty & /*view*/ - 4) - stagedfilecomponent_changes.view = /*view*/ - ctx2[2]; - stagedfilecomponent.$set(stagedfilecomponent_changes); - }, - i(local) { - if (current) - return; - transition_in(stagedfilecomponent.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(stagedfilecomponent.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(stagedfilecomponent, detaching); - } - }; -} -function create_each_block4(ctx) { - let current_block_type_index; - let if_block; - let if_block_anchor; - let current; - const if_block_creators = [create_if_block7, create_else_block3]; - const if_blocks = []; - function select_block_type(ctx2, dirty) { - if ( - /*entity*/ - ctx2[15].data - ) - return 0; - return 1; - } - current_block_type_index = select_block_type(ctx, -1); - if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx); - return { - c() { - if_block.c(); - if_block_anchor = empty(); - }, - m(target, anchor) { - if_blocks[current_block_type_index].m(target, anchor); - insert(target, if_block_anchor, anchor); - current = true; - }, - p(ctx2, dirty) { - let previous_block_index = current_block_type_index; - current_block_type_index = select_block_type(ctx2, dirty); - if (current_block_type_index === previous_block_index) { - if_blocks[current_block_type_index].p(ctx2, dirty); - } else { - group_outros(); - transition_out(if_blocks[previous_block_index], 1, 1, () => { - if_blocks[previous_block_index] = null; - }); - check_outros(); - if_block = if_blocks[current_block_type_index]; - if (!if_block) { - if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx2); - if_block.c(); - } else { - if_block.p(ctx2, dirty); - } - transition_in(if_block, 1); - if_block.m(if_block_anchor.parentNode, if_block_anchor); - } - }, - i(local) { - if (current) - return; - transition_in(if_block); - current = true; - }, - o(local) { - transition_out(if_block); - current = false; - }, - d(detaching) { - if (detaching) { - detach(if_block_anchor); - } - if_blocks[current_block_type_index].d(detaching); - } - }; -} -function create_fragment8(ctx) { - let main; - let current; - let each_value = ensure_array_like( - /*hierarchy*/ - ctx[0].children - ); - let each_blocks = []; - for (let i = 0; i < each_value.length; i += 1) { - each_blocks[i] = create_each_block4(get_each_context4(ctx, each_value, i)); - } - const out = (i) => transition_out(each_blocks[i], 1, 1, () => { - each_blocks[i] = null; - }); - return { - c() { - main = element("main"); - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].c(); - } - attr(main, "class", "svelte-hup5mn"); - toggle_class( - main, - "topLevel", - /*topLevel*/ - ctx[4] - ); - }, - m(target, anchor) { - insert(target, main, anchor); - for (let i = 0; i < each_blocks.length; i += 1) { - if (each_blocks[i]) { - each_blocks[i].m(main, null); - } - } - current = true; - }, - p(ctx2, [dirty]) { - if (dirty & /*hierarchy, plugin, view, fileType, closed, fold, side, unstage, stage, discard*/ - 2031) { - each_value = ensure_array_like( - /*hierarchy*/ - ctx2[0].children - ); - let i; - for (i = 0; i < each_value.length; i += 1) { - const child_ctx = get_each_context4(ctx2, each_value, i); - if (each_blocks[i]) { - each_blocks[i].p(child_ctx, dirty); - transition_in(each_blocks[i], 1); - } else { - each_blocks[i] = create_each_block4(child_ctx); - each_blocks[i].c(); - transition_in(each_blocks[i], 1); - each_blocks[i].m(main, null); - } - } - group_outros(); - for (i = each_value.length; i < each_blocks.length; i += 1) { - out(i); - } - check_outros(); - } - if (!current || dirty & /*topLevel*/ - 16) { - toggle_class( - main, - "topLevel", - /*topLevel*/ - ctx2[4] - ); - } - }, - i(local) { - if (current) - return; - for (let i = 0; i < each_value.length; i += 1) { - transition_in(each_blocks[i]); - } - current = true; - }, - o(local) { - each_blocks = each_blocks.filter(Boolean); - for (let i = 0; i < each_blocks.length; i += 1) { - transition_out(each_blocks[i]); - } - current = false; - }, - d(detaching) { - if (detaching) { - detach(main); - } - destroy_each(each_blocks, detaching); - } - }; -} -function instance8($$self, $$props, $$invalidate) { - let side; - let { hierarchy } = $$props; - let { plugin } = $$props; - let { view } = $$props; - let { fileType } = $$props; - let { topLevel = false } = $$props; - const closed = {}; - function stage(path2) { - plugin.gitManager.stageAll({ dir: path2 }).finally(() => { - dispatchEvent(new CustomEvent("git-refresh")); - }); - } - function unstage(path2) { - plugin.gitManager.unstageAll({ dir: path2 }).finally(() => { - dispatchEvent(new CustomEvent("git-refresh")); - }); - } - function discard(item) { - new DiscardModal(view.app, false, item.vaultPath).myOpen().then((shouldDiscard) => { - if (shouldDiscard === true) { - plugin.gitManager.discardAll({ - dir: item.path, - status: plugin.cachedStatus - }).finally(() => { - dispatchEvent(new CustomEvent("git-refresh")); - }); - } - }); - } - function fold(item) { - $$invalidate(5, closed[item.title] = !closed[item.title], closed); - } - const click_handler = (entity) => unstage(entity.path); - const click_handler_1 = (entity) => discard(entity); - const click_handler_2 = (entity) => stage(entity.path); - const click_handler_3 = (entity) => fold(entity); - $$self.$$set = ($$props2) => { - if ("hierarchy" in $$props2) - $$invalidate(0, hierarchy = $$props2.hierarchy); - if ("plugin" in $$props2) - $$invalidate(1, plugin = $$props2.plugin); - if ("view" in $$props2) - $$invalidate(2, view = $$props2.view); - if ("fileType" in $$props2) - $$invalidate(3, fileType = $$props2.fileType); - if ("topLevel" in $$props2) - $$invalidate(4, topLevel = $$props2.topLevel); - }; - $$self.$$.update = () => { - if ($$self.$$.dirty & /*view*/ - 4) { - $: - $$invalidate(6, side = view.leaf.getRoot().side == "left" ? "right" : "left"); - } - }; - return [ - hierarchy, - plugin, - view, - fileType, - topLevel, - closed, - side, - stage, - unstage, - discard, - fold, - click_handler, - click_handler_1, - click_handler_2, - click_handler_3 - ]; -} -var TreeComponent = class extends SvelteComponent { - constructor(options) { - super(); - init2( - this, - options, - instance8, - create_fragment8, - safe_not_equal, - { - hierarchy: 0, - plugin: 1, - view: 2, - fileType: 3, - topLevel: 4 - }, - add_css6 - ); - } -}; -var treeComponent_default = TreeComponent; - -// src/ui/sourceControl/sourceControl.svelte -function add_css7(target) { - append_styles(target, "svelte-11adhly", `.commit-msg-input.svelte-11adhly.svelte-11adhly{width:100%;overflow:hidden;resize:none;padding:7px 5px;background-color:var(--background-modifier-form-field)}.git-commit-msg.svelte-11adhly.svelte-11adhly{position:relative;padding:0;width:calc(100% - var(--size-4-8));margin:4px auto}main.svelte-11adhly .git-tools .files-count.svelte-11adhly{padding-left:var(--size-2-1);width:11px;display:flex;align-items:center;justify-content:center}.nav-folder-title.svelte-11adhly.svelte-11adhly{align-items:center}.git-commit-msg-clear-button.svelte-11adhly.svelte-11adhly{position:absolute;background:transparent;border-radius:50%;color:var(--search-clear-button-color);cursor:var(--cursor);top:-4px;right:2px;bottom:0px;line-height:0;height:var(--input-height);width:28px;margin:auto;padding:0 0;text-align:center;display:flex;justify-content:center;align-items:center;transition:color 0.15s ease-in-out}.git-commit-msg-clear-button.svelte-11adhly.svelte-11adhly:after{content:"";height:var(--search-clear-button-size);width:var(--search-clear-button-size);display:block;background-color:currentColor;mask-image:url("data:image/svg+xml,");mask-repeat:no-repeat;-webkit-mask-image:url("data:image/svg+xml,");-webkit-mask-repeat:no-repeat}`); -} -function get_each_context5(ctx, list, i) { - const child_ctx = ctx.slice(); - child_ctx[40] = list[i]; - return child_ctx; -} -function get_each_context_1(ctx, list, i) { - const child_ctx = ctx.slice(); - child_ctx[40] = list[i]; - return child_ctx; -} -function get_each_context_2(ctx, list, i) { - const child_ctx = ctx.slice(); - child_ctx[45] = list[i]; - return child_ctx; -} -function create_if_block_8(ctx) { - let div; - let div_aria_label_value; - let mounted; - let dispose; - return { - c() { - div = element("div"); - attr(div, "class", "git-commit-msg-clear-button svelte-11adhly"); - attr(div, "aria-label", div_aria_label_value = "Clear"); - }, - m(target, anchor) { - insert(target, div, anchor); - if (!mounted) { - dispose = listen( - div, - "click", - /*click_handler_1*/ - ctx[33] - ); - mounted = true; - } - }, - p: noop, - d(detaching) { - if (detaching) { - detach(div); - } - mounted = false; - dispose(); - } - }; -} -function create_if_block8(ctx) { - let div18; - let div17; - let div7; - let div6; - let div0; - let t0; - let div1; - let t2; - let div5; - let div3; - let div2; - let t3; - let div4; - let t4_value = ( - /*status*/ - ctx[6].staged.length + "" - ); - let t4; - let t5; - let t6; - let div16; - let div15; - let div8; - let t7; - let div9; - let t9; - let div14; - let div12; - let div10; - let t10; - let div11; - let t11; - let div13; - let t12_value = ( - /*status*/ - ctx[6].changed.length + "" - ); - let t12; - let t13; - let t14; - let current; - let mounted; - let dispose; - let if_block0 = ( - /*stagedOpen*/ - ctx[13] && create_if_block_6(ctx) - ); - let if_block1 = ( - /*changesOpen*/ - ctx[12] && create_if_block_43(ctx) - ); - let if_block2 = ( - /*lastPulledFiles*/ - ctx[7].length > 0 && create_if_block_14(ctx) - ); - return { - c() { - div18 = element("div"); - div17 = element("div"); - div7 = element("div"); - div6 = element("div"); - div0 = element("div"); - div0.innerHTML = ``; - t0 = space(); - div1 = element("div"); - div1.textContent = "Staged Changes"; - t2 = space(); - div5 = element("div"); - div3 = element("div"); - div2 = element("div"); - div2.innerHTML = ``; - t3 = space(); - div4 = element("div"); - t4 = text(t4_value); - t5 = space(); - if (if_block0) - if_block0.c(); - t6 = space(); - div16 = element("div"); - div15 = element("div"); - div8 = element("div"); - div8.innerHTML = ``; - t7 = space(); - div9 = element("div"); - div9.textContent = "Changes"; - t9 = space(); - div14 = element("div"); - div12 = element("div"); - div10 = element("div"); - div10.innerHTML = ``; - t10 = space(); - div11 = element("div"); - div11.innerHTML = ``; - t11 = space(); - div13 = element("div"); - t12 = text(t12_value); - t13 = space(); - if (if_block1) - if_block1.c(); - t14 = space(); - if (if_block2) - if_block2.c(); - attr(div0, "class", "tree-item-icon nav-folder-collapse-indicator collapse-icon"); - toggle_class(div0, "is-collapsed", !/*stagedOpen*/ - ctx[13]); - attr(div1, "class", "tree-item-inner nav-folder-title-content"); - attr(div2, "data-icon", "minus"); - attr(div2, "aria-label", "Unstage"); - attr(div2, "class", "clickable-icon"); - attr(div3, "class", "buttons"); - attr(div4, "class", "files-count svelte-11adhly"); - attr(div5, "class", "git-tools"); - attr(div6, "class", "tree-item-self is-clickable nav-folder-title svelte-11adhly"); - attr(div7, "class", "staged tree-item nav-folder"); - toggle_class(div7, "is-collapsed", !/*stagedOpen*/ - ctx[13]); - attr(div8, "class", "tree-item-icon nav-folder-collapse-indicator collapse-icon"); - toggle_class(div8, "is-collapsed", !/*changesOpen*/ - ctx[12]); - attr(div9, "class", "tree-item-inner nav-folder-title-content"); - attr(div10, "data-icon", "undo"); - attr(div10, "aria-label", "Discard"); - attr(div10, "class", "clickable-icon"); - attr(div11, "data-icon", "plus"); - attr(div11, "aria-label", "Stage"); - attr(div11, "class", "clickable-icon"); - attr(div12, "class", "buttons"); - attr(div13, "class", "files-count svelte-11adhly"); - attr(div14, "class", "git-tools"); - attr(div15, "class", "tree-item-self is-clickable nav-folder-title svelte-11adhly"); - attr(div16, "class", "changes tree-item nav-folder"); - toggle_class(div16, "is-collapsed", !/*changesOpen*/ - ctx[12]); - attr(div17, "class", "tree-item-children nav-folder-children"); - attr(div18, "class", "tree-item nav-folder mod-root"); - }, - m(target, anchor) { - insert(target, div18, anchor); - append2(div18, div17); - append2(div17, div7); - append2(div7, div6); - append2(div6, div0); - append2(div6, t0); - append2(div6, div1); - append2(div6, t2); - append2(div6, div5); - append2(div5, div3); - append2(div3, div2); - ctx[34](div2); - append2(div5, t3); - append2(div5, div4); - append2(div4, t4); - append2(div7, t5); - if (if_block0) - if_block0.m(div7, null); - append2(div17, t6); - append2(div17, div16); - append2(div16, div15); - append2(div15, div8); - append2(div15, t7); - append2(div15, div9); - append2(div15, t9); - append2(div15, div14); - append2(div14, div12); - append2(div12, div10); - append2(div12, t10); - append2(div12, div11); - ctx[36](div11); - append2(div14, t11); - append2(div14, div13); - append2(div13, t12); - append2(div16, t13); - if (if_block1) - if_block1.m(div16, null); - append2(div17, t14); - if (if_block2) - if_block2.m(div17, null); - current = true; - if (!mounted) { - dispose = [ - listen(div2, "click", stop_propagation( - /*unstageAll*/ - ctx[19] - )), - listen( - div6, - "click", - /*click_handler_2*/ - ctx[35] - ), - listen(div10, "click", stop_propagation( - /*discard*/ - ctx[22] - )), - listen(div11, "click", stop_propagation( - /*stageAll*/ - ctx[18] - )), - listen( - div15, - "click", - /*click_handler_3*/ - ctx[37] - ) - ]; - mounted = true; - } - }, - p(ctx2, dirty) { - if (!current || dirty[0] & /*stagedOpen*/ - 8192) { - toggle_class(div0, "is-collapsed", !/*stagedOpen*/ - ctx2[13]); - } - if ((!current || dirty[0] & /*status*/ - 64) && t4_value !== (t4_value = /*status*/ - ctx2[6].staged.length + "")) - set_data(t4, t4_value); - if ( - /*stagedOpen*/ - ctx2[13] - ) { - if (if_block0) { - if_block0.p(ctx2, dirty); - if (dirty[0] & /*stagedOpen*/ - 8192) { - transition_in(if_block0, 1); - } - } else { - if_block0 = create_if_block_6(ctx2); - if_block0.c(); - transition_in(if_block0, 1); - if_block0.m(div7, null); - } - } else if (if_block0) { - group_outros(); - transition_out(if_block0, 1, 1, () => { - if_block0 = null; - }); - check_outros(); - } - if (!current || dirty[0] & /*stagedOpen*/ - 8192) { - toggle_class(div7, "is-collapsed", !/*stagedOpen*/ - ctx2[13]); - } - if (!current || dirty[0] & /*changesOpen*/ - 4096) { - toggle_class(div8, "is-collapsed", !/*changesOpen*/ - ctx2[12]); - } - if ((!current || dirty[0] & /*status*/ - 64) && t12_value !== (t12_value = /*status*/ - ctx2[6].changed.length + "")) - set_data(t12, t12_value); - if ( - /*changesOpen*/ - ctx2[12] - ) { - if (if_block1) { - if_block1.p(ctx2, dirty); - if (dirty[0] & /*changesOpen*/ - 4096) { - transition_in(if_block1, 1); - } - } else { - if_block1 = create_if_block_43(ctx2); - if_block1.c(); - transition_in(if_block1, 1); - if_block1.m(div16, null); - } - } else if (if_block1) { - group_outros(); - transition_out(if_block1, 1, 1, () => { - if_block1 = null; - }); - check_outros(); - } - if (!current || dirty[0] & /*changesOpen*/ - 4096) { - toggle_class(div16, "is-collapsed", !/*changesOpen*/ - ctx2[12]); - } - if ( - /*lastPulledFiles*/ - ctx2[7].length > 0 - ) { - if (if_block2) { - if_block2.p(ctx2, dirty); - if (dirty[0] & /*lastPulledFiles*/ - 128) { - transition_in(if_block2, 1); - } - } else { - if_block2 = create_if_block_14(ctx2); - if_block2.c(); - transition_in(if_block2, 1); - if_block2.m(div17, null); - } - } else if (if_block2) { - group_outros(); - transition_out(if_block2, 1, 1, () => { - if_block2 = null; - }); - check_outros(); - } - }, - i(local) { - if (current) - return; - transition_in(if_block0); - transition_in(if_block1); - transition_in(if_block2); - current = true; - }, - o(local) { - transition_out(if_block0); - transition_out(if_block1); - transition_out(if_block2); - current = false; - }, - d(detaching) { - if (detaching) { - detach(div18); - } - ctx[34](null); - if (if_block0) - if_block0.d(); - ctx[36](null); - if (if_block1) - if_block1.d(); - if (if_block2) - if_block2.d(); - mounted = false; - run_all(dispose); - } - }; -} -function create_if_block_6(ctx) { - let div; - let current_block_type_index; - let if_block; - let div_transition; - let current; - const if_block_creators = [create_if_block_7, create_else_block_2]; - const if_blocks = []; - function select_block_type(ctx2, dirty) { - if ( - /*showTree*/ - ctx2[3] - ) - return 0; - return 1; - } - current_block_type_index = select_block_type(ctx, [-1, -1]); - if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx); - return { - c() { - div = element("div"); - if_block.c(); - attr(div, "class", "tree-item-children nav-folder-children"); - }, - m(target, anchor) { - insert(target, div, anchor); - if_blocks[current_block_type_index].m(div, null); - current = true; - }, - p(ctx2, dirty) { - let previous_block_index = current_block_type_index; - current_block_type_index = select_block_type(ctx2, dirty); - if (current_block_type_index === previous_block_index) { - if_blocks[current_block_type_index].p(ctx2, dirty); - } else { - group_outros(); - transition_out(if_blocks[previous_block_index], 1, 1, () => { - if_blocks[previous_block_index] = null; - }); - check_outros(); - if_block = if_blocks[current_block_type_index]; - if (!if_block) { - if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx2); - if_block.c(); - } else { - if_block.p(ctx2, dirty); - } - transition_in(if_block, 1); - if_block.m(div, null); - } - }, - i(local) { - if (current) - return; - transition_in(if_block); - if (local) { - add_render_callback(() => { - if (!current) - return; - if (!div_transition) - div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, true); - div_transition.run(1); - }); - } - current = true; - }, - o(local) { - transition_out(if_block); - if (local) { - if (!div_transition) - div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, false); - div_transition.run(0); - } - current = false; - }, - d(detaching) { - if (detaching) { - detach(div); - } - if_blocks[current_block_type_index].d(); - if (detaching && div_transition) - div_transition.end(); - } - }; -} -function create_else_block_2(ctx) { - let each_1_anchor; - let current; - let each_value_2 = ensure_array_like( - /*status*/ - ctx[6].staged - ); - let each_blocks = []; - for (let i = 0; i < each_value_2.length; i += 1) { - each_blocks[i] = create_each_block_2(get_each_context_2(ctx, each_value_2, i)); - } - const out = (i) => transition_out(each_blocks[i], 1, 1, () => { - each_blocks[i] = null; - }); - return { - c() { - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].c(); - } - each_1_anchor = empty(); - }, - m(target, anchor) { - for (let i = 0; i < each_blocks.length; i += 1) { - if (each_blocks[i]) { - each_blocks[i].m(target, anchor); - } - } - insert(target, each_1_anchor, anchor); - current = true; - }, - p(ctx2, dirty) { - if (dirty[0] & /*status, view, plugin*/ - 67) { - each_value_2 = ensure_array_like( - /*status*/ - ctx2[6].staged - ); - let i; - for (i = 0; i < each_value_2.length; i += 1) { - const child_ctx = get_each_context_2(ctx2, each_value_2, i); - if (each_blocks[i]) { - each_blocks[i].p(child_ctx, dirty); - transition_in(each_blocks[i], 1); - } else { - each_blocks[i] = create_each_block_2(child_ctx); - each_blocks[i].c(); - transition_in(each_blocks[i], 1); - each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor); - } - } - group_outros(); - for (i = each_value_2.length; i < each_blocks.length; i += 1) { - out(i); - } - check_outros(); - } - }, - i(local) { - if (current) - return; - for (let i = 0; i < each_value_2.length; i += 1) { - transition_in(each_blocks[i]); - } - current = true; - }, - o(local) { - each_blocks = each_blocks.filter(Boolean); - for (let i = 0; i < each_blocks.length; i += 1) { - transition_out(each_blocks[i]); - } - current = false; - }, - d(detaching) { - if (detaching) { - detach(each_1_anchor); - } - destroy_each(each_blocks, detaching); - } - }; -} -function create_if_block_7(ctx) { - let treecomponent; - let current; - treecomponent = new treeComponent_default({ - props: { - hierarchy: ( - /*stagedHierarchy*/ - ctx[10] - ), - plugin: ( - /*plugin*/ - ctx[0] - ), - view: ( - /*view*/ - ctx[1] - ), - fileType: 0 /* staged */, - topLevel: true - } - }); - return { - c() { - create_component(treecomponent.$$.fragment); - }, - m(target, anchor) { - mount_component(treecomponent, target, anchor); - current = true; - }, - p(ctx2, dirty) { - const treecomponent_changes = {}; - if (dirty[0] & /*stagedHierarchy*/ - 1024) - treecomponent_changes.hierarchy = /*stagedHierarchy*/ - ctx2[10]; - if (dirty[0] & /*plugin*/ - 1) - treecomponent_changes.plugin = /*plugin*/ - ctx2[0]; - if (dirty[0] & /*view*/ - 2) - treecomponent_changes.view = /*view*/ - ctx2[1]; - treecomponent.$set(treecomponent_changes); - }, - i(local) { - if (current) - return; - transition_in(treecomponent.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(treecomponent.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(treecomponent, detaching); - } - }; -} -function create_each_block_2(ctx) { - let stagedfilecomponent; - let current; - stagedfilecomponent = new stagedFileComponent_default({ - props: { - change: ( - /*stagedFile*/ - ctx[45] - ), - view: ( - /*view*/ - ctx[1] - ), - manager: ( - /*plugin*/ - ctx[0].gitManager - ) - } - }); - return { - c() { - create_component(stagedfilecomponent.$$.fragment); - }, - m(target, anchor) { - mount_component(stagedfilecomponent, target, anchor); - current = true; - }, - p(ctx2, dirty) { - const stagedfilecomponent_changes = {}; - if (dirty[0] & /*status*/ - 64) - stagedfilecomponent_changes.change = /*stagedFile*/ - ctx2[45]; - if (dirty[0] & /*view*/ - 2) - stagedfilecomponent_changes.view = /*view*/ - ctx2[1]; - if (dirty[0] & /*plugin*/ - 1) - stagedfilecomponent_changes.manager = /*plugin*/ - ctx2[0].gitManager; - stagedfilecomponent.$set(stagedfilecomponent_changes); - }, - i(local) { - if (current) - return; - transition_in(stagedfilecomponent.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(stagedfilecomponent.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(stagedfilecomponent, detaching); - } - }; -} -function create_if_block_43(ctx) { - let div; - let current_block_type_index; - let if_block; - let div_transition; - let current; - const if_block_creators = [create_if_block_52, create_else_block_12]; - const if_blocks = []; - function select_block_type_1(ctx2, dirty) { - if ( - /*showTree*/ - ctx2[3] - ) - return 0; - return 1; - } - current_block_type_index = select_block_type_1(ctx, [-1, -1]); - if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx); - return { - c() { - div = element("div"); - if_block.c(); - attr(div, "class", "tree-item-children nav-folder-children"); - }, - m(target, anchor) { - insert(target, div, anchor); - if_blocks[current_block_type_index].m(div, null); - current = true; - }, - p(ctx2, dirty) { - let previous_block_index = current_block_type_index; - current_block_type_index = select_block_type_1(ctx2, dirty); - if (current_block_type_index === previous_block_index) { - if_blocks[current_block_type_index].p(ctx2, dirty); - } else { - group_outros(); - transition_out(if_blocks[previous_block_index], 1, 1, () => { - if_blocks[previous_block_index] = null; - }); - check_outros(); - if_block = if_blocks[current_block_type_index]; - if (!if_block) { - if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx2); - if_block.c(); - } else { - if_block.p(ctx2, dirty); - } - transition_in(if_block, 1); - if_block.m(div, null); - } - }, - i(local) { - if (current) - return; - transition_in(if_block); - if (local) { - add_render_callback(() => { - if (!current) - return; - if (!div_transition) - div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, true); - div_transition.run(1); - }); - } - current = true; - }, - o(local) { - transition_out(if_block); - if (local) { - if (!div_transition) - div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, false); - div_transition.run(0); - } - current = false; - }, - d(detaching) { - if (detaching) { - detach(div); - } - if_blocks[current_block_type_index].d(); - if (detaching && div_transition) - div_transition.end(); - } - }; -} -function create_else_block_12(ctx) { - let each_1_anchor; - let current; - let each_value_1 = ensure_array_like( - /*status*/ - ctx[6].changed - ); - let each_blocks = []; - for (let i = 0; i < each_value_1.length; i += 1) { - each_blocks[i] = create_each_block_1(get_each_context_1(ctx, each_value_1, i)); - } - const out = (i) => transition_out(each_blocks[i], 1, 1, () => { - each_blocks[i] = null; - }); - return { - c() { - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].c(); - } - each_1_anchor = empty(); - }, - m(target, anchor) { - for (let i = 0; i < each_blocks.length; i += 1) { - if (each_blocks[i]) { - each_blocks[i].m(target, anchor); - } - } - insert(target, each_1_anchor, anchor); - current = true; - }, - p(ctx2, dirty) { - if (dirty[0] & /*status, view, plugin*/ - 67) { - each_value_1 = ensure_array_like( - /*status*/ - ctx2[6].changed - ); - let i; - for (i = 0; i < each_value_1.length; i += 1) { - const child_ctx = get_each_context_1(ctx2, each_value_1, i); - if (each_blocks[i]) { - each_blocks[i].p(child_ctx, dirty); - transition_in(each_blocks[i], 1); - } else { - each_blocks[i] = create_each_block_1(child_ctx); - each_blocks[i].c(); - transition_in(each_blocks[i], 1); - each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor); - } - } - group_outros(); - for (i = each_value_1.length; i < each_blocks.length; i += 1) { - out(i); - } - check_outros(); - } - }, - i(local) { - if (current) - return; - for (let i = 0; i < each_value_1.length; i += 1) { - transition_in(each_blocks[i]); - } - current = true; - }, - o(local) { - each_blocks = each_blocks.filter(Boolean); - for (let i = 0; i < each_blocks.length; i += 1) { - transition_out(each_blocks[i]); - } - current = false; - }, - d(detaching) { - if (detaching) { - detach(each_1_anchor); - } - destroy_each(each_blocks, detaching); - } - }; -} -function create_if_block_52(ctx) { - let treecomponent; - let current; - treecomponent = new treeComponent_default({ - props: { - hierarchy: ( - /*changeHierarchy*/ - ctx[9] - ), - plugin: ( - /*plugin*/ - ctx[0] - ), - view: ( - /*view*/ - ctx[1] - ), - fileType: 1 /* changed */, - topLevel: true - } - }); - return { - c() { - create_component(treecomponent.$$.fragment); - }, - m(target, anchor) { - mount_component(treecomponent, target, anchor); - current = true; - }, - p(ctx2, dirty) { - const treecomponent_changes = {}; - if (dirty[0] & /*changeHierarchy*/ - 512) - treecomponent_changes.hierarchy = /*changeHierarchy*/ - ctx2[9]; - if (dirty[0] & /*plugin*/ - 1) - treecomponent_changes.plugin = /*plugin*/ - ctx2[0]; - if (dirty[0] & /*view*/ - 2) - treecomponent_changes.view = /*view*/ - ctx2[1]; - treecomponent.$set(treecomponent_changes); - }, - i(local) { - if (current) - return; - transition_in(treecomponent.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(treecomponent.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(treecomponent, detaching); - } - }; -} -function create_each_block_1(ctx) { - let filecomponent; - let current; - filecomponent = new fileComponent_default({ - props: { - change: ( - /*change*/ - ctx[40] - ), - view: ( - /*view*/ - ctx[1] - ), - manager: ( - /*plugin*/ - ctx[0].gitManager - ) - } - }); - filecomponent.$on("git-refresh", triggerRefresh2); - return { - c() { - create_component(filecomponent.$$.fragment); - }, - m(target, anchor) { - mount_component(filecomponent, target, anchor); - current = true; - }, - p(ctx2, dirty) { - const filecomponent_changes = {}; - if (dirty[0] & /*status*/ - 64) - filecomponent_changes.change = /*change*/ - ctx2[40]; - if (dirty[0] & /*view*/ - 2) - filecomponent_changes.view = /*view*/ - ctx2[1]; - if (dirty[0] & /*plugin*/ - 1) - filecomponent_changes.manager = /*plugin*/ - ctx2[0].gitManager; - filecomponent.$set(filecomponent_changes); - }, - i(local) { - if (current) - return; - transition_in(filecomponent.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(filecomponent.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(filecomponent, detaching); - } - }; -} -function create_if_block_14(ctx) { - let div3; - let div2; - let div0; - let t0; - let div1; - let t2; - let span; - let t3_value = ( - /*lastPulledFiles*/ - ctx[7].length + "" - ); - let t3; - let t4; - let current; - let mounted; - let dispose; - let if_block = ( - /*lastPulledFilesOpen*/ - ctx[14] && create_if_block_23(ctx) - ); - return { - c() { - div3 = element("div"); - div2 = element("div"); - div0 = element("div"); - div0.innerHTML = ``; - t0 = space(); - div1 = element("div"); - div1.textContent = "Recently Pulled Files"; - t2 = space(); - span = element("span"); - t3 = text(t3_value); - t4 = space(); - if (if_block) - if_block.c(); - attr(div0, "class", "tree-item-icon nav-folder-collapse-indicator collapse-icon"); - attr(div1, "class", "tree-item-inner nav-folder-title-content"); - attr(span, "class", "tree-item-flair"); - attr(div2, "class", "tree-item-self is-clickable nav-folder-title svelte-11adhly"); - attr(div3, "class", "pulled nav-folder"); - toggle_class(div3, "is-collapsed", !/*lastPulledFilesOpen*/ - ctx[14]); - }, - m(target, anchor) { - insert(target, div3, anchor); - append2(div3, div2); - append2(div2, div0); - append2(div2, t0); - append2(div2, div1); - append2(div2, t2); - append2(div2, span); - append2(span, t3); - append2(div3, t4); - if (if_block) - if_block.m(div3, null); - current = true; - if (!mounted) { - dispose = listen( - div2, - "click", - /*click_handler_4*/ - ctx[38] - ); - mounted = true; - } - }, - p(ctx2, dirty) { - if ((!current || dirty[0] & /*lastPulledFiles*/ - 128) && t3_value !== (t3_value = /*lastPulledFiles*/ - ctx2[7].length + "")) - set_data(t3, t3_value); - if ( - /*lastPulledFilesOpen*/ - ctx2[14] - ) { - if (if_block) { - if_block.p(ctx2, dirty); - if (dirty[0] & /*lastPulledFilesOpen*/ - 16384) { - transition_in(if_block, 1); - } - } else { - if_block = create_if_block_23(ctx2); - if_block.c(); - transition_in(if_block, 1); - if_block.m(div3, null); - } - } else if (if_block) { - group_outros(); - transition_out(if_block, 1, 1, () => { - if_block = null; - }); - check_outros(); - } - if (!current || dirty[0] & /*lastPulledFilesOpen*/ - 16384) { - toggle_class(div3, "is-collapsed", !/*lastPulledFilesOpen*/ - ctx2[14]); - } - }, - i(local) { - if (current) - return; - transition_in(if_block); - current = true; - }, - o(local) { - transition_out(if_block); - current = false; - }, - d(detaching) { - if (detaching) { - detach(div3); - } - if (if_block) - if_block.d(); - mounted = false; - dispose(); - } - }; -} -function create_if_block_23(ctx) { - let div; - let current_block_type_index; - let if_block; - let div_transition; - let current; - const if_block_creators = [create_if_block_33, create_else_block4]; - const if_blocks = []; - function select_block_type_2(ctx2, dirty) { - if ( - /*showTree*/ - ctx2[3] - ) - return 0; - return 1; - } - current_block_type_index = select_block_type_2(ctx, [-1, -1]); - if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx); - return { - c() { - div = element("div"); - if_block.c(); - attr(div, "class", "tree-item-children nav-folder-children"); - }, - m(target, anchor) { - insert(target, div, anchor); - if_blocks[current_block_type_index].m(div, null); - current = true; - }, - p(ctx2, dirty) { - let previous_block_index = current_block_type_index; - current_block_type_index = select_block_type_2(ctx2, dirty); - if (current_block_type_index === previous_block_index) { - if_blocks[current_block_type_index].p(ctx2, dirty); - } else { - group_outros(); - transition_out(if_blocks[previous_block_index], 1, 1, () => { - if_blocks[previous_block_index] = null; - }); - check_outros(); - if_block = if_blocks[current_block_type_index]; - if (!if_block) { - if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx2); - if_block.c(); - } else { - if_block.p(ctx2, dirty); - } - transition_in(if_block, 1); - if_block.m(div, null); - } - }, - i(local) { - if (current) - return; - transition_in(if_block); - if (local) { - add_render_callback(() => { - if (!current) - return; - if (!div_transition) - div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, true); - div_transition.run(1); - }); - } - current = true; - }, - o(local) { - transition_out(if_block); - if (local) { - if (!div_transition) - div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, false); - div_transition.run(0); - } - current = false; - }, - d(detaching) { - if (detaching) { - detach(div); - } - if_blocks[current_block_type_index].d(); - if (detaching && div_transition) - div_transition.end(); - } - }; -} -function create_else_block4(ctx) { - let each_1_anchor; - let current; - let each_value = ensure_array_like( - /*lastPulledFiles*/ - ctx[7] - ); - let each_blocks = []; - for (let i = 0; i < each_value.length; i += 1) { - each_blocks[i] = create_each_block5(get_each_context5(ctx, each_value, i)); - } - const out = (i) => transition_out(each_blocks[i], 1, 1, () => { - each_blocks[i] = null; - }); - return { - c() { - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].c(); - } - each_1_anchor = empty(); - }, - m(target, anchor) { - for (let i = 0; i < each_blocks.length; i += 1) { - if (each_blocks[i]) { - each_blocks[i].m(target, anchor); - } - } - insert(target, each_1_anchor, anchor); - current = true; - }, - p(ctx2, dirty) { - if (dirty[0] & /*lastPulledFiles, view*/ - 130) { - each_value = ensure_array_like( - /*lastPulledFiles*/ - ctx2[7] - ); - let i; - for (i = 0; i < each_value.length; i += 1) { - const child_ctx = get_each_context5(ctx2, each_value, i); - if (each_blocks[i]) { - each_blocks[i].p(child_ctx, dirty); - transition_in(each_blocks[i], 1); - } else { - each_blocks[i] = create_each_block5(child_ctx); - each_blocks[i].c(); - transition_in(each_blocks[i], 1); - each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor); - } - } - group_outros(); - for (i = each_value.length; i < each_blocks.length; i += 1) { - out(i); - } - check_outros(); - } - }, - i(local) { - if (current) - return; - for (let i = 0; i < each_value.length; i += 1) { - transition_in(each_blocks[i]); - } - current = true; - }, - o(local) { - each_blocks = each_blocks.filter(Boolean); - for (let i = 0; i < each_blocks.length; i += 1) { - transition_out(each_blocks[i]); - } - current = false; - }, - d(detaching) { - if (detaching) { - detach(each_1_anchor); - } - destroy_each(each_blocks, detaching); - } - }; -} -function create_if_block_33(ctx) { - let treecomponent; - let current; - treecomponent = new treeComponent_default({ - props: { - hierarchy: ( - /*lastPulledFilesHierarchy*/ - ctx[11] - ), - plugin: ( - /*plugin*/ - ctx[0] - ), - view: ( - /*view*/ - ctx[1] - ), - fileType: 2 /* pulled */, - topLevel: true - } - }); - return { - c() { - create_component(treecomponent.$$.fragment); - }, - m(target, anchor) { - mount_component(treecomponent, target, anchor); - current = true; - }, - p(ctx2, dirty) { - const treecomponent_changes = {}; - if (dirty[0] & /*lastPulledFilesHierarchy*/ - 2048) - treecomponent_changes.hierarchy = /*lastPulledFilesHierarchy*/ - ctx2[11]; - if (dirty[0] & /*plugin*/ - 1) - treecomponent_changes.plugin = /*plugin*/ - ctx2[0]; - if (dirty[0] & /*view*/ - 2) - treecomponent_changes.view = /*view*/ - ctx2[1]; - treecomponent.$set(treecomponent_changes); - }, - i(local) { - if (current) - return; - transition_in(treecomponent.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(treecomponent.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(treecomponent, detaching); - } - }; -} -function create_each_block5(ctx) { - let pulledfilecomponent; - let current; - pulledfilecomponent = new pulledFileComponent_default({ - props: { - change: ( - /*change*/ - ctx[40] - ), - view: ( - /*view*/ - ctx[1] - ) - } - }); - pulledfilecomponent.$on("git-refresh", triggerRefresh2); - return { - c() { - create_component(pulledfilecomponent.$$.fragment); - }, - m(target, anchor) { - mount_component(pulledfilecomponent, target, anchor); - current = true; - }, - p(ctx2, dirty) { - const pulledfilecomponent_changes = {}; - if (dirty[0] & /*lastPulledFiles*/ - 128) - pulledfilecomponent_changes.change = /*change*/ - ctx2[40]; - if (dirty[0] & /*view*/ - 2) - pulledfilecomponent_changes.view = /*view*/ - ctx2[1]; - pulledfilecomponent.$set(pulledfilecomponent_changes); - }, - i(local) { - if (current) - return; - transition_in(pulledfilecomponent.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(pulledfilecomponent.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(pulledfilecomponent, detaching); - } - }; -} -function create_fragment9(ctx) { - let main; - let div9; - let div8; - let div0; - let t0; - let div1; - let t1; - let div2; - let t2; - let div3; - let t3; - let div4; - let t4; - let div5; - let t5; - let div6; - let t6; - let div7; - let t7; - let div10; - let textarea; - let t8; - let t9; - let div11; - let main_data_type_value; - let current; - let mounted; - let dispose; - let if_block0 = ( - /*commitMessage*/ - ctx[2] && create_if_block_8(ctx) - ); - let if_block1 = ( - /*status*/ - ctx[6] && /*stagedHierarchy*/ - ctx[10] && /*changeHierarchy*/ - ctx[9] && create_if_block8(ctx) - ); - return { - c() { - main = element("main"); - div9 = element("div"); - div8 = element("div"); - div0 = element("div"); - t0 = space(); - div1 = element("div"); - t1 = space(); - div2 = element("div"); - t2 = space(); - div3 = element("div"); - t3 = space(); - div4 = element("div"); - t4 = space(); - div5 = element("div"); - t5 = space(); - div6 = element("div"); - t6 = space(); - div7 = element("div"); - t7 = space(); - div10 = element("div"); - textarea = element("textarea"); - t8 = space(); - if (if_block0) - if_block0.c(); - t9 = space(); - div11 = element("div"); - if (if_block1) - if_block1.c(); - attr(div0, "id", "backup-btn"); - attr(div0, "data-icon", "arrow-up-circle"); - attr(div0, "class", "clickable-icon nav-action-button"); - attr(div0, "aria-label", "Backup"); - attr(div1, "id", "commit-btn"); - attr(div1, "data-icon", "check"); - attr(div1, "class", "clickable-icon nav-action-button"); - attr(div1, "aria-label", "Commit"); - attr(div2, "id", "stage-all"); - attr(div2, "class", "clickable-icon nav-action-button"); - attr(div2, "data-icon", "plus-circle"); - attr(div2, "aria-label", "Stage all"); - attr(div3, "id", "unstage-all"); - attr(div3, "class", "clickable-icon nav-action-button"); - attr(div3, "data-icon", "minus-circle"); - attr(div3, "aria-label", "Unstage all"); - attr(div4, "id", "push"); - attr(div4, "class", "clickable-icon nav-action-button"); - attr(div4, "data-icon", "upload"); - attr(div4, "aria-label", "Push"); - attr(div5, "id", "pull"); - attr(div5, "class", "clickable-icon nav-action-button"); - attr(div5, "data-icon", "download"); - attr(div5, "aria-label", "Pull"); - attr(div6, "id", "layoutChange"); - attr(div6, "class", "clickable-icon nav-action-button"); - attr(div6, "aria-label", "Change Layout"); - attr(div7, "id", "refresh"); - attr(div7, "class", "clickable-icon nav-action-button"); - attr(div7, "data-icon", "refresh-cw"); - attr(div7, "aria-label", "Refresh"); - set_style(div7, "margin", "1px"); - toggle_class( - div7, - "loading", - /*loading*/ - ctx[5] - ); - attr(div8, "class", "nav-buttons-container"); - attr(div9, "class", "nav-header"); - attr( - textarea, - "rows", - /*rows*/ - ctx[15] - ); - attr(textarea, "class", "commit-msg-input svelte-11adhly"); - attr(textarea, "spellcheck", "true"); - attr(textarea, "placeholder", "Commit Message"); - attr(div10, "class", "git-commit-msg svelte-11adhly"); - attr(div11, "class", "nav-files-container"); - set_style(div11, "position", "relative"); - attr(main, "data-type", main_data_type_value = SOURCE_CONTROL_VIEW_CONFIG.type); - attr(main, "class", "svelte-11adhly"); - }, - m(target, anchor) { - insert(target, main, anchor); - append2(main, div9); - append2(div9, div8); - append2(div8, div0); - ctx[23](div0); - append2(div8, t0); - append2(div8, div1); - ctx[24](div1); - append2(div8, t1); - append2(div8, div2); - ctx[25](div2); - append2(div8, t2); - append2(div8, div3); - ctx[26](div3); - append2(div8, t3); - append2(div8, div4); - ctx[27](div4); - append2(div8, t4); - append2(div8, div5); - ctx[28](div5); - append2(div8, t5); - append2(div8, div6); - ctx[29](div6); - append2(div8, t6); - append2(div8, div7); - ctx[31](div7); - append2(main, t7); - append2(main, div10); - append2(div10, textarea); - set_input_value( - textarea, - /*commitMessage*/ - ctx[2] - ); - append2(div10, t8); - if (if_block0) - if_block0.m(div10, null); - append2(main, t9); - append2(main, div11); - if (if_block1) - if_block1.m(div11, null); - current = true; - if (!mounted) { - dispose = [ - listen( - div0, - "click", - /*backup*/ - ctx[17] - ), - listen( - div1, - "click", - /*commit*/ - ctx[16] - ), - listen( - div2, - "click", - /*stageAll*/ - ctx[18] - ), - listen( - div3, - "click", - /*unstageAll*/ - ctx[19] - ), - listen( - div4, - "click", - /*push*/ - ctx[20] - ), - listen( - div5, - "click", - /*pull*/ - ctx[21] - ), - listen( - div6, - "click", - /*click_handler*/ - ctx[30] - ), - listen(div7, "click", triggerRefresh2), - listen( - textarea, - "input", - /*textarea_input_handler*/ - ctx[32] - ) - ]; - mounted = true; - } - }, - p(ctx2, dirty) { - if (!current || dirty[0] & /*loading*/ - 32) { - toggle_class( - div7, - "loading", - /*loading*/ - ctx2[5] - ); - } - if (!current || dirty[0] & /*rows*/ - 32768) { - attr( - textarea, - "rows", - /*rows*/ - ctx2[15] - ); - } - if (dirty[0] & /*commitMessage*/ - 4) { - set_input_value( - textarea, - /*commitMessage*/ - ctx2[2] - ); - } - if ( - /*commitMessage*/ - ctx2[2] - ) { - if (if_block0) { - if_block0.p(ctx2, dirty); - } else { - if_block0 = create_if_block_8(ctx2); - if_block0.c(); - if_block0.m(div10, null); - } - } else if (if_block0) { - if_block0.d(1); - if_block0 = null; - } - if ( - /*status*/ - ctx2[6] && /*stagedHierarchy*/ - ctx2[10] && /*changeHierarchy*/ - ctx2[9] - ) { - if (if_block1) { - if_block1.p(ctx2, dirty); - if (dirty[0] & /*status, stagedHierarchy, changeHierarchy*/ - 1600) { - transition_in(if_block1, 1); - } - } else { - if_block1 = create_if_block8(ctx2); - if_block1.c(); - transition_in(if_block1, 1); - if_block1.m(div11, null); - } - } else if (if_block1) { - group_outros(); - transition_out(if_block1, 1, 1, () => { - if_block1 = null; - }); - check_outros(); - } - }, - i(local) { - if (current) - return; - transition_in(if_block1); - current = true; - }, - o(local) { - transition_out(if_block1); - current = false; - }, - d(detaching) { - if (detaching) { - detach(main); - } - ctx[23](null); - ctx[24](null); - ctx[25](null); - ctx[26](null); - ctx[27](null); - ctx[28](null); - ctx[29](null); - ctx[31](null); - if (if_block0) - if_block0.d(); - if (if_block1) - if_block1.d(); - mounted = false; - run_all(dispose); - } - }; -} -function triggerRefresh2() { - dispatchEvent(new CustomEvent("git-refresh")); -} -function instance9($$self, $$props, $$invalidate) { - let rows; - let { plugin } = $$props; - let { view } = $$props; - let loading; - let status2; - let lastPulledFiles = []; - let commitMessage = plugin.settings.commitMessage; - let buttons = []; - let changeHierarchy; - let stagedHierarchy; - let lastPulledFilesHierarchy; - let changesOpen = true; - let stagedOpen = true; - let lastPulledFilesOpen = true; - let showTree = plugin.settings.treeStructure; - let layoutBtn; - addEventListener("git-view-refresh", refresh); - plugin.app.workspace.onLayoutReady(() => { - window.setTimeout( - () => { - buttons.forEach((btn) => (0, import_obsidian29.setIcon)(btn, btn.getAttr("data-icon"))); - (0, import_obsidian29.setIcon)(layoutBtn, showTree ? "list" : "folder"); - }, - 0 - ); - }); - onDestroy(() => { - removeEventListener("git-view-refresh", refresh); - }); - function commit2() { - return __awaiter(this, void 0, void 0, function* () { - $$invalidate(5, loading = true); - if (status2) { - if (yield plugin.hasTooBigFiles(status2.staged)) { - plugin.setState(0 /* idle */); - return false; - } - plugin.promiseQueue.addTask(() => plugin.gitManager.commit({ message: commitMessage }).then(() => { - if (commitMessage !== plugin.settings.commitMessage) { - $$invalidate(2, commitMessage = ""); - } - plugin.setUpAutoBackup(); - }).finally(triggerRefresh2)); - } - }); - } - function backup() { - return __awaiter(this, void 0, void 0, function* () { - $$invalidate(5, loading = true); - if (status2) { - plugin.promiseQueue.addTask(() => plugin.createBackup(false, false, commitMessage).then(() => { - if (commitMessage !== plugin.settings.commitMessage) { - $$invalidate(2, commitMessage = ""); - } - }).finally(triggerRefresh2)); - } - }); - } - function refresh() { - return __awaiter(this, void 0, void 0, function* () { - if (!plugin.gitReady) { - $$invalidate(6, status2 = void 0); - return; - } - const unPushedCommits = yield plugin.gitManager.getUnpushedCommits(); - buttons.forEach((btn) => { - var _a2, _b; - if (import_obsidian29.Platform.isMobile) { - btn.removeClass("button-border"); - if (btn.id == "push" && unPushedCommits > 0) { - btn.addClass("button-border"); - } - } else { - (_a2 = btn.firstElementChild) === null || _a2 === void 0 ? void 0 : _a2.removeAttribute("color"); - if (btn.id == "push" && unPushedCommits > 0) { - (_b = btn.firstElementChild) === null || _b === void 0 ? void 0 : _b.setAttr("color", "var(--text-accent)"); - } - } - }); - $$invalidate(6, status2 = plugin.cachedStatus); - if (plugin.lastPulledFiles && plugin.lastPulledFiles != lastPulledFiles) { - $$invalidate(7, lastPulledFiles = plugin.lastPulledFiles); - $$invalidate(11, lastPulledFilesHierarchy = { - title: "", - path: "", - vaultPath: "", - children: plugin.gitManager.getTreeStructure(lastPulledFiles) - }); - } - if (status2) { - const sort = (a, b) => { - return a.vault_path.split("/").last().localeCompare(getDisplayPath(b.vault_path)); - }; - status2.changed.sort(sort); - status2.staged.sort(sort); - if (status2.changed.length + status2.staged.length > 500) { - $$invalidate(6, status2 = void 0); - if (!plugin.loading) { - plugin.displayError("Too many changes to display"); - } - } else { - $$invalidate(9, changeHierarchy = { - title: "", - path: "", - vaultPath: "", - children: plugin.gitManager.getTreeStructure(status2.changed) - }); - $$invalidate(10, stagedHierarchy = { - title: "", - path: "", - vaultPath: "", - children: plugin.gitManager.getTreeStructure(status2.staged) - }); - } - } else { - $$invalidate(9, changeHierarchy = void 0); - $$invalidate(10, stagedHierarchy = void 0); - } - $$invalidate(5, loading = plugin.loading); - }); - } - function stageAll() { - $$invalidate(5, loading = true); - plugin.promiseQueue.addTask(() => plugin.gitManager.stageAll({ status: status2 }).finally(triggerRefresh2)); - } - function unstageAll() { - $$invalidate(5, loading = true); - plugin.promiseQueue.addTask(() => plugin.gitManager.unstageAll({ status: status2 }).finally(triggerRefresh2)); - } - function push2() { - $$invalidate(5, loading = true); - plugin.promiseQueue.addTask(() => plugin.push().finally(triggerRefresh2)); - } - function pull2() { - $$invalidate(5, loading = true); - plugin.promiseQueue.addTask(() => plugin.pullChangesFromRemote().finally(triggerRefresh2)); - } - function discard() { - new DiscardModal(view.app, false, plugin.gitManager.getRelativeVaultPath("/")).myOpen().then((shouldDiscard) => { - if (shouldDiscard === true) { - plugin.promiseQueue.addTask(() => plugin.gitManager.discardAll({ status: plugin.cachedStatus }).finally(() => { - dispatchEvent(new CustomEvent("git-refresh")); - })); - } - }); - } - function div0_binding($$value) { - binding_callbacks[$$value ? "unshift" : "push"](() => { - buttons[5] = $$value; - $$invalidate(8, buttons); - }); - } - function div1_binding($$value) { - binding_callbacks[$$value ? "unshift" : "push"](() => { - buttons[0] = $$value; - $$invalidate(8, buttons); - }); - } - function div2_binding($$value) { - binding_callbacks[$$value ? "unshift" : "push"](() => { - buttons[1] = $$value; - $$invalidate(8, buttons); - }); - } - function div3_binding($$value) { - binding_callbacks[$$value ? "unshift" : "push"](() => { - buttons[2] = $$value; - $$invalidate(8, buttons); - }); - } - function div4_binding($$value) { - binding_callbacks[$$value ? "unshift" : "push"](() => { - buttons[3] = $$value; - $$invalidate(8, buttons); - }); - } - function div5_binding($$value) { - binding_callbacks[$$value ? "unshift" : "push"](() => { - buttons[4] = $$value; - $$invalidate(8, buttons); - }); - } - function div6_binding($$value) { - binding_callbacks[$$value ? "unshift" : "push"](() => { - layoutBtn = $$value; - $$invalidate(4, layoutBtn); - }); - } - const click_handler = () => { - $$invalidate(3, showTree = !showTree); - $$invalidate(0, plugin.settings.treeStructure = showTree, plugin); - plugin.saveSettings(); - }; - function div7_binding($$value) { - binding_callbacks[$$value ? "unshift" : "push"](() => { - buttons[6] = $$value; - $$invalidate(8, buttons); - }); - } - function textarea_input_handler() { - commitMessage = this.value; - $$invalidate(2, commitMessage); - } - const click_handler_1 = () => $$invalidate(2, commitMessage = ""); - function div2_binding_1($$value) { - binding_callbacks[$$value ? "unshift" : "push"](() => { - buttons[8] = $$value; - $$invalidate(8, buttons); - }); - } - const click_handler_2 = () => $$invalidate(13, stagedOpen = !stagedOpen); - function div11_binding($$value) { - binding_callbacks[$$value ? "unshift" : "push"](() => { - buttons[9] = $$value; - $$invalidate(8, buttons); - }); - } - const click_handler_3 = () => $$invalidate(12, changesOpen = !changesOpen); - const click_handler_4 = () => $$invalidate(14, lastPulledFilesOpen = !lastPulledFilesOpen); - $$self.$$set = ($$props2) => { - if ("plugin" in $$props2) - $$invalidate(0, plugin = $$props2.plugin); - if ("view" in $$props2) - $$invalidate(1, view = $$props2.view); - }; - $$self.$$.update = () => { - if ($$self.$$.dirty[0] & /*layoutBtn, showTree*/ - 24) { - $: { - if (layoutBtn) { - layoutBtn.empty(); - (0, import_obsidian29.setIcon)(layoutBtn, showTree ? "list" : "folder"); - } - } - } - if ($$self.$$.dirty[0] & /*commitMessage*/ - 4) { - $: - $$invalidate(15, rows = (commitMessage.match(/\n/g) || []).length + 1 || 1); - } - }; - return [ - plugin, - view, - commitMessage, - showTree, - layoutBtn, - loading, - status2, - lastPulledFiles, - buttons, - changeHierarchy, - stagedHierarchy, - lastPulledFilesHierarchy, - changesOpen, - stagedOpen, - lastPulledFilesOpen, - rows, - commit2, - backup, - stageAll, - unstageAll, - push2, - pull2, - discard, - div0_binding, - div1_binding, - div2_binding, - div3_binding, - div4_binding, - div5_binding, - div6_binding, - click_handler, - div7_binding, - textarea_input_handler, - click_handler_1, - div2_binding_1, - click_handler_2, - div11_binding, - click_handler_3, - click_handler_4 - ]; -} -var SourceControl = class extends SvelteComponent { - constructor(options) { - super(); - init2(this, options, instance9, create_fragment9, safe_not_equal, { plugin: 0, view: 1 }, add_css7, [-1, -1]); - } -}; -var sourceControl_default = SourceControl; - -// src/ui/sourceControl/sourceControl.ts -var GitView = class extends import_obsidian30.ItemView { - constructor(leaf, plugin) { - super(leaf); - this.plugin = plugin; - this.hoverPopover = null; - } - getViewType() { - return SOURCE_CONTROL_VIEW_CONFIG.type; - } - getDisplayText() { - return SOURCE_CONTROL_VIEW_CONFIG.name; - } - getIcon() { - return SOURCE_CONTROL_VIEW_CONFIG.icon; - } - onClose() { - return super.onClose(); - } - onOpen() { - this._view = new sourceControl_default({ - target: this.contentEl, - props: { - plugin: this.plugin, - view: this - } - }); - return super.onOpen(); - } -}; - -// src/ui/statusBar/branchStatusBar.ts -init_polyfill_buffer(); -var BranchStatusBar = class { - constructor(statusBarEl, plugin) { - this.statusBarEl = statusBarEl; - this.plugin = plugin; - this.statusBarEl.addClass("mod-clickable"); - this.statusBarEl.onClickEvent((e) => { - this.plugin.switchBranch(); - }); - } - async display() { - if (this.plugin.gitReady) { - const branchInfo = await this.plugin.gitManager.branchInfo(); - if (branchInfo.current != void 0) { - this.statusBarEl.setText(branchInfo.current); - } else { - this.statusBarEl.empty(); - } - } else { - this.statusBarEl.empty(); - } - } -}; - -// src/main.ts -var ObsidianGit = class extends import_obsidian31.Plugin { - constructor() { - super(...arguments); - this.gitReady = false; - this.promiseQueue = new PromiseQueue(); - this.conflictOutputFile = "conflict-files-obsidian-git.md"; - this.offlineMode = false; - this.loading = false; - this.lineAuthoringFeature = new LineAuthoringFeature(this); - } - setState(state) { - var _a2; - this.state = state; - (_a2 = this.statusBar) == null ? void 0 : _a2.display(); - } - async updateCachedStatus() { - this.cachedStatus = await this.gitManager.status(); - return this.cachedStatus; - } - async refresh() { - const gitView = this.app.workspace.getLeavesOfType( - SOURCE_CONTROL_VIEW_CONFIG.type - ); - const historyView = this.app.workspace.getLeavesOfType( - HISTORY_VIEW_CONFIG.type - ); - if (this.settings.changedFilesInStatusBar || gitView.length > 0 || historyView.length > 0) { - this.loading = true; - dispatchEvent(new CustomEvent("git-view-refresh")); - await this.updateCachedStatus(); - this.loading = false; - dispatchEvent(new CustomEvent("git-view-refresh")); - } - } - async refreshUpdatedHead() { - this.lineAuthoringFeature.refreshLineAuthorViews(); - } - async onload() { - console.log("loading " + this.manifest.name + " plugin"); - pluginRef.plugin = this; - this.localStorage = new LocalStorageSettings(this); - this.localStorage.migrate(); - await this.loadSettings(); - this.migrateSettings(); - this.settingsTab = new ObsidianGitSettingsTab(this.app, this); - this.addSettingTab(this.settingsTab); - if (!this.localStorage.getPluginDisabled()) { - this.loadPlugin(); - } - } - async loadPlugin() { - addEventListener("git-refresh", this.refresh.bind(this)); - addEventListener("git-head-update", this.refreshUpdatedHead.bind(this)); - this.registerView(SOURCE_CONTROL_VIEW_CONFIG.type, (leaf) => { - return new GitView(leaf, this); - }); - this.registerView(HISTORY_VIEW_CONFIG.type, (leaf) => { - return new HistoryView2(leaf, this); - }); - this.registerView(DIFF_VIEW_CONFIG.type, (leaf) => { - return new DiffView(leaf, this); - }); - this.lineAuthoringFeature.onLoadPlugin(); - this.app.workspace.registerHoverLinkSource( - SOURCE_CONTROL_VIEW_CONFIG.type, - { - display: "Git View", - defaultMod: true - } - ); - this.setRefreshDebouncer(); - this.addCommand({ - id: "edit-gitignore", - name: "Edit .gitignore", - callback: async () => { - const path2 = this.gitManager.getRelativeVaultPath(".gitignore"); - if (!await this.app.vault.adapter.exists(path2)) { - this.app.vault.adapter.write(path2, ""); - } - const content = await this.app.vault.adapter.read(path2); - const modal = new IgnoreModal(this.app, content); - const res = await modal.open(); - if (res !== void 0) { - await this.app.vault.adapter.write(path2, res); - this.refresh(); - } - } - }); - this.addCommand({ - id: "open-git-view", - name: "Open source control view", - callback: async () => { - const leafs = this.app.workspace.getLeavesOfType( - SOURCE_CONTROL_VIEW_CONFIG.type - ); - let leaf; - if (leafs.length === 0) { - leaf = this.app.workspace.getRightLeaf(false); - await leaf.setViewState({ - type: SOURCE_CONTROL_VIEW_CONFIG.type - }); - } else { - leaf = leafs.first(); - } - this.app.workspace.revealLeaf(leaf); - dispatchEvent(new CustomEvent("git-refresh")); - } - }); - this.addCommand({ - id: "open-history-view", - name: "Open history view", - callback: async () => { - const leafs = this.app.workspace.getLeavesOfType( - HISTORY_VIEW_CONFIG.type - ); - let leaf; - if (leafs.length === 0) { - leaf = this.app.workspace.getRightLeaf(false); - await leaf.setViewState({ - type: HISTORY_VIEW_CONFIG.type - }); - } else { - leaf = leafs.first(); - } - this.app.workspace.revealLeaf(leaf); - dispatchEvent(new CustomEvent("git-refresh")); - } - }); - this.addCommand({ - id: "open-diff-view", - name: "Open diff view", - checkCallback: (checking) => { - var _a2; - const file = this.app.workspace.getActiveFile(); - if (checking) { - return file !== null; - } else { - (_a2 = getNewLeaf()) == null ? void 0 : _a2.setViewState({ - type: DIFF_VIEW_CONFIG.type, - active: true, - state: { - staged: false, - file: this.gitManager.getRelativeRepoPath( - file.path, - true - ) - } - }); - } - } - }); - this.addCommand({ - id: "view-file-on-github", - name: "Open file on GitHub", - editorCallback: (editor, { file }) => { - if (file) - return openLineInGitHub(editor, file, this.gitManager); - } - }); - this.addCommand({ - id: "view-history-on-github", - name: "Open file history on GitHub", - editorCallback: (_, { file }) => { - if (file) - return openHistoryInGitHub(file, this.gitManager); - } - }); - this.addCommand({ - id: "pull", - name: "Pull", - callback: () => this.promiseQueue.addTask(() => this.pullChangesFromRemote()) - }); - this.addCommand({ - id: "fetch", - name: "fetch", - callback: () => this.promiseQueue.addTask(() => this.fetch()) - }); - this.addCommand({ - id: "switch-to-remote-branch", - name: "Switch to remote branch", - callback: () => this.promiseQueue.addTask(() => this.switchRemoteBranch()) - }); - this.addCommand({ - id: "add-to-gitignore", - name: "Add file to gitignore", - checkCallback: (checking) => { - const file = this.app.workspace.getActiveFile(); - if (checking) { - return file !== null; - } else { - this.app.vault.adapter.append( - this.gitManager.getRelativeVaultPath(".gitignore"), - "\n" + this.gitManager.getRelativeRepoPath( - file.path, - true - ) - ).then(() => { - this.refresh(); - }); - } - } - }); - this.addCommand({ - id: "push", - name: "Create backup", - callback: () => this.promiseQueue.addTask(() => this.createBackup(false)) - }); - this.addCommand({ - id: "backup-and-close", - name: "Create backup and close", - callback: () => this.promiseQueue.addTask(async () => { - await this.createBackup(false); - window.close(); - }) - }); - this.addCommand({ - id: "commit-push-specified-message", - name: "Create backup with specific message", - callback: () => this.promiseQueue.addTask(() => this.createBackup(false, true)) - }); - this.addCommand({ - id: "commit", - name: "Commit all changes", - callback: () => this.promiseQueue.addTask( - () => this.commit({ fromAutoBackup: false }) - ) - }); - this.addCommand({ - id: "commit-specified-message", - name: "Commit all changes with specific message", - callback: () => this.promiseQueue.addTask( - () => this.commit({ - fromAutoBackup: false, - requestCustomMessage: true - }) - ) - }); - this.addCommand({ - id: "commit-staged", - name: "Commit staged", - callback: () => this.promiseQueue.addTask( - () => this.commit({ - fromAutoBackup: false, - requestCustomMessage: false, - onlyStaged: true - }) - ) - }); - if (import_obsidian31.Platform.isDesktopApp) { - this.addCommand({ - id: "commit-amend-staged-specified-message", - name: "Commit Amend", - callback: () => this.promiseQueue.addTask( - () => this.commit({ - fromAutoBackup: false, - requestCustomMessage: true, - onlyStaged: true, - amend: true - }) - ) - }); - } - this.addCommand({ - id: "commit-staged-specified-message", - name: "Commit staged with specific message", - callback: () => this.promiseQueue.addTask( - () => this.commit({ - fromAutoBackup: false, - requestCustomMessage: true, - onlyStaged: true - }) - ) - }); - this.addCommand({ - id: "push2", - name: "Push", - callback: () => this.promiseQueue.addTask(() => this.push()) - }); - this.addCommand({ - id: "stage-current-file", - name: "Stage current file", - checkCallback: (checking) => { - const file = this.app.workspace.getActiveFile(); - if (checking) { - return file !== null; - } else { - this.promiseQueue.addTask(() => this.stageFile(file)); - } - } - }); - this.addCommand({ - id: "unstage-current-file", - name: "Unstage current file", - checkCallback: (checking) => { - const file = this.app.workspace.getActiveFile(); - if (checking) { - return file !== null; - } else { - this.promiseQueue.addTask(() => this.unstageFile(file)); - } - } - }); - this.addCommand({ - id: "edit-remotes", - name: "Edit remotes", - callback: async () => this.editRemotes() - }); - this.addCommand({ - id: "remove-remote", - name: "Remove remote", - callback: async () => this.removeRemote() - }); - this.addCommand({ - id: "set-upstream-branch", - name: "Set upstream branch", - callback: async () => this.setUpsreamBranch() - }); - this.addCommand({ - id: "delete-repo", - name: "CAUTION: Delete repository", - callback: async () => { - const repoExists = await this.app.vault.adapter.exists( - `${this.settings.basePath}/.git` - ); - if (repoExists) { - const modal = new GeneralModal({ - options: ["NO", "YES"], - placeholder: "Do you really want to delete the repository (.git directory)? This action cannot be undone.", - onlySelection: true - }); - const shouldDelete = await modal.open() === "YES"; - if (shouldDelete) { - await this.app.vault.adapter.rmdir( - `${this.settings.basePath}/.git`, - true - ); - new import_obsidian31.Notice( - "Successfully deleted repository. Reloading plugin..." - ); - this.unloadPlugin(); - this.init(); - } - } else { - new import_obsidian31.Notice("No repository found"); - } - } - }); - this.addCommand({ - id: "init-repo", - name: "Initialize a new repo", - callback: async () => this.createNewRepo() - }); - this.addCommand({ - id: "clone-repo", - name: "Clone an existing remote repo", - callback: async () => this.cloneNewRepo() - }); - this.addCommand({ - id: "list-changed-files", - name: "List changed files", - callback: async () => { - if (!await this.isAllInitialized()) - return; - const status2 = await this.gitManager.status(); - console.log(status2); - this.setState(0 /* idle */); - if (status2.changed.length + status2.staged.length > 500) { - this.displayError("Too many changes to display"); - return; - } - new ChangedFilesModal(this, status2.all).open(); - } - }); - this.addCommand({ - id: "switch-branch", - name: "Switch branch", - callback: () => { - this.switchBranch(); - } - }); - this.addCommand({ - id: "create-branch", - name: "Create new branch", - callback: () => { - this.createBranch(); - } - }); - this.addCommand({ - id: "delete-branch", - name: "Delete branch", - callback: () => { - this.deleteBranch(); - } - }); - this.addCommand({ - id: "discard-all", - name: "CAUTION: Discard all changes", - callback: async () => { - if (!await this.isAllInitialized()) - return false; - const modal = new GeneralModal({ - options: ["NO", "YES"], - placeholder: "Do you want to discard all changes to tracked files? This action cannot be undone.", - onlySelection: true - }); - const shouldDiscardAll = await modal.open() === "YES"; - if (shouldDiscardAll) { - this.promiseQueue.addTask(() => this.discardAll()); - } - } - }); - this.addCommand({ - id: "toggle-line-author-info", - name: "Toggle line author information", - callback: () => { - var _a2; - return (_a2 = this.settingsTab) == null ? void 0 : _a2.configureLineAuthorShowStatus( - !this.settings.lineAuthor.show - ); - } - }); - this.registerEvent( - this.app.workspace.on("file-menu", (menu, file, source) => { - this.handleFileMenu(menu, file, source); - }) - ); - if (this.settings.showStatusBar) { - const statusBarEl = this.addStatusBarItem(); - this.statusBar = new StatusBar(statusBarEl, this); - this.registerInterval( - window.setInterval(() => { - var _a2; - return (_a2 = this.statusBar) == null ? void 0 : _a2.display(); - }, 1e3) - ); - } - if (import_obsidian31.Platform.isDesktop && this.settings.showBranchStatusBar) { - const branchStatusBarEl = this.addStatusBarItem(); - this.branchBar = new BranchStatusBar(branchStatusBarEl, this); - this.registerInterval( - window.setInterval(() => { - var _a2; - return (_a2 = this.branchBar) == null ? void 0 : _a2.display(); - }, 6e4) - ); - } - this.app.workspace.onLayoutReady(() => this.init()); - } - setRefreshDebouncer() { - var _a2; - (_a2 = this.debRefresh) == null ? void 0 : _a2.cancel(); - this.debRefresh = (0, import_obsidian31.debounce)( - () => { - if (this.settings.refreshSourceControl) { - this.refresh(); - } - }, - this.settings.refreshSourceControlTimer, - true - ); - } - async showNotices() { - const length = 1e4; - if (this.manifest.id === "obsidian-git" && import_obsidian31.Platform.isDesktopApp && !this.settings.showedMobileNotice) { - new import_obsidian31.Notice( - "Git is now available on mobile! Please read the plugin's README for more information.", - length - ); - this.settings.showedMobileNotice = true; - await this.saveSettings(); - } - if (this.manifest.id === "obsidian-git-isomorphic") { - new import_obsidian31.Notice( - "Git Mobile is now deprecated. Please uninstall it and install Git instead.", - length - ); - } - } - handleFileMenu(menu, file, source) { - if (!this.settings.showFileMenu) - return; - if (source !== "file-explorer-context-menu") { - return; - } - if (!file) { - return; - } - if (!this.gitReady) - return; - menu.addItem((item) => { - item.setTitle(`Git: Stage`).setIcon("plus-circle").setSection("action").onClick((_) => { - this.promiseQueue.addTask(async () => { - if (file instanceof import_obsidian31.TFile) { - await this.gitManager.stage(file.path, true); - } else { - await this.gitManager.stageAll({ - dir: this.gitManager.getRelativeRepoPath( - file.path, - true - ) - }); - } - this.displayMessage(`Staged ${file.path}`); - }); - }); - }); - menu.addItem((item) => { - item.setTitle(`Git: Unstage`).setIcon("minus-circle").setSection("action").onClick((_) => { - this.promiseQueue.addTask(async () => { - if (file instanceof import_obsidian31.TFile) { - await this.gitManager.unstage(file.path, true); - } else { - await this.gitManager.unstageAll({ - dir: this.gitManager.getRelativeRepoPath( - file.path, - true - ) - }); - } - this.displayMessage(`Unstaged ${file.path}`); - }); - }); - }); - } - async migrateSettings() { - if (this.settings.mergeOnPull != void 0) { - this.settings.syncMethod = this.settings.mergeOnPull ? "merge" : "rebase"; - this.settings.mergeOnPull = void 0; - await this.saveSettings(); - } - if (this.settings.autoCommitMessage === void 0) { - this.settings.autoCommitMessage = this.settings.commitMessage; - await this.saveSettings(); - } - if (this.settings.gitPath != void 0) { - this.localStorage.setGitPath(this.settings.gitPath); - this.settings.gitPath = void 0; - await this.saveSettings(); - } - if (this.settings.username != void 0) { - this.localStorage.setPassword(this.settings.username); - this.settings.username = void 0; - await this.saveSettings(); - } - } - unloadPlugin() { - this.gitReady = false; - dispatchEvent(new CustomEvent("git-refresh")); - this.lineAuthoringFeature.deactivateFeature(); - this.clearAutoPull(); - this.clearAutoPush(); - this.clearAutoBackup(); - removeEventListener("git-refresh", this.refresh.bind(this)); - removeEventListener( - "git-head-update", - this.refreshUpdatedHead.bind(this) - ); - this.app.workspace.offref(this.openEvent); - this.app.metadataCache.offref(this.modifyEvent); - this.app.metadataCache.offref(this.deleteEvent); - this.app.metadataCache.offref(this.createEvent); - this.app.metadataCache.offref(this.renameEvent); - this.debRefresh.cancel(); - } - async onunload() { - this.app.workspace.unregisterHoverLinkSource( - SOURCE_CONTROL_VIEW_CONFIG.type - ); - this.unloadPlugin(); - console.log("unloading " + this.manifest.name + " plugin"); - } - async loadSettings() { - let data = await this.loadData(); - if (data == void 0) { - data = { showedMobileNotice: true }; - } - this.settings = mergeSettingsByPriority(DEFAULT_SETTINGS, data); - } - async saveSettings() { - var _a2; - (_a2 = this.settingsTab) == null ? void 0 : _a2.beforeSaveSettings(); - await this.saveData(this.settings); - } - saveLastAuto(date, mode) { - if (mode === "backup") { - this.localStorage.setLastAutoBackup(date.toString()); - } else if (mode === "pull") { - this.localStorage.setLastAutoPull(date.toString()); - } else if (mode === "push") { - this.localStorage.setLastAutoPush(date.toString()); - } - } - loadLastAuto() { - var _a2, _b, _c; - return { - backup: new Date((_a2 = this.localStorage.getLastAutoBackup()) != null ? _a2 : ""), - pull: new Date((_b = this.localStorage.getLastAutoPull()) != null ? _b : ""), - push: new Date((_c = this.localStorage.getLastAutoPush()) != null ? _c : "") - }; - } - get useSimpleGit() { - return import_obsidian31.Platform.isDesktopApp; - } - async init() { - var _a2; - this.showNotices(); - try { - if (this.useSimpleGit) { - this.gitManager = new SimpleGit(this); - await this.gitManager.setGitInstance(); - } else { - this.gitManager = new IsomorphicGit(this); - } - const result = await this.gitManager.checkRequirements(); - switch (result) { - case "missing-git": - this.displayError("Cannot run git command"); - break; - case "missing-repo": - new import_obsidian31.Notice( - "Can't find a valid git repository. Please create one via the given command or clone an existing repo.", - 1e4 - ); - break; - case "valid": - this.gitReady = true; - this.setState(0 /* idle */); - this.openEvent = this.app.workspace.on( - "active-leaf-change", - (leaf) => this.handleViewActiveState(leaf) - ); - this.modifyEvent = this.app.vault.on("modify", () => { - this.debRefresh(); - }); - this.deleteEvent = this.app.vault.on("delete", () => { - this.debRefresh(); - }); - this.createEvent = this.app.vault.on("create", () => { - this.debRefresh(); - }); - this.renameEvent = this.app.vault.on("rename", () => { - this.debRefresh(); - }); - this.registerEvent(this.modifyEvent); - this.registerEvent(this.deleteEvent); - this.registerEvent(this.createEvent); - this.registerEvent(this.renameEvent); - (_a2 = this.branchBar) == null ? void 0 : _a2.display(); - this.lineAuthoringFeature.conditionallyActivateBySettings(); - dispatchEvent(new CustomEvent("git-refresh")); - if (this.settings.autoPullOnBoot) { - this.promiseQueue.addTask( - () => this.pullChangesFromRemote() - ); - } - this.setUpAutos(); - break; - default: - console.log( - "Something weird happened. The 'checkRequirements' result is " + result - ); - } - } catch (error) { - this.displayError(error); - console.error(error); - } - } - async createNewRepo() { - await this.gitManager.init(); - new import_obsidian31.Notice("Initialized new repo"); - await this.init(); - } - async cloneNewRepo() { - const modal = new GeneralModal({ placeholder: "Enter remote URL" }); - const url = await modal.open(); - if (url) { - const confirmOption = "Vault Root"; - let dir = await new GeneralModal({ - options: this.gitManager instanceof IsomorphicGit ? [confirmOption] : [], - placeholder: "Enter directory for clone. It needs to be empty or not existent.", - allowEmpty: this.gitManager instanceof IsomorphicGit - }).open(); - if (dir !== void 0) { - if (dir === confirmOption) { - dir = "."; - } - dir = (0, import_obsidian31.normalizePath)(dir); - if (dir === "/") { - dir = "."; - } - if (dir === ".") { - const modal2 = new GeneralModal({ - options: ["NO", "YES"], - placeholder: `Does your remote repo contain a ${app.vault.configDir} directory at the root?`, - onlySelection: true - }); - const containsConflictDir = await modal2.open(); - if (containsConflictDir === void 0) { - new import_obsidian31.Notice("Aborted clone"); - return; - } else if (containsConflictDir === "YES") { - const confirmOption2 = "DELETE ALL YOUR LOCAL CONFIG AND PLUGINS"; - const modal3 = new GeneralModal({ - options: ["Abort clone", confirmOption2], - placeholder: `To avoid conflicts, the local ${app.vault.configDir} directory needs to be deleted.`, - onlySelection: true - }); - const shouldDelete = await modal3.open() === confirmOption2; - if (shouldDelete) { - await this.app.vault.adapter.rmdir( - app.vault.configDir, - true - ); - } else { - new import_obsidian31.Notice("Aborted clone"); - return; - } - } - } - const depth = await new GeneralModal({ - placeholder: "Specify depth of clone. Leave empty for full clone.", - allowEmpty: true - }).open(); - let depthInt = void 0; - if (depth !== "") { - depthInt = parseInt(depth); - if (isNaN(depthInt)) { - new import_obsidian31.Notice("Invalid depth. Aborting clone."); - return; - } - } - new import_obsidian31.Notice(`Cloning new repo into "${dir}"`); - const oldBase = this.settings.basePath; - const customDir = dir && dir !== "."; - if (customDir) { - this.settings.basePath = dir; - } - try { - await this.gitManager.clone(url, dir, depthInt); - } catch (error) { - this.settings.basePath = oldBase; - this.saveSettings(); - throw error; - } - new import_obsidian31.Notice("Cloned new repo."); - new import_obsidian31.Notice("Please restart Obsidian"); - if (customDir) { - this.saveSettings(); - } - } - } - } - /** - * Retries to call `this.init()` if necessary, otherwise returns directly - * @returns true if `this.gitManager` is ready to be used, false if not. - */ - async isAllInitialized() { - if (!this.gitReady) { - await this.init(); - } - return this.gitReady; - } - ///Used for command - async pullChangesFromRemote() { - if (!await this.isAllInitialized()) - return; - const filesUpdated = await this.pull(); - this.setUpAutoBackup(); - if (filesUpdated === false) { - return; - } - if (!filesUpdated) { - this.displayMessage("Everything is up-to-date"); - } - if (this.gitManager instanceof SimpleGit) { - const status2 = await this.gitManager.status(); - if (status2.conflicted.length > 0) { - this.displayError( - `You have conflicts in ${status2.conflicted.length} ${status2.conflicted.length == 1 ? "file" : "files"}` - ); - this.handleConflict(status2.conflicted); - } - } - dispatchEvent(new CustomEvent("git-refresh")); - this.setState(0 /* idle */); - } - async createBackup(fromAutoBackup, requestCustomMessage = false, commitMessage) { - if (!await this.isAllInitialized()) - return; - if (this.settings.syncMethod == "reset" && this.settings.pullBeforePush) { - await this.pull(); - } - if (!await this.commit({ - fromAutoBackup, - requestCustomMessage, - commitMessage - })) - return; - if (!this.settings.disablePush) { - if (await this.gitManager.canPush()) { - if (this.settings.syncMethod != "reset" && this.settings.pullBeforePush) { - await this.pull(); - } - await this.push(); - } else { - this.displayMessage("No changes to push"); - } - } - this.setState(0 /* idle */); - } - // Returns true if commit was successfully - async commit({ - fromAutoBackup, - requestCustomMessage = false, - onlyStaged = false, - commitMessage, - amend = false - }) { - if (!await this.isAllInitialized()) - return false; - let hadConflict = this.localStorage.getConflict(); - let changedFiles; - let status2; - let unstagedFiles; - if (this.gitManager instanceof SimpleGit) { - this.mayDeleteConflictFile(); - status2 = await this.updateCachedStatus(); - if (status2.conflicted.length == 0) { - this.localStorage.setConflict(false); - hadConflict = false; - } - if (fromAutoBackup && status2.conflicted.length > 0) { - this.displayError( - `Did not commit, because you have conflicts in ${status2.conflicted.length} ${status2.conflicted.length == 1 ? "file" : "files"}. Please resolve them and commit per command.` - ); - this.handleConflict(status2.conflicted); - return false; - } - changedFiles = [...status2.changed, ...status2.staged]; - } else if (fromAutoBackup && hadConflict) { - this.setState(6 /* conflicted */); - this.displayError( - `Did not commit, because you have conflicts. Please resolve them and commit per command.` - ); - return false; - } else if (hadConflict) { - await this.mayDeleteConflictFile(); - status2 = await this.updateCachedStatus(); - changedFiles = [...status2.changed, ...status2.staged]; - } else { - if (onlyStaged) { - changedFiles = await this.gitManager.getStagedFiles(); - } else { - unstagedFiles = await this.gitManager.getUnstagedFiles(); - changedFiles = unstagedFiles.map(({ filepath }) => ({ - vault_path: this.gitManager.getRelativeVaultPath(filepath) - })); - } - } - if (await this.hasTooBigFiles(changedFiles)) { - this.setState(0 /* idle */); - return false; - } - if (changedFiles.length !== 0 || hadConflict) { - let cmtMessage = commitMessage != null ? commitMessage : commitMessage = fromAutoBackup ? this.settings.autoCommitMessage : this.settings.commitMessage; - if (fromAutoBackup && this.settings.customMessageOnAutoBackup || requestCustomMessage) { - if (!this.settings.disablePopups && fromAutoBackup) { - new import_obsidian31.Notice( - "Auto backup: Please enter a custom commit message. Leave empty to abort" - ); - } - const tempMessage = await new CustomMessageModal( - this, - true - ).open(); - if (tempMessage != void 0 && tempMessage != "" && tempMessage != "...") { - cmtMessage = tempMessage; - } else { - this.setState(0 /* idle */); - return false; - } - } - let committedFiles; - if (onlyStaged) { - committedFiles = await this.gitManager.commit({ - message: cmtMessage, - amend - }); - } else { - committedFiles = await this.gitManager.commitAll({ - message: cmtMessage, - status: status2, - unstagedFiles, - amend - }); - } - if (this.gitManager instanceof SimpleGit) { - if ((await this.updateCachedStatus()).conflicted.length == 0) { - this.localStorage.setConflict(false); - } - } - let roughly = false; - if (committedFiles === void 0) { - roughly = true; - committedFiles = changedFiles.length; - } - this.setUpAutoBackup(); - this.displayMessage( - `Committed${roughly ? " approx." : ""} ${committedFiles} ${committedFiles == 1 ? "file" : "files"}` - ); - } else { - this.displayMessage("No changes to commit"); - } - dispatchEvent(new CustomEvent("git-refresh")); - this.setState(0 /* idle */); - return true; - } - async hasTooBigFiles(files) { - const branchInfo = await this.gitManager.branchInfo(); - const remote = branchInfo.tracking ? splitRemoteBranch(branchInfo.tracking)[0] : null; - if (remote) { - const remoteUrl = await this.gitManager.getRemoteUrl(remote); - if (remoteUrl == null ? void 0 : remoteUrl.includes("github.com")) { - const tooBigFiles = files.filter((f) => { - const file = this.app.vault.getAbstractFileByPath( - f.vault_path - ); - if (file instanceof import_obsidian31.TFile) { - return file.stat.size >= 1e8; - } - return false; - }); - if (tooBigFiles.length > 0) { - this.displayError( - `Did not commit, because following files are too big: ${tooBigFiles.map( - (e) => e.vault_path - )}. Please remove them.` - ); - return true; - } - } - } - return false; - } - async push() { - if (!await this.isAllInitialized()) - return false; - if (!await this.remotesAreSet()) { - return false; - } - const hadConflict = this.localStorage.getConflict(); - if (this.gitManager instanceof SimpleGit) - await this.mayDeleteConflictFile(); - let status2; - if (this.gitManager instanceof SimpleGit && (status2 = await this.updateCachedStatus()).conflicted.length > 0) { - this.displayError( - `Cannot push. You have conflicts in ${status2.conflicted.length} ${status2.conflicted.length == 1 ? "file" : "files"}` - ); - this.handleConflict(status2.conflicted); - return false; - } else if (this.gitManager instanceof IsomorphicGit && hadConflict) { - this.displayError(`Cannot push. You have conflicts`); - this.setState(6 /* conflicted */); - return false; - } - console.log("Pushing...."); - const pushedFiles = await this.gitManager.push(); - if (pushedFiles !== void 0) { - console.log("Pushed!", pushedFiles); - if (pushedFiles > 0) { - this.displayMessage( - `Pushed ${pushedFiles} ${pushedFiles == 1 ? "file" : "files"} to remote` - ); - } else { - this.displayMessage(`No changes to push`); - } - } - this.offlineMode = false; - this.setState(0 /* idle */); - dispatchEvent(new CustomEvent("git-refresh")); - return true; - } - /** Used for internals - Returns whether the pull added a commit or not. - - See {@link pullChangesFromRemote} for the command version. */ - async pull() { - if (!await this.remotesAreSet()) { - return false; - } - const pulledFiles = await this.gitManager.pull() || []; - this.offlineMode = false; - if (pulledFiles.length > 0) { - this.displayMessage( - `Pulled ${pulledFiles.length} ${pulledFiles.length == 1 ? "file" : "files"} from remote` - ); - this.lastPulledFiles = pulledFiles; - } - return pulledFiles.length; - } - async fetch() { - if (!await this.remotesAreSet()) { - return; - } - await this.gitManager.fetch(); - this.displayMessage(`Fetched from remote`); - this.offlineMode = false; - dispatchEvent(new CustomEvent("git-refresh")); - } - async mayDeleteConflictFile() { - const file = this.app.vault.getAbstractFileByPath( - this.conflictOutputFile - ); - if (file) { - this.app.workspace.iterateAllLeaves((leaf) => { - var _a2; - if (leaf.view instanceof import_obsidian31.MarkdownView && ((_a2 = leaf.view.file) == null ? void 0 : _a2.path) == file.path) { - leaf.detach(); - } - }); - await this.app.vault.delete(file); - } - } - async stageFile(file) { - if (!await this.isAllInitialized()) - return false; - await this.gitManager.stage(file.path, true); - this.displayMessage(`Staged ${file.path}`); - dispatchEvent(new CustomEvent("git-refresh")); - this.setState(0 /* idle */); - return true; - } - async unstageFile(file) { - if (!await this.isAllInitialized()) - return false; - await this.gitManager.unstage(file.path, true); - this.displayMessage(`Unstaged ${file.path}`); - dispatchEvent(new CustomEvent("git-refresh")); - this.setState(0 /* idle */); - return true; - } - async switchBranch() { - var _a2; - if (!await this.isAllInitialized()) - return; - const branchInfo = await this.gitManager.branchInfo(); - const selectedBranch = await new BranchModal( - branchInfo.branches - ).open(); - if (selectedBranch != void 0) { - await this.gitManager.checkout(selectedBranch); - this.displayMessage(`Switched to ${selectedBranch}`); - (_a2 = this.branchBar) == null ? void 0 : _a2.display(); - return selectedBranch; - } - } - async switchRemoteBranch() { - var _a2; - if (!await this.isAllInitialized()) - return; - const selectedBranch = await this.selectRemoteBranch() || ""; - const [remote, branch2] = splitRemoteBranch(selectedBranch); - if (branch2 != void 0 && remote != void 0) { - await this.gitManager.checkout(branch2, remote); - this.displayMessage(`Switched to ${selectedBranch}`); - (_a2 = this.branchBar) == null ? void 0 : _a2.display(); - return selectedBranch; - } - } - async createBranch() { - var _a2; - if (!await this.isAllInitialized()) - return; - const newBranch = await new GeneralModal({ - placeholder: "Create new branch" - }).open(); - if (newBranch != void 0) { - await this.gitManager.createBranch(newBranch); - this.displayMessage(`Created new branch ${newBranch}`); - (_a2 = this.branchBar) == null ? void 0 : _a2.display(); - return newBranch; - } - } - async deleteBranch() { - var _a2; - if (!await this.isAllInitialized()) - return; - const branchInfo = await this.gitManager.branchInfo(); - if (branchInfo.current) - branchInfo.branches.remove(branchInfo.current); - const branch2 = await new GeneralModal({ - options: branchInfo.branches, - placeholder: "Delete branch", - onlySelection: true - }).open(); - if (branch2 != void 0) { - let force = false; - const merged = await this.gitManager.branchIsMerged(branch2); - if (!merged) { - const forceAnswer = await new GeneralModal({ - options: ["YES", "NO"], - placeholder: "This branch isn't merged into HEAD. Force delete?", - onlySelection: true - }).open(); - if (forceAnswer !== "YES") { - return; - } - force = forceAnswer === "YES"; - } - await this.gitManager.deleteBranch(branch2, force); - this.displayMessage(`Deleted branch ${branch2}`); - (_a2 = this.branchBar) == null ? void 0 : _a2.display(); - return branch2; - } - } - // Ensures that the upstream branch is set. - // If not, it will prompt the user to set it. - // - // An exception is when the user has submodules enabled. - // In this case, the upstream branch is not required, - // to allow pulling/pushing only the submodules and not the outer repo. - async remotesAreSet() { - if (this.settings.updateSubmodules) { - return true; - } - if (!(await this.gitManager.branchInfo()).tracking) { - new import_obsidian31.Notice("No upstream branch is set. Please select one."); - return await this.setUpsreamBranch(); - } - return true; - } - async setUpsreamBranch() { - const remoteBranch = await this.selectRemoteBranch(); - if (remoteBranch == void 0) { - this.displayError("Aborted. No upstream-branch is set!", 1e4); - this.setState(0 /* idle */); - return false; - } else { - await this.gitManager.updateUpstreamBranch(remoteBranch); - this.displayMessage(`Set upstream branch to ${remoteBranch}`); - this.setState(0 /* idle */); - return true; - } - } - async setUpAutoBackup() { - if (this.settings.setLastSaveToLastCommit) { - this.clearAutoBackup(); - const lastCommitDate = await this.gitManager.getLastCommitTime(); - if (lastCommitDate) { - this.localStorage.setLastAutoBackup(lastCommitDate.toString()); - } - } - if (!this.timeoutIDBackup && !this.onFileModifyEventRef) { - const lastAutos = this.loadLastAuto(); - if (this.settings.autoSaveInterval > 0) { - const now2 = /* @__PURE__ */ new Date(); - const diff3 = this.settings.autoSaveInterval - Math.round( - (now2.getTime() - lastAutos.backup.getTime()) / 1e3 / 60 - ); - this.startAutoBackup(diff3 <= 0 ? 0 : diff3); - } - } - } - async setUpAutos() { - this.setUpAutoBackup(); - const lastAutos = this.loadLastAuto(); - if (this.settings.differentIntervalCommitAndPush && this.settings.autoPushInterval > 0) { - const now2 = /* @__PURE__ */ new Date(); - const diff3 = this.settings.autoPushInterval - Math.round( - (now2.getTime() - lastAutos.push.getTime()) / 1e3 / 60 - ); - this.startAutoPush(diff3 <= 0 ? 0 : diff3); - } - if (this.settings.autoPullInterval > 0) { - const now2 = /* @__PURE__ */ new Date(); - const diff3 = this.settings.autoPullInterval - Math.round( - (now2.getTime() - lastAutos.pull.getTime()) / 1e3 / 60 - ); - this.startAutoPull(diff3 <= 0 ? 0 : diff3); - } - } - async discardAll() { - await this.gitManager.discardAll({ - status: this.cachedStatus - }); - new import_obsidian31.Notice( - "All local changes have been discarded. New files remain untouched." - ); - } - clearAutos() { - this.clearAutoBackup(); - this.clearAutoPush(); - this.clearAutoPull(); - } - startAutoBackup(minutes) { - let time = (minutes != null ? minutes : this.settings.autoSaveInterval) * 6e4; - if (this.settings.autoBackupAfterFileChange) { - if (minutes === 0) { - this.doAutoBackup(); - } else { - this.onFileModifyEventRef = this.app.vault.on( - "modify", - () => this.autoBackupDebouncer() - ); - this.autoBackupDebouncer = (0, import_obsidian31.debounce)( - () => this.doAutoBackup(), - time, - true - ); - } - } else { - if (time > 2147483647) - time = 2147483647; - this.timeoutIDBackup = window.setTimeout( - () => this.doAutoBackup(), - time - ); - } - } - // This is used for both auto backup and commit - doAutoBackup() { - this.promiseQueue.addTask(() => { - if (this.settings.differentIntervalCommitAndPush) { - return this.commit({ fromAutoBackup: true }); - } else { - return this.createBackup(true); - } - }); - this.saveLastAuto(/* @__PURE__ */ new Date(), "backup"); - this.saveSettings(); - this.startAutoBackup(); - } - startAutoPull(minutes) { - let time = (minutes != null ? minutes : this.settings.autoPullInterval) * 6e4; - if (time > 2147483647) - time = 2147483647; - this.timeoutIDPull = window.setTimeout(() => { - this.promiseQueue.addTask(() => this.pullChangesFromRemote()); - this.saveLastAuto(/* @__PURE__ */ new Date(), "pull"); - this.saveSettings(); - this.startAutoPull(); - }, time); - } - startAutoPush(minutes) { - let time = (minutes != null ? minutes : this.settings.autoPushInterval) * 6e4; - if (time > 2147483647) - time = 2147483647; - this.timeoutIDPush = window.setTimeout(() => { - this.promiseQueue.addTask(() => this.push()); - this.saveLastAuto(/* @__PURE__ */ new Date(), "push"); - this.saveSettings(); - this.startAutoPush(); - }, time); - } - clearAutoBackup() { - var _a2; - let wasActive = false; - if (this.timeoutIDBackup) { - window.clearTimeout(this.timeoutIDBackup); - this.timeoutIDBackup = void 0; - wasActive = true; - } - if (this.onFileModifyEventRef) { - (_a2 = this.autoBackupDebouncer) == null ? void 0 : _a2.cancel(); - this.app.vault.offref(this.onFileModifyEventRef); - this.onFileModifyEventRef = void 0; - wasActive = true; - } - return wasActive; - } - clearAutoPull() { - if (this.timeoutIDPull) { - window.clearTimeout(this.timeoutIDPull); - this.timeoutIDPull = void 0; - return true; - } - return false; - } - clearAutoPush() { - if (this.timeoutIDPush) { - window.clearTimeout(this.timeoutIDPush); - this.timeoutIDPush = void 0; - return true; - } - return false; - } - async handleConflict(conflicted) { - this.setState(6 /* conflicted */); - this.localStorage.setConflict(true); - let lines; - if (conflicted !== void 0) { - lines = [ - "# Conflicts", - "Please resolve them and commit them using the commands `Git: Commit all changes` followed by `Git: Push`", - "(This file will automatically be deleted before commit)", - "[[#Additional Instructions]] available below file list", - "", - ...conflicted.map((e) => { - const file = this.app.vault.getAbstractFileByPath(e); - if (file instanceof import_obsidian31.TFile) { - const link = this.app.metadataCache.fileToLinktext( - file, - "/" - ); - return `- [[${link}]]`; - } else { - return `- Not a file: ${e}`; - } - }), - ` -# Additional Instructions -I strongly recommend to use "Source mode" for viewing the conflicted files. For simple conflicts, in each file listed above replace every occurrence of the following text blocks with the desired text. - -\`\`\`diff -<<<<<<< HEAD - File changes in local repository -======= - File changes in remote repository ->>>>>>> origin/main -\`\`\`` - ]; - } - this.writeAndOpenFile(lines == null ? void 0 : lines.join("\n")); - } - async editRemotes() { - if (!await this.isAllInitialized()) - return; - const remotes = await this.gitManager.getRemotes(); - const nameModal = new GeneralModal({ - options: remotes, - placeholder: "Select or create a new remote by typing its name and selecting it" - }); - const remoteName = await nameModal.open(); - if (remoteName) { - const oldUrl = await this.gitManager.getRemoteUrl(remoteName); - const urlModal = new GeneralModal({ initialValue: oldUrl }); - const remoteURL = await urlModal.open(); - if (remoteURL) { - await this.gitManager.setRemote(remoteName, remoteURL); - return remoteName; - } - } - } - async selectRemoteBranch() { - let remotes = await this.gitManager.getRemotes(); - let selectedRemote; - if (remotes.length === 0) { - selectedRemote = await this.editRemotes(); - if (selectedRemote == void 0) { - remotes = await this.gitManager.getRemotes(); - } - } - const nameModal = new GeneralModal({ - options: remotes, - placeholder: "Select or create a new remote by typing its name and selecting it" - }); - const remoteName = selectedRemote != null ? selectedRemote : await nameModal.open(); - if (remoteName) { - this.displayMessage("Fetching remote branches"); - await this.gitManager.fetch(remoteName); - const branches = await this.gitManager.getRemoteBranches(remoteName); - const branchModal = new GeneralModal({ - options: branches, - placeholder: "Select or create a new remote branch by typing its name and selecting it" - }); - return await branchModal.open(); - } - } - async removeRemote() { - if (!await this.isAllInitialized()) - return; - const remotes = await this.gitManager.getRemotes(); - const nameModal = new GeneralModal({ - options: remotes, - placeholder: "Select a remote" - }); - const remoteName = await nameModal.open(); - if (remoteName) { - this.gitManager.removeRemote(remoteName); - } - } - async writeAndOpenFile(text2) { - if (text2 !== void 0) { - await this.app.vault.adapter.write(this.conflictOutputFile, text2); - } - let fileIsAlreadyOpened = false; - this.app.workspace.iterateAllLeaves((leaf) => { - if (leaf.getDisplayText() != "" && this.conflictOutputFile.startsWith(leaf.getDisplayText())) { - fileIsAlreadyOpened = true; - } - }); - if (!fileIsAlreadyOpened) { - this.app.workspace.openLinkText(this.conflictOutputFile, "/", true); - } - } - handleViewActiveState(leaf) { - var _a2, _b; - if (!(leaf == null ? void 0 : leaf.view.getState().file)) - return; - const sourceControlLeaf = this.app.workspace.getLeavesOfType(SOURCE_CONTROL_VIEW_CONFIG.type).first(); - const historyLeaf = this.app.workspace.getLeavesOfType(HISTORY_VIEW_CONFIG.type).first(); - (_a2 = sourceControlLeaf == null ? void 0 : sourceControlLeaf.view.containerEl.querySelector(`div.nav-file-title.is-active`)) == null ? void 0 : _a2.removeClass("is-active"); - (_b = historyLeaf == null ? void 0 : historyLeaf.view.containerEl.querySelector(`div.nav-file-title.is-active`)) == null ? void 0 : _b.removeClass("is-active"); - if ((leaf == null ? void 0 : leaf.view) instanceof DiffView) { - const path2 = leaf.view.state.file; - this.lastDiffViewState = leaf.view.getState(); - let el; - if (sourceControlLeaf && leaf.view.state.staged) { - el = sourceControlLeaf.view.containerEl.querySelector( - `div.staged div.nav-file-title[data-path='${path2}']` - ); - } else if (sourceControlLeaf && leaf.view.state.staged === false && !leaf.view.state.hash) { - el = sourceControlLeaf.view.containerEl.querySelector( - `div.changes div.nav-file-title[data-path='${path2}']` - ); - } else if (historyLeaf && leaf.view.state.hash) { - el = historyLeaf.view.containerEl.querySelector( - `div.nav-file-title[data-path='${path2}']` - ); - } - el == null ? void 0 : el.addClass("is-active"); - } else { - this.lastDiffViewState = void 0; - } - } - // region: displaying / formatting messages - displayMessage(message, timeout = 4 * 1e3) { - var _a2; - (_a2 = this.statusBar) == null ? void 0 : _a2.displayMessage(message.toLowerCase(), timeout); - if (!this.settings.disablePopups) { - if (!this.settings.disablePopupsForNoChanges || !message.startsWith("No changes")) { - new import_obsidian31.Notice(message, 5 * 1e3); - } - } - this.log(message); - } - displayError(message, timeout = 10 * 1e3) { - var _a2; - if (message instanceof Errors.UserCanceledError) { - new import_obsidian31.Notice("Aborted"); - return; - } - message = message.toString(); - new import_obsidian31.Notice(message, timeout); - console.log(`git obsidian error: ${message}`); - (_a2 = this.statusBar) == null ? void 0 : _a2.displayMessage(message.toLowerCase(), timeout); - } - log(message) { - console.log(`${this.manifest.id}: ` + message); - } -}; -/*! Bundled license information: - -ieee754/index.js: - (*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh *) - -buffer/index.js: - (*! - * The buffer module from node.js, for the browser. - * - * @author Feross Aboukhadijeh - * @license MIT - *) - -safe-buffer/index.js: - (*! safe-buffer. MIT License. Feross Aboukhadijeh *) - -crc-32/crc32.js: - (*! crc32.js (C) 2014-present SheetJS -- http://sheetjs.com *) - -js-sha256/src/sha256.js: - (** - * [js-sha256]{@link https://github.com/emn178/js-sha256} - * - * @version 0.9.0 - * @author Chen, Yi-Cyuan [emn178@gmail.com] - * @copyright Chen, Yi-Cyuan 2014-2017 - * @license MIT - *) - -feather-icons/dist/feather.js: - (*! - Copyright (c) 2016 Jed Watson. - Licensed under the MIT License (MIT), see - http://jedwatson.github.io/classnames - *) -*/ diff --git a/.obsidian/plugins/obsidian-git/manifest.json b/.obsidian/plugins/obsidian-git/manifest.json deleted file mode 100644 index 79dc19c..0000000 --- a/.obsidian/plugins/obsidian-git/manifest.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "id": "obsidian-git", - "name": "Git", - "description": "Backup your vault with Git.", - "isDesktopOnly": false, - "fundingUrl": "https://ko-fi.com/vinzent", - "js": "main.js", - "version": "2.24.1" -} diff --git a/.obsidian/plugins/obsidian-git/styles.css b/.obsidian/plugins/obsidian-git/styles.css deleted file mode 100644 index 226dbe9..0000000 --- a/.obsidian/plugins/obsidian-git/styles.css +++ /dev/null @@ -1,551 +0,0 @@ -@keyframes loading { - 0% { - transform: rotate(0deg); - } - - 100% { - transform: rotate(360deg); - } -} - -.workspace-leaf-content[data-type="git-view"] .button-border { - border: 2px solid var(--interactive-accent); - border-radius: var(--radius-s); -} - -.workspace-leaf-content[data-type="git-view"] .view-content { - padding: 0; -} - -.workspace-leaf-content[data-type="git-history-view"] .view-content { - padding: 0; -} - -.loading > svg { - animation: 2s linear infinite loading; - transform-origin: 50% 50%; - display: inline-block; -} - -.obsidian-git-center { - margin: auto; - text-align: center; - width: 50%; -} - -.obsidian-git-textarea { - display: block; - margin-left: auto; - margin-right: auto; -} - -.obsidian-git-center-button { - display: block; - margin: 20px auto; -} - -.tooltip.mod-left { - overflow-wrap: break-word; -} - -.tooltip.mod-right { - overflow-wrap: break-word; -} -.git-tools { - display: flex; - margin-left: auto; -} -.git-tools .type { - padding-left: var(--size-2-1); - display: flex; - align-items: center; - justify-content: center; - width: 11px; -} - -.git-tools .type[data-type="M"] { - color: orange; -} -.git-tools .type[data-type="D"] { - color: red; -} -.git-tools .buttons { - display: flex; -} -.git-tools .buttons > * { - padding: 0 0; - height: auto; -} - -.git-author { - color: var(--text-accent); -} - -.git-date { - color: var(--text-accent); -} - -.git-ref { - color: var(--text-accent); -} - -.workspace-leaf-content[data-type="diff-view"] .d2h-d-none { - display: none; -} - -.workspace-leaf-content[data-type="diff-view"] .d2h-wrapper { - text-align: left; -} - -.workspace-leaf-content[data-type="diff-view"] .d2h-file-header { - background-color: var(--background-primary); - border-bottom: 1px solid var(--interactive-accent); - font-family: var(--font-monospace); - height: 35px; - padding: 5px 10px; -} - -.workspace-leaf-content[data-type="diff-view"] .d2h-file-header, -.workspace-leaf-content[data-type="diff-view"] .d2h-file-stats { - display: -webkit-box; - display: -ms-flexbox; - display: flex; -} - -.workspace-leaf-content[data-type="diff-view"] .d2h-file-stats { - font-size: 14px; - margin-left: auto; -} - -.workspace-leaf-content[data-type="diff-view"] .d2h-lines-added { - border: 1px solid #b4e2b4; - border-radius: 5px 0 0 5px; - color: #399839; - padding: 2px; - text-align: right; - vertical-align: middle; -} - -.workspace-leaf-content[data-type="diff-view"] .d2h-lines-deleted { - border: 1px solid #e9aeae; - border-radius: 0 5px 5px 0; - color: #c33; - margin-left: 1px; - padding: 2px; - text-align: left; - vertical-align: middle; -} - -.workspace-leaf-content[data-type="diff-view"] .d2h-file-name-wrapper { - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - font-size: 15px; - width: 100%; -} - -.workspace-leaf-content[data-type="diff-view"] .d2h-file-name { - overflow-x: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -.workspace-leaf-content[data-type="diff-view"] .d2h-file-wrapper { - border: 1px solid var(--background-modifier-border); - border-radius: 3px; - margin-bottom: 1em; -} - -.workspace-leaf-content[data-type="diff-view"] .d2h-file-collapse { - -webkit-box-pack: end; - -ms-flex-pack: end; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - border: 1px solid var(--background-modifier-border); - border-radius: 3px; - cursor: pointer; - display: none; - font-size: 12px; - justify-content: flex-end; - padding: 4px 8px; -} - -.workspace-leaf-content[data-type="diff-view"] .d2h-file-collapse.d2h-selected { - background-color: #c8e1ff; -} - -.workspace-leaf-content[data-type="diff-view"] .d2h-file-collapse-input { - margin: 0 4px 0 0; -} - -.workspace-leaf-content[data-type="diff-view"] .d2h-diff-table { - border-collapse: collapse; - font-family: Menlo, Consolas, monospace; - font-size: 13px; - width: 100%; -} - -.workspace-leaf-content[data-type="diff-view"] .d2h-files-diff { - width: 100%; -} - -.workspace-leaf-content[data-type="diff-view"] .d2h-file-diff { - overflow-y: hidden; -} - -.workspace-leaf-content[data-type="diff-view"] .d2h-file-side-diff { - display: inline-block; - margin-bottom: -8px; - margin-right: -4px; - overflow-x: scroll; - overflow-y: hidden; - width: 50%; -} - -.workspace-leaf-content[data-type="diff-view"] .d2h-code-line { - padding: 0 8em; -} - -.workspace-leaf-content[data-type="diff-view"] .d2h-code-line, -.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line { - display: inline-block; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - white-space: nowrap; - width: 100%; -} - -.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line { - padding: 0 4.5em; -} - -.workspace-leaf-content[data-type="diff-view"] .d2h-code-line-ctn { - word-wrap: normal; - background: none; - display: inline-block; - padding: 0; - -webkit-user-select: text; - -moz-user-select: text; - -ms-user-select: text; - user-select: text; - vertical-align: middle; - white-space: pre; - width: 100%; -} - -.theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-code-line del, -.theme-light - .workspace-leaf-content[data-type="diff-view"] - .d2h-code-side-line - del { - background-color: #ffb6ba; -} - -.theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-code-line del, -.theme-dark - .workspace-leaf-content[data-type="diff-view"] - .d2h-code-side-line - del { - background-color: #8d232881; -} - -.workspace-leaf-content[data-type="diff-view"] .d2h-code-line del, -.workspace-leaf-content[data-type="diff-view"] .d2h-code-line ins, -.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line del, -.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line ins { - border-radius: 0.2em; - display: inline-block; - margin-top: -1px; - text-decoration: none; - vertical-align: middle; -} - -.theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-code-line ins, -.theme-light - .workspace-leaf-content[data-type="diff-view"] - .d2h-code-side-line - ins { - background-color: #97f295; - text-align: left; -} - -.theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-code-line ins, -.theme-dark - .workspace-leaf-content[data-type="diff-view"] - .d2h-code-side-line - ins { - background-color: #1d921996; - text-align: left; -} - -.workspace-leaf-content[data-type="diff-view"] .d2h-code-line-prefix { - word-wrap: normal; - background: none; - display: inline; - padding: 0; - white-space: pre; -} - -.workspace-leaf-content[data-type="diff-view"] .line-num1 { - float: left; -} - -.workspace-leaf-content[data-type="diff-view"] .line-num1, -.workspace-leaf-content[data-type="diff-view"] .line-num2 { - -webkit-box-sizing: border-box; - box-sizing: border-box; - overflow: hidden; - padding: 0 0.5em; - text-overflow: ellipsis; - width: 3.5em; -} - -.workspace-leaf-content[data-type="diff-view"] .line-num2 { - float: right; -} - -.workspace-leaf-content[data-type="diff-view"] .d2h-code-linenumber { - background-color: var(--background-primary); - border: solid var(--background-modifier-border); - border-width: 0 1px; - -webkit-box-sizing: border-box; - box-sizing: border-box; - color: var(--text-muted); - cursor: pointer; - display: inline-block; - position: absolute; - text-align: right; - width: 7.5em; -} - -.workspace-leaf-content[data-type="diff-view"] .d2h-code-linenumber:after { - content: "\200b"; -} - -.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-linenumber { - background-color: var(--background-primary); - border: solid var(--background-modifier-border); - border-width: 0 1px; - -webkit-box-sizing: border-box; - box-sizing: border-box; - color: var(--text-muted); - cursor: pointer; - display: inline-block; - overflow: hidden; - padding: 0 0.5em; - position: absolute; - text-align: right; - text-overflow: ellipsis; - width: 4em; -} - -.workspace-leaf-content[data-type="diff-view"] .d2h-diff-tbody tr { - position: relative; -} - -.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-linenumber:after { - content: "\200b"; -} - -.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-emptyplaceholder, -.workspace-leaf-content[data-type="diff-view"] .d2h-emptyplaceholder { - background-color: var(--background-primary); - border-color: var(--background-modifier-border); -} - -.workspace-leaf-content[data-type="diff-view"] .d2h-code-line-prefix, -.workspace-leaf-content[data-type="diff-view"] .d2h-code-linenumber, -.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-linenumber, -.workspace-leaf-content[data-type="diff-view"] .d2h-emptyplaceholder { - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.workspace-leaf-content[data-type="diff-view"] .d2h-code-linenumber, -.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-linenumber { - direction: rtl; -} - -.theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-del { - background-color: #fee8e9; - border-color: #e9aeae; -} - -.theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-ins { - background-color: #dfd; - border-color: #b4e2b4; -} - -.theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-del { - background-color: #521b1d83; - border-color: #691d1d73; -} - -.theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-ins { - background-color: rgba(30, 71, 30, 0.5); - border-color: #13501381; -} - -.workspace-leaf-content[data-type="diff-view"] .d2h-info { - background-color: var(--background-primary); - border-color: var(--background-modifier-border); - color: var(--text-normal); -} - -.theme-light - .workspace-leaf-content[data-type="diff-view"] - .d2h-file-diff - .d2h-del.d2h-change { - background-color: #fdf2d0; -} - -.theme-dark - .workspace-leaf-content[data-type="diff-view"] - .d2h-file-diff - .d2h-del.d2h-change { - background-color: #55492480; -} - -.theme-light - .workspace-leaf-content[data-type="diff-view"] - .d2h-file-diff - .d2h-ins.d2h-change { - background-color: #ded; -} - -.theme-dark - .workspace-leaf-content[data-type="diff-view"] - .d2h-file-diff - .d2h-ins.d2h-change { - background-color: rgba(37, 78, 37, 0.418); -} - -.workspace-leaf-content[data-type="diff-view"] .d2h-file-list-wrapper { - margin-bottom: 10px; -} - -.workspace-leaf-content[data-type="diff-view"] .d2h-file-list-wrapper a { - color: #3572b0; - text-decoration: none; -} - -.workspace-leaf-content[data-type="diff-view"] - .d2h-file-list-wrapper - a:visited { - color: #3572b0; -} - -.workspace-leaf-content[data-type="diff-view"] .d2h-file-list-header { - text-align: left; -} - -.workspace-leaf-content[data-type="diff-view"] .d2h-file-list-title { - font-weight: 700; -} - -.workspace-leaf-content[data-type="diff-view"] .d2h-file-list-line { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - text-align: left; -} - -.workspace-leaf-content[data-type="diff-view"] .d2h-file-list { - display: block; - list-style: none; - margin: 0; - padding: 0; -} - -.workspace-leaf-content[data-type="diff-view"] .d2h-file-list > li { - border-bottom: 1px solid var(--background-modifier-border); - margin: 0; - padding: 5px 10px; -} - -.workspace-leaf-content[data-type="diff-view"] .d2h-file-list > li:last-child { - border-bottom: none; -} - -.workspace-leaf-content[data-type="diff-view"] .d2h-file-switch { - cursor: pointer; - display: none; - font-size: 10px; -} - -.workspace-leaf-content[data-type="diff-view"] .d2h-icon { - fill: currentColor; - margin-right: 10px; - vertical-align: middle; -} - -.workspace-leaf-content[data-type="diff-view"] .d2h-deleted { - color: #c33; -} - -.workspace-leaf-content[data-type="diff-view"] .d2h-added { - color: #399839; -} - -.workspace-leaf-content[data-type="diff-view"] .d2h-changed { - color: #d0b44c; -} - -.workspace-leaf-content[data-type="diff-view"] .d2h-moved { - color: #3572b0; -} - -.workspace-leaf-content[data-type="diff-view"] .d2h-tag { - background-color: var(--background-primary); - display: -webkit-box; - display: -ms-flexbox; - display: flex; - font-size: 10px; - margin-left: 5px; - padding: 0 2px; -} - -.workspace-leaf-content[data-type="diff-view"] .d2h-deleted-tag { - border: 2px solid #c33; -} - -.workspace-leaf-content[data-type="diff-view"] .d2h-added-tag { - border: 1px solid #399839; -} - -.workspace-leaf-content[data-type="diff-view"] .d2h-changed-tag { - border: 1px solid #d0b44c; -} - -.workspace-leaf-content[data-type="diff-view"] .d2h-moved-tag { - border: 1px solid #3572b0; -} - -/* ====================== Line Authoring Information ====================== */ - -.cm-gutterElement.obs-git-blame-gutter { - /* Add background color to spacing inbetween and around the gutter for better aesthetics */ - border-width: 0px 2px 0.2px 2px; - border-style: solid; - border-color: var(--background-secondary); - background-color: var(--background-secondary); -} - -.cm-gutterElement.obs-git-blame-gutter > div, -.line-author-settings-preview { - /* delegate text color to settings */ - color: var(--obs-git-gutter-text); - font-family: monospace; - height: 100%; /* ensure, that age-based background color occupies entire parent */ - text-align: right; - padding: 0px 6px 0px 6px; - white-space: pre; /* Keep spaces and do not collapse them. */ -} diff --git a/.obsidian/plugins/obsidian-livesync/data.json b/.obsidian/plugins/obsidian-livesync/data.json deleted file mode 100644 index 97e30c6..0000000 --- a/.obsidian/plugins/obsidian-livesync/data.json +++ /dev/null @@ -1,88 +0,0 @@ -{ - "couchDB_URI": "", - "couchDB_USER": "", - "couchDB_PASSWORD": "", - "couchDB_DBNAME": "", - "liveSync": false, - "syncOnSave": true, - "syncOnStart": true, - "savingDelay": 200, - "lessInformationInLog": false, - "gcDelay": 0, - "versionUpFlash": "", - "minimumChunkSize": 20, - "longLineThreshold": 250, - "showVerboseLog": false, - "suspendFileWatching": false, - "trashInsteadDelete": true, - "periodicReplication": true, - "periodicReplicationInterval": 60, - "syncOnFileOpen": true, - "encrypt": true, - "passphrase": "", - "usePathObfuscation": false, - "doNotDeleteFolder": false, - "resolveConflictsByNewerFile": false, - "batchSave": false, - "deviceAndVaultName": "", - "usePluginSettings": false, - "showOwnPlugins": false, - "showStatusOnEditor": true, - "showStatusOnStatusbar": true, - "showOnlyIconsOnEditor": false, - "usePluginSync": false, - "autoSweepPlugins": false, - "autoSweepPluginsPeriodic": false, - "notifyPluginOrSettingUpdated": false, - "checkIntegrityOnSave": false, - "batch_size": 25, - "batches_limit": 25, - "useHistory": true, - "disableRequestURI": true, - "skipOlderFilesOnSync": true, - "checkConflictOnlyOnOpen": false, - "showMergeDialogOnlyOnActive": false, - "syncInternalFiles": false, - "syncInternalFilesBeforeReplication": false, - "syncInternalFilesIgnorePatterns": "\\/node_modules\\/, \\/\\.git\\/, \\/obsidian-livesync\\/", - "syncInternalFilesInterval": 60, - "additionalSuffixOfDatabaseName": "072e46c6bc12d813", - "ignoreVersionCheck": false, - "lastReadUpdates": 0, - "deleteMetadataOfDeletedFiles": false, - "syncIgnoreRegEx": "", - "syncOnlyRegEx": "", - "customChunkSize": 50, - "readChunksOnline": true, - "watchInternalFileChanges": true, - "automaticallyDeleteMetadataOfDeletedFiles": 0, - "disableMarkdownAutoMerge": false, - "writeDocumentsIfConflicted": false, - "useDynamicIterationCount": false, - "syncAfterMerge": false, - "configPassphraseStore": "", - "encryptedPassphrase": "%220812d2073486fabae8ccc93700000025c0d432a89ce299bd789d98493775703lRSkv44zLkIGCYGRai/xtYnGQG16A==", - "encryptedCouchDBConnection": "%220812d2073486fabae8ccc93600000025c0d432a89ce299bd789d9849377570zNtrrxMqYlP4fj9Nitm3wmDUTgYNWzrzzk8h6E5yxFTUOvSo8uYTDyQu4T77ywxWEhA6IoMM/bRYR+buclufnAotRKiufn75iw4emEnyAsb0GF6LUtVc/Ua79cCdQJVIIyc5gjWFdL+Gz1HvZomuwenlsWm3vx7q4nzWLvnSugdE2+DIAFtq3pytk72CNyTE4V515mfm8QucnwvD", - "permitEmptyPassphrase": false, - "useIndexedDBAdapter": true, - "useTimeouts": false, - "writeLogToTheFile": false, - "doNotPaceReplication": false, - "hashCacheMaxCount": 300, - "hashCacheMaxAmount": 50, - "concurrencyOfReadChunksOnline": 30, - "minimumIntervalOfReadChunksOnline": 25, - "hashAlg": "xxhash64", - "suspendParseReplicationResult": false, - "doNotSuspendOnFetching": false, - "useIgnoreFiles": false, - "ignoreFiles": ".gitignore", - "syncOnEditorSave": true, - "pluginSyncExtendedSetting": {}, - "syncMaxSizeInMB": 50, - "settingSyncFile": "", - "writeCredentialsForSettingSync": false, - "notifyAllSettingSyncFile": false, - "isConfigured": true, - "settingVersion": 0 -} \ No newline at end of file diff --git a/.obsidian/plugins/obsidian-livesync/main.js b/.obsidian/plugins/obsidian-livesync/main.js deleted file mode 100644 index 4887ca0..0000000 --- a/.obsidian/plugins/obsidian-livesync/main.js +++ /dev/null @@ -1,24940 +0,0 @@ -/* -THIS IS A GENERATED/BUNDLED FILE BY ESBUILD AND TERSER -if you want to view the source, please visit the github repository of this plugin -*/ - -"use strict"; - -var __create = Object.create, __defProp = Object.defineProperty, __getOwnPropDesc = Object.getOwnPropertyDescriptor, __getOwnPropNames = Object.getOwnPropertyNames, __getProtoOf = Object.getPrototypeOf, __hasOwnProp = Object.prototype.hasOwnProperty, __defNormalProp = (s, r, o) => r in s ? __defProp(s, r, { - enumerable: true, - configurable: true, - writable: true, - value: o -}) : s[r] = o, __commonJS = (s, r) => function __require() { - return r || (0, s[__getOwnPropNames(s)[0]])((r = { - exports: {} - }).exports, r), r.exports; -}, __export = (s, r) => { - for (var o in r) __defProp(s, o, { - get: r[o], - enumerable: true - }); -}, __copyProps = (s, r, o, u) => { - if (r && "object" == typeof r || "function" == typeof r) for (let g of __getOwnPropNames(r)) if (!__hasOwnProp.call(s, g) && g !== o) __defProp(s, g, { - get: () => r[g], - enumerable: !(u = __getOwnPropDesc(r, g)) || u.enumerable - }); - return s; -}, __toESM = (s, r, o) => (o = null != s ? __create(__getProtoOf(s)) : {}, __copyProps(r || !s || !s.__esModule ? __defProp(o, "default", { - value: s, - enumerable: true -}) : o, s)), __toCommonJS = s => __copyProps(__defProp({}, "__esModule", { - value: true -}), s), __publicField = (s, r, o) => { - __defNormalProp(s, "symbol" != typeof r ? r + "" : r, o); - return o; -}, __accessCheck = (s, r, o) => { - if (!r.has(s)) throw TypeError("Cannot " + o); -}, __privateGet = (s, r, o) => { - __accessCheck(s, r, "read from private field"); - return o ? o.call(s) : r.get(s); -}, __privateAdd = (s, r, o) => { - if (r.has(s)) throw TypeError("Cannot add the same private member more than once"); - r instanceof WeakSet ? r.add(s) : r.set(s, o); -}, __privateSet = (s, r, o, u) => { - __accessCheck(s, r, "write to private field"); - u ? u.call(s, o) : r.set(s, o); - return o; -}, __privateMethod = (s, r, o) => { - __accessCheck(s, r, "access private method"); - return o; -}, require_diff_match_patch = __commonJS({ - "node_modules/diff-match-patch/index.js"(s, r) { - var diff_match_patch2 = function() { - this.Diff_Timeout = 1; - this.Diff_EditCost = 4; - this.Match_Threshold = .5; - this.Match_Distance = 1e3; - this.Patch_DeleteThreshold = .5; - this.Patch_Margin = 4; - this.Match_MaxBits = 32; - }, o = -1; - diff_match_patch2.Diff = function(s, r) { - return [ s, r ]; - }; - diff_match_patch2.prototype.diff_main = function(s, r, o, u) { - if ("undefined" == typeof u) if (this.Diff_Timeout <= 0) u = Number.MAX_VALUE; else u = (new Date).getTime() + 1e3 * this.Diff_Timeout; - var g = u; - if (null == s || null == r) throw new Error("Null input. (diff_main)"); - if (s == r) if (s) return [ new diff_match_patch2.Diff(0, s) ]; else return []; - if ("undefined" == typeof o) o = true; - var _ = o, m = this.diff_commonPrefix(s, r), b = s.substring(0, m); - s = s.substring(m); - r = r.substring(m); - m = this.diff_commonSuffix(s, r); - var E = s.substring(s.length - m); - s = s.substring(0, s.length - m); - r = r.substring(0, r.length - m); - var w = this.diff_compute_(s, r, _, g); - if (b) w.unshift(new diff_match_patch2.Diff(0, b)); - if (E) w.push(new diff_match_patch2.Diff(0, E)); - this.diff_cleanupMerge(w); - return w; - }; - diff_match_patch2.prototype.diff_compute_ = function(s, r, u, g) { - var _; - if (!s) return [ new diff_match_patch2.Diff(1, r) ]; - if (!r) return [ new diff_match_patch2.Diff(o, s) ]; - var m = s.length > r.length ? s : r, b = s.length > r.length ? r : s, E = m.indexOf(b); - if (-1 != E) { - _ = [ new diff_match_patch2.Diff(1, m.substring(0, E)), new diff_match_patch2.Diff(0, b), new diff_match_patch2.Diff(1, m.substring(E + b.length)) ]; - if (s.length > r.length) _[0][0] = _[2][0] = o; - return _; - } - if (1 == b.length) return [ new diff_match_patch2.Diff(o, s), new diff_match_patch2.Diff(1, r) ]; - var w = this.diff_halfMatch_(s, r); - if (w) { - var S = w[0], L = w[1], O = w[2], D = w[3], k = w[4], C = this.diff_main(S, O, u, g), T = this.diff_main(L, D, u, g); - return C.concat([ new diff_match_patch2.Diff(0, k) ], T); - } - if (u && s.length > 100 && r.length > 100) return this.diff_lineMode_(s, r, g); else return this.diff_bisect_(s, r, g); - }; - diff_match_patch2.prototype.diff_lineMode_ = function(s, r, u) { - var g = this.diff_linesToChars_(s, r); - s = g.chars1; - r = g.chars2; - var _ = g.lineArray, m = this.diff_main(s, r, false, u); - this.diff_charsToLines_(m, _); - this.diff_cleanupSemantic(m); - m.push(new diff_match_patch2.Diff(0, "")); - for (var b = 0, E = 0, w = 0, S = "", L = ""; b < m.length; ) { - switch (m[b][0]) { - case 1: - w++; - L += m[b][1]; - break; - - case o: - E++; - S += m[b][1]; - break; - - case 0: - if (E >= 1 && w >= 1) { - m.splice(b - E - w, E + w); - b = b - E - w; - for (var O = this.diff_main(S, L, false, u), D = O.length - 1; D >= 0; D--) m.splice(b, 0, O[D]); - b += O.length; - } - w = 0; - E = 0; - S = ""; - L = ""; - break; - } - b++; - } - m.pop(); - return m; - }; - diff_match_patch2.prototype.diff_bisect_ = function(s, r, u) { - for (var g = s.length, _ = r.length, m = Math.ceil((g + _) / 2), b = m, E = 2 * m, w = new Array(E), S = new Array(E), L = 0; L < E; L++) { - w[L] = -1; - S[L] = -1; - } - w[b + 1] = 0; - S[b + 1] = 0; - for (var O = g - _, D = O % 2 != 0, k = 0, C = 0, T = 0, I = 0, A = 0; A < m && !((new Date).getTime() > u); A++) { - for (var R = -A + k; R <= A - C; R += 2) { - var x = b + R; - if (R == -A || R != A && w[x - 1] < w[x + 1]) V = w[x + 1]; else V = w[x - 1] + 1; - for (var P = V - R; V < g && P < _ && s.charAt(V) == r.charAt(P); ) { - V++; - P++; - } - w[x] = V; - if (V > g) C += 2; else if (P > _) k += 2; else if (D) if ((F = b + O - R) >= 0 && F < E && -1 != S[F]) if (V >= (B = g - S[F])) return this.diff_bisectSplit_(s, r, V, P, u); - } - for (var N = -A + T; N <= A - I; N += 2) { - var B, F = b + N; - if (N == -A || N != A && S[F - 1] < S[F + 1]) B = S[F + 1]; else B = S[F - 1] + 1; - for (var M = B - N; B < g && M < _ && s.charAt(g - B - 1) == r.charAt(_ - M - 1); ) { - B++; - M++; - } - S[F] = B; - if (B > g) I += 2; else if (M > _) T += 2; else if (!D) if ((x = b + O - N) >= 0 && x < E && -1 != w[x]) { - var V; - P = b + (V = w[x]) - x; - if (V >= (B = g - B)) return this.diff_bisectSplit_(s, r, V, P, u); - } - } - } - return [ new diff_match_patch2.Diff(o, s), new diff_match_patch2.Diff(1, r) ]; - }; - diff_match_patch2.prototype.diff_bisectSplit_ = function(s, r, o, u, g) { - var _ = s.substring(0, o), m = r.substring(0, u), b = s.substring(o), E = r.substring(u), w = this.diff_main(_, m, false, g), S = this.diff_main(b, E, false, g); - return w.concat(S); - }; - diff_match_patch2.prototype.diff_linesToChars_ = function(s, r) { - var o = [], u = {}; - o[0] = ""; - function diff_linesToCharsMunge_(s) { - for (var r = "", _ = 0, m = -1, b = o.length; m < s.length - 1; ) { - if (-1 == (m = s.indexOf("\n", _))) m = s.length - 1; - var E = s.substring(_, m + 1); - if (u.hasOwnProperty ? u.hasOwnProperty(E) : void 0 !== u[E]) r += String.fromCharCode(u[E]); else { - if (b == g) { - E = s.substring(_); - m = s.length; - } - r += String.fromCharCode(b); - u[E] = b; - o[b++] = E; - } - _ = m + 1; - } - return r; - } - var g = 4e4, _ = diff_linesToCharsMunge_(s); - g = 65535; - return { - chars1: _, - chars2: diff_linesToCharsMunge_(r), - lineArray: o - }; - }; - diff_match_patch2.prototype.diff_charsToLines_ = function(s, r) { - for (var o = 0; o < s.length; o++) { - for (var u = s[o][1], g = [], _ = 0; _ < u.length; _++) g[_] = r[u.charCodeAt(_)]; - s[o][1] = g.join(""); - } - }; - diff_match_patch2.prototype.diff_commonPrefix = function(s, r) { - if (!s || !r || s.charAt(0) != r.charAt(0)) return 0; - for (var o = 0, u = Math.min(s.length, r.length), g = u, _ = 0; o < g; ) { - if (s.substring(_, g) == r.substring(_, g)) _ = o = g; else u = g; - g = Math.floor((u - o) / 2 + o); - } - return g; - }; - diff_match_patch2.prototype.diff_commonSuffix = function(s, r) { - if (!s || !r || s.charAt(s.length - 1) != r.charAt(r.length - 1)) return 0; - for (var o = 0, u = Math.min(s.length, r.length), g = u, _ = 0; o < g; ) { - if (s.substring(s.length - g, s.length - _) == r.substring(r.length - g, r.length - _)) _ = o = g; else u = g; - g = Math.floor((u - o) / 2 + o); - } - return g; - }; - diff_match_patch2.prototype.diff_commonOverlap_ = function(s, r) { - var o = s.length, u = r.length; - if (0 == o || 0 == u) return 0; - if (o > u) s = s.substring(o - u); else if (o < u) r = r.substring(0, o); - var g = Math.min(o, u); - if (s == r) return g; - for (var _ = 0, m = 1; ;) { - var b = s.substring(g - m), E = r.indexOf(b); - if (-1 == E) return _; - m += E; - if (0 == E || s.substring(g - m) == r.substring(0, m)) { - _ = m; - m++; - } - } - }; - diff_match_patch2.prototype.diff_halfMatch_ = function(s, r) { - if (this.Diff_Timeout <= 0) return null; - var o = s.length > r.length ? s : r, u = s.length > r.length ? r : s; - if (o.length < 4 || 2 * u.length < o.length) return null; - var g = this; - function diff_halfMatchI_(s, r, o) { - for (var u, _, m, b, E = s.substring(o, o + Math.floor(s.length / 4)), w = -1, S = ""; -1 != (w = r.indexOf(E, w + 1)); ) { - var L = g.diff_commonPrefix(s.substring(o), r.substring(w)), O = g.diff_commonSuffix(s.substring(0, o), r.substring(0, w)); - if (S.length < O + L) { - S = r.substring(w - O, w) + r.substring(w, w + L); - u = s.substring(0, o - O); - _ = s.substring(o + L); - m = r.substring(0, w - O); - b = r.substring(w + L); - } - } - if (2 * S.length >= s.length) return [ u, _, m, b, S ]; else return null; - } - var _, m, b, E, w, S = diff_halfMatchI_(o, u, Math.ceil(o.length / 4)), L = diff_halfMatchI_(o, u, Math.ceil(o.length / 2)); - if (!S && !L) return null; else if (!L) _ = S; else if (!S) _ = L; else _ = S[4].length > L[4].length ? S : L; - if (s.length > r.length) { - m = _[0]; - b = _[1]; - E = _[2]; - w = _[3]; - } else { - E = _[0]; - w = _[1]; - m = _[2]; - b = _[3]; - } - return [ m, b, E, w, _[4] ]; - }; - diff_match_patch2.prototype.diff_cleanupSemantic = function(s) { - for (var r = false, u = [], g = 0, _ = null, m = 0, b = 0, E = 0, w = 0, S = 0; m < s.length; ) { - if (0 == s[m][0]) { - u[g++] = m; - b = w; - E = S; - w = 0; - S = 0; - _ = s[m][1]; - } else { - if (1 == s[m][0]) w += s[m][1].length; else S += s[m][1].length; - if (_ && _.length <= Math.max(b, E) && _.length <= Math.max(w, S)) { - s.splice(u[g - 1], 0, new diff_match_patch2.Diff(o, _)); - s[u[g - 1] + 1][0] = 1; - g--; - m = --g > 0 ? u[g - 1] : -1; - b = 0; - E = 0; - w = 0; - S = 0; - _ = null; - r = true; - } - } - m++; - } - if (r) this.diff_cleanupMerge(s); - this.diff_cleanupSemanticLossless(s); - m = 1; - for (;m < s.length; ) { - if (s[m - 1][0] == o && 1 == s[m][0]) { - var L = s[m - 1][1], O = s[m][1], D = this.diff_commonOverlap_(L, O), k = this.diff_commonOverlap_(O, L); - if (D >= k) { - if (D >= L.length / 2 || D >= O.length / 2) { - s.splice(m, 0, new diff_match_patch2.Diff(0, O.substring(0, D))); - s[m - 1][1] = L.substring(0, L.length - D); - s[m + 1][1] = O.substring(D); - m++; - } - } else if (k >= L.length / 2 || k >= O.length / 2) { - s.splice(m, 0, new diff_match_patch2.Diff(0, L.substring(0, k))); - s[m - 1][0] = 1; - s[m - 1][1] = O.substring(0, O.length - k); - s[m + 1][0] = o; - s[m + 1][1] = L.substring(k); - m++; - } - m++; - } - m++; - } - }; - diff_match_patch2.prototype.diff_cleanupSemanticLossless = function(s) { - function diff_cleanupSemanticScore_(s, r) { - if (!s || !r) return 6; - var o = s.charAt(s.length - 1), u = r.charAt(0), g = o.match(diff_match_patch2.nonAlphaNumericRegex_), _ = u.match(diff_match_patch2.nonAlphaNumericRegex_), m = g && o.match(diff_match_patch2.whitespaceRegex_), b = _ && u.match(diff_match_patch2.whitespaceRegex_), E = m && o.match(diff_match_patch2.linebreakRegex_), w = b && u.match(diff_match_patch2.linebreakRegex_), S = E && s.match(diff_match_patch2.blanklineEndRegex_), L = w && r.match(diff_match_patch2.blanklineStartRegex_); - if (S || L) return 5; else if (E || w) return 4; else if (g && !m && b) return 3; else if (m || b) return 2; else if (g || _) return 1; - return 0; - } - for (var r = 1; r < s.length - 1; ) { - if (0 == s[r - 1][0] && 0 == s[r + 1][0]) { - var o = s[r - 1][1], u = s[r][1], g = s[r + 1][1], _ = this.diff_commonSuffix(o, u); - if (_) { - var m = u.substring(u.length - _); - o = o.substring(0, o.length - _); - u = m + u.substring(0, u.length - _); - g = m + g; - } - for (var b = o, E = u, w = g, S = diff_cleanupSemanticScore_(o, u) + diff_cleanupSemanticScore_(u, g); u.charAt(0) === g.charAt(0); ) { - o += u.charAt(0); - u = u.substring(1) + g.charAt(0); - g = g.substring(1); - var L = diff_cleanupSemanticScore_(o, u) + diff_cleanupSemanticScore_(u, g); - if (L >= S) { - S = L; - b = o; - E = u; - w = g; - } - } - if (s[r - 1][1] != b) { - if (b) s[r - 1][1] = b; else { - s.splice(r - 1, 1); - r--; - } - s[r][1] = E; - if (w) s[r + 1][1] = w; else { - s.splice(r + 1, 1); - r--; - } - } - } - r++; - } - }; - diff_match_patch2.nonAlphaNumericRegex_ = /[^a-zA-Z0-9]/; - diff_match_patch2.whitespaceRegex_ = /\s/; - diff_match_patch2.linebreakRegex_ = /[\r\n]/; - diff_match_patch2.blanklineEndRegex_ = /\n\r?\n$/; - diff_match_patch2.blanklineStartRegex_ = /^\r?\n\r?\n/; - diff_match_patch2.prototype.diff_cleanupEfficiency = function(s) { - for (var r = false, u = [], g = 0, _ = null, m = 0, b = false, E = false, w = false, S = false; m < s.length; ) { - if (0 == s[m][0]) { - if (s[m][1].length < this.Diff_EditCost && (w || S)) { - u[g++] = m; - b = w; - E = S; - _ = s[m][1]; - } else { - g = 0; - _ = null; - } - w = S = false; - } else { - if (s[m][0] == o) S = true; else w = true; - if (_ && (b && E && w && S || _.length < this.Diff_EditCost / 2 && b + E + w + S == 3)) { - s.splice(u[g - 1], 0, new diff_match_patch2.Diff(o, _)); - s[u[g - 1] + 1][0] = 1; - g--; - _ = null; - if (b && E) { - w = S = true; - g = 0; - } else { - m = --g > 0 ? u[g - 1] : -1; - w = S = false; - } - r = true; - } - } - m++; - } - if (r) this.diff_cleanupMerge(s); - }; - diff_match_patch2.prototype.diff_cleanupMerge = function(s) { - s.push(new diff_match_patch2.Diff(0, "")); - for (var r, u = 0, g = 0, _ = 0, m = "", b = ""; u < s.length; ) switch (s[u][0]) { - case 1: - _++; - b += s[u][1]; - u++; - break; - - case o: - g++; - m += s[u][1]; - u++; - break; - - case 0: - if (g + _ > 1) { - if (0 !== g && 0 !== _) { - if (0 !== (r = this.diff_commonPrefix(b, m))) { - if (u - g - _ > 0 && 0 == s[u - g - _ - 1][0]) s[u - g - _ - 1][1] += b.substring(0, r); else { - s.splice(0, 0, new diff_match_patch2.Diff(0, b.substring(0, r))); - u++; - } - b = b.substring(r); - m = m.substring(r); - } - if (0 !== (r = this.diff_commonSuffix(b, m))) { - s[u][1] = b.substring(b.length - r) + s[u][1]; - b = b.substring(0, b.length - r); - m = m.substring(0, m.length - r); - } - } - u -= g + _; - s.splice(u, g + _); - if (m.length) { - s.splice(u, 0, new diff_match_patch2.Diff(o, m)); - u++; - } - if (b.length) { - s.splice(u, 0, new diff_match_patch2.Diff(1, b)); - u++; - } - u++; - } else if (0 !== u && 0 == s[u - 1][0]) { - s[u - 1][1] += s[u][1]; - s.splice(u, 1); - } else u++; - _ = 0; - g = 0; - m = ""; - b = ""; - break; - } - if ("" === s[s.length - 1][1]) s.pop(); - var E = false; - u = 1; - for (;u < s.length - 1; ) { - if (0 == s[u - 1][0] && 0 == s[u + 1][0]) if (s[u][1].substring(s[u][1].length - s[u - 1][1].length) == s[u - 1][1]) { - s[u][1] = s[u - 1][1] + s[u][1].substring(0, s[u][1].length - s[u - 1][1].length); - s[u + 1][1] = s[u - 1][1] + s[u + 1][1]; - s.splice(u - 1, 1); - E = true; - } else if (s[u][1].substring(0, s[u + 1][1].length) == s[u + 1][1]) { - s[u - 1][1] += s[u + 1][1]; - s[u][1] = s[u][1].substring(s[u + 1][1].length) + s[u + 1][1]; - s.splice(u + 1, 1); - E = true; - } - u++; - } - if (E) this.diff_cleanupMerge(s); - }; - diff_match_patch2.prototype.diff_xIndex = function(s, r) { - var u, g = 0, _ = 0, m = 0, b = 0; - for (u = 0; u < s.length; u++) { - if (1 !== s[u][0]) g += s[u][1].length; - if (s[u][0] !== o) _ += s[u][1].length; - if (g > r) break; - m = g; - b = _; - } - if (s.length != u && s[u][0] === o) return b; else return b + (r - m); - }; - diff_match_patch2.prototype.diff_prettyHtml = function(s) { - for (var r = [], u = /&/g, g = //g, m = /\n/g, b = 0; b < s.length; b++) { - var E = s[b][0], w = s[b][1].replace(u, "&").replace(g, "<").replace(_, ">").replace(m, "¶
    "); - switch (E) { - case 1: - r[b] = '' + w + ""; - break; - - case o: - r[b] = '' + w + ""; - break; - - case 0: - r[b] = "" + w + ""; - break; - } - } - return r.join(""); - }; - diff_match_patch2.prototype.diff_text1 = function(s) { - for (var r = [], o = 0; o < s.length; o++) if (1 !== s[o][0]) r[o] = s[o][1]; - return r.join(""); - }; - diff_match_patch2.prototype.diff_text2 = function(s) { - for (var r = [], u = 0; u < s.length; u++) if (s[u][0] !== o) r[u] = s[u][1]; - return r.join(""); - }; - diff_match_patch2.prototype.diff_levenshtein = function(s) { - for (var r = 0, u = 0, g = 0, _ = 0; _ < s.length; _++) { - var m = s[_][0], b = s[_][1]; - switch (m) { - case 1: - u += b.length; - break; - - case o: - g += b.length; - break; - - case 0: - r += Math.max(u, g); - u = 0; - g = 0; - break; - } - } - return r += Math.max(u, g); - }; - diff_match_patch2.prototype.diff_toDelta = function(s) { - for (var r = [], u = 0; u < s.length; u++) switch (s[u][0]) { - case 1: - r[u] = "+" + encodeURI(s[u][1]); - break; - - case o: - r[u] = "-" + s[u][1].length; - break; - - case 0: - r[u] = "=" + s[u][1].length; - break; - } - return r.join("\t").replace(/%20/g, " "); - }; - diff_match_patch2.prototype.diff_fromDelta = function(s, r) { - for (var u = [], g = 0, _ = 0, m = r.split(/\t/g), b = 0; b < m.length; b++) { - var E = m[b].substring(1); - switch (m[b].charAt(0)) { - case "+": - try { - u[g++] = new diff_match_patch2.Diff(1, decodeURI(E)); - } catch (s) { - throw new Error("Illegal escape in diff_fromDelta: " + E); - } - break; - - case "-": - case "=": - var w = parseInt(E, 10); - if (isNaN(w) || w < 0) throw new Error("Invalid number in diff_fromDelta: " + E); - var S = s.substring(_, _ += w); - if ("=" == m[b].charAt(0)) u[g++] = new diff_match_patch2.Diff(0, S); else u[g++] = new diff_match_patch2.Diff(o, S); - break; - - default: - if (m[b]) throw new Error("Invalid diff operation in diff_fromDelta: " + m[b]); - } - } - if (_ != s.length) throw new Error("Delta length (" + _ + ") does not equal source text length (" + s.length + ")."); - return u; - }; - diff_match_patch2.prototype.match_main = function(s, r, o) { - if (null == s || null == r || null == o) throw new Error("Null input. (match_main)"); - o = Math.max(0, Math.min(o, s.length)); - if (s == r) return 0; else if (!s.length) return -1; else if (s.substring(o, o + r.length) == r) return o; else return this.match_bitap_(s, r, o); - }; - diff_match_patch2.prototype.match_bitap_ = function(s, r, o) { - if (r.length > this.Match_MaxBits) throw new Error("Pattern too long for this browser."); - var u = this.match_alphabet_(r), g = this; - function match_bitapScore_(s, u) { - var _ = s / r.length, m = Math.abs(o - u); - if (!g.Match_Distance) return m ? 1 : _; else return _ + m / g.Match_Distance; - } - var _ = this.Match_Threshold, m = s.indexOf(r, o); - if (-1 != m) { - _ = Math.min(match_bitapScore_(0, m), _); - if (-1 != (m = s.lastIndexOf(r, o + r.length))) _ = Math.min(match_bitapScore_(0, m), _); - } - var b, E, w = 1 << r.length - 1; - m = -1; - for (var S, L = r.length + s.length, O = 0; O < r.length; O++) { - b = 0; - E = L; - for (;b < E; ) { - if (match_bitapScore_(O, o + E) <= _) b = E; else L = E; - E = Math.floor((L - b) / 2 + b); - } - L = E; - var D = Math.max(1, o - E + 1), k = Math.min(o + E, s.length) + r.length, C = Array(k + 2); - C[k + 1] = (1 << O) - 1; - for (var T = k; T >= D; T--) { - var I = u[s.charAt(T - 1)]; - if (0 === O) C[T] = (C[T + 1] << 1 | 1) & I; else C[T] = (C[T + 1] << 1 | 1) & I | (S[T + 1] | S[T]) << 1 | 1 | S[T + 1]; - if (C[T] & w) { - var A = match_bitapScore_(O, T - 1); - if (A <= _) { - _ = A; - if ((m = T - 1) > o) D = Math.max(1, 2 * o - m); else break; - } - } - } - if (match_bitapScore_(O + 1, o) > _) break; - S = C; - } - return m; - }; - diff_match_patch2.prototype.match_alphabet_ = function(s) { - for (var r = {}, o = 0; o < s.length; o++) r[s.charAt(o)] = 0; - for (o = 0; o < s.length; o++) r[s.charAt(o)] |= 1 << s.length - o - 1; - return r; - }; - diff_match_patch2.prototype.patch_addContext_ = function(s, r) { - if (0 != r.length) { - if (null === s.start2) throw Error("patch not initialized"); - for (var o = r.substring(s.start2, s.start2 + s.length1), u = 0; r.indexOf(o) != r.lastIndexOf(o) && o.length < this.Match_MaxBits - this.Patch_Margin - this.Patch_Margin; ) { - u += this.Patch_Margin; - o = r.substring(s.start2 - u, s.start2 + s.length1 + u); - } - u += this.Patch_Margin; - var g = r.substring(s.start2 - u, s.start2); - if (g) s.diffs.unshift(new diff_match_patch2.Diff(0, g)); - var _ = r.substring(s.start2 + s.length1, s.start2 + s.length1 + u); - if (_) s.diffs.push(new diff_match_patch2.Diff(0, _)); - s.start1 -= g.length; - s.start2 -= g.length; - s.length1 += g.length + _.length; - s.length2 += g.length + _.length; - } - }; - diff_match_patch2.prototype.patch_make = function(s, r, u) { - var g, _; - if ("string" == typeof s && "string" == typeof r && "undefined" == typeof u) { - g = s; - if ((_ = this.diff_main(g, r, true)).length > 2) { - this.diff_cleanupSemantic(_); - this.diff_cleanupEfficiency(_); - } - } else if (s && "object" == typeof s && "undefined" == typeof r && "undefined" == typeof u) { - _ = s; - g = this.diff_text1(_); - } else if ("string" == typeof s && r && "object" == typeof r && "undefined" == typeof u) { - g = s; - _ = r; - } else if ("string" == typeof s && "string" == typeof r && u && "object" == typeof u) { - g = s; - _ = u; - } else throw new Error("Unknown call format to patch_make."); - if (0 === _.length) return []; - for (var m = [], b = new diff_match_patch2.patch_obj, E = 0, w = 0, S = 0, L = g, O = g, D = 0; D < _.length; D++) { - var k = _[D][0], C = _[D][1]; - if (!E && 0 !== k) { - b.start1 = w; - b.start2 = S; - } - switch (k) { - case 1: - b.diffs[E++] = _[D]; - b.length2 += C.length; - O = O.substring(0, S) + C + O.substring(S); - break; - - case o: - b.length1 += C.length; - b.diffs[E++] = _[D]; - O = O.substring(0, S) + O.substring(S + C.length); - break; - - case 0: - if (C.length <= 2 * this.Patch_Margin && E && _.length != D + 1) { - b.diffs[E++] = _[D]; - b.length1 += C.length; - b.length2 += C.length; - } else if (C.length >= 2 * this.Patch_Margin) if (E) { - this.patch_addContext_(b, L); - m.push(b); - b = new diff_match_patch2.patch_obj; - E = 0; - L = O; - w = S; - } - break; - } - if (1 !== k) w += C.length; - if (k !== o) S += C.length; - } - if (E) { - this.patch_addContext_(b, L); - m.push(b); - } - return m; - }; - diff_match_patch2.prototype.patch_deepCopy = function(s) { - for (var r = [], o = 0; o < s.length; o++) { - var u = s[o], g = new diff_match_patch2.patch_obj; - g.diffs = []; - for (var _ = 0; _ < u.diffs.length; _++) g.diffs[_] = new diff_match_patch2.Diff(u.diffs[_][0], u.diffs[_][1]); - g.start1 = u.start1; - g.start2 = u.start2; - g.length1 = u.length1; - g.length2 = u.length2; - r[o] = g; - } - return r; - }; - diff_match_patch2.prototype.patch_apply = function(s, r) { - if (0 == s.length) return [ r, [] ]; - s = this.patch_deepCopy(s); - var u = this.patch_addPadding(s); - r = u + r + u; - this.patch_splitMax(s); - for (var g = 0, _ = [], m = 0; m < s.length; m++) { - var b, E = s[m].start2 + g, w = this.diff_text1(s[m].diffs), S = -1; - if (w.length > this.Match_MaxBits) { - if (-1 != (b = this.match_main(r, w.substring(0, this.Match_MaxBits), E))) if (-1 == (S = this.match_main(r, w.substring(w.length - this.Match_MaxBits), E + w.length - this.Match_MaxBits)) || b >= S) b = -1; - } else b = this.match_main(r, w, E); - if (-1 == b) { - _[m] = false; - g -= s[m].length2 - s[m].length1; - } else { - _[m] = true; - g = b - E; - var L; - if (-1 == S) L = r.substring(b, b + w.length); else L = r.substring(b, S + this.Match_MaxBits); - if (w == L) r = r.substring(0, b) + this.diff_text2(s[m].diffs) + r.substring(b + w.length); else { - var O = this.diff_main(w, L, false); - if (w.length > this.Match_MaxBits && this.diff_levenshtein(O) / w.length > this.Patch_DeleteThreshold) _[m] = false; else { - this.diff_cleanupSemanticLossless(O); - for (var D, k = 0, C = 0; C < s[m].diffs.length; C++) { - var T = s[m].diffs[C]; - if (0 !== T[0]) D = this.diff_xIndex(O, k); - if (1 === T[0]) r = r.substring(0, b + D) + T[1] + r.substring(b + D); else if (T[0] === o) r = r.substring(0, b + D) + r.substring(b + this.diff_xIndex(O, k + T[1].length)); - if (T[0] !== o) k += T[1].length; - } - } - } - } - } - return [ r = r.substring(u.length, r.length - u.length), _ ]; - }; - diff_match_patch2.prototype.patch_addPadding = function(s) { - for (var r = this.Patch_Margin, o = "", u = 1; u <= r; u++) o += String.fromCharCode(u); - for (u = 0; u < s.length; u++) { - s[u].start1 += r; - s[u].start2 += r; - } - var g = s[0], _ = g.diffs; - if (0 == _.length || 0 != _[0][0]) { - _.unshift(new diff_match_patch2.Diff(0, o)); - g.start1 -= r; - g.start2 -= r; - g.length1 += r; - g.length2 += r; - } else if (r > _[0][1].length) { - var m = r - _[0][1].length; - _[0][1] = o.substring(_[0][1].length) + _[0][1]; - g.start1 -= m; - g.start2 -= m; - g.length1 += m; - g.length2 += m; - } - if (0 == (_ = (g = s[s.length - 1]).diffs).length || 0 != _[_.length - 1][0]) { - _.push(new diff_match_patch2.Diff(0, o)); - g.length1 += r; - g.length2 += r; - } else if (r > _[_.length - 1][1].length) { - m = r - _[_.length - 1][1].length; - _[_.length - 1][1] += o.substring(0, m); - g.length1 += m; - g.length2 += m; - } - return o; - }; - diff_match_patch2.prototype.patch_splitMax = function(s) { - for (var r = this.Match_MaxBits, u = 0; u < s.length; u++) if (!(s[u].length1 <= r)) { - var g = s[u]; - s.splice(u--, 1); - for (var _ = g.start1, m = g.start2, b = ""; 0 !== g.diffs.length; ) { - var E = new diff_match_patch2.patch_obj, w = true; - E.start1 = _ - b.length; - E.start2 = m - b.length; - if ("" !== b) { - E.length1 = E.length2 = b.length; - E.diffs.push(new diff_match_patch2.Diff(0, b)); - } - for (;0 !== g.diffs.length && E.length1 < r - this.Patch_Margin; ) { - var S = g.diffs[0][0], L = g.diffs[0][1]; - if (1 === S) { - E.length2 += L.length; - m += L.length; - E.diffs.push(g.diffs.shift()); - w = false; - } else if (S === o && 1 == E.diffs.length && 0 == E.diffs[0][0] && L.length > 2 * r) { - E.length1 += L.length; - _ += L.length; - w = false; - E.diffs.push(new diff_match_patch2.Diff(S, L)); - g.diffs.shift(); - } else { - L = L.substring(0, r - E.length1 - this.Patch_Margin); - E.length1 += L.length; - _ += L.length; - if (0 === S) { - E.length2 += L.length; - m += L.length; - } else w = false; - E.diffs.push(new diff_match_patch2.Diff(S, L)); - if (L == g.diffs[0][1]) g.diffs.shift(); else g.diffs[0][1] = g.diffs[0][1].substring(L.length); - } - } - b = (b = this.diff_text2(E.diffs)).substring(b.length - this.Patch_Margin); - var O = this.diff_text1(g.diffs).substring(0, this.Patch_Margin); - if ("" !== O) { - E.length1 += O.length; - E.length2 += O.length; - if (0 !== E.diffs.length && 0 === E.diffs[E.diffs.length - 1][0]) E.diffs[E.diffs.length - 1][1] += O; else E.diffs.push(new diff_match_patch2.Diff(0, O)); - } - if (!w) s.splice(++u, 0, E); - } - } - }; - diff_match_patch2.prototype.patch_toText = function(s) { - for (var r = [], o = 0; o < s.length; o++) r[o] = s[o]; - return r.join(""); - }; - diff_match_patch2.prototype.patch_fromText = function(s) { - var r = []; - if (!s) return r; - for (var u = s.split("\n"), g = 0, _ = /^@@ -(\d+),?(\d*) \+(\d+),?(\d*) @@$/; g < u.length; ) { - var m = u[g].match(_); - if (!m) throw new Error("Invalid patch string: " + u[g]); - var b = new diff_match_patch2.patch_obj; - r.push(b); - b.start1 = parseInt(m[1], 10); - if ("" === m[2]) { - b.start1--; - b.length1 = 1; - } else if ("0" == m[2]) b.length1 = 0; else { - b.start1--; - b.length1 = parseInt(m[2], 10); - } - b.start2 = parseInt(m[3], 10); - if ("" === m[4]) { - b.start2--; - b.length2 = 1; - } else if ("0" == m[4]) b.length2 = 0; else { - b.start2--; - b.length2 = parseInt(m[4], 10); - } - g++; - for (;g < u.length; ) { - var E = u[g].charAt(0); - try { - var w = decodeURI(u[g].substring(1)); - } catch (s) { - throw new Error("Illegal escape in patch_fromText: " + w); - } - if ("-" == E) b.diffs.push(new diff_match_patch2.Diff(o, w)); else if ("+" == E) b.diffs.push(new diff_match_patch2.Diff(1, w)); else if (" " == E) b.diffs.push(new diff_match_patch2.Diff(0, w)); else if ("@" == E) break; else if ("" === E) ; else throw new Error('Invalid patch mode "' + E + '" in: ' + w); - g++; - } - } - return r; - }; - diff_match_patch2.patch_obj = function() { - this.diffs = []; - this.start1 = null; - this.start2 = null; - this.length1 = 0; - this.length2 = 0; - }; - diff_match_patch2.patch_obj.prototype.toString = function() { - var s, r; - if (0 === this.length1) s = this.start1 + ",0"; else if (1 == this.length1) s = this.start1 + 1; else s = this.start1 + 1 + "," + this.length1; - if (0 === this.length2) r = this.start2 + ",0"; else if (1 == this.length2) r = this.start2 + 1; else r = this.start2 + 1 + "," + this.length2; - for (var u, g = [ "@@ -" + s + " +" + r + " @@\n" ], _ = 0; _ < this.diffs.length; _++) { - switch (this.diffs[_][0]) { - case 1: - u = "+"; - break; - - case o: - u = "-"; - break; - - case 0: - u = " "; - break; - } - g[_ + 1] = u + encodeURI(this.diffs[_][1]) + "\n"; - } - return g.join("").replace(/%20/g, " "); - }; - r.exports = diff_match_patch2; - r.exports["diff_match_patch"] = diff_match_patch2; - r.exports["DIFF_DELETE"] = o; - r.exports["DIFF_INSERT"] = 1; - r.exports["DIFF_EQUAL"] = 0; - } -}), require_balanced_match = __commonJS({ - "node_modules/balanced-match/index.js"(s, r) { - "use strict"; - r.exports = balanced; - function balanced(s, r, o) { - if (s instanceof RegExp) s = maybeMatch(s, o); - if (r instanceof RegExp) r = maybeMatch(r, o); - var u = range2(s, r, o); - return u && { - start: u[0], - end: u[1], - pre: o.slice(0, u[0]), - body: o.slice(u[0] + s.length, u[1]), - post: o.slice(u[1] + r.length) - }; - } - function maybeMatch(s, r) { - var o = r.match(s); - return o ? o[0] : null; - } - balanced.range = range2; - function range2(s, r, o) { - var u, g, _, m, b, E = o.indexOf(s), w = o.indexOf(r, E + 1), S = E; - if (E >= 0 && w > 0) { - if (s === r) return [ E, w ]; - u = []; - _ = o.length; - for (;S >= 0 && !b; ) { - if (S == E) { - u.push(S); - E = o.indexOf(s, S + 1); - } else if (1 == u.length) b = [ u.pop(), w ]; else { - if ((g = u.pop()) < _) { - _ = g; - m = w; - } - w = o.indexOf(r, S + 1); - } - S = E < w && E >= 0 ? E : w; - } - if (u.length) b = [ _, m ]; - } - return b; - } - } -}), require_brace_expansion = __commonJS({ - "node_modules/brace-expansion/index.js"(s, r) { - var o = require_balanced_match(); - r.exports = function expandTop(s) { - if (!s) return []; - if ("{}" === s.substr(0, 2)) s = "\\{\\}" + s.substr(2); - return expand2(function escapeBraces(s) { - return s.split("\\\\").join(u).split("\\{").join(g).split("\\}").join(_).split("\\,").join(m).split("\\.").join(b); - }(s), true).map(unescapeBraces); - }; - var u = "\0SLASH" + Math.random() + "\0", g = "\0OPEN" + Math.random() + "\0", _ = "\0CLOSE" + Math.random() + "\0", m = "\0COMMA" + Math.random() + "\0", b = "\0PERIOD" + Math.random() + "\0"; - function numeric(s) { - return parseInt(s, 10) == s ? parseInt(s, 10) : s.charCodeAt(0); - } - function unescapeBraces(s) { - return s.split(u).join("\\").split(g).join("{").split(_).join("}").split(m).join(",").split(b).join("."); - } - function parseCommaParts(s) { - if (!s) return [ "" ]; - var r = [], u = o("{", "}", s); - if (!u) return s.split(","); - var g = u.pre, _ = u.body, m = u.post, b = g.split(","); - b[b.length - 1] += "{" + _ + "}"; - var E = parseCommaParts(m); - if (m.length) { - b[b.length - 1] += E.shift(); - b.push.apply(b, E); - } - r.push.apply(r, b); - return r; - } - function embrace(s) { - return "{" + s + "}"; - } - function isPadded(s) { - return /^-?0\d/.test(s); - } - function lte(s, r) { - return s <= r; - } - function gte(s, r) { - return s >= r; - } - function expand2(s, r) { - var u = [], g = o("{", "}", s); - if (!g) return [ s ]; - var m = g.pre, b = g.post.length ? expand2(g.post, false) : [ "" ]; - if (/\$$/.test(g.pre)) for (var E = 0; E < b.length; E++) { - var w = m + "{" + g.body + "}" + b[E]; - u.push(w); - } else { - var S, L, O = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(g.body), D = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(g.body), k = O || D, C = g.body.indexOf(",") >= 0; - if (!k && !C) if (g.post.match(/,.*\}/)) return expand2(s = g.pre + "{" + g.body + _ + g.post); else return [ s ]; - if (k) S = g.body.split(/\.\./); else if (1 === (S = parseCommaParts(g.body)).length) if (1 === (S = expand2(S[0], false).map(embrace)).length) return b.map((function(s) { - return g.pre + S[0] + s; - })); - if (k) { - var T = numeric(S[0]), I = numeric(S[1]), A = Math.max(S[0].length, S[1].length), R = 3 == S.length ? Math.abs(numeric(S[2])) : 1, x = lte; - if (I < T) { - R *= -1; - x = gte; - } - var P = S.some(isPadded); - L = []; - for (var N = T; x(N, I); N += R) { - var B; - if (D) { - if ("\\" === (B = String.fromCharCode(N))) B = ""; - } else { - B = String(N); - if (P) { - var F = A - B.length; - if (F > 0) { - var M = new Array(F + 1).join("0"); - if (N < 0) B = "-" + M + B.slice(1); else B = M + B; - } - } - } - L.push(B); - } - } else { - L = []; - for (var V = 0; V < S.length; V++) L.push.apply(L, expand2(S[V], false)); - } - for (V = 0; V < L.length; V++) for (E = 0; E < b.length; E++) { - w = m + L[V] + b[E]; - if (!r || k || w) u.push(w); - } - } - return u; - } - } -}), require_nextTick = __commonJS({ - "(disabled):node_modules/immediate/lib/nextTick"() {} -}), require_queueMicrotask = __commonJS({ - "node_modules/immediate/lib/queueMicrotask.js"(s) { - "use strict"; - s.test = function() { - return "function" == typeof window.queueMicrotask; - }; - s.install = function(s) { - return function() { - window.queueMicrotask(s); - }; - }; - } -}), require_mutation = __commonJS({ - "node_modules/immediate/lib/mutation.js"(s) { - "use strict"; - var r = window.MutationObserver || window.WebKitMutationObserver; - s.test = function() { - return r; - }; - s.install = function(s) { - var o = 0, u = new r(s), g = window.document.createTextNode(""); - u.observe(g, { - characterData: true - }); - return function() { - g.data = o = ++o % 2; - }; - }; - } -}), require_messageChannel = __commonJS({ - "node_modules/immediate/lib/messageChannel.js"(s) { - "use strict"; - s.test = function() { - if (window.setImmediate) return false; else return "undefined" != typeof window.MessageChannel; - }; - s.install = function(s) { - var r = new window.MessageChannel; - r.port1.onmessage = s; - return function() { - r.port2.postMessage(0); - }; - }; - } -}), require_stateChange = __commonJS({ - "node_modules/immediate/lib/stateChange.js"(s) { - "use strict"; - s.test = function() { - return "document" in window && "onreadystatechange" in window.document.createElement("script"); - }; - s.install = function(s) { - return function() { - var r = window.document.createElement("script"); - r.onreadystatechange = function() { - s(); - r.onreadystatechange = null; - r.parentNode.removeChild(r); - r = null; - }; - window.document.documentElement.appendChild(r); - return s; - }; - }; - } -}), require_timeout = __commonJS({ - "node_modules/immediate/lib/timeout.js"(s) { - "use strict"; - s.test = function() { - return true; - }; - s.install = function(s) { - return function() { - setTimeout(s, 0); - }; - }; - } -}), require_lib = __commonJS({ - "node_modules/immediate/lib/index.js"(s, r) { - "use strict"; - var o, u, g, _ = [ require_nextTick(), require_queueMicrotask(), require_mutation(), require_messageChannel(), require_stateChange(), require_timeout() ], m = -1, b = [], E = false; - function cleanUpNextTick() { - if (o && u) { - o = false; - if (u.length) b = u.concat(b); else m = -1; - if (b.length) nextTick(); - } - } - function nextTick() { - if (!o) { - E = false; - o = true; - for (var s = b.length, r = setTimeout(cleanUpNextTick); s; ) { - u = b; - b = []; - for (;u && ++m < s; ) u[m].run(); - m = -1; - s = b.length; - } - u = null; - m = -1; - o = false; - clearTimeout(r); - } - } - for (var w = -1, S = _.length; ++w < S; ) if (_[w] && _[w].test && _[w].test()) { - g = _[w].install(nextTick); - break; - } - function Item(s, r) { - this.fun = s; - this.array = r; - } - Item.prototype.run = function() { - var s = this.fun, r = this.array; - switch (r.length) { - case 0: - return s(); - - case 1: - return s(r[0]); - - case 2: - return s(r[0], r[1]); - - case 3: - return s(r[0], r[1], r[2]); - - default: - return s.apply(null, r); - } - }; - r.exports = function immediate2(s) { - var r = new Array(arguments.length - 1); - if (arguments.length > 1) for (var u = 1; u < arguments.length; u++) r[u - 1] = arguments[u]; - b.push(new Item(s, r)); - if (!E && !o) { - E = true; - g(); - } - }; - } -}), require_events = __commonJS({ - "node_modules/events/events.js"(s, r) { - "use strict"; - var o, u = "object" == typeof Reflect ? Reflect : null, g = u && "function" == typeof u.apply ? u.apply : function ReflectApply2(s, r, o) { - return Function.prototype.apply.call(s, r, o); - }; - if (u && "function" == typeof u.ownKeys) o = u.ownKeys; else if (Object.getOwnPropertySymbols) o = function ReflectOwnKeys2(s) { - return Object.getOwnPropertyNames(s).concat(Object.getOwnPropertySymbols(s)); - }; else o = function ReflectOwnKeys2(s) { - return Object.getOwnPropertyNames(s); - }; - var _ = Number.isNaN || function NumberIsNaN2(s) { - return s != s; - }; - function EventEmitter2() { - EventEmitter2.init.call(this); - } - r.exports = EventEmitter2; - r.exports.once = function once2(s, r) { - return new Promise((function(o, u) { - function errorListener(o) { - s.removeListener(r, resolver); - u(o); - } - function resolver() { - if ("function" == typeof s.removeListener) s.removeListener("error", errorListener); - o([].slice.call(arguments)); - } - eventTargetAgnosticAddListener(s, r, resolver, { - once: true - }); - if ("error" !== r) (function addErrorHandlerIfEventEmitter(s, r, o) { - if ("function" == typeof s.on) eventTargetAgnosticAddListener(s, "error", r, o); - })(s, errorListener, { - once: true - }); - })); - }; - EventEmitter2.EventEmitter = EventEmitter2; - EventEmitter2.prototype._events = void 0; - EventEmitter2.prototype._eventsCount = 0; - EventEmitter2.prototype._maxListeners = void 0; - var m = 10; - function checkListener(s) { - if ("function" != typeof s) throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof s); - } - Object.defineProperty(EventEmitter2, "defaultMaxListeners", { - enumerable: true, - get: function() { - return m; - }, - set: function(s) { - if ("number" != typeof s || s < 0 || _(s)) throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + s + "."); - m = s; - } - }); - EventEmitter2.init = function() { - if (void 0 === this._events || this._events === Object.getPrototypeOf(this)._events) { - this._events = Object.create(null); - this._eventsCount = 0; - } - this._maxListeners = this._maxListeners || void 0; - }; - EventEmitter2.prototype.setMaxListeners = function setMaxListeners(s) { - if ("number" != typeof s || s < 0 || _(s)) throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + s + "."); - this._maxListeners = s; - return this; - }; - function _getMaxListeners(s) { - if (void 0 === s._maxListeners) return EventEmitter2.defaultMaxListeners; else return s._maxListeners; - } - EventEmitter2.prototype.getMaxListeners = function getMaxListeners() { - return _getMaxListeners(this); - }; - EventEmitter2.prototype.emit = function emit2(s) { - for (var r = [], o = 1; o < arguments.length; o++) r.push(arguments[o]); - var u = "error" === s, _ = this._events; - if (void 0 !== _) u = u && void 0 === _.error; else if (!u) return false; - if (u) { - var m; - if (r.length > 0) m = r[0]; - if (m instanceof Error) throw m; - var b = new Error("Unhandled error." + (m ? " (" + m.message + ")" : "")); - b.context = m; - throw b; - } - var E = _[s]; - if (void 0 === E) return false; - if ("function" == typeof E) g(E, this, r); else { - var w = E.length, S = arrayClone(E, w); - for (o = 0; o < w; ++o) g(S[o], this, r); - } - return true; - }; - function _addListener(s, r, o, u) { - var g, _, m; - checkListener(o); - if (void 0 === (_ = s._events)) { - _ = s._events = Object.create(null); - s._eventsCount = 0; - } else { - if (void 0 !== _.newListener) { - s.emit("newListener", r, o.listener ? o.listener : o); - _ = s._events; - } - m = _[r]; - } - if (void 0 === m) { - m = _[r] = o; - ++s._eventsCount; - } else { - if ("function" == typeof m) m = _[r] = u ? [ o, m ] : [ m, o ]; else if (u) m.unshift(o); else m.push(o); - if ((g = _getMaxListeners(s)) > 0 && m.length > g && !m.warned) { - m.warned = true; - var b = new Error("Possible EventEmitter memory leak detected. " + m.length + " " + String(r) + " listeners added. Use emitter.setMaxListeners() to increase limit"); - b.name = "MaxListenersExceededWarning"; - b.emitter = s; - b.type = r; - b.count = m.length; - (function ProcessEmitWarning(s) { - if (console && console.warn) console.warn(s); - })(b); - } - } - return s; - } - EventEmitter2.prototype.addListener = function addListener(s, r) { - return _addListener(this, s, r, false); - }; - EventEmitter2.prototype.on = EventEmitter2.prototype.addListener; - EventEmitter2.prototype.prependListener = function prependListener(s, r) { - return _addListener(this, s, r, true); - }; - function onceWrapper() { - if (!this.fired) { - this.target.removeListener(this.type, this.wrapFn); - this.fired = true; - if (0 === arguments.length) return this.listener.call(this.target); else return this.listener.apply(this.target, arguments); - } - } - function _onceWrap(s, r, o) { - var u = { - fired: false, - wrapFn: void 0, - target: s, - type: r, - listener: o - }, g = onceWrapper.bind(u); - g.listener = o; - u.wrapFn = g; - return g; - } - EventEmitter2.prototype.once = function once3(s, r) { - checkListener(r); - this.on(s, _onceWrap(this, s, r)); - return this; - }; - EventEmitter2.prototype.prependOnceListener = function prependOnceListener(s, r) { - checkListener(r); - this.prependListener(s, _onceWrap(this, s, r)); - return this; - }; - EventEmitter2.prototype.removeListener = function removeListener(s, r) { - var o, u, g, _, m; - checkListener(r); - if (void 0 === (u = this._events)) return this; - if (void 0 === (o = u[s])) return this; - if (o === r || o.listener === r) if (0 == --this._eventsCount) this._events = Object.create(null); else { - delete u[s]; - if (u.removeListener) this.emit("removeListener", s, o.listener || r); - } else if ("function" != typeof o) { - g = -1; - for (_ = o.length - 1; _ >= 0; _--) if (o[_] === r || o[_].listener === r) { - m = o[_].listener; - g = _; - break; - } - if (g < 0) return this; - if (0 === g) o.shift(); else (function spliceOne(s, r) { - for (;r + 1 < s.length; r++) s[r] = s[r + 1]; - s.pop(); - })(o, g); - if (1 === o.length) u[s] = o[0]; - if (void 0 !== u.removeListener) this.emit("removeListener", s, m || r); - } - return this; - }; - EventEmitter2.prototype.off = EventEmitter2.prototype.removeListener; - EventEmitter2.prototype.removeAllListeners = function removeAllListeners(s) { - var r, o, u; - if (void 0 === (o = this._events)) return this; - if (void 0 === o.removeListener) { - if (0 === arguments.length) { - this._events = Object.create(null); - this._eventsCount = 0; - } else if (void 0 !== o[s]) if (0 == --this._eventsCount) this._events = Object.create(null); else delete o[s]; - return this; - } - if (0 === arguments.length) { - var g, _ = Object.keys(o); - for (u = 0; u < _.length; ++u) if ("removeListener" !== (g = _[u])) this.removeAllListeners(g); - this.removeAllListeners("removeListener"); - this._events = Object.create(null); - this._eventsCount = 0; - return this; - } - if ("function" == typeof (r = o[s])) this.removeListener(s, r); else if (void 0 !== r) for (u = r.length - 1; u >= 0; u--) this.removeListener(s, r[u]); - return this; - }; - function _listeners(s, r, o) { - var u = s._events; - if (void 0 === u) return []; - var g = u[r]; - if (void 0 === g) return []; - if ("function" == typeof g) return o ? [ g.listener || g ] : [ g ]; else return o ? function unwrapListeners(s) { - for (var r = new Array(s.length), o = 0; o < r.length; ++o) r[o] = s[o].listener || s[o]; - return r; - }(g) : arrayClone(g, g.length); - } - EventEmitter2.prototype.listeners = function listeners(s) { - return _listeners(this, s, true); - }; - EventEmitter2.prototype.rawListeners = function rawListeners(s) { - return _listeners(this, s, false); - }; - EventEmitter2.listenerCount = function(s, r) { - if ("function" == typeof s.listenerCount) return s.listenerCount(r); else return listenerCount2.call(s, r); - }; - EventEmitter2.prototype.listenerCount = listenerCount2; - function listenerCount2(s) { - var r = this._events; - if (void 0 !== r) { - var o = r[s]; - if ("function" == typeof o) return 1; else if (void 0 !== o) return o.length; - } - return 0; - } - EventEmitter2.prototype.eventNames = function eventNames() { - return this._eventsCount > 0 ? o(this._events) : []; - }; - function arrayClone(s, r) { - for (var o = new Array(r), u = 0; u < r; ++u) o[u] = s[u]; - return o; - } - function eventTargetAgnosticAddListener(s, r, o, u) { - if ("function" == typeof s.on) if (u.once) s.once(r, o); else s.on(r, o); else if ("function" == typeof s.addEventListener) s.addEventListener(r, (function wrapListener(g) { - if (u.once) s.removeEventListener(r, wrapListener); - o(g); - })); else throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type ' + typeof s); - } - } -}), require_spark_md5 = __commonJS({ - "node_modules/spark-md5/spark-md5.js"(s, r) { - (function(o) { - if ("object" == typeof s) r.exports = o(); else if ("function" == typeof define && define.amd) define(o); else { - var u; - try { - u = window; - } catch (s) { - u = self; - } - u.SparkMD5 = o(); - } - })((function(s) { - "use strict"; - var r = [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" ]; - function md5cycle(s, r) { - var o = s[0], u = s[1], g = s[2], _ = s[3]; - u = ((u += ((g = ((g += ((_ = ((_ += ((o = ((o += (u & g | ~u & _) + r[0] - 680876936 | 0) << 7 | o >>> 25) + u | 0) & u | ~o & g) + r[1] - 389564586 | 0) << 12 | _ >>> 20) + o | 0) & o | ~_ & u) + r[2] + 606105819 | 0) << 17 | g >>> 15) + _ | 0) & _ | ~g & o) + r[3] - 1044525330 | 0) << 22 | u >>> 10) + g | 0; - u = ((u += ((g = ((g += ((_ = ((_ += ((o = ((o += (u & g | ~u & _) + r[4] - 176418897 | 0) << 7 | o >>> 25) + u | 0) & u | ~o & g) + r[5] + 1200080426 | 0) << 12 | _ >>> 20) + o | 0) & o | ~_ & u) + r[6] - 1473231341 | 0) << 17 | g >>> 15) + _ | 0) & _ | ~g & o) + r[7] - 45705983 | 0) << 22 | u >>> 10) + g | 0; - u = ((u += ((g = ((g += ((_ = ((_ += ((o = ((o += (u & g | ~u & _) + r[8] + 1770035416 | 0) << 7 | o >>> 25) + u | 0) & u | ~o & g) + r[9] - 1958414417 | 0) << 12 | _ >>> 20) + o | 0) & o | ~_ & u) + r[10] - 42063 | 0) << 17 | g >>> 15) + _ | 0) & _ | ~g & o) + r[11] - 1990404162 | 0) << 22 | u >>> 10) + g | 0; - u = ((u += ((g = ((g += ((_ = ((_ += ((o = ((o += (u & g | ~u & _) + r[12] + 1804603682 | 0) << 7 | o >>> 25) + u | 0) & u | ~o & g) + r[13] - 40341101 | 0) << 12 | _ >>> 20) + o | 0) & o | ~_ & u) + r[14] - 1502002290 | 0) << 17 | g >>> 15) + _ | 0) & _ | ~g & o) + r[15] + 1236535329 | 0) << 22 | u >>> 10) + g | 0; - u = ((u += ((g = ((g += ((_ = ((_ += ((o = ((o += (u & _ | g & ~_) + r[1] - 165796510 | 0) << 5 | o >>> 27) + u | 0) & g | u & ~g) + r[6] - 1069501632 | 0) << 9 | _ >>> 23) + o | 0) & u | o & ~u) + r[11] + 643717713 | 0) << 14 | g >>> 18) + _ | 0) & o | _ & ~o) + r[0] - 373897302 | 0) << 20 | u >>> 12) + g | 0; - u = ((u += ((g = ((g += ((_ = ((_ += ((o = ((o += (u & _ | g & ~_) + r[5] - 701558691 | 0) << 5 | o >>> 27) + u | 0) & g | u & ~g) + r[10] + 38016083 | 0) << 9 | _ >>> 23) + o | 0) & u | o & ~u) + r[15] - 660478335 | 0) << 14 | g >>> 18) + _ | 0) & o | _ & ~o) + r[4] - 405537848 | 0) << 20 | u >>> 12) + g | 0; - u = ((u += ((g = ((g += ((_ = ((_ += ((o = ((o += (u & _ | g & ~_) + r[9] + 568446438 | 0) << 5 | o >>> 27) + u | 0) & g | u & ~g) + r[14] - 1019803690 | 0) << 9 | _ >>> 23) + o | 0) & u | o & ~u) + r[3] - 187363961 | 0) << 14 | g >>> 18) + _ | 0) & o | _ & ~o) + r[8] + 1163531501 | 0) << 20 | u >>> 12) + g | 0; - u = ((u += ((g = ((g += ((_ = ((_ += ((o = ((o += (u & _ | g & ~_) + r[13] - 1444681467 | 0) << 5 | o >>> 27) + u | 0) & g | u & ~g) + r[2] - 51403784 | 0) << 9 | _ >>> 23) + o | 0) & u | o & ~u) + r[7] + 1735328473 | 0) << 14 | g >>> 18) + _ | 0) & o | _ & ~o) + r[12] - 1926607734 | 0) << 20 | u >>> 12) + g | 0; - u = ((u += ((g = ((g += ((_ = ((_ += ((o = ((o += (u ^ g ^ _) + r[5] - 378558 | 0) << 4 | o >>> 28) + u | 0) ^ u ^ g) + r[8] - 2022574463 | 0) << 11 | _ >>> 21) + o | 0) ^ o ^ u) + r[11] + 1839030562 | 0) << 16 | g >>> 16) + _ | 0) ^ _ ^ o) + r[14] - 35309556 | 0) << 23 | u >>> 9) + g | 0; - u = ((u += ((g = ((g += ((_ = ((_ += ((o = ((o += (u ^ g ^ _) + r[1] - 1530992060 | 0) << 4 | o >>> 28) + u | 0) ^ u ^ g) + r[4] + 1272893353 | 0) << 11 | _ >>> 21) + o | 0) ^ o ^ u) + r[7] - 155497632 | 0) << 16 | g >>> 16) + _ | 0) ^ _ ^ o) + r[10] - 1094730640 | 0) << 23 | u >>> 9) + g | 0; - u = ((u += ((g = ((g += ((_ = ((_ += ((o = ((o += (u ^ g ^ _) + r[13] + 681279174 | 0) << 4 | o >>> 28) + u | 0) ^ u ^ g) + r[0] - 358537222 | 0) << 11 | _ >>> 21) + o | 0) ^ o ^ u) + r[3] - 722521979 | 0) << 16 | g >>> 16) + _ | 0) ^ _ ^ o) + r[6] + 76029189 | 0) << 23 | u >>> 9) + g | 0; - u = ((u += ((g = ((g += ((_ = ((_ += ((o = ((o += (u ^ g ^ _) + r[9] - 640364487 | 0) << 4 | o >>> 28) + u | 0) ^ u ^ g) + r[12] - 421815835 | 0) << 11 | _ >>> 21) + o | 0) ^ o ^ u) + r[15] + 530742520 | 0) << 16 | g >>> 16) + _ | 0) ^ _ ^ o) + r[2] - 995338651 | 0) << 23 | u >>> 9) + g | 0; - u = ((u += ((_ = ((_ += (u ^ ((o = ((o += (g ^ (u | ~_)) + r[0] - 198630844 | 0) << 6 | o >>> 26) + u | 0) | ~g)) + r[7] + 1126891415 | 0) << 10 | _ >>> 22) + o | 0) ^ ((g = ((g += (o ^ (_ | ~u)) + r[14] - 1416354905 | 0) << 15 | g >>> 17) + _ | 0) | ~o)) + r[5] - 57434055 | 0) << 21 | u >>> 11) + g | 0; - u = ((u += ((_ = ((_ += (u ^ ((o = ((o += (g ^ (u | ~_)) + r[12] + 1700485571 | 0) << 6 | o >>> 26) + u | 0) | ~g)) + r[3] - 1894986606 | 0) << 10 | _ >>> 22) + o | 0) ^ ((g = ((g += (o ^ (_ | ~u)) + r[10] - 1051523 | 0) << 15 | g >>> 17) + _ | 0) | ~o)) + r[1] - 2054922799 | 0) << 21 | u >>> 11) + g | 0; - u = ((u += ((_ = ((_ += (u ^ ((o = ((o += (g ^ (u | ~_)) + r[8] + 1873313359 | 0) << 6 | o >>> 26) + u | 0) | ~g)) + r[15] - 30611744 | 0) << 10 | _ >>> 22) + o | 0) ^ ((g = ((g += (o ^ (_ | ~u)) + r[6] - 1560198380 | 0) << 15 | g >>> 17) + _ | 0) | ~o)) + r[13] + 1309151649 | 0) << 21 | u >>> 11) + g | 0; - u = ((u += ((_ = ((_ += (u ^ ((o = ((o += (g ^ (u | ~_)) + r[4] - 145523070 | 0) << 6 | o >>> 26) + u | 0) | ~g)) + r[11] - 1120210379 | 0) << 10 | _ >>> 22) + o | 0) ^ ((g = ((g += (o ^ (_ | ~u)) + r[2] + 718787259 | 0) << 15 | g >>> 17) + _ | 0) | ~o)) + r[9] - 343485551 | 0) << 21 | u >>> 11) + g | 0; - s[0] = o + s[0] | 0; - s[1] = u + s[1] | 0; - s[2] = g + s[2] | 0; - s[3] = _ + s[3] | 0; - } - function md5blk(s) { - var r, o = []; - for (r = 0; r < 64; r += 4) o[r >> 2] = s.charCodeAt(r) + (s.charCodeAt(r + 1) << 8) + (s.charCodeAt(r + 2) << 16) + (s.charCodeAt(r + 3) << 24); - return o; - } - function md5blk_array(s) { - var r, o = []; - for (r = 0; r < 64; r += 4) o[r >> 2] = s[r] + (s[r + 1] << 8) + (s[r + 2] << 16) + (s[r + 3] << 24); - return o; - } - function md51(s) { - var r, o, u, g, _, m, b = s.length, E = [ 1732584193, -271733879, -1732584194, 271733878 ]; - for (r = 64; r <= b; r += 64) md5cycle(E, md5blk(s.substring(r - 64, r))); - o = (s = s.substring(r - 64)).length; - u = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]; - for (r = 0; r < o; r += 1) u[r >> 2] |= s.charCodeAt(r) << (r % 4 << 3); - u[r >> 2] |= 128 << (r % 4 << 3); - if (r > 55) { - md5cycle(E, u); - for (r = 0; r < 16; r += 1) u[r] = 0; - } - g = (g = 8 * b).toString(16).match(/(.*?)(.{0,8})$/); - _ = parseInt(g[2], 16); - m = parseInt(g[1], 16) || 0; - u[14] = _; - u[15] = m; - md5cycle(E, u); - return E; - } - function rhex(s) { - var o, u = ""; - for (o = 0; o < 4; o += 1) u += r[s >> 8 * o + 4 & 15] + r[s >> 8 * o & 15]; - return u; - } - function hex(s) { - var r; - for (r = 0; r < s.length; r += 1) s[r] = rhex(s[r]); - return s.join(""); - } - if ("5d41402abc4b2a76b9719d911017c592" !== hex(md51("hello"))) ; - if ("undefined" != typeof ArrayBuffer && !ArrayBuffer.prototype.slice) (function() { - function clamp(s, r) { - if ((s = 0 | s || 0) < 0) return Math.max(s + r, 0); else return Math.min(s, r); - } - ArrayBuffer.prototype.slice = function(r, o) { - var u, g, _, m, b = this.byteLength, E = clamp(r, b), w = b; - if (o !== s) w = clamp(o, b); - if (E > w) return new ArrayBuffer(0); - u = w - E; - g = new ArrayBuffer(u); - _ = new Uint8Array(g); - m = new Uint8Array(this, E, u); - _.set(m); - return g; - }; - })(); - function toUtf8(s) { - if (/[\u0080-\uFFFF]/.test(s)) s = unescape(encodeURIComponent(s)); - return s; - } - function hexToBinaryString(s) { - var r, o = [], u = s.length; - for (r = 0; r < u - 1; r += 2) o.push(parseInt(s.substr(r, 2), 16)); - return String.fromCharCode.apply(String, o); - } - function SparkMD5() { - this.reset(); - } - SparkMD5.prototype.append = function(s) { - this.appendBinary(toUtf8(s)); - return this; - }; - SparkMD5.prototype.appendBinary = function(s) { - this._buff += s; - this._length += s.length; - var r, o = this._buff.length; - for (r = 64; r <= o; r += 64) md5cycle(this._hash, md5blk(this._buff.substring(r - 64, r))); - this._buff = this._buff.substring(r - 64); - return this; - }; - SparkMD5.prototype.end = function(s) { - var r, o, u = this._buff, g = u.length, _ = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]; - for (r = 0; r < g; r += 1) _[r >> 2] |= u.charCodeAt(r) << (r % 4 << 3); - this._finish(_, g); - o = hex(this._hash); - if (s) o = hexToBinaryString(o); - this.reset(); - return o; - }; - SparkMD5.prototype.reset = function() { - this._buff = ""; - this._length = 0; - this._hash = [ 1732584193, -271733879, -1732584194, 271733878 ]; - return this; - }; - SparkMD5.prototype.getState = function() { - return { - buff: this._buff, - length: this._length, - hash: this._hash.slice() - }; - }; - SparkMD5.prototype.setState = function(s) { - this._buff = s.buff; - this._length = s.length; - this._hash = s.hash; - return this; - }; - SparkMD5.prototype.destroy = function() { - delete this._hash; - delete this._buff; - delete this._length; - }; - SparkMD5.prototype._finish = function(s, r) { - var o, u, g, _ = r; - s[_ >> 2] |= 128 << (_ % 4 << 3); - if (_ > 55) { - md5cycle(this._hash, s); - for (_ = 0; _ < 16; _ += 1) s[_] = 0; - } - o = (o = 8 * this._length).toString(16).match(/(.*?)(.{0,8})$/); - u = parseInt(o[2], 16); - g = parseInt(o[1], 16) || 0; - s[14] = u; - s[15] = g; - md5cycle(this._hash, s); - }; - SparkMD5.hash = function(s, r) { - return SparkMD5.hashBinary(toUtf8(s), r); - }; - SparkMD5.hashBinary = function(s, r) { - var o = hex(md51(s)); - return r ? hexToBinaryString(o) : o; - }; - SparkMD5.ArrayBuffer = function() { - this.reset(); - }; - SparkMD5.ArrayBuffer.prototype.append = function(s) { - var r, o = function concatenateArrayBuffers(s, r, o) { - var u = new Uint8Array(s.byteLength + r.byteLength); - u.set(new Uint8Array(s)); - u.set(new Uint8Array(r), s.byteLength); - return o ? u : u.buffer; - }(this._buff.buffer, s, true), u = o.length; - this._length += s.byteLength; - for (r = 64; r <= u; r += 64) md5cycle(this._hash, md5blk_array(o.subarray(r - 64, r))); - this._buff = r - 64 < u ? new Uint8Array(o.buffer.slice(r - 64)) : new Uint8Array(0); - return this; - }; - SparkMD5.ArrayBuffer.prototype.end = function(s) { - var r, o, u = this._buff, g = u.length, _ = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]; - for (r = 0; r < g; r += 1) _[r >> 2] |= u[r] << (r % 4 << 3); - this._finish(_, g); - o = hex(this._hash); - if (s) o = hexToBinaryString(o); - this.reset(); - return o; - }; - SparkMD5.ArrayBuffer.prototype.reset = function() { - this._buff = new Uint8Array(0); - this._length = 0; - this._hash = [ 1732584193, -271733879, -1732584194, 271733878 ]; - return this; - }; - SparkMD5.ArrayBuffer.prototype.getState = function() { - var s = SparkMD5.prototype.getState.call(this); - s.buff = function arrayBuffer2Utf8Str(s) { - return String.fromCharCode.apply(null, new Uint8Array(s)); - }(s.buff); - return s; - }; - SparkMD5.ArrayBuffer.prototype.setState = function(s) { - s.buff = function utf8Str2ArrayBuffer(s, r) { - var o, u = s.length, g = new ArrayBuffer(u), _ = new Uint8Array(g); - for (o = 0; o < u; o += 1) _[o] = s.charCodeAt(o); - return r ? _ : g; - }(s.buff, true); - return SparkMD5.prototype.setState.call(this, s); - }; - SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy; - SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish; - SparkMD5.ArrayBuffer.hash = function(s, r) { - var o = function md51_array(s) { - var r, o, u, g, _, m, b = s.length, E = [ 1732584193, -271733879, -1732584194, 271733878 ]; - for (r = 64; r <= b; r += 64) md5cycle(E, md5blk_array(s.subarray(r - 64, r))); - o = (s = r - 64 < b ? s.subarray(r - 64) : new Uint8Array(0)).length; - u = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]; - for (r = 0; r < o; r += 1) u[r >> 2] |= s[r] << (r % 4 << 3); - u[r >> 2] |= 128 << (r % 4 << 3); - if (r > 55) { - md5cycle(E, u); - for (r = 0; r < 16; r += 1) u[r] = 0; - } - g = (g = 8 * b).toString(16).match(/(.*?)(.{0,8})$/); - _ = parseInt(g[2], 16); - m = parseInt(g[1], 16) || 0; - u[14] = _; - u[15] = m; - md5cycle(E, u); - return E; - }(new Uint8Array(s)), u = hex(o); - return r ? hexToBinaryString(u) : u; - }; - return SparkMD5; - })); - } -}), require_vuvuzela = __commonJS({ - "node_modules/vuvuzela/index.js"(s) { - "use strict"; - s.stringify = function stringify3(s) { - var r = []; - r.push({ - obj: s - }); - for (var o, u, g, _, m, b, E, w, S, L, O = ""; o = r.pop(); ) { - u = o.obj; - O += o.prefix || ""; - if (g = o.val || "") O += g; else if ("object" != typeof u) O += "undefined" == typeof u ? null : JSON.stringify(u); else if (null === u) O += "null"; else if (Array.isArray(u)) { - r.push({ - val: "]" - }); - for (_ = u.length - 1; _ >= 0; _--) { - m = 0 === _ ? "" : ","; - r.push({ - obj: u[_], - prefix: m - }); - } - r.push({ - val: "[" - }); - } else { - b = []; - for (E in u) if (u.hasOwnProperty(E)) b.push(E); - r.push({ - val: "}" - }); - for (_ = b.length - 1; _ >= 0; _--) { - S = u[w = b[_]]; - L = _ > 0 ? "," : ""; - L += JSON.stringify(w) + ":"; - r.push({ - obj: S, - prefix: L - }); - } - r.push({ - val: "{" - }); - } - } - return O; - }; - function pop2(s, r, o) { - var u = o[o.length - 1]; - if (s === u.element) { - o.pop(); - u = o[o.length - 1]; - } - var g = u.element, _ = u.index; - if (Array.isArray(g)) g.push(s); else if (_ === r.length - 2) g[r.pop()] = s; else r.push(s); - } - s.parse = function(s) { - for (var r, o, u, g, _, m, b, E, w, S = [], L = [], O = 0; ;) { - if ("}" === (r = s[O++]) || "]" === r || "undefined" == typeof r) if (1 === S.length) return S.pop(); else { - pop2(S.pop(), S, L); - continue; - } - switch (r) { - case " ": - case "\t": - case "\n": - case ":": - case ",": - break; - - case "n": - O += 3; - pop2(null, S, L); - break; - - case "t": - O += 3; - pop2(true, S, L); - break; - - case "f": - O += 4; - pop2(false, S, L); - break; - - case "0": - case "1": - case "2": - case "3": - case "4": - case "5": - case "6": - case "7": - case "8": - case "9": - case "-": - o = ""; - O--; - for (;;) { - u = s[O++]; - if (/[\d\.\-e\+]/.test(u)) o += u; else { - O--; - break; - } - } - pop2(parseFloat(o), S, L); - break; - - case '"': - g = ""; - _ = void 0; - m = 0; - for (;'"' !== (b = s[O++]) || "\\" === _ && m % 2 == 1; ) { - g += b; - if ("\\" === (_ = b)) m++; else m = 0; - } - pop2(JSON.parse('"' + g + '"'), S, L); - break; - - case "[": - E = { - element: [], - index: S.length - }; - S.push(E.element); - L.push(E); - break; - - case "{": - w = { - element: {}, - index: S.length - }; - S.push(w.element); - L.push(w); - break; - - default: - throw new Error("unexpectedly reached end of input: " + r); - } - } - }; - } -}), require_pouchdb_wrappers = __commonJS({ - "node_modules/pouchdb-wrappers/index.js"(s, r) { - "use strict"; - function replacementMethod(s, r) { - return function(...o) { - function doMethod() { - let u = null; - const g = "query" === r ? 1 : 0; - if (o.length > g && "function" == typeof o[o.length - 1]) u = o.pop(); - let _ = s._originals[r].bind(s); - for (const o of s._handlers[r]) _ = o.bind(s, _); - const m = _(...o); - if (m.then && u) (function nodify(s, r) { - s.then(((...s) => { - r(null, ...s); - })).catch((s => { - r(s); - })); - })(m, u); - return m; - } - if ("changes" !== r && s.taskqueue && !s.taskqueue.isReady) return new Promise(((r, o) => { - s.taskqueue.addTask((s => { - if (s) o(s); else r(); - })); - })).then(doMethod); else return doMethod(); - }; - } - var o = { - install: function installWrappers(s, r = {}) { - if (!s._originals || !s._handlers) { - s._originals = {}; - s._handlers = {}; - } - for (const [o, u] of Object.entries(r)) { - if (!(o in s)) throw new Error(`Method '${o}' does not exist on given base, so it cannot be wrapped.`); - if (!(o in s._originals)) s._originals[o] = s[o]; - if (o in s._handlers) s._handlers[o].unshift(u); else { - s._handlers[o] = [ u ]; - s[o] = replacementMethod(s, o); - } - } - }, - uninstall: function uninstallWrappers(s, r) { - if (!s._originals || !s._handlers) throw new Error("No wrapper methods installed, so no methods can be uninstalled."); - for (const [o, u] of Object.entries(r)) { - const r = `Wrapper method for '${o}' not installed: ${u.toString()}`; - if (!(o in s._handlers)) throw new Error(r); - const g = s._handlers[o].indexOf(u); - if (-1 === g) throw new Error(r); else s._handlers[o].splice(g, 1); - } - } - }; - try { - r.exports = o; - } catch (s) {} - try { - window.PouchDBWrappers = o; - } catch (s) {} - } -}), require_transform_pouch = __commonJS({ - "node_modules/transform-pouch/index.js"(s, r) { - "use strict"; - var o = require_pouchdb_wrappers(); - function isntInternalKey(s) { - return "_" !== s[0]; - } - function isUntransformable(s) { - if ("string" == typeof s._id && /^_local/.test(s._id)) return true; - if (s._deleted) return 0 === Object.keys(s).filter(isntInternalKey).length; else return false; - } - r.exports = { - transform: transform2, - filter: transform2 - }; - function transform2(s) { - const incoming = function(r) { - if (!isUntransformable(r) && s.incoming) return s.incoming(r); else return r; - }, outgoing = function(r) { - if (!isUntransformable(r) && s.outgoing) return s.outgoing(r); else return r; - }, r = { - async get(s, ...r) { - const o = await s(...r); - if (Array.isArray(o)) { - await Promise.all(o.map((async s => { - if (s.ok) s.ok = await outgoing(s.ok); - }))); - return o; - } else return outgoing(o); - }, - async bulkDocs(s, r, ...o) { - if (r.docs) r.docs = await Promise.all(r.docs.map(incoming)); else r = await Promise.all(r.map(incoming)); - return s(r, ...o); - }, - async allDocs(s, ...r) { - const o = await s(...r); - await Promise.all(o.rows.map((async s => { - if (s.doc) s.doc = await outgoing(s.doc); - }))); - return o; - }, - async bulkGet(s, ...r) { - const mapDoc = async s => { - if (s.ok) return { - ok: await outgoing(s.ok) - }; else return s; - }; - let {results: o, ...u} = await s(...r); - o = await Promise.all(o.map((async s => { - const {id: r, docs: o} = s; - if (r && o && Array.isArray(o)) return { - id: r, - docs: await Promise.all(o.map(mapDoc)) - }; else return s; - }))); - return { - results: o, - ...u - }; - }, - changes(s, ...r) { - async function modifyChange(s) { - if (s.doc) { - s.doc = await outgoing(s.doc); - return s; - } - return s; - } - async function modifyChanges(s) { - if (s.results) { - s.results = await Promise.all(s.results.map(modifyChange)); - return s; - } - return s; - } - const o = s(...r), {on: u, then: g} = o; - return Object.assign(o, { - on(s, r) { - const g = r; - if ("change" === s) r = async s => { - g(await modifyChange(s)); - }; else if ("complete" === s) r = async s => { - g(await modifyChanges(s)); - }; - return u.call(o, s, r); - }, - then: (s, r) => g.call(o, modifyChanges).then(s, r) - }); - } - }; - if ("http" === this.type()) { - r.put = async function(s, r, ...o) { - return s(r = await incoming(r), ...o); - }; - r.query = async function(s, ...r) { - const o = await s(...r); - await Promise.all(o.rows.map((async s => { - if (s.doc) s.doc = await outgoing(s.doc); - }))); - return o; - }; - } - o.install(this, r); - } - if ("undefined" != typeof window && window.PouchDB) window.PouchDB.plugin(s); - } -}), main_exports = {}; - -__export(main_exports, { - default: () => ObsidianLiveSyncPlugin -}); - -module.exports = __toCommonJS(main_exports); - -var symbolFilePath = Symbol(), symbolFilePathWithPrefix = Symbol(), symbolId = Symbol(), MAX_DOC_SIZE_BIN = 102400, VER = 10, LEAF_WAIT_TIMEOUT = 9e4, REPLICATION_BUSY_TIMEOUT = 3e6, LOG_LEVEL_DEBUG = -1, LOG_LEVEL_VERBOSE = 1, LOG_LEVEL_INFO = 10, LOG_LEVEL_NOTICE = 100, LOG_LEVEL_URGENT = 1e3, CANCELLED = Symbol("cancelled"), AUTO_MERGED = Symbol("auto_merged"), NOT_CONFLICTED = Symbol("not_conflicted"), MISSING_OR_ERROR = Symbol("missing_or_error"), LEAVE_TO_SUBSEQUENT = Symbol("leave_to_subsequent_proc"), TIME_ARGUMENT_INFINITY = Symbol("infinity"), RESULT_TIMED_OUT = Symbol("timed out"), RESULT_NOT_FOUND = Symbol("NotFound"), VERSIONINFO_DOCID = "obsydian_livesync_version", MILSTONE_DOCID = "_local/obsydian_livesync_milestone", NODEINFO_DOCID = "_local/obsydian_livesync_nodeinfo", MODE_SELECTIVE = 0, MODE_AUTOMATIC = 1, MODE_PAUSED = 2, DEFAULT_SETTINGS = { - couchDB_URI: "", - couchDB_USER: "", - couchDB_PASSWORD: "", - couchDB_DBNAME: "", - liveSync: false, - syncOnSave: false, - syncOnStart: false, - savingDelay: 200, - lessInformationInLog: false, - gcDelay: 300, - versionUpFlash: "", - minimumChunkSize: 20, - longLineThreshold: 250, - showVerboseLog: false, - suspendFileWatching: false, - trashInsteadDelete: true, - periodicReplication: false, - periodicReplicationInterval: 60, - syncOnFileOpen: false, - encrypt: false, - passphrase: "", - usePathObfuscation: false, - doNotDeleteFolder: false, - resolveConflictsByNewerFile: false, - batchSave: false, - deviceAndVaultName: "", - usePluginSettings: false, - showOwnPlugins: false, - showStatusOnEditor: true, - showStatusOnStatusbar: true, - showOnlyIconsOnEditor: false, - usePluginSync: false, - autoSweepPlugins: false, - autoSweepPluginsPeriodic: false, - notifyPluginOrSettingUpdated: false, - checkIntegrityOnSave: false, - batch_size: 25, - batches_limit: 25, - useHistory: false, - disableRequestURI: false, - skipOlderFilesOnSync: true, - checkConflictOnlyOnOpen: false, - showMergeDialogOnlyOnActive: false, - syncInternalFiles: false, - syncInternalFilesBeforeReplication: false, - syncInternalFilesIgnorePatterns: "\\/node_modules\\/, \\/\\.git\\/, \\/obsidian-livesync\\/", - syncInternalFilesInterval: 60, - additionalSuffixOfDatabaseName: "", - ignoreVersionCheck: false, - lastReadUpdates: 0, - deleteMetadataOfDeletedFiles: false, - syncIgnoreRegEx: "", - syncOnlyRegEx: "", - customChunkSize: 0, - readChunksOnline: true, - watchInternalFileChanges: true, - automaticallyDeleteMetadataOfDeletedFiles: 0, - disableMarkdownAutoMerge: false, - writeDocumentsIfConflicted: false, - useDynamicIterationCount: false, - syncAfterMerge: false, - configPassphraseStore: "", - encryptedPassphrase: "", - encryptedCouchDBConnection: "", - permitEmptyPassphrase: false, - useIndexedDBAdapter: true, - useTimeouts: false, - writeLogToTheFile: false, - doNotPaceReplication: false, - hashCacheMaxCount: 300, - hashCacheMaxAmount: 50, - concurrencyOfReadChunksOnline: 40, - minimumIntervalOfReadChunksOnline: 50, - hashAlg: "xxhash64", - suspendParseReplicationResult: false, - doNotSuspendOnFetching: false, - useIgnoreFiles: false, - ignoreFiles: ".gitignore", - syncOnEditorSave: false, - pluginSyncExtendedSetting: {}, - syncMaxSizeInMB: 50, - settingSyncFile: "", - writeCredentialsForSettingSync: false, - notifyAllSettingSyncFile: false, - isConfigured: void 0, - settingVersion: 0 -}, PREFERRED_SETTING_CLOUDANT = { - syncMaxSizeInMB: 50, - customChunkSize: 0, - concurrencyOfReadChunksOnline: 100, - minimumIntervalOfReadChunksOnline: 333 -}, PREFERRED_SETTING_SELF_HOSTED = { - ...PREFERRED_SETTING_CLOUDANT, - customChunkSize: 50, - concurrencyOfReadChunksOnline: 30, - minimumIntervalOfReadChunksOnline: 25 -}, PREFIXMD_LOGFILE = "LIVESYNC_LOG_", FLAGMD_REDFLAG = "redflag.md", FLAGMD_REDFLAG2 = "redflag2.md", FLAGMD_REDFLAG2_HR = "flag_rebuild.md", FLAGMD_REDFLAG3 = "redflag3.md", FLAGMD_REDFLAG3_HR = "flag_fetch.md", SYNCINFO_ID = "syncinfo", SALT_OF_PASSPHRASE = "rHGMPtr6oWw7VSa3W3wpa8fT8U", PREFIX_OBFUSCATED = "f:", PREFIX_CHUNK = "h:", PREFIX_ENCRYPTED_CHUNK = "h:+", import_obsidian = require("obsidian"), import_obsidian2 = require("obsidian"), import_diff_match_patch = __toESM(require_diff_match_patch(), 1), normalizePath = import_obsidian2.normalizePath, PERIODIC_PLUGIN_SWEEP = 60, CHeader = "h:", PSCHeader = "ps:", ICHeader = "i:", ICHeaderEnd = "i;", ICHeaderLength = ICHeader.length, ICXHeader = "ix:", FileWatchEventQueueMax = 10, configURIBase = "obsidian://setuplivesync?settings=", LEVEL_INFO = LOG_LEVEL_INFO, defaultLoggerEnv = { - minLogLevel: LOG_LEVEL_INFO -}, defaultLogger = function defaultLogger2(s, r = LEVEL_INFO, o) { - if (r < defaultLoggerEnv.minLogLevel) return; - const u = (new Date).toLocaleString(), g = "string" == typeof s ? s : s instanceof Error ? `${s.name}:${s.message}` : JSON.stringify(s, null, 2); - if (s instanceof Error) console.dir(s.stack); - const _ = `${u}\t${r}\t${g}`; - console.log(_); -}, _logger = defaultLogger; - -function setGlobalLogFunction(s) { - _logger = s; -} - -function Logger(s, r, o) { - _logger(s, r, o); -} - -var _root, _hasMagic, _uflag, _parts, _parent, _parentIndex, _negs, _filledNegs, _options, _toString, _emptyExt, _fillNegs, fillNegs_fn, _parseAST, parseAST_fn, _partsToRegExp, partsToRegExp_fn, _parseGlob, parseGlob_fn, LRUCache = class { - constructor(s, r, o = false) { - this.cache = new Map([]); - this.revCache = new Map([]); - this.maxCache = 200; - this.maxCachedLength = 5e7; - this.cachedLength = 0; - this.enableReversed = true; - this.maxCache = s || 200; - this.maxCachedLength = 1e6 * (r || 1); - this.enableReversed = !o; - Logger(`Cache initialized ${this.maxCache} / ${this.maxCachedLength}`, LOG_LEVEL_VERBOSE); - } - clear() { - this.cache.clear(); - this.revCache.clear(); - } - has(s) { - return this.cache.has(s); - } - get(s) { - const r = this.cache.get(s); - if (r) { - this.cache.delete(s); - this.cache.set(s, r); - if (this.enableReversed) { - this.revCache.delete(r); - this.revCache.set(r, s); - } - } - return r; - } - revGet(s) { - const r = this.revCache.get(s); - if (s) { - this.cache.delete(r); - this.revCache.delete(s); - this.cache.set(r, s); - this.revCache.set(s, r); - } - return r; - } - set(s, r) { - this.cache.set(s, r); - if (this.enableReversed) this.revCache.set(r, s); - this.cachedLength += `${r}`.length; - if (this.cache.size > this.maxCache || this.cachedLength > this.maxCachedLength) for (const [s, r] of this.cache) { - this.cache.delete(s); - if (this.enableReversed) this.revCache.delete(r); - this.cachedLength -= `${r}`.length; - if (this.cache.size <= this.maxCache && this.cachedLength <= this.maxCachedLength) break; - } - } -}, import_brace_expansion = __toESM(require_brace_expansion(), 1), MAX_PATTERN_LENGTH = 65536, assertValidPattern = s => { - if ("string" != typeof s) throw new TypeError("invalid pattern"); - if (s.length > MAX_PATTERN_LENGTH) throw new TypeError("pattern is too long"); -}, posixClasses = { - "[:alnum:]": [ "\\p{L}\\p{Nl}\\p{Nd}", true ], - "[:alpha:]": [ "\\p{L}\\p{Nl}", true ], - "[:ascii:]": [ "\\x00-\\x7f", false ], - "[:blank:]": [ "\\p{Zs}\\t", true ], - "[:cntrl:]": [ "\\p{Cc}", true ], - "[:digit:]": [ "\\p{Nd}", true ], - "[:graph:]": [ "\\p{Z}\\p{C}", true, true ], - "[:lower:]": [ "\\p{Ll}", true ], - "[:print:]": [ "\\p{C}", true ], - "[:punct:]": [ "\\p{P}", true ], - "[:space:]": [ "\\p{Z}\\t\\r\\n\\v\\f", true ], - "[:upper:]": [ "\\p{Lu}", true ], - "[:word:]": [ "\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}", true ], - "[:xdigit:]": [ "A-Fa-f0-9", false ] -}, braceEscape = s => s.replace(/[[\]\\-]/g, "\\$&"), regexpEscape = s => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"), rangesToString = s => s.join(""), parseClass = (s, r) => { - const o = r; - if ("[" !== s.charAt(o)) throw new Error("not in a brace expression"); - const u = [], g = []; - let _ = o + 1, m = false, b = false, E = false, w = false, S = o, L = ""; - e: for (;_ < s.length; ) { - const r = s.charAt(_); - if ("!" !== r && "^" !== r || _ !== o + 1) { - if ("]" === r && m && !E) { - S = _ + 1; - break; - } - m = true; - if ("\\" === r) if (!E) { - E = true; - _++; - continue; - } - if ("[" === r && !E) for (const [r, [m, E, w]] of Object.entries(posixClasses)) if (s.startsWith(r, _)) { - if (L) return [ "$.", false, s.length - o, true ]; - _ += r.length; - if (w) g.push(m); else u.push(m); - b = b || E; - continue e; - } - E = false; - if (!L) if (!s.startsWith("-]", _ + 1)) if (!s.startsWith("-", _ + 1)) { - u.push(braceEscape(r)); - _++; - } else { - L = r; - _ += 2; - } else { - u.push(braceEscape(r + "-")); - _ += 2; - } else { - if (r > L) u.push(braceEscape(L) + "-" + braceEscape(r)); else if (r === L) u.push(braceEscape(r)); - L = ""; - _++; - } - } else { - w = true; - _++; - } - } - if (S < _) return [ "", false, 0, false ]; - if (!u.length && !g.length) return [ "$.", false, s.length - o, true ]; - if (0 === g.length && 1 === u.length && /^\\?.$/.test(u[0]) && !w) { - const s = 2 === u[0].length ? u[0].slice(-1) : u[0]; - return [ regexpEscape(s), false, S - o, false ]; - } - const O = "[" + (w ? "^" : "") + rangesToString(u) + "]", D = "[" + (w ? "" : "^") + rangesToString(g) + "]"; - return [ u.length && g.length ? "(" + O + "|" + D + ")" : u.length ? O : D, b, S - o, true ]; -}, unescape2 = (s, {windowsPathsNoEscape: r = false} = {}) => r ? s.replace(/\[([^\/\\])\]/g, "$1") : s.replace(/((?!\\).|^)\[([^\/\\])\]/g, "$1$2").replace(/\\([^\/])/g, "$1"), types = new Set([ "!", "?", "+", "*", "@" ]), isExtglobType = s => types.has(s), startNoTraversal = "(?!(?:^|/)\\.\\.?(?:$|/))", startNoDot = "(?!\\.)", addPatternStart = new Set([ "[", "." ]), justDots = new Set([ "..", "." ]), reSpecials = new Set("().*{}+?[]^$\\!"), regExpEscape = s => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"), qmark = "[^/]", star = qmark + "*?", starNoEmpty = qmark + "+?", _AST = class _AST { - constructor(s, r, o = {}) { - __privateAdd(this, _fillNegs); - __privateAdd(this, _partsToRegExp); - __publicField(this, "type"); - __privateAdd(this, _root, void 0); - __privateAdd(this, _hasMagic, void 0); - __privateAdd(this, _uflag, false); - __privateAdd(this, _parts, []); - __privateAdd(this, _parent, void 0); - __privateAdd(this, _parentIndex, void 0); - __privateAdd(this, _negs, void 0); - __privateAdd(this, _filledNegs, false); - __privateAdd(this, _options, void 0); - __privateAdd(this, _toString, void 0); - __privateAdd(this, _emptyExt, false); - this.type = s; - if (s) __privateSet(this, _hasMagic, true); - __privateSet(this, _parent, r); - __privateSet(this, _root, __privateGet(this, _parent) ? __privateGet(__privateGet(this, _parent), _root) : this); - __privateSet(this, _options, __privateGet(this, _root) === this ? o : __privateGet(__privateGet(this, _root), _options)); - __privateSet(this, _negs, __privateGet(this, _root) === this ? [] : __privateGet(__privateGet(this, _root), _negs)); - if ("!" === s && !__privateGet(__privateGet(this, _root), _filledNegs)) __privateGet(this, _negs).push(this); - __privateSet(this, _parentIndex, __privateGet(this, _parent) ? __privateGet(__privateGet(this, _parent), _parts).length : 0); - } - get hasMagic() { - if (void 0 !== __privateGet(this, _hasMagic)) return __privateGet(this, _hasMagic); - for (const s of __privateGet(this, _parts)) if ("string" != typeof s) if (s.type || s.hasMagic) return __privateSet(this, _hasMagic, true); - return __privateGet(this, _hasMagic); - } - toString() { - if (void 0 !== __privateGet(this, _toString)) return __privateGet(this, _toString); - if (!this.type) return __privateSet(this, _toString, __privateGet(this, _parts).map((s => String(s))).join("")); else return __privateSet(this, _toString, this.type + "(" + __privateGet(this, _parts).map((s => String(s))).join("|") + ")"); - } - push(...s) { - for (const r of s) if ("" !== r) { - if ("string" != typeof r && !(r instanceof _AST && __privateGet(r, _parent) === this)) throw new Error("invalid part: " + r); - __privateGet(this, _parts).push(r); - } - } - toJSON() { - var s; - const r = null === this.type ? __privateGet(this, _parts).slice().map((s => "string" == typeof s ? s : s.toJSON())) : [ this.type, ...__privateGet(this, _parts).map((s => s.toJSON())) ]; - if (this.isStart() && !this.type) r.unshift([]); - if (this.isEnd() && (this === __privateGet(this, _root) || __privateGet(__privateGet(this, _root), _filledNegs) && "!" === (null == (s = __privateGet(this, _parent)) ? void 0 : s.type))) r.push({}); - return r; - } - isStart() { - var s; - if (__privateGet(this, _root) === this) return true; - if (!(null == (s = __privateGet(this, _parent)) ? void 0 : s.isStart())) return false; - if (0 === __privateGet(this, _parentIndex)) return true; - const r = __privateGet(this, _parent); - for (let s = 0; s < __privateGet(this, _parentIndex); s++) { - const o = __privateGet(r, _parts)[s]; - if (!(o instanceof _AST && "!" === o.type)) return false; - } - return true; - } - isEnd() { - var s, r, o; - if (__privateGet(this, _root) === this) return true; - if ("!" === (null == (s = __privateGet(this, _parent)) ? void 0 : s.type)) return true; - if (!(null == (r = __privateGet(this, _parent)) ? void 0 : r.isEnd())) return false; - if (!this.type) return null == (o = __privateGet(this, _parent)) ? void 0 : o.isEnd(); - const u = __privateGet(this, _parent) ? __privateGet(__privateGet(this, _parent), _parts).length : 0; - return __privateGet(this, _parentIndex) === u - 1; - } - copyIn(s) { - if ("string" == typeof s) this.push(s); else this.push(s.clone(this)); - } - clone(s) { - const r = new _AST(this.type, s); - for (const s of __privateGet(this, _parts)) r.copyIn(s); - return r; - } - static fromGlob(s, r = {}) { - var o; - const u = new _AST(null, void 0, r); - __privateMethod(o = _AST, _parseAST, parseAST_fn).call(o, s, u, 0, r); - return u; - } - toMMPattern() { - if (this !== __privateGet(this, _root)) return __privateGet(this, _root).toMMPattern(); - const s = this.toString(), [r, o, u, g] = this.toRegExpSource(); - if (!(u || __privateGet(this, _hasMagic) || __privateGet(this, _options).nocase && !__privateGet(this, _options).nocaseMagicOnly && s.toUpperCase() !== s.toLowerCase())) return o; - const _ = (__privateGet(this, _options).nocase ? "i" : "") + (g ? "u" : ""); - return Object.assign(new RegExp(`^${r}$`, _), { - _src: r, - _glob: s - }); - } - toRegExpSource(s) { - var r; - const o = null != s ? s : !!__privateGet(this, _options).dot; - if (__privateGet(this, _root) === this) __privateMethod(this, _fillNegs, fillNegs_fn).call(this); - if (!this.type) { - const u = this.isStart() && this.isEnd(), g = __privateGet(this, _parts).map((r => { - var o; - const [g, _, m, b] = "string" == typeof r ? __privateMethod(o = _AST, _parseGlob, parseGlob_fn).call(o, r, __privateGet(this, _hasMagic), u) : r.toRegExpSource(s); - __privateSet(this, _hasMagic, __privateGet(this, _hasMagic) || m); - __privateSet(this, _uflag, __privateGet(this, _uflag) || b); - return g; - })).join(""); - let _ = ""; - if (this.isStart()) if ("string" == typeof __privateGet(this, _parts)[0]) if (!(1 === __privateGet(this, _parts).length && justDots.has(__privateGet(this, _parts)[0]))) { - const r = addPatternStart, u = o && r.has(g.charAt(0)) || g.startsWith("\\.") && r.has(g.charAt(2)) || g.startsWith("\\.\\.") && r.has(g.charAt(4)), m = !o && !s && r.has(g.charAt(0)); - _ = u ? startNoTraversal : m ? startNoDot : ""; - } - let m = ""; - if (this.isEnd() && __privateGet(__privateGet(this, _root), _filledNegs) && "!" === (null == (r = __privateGet(this, _parent)) ? void 0 : r.type)) m = "(?:$|\\/)"; - return [ _ + g + m, unescape2(g), __privateSet(this, _hasMagic, !!__privateGet(this, _hasMagic)), __privateGet(this, _uflag) ]; - } - const u = "*" === this.type || "+" === this.type, g = "!" === this.type ? "(?:(?!(?:" : "(?:"; - let _ = __privateMethod(this, _partsToRegExp, partsToRegExp_fn).call(this, o); - if (this.isStart() && this.isEnd() && !_ && "!" !== this.type) { - const s = this.toString(); - __privateSet(this, _parts, [ s ]); - this.type = null; - __privateSet(this, _hasMagic, void 0); - return [ s, unescape2(this.toString()), false, false ]; - } - let m = !u || s || o || !startNoDot ? "" : __privateMethod(this, _partsToRegExp, partsToRegExp_fn).call(this, true); - if (m === _) m = ""; - if (m) _ = `(?:${_})(?:${m})*?`; - let b = ""; - if ("!" === this.type && __privateGet(this, _emptyExt)) b = (this.isStart() && !o ? startNoDot : "") + starNoEmpty; else b = g + _ + ("!" === this.type ? "))" + (this.isStart() && !o && !s ? startNoDot : "") + star + ")" : "@" === this.type ? ")" : "?" === this.type ? ")?" : "+" === this.type && m ? ")" : "*" === this.type && m ? ")?" : `)${this.type}`); - return [ b, unescape2(_), __privateSet(this, _hasMagic, !!__privateGet(this, _hasMagic)), __privateGet(this, _uflag) ]; - } -}; - -_root = new WeakMap; - -_hasMagic = new WeakMap; - -_uflag = new WeakMap; - -_parts = new WeakMap; - -_parent = new WeakMap; - -_parentIndex = new WeakMap; - -_negs = new WeakMap; - -_filledNegs = new WeakMap; - -_options = new WeakMap; - -_toString = new WeakMap; - -_emptyExt = new WeakMap; - -_fillNegs = new WeakSet; - -fillNegs_fn = function() { - if (this !== __privateGet(this, _root)) throw new Error("should only call on root"); - if (__privateGet(this, _filledNegs)) return this; - this.toString(); - __privateSet(this, _filledNegs, true); - let s; - for (;s = __privateGet(this, _negs).pop(); ) { - if ("!" !== s.type) continue; - let r = s, o = __privateGet(r, _parent); - for (;o; ) { - for (let u = __privateGet(r, _parentIndex) + 1; !o.type && u < __privateGet(o, _parts).length; u++) for (const r of __privateGet(s, _parts)) { - if ("string" == typeof r) throw new Error("string part in extglob AST??"); - r.copyIn(__privateGet(o, _parts)[u]); - } - r = o; - o = __privateGet(r, _parent); - } - } - return this; -}; - -_parseAST = new WeakSet; - -parseAST_fn = function(s, r, o, u) { - var g, _; - let m = false, b = false, E = -1, w = false; - if (null === r.type) { - let _ = o, S = ""; - for (;_ < s.length; ) { - const o = s.charAt(_++); - if (!m && "\\" !== o) if (!b) { - if ("[" === o) { - b = true; - E = _; - w = false; - S += o; - continue; - } - if (u.noext || !isExtglobType(o) || "(" !== s.charAt(_)) S += o; else { - r.push(S); - S = ""; - const m = new _AST(o, r); - _ = __privateMethod(g = _AST, _parseAST, parseAST_fn).call(g, s, m, _, u); - r.push(m); - } - } else { - if (_ === E + 1) { - if ("^" === o || "!" === o) w = true; - } else if ("]" === o && !(_ === E + 2 && w)) b = false; - S += o; - } else { - m = !m; - S += o; - } - } - r.push(S); - return _; - } - let S = o + 1, L = new _AST(null, r); - const O = []; - let D = ""; - for (;S < s.length; ) { - const o = s.charAt(S++); - if (!m && "\\" !== o) if (!b) { - if ("[" === o) { - b = true; - E = S; - w = false; - D += o; - continue; - } - if (!isExtglobType(o) || "(" !== s.charAt(S)) if ("|" !== o) { - if (")" === o) { - if ("" === D && 0 === __privateGet(r, _parts).length) __privateSet(r, _emptyExt, true); - L.push(D); - D = ""; - r.push(...O, L); - return S; - } - D += o; - } else { - L.push(D); - D = ""; - O.push(L); - L = new _AST(null, r); - } else { - L.push(D); - D = ""; - const r = new _AST(o, L); - L.push(r); - S = __privateMethod(_ = _AST, _parseAST, parseAST_fn).call(_, s, r, S, u); - } - } else { - if (S === E + 1) { - if ("^" === o || "!" === o) w = true; - } else if ("]" === o && !(S === E + 2 && w)) b = false; - D += o; - } else { - m = !m; - D += o; - } - } - r.type = null; - __privateSet(r, _hasMagic, void 0); - __privateSet(r, _parts, [ s.substring(o - 1) ]); - return S; -}; - -_partsToRegExp = new WeakSet; - -partsToRegExp_fn = function(s) { - return __privateGet(this, _parts).map((r => { - if ("string" == typeof r) throw new Error("string type in extglob ast??"); - const [o, u, g, _] = r.toRegExpSource(s); - __privateSet(this, _uflag, __privateGet(this, _uflag) || _); - return o; - })).filter((s => !(this.isStart() && this.isEnd() && !s))).join("|"); -}; - -_parseGlob = new WeakSet; - -parseGlob_fn = function(s, r, o = false) { - let u = false, g = "", _ = false; - for (let m = 0; m < s.length; m++) { - const b = s.charAt(m); - if (!u) if ("\\" !== b) { - if ("[" === b) { - const [o, u, b, E] = parseClass(s, m); - if (b) { - g += o; - _ = _ || u; - m += b - 1; - r = r || E; - continue; - } - } - if ("*" !== b) if ("?" !== b) g += regExpEscape(b); else { - g += qmark; - r = true; - } else { - if (o && "*" === s) g += starNoEmpty; else g += star; - r = true; - } - } else if (m === s.length - 1) g += "\\\\"; else u = true; else { - u = false; - g += (reSpecials.has(b) ? "\\" : "") + b; - } - } - return [ g, unescape2(s), !!r, _ ]; -}; - -__privateAdd(_AST, _parseAST); - -__privateAdd(_AST, _parseGlob); - -var AST = _AST, escape = (s, {windowsPathsNoEscape: r = false} = {}) => r ? s.replace(/[?*()[\]]/g, "[$&]") : s.replace(/[?*()[\]\\]/g, "\\$&"), minimatch = (s, r, o = {}) => { - assertValidPattern(r); - if (!o.nocomment && "#" === r.charAt(0)) return false; else return new Minimatch(r, o).match(s); -}, starDotExtRE = /^\*+([^+@!?\*\[\(]*)$/, starDotExtTest = s => r => !r.startsWith(".") && r.endsWith(s), starDotExtTestDot = s => r => r.endsWith(s), starDotExtTestNocase = s => { - s = s.toLowerCase(); - return r => !r.startsWith(".") && r.toLowerCase().endsWith(s); -}, starDotExtTestNocaseDot = s => { - s = s.toLowerCase(); - return r => r.toLowerCase().endsWith(s); -}, starDotStarRE = /^\*+\.\*+$/, starDotStarTest = s => !s.startsWith(".") && s.includes("."), starDotStarTestDot = s => "." !== s && ".." !== s && s.includes("."), dotStarRE = /^\.\*+$/, dotStarTest = s => "." !== s && ".." !== s && s.startsWith("."), starRE = /^\*+$/, starTest = s => 0 !== s.length && !s.startsWith("."), starTestDot = s => 0 !== s.length && "." !== s && ".." !== s, qmarksRE = /^\?+([^+@!?\*\[\(]*)?$/, qmarksTestNocase = ([s, r = ""]) => { - const o = qmarksTestNoExt([ s ]); - if (!r) return o; - r = r.toLowerCase(); - return s => o(s) && s.toLowerCase().endsWith(r); -}, qmarksTestNocaseDot = ([s, r = ""]) => { - const o = qmarksTestNoExtDot([ s ]); - if (!r) return o; - r = r.toLowerCase(); - return s => o(s) && s.toLowerCase().endsWith(r); -}, qmarksTestDot = ([s, r = ""]) => { - const o = qmarksTestNoExtDot([ s ]); - return !r ? o : s => o(s) && s.endsWith(r); -}, qmarksTest = ([s, r = ""]) => { - const o = qmarksTestNoExt([ s ]); - return !r ? o : s => o(s) && s.endsWith(r); -}, qmarksTestNoExt = ([s]) => { - const r = s.length; - return s => s.length === r && !s.startsWith("."); -}, qmarksTestNoExtDot = ([s]) => { - const r = s.length; - return s => s.length === r && "." !== s && ".." !== s; -}, defaultPlatform = "object" == typeof process && process ? "object" == typeof process.env && process.env && process.env.__MINIMATCH_TESTING_PLATFORM__ || process.platform : "posix", path = { - win32: { - sep: "\\" - }, - posix: { - sep: "/" - } -}, sep = "win32" === defaultPlatform ? path.win32.sep : path.posix.sep; - -minimatch.sep = sep; - -var GLOBSTAR = Symbol("globstar **"); - -minimatch.GLOBSTAR = GLOBSTAR; - -var qmark2 = "[^/]", star2 = qmark2 + "*?", twoStarDot = "(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?", twoStarNoDot = "(?:(?!(?:\\/|^)\\.).)*?", filter = (s, r = {}) => o => minimatch(o, s, r); - -minimatch.filter = filter; - -var ext = (s, r = {}) => Object.assign({}, s, r), defaults = s => { - if (!s || "object" != typeof s || !Object.keys(s).length) return minimatch; - const r = minimatch; - return Object.assign(((o, u, g = {}) => r(o, u, ext(s, g))), { - Minimatch: class Minimatch extends r.Minimatch { - constructor(r, o = {}) { - super(r, ext(s, o)); - } - static defaults(o) { - return r.defaults(ext(s, o)).Minimatch; - } - }, - AST: class AST extends r.AST { - constructor(r, o, u = {}) { - super(r, o, ext(s, u)); - } - static fromGlob(o, u = {}) { - return r.AST.fromGlob(o, ext(s, u)); - } - }, - unescape: (o, u = {}) => r.unescape(o, ext(s, u)), - escape: (o, u = {}) => r.escape(o, ext(s, u)), - filter: (o, u = {}) => r.filter(o, ext(s, u)), - defaults: o => r.defaults(ext(s, o)), - makeRe: (o, u = {}) => r.makeRe(o, ext(s, u)), - braceExpand: (o, u = {}) => r.braceExpand(o, ext(s, u)), - match: (o, u, g = {}) => r.match(o, u, ext(s, g)), - sep: r.sep, - GLOBSTAR - }); -}; - -minimatch.defaults = defaults; - -var braceExpand = (s, r = {}) => { - assertValidPattern(s); - if (r.nobrace || !/\{(?:(?!\{).)*\}/.test(s)) return [ s ]; else return (0, import_brace_expansion.default)(s); -}; - -minimatch.braceExpand = braceExpand; - -var makeRe = (s, r = {}) => new Minimatch(s, r).makeRe(); - -minimatch.makeRe = makeRe; - -var match = (s, r, o = {}) => { - const u = new Minimatch(r, o); - s = s.filter((s => u.match(s))); - if (u.options.nonull && !s.length) s.push(r); - return s; -}; - -minimatch.match = match; - -var globMagic = /[?*]|[+@!]\(.*?\)|\[|\]/, regExpEscape2 = s => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"), Minimatch = class { - constructor(s, r = {}) { - __publicField(this, "options"); - __publicField(this, "set"); - __publicField(this, "pattern"); - __publicField(this, "windowsPathsNoEscape"); - __publicField(this, "nonegate"); - __publicField(this, "negate"); - __publicField(this, "comment"); - __publicField(this, "empty"); - __publicField(this, "preserveMultipleSlashes"); - __publicField(this, "partial"); - __publicField(this, "globSet"); - __publicField(this, "globParts"); - __publicField(this, "nocase"); - __publicField(this, "isWindows"); - __publicField(this, "platform"); - __publicField(this, "windowsNoMagicRoot"); - __publicField(this, "regexp"); - assertValidPattern(s); - r = r || {}; - this.options = r; - this.pattern = s; - this.platform = r.platform || defaultPlatform; - this.isWindows = "win32" === this.platform; - this.windowsPathsNoEscape = !!r.windowsPathsNoEscape || false === r.allowWindowsEscape; - if (this.windowsPathsNoEscape) this.pattern = this.pattern.replace(/\\/g, "/"); - this.preserveMultipleSlashes = !!r.preserveMultipleSlashes; - this.regexp = null; - this.negate = false; - this.nonegate = !!r.nonegate; - this.comment = false; - this.empty = false; - this.partial = !!r.partial; - this.nocase = !!this.options.nocase; - this.windowsNoMagicRoot = void 0 !== r.windowsNoMagicRoot ? r.windowsNoMagicRoot : !!(this.isWindows && this.nocase); - this.globSet = []; - this.globParts = []; - this.set = []; - this.make(); - } - hasMagic() { - if (this.options.magicalBraces && this.set.length > 1) return true; - for (const s of this.set) for (const r of s) if ("string" != typeof r) return true; - return false; - } - debug(...s) {} - make() { - const s = this.pattern, r = this.options; - if (!r.nocomment && "#" === s.charAt(0)) { - this.comment = true; - return; - } - if (!s) { - this.empty = true; - return; - } - this.parseNegate(); - this.globSet = [ ...new Set(this.braceExpand()) ]; - if (r.debug) this.debug = (...s) => console.error(...s); - this.debug(this.pattern, this.globSet); - const o = this.globSet.map((s => this.slashSplit(s))); - this.globParts = this.preprocess(o); - this.debug(this.pattern, this.globParts); - let u = this.globParts.map(((s, r, o) => { - if (this.isWindows && this.windowsNoMagicRoot) { - const r = !("" !== s[0] || "" !== s[1] || "?" !== s[2] && globMagic.test(s[2]) || globMagic.test(s[3])), o = /^[a-z]:/i.test(s[0]); - if (r) return [ ...s.slice(0, 4), ...s.slice(4).map((s => this.parse(s))) ]; else if (o) return [ s[0], ...s.slice(1).map((s => this.parse(s))) ]; - } - return s.map((s => this.parse(s))); - })); - this.debug(this.pattern, u); - this.set = u.filter((s => -1 === s.indexOf(false))); - if (this.isWindows) for (let s = 0; s < this.set.length; s++) { - const r = this.set[s]; - if ("" === r[0] && "" === r[1] && "?" === this.globParts[s][2] && "string" == typeof r[3] && /^[a-z]:$/i.test(r[3])) r[2] = "?"; - } - this.debug(this.pattern, this.set); - } - preprocess(s) { - if (this.options.noglobstar) for (let r = 0; r < s.length; r++) for (let o = 0; o < s[r].length; o++) if ("**" === s[r][o]) s[r][o] = "*"; - const {optimizationLevel: r = 1} = this.options; - if (r >= 2) { - s = this.firstPhasePreProcess(s); - s = this.secondPhasePreProcess(s); - } else if (r >= 1) s = this.levelOneOptimize(s); else s = this.adjascentGlobstarOptimize(s); - return s; - } - adjascentGlobstarOptimize(s) { - return s.map((s => { - let r = -1; - for (;-1 !== (r = s.indexOf("**", r + 1)); ) { - let o = r; - for (;"**" === s[o + 1]; ) o++; - if (o !== r) s.splice(r, o - r); - } - return s; - })); - } - levelOneOptimize(s) { - return s.map((s => 0 === (s = s.reduce(((s, r) => { - const o = s[s.length - 1]; - if ("**" === r && "**" === o) return s; - if (".." === r) if (o && ".." !== o && "." !== o && "**" !== o) { - s.pop(); - return s; - } - s.push(r); - return s; - }), [])).length ? [ "" ] : s)); - } - levelTwoFileOptimize(s) { - if (!Array.isArray(s)) s = this.slashSplit(s); - let r = false; - do { - r = false; - if (!this.preserveMultipleSlashes) { - for (let o = 1; o < s.length - 1; o++) { - const u = s[o]; - if (1 !== o || "" !== u || "" !== s[0]) if ("." === u || "" === u) { - r = true; - s.splice(o, 1); - o--; - } - } - if ("." === s[0] && 2 === s.length && ("." === s[1] || "" === s[1])) { - r = true; - s.pop(); - } - } - let o = 0; - for (;-1 !== (o = s.indexOf("..", o + 1)); ) { - const u = s[o - 1]; - if (u && "." !== u && ".." !== u && "**" !== u) { - r = true; - s.splice(o - 1, 2); - o -= 2; - } - } - } while (r); - return 0 === s.length ? [ "" ] : s; - } - firstPhasePreProcess(s) { - let r = false; - do { - r = false; - for (let o of s) { - let u = -1; - for (;-1 !== (u = o.indexOf("**", u + 1)); ) { - let g = u; - for (;"**" === o[g + 1]; ) g++; - if (g > u) o.splice(u + 1, g - u); - let _ = o[u + 1]; - const m = o[u + 2], b = o[u + 3]; - if (".." !== _) continue; - if (!m || "." === m || ".." === m || !b || "." === b || ".." === b) continue; - r = true; - o.splice(u, 1); - const E = o.slice(0); - E[u] = "**"; - s.push(E); - u--; - } - if (!this.preserveMultipleSlashes) { - for (let s = 1; s < o.length - 1; s++) { - const u = o[s]; - if (1 !== s || "" !== u || "" !== o[0]) if ("." === u || "" === u) { - r = true; - o.splice(s, 1); - s--; - } - } - if ("." === o[0] && 2 === o.length && ("." === o[1] || "" === o[1])) { - r = true; - o.pop(); - } - } - let g = 0; - for (;-1 !== (g = o.indexOf("..", g + 1)); ) { - const s = o[g - 1]; - if (s && "." !== s && ".." !== s && "**" !== s) { - r = true; - const s = 1 === g && "**" === o[g + 1] ? [ "." ] : []; - o.splice(g - 1, 2, ...s); - if (0 === o.length) o.push(""); - g -= 2; - } - } - } - } while (r); - return s; - } - secondPhasePreProcess(s) { - for (let r = 0; r < s.length - 1; r++) for (let o = r + 1; o < s.length; o++) { - const u = this.partsMatch(s[r], s[o], !this.preserveMultipleSlashes); - if (u) { - s[r] = u; - s[o] = []; - } - } - return s.filter((s => s.length)); - } - partsMatch(s, r, o = false) { - let u = 0, g = 0, _ = [], m = ""; - for (;u < s.length && g < r.length; ) if (s[u] === r[g]) { - _.push("b" === m ? r[g] : s[u]); - u++; - g++; - } else if (o && "**" === s[u] && r[g] === s[u + 1]) { - _.push(s[u]); - u++; - } else if (o && "**" === r[g] && s[u] === r[g + 1]) { - _.push(r[g]); - g++; - } else if ("*" === s[u] && r[g] && (this.options.dot || !r[g].startsWith(".")) && "**" !== r[g]) { - if ("b" === m) return false; - m = "a"; - _.push(s[u]); - u++; - g++; - } else if ("*" === r[g] && s[u] && (this.options.dot || !s[u].startsWith(".")) && "**" !== s[u]) { - if ("a" === m) return false; - m = "b"; - _.push(r[g]); - u++; - g++; - } else return false; - return s.length === r.length && _; - } - parseNegate() { - if (this.nonegate) return; - const s = this.pattern; - let r = false, o = 0; - for (let u = 0; u < s.length && "!" === s.charAt(u); u++) { - r = !r; - o++; - } - if (o) this.pattern = s.slice(o); - this.negate = r; - } - matchOne(s, r, o = false) { - const u = this.options; - if (this.isWindows) { - const o = "string" == typeof s[0] && /^[a-z]:$/i.test(s[0]), u = !o && "" === s[0] && "" === s[1] && "?" === s[2] && /^[a-z]:$/i.test(s[3]), g = "string" == typeof r[0] && /^[a-z]:$/i.test(r[0]), _ = u ? 3 : o ? 0 : void 0, m = !g && "" === r[0] && "" === r[1] && "?" === r[2] && "string" == typeof r[3] && /^[a-z]:$/i.test(r[3]) ? 3 : g ? 0 : void 0; - if ("number" == typeof _ && "number" == typeof m) { - const [o, u] = [ s[_], r[m] ]; - if (o.toLowerCase() === u.toLowerCase()) { - r[m] = o; - if (m > _) r = r.slice(m); else if (_ > m) s = s.slice(_); - } - } - } - const {optimizationLevel: g = 1} = this.options; - if (g >= 2) s = this.levelTwoFileOptimize(s); - this.debug("matchOne", this, { - file: s, - pattern: r - }); - this.debug("matchOne", s.length, r.length); - for (var _ = 0, m = 0, b = s.length, E = r.length; _ < b && m < E; _++, m++) { - this.debug("matchOne loop"); - var w = r[m], S = s[_]; - this.debug(r, w, S); - if (false === w) return false; - if (w === GLOBSTAR) { - this.debug("GLOBSTAR", [ r, w, S ]); - var L = _, O = m + 1; - if (O === E) { - this.debug("** at the end"); - for (;_ < b; _++) if ("." === s[_] || ".." === s[_] || !u.dot && "." === s[_].charAt(0)) return false; - return true; - } - for (;L < b; ) { - var D = s[L]; - this.debug("\nglobstar while", s, L, r, O, D); - if (this.matchOne(s.slice(L), r.slice(O), o)) { - this.debug("globstar found match!", L, b, D); - return true; - } else { - if ("." === D || ".." === D || !u.dot && "." === D.charAt(0)) { - this.debug("dot detected!", s, L, r, O); - break; - } - this.debug("globstar swallow a segment, and continue"); - L++; - } - } - if (o) { - this.debug("\n>>> no match, partial?", s, L, r, O); - if (L === b) return true; - } - return false; - } - let g; - if ("string" == typeof w) { - g = S === w; - this.debug("string match", w, S, g); - } else { - g = w.test(S); - this.debug("pattern match", w, S, g); - } - if (!g) return false; - } - if (_ === b && m === E) return true; else if (_ === b) return o; else if (m === E) return _ === b - 1 && "" === s[_]; else throw new Error("wtf?"); - } - braceExpand() { - return braceExpand(this.pattern, this.options); - } - parse(s) { - assertValidPattern(s); - const r = this.options; - if ("**" === s) return GLOBSTAR; - if ("" === s) return ""; - let o, u = null; - if (o = s.match(starRE)) u = r.dot ? starTestDot : starTest; else if (o = s.match(starDotExtRE)) u = (r.nocase ? r.dot ? starDotExtTestNocaseDot : starDotExtTestNocase : r.dot ? starDotExtTestDot : starDotExtTest)(o[1]); else if (o = s.match(qmarksRE)) u = (r.nocase ? r.dot ? qmarksTestNocaseDot : qmarksTestNocase : r.dot ? qmarksTestDot : qmarksTest)(o); else if (o = s.match(starDotStarRE)) u = r.dot ? starDotStarTestDot : starDotStarTest; else if (o = s.match(dotStarRE)) u = dotStarTest; - const g = AST.fromGlob(s, this.options).toMMPattern(); - return u ? Object.assign(g, { - test: u - }) : g; - } - makeRe() { - if (this.regexp || false === this.regexp) return this.regexp; - const s = this.set; - if (!s.length) { - this.regexp = false; - return this.regexp; - } - const r = this.options, o = r.noglobstar ? star2 : r.dot ? twoStarDot : twoStarNoDot, u = new Set(r.nocase ? [ "i" ] : []); - let g = s.map((s => { - const r = s.map((s => { - if (s instanceof RegExp) for (const r of s.flags.split("")) u.add(r); - return "string" == typeof s ? regExpEscape2(s) : s === GLOBSTAR ? GLOBSTAR : s._src; - })); - r.forEach(((s, u) => { - const g = r[u + 1], _ = r[u - 1]; - if (s === GLOBSTAR && _ !== GLOBSTAR) if (void 0 === _) if (void 0 !== g && g !== GLOBSTAR) r[u + 1] = "(?:\\/|" + o + "\\/)?" + g; else r[u] = o; else if (void 0 === g) r[u - 1] = _ + "(?:\\/|" + o + ")?"; else if (g !== GLOBSTAR) { - r[u - 1] = _ + "(?:\\/|\\/" + o + "\\/)" + g; - r[u + 1] = GLOBSTAR; - } - })); - return r.filter((s => s !== GLOBSTAR)).join("/"); - })).join("|"); - const [_, m] = s.length > 1 ? [ "(?:", ")" ] : [ "", "" ]; - g = "^" + _ + g + m + "$"; - if (this.negate) g = "^(?!" + g + ").+$"; - try { - this.regexp = new RegExp(g, [ ...u ].join("")); - } catch (s) { - this.regexp = false; - } - return this.regexp; - } - slashSplit(s) { - if (this.preserveMultipleSlashes) return s.split("/"); else if (this.isWindows && /^\/\/[^\/]+/.test(s)) return [ "", ...s.split(/\/+/) ]; else return s.split(/\/+/); - } - match(s, r = this.partial) { - this.debug("match", s, this.pattern); - if (this.comment) return false; - if (this.empty) return "" === s; - if ("/" === s && r) return true; - const o = this.options; - if (this.isWindows) s = s.split("\\").join("/"); - const u = this.slashSplit(s); - this.debug(this.pattern, "split", u); - const g = this.set; - this.debug(this.pattern, "set", g); - let _ = u[u.length - 1]; - if (!_) for (let s = u.length - 2; !_ && s >= 0; s--) _ = u[s]; - for (let s = 0; s < g.length; s++) { - const m = g[s]; - let b = u; - if (o.matchBase && 1 === m.length) b = [ _ ]; - if (this.matchOne(b, m, r)) if (o.flipNegate) return true; else return !this.negate; - } - if (o.flipNegate) return false; else return this.negate; - } - static defaults(s) { - return minimatch.defaults(s).Minimatch; - } -}; - -minimatch.AST = AST; - -minimatch.Minimatch = Minimatch; - -minimatch.escape = escape; - -minimatch.unescape = unescape2; - -var webcrypto, import_crypto = require("crypto"); - -if ("undefined" != typeof window && window.crypto) webcrypto = window.crypto; else { - const s = import_crypto.webcrypto; - webcrypto = s; -} - -var e, t = new Uint8Array([ 0, 97, 115, 109, 1, 0, 0, 0, 1, 13, 2, 96, 2, 127, 127, 0, 96, 3, 127, 127, 127, 1, 127, 3, 3, 2, 1, 0, 5, 3, 1, 0, 1, 7, 23, 3, 3, 109, 101, 109, 2, 0, 5, 120, 120, 104, 51, 50, 0, 0, 5, 120, 120, 104, 54, 52, 0, 1, 10, 152, 9, 2, 242, 2, 1, 4, 127, 32, 0, 32, 1, 106, 33, 3, 32, 1, 32, 1, 65, 16, 79, 4, 127, 32, 3, 65, 16, 107, 33, 6, 32, 2, 65, 168, 136, 141, 161, 2, 106, 33, 1, 32, 2, 65, 137, 235, 208, 208, 7, 107, 33, 4, 32, 2, 65, 207, 140, 162, 142, 6, 106, 33, 5, 3, 64, 32, 1, 32, 0, 40, 2, 0, 65, 247, 148, 175, 175, 120, 108, 106, 65, 13, 119, 65, 177, 243, 221, 241, 121, 108, 33, 1, 32, 4, 32, 0, 65, 4, 106, 34, 0, 40, 2, 0, 65, 247, 148, 175, 175, 120, 108, 106, 65, 13, 119, 65, 177, 243, 221, 241, 121, 108, 33, 4, 32, 2, 32, 0, 65, 4, 106, 34, 0, 40, 2, 0, 65, 247, 148, 175, 175, 120, 108, 106, 65, 13, 119, 65, 177, 243, 221, 241, 121, 108, 33, 2, 32, 5, 32, 0, 65, 4, 106, 34, 0, 40, 2, 0, 65, 247, 148, 175, 175, 120, 108, 106, 65, 13, 119, 65, 177, 243, 221, 241, 121, 108, 33, 5, 32, 6, 32, 0, 65, 4, 106, 34, 0, 79, 13, 0, 11, 32, 2, 65, 12, 119, 32, 5, 65, 18, 119, 106, 32, 4, 65, 7, 119, 106, 32, 1, 65, 1, 119, 106, 5, 32, 2, 65, 177, 207, 217, 178, 1, 106, 11, 106, 33, 2, 3, 64, 32, 3, 32, 0, 65, 4, 106, 79, 4, 64, 32, 2, 32, 0, 40, 2, 0, 65, 189, 220, 202, 149, 124, 108, 106, 65, 17, 119, 65, 175, 214, 211, 190, 2, 108, 33, 2, 32, 0, 65, 4, 106, 33, 0, 12, 1, 11, 11, 3, 64, 32, 0, 32, 3, 73, 4, 64, 32, 2, 32, 0, 45, 0, 0, 65, 177, 207, 217, 178, 1, 108, 106, 65, 11, 119, 65, 177, 243, 221, 241, 121, 108, 33, 2, 32, 0, 65, 1, 106, 33, 0, 12, 1, 11, 11, 32, 2, 32, 2, 65, 15, 118, 115, 65, 247, 148, 175, 175, 120, 108, 34, 0, 65, 13, 118, 32, 0, 115, 65, 189, 220, 202, 149, 124, 108, 34, 0, 65, 16, 118, 32, 0, 115, 11, 161, 6, 2, 4, 126, 3, 127, 32, 0, 65, 4, 106, 53, 2, 0, 32, 0, 53, 2, 0, 66, 32, 134, 132, 33, 2, 32, 1, 32, 0, 65, 8, 106, 34, 6, 106, 33, 7, 32, 1, 65, 32, 79, 4, 126, 32, 7, 65, 32, 107, 33, 8, 32, 2, 66, 214, 235, 130, 238, 234, 253, 137, 245, 224, 0, 124, 33, 3, 32, 2, 66, 177, 169, 172, 193, 173, 184, 212, 166, 61, 125, 33, 4, 32, 2, 66, 249, 234, 208, 208, 231, 201, 161, 228, 225, 0, 124, 33, 5, 3, 64, 32, 3, 32, 6, 41, 3, 0, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 124, 66, 31, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 33, 3, 32, 4, 32, 6, 65, 8, 106, 34, 6, 41, 3, 0, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 124, 66, 31, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 33, 4, 32, 2, 32, 6, 65, 8, 106, 34, 6, 41, 3, 0, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 124, 66, 31, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 33, 2, 32, 5, 32, 6, 65, 8, 106, 34, 6, 41, 3, 0, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 124, 66, 31, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 33, 5, 32, 8, 32, 6, 65, 8, 106, 34, 6, 79, 13, 0, 11, 32, 2, 66, 12, 137, 32, 5, 66, 18, 137, 124, 32, 4, 66, 7, 137, 124, 32, 3, 66, 1, 137, 124, 32, 3, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 66, 31, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 133, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 66, 157, 163, 181, 234, 131, 177, 141, 138, 250, 0, 125, 32, 4, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 66, 31, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 133, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 66, 157, 163, 181, 234, 131, 177, 141, 138, 250, 0, 125, 32, 2, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 66, 31, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 133, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 66, 157, 163, 181, 234, 131, 177, 141, 138, 250, 0, 125, 32, 5, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 66, 31, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 133, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 66, 157, 163, 181, 234, 131, 177, 141, 138, 250, 0, 125, 5, 32, 2, 66, 197, 207, 217, 178, 241, 229, 186, 234, 39, 124, 11, 32, 1, 173, 124, 33, 2, 3, 64, 32, 7, 32, 6, 65, 8, 106, 79, 4, 64, 32, 2, 32, 6, 41, 3, 0, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 66, 31, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 133, 66, 27, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 66, 157, 163, 181, 234, 131, 177, 141, 138, 250, 0, 125, 33, 2, 32, 6, 65, 8, 106, 33, 6, 12, 1, 11, 11, 32, 6, 65, 4, 106, 32, 7, 77, 4, 64, 32, 2, 32, 6, 53, 2, 0, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 133, 66, 23, 137, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 66, 249, 243, 221, 241, 153, 246, 153, 171, 22, 124, 33, 2, 32, 6, 65, 4, 106, 33, 6, 11, 3, 64, 32, 6, 32, 7, 73, 4, 64, 32, 2, 32, 6, 49, 0, 0, 66, 197, 207, 217, 178, 241, 229, 186, 234, 39, 126, 133, 66, 11, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 33, 2, 32, 6, 65, 1, 106, 33, 6, 12, 1, 11, 11, 32, 0, 32, 2, 32, 2, 66, 33, 136, 133, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 34, 2, 66, 29, 136, 32, 2, 133, 66, 249, 243, 221, 241, 153, 246, 153, 171, 22, 126, 34, 2, 66, 32, 136, 32, 2, 133, 34, 2, 66, 32, 136, 62, 2, 0, 32, 0, 65, 4, 106, 32, 2, 62, 2, 0, 11 ]); - -function n(s, r, o) { - if (r.buffer.byteLength < s.byteLength + o) { - const u = Math.ceil((s.byteLength + o - r.buffer.byteLength) / 65536); - r.grow(u); - } - new Uint8Array(r.buffer, o).set(s); -} - -async function xxhash_wasm_default() { - const {instance: {exports: {mem: s, xxh32: r, xxh64: o}}} = await WebAssembly.instantiate(t); - function h2(o) { - let u = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0; - return n(o, s, 0), r(0, o.byteLength, u) >>> 0; - } - function c(r) { - let u = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0, g = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0; - n(r, s, 8); - const _ = new DataView(s.buffer); - return _.setUint32(0, u, true), _.setUint32(4, g, true), o(0, r.byteLength), _; - } - return { - h32: function(s) { - let r = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0; - e || (e = new TextEncoder); - return h2(e.encode(s), r).toString(16); - }, - h32Raw: h2, - h64: function(s) { - let r = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0, o = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0; - e || (e = new TextEncoder); - const u = c(e.encode(s), r, o); - return u.getUint32(0, true).toString(16) + u.getUint32(4, true).toString(16); - }, - h64Raw: function(s) { - let r = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0, o = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0; - return new Uint8Array(c(s, r, o).buffer, 0, 8); - } - }; -} - -var t2 = new Uint8Array([ 0, 97, 115, 109, 1, 0, 0, 0, 1, 48, 8, 96, 3, 127, 127, 127, 0, 96, 3, 127, 127, 127, 1, 127, 96, 2, 127, 127, 0, 96, 2, 127, 126, 0, 96, 1, 127, 1, 127, 96, 1, 127, 1, 126, 96, 3, 127, 127, 126, 1, 126, 96, 3, 126, 127, 127, 1, 126, 3, 11, 10, 1, 1, 2, 0, 4, 6, 7, 3, 0, 5, 5, 3, 1, 0, 1, 7, 85, 9, 3, 109, 101, 109, 2, 0, 5, 120, 120, 104, 51, 50, 0, 0, 6, 105, 110, 105, 116, 51, 50, 0, 2, 8, 117, 112, 100, 97, 116, 101, 51, 50, 0, 3, 8, 100, 105, 103, 101, 115, 116, 51, 50, 0, 4, 5, 120, 120, 104, 54, 52, 0, 5, 6, 105, 110, 105, 116, 54, 52, 0, 7, 8, 117, 112, 100, 97, 116, 101, 54, 52, 0, 8, 8, 100, 105, 103, 101, 115, 116, 54, 52, 0, 9, 10, 211, 23, 10, 242, 1, 1, 4, 127, 32, 0, 32, 1, 106, 33, 3, 32, 1, 65, 16, 79, 4, 127, 32, 3, 65, 16, 107, 33, 6, 32, 2, 65, 168, 136, 141, 161, 2, 106, 33, 3, 32, 2, 65, 247, 148, 175, 175, 120, 106, 33, 4, 32, 2, 65, 177, 243, 221, 241, 121, 107, 33, 5, 3, 64, 32, 0, 40, 2, 0, 65, 247, 148, 175, 175, 120, 108, 32, 3, 106, 65, 13, 119, 65, 177, 243, 221, 241, 121, 108, 33, 3, 32, 0, 65, 4, 106, 34, 0, 40, 2, 0, 65, 247, 148, 175, 175, 120, 108, 32, 4, 106, 65, 13, 119, 65, 177, 243, 221, 241, 121, 108, 33, 4, 32, 0, 65, 4, 106, 34, 0, 40, 2, 0, 65, 247, 148, 175, 175, 120, 108, 32, 2, 106, 65, 13, 119, 65, 177, 243, 221, 241, 121, 108, 33, 2, 32, 0, 65, 4, 106, 34, 0, 40, 2, 0, 65, 247, 148, 175, 175, 120, 108, 32, 5, 106, 65, 13, 119, 65, 177, 243, 221, 241, 121, 108, 33, 5, 32, 0, 65, 4, 106, 34, 0, 32, 6, 77, 13, 0, 11, 32, 2, 65, 12, 119, 32, 5, 65, 18, 119, 106, 32, 4, 65, 7, 119, 106, 32, 3, 65, 1, 119, 106, 5, 32, 2, 65, 177, 207, 217, 178, 1, 106, 11, 32, 1, 106, 32, 0, 32, 1, 65, 15, 113, 16, 1, 11, 146, 1, 0, 32, 1, 32, 2, 106, 33, 2, 3, 64, 32, 1, 65, 4, 106, 32, 2, 75, 69, 4, 64, 32, 1, 40, 2, 0, 65, 189, 220, 202, 149, 124, 108, 32, 0, 106, 65, 17, 119, 65, 175, 214, 211, 190, 2, 108, 33, 0, 32, 1, 65, 4, 106, 33, 1, 12, 1, 11, 11, 3, 64, 32, 1, 32, 2, 79, 69, 4, 64, 32, 1, 45, 0, 0, 65, 177, 207, 217, 178, 1, 108, 32, 0, 106, 65, 11, 119, 65, 177, 243, 221, 241, 121, 108, 33, 0, 32, 1, 65, 1, 106, 33, 1, 12, 1, 11, 11, 32, 0, 65, 15, 118, 32, 0, 115, 65, 247, 148, 175, 175, 120, 108, 34, 0, 32, 0, 65, 13, 118, 115, 65, 189, 220, 202, 149, 124, 108, 34, 0, 32, 0, 65, 16, 118, 115, 11, 63, 0, 32, 0, 65, 8, 106, 32, 1, 65, 168, 136, 141, 161, 2, 106, 54, 2, 0, 32, 0, 65, 12, 106, 32, 1, 65, 247, 148, 175, 175, 120, 106, 54, 2, 0, 32, 0, 65, 16, 106, 32, 1, 54, 2, 0, 32, 0, 65, 20, 106, 32, 1, 65, 177, 243, 221, 241, 121, 107, 54, 2, 0, 11, 211, 4, 1, 6, 127, 32, 1, 32, 2, 106, 33, 6, 32, 0, 65, 24, 106, 33, 5, 32, 0, 65, 40, 106, 40, 2, 0, 33, 3, 32, 0, 32, 0, 40, 2, 0, 32, 2, 106, 54, 2, 0, 32, 0, 65, 4, 106, 34, 4, 32, 4, 40, 2, 0, 32, 2, 65, 16, 79, 32, 0, 40, 2, 0, 65, 16, 79, 114, 114, 54, 2, 0, 32, 2, 32, 3, 106, 65, 16, 73, 4, 64, 32, 3, 32, 5, 106, 32, 1, 32, 2, 252, 10, 0, 0, 32, 0, 65, 40, 106, 32, 2, 32, 3, 106, 54, 2, 0, 15, 11, 32, 3, 4, 64, 32, 3, 32, 5, 106, 32, 1, 65, 16, 32, 3, 107, 34, 2, 252, 10, 0, 0, 32, 0, 65, 8, 106, 34, 3, 40, 2, 0, 32, 5, 40, 2, 0, 65, 247, 148, 175, 175, 120, 108, 106, 65, 13, 119, 65, 177, 243, 221, 241, 121, 108, 33, 4, 32, 3, 32, 4, 54, 2, 0, 32, 0, 65, 12, 106, 34, 3, 40, 2, 0, 32, 5, 65, 4, 106, 40, 2, 0, 65, 247, 148, 175, 175, 120, 108, 106, 65, 13, 119, 65, 177, 243, 221, 241, 121, 108, 33, 4, 32, 3, 32, 4, 54, 2, 0, 32, 0, 65, 16, 106, 34, 3, 40, 2, 0, 32, 5, 65, 8, 106, 40, 2, 0, 65, 247, 148, 175, 175, 120, 108, 106, 65, 13, 119, 65, 177, 243, 221, 241, 121, 108, 33, 4, 32, 3, 32, 4, 54, 2, 0, 32, 0, 65, 20, 106, 34, 3, 40, 2, 0, 32, 5, 65, 12, 106, 40, 2, 0, 65, 247, 148, 175, 175, 120, 108, 106, 65, 13, 119, 65, 177, 243, 221, 241, 121, 108, 33, 4, 32, 3, 32, 4, 54, 2, 0, 32, 0, 65, 40, 106, 65, 0, 54, 2, 0, 32, 1, 32, 2, 106, 33, 1, 11, 32, 1, 32, 6, 65, 16, 107, 77, 4, 64, 32, 6, 65, 16, 107, 33, 8, 32, 0, 65, 8, 106, 40, 2, 0, 33, 2, 32, 0, 65, 12, 106, 40, 2, 0, 33, 3, 32, 0, 65, 16, 106, 40, 2, 0, 33, 4, 32, 0, 65, 20, 106, 40, 2, 0, 33, 7, 3, 64, 32, 1, 40, 2, 0, 65, 247, 148, 175, 175, 120, 108, 32, 2, 106, 65, 13, 119, 65, 177, 243, 221, 241, 121, 108, 33, 2, 32, 1, 65, 4, 106, 34, 1, 40, 2, 0, 65, 247, 148, 175, 175, 120, 108, 32, 3, 106, 65, 13, 119, 65, 177, 243, 221, 241, 121, 108, 33, 3, 32, 1, 65, 4, 106, 34, 1, 40, 2, 0, 65, 247, 148, 175, 175, 120, 108, 32, 4, 106, 65, 13, 119, 65, 177, 243, 221, 241, 121, 108, 33, 4, 32, 1, 65, 4, 106, 34, 1, 40, 2, 0, 65, 247, 148, 175, 175, 120, 108, 32, 7, 106, 65, 13, 119, 65, 177, 243, 221, 241, 121, 108, 33, 7, 32, 1, 65, 4, 106, 34, 1, 32, 8, 77, 13, 0, 11, 32, 0, 65, 8, 106, 32, 2, 54, 2, 0, 32, 0, 65, 12, 106, 32, 3, 54, 2, 0, 32, 0, 65, 16, 106, 32, 4, 54, 2, 0, 32, 0, 65, 20, 106, 32, 7, 54, 2, 0, 11, 32, 1, 32, 6, 73, 4, 64, 32, 5, 32, 1, 32, 6, 32, 1, 107, 34, 1, 252, 10, 0, 0, 32, 0, 65, 40, 106, 32, 1, 54, 2, 0, 11, 11, 97, 1, 1, 127, 32, 0, 65, 16, 106, 40, 2, 0, 33, 1, 32, 0, 65, 4, 106, 40, 2, 0, 4, 127, 32, 1, 65, 12, 119, 32, 0, 65, 20, 106, 40, 2, 0, 65, 18, 119, 106, 32, 0, 65, 12, 106, 40, 2, 0, 65, 7, 119, 106, 32, 0, 65, 8, 106, 40, 2, 0, 65, 1, 119, 106, 5, 32, 1, 65, 177, 207, 217, 178, 1, 106, 11, 32, 0, 40, 2, 0, 106, 32, 0, 65, 24, 106, 32, 0, 65, 40, 106, 40, 2, 0, 16, 1, 11, 157, 4, 2, 1, 127, 3, 126, 32, 0, 32, 1, 106, 33, 3, 32, 1, 65, 32, 79, 4, 126, 32, 3, 65, 32, 107, 33, 3, 32, 2, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 124, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 124, 33, 4, 32, 2, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 124, 33, 5, 32, 2, 66, 0, 124, 33, 6, 32, 2, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 125, 33, 2, 3, 64, 32, 0, 41, 3, 0, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 32, 4, 124, 66, 31, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 33, 4, 32, 0, 65, 8, 106, 34, 0, 41, 3, 0, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 32, 5, 124, 66, 31, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 33, 5, 32, 0, 65, 8, 106, 34, 0, 41, 3, 0, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 32, 6, 124, 66, 31, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 33, 6, 32, 0, 65, 8, 106, 34, 0, 41, 3, 0, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 32, 2, 124, 66, 31, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 33, 2, 32, 0, 65, 8, 106, 34, 0, 32, 3, 77, 13, 0, 11, 32, 6, 66, 12, 137, 32, 2, 66, 18, 137, 124, 32, 5, 66, 7, 137, 124, 32, 4, 66, 1, 137, 124, 32, 4, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 66, 0, 124, 66, 31, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 133, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 66, 227, 220, 202, 149, 252, 206, 242, 245, 133, 127, 124, 32, 5, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 66, 0, 124, 66, 31, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 133, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 66, 227, 220, 202, 149, 252, 206, 242, 245, 133, 127, 124, 32, 6, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 66, 0, 124, 66, 31, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 133, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 66, 227, 220, 202, 149, 252, 206, 242, 245, 133, 127, 124, 32, 2, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 66, 0, 124, 66, 31, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 133, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 66, 227, 220, 202, 149, 252, 206, 242, 245, 133, 127, 124, 5, 32, 2, 66, 197, 207, 217, 178, 241, 229, 186, 234, 39, 124, 11, 32, 1, 173, 124, 32, 0, 32, 1, 65, 31, 113, 16, 6, 11, 137, 2, 0, 32, 1, 32, 2, 106, 33, 2, 3, 64, 32, 1, 65, 8, 106, 32, 2, 77, 4, 64, 32, 1, 41, 3, 0, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 66, 0, 124, 66, 31, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 32, 0, 133, 66, 27, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 66, 227, 220, 202, 149, 252, 206, 242, 245, 133, 127, 124, 33, 0, 32, 1, 65, 8, 106, 33, 1, 12, 1, 11, 11, 32, 1, 65, 4, 106, 32, 2, 77, 4, 64, 32, 1, 53, 2, 0, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 32, 0, 133, 66, 23, 137, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 66, 249, 243, 221, 241, 153, 246, 153, 171, 22, 124, 33, 0, 32, 1, 65, 4, 106, 33, 1, 11, 3, 64, 32, 1, 32, 2, 73, 4, 64, 32, 1, 49, 0, 0, 66, 197, 207, 217, 178, 241, 229, 186, 234, 39, 126, 32, 0, 133, 66, 11, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 33, 0, 32, 1, 65, 1, 106, 33, 1, 12, 1, 11, 11, 32, 0, 66, 33, 136, 32, 0, 133, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 34, 0, 32, 0, 66, 29, 136, 133, 66, 249, 243, 221, 241, 153, 246, 153, 171, 22, 126, 34, 0, 32, 0, 66, 32, 136, 133, 11, 88, 0, 32, 0, 65, 8, 106, 32, 1, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 124, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 124, 55, 3, 0, 32, 0, 65, 16, 106, 32, 1, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 124, 55, 3, 0, 32, 0, 65, 24, 106, 32, 1, 55, 3, 0, 32, 0, 65, 32, 106, 32, 1, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 125, 55, 3, 0, 11, 132, 5, 2, 3, 127, 4, 126, 32, 1, 32, 2, 106, 33, 5, 32, 0, 65, 40, 106, 33, 4, 32, 0, 65, 200, 0, 106, 40, 2, 0, 33, 3, 32, 0, 32, 0, 41, 3, 0, 32, 2, 173, 124, 55, 3, 0, 32, 2, 32, 3, 106, 65, 32, 73, 4, 64, 32, 3, 32, 4, 106, 32, 1, 32, 2, 252, 10, 0, 0, 32, 0, 65, 200, 0, 106, 32, 2, 32, 3, 106, 54, 2, 0, 15, 11, 32, 3, 4, 64, 32, 3, 32, 4, 106, 32, 1, 65, 32, 32, 3, 107, 34, 2, 252, 10, 0, 0, 32, 0, 65, 8, 106, 34, 3, 41, 3, 0, 32, 4, 41, 3, 0, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 124, 66, 31, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 33, 6, 32, 3, 32, 6, 55, 3, 0, 32, 0, 65, 16, 106, 34, 3, 41, 3, 0, 32, 4, 65, 8, 106, 41, 3, 0, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 124, 66, 31, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 33, 6, 32, 3, 32, 6, 55, 3, 0, 32, 0, 65, 24, 106, 34, 3, 41, 3, 0, 32, 4, 65, 16, 106, 41, 3, 0, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 124, 66, 31, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 33, 6, 32, 3, 32, 6, 55, 3, 0, 32, 0, 65, 32, 106, 34, 3, 41, 3, 0, 32, 4, 65, 24, 106, 41, 3, 0, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 124, 66, 31, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 33, 6, 32, 3, 32, 6, 55, 3, 0, 32, 0, 65, 200, 0, 106, 65, 0, 54, 2, 0, 32, 1, 32, 2, 106, 33, 1, 11, 32, 1, 65, 32, 106, 32, 5, 77, 4, 64, 32, 5, 65, 32, 107, 33, 2, 32, 0, 65, 8, 106, 41, 3, 0, 33, 6, 32, 0, 65, 16, 106, 41, 3, 0, 33, 7, 32, 0, 65, 24, 106, 41, 3, 0, 33, 8, 32, 0, 65, 32, 106, 41, 3, 0, 33, 9, 3, 64, 32, 1, 41, 3, 0, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 32, 6, 124, 66, 31, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 33, 6, 32, 1, 65, 8, 106, 34, 1, 41, 3, 0, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 32, 7, 124, 66, 31, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 33, 7, 32, 1, 65, 8, 106, 34, 1, 41, 3, 0, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 32, 8, 124, 66, 31, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 33, 8, 32, 1, 65, 8, 106, 34, 1, 41, 3, 0, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 32, 9, 124, 66, 31, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 33, 9, 32, 1, 65, 8, 106, 34, 1, 32, 2, 77, 13, 0, 11, 32, 0, 65, 8, 106, 32, 6, 55, 3, 0, 32, 0, 65, 16, 106, 32, 7, 55, 3, 0, 32, 0, 65, 24, 106, 32, 8, 55, 3, 0, 32, 0, 65, 32, 106, 32, 9, 55, 3, 0, 11, 32, 1, 32, 5, 73, 4, 64, 32, 4, 32, 1, 32, 5, 32, 1, 107, 34, 1, 252, 10, 0, 0, 32, 0, 65, 200, 0, 106, 32, 1, 54, 2, 0, 11, 11, 200, 2, 1, 5, 126, 32, 0, 65, 24, 106, 41, 3, 0, 33, 1, 32, 0, 41, 3, 0, 34, 2, 66, 32, 90, 4, 126, 32, 0, 65, 8, 106, 41, 3, 0, 34, 3, 66, 1, 137, 32, 0, 65, 16, 106, 41, 3, 0, 34, 4, 66, 7, 137, 124, 32, 1, 66, 12, 137, 32, 0, 65, 32, 106, 41, 3, 0, 34, 5, 66, 18, 137, 124, 124, 32, 3, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 66, 0, 124, 66, 31, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 133, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 66, 227, 220, 202, 149, 252, 206, 242, 245, 133, 127, 124, 32, 4, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 66, 0, 124, 66, 31, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 133, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 66, 227, 220, 202, 149, 252, 206, 242, 245, 133, 127, 124, 32, 1, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 66, 0, 124, 66, 31, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 133, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 66, 227, 220, 202, 149, 252, 206, 242, 245, 133, 127, 124, 32, 5, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 66, 0, 124, 66, 31, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 133, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 66, 227, 220, 202, 149, 252, 206, 242, 245, 133, 127, 124, 5, 32, 1, 66, 197, 207, 217, 178, 241, 229, 186, 234, 39, 124, 11, 32, 2, 124, 32, 0, 65, 40, 106, 32, 2, 66, 31, 131, 167, 16, 6, 11 ]); - -async function e2() { - const {instance: {exports: {mem: s, xxh32: r, xxh64: o, init32: u, update32: g, digest32: _, init64: m, update64: b, digest64: E}}} = await WebAssembly.instantiate(t2); - let w = new Uint8Array(s.buffer); - function c(r, o) { - if (s.buffer.byteLength < r + o) { - const u = Math.ceil((r + o - s.buffer.byteLength) / 65536); - s.grow(u), w = new Uint8Array(s.buffer); - } - } - function l(s, r, o, u, g, _) { - c(s); - const m = new Uint8Array(s); - return w.set(m), o(0, r), m.set(w.slice(0, s)), { - update(r) { - let o; - return w.set(m), "string" == typeof r ? (c(3 * r.length, s), o = L.encodeInto(r, w.subarray(s)).written) : (c(r.byteLength, s), - w.set(r, s), o = r.byteLength), u(0, s, o), m.set(w.slice(0, s)), this; - }, - digest: () => (w.set(m), _(g(0))) - }; - } - function d3(s) { - return s >>> 0; - } - const S = BigInt(2) ** BigInt(64) - BigInt(1); - function y(s) { - return s & S; - } - const L = new TextEncoder, O = BigInt(0); - function p(s) { - let o = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0; - return c(3 * s.length, 0), d3(r(0, L.encodeInto(s, w).written, o)); - } - function v(s) { - let r = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : O; - return c(3 * s.length, 0), y(o(0, L.encodeInto(s, w).written, r)); - } - return { - h32: p, - h32ToString(s) { - return p(s, arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0).toString(16).padStart(8, "0"); - }, - h32Raw(s) { - let o = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0; - return c(s.byteLength, 0), w.set(s), d3(r(0, s.byteLength, o)); - }, - create32() { - return l(48, arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0, u, g, _, d3); - }, - h64: v, - h64ToString(s) { - return v(s, arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : O).toString(16).padStart(16, "0"); - }, - h64Raw(s) { - let r = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : O; - return c(s.byteLength, 0), w.set(s), y(o(0, s.byteLength, r)); - }, - create64() { - return l(88, arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : O, m, b, E, y); - } - }; -} - -var revMap = {}, numMap = {}; - -for (let s = 0; s < 256; s++) { - revMap[`00${s.toString(16)}`.slice(-2)] = s; - numMap[s] = `00${s.toString(16)}`.slice(-2); -} - -function* range(s, r) { - for (let o = s; o <= r; o++) yield o; -} - -var table = {}, revTable = {}; - -[ ...range(192, 447) ].forEach(((s, r) => { - table[r] = s; - revTable[s] = r; -})); - -var BINARY_CHUNK_MAX = 31457280; - -function hexStringToUint8Array(s) { - const r = s.length / 2, o = new Uint8Array(r); - for (let u = 0; u < r; u++) o[u] = revMap[s[2 * u] + s[2 * u + 1]]; - return o; -} - -function uint8ArrayToHexString(s) { - return [ ...s ].map((s => numMap[s])).join(""); -} - -function btoa_node(s) { - return Buffer.from(s, "binary").toString("base64"); -} - -function atob_node(s) { - return Buffer.from(s, "base64").toString("binary"); -} - -var btoa2 = window && window.btoa ? window.btoa : btoa_node, atob2 = window && window.atob ? window.atob : atob_node, QUANTUM = 32768, writeString = s => { - const r = new Uint8Array(4 * s.length), o = s.length; - let u = 0, g = 0, _ = 0; - for (;_ < o; ) { - g = s.charCodeAt(_++); - if (g < 128) r[u++] = g; else if (g < 2048) { - r[u++] = 192 | g >>> 6; - r[u++] = 128 | 63 & g; - } else if (g < 55296 || g > 57343) { - r[u++] = 224 | g >>> 12; - r[u++] = 128 | g >>> 6 & 63; - r[u++] = 128 | 63 & g; - } else { - g = 65536 + (g - 55296 << 10 | s.charCodeAt(_++) - 56320); - r[u++] = 240 | g >>> 18; - r[u++] = 128 | g >>> 12 & 63; - r[u++] = 128 | g >>> 6 & 63; - r[u++] = 128 | 63 & g; - } - } - return r.slice(0, u); -}, readString = s => { - let r = 0; - const o = s.length; - let u = ""; - for (;r < o; ) { - const g = [], _ = Math.min(r + QUANTUM, o); - for (;r < _; ) { - const o = s[r++]; - if (o < 128) g.push(o); else if (192 == (224 & o)) g.push((31 & o) << 6 | 63 & s[r++]); else if (224 == (240 & o)) g.push((15 & o) << 12 | (63 & s[r++]) << 6 | 63 & s[r++]); else if (240 == (248 & o)) { - let u = (7 & o) << 18 | (63 & s[r++]) << 12 | (63 & s[r++]) << 6 | 63 & s[r++]; - if (u < 65536) g.push(u); else { - u -= 65536; - g.push(55296 + (u >>> 10), 56320 + (1023 & u)); - } - } - } - u += String.fromCharCode(...g); - } - return u; -}, encodeChunkSize = 15e7; - -function arrayBufferToBase64internalBrowser(s) { - return new Promise(((r, o) => { - const u = new Blob([ s ], { - type: "application/octet-binary" - }), g = new FileReader; - g.onload = function(u) { - var g, _; - const m = (null == (_ = null == (g = u.target) ? void 0 : g.result) ? void 0 : _.toString()) || ""; - if (0 != s.byteLength && ("" == m || "data:" == m)) return o(new TypeError("Could not parse the encoded string")); - const b = m.substring(m.indexOf(",") + 1); - r(b); - }; - g.readAsDataURL(u); - })); -} - -function arrayBufferToBase64internalNode(s) { - return Buffer.from(s.buffer).toString("base64"); -} - -var arrayBufferToBase64internal = window && window.btoa ? arrayBufferToBase64internalBrowser : arrayBufferToBase64internalNode; - -async function arrayBufferToBase64Single(s) { - const r = s instanceof Uint8Array ? s : new Uint8Array(s); - if (r.byteLength < QUANTUM) return btoa2(String.fromCharCode.apply(null, [ ...r ])); else return await arrayBufferToBase64internal(r); -} - -async function arrayBufferToBase64(s) { - const r = s instanceof Uint8Array ? s : new Uint8Array(s); - if (r.byteLength < QUANTUM) return [ btoa2(String.fromCharCode.apply(null, [ ...r ])) ]; - const o = r.byteLength, u = []; - let g = 0; - do { - const s = g * encodeChunkSize, o = new DataView(r.buffer, s, Math.min(encodeChunkSize, r.byteLength - s)); - u.push(await arrayBufferToBase64internal(o)); - g++; - } while (g * encodeChunkSize < o); - return u; -} - -function base64ToArrayBuffer(s) { - if ("string" == typeof s) return base64ToArrayBufferInternal(s); - const r = s.map((s => base64ToArrayBufferInternal(s))), o = r.reduce(((s, r) => s + r.byteLength), 0), u = new Uint8Array(o); - let g = 0; - r.forEach((s => { - u.set(new Uint8Array(s), g); - g += s.byteLength; - })); - return u.buffer; -} - -var base64ToArrayBufferInternal = window && window.atob ? base64ToArrayBufferInternalBrowser : base64ToArrayBufferInternalNode; - -function base64ToArrayBufferInternalNode(s) { - try { - return Buffer.from(s, "base64").buffer; - } catch (s) { - Logger("Base64 decode error (Node)", LOG_LEVEL_VERBOSE); - Logger(s, LOG_LEVEL_VERBOSE); - return new ArrayBuffer(0); - } -} - -function base64ToArrayBufferInternalBrowser(s) { - try { - const r = window.atob(s), o = r.length, u = new Uint8Array(o); - for (let s = 0; s < o; s++) u[s] = r.charCodeAt(s); - return u.buffer; - } catch (s) { - Logger("Base64 Decode error", LOG_LEVEL_VERBOSE); - Logger(s, LOG_LEVEL_VERBOSE); - return new ArrayBuffer(0); - } -} - -function* pickPiece(s, r) { - let o = ""; - e: do { - const u = s.shift(); - if ("undefined" == typeof u) { - yield o; - break e; - } - if (u.startsWith("```") || u.startsWith(" ```") || u.startsWith(" ```") || u.startsWith(" ```")) { - yield o; - o = u + (0 != s.length ? "\n" : ""); - t: do { - const r = s.shift(); - if ("undefined" == typeof r) break t; - o += r + (0 != s.length ? "\n" : ""); - } while (s.length > 0 && !(s[0].startsWith("```") || s[0].startsWith(" ```") || s[0].startsWith(" ```") || s[0].startsWith(" ```"))); - const r = o.endsWith("="), g = o.length > 2048, _ = s.shift(); - if ("undefined" != typeof _) { - o += _; - o += 0 != s.length ? "\n" : ""; - } - if (!r && !g) { - const s = /(.*?[;,:<])/g, r = o.split(s).filter((s => "" != s)); - for (const s of r) yield s; - } else yield o; - o = ""; - } else { - o += u + (0 != s.length ? "\n" : ""); - if (o.length >= r || 0 == s.length || "#" == s[0] || "#" == o[0]) { - yield o; - o = ""; - } - } - } while (s.length > 0); -} - -var charNewLine = "\n".charCodeAt(0); - -function splitPiecesText(s, r, o, u) { - const g = "string" == typeof s ? [ s ] : s; - return function* pieces() { - for (const s of g) if (o) { - const o = pickPiece(s.split("\n"), u); - for (const s of o) { - let o = s; - do { - let s = r; - if (o.charCodeAt(s - 1) != o.codePointAt(s - 1)) s++; - yield o.substring(0, s); - o = o.substring(s); - } while ("" != o); - } - } else { - let o = s; - do { - const s = r, u = o.substring(0, s); - o = o.substring(s); - yield u; - } while ("" != o); - } - }; -} - -async function splitPieces2(s, r, o, u, g) { - if (isTextBlob(s)) return splitPiecesText(await s.text(), r, o, u); - let _ = 0; - if (g && g.endsWith(".pdf")) _ = "/".charCodeAt(0); - let m = 1, b = Math.max(1e5, Math.min(1e8, s.size)); - for (;b > 10; ) { - b /= 12.5; - m++; - } - u = Math.floor(10 ** (m - 1)); - return async function* piecesBlob() { - const o = s.size; - let g = 0; - do { - let o = r; - const m = new Uint8Array(await s.slice(g, g + r).arrayBuffer()); - let b = m.indexOf(_, u); - o = -1 == b ? r : Math.min(r, b); - if (-1 == b) b = m.indexOf(charNewLine, u); - const E = m.slice(0, o); - g += E.length; - yield await arrayBufferToBase64Single(E); - } while (g < o); - }; -} - -function versionNumberString2Number(s) { - return s.split(".").reverse().map(((s, r) => s / 1 * 1e3 ** r)).reduce(((s, r) => s + r), 0); -} - -var hashFunc, escapeStringToHTML = s => { - if (!s) return ""; else return s.replace(/[<>&"'`]/g, (s => ({ - "<": "<", - ">": ">", - "&": "&", - '"': """, - "'": "'", - "`": "`" - }[s]))); -}, crc32kTable = new Uint32Array(256), crc32cTable = new Uint32Array(256); - -function generateCRC32KTable() { - for (let s = 0; s < 256; s++) { - let r = s; - for (let s = 0; s < 8; s++) if (1 & r) r = r >>> 1 ^ 3988292384; else r >>>= 1; - crc32kTable[s] = r; - } -} - -function generateCRC32CTable() { - for (let s = 0; s < 256; s++) { - let r = s; - for (let s = 0; s < 8; s++) if (1 & r) r = r >>> 1 ^ 517762881; else r >>>= 1; - crc32cTable[s] = r; - } -} - -generateCRC32CTable(); - -generateCRC32KTable(); - -function decodeToArrayBuffer(s) { - if (1 == s.length) return _decodeToArrayBuffer(s[0]); - const r = s.map((s => _decodeToArrayBuffer(s))), o = r.reduce(((s, r) => s + r.byteLength), 0), u = new Uint8Array(o); - let g = 0; - r.forEach((s => { - u.set(new Uint8Array(s), g); - g += s.byteLength; - })); - return u.buffer; -} - -function _decodeToArrayBuffer(s) { - const r = new Uint8Array(s.length), o = s.length; - for (let u = 0; u < o; u++) { - const o = s.charCodeAt(u); - if (o >= 38 && o <= 126 && 58 != o) r[u] = o; else r[u] = revTable[o]; - } - return r.buffer; -} - -function decodeBinary(s) { - if (0 == s.length) return (new Uint8Array).buffer; - if ("string" == typeof s) { - if ("%" === s[0]) return _decodeToArrayBuffer(s.substring(1)); - } else if ("%" === s[0][0]) { - const [r, ...o] = s; - return decodeToArrayBuffer([ r.substring(1), ...o ]); - } - return base64ToArrayBuffer(s); -} - -async function initHashFunc() { - try { - const {h32ToString: s} = await e2(); - hashFunc = s; - Logger("xxhash for plugin initialised", LOG_LEVEL_VERBOSE); - } catch (s) { - Logger("Could not initialise xxhash. fallback...", LOG_LEVEL_VERBOSE); - Logger(s); - try { - const {h32: s} = await xxhash_wasm_default(); - hashFunc = r => s(r); - } catch (s) { - Logger("Could not initialise old xxhash for plugin: use sha1", LOG_LEVEL_VERBOSE); - Logger(s); - hashFunc = s => s; - } - } - return hashFunc; -} - -initHashFunc(); - -async function sha1(s) { - const r = writeString(s), o = await webcrypto.subtle.digest({ - name: "SHA-1" - }, r); - return await arrayBufferToBase64Single(o); -} - -function digestHash(s) { - return hashFunc(s); -} - -function isValidFilenameInWidows(s) { - if (/[\u0000-\u001f]|[\\":?<>|*#]/g.test(s)) return false; - if (/(\\|\/)(COM\d|LPT\d|CON|PRN|AUX|NUL|CLOCK$)($|\.)/gi.test(s)) return false; else return true; -} - -function isValidFilenameInDarwin(s) { - return !/[\u0000-\u001f]|[:]/g.test(s); -} - -function isValidFilenameInLinux(s) { - return !/[\u0000-\u001f]|[:]/g.test(s); -} - -function isValidFilenameInAndroid(s) { - return !/[\u0000-\u001f]|[\\":?<>|*#]/g.test(s); -} - -function isFilePath(s) { - if (-1 === s.indexOf(":")) return true; else return false; -} - -function stripAllPrefixes(s) { - if (isFilePath(s)) return s; - const [, r] = expandFilePathPrefix(s); - return stripAllPrefixes(r); -} - -function addPrefix(s, r) { - if (r && s.startsWith(r)) return s; else return `${null != r ? r : ""}${s}`; -} - -function expandFilePathPrefix(s) { - let [r, o] = s.split(":", 2); - if (!o) { - o = r; - r = ""; - } else r += ":"; - return [ r, o ]; -} - -function expandDocumentIDPrefix(s) { - let [r, o] = s.split(":", 2); - if (!o) { - o = r; - r = ""; - } else r += ":"; - return [ r, o ]; -} - -var hashString = memorizeFuncWithLRUCache((async s => { - const r = writeString(s); - let o = await webcrypto.subtle.digest("SHA-256", r); - const u = s.length; - for (let s = 0; s < u; s++) o = await webcrypto.subtle.digest("SHA-256", r); - return uint8ArrayToHexString(new Uint8Array(o)); -})); - -async function path2id_base(s, r) { - if (s.startsWith(PREFIX_OBFUSCATED)) return s; - let o = s; - if (o.startsWith("_")) o = "/" + o; - if (!r) return o; - const [u, g] = expandFilePathPrefix(o); - if (g.startsWith(PREFIX_OBFUSCATED)) return o; - const _ = await hashString(r), m = await hashString(`${_}:${s}`); - return u + PREFIX_OBFUSCATED + m; -} - -function id2path_base(s, r) { - if (r && (null == r ? void 0 : r.path)) return id2path_base(r.path); - if (s.startsWith(PREFIX_OBFUSCATED)) throw new Error("Entry has been obfuscated!"); - const [o, u] = expandDocumentIDPrefix(s); - if (u.startsWith(PREFIX_OBFUSCATED)) throw new Error("Entry has been obfuscated!"); - if (u.startsWith("/")) return u.substring(1); else return o + u; -} - -function getPath(s) { - return id2path_base(s._id, s); -} - -function stripPrefix(s) { - const [r, o] = s.split(":", 2); - if (!o) return r; else return o; -} - -function shouldBeIgnored(s) { - if (s == FLAGMD_REDFLAG) return true; - if (s == FLAGMD_REDFLAG2) return true; - if (s == FLAGMD_REDFLAG2_HR) return true; - if (s == FLAGMD_REDFLAG3) return true; - if (s == FLAGMD_REDFLAG3_HR) return true; - if (s.startsWith(PREFIXMD_LOGFILE)) return true; else return false; -} - -function isPlainText(s) { - if (s.endsWith(".md")) return true; - if (s.endsWith(".txt")) return true; - if (s.endsWith(".svg")) return true; - if (s.endsWith(".html")) return true; - if (s.endsWith(".csv")) return true; - if (s.endsWith(".css")) return true; - if (s.endsWith(".js")) return true; - if (s.endsWith(".xml")) return true; - if (s.endsWith(".canvas")) return true; else return false; -} - -function shouldSplitAsPlainText(s) { - if (s.endsWith(".md")) return true; - if (s.endsWith(".txt")) return true; - if (s.endsWith(".canvas")) return true; else return false; -} - -var matchOpts = { - platform: "linux", - dot: true, - flipNegate: true, - nocase: true -}; - -function isAccepted(s, r) { - if (-1 !== s.indexOf("./") || -1 !== s.indexOf("../")) return false; - const o = r.map((s => s.trim())).filter((s => s.length > 0 && !s.startsWith("#"))); - let u; - for (const r of o) { - if (r.endsWith("/")) if (minimatch(s, `${r}**`, matchOpts)) return false; - const o = r.startsWith("!"); - if (minimatch(s, r, matchOpts) || !r.endsWith("/") && minimatch(s, r + "/**", matchOpts)) u = o; - } - return u; -} - -async function isAcceptedAll(s, r, o) { - const u = unique(s.substring(0, s.lastIndexOf("/")).split("/").reduce(((s, r) => [ ...s, s[s.length - 1] + "/" + r ]), [ "" ]).map((s => s.substring(1)))).reverse(); - for (const g of u) for (const u of r) { - const r = g + "/" + u, _ = await o(r); - if (false === _) continue; - const m = isAccepted(s.substring(g.length ? g.length + 1 : 0), _); - if (void 0 !== m) return m; - } - return true; -} - -function makeUniqueString() { - const s = [ ...Array(30) ].map((() => Math.floor(52 * Math.random()))).map((s => "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"[s])).join(""); - return `${Date.now()}-${s}`; -} - -function Semaphore(s, r) { - let o = s, u = 0, g = []; - function execProcess() { - g = g.filter((s => "DONE" != s.state)); - for (const s of g) if ("NONE" == s.state) { - if (s.quantity + u > o) break; - s.state = "RUNNING"; - u += s.quantity; - if (null == s ? void 0 : s.timer) clearTimeout(s.timer); - s.notify(true); - } - } - function release(s) { - const o = g.find((r => r.key == s)); - if (!o) throw new Error("Missing locked semaphore!"); - if ("RUNNING" == o.state) u -= o.quantity; - o.state = "DONE"; - if (r) r(g.filter((s => "DONE" != s.state))); - execProcess(); - } - return { - setLimit(s) { - o = s; - }, - _acquire(s, r, u) { - const _ = makeUniqueString(); - if (o < s) throw Error("Too big quantity"); - let notify = s => {}; - const m = new Promise((s => { - notify = r => { - if (r) s((() => { - release(_); - })); else s(false); - }; - })), b = { - key: _, - notify, - semaphoreStopper: m, - quantity: s, - memo: r, - state: "NONE" - }; - if (u) b.timer = setTimeout((() => { - release(_); - notify(false); - }), u); - g.push(b); - execProcess(); - return m; - }, - acquire(s = 1, r) { - return this._acquire(s, null != r ? r : "", 0); - }, - tryAcquire(s = 1, r, o) { - return this._acquire(s, null != o ? o : "", r); - }, - peekQueues: () => g - }; -} - -var semiStaticFieldBuffer, KeyBuffs = new Map, decKeyBuffs = new Map, KEY_RECYCLE_COUNT = 100, nonceBuffer = new Uint32Array(1); - -async function getKeyForEncrypt(s, r) { - const o = `${s}-${r}`, u = KeyBuffs.get(o); - if (u) { - u.count--; - if (u.count > 0) return [ u.key, u.salt ]; - u.count--; - } - const g = 15 - s.length, _ = r ? 1e3 * (g > 0 ? g : 0) + 121 - g : 1e5, m = (new TextEncoder).encode(s), b = await webcrypto.subtle.digest({ - name: "SHA-256" - }, m), E = await webcrypto.subtle.importKey("raw", b, { - name: "PBKDF2" - }, false, [ "deriveKey" ]), w = webcrypto.getRandomValues(new Uint8Array(16)), S = await webcrypto.subtle.deriveKey({ - name: "PBKDF2", - salt: w, - iterations: _, - hash: "SHA-256" - }, E, { - name: "AES-GCM", - length: 256 - }, false, [ "encrypt" ]); - KeyBuffs.set(o, { - key: S, - salt: w, - count: KEY_RECYCLE_COUNT - }); - return [ S, w ]; -} - -var keyGCCount = 5 * KEY_RECYCLE_COUNT, decKeyIdx = 0, decKeyMin = 0; - -async function getKeyForDecryption(s, r, o) { - if (--keyGCCount < 0) { - keyGCCount = KEY_RECYCLE_COUNT; - const s = (decKeyIdx - decKeyMin) / 2; - for (const [r, o] of decKeyBuffs) { - if (o.count < s) decKeyBuffs.delete(r); - decKeyMin = decKeyIdx; - } - } - decKeyIdx++; - const u = s + uint8ArrayToHexString(r) + o, g = decKeyBuffs.get(u); - if (g) { - g.count = decKeyIdx; - return [ g.key, g.salt ]; - } - const _ = 15 - s.length, m = o ? 1e3 * (_ > 0 ? _ : 0) + 121 - _ : 1e5, b = (new TextEncoder).encode(s), E = await webcrypto.subtle.digest({ - name: "SHA-256" - }, b), w = await webcrypto.subtle.importKey("raw", E, { - name: "PBKDF2" - }, false, [ "deriveKey" ]), S = await webcrypto.subtle.deriveKey({ - name: "PBKDF2", - salt: r, - iterations: m, - hash: "SHA-256" - }, w, { - name: "AES-GCM", - length: 256 - }, false, [ "decrypt" ]); - decKeyBuffs.set(u, { - key: S, - salt: r, - count: 0 - }); - return [ S, r ]; -} - -function getSemiStaticField(s) { - if (null != semiStaticFieldBuffer && !s) return semiStaticFieldBuffer; else return semiStaticFieldBuffer = webcrypto.getRandomValues(new Uint8Array(12)); -} - -function getNonce() { - nonceBuffer[0]++; - if (nonceBuffer[0] > 1e4) getSemiStaticField(true); - return nonceBuffer; -} - -async function encrypt(s, r, o) { - const [u, g] = await getKeyForEncrypt(r, o), _ = getSemiStaticField(), m = getNonce(), b = new Uint8Array([ ..._, ...new Uint8Array(m.buffer) ]), E = writeString(s), w = await webcrypto.subtle.encrypt({ - name: "AES-GCM", - iv: b - }, u, E), S = "" + await arrayBufferToBase64Single(new Uint8Array(w)); - return `%${uint8ArrayToHexString(b)}${uint8ArrayToHexString(g)}${S}`; -} - -async function getKeyForObfuscatePath(s, r, o) { - const u = 15 - s.length, g = o ? 1e3 * (u > 0 ? u : 0) + 121 - u : 1e5, _ = (new TextEncoder).encode(s), m = await webcrypto.subtle.digest({ - name: "SHA-256" - }, _), b = new Uint8Array(await webcrypto.subtle.digest({ - name: "SHA-256" - }, new Uint8Array([ ...r, ..._ ]))), E = b.slice(0, 16), w = b.slice(16, 32), S = await webcrypto.subtle.importKey("raw", m, { - name: "PBKDF2" - }, false, [ "deriveKey" ]); - return [ await webcrypto.subtle.deriveKey({ - name: "PBKDF2", - salt: E, - iterations: g, - hash: "SHA-256" - }, S, { - name: "AES-GCM", - length: 256 - }, false, [ "encrypt" ]), E, w ]; -} - -async function obfuscatePath(s, r, o) { - const u = writeString(s), [g, _, m] = await getKeyForObfuscatePath(r, u, o), b = await webcrypto.subtle.encrypt({ - name: "AES-GCM", - iv: m - }, g, u), E = await arrayBufferToBase64Single(new Uint8Array(b)); - return `%${uint8ArrayToHexString(m)}${uint8ArrayToHexString(_)}${E}`; -} - -async function decryptV2(s, r, o) { - try { - const u = s.substring(1, 33), g = s.substring(33, 65), _ = s.substring(65), [m] = await getKeyForDecryption(r, hexStringToUint8Array(g), o), b = hexStringToUint8Array(u), E = decodeBinary(_), w = await webcrypto.subtle.decrypt({ - name: "AES-GCM", - iv: b - }, m, E); - return readString(new Uint8Array(w)); - } catch (s) { - Logger("Couldn't decode! You should wrong the passphrases (V2)", LOG_LEVEL_VERBOSE); - Logger(s, LOG_LEVEL_VERBOSE); - throw s; - } -} - -async function decrypt(s, r, o) { - try { - if ("%" == s[0]) return decryptV2(s, r, o); - if (!s.startsWith("[") || !s.endsWith("]")) throw new Error("Encrypted data corrupted!"); - const u = s.substring(1, s.length - 1).split(",").map((s => '"' == s[0] ? s.substring(1, s.length - 1) : s)), [g, _, m] = u, [b] = await getKeyForDecryption(r, hexStringToUint8Array(m), o), E = hexStringToUint8Array(_), w = atob2(g), S = w.length, L = new Uint8Array(S); - for (let s = S; s >= 0; --s) L[s] = w.charCodeAt(s); - const O = await webcrypto.subtle.decrypt({ - name: "AES-GCM", - iv: E - }, b, L), D = readString(new Uint8Array(O)); - return JSON.parse(D); - } catch (s) { - Logger("Couldn't decode! You should wrong the passphrases", LOG_LEVEL_VERBOSE); - Logger(s, LOG_LEVEL_VERBOSE); - throw s; - } -} - -async function tryDecrypt(s, r, o) { - if (!r) return false; - try { - return await decrypt(s, r, o); - } catch (s) { - return false; - } -} - -async function testCrypt() { - const s = "supercalifragilisticexpialidocious", r = await encrypt(s, "passwordTest", false); - if (s != await decrypt(r, "passwordTest", false)) { - Logger("WARNING! Your device would not support encryption.", LOG_LEVEL_VERBOSE); - return false; - } else { - Logger("CRYPT LOGIC OK", LOG_LEVEL_VERBOSE); - return true; - } -} - -var queueTails = new Map; - -async function performTask(s) { - const r = s.key; - try { - const r = await s.task(); - s.resolver(r); - } catch (r) { - s.rejector(r); - } finally { - const o = s.next; - queueTails.set(r, o); - if (o) performTask(o); - } -} - -function _enqueue(s, r, {swapIfExist: o, shareResult: u} = {}) { - let resolver = () => {}, rejector = () => {}; - const g = new Promise(((s, r) => { - resolver = s, rejector = r; - })), _ = { - task: r, - resolver, - rejector, - key: s - }, m = queueTails.get(s); - if (void 0 === m) { - queueTails.set(s, _); - performTask(_); - } else { - const r = m; - queueTails.set(s, _); - r.next = _; - if (o) r.rejector(new Error("Cancelled")); - } - return g; -} - -function serialized(s, r) { - return _enqueue(s, r); -} - -function shareRunningResult(s, r) { - const o = queueTails.get(s); - if (!o) return _enqueue(s, r); - const u = o.resolver, g = o.rejector; - let resolver = () => {}, rejector = () => {}; - const _ = new Promise(((s, r) => { - resolver = s, rejector = r; - })); - o.resolver = s => { - u(s); - resolver(s); - }; - o.rejector = s => { - g(s); - rejector(s); - }; - return _; -} - -function skipIfDuplicated(s, r) { - if (void 0 !== queueTails.get(s)) return Promise.resolve(null); else return _enqueue(s, r); -} - -function isLockAcquired(s) { - return void 0 !== queueTails.get(s); -} - -function unwrapTaskResult(s) { - if ("ok" in s) return s.ok; - if ("err" in s) return s.err; -} - -function isTaskWaiting(s) { - if (s instanceof Promise) return false; - if (s instanceof Function) return true; - throw new Error("Invalid state"); -} - -async function wrapEachProcess(s, r) { - try { - return { - key: s, - ok: await r - }; - } catch (r) { - return { - key: s, - err: r - }; - } -} - -async function* processAllTasksWithConcurrencyLimit(s, r) { - const o = new Map; - let u = 0; - const g = r.reverse(); - for (;g.length > 0 || o.size > 0; ) { - e: for (;o.size < s && g.length > 0; ) { - const s = g.pop(); - if (void 0 === s) break e; - u++; - const r = wrapEachProcess(u, isTaskWaiting(s) ? s() : s); - o.set(u, r); - } - const r = await Promise.race(o.values()); - o.delete(r.key); - yield r; - } -} - -async function mapAllTasksWithConcurrencyLimit(s, r) { - const o = new Map; - for await (const u of processAllTasksWithConcurrencyLimit(s, r)) o.set(u.key, u); - return [ ...o.entries() ].sort(((s, r) => s[0] - r[0])).map((s => s[1])); -} - -var tasks = {}; - -function scheduleTask(s, r, o, u) { - if (!u || !(s in tasks)) { - cancelTask(s); - tasks[s] = setTimeout((async () => { - delete tasks[s]; - await o(); - }), r); - } -} - -function cancelTask(s) { - if (s in tasks) { - clearTimeout(tasks[s]); - delete tasks[s]; - } -} - -function cancelAllTasks() { - for (const s in tasks) { - clearTimeout(tasks[s]); - delete tasks[s]; - } -} - -var intervals = {}; - -function cancelAllPeriodicTask() { - for (const s in intervals) { - clearInterval(intervals[s]); - delete intervals[s]; - } -} - -var processNo = 0, QueueProcessor = class { - constructor(s, r, o, u) { - this._queue = []; - this._enqueueProcessor = (s, r) => (s.push(r), s); - this._isSuspended = true; - this._nextProcessNeedsImmediate = false; - this._processing = void 0; - this._waitId = ""; - this._instance = processNo++; - this._keepResultUntilDownstreamConnected = false; - this._keptResult = []; - this._onIdle = () => {}; - this._runOnUpdateBatch = () => {}; - this.concurrentLimit = 1; - this.batchSize = 1; - this.yieldThreshold = 1; - this.delay = 0; - this.interval = 0; - this.processingEntities = 0; - var g, _, m, b, E, w, S; - this._root = this; - this._processor = s; - this.batchSize = null != (g = null == r ? void 0 : r.batchSize) ? g : 1; - this.yieldThreshold = null != (m = null != (_ = null == r ? void 0 : r.yieldThreshold) ? _ : null == r ? void 0 : r.batchSize) ? m : 0; - this.concurrentLimit = null != (b = null == r ? void 0 : r.concurrentLimit) ? b : 1; - this.delay = null != (E = null == r ? void 0 : r.delay) ? E : 0; - this.maintainDelay = null != (w = null == r ? void 0 : r.maintainDelay) ? w : false; - this.interval = null != (S = null == r ? void 0 : r.interval) ? S : 0; - if (null == r ? void 0 : r.keepResultUntilDownstreamConnected) this._keepResultUntilDownstreamConnected = r.keepResultUntilDownstreamConnected; - if (null == r ? void 0 : r.remainingReactiveSource) this._remainingReactiveSource = null == r ? void 0 : r.remainingReactiveSource; - if (null == r ? void 0 : r.totalRemainingReactiveSource) this._totalRemainingReactiveSource = null == r ? void 0 : r.totalRemainingReactiveSource; - if (null == r ? void 0 : r.processingEntitiesReactiveSource) this._processingEntitiesReactiveSource = null == r ? void 0 : r.processingEntitiesReactiveSource; - if (void 0 !== (null == r ? void 0 : r.suspended)) this._isSuspended = null == r ? void 0 : r.suspended; - if (u) this.replaceEnqueueProcessor(u); - if (void 0 !== (null == r ? void 0 : r.pipeTo)) this.pipeTo(r.pipeTo); - if (o) this.enqueueAll(o); - } - get remaining() { - return this._queue.length + this.processingEntities; - } - get totalRemaining() { - var s; - return this.remaining + ((null == (s = this._pipeTo) ? void 0 : s.totalRemaining) || 0); - } - suspend() { - this._isSuspended = true; - return this; - } - resume() { - this._isSuspended = false; - this.requestNextFlush(); - this._run(); - return this; - } - resumePipeLine() { - var s; - null == (s = this._pipeTo) || s.resumePipeLine(); - this.resume(); - return this; - } - startPipeline() { - this._root.resumePipeLine(); - return this; - } - get root() { - return this._root; - } - replaceEnqueueProcessor(s) { - this._enqueueProcessor = s; - return this; - } - modifyQueue(s) { - this._queue = s(this._queue); - this._updateBatchProcessStatus(); - } - clearQueue() { - this._queue = []; - this._updateBatchProcessStatus(); - } - onUpdateProgress(s) { - this._runOnUpdateBatch = s; - return this; - } - pipeTo(s) { - this._pipeTo = s; - this._pipeTo._root = this._root; - if (this._keptResult.length > 0) { - const s = [ ...this._keptResult ]; - this._keptResult = []; - this._pipeTo.enqueueAll(s); - } - return s; - } - isIdle() { - return 0 == this._queue.length && 0 === this._processing && (!this._pipeTo ? true : this._pipeTo.isIdle()); - } - onIdle(s) { - this._onIdle = s; - return this; - } - _updateReactiveSource() { - if (this._remainingReactiveSource) this._remainingReactiveSource.value = this.remaining; - if (this._totalRemainingReactiveSource) this._totalRemainingReactiveSource.value = this.totalRemaining; - if (this._processingEntitiesReactiveSource) this._processingEntitiesReactiveSource.value = this.processingEntities; - } - _updateBatchProcessStatus() { - this._updateReactiveSource(); - this._runOnUpdateBatch(); - } - _collectBatch() { - return this._queue.splice(0, this.batchSize); - } - _finalizeBatch(s) { - this._updateBatchProcessStatus(); - } - _spawnProcess() { - setTimeout((() => this._process()), 0); - } - isAnyEntityRemaining() { - return 0 != this._queue.length; - } - enqueue(s) { - this._queue = this._enqueueProcessor(this._queue, s); - this._updateBatchProcessStatus(); - this._run(); - return this; - } - enqueueAll(s) { - let r = this._queue; - for (const o of s) r = this._enqueueProcessor(r, o); - this._queue = r; - this._updateBatchProcessStatus(); - this._run(); - return this; - } - requestNextFlush() { - this._nextProcessNeedsImmediate = true; - } - flush() { - if (!this._isSuspended) { - cancelTask(`kickProcess-${this._instance}`); - this._process(); - return this.waitForAllDownstream(); - } - } - waitForAllDownstream(s) { - if (this.isIdle()) return Promise.resolve(true); - if ("" == this._waitId) { - const s = Date.now() + "-" + Math.random(); - this._waitId = s; - } - return waitForSignal(this._waitId, s); - } - waitForPipeline(s) { - this._root.startPipeline(); - return this._root.waitForAllDownstream(s); - } - async _runProcessor(s) { - const r = await this._processor(s); - if (r) if (this._pipeTo) this._pipeTo.enqueueAll(r); else if (this._keepResultUntilDownstreamConnected) this._keptResult.push(...r); - } - async _process() { - if (void 0 === this._processing) this._processing = 0; - if (!(this._processing >= this.concurrentLimit)) { - if (this._isSuspended) return this._root._notifyIfIdle(); - try { - this._processing++; - let s; - do { - s = this._collectBatch(); - if (!s || 0 == s.length) break; - const r = s.length; - this.processingEntities += r; - this._updateReactiveSource(); - if (this.isAnyEntityRemaining() && this._processing < this.concurrentLimit) this._spawnProcess(); - try { - await this._runProcessor(s); - } catch (s) { - Logger("Processor error!"); - Logger(s, LOG_LEVEL_VERBOSE); - } finally { - this.processingEntities -= r; - this._updateReactiveSource(); - this._finalizeBatch(s); - } - } while (!(this._isSuspended || s && 0 != s.length)); - } finally { - this._processing--; - } - if (this.isAnyEntityRemaining()) this._spawnProcess(); - this._root._notifyIfIdle(); - } - } - _notifyIfIdle() { - if (!this.isIdle()) return; - this._onIdle(); - this._updateReactiveSource(); - if ("" == this._waitId) return; - const s = this._waitId; - this._waitId = ""; - sendSignal(s); - } - _run() { - if (this._isSuspended) return; - const s = 0 == this.delay || this.yieldThreshold > 0 && this._queue.length > this.yieldThreshold || this._nextProcessNeedsImmediate ? 0 : this.delay; - this._nextProcessNeedsImmediate = false; - if (this.interval) runWithStartInterval(`kickProcess-interval-${this._instance}`, this.interval, (async () => await scheduleTask(`kickProcess-${this._instance}`, s, (() => this._process()), this.maintainDelay))); else scheduleTask(`kickProcess-${this._instance}`, s, (() => this._process()), this.maintainDelay); - } -}, KeyedQueueProcessor = class extends QueueProcessor { - constructor(s, r) { - super((r => s(r.map((s => s.entity)))), r); - this.processingKeys = new Set; - } - _collectBatch() { - const s = []; - let r = 0; - do { - if (r >= this._queue.length) break; - const o = this._queue[r].key; - if (!this.processingKeys.has(o)) { - this.processingKeys.add(o); - s.push(this._queue[r]); - this._queue.splice(r, 1); - if (s.length >= this.batchSize) break; - } else r++; - } while (r + 1 < this._queue.length); - return s; - } - _finalizeBatch(s) { - for (const r of s) this.processingKeys.delete(r.key); - super._finalizeBatch(s); - } - isAnyEntityRemaining() { - return 0 != this._queue.filter((s => !this.processingKeys.has(s.key))).length; - } - enqueueWithKey(s, r) { - this.enqueue({ - entity: r, - key: s - }); - return this; - } -}, isValidRemoteCouchDBURI = s => { - if (s.startsWith("https://")) return true; - if (s.startsWith("http://")) return true; else return false; -}; - -function isCloudantURI(s) { - if (-1 !== s.indexOf(".cloudantnosqldb.") || -1 !== s.indexOf(".cloudant.com")) return true; else return false; -} - -var checkRemoteVersion = async (s, r, o = VER) => { - try { - const u = await s.get(VERSIONINFO_DOCID); - if ("versioninfo" != u.type) return false; - const g = u.version; - if (g < o) if (await r(g, o)) { - await bumpRemoteVersion(s); - return true; - } - if (g == o) return true; else return false; - } catch (r) { - if (isErrorOfMissingDoc(r)) if (await bumpRemoteVersion(s)) return true; else return false; - throw r; - } -}, bumpRemoteVersion = async (s, r = VER) => { - const o = { - _id: VERSIONINFO_DOCID, - version: r, - type: "versioninfo" - }, u = await resolveWithIgnoreKnownError(s.get(VERSIONINFO_DOCID), o); - if ("versioninfo" != u.type) return false; - o._rev = u._rev; - await s.put(o); - return true; -}, checkSyncInfo = async s => { - try { - const r = await s.get(SYNCINFO_ID); - console.log(r); - return true; - } catch (r) { - if (isErrorOfMissingDoc(r)) { - const r = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", o = [ ...Array(30) ].map((s => Math.floor(Math.random() * r.length))).map((s => r[s])).join(""), u = { - _id: SYNCINFO_ID, - type: "syncinfo", - data: o - }; - if (await s.put(u)) return true; else return false; - } else { - console.dir(r); - return false; - } - } -}, enableEncryption = (s, r, o, u) => { - const g = new Map; - s.transform({ - incoming: async s => { - const u = { - ...s - }; - if (isEncryptedChunkEntry(u) || isSyncInfoEntry(u)) try { - u.data = await encrypt(u.data, r, o); - } catch (s) { - Logger("Encryption failed.", LOG_LEVEL_NOTICE); - Logger(s); - throw s; - } - if (isObfuscatedEntry(u)) try { - u.path = await obfuscatePath(getPath(u), r, o); - } catch (s) { - Logger("Encryption failed.", LOG_LEVEL_NOTICE); - Logger(s); - throw s; - } - return u; - }, - outgoing: async s => { - var _, m; - const b = { - ...s - }, E = isEncryptedChunkEntry(b) || isSyncInfoEntry(b), w = isObfuscatedEntry(b); - if (E || w) { - if (u && g.has(b._id)) return b; - try { - if (E) b.data = await decrypt(b.data, r, o); - if (w) b.path = await decrypt(getPath(b), r, o); - if (u) g.set(b._id, true); - } catch (s) { - if (o) try { - if (E) b.data = await decrypt(b.data, r, false); - if (w) b.path = await decrypt(getPath(b), r, o); - if (u) g.set(b._id, true); - } catch (s) { - if (u && "SyntaxError" == s.name) return b; - Logger("Decryption failed.", LOG_LEVEL_NOTICE); - Logger(s, LOG_LEVEL_VERBOSE); - Logger(`id:${b._id}-${null == (_ = b._rev) ? void 0 : _.substring(0, 10)}`, LOG_LEVEL_VERBOSE); - throw s; - } else { - Logger("Decryption failed.", LOG_LEVEL_NOTICE); - Logger(s, LOG_LEVEL_VERBOSE); - Logger(`id:${b._id}-${null == (m = b._rev) ? void 0 : m.substring(0, 10)}`, LOG_LEVEL_VERBOSE); - throw s; - } - } - } - return b; - } - }); -}; - -function isErrorOfMissingDoc(s) { - return 404 == (s && (null == s ? void 0 : s.status)); -} - -async function prepareChunkDesignDoc(s) { - var r; - const o = { - _id: "_design/chunks", - _rev: void 0, - ver: 2, - views: { - collectDangling: { - map: (function(s) { - if (s._id.startsWith("h:")) emit([ s._id ], 0); else if ("children" in s) s.children.forEach((s => emit([ s ], 1))); - }).toString(), - reduce: "_sum" - } - } - }; - let u = false; - try { - const g = await s.get(o._id); - if (null != (r = null == g ? void 0 : g.ver) ? r : 0 < o.ver) { - o._rev = g._rev; - u = true; - } - } catch (s) { - if (404 == s.status) u = true; else { - Logger("Failed to make design document for operating chunks"); - Logger(s, LOG_LEVEL_VERBOSE); - return false; - } - } - try { - if (u) await s.put(o); - } catch (s) { - Logger("Failed to make design document for operating chunks"); - Logger(s, LOG_LEVEL_VERBOSE); - return false; - } - return true; -} - -async function collectChunksUsage(s) { - if (!await prepareChunkDesignDoc(s)) { - Logger("Could not prepare design document for operating chunks"); - return []; - } - return (await s.query("chunks/collectDangling", { - reduce: true, - group: true - })).rows; -} - -function collectUnreferencedChunks(s) { - return collectChunks(s, "DANGLING"); -} - -async function collectChunks(s, r) { - const o = await collectChunksUsage(s), u = ("ALL" == r ? o : o.filter((s => "DANGLING" == r ? 0 == s.value : 0 != s.value))).flatMap((s => s.key)); - return (await s.allDocs({ - keys: u - })).rows.filter((s => !("error" in s))).map((s => ({ - id: s.id, - rev: s.value.rev - }))); -} - -async function collectUnbalancedChunkIDs(s, r) { - const o = await collectChunks(s, "INUSE"), u = await collectChunks(r, "INUSE"); - return { - onlyOnLocal: o.filter((s => !u.some((r => r.id == s.id)))), - onlyOnRemote: u.filter((s => !o.some((r => r.id == s.id)))) - }; -} - -async function purgeChunksLocal(s, r) { - await serialized("purge-local", (async () => { - try { - Logger(`Purging unused ${r.length} chunks `, LOG_LEVEL_NOTICE, "purge-local-backup"); - const o = arrayToChunkedArray(r, 100); - let u = { - ok: 0, - exist: 0, - error: 0 - }; - for (const r of o) { - const o = (await s.allDocs({ - keys: r.map((s => s.id)), - include_docs: true - })).rows.filter((s => "doc" in s)).map((s => { - const r = { - ...s.doc - }; - delete r._rev; - r._id = `_local/${r._id}`; - return r; - })), g = await s.bulkDocs(o); - u = g.map((s => ({ - ok: "ok" in s ? 1 : 0, - exist: "status" in s && 409 == s.status ? 1 : 0, - error: "status" in s && 409 != s.status ? 1 : 0 - }))).reduce(((s, r) => ({ - ok: s.ok + r.ok, - exist: s.exist + r.exist, - error: s.error + r.error - })), u); - Logger(`Local chunk backed up: new:${u.ok} ,exist:${u.exist}, error:${u.error}`, LOG_LEVEL_NOTICE, "purge-local-backup"); - const _ = g.filter((s => "error" in s && 409 != s.status)); - for (const s of _) Logger(`Failed to back up: ${s.id} / ${s.rev}`, LOG_LEVEL_VERBOSE); - } - } catch (s) { - Logger("Could not back up chunks"); - Logger(s, LOG_LEVEL_VERBOSE); - } - Logger(`Purging unused ${r.length} chunks... `, LOG_LEVEL_NOTICE, "purge-local"); - const o = arrayToChunkedArray(r, 100); - let u = 0; - for (const g of o) { - const o = await s.purgeMulti(g.map((s => [ s.id, s.rev ]))); - u += Object.values(o).filter((s => "ok" in s)).length; - Logger(`Purging: ${u} / ${r.length}`, LOG_LEVEL_NOTICE, "purge-local"); - } - Logger(`Purging unused chunks done!: ${u} chunks has been deleted.`, LOG_LEVEL_NOTICE, "purge-local"); - })); -} - -var _requestToCouchDBFetch = async (s, r, o, u, g, _) => { - const m = String.fromCharCode.apply(null, [ ...writeString(`${r}:${o}`) ]), b = window.btoa(m), E = `${s}/${u}`, w = { - url: E, - method: _ || (g ? "PUT" : "GET"), - headers: new Headers({ - authorization: "Basic " + b, - "content-type": "application/json" - }), - contentType: "application/json", - body: JSON.stringify(g) - }; - return await fetch(E, w); -}; - -async function purgeChunksRemote(s, r) { - await serialized("purge-remote", (async () => { - const o = function makeChunkedArrayFromArray(s) { - const r = []; - for (let o = 0; o < s.length; o += 100) r.push(s.slice(o, o + 100)); - return r; - }(r); - for (const r of o) { - const o = await _requestToCouchDBFetch(`${s.couchDB_URI}/${s.couchDB_DBNAME}`, s.couchDB_USER, s.couchDB_PASSWORD, "_purge", Object.fromEntries(r.map((s => [ s.id, [ s.rev ] ]))), "POST"); - Logger(JSON.stringify(await o.json()), LOG_LEVEL_VERBOSE); - } - })); -} - -function sizeToHumanReadable(s) { - if (!s) return "-"; - const r = Math.floor(Math.log(s) / Math.log(1024)); - return Number.parseInt((s / Math.pow(1024, r)).toFixed(2)) + " " + [ "B", "kB", "MB", "GB", "TB" ][r]; -} - -async function purgeUnreferencedChunks(s, r, o, u = false) { - const g = await s.info(); - let _ = 0; - const getSize = function(s, r) { - var o, u; - return Number.parseInt(null != (u = null == (o = null == s ? void 0 : s.sizes) ? void 0 : o[r]) ? u : 0); - }, m = o ? "-remote" : "-local"; - Logger(`${r ? "Counting" : "Cleaning"} ${o ? "remote" : "local"} database`, LOG_LEVEL_NOTICE); - if (o) Logger(`Database active-size: ${sizeToHumanReadable(getSize(g, "active"))}, external-size:${sizeToHumanReadable(getSize(g, "external"))}, file-size: ${sizeToHumanReadable(getSize(g, "file"))}`, LOG_LEVEL_NOTICE); - Logger(`Collecting unreferenced chunks on ${g.db_name}`, LOG_LEVEL_NOTICE, "gc-countchunk" + m); - const b = await collectUnreferencedChunks(s); - _ = b.length; - if (0 == b.length) Logger(`No unreferenced chunks! ${g.db_name}`, LOG_LEVEL_NOTICE, "gc-countchunk" + m); else { - Logger(`Number of unreferenced chunks on ${g.db_name}: ${b.length}`, LOG_LEVEL_NOTICE, "gc-countchunk" + m); - if (r) { - Logger(`DryRun of cleaning ${o ? "remote" : "local"} database up: Done`, LOG_LEVEL_NOTICE); - return _; - } - if (o) { - Logger("Cleaning unreferenced chunks on remote", LOG_LEVEL_NOTICE, "gc-purge" + m); - await purgeChunksRemote(o, b); - } else { - Logger("Cleaning unreferenced chunks on local", LOG_LEVEL_NOTICE, "gc-purge" + m); - await purgeChunksLocal(s, b); - } - Logger("Cleaning unreferenced chunks done!", LOG_LEVEL_NOTICE, "gc-purge" + m); - } - if (u) { - Logger("Compacting database...", LOG_LEVEL_NOTICE, "gc-compact" + m); - await s.compact(); - Logger("Compacting database done", LOG_LEVEL_NOTICE, "gc-compact" + m); - } - if (o) { - const r = await s.info(); - Logger(`Processed database active-size: ${sizeToHumanReadable(getSize(r, "active"))}, external-size:${sizeToHumanReadable(getSize(r, "external"))}, file-size: ${sizeToHumanReadable(getSize(r, "file"))}`, LOG_LEVEL_NOTICE); - Logger(`Reduced sizes: active-size: ${sizeToHumanReadable(getSize(g, "active") - getSize(r, "active"))}, external-size:${sizeToHumanReadable(getSize(g, "external") - getSize(r, "external"))}, file-size: ${sizeToHumanReadable(getSize(g, "file") - getSize(r, "file"))}`, LOG_LEVEL_NOTICE); - } - Logger(`Cleaning ${o ? "remote" : "local"} database up: Done`, LOG_LEVEL_NOTICE); - return _; -} - -function transferChunks(s, r, o, u, g) { - let _ = 0; - const m = g.length; - return new QueueProcessor((async s => { - const r = s.map((s => s.id)); - return (await u.allDocs({ - keys: r - })).rows.filter((s => "error" in s && "not_found" == s.error)).map((s => s.key)); - }), { - batchSize: 50, - concurrentLimit: 5, - suspended: true, - delay: 100 - }, g).pipeTo(new QueueProcessor((async s => (await o.allDocs({ - keys: s, - include_docs: true - })).rows.filter((s => !("error" in s))).map((s => s.doc))), { - batchSize: 25, - concurrentLimit: 1, - suspended: true, - delay: 100 - })).pipeTo(new QueueProcessor((async o => { - try { - await u.bulkDocs(o, { - new_edits: false - }); - } catch (s) { - Logger(`${r}: Something went wrong on balancing`, LOG_LEVEL_NOTICE); - Logger(s, LOG_LEVEL_VERBOSE); - } finally { - _ += o.length; - Logger(`${r}: ${_} / ${m}`, LOG_LEVEL_NOTICE, "balance-" + s); - } - }), { - batchSize: 100, - delay: 100, - concurrentLimit: 2, - suspended: false - })).startPipeline().waitForPipeline(); -} - -async function balanceChunkPurgedDBs(s, r) { - Logger("Complement missing chunks between databases", LOG_LEVEL_NOTICE); - try { - const {onlyOnLocal: o, onlyOnRemote: u} = await collectUnbalancedChunkIDs(s, r), g = transferChunks("l2r", "local -> remote", s, r, o), _ = transferChunks("r2l", "remote -> local", r, s, u); - await Promise.all([ g, _ ]); - Logger("local -> remote: Done", LOG_LEVEL_NOTICE, "balance-l2r"); - Logger("remote -> local: Done", LOG_LEVEL_NOTICE, "balance-r2l"); - } catch (s) { - Logger("Something went wrong on balancing!", LOG_LEVEL_NOTICE); - Logger(s, LOG_LEVEL_VERBOSE); - } - Logger("Complement completed!", LOG_LEVEL_NOTICE); -} - -async function fetchAllUsedChunks(s, r) { - try { - const o = await collectChunks(r, "INUSE"); - await transferChunks("r2l", "remote -> local", r, s, o); - Logger("remote -> local: Done", LOG_LEVEL_NOTICE, "balance-r2l"); - } catch (s) { - Logger("Something went wrong on balancing!", LOG_LEVEL_NOTICE); - Logger(s, LOG_LEVEL_VERBOSE); - } -} - -function resolveWithIgnoreKnownError(s, r) { - return new Promise(((o, u) => { - s.then(o).catch((s => isErrorOfMissingDoc(s) ? o(r) : u(s))); - })); -} - -var _a, delay = s => new Promise((r => { - setTimeout((() => { - r(); - }), s); -})); - -function getDocData(s) { - return "string" == typeof s ? s : s.join(""); -} - -function isTextBlob(s) { - return "text/plain" === s.type; -} - -function createTextBlob(s) { - const r = Array.isArray(s) ? s : [ s ]; - return new Blob(r, { - endings: "transparent", - type: "text/plain" - }); -} - -function createBinaryBlob(s) { - return new Blob([ s ], { - endings: "transparent", - type: "application/octet-stream" - }); -} - -function createBlob(s) { - if (s instanceof Blob) return s; - if (s instanceof Uint8Array || s instanceof ArrayBuffer) return createBinaryBlob(s); else return createTextBlob(s); -} - -function isTextDocument(s) { - if ("plain" == s.type) return true; - if ("plain" == s.datatype) return true; - if (isPlainText(s.path)) return true; else return false; -} - -function readAsBlob(s) { - if (isTextDocument(s)) return createTextBlob(s.data); else return createBinaryBlob(decodeBinary(s.data)); -} - -function readContent(s) { - if (isTextDocument(s)) return getDocData(s.data); else return decodeBinary(s.data); -} - -var isIndexDBCmpExist = "undefined" != typeof (null == (_a = null == window ? void 0 : window.indexedDB) ? void 0 : _a.cmp); - -async function isDocContentSame(s, r) { - const o = createBlob(s), u = createBlob(r); - if (o.size != u.size) return false; - if (isIndexDBCmpExist) return 0 === window.indexedDB.cmp(await o.arrayBuffer(), await u.arrayBuffer()); - const g = 1e4, _ = o.size; - let m = 0; - for (;m < _; ) { - const s = await o.slice(m, m + g).arrayBuffer(), r = await u.slice(m, m + g).arrayBuffer(); - m += g; - if (await arrayBufferToBase64Single(s) != await arrayBufferToBase64Single(r)) return false; - } - return true; -} - -function isObfuscatedEntry(s) { - if (s._id.startsWith(PREFIX_OBFUSCATED)) return true; else return false; -} - -function isEncryptedChunkEntry(s) { - if (s._id.startsWith(PREFIX_ENCRYPTED_CHUNK)) return true; else return false; -} - -function isSyncInfoEntry(s) { - if (s._id == SYNCINFO_ID) return true; else return false; -} - -function memorizeFuncWithLRUCache(s) { - const r = new LRUCache(100, 1e5, true); - return o => { - if (r.has(o)) return r.get(o); - const u = s(o); - r.set(o, u); - return u; - }; -} - -var traps = {}; - -async function waitForSignal(s, r) { - return await waitForValue(s, r) !== RESULT_TIMED_OUT; -} - -function waitForValue(s, r) { - let o, u; - const g = r ? setTimeout((() => { - if (s in traps) traps[s] = traps[s].filter((s => s != u)); - if (o) o(RESULT_TIMED_OUT); - o = void 0; - }), r) : false; - return new Promise((r => { - if (!(s in traps)) traps[s] = []; - o = r; - u = s => { - if (g) clearTimeout(g); - r(s); - }; - traps[s].push(u); - })); -} - -function sendSignal(s) { - sendValue(s, true); -} - -function sendValue(s, r) { - if (!(s in traps)) return; - const o = traps[s]; - delete traps[s]; - for (const s of o) s(r); -} - -function onlyNot(s) { - return function _onlyNot(r) { - if (r === s) return false; else return true; - }; -} - -var lastProcessed = {}; - -function markInterval(s, r) { - var o; - const u = null != r ? r : Date.now(); - if (null != (o = null == lastProcessed ? void 0 : lastProcessed[s]) ? o : 0 < u) lastProcessed[s] = u; -} - -async function runWithStartInterval(s, r, o) { - const u = Date.now(); - if (!(s in lastProcessed)) { - markInterval(s, u); - return await o(); - } - const g = u - lastProcessed[s]; - if (g < r) { - markInterval(s, u); - await delay(g); - } - markInterval(s); - return await o(); -} - -var ExportedSet, ExportedMap, globalConcurrencyController = Semaphore(50); - -function* arrayToChunkedArray(s, r) { - const o = [ ...s ]; - for (;o.length; ) { - const s = o.splice(0, r); - yield s; - } -} - -function unique(s) { - return [ ...new Set(s) ]; -} - -function fireAndForget(s) { - if ("function" == typeof s) return fireAndForget(s()); - s.then((s => {})).catch((s => {})); -} - -function isObjectDifferent(s, r) { - if (typeof s != typeof r) return true; - if ("object" == typeof s) if (null === s || null === r) return s !== r; else return [ ...new Set([ ...Object.keys(s), ...Object.keys(r) ]) ].map((o => isObjectDifferent(null == s ? void 0 : s[o], null == r ? void 0 : r[o]))).some((s => true == s)); else return s !== r; -} - -function determineTypeFromBlob(s) { - return isTextBlob(s) ? "plain" : "newnote"; -} - -function determineType(s, r) { - if (r instanceof Blob) return determineTypeFromBlob(r); - if (isPlainText(s)) return "plain"; - if (r instanceof Uint8Array) return "newnote"; - if (r instanceof ArrayBuffer) return "newnote"; else return "plain"; -} - -function isAnyNote(s) { - return "type" in s && ("newnote" == s.type || "plain" == s.type); -} - -function createSavingEntryFromLoadedEntry(s) { - const r = readAsBlob(s), o = determineType(s.path, r); - return { - ...s, - data: r, - datatype: o, - type: o, - children: [] - }; -} - -function mangle(s) { - return "$" + s; -} - -function unmangle(s) { - return s.substring(1); -} - -function Map$1() { - this._store = {}; -} - -Map$1.prototype.get = function(s) { - var r = mangle(s); - return this._store[r]; -}; - -Map$1.prototype.set = function(s, r) { - var o = mangle(s); - this._store[o] = r; - return true; -}; - -Map$1.prototype.has = function(s) { - return mangle(s) in this._store; -}; - -Map$1.prototype.keys = function() { - return Object.keys(this._store).map((s => unmangle(s))); -}; - -Map$1.prototype.delete = function(s) { - var r = mangle(s), o = r in this._store; - delete this._store[r]; - return o; -}; - -Map$1.prototype.forEach = function(s) { - for (var r = Object.keys(this._store), o = 0, u = r.length; o < u; o++) { - var g = r[o]; - s(this._store[g], g = unmangle(g)); - } -}; - -Object.defineProperty(Map$1.prototype, "size", { - get: function() { - return Object.keys(this._store).length; - } -}); - -function Set$1(s) { - this._store = new Map$1; - if (s && Array.isArray(s)) for (var r = 0, o = s.length; r < o; r++) this.add(s[r]); -} - -Set$1.prototype.add = function(s) { - return this._store.set(s, true); -}; - -Set$1.prototype.has = function(s) { - return this._store.has(s); -}; - -Set$1.prototype.forEach = function(s) { - this._store.forEach((function(r, o) { - s(o); - })); -}; - -Object.defineProperty(Set$1.prototype, "size", { - get: function() { - return this._store.size; - } -}); - -function supportsMapAndSet() { - if ("undefined" == typeof Symbol || "undefined" == typeof Map || "undefined" == typeof Set) return false; - var s = Object.getOwnPropertyDescriptor(Map, Symbol.species); - return s && "get" in s && Map[Symbol.species] === Map; -} - -if (supportsMapAndSet()) { - ExportedSet = Set; - ExportedMap = Map; -} else { - ExportedSet = Set$1; - ExportedMap = Map$1; -} - -var import_immediate = __toESM(require_lib()), PouchError = class extends Error { - constructor(s, r, o) { - super(); - this.status = s; - this.name = r; - this.message = o; - this.error = true; - } - toString() { - return JSON.stringify({ - status: this.status, - name: this.name, - message: this.message, - reason: this.reason - }); - } -}, UNAUTHORIZED = new PouchError(401, "unauthorized", "Name or password is incorrect."), MISSING_BULK_DOCS = new PouchError(400, "bad_request", "Missing JSON list of 'docs'"), MISSING_DOC = new PouchError(404, "not_found", "missing"), REV_CONFLICT = new PouchError(409, "conflict", "Document update conflict"), INVALID_ID = new PouchError(400, "bad_request", "_id field must contain a string"), MISSING_ID = new PouchError(412, "missing_id", "_id is required for puts"), RESERVED_ID = new PouchError(400, "bad_request", "Only reserved document ids may start with underscore."), NOT_OPEN = new PouchError(412, "precondition_failed", "Database not open"), UNKNOWN_ERROR = new PouchError(500, "unknown_error", "Database encountered an unknown error"), BAD_ARG = new PouchError(500, "badarg", "Some query argument is invalid"), INVALID_REQUEST = new PouchError(400, "invalid_request", "Request was invalid"), QUERY_PARSE_ERROR = new PouchError(400, "query_parse_error", "Some query parameter is invalid"), DOC_VALIDATION = new PouchError(500, "doc_validation", "Bad special document member"), BAD_REQUEST = new PouchError(400, "bad_request", "Something wrong with the request"), NOT_AN_OBJECT = new PouchError(400, "bad_request", "Document must be a JSON object"), DB_MISSING = new PouchError(404, "not_found", "Database not found"), IDB_ERROR = new PouchError(500, "indexed_db_went_bad", "unknown"), WSQ_ERROR = new PouchError(500, "web_sql_went_bad", "unknown"), LDB_ERROR = new PouchError(500, "levelDB_went_went_bad", "unknown"), FORBIDDEN = new PouchError(403, "forbidden", "Forbidden by design doc validate_doc_update function"), INVALID_REV = new PouchError(400, "bad_request", "Invalid rev format"), FILE_EXISTS = new PouchError(412, "file_exists", "The database could not be created, the file already exists."), MISSING_STUB = new PouchError(412, "missing_stub", "A pre-existing attachment stub wasn't found"), INVALID_URL = new PouchError(413, "invalid_url", "Provided URL is invalid"); - -function createError(s, r) { - function CustomPouchError(r) { - for (var o = Object.getOwnPropertyNames(s), u = 0, g = o.length; u < g; u++) if ("function" != typeof s[o[u]]) this[o[u]] = s[o[u]]; - if (void 0 === this.stack) this.stack = (new Error).stack; - if (void 0 !== r) this.reason = r; - } - CustomPouchError.prototype = PouchError.prototype; - return new CustomPouchError(r); -} - -function generateErrorFromResponse(s) { - if ("object" != typeof s) { - var r = s; - (s = UNKNOWN_ERROR).data = r; - } - if ("error" in s && "conflict" === s.error) { - s.name = "conflict"; - s.status = 409; - } - if (!("name" in s)) s.name = s.error || "unknown"; - if (!("status" in s)) s.status = 500; - if (!("message" in s)) s.message = s.message || s.reason; - if (!("stack" in s)) s.stack = (new Error).stack; - return s; -} - -var getRandomValues, import_events = __toESM(require_events()), rnds8 = new Uint8Array(16); - -function rng() { - if (!getRandomValues) if (!(getRandomValues = "undefined" != typeof crypto && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || "undefined" != typeof msCrypto && "function" == typeof msCrypto.getRandomValues && msCrypto.getRandomValues.bind(msCrypto))) throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported"); - return getRandomValues(rnds8); -} - -var regex_default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i; - -function validate(s) { - return "string" == typeof s && regex_default.test(s); -} - -var i, validate_default = validate, byteToHex = []; - -for (i = 0; i < 256; ++i) byteToHex.push((i + 256).toString(16).substr(1)); - -function stringify(s) { - var r = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0, o = (byteToHex[s[r + 0]] + byteToHex[s[r + 1]] + byteToHex[s[r + 2]] + byteToHex[s[r + 3]] + "-" + byteToHex[s[r + 4]] + byteToHex[s[r + 5]] + "-" + byteToHex[s[r + 6]] + byteToHex[s[r + 7]] + "-" + byteToHex[s[r + 8]] + byteToHex[s[r + 9]] + "-" + byteToHex[s[r + 10]] + byteToHex[s[r + 11]] + byteToHex[s[r + 12]] + byteToHex[s[r + 13]] + byteToHex[s[r + 14]] + byteToHex[s[r + 15]]).toLowerCase(); - if (!validate_default(o)) throw TypeError("Stringified UUID is invalid"); - return o; -} - -var stringify_default = stringify; - -function v4(s, r, o) { - var u = (s = s || {}).random || (s.rng || rng)(); - u[6] = 15 & u[6] | 64; - u[8] = 63 & u[8] | 128; - if (r) { - o = o || 0; - for (var g = 0; g < 16; ++g) r[o + g] = u[g]; - return r; - } - return stringify_default(u); -} - -var v4_default = v4, thisAtob = function(s) { - return atob(s); -}, thisBtoa = function(s) { - return btoa(s); -}; - -function createBlob2(s, r) { - s = s || []; - r = r || {}; - try { - return new Blob(s, r); - } catch (g) { - if ("TypeError" !== g.name) throw g; - for (var o = new ("undefined" != typeof BlobBuilder ? BlobBuilder : "undefined" != typeof MSBlobBuilder ? MSBlobBuilder : "undefined" != typeof MozBlobBuilder ? MozBlobBuilder : WebKitBlobBuilder), u = 0; u < s.length; u += 1) o.append(s[u]); - return o.getBlob(r.type); - } -} - -function binaryStringToArrayBuffer(s) { - for (var r = s.length, o = new ArrayBuffer(r), u = new Uint8Array(o), g = 0; g < r; g++) u[g] = s.charCodeAt(g); - return o; -} - -function binStringToBluffer(s, r) { - return createBlob2([ binaryStringToArrayBuffer(s) ], { - type: r - }); -} - -function b64ToBluffer(s, r) { - return binStringToBluffer(thisAtob(s), r); -} - -function arrayBufferToBinaryString(s) { - for (var r = "", o = new Uint8Array(s), u = o.byteLength, g = 0; g < u; g++) r += String.fromCharCode(o[g]); - return r; -} - -function readAsBinaryString(s, r) { - var o = new FileReader, u = "function" == typeof o.readAsBinaryString; - o.onloadend = function(s) { - var o = s.target.result || ""; - if (u) return r(o); - r(arrayBufferToBinaryString(o)); - }; - if (u) o.readAsBinaryString(s); else o.readAsArrayBuffer(s); -} - -function blobToBinaryString(s, r) { - readAsBinaryString(s, (function(s) { - r(s); - })); -} - -function blobToBase64(s, r) { - blobToBinaryString(s, (function(s) { - r(thisBtoa(s)); - })); -} - -function readAsArrayBuffer(s, r) { - var o = new FileReader; - o.onloadend = function(s) { - var o = s.target.result || new ArrayBuffer(0); - r(o); - }; - o.readAsArrayBuffer(s); -} - -var import_spark_md5 = __toESM(require_spark_md5()), setImmediateShim = self.setImmediate || self.setTimeout, MD5_CHUNK_SIZE = 32768; - -function rawToBase64(s) { - return thisBtoa(s); -} - -function sliceBlob(s, r, o) { - if (s.webkitSlice) return s.webkitSlice(r, o); else return s.slice(r, o); -} - -function appendBlob(s, r, o, u, g) { - if (o > 0 || u < r.size) r = sliceBlob(r, o, u); - readAsArrayBuffer(r, (function(r) { - s.append(r); - g(); - })); -} - -function appendString(s, r, o, u, g) { - if (o > 0 || u < r.length) r = r.substring(o, u); - s.appendBinary(r); - g(); -} - -function binaryMd5(s, r) { - var o = "string" == typeof s, u = o ? s.length : s.size, g = Math.min(MD5_CHUNK_SIZE, u), _ = Math.ceil(u / g), m = 0, b = o ? new import_spark_md5.default : new import_spark_md5.default.ArrayBuffer, E = o ? appendString : appendBlob; - function next() { - setImmediateShim(loadNextChunk); - } - function done() { - var s = rawToBase64(b.end(true)); - r(s); - b.destroy(); - } - function loadNextChunk() { - var r = m * g, o = r + g; - if (++m < _) E(b, s, r, o, next); else E(b, s, r, o, done); - } - loadNextChunk(); -} - -function stringMd5(s) { - return import_spark_md5.default.hash(s); -} - -function isBinaryObject(s) { - return "undefined" != typeof ArrayBuffer && s instanceof ArrayBuffer || "undefined" != typeof Blob && s instanceof Blob; -} - -function cloneArrayBuffer(s) { - if ("function" == typeof s.slice) return s.slice(0); - var r = new ArrayBuffer(s.byteLength), o = new Uint8Array(r), u = new Uint8Array(s); - o.set(u); - return r; -} - -function cloneBinaryObject(s) { - if (s instanceof ArrayBuffer) return cloneArrayBuffer(s); - var r = s.size, o = s.type; - if ("function" == typeof s.slice) return s.slice(0, r, o); else return s.webkitSlice(0, r, o); -} - -var funcToString = Function.prototype.toString, objectCtorString = funcToString.call(Object); - -function isPlainObject(s) { - var r = Object.getPrototypeOf(s); - if (null === r) return true; - var o = r.constructor; - return "function" == typeof o && o instanceof o && funcToString.call(o) == objectCtorString; -} - -function clone(s) { - var r, o, u; - if (!s || "object" != typeof s) return s; - if (Array.isArray(s)) { - r = []; - for (o = 0, u = s.length; o < u; o++) r[o] = clone(s[o]); - return r; - } - if (s instanceof Date && isFinite(s)) return s.toISOString(); - if (isBinaryObject(s)) return cloneBinaryObject(s); - if (!isPlainObject(s)) return s; - r = {}; - for (o in s) if (Object.prototype.hasOwnProperty.call(s, o)) { - var g = clone(s[o]); - if ("undefined" != typeof g) r[o] = g; - } - return r; -} - -function once(s) { - var r = false; - return function(...o) { - if (r) throw new Error("once called more than once"); else { - r = true; - s.apply(this, o); - } - }; -} - -function toPromise(s) { - return function(...r) { - r = clone(r); - var o = this, u = "function" == typeof r[r.length - 1] ? r.pop() : false, g = new Promise((function(u, g) { - var _; - try { - var m = once((function(s, r) { - if (s) g(s); else u(r); - })); - r.push(m); - if ((_ = s.apply(o, r)) && "function" == typeof _.then) u(_); - } catch (s) { - g(s); - } - })); - if (u) g.then((function(s) { - u(null, s); - }), u); - return g; - }; -} - -function logApiCall(s, r, o) { - if (s.constructor.listeners("debug").length) { - for (var u = [ "api", s.name, r ], g = 0; g < o.length - 1; g++) u.push(o[g]); - s.constructor.emit("debug", u); - var _ = o[o.length - 1]; - o[o.length - 1] = function(o, u) { - var g = [ "api", s.name, r ]; - g = g.concat(o ? [ "error", o ] : [ "success", u ]); - s.constructor.emit("debug", g); - _(o, u); - }; - } -} - -function adapterFun(s, r) { - return toPromise((function(...o) { - if (this._closed) return Promise.reject(new Error("database is closed")); - if (this._destroyed) return Promise.reject(new Error("database is destroyed")); - var u = this; - logApiCall(u, s, o); - if (!this.taskqueue.isReady) return new Promise((function(r, g) { - u.taskqueue.addTask((function(_) { - if (_) g(_); else r(u[s].apply(u, o)); - })); - })); else return r.apply(this, o); - })); -} - -function pick(s, r) { - for (var o = {}, u = 0, g = r.length; u < g; u++) { - var _ = r[u]; - if (_ in s) o[_] = s[_]; - } - return o; -} - -var hasLocal, MAX_NUM_CONCURRENT_REQUESTS = 6; - -function identityFunction(s) { - return s; -} - -function formatResultForOpenRevsGet(s) { - return [ { - ok: s - } ]; -} - -function bulkGet(s, r, o) { - var u = r.docs, g = new ExportedMap; - u.forEach((function(s) { - if (g.has(s.id)) g.get(s.id).push(s); else g.set(s.id, [ s ]); - })); - var _ = g.size, m = 0, b = new Array(_), E = []; - g.forEach((function(s, r) { - E.push(r); - })); - var w = 0; - (function nextBatch() { - if (!(w >= E.length)) { - var u = Math.min(w + MAX_NUM_CONCURRENT_REQUESTS, E.length), S = E.slice(w, u); - (function processBatch(u, E) { - u.forEach((function(u, w) { - var S = E + w, L = g.get(u), O = pick(L[0], [ "atts_since", "attachments" ]); - O.open_revs = L.map((function(s) { - return s.rev; - })); - O.open_revs = O.open_revs.filter(identityFunction); - var D = identityFunction; - if (0 === O.open_revs.length) { - delete O.open_revs; - D = formatResultForOpenRevsGet; - } - [ "revs", "attachments", "binary", "ajax", "latest" ].forEach((function(s) { - if (s in r) O[s] = r[s]; - })); - s.get(u, O, (function(s, r) { - var g; - if (s) g = [ { - error: s - } ]; else g = D(r); - (function gotResult(s, r, u) { - b[s] = { - id: r, - docs: u - }; - (function checkDone() { - if (++m === _) (function collapseResultsAndFinish() { - var s = []; - b.forEach((function(r) { - r.docs.forEach((function(o) { - s.push({ - id: r.id, - docs: [ o ] - }); - })); - })); - o(null, { - results: s - }); - })(); - })(); - })(S, u, g); - nextBatch(); - })); - })); - })(S, w); - w += S.length; - } - })(); -} - -try { - localStorage.setItem("_pouch_check_localstorage", 1); - hasLocal = !!localStorage.getItem("_pouch_check_localstorage"); -} catch (s) { - hasLocal = false; -} - -function hasLocalStorage() { - return hasLocal; -} - -var assign$1, Changes = class extends import_events.default { - constructor() { - super(); - this._listeners = {}; - if (hasLocalStorage()) addEventListener("storage", (s => { - this.emit(s.key); - })); - } - addListener(s, r, o, u) { - if (!this._listeners[r]) { - var g = false, _ = this; - this._listeners[r] = eventFunction; - this.on(s, eventFunction); - } - function eventFunction() { - if (_._listeners[r]) if (!g) { - g = true; - var s = pick(u, [ "style", "include_docs", "attachments", "conflicts", "filter", "doc_ids", "view", "since", "query_params", "binary", "return_docs" ]); - o.changes(s).on("change", (function(s) { - if (s.seq > u.since && !u.cancelled) { - u.since = s.seq; - u.onChange(s); - } - })).on("complete", (function() { - if ("waiting" === g) (0, import_immediate.default)(eventFunction); - g = false; - })).on("error", (function onError() { - g = false; - })); - } else g = "waiting"; - } - } - removeListener(s, r) { - if (r in this._listeners) { - super.removeListener(s, this._listeners[r]); - delete this._listeners[r]; - } - } - notifyLocalWindows(s) { - if (hasLocalStorage()) localStorage[s] = "a" === localStorage[s] ? "b" : "a"; - } - notify(s) { - this.emit(s); - this.notifyLocalWindows(s); - } -}; - -function guardedConsole(s) { - if ("undefined" != typeof console && "function" == typeof console[s]) { - var r = Array.prototype.slice.call(arguments, 1); - console[s].apply(console, r); - } -} - -function randomNumber(s, r) { - var o = 6e5; - s = parseInt(s, 10) || 0; - if ((r = parseInt(r, 10)) != r || r <= s) r = (s || 1) << 1; else r += 1; - if (r > o) { - s = 3e5; - r = o; - } - return ~~((r - s) * Math.random() + s); -} - -function defaultBackOff(s) { - var r = 0; - if (!s) r = 2e3; - return randomNumber(s, r); -} - -function explainError(s, r) { - guardedConsole("info", "The above " + s + " is totally normal. " + r); -} - -if ("function" == typeof Object.assign) assign$1 = Object.assign; else assign$1 = function(s) { - for (var r = Object(s), o = 1; o < arguments.length; o++) { - var u = arguments[o]; - if (null != u) for (var g in u) if (Object.prototype.hasOwnProperty.call(u, g)) r[g] = u[g]; - } - return r; -}; - -var assign$2 = assign$1; - -function tryFilter(s, r, o) { - try { - return !s(r, o); - } catch (s) { - var u = "Filter function threw: " + s.toString(); - return createError(BAD_REQUEST, u); - } -} - -function filterChange(s) { - var r = {}, o = s.filter && "function" == typeof s.filter; - r.query = s.query_params; - return function filter3(u) { - if (!u.doc) u.doc = {}; - var g = o && tryFilter(s.filter, u.doc, r); - if ("object" == typeof g) return g; - if (g) return false; - if (!s.include_docs) delete u.doc; else if (!s.attachments) for (var _ in u.doc._attachments) if (Object.prototype.hasOwnProperty.call(u.doc._attachments, _)) u.doc._attachments[_].stub = true; - return true; - }; -} - -function flatten(s) { - for (var r = [], o = 0, u = s.length; o < u; o++) r = r.concat(s[o]); - return r; -} - -function f() {} - -var res, hasName = f.name; - -if (hasName) res = function(s) { - return s.name; -}; else res = function(s) { - var r = s.toString().match(/^\s*function\s*(?:(\S+)\s*)?\(/); - if (r && r[1]) return r[1]; else return ""; -}; - -function invalidIdError(s) { - var r; - if (!s) r = createError(MISSING_ID); else if ("string" != typeof s) r = createError(INVALID_ID); else if (/^_/.test(s) && !/^_(design|local)/.test(s)) r = createError(RESERVED_ID); - if (r) throw r; -} - -function isRemote(s) { - if ("boolean" == typeof s._remote) return s._remote; - if ("function" == typeof s.type) { - guardedConsole("warn", "db.type() is deprecated and will be removed in a future version of PouchDB"); - return "http" === s.type(); - } - return false; -} - -function listenerCount(s, r) { - return "listenerCount" in s ? s.listenerCount(r) : import_events.default.listenerCount(s, r); -} - -function parseDesignDocFunctionName(s) { - if (!s) return null; - var r = s.split("/"); - if (2 === r.length) return r; - if (1 === r.length) return [ s, s ]; else return null; -} - -function normalizeDesignDocFunctionName(s) { - var r = parseDesignDocFunctionName(s); - return r ? r.join("/") : null; -} - -var keys = [ "source", "protocol", "authority", "userInfo", "user", "password", "host", "port", "relative", "path", "directory", "file", "query", "anchor" ], qName = "queryKey", qParser = /(?:^|&)([^&=]*)=?([^&]*)/g, parser = /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/; - -function parseUri(s) { - for (var r = parser.exec(s), o = {}, u = 14; u--; ) { - var g = keys[u], _ = r[u] || "", m = -1 !== [ "user", "password" ].indexOf(g); - o[g] = m ? decodeURIComponent(_) : _; - } - o[qName] = {}; - o[keys[12]].replace(qParser, (function(s, r, u) { - if (r) o[qName][r] = u; - })); - return o; -} - -function scopeEval(s, r) { - var o = [], u = []; - for (var g in r) if (Object.prototype.hasOwnProperty.call(r, g)) { - o.push(g); - u.push(r[g]); - } - o.push(s); - return Function.apply(null, o).apply(null, u); -} - -function upsert(s, r, o) { - return s.get(r).catch((function(s) { - if (404 !== s.status) throw s; - return {}; - })).then((function(u) { - var g = u._rev, _ = o(u); - if (!_) return { - updated: false, - rev: g - }; - _._id = r; - _._rev = g; - return tryAndPut(s, _, o); - })); -} - -function tryAndPut(s, r, o) { - return s.put(r).then((function(s) { - return { - updated: true, - rev: s.rev - }; - }), (function(u) { - if (409 !== u.status) throw u; - return upsert(s, r._id, o); - })); -} - -function rev(s, r) { - if (!r) return v4_default().replace(/-/g, "").toLowerCase(); - var o = assign$2({}, s); - delete o._rev_tree; - return stringMd5(JSON.stringify(o)); -} - -var uuid = v4_default; - -function winningRev(s) { - for (var r, o, u, g, _ = s.rev_tree.slice(); g = _.pop(); ) { - var m = g.ids, b = m[2], E = g.pos; - if (!b.length) { - var w = !!m[1].deleted, S = m[0]; - if (!r || (u !== w ? u : o !== E ? o < E : r < S)) { - r = S; - o = E; - u = w; - } - } else for (var L = 0, O = b.length; L < O; L++) _.push({ - pos: E + 1, - ids: b[L] - }); - } - return o + "-" + r; -} - -function traverseRevTree(s, r) { - for (var o, u = s.slice(); o = u.pop(); ) for (var g = o.pos, _ = o.ids, m = _[2], b = r(0 === m.length, g, _[0], o.ctx, _[1]), E = 0, w = m.length; E < w; E++) u.push({ - pos: g + 1, - ids: m[E], - ctx: b - }); -} - -function sortByPos(s, r) { - return s.pos - r.pos; -} - -function collectLeaves(s) { - var r = []; - traverseRevTree(s, (function(s, o, u, g, _) { - if (s) r.push({ - rev: o + "-" + u, - pos: o, - opts: _ - }); - })); - r.sort(sortByPos).reverse(); - for (var o = 0, u = r.length; o < u; o++) delete r[o].pos; - return r; -} - -function collectConflicts(s) { - for (var r = winningRev(s), o = collectLeaves(s.rev_tree), u = [], g = 0, _ = o.length; g < _; g++) { - var m = o[g]; - if (m.rev !== r && !m.opts.deleted) u.push(m.rev); - } - return u; -} - -function compactTree(s) { - var r = []; - traverseRevTree(s.rev_tree, (function(s, o, u, g, _) { - if ("available" === _.status && !s) { - r.push(o + "-" + u); - _.status = "missing"; - } - })); - return r; -} - -function findPathToLeaf(s, r) { - let o = []; - const u = s.slice(); - let g; - for (;g = u.pop(); ) { - const {pos: s, ids: _} = g, m = `${s}-${_[0]}`, b = _[2]; - o.push(m); - if (m === r) { - if (0 !== b.length) throw new Error("The requested revision is not a leaf"); - return o.reverse(); - } - if (0 === b.length || b.length > 1) o = []; - for (let r = 0, o = b.length; r < o; r++) u.push({ - pos: s + 1, - ids: b[r] - }); - } - if (0 === o.length) throw new Error("The requested revision does not exist"); - return o.reverse(); -} - -function rootToLeaf(s) { - for (var r, o = [], u = s.slice(); r = u.pop(); ) { - var g = r.pos, _ = r.ids, m = _[0], b = _[1], E = _[2], w = 0 === E.length, S = r.history ? r.history.slice() : []; - S.push({ - id: m, - opts: b - }); - if (w) o.push({ - pos: g + 1 - S.length, - ids: S - }); - for (var L = 0, O = E.length; L < O; L++) u.push({ - pos: g + 1, - ids: E[L], - history: S - }); - } - return o.reverse(); -} - -function sortByPos$1(s, r) { - return s.pos - r.pos; -} - -function binarySearch(s, r, o) { - for (var u, g = 0, _ = s.length; g < _; ) if (o(s[u = g + _ >>> 1], r) < 0) g = u + 1; else _ = u; - return g; -} - -function insertSorted(s, r, o) { - var u = binarySearch(s, r, o); - s.splice(u, 0, r); -} - -function pathToTree(s, r) { - for (var o, u, g = r, _ = s.length; g < _; g++) { - var m = s[g], b = [ m.id, m.opts, [] ]; - if (u) { - u[2].push(b); - u = b; - } else o = u = b; - } - return o; -} - -function compareTree(s, r) { - return s[0] < r[0] ? -1 : 1; -} - -function mergeTree(s, r) { - for (var o = [ { - tree1: s, - tree2: r - } ], u = false; o.length > 0; ) { - var g = o.pop(), _ = g.tree1, m = g.tree2; - if (_[1].status || m[1].status) _[1].status = "available" === _[1].status || "available" === m[1].status ? "available" : "missing"; - for (var b = 0; b < m[2].length; b++) if (_[2][0]) { - for (var E = false, w = 0; w < _[2].length; w++) if (_[2][w][0] === m[2][b][0]) { - o.push({ - tree1: _[2][w], - tree2: m[2][b] - }); - E = true; - } - if (!E) { - u = "new_branch"; - insertSorted(_[2], m[2][b], compareTree); - } - } else { - u = "new_leaf"; - _[2][0] = m[2][b]; - } - } - return { - conflicts: u, - tree: s - }; -} - -function doMerge(s, r, o) { - var u, g = [], _ = false, m = false; - if (!s.length) return { - tree: [ r ], - conflicts: "new_leaf" - }; - for (var b = 0, E = s.length; b < E; b++) { - var w = s[b]; - if (w.pos === r.pos && w.ids[0] === r.ids[0]) { - u = mergeTree(w.ids, r.ids); - g.push({ - pos: w.pos, - ids: u.tree - }); - _ = _ || u.conflicts; - m = true; - } else if (true !== o) { - var S = w.pos < r.pos ? w : r, L = w.pos < r.pos ? r : w, O = L.pos - S.pos, D = [], k = []; - k.push({ - ids: S.ids, - diff: O, - parent: null, - parentIdx: null - }); - for (;k.length > 0; ) { - var C = k.pop(); - if (0 !== C.diff) for (var T = C.ids[2], I = 0, A = T.length; I < A; I++) k.push({ - ids: T[I], - diff: C.diff - 1, - parent: C.ids, - parentIdx: I - }); else if (C.ids[0] === L.ids[0]) D.push(C); - } - var R = D[0]; - if (!R) g.push(w); else { - u = mergeTree(R.ids, L.ids); - R.parent[2][R.parentIdx] = u.tree; - g.push({ - pos: S.pos, - ids: S.ids - }); - _ = _ || u.conflicts; - m = true; - } - } else g.push(w); - } - if (!m) g.push(r); - g.sort(sortByPos$1); - return { - tree: g, - conflicts: _ || "internal_node" - }; -} - -function stem(s, r) { - for (var o, u, g = rootToLeaf(s), _ = 0, m = g.length; _ < m; _++) { - var b, E = g[_], w = E.ids; - if (w.length > r) { - if (!o) o = {}; - var S = w.length - r; - b = { - pos: E.pos + S, - ids: pathToTree(w, S) - }; - for (var L = 0; L < S; L++) { - var O = E.pos + L + "-" + w[L].id; - o[O] = true; - } - } else b = { - pos: E.pos, - ids: pathToTree(w, 0) - }; - if (u) u = doMerge(u, b, true).tree; else u = [ b ]; - } - if (o) traverseRevTree(u, (function(s, r, u) { - delete o[r + "-" + u]; - })); - return { - tree: u, - revs: o ? Object.keys(o) : [] - }; -} - -function merge(s, r, o) { - var u = doMerge(s, r), g = stem(u.tree, o); - return { - tree: g.tree, - stemmedRevs: g.revs, - conflicts: u.conflicts - }; -} - -function removeLeafFromRevTree(s, r) { - return s.flatMap((s => (s = removeLeafFromPath(s, r)) ? [ s ] : [])); -} - -function removeLeafFromPath(s, r) { - const o = clone(s), u = [ o ]; - let g; - for (;g = u.pop(); ) { - const {pos: s, ids: [_, , m], parent: b} = g; - if (0 === m.length && `${s}-${_}` === r) { - if (!b) return null; - b.ids[2] = b.ids[2].filter((function(s) { - return s[0] !== _; - })); - return o; - } - for (let r = 0, o = m.length; r < o; r++) u.push({ - pos: s + 1, - ids: m[r], - parent: g - }); - } - return o; -} - -function revExists(s, r) { - for (var o, u = s.slice(), g = r.split("-"), _ = parseInt(g[0], 10), m = g[1]; o = u.pop(); ) { - if (o.pos === _ && o.ids[0] === m) return true; - for (var b = o.ids[2], E = 0, w = b.length; E < w; E++) u.push({ - pos: o.pos + 1, - ids: b[E] - }); - } - return false; -} - -function getTrees(s) { - return s.ids; -} - -function isDeleted(s, r) { - if (!r) r = winningRev(s); - for (var o, u = r.substring(r.indexOf("-") + 1), g = s.rev_tree.map(getTrees); o = g.pop(); ) { - if (o[0] === u) return !!o[1].deleted; - g = g.concat(o[2]); - } -} - -function isLocalId(s) { - return /^_local/.test(s); -} - -function latest(s, r) { - for (var o, u = r.rev_tree.slice(); o = u.pop(); ) { - var g = o.pos, _ = o.ids, m = _[0], b = _[1], E = _[2], w = 0 === E.length, S = o.history ? o.history.slice() : []; - S.push({ - id: m, - pos: g, - opts: b - }); - if (w) for (var L = 0, O = S.length; L < O; L++) { - var D = S[L]; - if (D.pos + "-" + D.id === s) return g + "-" + m; - } - for (var k = 0, C = E.length; k < C; k++) u.push({ - pos: g + 1, - ids: E[k], - history: S - }); - } - throw new Error("Unable to resolve latest revision for id " + r.id + ", rev " + s); -} - -var import_events2 = __toESM(require_events()), a = "undefined" != typeof AbortController ? AbortController : function() { - return { - abort: function() {} - }; -}, f2 = fetch, h = Headers; - -function pad(s, r, o) { - for (var u = "", g = o - s.length; u.length < g; ) u += r; - return u; -} - -function padLeft(s, r, o) { - return pad(s, r, o) + s; -} - -var MIN_MAGNITUDE = -324, MAGNITUDE_DIGITS = 3, SEP = ""; - -function collate(s, r) { - if (s === r) return 0; - s = normalizeKey(s); - r = normalizeKey(r); - var o = collationIndex(s), u = collationIndex(r); - if (o - u != 0) return o - u; - switch (typeof s) { - case "number": - return s - r; - - case "boolean": - return s < r ? -1 : 1; - - case "string": - return stringCollate(s, r); - } - return Array.isArray(s) ? arrayCollate(s, r) : objectCollate(s, r); -} - -function normalizeKey(s) { - switch (typeof s) { - case "undefined": - return null; - - case "number": - if (s === 1 / 0 || s === -1 / 0 || isNaN(s)) return null; else return s; - - case "object": - var r = s; - if (Array.isArray(s)) { - var o = s.length; - s = new Array(o); - for (var u = 0; u < o; u++) s[u] = normalizeKey(r[u]); - } else if (s instanceof Date) return s.toJSON(); else if (null !== s) { - s = {}; - for (var g in r) if (Object.prototype.hasOwnProperty.call(r, g)) { - var _ = r[g]; - if ("undefined" != typeof _) s[g] = normalizeKey(_); - } - } - } - return s; -} - -function indexify(s) { - if (null !== s) switch (typeof s) { - case "boolean": - return s ? 1 : 0; - - case "number": - return numToIndexableString(s); - - case "string": - return s.replace(/\u0002/g, "").replace(/\u0001/g, "").replace(/\u0000/g, ""); - - case "object": - var r = Array.isArray(s), o = r ? s : Object.keys(s), u = -1, g = o.length, _ = ""; - if (r) for (;++u < g; ) _ += toIndexableString(o[u]); else for (;++u < g; ) { - var m = o[u]; - _ += toIndexableString(m) + toIndexableString(s[m]); - } - return _; - } - return ""; -} - -function toIndexableString(s) { - return collationIndex(s = normalizeKey(s)) + SEP + indexify(s) + "\0"; -} - -function parseNumber(s, r) { - var o, u = r; - if ("1" === s[r]) { - o = 0; - r++; - } else { - var g = "0" === s[r]; - r++; - var _ = "", m = s.substring(r, r + MAGNITUDE_DIGITS), b = parseInt(m, 10) + MIN_MAGNITUDE; - if (g) b = -b; - r += MAGNITUDE_DIGITS; - for (;;) { - var E = s[r]; - if ("\0" === E) break; else _ += E; - r++; - } - if (1 === (_ = _.split(".")).length) o = parseInt(_, 10); else o = parseFloat(_[0] + "." + _[1]); - if (g) o -= 10; - if (0 !== b) o = parseFloat(o + "e" + b); - } - return { - num: o, - length: r - u - }; -} - -function pop(s, r) { - var o = s.pop(); - if (r.length) { - var u = r[r.length - 1]; - if (o === u.element) { - r.pop(); - u = r[r.length - 1]; - } - var g = u.element, _ = u.index; - if (Array.isArray(g)) g.push(o); else if (_ === s.length - 2) g[s.pop()] = o; else s.push(o); - } -} - -function parseIndexableString(s) { - for (var r = [], o = [], u = 0; ;) { - var g = s[u++]; - if ("\0" === g) if (1 === r.length) return r.pop(); else { - pop(r, o); - continue; - } - switch (g) { - case "1": - r.push(null); - break; - - case "2": - r.push("1" === s[u]); - u++; - break; - - case "3": - var _ = parseNumber(s, u); - r.push(_.num); - u += _.length; - break; - - case "4": - for (var m = ""; ;) { - var b = s[u]; - if ("\0" === b) break; - m += b; - u++; - } - m = m.replace(/\u0001\u0001/g, "\0").replace(/\u0001\u0002/g, "").replace(/\u0002\u0002/g, ""); - r.push(m); - break; - - case "5": - var E = { - element: [], - index: r.length - }; - r.push(E.element); - o.push(E); - break; - - case "6": - var w = { - element: {}, - index: r.length - }; - r.push(w.element); - o.push(w); - break; - - default: - throw new Error("bad collationIndex or unexpectedly reached end of input: " + g); - } - } -} - -function arrayCollate(s, r) { - for (var o = Math.min(s.length, r.length), u = 0; u < o; u++) { - var g = collate(s[u], r[u]); - if (0 !== g) return g; - } - return s.length === r.length ? 0 : s.length > r.length ? 1 : -1; -} - -function stringCollate(s, r) { - return s === r ? 0 : s > r ? 1 : -1; -} - -function objectCollate(s, r) { - for (var o = Object.keys(s), u = Object.keys(r), g = Math.min(o.length, u.length), _ = 0; _ < g; _++) { - var m = collate(o[_], u[_]); - if (0 !== m) return m; - if (0 !== (m = collate(s[o[_]], r[u[_]]))) return m; - } - return o.length === u.length ? 0 : o.length > u.length ? 1 : -1; -} - -function collationIndex(s) { - var r = [ "boolean", "number", "string", "object" ].indexOf(typeof s); - if (~r) { - if (null === s) return 1; - if (Array.isArray(s)) return 5; else return r < 3 ? r + 2 : r + 3; - } - if (Array.isArray(s)) return 5; -} - -function numToIndexableString(s) { - if (0 === s) return "1"; - var r = s.toExponential().split(/e\+?/), o = parseInt(r[1], 10), u = s < 0, g = u ? "0" : "2", _ = padLeft(((u ? -o : o) - MIN_MAGNITUDE).toString(), "0", MAGNITUDE_DIGITS); - g += SEP + _; - var m = Math.abs(parseFloat(r[0])); - if (u) m = 10 - m; - var b = m.toFixed(20); - b = b.replace(/\.?0+$/, ""); - return g += SEP + b; -} - -function getFieldFromDoc(s, r) { - for (var o = s, u = 0, g = r.length; u < g && (o = o[r[u]]); u++) ; - return o; -} - -function setFieldInDoc(s, r, o) { - for (var u = 0, g = r.length; u < g - 1; u++) { - var _ = r[u]; - s = s[_] = s[_] || {}; - } - s[r[g - 1]] = o; -} - -function compare(s, r) { - return s < r ? -1 : s > r ? 1 : 0; -} - -function parseField(s) { - for (var r = [], o = "", u = 0, g = s.length; u < g; u++) { - var _ = s[u]; - if (u > 0 && "\\" === s[u - 1] && ("$" === _ || "." === _)) o = o.substring(0, o.length - 1) + _; else if ("." === _) { - r.push(o); - o = ""; - } else o += _; - } - r.push(o); - return r; -} - -var combinationFields = [ "$or", "$nor", "$not" ]; - -function isCombinationalField(s) { - return combinationFields.indexOf(s) > -1; -} - -function getKey(s) { - return Object.keys(s)[0]; -} - -function getValue(s) { - return s[getKey(s)]; -} - -function mergeAndedSelectors(s) { - var r = {}, o = { - $or: true, - $nor: true - }; - s.forEach((function(s) { - Object.keys(s).forEach((function(u) { - var g = s[u]; - if ("object" != typeof g) g = { - $eq: g - }; - if (isCombinationalField(u)) if (g instanceof Array) { - if (o[u]) { - o[u] = false; - r[u] = g; - return; - } - var _ = []; - r[u].forEach((function(s) { - Object.keys(g).forEach((function(r) { - var o = g[r], u = Math.max(Object.keys(s).length, Object.keys(o).length), m = mergeAndedSelectors([ s, o ]); - if (!(Object.keys(m).length <= u)) _.push(m); - })); - })); - r[u] = _; - } else r[u] = mergeAndedSelectors([ g ]); else { - var m = r[u] = r[u] || {}; - Object.keys(g).forEach((function(s) { - var r = g[s]; - if ("$gt" === s || "$gte" === s) return mergeGtGte(s, r, m); else if ("$lt" === s || "$lte" === s) return mergeLtLte(s, r, m); else if ("$ne" === s) return mergeNe(r, m); else if ("$eq" === s) return mergeEq(r, m); else if ("$regex" === s) return mergeRegex(r, m); - m[s] = r; - })); - } - })); - })); - return r; -} - -function mergeGtGte(s, r, o) { - if ("undefined" == typeof o.$eq) if ("undefined" != typeof o.$gte) { - if ("$gte" === s) { - if (r > o.$gte) o.$gte = r; - } else if (r >= o.$gte) { - delete o.$gte; - o.$gt = r; - } - } else if ("undefined" != typeof o.$gt) { - if ("$gte" === s) { - if (r > o.$gt) { - delete o.$gt; - o.$gte = r; - } - } else if (r > o.$gt) o.$gt = r; - } else o[s] = r; -} - -function mergeLtLte(s, r, o) { - if ("undefined" == typeof o.$eq) if ("undefined" != typeof o.$lte) { - if ("$lte" === s) { - if (r < o.$lte) o.$lte = r; - } else if (r <= o.$lte) { - delete o.$lte; - o.$lt = r; - } - } else if ("undefined" != typeof o.$lt) { - if ("$lte" === s) { - if (r < o.$lt) { - delete o.$lt; - o.$lte = r; - } - } else if (r < o.$lt) o.$lt = r; - } else o[s] = r; -} - -function mergeNe(s, r) { - if ("$ne" in r) r.$ne.push(s); else r.$ne = [ s ]; -} - -function mergeEq(s, r) { - delete r.$gt; - delete r.$gte; - delete r.$lt; - delete r.$lte; - delete r.$ne; - r.$eq = s; -} - -function mergeRegex(s, r) { - if ("$regex" in r) r.$regex.push(s); else r.$regex = [ s ]; -} - -function mergeAndedSelectorsNested(s) { - for (var r in s) { - if (Array.isArray(s)) for (var o in s) if (s[o]["$and"]) s[o] = mergeAndedSelectors(s[o]["$and"]); - var u = s[r]; - if ("object" == typeof u) mergeAndedSelectorsNested(u); - } - return s; -} - -function isAndInSelector(s, r) { - for (var o in s) { - if ("$and" === o) r = true; - var u = s[o]; - if ("object" == typeof u) r = isAndInSelector(u, r); - } - return r; -} - -function massageSelector(s) { - var r = clone(s); - if (isAndInSelector(r, false)) if ("$and" in (r = mergeAndedSelectorsNested(r))) r = mergeAndedSelectors(r["$and"]); - [ "$or", "$nor" ].forEach((function(s) { - if (s in r) r[s].forEach((function(s) { - for (var r = Object.keys(s), o = 0; o < r.length; o++) { - var u = r[o], g = s[u]; - if ("object" != typeof g || null === g) s[u] = { - $eq: g - }; - } - })); - })); - if ("$not" in r) r["$not"] = mergeAndedSelectors([ r["$not"] ]); - for (var o = Object.keys(r), u = 0; u < o.length; u++) { - var g = o[u], _ = r[g]; - if ("object" != typeof _ || null === _) _ = { - $eq: _ - }; - r[g] = _; - } - normalizeArrayOperators(r); - return r; -} - -function normalizeArrayOperators(s) { - Object.keys(s).forEach((function(r) { - var o = s[r]; - if (Array.isArray(o)) o.forEach((function(s) { - if (s && "object" == typeof s) normalizeArrayOperators(s); - })); else if ("$ne" === r) s.$ne = [ o ]; else if ("$regex" === r) s.$regex = [ o ]; else if (o && "object" == typeof o) normalizeArrayOperators(o); - })); -} - -function createFieldSorter(s) { - function getFieldValuesAsArray(r) { - return s.map((function(s) { - var o = parseField(getKey(s)); - return getFieldFromDoc(r, o); - })); - } - return function(s, r) { - var o = collate(getFieldValuesAsArray(s.doc), getFieldValuesAsArray(r.doc)); - if (0 !== o) return o; else return compare(s.doc._id, r.doc._id); - }; -} - -function filterInMemoryFields(s, r, o) { - s = s.filter((function(s) { - return rowFilter(s.doc, r.selector, o); - })); - if (r.sort) { - var u = createFieldSorter(r.sort); - s = s.sort(u); - if ("string" != typeof r.sort[0] && "desc" === getValue(r.sort[0])) s = s.reverse(); - } - if ("limit" in r || "skip" in r) { - var g = r.skip || 0, _ = ("limit" in r ? r.limit : s.length) + g; - s = s.slice(g, _); - } - return s; -} - -function rowFilter(s, r, o) { - return o.every((function(o) { - var u = r[o], g = parseField(o), _ = getFieldFromDoc(s, g); - if (isCombinationalField(o)) return matchCominationalSelector(o, u, s); else return matchSelector(u, s, g, _); - })); -} - -function matchSelector(s, r, o, u) { - if (!s) return true; - if ("object" == typeof s) return Object.keys(s).every((function(g) { - var _ = s[g]; - if (0 === g.indexOf("$")) return match2(g, r, _, o, u); else { - var m = parseField(g); - if (void 0 === u && "object" != typeof _ && m.length > 0) return false; - var b = getFieldFromDoc(u, m); - if ("object" == typeof _) return matchSelector(_, r, o, b); else return match2("$eq", r, _, m, b); - } - })); else return s === u; -} - -function matchCominationalSelector(s, r, o) { - if ("$or" === s) return r.some((function(s) { - return rowFilter(o, s, Object.keys(s)); - })); - if ("$not" === s) return !rowFilter(o, r, Object.keys(r)); else return !r.find((function(s) { - return rowFilter(o, s, Object.keys(s)); - })); -} - -function match2(s, r, o, u, g) { - if (!matchers[s]) throw new Error('unknown operator "' + s + '" - should be one of $eq, $lte, $lt, $gt, $gte, $exists, $ne, $in, $nin, $size, $mod, $regex, $elemMatch, $type, $allMatch or $all'); - return matchers[s](r, o, u, g); -} - -function fieldExists(s) { - return "undefined" != typeof s && null !== s; -} - -function fieldIsNotUndefined(s) { - return "undefined" != typeof s; -} - -function modField(s, r) { - if ("number" != typeof s || parseInt(s, 10) !== s) return false; else return s % r[0] === r[1]; -} - -function arrayContainsValue(s, r) { - return r.some((function(r) { - if (s instanceof Array) return s.some((function(s) { - return 0 === collate(r, s); - })); else return 0 === collate(r, s); - })); -} - -function arrayContainsAllValues(s, r) { - return r.every((function(r) { - return s.some((function(s) { - return 0 === collate(r, s); - })); - })); -} - -function arraySize(s, r) { - return s.length === r; -} - -function regexMatch(s, r) { - return new RegExp(r).test(s); -} - -function typeMatch(s, r) { - switch (r) { - case "null": - return null === s; - - case "boolean": - return "boolean" == typeof s; - - case "number": - return "number" == typeof s; - - case "string": - return "string" == typeof s; - - case "array": - return s instanceof Array; - - case "object": - return "[object Object]" === {}.toString.call(s); - } -} - -var matchers = { - $elemMatch: function(s, r, o, u) { - if (!Array.isArray(u)) return false; - if (0 === u.length) return false; - if ("object" == typeof u[0] && null !== u[0]) return u.some((function(s) { - return rowFilter(s, r, Object.keys(r)); - })); else return u.some((function(u) { - return matchSelector(r, s, o, u); - })); - }, - $allMatch: function(s, r, o, u) { - if (!Array.isArray(u)) return false; - if (0 === u.length) return false; - if ("object" == typeof u[0] && null !== u[0]) return u.every((function(s) { - return rowFilter(s, r, Object.keys(r)); - })); else return u.every((function(u) { - return matchSelector(r, s, o, u); - })); - }, - $eq: function(s, r, o, u) { - return fieldIsNotUndefined(u) && 0 === collate(u, r); - }, - $gte: function(s, r, o, u) { - return fieldIsNotUndefined(u) && collate(u, r) >= 0; - }, - $gt: function(s, r, o, u) { - return fieldIsNotUndefined(u) && collate(u, r) > 0; - }, - $lte: function(s, r, o, u) { - return fieldIsNotUndefined(u) && collate(u, r) <= 0; - }, - $lt: function(s, r, o, u) { - return fieldIsNotUndefined(u) && collate(u, r) < 0; - }, - $exists: function(s, r, o, u) { - if (r) return fieldIsNotUndefined(u); else return !fieldIsNotUndefined(u); - }, - $mod: function(s, r, o, u) { - return fieldExists(u) && modField(u, r); - }, - $ne: function(s, r, o, u) { - return r.every((function(s) { - return 0 !== collate(u, s); - })); - }, - $in: function(s, r, o, u) { - return fieldExists(u) && arrayContainsValue(u, r); - }, - $nin: function(s, r, o, u) { - return fieldExists(u) && !arrayContainsValue(u, r); - }, - $size: function(s, r, o, u) { - return fieldExists(u) && Array.isArray(u) && arraySize(u, r); - }, - $all: function(s, r, o, u) { - return Array.isArray(u) && arrayContainsAllValues(u, r); - }, - $regex: function(s, r, o, u) { - return fieldExists(u) && "string" == typeof u && r.every((function(s) { - return regexMatch(u, s); - })); - }, - $type: function(s, r, o, u) { - return typeMatch(u, r); - } -}; - -function matchesSelector(s, r) { - if ("object" != typeof r) throw new Error("Selector error: expected a JSON object"); - var o = filterInMemoryFields([ { - doc: s - } ], { - selector: r = massageSelector(r) - }, Object.keys(r)); - return o && 1 === o.length; -} - -function evalFilter(s) { - return scopeEval('"use strict";\nreturn ' + s + ";", {}); -} - -function evalView(s) { - return scopeEval([ "return function(doc) {", ' "use strict";', " var emitted = false;", " var emit = function (a, b) {", " emitted = true;", " };", " var view = " + s + ";", " view(doc);", " if (emitted) {", " return true;", " }", "};" ].join("\n"), {}); -} - -function validate2(s, r) { - if (s.selector) if (s.filter && "_selector" !== s.filter) { - var o = "string" == typeof s.filter ? s.filter : "function"; - return r(new Error('selector invalid for filter "' + o + '"')); - } - r(); -} - -function normalize(s) { - if (s.view && !s.filter) s.filter = "_view"; - if (s.selector && !s.filter) s.filter = "_selector"; - if (s.filter && "string" == typeof s.filter) if ("_view" === s.filter) s.view = normalizeDesignDocFunctionName(s.view); else s.filter = normalizeDesignDocFunctionName(s.filter); -} - -function shouldFilter(s, r) { - return r.filter && "string" == typeof r.filter && !r.doc_ids && !isRemote(s.db); -} - -function filter2(s, r) { - var o = r.complete; - if ("_view" === r.filter) { - if (!r.view || "string" != typeof r.view) { - var u = createError(BAD_REQUEST, "`view` filter parameter not found or invalid."); - return o(u); - } - var g = parseDesignDocFunctionName(r.view); - s.db.get("_design/" + g[0], (function(u, _) { - if (s.isCancelled) return o(null, { - status: "cancelled" - }); - if (u) return o(generateErrorFromResponse(u)); - var m = _ && _.views && _.views[g[1]] && _.views[g[1]].map; - if (!m) return o(createError(MISSING_DOC, _.views ? "missing json key: " + g[1] : "missing json key: views")); - r.filter = evalView(m); - s.doChanges(r); - })); - } else if (r.selector) { - r.filter = function(s) { - return matchesSelector(s, r.selector); - }; - s.doChanges(r); - } else { - var _ = parseDesignDocFunctionName(r.filter); - s.db.get("_design/" + _[0], (function(u, g) { - if (s.isCancelled) return o(null, { - status: "cancelled" - }); - if (u) return o(generateErrorFromResponse(u)); - var m = g && g.filters && g.filters[_[1]]; - if (!m) return o(createError(MISSING_DOC, g && g.filters ? "missing json key: " + _[1] : "missing json key: filters")); - r.filter = evalFilter(m); - s.doChanges(r); - })); - } -} - -function applyChangesFilterPlugin(s) { - s._changesFilterPlugin = { - validate: validate2, - normalize, - shouldFilter, - filter: filter2 - }; -} - -var index_browser_es_default = applyChangesFilterPlugin; - -function tryCatchInChangeListener(s, r, o, u) { - try { - s.emit("change", r, o, u); - } catch (s) { - guardedConsole("error", 'Error in .on("change", function):', s); - } -} - -function processChange(s, r, o) { - var u = [ { - rev: s._rev - } ]; - if ("all_docs" === o.style) u = collectLeaves(r.rev_tree).map((function(s) { - return { - rev: s.rev - }; - })); - var g = { - id: r.id, - changes: u, - doc: s - }; - if (isDeleted(r, s._rev)) g.deleted = true; - if (o.conflicts) { - g.doc._conflicts = collectConflicts(r); - if (!g.doc._conflicts.length) delete g.doc._conflicts; - } - return g; -} - -var Changes2 = class extends import_events2.default { - constructor(s, r, o) { - super(); - this.db = s; - var u = (r = r ? clone(r) : {}).complete = once(((r, o) => { - if (r) { - if (listenerCount(this, "error") > 0) this.emit("error", r); - } else this.emit("complete", o); - this.removeAllListeners(); - s.removeListener("destroyed", onDestroy2); - })); - if (o) { - this.on("complete", (function(s) { - o(null, s); - })); - this.on("error", o); - } - const onDestroy2 = () => { - this.cancel(); - }; - s.once("destroyed", onDestroy2); - r.onChange = (s, r, o) => { - if (!this.isCancelled) tryCatchInChangeListener(this, s, r, o); - }; - var g = new Promise((function(s, o) { - r.complete = function(r, u) { - if (r) o(r); else s(u); - }; - })); - this.once("cancel", (function() { - s.removeListener("destroyed", onDestroy2); - r.complete(null, { - status: "cancelled" - }); - })); - this.then = g.then.bind(g); - this["catch"] = g["catch"].bind(g); - this.then((function(s) { - u(null, s); - }), u); - if (!s.taskqueue.isReady) s.taskqueue.addTask((s => { - if (s) r.complete(s); else if (this.isCancelled) this.emit("cancel"); else this.validateChanges(r); - })); else this.validateChanges(r); - } - cancel() { - this.isCancelled = true; - if (this.db.taskqueue.isReady) this.emit("cancel"); - } - validateChanges(s) { - var r = s.complete; - if (PouchDB._changesFilterPlugin) PouchDB._changesFilterPlugin.validate(s, (o => { - if (o) return r(o); - this.doChanges(s); - })); else this.doChanges(s); - } - doChanges(s) { - var r = s.complete; - if ("live" in (s = clone(s)) && !("continuous" in s)) s.continuous = s.live; - s.processChange = processChange; - if ("latest" === s.since) s.since = "now"; - if (!s.since) s.since = 0; - if ("now" !== s.since) { - if (PouchDB._changesFilterPlugin) { - PouchDB._changesFilterPlugin.normalize(s); - if (PouchDB._changesFilterPlugin.shouldFilter(this, s)) return PouchDB._changesFilterPlugin.filter(this, s); - } else [ "doc_ids", "filter", "selector", "view" ].forEach((function(r) { - if (r in s) guardedConsole("warn", 'The "' + r + '" option was passed in to changes/replicate, but pouchdb-changes-filter plugin is not installed, so it was ignored. Please install the plugin to enable filtering.'); - })); - if (!("descending" in s)) s.descending = false; - s.limit = 0 === s.limit ? 1 : s.limit; - s.complete = r; - var o = this.db._changes(s); - if (o && "function" == typeof o.cancel) { - const s = this.cancel; - this.cancel = (...r) => { - o.cancel(); - s.apply(this, r); - }; - } - } else this.db.info().then((o => { - if (!this.isCancelled) { - s.since = o.update_seq; - this.doChanges(s); - } else r(null, { - status: "cancelled" - }); - }), r); - } -}; - -function compare2(s, r) { - return s < r ? -1 : s > r ? 1 : 0; -} - -function yankError(s, r) { - return function(o, u) { - if (o || u[0] && u[0].error) { - (o = o || u[0]).docId = r; - s(o); - } else s(null, u.length ? u[0] : u); - }; -} - -function cleanDocs(s) { - for (var r = 0; r < s.length; r++) { - var o = s[r]; - if (o._deleted) delete o._attachments; else if (o._attachments) for (var u = Object.keys(o._attachments), g = 0; g < u.length; g++) { - var _ = u[g]; - o._attachments[_] = pick(o._attachments[_], [ "data", "digest", "content_type", "length", "revpos", "stub" ]); - } - } -} - -function compareByIdThenRev(s, r) { - var o = compare2(s._id, r._id); - if (0 !== o) return o; else return compare2(s._revisions ? s._revisions.start : 0, r._revisions ? r._revisions.start : 0); -} - -function computeHeight(s) { - var r = {}, o = []; - traverseRevTree(s, (function(s, u, g, _) { - var m = u + "-" + g; - if (s) r[m] = 0; - if (void 0 !== _) o.push({ - from: _, - to: m - }); - return m; - })); - o.reverse(); - o.forEach((function(s) { - if (void 0 === r[s.from]) r[s.from] = 1 + r[s.to]; else r[s.from] = Math.min(r[s.from], 1 + r[s.to]); - })); - return r; -} - -function allDocsKeysParse(s) { - var r = "limit" in s ? s.keys.slice(s.skip, s.limit + s.skip) : s.skip > 0 ? s.keys.slice(s.skip) : s.keys; - s.keys = r; - s.skip = 0; - delete s.limit; - if (s.descending) { - r.reverse(); - s.descending = false; - } -} - -function doNextCompaction(s) { - var r = s._compactionQueue[0], o = r.opts, u = r.callback; - s.get("_local/compaction").catch((function() { - return false; - })).then((function(r) { - if (r && r.last_seq) o.last_seq = r.last_seq; - s._compact(o, (function(r, o) { - if (r) u(r); else u(null, o); - (0, import_immediate.default)((function() { - s._compactionQueue.shift(); - if (s._compactionQueue.length) doNextCompaction(s); - })); - })); - })); -} - -function appendPurgeSeq(s, r, o) { - return s.get("_local/purges").then((function(s) { - const u = s.purgeSeq + 1; - s.purges.push({ - docId: r, - rev: o, - purgeSeq: u - }); - if (s.purges.length > self.purged_infos_limit) s.purges.splice(0, s.purges.length - self.purged_infos_limit); - s.purgeSeq = u; - return s; - })).catch((function(s) { - if (404 !== s.status) throw s; - return { - _id: "_local/purges", - purges: [ { - docId: r, - rev: o, - purgeSeq: 0 - } ], - purgeSeq: 0 - }; - })).then((function(r) { - return s.put(r); - })); -} - -function attachmentNameError(s) { - if ("_" === s.charAt(0)) return s + " is not a valid attachment name, attachment names cannot start with '_'"; else return false; -} - -var AbstractPouchDB = class extends import_events2.default { - _setup() { - this.post = adapterFun("post", (function(s, r, o) { - if ("function" == typeof r) { - o = r; - r = {}; - } - if ("object" != typeof s || Array.isArray(s)) return o(createError(NOT_AN_OBJECT)); - this.bulkDocs({ - docs: [ s ] - }, r, yankError(o, s._id)); - })).bind(this); - this.put = adapterFun("put", (function(s, r, o) { - if ("function" == typeof r) { - o = r; - r = {}; - } - if ("object" != typeof s || Array.isArray(s)) return o(createError(NOT_AN_OBJECT)); - invalidIdError(s._id); - if (isLocalId(s._id) && "function" == typeof this._putLocal) if (s._deleted) return this._removeLocal(s, o); else return this._putLocal(s, o); - const putDoc = o => { - if ("function" == typeof this._put && false !== r.new_edits) this._put(s, r, o); else this.bulkDocs({ - docs: [ s ] - }, r, yankError(o, s._id)); - }; - if (r.force && s._rev) { - (function transformForceOptionToNewEditsOption() { - var o = s._rev.split("-"), u = o[1], g = parseInt(o[0], 10) + 1, _ = rev(); - s._revisions = { - start: g, - ids: [ _, u ] - }; - s._rev = g + "-" + _; - r.new_edits = false; - })(); - putDoc((function(r) { - var u = r ? null : { - ok: true, - id: s._id, - rev: s._rev - }; - o(r, u); - })); - } else putDoc(o); - })).bind(this); - this.putAttachment = adapterFun("putAttachment", (function(s, r, o, u, g) { - var _ = this; - if ("function" == typeof g) { - g = u; - u = o; - o = null; - } - if ("undefined" == typeof g) { - g = u; - u = o; - o = null; - } - if (!g) guardedConsole("warn", "Attachment", r, "on document", s, "is missing content_type"); - function createAttachment(s) { - var o = "_rev" in s ? parseInt(s._rev, 10) : 0; - s._attachments = s._attachments || {}; - s._attachments[r] = { - content_type: g, - data: u, - revpos: ++o - }; - return _.put(s); - } - return _.get(s).then((function(s) { - if (s._rev !== o) throw createError(REV_CONFLICT); - return createAttachment(s); - }), (function(r) { - if (r.reason === MISSING_DOC.message) return createAttachment({ - _id: s - }); else throw r; - })); - })).bind(this); - this.removeAttachment = adapterFun("removeAttachment", (function(s, r, o, u) { - this.get(s, ((s, g) => { - if (!s) if (g._rev === o) { - if (!g._attachments) return u(); - delete g._attachments[r]; - if (0 === Object.keys(g._attachments).length) delete g._attachments; - this.put(g, u); - } else u(createError(REV_CONFLICT)); else u(s); - })); - })).bind(this); - this.remove = adapterFun("remove", (function(s, r, o, u) { - var g; - if ("string" == typeof r) { - g = { - _id: s, - _rev: r - }; - if ("function" == typeof o) { - u = o; - o = {}; - } - } else { - g = s; - if ("function" == typeof r) { - u = r; - o = {}; - } else { - u = o; - o = r; - } - } - (o = o || {}).was_delete = true; - var _ = { - _id: g._id, - _rev: g._rev || o.rev, - _deleted: true - }; - if (isLocalId(_._id) && "function" == typeof this._removeLocal) return this._removeLocal(g, u); - this.bulkDocs({ - docs: [ _ ] - }, o, yankError(u, _._id)); - })).bind(this); - this.revsDiff = adapterFun("revsDiff", (function(s, r, o) { - if ("function" == typeof r) { - o = r; - r = {}; - } - var u = Object.keys(s); - if (!u.length) return o(null, {}); - var g = 0, _ = new ExportedMap; - function addToMissing(s, r) { - if (!_.has(s)) _.set(s, { - missing: [] - }); - _.get(s).missing.push(r); - } - u.map((function(r) { - this._getRevisionTree(r, (function(m, b) { - if (m && 404 === m.status && "missing" === m.message) _.set(r, { - missing: s[r] - }); else if (m) return o(m); else (function processDoc(r, o) { - var u = s[r].slice(0); - traverseRevTree(o, (function(s, o, g, _, m) { - var b = o + "-" + g, E = u.indexOf(b); - if (-1 !== E) { - u.splice(E, 1); - if ("available" !== m.status) addToMissing(r, b); - } - })); - u.forEach((function(s) { - addToMissing(r, s); - })); - })(r, b); - if (++g === u.length) { - var E = {}; - _.forEach((function(s, r) { - E[r] = s; - })); - return o(null, E); - } - })); - }), this); - })).bind(this); - this.bulkGet = adapterFun("bulkGet", (function(s, r) { - bulkGet(this, s, r); - })).bind(this); - this.compactDocument = adapterFun("compactDocument", (function(s, r, o) { - this._getRevisionTree(s, ((u, g) => { - if (u) return o(u); - var _ = computeHeight(g), m = [], b = []; - Object.keys(_).forEach((function(s) { - if (_[s] > r) m.push(s); - })); - traverseRevTree(g, (function(s, r, o, u, g) { - var _ = r + "-" + o; - if ("available" === g.status && -1 !== m.indexOf(_)) b.push(_); - })); - this._doCompaction(s, b, o); - })); - })).bind(this); - this.compact = adapterFun("compact", (function(s, r) { - if ("function" == typeof s) { - r = s; - s = {}; - } - s = s || {}; - this._compactionQueue = this._compactionQueue || []; - this._compactionQueue.push({ - opts: s, - callback: r - }); - if (1 === this._compactionQueue.length) doNextCompaction(this); - })).bind(this); - this.get = adapterFun("get", (function(s, r, o) { - if ("function" == typeof r) { - o = r; - r = {}; - } - if ("string" != typeof s) return o(createError(INVALID_ID)); - if (isLocalId(s) && "function" == typeof this._getLocal) return this._getLocal(s, o); - var u = []; - const finishOpenRevs = () => { - var g = [], _ = u.length; - if (!_) return o(null, g); - u.forEach((u => { - this.get(s, { - rev: u, - revs: r.revs, - latest: r.latest, - attachments: r.attachments, - binary: r.binary - }, (function(s, r) { - if (!s) { - for (var m, b = 0, E = g.length; b < E; b++) if (g[b].ok && g[b].ok._rev === r._rev) { - m = true; - break; - } - if (!m) g.push({ - ok: r - }); - } else g.push({ - missing: u - }); - if (! --_) o(null, g); - })); - })); - }; - if (!r.open_revs) return this._get(s, r, ((u, g) => { - if (u) { - u.docId = s; - return o(u); - } - var _ = g.doc, m = g.metadata, b = g.ctx; - if (r.conflicts) { - var E = collectConflicts(m); - if (E.length) _._conflicts = E; - } - if (isDeleted(m, _._rev)) _._deleted = true; - if (r.revs || r.revs_info) { - for (var w = _._rev.split("-"), S = parseInt(w[0], 10), L = w[1], O = rootToLeaf(m.rev_tree), D = null, k = 0; k < O.length; k++) { - var C = O[k], T = C.ids.map((function(s) { - return s.id; - })).indexOf(L); - if (T === S - 1 || !D && -1 !== T) D = C; - } - if (!D) { - (u = new Error("invalid rev tree")).docId = s; - return o(u); - } - var I = D.ids.map((function(s) { - return s.id; - })).indexOf(_._rev.split("-")[1]) + 1, A = D.ids.length - I; - D.ids.splice(I, A); - D.ids.reverse(); - if (r.revs) _._revisions = { - start: D.pos + D.ids.length - 1, - ids: D.ids.map((function(s) { - return s.id; - })) - }; - if (r.revs_info) { - var R = D.pos + D.ids.length; - _._revs_info = D.ids.map((function(s) { - return { - rev: --R + "-" + s.id, - status: s.opts.status - }; - })); - } - } - if (r.attachments && _._attachments) { - var x = _._attachments, P = Object.keys(x).length; - if (0 === P) return o(null, _); - Object.keys(x).forEach((s => { - this._getAttachment(_._id, s, x[s], { - rev: _._rev, - binary: r.binary, - ctx: b - }, (function(r, u) { - var g = _._attachments[s]; - g.data = u; - delete g.stub; - delete g.length; - if (! --P) o(null, _); - })); - })); - } else { - if (_._attachments) for (var N in _._attachments) if (Object.prototype.hasOwnProperty.call(_._attachments, N)) _._attachments[N].stub = true; - o(null, _); - } - })); else if ("all" === r.open_revs) this._getRevisionTree(s, (function(s, r) { - if (s) return o(s); - u = collectLeaves(r).map((function(s) { - return s.rev; - })); - finishOpenRevs(); - })); else if (Array.isArray(r.open_revs)) { - u = r.open_revs; - for (var g = 0; g < u.length; g++) { - var _ = u[g]; - if (!("string" == typeof _ && /^\d+-/.test(_))) return o(createError(INVALID_REV)); - } - finishOpenRevs(); - } else return o(createError(UNKNOWN_ERROR, "function_clause")); - })).bind(this); - this.getAttachment = adapterFun("getAttachment", (function(s, r, o, u) { - if (o instanceof Function) { - u = o; - o = {}; - } - this._get(s, o, ((g, _) => { - if (g) return u(g); - if (_.doc._attachments && _.doc._attachments[r]) { - o.ctx = _.ctx; - o.binary = true; - this._getAttachment(s, r, _.doc._attachments[r], o, u); - } else return u(createError(MISSING_DOC)); - })); - })).bind(this); - this.allDocs = adapterFun("allDocs", (function(s, r) { - if ("function" == typeof s) { - r = s; - s = {}; - } - s.skip = "undefined" != typeof s.skip ? s.skip : 0; - if (s.start_key) s.startkey = s.start_key; - if (s.end_key) s.endkey = s.end_key; - if ("keys" in s) { - if (!Array.isArray(s.keys)) return r(new TypeError("options.keys must be an array")); - var o = [ "startkey", "endkey", "key" ].filter((function(r) { - return r in s; - }))[0]; - if (o) { - r(createError(QUERY_PARSE_ERROR, "Query parameter `" + o + "` is not compatible with multi-get")); - return; - } - if (!isRemote(this)) { - allDocsKeysParse(s); - if (0 === s.keys.length) return this._allDocs({ - limit: 0 - }, r); - } - } - return this._allDocs(s, r); - })).bind(this); - this.close = adapterFun("close", (function(s) { - this._closed = true; - this.emit("closed"); - return this._close(s); - })).bind(this); - this.info = adapterFun("info", (function(s) { - this._info(((r, o) => { - if (r) return s(r); - o.db_name = o.db_name || this.name; - o.auto_compaction = !!(this.auto_compaction && !isRemote(this)); - o.adapter = this.adapter; - s(null, o); - })); - })).bind(this); - this.id = adapterFun("id", (function(s) { - return this._id(s); - })).bind(this); - this.bulkDocs = adapterFun("bulkDocs", (function(s, r, o) { - if ("function" == typeof r) { - o = r; - r = {}; - } - r = r || {}; - if (Array.isArray(s)) s = { - docs: s - }; - if (!s || !s.docs || !Array.isArray(s.docs)) return o(createError(MISSING_BULK_DOCS)); - for (var u = 0; u < s.docs.length; ++u) if ("object" != typeof s.docs[u] || Array.isArray(s.docs[u])) return o(createError(NOT_AN_OBJECT)); - var g; - s.docs.forEach((function(s) { - if (s._attachments) Object.keys(s._attachments).forEach((function(r) { - g = g || attachmentNameError(r); - if (!s._attachments[r].content_type) guardedConsole("warn", "Attachment", r, "on document", s._id, "is missing content_type"); - })); - })); - if (g) return o(createError(BAD_REQUEST, g)); - if (!("new_edits" in r)) if ("new_edits" in s) r.new_edits = s.new_edits; else r.new_edits = true; - var _ = this; - if (!r.new_edits && !isRemote(_)) s.docs.sort(compareByIdThenRev); - cleanDocs(s.docs); - var m = s.docs.map((function(s) { - return s._id; - })); - this._bulkDocs(s, r, (function(s, u) { - if (s) return o(s); - if (!r.new_edits) u = u.filter((function(s) { - return s.error; - })); - if (!isRemote(_)) for (var g = 0, b = u.length; g < b; g++) u[g].id = u[g].id || m[g]; - o(null, u); - })); - })).bind(this); - this.registerDependentDatabase = adapterFun("registerDependentDatabase", (function(s, r) { - var o = clone(this.__opts); - if (this.__opts.view_adapter) o.adapter = this.__opts.view_adapter; - var u = new this.constructor(s, o); - upsert(this, "_local/_pouch_dependentDbs", (function diffFun(r) { - r.dependentDbs = r.dependentDbs || {}; - if (r.dependentDbs[s]) return false; - r.dependentDbs[s] = true; - return r; - })).then((function() { - r(null, { - db: u - }); - })).catch(r); - })).bind(this); - this.destroy = adapterFun("destroy", (function(s, r) { - if ("function" == typeof s) { - r = s; - s = {}; - } - var o = "use_prefix" in this ? this.use_prefix : true; - const destroyDb = () => { - this._destroy(s, ((s, o) => { - if (s) return r(s); - this._destroyed = true; - this.emit("destroyed"); - r(null, o || { - ok: true - }); - })); - }; - if (isRemote(this)) return destroyDb(); - this.get("_local/_pouch_dependentDbs", ((s, u) => { - if (s) if (404 !== s.status) return r(s); else return destroyDb(); - var g = u.dependentDbs, _ = this.constructor, m = Object.keys(g).map((s => { - var r = o ? s.replace(new RegExp("^" + _.prefix), "") : s; - return new _(r, this.__opts).destroy(); - })); - Promise.all(m).then(destroyDb, r); - })); - })).bind(this); - } - _compact(s, r) { - var o, u = { - return_docs: false, - last_seq: s.last_seq || 0 - }, g = [], _ = 0; - const onChange = s => { - this.activeTasks.update(o, { - completed_items: ++_ - }); - g.push(this.compactDocument(s.id, 0)); - }, onError = s => { - this.activeTasks.remove(o, s); - r(s); - }, onComplete = s => { - var u = s.last_seq; - Promise.all(g).then((() => upsert(this, "_local/compaction", (s => { - if (!s.last_seq || s.last_seq < u) { - s.last_seq = u; - return s; - } - return false; - })))).then((() => { - this.activeTasks.remove(o); - r(null, { - ok: true - }); - })).catch(onError); - }; - this.info().then((s => { - o = this.activeTasks.add({ - name: "database_compaction", - total_items: s.update_seq - u.last_seq - }); - this.changes(u).on("change", onChange).on("complete", onComplete).on("error", onError); - })); - } - changes(s, r) { - if ("function" == typeof s) { - r = s; - s = {}; - } - (s = s || {}).return_docs = "return_docs" in s ? s.return_docs : !s.live; - return new Changes2(this, s, r); - } - type() { - return "function" == typeof this._type ? this._type() : this.adapter; - } -}; - -AbstractPouchDB.prototype.purge = adapterFun("_purge", (function(s, r, o) { - if ("undefined" == typeof this._purge) return o(createError(UNKNOWN_ERROR, "Purge is not implemented in the " + this.adapter + " adapter.")); - var u = this; - u._getRevisionTree(s, ((g, _) => { - if (g) return o(g); - if (!_) return o(createError(MISSING_DOC)); - let m; - try { - m = findPathToLeaf(_, r); - } catch (s) { - return o(s.message || s); - } - u._purge(s, m, ((g, _) => { - if (g) return o(g); else appendPurgeSeq(u, s, r).then((function() { - return o(null, _); - })); - })); - })); -})); - -var TaskQueue = class { - constructor() { - this.isReady = false; - this.failed = false; - this.queue = []; - } - execute() { - var s; - if (this.failed) for (;s = this.queue.shift(); ) s(this.failed); else for (;s = this.queue.shift(); ) s(); - } - fail(s) { - this.failed = s; - this.execute(); - } - ready(s) { - this.isReady = true; - this.db = s; - this.execute(); - } - addTask(s) { - this.queue.push(s); - if (this.failed) this.execute(); - } -}; - -function parseAdapter(s, r) { - var o = s.match(/([a-z-]*):\/\/(.*)/); - if (o) return { - name: /https?/.test(o[1]) ? o[1] + "://" + o[2] : o[2], - adapter: o[1] - }; - var u = PouchDB.adapters, g = PouchDB.preferredAdapters, _ = PouchDB.prefix, m = r.adapter; - if (!m) for (var b = 0; b < g.length && "idb" === (m = g[b]) && "websql" in u && hasLocalStorage() && localStorage["_pouch__websqldb_" + _ + s]; ++b) guardedConsole("log", 'PouchDB is downgrading "' + s + '" to WebSQL to avoid data loss, because it was already opened with WebSQL.'); - var E = u[m]; - return { - name: (E && "use_prefix" in E ? E.use_prefix : true) ? _ + s : s, - adapter: m - }; -} - -function inherits(s, r) { - s.prototype = Object.create(r.prototype, { - constructor: { - value: s - } - }); -} - -function createClass(s, r) { - let klass = function(...s) { - if (!(this instanceof klass)) return new klass(...s); - r.apply(this, s); - }; - inherits(klass, s); - return klass; -} - -function prepareForDestruction(s) { - function onDestroyed(r) { - s.removeListener("closed", onClosed); - if (!r) s.constructor.emit("destroyed", s.name); - } - function onClosed() { - s.removeListener("destroyed", onDestroyed); - s.constructor.emit("unref", s); - } - s.once("destroyed", onDestroyed); - s.once("closed", onClosed); - s.constructor.emit("ref", s); -} - -var PouchInternal = class extends AbstractPouchDB { - constructor(s, r) { - super(); - this._setup(s, r); - } - _setup(s, r) { - super._setup(); - r = r || {}; - if (s && "object" == typeof s) { - s = (r = s).name; - delete r.name; - } - if (void 0 === r.deterministic_revs) r.deterministic_revs = true; - this.__opts = r = clone(r); - this.auto_compaction = r.auto_compaction; - this.purged_infos_limit = r.purged_infos_limit || 1e3; - this.prefix = PouchDB.prefix; - if ("string" != typeof s) throw new Error("Missing/invalid DB name"); - var o = parseAdapter((r.prefix || "") + s, r); - r.name = o.name; - r.adapter = r.adapter || o.adapter; - this.name = s; - this._adapter = r.adapter; - PouchDB.emit("debug", [ "adapter", "Picked adapter: ", r.adapter ]); - if (!PouchDB.adapters[r.adapter] || !PouchDB.adapters[r.adapter].valid()) throw new Error("Invalid Adapter: " + r.adapter); - if (r.view_adapter) if (!PouchDB.adapters[r.view_adapter] || !PouchDB.adapters[r.view_adapter].valid()) throw new Error("Invalid View Adapter: " + r.view_adapter); - this.taskqueue = new TaskQueue; - this.adapter = r.adapter; - PouchDB.adapters[r.adapter].call(this, r, (s => { - if (s) return this.taskqueue.fail(s); - prepareForDestruction(this); - this.emit("created", this); - PouchDB.emit("created", this.name); - this.taskqueue.ready(this); - })); - } -}, PouchDB = createClass(PouchInternal, (function(s, r) { - PouchInternal.prototype._setup.call(this, s, r); -})), ActiveTasks = class { - constructor() { - this.tasks = {}; - } - list() { - return Object.values(this.tasks); - } - add(s) { - const r = v4_default(); - this.tasks[r] = { - id: r, - name: s.name, - total_items: s.total_items, - created_at: (new Date).toJSON() - }; - return r; - } - get(s) { - return this.tasks[s]; - } - remove(s, r) { - delete this.tasks[s]; - return this.tasks; - } - update(s, r) { - const o = this.tasks[s]; - if ("undefined" != typeof o) { - const u = { - id: o.id, - name: o.name, - created_at: o.created_at, - total_items: r.total_items || o.total_items, - completed_items: r.completed_items || o.completed_items, - updated_at: (new Date).toJSON() - }; - this.tasks[s] = u; - } - return this.tasks; - } -}; - -PouchDB.adapters = {}; - -PouchDB.preferredAdapters = []; - -PouchDB.prefix = "_pouch_"; - -var eventEmitter = new import_events2.default; - -function setUpEventEmitter(s) { - Object.keys(import_events2.default.prototype).forEach((function(r) { - if ("function" == typeof import_events2.default.prototype[r]) s[r] = eventEmitter[r].bind(eventEmitter); - })); - var r = s._destructionListeners = new ExportedMap; - s.on("ref", (function onConstructorRef(s) { - if (!r.has(s.name)) r.set(s.name, []); - r.get(s.name).push(s); - })); - s.on("unref", (function onConstructorUnref(s) { - if (r.has(s.name)) { - var o = r.get(s.name), u = o.indexOf(s); - if (!(u < 0)) { - o.splice(u, 1); - if (o.length > 1) r.set(s.name, o); else r.delete(s.name); - } - } - })); - s.on("destroyed", (function onConstructorDestroyed(s) { - if (r.has(s)) { - var o = r.get(s); - r.delete(s); - o.forEach((function(s) { - s.emit("destroyed", true); - })); - } - })); -} - -setUpEventEmitter(PouchDB); - -PouchDB.adapter = function(s, r, o) { - if (r.valid()) { - PouchDB.adapters[s] = r; - if (o) PouchDB.preferredAdapters.push(s); - } -}; - -PouchDB.plugin = function(s) { - if ("function" == typeof s) s(PouchDB); else if ("object" != typeof s || 0 === Object.keys(s).length) throw new Error('Invalid plugin: got "' + s + '", expected an object or a function'); else Object.keys(s).forEach((function(r) { - PouchDB.prototype[r] = s[r]; - })); - if (this.__defaults) PouchDB.__defaults = assign$2({}, this.__defaults); - return PouchDB; -}; - -PouchDB.defaults = function(s) { - let r = createClass(PouchDB, (function(s, o) { - o = o || {}; - if (s && "object" == typeof s) { - s = (o = s).name; - delete o.name; - } - o = assign$2({}, r.__defaults, o); - PouchDB.call(this, s, o); - })); - r.preferredAdapters = PouchDB.preferredAdapters.slice(); - Object.keys(PouchDB).forEach((function(s) { - if (!(s in r)) r[s] = PouchDB[s]; - })); - r.__defaults = assign$2({}, this.__defaults, s); - return r; -}; - -PouchDB.fetch = function(s, r) { - return f2(s, r); -}; - -PouchDB.prototype.activeTasks = PouchDB.activeTasks = new ActiveTasks; - -var version = "8.0.1"; - -PouchDB.plugin(index_browser_es_default); - -PouchDB.version = version; - -var index_es_default = PouchDB; - -function toObject(s) { - return s.reduce((function(s, r) { - s[r] = true; - return s; - }), {}); -} - -var reservedWords = toObject([ "_id", "_rev", "_access", "_attachments", "_deleted", "_revisions", "_revs_info", "_conflicts", "_deleted_conflicts", "_local_seq", "_rev_tree", "_replication_id", "_replication_state", "_replication_state_time", "_replication_state_reason", "_replication_stats", "_removed" ]), dataWords = toObject([ "_access", "_attachments", "_replication_id", "_replication_state", "_replication_state_time", "_replication_state_reason", "_replication_stats" ]); - -function parseRevisionInfo(s) { - if (!/^\d+-/.test(s)) return createError(INVALID_REV); - var r = s.indexOf("-"), o = s.substring(0, r), u = s.substring(r + 1); - return { - prefix: parseInt(o, 10), - id: u - }; -} - -function makeRevTreeFromRevisions(s, r) { - for (var o = s.start - s.ids.length + 1, u = s.ids, g = [ u[0], r, [] ], _ = 1, m = u.length; _ < m; _++) g = [ u[_], { - status: "missing" - }, [ g ] ]; - return [ { - pos: o, - ids: g - } ]; -} - -function parseDoc(s, r, o) { - if (!o) o = { - deterministic_revs: true - }; - var u, g, _, m = { - status: "available" - }; - if (s._deleted) m.deleted = true; - if (r) { - if (!s._id) s._id = uuid(); - g = rev(s, o.deterministic_revs); - if (s._rev) { - if ((_ = parseRevisionInfo(s._rev)).error) return _; - s._rev_tree = [ { - pos: _.prefix, - ids: [ _.id, { - status: "missing" - }, [ [ g, m, [] ] ] ] - } ]; - u = _.prefix + 1; - } else { - s._rev_tree = [ { - pos: 1, - ids: [ g, m, [] ] - } ]; - u = 1; - } - } else { - if (s._revisions) { - s._rev_tree = makeRevTreeFromRevisions(s._revisions, m); - u = s._revisions.start; - g = s._revisions.ids[0]; - } - if (!s._rev_tree) { - if ((_ = parseRevisionInfo(s._rev)).error) return _; - u = _.prefix; - g = _.id; - s._rev_tree = [ { - pos: u, - ids: [ g, m, [] ] - } ]; - } - } - invalidIdError(s._id); - s._rev = u + "-" + g; - var b = { - metadata: {}, - data: {} - }; - for (var E in s) if (Object.prototype.hasOwnProperty.call(s, E)) { - var w = "_" === E[0]; - if (w && !reservedWords[E]) { - var S = createError(DOC_VALIDATION, E); - S.message = DOC_VALIDATION.message + ": " + E; - throw S; - } else if (w && !dataWords[E]) b.metadata[E.slice(1)] = s[E]; else b.data[E] = s[E]; - } - return b; -} - -function parseBase64(s) { - try { - return thisAtob(s); - } catch (s) { - return { - error: createError(BAD_ARG, "Attachment is not a valid base64 string") - }; - } -} - -function preprocessString(s, r, o) { - var u = parseBase64(s.data); - if (u.error) return o(u.error); - s.length = u.length; - if ("blob" === r) s.data = binStringToBluffer(u, s.content_type); else if ("base64" === r) s.data = thisBtoa(u); else s.data = u; - binaryMd5(u, (function(r) { - s.digest = "md5-" + r; - o(); - })); -} - -function preprocessBlob(s, r, o) { - binaryMd5(s.data, (function(u) { - s.digest = "md5-" + u; - s.length = s.data.size || s.data.length || 0; - if ("binary" === r) blobToBinaryString(s.data, (function(r) { - s.data = r; - o(); - })); else if ("base64" === r) blobToBase64(s.data, (function(r) { - s.data = r; - o(); - })); else o(); - })); -} - -function preprocessAttachment(s, r, o) { - if (s.stub) return o(); - if ("string" == typeof s.data) preprocessString(s, r, o); else preprocessBlob(s, r, o); -} - -function preprocessAttachments(s, r, o) { - if (!s.length) return o(); - var u, g = 0; - s.forEach((function(s) { - var o = s.data && s.data._attachments ? Object.keys(s.data._attachments) : [], g = 0; - if (!o.length) return done(); - function processedAttachment(s) { - u = s; - if (++g === o.length) done(); - } - for (var _ in s.data._attachments) if (Object.prototype.hasOwnProperty.call(s.data._attachments, _)) preprocessAttachment(s.data._attachments[_], r, processedAttachment); - })); - function done() { - g++; - if (s.length === g) if (u) o(u); else o(); - } -} - -function updateDoc(s, r, o, u, g, _, m, b) { - if (revExists(r.rev_tree, o.metadata.rev) && !b) { - u[g] = o; - return _(); - } - var E = r.winningRev || winningRev(r), w = "deleted" in r ? r.deleted : isDeleted(r, E), S = "deleted" in o.metadata ? o.metadata.deleted : isDeleted(o.metadata), L = /^1-/.test(o.metadata.rev); - if (w && !S && b && L) { - var O = o.data; - O._rev = E; - O._id = o.metadata.id; - o = parseDoc(O, b); - } - var D = merge(r.rev_tree, o.metadata.rev_tree[0], s); - if (b && (w && S && "new_leaf" !== D.conflicts || !w && "new_leaf" !== D.conflicts || w && !S && "new_branch" === D.conflicts)) { - var k = createError(REV_CONFLICT); - u[g] = k; - return _(); - } - var C = o.metadata.rev; - o.metadata.rev_tree = D.tree; - o.stemmedRevs = D.stemmedRevs || []; - if (r.rev_map) o.metadata.rev_map = r.rev_map; - var T, I = winningRev(o.metadata), A = isDeleted(o.metadata, I), R = w === A ? 0 : w < A ? -1 : 1; - if (C === I) T = A; else T = isDeleted(o.metadata, C); - m(o, I, A, T, true, R, g, _); -} - -function rootIsMissing(s) { - return "missing" === s.metadata.rev_tree[0].ids[1].status; -} - -function processDocs(s, r, o, u, g, _, m, b, E) { - s = s || 1e3; - var w = b.new_edits, S = new ExportedMap, L = 0, O = r.length; - function checkAllDocsDone() { - if (++L === O && E) E(); - } - r.forEach((function(s, r) { - if (!s._id || !isLocalId(s._id)) { - var u = s.metadata.id; - if (S.has(u)) { - O--; - S.get(u).push([ s, r ]); - } else S.set(u, [ [ s, r ] ]); - } else { - var m = s._deleted ? "_removeLocal" : "_putLocal"; - o[m](s, { - ctx: g - }, (function(s, o) { - _[r] = s || o; - checkAllDocsDone(); - })); - } - })); - S.forEach((function(r, o) { - var g = 0; - function docWritten() { - if (++g < r.length) nextDoc(); else checkAllDocsDone(); - } - function nextDoc() { - var E = r[g], S = E[0], L = E[1]; - if (u.has(o)) updateDoc(s, u.get(o), S, _, L, docWritten, m, w); else { - var O = merge([], S.metadata.rev_tree[0], s); - S.metadata.rev_tree = O.tree; - S.stemmedRevs = O.stemmedRevs || []; - (function insertDoc(s, r, o) { - var u = winningRev(s.metadata), g = isDeleted(s.metadata, u); - if ("was_delete" in b && g) { - _[r] = createError(MISSING_DOC, "deleted"); - return o(); - } - if (w && rootIsMissing(s)) { - var E = createError(REV_CONFLICT); - _[r] = E; - return o(); - } - m(s, u, g, g, false, g ? 0 : 1, r, o); - })(S, L, docWritten); - } - } - nextDoc(); - })); -} - -var import_vuvuzela = __toESM(require_vuvuzela()); - -function safeJsonParse(s) { - try { - return JSON.parse(s); - } catch (r) { - return import_vuvuzela.default.parse(s); - } -} - -function safeJsonStringify(s) { - try { - return JSON.stringify(s); - } catch (r) { - return import_vuvuzela.default.stringify(s); - } -} - -var ADAPTER_VERSION = 5, DOC_STORE = "document-store", BY_SEQ_STORE = "by-sequence", ATTACH_STORE = "attach-store", ATTACH_AND_SEQ_STORE = "attach-seq-store", META_STORE = "meta-store", LOCAL_STORE = "local-store", DETECT_BLOB_SUPPORT_STORE = "detect-blob-support"; - -function idbError(s) { - return function(r) { - var o = "unknown_error"; - if (r.target && r.target.error) o = r.target.error.name || r.target.error.message; - s(createError(IDB_ERROR, o, r.type)); - }; -} - -function encodeMetadata(s, r, o) { - return { - data: safeJsonStringify(s), - winningRev: r, - deletedOrLocal: o ? "1" : "0", - seq: s.seq, - id: s.id - }; -} - -function decodeMetadata(s) { - if (!s) return null; - var r = safeJsonParse(s.data); - r.winningRev = s.winningRev; - r.deleted = "1" === s.deletedOrLocal; - r.seq = s.seq; - return r; -} - -function decodeDoc(s) { - if (!s) return s; - var r = s._doc_id_rev.lastIndexOf(":"); - s._id = s._doc_id_rev.substring(0, r - 1); - s._rev = s._doc_id_rev.substring(r + 1); - delete s._doc_id_rev; - return s; -} - -function readBlobData(s, r, o, u) { - if (o) if (!s) u(createBlob2([ "" ], { - type: r - })); else if ("string" != typeof s) u(s); else u(b64ToBluffer(s, r)); else if (!s) u(""); else if ("string" != typeof s) readAsBinaryString(s, (function(s) { - u(thisBtoa(s)); - })); else u(s); -} - -function fetchAttachmentsIfNecessary(s, r, o, u) { - var g = Object.keys(s._attachments || {}); - if (!g.length) return u && u(); - var _ = 0; - function checkDone() { - if (++_ === g.length && u) u(); - } - g.forEach((function(u) { - if (r.attachments && r.include_docs) (function fetchAttachment(s, r) { - var u = s._attachments[r], g = u.digest; - o.objectStore(ATTACH_STORE).get(g).onsuccess = function(s) { - u.body = s.target.result.body; - checkDone(); - }; - })(s, u); else { - s._attachments[u].stub = true; - checkDone(); - } - })); -} - -function postProcessAttachments(s, r) { - return Promise.all(s.map((function(s) { - if (s.doc && s.doc._attachments) { - var o = Object.keys(s.doc._attachments); - return Promise.all(o.map((function(o) { - var u = s.doc._attachments[o]; - if ("body" in u) { - var g = u.body, _ = u.content_type; - return new Promise((function(m) { - readBlobData(g, _, r, (function(r) { - s.doc._attachments[o] = assign$2(pick(u, [ "digest", "content_type" ]), { - data: r - }); - m(); - })); - })); - } - }))); - } - }))); -} - -function compactRevs(s, r, o) { - var u = [], g = o.objectStore(BY_SEQ_STORE), _ = o.objectStore(ATTACH_STORE), m = o.objectStore(ATTACH_AND_SEQ_STORE), b = s.length; - function checkDone() { - if (! --b) (function deleteOrphanedAttachments() { - if (u.length) u.forEach((function(s) { - m.index("digestSeq").count(IDBKeyRange.bound(s + "::", s + "::￿", false, false)).onsuccess = function(r) { - if (!r.target.result) _.delete(s); - }; - })); - })(); - } - s.forEach((function(s) { - var o = g.index("_doc_id_rev"), _ = r + "::" + s; - o.getKey(_).onsuccess = function(s) { - var r = s.target.result; - if ("number" != typeof r) return checkDone(); - g.delete(r); - m.index("seq").openCursor(IDBKeyRange.only(r)).onsuccess = function(s) { - var r = s.target.result; - if (r) { - var o = r.value.digestSeq.split("::")[0]; - u.push(o); - m.delete(r.primaryKey); - r.continue(); - } else checkDone(); - }; - }; - })); -} - -function openTransactionSafely(s, r, o) { - try { - return { - txn: s.transaction(r, o) - }; - } catch (s) { - return { - error: s - }; - } -} - -var changesHandler$1 = new Changes; - -function idbBulkDocs(s, r, o, u, g, _) { - for (var m, b, E, w, S, L, O, D, k = r.docs, C = 0, T = k.length; C < T; C++) { - var I = k[C]; - if (!I._id || !isLocalId(I._id)) if ((I = k[C] = parseDoc(I, o.new_edits, s)).error && !O) O = I; - } - if (O) return _(O); - var A = false, R = 0, x = new Array(k.length), P = new ExportedMap, N = false, B = u._meta.blobSupport ? "blob" : "base64"; - preprocessAttachments(k, B, (function(r) { - if (r) return _(r); - (function startTransaction() { - var r = openTransactionSafely(g, [ DOC_STORE, BY_SEQ_STORE, ATTACH_STORE, LOCAL_STORE, ATTACH_AND_SEQ_STORE, META_STORE ], "readwrite"); - if (r.error) return _(r.error); - (m = r.txn).onabort = idbError(_); - m.ontimeout = idbError(_); - m.oncomplete = complete; - b = m.objectStore(DOC_STORE); - E = m.objectStore(BY_SEQ_STORE); - w = m.objectStore(ATTACH_STORE); - S = m.objectStore(ATTACH_AND_SEQ_STORE); - (L = m.objectStore(META_STORE)).get(META_STORE).onsuccess = function(s) { - D = s.target.result; - updateDocCountIfReady(); - }; - (function verifyAttachments(s) { - var r = []; - k.forEach((function(s) { - if (s.data && s.data._attachments) Object.keys(s.data._attachments).forEach((function(o) { - var u = s.data._attachments[o]; - if (u.stub) r.push(u.digest); - })); - })); - if (!r.length) return s(); - var o, u = 0; - r.forEach((function(g) { - (function verifyAttachment(s, r) { - w.get(s).onsuccess = function(o) { - if (!o.target.result) { - var u = createError(MISSING_STUB, "unknown stub attachment with digest " + s); - u.status = 412; - r(u); - } else r(); - }; - })(g, (function(g) { - if (g && !o) o = g; - (function checkDone() { - if (++u === r.length) s(o); - })(); - })); - })); - })((function(r) { - if (r) { - N = true; - return _(r); - } - (function fetchExistingDocs() { - if (k.length) for (var r = 0, g = 0, _ = k.length; g < _; g++) { - var E = k[g]; - if (!E._id || !isLocalId(E._id)) b.get(E.metadata.id).onsuccess = readMetadata; else checkDone(); - } - function checkDone() { - if (++r === k.length) (function idbProcessDocs() { - processDocs(s.revs_limit, k, u, P, m, x, writeDoc, o, onAllDocsProcessed); - })(); - } - function readMetadata(s) { - var r = decodeMetadata(s.target.result); - if (r) P.set(r.id, r); - checkDone(); - } - })(); - })); - })(); - })); - function onAllDocsProcessed() { - A = true; - updateDocCountIfReady(); - } - function updateDocCountIfReady() { - if (D && A) { - D.docCount += R; - L.put(D); - } - } - function complete() { - if (!N) { - changesHandler$1.notify(u._meta.name); - _(null, x); - } - } - function writeDoc(s, r, o, u, g, _, m, b) { - s.metadata.winningRev = r; - s.metadata.deleted = o; - var E = s.data; - E._id = s.metadata.id; - E._rev = s.metadata.rev; - if (u) E._deleted = true; - if (E._attachments && Object.keys(E._attachments).length) return function writeAttachments(s, r, o, u, g, _) { - var m = s.data, b = 0, E = Object.keys(m._attachments); - function collectResults() { - if (b === E.length) finishDoc(s, r, o, u, g, _); - } - function attachmentSaved() { - b++; - collectResults(); - } - E.forEach((function(o) { - var u = s.data._attachments[o]; - if (!u.stub) { - var g = u.data; - delete u.data; - u.revpos = parseInt(r, 10); - (function saveAttachment(s, r, o) { - w.count(s).onsuccess = function(u) { - if (u.target.result) return o(); - var g = { - digest: s, - body: r - }; - w.put(g).onsuccess = o; - }; - })(u.digest, g, attachmentSaved); - } else { - b++; - collectResults(); - } - })); - }(s, r, o, g, m, b); - R += _; - updateDocCountIfReady(); - finishDoc(s, r, o, g, m, b); - } - function finishDoc(s, r, o, g, _, w) { - var L = s.data, O = s.metadata; - L._doc_id_rev = O.id + "::" + O.rev; - delete L._id; - delete L._rev; - function afterPutDoc(_) { - var E = s.stemmedRevs || []; - if (g && u.auto_compaction) E = E.concat(compactTree(s.metadata)); - if (E && E.length) compactRevs(E, s.metadata.id, m); - O.seq = _.target.result; - var w = encodeMetadata(O, r, o); - b.put(w).onsuccess = afterPutMetadata; - } - function afterPutMetadata() { - x[_] = { - ok: true, - id: O.id, - rev: O.rev - }; - P.set(s.metadata.id, s.metadata); - (function insertAttachmentMappings(s, r, o) { - var u = 0, g = Object.keys(s.data._attachments || {}); - if (!g.length) return o(); - function checkDone() { - if (++u === g.length) o(); - } - function add(o) { - var u = s.data._attachments[o].digest, g = S.put({ - seq: r, - digestSeq: u + "::" + r - }); - g.onsuccess = checkDone; - g.onerror = function(s) { - s.preventDefault(); - s.stopPropagation(); - checkDone(); - }; - } - for (var _ = 0; _ < g.length; _++) add(g[_]); - })(s, O.seq, w); - } - var D = E.put(L); - D.onsuccess = afterPutDoc; - D.onerror = function afterPutDocError(s) { - s.preventDefault(); - s.stopPropagation(); - E.index("_doc_id_rev").getKey(L._doc_id_rev).onsuccess = function(s) { - E.put(L, s.target.result).onsuccess = afterPutDoc; - }; - }; - } -} - -function runBatchedCursor(s, r, o, u, g) { - if (-1 === u) u = 1e3; - var _, m, b; - function onGetAll(s) { - m = s.target.result; - if (_) g(_, m, b); - } - function onGetAllKeys(s) { - _ = s.target.result; - if (m) g(_, m, b); - } - function onCursor(s) { - var r = s.target.result; - if (!r) return g(); - g([ r.key ], [ r.value ], r); - } - if ("function" == typeof s.getAll && "function" == typeof s.getAllKeys && u > 1 && !o) { - b = { - continue: function continuePseudoCursor() { - if (!_.length) return g(); - var o, b = _[_.length - 1]; - if (r && r.upper) try { - o = IDBKeyRange.bound(b, r.upper, true, r.upperOpen); - } catch (s) { - if ("DataError" === s.name && 0 === s.code) return g(); - } else o = IDBKeyRange.lowerBound(b, true); - r = o; - _ = null; - m = null; - s.getAll(r, u).onsuccess = onGetAll; - s.getAllKeys(r, u).onsuccess = onGetAllKeys; - } - }; - s.getAll(r, u).onsuccess = onGetAll; - s.getAllKeys(r, u).onsuccess = onGetAllKeys; - } else if (o) s.openCursor(r, "prev").onsuccess = onCursor; else s.openCursor(r).onsuccess = onCursor; -} - -function getAll(s, r, o) { - if ("function" != typeof s.getAll) { - var u = []; - s.openCursor(r).onsuccess = function onCursor(s) { - var r = s.target.result; - if (r) { - u.push(r.value); - r.continue(); - } else o({ - target: { - result: u - } - }); - }; - } else s.getAll(r).onsuccess = o; -} - -function allDocsKeys(s, r, o) { - var u = new Array(s.length), g = 0; - s.forEach((function(_, m) { - r.get(_).onsuccess = function(r) { - if (r.target.result) u[m] = r.target.result; else u[m] = { - key: _, - error: "not_found" - }; - if (++g === s.length) o(s, u, {}); - }; - })); -} - -function createKeyRange(s, r, o, u, g) { - try { - if (s && r) if (g) return IDBKeyRange.bound(r, s, !o, false); else return IDBKeyRange.bound(s, r, false, !o); else if (s) if (g) return IDBKeyRange.upperBound(s); else return IDBKeyRange.lowerBound(s); else if (r) if (g) return IDBKeyRange.lowerBound(r, !o); else return IDBKeyRange.upperBound(r, !o); else if (u) return IDBKeyRange.only(u); - } catch (s) { - return { - error: s - }; - } - return null; -} - -function idbAllDocs(s, r, o) { - var u, g, _ = "startkey" in s ? s.startkey : false, m = "endkey" in s ? s.endkey : false, b = "key" in s ? s.key : false, E = "keys" in s ? s.keys : false, w = s.skip || 0, S = "number" == typeof s.limit ? s.limit : -1, L = false !== s.inclusive_end; - if (!E) if ((g = (u = createKeyRange(_, m, L, b, s.descending)) && u.error) && !("DataError" === g.name && 0 === g.code)) return o(createError(IDB_ERROR, g.name, g.message)); - var O = [ DOC_STORE, BY_SEQ_STORE, META_STORE ]; - if (s.attachments) O.push(ATTACH_STORE); - var D = openTransactionSafely(r, O, "readonly"); - if (D.error) return o(D.error); - var k = D.txn; - k.oncomplete = function onTxnComplete() { - if (s.attachments) postProcessAttachments(P, s.binary).then(onResultsReady); else onResultsReady(); - }; - k.onabort = idbError(o); - var C, T, I = k.objectStore(DOC_STORE), A = k.objectStore(BY_SEQ_STORE), R = k.objectStore(META_STORE), x = A.index("_doc_id_rev"), P = []; - R.get(META_STORE).onsuccess = function(s) { - C = s.target.result.docCount; - }; - if (s.update_seq) (function getMaxUpdateSeq(s, r) { - s.openCursor(null, "prev").onsuccess = function onCursor(s) { - var o = s.target.result, u = void 0; - if (o && o.key) u = o.key; - return r({ - target: { - result: [ u ] - } - }); - }; - })(A, (function(s) { - if (s.target.result && s.target.result.length > 0) T = s.target.result[0]; - })); - function allDocsInner(r, o) { - var u = { - id: o.id, - key: o.id, - value: { - rev: r - } - }; - if (o.deleted) { - if (E) { - P.push(u); - u.value.deleted = true; - u.doc = null; - } - } else if (w-- <= 0) { - P.push(u); - if (s.include_docs) (function fetchDocAsynchronously(r, o, u) { - var g = r.id + "::" + u; - x.get(g).onsuccess = function onGetDoc(u) { - o.doc = decodeDoc(u.target.result) || {}; - if (s.conflicts) { - var g = collectConflicts(r); - if (g.length) o.doc._conflicts = g; - } - fetchAttachmentsIfNecessary(o.doc, s, k); - }; - })(o, u, r); - } - } - function processBatch(s) { - for (var r = 0, o = s.length; r < o && P.length !== S; r++) { - var u = s[r]; - if (!u.error || !E) { - var g = decodeMetadata(u); - allDocsInner(g.winningRev, g); - } else P.push(u); - } - } - function onBatch(s, r, o) { - if (o) { - processBatch(r); - if (P.length < S) o.continue(); - } - } - function onResultsReady() { - var r = { - total_rows: C, - offset: s.skip, - rows: P - }; - if (s.update_seq && void 0 !== T) r.update_seq = T; - o(null, r); - } - if (!g && 0 !== S) { - if (E) return allDocsKeys(s.keys, I, onBatch); - if (-1 === S) return getAll(I, u, (function onGetAll(r) { - var o = r.target.result; - if (s.descending) o = o.reverse(); - processBatch(o); - })); - runBatchedCursor(I, u, s.descending, S + w, onBatch); - } -} - -function checkBlobSupport(s) { - return new Promise((function(r) { - var o = createBlob2([ "" ]), u = s.objectStore(DETECT_BLOB_SUPPORT_STORE).put(o, "key"); - u.onsuccess = function() { - var s = navigator.userAgent.match(/Chrome\/(\d+)/), o = navigator.userAgent.match(/Edge\//); - r(o || !s || parseInt(s[1], 10) >= 43); - }; - u.onerror = s.onabort = function(s) { - s.preventDefault(); - s.stopPropagation(); - r(false); - }; - })).catch((function() { - return false; - })); -} - -function countDocs(s, r) { - s.objectStore(DOC_STORE).index("deletedOrLocal").count(IDBKeyRange.only("0")).onsuccess = function(s) { - r(s.target.result); - }; -} - -var running = false, queue = []; - -function tryCode(s, r, o, u) { - try { - s(r, o); - } catch (s) { - u.emit("error", s); - } -} - -function applyNext() { - if (!running && queue.length) { - running = true; - queue.shift()(); - } -} - -function enqueueTask(s, r, o) { - queue.push((function runAction() { - s((function runCallback(s, u) { - tryCode(r, s, u, o); - running = false; - (0, import_immediate.default)((function runNext() { - applyNext(o); - })); - })); - })); - applyNext(); -} - -function changes(s, r, o, u) { - if ((s = clone(s)).continuous) { - var g = o + ":" + uuid(); - changesHandler$1.addListener(o, g, r, s); - changesHandler$1.notify(o); - return { - cancel: function() { - changesHandler$1.removeListener(o, g); - } - }; - } - var _ = s.doc_ids && new ExportedSet(s.doc_ids); - s.since = s.since || 0; - var m = s.since, b = "limit" in s ? s.limit : -1; - if (0 === b) b = 1; - var E, w, S, L, O = [], D = 0, k = filterChange(s), C = new ExportedMap; - function onGetMetadata(s, r, o, u) { - if (o.seq !== r) return u(); - if (o.winningRev === s._rev) return u(o, s); - var g = s._id + "::" + o.winningRev; - L.get(g).onsuccess = function(s) { - u(o, decodeDoc(s.target.result)); - }; - } - function finish() { - s.complete(null, { - results: O, - last_seq: m - }); - } - var T = [ DOC_STORE, BY_SEQ_STORE ]; - if (s.attachments) T.push(ATTACH_STORE); - var I = openTransactionSafely(u, T, "readonly"); - if (I.error) return s.complete(I.error); - (E = I.txn).onabort = idbError(s.complete); - E.oncomplete = function onTxnComplete() { - if (!s.continuous && s.attachments) postProcessAttachments(O).then(finish); else finish(); - }; - w = E.objectStore(BY_SEQ_STORE); - S = E.objectStore(DOC_STORE); - L = w.index("_doc_id_rev"); - runBatchedCursor(w, s.since && !s.descending ? IDBKeyRange.lowerBound(s.since, true) : null, s.descending, b, (function onBatch(r, o, u) { - if (u && r.length) { - var g = new Array(r.length), w = new Array(r.length), L = 0; - o.forEach((function(o, m) { - (function fetchWinningDocAndMetadata(s, r, o) { - if (_ && !_.has(s._id)) return o(); - var u = C.get(s._id); - if (u) return onGetMetadata(s, r, u, o); - S.get(s._id).onsuccess = function(g) { - u = decodeMetadata(g.target.result); - C.set(s._id, u); - onGetMetadata(s, r, u, o); - }; - })(decodeDoc(o), r[m], (function(o, _) { - w[m] = o; - g[m] = _; - if (++L === r.length) (function onBatchDone() { - for (var r = [], o = 0, _ = g.length; o < _ && D !== b; o++) { - var m = g[o]; - if (m) { - var E = w[o]; - r.push(processMetadataAndWinningDoc(E, m)); - } - } - Promise.all(r).then((function(r) { - for (var o = 0, u = r.length; o < u; o++) if (r[o]) s.onChange(r[o]); - })).catch(s.complete); - if (D !== b) u.continue(); - })(); - })); - })); - } - function processMetadataAndWinningDoc(r, o) { - var u = s.processChange(o, r, s); - m = u.seq = r.seq; - var g = k(u); - if ("object" == typeof g) return Promise.reject(g); - if (!g) return Promise.resolve(); - D++; - if (s.return_docs) O.push(u); - if (s.attachments && s.include_docs) return new Promise((function(r) { - fetchAttachmentsIfNecessary(o, s, E, (function() { - postProcessAttachments([ u ], s.binary).then((function() { - r(u); - })); - })); - })); else return Promise.resolve(u); - } - })); -} - -var blobSupportPromise, cachedDBs = new ExportedMap, openReqList = new ExportedMap; - -function IdbPouch(s, r) { - var o = this; - enqueueTask((function(r) { - init(o, s, r); - }), r, o.constructor); -} - -function init(s, r, o) { - var u = r.name, g = null, _ = null; - s._meta = null; - function enrichCallbackError(s) { - return function(r, o) { - if (r && r instanceof Error && !r.reason) if (_) r.reason = _; - s(r, o); - }; - } - function addDeletedOrLocalIndex(s, r) { - var o = s.objectStore(DOC_STORE); - o.createIndex("deletedOrLocal", "deletedOrLocal", { - unique: false - }); - o.openCursor().onsuccess = function(s) { - var u = s.target.result; - if (u) { - var g = u.value, _ = isDeleted(g); - g.deletedOrLocal = _ ? "1" : "0"; - o.put(g); - u.continue(); - } else r(); - }; - } - function migrateLocalStore(s, r) { - var o = s.objectStore(LOCAL_STORE), u = s.objectStore(DOC_STORE), g = s.objectStore(BY_SEQ_STORE); - u.openCursor().onsuccess = function(s) { - var _ = s.target.result; - if (_) { - var m = _.value, b = m.id, E = isLocalId(b), w = winningRev(m); - if (E) { - var S = b + "::" + w, L = b + "::", O = b + "::~", D = g.index("_doc_id_rev"), k = IDBKeyRange.bound(L, O, false, false), C = D.openCursor(k); - C.onsuccess = function(s) { - if (!(C = s.target.result)) { - u.delete(_.primaryKey); - _.continue(); - } else { - var r = C.value; - if (r._doc_id_rev === S) o.put(r); - g.delete(C.primaryKey); - C.continue(); - } - }; - } else _.continue(); - } else if (r) r(); - }; - } - function migrateAttsAndSeqs(s, r) { - var o = s.objectStore(BY_SEQ_STORE), u = s.objectStore(ATTACH_STORE), g = s.objectStore(ATTACH_AND_SEQ_STORE); - u.count().onsuccess = function(s) { - if (!s.target.result) return r(); - o.openCursor().onsuccess = function(s) { - var o = s.target.result; - if (!o) return r(); - for (var u = o.value, _ = o.primaryKey, m = Object.keys(u._attachments || {}), b = {}, E = 0; E < m.length; E++) b[u._attachments[m[E]].digest] = true; - var w = Object.keys(b); - for (E = 0; E < w.length; E++) { - var S = w[E]; - g.put({ - seq: _, - digestSeq: S + "::" + _ - }); - } - o.continue(); - }; - }; - } - function migrateMetadata(s) { - var r = s.objectStore(BY_SEQ_STORE), o = s.objectStore(DOC_STORE); - o.openCursor().onsuccess = function(s) { - var u = s.target.result; - if (u) { - var g = function decodeMetadataCompat(s) { - if (!s.data) { - s.deleted = "1" === s.deletedOrLocal; - return s; - } - return decodeMetadata(s); - }(u.value); - g.winningRev = g.winningRev || winningRev(g); - if (g.seq) return onGetMetadataSeq(); - (function fetchMetadataSeq() { - var s = g.id + "::", o = g.id + "::￿", u = r.index("_doc_id_rev").openCursor(IDBKeyRange.bound(s, o)), _ = 0; - u.onsuccess = function(s) { - var r = s.target.result; - if (!r) { - g.seq = _; - return onGetMetadataSeq(); - } - var o = r.primaryKey; - if (o > _) _ = o; - r.continue(); - }; - })(); - } - function onGetMetadataSeq() { - var s = encodeMetadata(g, g.winningRev, g.deleted); - o.put(s).onsuccess = function() { - u.continue(); - }; - } - }; - } - s._remote = false; - s.type = function() { - return "idb"; - }; - s._id = toPromise((function(r) { - r(null, s._meta.instanceId); - })); - s._bulkDocs = function idb_bulkDocs(o, u, _) { - idbBulkDocs(r, o, u, s, g, enrichCallbackError(_)); - }; - s._get = function idb_get(s, r, o) { - var u, _, m, b = r.ctx; - if (!b) { - var E = openTransactionSafely(g, [ DOC_STORE, BY_SEQ_STORE, ATTACH_STORE ], "readonly"); - if (E.error) return o(E.error); - b = E.txn; - } - function finish() { - o(m, { - doc: u, - metadata: _, - ctx: b - }); - } - b.objectStore(DOC_STORE).get(s).onsuccess = function(s) { - if (!(_ = decodeMetadata(s.target.result))) { - m = createError(MISSING_DOC, "missing"); - return finish(); - } - var o; - if (!r.rev) { - o = _.winningRev; - if (isDeleted(_)) { - m = createError(MISSING_DOC, "deleted"); - return finish(); - } - } else o = r.latest ? latest(r.rev, _) : r.rev; - var g = b.objectStore(BY_SEQ_STORE), E = _.id + "::" + o; - g.index("_doc_id_rev").get(E).onsuccess = function(s) { - if (u = s.target.result) u = decodeDoc(u); - if (!u) { - m = createError(MISSING_DOC, "missing"); - return finish(); - } - finish(); - }; - }; - }; - s._getAttachment = function(s, r, o, u, _) { - var m; - if (u.ctx) m = u.ctx; else { - var b = openTransactionSafely(g, [ DOC_STORE, BY_SEQ_STORE, ATTACH_STORE ], "readonly"); - if (b.error) return _(b.error); - m = b.txn; - } - var E = o.digest, w = o.content_type; - m.objectStore(ATTACH_STORE).get(E).onsuccess = function(s) { - readBlobData(s.target.result.body, w, u.binary, (function(s) { - _(null, s); - })); - }; - }; - s._info = function idb_info(r) { - var o, u, _ = openTransactionSafely(g, [ META_STORE, BY_SEQ_STORE ], "readonly"); - if (_.error) return r(_.error); - var m = _.txn; - m.objectStore(META_STORE).get(META_STORE).onsuccess = function(s) { - u = s.target.result.docCount; - }; - m.objectStore(BY_SEQ_STORE).openCursor(null, "prev").onsuccess = function(s) { - var r = s.target.result; - o = r ? r.key : 0; - }; - m.oncomplete = function() { - r(null, { - doc_count: u, - update_seq: o, - idb_attachment_format: s._meta.blobSupport ? "binary" : "base64" - }); - }; - }; - s._allDocs = function idb_allDocs(s, r) { - idbAllDocs(s, g, enrichCallbackError(r)); - }; - s._changes = function idbChanges2(r) { - return changes(r, s, u, g); - }; - s._close = function(s) { - g.close(); - cachedDBs.delete(u); - s(); - }; - s._getRevisionTree = function(s, r) { - var o = openTransactionSafely(g, [ DOC_STORE ], "readonly"); - if (o.error) return r(o.error); - o.txn.objectStore(DOC_STORE).get(s).onsuccess = function(s) { - var o = decodeMetadata(s.target.result); - if (!o) r(createError(MISSING_DOC)); else r(null, o.rev_tree); - }; - }; - s._doCompaction = function(s, r, o) { - var u = openTransactionSafely(g, [ DOC_STORE, BY_SEQ_STORE, ATTACH_STORE, ATTACH_AND_SEQ_STORE ], "readwrite"); - if (u.error) return o(u.error); - var _ = u.txn; - _.objectStore(DOC_STORE).get(s).onsuccess = function(o) { - var u = decodeMetadata(o.target.result); - traverseRevTree(u.rev_tree, (function(s, o, u, g, _) { - var m = o + "-" + u; - if (-1 !== r.indexOf(m)) _.status = "missing"; - })); - compactRevs(r, s, _); - var g = u.winningRev, m = u.deleted; - _.objectStore(DOC_STORE).put(encodeMetadata(u, g, m)); - }; - _.onabort = idbError(o); - _.oncomplete = function() { - o(); - }; - }; - s._getLocal = function(s, r) { - var o = openTransactionSafely(g, [ LOCAL_STORE ], "readonly"); - if (o.error) return r(o.error); - var u = o.txn.objectStore(LOCAL_STORE).get(s); - u.onerror = idbError(r); - u.onsuccess = function(s) { - var o = s.target.result; - if (!o) r(createError(MISSING_DOC)); else { - delete o["_doc_id_rev"]; - r(null, o); - } - }; - }; - s._putLocal = function(s, r, o) { - if ("function" == typeof r) { - o = r; - r = {}; - } - delete s._revisions; - var u = s._rev, _ = s._id; - if (!u) s._rev = "0-1"; else s._rev = "0-" + (parseInt(u.split("-")[1], 10) + 1); - var m, b = r.ctx; - if (!b) { - var E = openTransactionSafely(g, [ LOCAL_STORE ], "readwrite"); - if (E.error) return o(E.error); - (b = E.txn).onerror = idbError(o); - b.oncomplete = function() { - if (m) o(null, m); - }; - } - var w, S = b.objectStore(LOCAL_STORE); - if (u) (w = S.get(_)).onsuccess = function(g) { - var _ = g.target.result; - if (!_ || _._rev !== u) o(createError(REV_CONFLICT)); else S.put(s).onsuccess = function() { - m = { - ok: true, - id: s._id, - rev: s._rev - }; - if (r.ctx) o(null, m); - }; - }; else { - (w = S.add(s)).onerror = function(s) { - o(createError(REV_CONFLICT)); - s.preventDefault(); - s.stopPropagation(); - }; - w.onsuccess = function() { - m = { - ok: true, - id: s._id, - rev: s._rev - }; - if (r.ctx) o(null, m); - }; - } - }; - s._removeLocal = function(s, r, o) { - if ("function" == typeof r) { - o = r; - r = {}; - } - var u, _ = r.ctx; - if (!_) { - var m = openTransactionSafely(g, [ LOCAL_STORE ], "readwrite"); - if (m.error) return o(m.error); - (_ = m.txn).oncomplete = function() { - if (u) o(null, u); - }; - } - var b = s._id, E = _.objectStore(LOCAL_STORE), w = E.get(b); - w.onerror = idbError(o); - w.onsuccess = function(g) { - var _ = g.target.result; - if (!_ || _._rev !== s._rev) o(createError(MISSING_DOC)); else { - E.delete(b); - u = { - ok: true, - id: b, - rev: "0-0" - }; - if (r.ctx) o(null, u); - } - }; - }; - s._destroy = function(s, r) { - changesHandler$1.removeAllListeners(u); - var o = openReqList.get(u); - if (o && o.result) { - o.result.close(); - cachedDBs.delete(u); - } - var g = indexedDB.deleteDatabase(u); - g.onsuccess = function() { - openReqList.delete(u); - if (hasLocalStorage() && u in localStorage) delete localStorage[u]; - r(null, { - ok: true - }); - }; - g.onerror = idbError(r); - }; - var m = cachedDBs.get(u); - if (m) { - g = m.idb; - s._meta = m.global; - return (0, import_immediate.default)((function() { - o(null, s); - })); - } - var b = indexedDB.open(u, ADAPTER_VERSION); - openReqList.set(u, b); - b.onupgradeneeded = function(s) { - var r = s.target.result; - if (s.oldVersion < 1) return function createSchema(s) { - var r = s.createObjectStore(DOC_STORE, { - keyPath: "id" - }); - s.createObjectStore(BY_SEQ_STORE, { - autoIncrement: true - }).createIndex("_doc_id_rev", "_doc_id_rev", { - unique: true - }); - s.createObjectStore(ATTACH_STORE, { - keyPath: "digest" - }); - s.createObjectStore(META_STORE, { - keyPath: "id", - autoIncrement: false - }); - s.createObjectStore(DETECT_BLOB_SUPPORT_STORE); - r.createIndex("deletedOrLocal", "deletedOrLocal", { - unique: false - }); - s.createObjectStore(LOCAL_STORE, { - keyPath: "_id" - }); - var o = s.createObjectStore(ATTACH_AND_SEQ_STORE, { - autoIncrement: true - }); - o.createIndex("seq", "seq"); - o.createIndex("digestSeq", "digestSeq", { - unique: true - }); - }(r); - var o = s.currentTarget.transaction; - if (s.oldVersion < 3) (function createLocalStoreSchema(s) { - s.createObjectStore(LOCAL_STORE, { - keyPath: "_id" - }).createIndex("_doc_id_rev", "_doc_id_rev", { - unique: true - }); - })(r); - if (s.oldVersion < 4) (function addAttachAndSeqStore(s) { - var r = s.createObjectStore(ATTACH_AND_SEQ_STORE, { - autoIncrement: true - }); - r.createIndex("seq", "seq"); - r.createIndex("digestSeq", "digestSeq", { - unique: true - }); - })(r); - var u = [ addDeletedOrLocalIndex, migrateLocalStore, migrateAttsAndSeqs, migrateMetadata ], g = s.oldVersion; - (function next() { - var s = u[g - 1]; - g++; - if (s) s(o, next); - })(); - }; - b.onsuccess = function(r) { - (g = r.target.result).onversionchange = function() { - g.close(); - cachedDBs.delete(u); - }; - g.onabort = function(s) { - guardedConsole("error", "Database has a global failure", s.target.error); - _ = s.target.error; - g.close(); - cachedDBs.delete(u); - }; - var m, b, E, w, S = g.transaction([ META_STORE, DETECT_BLOB_SUPPORT_STORE, DOC_STORE ], "readwrite"), L = false; - function completeSetup() { - if ("undefined" != typeof E && L) { - s._meta = { - name: u, - instanceId: w, - blobSupport: E - }; - cachedDBs.set(u, { - idb: g, - global: s._meta - }); - o(null, s); - } - } - function storeMetaDocIfReady() { - if ("undefined" != typeof b && "undefined" != typeof m) { - var s = u + "_id"; - if (s in m) w = m[s]; else m[s] = w = uuid(); - m.docCount = b; - S.objectStore(META_STORE).put(m); - } - } - S.objectStore(META_STORE).get(META_STORE).onsuccess = function(s) { - m = s.target.result || { - id: META_STORE - }; - storeMetaDocIfReady(); - }; - countDocs(S, (function(s) { - b = s; - storeMetaDocIfReady(); - })); - if (!blobSupportPromise) blobSupportPromise = checkBlobSupport(S); - blobSupportPromise.then((function(s) { - E = s; - completeSetup(); - })); - S.oncomplete = function() { - L = true; - completeSetup(); - }; - S.onabort = idbError(o); - }; - b.onerror = function(s) { - var r = s.target.error && s.target.error.message; - if (!r) r = "Failed to open indexedDB, are you in private browsing mode?"; else if (-1 !== r.indexOf("stored database is a higher version")) r = new Error('This DB was created with the newer "indexeddb" adapter, but you are trying to open it with the older "idb" adapter'); - guardedConsole("error", r); - o(createError(IDB_ERROR, r)); - }; -} - -IdbPouch.valid = function() { - try { - return "undefined" != typeof indexedDB && "undefined" != typeof IDBKeyRange; - } catch (s) { - return false; - } -}; - -function index(s) { - s.adapter("idb", IdbPouch, true); -} - -var index_es_default2 = index, IDB_NULL = Number.MIN_SAFE_INTEGER, IDB_FALSE = Number.MIN_SAFE_INTEGER + 1, IDB_TRUE = Number.MIN_SAFE_INTEGER + 2, TEST_KEY_INVALID = /^[^a-zA-Z_$]|[^a-zA-Z0-9_$]+/, TEST_PATH_INVALID = /\\.|(^|\.)[^a-zA-Z_$]|[^a-zA-Z0-9_$.]+/; - -function needsSanitise(s, r) { - if (r) return TEST_PATH_INVALID.test(s); else return TEST_KEY_INVALID.test(s); -} - -var KEY_INVALID = new RegExp(TEST_KEY_INVALID.source, "g"), PATH_INVALID = new RegExp(TEST_PATH_INVALID.source, "g"), SLASH = "\\".charCodeAt(0), IS_DOT = ".".charCodeAt(0); - -function sanitise(s, r) { - var correctCharacters = function(s) { - for (var o = "", u = 0; u < s.length; u++) { - var g = s.charCodeAt(u); - if (g === IS_DOT && r && 0 === u) o += "."; else if (g === SLASH && r) continue; else o += "_c" + g + "_"; - } - return o; - }; - if (r) return s.replace(PATH_INVALID, correctCharacters); else return s.replace(KEY_INVALID, correctCharacters); -} - -function needsRewrite(s) { - for (var r of Object.keys(s)) if (needsSanitise(r)) return true; else if (null === s[r] || "boolean" == typeof s[r]) return true; else if ("object" == typeof s[r]) return needsRewrite(s[r]); -} - -function rewrite(s) { - if (!needsRewrite(s)) return false; - var r = Array.isArray(s), o = r ? [] : {}; - Object.keys(s).forEach((function(u) { - var g = r ? u : sanitise(u); - if (null === s[u]) o[g] = IDB_NULL; else if ("boolean" == typeof s[u]) o[g] = s[u] ? IDB_TRUE : IDB_FALSE; else if ("object" == typeof s[u]) o[g] = rewrite(s[u]); else o[g] = s[u]; - })); - return o; -} - -var DOC_STORE2 = "docs", META_STORE2 = "meta"; - -function idbError2(s) { - return function(r) { - var o = "unknown_error"; - if (r.target && r.target.error) o = r.target.error.name || r.target.error.message; - s(createError(IDB_ERROR, o, r.type)); - }; -} - -function processAttachment(s, r, o, u) { - delete o._attachments[s].stub; - if (u) { - o._attachments[s].data = r.attachments[o._attachments[s].digest].data; - return Promise.resolve(); - } - return new Promise((function(u) { - readAsBinaryString(r.attachments[o._attachments[s].digest].data, (function(r) { - o._attachments[s].data = thisBtoa(r); - delete o._attachments[s].length; - u(); - })); - })); -} - -function rawIndexFields(s, r) { - return (s.views[r].options && s.views[r].options.def && s.views[r].options.def.fields || []).map((function(s) { - if ("string" == typeof s) return s; else return Object.keys(s)[0]; - })); -} - -function isPartialFilterView(s, r) { - return r in s.views && s.views[r].options && s.views[r].options.def && s.views[r].options.def.partial_filter_selector; -} - -function naturalIndexName(s) { - return "_find_idx/" + s.join("/"); -} - -function correctIndexFields(s) { - return [ "deleted" ].concat(s.map((function(s) { - if ([ "_id", "_rev", "_deleted", "_attachments" ].includes(s)) return s.substr(1); else return "data." + sanitise(s, true); - }))); -} - -var POUCHDB_IDB_VERSION = 1, versionMultiplier = Math.pow(10, 13); - -function createIdbVersion() { - return versionMultiplier * POUCHDB_IDB_VERSION + (new Date).getTime(); -} - -function getPouchDbVersion(s) { - return Math.floor(s / versionMultiplier); -} - -function maintainNativeIndexes(s, r) { - var o = s.transaction.objectStore(DOC_STORE2); - o.getAll(IDBKeyRange.bound("_design/", "_design/￿")).onsuccess = function(s) { - var u = s.target.result, g = Array.from(o.indexNames), _ = u.filter((function(s) { - return 0 === s.deleted && s.revs[s.rev].data.views; - })).map((function(s) { - return s.revs[s.rev].data; - })).reduce((function(s, r) { - return Object.keys(r.views).reduce((function(s, o) { - var u = rawIndexFields(r, o); - if (u && u.length > 0) s[naturalIndexName(u)] = correctIndexFields(u); - return s; - }), s); - }), {}), m = Object.keys(_), b = [ "seq" ]; - g.forEach((function(s) { - if (-1 === b.indexOf(s) && -1 === m.indexOf(s)) o.deleteIndex(s); - })); - var E = m.filter((function(s) { - return -1 === g.indexOf(s); - })); - try { - E.forEach((function(s) { - o.createIndex(s, _[s]); - })); - } catch (s) { - r(s); - } - }; -} - -function upgradePouchDbSchema(s, r) { - if (r < 1) { - s.createObjectStore(DOC_STORE2, { - keyPath: "id" - }).createIndex("seq", "seq", { - unique: true - }); - s.createObjectStore(META_STORE2, { - keyPath: "id" - }); - } -} - -function openDatabase(s, r, o, u, g) { - var _ = o.versionchanged ? indexedDB.open(o.name) : indexedDB.open(o.name, createIdbVersion()); - _.onupgradeneeded = function(s) { - if (s.oldVersion > 0 && s.oldVersion < versionMultiplier) throw new Error('Incorrect adapter: you should specify the "idb" adapter to open this DB'); else if (0 === s.oldVersion && s.newVersion < versionMultiplier) { - indexedDB.deleteDatabase(o.name); - throw new Error("Database was deleted while open"); - } - upgradePouchDbSchema(s.target.result, getPouchDbVersion(s.oldVersion)); - maintainNativeIndexes(_, g); - }; - _.onblocked = function(s) { - console.error("onblocked, this should never happen", s); - }; - _.onsuccess = function(r) { - var g = r.target.result; - g.onabort = function(r) { - console.error("Database has a global failure", r.target.error); - delete s[o.name]; - g.close(); - }; - g.onversionchange = function() { - console.log("Database was made stale, closing handle"); - s[o.name].versionchanged = true; - g.close(); - }; - g.onclose = function() { - console.log("Database was made stale, closing handle"); - if (o.name in s) s[o.name].versionchanged = true; - }; - var _ = { - id: META_STORE2 - }, m = g.transaction([ META_STORE2 ], "readwrite"); - m.oncomplete = function() { - u({ - idb: g, - metadata: _ - }); - }; - var b = m.objectStore(META_STORE2); - b.get(META_STORE2).onsuccess = function(s) { - var r = false; - if (!("doc_count" in (_ = s.target.result || _))) { - r = true; - _.doc_count = 0; - } - if (!("seq" in _)) { - r = true; - _.seq = 0; - } - if (!("db_uuid" in _)) { - r = true; - _.db_uuid = uuid(); - } - if (r) b.put(_); - }; - }; - _.onerror = function(s) { - g(s.target.error); - }; -} - -function setup(s, r, o) { - if (!s[o.name] || s[o.name].versionchanged) { - o.versionchanged = s[o.name] && s[o.name].versionchanged; - s[o.name] = new Promise((function(u, g) { - openDatabase(s, r, o, u, g); - })); - } - return s[o.name]; -} - -function info(s, r) { - r(null, { - doc_count: s.doc_count, - update_seq: s.seq - }); -} - -function get(s, r, o, u) { - if (s.error) return u(s.error); - s.txn.objectStore(DOC_STORE2).get(r).onsuccess = function(r) { - var g, _ = r.target.result; - if (!o.rev) g = _ && _.rev; else g = o.latest ? latest(o.rev, _) : o.rev; - if (_ && (!_.deleted || o.rev) && g in _.revs) { - var m = _.revs[g].data; - m._id = _.id; - m._rev = g; - u(null, { - doc: m, - metadata: _, - ctx: s - }); - } else u(createError(MISSING_DOC, "missing")); - }; -} - -function parseAttachment(s, r, o) { - if (r.binary) return o(null, s); else readAsBinaryString(s, (function(s) { - o(null, thisBtoa(s)); - })); -} - -function getAttachment(s, r, o, u, g, _) { - if (s.error) return _(s.error); - var m; - s.txn.objectStore(DOC_STORE2).get(r).onsuccess = function(s) { - var r = s.target.result, u = r.revs[g.rev || r.rev].data._attachments[o].digest; - m = r.attachments[u].data; - }; - s.txn.oncomplete = function() { - parseAttachment(m, g, _); - }; - s.txn.onabort = _; -} - -function bulkDocs(s, r, o, u, g, _, m) { - var b, E, w, S = [], L = [], O = g.revs_limit || 1e3, D = -1 === g.name.indexOf("-mrview-"); - const k = g.auto_compaction; - function docsRevsLimit(s) { - return /^_local/.test(s.id) ? 1 : O; - } - function revHasAttachment(s, r, o) { - return s.revs[r] && s.revs[r].data._attachments && Object.values(s.revs[r].data._attachments).find((function(s) { - return s.digest === o; - })); - } - function convertDocFormat(s) { - var r = { - id: s.metadata.id, - rev: s.metadata.rev, - rev_tree: s.metadata.rev_tree, - revs: s.metadata.revs || {} - }; - r.revs[r.rev] = { - data: s.data, - deleted: s.metadata.deleted - }; - return r; - } - function updateSeq(s) { - if (s === w) b.objectStore(META_STORE2).put(u); - } - for (var C = 0, T = r.docs.length; C < T; C++) { - var I; - try { - I = parseDoc(r.docs[C], o.new_edits, g); - } catch (s) { - I = s; - } - if (I.error) return m(I); - L.push(convertDocFormat(I)); - } - (function preProcessAttachments() { - var s = L.map((function(s) { - var r = s.revs[s.rev].data; - if (!r._attachments) return Promise.resolve(r); - var o = Object.keys(r._attachments).map((function(s) { - r._attachments[s].name = s; - return function preProcessAttachment(s) { - if (s.stub) return Promise.resolve(s); - var r; - if ("string" == typeof s.data) { - if ((r = function parseBase642(s) { - try { - return atob(s); - } catch (s) { - return { - error: createError(BAD_ARG, "Attachment is not a valid base64 string") - }; - } - }(s.data)).error) return Promise.reject(r.error); - s.data = binStringToBluffer(r, s.content_type); - } else r = s.data; - return new Promise((function(o) { - binaryMd5(r, (function(u) { - s.digest = "md5-" + u; - s.length = r.size || r.length || 0; - o(s); - })); - })); - }(r._attachments[s]); - })); - return Promise.all(o).then((function(s) { - var o = {}; - s.forEach((function(s) { - o[s.name] = s; - delete s.name; - })); - r._attachments = o; - return r; - })); - })); - return Promise.all(s); - })().then((function() { - s._openTransactionSafely([ DOC_STORE2, META_STORE2 ], "readwrite", (function(s, r) { - if (s) return m(s); - (b = r).onabort = function() { - m(E || createError(UNKNOWN_ERROR, "transaction was aborted")); - }; - b.ontimeout = idbError2(m); - b.oncomplete = function() { - _.notify(g.name); - m(null, S); - }; - (function fetchExistingDocs(s, r) { - var _ = 0, m = {}; - function readDone(b) { - if (b.target.result) m[b.target.result.id] = b.target.result; - if (++_ === r.length) (function processDocs2(s, r, _) { - r.forEach((function(r, m) { - var b; - if ("was_delete" in o && !Object.prototype.hasOwnProperty.call(_, r.id)) b = createError(MISSING_DOC, "deleted"); else if (o.new_edits && !Object.prototype.hasOwnProperty.call(_, r.id) && function rootIsMissing2(s) { - return "missing" === s.rev_tree[0].ids[1].status; - }(r)) b = createError(REV_CONFLICT); else if (Object.prototype.hasOwnProperty.call(_, r.id)) { - b = function update2(s, r, u) { - if (r.rev in u.revs && !o.new_edits) return false; - var _ = /^1-/.test(r.rev); - if (u.deleted && !r.deleted && o.new_edits && _) { - var m = r.revs[r.rev].data; - m._rev = u.rev; - m._id = u.id; - r = convertDocFormat(parseDoc(m, o.new_edits, g)); - } - var b = merge(u.rev_tree, r.rev_tree[0], docsRevsLimit(r)); - r.stemmedRevs = b.stemmedRevs; - r.rev_tree = b.tree; - var E = u.revs; - E[r.rev] = r.revs[r.rev]; - r.revs = E; - r.attachments = u.attachments; - if (o.new_edits && (u.deleted && r.deleted || !u.deleted && "new_leaf" !== b.conflicts || u.deleted && !r.deleted && "new_branch" === b.conflicts || u.rev === r.rev)) return createError(REV_CONFLICT); - r.wasDeleted = u.deleted; - return r; - }(0, r, _[r.id]); - if (false == b) return; - } else { - var L = merge([], r.rev_tree[0], docsRevsLimit(r)); - r.rev_tree = L.tree; - r.stemmedRevs = L.stemmedRevs; - (b = r).isNewDoc = true; - b.wasDeleted = r.revs[r.rev].deleted ? 1 : 0; - } - if (b.error) S[m] = b; else { - _[b.id] = b; - w = m; - (function write(s, r, o) { - var g = winningRev(r), _ = r.rev, m = /^_local/.test(r.id), b = r.revs[g].data; - const w = r.isNewDoc; - if (D) { - var L = rewrite(b); - if (L) { - r.data = L; - delete r.data._attachments; - } else r.data = b; - } else r.data = b; - r.rev = g; - r.deleted = r.revs[g].deleted ? 1 : 0; - if (!m) { - r.seq = ++u.seq; - var O = 0; - if (r.isNewDoc) O = r.deleted ? 0 : 1; else if (r.wasDeleted !== r.deleted) O = r.deleted ? -1 : 1; - u.doc_count += O; - } - delete r.isNewDoc; - delete r.wasDeleted; - let C = r.stemmedRevs || []; - if (k && !w) { - const s = compactTree(r); - if (s.length) C = C.concat(s); - } - if (C.length) C.forEach((function(s) { - delete r.revs[s]; - })); - delete r.stemmedRevs; - if (!("attachments" in r)) r.attachments = {}; - if (b._attachments) for (var T in b._attachments) { - var I = b._attachments[T]; - if (I.stub) { - if (!(I.digest in r.attachments)) { - E = createError(MISSING_STUB); - s.abort(); - return; - } - if (revHasAttachment(r, _, I.digest)) r.attachments[I.digest].revs[_] = true; - } else { - r.attachments[I.digest] = I; - r.attachments[I.digest].revs = {}; - r.attachments[I.digest].revs[_] = true; - b._attachments[T] = { - stub: true, - digest: I.digest, - content_type: I.content_type, - length: I.length, - revpos: parseInt(_, 10) - }; - } - } - if (!m || !r.deleted) s.objectStore(DOC_STORE2).put(r).onsuccess = function() { - S[o] = { - ok: true, - id: r.id, - rev: _ - }; - updateSeq(o); - }; else { - s.objectStore(DOC_STORE2).delete(r.id).onsuccess = function() { - S[o] = { - ok: true, - id: r.id, - rev: "0-0" - }; - }; - updateSeq(o); - } - })(s, b, m); - } - })); - })(s, r, m); - } - r.forEach((function(r) { - s.objectStore(DOC_STORE2).get(r.id).onsuccess = readDone; - })); - })(b, L); - })); - })).catch((function(s) { - m(s); - })); -} - -function allDocsKeys2(s, r, o) { - var u = new Array(s.length), g = 0; - s.forEach((function(_, m) { - r.get(_).onsuccess = function(r) { - if (r.target.result) u[m] = r.target.result; else u[m] = { - key: _, - error: "not_found" - }; - if (++g === s.length) u.forEach((function(s) { - o(s); - })); - }; - })); -} - -function createKeyRange2(s, r, o, u, g) { - try { - if (s && r) if (g) return IDBKeyRange.bound(r, s, !o, false); else return IDBKeyRange.bound(s, r, false, !o); else if (s) if (g) return IDBKeyRange.upperBound(s); else return IDBKeyRange.lowerBound(s); else if (r) if (g) return IDBKeyRange.lowerBound(r, !o); else return IDBKeyRange.upperBound(r, !o); else if (u) return IDBKeyRange.only(u); - } catch (s) { - return { - error: s - }; - } - return null; -} - -function handleKeyRangeError(s, r, o, u) { - if ("DataError" === o.name && 0 === o.code) { - var g = { - total_rows: r.doc_count, - offset: s.skip, - rows: [] - }; - if (s.update_seq) g.update_seq = r.seq; - return u(null, g); - } - u(createError(IDB_ERROR, o.name, o.message)); -} - -function allDocs(s, r, o, u) { - if (s.error) return u(s.error); - if (0 === o.limit) { - var g = { - total_rows: r.doc_count, - offset: o.skip, - rows: [] - }; - if (o.update_seq) g.update_seq = r.seq; - return u(null, g); - } - var _, m = [], b = [], E = "startkey" in o ? o.startkey : false, w = "endkey" in o ? o.endkey : false, S = "key" in o ? o.key : false, L = "keys" in o ? o.keys : false, O = o.skip || 0, D = "number" == typeof o.limit ? o.limit : -1, k = false !== o.inclusive_end, C = "descending" in o && o.descending ? "prev" : null; - if (!L) if ((_ = createKeyRange2(E, w, k, S, C)) && _.error) return handleKeyRangeError(o, r, _.error, u); - var T = s.txn.objectStore(DOC_STORE2); - s.txn.oncomplete = function onTxnComplete() { - Promise.all(b).then((function() { - var s = { - total_rows: r.doc_count, - offset: 0, - rows: m - }; - if (o.update_seq) s.update_seq = r.seq; - u(null, s); - })); - }; - if (L) return allDocsKeys2(o.keys, T, allDocsInner); - function allDocsInner(s) { - if (s.error && L) { - m.push(s); - return true; - } - var r = { - id: s.id, - key: s.id, - value: { - rev: s.rev - } - }; - if (s.deleted) { - if (L) { - m.push(r); - r.value.deleted = true; - r.doc = null; - } - } else if (O-- <= 0) { - m.push(r); - if (o.include_docs) (function include_doc(s, r) { - var u = r.revs[r.rev].data; - s.doc = u; - s.doc._id = r.id; - s.doc._rev = r.rev; - if (o.conflicts) { - var g = collectConflicts(r); - if (g.length) s.doc._conflicts = g; - } - if (o.attachments && u._attachments) for (var _ in u._attachments) b.push(processAttachment(_, r, s.doc, o.binary)); - })(r, s); - if (0 == --D) return false; - } - return true; - } - (C ? T.openCursor(_, C) : T.openCursor(_)).onsuccess = function(s) { - var r = s.target.result && s.target.result.value; - if (r) { - if (/^_local/.test(r.id)) return s.target.result.continue(); - if (allDocsInner(r)) s.target.result.continue(); - } - }; -} - -function changes2(s, r, o, u, g) { - if (s.error) return g.complete(s.error); - if (g.continuous) { - var _ = u.name + ":" + uuid(); - r.addListener(u.name, _, o, g); - r.notify(u.name); - return { - cancel: function() { - r.removeListener(u.name, _); - } - }; - } - var m = "limit" in g ? g.limit : -1; - if (0 === m) m = 1; - var b, E = s.txn.objectStore(DOC_STORE2).index("seq"), w = filterChange(g), S = 0, L = g.since || 0, O = [], D = []; - if (g.descending) b = E.openCursor(null, "prev"); else b = E.openCursor(IDBKeyRange.lowerBound(g.since, true)); - s.txn.oncomplete = function onTxnComplete() { - Promise.all(D).then((function() { - g.complete(null, { - results: O, - last_seq: L - }); - })); - }; - b.onsuccess = function onReqSuccess(s) { - if (s.target.result) { - var r = s.target.result, o = r.value; - o.data = o.revs[o.rev].data; - o.data._id = o.id; - o.data._rev = o.rev; - if (o.deleted) o.data._deleted = true; - if (g.doc_ids && -1 === g.doc_ids.indexOf(o.id)) return r.continue(); - var u = g.processChange(o.data, o, g); - u.seq = o.seq; - L = o.seq; - var _ = w(u); - if ("object" == typeof _) return g.complete(_); - if (_) { - S++; - if (g.return_docs) O.push(u); - if (g.include_docs && g.attachments && o.data._attachments) { - var b = []; - for (var E in o.data._attachments) { - var k = processAttachment(E, o, u.doc, g.binary); - b.push(k); - D.push(k); - } - Promise.all(b).then((function() { - g.onChange(u); - })); - } else g.onChange(u); - } - if (S !== m) r.continue(); - } - }; -} - -function getRevisionTree(s, r, o) { - if (s.error) return o(s.error); - s.txn.objectStore(DOC_STORE2).get(r).onsuccess = function(s) { - if (!s.target.result) o(createError(MISSING_DOC)); else o(null, s.target.result.rev_tree); - }; -} - -function doCompaction(s, r, o, u) { - if (s.error) return u(s.error); - var g = s.txn.objectStore(DOC_STORE2); - g.get(r).onsuccess = function(s) { - var r = s.target.result; - traverseRevTree(r.rev_tree, (function(s, r, u, g, _) { - var m = r + "-" + u; - if (-1 !== o.indexOf(m)) _.status = "missing"; - })); - var u = []; - o.forEach((function(s) { - if (s in r.revs) { - if (r.revs[s].data._attachments) for (var o in r.revs[s].data._attachments) u.push(r.revs[s].data._attachments[o].digest); - delete r.revs[s]; - } - })); - u.forEach((function(s) { - o.forEach((function(o) { - delete r.attachments[s].revs[o]; - })); - if (!Object.keys(r.attachments[s].revs).length) delete r.attachments[s]; - })); - g.put(r); - }; - s.txn.oncomplete = function() { - u(); - }; -} - -function destroy(s, r, o, u) { - o.removeAllListeners(s.name); - function doDestroy() { - indexedDB.deleteDatabase(s.name).onsuccess = function() { - delete r[s.name]; - u(null, { - ok: true - }); - }; - } - if (s.name in r) r[s.name].then((function(s) { - s.idb.close(); - doDestroy(); - })); else doDestroy(); -} - -var COUCH_COLLATE_LO = null, COUCH_COLLATE_HI = "￿", IDB_COLLATE_LO = Number.NEGATIVE_INFINITY, IDB_COLLATE_HI = [ [ [ [ [ [ [ [ [ [ [ [] ] ] ] ] ] ] ] ] ] ] ]; - -function externaliseRecord(s) { - var r = s.revs[s.rev].data; - r._id = s.id; - r._rev = s.rev; - if (s.deleted) r._deleted = true; - return r; -} - -function generateKeyRange(s) { - function defined(s, r) { - return void 0 !== s[r]; - } - function convert(s, r) { - return [ 0 ].concat(s).map((function(s) { - if (null === s && r) return IDB_NULL; else if (true === s) return IDB_TRUE; else if (false === s) return IDB_FALSE; - if (!r) if (s === COUCH_COLLATE_LO) return IDB_COLLATE_LO; else if (Object.prototype.hasOwnProperty.call(s, COUCH_COLLATE_HI)) return IDB_COLLATE_HI; - return s; - })); - } - if (!defined(s, "inclusive_end")) s.inclusive_end = true; - if (!defined(s, "inclusive_start")) s.inclusive_start = true; - if (s.descending) { - var r = s.startkey, o = s.inclusive_start; - s.startkey = s.endkey; - s.endkey = r; - s.inclusive_start = s.inclusive_end; - s.inclusive_end = o; - } - try { - if (defined(s, "key")) return IDBKeyRange.only(convert(s.key, true)); - if (defined(s, "startkey") && !defined(s, "endkey")) return IDBKeyRange.bound(convert(s.startkey), [ 1 ], !s.inclusive_start, true); - if (!defined(s, "startkey") && defined(s, "endkey")) return IDBKeyRange.upperBound(convert(s.endkey), !s.inclusive_end); - if (defined(s, "startkey") && defined(s, "endkey")) return IDBKeyRange.bound(convert(s.startkey), convert(s.endkey), !s.inclusive_start, !s.inclusive_end); else return IDBKeyRange.only([ 0 ]); - } catch (r) { - console.error("Could not generate keyRange", r, s); - throw Error("Could not generate key range with " + JSON.stringify(s)); - } -} - -function getIndexHandle(s, r, o) { - var u = naturalIndexName(r); - return new Promise((function(g) { - s._openTransactionSafely([ DOC_STORE2 ], "readonly", (function(_, m) { - if (_) return idbError2(o)(_); - m.onabort = idbError2(o); - m.ontimeout = idbError2(o); - if (-1 === Array.from(m.objectStore(DOC_STORE2).indexNames).indexOf(u)) s._freshen().then((function() { - return getIndexHandle(s, r, o); - })).then(g); else g(m.objectStore(DOC_STORE2).index(u)); - })); - })); -} - -function query(s, r, o, u) { - var g = this, _ = r.split("/"); - return new Promise((function(s, m) { - g.get("_design/" + _[0]).then((function(b) { - if (isPartialFilterView(b, _[1])) return u(r, o).then(s, m); - var E = rawIndexFields(b, _[1]); - if (!E) throw new Error("ddoc " + b._id + " with view " + _[1] + " does not have map.options.def.fields defined."); - var w = o.skip, S = Number.isInteger(o.limit) && o.limit; - return getIndexHandle(g, E, m).then((function(r) { - var u = generateKeyRange(o), g = r.openCursor(u, o.descending ? "prev" : "next"), _ = []; - g.onerror = idbError2(m); - g.onsuccess = function(r) { - var o = r.target.result; - if (!o || 0 === S) return s({ - rows: _ - }); - if (!w) { - if (S) S -= 1; - _.push({ - doc: externaliseRecord(o.value) - }); - o.continue(); - } else { - o.advance(w); - w = false; - } - }; - })); - })).catch(m); - })); -} - -function viewCleanup(s, r) { - return r(); -} - -function purgeAttachments(s, r) { - if (!s.attachments) return {}; - for (let o in s.attachments) { - const u = s.attachments[o]; - for (let s of r) if (u.revs[s]) delete u.revs[s]; - if (0 === Object.keys(u.revs).length) delete s.attachments[o]; - } - return s.attachments; -} - -function purge(s, r, o, u) { - if (s.error) return u(s.error); - const g = s.txn.objectStore(DOC_STORE2), _ = []; - let m = false; - g.get(r).onsuccess = s => { - const r = s.target.result; - for (const s of o) { - r.rev_tree = removeLeafFromRevTree(r.rev_tree, s); - delete r.revs[s]; - _.push(s); - } - if (0 !== r.rev_tree.length) { - r.rev = winningRev(r); - r.data = r.revs[r.rev].data; - r.attachments = purgeAttachments(r, o); - g.put(r); - } else { - g.delete(r.id); - m = true; - } - }; - s.txn.oncomplete = function() { - u(null, { - ok: true, - deletedRevs: _, - documentWasRemovedCompletely: m - }); - }; -} - -var ADAPTER_NAME = "indexeddb", idbChanges = new Changes, openDatabases = {}; - -function IdbPouch2(s, r) { - if (s.view_adapter) console.log("Please note that the indexeddb adapter manages _find indexes itself, therefore it is not using your specified view_adapter"); - var o = this, u = {}, $ = function(r) { - return function() { - var g = Array.prototype.slice.call(arguments); - setup(openDatabases, o, s).then((function(s) { - u = s.metadata; - g.unshift(s.idb); - r.apply(o, g); - })).catch((function(s) { - var r = g.pop(); - if ("function" == typeof r) r(s); else console.error(s); - })); - }; - }, $p = function(r) { - return function() { - var g = Array.prototype.slice.call(arguments); - return setup(openDatabases, o, s).then((function(s) { - u = s.metadata; - g.unshift(s.idb); - return r.apply(o, g); - })); - }; - }, $t = function(r, g, _) { - g = g || [ DOC_STORE2 ]; - _ = _ || "readonly"; - return function() { - var m = Array.prototype.slice.call(arguments), b = {}; - setup(openDatabases, o, s).then((function(s) { - u = s.metadata; - b.txn = s.idb.transaction(g, _); - })).catch((function(s) { - console.error("Failed to establish transaction safely"); - console.error(s); - b.error = s; - })).then((function() { - m.unshift(b); - r.apply(o, m); - })); - }; - }; - o._openTransactionSafely = function(s, r, o) { - $t((function(s, r) { - r(s.error, s.txn); - }), s, r)(o); - }; - o._remote = false; - o.type = function() { - return ADAPTER_NAME; - }; - o._id = $((function(s, r) { - r(null, u.db_uuid); - })); - o._info = $((function(s, r) { - return info(u, r); - })); - o._get = $t(get); - o._bulkDocs = $((function(r, g, _, m) { - bulkDocs(o, g, _, u, s, idbChanges, m); - })); - o._allDocs = $t((function(s, r, o) { - allDocs(s, u, r, o); - })); - o._getAttachment = $t(getAttachment); - o._changes = $t((function(r, u) { - changes2(r, idbChanges, o, s, u); - })); - o._getRevisionTree = $t(getRevisionTree); - o._doCompaction = $t(doCompaction, [ DOC_STORE2 ], "readwrite"); - o._customFindAbstractMapper = { - query: $p(query), - viewCleanup: $p(viewCleanup) - }; - o._destroy = function(r, o) { - return destroy(s, openDatabases, idbChanges, o); - }; - o._close = $((function(r, o) { - delete openDatabases[s.name]; - r.close(); - o(); - })); - o._freshen = function() { - return new Promise((function(s) { - o._close((function() { - $(s)(); - })); - })); - }; - o._purge = $t(purge, [ DOC_STORE2 ], "readwrite"); - setTimeout((function() { - r(null, o); - })); -} - -IdbPouch2.valid = function() { - return true; -}; - -function index2(s) { - s.adapter(ADAPTER_NAME, IdbPouch2, true); -} - -var index_es_default3 = index2; - -function pool(s, r) { - return new Promise((function(o, u) { - var g, _ = 0, m = 0, b = 0, E = s.length; - function runNext() { - _++; - s[m++]().then(onSuccess, onError); - } - function doNext() { - if (++b === E) if (g) u(g); else o(); else runNextBatch(); - } - function onSuccess() { - _--; - doNext(); - } - function onError(s) { - _--; - g = g || s; - doNext(); - } - function runNextBatch() { - for (;_ < r && m < E; ) runNext(); - } - runNextBatch(); - })); -} - -var CHANGES_BATCH_SIZE = 25, MAX_SIMULTANEOUS_REVS = 50, CHANGES_TIMEOUT_BUFFER = 5e3, DEFAULT_HEARTBEAT = 1e4, supportsBulkGetMap = {}; - -function readAttachmentsAsBlobOrBuffer(s) { - let r = s.doc || s.ok, o = r && r._attachments; - if (o) Object.keys(o).forEach((function(s) { - let r = o[s]; - r.data = b64ToBluffer(r.data, r.content_type); - })); -} - -function encodeDocId(s) { - if (/^_design/.test(s)) return "_design/" + encodeURIComponent(s.slice(8)); - if (/^_local/.test(s)) return "_local/" + encodeURIComponent(s.slice(7)); else return encodeURIComponent(s); -} - -function preprocessAttachments2(s) { - if (!s._attachments || !Object.keys(s._attachments)) return Promise.resolve(); else return Promise.all(Object.keys(s._attachments).map((function(r) { - let o = s._attachments[r]; - if (o.data && "string" != typeof o.data) return new Promise((function(s) { - blobToBase64(o.data, s); - })).then((function(s) { - o.data = s; - })); - }))); -} - -function hasUrlPrefix(s) { - if (!s.prefix) return false; - let r = parseUri(s.prefix).protocol; - return "http" === r || "https" === r; -} - -function getHost(s, r) { - if (hasUrlPrefix(r)) { - let o = r.name.substr(r.prefix.length); - s = r.prefix.replace(/\/?$/, "/") + encodeURIComponent(o); - } - let o = parseUri(s); - if (o.user || o.password) o.auth = { - username: o.user, - password: o.password - }; - let u = o.path.replace(/(^\/|\/$)/g, "").split("/"); - o.db = u.pop(); - if (-1 === o.db.indexOf("%")) o.db = encodeURIComponent(o.db); - o.path = u.join("/"); - return o; -} - -function genDBUrl(s, r) { - return genUrl(s, s.db + "/" + r); -} - -function genUrl(s, r) { - let o = !s.path ? "" : "/"; - return s.protocol + "://" + s.host + (s.port ? ":" + s.port : "") + "/" + s.path + o + r; -} - -function paramsToStr(s) { - return "?" + Object.keys(s).map((function(r) { - return r + "=" + encodeURIComponent(s[r]); - })).join("&"); -} - -function shouldCacheBust(s) { - let r = "undefined" != typeof navigator && navigator.userAgent ? navigator.userAgent.toLowerCase() : "", o = -1 !== r.indexOf("msie"), u = -1 !== r.indexOf("trident"), g = -1 !== r.indexOf("edge"), _ = !("method" in s) || "GET" === s.method; - return (o || u || g) && _; -} - -function HttpPouch(s, r) { - let o = this, u = getHost(s.name, s), g = genDBUrl(u, ""); - s = clone(s); - const ourFetch = async function(r, o) { - (o = o || {}).headers = o.headers || new h; - o.credentials = "include"; - if (s.auth || u.auth) { - let r = s.auth || u.auth, g = r.username + ":" + r.password, _ = thisBtoa(unescape(encodeURIComponent(g))); - o.headers.set("Authorization", "Basic " + _); - } - let g = s.headers || {}; - Object.keys(g).forEach((function(s) { - o.headers.append(s, g[s]); - })); - if (shouldCacheBust(o)) r += (-1 === r.indexOf("?") ? "?" : "&") + "_nonce=" + Date.now(); - let _ = s.fetch || f2; - return await _(r, o); - }; - function adapterFun$$1(s, r) { - return adapterFun(s, (function(...s) { - setup2().then((function() { - return r.apply(this, s); - })).catch((function(r) { - s.pop()(r); - })); - })).bind(o); - } - async function fetchJSON(s, r) { - let o = {}; - (r = r || {}).headers = r.headers || new h; - if (!r.headers.get("Content-Type")) r.headers.set("Content-Type", "application/json"); - if (!r.headers.get("Accept")) r.headers.set("Accept", "application/json"); - const u = await ourFetch(s, r); - o.ok = u.ok; - o.status = u.status; - const g = await u.json(); - o.data = g; - if (!o.ok) { - o.data.status = o.status; - throw generateErrorFromResponse(o.data); - } - if (Array.isArray(o.data)) o.data = o.data.map((function(s) { - if (s.error || s.missing) return generateErrorFromResponse(s); else return s; - })); - return o; - } - let _; - async function setup2() { - if (s.skip_setup) return Promise.resolve(); - if (_) return _; - _ = fetchJSON(g).catch((function(s) { - if (s && s.status && 404 === s.status) { - explainError(404, "PouchDB is just detecting if the remote exists."); - return fetchJSON(g, { - method: "PUT" - }); - } else return Promise.reject(s); - })).catch((function(s) { - if (s && s.status && 412 === s.status) return true; else return Promise.reject(s); - })); - _.catch((function() { - _ = null; - })); - return _; - } - (0, import_immediate.default)((function() { - r(null, o); - })); - o._remote = true; - o.type = function() { - return "http"; - }; - o.id = adapterFun$$1("id", (async function(s) { - let r; - try { - const s = await ourFetch(genUrl(u, "")); - r = await s.json(); - } catch (s) { - r = {}; - } - s(null, r && r.uuid ? r.uuid + u.db : genDBUrl(u, "")); - })); - o.compact = adapterFun$$1("compact", (async function(s, r) { - if ("function" == typeof s) { - r = s; - s = {}; - } - s = clone(s); - await fetchJSON(genDBUrl(u, "_compact"), { - method: "POST" - }); - (function ping() { - o.info((function(o, u) { - if (u && !u.compact_running) r(null, { - ok: true - }); else setTimeout(ping, s.interval || 200); - })); - })(); - })); - o.bulkGet = adapterFun("bulkGet", (function(s, r) { - let o = this; - async function doBulkGet(r) { - let o = {}; - if (s.revs) o.revs = true; - if (s.attachments) o.attachments = true; - if (s.latest) o.latest = true; - try { - const g = await fetchJSON(genDBUrl(u, "_bulk_get" + paramsToStr(o)), { - method: "POST", - body: JSON.stringify({ - docs: s.docs - }) - }); - if (s.attachments && s.binary) g.data.results.forEach((function(s) { - s.docs.forEach(readAttachmentsAsBlobOrBuffer); - })); - r(null, g.data); - } catch (s) { - r(s); - } - } - function doBulkGetShim() { - let u = MAX_SIMULTANEOUS_REVS, g = Math.ceil(s.docs.length / u), _ = 0, m = new Array(g); - function onResult(s) { - return function(o, u) { - m[s] = u.results; - if (++_ === g) r(null, { - results: flatten(m) - }); - }; - } - for (let r = 0; r < g; r++) { - let g = pick(s, [ "revs", "attachments", "binary", "latest" ]); - g.docs = s.docs.slice(r * u, Math.min(s.docs.length, (r + 1) * u)); - bulkGet(o, g, onResult(r)); - } - } - let g = genUrl(u, ""), _ = supportsBulkGetMap[g]; - if ("boolean" != typeof _) doBulkGet((function(s, o) { - if (s) { - supportsBulkGetMap[g] = false; - explainError(s.status, "PouchDB is just detecting if the remote supports the _bulk_get API."); - doBulkGetShim(); - } else { - supportsBulkGetMap[g] = true; - r(null, o); - } - })); else if (_) doBulkGet(r); else doBulkGetShim(); - })); - o._info = async function(s) { - try { - await setup2(); - const r = await ourFetch(genDBUrl(u, "")), o = await r.json(); - o.host = genDBUrl(u, ""); - s(null, o); - } catch (r) { - s(r); - } - }; - o.fetch = async function(s, r) { - await setup2(); - const o = "/" === s.substring(0, 1) ? genUrl(u, s.substring(1)) : genDBUrl(u, s); - return ourFetch(o, r); - }; - o.get = adapterFun$$1("get", (async function(s, r, o) { - if ("function" == typeof r) { - o = r; - r = {}; - } - let g = {}; - if ((r = clone(r)).revs) g.revs = true; - if (r.revs_info) g.revs_info = true; - if (r.latest) g.latest = true; - if (r.open_revs) { - if ("all" !== r.open_revs) r.open_revs = JSON.stringify(r.open_revs); - g.open_revs = r.open_revs; - } - if (r.rev) g.rev = r.rev; - if (r.conflicts) g.conflicts = r.conflicts; - if (r.update_seq) g.update_seq = r.update_seq; - s = encodeDocId(s); - function fetchAttachments(s) { - let o = s._attachments, g = o && Object.keys(o); - if (o && g.length) return pool(g.map((function(g) { - return function() { - return async function fetchData(g) { - const _ = o[g], m = encodeDocId(s._id) + "/" + encodeAttachmentId(g) + "?rev=" + s._rev, b = await ourFetch(genDBUrl(u, m)); - let E, w; - if ("buffer" in b) E = await b.buffer(); else E = await b.blob(); - if (r.binary) { - let s = Object.getOwnPropertyDescriptor(E.__proto__, "type"); - if (!s || s.set) E.type = _.content_type; - w = E; - } else w = await new Promise((function(s) { - blobToBase64(E, s); - })); - delete _.stub; - delete _.length; - _.data = w; - }(g); - }; - })), 5); - } - const _ = genDBUrl(u, s + paramsToStr(g)); - try { - const s = await fetchJSON(_); - if (r.attachments) await function fetchAllAttachments(s) { - if (Array.isArray(s)) return Promise.all(s.map((function(s) { - if (s.ok) return fetchAttachments(s.ok); - }))); else return fetchAttachments(s); - }(s.data); - o(null, s.data); - } catch (r) { - r.docId = s; - o(r); - } - })); - o.remove = adapterFun$$1("remove", (async function(s, r, o, g) { - let _; - if ("string" == typeof r) { - _ = { - _id: s, - _rev: r - }; - if ("function" == typeof o) { - g = o; - o = {}; - } - } else { - _ = s; - if ("function" == typeof r) { - g = r; - o = {}; - } else { - g = o; - o = r; - } - } - const m = _._rev || o.rev, b = genDBUrl(u, encodeDocId(_._id)) + "?rev=" + m; - try { - g(null, (await fetchJSON(b, { - method: "DELETE" - })).data); - } catch (s) { - g(s); - } - })); - function encodeAttachmentId(s) { - return s.split("/").map(encodeURIComponent).join("/"); - } - o.getAttachment = adapterFun$$1("getAttachment", (async function(s, r, o, g) { - if ("function" == typeof o) { - g = o; - o = {}; - } - const _ = o.rev ? "?rev=" + o.rev : "", m = genDBUrl(u, encodeDocId(s)) + "/" + encodeAttachmentId(r) + _; - let b; - try { - const s = await ourFetch(m, { - method: "GET" - }); - if (!s.ok) throw s; - b = s.headers.get("content-type"); - let r; - if ("undefined" != typeof process && !process.browser && "function" == typeof s.buffer) r = await s.buffer(); else r = await s.blob(); - if ("undefined" != typeof process && !process.browser) { - var E = Object.getOwnPropertyDescriptor(r.__proto__, "type"); - if (!E || E.set) r.type = b; - } - g(null, r); - } catch (s) { - g(s); - } - })); - o.removeAttachment = adapterFun$$1("removeAttachment", (async function(s, r, o, g) { - const _ = genDBUrl(u, encodeDocId(s) + "/" + encodeAttachmentId(r)) + "?rev=" + o; - try { - g(null, (await fetchJSON(_, { - method: "DELETE" - })).data); - } catch (s) { - g(s); - } - })); - o.putAttachment = adapterFun$$1("putAttachment", (async function(s, r, o, g, _, m) { - if ("function" == typeof _) { - m = _; - _ = g; - g = o; - o = null; - } - const b = encodeDocId(s) + "/" + encodeAttachmentId(r); - let E = genDBUrl(u, b); - if (o) E += "?rev=" + o; - if ("string" == typeof g) { - let s; - try { - s = thisAtob(g); - } catch (s) { - return m(createError(BAD_ARG, "Attachment is not a valid base64 string")); - } - g = s ? binStringToBluffer(s, _) : ""; - } - try { - m(null, (await fetchJSON(E, { - headers: new h({ - "Content-Type": _ - }), - method: "PUT", - body: g - })).data); - } catch (s) { - m(s); - } - })); - o._bulkDocs = async function(s, r, o) { - s.new_edits = r.new_edits; - try { - await setup2(); - await Promise.all(s.docs.map(preprocessAttachments2)); - o(null, (await fetchJSON(genDBUrl(u, "_bulk_docs"), { - method: "POST", - body: JSON.stringify(s) - })).data); - } catch (s) { - o(s); - } - }; - o._put = async function(s, r, o) { - try { - await setup2(); - await preprocessAttachments2(s); - o(null, (await fetchJSON(genDBUrl(u, encodeDocId(s._id)), { - method: "PUT", - body: JSON.stringify(s) - })).data); - } catch (r) { - r.docId = s && s._id; - o(r); - } - }; - o.allDocs = adapterFun$$1("allDocs", (async function(s, r) { - if ("function" == typeof s) { - r = s; - s = {}; - } - let o, g = {}, _ = "GET"; - if ((s = clone(s)).conflicts) g.conflicts = true; - if (s.update_seq) g.update_seq = true; - if (s.descending) g.descending = true; - if (s.include_docs) g.include_docs = true; - if (s.attachments) g.attachments = true; - if (s.key) g.key = JSON.stringify(s.key); - if (s.start_key) s.startkey = s.start_key; - if (s.startkey) g.startkey = JSON.stringify(s.startkey); - if (s.end_key) s.endkey = s.end_key; - if (s.endkey) g.endkey = JSON.stringify(s.endkey); - if ("undefined" != typeof s.inclusive_end) g.inclusive_end = !!s.inclusive_end; - if ("undefined" != typeof s.limit) g.limit = s.limit; - if ("undefined" != typeof s.skip) g.skip = s.skip; - let m = paramsToStr(g); - if ("undefined" != typeof s.keys) { - _ = "POST"; - o = { - keys: s.keys - }; - } - try { - const g = await fetchJSON(genDBUrl(u, "_all_docs" + m), { - method: _, - body: JSON.stringify(o) - }); - if (s.include_docs && s.attachments && s.binary) g.data.rows.forEach(readAttachmentsAsBlobOrBuffer); - r(null, g.data); - } catch (s) { - r(s); - } - })); - o._changes = function(s) { - let r = "batch_size" in s ? s.batch_size : CHANGES_BATCH_SIZE; - if ((s = clone(s)).continuous && !("heartbeat" in s)) s.heartbeat = DEFAULT_HEARTBEAT; - let o = "timeout" in s ? s.timeout : 3e4; - if ("timeout" in s && s.timeout && o - s.timeout < CHANGES_TIMEOUT_BUFFER) o = s.timeout + CHANGES_TIMEOUT_BUFFER; - if ("heartbeat" in s && s.heartbeat && o - s.heartbeat < CHANGES_TIMEOUT_BUFFER) o = s.heartbeat + CHANGES_TIMEOUT_BUFFER; - let g = {}; - if ("timeout" in s && s.timeout) g.timeout = s.timeout; - let _ = "undefined" != typeof s.limit ? s.limit : false, m = _; - if (s.style) g.style = s.style; - if (s.include_docs || s.filter && "function" == typeof s.filter) g.include_docs = true; - if (s.attachments) g.attachments = true; - if (s.continuous) g.feed = "longpoll"; - if (s.seq_interval) g.seq_interval = s.seq_interval; - if (s.conflicts) g.conflicts = true; - if (s.descending) g.descending = true; - if (s.update_seq) g.update_seq = true; - if ("heartbeat" in s) if (s.heartbeat) g.heartbeat = s.heartbeat; - if (s.filter && "string" == typeof s.filter) g.filter = s.filter; - if (s.view && "string" == typeof s.view) { - g.filter = "_view"; - g.view = s.view; - } - if (s.query_params && "object" == typeof s.query_params) for (let r in s.query_params) if (Object.prototype.hasOwnProperty.call(s.query_params, r)) g[r] = s.query_params[r]; - let b, E = "GET"; - if (s.doc_ids) { - g.filter = "_doc_ids"; - E = "POST"; - b = { - doc_ids: s.doc_ids - }; - } else if (s.selector) { - g.filter = "_selector"; - E = "POST"; - b = { - selector: s.selector - }; - } - let w, S = new a; - const fetchData = async function(o, L) { - if (s.aborted) return; - g.since = o; - if ("object" == typeof g.since) g.since = JSON.stringify(g.since); - if (s.descending) { - if (_) g.limit = m; - } else g.limit = !_ || m > r ? r : m; - let O = genDBUrl(u, "_changes" + paramsToStr(g)), D = { - signal: S.signal, - method: E, - body: JSON.stringify(b) - }; - w = o; - if (!s.aborted) try { - await setup2(); - L(null, (await fetchJSON(O, D)).data); - } catch (s) { - L(s); - } - }; - let L = { - results: [] - }; - const fetched = function(o, u) { - if (s.aborted) return; - let g = 0; - if (u && u.results) { - g = u.results.length; - L.last_seq = u.last_seq; - let r = null, o = null; - if ("number" == typeof u.pending) r = u.pending; - if ("string" == typeof L.last_seq || "number" == typeof L.last_seq) o = L.last_seq; - ({}).query = s.query_params; - u.results = u.results.filter((function(u) { - m--; - let g = filterChange(s)(u); - if (g) { - if (s.include_docs && s.attachments && s.binary) readAttachmentsAsBlobOrBuffer(u); - if (s.return_docs) L.results.push(u); - s.onChange(u, r, o); - } - return g; - })); - } else if (o) { - s.aborted = true; - s.complete(o); - return; - } - if (u && u.last_seq) w = u.last_seq; - let b = _ && m <= 0 || u && g < r || s.descending; - if (s.continuous && !(_ && m <= 0) || !b) (0, import_immediate.default)((function() { - fetchData(w, fetched); - })); else s.complete(null, L); - }; - fetchData(s.since || 0, fetched); - return { - cancel: function() { - s.aborted = true; - S.abort(); - } - }; - }; - o.revsDiff = adapterFun$$1("revsDiff", (async function(s, r, o) { - if ("function" == typeof r) { - o = r; - r = {}; - } - try { - o(null, (await fetchJSON(genDBUrl(u, "_revs_diff"), { - method: "POST", - body: JSON.stringify(s) - })).data); - } catch (s) { - o(s); - } - })); - o._close = function(s) { - s(); - }; - o._destroy = async function(s, r) { - try { - r(null, await fetchJSON(genDBUrl(u, ""), { - method: "DELETE" - })); - } catch (s) { - if (404 === s.status) r(null, { - ok: true - }); else r(s); - } - }; -} - -HttpPouch.valid = function() { - return true; -}; - -function index3(s) { - s.adapter("http", HttpPouch, false); - s.adapter("https", HttpPouch, false); -} - -var index_es_default4 = index3, QueryParseError = class _QueryParseError extends Error { - constructor(s) { - super(); - this.status = 400; - this.name = "query_parse_error"; - this.message = s; - this.error = true; - try { - Error.captureStackTrace(this, _QueryParseError); - } catch (s) {} - } -}, NotFoundError = class _NotFoundError extends Error { - constructor(s) { - super(); - this.status = 404; - this.name = "not_found"; - this.message = s; - this.error = true; - try { - Error.captureStackTrace(this, _NotFoundError); - } catch (s) {} - } -}, BuiltInError = class _BuiltInError extends Error { - constructor(s) { - super(); - this.status = 500; - this.name = "invalid_value"; - this.message = s; - this.error = true; - try { - Error.captureStackTrace(this, _BuiltInError); - } catch (s) {} - } -}; - -function promisedCallback(s, r) { - if (r) s.then((function(s) { - (0, import_immediate.default)((function() { - r(null, s); - })); - }), (function(s) { - (0, import_immediate.default)((function() { - r(s); - })); - })); - return s; -} - -function callbackify(s) { - return function(...r) { - var o = r.pop(), u = s.apply(this, r); - if ("function" == typeof o) promisedCallback(u, o); - return u; - }; -} - -function fin(s, r) { - return s.then((function(s) { - return r().then((function() { - return s; - })); - }), (function(s) { - return r().then((function() { - throw s; - })); - })); -} - -function sequentialize(s, r) { - return function() { - var o = arguments, u = this; - return s.add((function() { - return r.apply(u, o); - })); - }; -} - -function uniq(s) { - var r = new ExportedSet(s), o = new Array(r.size), u = -1; - r.forEach((function(s) { - o[++u] = s; - })); - return o; -} - -function mapToKeysArray(s) { - var r = new Array(s.size), o = -1; - s.forEach((function(s, u) { - r[++o] = u; - })); - return r; -} - -var TaskQueue2 = class { - constructor() { - this.promise = new Promise((function(s) { - s(); - })); - } - add(s) { - this.promise = this.promise.catch((function() {})).then((function() { - return s(); - })); - return this.promise; - } - finish() { - return this.promise; - } -}; - -function stringify2(s) { - if (!s) return "undefined"; - switch (typeof s) { - case "function": - return s.toString(); - - case "string": - return s.toString(); - - default: - return JSON.stringify(s); - } -} - -function createViewSignature(s, r) { - return stringify2(s) + stringify2(r) + "undefined"; -} - -async function createView(s, r, o, u, g, _) { - const m = createViewSignature(o, u); - let b; - if (!g) { - b = s._cachedViews = s._cachedViews || {}; - if (b[m]) return b[m]; - } - const E = s.info().then((async function(E) { - const w = E.db_name + "-mrview-" + (g ? "temp" : stringMd5(m)); - await upsert(s, "_local/" + _, (function diffFunction(s) { - s.views = s.views || {}; - let o = r; - if (-1 === o.indexOf("/")) o = r + "/" + r; - const u = s.views[o] = s.views[o] || {}; - if (!u[w]) { - u[w] = true; - return s; - } - })); - const S = (await s.registerDependentDatabase(w)).db; - S.auto_compaction = true; - const L = { - name: w, - db: S, - sourceDB: s, - adapter: s.adapter, - mapFun: o, - reduceFun: u - }; - let O; - try { - O = await L.db.get("_local/lastSeq"); - } catch (s) { - if (404 !== s.status) throw s; - } - L.seq = O ? O.seq : 0; - if (b) L.db.once("destroyed", (function() { - delete b[m]; - })); - return L; - })); - if (b) b[m] = E; - return E; -} - -var persistentQueues = {}, tempViewQueue = new TaskQueue2, CHANGES_BATCH_SIZE2 = 50; - -function parseViewName(s) { - return -1 === s.indexOf("/") ? [ s, s ] : s.split("/"); -} - -function isGenOne(s) { - return 1 === s.length && /^1-/.test(s[0].rev); -} - -function emitError(s, r, o) { - try { - s.emit("error", r); - } catch (s) { - guardedConsole("error", "The user's map/reduce function threw an uncaught error.\nYou can debug this error by doing:\nmyDatabase.on('error', function (err) { debugger; });\nPlease double-check your map/reduce function."); - guardedConsole("error", r, o); - } -} - -function createAbstractMapReduce(s, r, o, u) { - function tryMap(s, r, o) { - try { - r(o); - } catch (u) { - emitError(s, u, { - fun: r, - doc: o - }); - } - } - function tryReduce(s, r, o, u, g) { - try { - return { - output: r(o, u, g) - }; - } catch (_) { - emitError(s, _, { - fun: r, - keys: o, - values: u, - rereduce: g - }); - return { - error: _ - }; - } - } - function sortByKeyThenValue(s, r) { - const o = collate(s.key, r.key); - return 0 !== o ? o : collate(s.value, r.value); - } - function sliceResults(s, r, o) { - o = o || 0; - if ("number" == typeof r) return s.slice(o, r + o); else if (o > 0) return s.slice(o); - return s; - } - function rowToDocId(s) { - const r = s.value; - return r && "object" == typeof r && r._id || s.id; - } - function postprocessAttachments(s) { - return function(r) { - if (s.include_docs && s.attachments && s.binary) (function readAttachmentsAsBlobOrBuffer2(s) { - s.rows.forEach((function(s) { - const r = s.doc && s.doc._attachments; - if (r) Object.keys(r).forEach((function(s) { - const o = r[s]; - r[s].data = b64ToBluffer(o.data, o.content_type); - })); - })); - })(r); - return r; - }; - } - function addHttpParam(s, r, o, u) { - let g = r[s]; - if ("undefined" != typeof g) { - if (u) g = encodeURIComponent(JSON.stringify(g)); - o.push(s + "=" + g); - } - } - function coerceInteger(s) { - if ("undefined" != typeof s) { - const r = Number(s); - if (!isNaN(r) && r === parseInt(s, 10)) return r; else return s; - } - } - function checkQueryParseError(s, r) { - const o = s.descending ? "endkey" : "startkey", u = s.descending ? "startkey" : "endkey"; - if ("undefined" != typeof s[o] && "undefined" != typeof s[u] && collate(s[o], s[u]) > 0) throw new QueryParseError("No rows can match your key range, reverse your start_key and end_key or set {descending : true}"); else if (r.reduce && false !== s.reduce) if (s.include_docs) throw new QueryParseError("{include_docs:true} is invalid for reduce"); else if (s.keys && s.keys.length > 1 && !s.group && !s.group_level) throw new QueryParseError("Multi-key fetches for reduce views must use {group: true}"); - [ "group_level", "limit", "skip" ].forEach((function(r) { - const o = function checkPositiveInteger(s) { - if (s) { - if ("number" != typeof s) return new QueryParseError(`Invalid value for integer: "${s}"`); - if (s < 0) return new QueryParseError(`Invalid value for positive integer: "${s}"`); - } - }(s[r]); - if (o) throw o; - })); - } - function defaultsTo(s) { - return function(r) { - if (404 === r.status) return s; else throw r; - }; - } - function getQueue(s) { - const r = "string" == typeof s ? s : s.name; - let o = persistentQueues[r]; - if (!o) o = persistentQueues[r] = new TaskQueue2; - return o; - } - async function updateView(s, o) { - return sequentialize(getQueue(s), (function() { - return async function updateViewInQueue(s, o) { - let u, g, _; - const m = r(s.mapFun, (function emit2(s, r) { - const o = { - id: g._id, - key: normalizeKey(s) - }; - if ("undefined" != typeof r && null !== r) o.value = normalizeKey(r); - u.push(o); - })); - let b = s.seq || 0, E = 0; - const w = { - view: s.name, - indexed_docs: E - }; - s.sourceDB.emit("indexing", w); - const S = new TaskQueue2; - function createIndexableKeysToKeyValues(s) { - const r = new ExportedMap; - let o; - for (let u = 0, g = s.length; u < g; u++) { - const g = s[u], _ = [ g.key, g.id ]; - if (u > 0 && 0 === collate(g.key, o)) _.push(u); - r.set(toIndexableString(_), g); - o = g.key; - } - return r; - } - try { - await function createTask() { - return s.sourceDB.info().then((function(r) { - _ = s.sourceDB.activeTasks.add({ - name: "view_indexing", - total_items: r.update_seq - b - }); - })); - }(); - await async function processNextBatch() { - return function processBatch(r, w) { - var L = r.results; - if (!L.length && !w.length) return; - for (let s of w) if (L.findIndex((function(r) { - return r.id === s.docId; - })) < 0) { - const r = { - _id: s.docId, - doc: { - _id: s.docId, - _deleted: 1 - }, - changes: [] - }; - if (s.doc) { - r.doc = s.doc; - r.changes.push({ - rev: s.doc._rev - }); - } - L.push(r); - } - var O = function createDocIdsToChangesAndEmits(r) { - const o = new ExportedMap; - for (let _ = 0, E = r.length; _ < E; _++) { - const E = r[_]; - if ("_" !== E.doc._id[0]) { - u = []; - g = E.doc; - if (!g._deleted) tryMap(s.sourceDB, m, g); - u.sort(sortByKeyThenValue); - const r = createIndexableKeysToKeyValues(u); - o.set(E.doc._id, [ r, E.changes ]); - } - b = E.seq; - } - return o; - }(L); - S.add(function processChange2(r, o) { - return function() { - return function saveKeyValues(s, r, o) { - var u = "_local/lastSeq"; - return s.db.get(u).catch(defaultsTo({ - _id: u, - seq: 0 - })).then((function(u) { - var g = mapToKeysArray(r); - return Promise.all(g.map((function(o) { - return async function getDocsToPersist(s, r, o) { - const u = "_local/doc_" + s, g = { - _id: u, - keys: [] - }, _ = o.get(s), m = _[0], b = _[1], E = await function getMetaDoc() { - if (isGenOne(b)) return Promise.resolve(g); else return r.db.get(u).catch(defaultsTo(g)); - }(); - return function processKeyValueDocs(s, r) { - const o = [], u = new ExportedSet; - for (let s = 0, g = r.rows.length; s < g; s++) { - const g = r.rows[s].doc; - if (g) { - o.push(g); - u.add(g._id); - g._deleted = !m.has(g._id); - if (!g._deleted) { - const s = m.get(g._id); - if ("value" in s) g.value = s.value; - } - } - } - const g = mapToKeysArray(m); - g.forEach((function(s) { - if (!u.has(s)) { - const r = { - _id: s - }, u = m.get(s); - if ("value" in u) r.value = u.value; - o.push(r); - } - })); - s.keys = uniq(g.concat(s.keys)); - o.push(s); - return o; - }(E, await function getKeyValueDocs(s) { - if (!s.keys.length) return Promise.resolve({ - rows: [] - }); else return r.db.allDocs({ - keys: s.keys, - include_docs: true - }); - }(E)); - }(o, s, r); - }))).then((function(r) { - var g = flatten(r); - u.seq = o; - g.push(u); - return s.db.bulkDocs({ - docs: g - }); - })).then((() => function updatePurgeSeq(s) { - return s.sourceDB.get("_local/purges").then((function(r) { - const o = r.purgeSeq; - return s.db.get("_local/purgeSeq").then((function(s) { - return s._rev; - })).catch((function(s) { - if (404 !== s.status) throw s; - })).then((function(r) { - return s.db.put({ - _id: "_local/purgeSeq", - _rev: r, - purgeSeq: o - }); - })); - })).catch((function(s) { - if (404 !== s.status) throw s; - })); - }(s))); - })); - }(s, r, o); - }; - }(O, b)); - E += L.length; - const D = { - view: s.name, - last_seq: r.last_seq, - results_count: L.length, - indexed_docs: E - }; - s.sourceDB.emit("indexing", D); - s.sourceDB.activeTasks.update(_, { - completed_items: E - }); - if (!(L.length < o.changes_batch_size)) return processNextBatch(); else return; - }(await s.sourceDB.changes({ - return_docs: true, - conflicts: true, - include_docs: true, - style: "all_docs", - since: b, - limit: o.changes_batch_size - }), await function getRecentPurges() { - return s.db.get("_local/purgeSeq").then((function(s) { - return s.purgeSeq; - })).catch((function(s) { - if (s && 404 !== s.status) throw s; - return -1; - })).then((function(r) { - return s.sourceDB.get("_local/purges").then((function(o) { - const u = o.purges.filter((function(s, o) { - return o > r; - })).map((s => s.docId)), g = u.filter((function(s, r) { - return u.indexOf(s) === r; - })); - return Promise.all(g.map((function(r) { - return s.sourceDB.get(r).then((function(s) { - return { - docId: r, - doc: s - }; - })).catch((function(s) { - if (404 !== s.status) throw s; - return { - docId: r - }; - })); - }))); - })).catch((function(s) { - if (s && 404 !== s.status) throw s; - return []; - })); - })); - }()); - }(); - await S.finish(); - s.seq = b; - s.sourceDB.activeTasks.remove(_); - } catch (r) { - s.sourceDB.activeTasks.remove(_, r); - } - }(s, o); - }))(); - } - function queryView(s, r) { - return sequentialize(getQueue(s), (function() { - return async function queryViewInQueue(s, r) { - let u; - const g = s.reduceFun && false !== r.reduce, _ = r.skip || 0; - if ("undefined" != typeof r.keys && !r.keys.length) { - r.limit = 0; - delete r.keys; - } - async function fetchFromView(r) { - r.include_docs = true; - const o = await s.db.allDocs(r); - u = o.total_rows; - return o.rows.map((function(s) { - if ("value" in s.doc && "object" == typeof s.doc.value && null !== s.doc.value) { - const r = Object.keys(s.doc.value).sort(), o = [ "id", "key", "value" ]; - if (!(r < o || r > o)) return s.doc.value; - } - const r = parseIndexableString(s.doc._id); - return { - key: r[0], - id: r[1], - value: "value" in s.doc ? s.doc.value : null - }; - })); - } - async function onMapResultsReady(m) { - let b; - if (g) b = function reduceView(s, r, u) { - if (0 === u.group_level) delete u.group_level; - const g = u.group || u.group_level, _ = o(s.reduceFun), m = [], b = isNaN(u.group_level) ? Number.POSITIVE_INFINITY : u.group_level; - r.forEach((function(s) { - const r = m[m.length - 1]; - let o = g ? s.key : null; - if (g && Array.isArray(o)) o = o.slice(0, b); - if (!r || 0 !== collate(r.groupKey, o)) m.push({ - keys: [ [ s.key, s.id ] ], - values: [ s.value ], - groupKey: o - }); else { - r.keys.push([ s.key, s.id ]); - r.values.push(s.value); - } - })); - r = []; - for (let o = 0, u = m.length; o < u; o++) { - const u = m[o], g = tryReduce(s.sourceDB, _, u.keys, u.values, false); - if (g.error && g.error instanceof BuiltInError) throw g.error; - r.push({ - value: g.error ? null : g.output, - key: u.groupKey - }); - } - return { - rows: sliceResults(r, u.limit, u.skip) - }; - }(s, m, r); else if ("undefined" == typeof r.keys) b = { - total_rows: u, - offset: _, - rows: m - }; else b = { - total_rows: u, - offset: _, - rows: sliceResults(m, r.limit, r.skip) - }; - if (r.update_seq) b.update_seq = s.seq; - if (r.include_docs) { - const o = uniq(m.map(rowToDocId)), u = await s.sourceDB.allDocs({ - keys: o, - include_docs: true, - conflicts: r.conflicts, - attachments: r.attachments, - binary: r.binary - }); - var E = new ExportedMap; - u.rows.forEach((function(s) { - E.set(s.id, s.doc); - })); - m.forEach((function(s) { - var r = rowToDocId(s), o = E.get(r); - if (o) s.doc = o; - })); - return b; - } else return b; - } - if ("undefined" != typeof r.keys) { - const s = r.keys.map((function(s) { - const o = { - startkey: toIndexableString([ s ]), - endkey: toIndexableString([ s, {} ]) - }; - if (r.update_seq) o.update_seq = true; - return fetchFromView(o); - })); - return onMapResultsReady(flatten(await Promise.all(s))); - } else { - const s = { - descending: r.descending - }; - if (r.update_seq) s.update_seq = true; - let o, u; - if ("start_key" in r) o = r.start_key; - if ("startkey" in r) o = r.startkey; - if ("end_key" in r) u = r.end_key; - if ("endkey" in r) u = r.endkey; - if ("undefined" != typeof o) s.startkey = r.descending ? toIndexableString([ o, {} ]) : toIndexableString([ o ]); - if ("undefined" != typeof u) { - let o = false !== r.inclusive_end; - if (r.descending) o = !o; - s.endkey = toIndexableString(o ? [ u, {} ] : [ u ]); - } - if ("undefined" != typeof r.key) { - const o = toIndexableString([ r.key ]), u = toIndexableString([ r.key, {} ]); - if (s.descending) { - s.endkey = o; - s.startkey = u; - } else { - s.startkey = o; - s.endkey = u; - } - } - if (!g) { - if ("number" == typeof r.limit) s.limit = r.limit; - s.skip = _; - } - return onMapResultsReady(await fetchFromView(s)); - } - }(s, r); - }))(); - } - return { - query: function abstractQuery(r, o, g) { - const _ = this; - if ("function" == typeof o) { - g = o; - o = {}; - } - o = o ? function coerceOptions(s) { - s.group_level = coerceInteger(s.group_level); - s.limit = coerceInteger(s.limit); - s.skip = coerceInteger(s.skip); - return s; - }(o) : {}; - if ("function" == typeof r) r = { - map: r - }; - const m = Promise.resolve().then((function() { - return async function queryPromised(r, o, g) { - if ("function" == typeof r._query) return function customQuery(s, r, o) { - return new Promise((function(u, g) { - s._query(r, o, (function(s, r) { - if (s) return g(s); - u(r); - })); - })); - }(r, o, g); - if (isRemote(r)) return async function httpQuery(s, r, o) { - let u, g, _ = [], m = "GET"; - addHttpParam("reduce", o, _); - addHttpParam("include_docs", o, _); - addHttpParam("attachments", o, _); - addHttpParam("limit", o, _); - addHttpParam("descending", o, _); - addHttpParam("group", o, _); - addHttpParam("group_level", o, _); - addHttpParam("skip", o, _); - addHttpParam("stale", o, _); - addHttpParam("conflicts", o, _); - addHttpParam("startkey", o, _, true); - addHttpParam("start_key", o, _, true); - addHttpParam("endkey", o, _, true); - addHttpParam("end_key", o, _, true); - addHttpParam("inclusive_end", o, _); - addHttpParam("key", o, _, true); - addHttpParam("update_seq", o, _); - _ = _.join("&"); - _ = "" === _ ? "" : "?" + _; - if ("undefined" != typeof o.keys) { - const s = 2e3, g = `keys=${encodeURIComponent(JSON.stringify(o.keys))}`; - if (g.length + _.length + 1 <= s) _ += ("?" === _[0] ? "&" : "?") + g; else { - m = "POST"; - if ("string" == typeof r) u = { - keys: o.keys - }; else r.keys = o.keys; - } - } - if ("string" == typeof r) { - const b = parseViewName(r), E = await s.fetch("_design/" + b[0] + "/_view/" + b[1] + _, { - headers: new h({ - "Content-Type": "application/json" - }), - method: m, - body: JSON.stringify(u) - }); - g = E.ok; - const w = await E.json(); - if (!g) { - w.status = E.status; - throw generateErrorFromResponse(w); - } - w.rows.forEach((function(s) { - if (s.value && s.value.error && "builtin_reduce_error" === s.value.error) throw new Error(s.reason); - })); - return new Promise((function(s) { - s(w); - })).then(postprocessAttachments(o)); - } - u = u || {}; - Object.keys(r).forEach((function(s) { - if (Array.isArray(r[s])) u[s] = r[s]; else u[s] = r[s].toString(); - })); - const b = await s.fetch("_temp_view" + _, { - headers: new h({ - "Content-Type": "application/json" - }), - method: "POST", - body: JSON.stringify(u) - }); - g = b.ok; - const E = await b.json(); - if (!g) { - E.status = b.status; - throw generateErrorFromResponse(E); - } - return new Promise((function(s) { - s(E); - })).then(postprocessAttachments(o)); - }(r, o, g); - const _ = { - changes_batch_size: r.__opts.view_update_changes_batch_size || CHANGES_BATCH_SIZE2 - }; - if ("string" != typeof o) { - checkQueryParseError(g, o); - tempViewQueue.add((async function() { - const u = await createView(r, "temp_view/temp_view", o.map, o.reduce, true, s); - return fin(updateView(u, _).then((function() { - return queryView(u, g); - })), (function() { - return u.db.destroy(); - })); - })); - return tempViewQueue.finish(); - } else { - const m = o, b = parseViewName(m), E = b[0], w = b[1], S = await r.get("_design/" + E); - if (!(o = S.views && S.views[w])) throw new NotFoundError(`ddoc ${S._id} has no view named ${w}`); - u(S, w); - checkQueryParseError(g, o); - const L = await createView(r, m, o.map, o.reduce, false, s); - if ("ok" === g.stale || "update_after" === g.stale) { - if ("update_after" === g.stale) (0, import_immediate.default)((function() { - updateView(L, _); - })); - return queryView(L, g); - } else { - await updateView(L, _); - return queryView(L, g); - } - } - }(_, r, o); - })); - promisedCallback(m, g); - return m; - }, - viewCleanup: callbackify((function() { - const r = this; - if ("function" == typeof r._viewCleanup) return function customViewCleanup(s) { - return new Promise((function(r, o) { - s._viewCleanup((function(s, u) { - if (s) return o(s); - r(u); - })); - })); - }(r); - if (isRemote(r)) return async function httpViewCleanup(s) { - return (await s.fetch("_view_cleanup", { - headers: new h({ - "Content-Type": "application/json" - }), - method: "POST" - })).json(); - }(r); else return async function localViewCleanup(r) { - try { - const o = await r.get("_local/" + s), u = new ExportedMap; - Object.keys(o.views).forEach((function(s) { - const r = parseViewName(s), o = "_design/" + r[0], g = r[1]; - let _ = u.get(o); - if (!_) { - _ = new ExportedSet; - u.set(o, _); - } - _.add(g); - })); - const g = { - keys: mapToKeysArray(u), - include_docs: true - }, _ = await r.allDocs(g), m = {}; - _.rows.forEach((function(s) { - const r = s.key.substring(8); - u.get(s.key).forEach((function(u) { - let g = r + "/" + u; - if (!o.views[g]) g = u; - const _ = Object.keys(o.views[g]), b = s.doc && s.doc.views && s.doc.views[u]; - _.forEach((function(s) { - m[s] = m[s] || b; - })); - })); - })); - const b = Object.keys(m).filter((function(s) { - return !m[s]; - })).map((function(s) { - return sequentialize(getQueue(s), (function() { - return new r.constructor(s, r.__opts).destroy(); - }))(); - })); - return Promise.all(b).then((function() { - return { - ok: true - }; - })); - } catch (s) { - if (404 === s.status) return { - ok: true - }; else throw s; - } - }(r); - })) - }; -} - -var index_es_default5 = createAbstractMapReduce; - -function createBuiltInError(s) { - return new BuiltInError("builtin " + s + " function requires map values to be numbers or number arrays"); -} - -function sum(s) { - for (var r = 0, o = 0, u = s.length; o < u; o++) { - var g = s[o]; - if ("number" != typeof g) if (Array.isArray(g)) { - r = "number" == typeof r ? [ r ] : r; - for (var _ = 0, m = g.length; _ < m; _++) { - var b = g[_]; - if ("number" != typeof b) throw createBuiltInError("_sum"); else if ("undefined" == typeof r[_]) r.push(b); else r[_] += b; - } - } else throw createBuiltInError("_sum"); else if ("number" == typeof r) r += g; else r[0] += g; - } - return r; -} - -var log = guardedConsole.bind(null, "log"), isArray = Array.isArray, toJSON = JSON.parse; - -function evalFunctionWithEval(s, r) { - return scopeEval("return (" + s.replace(/;\s*$/, "") + ");", { - emit: r, - sum, - log, - isArray, - toJSON - }); -} - -var builtInReduce = { - _sum: function(s, r) { - return sum(r); - }, - _count: function(s, r) { - return r.length; - }, - _stats: function(s, r) { - return { - sum: sum(r), - min: Math.min.apply(null, r), - max: Math.max.apply(null, r), - count: r.length, - sumsqr: function sumsqr(s) { - for (var r = 0, o = 0, u = s.length; o < u; o++) { - var g = s[o]; - r += g * g; - } - return r; - }(r) - }; - } -}; - -function getBuiltIn(s) { - if (/^_sum/.test(s)) return builtInReduce._sum; else if (/^_count/.test(s)) return builtInReduce._count; else if (/^_stats/.test(s)) return builtInReduce._stats; else if (/^_/.test(s)) throw new Error(s + " is not a supported reduce function."); -} - -function mapper(s, r) { - if ("function" == typeof s && 2 === s.length) { - var o = s; - return function(s) { - return o(s, r); - }; - } else return evalFunctionWithEval(s.toString(), r); -} - -function reducer(s) { - var r = s.toString(), o = getBuiltIn(r); - if (o) return o; else return evalFunctionWithEval(r); -} - -function ddocValidator(s, r) { - var o = s.views && s.views[r]; - if ("string" != typeof o.map) throw new NotFoundError("ddoc " + s._id + " has no string view named " + r + ", instead found object of type: " + typeof o.map); -} - -var localDocName = "mrviews", abstract = index_es_default5(localDocName, mapper, reducer, ddocValidator); - -function query2(s, r, o) { - return abstract.query.call(this, s, r, o); -} - -function viewCleanup2(s) { - return abstract.viewCleanup.call(this, s); -} - -var index4 = { - query: query2, - viewCleanup: viewCleanup2 -}, index_browser_es_default2 = index4, CHECKPOINT_VERSION = 1, REPLICATOR = "pouchdb", CHECKPOINT_HISTORY_SIZE = 5, LOWEST_SEQ = 0; - -function updateCheckpoint(s, r, o, u, g) { - return s.get(r).catch((function(o) { - if (404 === o.status) { - if ("http" === s.adapter || "https" === s.adapter) explainError(404, "PouchDB is just checking if a remote checkpoint exists."); - return { - session_id: u, - _id: r, - history: [], - replicator: REPLICATOR, - version: CHECKPOINT_VERSION - }; - } - throw o; - })).then((function(_) { - if (!g.cancelled) if (_.last_seq !== o) { - _.history = (_.history || []).filter((function(s) { - return s.session_id !== u; - })); - _.history.unshift({ - last_seq: o, - session_id: u - }); - _.history = _.history.slice(0, CHECKPOINT_HISTORY_SIZE); - _.version = CHECKPOINT_VERSION; - _.replicator = REPLICATOR; - _.session_id = u; - _.last_seq = o; - return s.put(_).catch((function(_) { - if (409 === _.status) return updateCheckpoint(s, r, o, u, g); - throw _; - })); - } - })); -} - -var CheckpointerInternal = class { - constructor(s, r, o, u, g) { - this.src = s; - this.target = r; - this.id = o; - this.returnValue = u; - this.opts = g || {}; - } - writeCheckpoint(s, r) { - var o = this; - return this.updateTarget(s, r).then((function() { - return o.updateSource(s, r); - })); - } - updateTarget(s, r) { - if (this.opts.writeTargetCheckpoint) return updateCheckpoint(this.target, this.id, s, r, this.returnValue); else return Promise.resolve(true); - } - updateSource(s, r) { - if (this.opts.writeSourceCheckpoint) { - var o = this; - return updateCheckpoint(this.src, this.id, s, r, this.returnValue).catch((function(s) { - if (isForbiddenError(s)) { - o.opts.writeSourceCheckpoint = false; - return true; - } - throw s; - })); - } else return Promise.resolve(true); - } - getCheckpoint() { - var s = this; - if (s.opts && s.opts.writeSourceCheckpoint && !s.opts.writeTargetCheckpoint) return s.src.get(s.id).then((function(s) { - return s.last_seq || LOWEST_SEQ; - })).catch((function(s) { - if (404 !== s.status) throw s; - return LOWEST_SEQ; - })); else return s.target.get(s.id).then((function(r) { - if (s.opts && s.opts.writeTargetCheckpoint && !s.opts.writeSourceCheckpoint) return r.last_seq || LOWEST_SEQ; else return s.src.get(s.id).then((function(s) { - if (r.version !== s.version) return LOWEST_SEQ; - var o; - if (r.version) o = r.version.toString(); else o = "undefined"; - if (o in comparisons) return comparisons[o](r, s); else return LOWEST_SEQ; - }), (function(o) { - if (404 === o.status && r.last_seq) return s.src.put({ - _id: s.id, - last_seq: LOWEST_SEQ - }).then((function() { - return LOWEST_SEQ; - }), (function(o) { - if (isForbiddenError(o)) { - s.opts.writeSourceCheckpoint = false; - return r.last_seq; - } - return LOWEST_SEQ; - })); - throw o; - })); - })).catch((function(s) { - if (404 !== s.status) throw s; - return LOWEST_SEQ; - })); - } -}, comparisons = { - undefined: function(s, r) { - if (0 === collate(s.last_seq, r.last_seq)) return r.last_seq; else return 0; - }, - 1: function(s, r) { - return compareReplicationLogs(r, s).last_seq; - } -}; - -function compareReplicationLogs(s, r) { - if (s.session_id === r.session_id) return { - last_seq: s.last_seq, - history: s.history - }; else return compareReplicationHistory(s.history, r.history); -} - -function compareReplicationHistory(s, r) { - var o = s[0], u = s.slice(1), g = r[0], _ = r.slice(1); - if (!o || 0 === r.length) return { - last_seq: LOWEST_SEQ, - history: [] - }; - if (hasSessionId(o.session_id, r)) return { - last_seq: o.last_seq, - history: s - }; - if (hasSessionId(g.session_id, u)) return { - last_seq: g.last_seq, - history: _ - }; else return compareReplicationHistory(u, _); -} - -function hasSessionId(s, r) { - var o = r[0], u = r.slice(1); - if (!s || 0 === r.length) return false; - if (s === o.session_id) return true; else return hasSessionId(s, u); -} - -function isForbiddenError(s) { - return "number" == typeof s.status && 4 === Math.floor(s.status / 100); -} - -function Checkpointer(s, r, o, u, g) { - if (!(this instanceof CheckpointerInternal)) return new CheckpointerInternal(s, r, o, u, g); else return Checkpointer; -} - -var index_es_default6 = Checkpointer; - -function sortObjectPropertiesByKey(s) { - return Object.keys(s).sort(collate).reduce((function(r, o) { - r[o] = s[o]; - return r; - }), {}); -} - -function generateReplicationId(s, r, o) { - var u = o.doc_ids ? o.doc_ids.sort(collate) : "", g = o.filter ? o.filter.toString() : "", _ = "", m = "", b = ""; - if (o.selector) b = JSON.stringify(o.selector); - if (o.filter && o.query_params) _ = JSON.stringify(sortObjectPropertiesByKey(o.query_params)); - if (o.filter && "_view" === o.filter) m = o.view.toString(); - return Promise.all([ s.id(), r.id() ]).then((function(s) { - var r = s[0] + s[1] + g + m + _ + u + b; - return new Promise((function(s) { - binaryMd5(r, s); - })); - })).then((function(s) { - return "_local/" + (s = s.replace(/\//g, ".").replace(/\+/g, "_")); - })); -} - -var index_es_default7 = generateReplicationId, import_events3 = __toESM(require_events()); - -function fileHasChanged(s, r, o) { - return !s._attachments || !s._attachments[o] || s._attachments[o].digest !== r._attachments[o].digest; -} - -function getDocAttachments(s, r) { - var o = Object.keys(r._attachments); - return Promise.all(o.map((function(o) { - return s.getAttachment(r._id, o, { - rev: r._rev - }); - }))); -} - -function getDocAttachmentsFromTargetOrSource(s, r, o) { - var u = isRemote(r) && !isRemote(s), g = Object.keys(o._attachments); - if (!u) return getDocAttachments(r, o); else return s.get(o._id).then((function(u) { - return Promise.all(g.map((function(g) { - if (fileHasChanged(u, o, g)) return r.getAttachment(o._id, g); else return s.getAttachment(u._id, g); - }))); - })).catch((function(s) { - if (404 !== s.status) throw s; - return getDocAttachments(r, o); - })); -} - -function createBulkGetOpts(s) { - var r = []; - Object.keys(s).forEach((function(o) { - s[o].missing.forEach((function(s) { - r.push({ - id: o, - rev: s - }); - })); - })); - return { - docs: r, - revs: true, - latest: true - }; -} - -function getDocs(s, r, o, u) { - o = clone(o); - var g = [], _ = true; - return Promise.resolve().then((function getAllDocs() { - var m = createBulkGetOpts(o); - if (m.docs.length) return s.bulkGet(m).then((function(o) { - if (u.cancelled) throw new Error("cancelled"); - return Promise.all(o.results.map((function(o) { - return Promise.all(o.docs.map((function(o) { - var u = o.ok; - if (o.error) _ = false; - if (!u || !u._attachments) return u; else return getDocAttachmentsFromTargetOrSource(r, s, u).then((function(s) { - var r = Object.keys(u._attachments); - s.forEach((function(s, o) { - var g = u._attachments[r[o]]; - delete g.stub; - delete g.length; - g.data = s; - })); - return u; - })); - }))); - }))).then((function(s) { - g = g.concat(flatten(s).filter(Boolean)); - })); - })); - })).then((function returnResult() { - return { - ok: _, - docs: g - }; - })); -} - -var STARTING_BACK_OFF = 0; - -function backOff(s, r, o, u) { - if (false !== s.retry) { - if ("function" != typeof s.back_off_function) s.back_off_function = defaultBackOff; - r.emit("requestError", o); - if ("active" === r.state || "pending" === r.state) { - r.emit("paused", o); - r.state = "stopped"; - var g = function backoffTimeSet() { - s.current_back_off = STARTING_BACK_OFF; - }; - r.once("paused", (function removeBackOffTimeSet() { - r.removeListener("active", g); - })); - r.once("active", g); - } - s.current_back_off = s.current_back_off || STARTING_BACK_OFF; - s.current_back_off = s.back_off_function(s.current_back_off); - setTimeout(u, s.current_back_off); - } else { - r.emit("error", o); - r.removeAllListeners(); - } -} - -function replicate(s, r, o, u, g) { - var _, m, b, E, w = [], S = { - seq: 0, - changes: [], - docs: [] - }, L = false, O = false, D = false, k = 0, C = 0, T = o.continuous || o.live || false, I = o.batch_size || 100, A = o.batches_limit || 10, R = o.style || "all_docs", x = false, P = o.doc_ids, N = o.selector, B = [], F = uuid(); - g = g || { - ok: true, - start_time: (new Date).toISOString(), - docs_read: 0, - docs_written: 0, - doc_write_failures: 0, - errors: [] - }; - var M = {}; - u.ready(s, r); - function initCheckpointer() { - if (b) return Promise.resolve(); else return index_es_default7(s, r, o).then((function(g) { - m = g; - var _ = {}; - if (false === o.checkpoint) _ = { - writeSourceCheckpoint: false, - writeTargetCheckpoint: false - }; else if ("source" === o.checkpoint) _ = { - writeSourceCheckpoint: true, - writeTargetCheckpoint: false - }; else if ("target" === o.checkpoint) _ = { - writeSourceCheckpoint: false, - writeTargetCheckpoint: true - }; else _ = { - writeSourceCheckpoint: true, - writeTargetCheckpoint: true - }; - b = new index_es_default6(s, r, m, u, _); - })); - } - function writeDocs() { - B = []; - if (0 !== _.docs.length) { - var s = _.docs, m = { - timeout: o.timeout - }; - return r.bulkDocs({ - docs: s, - new_edits: false - }, m).then((function(r) { - if (u.cancelled) { - completeReplication(); - throw new Error("cancelled"); - } - var o = Object.create(null); - r.forEach((function(s) { - if (s.error) o[s.id] = s; - })); - var _ = Object.keys(o).length; - g.doc_write_failures += _; - g.docs_written += s.length - _; - s.forEach((function(s) { - var r = o[s._id]; - if (r) { - g.errors.push(r); - var _ = (r.name || "").toLowerCase(); - if ("unauthorized" === _ || "forbidden" === _) u.emit("denied", clone(r)); else throw r; - } else B.push(s); - })); - }), (function(r) { - g.doc_write_failures += s.length; - throw r; - })); - } - } - function finishBatch() { - if (_.error) throw new Error("There was a problem getting docs."); - g.last_seq = C = _.seq; - var r = clone(g); - if (B.length) { - r.docs = B; - if ("number" == typeof _.pending) { - r.pending = _.pending; - delete _.pending; - } - u.emit("change", r); - } - L = true; - s.info().then((function(r) { - var o = s.activeTasks.get(E); - if (_ && o) { - var u = o.completed_items || 0, g = parseInt(r.update_seq, 10) - parseInt(k, 10); - s.activeTasks.update(E, { - completed_items: u + _.changes.length, - total_items: g - }); - } - })); - return b.writeCheckpoint(_.seq, F).then((function() { - u.emit("checkpoint", { - checkpoint: _.seq - }); - L = false; - if (u.cancelled) { - completeReplication(); - throw new Error("cancelled"); - } - _ = void 0; - getChanges(); - })).catch((function(s) { - onCheckpointError(s); - throw s; - })); - } - function getBatchDocs() { - return getDocs(s, r, _.diffs, u).then((function(s) { - _.error = !s.ok; - s.docs.forEach((function(s) { - delete _.diffs[s._id]; - g.docs_read++; - _.docs.push(s); - })); - })); - } - function startNextBatch() { - if (!u.cancelled && !_) if (0 !== w.length) { - _ = w.shift(); - u.emit("checkpoint", { - start_next_batch: _.seq - }); - (function getDiffs() { - var s = {}; - _.changes.forEach((function(r) { - u.emit("checkpoint", { - revs_diff: r - }); - if ("_user/" !== r.id) s[r.id] = r.changes.map((function(s) { - return s.rev; - })); - })); - return r.revsDiff(s).then((function(s) { - if (u.cancelled) { - completeReplication(); - throw new Error("cancelled"); - } - _.diffs = s; - })); - })().then(getBatchDocs).then(writeDocs).then(finishBatch).then(startNextBatch).catch((function(s) { - abortReplication("batch processing terminated with error", s); - })); - } else processPendingBatch(true); - } - function processPendingBatch(s) { - if (0 !== S.changes.length) { - if (s || O || S.changes.length >= I) { - w.push(S); - S = { - seq: 0, - changes: [], - docs: [] - }; - if ("pending" === u.state || "stopped" === u.state) { - u.state = "active"; - u.emit("active"); - } - startNextBatch(); - } - } else if (0 === w.length && !_) { - if (T && M.live || O) { - u.state = "pending"; - u.emit("paused"); - } - if (O) completeReplication(); - } - } - function abortReplication(s, r) { - if (!D) { - if (!r.message) r.message = s; - g.ok = false; - g.status = "aborting"; - w = []; - S = { - seq: 0, - changes: [], - docs: [] - }; - completeReplication(r); - } - } - function completeReplication(_) { - if (!D) { - if (u.cancelled) { - g.status = "cancelled"; - if (L) return; - } - g.status = g.status || "complete"; - g.end_time = (new Date).toISOString(); - g.last_seq = C; - D = true; - s.activeTasks.remove(E, _); - if (_) { - (_ = createError(_)).result = g; - var m = (_.name || "").toLowerCase(); - if ("unauthorized" === m || "forbidden" === m) { - u.emit("error", _); - u.removeAllListeners(); - } else backOff(o, u, _, (function() { - replicate(s, r, o, u); - })); - } else { - u.emit("complete", g); - u.removeAllListeners(); - } - } - } - function onChange(r, g, _) { - if (u.cancelled) return completeReplication(); - if ("number" == typeof g) S.pending = g; - if (filterChange(o)(r)) { - S.seq = r.seq || _; - S.changes.push(r); - u.emit("checkpoint", { - pending_batch: S.seq - }); - (0, import_immediate.default)((function() { - processPendingBatch(0 === w.length && M.live); - })); - } else { - var m = s.activeTasks.get(E); - if (m) { - var b = m.completed_items || 0; - s.activeTasks.update(E, { - completed_items: ++b - }); - } - } - } - function onChangesComplete(s) { - x = false; - if (u.cancelled) return completeReplication(); - if (s.results.length > 0) { - M.since = s.results[s.results.length - 1].seq; - getChanges(); - processPendingBatch(true); - } else { - var complete = function() { - if (T) { - M.live = true; - getChanges(); - } else O = true; - processPendingBatch(true); - }; - if (!_ && 0 === s.results.length) { - L = true; - b.writeCheckpoint(s.last_seq, F).then((function() { - L = false; - g.last_seq = C = s.last_seq; - if (u.cancelled) { - completeReplication(); - throw new Error("cancelled"); - } else complete(); - })).catch(onCheckpointError); - } else complete(); - } - } - function onChangesError(s) { - x = false; - if (u.cancelled) return completeReplication(); - abortReplication("changes rejected", s); - } - function getChanges() { - if (!x && !O && w.length < A) { - x = true; - if (u._changes) { - u.removeListener("cancel", u._abortChanges); - u._changes.cancel(); - } - u.once("cancel", abortChanges); - var r = s.changes(M).on("change", onChange); - r.then(removeListener, removeListener); - r.then(onChangesComplete).catch(onChangesError); - if (o.retry) { - u._changes = r; - u._abortChanges = abortChanges; - } - } - function abortChanges() { - r.cancel(); - } - function removeListener() { - u.removeListener("cancel", abortChanges); - } - } - function createTask(r) { - return s.info().then((function(u) { - var g = "undefined" == typeof o.since ? parseInt(u.update_seq, 10) - parseInt(r, 10) : parseInt(u.update_seq, 10); - E = s.activeTasks.add({ - name: `${T ? "continuous " : ""}replication from ${u.db_name}`, - total_items: g - }); - return r; - })); - } - function startChanges() { - initCheckpointer().then((function() { - if (!u.cancelled) return b.getCheckpoint().then(createTask).then((function(s) { - k = s; - M = { - since: C = s, - limit: I, - batch_size: I, - style: R, - doc_ids: P, - selector: N, - return_docs: true - }; - if (o.filter) if ("string" != typeof o.filter) M.include_docs = true; else M.filter = o.filter; - if ("heartbeat" in o) M.heartbeat = o.heartbeat; - if ("timeout" in o) M.timeout = o.timeout; - if (o.query_params) M.query_params = o.query_params; - if (o.view) M.view = o.view; - getChanges(); - })); else completeReplication(); - })).catch((function(s) { - abortReplication("getCheckpoint rejected with ", s); - })); - } - function onCheckpointError(s) { - L = false; - abortReplication("writeCheckpoint completed with error", s); - } - if (!u.cancelled) { - if (!u._addedListeners) { - u.once("cancel", completeReplication); - if ("function" == typeof o.complete) { - u.once("error", o.complete); - u.once("complete", (function(s) { - o.complete(null, s); - })); - } - u._addedListeners = true; - } - if ("undefined" == typeof o.since) startChanges(); else initCheckpointer().then((function() { - L = true; - return b.writeCheckpoint(o.since, F); - })).then((function() { - L = false; - if (!u.cancelled) { - C = o.since; - startChanges(); - } else completeReplication(); - })).catch(onCheckpointError); - } else completeReplication(); -} - -var Replication = class extends import_events3.default { - constructor() { - super(); - this.cancelled = false; - this.state = "pending"; - const s = new Promise(((s, r) => { - this.once("complete", s); - this.once("error", r); - })); - this.then = function(r, o) { - return s.then(r, o); - }; - this.catch = function(r) { - return s.catch(r); - }; - this.catch((function() {})); - } - cancel() { - this.cancelled = true; - this.state = "cancelled"; - this.emit("cancel"); - } - ready(s, r) { - if (this._readyCalled) return; - this._readyCalled = true; - const onDestroy2 = () => { - this.cancel(); - }; - s.once("destroyed", onDestroy2); - r.once("destroyed", onDestroy2); - function cleanup() { - s.removeListener("destroyed", onDestroy2); - r.removeListener("destroyed", onDestroy2); - } - this.once("complete", cleanup); - this.once("error", cleanup); - } -}; - -function toPouch(s, r) { - var o = r.PouchConstructor; - if ("string" == typeof s) return new o(s, r); else return s; -} - -function replicateWrapper(s, r, o, u) { - if ("function" == typeof o) { - u = o; - o = {}; - } - if ("undefined" == typeof o) o = {}; - if (o.doc_ids && !Array.isArray(o.doc_ids)) throw createError(BAD_REQUEST, "`doc_ids` filter parameter is not a list."); - o.complete = u; - (o = clone(o)).continuous = o.continuous || o.live; - o.retry = "retry" in o ? o.retry : false; - o.PouchConstructor = o.PouchConstructor || this; - var g = new Replication(o); - replicate(toPouch(s, o), toPouch(r, o), o, g); - return g; -} - -function sync(s, r, o, u) { - if ("function" == typeof o) { - u = o; - o = {}; - } - if ("undefined" == typeof o) o = {}; - (o = clone(o)).PouchConstructor = o.PouchConstructor || this; - s = toPouch(s, o); - r = toPouch(r, o); - return new Sync(s, r, o, u); -} - -var Sync = class extends import_events3.default { - constructor(s, r, o, u) { - super(); - this.canceled = false; - const g = o.push ? assign$2({}, o, o.push) : o, _ = o.pull ? assign$2({}, o, o.pull) : o; - this.push = replicateWrapper(s, r, g); - this.pull = replicateWrapper(r, s, _); - this.pushPaused = true; - this.pullPaused = true; - const pullChange = s => { - this.emit("change", { - direction: "pull", - change: s - }); - }, pushChange = s => { - this.emit("change", { - direction: "push", - change: s - }); - }, pushDenied = s => { - this.emit("denied", { - direction: "push", - doc: s - }); - }, pullDenied = s => { - this.emit("denied", { - direction: "pull", - doc: s - }); - }, pushPaused = () => { - this.pushPaused = true; - if (this.pullPaused) this.emit("paused"); - }, pullPaused = () => { - this.pullPaused = true; - if (this.pushPaused) this.emit("paused"); - }, pushActive = () => { - this.pushPaused = false; - if (this.pullPaused) this.emit("active", { - direction: "push" - }); - }, pullActive = () => { - this.pullPaused = false; - if (this.pushPaused) this.emit("active", { - direction: "pull" - }); - }; - let m = {}; - const removeAll = s => (r, o) => { - if ("change" === r && (o === pullChange || o === pushChange) || "denied" === r && (o === pullDenied || o === pushDenied) || "paused" === r && (o === pullPaused || o === pushPaused) || "active" === r && (o === pullActive || o === pushActive)) { - if (!(r in m)) m[r] = {}; - m[r][s] = true; - if (2 === Object.keys(m[r]).length) this.removeAllListeners(r); - } - }; - if (o.live) { - this.push.on("complete", this.pull.cancel.bind(this.pull)); - this.pull.on("complete", this.push.cancel.bind(this.push)); - } - function addOneListener(s, r, o) { - if (-1 == s.listeners(r).indexOf(o)) s.on(r, o); - } - this.on("newListener", (function(s) { - if ("change" === s) { - addOneListener(this.pull, "change", pullChange); - addOneListener(this.push, "change", pushChange); - } else if ("denied" === s) { - addOneListener(this.pull, "denied", pullDenied); - addOneListener(this.push, "denied", pushDenied); - } else if ("active" === s) { - addOneListener(this.pull, "active", pullActive); - addOneListener(this.push, "active", pushActive); - } else if ("paused" === s) { - addOneListener(this.pull, "paused", pullPaused); - addOneListener(this.push, "paused", pushPaused); - } - })); - this.on("removeListener", (function(s) { - if ("change" === s) { - this.pull.removeListener("change", pullChange); - this.push.removeListener("change", pushChange); - } else if ("denied" === s) { - this.pull.removeListener("denied", pullDenied); - this.push.removeListener("denied", pushDenied); - } else if ("active" === s) { - this.pull.removeListener("active", pullActive); - this.push.removeListener("active", pushActive); - } else if ("paused" === s) { - this.pull.removeListener("paused", pullPaused); - this.push.removeListener("paused", pushPaused); - } - })); - this.pull.on("removeListener", removeAll("pull")); - this.push.on("removeListener", removeAll("push")); - const b = Promise.all([ this.push, this.pull ]).then((s => { - const r = { - push: s[0], - pull: s[1] - }; - this.emit("complete", r); - if (u) u(null, r); - this.removeAllListeners(); - return r; - }), (s => { - this.cancel(); - if (u) u(s); else this.emit("error", s); - this.removeAllListeners(); - if (u) throw s; - })); - this.then = function(s, r) { - return b.then(s, r); - }; - this.catch = function(s) { - return b.catch(s); - }; - } - cancel() { - if (!this.canceled) { - this.canceled = true; - this.push.cancel(); - this.pull.cancel(); - } - } -}; - -function replication(s) { - s.replicate = replicateWrapper; - s.sync = sync; - Object.defineProperty(s.prototype, "replicate", { - get: function() { - var s = this; - if ("undefined" == typeof this.replicateMethods) this.replicateMethods = { - from: function(r, o, u) { - return s.constructor.replicate(r, s, o, u); - }, - to: function(r, o, u) { - return s.constructor.replicate(s, r, o, u); - } - }; - return this.replicateMethods; - } - }); - s.prototype.sync = function(s, r, o) { - return this.constructor.sync(this, s, r, o); - }; -} - -var index_es_default8 = replication; - -function massageCreateIndexRequest(s) { - if (!(s = clone(s)).index) s.index = {}; - [ "type", "name", "ddoc" ].forEach((function(r) { - if (s.index[r]) { - s[r] = s.index[r]; - delete s.index[r]; - } - })); - if (s.fields) { - s.index.fields = s.fields; - delete s.fields; - } - if (!s.type) s.type = "json"; - return s; -} - -function checkFieldValueType(s, r, o) { - var u = "", g = r, _ = true; - if (-1 !== [ "$in", "$nin", "$or", "$and", "$mod", "$nor", "$all" ].indexOf(s)) if (!Array.isArray(r)) u = "Query operator " + s + " must be an array."; - if (-1 !== [ "$not", "$elemMatch", "$allMatch" ].indexOf(s)) if (!(!Array.isArray(r) && "object" == typeof r && null !== r)) u = "Query operator " + s + " must be an object."; - if ("$mod" === s && Array.isArray(r)) if (2 !== r.length) u = "Query operator $mod must be in the format [divisor, remainder], where divisor and remainder are both integers."; else { - var m = r[0], b = r[1]; - if (0 === m) { - u = "Query operator $mod's divisor cannot be 0, cannot divide by zero."; - _ = false; - } - if ("number" != typeof m || parseInt(m, 10) !== m) { - u = "Query operator $mod's divisor is not an integer."; - g = m; - } - if (parseInt(b, 10) !== b) { - u = "Query operator $mod's remainder is not an integer."; - g = b; - } - } - if ("$exists" === s) if ("boolean" != typeof r) u = "Query operator $exists must be a boolean."; - if ("$type" === s) { - var E = [ "null", "boolean", "number", "string", "array", "object" ], w = '"' + E.slice(0, E.length - 1).join('", "') + '", or "' + E[E.length - 1] + '"'; - if ("string" != typeof r) u = "Query operator $type must be a string. Supported values: " + w + "."; else if (-1 == E.indexOf(r)) u = "Query operator $type must be a string. Supported values: " + w + "."; - } - if ("$size" === s) if (parseInt(r, 10) !== r) u = "Query operator $size must be a integer."; - if ("$regex" === s) if ("string" != typeof r) if (o) u = "Query operator $regex must be a string."; else if (!(r instanceof RegExp)) u = "Query operator $regex must be a string or an instance of a javascript regular expression."; - if (u) { - if (_) u += " Received" + (null === g ? " " : Array.isArray(g) ? " array" : " " + typeof g) + ": " + ("object" == typeof g && null !== g ? JSON.stringify(g, null, "\t") : g); - throw new Error(u); - } -} - -var requireValidation = [ "$all", "$allMatch", "$and", "$elemMatch", "$exists", "$in", "$mod", "$nin", "$nor", "$not", "$or", "$regex", "$size", "$type" ], arrayTypeComparisonOperators = [ "$in", "$nin", "$mod", "$all" ], equalityOperators = [ "$eq", "$gt", "$gte", "$lt", "$lte" ]; - -function validateSelector(s, r) { - if (Array.isArray(s)) { - for (var o of s) if ("object" == typeof o && null !== m) validateSelector(o, r); - } else for (var u = Object.keys(s), g = 0; g < u.length; g++) { - var _ = u[g], m = s[_]; - if (-1 !== requireValidation.indexOf(_)) checkFieldValueType(_, m, r); - if (-1 === equalityOperators.indexOf(_)) if (-1 === arrayTypeComparisonOperators.indexOf(_)) if ("object" == typeof m && null !== m) validateSelector(m, r); - } -} - -function dbFetch(s, r, o, u) { - var g, _; - o.headers = new h({ - "Content-type": "application/json" - }); - s.fetch(r, o).then((function(s) { - g = s.status; - _ = s.ok; - return s.json(); - })).then((function(s) { - if (!_) { - s.status = g; - var r = generateErrorFromResponse(s); - u(r); - } else u(null, s); - })).catch(u); -} - -function createIndex(s, r, o) { - r = massageCreateIndexRequest(r); - dbFetch(s, "_index", { - method: "POST", - body: JSON.stringify(r) - }, o); -} - -function find(s, r, o) { - validateSelector(r.selector, true); - dbFetch(s, "_find", { - method: "POST", - body: JSON.stringify(r) - }, o); -} - -function explain(s, r, o) { - dbFetch(s, "_explain", { - method: "POST", - body: JSON.stringify(r) - }, o); -} - -function getIndexes(s, r) { - dbFetch(s, "_index", { - method: "GET" - }, r); -} - -function deleteIndex(s, r, o) { - var u = r.ddoc, g = r.type || "json", _ = r.name; - if (!u) return o(new Error("you must provide an index's ddoc")); - if (!_) return o(new Error("you must provide an index's name")); - dbFetch(s, "_index/" + [ u, g, _ ].map(encodeURIComponent).join("/"), { - method: "DELETE" - }, o); -} - -function callbackify2(s) { - return function(...r) { - var o = r.pop(), u = s.apply(this, r); - promisedCallback2(u, o); - return u; - }; -} - -function promisedCallback2(s, r) { - s.then((function(s) { - (0, import_immediate.default)((function() { - r(null, s); - })); - }), (function(s) { - (0, import_immediate.default)((function() { - r(s); - })); - })); - return s; -} - -var flatten2 = function(...s) { - for (var r = [], o = 0, u = s.length; o < u; o++) { - var g = s[o]; - if (Array.isArray(g)) r = r.concat(flatten2.apply(null, g)); else r.push(g); - } - return r; -}; - -function mergeObjects(s) { - for (var r = {}, o = 0, u = s.length; o < u; o++) r = assign$2(r, s[o]); - return r; -} - -function pick2(s, r) { - for (var o = {}, u = 0, g = r.length; u < g; u++) { - var _ = parseField(r[u]), m = getFieldFromDoc(s, _); - if ("undefined" != typeof m) setFieldInDoc(o, _, m); - } - return o; -} - -function oneArrayIsSubArrayOfOther(s, r) { - for (var o = 0, u = Math.min(s.length, r.length); o < u; o++) if (s[o] !== r[o]) return false; - return true; -} - -function oneArrayIsStrictSubArrayOfOther(s, r) { - if (s.length > r.length) return false; else return oneArrayIsSubArrayOfOther(s, r); -} - -function oneSetIsSubArrayOfOther(s, r) { - s = s.slice(); - for (var o = 0, u = r.length; o < u; o++) { - var g = r[o]; - if (!s.length) break; - var _ = s.indexOf(g); - if (-1 === _) return false; else s.splice(_, 1); - } - return true; -} - -function arrayToObject(s) { - for (var r = {}, o = 0, u = s.length; o < u; o++) r[s[o]] = true; - return r; -} - -function max(s, r) { - for (var o = null, u = -1, g = 0, _ = s.length; g < _; g++) { - var m = s[g], b = r(m); - if (b > u) { - u = b; - o = m; - } - } - return o; -} - -function arrayEquals(s, r) { - if (s.length !== r.length) return false; - for (var o = 0, u = s.length; o < u; o++) if (s[o] !== r[o]) return false; - return true; -} - -function uniq2(s) { - for (var r = {}, o = 0; o < s.length; o++) r["$" + s[o]] = true; - return Object.keys(r).map((function(s) { - return s.substring(1); - })); -} - -function createDeepMultiMapper(s, r, o) { - return function(u) { - if (!o || matchesSelector(u, o)) { - for (var g = [], _ = 0, m = s.length; _ < m; _++) { - for (var b = parseField(s[_]), E = u, w = 0, S = b.length; w < S; w++) if ("undefined" == typeof (E = E[b[w]])) return; - g.push(E); - } - r(g); - } - }; -} - -function createDeepSingleMapper(s, r, o) { - var u = parseField(s); - return function(s) { - if (!o || matchesSelector(s, o)) { - for (var g = s, _ = 0, m = u.length; _ < m; _++) if ("undefined" == typeof (g = g[u[_]])) return; - r(g); - } - }; -} - -function createShallowSingleMapper(s, r, o) { - return function(u) { - if (!o || matchesSelector(u, o)) r(u[s]); - }; -} - -function createShallowMultiMapper(s, r, o) { - return function(u) { - if (!o || matchesSelector(u, o)) { - for (var g = [], _ = 0, m = s.length; _ < m; _++) g.push(u[s[_]]); - r(g); - } - }; -} - -function checkShallow(s) { - for (var r = 0, o = s.length; r < o; r++) if (-1 !== s[r].indexOf(".")) return false; - return true; -} - -function createMapper(s, r, o) { - var u = checkShallow(s), g = 1 === s.length; - if (u) if (g) return createShallowSingleMapper(s[0], r, o); else return createShallowMultiMapper(s, r, o); else if (g) return createDeepSingleMapper(s[0], r, o); else return createDeepMultiMapper(s, r, o); -} - -function mapper2(s, r) { - return createMapper(Object.keys(s.fields), r, s.partial_filter_selector); -} - -function reducer2() { - throw new Error("reduce not supported"); -} - -function ddocValidator2(s, r) { - var o = s.views[r]; - if (!o.map || !o.map.fields) throw new Error("ddoc " + s._id + " with view " + r + " doesn't have map.fields defined. maybe it wasn't created by this plugin?"); -} - -var abstractMapper = index_es_default5("indexes", mapper2, reducer2, ddocValidator2); - -function abstractMapper$1(s) { - if (s._customFindAbstractMapper) return { - query: function addQueryFallback(r, o) { - var u = abstractMapper.query.bind(this); - return s._customFindAbstractMapper.query.call(this, r, o, u); - }, - viewCleanup: function addViewCleanupFallback() { - var r = abstractMapper.viewCleanup.bind(this); - return s._customFindAbstractMapper.viewCleanup.call(this, r); - } - }; else return abstractMapper; -} - -function massageSort(s) { - if (!Array.isArray(s)) throw new Error("invalid sort json - should be an array"); - return s.map((function(s) { - if ("string" == typeof s) { - var r = {}; - r[s] = "asc"; - return r; - } else return s; - })); -} - -function massageUseIndex(s) { - var r = []; - if ("string" == typeof s) r.push(s); else r = s; - return r.map((function(s) { - return s.replace("_design/", ""); - })); -} - -function massageIndexDef(s) { - s.fields = s.fields.map((function(s) { - if ("string" == typeof s) { - var r = {}; - r[s] = "asc"; - return r; - } - return s; - })); - if (s.partial_filter_selector) s.partial_filter_selector = massageSelector(s.partial_filter_selector); - return s; -} - -function getKeyFromDoc(s, r) { - for (var o = [], u = 0; u < r.def.fields.length; u++) { - var g = getKey(r.def.fields[u]); - o.push(getFieldFromDoc(s, parseField(g))); - } - return o; -} - -function filterInclusiveStart(s, r, o) { - for (var u = o.def.fields, g = 0, _ = s.length; g < _; g++) { - var m = getKeyFromDoc(s[g].doc, o); - if (1 === u.length) m = m[0]; else for (;m.length > r.length; ) m.pop(); - if (Math.abs(collate(m, r)) > 0) break; - } - return g > 0 ? s.slice(g) : s; -} - -function reverseOptions(s) { - var r = clone(s); - delete r.startkey; - delete r.endkey; - delete r.inclusive_start; - delete r.inclusive_end; - if ("endkey" in s) r.startkey = s.endkey; - if ("startkey" in s) r.endkey = s.startkey; - if ("inclusive_start" in s) r.inclusive_end = s.inclusive_start; - if ("inclusive_end" in s) r.inclusive_start = s.inclusive_end; - return r; -} - -function validateIndex(s) { - var r = s.fields.filter((function(s) { - return "asc" === getValue(s); - })); - if (0 !== r.length && r.length !== s.fields.length) throw new Error("unsupported mixed sorting"); -} - -function validateSort(s, r) { - if (r.defaultUsed && s.sort) { - var o = s.sort.filter((function(s) { - return "_id" !== Object.keys(s)[0]; - })).map((function(s) { - return Object.keys(s)[0]; - })); - if (o.length > 0) throw new Error('Cannot sort on field(s) "' + o.join(",") + '" when using the default index'); - } - if (!r.defaultUsed) ; -} - -function validateFindRequest(s) { - if ("object" != typeof s.selector) throw new Error("you must provide a selector when you find()"); -} - -function getUserFields(s, r) { - var o, u = Object.keys(s), g = r ? r.map(getKey) : []; - if (u.length >= g.length) o = u; else o = g; - if (0 === g.length) return { - fields: o - }; else return { - fields: o = o.sort((function(s, r) { - var o = g.indexOf(s); - if (-1 === o) o = Number.MAX_VALUE; - var u = g.indexOf(r); - if (-1 === u) u = Number.MAX_VALUE; - return o < u ? -1 : o > u ? 1 : 0; - })), - sortOrder: r.map(getKey) - }; -} - -function createIndex$1(s, r) { - var o, u = clone((r = massageCreateIndexRequest(r)).index); - r.index = massageIndexDef(r.index); - validateIndex(r.index); - function getMd5() { - return o || (o = stringMd5(JSON.stringify(r))); - } - var g = r.name || "idx-" + getMd5(), _ = r.ddoc || "idx-" + getMd5(), m = "_design/" + _, b = false, E = false; - s.constructor.emit("debug", [ "find", "creating index", m ]); - return upsert(s, m, (function updateDdoc(s) { - if (s._rev && "query" !== s.language) b = true; - s.language = "query"; - s.views = s.views || {}; - if (E = !!s.views[g]) return false; - s.views[g] = { - map: { - fields: mergeObjects(r.index.fields), - partial_filter_selector: r.index.partial_filter_selector - }, - reduce: "_count", - options: { - def: u - } - }; - return s; - })).then((function() { - if (b) throw new Error('invalid language for ddoc with id "' + m + '" (should be "query")'); - })).then((function() { - var r = _ + "/" + g; - return abstractMapper$1(s).query.call(s, r, { - limit: 0, - reduce: false - }).then((function() { - return { - id: m, - name: g, - result: E ? "exists" : "created" - }; - })); - })); -} - -function getIndexes$1(s) { - return s.allDocs({ - startkey: "_design/", - endkey: "_design/￿", - include_docs: true - }).then((function(s) { - var r = { - indexes: [ { - ddoc: null, - name: "_all_docs", - type: "special", - def: { - fields: [ { - _id: "asc" - } ] - } - } ] - }; - r.indexes = flatten2(r.indexes, s.rows.filter((function(s) { - return "query" === s.doc.language; - })).map((function(s) { - return (void 0 !== s.doc.views ? Object.keys(s.doc.views) : []).map((function(r) { - var o = s.doc.views[r]; - return { - ddoc: s.id, - name: r, - type: "json", - def: massageIndexDef(o.options.def) - }; - })); - }))); - r.indexes.sort((function(s, r) { - return compare(s.name, r.name); - })); - r.total_rows = r.indexes.length; - return r; - })); -} - -var COLLATE_LO = null, COLLATE_HI = { - "￿": {} -}, SHORT_CIRCUIT_QUERY = { - queryOpts: { - limit: 0, - startkey: COLLATE_HI, - endkey: COLLATE_LO - }, - inMemoryFields: [] -}; - -function checkFieldInIndex(s, r) { - for (var o = s.def.fields.map(getKey), u = 0, g = o.length; u < g; u++) if (r === o[u]) return true; - return false; -} - -function userOperatorLosesPrecision(s, r) { - return "$eq" !== getKey(s[r]); -} - -function sortFieldsByIndex(s, r) { - var o = r.def.fields.map(getKey); - return s.slice().sort((function(s, r) { - var u = o.indexOf(s), g = o.indexOf(r); - if (-1 === u) u = Number.MAX_VALUE; - if (-1 === g) g = Number.MAX_VALUE; - return compare(u, g); - })); -} - -function getBasicInMemoryFields(s, r, o) { - for (var u = false, g = 0, _ = (o = sortFieldsByIndex(o, s)).length; g < _; g++) { - var m = o[g]; - if (u || !checkFieldInIndex(s, m)) return o.slice(g); - if (g < _ - 1 && userOperatorLosesPrecision(r, m)) u = true; - } - return []; -} - -function getInMemoryFieldsFromNe(s) { - var r = []; - Object.keys(s).forEach((function(o) { - var u = s[o]; - Object.keys(u).forEach((function(s) { - if ("$ne" === s) r.push(o); - })); - })); - return r; -} - -function getInMemoryFields(s, r, o, u) { - return sortFieldsByIndex(uniq2(flatten2(s, getBasicInMemoryFields(r, o, u), getInMemoryFieldsFromNe(o))), r); -} - -function checkIndexFieldsMatch(s, r, o) { - if (r) { - var u = oneArrayIsStrictSubArrayOfOther(r, s), g = oneArrayIsSubArrayOfOther(o, s); - return u && g; - } - return oneSetIsSubArrayOfOther(o, s); -} - -var logicalMatchers = [ "$eq", "$gt", "$gte", "$lt", "$lte" ]; - -function isNonLogicalMatcher(s) { - return -1 === logicalMatchers.indexOf(s); -} - -function checkFieldsLogicallySound(s, r) { - var o = r[s[0]]; - if ("undefined" == typeof o) return true; else return !(1 === Object.keys(o).length && "$ne" === getKey(o)); -} - -function checkIndexMatches(s, r, o, u) { - var g = s.def.fields.map(getKey); - if (!checkIndexFieldsMatch(g, r, o)) return false; else return checkFieldsLogicallySound(g, u); -} - -function findMatchingIndexes(s, r, o, u) { - return u.filter((function(u) { - return checkIndexMatches(u, o, r, s); - })); -} - -function findBestMatchingIndex(s, r, o, u, g) { - var _ = findMatchingIndexes(s, r, o, u); - if (0 === _.length) { - if (g) throw { - error: "no_usable_index", - message: "There is no index available for this selector." - }; - var m = u[0]; - m.defaultUsed = true; - return m; - } - if (1 === _.length && !g) return _[0]; - var b = arrayToObject(r); - if (g) { - var E = "_design/" + g[0], w = 2 === g.length ? g[1] : false, S = _.find((function(s) { - if (w && s.ddoc === E && w === s.name) return true; - if (s.ddoc === E) return true; else return false; - })); - if (!S) throw { - error: "unknown_error", - message: "Could not find that index or could not use that index for the query" - }; - return S; - } - return max(_, (function scoreIndex(s) { - for (var r = s.def.fields.map(getKey), o = 0, u = 0, g = r.length; u < g; u++) { - var _ = r[u]; - if (b[_]) o++; - } - return o; - })); -} - -function getSingleFieldQueryOptsFor(s, r) { - switch (s) { - case "$eq": - return { - key: r - }; - - case "$lte": - return { - endkey: r - }; - - case "$gte": - return { - startkey: r - }; - - case "$lt": - return { - endkey: r, - inclusive_end: false - }; - - case "$gt": - return { - startkey: r, - inclusive_start: false - }; - } - return { - startkey: COLLATE_LO - }; -} - -function getSingleFieldCoreQueryPlan(s, r) { - var o, u = getKey(r.def.fields[0]), g = s[u] || {}, _ = []; - Object.keys(g).forEach((function(s) { - if (isNonLogicalMatcher(s)) _.push(u); - var r = getSingleFieldQueryOptsFor(s, g[s]); - if (o) o = mergeObjects([ o, r ]); else o = r; - })); - return { - queryOpts: o, - inMemoryFields: _ - }; -} - -function getMultiFieldCoreQueryPlan(s, r) { - switch (s) { - case "$eq": - return { - startkey: r, - endkey: r - }; - - case "$lte": - return { - endkey: r - }; - - case "$gte": - return { - startkey: r - }; - - case "$lt": - return { - endkey: r, - inclusive_end: false - }; - - case "$gt": - return { - startkey: r, - inclusive_start: false - }; - } -} - -function getMultiFieldQueryOpts(s, r) { - var o, u, g = r.def.fields.map(getKey), _ = [], m = [], b = []; - function finish(s) { - if (false !== o) m.push(COLLATE_LO); - if (false !== u) b.push(COLLATE_HI); - _ = g.slice(s); - } - for (var E = 0, w = g.length; E < w; E++) { - var S = s[g[E]]; - if (!S || !Object.keys(S).length) { - finish(E); - break; - } else if (Object.keys(S).some(isNonLogicalMatcher)) { - finish(E); - break; - } else if (E > 0) { - var L = "$gt" in S || "$gte" in S || "$lt" in S || "$lte" in S, O = Object.keys(s[g[E - 1]]), D = arrayEquals(O, [ "$eq" ]), k = arrayEquals(O, Object.keys(S)); - if (L && !D && !k) { - finish(E); - break; - } - } - for (var C = Object.keys(S), T = null, I = 0; I < C.length; I++) { - var A = C[I], R = getMultiFieldCoreQueryPlan(A, S[A]); - if (T) T = mergeObjects([ T, R ]); else T = R; - } - m.push("startkey" in T ? T.startkey : COLLATE_LO); - b.push("endkey" in T ? T.endkey : COLLATE_HI); - if ("inclusive_start" in T) o = T.inclusive_start; - if ("inclusive_end" in T) u = T.inclusive_end; - } - var x = { - startkey: m, - endkey: b - }; - if ("undefined" != typeof o) x.inclusive_start = o; - if ("undefined" != typeof u) x.inclusive_end = u; - return { - queryOpts: x, - inMemoryFields: _ - }; -} - -function shouldShortCircuit(s) { - return Object.keys(s).map((function(r) { - return s[r]; - })).some((function(s) { - return "object" == typeof s && 0 === Object.keys(s).length; - })); -} - -function getDefaultQueryPlan(s) { - return { - queryOpts: { - startkey: null - }, - inMemoryFields: [ Object.keys(s) ] - }; -} - -function getCoreQueryPlan(s, r) { - if (r.defaultUsed) return getDefaultQueryPlan(s, r); - if (1 === r.def.fields.length) return getSingleFieldCoreQueryPlan(s, r); else return getMultiFieldQueryOpts(s, r); -} - -function planQuery(s, r) { - var o = s.selector, u = s.sort; - if (shouldShortCircuit(o)) return assign$2({}, SHORT_CIRCUIT_QUERY, { - index: r[0] - }); - var g = getUserFields(o, u), _ = g.fields, m = findBestMatchingIndex(o, _, g.sortOrder, r, s.use_index), b = getCoreQueryPlan(o, m); - return { - queryOpts: b.queryOpts, - index: m, - inMemoryFields: getInMemoryFields(b.inMemoryFields, m, o, _) - }; -} - -function indexToSignature(s) { - return s.ddoc.substring(8) + "/" + s.name; -} - -function doAllDocs(s, r) { - var o = clone(r); - if (o.descending) { - if ("endkey" in o && "string" != typeof o.endkey) o.endkey = ""; - if ("startkey" in o && "string" != typeof o.startkey) o.limit = 0; - } else { - if ("startkey" in o && "string" != typeof o.startkey) o.startkey = ""; - if ("endkey" in o && "string" != typeof o.endkey) o.limit = 0; - } - if ("key" in o && "string" != typeof o.key) o.limit = 0; - if (o.limit > 0 && o.indexes_count) { - o.original_limit = o.limit; - o.limit += o.indexes_count; - } - return s.allDocs(o).then((function(s) { - s.rows = s.rows.filter((function(s) { - return !/^_design\//.test(s.id); - })); - if (o.original_limit) o.limit = o.original_limit; - s.rows = s.rows.slice(0, o.limit); - return s; - })); -} - -function find$1(s, r, o) { - if (r.selector) { - validateSelector(r.selector, false); - r.selector = massageSelector(r.selector); - } - if (r.sort) r.sort = massageSort(r.sort); - if (r.use_index) r.use_index = massageUseIndex(r.use_index); - validateFindRequest(r); - return getIndexes$1(s).then((function(u) { - s.constructor.emit("debug", [ "find", "planning query", r ]); - var g = planQuery(r, u.indexes); - s.constructor.emit("debug", [ "find", "query plan", g ]); - var _ = g.index; - validateSort(r, _); - var m = assign$2({ - include_docs: true, - reduce: false, - indexes_count: u.total_rows - }, g.queryOpts); - if ("startkey" in m && "endkey" in m && collate(m.startkey, m.endkey) > 0) return { - docs: [] - }; - if (r.sort && "string" != typeof r.sort[0] && "desc" === getValue(r.sort[0])) { - m.descending = true; - m = reverseOptions(m); - } - if (!g.inMemoryFields.length) { - if ("limit" in r) m.limit = r.limit; - if ("skip" in r) m.skip = r.skip; - } - if (o) return Promise.resolve(g, m); else return Promise.resolve().then((function() { - if ("_all_docs" === _.name) return doAllDocs(s, m); else { - var r = indexToSignature(_); - return abstractMapper$1(s).query.call(s, r, m); - } - })).then((function(s) { - if (false === m.inclusive_start) s.rows = filterInclusiveStart(s.rows, m.startkey, _); - if (g.inMemoryFields.length) s.rows = filterInMemoryFields(s.rows, r, g.inMemoryFields); - var o = { - docs: s.rows.map((function(s) { - var o = s.doc; - if (r.fields) return pick2(o, r.fields); else return o; - })) - }; - if (_.defaultUsed) o.warning = "No matching index found, create an index to optimize query time."; - return o; - })); - })); -} - -function explain$1(s, r) { - return find$1(s, r, true).then((function(o) { - return { - dbname: s.name, - index: o.index, - selector: r.selector, - range: { - start_key: o.queryOpts.startkey, - end_key: o.queryOpts.endkey - }, - opts: { - use_index: r.use_index || [], - bookmark: "nil", - limit: r.limit, - skip: r.skip, - sort: r.sort || {}, - fields: r.fields, - conflicts: false, - r: [ 49 ] - }, - limit: r.limit, - skip: r.skip || 0, - fields: r.fields - }; - })); -} - -function deleteIndex$1(s, r) { - if (!r.ddoc) throw new Error("you must supply an index.ddoc when deleting"); - if (!r.name) throw new Error("you must supply an index.name when deleting"); - var o = r.ddoc, u = r.name; - return upsert(s, o, (function deltaFun(s) { - if (1 === Object.keys(s.views).length && s.views[u]) return { - _id: o, - _deleted: true - }; - delete s.views[u]; - return s; - })).then((function() { - return abstractMapper$1(s).viewCleanup.apply(s); - })).then((function() { - return { - ok: true - }; - })); -} - -var createIndexAsCallback = callbackify2(createIndex$1), findAsCallback = callbackify2(find$1), explainAsCallback = callbackify2(explain$1), getIndexesAsCallback = callbackify2(getIndexes$1), deleteIndexAsCallback = callbackify2(deleteIndex$1), plugin = {}; - -plugin.createIndex = toPromise((function(s, r) { - if ("object" != typeof s) return r(new Error("you must provide an index to create")); - (isRemote(this) ? createIndex : createIndexAsCallback)(this, s, r); -})); - -plugin.find = toPromise((function(s, r) { - if ("undefined" == typeof r) { - r = s; - s = void 0; - } - if ("object" != typeof s) return r(new Error("you must provide search parameters to find()")); - (isRemote(this) ? find : findAsCallback)(this, s, r); -})); - -plugin.explain = toPromise((function(s, r) { - if ("undefined" == typeof r) { - r = s; - s = void 0; - } - if ("object" != typeof s) return r(new Error("you must provide search parameters to explain()")); - (isRemote(this) ? explain : explainAsCallback)(this, s, r); -})); - -plugin.getIndexes = toPromise((function(s) { - (isRemote(this) ? getIndexes : getIndexesAsCallback)(this, s); -})); - -plugin.deleteIndex = toPromise((function(s, r) { - if ("object" != typeof s) return r(new Error("you must provide an index to delete")); - (isRemote(this) ? deleteIndex : deleteIndexAsCallback)(this, s, r); -})); - -var index_browser_es_default3 = plugin, import_transform_pouch = __toESM(require_transform_pouch(), 1); - -index_es_default.plugin(index_es_default2).plugin(index_es_default3).plugin(index_es_default4).plugin(index_browser_es_default2).plugin(index_es_default8).plugin(index_browser_es_default3).plugin(import_transform_pouch.default); - -function appendPurgeSeqs(s, r) { - return s.get("_local/purges").then((function(o) { - for (const [u, g] of r) { - const r = o.purgeSeq + 1; - o.purges.push({ - docId: u, - rev: g, - purgeSeq: r - }); - if (o.purges.length > s.purged_infos_limit) o.purges.splice(0, o.purges.length - s.purged_infos_limit); - o.purgeSeq = r; - } - return o; - })).catch((function(s) { - if (404 !== s.status) throw s; - return { - _id: "_local/purges", - purges: r.map((([s, r], o) => ({ - docId: s, - rev: r, - purgeSeq: o - }))), - purgeSeq: r.length - }; - })).then((function(r) { - return s.put(r); - })); -} - -index_es_default.prototype.purgeMulti = adapterFun("_purgeMulti", (function(s, r) { - if ("undefined" == typeof this._purge) return r(createError(UNKNOWN_ERROR, "Purge is not implemented in the " + this.adapter + " adapter.")); - const o = this, u = s.map((s => () => new Promise(((r, u) => { - const [g, _] = s; - o._getRevisionTree(g, ((u, m) => { - if (u) return r([ s, u ]); - if (!m) return r([ s, createError(MISSING_DOC) ]); - let b; - try { - b = findPathToLeaf(m, _); - } catch (o) { - return r([ s, o.message || o ]); - } - o._purge(g, b, ((o, u) => { - if (o) return r([ s, o ]); else return r([ s, u ]); - })); - })); - })))); - (async () => { - const s = (await mapAllTasksWithConcurrencyLimit(1, u)).map((s => unwrapTaskResult(s))); - await appendPurgeSeqs(o, s.filter((s => "ok" in s[1])).map((s => s[0]))); - return Object.fromEntries(s.map((s => [ s[0][0], s[1] ]))); - })().then((s => r(void 0, s))).catch((s => r(s))); -})); - -var import_diff_match_patch2 = __toESM(require_diff_match_patch(), 1), ConflictResolveModal = class extends import_obsidian.Modal { - constructor(s, r, o) { - super(s); - this.response = CANCELLED; - this.isClosed = false; - this.consumed = false; - this.result = o; - this.filename = r; - sendValue("cancel-resolve-conflict:" + this.filename, true); - } - onOpen() { - const {contentEl: s} = this; - sendValue("cancel-resolve-conflict:" + this.filename, true); - setTimeout((async () => { - if (await waitForValue("cancel-resolve-conflict:" + this.filename)) this.sendResponse(CANCELLED); - }), 10); - this.titleEl.setText("Conflicting changes"); - s.empty(); - s.createEl("span", { - text: this.filename - }); - const r = s.createDiv(""); - r.addClass("op-scrollable"); - let o = ""; - for (const s of this.result.diff) { - const r = s[0], u = s[1]; - if (r == import_diff_match_patch2.DIFF_DELETE) o += "" + escapeStringToHTML(u).replace(/\n/g, "\n") + ""; else if (r == import_diff_match_patch2.DIFF_EQUAL) o += "" + escapeStringToHTML(u).replace(/\n/g, "\n") + ""; else if (r == import_diff_match_patch2.DIFF_INSERT) o += "" + escapeStringToHTML(u).replace(/\n/g, "\n") + ""; - } - o = o.replace(/\n/g, "
    "); - r.innerHTML = o; - const u = s.createDiv(""), g = new Date(this.result.left.mtime).toLocaleString() + (this.result.left.deleted ? " (Deleted)" : ""), _ = new Date(this.result.right.mtime).toLocaleString() + (this.result.right.deleted ? " (Deleted)" : ""); - u.innerHTML = `\nA:${g}
    B:${_}
    \n `; - s.createEl("button", { - text: "Keep A" - }, (s => s.addEventListener("click", (() => this.sendResponse(this.result.right.rev))))); - s.createEl("button", { - text: "Keep B" - }, (s => s.addEventListener("click", (() => this.sendResponse(this.result.left.rev))))); - s.createEl("button", { - text: "Concat both" - }, (s => s.addEventListener("click", (() => this.sendResponse(LEAVE_TO_SUBSEQUENT))))); - s.createEl("button", { - text: "Not now" - }, (s => s.addEventListener("click", (() => this.sendResponse(CANCELLED))))); - } - sendResponse(s) { - this.response = s; - this.close(); - } - onClose() { - const {contentEl: s} = this; - s.empty(); - if (!this.consumed) { - this.consumed = true; - sendValue("close-resolve-conflict:" + this.filename, this.response); - sendValue("cancel-resolve-conflict:" + this.filename, false); - } - } - async waitForResult() { - await delay(100); - const s = await waitForValue("close-resolve-conflict:" + this.filename); - if (s === RESULT_TIMED_OUT) return CANCELLED; else return s; - } -}, import_obsidian4 = require("obsidian"); - -function noop() {} - -function assign(s, r) { - for (const o in r) s[o] = r[o]; - return s; -} - -function run(s) { - return s(); -} - -function blank_object() { - return Object.create(null); -} - -function run_all(s) { - s.forEach(run); -} - -function is_function(s) { - return "function" == typeof s; -} - -function safe_not_equal(s, r) { - return s != s ? r == r : s !== r || s && "object" == typeof s || "function" == typeof s; -} - -function is_empty(s) { - return 0 === Object.keys(s).length; -} - -function null_to_empty(s) { - return null == s ? "" : s; -} - -var globals = "undefined" != typeof window ? window : "undefined" != typeof globalThis ? globalThis : window, ResizeObserverSingleton = class _ResizeObserverSingleton { - constructor(s) { - __publicField(this, "_listeners", "WeakMap" in globals ? new WeakMap : void 0); - __publicField(this, "_observer"); - __publicField(this, "options"); - this.options = s; - } - observe(s, r) { - this._listeners.set(s, r); - this._getObserver().observe(s, this.options); - return () => { - this._listeners.delete(s); - this._observer.unobserve(s); - }; - } - _getObserver() { - var s; - return null != (s = this._observer) ? s : this._observer = new ResizeObserver((s => { - var r; - for (const o of s) { - _ResizeObserverSingleton.entries.set(o.target, o); - null == (r = this._listeners.get(o.target)) || r(o); - } - })); - } -}; - -ResizeObserverSingleton.entries = "WeakMap" in globals ? new WeakMap : void 0; - -var current_component, is_hydrating = false; - -function start_hydrating() { - is_hydrating = true; -} - -function end_hydrating() { - is_hydrating = false; -} - -function append(s, r) { - s.appendChild(r); -} - -function append_styles(s, r, o) { - const u = get_root_for_style(s); - if (!u.getElementById(r)) { - const s = element("style"); - s.id = r; - s.textContent = o; - append_stylesheet(u, s); - } -} - -function get_root_for_style(s) { - if (!s) return document; - const r = s.getRootNode ? s.getRootNode() : s.ownerDocument; - if (r && r.host) return r; else return s.ownerDocument; -} - -function append_stylesheet(s, r) { - append(s.head || s, r); - return r.sheet; -} - -function insert(s, r, o) { - s.insertBefore(r, o || null); -} - -function detach(s) { - if (s.parentNode) s.parentNode.removeChild(s); -} - -function destroy_each(s, r) { - for (let o = 0; o < s.length; o += 1) if (s[o]) s[o].d(r); -} - -function element(s) { - return document.createElement(s); -} - -function text(s) { - return document.createTextNode(s); -} - -function space() { - return text(" "); -} - -function empty() { - return text(""); -} - -function comment(s) { - return document.createComment(s); -} - -function listen(s, r, o, u) { - s.addEventListener(r, o, u); - return () => s.removeEventListener(r, o, u); -} - -function attr(s, r, o) { - if (null == o) s.removeAttribute(r); else if (s.getAttribute(r) !== o) s.setAttribute(r, o); -} - -function init_binding_group(s) { - let r; - return { - p(...o) { - r = o; - r.forEach((r => s.push(r))); - }, - r() { - r.forEach((r => s.splice(s.indexOf(r), 1))); - } - }; -} - -function children(s) { - return Array.from(s.childNodes); -} - -function set_data(s, r) { - r = "" + r; - if (s.data !== r) s.data = r; -} - -function set_input_value(s, r) { - s.value = null == r ? "" : r; -} - -function select_option(s, r, o) { - for (let o = 0; o < s.options.length; o += 1) { - const u = s.options[o]; - if (u.__value === r) { - u.selected = true; - return; - } - } - if (!o || void 0 !== r) s.selectedIndex = -1; -} - -function select_value(s) { - const r = s.querySelector(":checked"); - return r && r.__value; -} - -function toggle_class(s, r, o) { - s.classList.toggle(r, !!o); -} - -function get_custom_elements_slots(s) { - const r = {}; - s.childNodes.forEach((s => { - r[s.slot || "default"] = true; - })); - return r; -} - -function set_current_component(s) { - current_component = s; -} - -function get_current_component() { - if (!current_component) throw new Error("Function called outside component initialization"); - return current_component; -} - -function onMount(s) { - get_current_component().$$.on_mount.push(s); -} - -function onDestroy(s) { - get_current_component().$$.on_destroy.push(s); -} - -var dirty_components = [], binding_callbacks = [], render_callbacks = [], flush_callbacks = [], resolved_promise = Promise.resolve(), update_scheduled = false; - -function schedule_update() { - if (!update_scheduled) { - update_scheduled = true; - resolved_promise.then(flush); - } -} - -function add_render_callback(s) { - render_callbacks.push(s); -} - -var seen_callbacks = new Set, flushidx = 0; - -function flush() { - if (0 !== flushidx) return; - const s = current_component; - do { - try { - for (;flushidx < dirty_components.length; ) { - const s = dirty_components[flushidx]; - flushidx++; - set_current_component(s); - update(s.$$); - } - } catch (s) { - dirty_components.length = 0; - flushidx = 0; - throw s; - } - set_current_component(null); - dirty_components.length = 0; - flushidx = 0; - for (;binding_callbacks.length; ) binding_callbacks.pop()(); - for (let s = 0; s < render_callbacks.length; s += 1) { - const r = render_callbacks[s]; - if (!seen_callbacks.has(r)) { - seen_callbacks.add(r); - r(); - } - } - render_callbacks.length = 0; - } while (dirty_components.length); - for (;flush_callbacks.length; ) flush_callbacks.pop()(); - update_scheduled = false; - seen_callbacks.clear(); - set_current_component(s); -} - -function update(s) { - if (null !== s.fragment) { - s.update(); - run_all(s.before_update); - const r = s.dirty; - s.dirty = [ -1 ]; - s.fragment && s.fragment.p(s.ctx, r); - s.after_update.forEach(add_render_callback); - } -} - -function flush_render_callbacks(s) { - const r = [], o = []; - render_callbacks.forEach((u => -1 === s.indexOf(u) ? r.push(u) : o.push(u))); - o.forEach((s => s())); - render_callbacks = r; -} - -var outros, outroing = new Set; - -function group_outros() { - outros = { - r: 0, - c: [], - p: outros - }; -} - -function check_outros() { - if (!outros.r) run_all(outros.c); - outros = outros.p; -} - -function transition_in(s, r) { - if (s && s.i) { - outroing.delete(s); - s.i(r); - } -} - -function transition_out(s, r, o, u) { - if (s && s.o) { - if (outroing.has(s)) return; - outroing.add(s); - outros.c.push((() => { - outroing.delete(s); - if (u) { - if (o) s.d(1); - u(); - } - })); - s.o(r); - } else if (u) u(); -} - -function ensure_array_like(s) { - return void 0 !== (null == s ? void 0 : s.length) ? s : Array.from(s); -} - -function get_spread_update(s, r) { - const o = {}, u = {}, g = { - $$scope: 1 - }; - let _ = s.length; - for (;_--; ) { - const m = s[_], b = r[_]; - if (b) { - for (const s in m) if (!(s in b)) u[s] = 1; - for (const s in b) if (!g[s]) { - o[s] = b[s]; - g[s] = 1; - } - s[_] = b; - } else for (const s in m) g[s] = 1; - } - for (const s in u) if (!(s in o)) o[s] = void 0; - return o; -} - -function get_spread_object(s) { - return "object" == typeof s && null !== s ? s : {}; -} - -var SvelteElement, _boolean_attributes = [ "allowfullscreen", "allowpaymentrequest", "async", "autofocus", "autoplay", "checked", "controls", "default", "defer", "disabled", "formnovalidate", "hidden", "inert", "ismap", "loop", "multiple", "muted", "nomodule", "novalidate", "open", "playsinline", "readonly", "required", "reversed", "selected" ], boolean_attributes = new Set([ ..._boolean_attributes ]); - -function create_component(s) { - s && s.c(); -} - -function mount_component(s, r, o) { - const {fragment: u, after_update: g} = s.$$; - u && u.m(r, o); - add_render_callback((() => { - const r = s.$$.on_mount.map(run).filter(is_function); - if (s.$$.on_destroy) s.$$.on_destroy.push(...r); else run_all(r); - s.$$.on_mount = []; - })); - g.forEach(add_render_callback); -} - -function destroy_component(s, r) { - const o = s.$$; - if (null !== o.fragment) { - flush_render_callbacks(o.after_update); - run_all(o.on_destroy); - o.fragment && o.fragment.d(r); - o.on_destroy = o.fragment = null; - o.ctx = []; - } -} - -function make_dirty(s, r) { - if (-1 === s.$$.dirty[0]) { - dirty_components.push(s); - schedule_update(); - s.$$.dirty.fill(0); - } - s.$$.dirty[r / 31 | 0] |= 1 << r % 31; -} - -function init2(s, r, o, u, g, _, m = null, b = [ -1 ]) { - const E = current_component; - set_current_component(s); - const w = s.$$ = { - fragment: null, - ctx: [], - props: _, - update: noop, - not_equal: g, - bound: blank_object(), - on_mount: [], - on_destroy: [], - on_disconnect: [], - before_update: [], - after_update: [], - context: new Map(r.context || (E ? E.$$.context : [])), - callbacks: blank_object(), - dirty: b, - skip_bound: false, - root: r.target || E.$$.root - }; - m && m(w.root); - let S = false; - w.ctx = o ? o(s, r.props || {}, ((r, o, ...u) => { - const _ = u.length ? u[0] : o; - if (w.ctx && g(w.ctx[r], w.ctx[r] = _)) { - if (!w.skip_bound && w.bound[r]) w.bound[r](_); - if (S) make_dirty(s, r); - } - return o; - })) : []; - w.update(); - S = true; - run_all(w.before_update); - w.fragment = u ? u(w.ctx) : false; - if (r.target) { - if (r.hydrate) { - start_hydrating(); - const s = children(r.target); - w.fragment && w.fragment.l(s); - s.forEach(detach); - } else w.fragment && w.fragment.c(); - if (r.intro) transition_in(s.$$.fragment); - mount_component(s, r.target, r.anchor); - end_hydrating(); - flush(); - } - set_current_component(E); -} - -if ("function" == typeof HTMLElement) SvelteElement = class extends HTMLElement { - constructor(s, r, o) { - super(); - __publicField(this, "$$ctor"); - __publicField(this, "$$s"); - __publicField(this, "$$c"); - __publicField(this, "$$cn", false); - __publicField(this, "$$d", {}); - __publicField(this, "$$r", false); - __publicField(this, "$$p_d", {}); - __publicField(this, "$$l", {}); - __publicField(this, "$$l_u", new Map); - this.$$ctor = s; - this.$$s = r; - if (o) this.attachShadow({ - mode: "open" - }); - } - addEventListener(s, r, o) { - this.$$l[s] = this.$$l[s] || []; - this.$$l[s].push(r); - if (this.$$c) { - const o = this.$$c.$on(s, r); - this.$$l_u.set(r, o); - } - super.addEventListener(s, r, o); - } - removeEventListener(s, r, o) { - super.removeEventListener(s, r, o); - if (this.$$c) { - const s = this.$$l_u.get(r); - if (s) { - s(); - this.$$l_u.delete(r); - } - } - } - async connectedCallback() { - this.$$cn = true; - if (!this.$$c) { - let create_slot = function(s) { - return () => { - let r; - return { - c: function create() { - r = element("slot"); - if ("default" !== s) attr(r, "name", s); - }, - m: function mount(s, o) { - insert(s, r, o); - }, - d: function destroy2(s) { - if (s) detach(r); - } - }; - }; - }; - await Promise.resolve(); - if (!this.$$cn || this.$$c) return; - const s = {}, r = get_custom_elements_slots(this); - for (const o of this.$$s) if (o in r) s[o] = [ create_slot(o) ]; - for (const s of this.attributes) { - const r = this.$$g_p(s.name); - if (!(r in this.$$d)) this.$$d[r] = get_custom_element_value(r, s.value, this.$$p_d, "toProp"); - } - for (const s in this.$$p_d) if (!(s in this.$$d) && void 0 !== this[s]) { - this.$$d[s] = this[s]; - delete this[s]; - } - this.$$c = new this.$$ctor({ - target: this.shadowRoot || this, - props: { - ...this.$$d, - $$slots: s, - $$scope: { - ctx: [] - } - } - }); - const reflect_attributes = () => { - this.$$r = true; - for (const s in this.$$p_d) { - this.$$d[s] = this.$$c.$$.ctx[this.$$c.$$.props[s]]; - if (this.$$p_d[s].reflect) { - const r = get_custom_element_value(s, this.$$d[s], this.$$p_d, "toAttribute"); - if (null == r) this.removeAttribute(this.$$p_d[s].attribute || s); else this.setAttribute(this.$$p_d[s].attribute || s, r); - } - } - this.$$r = false; - }; - this.$$c.$$.after_update.push(reflect_attributes); - reflect_attributes(); - for (const s in this.$$l) for (const r of this.$$l[s]) { - const o = this.$$c.$on(s, r); - this.$$l_u.set(r, o); - } - this.$$l = {}; - } - } - attributeChangedCallback(s, r, o) { - var u; - if (!this.$$r) { - s = this.$$g_p(s); - this.$$d[s] = get_custom_element_value(s, o, this.$$p_d, "toProp"); - null == (u = this.$$c) || u.$set({ - [s]: this.$$d[s] - }); - } - } - disconnectedCallback() { - this.$$cn = false; - Promise.resolve().then((() => { - if (!this.$$cn) { - this.$$c.$destroy(); - this.$$c = void 0; - } - })); - } - $$g_p(s) { - return Object.keys(this.$$p_d).find((r => this.$$p_d[r].attribute === s || !this.$$p_d[r].attribute && r.toLowerCase() === s)) || s; - } -}; - -function get_custom_element_value(s, r, o, u) { - var g; - const _ = null == (g = o[s]) ? void 0 : g.type; - r = "Boolean" === _ && "boolean" != typeof r ? null != r : r; - if (!u || !o[s]) return r; else if ("toAttribute" === u) switch (_) { - case "Object": - case "Array": - return null == r ? null : JSON.stringify(r); - - case "Boolean": - return r ? "" : null; - - case "Number": - return null == r ? null : r; - - default: - return r; - } else switch (_) { - case "Object": - case "Array": - return r && JSON.parse(r); - - case "Boolean": - return r; - - case "Number": - return null != r ? +r : r; - - default: - return r; - } -} - -var SvelteComponent = class { - constructor() { - __publicField(this, "$$"); - __publicField(this, "$$set"); - } - $destroy() { - destroy_component(this, 1); - this.$destroy = noop; - } - $on(s, r) { - if (!is_function(r)) return noop; - const o = this.$$.callbacks[s] || (this.$$.callbacks[s] = []); - o.push(r); - return () => { - const s = o.indexOf(r); - if (-1 !== s) o.splice(s, 1); - }; - } - $set(s) { - if (this.$$set && !is_empty(s)) { - this.$$.skip_bound = true; - this.$$set(s); - this.$$.skip_bound = false; - } - } -}, PUBLIC_VERSION = "4"; - -if ("undefined" != typeof window) (window.__svelte || (window.__svelte = { - v: new Set -})).v.add(PUBLIC_VERSION); - -var subscriber_queue = []; - -function writable(s, r = noop) { - let o; - const u = new Set; - function set(r) { - if (safe_not_equal(s, r)) { - s = r; - if (o) { - const r = !subscriber_queue.length; - for (const r of u) { - r[1](); - subscriber_queue.push(r, s); - } - if (r) { - for (let s = 0; s < subscriber_queue.length; s += 2) subscriber_queue[s][0](subscriber_queue[s + 1]); - subscriber_queue.length = 0; - } - } - } - } - function update2(r) { - set(r(s)); - } - return { - set, - update: update2, - subscribe: function subscribe2(g, _ = noop) { - const m = [ g, _ ]; - u.add(m); - if (1 === u.size) o = r(set, update2) || noop; - g(s); - return () => { - u.delete(m); - if (0 === u.size && o) { - o(); - o = null; - } - }; - } - }; -} - -var LiveSyncCommands = class { - get app() { - return this.plugin.app; - } - get settings() { - return this.plugin.settings; - } - get localDatabase() { - return this.plugin.localDatabase; - } - get vaultAccess() { - return this.plugin.vaultAccess; - } - id2path(s, r, o) { - return this.plugin.id2path(s, r, o); - } - async path2id(s, r) { - return await this.plugin.path2id(s, r); - } - getPath(s) { - return this.plugin.getPath(s); - } - constructor(s) { - this.plugin = s; - } -}; - -function add_css(s) { - append_styles(s, "svelte-guf68w", ".deleted.svelte-guf68w{text-decoration:line-through}.svelte-guf68w{box-sizing:border-box}.scroller.svelte-guf68w{display:flex;flex-direction:column;overflow-y:scroll;max-height:60vh;user-select:text}.json-source.svelte-guf68w{white-space:pre;height:auto;overflow:auto;min-height:var(--font-ui-medium);flex-grow:1}"); -} - -function get_each_context(s, r, o) { - const u = s.slice(); - u[25] = r[o]; - return u; -} - -function get_each_context_1(s, r, o) { - const u = s.slice(); - u[28] = r[o]; - return u; -} - -function create_else_block(s) { - let r, o, u, g, _, m, b, E, w, S, L, O, D, k, C, T, I, A, R, x, P, N, B, F, M, V = new Date(s[3].mtime).toLocaleString() + "", G = s[5].length + "", j = new Date(s[4].mtime).toLocaleString() + "", q = s[6].length + "", U = ensure_array_like(s[11]), z = []; - for (let r = 0; r < U.length; r += 1) z[r] = create_each_block_1(get_each_context_1(s, U, r)); - function select_block_type_1(s, r) { - if (false != s[8]) return create_if_block_3; else return create_else_block_1; - } - let W = select_block_type_1(s), H = W(s), K = s[3]._id == s[4]._id && create_if_block_2(s), Q = s[3]._id == s[4]._id && create_if_block_1(s); - return { - c() { - r = element("div"); - for (let s = 0; s < z.length; s += 1) z[s].c(); - o = space(); - H.c(); - u = space(); - g = element("div"); - _ = text(s[1]); - m = space(); - if (K) K.c(); - b = text(" ,"); - E = text(V); - w = space(); - S = text(G); - L = text(" letters"); - O = space(); - D = element("div"); - k = text(s[2]); - C = space(); - if (Q) Q.c(); - T = text(" ,"); - I = text(j); - A = space(); - R = text(q); - x = text(" letters"); - P = space(); - N = element("div"); - B = element("button"); - B.textContent = "Apply"; - attr(r, "class", "options svelte-guf68w"); - attr(g, "class", "svelte-guf68w"); - attr(D, "class", "svelte-guf68w"); - attr(B, "class", "svelte-guf68w"); - attr(N, "class", "buttons svelte-guf68w"); - }, - m(V, G) { - insert(V, r, G); - for (let s = 0; s < z.length; s += 1) if (z[s]) z[s].m(r, null); - insert(V, o, G); - H.m(V, G); - insert(V, u, G); - insert(V, g, G); - append(g, _); - append(g, m); - if (K) K.m(g, null); - append(g, b); - append(g, E); - append(g, w); - append(g, S); - append(g, L); - insert(V, O, G); - insert(V, D, G); - append(D, k); - append(D, C); - if (Q) Q.m(D, null); - append(D, T); - append(D, I); - append(D, A); - append(D, R); - append(D, x); - insert(V, P, G); - insert(V, N, G); - append(N, B); - if (!F) { - M = listen(B, "click", s[12]); - F = true; - } - }, - p(s, o) { - if (2688 & o) { - U = ensure_array_like(s[11]); - let u; - for (u = 0; u < U.length; u += 1) { - const g = get_each_context_1(s, U, u); - if (z[u]) z[u].p(g, o); else { - z[u] = create_each_block_1(g); - z[u].c(); - z[u].m(r, null); - } - } - for (;u < z.length; u += 1) z[u].d(1); - z.length = U.length; - } - if (W === (W = select_block_type_1(s)) && H) H.p(s, o); else { - H.d(1); - H = W(s); - if (H) { - H.c(); - H.m(u.parentNode, u); - } - } - if (2 & o) set_data(_, s[1]); - if (s[3]._id == s[4]._id) if (K) K.p(s, o); else { - K = create_if_block_2(s); - K.c(); - K.m(g, b); - } else if (K) { - K.d(1); - K = null; - } - if (8 & o && V !== (V = new Date(s[3].mtime).toLocaleString() + "")) set_data(E, V); - if (32 & o && G !== (G = s[5].length + "")) set_data(S, G); - if (4 & o) set_data(k, s[2]); - if (s[3]._id == s[4]._id) if (Q) Q.p(s, o); else { - Q = create_if_block_1(s); - Q.c(); - Q.m(D, T); - } else if (Q) { - Q.d(1); - Q = null; - } - if (16 & o && j !== (j = new Date(s[4].mtime).toLocaleString() + "")) set_data(I, j); - if (64 & o && q !== (q = s[6].length + "")) set_data(R, q); - }, - d(s) { - if (s) { - detach(r); - detach(o); - detach(u); - detach(g); - detach(O); - detach(D); - detach(P); - detach(N); - } - destroy_each(z, s); - H.d(s); - if (K) K.d(); - if (Q) Q.d(); - F = false; - M(); - } - }; -} - -function create_if_block(s) { - let r, o, u, g, _, m; - return { - c() { - r = element("div"); - r.textContent = "Just for a minute, please!"; - o = space(); - u = element("div"); - g = element("button"); - g.textContent = "Dismiss"; - attr(r, "class", "message svelte-guf68w"); - attr(g, "class", "svelte-guf68w"); - attr(u, "class", "buttons svelte-guf68w"); - }, - m(b, E) { - insert(b, r, E); - insert(b, o, E); - insert(b, u, E); - append(u, g); - if (!_) { - m = listen(g, "click", s[12]); - _ = true; - } - }, - p: noop, - d(s) { - if (s) { - detach(r); - detach(o); - detach(u); - } - _ = false; - m(); - } - }; -} - -function create_if_block_4(s) { - let r, o, u, g, _, m, b, E, w, S, L = false, O = s[28][1] + ""; - E = init_binding_group(s[21][0]); - return { - c() { - r = element("label"); - o = element("input"); - g = space(); - _ = element("div"); - m = text(O); - attr(o, "type", "radio"); - attr(o, "name", "disp"); - o.__value = u = s[28][0]; - set_input_value(o, o.__value); - attr(o, "class", "sls-setting-tab svelte-guf68w"); - attr(_, "class", "sls-setting-menu-btn svelte-guf68w"); - attr(r, "class", b = null_to_empty("sls-setting-label " + (s[28][0] == s[7] ? "selected" : "")) + " svelte-guf68w"); - E.p(o); - }, - m(u, b) { - insert(u, r, b); - append(r, o); - o.checked = o.__value === s[7]; - append(r, g); - append(r, _); - append(_, m); - if (!w) { - S = listen(o, "change", s[20]); - w = true; - } - }, - p(s, g) { - if (2048 & g && u !== (u = s[28][0])) { - o.__value = u; - set_input_value(o, o.__value); - L = true; - } - if (L || 2176 & g) o.checked = o.__value === s[7]; - if (2048 & g && O !== (O = s[28][1] + "")) set_data(m, O); - if (2176 & g && b !== (b = null_to_empty("sls-setting-label " + (s[28][0] == s[7] ? "selected" : "")) + " svelte-guf68w")) attr(r, "class", b); - }, - d(s) { - if (s) detach(r); - E.r(); - w = false; - S(); - } - }; -} - -function create_each_block_1(s) { - let r, o = ("" == s[28][0] || false != s[9][s[28][0]]) && create_if_block_4(s); - return { - c() { - if (o) o.c(); - r = empty(); - }, - m(s, u) { - if (o) o.m(s, u); - insert(s, r, u); - }, - p(s, u) { - if ("" == s[28][0] || false != s[9][s[28][0]]) if (o) o.p(s, u); else { - o = create_if_block_4(s); - o.c(); - o.m(r.parentNode, r); - } else if (o) { - o.d(1); - o = null; - } - }, - d(s) { - if (s) detach(r); - if (o) o.d(s); - } - }; -} - -function create_else_block_1(s) { - let r; - return { - c() { - r = text("NO PREVIEW"); - }, - m(s, o) { - insert(s, r, o); - }, - p: noop, - d(s) { - if (s) detach(r); - } - }; -} - -function create_if_block_3(s) { - let r, o = ensure_array_like(s[10]), u = []; - for (let r = 0; r < o.length; r += 1) u[r] = create_each_block(get_each_context(s, o, r)); - return { - c() { - r = element("div"); - for (let s = 0; s < u.length; s += 1) u[s].c(); - attr(r, "class", "op-scrollable json-source svelte-guf68w"); - }, - m(s, o) { - insert(s, r, o); - for (let s = 0; s < u.length; s += 1) if (u[s]) u[s].m(r, null); - }, - p(s, g) { - if (1024 & g) { - o = ensure_array_like(s[10]); - let _; - for (_ = 0; _ < o.length; _ += 1) { - const m = get_each_context(s, o, _); - if (u[_]) u[_].p(m, g); else { - u[_] = create_each_block(m); - u[_].c(); - u[_].m(r, null); - } - } - for (;_ < u.length; _ += 1) u[_].d(1); - u.length = o.length; - } - }, - d(s) { - if (s) detach(r); - destroy_each(u, s); - } - }; -} - -function create_each_block(s) { - let r, o, u, g = s[25][1] + ""; - return { - c() { - r = element("span"); - o = text(g); - attr(r, "class", u = null_to_empty(s[25][0] == import_diff_match_patch.DIFF_DELETE ? "deleted" : s[25][0] == import_diff_match_patch.DIFF_INSERT ? "added" : "normal") + " svelte-guf68w"); - }, - m(s, u) { - insert(s, r, u); - append(r, o); - }, - p(s, _) { - if (1024 & _ && g !== (g = s[25][1] + "")) set_data(o, g); - if (1024 & _ && u !== (u = null_to_empty(s[25][0] == import_diff_match_patch.DIFF_DELETE ? "deleted" : s[25][0] == import_diff_match_patch.DIFF_INSERT ? "added" : "normal") + " svelte-guf68w")) attr(r, "class", u); - }, - d(s) { - if (s) detach(r); - } - }; -} - -function create_if_block_2(s) { - let r, o, u = revStringToRevNumber(s[3]._rev) + ""; - return { - c() { - r = text("Rev:"); - o = text(u); - }, - m(s, u) { - insert(s, r, u); - insert(s, o, u); - }, - p(s, r) { - if (8 & r && u !== (u = revStringToRevNumber(s[3]._rev) + "")) set_data(o, u); - }, - d(s) { - if (s) { - detach(r); - detach(o); - } - } - }; -} - -function create_if_block_1(s) { - let r, o, u = revStringToRevNumber(s[4]._rev) + ""; - return { - c() { - r = text("Rev:"); - o = text(u); - }, - m(s, u) { - insert(s, r, u); - insert(s, o, u); - }, - p(s, r) { - if (16 & r && u !== (u = revStringToRevNumber(s[4]._rev) + "")) set_data(o, u); - }, - d(s) { - if (s) { - detach(r); - detach(o); - } - } - }; -} - -function create_fragment(s) { - let r, o, u, g; - function select_block_type(s, r) { - if (!s[3] || !s[4]) return create_if_block; else return create_else_block; - } - let _ = select_block_type(s), m = _(s); - return { - c() { - r = element("h2"); - o = text(s[0]); - u = space(); - m.c(); - g = empty(); - attr(r, "class", "svelte-guf68w"); - }, - m(s, _) { - insert(s, r, _); - append(r, o); - insert(s, u, _); - m.m(s, _); - insert(s, g, _); - }, - p(s, [r]) { - if (1 & r) set_data(o, s[0]); - if (_ === (_ = select_block_type(s)) && m) m.p(s, r); else { - m.d(1); - m = _(s); - if (m) { - m.c(); - m.m(g.parentNode, g); - } - } - }, - i: noop, - o: noop, - d(s) { - if (s) { - detach(r); - detach(u); - detach(g); - } - m.d(s); - } - }; -} - -function revStringToRevNumber(s) { - if (!s) return ""; else return s.split("-")[0]; -} - -function instance(s, r, o) { - let u, g, _, m, b, E, {docs: w = []} = r, {callback: S = (async (s, r) => { - Promise.resolve(); - })} = r, {filename: L = ""} = r, {nameA: O = "A"} = r, {nameB: D = "B"} = r, {defaultSelect: k = ""} = r, C = "", T = "", I = {}, A = {}, R = {}, x = {}, P = k; - function docToString(s) { - return "plain" == s.datatype ? getDocData(s.data) : readString(new Uint8Array(decodeBinary(s.data))); - } - s.$$set = s => { - if ("docs" in s) o(13, w = s.docs); - if ("callback" in s) o(14, S = s.callback); - if ("filename" in s) o(0, L = s.filename); - if ("nameA" in s) o(1, O = s.nameA); - if ("nameB" in s) o(2, D = s.nameB); - if ("defaultSelect" in s) o(15, k = s.defaultSelect); - }; - s.$$.update = () => { - if (991352 & s.$$.dirty) if (w && w.length >= 1) { - if (w[0].mtime < w[1].mtime) { - o(3, m = w[0]); - o(4, b = w[1]); - } else { - o(3, m = w[1]); - o(4, b = w[0]); - } - o(5, C = docToString(m)); - o(6, T = docToString(b)); - try { - o(16, I = false); - o(17, A = false); - o(16, I = JSON.parse(C)); - o(17, A = JSON.parse(T)); - o(18, R = mergeObject(I, A)); - o(19, x = mergeObject(A, I)); - if (JSON.stringify(R) == JSON.stringify(x)) o(19, x = false); - } catch (s) { - o(19, x = false); - o(18, R = false); - } - } - if (983040 & s.$$.dirty) o(9, u = { - "": false, - A: I, - B: A, - AB: R, - BA: x - }); - if (640 & s.$$.dirty) o(8, g = P in u ? u[P] : {}); - if (65792 & s.$$.dirty) o(10, E = function getJsonDiff(s, r) { - return function getDiff(s, r) { - const o = new import_diff_match_patch.diff_match_patch, u = o.diff_linesToChars_(s, r), g = o.diff_main(u.chars1, u.chars2, false); - o.diff_charsToLines_(g, u.lineArray); - return g; - }(JSON.stringify(s, null, 2), JSON.stringify(r, null, 2)); - }(I, g)); - if (6 & s.$$.dirty) o(11, _ = [ [ "", "Not now" ], [ "A", O || "A" ], [ "B", D || "B" ], [ "AB", `${O || "A"} + ${D || "B"}` ], [ "BA", `${D || "B"} + ${O || "A"}` ] ]); - }; - return [ L, O, D, m, b, C, T, P, g, u, E, _, function apply() { - if (m._id == b._id) { - if ("A" == P) return S(m._rev, void 0); - if ("B" == P) return S(b._rev, void 0); - } else { - if ("A" == P) return S(void 0, docToString(m)); - if ("B" == P) return S(void 0, docToString(b)); - } - if ("BA" == P) return S(void 0, JSON.stringify(x, null, 2)); - if ("AB" == P) return S(void 0, JSON.stringify(R, null, 2)); - S(void 0, void 0); - }, w, S, k, I, A, R, x, function input_change_handler() { - P = this.__value; - o(7, P); - }, [ [] ] ]; -} - -var context, JsonResolvePane = class extends SvelteComponent { - constructor(s) { - super(); - init2(this, s, instance, create_fragment, safe_not_equal, { - docs: 13, - callback: 14, - filename: 0, - nameA: 1, - nameB: 2, - defaultSelect: 15 - }, add_css); - } -}, JsonResolvePane_default = JsonResolvePane, JsonResolveModal = class extends import_obsidian.Modal { - constructor(s, r, o, u, g, _, m) { - super(s); - this.callback = u; - this.filename = r; - this.docs = o; - this.nameA = g; - this.nameB = _; - this.defaultSelect = m; - waitForSignal(`cancel-internal-conflict:${r}`).then((() => this.close())); - } - async UICallback(s, r) { - this.close(); - await this.callback(s, r); - this.callback = null; - } - onOpen() { - const {contentEl: s} = this; - this.titleEl.setText("Conflicted Setting"); - s.empty(); - if (null == this.component) this.component = new JsonResolvePane_default({ - target: s, - props: { - docs: this.docs, - filename: this.filename, - nameA: this.nameA, - nameB: this.nameB, - defaultSelect: this.defaultSelect, - callback: (s, r) => this.UICallback(s, r) - } - }); - } - onClose() { - const {contentEl: s} = this; - s.empty(); - if (null != this.callback) this.callback(null); - if (null != this.component) { - this.component.$destroy(); - this.component = null; - } - } -}; - -function reactiveSource(s) { - return _reactive({ - initialValue: s - }); -} - -function reactive(s, r) { - return _reactive({ - expression: s, - initialValue: r - }); -} - -function _reactive({expression: s, initialValue: r}) { - let o, u = false; - const g = new Set, _ = { - depends: new Set, - evalCount: 0, - readCount: 0, - markDirty() { - u = true; - _.markDependedDirty(); - g.forEach((s => s(_))); - }, - markClean() { - u = false; - }, - markDependedDirty() { - _.depends.forEach((s => s.markDirty())); - }, - get value() { - if (context) _.depends.add(context); - if (!s) return o; - if (u) { - const r = o, u = s(); - if (isObjectDifferent(r, u)) { - o = u; - _.markClean(); - _.markDependedDirty(); - } - } - return o; - }, - set value(s) { - if (isObjectDifferent(o, s)) { - o = s; - _.markDirty(); - } - }, - onChanged(s) { - g.add(s); - }, - offChanged(s) { - g.delete(s); - } - }; - o = function initialize() { - const o = context; - context = _; - const u = s ? s(r) : r; - context = o; - return u; - }(); - return _; -} - -var lockStats = reactiveSource({ - pending: [], - running: [], - count: 0 -}), collectingChunks = reactiveSource(0), pluginScanningCount = reactiveSource(0), hiddenFilesProcessingCount = reactiveSource(0), hiddenFilesEventCount = reactiveSource(0), logStore = new QueueProcessor((s => s), { - batchSize: 1, - suspended: false, - keepResultUntilDownstreamConnected: true -}), logMessages = reactiveSource([]), d = "​", d2 = "\n"; - -function serialize(s) { - var r, o, u, g, _; - let m = ""; - m += ":"; - m += s.category + d + s.name + d + s.term + d2; - m += (null != (r = s.version) ? r : "") + d2; - m += s.mtime + d2; - for (const r of s.files) { - m += r.filename + d + (null != (o = r.displayName) ? o : "") + d + (null != (u = r.version) ? u : "") + d2; - const s = digestHash((null != (g = r.data) ? g : []).join()); - m += r.mtime + d + r.size + d + s + d2; - for (const s of null != (_ = r.data) ? _ : []) m += s + d; - m += d2; - } - return m; -} - -function fetchToken(s, r) { - const o = s.indexOf(d2, r), u = -1 == o ? s.length : o, g = s.indexOf(d, r), _ = -1 == g ? s.length : g, m = Math.min(u, _); - let b = m; - if (u < _) b = m; else b = m + 1; - return [ b, s.substring(r, m) ]; -} - -function getTokenizer(s) { - return { - pos: 1, - next() { - const [r, o] = fetchToken(s, this.pos); - this.pos = r; - return o; - }, - nextLine() { - const r = s.indexOf(d2, this.pos); - if (-1 == r) this.pos = s.length; else this.pos = r + 1; - } - }; -} - -function deserialize2(s) { - const r = getTokenizer(s), o = r.next(), u = r.next(), g = r.next(); - r.nextLine(); - const _ = r.next(); - r.nextLine(); - const m = Number(r.next()); - r.nextLine(); - const b = Object.assign({}, { - category: o, - name: u, - term: g, - version: _, - mtime: m, - files: [] - }); - let E = ""; - do { - E = r.next(); - if (!E) break; - const s = r.next(), o = r.next(); - r.nextLine(); - const u = Number(r.next()), g = Number(r.next()), _ = r.next(); - r.nextLine(); - const m = []; - let w = ""; - do { - w = r.next(); - if ("" == w) break; - m.push(w); - } while ("" != w); - b.files.push({ - filename: E, - displayName: s, - version: o, - mtime: u, - size: g, - data: m, - hash: _ - }); - r.nextLine(); - } while (E); - return b; -} - -function deserialize(s, r) { - try { - if (":" == s[0]) return deserialize2(s); else return JSON.parse(s); - } catch (o) { - try { - return (0, import_obsidian.parseYaml)(s); - } catch (s) { - return r; - } - } -} - -var pluginList = writable([]), pluginIsEnumerating = writable(false), ConfigSync = class extends LiveSyncCommands { - constructor(s) { - super(s); - this.pluginDialog = void 0; - this.periodicPluginSweepProcessor = new PeriodicProcessor(this.plugin, (async () => await this.scanAllConfigFiles(false))); - this.pluginList = []; - this.pluginScanProcessor = new QueueProcessor((async s => { - const r = s[0], o = r.path || this.getPath(r), u = this.pluginList.find((s => s.documentPath == o)); - if (u && u.mtime == r.mtime) return []; - try { - const s = await this.loadPluginData(o); - if (s) { - let r = [ ...this.pluginList ]; - r = r.filter((r => r.documentPath != s.documentPath)); - r.push(s); - this.pluginList = r; - pluginList.set(r); - } - return []; - } catch (s) { - Logger(`Something happened at enumerating customization :${o}`, LOG_LEVEL_NOTICE); - Logger(s, LOG_LEVEL_VERBOSE); - } - return []; - }), { - suspended: false, - batchSize: 1, - concurrentLimit: 10, - delay: 100, - yieldThreshold: 10, - maintainDelay: false, - totalRemainingReactiveSource: pluginScanningCount - }).startPipeline().root.onIdle((() => { - this.createMissingConfigurationEntry(); - })); - this.recentProcessedInternalFiles = []; - pluginScanningCount.onChanged((s => { - const r = s.value; - pluginIsEnumerating.set(0 != r); - })); - } - get kvDB() { - return this.plugin.kvDB; - } - showPluginSyncModal() { - if (this.settings.usePluginSync) if (this.pluginDialog) this.pluginDialog.open(); else { - this.pluginDialog = new PluginDialogModal(this.app, this.plugin); - this.pluginDialog.open(); - } - } - hidePluginSyncModal() { - if (null != this.pluginDialog) { - this.pluginDialog.close(); - this.pluginDialog = void 0; - } - } - onunload() { - var s; - this.hidePluginSyncModal(); - null == (s = this.periodicPluginSweepProcessor) || s.disable(); - } - onload() { - this.plugin.addCommand({ - id: "livesync-plugin-dialog-ex", - name: "Show customization sync dialog", - callback: () => { - this.showPluginSyncModal(); - } - }); - } - getFileCategory(s) { - if (2 == s.split("/").length && s.endsWith(".json")) return "CONFIG"; - if (4 == s.split("/").length && s.startsWith(`${this.app.vault.configDir}/themes/`)) return "THEME"; - if (s.startsWith(`${this.app.vault.configDir}/snippets/`) && s.endsWith(".css")) return "SNIPPET"; - if (s.startsWith(`${this.app.vault.configDir}/plugins/`)) if (s.endsWith("/styles.css") || s.endsWith("/manifest.json") || s.endsWith("/main.js")) return "PLUGIN_MAIN"; else if (s.endsWith("/data.json")) return "PLUGIN_DATA"; else return ""; - return ""; - } - isTargetPath(s) { - if (!s.startsWith(this.app.vault.configDir)) return false; else return "" != this.getFileCategory(s); - } - async onInitializeDatabase(s) { - if (this.settings.usePluginSync) try { - Logger("Scanning customizations..."); - await this.scanAllConfigFiles(s); - Logger("Scanning customizations : done"); - } catch (s) { - Logger("Scanning customizations : failed"); - Logger(s, LOG_LEVEL_VERBOSE); - } - } - async beforeReplicate(s) { - if (this.settings.autoSweepPlugins && this.settings.usePluginSync) await this.scanAllConfigFiles(s); - } - async onResume() { - if (!this.plugin.suspended) { - if (this.settings.autoSweepPlugins && this.settings.usePluginSync) await this.scanAllConfigFiles(false); - this.periodicPluginSweepProcessor.enable(this.settings.autoSweepPluginsPeriodic && !this.settings.watchInternalFileChanges ? 1e3 * PERIODIC_PLUGIN_SWEEP : 0); - } - } - async reloadPluginList(s) { - this.pluginList = []; - pluginList.set(this.pluginList); - await this.updatePluginList(s); - } - async loadPluginData(s) { - const r = await this.localDatabase.getDBEntry(s, void 0, false, false); - if (r) { - const o = deserialize(getDocData(r.data), {}), u = []; - let g = false; - for (const s of o.files) { - const r = { - ...s, - data: [] - }; - if (!s.hash) { - const o = digestHash(getDocData(r.data)); - s.hash = o; - g = true; - } - r.data = [ s.hash ]; - u.push(r); - } - if (g) { - Logger(`Digest created for ${s} to improve checking`, LOG_LEVEL_VERBOSE); - r.data = serialize(o); - fireAndForget((() => this.localDatabase.putDBEntry(createSavingEntryFromLoadedEntry(r)))); - } - return { - ...o, - documentPath: this.getPath(r), - files: u - }; - } - return false; - } - createMissingConfigurationEntry() { - let s = false; - for (const r of this.pluginList) { - const o = `${r.category}/${r.name}`; - if (!(o in this.plugin.settings.pluginSyncExtendedSetting)) this.plugin.settings.pluginSyncExtendedSetting[o] = { - key: o, - mode: MODE_SELECTIVE, - files: [] - }; - if (this.plugin.settings.pluginSyncExtendedSetting[o].files.sort().join(",").toLowerCase() != r.files.map((s => s.filename)).sort().join(",").toLowerCase()) { - this.plugin.settings.pluginSyncExtendedSetting[o].files = r.files.map((s => s.filename)).sort(); - s = true; - } - } - if (s) this.plugin.saveSettingData(); - } - async updatePluginList(s, r) { - if (this.settings.usePluginSync) { - try { - const s = r ? await this.path2id(r) : "", o = r ? this.localDatabase.findEntries(s, s + "􏿿", { - include_docs: true, - key: s, - limit: 1 - }) : this.localDatabase.findEntries(ICXHeader + "", `${ICXHeader}􏿿`, { - include_docs: true - }); - for await (const s of o) { - const o = s.path || this.getPath(s); - if (!r || r == o) this.pluginScanProcessor.enqueue(s); - } - } finally { - pluginIsEnumerating.set(false); - } - pluginIsEnumerating.set(false); - } else { - this.pluginScanProcessor.clearQueue(); - this.pluginList = []; - pluginList.set(this.pluginList); - } - } - async compareUsingDisplayData(s, r) { - const o = await this.localDatabase.getDBEntry(s.documentPath), u = await this.localDatabase.getDBEntry(r.documentPath); - if (o && u) { - const g = deserialize(getDocData(o.data), {}); - g.documentPath = s.documentPath; - const _ = deserialize(getDocData(u.data), {}); - _.documentPath = r.documentPath; - return await this.showJSONMergeDialogAndMerge(o, u, g, _); - } - return false; - } - showJSONMergeDialogAndMerge(s, r, o, u) { - const g = { - ...o.files[0], - ctime: o.files[0].mtime, - _id: `${o.documentPath}` - }, _ = u.files[0], m = { - ...s, - ...g, - datatype: "newnote" - }, b = { - ...r, - ..._, - datatype: "newnote" - }; - return serialized("config:merge-data", (() => new Promise((s => { - Logger("Opening data-merging dialog", LOG_LEVEL_VERBOSE); - const r = stripAllPrefixes(m.path.split("/").slice(-1).join("/")); - new JsonResolveModal(this.app, r, [ m, b ], (async (r, u) => { - if (null == u) return s(false); - try { - s(await this.applyData(o, u)); - } catch (r) { - Logger("Could not apply merged file"); - Logger(r, LOG_LEVEL_VERBOSE); - s(false); - } - }), "📡", "🛰️", "B").open(); - })))); - } - async applyData(s, r) { - Logger(`Applying ${s.displayName || s.name}..`); - const o = this.app.vault.configDir; - try { - if (!s.documentPath) throw "InternalError: Document path not exist"; - const u = await this.localDatabase.getDBEntry(s.documentPath); - if (false == u) throw "Not found on database"; - const g = deserialize(getDocData(u.data), {}); - for (const u of g.files) { - Logger(`Applying ${u.filename} of ${s.displayName || s.name}..`); - try { - const g = `${o}/${u.filename}`; - await this.vaultAccess.ensureDirectory(g); - if (!r) { - const s = decodeBinary(u.data); - await this.vaultAccess.adapterWrite(g, s); - } else await this.vaultAccess.adapterWrite(g, r); - Logger(`Applying ${u.filename} of ${s.displayName || s.name}.. Done`); - } catch (r) { - Logger(`Applying ${u.filename} of ${s.displayName || s.name}.. Failed`); - Logger(r, LOG_LEVEL_VERBOSE); - } - } - const _ = `${o}/${g.files[0].filename}`; - await this.storeCustomizationFiles(_); - await this.updatePluginList(true, _); - await delay(100); - Logger(`Config ${s.displayName || s.name} has been applied`, LOG_LEVEL_NOTICE); - if ("PLUGIN_DATA" == s.category || "PLUGIN_MAIN" == s.category) { - const r = Object.values(this.app.plugins.manifests), u = this.app.plugins.enabledPlugins, g = r.find((r => u.has(r.id) && r.dir == `${o}/plugins/${s.name}`)); - if (g) { - Logger(`Unloading plugin: ${g.name}`, LOG_LEVEL_NOTICE, "plugin-reload-" + g.id); - await this.app.plugins.unloadPlugin(g.id); - await this.app.plugins.loadPlugin(g.id); - Logger(`Plugin reloaded: ${g.name}`, LOG_LEVEL_NOTICE, "plugin-reload-" + g.id); - } - } else if ("CONFIG" == s.category) scheduleTask("configReload", 250, (async () => { - if ("yes" == await askYesNo(this.app, "Do you want to restart and reload Obsidian now?")) this.app.commands.executeCommandById("app:reload"); - })); - return true; - } catch (r) { - Logger(`Applying ${s.displayName || s.name}.. Failed`); - Logger(r, LOG_LEVEL_VERBOSE); - return false; - } - } - async deleteData(s) { - try { - if (s.documentPath) { - await this.deleteConfigOnDatabase(s.documentPath); - await this.updatePluginList(false, s.documentPath); - Logger(`Delete: ${s.documentPath}`, LOG_LEVEL_NOTICE); - } - return true; - } catch (r) { - Logger(`Failed to delete: ${s.documentPath}`, LOG_LEVEL_NOTICE); - return false; - } - } - async parseReplicationResultItem(s) { - if (s._id.startsWith(ICXHeader)) { - if (this.plugin.settings.usePluginSync) await this.updatePluginList(false, s.path ? s.path : this.getPath(s)); - if (this.plugin.settings.usePluginSync && this.plugin.settings.notifyPluginOrSettingUpdated) if (!this.pluginDialog || this.pluginDialog && !this.pluginDialog.isOpened()) { - const s = createFragment((s => { - s.createEl("span", void 0, (s => { - s.appendText("Some configuration has been arrived, Press "); - s.appendChild(s.createEl("a", void 0, (s => { - s.text = "HERE"; - s.addEventListener("click", (() => { - this.showPluginSyncModal(); - })); - }))); - s.appendText(" to open the config sync dialog , or press elsewhere to dismiss this message."); - })); - })), r = "popupUpdated-plugins"; - scheduleTask(r, 1e3, (async () => { - var o; - const u = await memoIfNotExist(r, (() => new import_obsidian.Notice(s, 0))); - if (!(null == (o = null == u ? void 0 : u.noticeEl) ? void 0 : o.isShown())) memoObject(r, new import_obsidian.Notice(s, 0)); - scheduleTask(r + "-close", 2e4, (() => { - var s; - const o = retrieveMemoObject(r); - if (o) { - if (null == (s = null == o ? void 0 : o.noticeEl) ? void 0 : s.isShown()) o.hide(); - disposeMemoObject(r); - } - })); - })); - } - return true; - } - return false; - } - async realizeSettingSyncMode() { - var s; - null == (s = this.periodicPluginSweepProcessor) || s.disable(); - if (!this.plugin.suspended) if (this.settings.usePluginSync) { - if (this.settings.autoSweepPlugins) await this.scanAllConfigFiles(false); - this.periodicPluginSweepProcessor.enable(this.settings.autoSweepPluginsPeriodic && !this.settings.watchInternalFileChanges ? 1e3 * PERIODIC_PLUGIN_SWEEP : 0); - } - } - async makeEntryFromFile(s) { - const r = await this.vaultAccess.adapterStat(s); - let o, u; - if (!r) return false; - const g = await this.vaultAccess.adapterReadBinary(s); - let _; - try { - _ = await arrayBufferToBase64(g); - if (s.toLowerCase().endsWith("/manifest.json")) { - const r = readString(new Uint8Array(g)); - try { - const s = JSON.parse(r); - if ("version" in s) o = `${s.version}`; - if ("name" in s) u = `${s.name}`; - } catch (r) { - Logger(`Configuration sync data: ${s} looks like manifest, but could not read the version`, LOG_LEVEL_INFO); - } - } - } catch (r) { - Logger(`The file ${s} could not be encoded`); - Logger(r, LOG_LEVEL_VERBOSE); - return false; - } - const m = r.mtime; - return { - filename: s.substring(this.app.vault.configDir.length + 1), - data: _, - mtime: m, - size: r.size, - version: o, - displayName: u - }; - } - filenameToUnifiedKey(s, r) { - const o = r || this.plugin.deviceAndVaultName, u = this.getFileCategory(s), g = "CONFIG" == u || "SNIPPET" == u ? s.split("/").slice(-1)[0] : "PLUGIN_ETC" == u ? s.split("/").slice(-2).join("/") : s.split("/").slice(-2)[0]; - return `${ICXHeader}${o}/${u}/${g}.md`; - } - async storeCustomizationFiles(s, r) { - const o = r || this.plugin.deviceAndVaultName; - if ("" == o) { - Logger("We have to configure the device name", LOG_LEVEL_NOTICE); - return; - } - const u = this.filenameToUnifiedKey(s, o); - return await serialized(`plugin-${u}`, (async () => { - const r = this.getFileCategory(s); - let u = 0, g = []; - const _ = "CONFIG" == r || "SNIPPET" == r ? s.split("/").reverse()[0] : s.split("/").reverse()[1], m = s.split("/").slice(0, -1).join("/"), b = this.filenameToUnifiedKey(s, o), E = await this.path2id(b), w = { - category: r, - files: [], - name: _, - mtime: 0, - term: o - }; - if ("CONFIG" == r || "SNIPPET" == r || "PLUGIN_ETC" == r || "PLUGIN_DATA" == r) { - g = [ s ]; - if ("PLUGIN_ETC" == r) w.displayName = s.split("/").slice(-1).join("/"); - } else if ("PLUGIN_MAIN" == r) g = [ "manifest.json", "main.js", "styles.css" ].map((s => `${m}/${s}`)); else if ("THEME" == r) g = [ "manifest.json", "theme.css" ].map((s => `${m}/${s}`)); - for (const s of g) { - const r = await this.makeEntryFromFile(s); - if (false != r) { - if (r.version) w.version = r.version; - if (r.displayName) w.displayName = r.displayName; - u = 0 == u ? r.mtime : (r.mtime + u) / 2; - w.files.push(r); - } - } - w.mtime = u; - if (0 == w.files.length) { - Logger(`Nothing left: deleting.. ${s}`); - await this.deleteConfigOnDatabase(b); - await this.updatePluginList(false, b); - return; - } - const S = createTextBlob(serialize(w)); - try { - const s = await this.localDatabase.getDBEntryMeta(b, void 0, false); - let r; - if (false === s) r = { - _id: E, - path: b, - data: S, - mtime: u, - ctime: u, - datatype: "newnote", - size: S.size, - children: [], - deleted: false, - type: "newnote" - }; else { - if (s.mtime == u) return true; - const o = await this.localDatabase.getDBEntryFromMeta(s, {}, false, false); - if (o) { - const s = (await deserialize(getDocData(o.data), {})).files.map((s => ({ - prev: s, - curr: w.files.find((r => r.filename == s.filename)) - }))).map((async s => { - var r, o; - try { - return await isDocContentSame(null != (o = null == (r = s.curr) ? void 0 : r.data) ? o : [], s.prev.data); - } catch (s) { - return false; - } - })); - if ((await Promise.all(s)).every((s => true == s))) { - Logger(`STORAGE --\x3e DB:${b}: (config) Skipped (Same content)`, LOG_LEVEL_VERBOSE); - return true; - } - } - r = { - ...s, - data: S, - mtime: u, - size: S.size, - datatype: "newnote", - children: [], - deleted: false, - type: "newnote" - }; - } - const o = await this.localDatabase.putDBEntry(r); - await this.updatePluginList(false, r.path); - Logger(`STORAGE --\x3e DB:${b}: (config) Done`); - return o; - } catch (s) { - Logger(`STORAGE --\x3e DB:${b}: (config) Failed`); - Logger(s, LOG_LEVEL_VERBOSE); - return false; - } - })); - } - async watchVaultRawEventsAsync(s) { - if (!this.settings.usePluginSync) return false; - if (!this.isTargetPath(s)) return false; - const r = await this.vaultAccess.adapterStat(s); - if (r && "file" != r.type) return false; - const o = normalizePath(this.app.vault.configDir); - if (Object.values(this.settings.pluginSyncExtendedSetting).filter((s => s.mode != MODE_SELECTIVE)).map((s => s.files)).flat().map((s => `${o}/${s}`.toLowerCase())).some((r => r.startsWith(s.toLowerCase())))) { - Logger(`Customization file skipped: ${s}`, LOG_LEVEL_VERBOSE); - return; - } - const u = ~~((r && r.mtime || 0) / 1e3), g = `${s}-${u}`; - if (this.recentProcessedInternalFiles.contains(g)) return true; - this.recentProcessedInternalFiles = [ g, ...this.recentProcessedInternalFiles ].slice(0, 100); - this.storeCustomizationFiles(s).then((() => {})); - } - async scanAllConfigFiles(s) { - var r; - Logger("Scanning customizing files.", s ? LOG_LEVEL_NOTICE : LOG_LEVEL_INFO, "scan-all-config"); - const o = this.plugin.deviceAndVaultName; - if ("" == o) { - Logger("We have to configure the device name", LOG_LEVEL_NOTICE); - return; - } - const u = (await this.scanInternalFiles()).filter((s => this.isTargetPath(s))).map((s => ({ - key: this.filenameToUnifiedKey(s), - file: s - }))), g = [ ...new Set(u.map((s => s.key))) ]; - let _ = (await this.localDatabase.allDocsRaw({ - startkey: ICXHeader + "", - endkey: `${ICXHeader}􏿿`, - include_docs: true - })).rows.map((s => s.doc)).filter((s => !s.deleted)).map((s => this.getPath(s))).filter((s => s.startsWith(`${ICXHeader}${o}/`))); - for (const s of g) { - const o = null == (r = u.find((r => r.key == s))) ? void 0 : r.file; - if (o) { - await this.storeCustomizationFiles(o); - _ = _.filter((r => r != s)); - } else Logger(`scanAllConfigFiles - File not found: ${s}`, LOG_LEVEL_VERBOSE); - } - for (const s of _) await this.deleteConfigOnDatabase(s); - this.updatePluginList(false).then(); - } - async deleteConfigOnDatabase(s, r = false) { - const o = (new Date).getTime(); - await serialized("file-x-" + s, (async () => { - try { - const r = await this.localDatabase.getDBEntryMeta(s, void 0, false); - let u; - if (false === r) { - Logger(`STORAGE -x> DB:${s}: (config) already deleted (Not found on database)`); - return; - } else { - if (r.deleted) { - Logger(`STORAGE -x> DB:${s}: (config) already deleted`); - return; - } - u = { - ...r, - mtime: o, - size: 0, - children: [], - deleted: true, - type: "newnote" - }; - } - await this.localDatabase.putRaw(u); - await this.updatePluginList(false, s); - Logger(`STORAGE -x> DB:${s}: (config) Done`); - } catch (r) { - Logger(`STORAGE -x> DB:${s}: (config) Failed`); - Logger(r, LOG_LEVEL_VERBOSE); - return false; - } - })); - } - async scanInternalFiles() { - return (await this.getFiles(this.app.vault.configDir, 2)).filter((s => s.startsWith("."))).filter((s => !s.startsWith(".trash"))); - } - async getFiles(s, r) { - if (-1 == r) return []; - let o; - try { - o = await this.app.vault.adapter.list(s); - } catch (r) { - Logger(`Could not traverse(ConfigSync):${s}`, LOG_LEVEL_INFO); - Logger(r, LOG_LEVEL_VERBOSE); - return []; - } - let u = [ ...o.files ]; - for (const s of o.folders) u = u.concat(await this.getFiles(s, r - 1)); - return u; - } -}; - -function add_css2(s) { - append_styles(s, "svelte-tsbdtg", ".spacer.svelte-tsbdtg{min-width:1px;flex-grow:1}button.svelte-tsbdtg{margin:2px 4px;min-width:3em;max-width:4em}button.svelte-tsbdtg:disabled{border:none;box-shadow:none;background-color:transparent;visibility:collapse}button.svelte-tsbdtg:disabled:hover{border:none;box-shadow:none;background-color:transparent;visibility:collapse}span.message.svelte-tsbdtg{color:var(--text-muted);font-size:var(--font-ui-smaller);padding:0 1em;line-height:var(--line-height-tight)}span.messages.svelte-tsbdtg{display:flex;flex-direction:column;align-items:center}.is-mobile .spacer.svelte-tsbdtg{margin-left:auto}"); -} - -function get_each_context2(s, r, o) { - const u = s.slice(); - u[30] = r[o]; - return u; -} - -function create_else_block_3(s) { - let r, o, u, g, _, m, b; - return { - c() { - r = element("span"); - o = space(); - u = element("span"); - u.textContent = "All the same or non-existent"; - g = space(); - _ = element("button"); - m = space(); - b = element("button"); - attr(r, "class", "spacer svelte-tsbdtg"); - attr(u, "class", "message even svelte-tsbdtg"); - _.disabled = true; - attr(_, "class", "svelte-tsbdtg"); - b.disabled = true; - attr(b, "class", "svelte-tsbdtg"); - }, - m(s, E) { - insert(s, r, E); - insert(s, o, E); - insert(s, u, E); - insert(s, g, E); - insert(s, _, E); - insert(s, m, E); - insert(s, b, E); - }, - p: noop, - d(s) { - if (s) { - detach(r); - detach(o); - detach(u); - detach(g); - detach(_); - detach(m); - detach(b); - } - } - }; -} - -function create_if_block2(s) { - let r, o, u, g = !s[0] && create_if_block_12(s); - return { - c() { - r = element("span"); - o = space(); - if (g) g.c(); - u = empty(); - attr(r, "class", "spacer svelte-tsbdtg"); - }, - m(s, _) { - insert(s, r, _); - insert(s, o, _); - if (g) g.m(s, _); - insert(s, u, _); - }, - p(s, r) { - if (!s[0]) if (g) g.p(s, r); else { - g = create_if_block_12(s); - g.c(); - g.m(u.parentNode, u); - } else if (g) { - g.d(1); - g = null; - } - }, - d(s) { - if (s) { - detach(r); - detach(o); - detach(u); - } - if (g) g.d(s); - } - }; -} - -function create_if_block_12(s) { - let r, o, u, g, _, m, b, E, w, S, L, O, D, k, C, T, I, A, R = ensure_array_like(s[8]), x = []; - for (let r = 0; r < R.length; r += 1) x[r] = create_each_block2(get_each_context2(s, R, r)); - function select_block_type_1(s, r) { - if (s[6] || s[1] && "" != s[2]) return create_if_block_42; else return create_else_block_2; - } - let P = select_block_type_1(s), N = P(s), B = s[1] && create_if_block_22(s); - return { - c() { - r = element("span"); - o = element("span"); - u = text(s[3]); - g = space(); - _ = element("span"); - m = text(s[4]); - b = space(); - E = element("span"); - w = text(s[5]); - S = space(); - L = element("select"); - O = element("option"); - O.textContent = "-"; - for (let s = 0; s < x.length; s += 1) x[s].c(); - k = space(); - N.c(); - C = space(); - if (B) B.c(); - T = empty(); - attr(o, "class", "message svelte-tsbdtg"); - attr(_, "class", "message svelte-tsbdtg"); - attr(E, "class", "message svelte-tsbdtg"); - attr(r, "class", "messages svelte-tsbdtg"); - O.__value = D = ""; - set_input_value(O, O.__value); - if (void 0 === s[2]) add_render_callback((() => s[24].call(L))); - }, - m(D, R) { - insert(D, r, R); - append(r, o); - append(o, u); - append(r, g); - append(r, _); - append(_, m); - append(r, b); - append(r, E); - append(E, w); - insert(D, S, R); - insert(D, L, R); - append(L, O); - for (let s = 0; s < x.length; s += 1) if (x[s]) x[s].m(L, null); - select_option(L, s[2], true); - insert(D, k, R); - N.m(D, R); - insert(D, C, R); - if (B) B.m(D, R); - insert(D, T, R); - if (!I) { - A = listen(L, "change", s[24]); - I = true; - } - }, - p(s, r) { - if (8 & r[0]) set_data(u, s[3]); - if (16 & r[0]) set_data(m, s[4]); - if (32 & r[0]) set_data(w, s[5]); - if (256 & r[0]) { - R = ensure_array_like(s[8]); - let o; - for (o = 0; o < R.length; o += 1) { - const u = get_each_context2(s, R, o); - if (x[o]) x[o].p(u, r); else { - x[o] = create_each_block2(u); - x[o].c(); - x[o].m(L, null); - } - } - for (;o < x.length; o += 1) x[o].d(1); - x.length = R.length; - } - if (260 & r[0]) select_option(L, s[2]); - if (P === (P = select_block_type_1(s)) && N) N.p(s, r); else { - N.d(1); - N = P(s); - if (N) { - N.c(); - N.m(C.parentNode, C); - } - } - if (s[1]) if (B) B.p(s, r); else { - B = create_if_block_22(s); - B.c(); - B.m(T.parentNode, T); - } else if (B) { - B.d(1); - B = null; - } - }, - d(s) { - if (s) { - detach(r); - detach(S); - detach(L); - detach(k); - detach(C); - detach(T); - } - destroy_each(x, s); - N.d(s); - if (B) B.d(s); - I = false; - A(); - } - }; -} - -function create_each_block2(s) { - let r, o, u, g = s[30] + ""; - return { - c() { - r = element("option"); - o = text(g); - r.__value = u = s[30]; - set_input_value(r, r.__value); - }, - m(s, u) { - insert(s, r, u); - append(r, o); - }, - p(s, _) { - if (256 & _[0] && g !== (g = s[30] + "")) set_data(o, g); - if (256 & _[0] && u !== (u = s[30])) { - r.__value = u; - set_input_value(r, r.__value); - } - }, - d(s) { - if (s) detach(r); - } - }; -} - -function create_else_block_2(s) { - let r, o, u; - return { - c() { - r = element("button"); - o = space(); - u = element("button"); - r.disabled = true; - attr(r, "class", "svelte-tsbdtg"); - u.disabled = true; - attr(u, "class", "svelte-tsbdtg"); - }, - m(s, g) { - insert(s, r, g); - insert(s, o, g); - insert(s, u, g); - }, - p: noop, - d(s) { - if (s) { - detach(r); - detach(o); - detach(u); - } - } - }; -} - -function create_if_block_42(s) { - let r, o, u, g; - function select_block_type_2(s, r) { - if (s[7]) return create_if_block_5; else return create_else_block_12; - } - let _ = select_block_type_2(s), m = _(s); - return { - c() { - m.c(); - r = space(); - o = element("button"); - o.textContent = "✓"; - attr(o, "class", "svelte-tsbdtg"); - }, - m(_, b) { - m.m(_, b); - insert(_, r, b); - insert(_, o, b); - if (!u) { - g = listen(o, "click", s[9]); - u = true; - } - }, - p(s, o) { - if (_ === (_ = select_block_type_2(s)) && m) m.p(s, o); else { - m.d(1); - m = _(s); - if (m) { - m.c(); - m.m(r.parentNode, r); - } - } - }, - d(s) { - if (s) { - detach(r); - detach(o); - } - m.d(s); - u = false; - g(); - } - }; -} - -function create_else_block_12(s) { - let r; - return { - c() { - r = element("button"); - r.disabled = true; - attr(r, "class", "svelte-tsbdtg"); - }, - m(s, o) { - insert(s, r, o); - }, - p: noop, - d(s) { - if (s) detach(r); - } - }; -} - -function create_if_block_5(s) { - let r, o, u; - return { - c() { - r = element("button"); - r.textContent = "🔍"; - attr(r, "class", "svelte-tsbdtg"); - }, - m(g, _) { - insert(g, r, _); - if (!o) { - u = listen(r, "click", s[10]); - o = true; - } - }, - p: noop, - d(s) { - if (s) detach(r); - o = false; - u(); - } - }; -} - -function create_if_block_22(s) { - let r; - function select_block_type_3(s, r) { - if ("" != s[2]) return create_if_block_32; else return create_else_block2; - } - let o = select_block_type_3(s), u = o(s); - return { - c() { - u.c(); - r = empty(); - }, - m(s, o) { - u.m(s, o); - insert(s, r, o); - }, - p(s, g) { - if (o === (o = select_block_type_3(s)) && u) u.p(s, g); else { - u.d(1); - u = o(s); - if (u) { - u.c(); - u.m(r.parentNode, r); - } - } - }, - d(s) { - if (s) detach(r); - u.d(s); - } - }; -} - -function create_else_block2(s) { - let r, o, u; - return { - c() { - r = element("button"); - r.textContent = "📑"; - attr(r, "class", "svelte-tsbdtg"); - }, - m(g, _) { - insert(g, r, _); - if (!o) { - u = listen(r, "click", s[12]); - o = true; - } - }, - p: noop, - d(s) { - if (s) detach(r); - o = false; - u(); - } - }; -} - -function create_if_block_32(s) { - let r, o, u; - return { - c() { - r = element("button"); - r.textContent = "🗑️"; - attr(r, "class", "svelte-tsbdtg"); - }, - m(g, _) { - insert(g, r, _); - if (!o) { - u = listen(r, "click", s[11]); - o = true; - } - }, - p: noop, - d(s) { - if (s) detach(r); - o = false; - u(); - } - }; -} - -function create_fragment2(s) { - let r; - function select_block_type(s, r) { - if (s[8].length > 0) return create_if_block2; else return create_else_block_3; - } - let o = select_block_type(s), u = o(s); - return { - c() { - u.c(); - r = empty(); - }, - m(s, o) { - u.m(s, o); - insert(s, r, o); - }, - p(s, g) { - if (o === (o = select_block_type(s)) && u) u.p(s, g); else { - u.d(1); - u = o(s); - if (u) { - u.c(); - u.m(r.parentNode, r); - } - } - }, - i: noop, - o: noop, - d(s) { - if (s) detach(r); - u.d(s); - } - }; -} - -function instance2(s, r, o) { - let {list: u = []} = r, {thisTerm: g = ""} = r, {hideNotApplicable: _ = false} = r, {selectNewest: m = 0} = r, {applyAllPluse: b = 0} = r, {applyData: E} = r, {compareData: w} = r, {deleteData: S} = r, {hidden: L} = r, {plugin: O} = r, {isMaintenanceMode: D = false} = r; - const k = O.addOnConfigSync; - let C = "", T = "", I = "", A = "", R = false, x = false, P = 0, N = 0, B = []; - async function comparePlugin(s, r) { - var o, u; - let g = "", _ = "", m = false, b = false; - if (!s && !r) g = ""; else if (s && !r) g = "⚠ Local only"; else if (r && !s) { - g = "✓ Remote only"; - b = true; - } else { - const _ = (null !== (o = null == s ? void 0 : s.mtime) && void 0 !== o ? o : 0) - (null !== (u = null == r ? void 0 : r.mtime) && void 0 !== u ? u : 0); - if (_ / 1e3 < -10) { - g = "✓ Newer"; - b = true; - m = true; - } else if (_ / 1e3 > 10) { - g = "⚠ Older"; - b = true; - m = true; - } else { - g = "⚖️ Same old"; - b = false; - m = true; - } - } - const E = (null == s ? void 0 : s.version) || "0.0.0", w = (null == r ? void 0 : r.version) || "0.0.0"; - if ((null == s ? void 0 : s.version) || (null == r ? void 0 : r.version)) { - const s = versionNumberString2Number(E), r = versionNumberString2Number(w); - if (s == r) _ = "⚖️ Same ver."; else if (s > r) _ = `⚠ Lower ${E} > ${w}`; else if (s < r) _ = `✓ Higher ${E} < ${w}`; - } - if (m) { - const {canApply: o, equivalency: u, canCompare: m} = await async function checkEquivalency(s, r) { - let o = "", u = false, g = false; - const _ = [ ...new Set([ ...s.files.map((s => s.filename)), ...r.files.map((s => s.filename)) ]) ].map((o => { - const u = s.files.find((s => s.filename == o)), g = r.files.find((s => s.filename == o)); - if (!u && !g) return 0; else if (u && !g) return 2; else if (!u && g) return 8; else if (getDocData(u.data) == getDocData(g.data)) return 4; else return 16; - })).reduce(((s, r) => s | r), 0); - if (4 == _) { - o = "⚖️ Same"; - u = false; - } else if (_ <= 4) { - o = "Same or local only"; - u = false; - } else if (16 == _) { - u = true; - g = true; - o = "≠ Different"; - } else { - u = true; - g = true; - o = "≠ Different"; - } - return { - equivalency: o, - canApply: u, - canCompare: g - }; - }(s, r); - return { - canApply: o, - freshness: g, - equivalency: u, - version: _, - canCompare: m - }; - } - return { - canApply: b, - freshness: g, - equivalency: "", - version: _, - canCompare: false - }; - } - async function applySelected() { - const s = u.find((s => s.term == g)), r = u.find((s => s.term == C)); - if (r && await E(r)) k.updatePluginList(true, null == s ? void 0 : s.documentPath); - } - s.$$set = s => { - if ("list" in s) o(13, u = s.list); - if ("thisTerm" in s) o(14, g = s.thisTerm); - if ("hideNotApplicable" in s) o(15, _ = s.hideNotApplicable); - if ("selectNewest" in s) o(16, m = s.selectNewest); - if ("applyAllPluse" in s) o(17, b = s.applyAllPluse); - if ("applyData" in s) o(18, E = s.applyData); - if ("compareData" in s) o(19, w = s.compareData); - if ("deleteData" in s) o(20, S = s.deleteData); - if ("hidden" in s) o(0, L = s.hidden); - if ("plugin" in s) o(21, O = s.plugin); - if ("isMaintenanceMode" in s) o(1, D = s.isMaintenanceMode); - }; - s.$$.update = () => { - if (4268034 & s.$$.dirty[0]) { - const s = m != P; - o(22, P = m); - (async function updateTerms(s, r, u) { - const m = s.find((s => s.term == g)); - o(2, C = ""); - if (u) o(8, B = [ ...new Set(s.map((s => s.term))) ]); else if (_) { - const r = [], u = [ ...new Set(s.map((s => s.term))) ]; - for (const o of u) { - const u = s.find((s => s.term == o)); - if ((await comparePlugin(m, u)).canApply) r.push(o); - } - o(8, B = [ ...r ]); - } else o(8, B = [ ...new Set(s.map((s => s.term))) ].filter((s => s != g))); - let b = m; - if (r) { - for (const r of B) { - const o = s.find((s => s.term == r)); - if (o && o.mtime && ((null == b ? void 0 : b.mtime) || 0) < o.mtime) b = o; - } - if (b && b.term != g) o(2, C = b.term); - } - })(u, s, D); - } - if (8519685 & s.$$.dirty[0]) { - const s = b != N; - o(23, N = b); - if (s && C) if (!L) applySelected(); - } - if (24580 & s.$$.dirty[0]) { - o(3, T = ""); - o(4, I = ""); - o(5, A = ""); - o(6, R = false); - if ("" == C) ; else if (C == g) { - o(3, T = "This device"); - o(6, R = false); - } else (async function performCompare(s, r) { - var u, g, _; - const m = await comparePlugin(s, r); - o(6, R = m.canApply); - o(3, T = m.freshness); - o(4, I = m.equivalency); - o(5, A = m.version); - o(7, x = m.canCompare); - if (1 != (null == s ? void 0 : s.files.length) || !(null === (_ = null === (g = null === (u = null == s ? void 0 : s.files) || void 0 === u ? void 0 : u.first()) || void 0 === g ? void 0 : g.filename) || void 0 === _ ? void 0 : _.endsWith(".json"))) o(7, x = false); - })(u.find((s => s.term == g)), u.find((s => s.term == C))); - } - }; - return [ L, D, C, T, I, A, R, x, B, applySelected, async function compareSelected() { - const s = u.find((s => s.term == g)), r = u.find((s => s.term == C)); - if (s && r && await w(s, r)) k.updatePluginList(true, s.documentPath); - }, async function deleteSelected() { - const s = u.find((s => s.term == C)); - if (s && await S(s)) k.reloadPluginList(true); - }, async function duplicateItem() { - const s = u.find((s => s.term == g)), r = await askString(O.app, "Duplicate", "device name", ""); - if (r) { - if (r.contains("/")) { - Logger('We can not use "/" to the device name', LOG_LEVEL_NOTICE); - return; - } - const o = `${O.app.vault.configDir}/${s.files[0].filename}`; - await k.storeCustomizationFiles(o, r); - await k.updatePluginList(false, k.filenameToUnifiedKey(o, r)); - } - }, u, g, _, m, b, E, w, S, O, P, N, function select_change_handler() { - C = select_value(this); - o(2, C); - o(8, B); - } ]; -} - -var PluginCombo = class extends SvelteComponent { - constructor(s) { - super(); - init2(this, s, instance2, create_fragment2, safe_not_equal, { - list: 13, - thisTerm: 14, - hideNotApplicable: 15, - selectNewest: 16, - applyAllPluse: 17, - applyData: 18, - compareData: 19, - deleteData: 20, - hidden: 0, - plugin: 21, - isMaintenanceMode: 1 - }, add_css2, [ -1, -1 ]); - } -}, PluginCombo_default = PluginCombo, import_obsidian3 = require("obsidian"); - -function add_css3(s) { - append_styles(s, "svelte-664idh", "h3.svelte-664idh.svelte-664idh{position:sticky;top:0;background-color:var(--modal-background)}.labelrow.svelte-664idh.svelte-664idh{margin-left:0.4em;display:flex;justify-content:flex-start;align-items:center;border-top:1px solid var(--background-modifier-border);padding:4px;flex-wrap:wrap}.filerow.svelte-664idh.svelte-664idh{margin-left:1.25em;display:flex;justify-content:flex-start;align-items:center;padding-right:4px;flex-wrap:wrap}.filerow.hideeven.svelte-664idh.svelte-664idh:has(.even),.labelrow.hideeven.svelte-664idh.svelte-664idh:has(.even){display:none}.noterow.svelte-664idh.svelte-664idh{min-height:2em;display:flex}button.status.svelte-664idh.svelte-664idh{flex-grow:0;margin:2px 4px;min-width:3em;max-width:4em}.statusnote.svelte-664idh.svelte-664idh{display:flex;justify-content:flex-end;padding-right:var(--size-4-12);align-items:center;min-width:10em;flex-grow:1}.title.svelte-664idh.svelte-664idh{color:var(--text-normal);font-size:var(--font-ui-medium);line-height:var(--line-height-tight);margin-right:auto}.filetitle.svelte-664idh.svelte-664idh{color:var(--text-normal);font-size:var(--font-ui-medium);line-height:var(--line-height-tight);margin-right:auto}.buttons.svelte-664idh.svelte-664idh{display:flex;flex-direction:row;justify-content:flex-end;margin-top:8px;flex-wrap:wrap}.buttons.svelte-664idh>button.svelte-664idh{margin-left:4px;width:auto}label.svelte-664idh.svelte-664idh{display:flex;justify-content:center;align-items:center}label.svelte-664idh>span.svelte-664idh{margin-right:0.25em}.is-mobile .title.svelte-664idh.svelte-664idh,.is-mobile .filetitle.svelte-664idh.svelte-664idh{width:100%}.center.svelte-664idh.svelte-664idh{display:flex;justify-content:center;align-items:center;min-height:3em}.maintenancerow.svelte-664idh.svelte-664idh{display:flex;justify-content:flex-end;align-items:center}.maintenancerow.svelte-664idh label.svelte-664idh{margin-right:0.5em;margin-left:0.5em}"); -} - -function get_each_context3(s, r, o) { - const u = s.slice(); - u[53] = r[o]; - return u; -} - -function get_each_context_12(s, r, o) { - var u, g, _; - const m = s.slice(); - m[56] = r[o][0]; - m[57] = r[o][1]; - const b = `${PREFIX_PLUGIN_ALL}/${m[56]}`; - m[58] = b; - const E = null != (u = m[5].get(m[58])) ? u : MODE_SELECTIVE; - m[59] = E; - const w = `${PREFIX_PLUGIN_MAIN}/${m[56]}`; - m[60] = w; - const S = null != (g = m[5].get(m[60])) ? g : MODE_SELECTIVE; - m[61] = S; - const L = `${PREFIX_PLUGIN_DATA}/${m[56]}`; - m[62] = L; - const O = null != (_ = m[5].get(m[62])) ? _ : MODE_SELECTIVE; - m[63] = O; - return m; -} - -function get_each_context_2(s, r, o) { - const u = s.slice(); - u[66] = r[o][0]; - u[67] = r[o][1]; - return u; -} - -function get_each_context_3(s, r, o) { - var u; - const g = s.slice(); - g[56] = r[o]; - const _ = `${g[66]}/${g[56]}`; - g[70] = _; - const m = null != (u = g[5].get(g[70])) ? u : MODE_SELECTIVE; - g[71] = m; - return g; -} - -function create_if_block_8(s) { - let r, o, u; - return { - c() { - r = element("button"); - r.textContent = "Reload"; - attr(r, "class", "svelte-664idh"); - }, - m(g, _) { - insert(g, r, _); - if (!o) { - u = listen(r, "click", s[28]); - o = true; - } - }, - p: noop, - d(s) { - if (s) detach(r); - o = false; - u(); - } - }; -} - -function create_if_block_7(s) { - let r; - return { - c() { - r = element("div"); - r.innerHTML = "Updating list..."; - }, - m(s, o) { - insert(s, r, o); - }, - d(s) { - if (s) detach(r); - } - }; -} - -function create_else_block3(s) { - let r, o, u, g, _, m = ensure_array_like(Object.entries(s[11]).filter(s[31])), b = []; - for (let r = 0; r < m.length; r += 1) b[r] = create_each_block_2(get_each_context_2(s, m, r)); - const out = s => transition_out(b[s], 1, 1, (() => { - b[s] = null; - })); - let E = ensure_array_like(groupBy(filterList(s[0], [ "PLUGIN_MAIN", "PLUGIN_DATA", "PLUGIN_ETC" ]), "name")), w = []; - for (let r = 0; r < E.length; r += 1) w[r] = create_each_block_12(get_each_context_12(s, E, r)); - const out_1 = s => transition_out(w[s], 1, 1, (() => { - w[s] = null; - })); - return { - c() { - for (let s = 0; s < b.length; s += 1) b[s].c(); - r = space(); - o = element("div"); - u = element("h3"); - u.textContent = "Plugins"; - g = space(); - for (let s = 0; s < w.length; s += 1) w[s].c(); - attr(u, "class", "svelte-664idh"); - }, - m(s, m) { - for (let r = 0; r < b.length; r += 1) if (b[r]) b[r].m(s, m); - insert(s, r, m); - insert(s, o, m); - append(o, u); - append(o, g); - for (let s = 0; s < w.length; s += 1) if (w[s]) w[s].m(o, null); - _ = true; - }, - p(s, u) { - if (461157 & u[0]) { - m = ensure_array_like(Object.entries(s[11]).filter(s[31])); - let o; - for (o = 0; o < m.length; o += 1) { - const g = get_each_context_2(s, m, o); - if (b[o]) { - b[o].p(g, u); - transition_in(b[o], 1); - } else { - b[o] = create_each_block_2(g); - b[o].c(); - transition_in(b[o], 1); - b[o].m(r.parentNode, r); - } - } - group_outros(); - for (o = m.length; o < b.length; o += 1) out(o); - check_outros(); - } - if (459045 & u[0]) { - E = ensure_array_like(groupBy(filterList(s[0], [ "PLUGIN_MAIN", "PLUGIN_DATA", "PLUGIN_ETC" ]), "name")); - let r; - for (r = 0; r < E.length; r += 1) { - const g = get_each_context_12(s, E, r); - if (w[r]) { - w[r].p(g, u); - transition_in(w[r], 1); - } else { - w[r] = create_each_block_12(g); - w[r].c(); - transition_in(w[r], 1); - w[r].m(o, null); - } - } - group_outros(); - for (r = E.length; r < w.length; r += 1) out_1(r); - check_outros(); - } - }, - i(s) { - if (!_) { - for (let s = 0; s < m.length; s += 1) transition_in(b[s]); - for (let s = 0; s < E.length; s += 1) transition_in(w[s]); - _ = true; - } - }, - o(s) { - b = b.filter(Boolean); - for (let s = 0; s < b.length; s += 1) transition_out(b[s]); - w = w.filter(Boolean); - for (let s = 0; s < w.length; s += 1) transition_out(w[s]); - _ = false; - }, - d(s) { - if (s) { - detach(r); - detach(o); - } - destroy_each(b, s); - destroy_each(w, s); - } - }; -} - -function create_if_block_13(s) { - let r; - return { - c() { - r = element("div"); - r.textContent = "No Items."; - attr(r, "class", "center svelte-664idh"); - }, - m(s, o) { - insert(s, r, o); - }, - p: noop, - i: noop, - o: noop, - d(s) { - if (s) detach(r); - } - }; -} - -function create_else_block_4(s) { - let r, o, u = s[17][s[71]] + ""; - return { - c() { - r = element("div"); - o = text(u); - attr(r, "class", "statusnote svelte-664idh"); - }, - m(s, u) { - insert(s, r, u); - append(r, o); - }, - p(s, r) { - if (96 & r[0] && u !== (u = s[17][s[71]] + "")) set_data(o, u); - }, - i: noop, - o: noop, - d(s) { - if (s) detach(r); - } - }; -} - -function create_if_block_6(s) { - let r, o; - function func_1(...r) { - return s[33](s[66], s[56], ...r); - } - const u = [ s[8], { - list: s[0].filter(func_1) - }, { - hidden: false - } ]; - let g = {}; - for (let s = 0; s < u.length; s += 1) g = assign(g, u[s]); - r = new PluginCombo_default({ - props: g - }); - return { - c() { - create_component(r.$$.fragment); - }, - m(s, u) { - mount_component(r, s, u); - o = true; - }, - p(o, g) { - s = o; - const _ = 2369 & g[0] ? get_spread_update(u, [ 256 & g[0] && get_spread_object(s[8]), 2113 & g[0] && { - list: s[0].filter(func_1) - }, u[2] ]) : {}; - r.$set(_); - }, - i(s) { - if (!o) { - transition_in(r.$$.fragment, s); - o = true; - } - }, - o(s) { - transition_out(r.$$.fragment, s); - o = false; - }, - d(s) { - destroy_component(r, s); - } - }; -} - -function create_each_block_3(s) { - let r, o, u, g, _, m, b, E, w, S, L, O, D, k, C = s[18](s[71]) + "", T = s[56] + ""; - function click_handler_6(...r) { - return s[32](s[66], s[56], s[70], ...r); - } - const I = [ create_if_block_6, create_else_block_4 ], A = []; - function select_block_type_1(s, r) { - if (s[71] == MODE_SELECTIVE) return 0; else return 1; - } - w = select_block_type_1(s); - S = A[w] = I[w](s); - return { - c() { - r = element("div"); - o = element("div"); - u = element("button"); - g = text(C); - _ = space(); - m = element("span"); - b = text(T); - E = space(); - S.c(); - attr(u, "class", "status svelte-664idh"); - attr(m, "class", "name"); - attr(o, "class", "title svelte-664idh"); - attr(r, "class", L = "labelrow " + (s[2] ? "hideeven" : "") + " svelte-664idh"); - }, - m(s, S) { - insert(s, r, S); - append(r, o); - append(o, u); - append(u, g); - append(o, _); - append(o, m); - append(m, b); - append(r, E); - A[w].m(r, null); - O = true; - if (!D) { - k = listen(u, "click", click_handler_6); - D = true; - } - }, - p(o, u) { - s = o; - if ((!O || 96 & u[0]) && C !== (C = s[18](s[71]) + "")) set_data(g, C); - if ((!O || 64 & u[0]) && T !== (T = s[56] + "")) set_data(b, T); - let _ = w; - w = select_block_type_1(s); - if (w === _) A[w].p(s, u); else { - group_outros(); - transition_out(A[_], 1, 1, (() => { - A[_] = null; - })); - check_outros(); - S = A[w]; - if (!S) { - S = A[w] = I[w](s); - S.c(); - } else S.p(s, u); - transition_in(S, 1); - S.m(r, null); - } - if (!O || 4 & u[0] && L !== (L = "labelrow " + (s[2] ? "hideeven" : "") + " svelte-664idh")) attr(r, "class", L); - }, - i(s) { - if (!O) { - transition_in(S); - O = true; - } - }, - o(s) { - transition_out(S); - O = false; - }, - d(s) { - if (s) detach(r); - A[w].d(); - D = false; - k(); - } - }; -} - -function create_each_block_2(s) { - let r, o, u, g, _, m = s[67] + "", b = ensure_array_like(s[6][s[66]]), E = []; - for (let r = 0; r < b.length; r += 1) E[r] = create_each_block_3(get_each_context_3(s, b, r)); - const out = s => transition_out(E[s], 1, 1, (() => { - E[s] = null; - })); - return { - c() { - r = element("div"); - o = element("h3"); - u = text(m); - g = space(); - for (let s = 0; s < E.length; s += 1) E[s].c(); - attr(o, "class", "svelte-664idh"); - }, - m(s, m) { - insert(s, r, m); - append(r, o); - append(o, u); - append(r, g); - for (let s = 0; s < E.length; s += 1) if (E[s]) E[s].m(r, null); - _ = true; - }, - p(s, o) { - if ((!_ || 64 & o[0]) && m !== (m = s[67] + "")) set_data(u, m); - if (461157 & o[0]) { - b = ensure_array_like(s[6][s[66]]); - let u; - for (u = 0; u < b.length; u += 1) { - const g = get_each_context_3(s, b, u); - if (E[u]) { - E[u].p(g, o); - transition_in(E[u], 1); - } else { - E[u] = create_each_block_3(g); - E[u].c(); - transition_in(E[u], 1); - E[u].m(r, null); - } - } - group_outros(); - for (u = b.length; u < E.length; u += 1) out(u); - check_outros(); - } - }, - i(s) { - if (!_) { - for (let s = 0; s < b.length; s += 1) transition_in(E[s]); - _ = true; - } - }, - o(s) { - E = E.filter(Boolean); - for (let s = 0; s < E.length; s += 1) transition_out(E[s]); - _ = false; - }, - d(s) { - if (s) detach(r); - destroy_each(E, s); - } - }; -} - -function create_if_block_52(s) { - let r, o; - const u = [ s[8], { - list: s[57] - }, { - hidden: true - } ]; - let g = {}; - for (let s = 0; s < u.length; s += 1) g = assign(g, u[s]); - r = new PluginCombo_default({ - props: g - }); - return { - c() { - create_component(r.$$.fragment); - }, - m(s, u) { - mount_component(r, s, u); - o = true; - }, - p(s, o) { - const g = 257 & o[0] ? get_spread_update(u, [ 256 & o[0] && get_spread_object(s[8]), 1 & o[0] && { - list: s[57] - }, u[2] ]) : {}; - r.$set(g); - }, - i(s) { - if (!o) { - transition_in(r.$$.fragment, s); - o = true; - } - }, - o(s) { - transition_out(r.$$.fragment, s); - o = false; - }, - d(s) { - destroy_component(r, s); - } - }; -} - -function create_else_block_32(s) { - let r, o, u, g, _ = s[17][s[59]] + ""; - return { - c() { - r = element("div"); - o = element("div"); - u = text(_); - g = space(); - attr(o, "class", "statusnote svelte-664idh"); - attr(r, "class", "noterow svelte-664idh"); - }, - m(s, _) { - insert(s, r, _); - append(r, o); - append(o, u); - append(r, g); - }, - p(s, r) { - if (33 & r[0] && _ !== (_ = s[17][s[59]] + "")) set_data(u, _); - }, - i: noop, - o: noop, - d(s) { - if (s) detach(r); - } - }; -} - -function create_if_block_23(s) { - let r, o, u, g, _, m, b, E, w, S, L, O, D, k, C, T, I, A, R, x, P, N, B, F, M, V = s[18](s[61]) + "", G = s[18](s[63]) + ""; - function click_handler_8(...r) { - return s[35](s[56], s[60], ...r); - } - const j = [ create_if_block_43, create_else_block_22 ], q = []; - function select_block_type_3(s, r) { - if (s[61] == MODE_SELECTIVE) return 0; else return 1; - } - E = select_block_type_3(s); - w = q[E] = j[E](s); - function click_handler_9(...r) { - return s[36](s[56], s[62], ...r); - } - const U = [ create_if_block_33, create_else_block_13 ], z = []; - function select_block_type_4(s, r) { - if (s[63] == MODE_SELECTIVE) return 0; else return 1; - } - R = select_block_type_4(s); - x = z[R] = U[R](s); - return { - c() { - r = element("div"); - o = element("div"); - u = element("button"); - g = text(V); - _ = space(); - m = element("span"); - m.textContent = "MAIN"; - b = space(); - w.c(); - L = space(); - O = element("div"); - D = element("div"); - k = element("button"); - C = text(G); - T = space(); - I = element("span"); - I.textContent = "DATA"; - A = space(); - x.c(); - P = space(); - attr(u, "class", "status svelte-664idh"); - attr(m, "class", "name"); - attr(o, "class", "filetitle svelte-664idh"); - attr(r, "class", S = "filerow " + (s[2] ? "hideeven" : "") + " svelte-664idh"); - attr(k, "class", "status svelte-664idh"); - attr(I, "class", "name"); - attr(D, "class", "filetitle svelte-664idh"); - attr(O, "class", N = "filerow " + (s[2] ? "hideeven" : "") + " svelte-664idh"); - }, - m(s, w) { - insert(s, r, w); - append(r, o); - append(o, u); - append(u, g); - append(o, _); - append(o, m); - append(r, b); - q[E].m(r, null); - insert(s, L, w); - insert(s, O, w); - append(O, D); - append(D, k); - append(k, C); - append(D, T); - append(D, I); - append(O, A); - z[R].m(O, null); - append(O, P); - B = true; - if (!F) { - M = [ listen(u, "click", click_handler_8), listen(k, "click", click_handler_9) ]; - F = true; - } - }, - p(o, u) { - s = o; - if ((!B || 33 & u[0]) && V !== (V = s[18](s[61]) + "")) set_data(g, V); - let _ = E; - E = select_block_type_3(s); - if (E === _) q[E].p(s, u); else { - group_outros(); - transition_out(q[_], 1, 1, (() => { - q[_] = null; - })); - check_outros(); - w = q[E]; - if (!w) { - w = q[E] = j[E](s); - w.c(); - } else w.p(s, u); - transition_in(w, 1); - w.m(r, null); - } - if (!B || 4 & u[0] && S !== (S = "filerow " + (s[2] ? "hideeven" : "") + " svelte-664idh")) attr(r, "class", S); - if ((!B || 33 & u[0]) && G !== (G = s[18](s[63]) + "")) set_data(C, G); - let m = R; - R = select_block_type_4(s); - if (R === m) z[R].p(s, u); else { - group_outros(); - transition_out(z[m], 1, 1, (() => { - z[m] = null; - })); - check_outros(); - x = z[R]; - if (!x) { - x = z[R] = U[R](s); - x.c(); - } else x.p(s, u); - transition_in(x, 1); - x.m(O, P); - } - if (!B || 4 & u[0] && N !== (N = "filerow " + (s[2] ? "hideeven" : "") + " svelte-664idh")) attr(O, "class", N); - }, - i(s) { - if (!B) { - transition_in(w); - transition_in(x); - B = true; - } - }, - o(s) { - transition_out(w); - transition_out(x); - B = false; - }, - d(s) { - if (s) { - detach(r); - detach(L); - detach(O); - } - q[E].d(); - z[R].d(); - F = false; - run_all(M); - } - }; -} - -function create_else_block_22(s) { - let r, o, u = s[17][s[61]] + ""; - return { - c() { - r = element("div"); - o = text(u); - attr(r, "class", "statusnote svelte-664idh"); - }, - m(s, u) { - insert(s, r, u); - append(r, o); - }, - p(s, r) { - if (33 & r[0] && u !== (u = s[17][s[61]] + "")) set_data(o, u); - }, - i: noop, - o: noop, - d(s) { - if (s) detach(r); - } - }; -} - -function create_if_block_43(s) { - let r, o; - const u = [ s[8], { - list: filterList(s[57], [ "PLUGIN_MAIN" ]) - }, { - hidden: false - } ]; - let g = {}; - for (let s = 0; s < u.length; s += 1) g = assign(g, u[s]); - r = new PluginCombo_default({ - props: g - }); - return { - c() { - create_component(r.$$.fragment); - }, - m(s, u) { - mount_component(r, s, u); - o = true; - }, - p(s, o) { - const g = 257 & o[0] ? get_spread_update(u, [ 256 & o[0] && get_spread_object(s[8]), 1 & o[0] && { - list: filterList(s[57], [ "PLUGIN_MAIN" ]) - }, u[2] ]) : {}; - r.$set(g); - }, - i(s) { - if (!o) { - transition_in(r.$$.fragment, s); - o = true; - } - }, - o(s) { - transition_out(r.$$.fragment, s); - o = false; - }, - d(s) { - destroy_component(r, s); - } - }; -} - -function create_else_block_13(s) { - let r, o, u = s[17][s[63]] + ""; - return { - c() { - r = element("div"); - o = text(u); - attr(r, "class", "statusnote svelte-664idh"); - }, - m(s, u) { - insert(s, r, u); - append(r, o); - }, - p(s, r) { - if (33 & r[0] && u !== (u = s[17][s[63]] + "")) set_data(o, u); - }, - i: noop, - o: noop, - d(s) { - if (s) detach(r); - } - }; -} - -function create_if_block_33(s) { - let r, o; - const u = [ s[8], { - list: filterList(s[57], [ "PLUGIN_DATA" ]) - }, { - hidden: false - } ]; - let g = {}; - for (let s = 0; s < u.length; s += 1) g = assign(g, u[s]); - r = new PluginCombo_default({ - props: g - }); - return { - c() { - create_component(r.$$.fragment); - }, - m(s, u) { - mount_component(r, s, u); - o = true; - }, - p(s, o) { - const g = 257 & o[0] ? get_spread_update(u, [ 256 & o[0] && get_spread_object(s[8]), 1 & o[0] && { - list: filterList(s[57], [ "PLUGIN_DATA" ]) - }, u[2] ]) : {}; - r.$set(g); - }, - i(s) { - if (!o) { - transition_in(r.$$.fragment, s); - o = true; - } - }, - o(s) { - transition_out(r.$$.fragment, s); - o = false; - }, - d(s) { - destroy_component(r, s); - } - }; -} - -function create_each_block_12(s) { - let r, o, u, g, _, m, b, E, w, S, L, O, D, k, C, T, I = s[18](s[59]) + "", A = s[56] + ""; - function click_handler_7(...r) { - return s[34](s[56], s[58], ...r); - } - let R = s[59] == MODE_SELECTIVE && create_if_block_52(s); - const x = [ create_if_block_23, create_else_block_32 ], P = []; - function select_block_type_2(s, r) { - if (s[59] == MODE_SELECTIVE) return 0; else return 1; - } - L = select_block_type_2(s); - O = P[L] = x[L](s); - return { - c() { - r = element("div"); - o = element("div"); - u = element("button"); - g = text(I); - _ = space(); - m = element("span"); - b = text(A); - E = space(); - if (R) R.c(); - S = space(); - O.c(); - D = empty(); - attr(u, "class", "status svelte-664idh"); - attr(m, "class", "name"); - attr(o, "class", "title svelte-664idh"); - attr(r, "class", w = "labelrow " + (s[2] ? "hideeven" : "") + " svelte-664idh"); - }, - m(s, w) { - insert(s, r, w); - append(r, o); - append(o, u); - append(u, g); - append(o, _); - append(o, m); - append(m, b); - append(r, E); - if (R) R.m(r, null); - insert(s, S, w); - P[L].m(s, w); - insert(s, D, w); - k = true; - if (!C) { - T = listen(u, "click", click_handler_7); - C = true; - } - }, - p(o, u) { - s = o; - if ((!k || 33 & u[0]) && I !== (I = s[18](s[59]) + "")) set_data(g, I); - if ((!k || 1 & u[0]) && A !== (A = s[56] + "")) set_data(b, A); - if (s[59] == MODE_SELECTIVE) if (R) { - R.p(s, u); - if (33 & u[0]) transition_in(R, 1); - } else { - R = create_if_block_52(s); - R.c(); - transition_in(R, 1); - R.m(r, null); - } else if (R) { - group_outros(); - transition_out(R, 1, 1, (() => { - R = null; - })); - check_outros(); - } - if (!k || 4 & u[0] && w !== (w = "labelrow " + (s[2] ? "hideeven" : "") + " svelte-664idh")) attr(r, "class", w); - let _ = L; - L = select_block_type_2(s); - if (L === _) P[L].p(s, u); else { - group_outros(); - transition_out(P[_], 1, 1, (() => { - P[_] = null; - })); - check_outros(); - O = P[L]; - if (!O) { - O = P[L] = x[L](s); - O.c(); - } else O.p(s, u); - transition_in(O, 1); - O.m(D.parentNode, D); - } - }, - i(s) { - if (!k) { - transition_in(R); - transition_in(O); - k = true; - } - }, - o(s) { - transition_out(R); - transition_out(O); - k = false; - }, - d(s) { - if (s) { - detach(r); - detach(S); - detach(D); - } - if (R) R.d(); - P[L].d(s); - C = false; - T(); - } - }; -} - -function create_if_block3(s) { - let r, o, u, g, _, m, b, E, w, S, L, O, D = ensure_array_like(s[4]), k = []; - for (let r = 0; r < D.length; r += 1) k[r] = create_each_block3(get_each_context3(s, D, r)); - return { - c() { - r = element("div"); - o = element("div"); - u = element("h3"); - u.textContent = "Maintenance Commands"; - g = space(); - _ = element("div"); - m = element("label"); - m.textContent = "Delete All of"; - b = space(); - E = element("select"); - for (let s = 0; s < k.length; s += 1) k[s].c(); - w = space(); - S = element("button"); - S.textContent = "🗑️"; - attr(u, "class", "svelte-664idh"); - attr(m, "for", ""); - attr(m, "class", "svelte-664idh"); - if (void 0 === s[7]) add_render_callback((() => s[37].call(E))); - attr(S, "class", "status svelte-664idh"); - attr(_, "class", "maintenancerow svelte-664idh"); - attr(r, "class", "list"); - }, - m(D, C) { - insert(D, r, C); - append(r, o); - append(o, u); - append(o, g); - append(o, _); - append(_, m); - append(_, b); - append(_, E); - for (let s = 0; s < k.length; s += 1) if (k[s]) k[s].m(E, null); - select_option(E, s[7], true); - append(_, w); - append(_, S); - if (!L) { - O = [ listen(E, "change", s[37]), listen(S, "click", s[38]) ]; - L = true; - } - }, - p(s, r) { - if (16 & r[0]) { - D = ensure_array_like(s[4]); - let o; - for (o = 0; o < D.length; o += 1) { - const u = get_each_context3(s, D, o); - if (k[o]) k[o].p(u, r); else { - k[o] = create_each_block3(u); - k[o].c(); - k[o].m(E, null); - } - } - for (;o < k.length; o += 1) k[o].d(1); - k.length = D.length; - } - if (144 & r[0]) select_option(E, s[7]); - }, - d(s) { - if (s) detach(r); - destroy_each(k, s); - L = false; - run_all(O); - } - }; -} - -function create_each_block3(s) { - let r, o, u, g = s[53] + ""; - return { - c() { - r = element("option"); - o = text(g); - r.__value = u = s[53]; - set_input_value(r, r.__value); - }, - m(s, u) { - insert(s, r, u); - append(r, o); - }, - p(s, _) { - if (16 & _[0] && g !== (g = s[53] + "")) set_data(o, g); - if (16 & _[0] && u !== (u = s[53])) { - r.__value = u; - set_input_value(r, r.__value); - } - }, - d(s) { - if (s) detach(r); - } - }; -} - -function create_fragment3(s) { - let r, o, u, g, _, m, b, E, w, S, L, O, D, k, C, T, I, A, R, x, P, N, B, F, M, V, G, j, q, U, z, W, H, K = s[1] && create_if_block_8(s), Q = s[3] && create_if_block_7(s); - const J = [ create_if_block_13, create_else_block3 ], Y = []; - function select_block_type(s, r) { - if (0 == s[0].length) return 0; else return 1; - } - A = select_block_type(s); - R = Y[A] = J[A](s); - let X = s[1] && create_if_block3(s); - return { - c() { - r = element("div"); - o = element("div"); - u = element("div"); - g = element("button"); - g.textContent = "Scan changes"; - _ = space(); - m = element("button"); - m.textContent = "Sync once"; - b = space(); - E = element("button"); - E.textContent = "Refresh"; - w = space(); - if (K) K.c(); - S = space(); - L = element("button"); - L.textContent = "Select All Shiny"; - O = space(); - D = element("div"); - k = element("button"); - k.textContent = "Apply All"; - C = space(); - if (Q) Q.c(); - T = space(); - I = element("div"); - R.c(); - x = space(); - if (X) X.c(); - P = space(); - N = element("div"); - B = element("label"); - F = element("span"); - F.textContent = "Hide not applicable items"; - M = element("input"); - V = space(); - G = element("div"); - j = element("label"); - q = element("span"); - q.textContent = "Maintenance mode"; - U = element("input"); - attr(g, "class", "svelte-664idh"); - attr(m, "class", "svelte-664idh"); - attr(E, "class", "svelte-664idh"); - attr(L, "class", "svelte-664idh"); - attr(u, "class", "buttons svelte-664idh"); - attr(k, "class", "svelte-664idh"); - attr(D, "class", "buttons svelte-664idh"); - attr(I, "class", "list"); - attr(F, "class", "svelte-664idh"); - attr(M, "type", "checkbox"); - attr(B, "class", "svelte-664idh"); - attr(N, "class", "buttons svelte-664idh"); - attr(q, "class", "svelte-664idh"); - attr(U, "type", "checkbox"); - attr(j, "class", "svelte-664idh"); - attr(G, "class", "buttons svelte-664idh"); - }, - m(R, J) { - insert(R, r, J); - append(r, o); - append(o, u); - append(u, g); - append(u, _); - append(u, m); - append(u, b); - append(u, E); - append(u, w); - if (K) K.m(u, null); - append(u, S); - append(u, L); - append(o, O); - append(o, D); - append(D, k); - append(r, C); - if (Q) Q.m(r, null); - append(r, T); - append(r, I); - Y[A].m(I, null); - append(r, x); - if (X) X.m(r, null); - append(r, P); - append(r, N); - append(N, B); - append(B, F); - append(B, M); - M.checked = s[2]; - append(r, V); - append(r, G); - append(G, j); - append(j, q); - append(j, U); - U.checked = s[1]; - z = true; - if (!W) { - H = [ listen(g, "click", s[25]), listen(m, "click", s[26]), listen(E, "click", s[27]), listen(L, "click", s[29]), listen(k, "click", s[30]), listen(M, "change", s[39]), listen(U, "change", s[40]) ]; - W = true; - } - }, - p(s, o) { - if (s[1]) if (K) K.p(s, o); else { - K = create_if_block_8(s); - K.c(); - K.m(u, S); - } else if (K) { - K.d(1); - K = null; - } - if (s[3]) if (Q) ; else { - Q = create_if_block_7(s); - Q.c(); - Q.m(r, T); - } else if (Q) { - Q.d(1); - Q = null; - } - let g = A; - A = select_block_type(s); - if (A === g) Y[A].p(s, o); else { - group_outros(); - transition_out(Y[g], 1, 1, (() => { - Y[g] = null; - })); - check_outros(); - R = Y[A]; - if (!R) { - R = Y[A] = J[A](s); - R.c(); - } else R.p(s, o); - transition_in(R, 1); - R.m(I, null); - } - if (s[1]) if (X) X.p(s, o); else { - X = create_if_block3(s); - X.c(); - X.m(r, P); - } else if (X) { - X.d(1); - X = null; - } - if (4 & o[0]) M.checked = s[2]; - if (2 & o[0]) U.checked = s[1]; - }, - i(s) { - if (!z) { - transition_in(R); - z = true; - } - }, - o(s) { - transition_out(R); - z = false; - }, - d(s) { - if (s) detach(r); - if (K) K.d(); - if (Q) Q.d(); - Y[A].d(); - if (X) X.d(); - W = false; - run_all(H); - } - }; -} - -var PREFIX_PLUGIN_ALL = "PLUGIN_ALL", PREFIX_PLUGIN_DATA = "PLUGIN_DATA", PREFIX_PLUGIN_MAIN = "PLUGIN_MAIN"; - -function filterList(s, r) { - return s.filter((s => -1 !== r.indexOf(s.category))).sort(((s, r) => `${s.category}-${s.name}`.localeCompare(`${r.category}-${r.name}`))); -} - -function groupBy(s, r) { - let o = {}; - for (const u of s) { - const s = r in u ? u[r] : ""; - o[s] = o[s] || []; - o[s].push(u); - } - for (const s in o) o[s] = o[s].sort(((s, r) => `${s.category}-${s.name}`.localeCompare(`${r.category}-${r.name}`))); - return Object.entries(o).sort((([s], [r]) => `${s}`.localeCompare(`${r}`))); -} - -function instance3(s, r, o) { - let u, g, _, {plugin: m} = r; - const b = m.addOnConfigSync; - let E = [], w = 0, S = false, L = false, O = 0, D = false; - async function requestUpdate() { - await b.updatePluginList(true); - } - async function requestReload() { - await b.reloadPluginList(true); - } - let k = []; - pluginList.subscribe((s => { - o(0, E = s); - o(4, k = unique(E.map((s => s.term)))); - })); - pluginIsEnumerating.subscribe((s => { - o(3, L = s); - })); - onMount((async () => { - requestUpdate(); - })); - async function scanAgain() { - await b.scanAllConfigFiles(true); - await requestUpdate(); - } - async function replicate2() { - await m.replicate(true); - } - function selectAllNewest() { - o(21, w++, w); - } - function applyAll() { - o(22, O++, O); - } - async function applyData(s) { - return await b.applyData(s); - } - async function compareData(s, r) { - return await b.compareUsingDisplayData(s, r); - } - async function deleteData(s) { - return await b.deleteData(s); - } - function askMode(s, r, o) { - var u; - const g = new import_obsidian3.Menu; - g.addItem((s => s.setTitle(r).setIsLabel(true))); - g.addSeparator(); - const _ = null !== (u = I.get(o)) && void 0 !== u ? u : MODE_SELECTIVE; - for (const r of [ MODE_SELECTIVE, MODE_AUTOMATIC, MODE_PAUSED ]) g.addItem((u => { - u.setTitle(`${getIcon(r)}:${T[r]}`).onClick((u => { - if (r === MODE_AUTOMATIC) askOverwriteModeForAutomatic(s, o); else setMode(o, r); - })).setChecked(_ == r).setDisabled(_ == r); - })); - g.showAtMouseEvent(s); - } - function applyAutomaticSync(s, r) { - var o, u; - setMode(s, MODE_AUTOMATIC); - const g = normalizePath(m.app.vault.configDir), _ = (null !== (u = null === (o = m.settings.pluginSyncExtendedSetting[s]) || void 0 === o ? void 0 : o.files) && void 0 !== u ? u : []).map((s => `${g}/${s}`)); - m.addOnHiddenFileSync.syncInternalFilesAndDatabase(r, true, false, _); - } - function askOverwriteModeForAutomatic(s, r) { - const o = new import_obsidian3.Menu; - o.addItem((s => s.setTitle("Initial Action").setIsLabel(true))); - o.addSeparator(); - o.addItem((s => { - s.setTitle("↑: Overwrite Remote").onClick((s => { - applyAutomaticSync(r, "pushForce"); - })); - })).addItem((s => { - s.setTitle("↓: Overwrite Local").onClick((s => { - applyAutomaticSync(r, "pullForce"); - })); - })).addItem((s => { - s.setTitle("⇅: Use newer").onClick((s => { - applyAutomaticSync(r, "safe"); - })); - })); - o.showAtMouseEvent(s); - } - const C = { - [MODE_SELECTIVE]: "🔀", - [MODE_PAUSED]: "⛔", - [MODE_AUTOMATIC]: "✨" - }, T = { - [MODE_SELECTIVE]: "Selective", - [MODE_PAUSED]: "Ignore", - [MODE_AUTOMATIC]: "Automatic" - }; - function setMode(s, r) { - if (s.startsWith(PREFIX_PLUGIN_ALL + "/")) { - setMode(PREFIX_PLUGIN_DATA + s.substring(PREFIX_PLUGIN_ALL.length), r); - setMode(PREFIX_PLUGIN_MAIN + s.substring(PREFIX_PLUGIN_ALL.length), r); - } - const u = unique(E.filter((r => `${r.category}/${r.name}` == s)).map((s => s.files)).flat().map((s => s.filename))); - I.set(s, r); - o(5, A = I); - if (!(s in m.settings.pluginSyncExtendedSetting)) o(20, m.settings.pluginSyncExtendedSetting[s] = { - key: s, - mode: r, - files: [] - }, m); - o(20, m.settings.pluginSyncExtendedSetting[s].files = u, m); - o(20, m.settings.pluginSyncExtendedSetting[s].mode = r, m); - m.saveSettingData(); - } - function getIcon(s) { - if (s in C) return C[s]; - } - let I = new Map, A = new Map; - for (const {key: s, mode: r} of Object.values(m.settings.pluginSyncExtendedSetting)) I.set(s, r); - A = I; - let R = {}, x = ""; - async function deleteAllItems(s) { - const r = E.filter((r => r.term == s)); - for (const s of r) await deleteData(s); - b.reloadPluginList(true); - } - s.$$set = s => { - if ("plugin" in s) o(20, m = s.plugin); - }; - s.$$.update = () => { - if (1048576 & s.$$.dirty[0]) o(24, g = m.deviceAndVaultName); - if (32505858 & s.$$.dirty[0]) o(8, _ = { - thisTerm: g, - hideNotApplicable: u, - selectNewest: w, - applyAllPluse: O, - applyData, - compareData, - deleteData, - plugin: m, - isMaintenanceMode: D - }); - if (1048577 & s.$$.dirty[0]) { - const s = Object.keys(m.settings.pluginSyncExtendedSetting); - o(6, R = [ ...E, ...s.map((s => `${s}///`.split("/"))).filter((s => s[0] && s[1])).map((s => ({ - category: s[0], - name: s[1], - displayName: s[1] - }))) ].sort(((s, r) => { - var o, u; - return (null !== (o = s.displayName) && void 0 !== o ? o : s.name).localeCompare(null !== (u = r.displayName) && void 0 !== u ? u : r.name); - })).reduce(((s, r) => { - var o, u; - return { - ...s, - [r.category]: unique(r.category in s ? [ ...s[r.category], null !== (o = r.displayName) && void 0 !== o ? o : r.name ] : [ null !== (u = r.displayName) && void 0 !== u ? u : r.name ]) - }; - }), {})); - } - }; - o(23, u = false); - return [ E, D, S, L, k, A, R, x, _, requestUpdate, requestReload, { - CONFIG: "Configuration", - THEME: "Themes", - SNIPPET: "Snippets" - }, scanAgain, replicate2, selectAllNewest, applyAll, askMode, T, getIcon, deleteAllItems, m, w, O, u, g, () => scanAgain(), () => replicate2(), () => requestUpdate(), () => requestReload(), () => selectAllNewest(), () => applyAll(), ([s, r]) => s in R, (s, r, o, u) => askMode(u, `${s}/${r}`, o), (s, r, o) => o.category == s && o.name == r, (s, r, o) => askMode(o, `${PREFIX_PLUGIN_ALL}/${s}`, r), (s, r, o) => askMode(o, `${PREFIX_PLUGIN_MAIN}/${s}/MAIN`, r), (s, r, o) => askMode(o, `${PREFIX_PLUGIN_DATA}/${s}`, r), function select_change_handler() { - x = select_value(this); - o(7, x); - o(4, k); - }, s => { - deleteAllItems(x); - }, function input0_change_handler() { - S = this.checked; - o(2, S); - }, function input1_change_handler() { - D = this.checked; - o(1, D); - } ]; -} - -var PluginPane = class extends SvelteComponent { - constructor(s) { - super(); - init2(this, s, instance3, create_fragment3, safe_not_equal, { - plugin: 20 - }, add_css3, [ -1, -1, -1 ]); - } -}, PluginPane_default = PluginPane, PluginDialogModal = class extends import_obsidian.Modal { - isOpened() { - return null != this.component; - } - constructor(s, r) { - super(s); - this.plugin = r; - } - onOpen() { - const {contentEl: s} = this; - this.titleEl.setText("Customization Sync (Beta2)"); - if (!this.component) this.component = new PluginPane_default({ - target: s, - props: { - plugin: this.plugin - } - }); - } - onClose() { - if (this.component) { - this.component.$destroy(); - this.component = void 0; - } - } -}, InputStringDialog = class extends import_obsidian.Modal { - constructor(s, r, o, u, g, _) { - super(s); - this.result = false; - this.isManuallyClosed = false; - this.isPassword = false; - this.onSubmit = _; - this.title = r; - this.placeholder = u; - this.key = o; - this.isPassword = g; - } - onOpen() { - const {contentEl: s} = this; - this.titleEl.setText(this.title); - const r = s.createDiv(); - new import_obsidian.Setting(r).setName(this.key).setClass(this.isPassword ? "password-input" : "normal-input").addText((s => s.onChange((s => { - this.result = s; - })))); - new import_obsidian.Setting(r).addButton((s => s.setButtonText("Ok").setCta().onClick((() => { - this.isManuallyClosed = true; - this.close(); - })))).addButton((s => s.setButtonText("Cancel").setCta().onClick((() => { - this.close(); - })))); - } - onClose() { - const {contentEl: s} = this; - s.empty(); - if (this.isManuallyClosed) this.onSubmit(this.result); else this.onSubmit(false); - } -}, PopoverSelectString = class extends import_obsidian.FuzzySuggestModal { - constructor(s, r, o, u, g) { - super(s); - this.callback = () => {}; - this.getItemsFun = () => [ "yes", "no" ]; - this.app = s; - this.setPlaceholder((null != o ? o : "y/n) ") + r); - if (u) this.getItemsFun = u; - this.callback = g; - } - getItems() { - return this.getItemsFun(); - } - getItemText(s) { - return s; - } - onChooseItem(s, r) { - var o; - null == (o = this.callback) || o.call(this, s); - this.callback = void 0; - } - onClose() { - setTimeout((() => { - if (this.callback) { - this.callback(""); - this.callback = void 0; - } - }), 100); - } -}, MessageBox = class extends import_obsidian.Modal { - constructor(s, r, o, u, g, _, m) { - super(s.app); - this.result = false; - this.isManuallyClosed = false; - this.timer = void 0; - this.plugin = s; - this.title = r; - this.contentMd = o; - this.buttons = u; - this.onSubmit = m; - this.defaultAction = g; - this.timeout = _; - if (this.timeout) this.timer = setInterval((() => { - var s; - if (void 0 !== this.timeout) { - this.timeout--; - if (this.timeout < 0) { - if (this.timer) { - clearInterval(this.timer); - this.timer = void 0; - } - this.result = g; - this.isManuallyClosed = true; - this.close(); - } else null == (s = this.defaultButtonComponent) || s.setButtonText(`( ${this.timeout} ) ${g}`); - } - }), 1e3); - } - onOpen() { - const {contentEl: s} = this; - this.titleEl.setText(this.title); - s.addEventListener("click", (() => { - if (this.timer) { - clearInterval(this.timer); - this.timer = void 0; - } - })); - const r = s.createDiv(); - import_obsidian.MarkdownRenderer.render(this.plugin.app, this.contentMd, r, "/", this.plugin); - const o = new import_obsidian.Setting(s); - o.controlEl.style.flexWrap = "wrap"; - for (const s of this.buttons) o.addButton((r => { - r.setButtonText(s).onClick((() => { - this.isManuallyClosed = true; - this.result = s; - if (this.timer) { - clearInterval(this.timer); - this.timer = void 0; - } - this.close(); - })); - if (s == this.defaultAction) this.defaultButtonComponent = r; - return r; - })); - } - onClose() { - const {contentEl: s} = this; - s.empty(); - if (this.timer) { - clearInterval(this.timer); - this.timer = void 0; - } - if (this.isManuallyClosed) this.onSubmit(this.result); else this.onSubmit(false); - } -}; - -function confirmWithMessage(s, r, o, u, g, _) { - return new Promise((m => { - new MessageBox(s, r, o, u, g, _, (s => m(s))).open(); - })); -} - -var __save, _save_fn, __load, _load_fn, __queueSave, _queueSave_fn, sameChangePairs, YieldOperationNumbers = 100, PersistentMap = class { - constructor(s, r) { - __privateAdd(this, __save); - __privateAdd(this, __load); - __privateAdd(this, __queueSave); - this._setCount = YieldOperationNumbers; - this._key = s; - this._map = new Map(null != r ? r : []); - __privateMethod(this, __load, _load_fn).call(this, r); - } - flush() { - __privateMethod(this, __save, _save_fn).call(this); - } - delete(s) { - const r = this._map.delete(s); - __privateMethod(this, __queueSave, _queueSave_fn).call(this); - return r; - } - has(s) { - return this._map.has(s); - } - set(s, r) { - this._map.set(s, r); - __privateMethod(this, __queueSave, _queueSave_fn).call(this); - return this; - } - clear() { - this._map = new Map; - __privateMethod(this, __save, _save_fn).call(this); - } - get(s, r) { - const o = this._map.get(s); - if (void 0 === o) return r; else return o; - } -}; - -__save = new WeakSet; - -_save_fn = function() { - localStorage.setItem(this._key, JSON.stringify([ ...this._map.entries() ])); -}; - -__load = new WeakSet; - -_load_fn = function(s = []) { - var r; - try { - const o = null != (r = localStorage.getItem(this._key)) ? r : "", u = "" === o ? "[]" : o, g = JSON.parse(u); - this._map = new Map([ ...g, ...s ]); - } catch (r) { - console.log(`Map read error : ${this._key}`); - console.dir(r); - this._map = new Map([ ...s ]); - } - return Promise.resolve(); -}; - -__queueSave = new WeakSet; - -_queueSave_fn = function() { - this._setCount--; - if (this._setCount < 0) { - this._setCount = YieldOperationNumbers; - scheduleTask(`save-map-${this._key}`, 0, (() => __privateMethod(this, __save, _save_fn).call(this))); - } - scheduleTask(`save-map-${this._key}`, 150, (() => __privateMethod(this, __save, _save_fn).call(this))); -}; - -function initializeStores(s) { - sameChangePairs = new PersistentMap(`ls-persist-same-changes-${s}`); -} - -async function path2id(s, r) { - const o = s.split(":"), u = o.pop(), g = normalizePath(u); - o.push(g); - const _ = o.join(":"); - return await path2id_base(_, r); -} - -function id2path(s, r) { - const o = id2path_base(s, r).split(":"), u = o.pop(), g = normalizePath(u); - o.push(g); - return o.join(":"); -} - -function getPath2(s) { - return id2path(s._id, s); -} - -function getPathWithoutPrefix(s) { - return stripAllPrefixes(getPath2(s)); -} - -function getPathFromTFile(s) { - return s.path; -} - -var memos = {}; - -function memoObject(s, r) { - memos[s] = r; - return memos[s]; -} - -async function memoIfNotExist(s, r) { - if (!(s in memos)) { - const o = r(), u = o instanceof Promise ? await o : o; - memos[s] = u; - } - return memos[s]; -} - -function retrieveMemoObject(s) { - if (s in memos) return memos[s]; else return false; -} - -function disposeMemoObject(s) { - delete memos[s]; -} - -function isSensibleMargeApplicable(s) { - if (s.endsWith(".md")) return true; else return false; -} - -function isObjectMargeApplicable(s) { - if (s.endsWith(".canvas")) return true; - if (s.endsWith(".json")) return true; else return false; -} - -function tryParseJSON(s, r) { - try { - return JSON.parse(s); - } catch (s) { - return r; - } -} - -var MARK_OPERATOR = "", MARK_DELETED = `${MARK_OPERATOR}__DELETED`, MARK_ISARRAY = `${MARK_OPERATOR}__ARRAY`, MARK_SWAPPED = `${MARK_OPERATOR}__SWAP`; - -function unorderedArrayToObject(s) { - return s.map((s => ({ - [s.id]: s - }))).reduce(((s, r) => ({ - ...s, - ...r - })), {}); -} - -function objectToUnorderedArray(s) { - const r = Object.entries(s); - if (r.some((s => { - var r; - return s[0] != (null == (r = s[1]) ? void 0 : r.id); - }))) throw new Error("Item looks like not unordered array"); - return r.map((s => s[1])); -} - -function generatePatchUnorderedArray(s, r) { - if (s.every((s => "object" == typeof s && "id" in s)) && r.every((s => "object" == typeof s && "id" in s))) { - const o = generatePatchObj(unorderedArrayToObject(s), unorderedArrayToObject(r)); - if (Object.keys(o).length > 0) return { - [MARK_ISARRAY]: o - }; else return {}; - } - return { - [MARK_SWAPPED]: r - }; -} - -function generatePatchObj(s, r) { - const o = Object.entries(s), u = new Map(o), g = {}, _ = Object.entries(r); - for (const [s, r] of _) if (!u.has(s)) { - g[s] = r; - u.delete(s); - } else { - const o = u.get(s); - if (typeof o != typeof r || Array.isArray(o) !== Array.isArray(r)) g[s] = { - [MARK_SWAPPED]: r - }; else if ("object" == typeof o && "object" == typeof r && !Array.isArray(o) && !Array.isArray(r)) { - const u = generatePatchObj(o, r); - if (Object.keys(u).length > 0) g[s] = u; - } else if ("object" == typeof o && "object" == typeof r && Array.isArray(o) && Array.isArray(r)) { - const u = generatePatchUnorderedArray(o, r); - if (Object.keys(u).length > 0) g[s] = u; - } else if ("object" != typeof o && "object" != typeof r) { - if (JSON.stringify(u.get(s)) !== JSON.stringify(r)) g[s] = r; - } else if (JSON.stringify(u.get(s)) !== JSON.stringify(r)) g[s] = { - [MARK_SWAPPED]: r - }; - u.delete(s); - } - for (const [s] of u) g[s] = MARK_DELETED; - return g; -} - -function applyPatch(s, r) { - const o = s, u = Object.entries(r); - for (const [s, r] of u) if (r != MARK_DELETED) if ("object" == typeof r) { - if (MARK_SWAPPED in r) { - o[s] = r[MARK_SWAPPED]; - continue; - } - if (MARK_ISARRAY in r) { - if (!(s in o)) o[s] = []; - if (!Array.isArray(o[s])) throw new Error("Patch target type is mismatched (array to something)"); - const u = objectToUnorderedArray(applyPatch(unorderedArrayToObject(o[s]), r[MARK_ISARRAY])); - o[s] = [ ...u ]; - } else { - if (!(s in o)) { - o[s] = r; - continue; - } - o[s] = applyPatch(o[s], r); - } - } else o[s] = r; else delete o[s]; - return o; -} - -function mergeObject(s, r) { - const o = Object.entries(r), u = { - ...s - }; - if (typeof s != typeof r || Array.isArray(s) !== Array.isArray(r)) return r; - for (const [s, r] of o) if (s in u) { - const o = u[s]; - if (typeof r != typeof o || Array.isArray(r) !== Array.isArray(o)) u[s] = r; else if ("object" == typeof r && "object" == typeof o && !Array.isArray(r) && !Array.isArray(o)) u[s] = mergeObject(r, o); else if ("object" == typeof r && "object" == typeof o && Array.isArray(r) && Array.isArray(o)) u[s] = [ ...new Set([ ...r, ...o ]) ]; else u[s] = r; - } else u[s] = r; - const g = Object.fromEntries(Object.entries(u).sort(((s, r) => s[0] < r[0] ? -1 : s[0] > r[0] ? 1 : 0))); - if (Array.isArray(s) && Array.isArray(r)) return Object.values(g); else return g; -} - -function flattenObject(s, r = []) { - if ("object" != typeof s) return [ [ r.join("."), s ] ]; - if (Array.isArray(s)) return [ [ r.join("."), JSON.stringify(s) ] ]; - const o = Object.entries(s), u = []; - for (const [s, g] of o) { - const o = flattenObject(g, [ ...r, s ]); - u.push(...o); - } - return u; -} - -function isValidPath(s) { - if (import_obsidian.Platform.isDesktop) { - if ("darwin" == process.platform) return isValidFilenameInDarwin(s); - if ("linux" == process.platform) return isValidFilenameInLinux(s); else return isValidFilenameInWidows(s); - } - if (import_obsidian.Platform.isAndroidApp) return isValidFilenameInAndroid(s); - if (import_obsidian.Platform.isIosApp) return isValidFilenameInDarwin(s); - Logger("Could not determine platform for checking filename", LOG_LEVEL_VERBOSE); - return isValidFilenameInWidows(s); -} - -function isInternalMetadata(s) { - return s.startsWith(ICHeader); -} - -function stripInternalMetadataPrefix(s) { - return s.substring(ICHeaderLength); -} - -function isChunk(s) { - return s.startsWith(CHeader); -} - -function isPluginMetadata(s) { - return s.startsWith(PSCHeader); -} - -function isCustomisationSyncMetadata(s) { - return s.startsWith(ICXHeader); -} - -var askYesNo = (s, r) => new Promise((o => { - new PopoverSelectString(s, r, void 0, void 0, (s => o(s))).open(); -})), askSelectString = (s, r, o) => { - const getItemsFun = () => o; - return new Promise((o => { - new PopoverSelectString(s, r, "", getItemsFun, (s => o(s))).open(); - })); -}, askString = (s, r, o, u, g = false) => new Promise((_ => { - new InputStringDialog(s, r, o, u, g, (s => _(s))).open(); -})), PeriodicProcessor = class { - constructor(s, r) { - this._plugin = s; - this._process = r; - } - async process() { - try { - await this._process(); - } catch (s) { - Logger(s); - } - } - enable(s) { - this.disable(); - if (0 != s) { - this._timer = window.setInterval((() => fireAndForget((async () => { - await this.process(); - if (this._plugin._unloaded) this.disable(); - }))), s); - this._plugin.registerInterval(this._timer); - } - } - disable() { - if (void 0 !== this._timer) { - window.clearInterval(this._timer); - this._timer = void 0; - } - } -}, _requestToCouchDB = async (s, r, o, u, g, _, m) => { - const b = String.fromCharCode.apply(null, [ ...writeString(`${r}:${o}`) ]), E = { - url: `${s}/${g}`, - method: m || (_ ? "PUT" : "GET"), - headers: { - authorization: "Basic " + window.btoa(b), - origin: u - }, - contentType: "application/json", - body: _ ? JSON.stringify(_) : void 0 - }; - return await (0, import_obsidian.requestUrl)(E); -}, requestToCouchDB = async (s, r, o, u = "", g, _, m) => { - const b = "_node/_local/_config" + (g ? "/" + g : ""); - return await _requestToCouchDB(s, r, o, u, b, _, m); -}; - -async function performRebuildDB(s, r) { - if ("localOnly" == r) await s.addOnSetup.fetchLocal(); - if ("localOnlyWithChunks" == r) await s.addOnSetup.fetchLocal(true); - if ("remoteOnly" == r) await s.addOnSetup.rebuildRemote(); - if ("rebuildBothByThisDevice" == r) await s.addOnSetup.rebuildEverything(); -} - -var BASE_IS_NEW = Symbol("base"), TARGET_IS_NEW = Symbol("target"), EVEN = Symbol("even"), resolution = 2e3; - -function compareMTime(s, r) { - const o = ~~(s / resolution) * resolution, u = ~~(r / resolution) * resolution; - if (o == u) return EVEN; - if (o > u) return BASE_IS_NEW; - if (o < u) return TARGET_IS_NEW; - throw new Error("Unexpected error"); -} - -function markChangesAreSame(s, r, o) { - var u; - if (r === o) return true; - const g = "string" == typeof s ? s : s instanceof import_obsidian.TFile ? s.path : null != (u = s.path) ? u : s._id, _ = sameChangePairs.get(g, []) || []; - if (_.some((s => s == r || s == o))) sameChangePairs.set(g, [ ...new Set([ ..._, r, o ]) ]); else sameChangePairs.set(g, [ r, o ]); -} - -function isMarkedAsSameChanges(s, r) { - var o; - const u = "string" == typeof s ? s : s instanceof import_obsidian.TFile ? s.path : null != (o = s.path) ? o : s._id, g = sameChangePairs.get(u, []) || []; - if (r.every((s => -1 !== g.indexOf(s)))) return EVEN; -} - -function compareFileFreshness(s, r) { - var o, u, g, _, m, b; - if (void 0 === s && null == r) return EVEN; - if (null == s) return TARGET_IS_NEW; - if (null == r) return BASE_IS_NEW; - const E = s instanceof import_obsidian.TFile ? null != (u = null == (o = null == s ? void 0 : s.stat) ? void 0 : o.mtime) ? u : 0 : null != (g = null == s ? void 0 : s.mtime) ? g : 0, w = r instanceof import_obsidian.TFile ? null != (m = null == (_ = null == r ? void 0 : r.stat) ? void 0 : _.mtime) ? m : 0 : null != (b = null == r ? void 0 : r.mtime) ? b : 0; - if (E && w && isMarkedAsSameChanges(s, [ E, w ])) return EVEN; else return compareMTime(E, w); -} - -var import_obsidian5 = require("obsidian"), ObsidianLiveSyncSettingTab = class extends import_obsidian.PluginSettingTab { - constructor(s, r) { - super(s, r); - this.selectedScreen = ""; - this.plugin = r; - } - async testConnection() { - const s = await this.plugin.replicator.connectRemoteCouchDBWithSetting(this.plugin.settings, this.plugin.isMobile, true); - if ("string" != typeof s) this.plugin.addLog(`Connected to ${s.info.db_name}`, LOG_LEVEL_NOTICE); else this.plugin.addLog(`could not connect to ${this.plugin.settings.couchDB_URI} : ${this.plugin.settings.couchDB_DBNAME} \n(${s})`, LOG_LEVEL_NOTICE); - } - askReload() { - scheduleTask("configReload", 250, (async () => { - if ("yes" == await askYesNo(this.app, "Do you want to restart and reload Obsidian now?")) this.app.commands.executeCommandById("app:reload"); - })); - } - closeSetting() { - this.plugin.app.setting.close(); - } - display() { - var s; - const {containerEl: r} = this; - let o = this.plugin.settings.encrypt, u = this.plugin.settings.passphrase, g = this.plugin.settings.useDynamicIterationCount; - r.empty(); - r.createEl("h2", { - text: "Settings for Self-hosted LiveSync." - }); - r.addClass("sls-setting"); - r.removeClass("isWizard"); - const _ = r.createDiv(""), m = {}, addScreenElement = (s, r) => { - if (!(s in m)) m[s] = []; - m[s].push(r); - }; - _.addClass("sls-setting-menu"); - _.innerHTML = "\n\n\n\n\n\n\n\n\n "; - const b = _.querySelectorAll(".sls-setting-label"), changeDisplay = s => { - for (const r in m) if (r == s) m[r].forEach((s => s.removeClass("setting-collapsed"))); else m[r].forEach((s => s.addClass("setting-collapsed"))); - _.querySelectorAll(".sls-setting-label").forEach((s => { - s.removeClass("selected"); - s.querySelector("input[type=radio]").checked = false; - })); - _.querySelectorAll(`.sls-setting-label.c-${s}`).forEach((s => { - s.addClass("selected"); - s.querySelector("input[type=radio]").checked = true; - })); - this.selectedScreen = s; - }; - b.forEach((s => { - const r = s.querySelector(".sls-setting-tab"); - if (r) r.addEventListener("change", (r => { - b.forEach((s => s.removeClass("selected"))); - changeDisplay(r.currentTarget.value); - s.addClass("selected"); - })); - })); - const E = r.createDiv(), w = E.createEl("h3", { - text: "Updates" - }), S = E.createEl("div", { - text: "" - }), L = "0.22.16", O = ~~(versionNumberString2Number(L) / 1e3), D = createSpan(); - D.addClass("sls-header-button"); - D.innerHTML = ""; - if (O > this.plugin.settings.lastReadUpdates) { - const r = w.appendChild(D); - null == (s = r.querySelector("button")) || s.addEventListener("click", (async () => { - this.plugin.settings.lastReadUpdates = O; - await this.plugin.saveSettings(); - r.remove(); - })); - } - import_obsidian.MarkdownRenderer.render(this.plugin.app, "### 0.22.0\nA few years passed since Self-hosted LiveSync was born, and our codebase had been very complicated. This could be patient now, but it should be a tremendous hurt.\nTherefore at v0.22.0, for future maintainability, I refined task scheduling logic totally.\n\nOf course, I think this would be our suffering in some cases. However, I would love to ask you for your cooperation and contribution.\n\nSorry for being absent so much long. And thank you for your patience!\n\nNote: we got a very performance improvement.\nNote at 0.22.2: **Now, to rescue mobile devices, Maximum file size is set to 50 by default**. Please configure the limit as you need. If you do not want to limit the sizes, set zero manually, please.\n\n#### Version history\n- 0.22.16:\n - Fixed:\n - Fixed the issue that binary files were sometimes corrupted.\n - Fixed customisation sync data could be corrupted.\n - Improved:\n - Now the remote database costs lower memory.\n - This release requires a brief wait on the first synchronisation, to track the latest changeset again.\n - Description added for the `Device name`.\n - Refactored:\n - Many type-errors have been resolved.\n - Obsolete file has been deleted.\n- 0.22.15:\n - Improved:\n - Faster start-up by removing too many logs which indicates normality\n - By streamlined scanning of customised synchronisation extra phases have been deleted.\n- 0.22.14:\n - New feature:\n - We can disable the status bar in the setting dialogue.\n - Improved:\n - Now some files are handled as correct data type.\n - Customisation sync now uses the digest of each file for better performance.\n - The status in the Editor now works performant.\n - Refactored:\n - Common functions have been ready and the codebase has been organised.\n - Stricter type checking following TypeScript updates.\n - Remove old iOS workaround for simplicity and performance.\n- 0.22.13:\n - Improved:\n - Now using HTTP for the remote database URI warns of an error (on mobile) or notice (on desktop).\n - Refactored:\n - Dependencies have been polished.\n- 0.22.12:\n - Changed:\n - The default settings has been changed.\n - Improved:\n - Default and preferred settings are applied on completion of the wizard.\n - Fixed:\n - Now Initialisation `Fetch` will be performed smoothly and there will be fewer conflicts.\n - No longer stuck while Handling transferred or initialised documents.\n... To continue on to `updates_old.md`.", S, "/", this.plugin); - addScreenElement("100", E); - const isAnySyncEnabled = () => { - if (this.plugin.settings.liveSync) return true; - if (this.plugin.settings.periodicReplication) return true; - if (this.plugin.settings.syncOnFileOpen) return true; - if (this.plugin.settings.syncOnSave) return true; - if (this.plugin.settings.syncOnEditorSave) return true; - if (this.plugin.settings.syncOnStart) return true; - if (this.plugin.settings.syncAfterMerge) return true; - if ("CONNECTED" == this.plugin.replicator.syncStatus) return true; - if ("PAUSED" == this.plugin.replicator.syncStatus) return true; else return false; - }; - let k = false; - const C = r.createDiv(); - C.createEl("h3", { - text: "Setup wizard" - }); - new import_obsidian.Setting(C).setName("Use the copied setup URI").setDesc("To setup Self-hosted LiveSync, this method is the most preferred one.").addButton((s => { - s.setButtonText("Use").onClick((async () => { - this.closeSetting(); - await this.plugin.addOnSetup.command_openSetupURI(); - })); - })); - if (this.plugin.settings.isConfigured) new import_obsidian.Setting(C).setName("Copy current settings as a new setup URI").addButton((s => { - s.setButtonText("Copy").onClick((async () => { - await this.plugin.addOnSetup.command_copySetupURI(); - })); - })); - new import_obsidian.Setting(C).setName("Minimal setup").addButton((s => { - s.setButtonText("Start").onClick((async () => { - this.plugin.settings.liveSync = false; - this.plugin.settings.periodicReplication = false; - this.plugin.settings.syncOnSave = false; - this.plugin.settings.syncOnEditorSave = false; - this.plugin.settings.syncOnStart = false; - this.plugin.settings.syncOnFileOpen = false; - this.plugin.settings.syncAfterMerge = false; - this.plugin.replicator.closeReplication(); - await this.plugin.saveSettings(); - r.addClass("isWizard"); - applyDisplayEnabled(); - k = true; - changeDisplay("0"); - })); - })); - if (!this.plugin.settings.isConfigured) new import_obsidian.Setting(C).setName("Enable LiveSync on this device as the set-up was completed manually").addButton((s => { - s.setButtonText("Enable").onClick((async () => { - this.plugin.settings.isConfigured = true; - await this.plugin.saveSettings(); - this.askReload(); - })); - })); - if (this.plugin.settings.isConfigured) new import_obsidian.Setting(C).setName("Discard exist settings and databases").addButton((s => { - s.setButtonText("Discard").onClick((async () => { - if ("yes" == await askYesNo(this.plugin.app, "Do you really want to discard exist settings and databases?")) { - this.plugin.settings = { - ...DEFAULT_SETTINGS - }; - await this.plugin.saveSettingData(); - await this.plugin.resetLocalDatabase(); - this.askReload(); - } - })).setWarning(); - })); - C.createEl("h3", { - text: "Online Tips" - }); - const T = "vrtmrz/obsidian-livesync", I = "/docs/troubleshooting.md", A = `https://raw.githubusercontent.com/${T}/main`; - C.createEl("div", "", (s => s.innerHTML = `Open in browser`)); - const R = C.createEl("div", { - text: "", - cls: "sls-troubleshoot-preview" - }), loadMarkdownPage = async (s, r = "") => { - var o, u; - R.style.minHeight = R.clientHeight + "px"; - R.empty(); - const g = (s.startsWith("/") ? s : `${r}/${s}`).split("/"), _ = g.pop(), m = g.join("/"); - let b = ""; - try { - b = await (0, import_obsidian5.request)(`${A}${m}/${_}`); - } catch (s) { - b = "Error Occurred!!\n" + s.toString(); - } - const E = b.replace(/\((.*?(.png)|(.jpg))\)/g, `(${A}${m}/$1)`); - await import_obsidian.MarkdownRenderer.render(this.plugin.app, ` [Tips and Troubleshooting](${I}) [PageTop](${_})\n\n${E}`, R, `${A}`, this.plugin); - null == (u = null == (o = R.querySelector(".sls-troubleshoot-anchor")) ? void 0 : o.parentElement) || u.setCssStyles({ - position: "sticky", - top: "-1em", - backgroundColor: "var(--modal-background)" - }); - R.querySelectorAll("a.internal-link").forEach((s => { - s.addEventListener("click", (async r => { - const o = s.getAttr("data-href"); - if (o) if (o.startsWith("#")) { - r.preventDefault(); - const s = Array.from(R.querySelectorAll("[data-heading]")).find((s => { - var r; - return (null == (r = s.getAttr("data-heading")) ? void 0 : r.toLowerCase().split(" ").join("-")) == o.substring(1).toLowerCase(); - })); - if (s) { - s.setCssStyles({ - scrollMargin: "3em" - }); - s.scrollIntoView({ - behavior: "instant", - block: "start" - }); - } - } else { - r.preventDefault(); - await loadMarkdownPage(o, m); - R.setCssStyles({ - scrollMargin: "1em" - }); - R.scrollIntoView({ - behavior: "instant", - block: "start" - }); - } - })); - })); - R.style.minHeight = ""; - }; - loadMarkdownPage(I); - addScreenElement("110", C); - const x = r.createDiv(); - x.createEl("h3", { - text: "Remote Database configuration" - }); - const P = x.createEl("div", { - text: 'These settings are kept locked while any synchronization options are enabled. Disable these options in the "Sync Settings" tab to unlock.' - }); - if (this.plugin.settings.couchDB_URI.startsWith("http://")) if (this.plugin.isMobile) x.createEl("div", { - text: "Configured as using plain HTTP. We cannot connect to the remote. Please set up the credentials and use HTTPS for the remote URI." - }).addClass("op-warn"); else x.createEl("div", { - text: "Configured as using plain HTTP. We might fail on mobile devices." - }).addClass("op-warn-info"); - P.addClass("op-warn-info"); - P.addClass("sls-hidden"); - const applyDisplayEnabled = () => { - if (isAnySyncEnabled()) { - N.forEach((s => { - s.setDisabled(true).setTooltip("Could not change this while any synchronization options are enabled."); - })); - P.removeClass("sls-hidden"); - } else { - N.forEach((s => { - s.setDisabled(false).setTooltip(""); - })); - P.addClass("sls-hidden"); - } - if (this.plugin.settings.liveSync) { - Z.forEach((s => { - s.setDisabled(true).setTooltip(""); - })); - X.forEach((s => { - s.setDisabled(false).setTooltip(""); - })); - } else if (this.plugin.settings.syncOnFileOpen || this.plugin.settings.syncOnSave || this.plugin.settings.syncOnEditorSave || this.plugin.settings.syncOnStart || this.plugin.settings.periodicReplication || this.plugin.settings.syncAfterMerge) { - Z.forEach((s => { - s.setDisabled(false).setTooltip(""); - })); - X.forEach((s => { - s.setDisabled(true).setTooltip(""); - })); - } else { - Z.forEach((s => { - s.setDisabled(false).setTooltip(""); - })); - X.forEach((s => { - s.setDisabled(false).setTooltip(""); - })); - } - }, N = []; - N.push(new import_obsidian.Setting(x).setName("URI").addText((s => s.setPlaceholder("https://........").setValue(this.plugin.settings.couchDB_URI).onChange((async s => { - this.plugin.settings.couchDB_URI = s; - await this.plugin.saveSettings(); - })))), new import_obsidian.Setting(x).setName("Username").setDesc("username").addText((s => s.setPlaceholder("").setValue(this.plugin.settings.couchDB_USER).onChange((async s => { - this.plugin.settings.couchDB_USER = s; - await this.plugin.saveSettings(); - })))), new import_obsidian.Setting(x).setName("Password").setDesc("password").addText((s => { - s.setPlaceholder("").setValue(this.plugin.settings.couchDB_PASSWORD).onChange((async s => { - this.plugin.settings.couchDB_PASSWORD = s; - await this.plugin.saveSettings(); - })); - s.inputEl.setAttribute("type", "password"); - })), new import_obsidian.Setting(x).setName("Database name").addText((s => s.setPlaceholder("").setValue(this.plugin.settings.couchDB_DBNAME).onChange((async s => { - this.plugin.settings.couchDB_DBNAME = s; - await this.plugin.saveSettings(); - }))))); - new import_obsidian.Setting(x).setName("Test Database Connection").setClass("wizardHidden").setDesc("Open database connection. If the remote database is not found and you have the privilege to create a database, the database will be created.").addButton((s => s.setButtonText("Test").setDisabled(false).onClick((async () => { - await this.testConnection(); - })))); - new import_obsidian.Setting(x).setName("Check and Fix database configuration").setDesc("Check the database configuration, and fix if there are any problems.").addButton((s => s.setButtonText("Check").setDisabled(false).onClick((async () => { - const checkConfig = async () => { - var s, r, o, u, g, _, m, b, E, w, S; - Logger("Checking database configuration", LOG_LEVEL_INFO); - const L = createDiv(); - L.innerHTML = ""; - B.replaceChildren(L); - const addResult2 = (s, r) => { - const o = createDiv(); - o.addClass("ob-btn-config-fix"); - if (r) o.addClasses(r); - o.innerHTML = `${s}`; - B.appendChild(o); - }; - try { - if (isCloudantURI(this.plugin.settings.couchDB_URI)) { - Logger("This feature cannot be used with IBM Cloudant.", LOG_LEVEL_NOTICE); - return; - } - const L = (await requestToCouchDB(this.plugin.settings.couchDB_URI, this.plugin.settings.couchDB_USER, this.plugin.settings.couchDB_PASSWORD, window.origin)).json, addConfigFixButton = (s, r, o) => { - var u; - const g = createDiv(); - g.addClass("ob-btn-config-fix"); - g.innerHTML = ``; - const _ = B.appendChild(g); - null == (u = _.querySelector("button")) || u.addEventListener("click", (async () => { - Logger(`CouchDB Configuration: ${s} -> Set ${r} to ${o}`); - const u = await requestToCouchDB(this.plugin.settings.couchDB_URI, this.plugin.settings.couchDB_USER, this.plugin.settings.couchDB_PASSWORD, void 0, r, o); - if (200 == u.status) { - Logger(`CouchDB Configuration: ${s} successfully updated`, LOG_LEVEL_NOTICE); - B.removeChild(_); - checkConfig(); - } else { - Logger(`CouchDB Configuration: ${s} failed`, LOG_LEVEL_NOTICE); - Logger(u.text, LOG_LEVEL_VERBOSE); - } - })); - }; - addResult2("---Notice---", [ "ob-btn-config-head" ]); - addResult2("If the server configuration is not persistent (e.g., running on docker), the values set from here will also be volatile. Once you are able to connect, please reflect the settings in the server's local.ini.", [ "ob-btn-config-info" ]); - addResult2("--Config check--", [ "ob-btn-config-head" ]); - if (!(this.plugin.settings.couchDB_USER in L.admins)) addResult2("⚠ You do not have administrative privileges."); else addResult2("✔ You have administrative privileges."); - if ("true" != (null == (s = null == L ? void 0 : L.chttpd) ? void 0 : s.require_valid_user)) { - addResult2("❗ chttpd.require_valid_user looks like wrong."); - addConfigFixButton("Set chttpd.require_valid_user = true", "chttpd/require_valid_user", "true"); - } else addResult2("✔ chttpd.require_valid_user is ok."); - if ("true" != (null == (r = null == L ? void 0 : L.chttpd_auth) ? void 0 : r.require_valid_user)) { - addResult2("❗ chttpd_auth.require_valid_user looks like wrong."); - addConfigFixButton("Set chttpd_auth.require_valid_user = true", "chttpd_auth/require_valid_user", "true"); - } else addResult2("✔ chttpd_auth.require_valid_user is ok."); - if (!(null == L ? void 0 : L.httpd["WWW-Authenticate"])) { - addResult2("❗ httpd.WWW-Authenticate is missing"); - addConfigFixButton("Set httpd.WWW-Authenticate", "httpd/WWW-Authenticate", 'Basic realm="couchdb"'); - } else addResult2("✔ httpd.WWW-Authenticate is ok."); - if ("true" != (null == (o = null == L ? void 0 : L.httpd) ? void 0 : o.enable_cors)) { - addResult2("❗ httpd.enable_cors is wrong"); - addConfigFixButton("Set httpd.enable_cors", "httpd/enable_cors", "true"); - } else addResult2("✔ httpd.enable_cors is ok."); - if (!isCloudantURI(this.plugin.settings.couchDB_URI)) { - if (Number(null != (g = null == (u = null == L ? void 0 : L.chttpd) ? void 0 : u.max_http_request_size) ? g : 0) < 4294967296) { - addResult2("❗ chttpd.max_http_request_size is low)"); - addConfigFixButton("Set chttpd.max_http_request_size", "chttpd/max_http_request_size", "4294967296"); - } else addResult2("✔ chttpd.max_http_request_size is ok."); - if (Number(null != (m = null == (_ = null == L ? void 0 : L.couchdb) ? void 0 : _.max_document_size) ? m : 0) < 5e7) { - addResult2("❗ couchdb.max_document_size is low)"); - addConfigFixButton("Set couchdb.max_document_size", "couchdb/max_document_size", "50000000"); - } else addResult2("✔ couchdb.max_document_size is ok."); - } - if ("true" != (null == (b = null == L ? void 0 : L.cors) ? void 0 : b.credentials)) { - addResult2("❗ cors.credentials is wrong"); - addConfigFixButton("Set cors.credentials", "cors/credentials", "true"); - } else addResult2("✔ cors.credentials is ok."); - const O = ((null != (w = null == (E = null == L ? void 0 : L.cors) ? void 0 : E.origins) ? w : "") + "").split(","); - if ("*" == (null == (S = null == L ? void 0 : L.cors) ? void 0 : S.origins) || -1 !== O.indexOf("app://obsidian.md") && -1 !== O.indexOf("capacitor://localhost") && -1 !== O.indexOf("http://localhost")) addResult2("✔ cors.origins is ok."); else { - addResult2("❗ cors.origins is wrong"); - addConfigFixButton("Set cors.origins", "cors/origins", "app://obsidian.md,capacitor://localhost,http://localhost"); - } - addResult2("--Connection check--", [ "ob-btn-config-head" ]); - addResult2(`Current origin:${window.location.origin}`); - const D = [ "app://obsidian.md", "capacitor://localhost", "http://localhost" ]; - for (const s of D) { - const r = await requestToCouchDB(this.plugin.settings.couchDB_URI, this.plugin.settings.couchDB_USER, this.plugin.settings.couchDB_PASSWORD, s), o = Object.fromEntries(Object.entries(r.headers).map((s => { - s[0] = `${s[0]}`.toLowerCase(); - return s; - }))); - addResult2(`Origin check:${s}`); - if ("true" != o["access-control-allow-credentials"]) addResult2("❗ CORS is not allowing credential"); else addResult2("✔ CORS credential OK"); - if (o["access-control-allow-origin"] != s) addResult2(`❗ CORS Origin is unmatched:${origin}->${o["access-control-allow-origin"]}`); else addResult2("✔ CORS origin OK"); - } - addResult2("--Done--", [ "ob-btn-config-head" ]); - addResult2("If you have some trouble with Connection-check even though all Config-check has been passed, Please check your reverse proxy's configuration.", [ "ob-btn-config-info" ]); - Logger("Checking configuration done", LOG_LEVEL_INFO); - } catch (s) { - if (401 == (null == s ? void 0 : s.status)) { - addResult2("❗ Access forbidden."); - addResult2("We could not continue the test."); - Logger("Checking configuration done", LOG_LEVEL_INFO); - } else { - Logger("Checking configuration failed", LOG_LEVEL_NOTICE); - Logger(s); - } - } - }; - await checkConfig(); - })))); - const B = x.createEl("div", { - text: "" - }); - x.createEl("h4", { - text: "Confidentiality" - }); - const F = new import_obsidian.Setting(x).setName("End to End Encryption").setDesc("Encrypt contents on the remote database. If you use the plugin's synchronization feature, enabling this is recommend.").addToggle((s => s.setValue(o).onChange((async s => { - if (k) { - this.plugin.settings.encrypt = s; - o = s; - await this.plugin.saveSettings(); - updateE2EControls(); - } else { - o = s; - updateE2EControls(); - } - })))); - let M = this.plugin.settings.usePathObfuscation; - const updateE2EControls = () => { - F.controlEl.toggleClass("sls-item-dirty", o != this.plugin.settings.encrypt); - if (o) { - V.settingEl.removeClass("sls-setting-hidden"); - j.settingEl.removeClass("sls-setting-hidden"); - G.settingEl.removeClass("sls-setting-hidden"); - null == V || V.controlEl.toggleClass("sls-item-dirty", u != this.plugin.settings.passphrase); - null == j || j.controlEl.toggleClass("sls-item-dirty", g != this.plugin.settings.useDynamicIterationCount); - null == G || G.controlEl.toggleClass("sls-item-dirty", M != this.plugin.settings.usePathObfuscation); - } else { - V.settingEl.addClass("sls-setting-hidden"); - j.settingEl.addClass("sls-setting-hidden"); - G.settingEl.addClass("sls-setting-hidden"); - } - if (o != this.plugin.settings.encrypt || u != this.plugin.settings.passphrase || g != this.plugin.settings.useDynamicIterationCount || M != this.plugin.settings.usePathObfuscation) q.settingEl.removeClass("sls-setting-hidden"); else q.settingEl.addClass("sls-setting-hidden"); - }, V = new import_obsidian.Setting(x).setName("Passphrase").setDesc("Encrypting passphrase. If you change the passphrase of a existing database, overwriting the remote database is strongly recommended.").addText((s => { - s.setPlaceholder("").setValue(u).onChange((async s => { - if (k) { - this.plugin.settings.passphrase = s; - await this.plugin.saveSettings(); - } else { - u = s; - await this.plugin.saveSettings(); - updateE2EControls(); - } - })); - s.inputEl.setAttribute("type", "password"); - })), G = new import_obsidian.Setting(x).setName("Path Obfuscation").setDesc("Obfuscate paths of files. If we configured, we should rebuild the database.").addToggle((s => s.setValue(M).onChange((async s => { - if (k) { - this.plugin.settings.usePathObfuscation = s; - await this.plugin.saveSettings(); - } else { - M = s; - await this.plugin.saveSettings(); - updateE2EControls(); - } - })))), j = new import_obsidian.Setting(x).setName("Use dynamic iteration count (experimental)").setDesc("Balancing the encryption/decryption load against the length of the passphrase if toggled.").addToggle((s => { - s.setValue(g).onChange((async s => { - if (k) { - this.plugin.settings.useDynamicIterationCount = s; - await this.plugin.saveSettings(); - } else { - g = s; - await this.plugin.saveSettings(); - updateE2EControls(); - } - })); - })).setClass("wizardHidden"), q = new import_obsidian.Setting(x).setName("Apply").setDesc("Apply encryption settings").setClass("wizardHidden").addButton((s => s.setButtonText("Just apply").setWarning().setDisabled(false).onClick((async () => { - await applyEncryption(false); - })))).addButton((s => s.setButtonText("Apply and Fetch").setWarning().setDisabled(false).onClick((async () => { - await rebuildDB("localOnly"); - })))).addButton((s => s.setButtonText("Apply and Rebuild").setWarning().setDisabled(false).onClick((async () => { - await rebuildDB("rebuildBothByThisDevice"); - })))); - updateE2EControls(); - const checkWorkingPassphrase = async () => { - const s = { - ...this.plugin.settings, - encrypt: o, - passphrase: u, - useDynamicIterationCount: g - }; - console.dir(s); - const r = await this.plugin.replicator.connectRemoteCouchDBWithSetting(s, this.plugin.isMobile, true); - if ("string" == typeof r) { - Logger("Could not connect to the database.", LOG_LEVEL_NOTICE); - return false; - } else if (await checkSyncInfo(r.db)) return true; else { - Logger("Failed to read remote database", LOG_LEVEL_NOTICE); - return false; - } - }, applyEncryption = async s => { - if (!o || "" != u) if (!o || await testCrypt()) { - if (await checkWorkingPassphrase() || s) { - if (!o) u = ""; - this.plugin.addOnSetup.suspendAllSync(); - this.plugin.addOnSetup.suspendExtraSync(); - this.plugin.settings.encrypt = o; - this.plugin.settings.passphrase = u; - this.plugin.settings.useDynamicIterationCount = g; - this.plugin.settings.usePathObfuscation = M; - this.plugin.settings.isConfigured = true; - await this.plugin.saveSettings(); - updateE2EControls(); - if (s) await this.plugin.addOnSetup.rebuildRemote(); else { - await this.plugin.markRemoteResolved(); - await this.plugin.replicate(true); - } - } - } else Logger("WARNING! Your device would not support encryption.", LOG_LEVEL_NOTICE); else Logger("If you enable encryption, you have to set the passphrase", LOG_LEVEL_NOTICE); - }, rebuildDB = async s => { - if (!o || "" != u) if (!o || await testCrypt()) { - if (!o) u = ""; - this.plugin.addOnSetup.suspendAllSync(); - this.plugin.addOnSetup.suspendExtraSync(); - this.plugin.settings.encrypt = o; - this.plugin.settings.passphrase = u; - this.plugin.settings.useDynamicIterationCount = g; - this.plugin.settings.usePathObfuscation = M; - this.plugin.settings.isConfigured = true; - Logger("All synchronization have been temporarily disabled. Please enable them after the fetching, if you need them.", LOG_LEVEL_NOTICE); - await this.plugin.saveSettings(); - updateE2EControls(); - applyDisplayEnabled(); - this.closeSetting(); - await delay(2e3); - await performRebuildDB(this.plugin, s); - } else Logger("WARNING! Your device would not support encryption.", LOG_LEVEL_NOTICE); else Logger("If you enable encryption, you have to set the passphrase", LOG_LEVEL_NOTICE); - }; - new import_obsidian.Setting(x).setClass("wizardOnly").addButton((s => s.setButtonText("Next").setCta().setDisabled(false).onClick((() => { - if (!this.plugin.settings.encrypt) this.plugin.settings.passphrase = ""; - if (isCloudantURI(this.plugin.settings.couchDB_URI)) this.plugin.settings = { - ...this.plugin.settings, - ...PREFERRED_SETTING_CLOUDANT - }; else this.plugin.settings = { - ...this.plugin.settings, - ...PREFERRED_SETTING_SELF_HOSTED - }; - changeDisplay("30"); - })))); - addScreenElement("0", x); - const U = r.createDiv(); - U.createEl("h3", { - text: "General Settings" - }); - U.createEl("h4", { - text: "Appearance" - }); - new import_obsidian.Setting(U).setName("Show status inside the editor").setDesc("Reflected after reboot").addToggle((s => s.setValue(this.plugin.settings.showStatusOnEditor).onChange((async s => { - this.plugin.settings.showStatusOnEditor = s; - await this.plugin.saveSettings(); - this.display(); - })))); - if (this.plugin.settings.showStatusOnEditor) new import_obsidian.Setting(U).setName("Show status as icons only").setDesc("").addToggle((s => s.setValue(this.plugin.settings.showOnlyIconsOnEditor).onChange((async s => { - this.plugin.settings.showOnlyIconsOnEditor = s; - await this.plugin.saveSettings(); - })))); - new import_obsidian.Setting(U).setName("Show status on the status bar").setDesc("Reflected after reboot.").addToggle((s => s.setValue(this.plugin.settings.showStatusOnStatusbar).onChange((async s => { - this.plugin.settings.showStatusOnStatusbar = s; - await this.plugin.saveSettings(); - this.display(); - })))); - U.createEl("h4", { - text: "Logging" - }); - new import_obsidian.Setting(U).setName("Show only notifications").setDesc("Prevent logging and show only notification").addToggle((s => s.setValue(this.plugin.settings.lessInformationInLog).onChange((async s => { - this.plugin.settings.lessInformationInLog = s; - await this.plugin.saveSettings(); - this.display(); - })))); - if (!this.plugin.settings.lessInformationInLog) new import_obsidian.Setting(U).setName("Verbose Log").setDesc("Show verbose log").addToggle((s => s.setValue(this.plugin.settings.showVerboseLog).onChange((async s => { - this.plugin.settings.showVerboseLog = s; - await this.plugin.saveSettings(); - })))); - U.createEl("h4", { - text: "Performance tweaks" - }); - new import_obsidian.Setting(U).setName("Memory cache size (by total items)").setDesc("").addText((s => { - s.setPlaceholder("").setValue(this.plugin.settings.hashCacheMaxCount + "").onChange((async s => { - let r = Number(s); - if (isNaN(r) || r < 10) r = 10; - this.plugin.settings.hashCacheMaxCount = r; - await this.plugin.saveSettings(); - })); - s.inputEl.setAttribute("type", "number"); - })); - new import_obsidian.Setting(U).setName("Memory cache size (by total characters)").setDesc("(Mega chars)").addText((s => { - s.setPlaceholder("").setValue(this.plugin.settings.hashCacheMaxAmount + "").onChange((async s => { - let r = Number(s); - if (isNaN(r) || r < 1) r = 1; - this.plugin.settings.hashCacheMaxAmount = r; - await this.plugin.saveSettings(); - })); - s.inputEl.setAttribute("type", "number"); - })); - U.createEl("h4", { - text: "Share settings via markdown" - }); - let z, W = this.plugin.settings.settingSyncFile; - new import_obsidian.Setting(U).setName("Filename").setDesc("If you set this, all settings are saved in a markdown file. You will also be notified when new settings were arrived. You can set different files by the platform.").addText((s => { - s.setPlaceholder("livesync/setting.md").setValue(W).onChange((s => { - W = s; - if (W == this.plugin.settings.settingSyncFile) { - z.removeCta(); - z.setDisabled(true); - } else { - z.setCta(); - z.setDisabled(false); - } - })); - })).addButton((s => { - s.setButtonText("Apply").onClick((async () => { - this.plugin.settings.settingSyncFile = W; - await this.plugin.saveSettings(); - this.display(); - })); - z = s; - })); - new import_obsidian.Setting(U).setName("Write credentials in the file").setDesc("(Not recommended) If set, credentials will be stored in the file.").addToggle((s => { - s.setValue(this.plugin.settings.writeCredentialsForSettingSync).onChange((async s => { - this.plugin.settings.writeCredentialsForSettingSync = s; - await this.plugin.saveSettings(); - })); - })); - new import_obsidian.Setting(U).setName("Notify all setting files").addToggle((s => { - s.setValue(this.plugin.settings.notifyAllSettingSyncFile).onChange((async s => { - this.plugin.settings.notifyAllSettingSyncFile = s; - await this.plugin.saveSettings(); - })); - })); - U.createEl("h4", { - text: "Advanced Confidentiality" - }); - const H = { - "": "Default", - LOCALSTORAGE: "Use a custom passphrase", - ASK_AT_LAUNCH: "Ask an passphrase at every launch" - }; - new import_obsidian.Setting(U).setName("Encrypting sensitive configuration items").addDropdown((s => s.addOptions(H).setValue(this.plugin.settings.configPassphraseStore).onChange((async s => { - this.plugin.settings.configPassphraseStore = s; - this.plugin.usedPassphrase = ""; - Q.setDisabled("LOCALSTORAGE" != this.plugin.settings.configPassphraseStore); - await this.plugin.saveSettings(); - })))).setClass("wizardHidden"); - const K = localStorage.getItem("ls-setting-passphrase") || "", Q = new import_obsidian.Setting(U).setName("Passphrase of sensitive configuration items").setDesc("This passphrase will not be copied to another device. It will be set to `Default` until you configure it again.").addText((s => { - s.setPlaceholder("").setValue(K).onChange((async s => { - this.plugin.usedPassphrase = ""; - localStorage.setItem("ls-setting-passphrase", s); - await this.plugin.saveSettings(); - updateE2EControls(); - })); - s.inputEl.setAttribute("type", "password"); - })).setClass("wizardHidden"); - Q.setDisabled("LOCALSTORAGE" != this.plugin.settings.configPassphraseStore); - addScreenElement("20", U); - const J = r.createDiv(); - J.createEl("h3", { - text: "Sync Settings" - }); - if ("" != this.plugin.settings.versionUpFlash) { - const s = J.createEl("div", { - text: this.plugin.settings.versionUpFlash - }); - s.createEl("button", { - text: "I got it and updated." - }, (r => { - r.addClass("mod-cta"); - r.addEventListener("click", (async () => { - this.plugin.settings.versionUpFlash = ""; - await this.plugin.saveSettings(); - applyDisplayEnabled(); - s.remove(); - })); - })); - s.addClass("op-warn"); - } - let Y = "NONE"; - J.createEl("div", { - text: "Please select any preset to complete wizard." - }).addClasses([ "op-warn-info", "wizardOnly" ]); - new import_obsidian.Setting(J).setName("Presets").setDesc("Apply preset configuration").addDropdown((s => s.addOptions({ - NONE: "", - LIVESYNC: "LiveSync", - PERIODIC: "Periodic w/ batch", - DISABLE: "Disable all automatic" - }).setValue(Y).onChange((s => Y = s)))).addButton((s => s.setButtonText("Apply").setDisabled(false).setCta().onClick((async () => { - if ("" == Y) { - Logger("Select any preset.", LOG_LEVEL_NOTICE); - return; - } - const s = { - batchSave: false, - liveSync: false, - periodicReplication: false, - syncOnSave: false, - syncOnEditorSave: false, - syncOnStart: false, - syncOnFileOpen: false, - syncAfterMerge: false - }, r = { - ...s, - liveSync: true - }, o = { - ...s, - batchSave: true, - periodicReplication: true, - syncOnSave: false, - syncOnEditorSave: false, - syncOnStart: true, - syncOnFileOpen: true, - syncAfterMerge: true - }; - if ("LIVESYNC" == Y) { - this.plugin.settings = { - ...this.plugin.settings, - ...r - }; - Logger("Synchronization setting configured as LiveSync.", LOG_LEVEL_NOTICE); - } else if ("PERIODIC" == Y) { - this.plugin.settings = { - ...this.plugin.settings, - ...o - }; - Logger("Synchronization setting configured as Periodic sync with batch database update.", LOG_LEVEL_NOTICE); - } else { - Logger("All synchronization disabled.", LOG_LEVEL_NOTICE); - this.plugin.settings = { - ...this.plugin.settings, - ...s - }; - } - await this.plugin.saveSettings(); - this.display(); - await this.plugin.realizeSettingSyncMode(); - if (k) { - this.closeSetting(); - if (!this.plugin.settings.isConfigured) { - this.plugin.settings.isConfigured = true; - await this.plugin.saveSettings(); - await rebuildDB("localOnly"); - Logger("All done! Please set up subsequent devices with 'Copy current settings as a new setup URI' and 'Use the copied setup URI'.", LOG_LEVEL_NOTICE); - await this.plugin.addOnSetup.command_copySetupURI(); - } else this.askReload(); - } - })))); - J.createEl("h4", { - text: "Synchronization Methods" - }).addClass("wizardHidden"); - const X = [], Z = []; - let ee, te = ""; - if (this.plugin.settings.liveSync) te = "LIVESYNC"; else if (this.plugin.settings.periodicReplication) te = "PERIODIC"; - new import_obsidian.Setting(J).setName("Sync Mode").setClass("wizardHidden").addDropdown((s => s.addOptions({ - "": "On events", - PERIODIC: "Periodic and On events", - LIVESYNC: "LiveSync" - }).setValue(te).onChange((async s => { - this.plugin.settings.liveSync = false; - this.plugin.settings.periodicReplication = false; - if ("LIVESYNC" == s) this.plugin.settings.liveSync = true; else if ("PERIODIC" == s) this.plugin.settings.periodicReplication = true; - await this.plugin.saveSettings(); - applyDisplayEnabled(); - await this.plugin.realizeSettingSyncMode(); - this.display(); - })))); - if (!this.plugin.settings.liveSync) { - if (this.plugin.settings.periodicReplication) new import_obsidian.Setting(J).setName("Periodic Sync interval").setDesc("Interval (sec)").setClass("wizardHidden").addText((s => { - s.setPlaceholder("").setValue(this.plugin.settings.periodicReplicationInterval + "").onChange((async s => { - let r = Number(s); - if (isNaN(r) || r > 5e3) r = 0; - this.plugin.settings.periodicReplicationInterval = r; - await this.plugin.saveSettings(); - applyDisplayEnabled(); - })); - s.inputEl.setAttribute("type", "number"); - })); - new import_obsidian.Setting(J).setName("Sync on Save").setDesc("When you save file, sync automatically").setClass("wizardHidden").addToggle((s => s.setValue(this.plugin.settings.syncOnSave).onChange((async s => { - this.plugin.settings.syncOnSave = s; - await this.plugin.saveSettings(); - applyDisplayEnabled(); - })))); - new import_obsidian.Setting(J).setName("Sync on Editor Save").setDesc("When you save file on the editor, sync automatically").setClass("wizardHidden").addToggle((s => s.setValue(this.plugin.settings.syncOnEditorSave).onChange((async s => { - this.plugin.settings.syncOnEditorSave = s; - await this.plugin.saveSettings(); - applyDisplayEnabled(); - })))); - new import_obsidian.Setting(J).setName("Sync on File Open").setDesc("When you open file, sync automatically").setClass("wizardHidden").addToggle((s => s.setValue(this.plugin.settings.syncOnFileOpen).onChange((async s => { - this.plugin.settings.syncOnFileOpen = s; - await this.plugin.saveSettings(); - applyDisplayEnabled(); - })))); - new import_obsidian.Setting(J).setName("Sync on Start").setDesc("Start synchronization after launching Obsidian.").setClass("wizardHidden").addToggle((s => s.setValue(this.plugin.settings.syncOnStart).onChange((async s => { - this.plugin.settings.syncOnStart = s; - await this.plugin.saveSettings(); - applyDisplayEnabled(); - })))); - new import_obsidian.Setting(J).setName("Sync after merging file").setDesc("Sync automatically after merging files").setClass("wizardHidden").addToggle((s => s.setValue(this.plugin.settings.syncAfterMerge).onChange((async s => { - this.plugin.settings.syncAfterMerge = s; - await this.plugin.saveSettings(); - applyDisplayEnabled(); - })))); - } - J.createEl("h4", { - text: "Deletions propagation" - }).addClass("wizardHidden"); - new import_obsidian.Setting(J).setName("Use the trash bin").setDesc("Do not delete files that are deleted in remote, just move to trash.").setClass("wizardHidden").addToggle((s => s.setValue(this.plugin.settings.trashInsteadDelete).onChange((async s => { - this.plugin.settings.trashInsteadDelete = s; - await this.plugin.saveSettings(); - })))); - new import_obsidian.Setting(J).setName("Keep empty folder").setDesc("Normally, a folder is deleted when it becomes empty after a synchronization. Enabling this will prevent it from getting deleted").setClass("wizardHidden").addToggle((s => s.setValue(this.plugin.settings.doNotDeleteFolder).onChange((async s => { - this.plugin.settings.doNotDeleteFolder = s; - await this.plugin.saveSettings(); - })))); - J.createEl("h4", { - text: "Conflict resolution" - }).addClass("wizardHidden"); - new import_obsidian.Setting(J).setName("Always overwrite with a newer file (beta)").setDesc("(Def off) Resolve conflicts by newer files automatically.").setClass("wizardHidden").addToggle((s => s.setValue(this.plugin.settings.resolveConflictsByNewerFile).onChange((async s => { - this.plugin.settings.resolveConflictsByNewerFile = s; - await this.plugin.saveSettings(); - })))); - new import_obsidian.Setting(J).setName("Postpone resolution of inactive files").setClass("wizardHidden").addToggle((s => s.setValue(this.plugin.settings.checkConflictOnlyOnOpen).onChange((async s => { - this.plugin.settings.checkConflictOnlyOnOpen = s; - await this.plugin.saveSettings(); - })))); - new import_obsidian.Setting(J).setName("Postpone manual resolution of inactive files").setClass("wizardHidden").addToggle((s => s.setValue(this.plugin.settings.showMergeDialogOnlyOnActive).onChange((async s => { - this.plugin.settings.showMergeDialogOnlyOnActive = s; - await this.plugin.saveSettings(); - })))); - J.createEl("h4", { - text: "Compatibility" - }).addClass("wizardHidden"); - new import_obsidian.Setting(J).setName("Always resolve conflict manually").setDesc("If this switch is turned on, a merge dialog will be displayed, even if the sensible-merge is possible automatically. (Turn on to previous behavior)").setClass("wizardHidden").addToggle((s => s.setValue(this.plugin.settings.disableMarkdownAutoMerge).onChange((async s => { - this.plugin.settings.disableMarkdownAutoMerge = s; - await this.plugin.saveSettings(); - })))); - new import_obsidian.Setting(J).setName("Always reflect synchronized changes even if the note has a conflict").setDesc("Turn on to previous behavior").setClass("wizardHidden").addToggle((s => s.setValue(this.plugin.settings.writeDocumentsIfConflicted).onChange((async s => { - this.plugin.settings.writeDocumentsIfConflicted = s; - await this.plugin.saveSettings(); - })))); - J.createEl("h4", { - text: "Hidden files" - }).addClass("wizardHidden"); - new import_obsidian.Setting(J).setName("Hidden file synchronization").setClass("wizardHidden").settingEl.createDiv("").innerText = this.plugin.settings.syncInternalFiles ? "🔁 : Enabled" : "⏹️ : Disabled"; - if (this.plugin.settings.syncInternalFiles) new import_obsidian.Setting(J).setName("Disable Hidden files sync").setClass("wizardHidden").addButton((s => { - s.setButtonText("Disable").onClick((async () => { - this.plugin.settings.syncInternalFiles = false; - await this.plugin.saveSettings(); - this.display(); - })); - })); else new import_obsidian.Setting(J).setName("Enable Hidden files sync").setClass("wizardHidden").addButton((s => { - s.setButtonText("Merge").onClick((async () => { - this.closeSetting(); - await this.plugin.addOnSetup.configureHiddenFileSync("MERGE"); - })); - })).addButton((s => { - s.setButtonText("Fetch").onClick((async () => { - this.closeSetting(); - await this.plugin.addOnSetup.configureHiddenFileSync("FETCH"); - })); - })).addButton((s => { - s.setButtonText("Overwrite").onClick((async () => { - this.closeSetting(); - await this.plugin.addOnSetup.configureHiddenFileSync("OVERWRITE"); - })); - })); - if (!this.plugin.settings.watchInternalFileChanges) new import_obsidian.Setting(J).setName("Scan for hidden files before replication").setClass("wizardHidden").addToggle((s => s.setValue(this.plugin.settings.syncInternalFilesBeforeReplication).onChange((async s => { - this.plugin.settings.syncInternalFilesBeforeReplication = s; - await this.plugin.saveSettings(); - })))); - new import_obsidian.Setting(J).setName("Scan hidden files periodically").setDesc("Seconds, 0 to disable").setClass("wizardHidden").addText((s => { - s.setPlaceholder("").setValue(this.plugin.settings.syncInternalFilesInterval + "").onChange((async s => { - let r = Number(s); - if (0 !== r && (isNaN(r) || r < 10)) r = 10; - this.plugin.settings.syncInternalFilesInterval = r; - await this.plugin.saveSettings(); - })); - s.inputEl.setAttribute("type", "number"); - })); - const ne = "\\/node_modules\\/, \\/\\.git\\/, \\/obsidian-livesync\\/", ie = ne + ",\\/workspace$ ,\\/workspace.json$,\\/workspace-mobile.json$"; - new import_obsidian.Setting(J).setName("Folders and files to ignore").setDesc("Regular expression, If you use hidden file sync between desktop and mobile, adding `workspace$` is recommended.").setClass("wizardHidden").addTextArea((s => { - s.setValue(this.plugin.settings.syncInternalFilesIgnorePatterns).setPlaceholder("\\/node_modules\\/, \\/\\.git\\/").onChange((async s => { - this.plugin.settings.syncInternalFilesIgnorePatterns = s; - await this.plugin.saveSettings(); - })); - ee = s; - return s; - })); - new import_obsidian.Setting(J).setName("Restore the skip pattern to default").setClass("wizardHidden").addButton((s => { - s.setButtonText("Default").onClick((async () => { - ee.setValue(ne); - this.plugin.settings.syncInternalFilesIgnorePatterns = ne; - await this.plugin.saveSettings(); - })); - })).addButton((s => { - s.setButtonText("Cross-platform").onClick((async () => { - ee.setValue(ie); - this.plugin.settings.syncInternalFilesIgnorePatterns = ie; - await this.plugin.saveSettings(); - })); - })); - J.createEl("h4", { - text: "Performance tweaks" - }).addClass("wizardHidden"); - new import_obsidian.Setting(J).setName("Batch database update").setDesc("Reducing the frequency with which on-disk changes are reflected into the DB").setClass("wizardHidden").addToggle((s => s.setValue(this.plugin.settings.batchSave).onChange((async s => { - this.plugin.settings.batchSave = s; - await this.plugin.saveSettings(); - })))); - new import_obsidian.Setting(J).setName("Enhance chunk size").setDesc("Enhance chunk size for binary files (Ratio). This cannot be increased when using IBM Cloudant.").setClass("wizardHidden").addText((s => { - s.setPlaceholder("").setValue(this.plugin.settings.customChunkSize + "").onChange((async s => { - let r = Number(s); - if (isNaN(r) || r < 1) r = 0; - this.plugin.settings.customChunkSize = r; - await this.plugin.saveSettings(); - })); - s.inputEl.setAttribute("type", "number"); - })); - new import_obsidian.Setting(J).setName("Fetch chunks on demand").setDesc("(ex. Read chunks online) If this option is enabled, LiveSync reads chunks online directly instead of replicating them locally. Increasing Custom chunk size is recommended.").setClass("wizardHidden").addToggle((s => { - s.setValue(this.plugin.settings.readChunksOnline).onChange((async s => { - this.plugin.settings.readChunksOnline = s; - await this.plugin.saveSettings(); - })); - return s; - })); - J.createEl("h4", { - text: (0, import_obsidian.sanitizeHTMLToDom)("Targets") - }).addClass("wizardHidden"); - new import_obsidian.Setting(J).setName("Synchronising files").setDesc("(RegExp) Empty to sync all files. set filter as a regular expression to limit synchronising files.").setClass("wizardHidden").addTextArea((s => { - s.setValue(this.plugin.settings.syncOnlyRegEx).setPlaceholder("\\.md$|\\.txt").onChange((async s => { - let r = false; - try { - new RegExp(s); - r = true; - } catch (s) {} - if (r || "" == s.trim()) { - this.plugin.settings.syncOnlyRegEx = s; - await this.plugin.saveSettings(); - } - })); - return s; - })); - new import_obsidian.Setting(J).setName("Non-Synchronising files").setDesc("(RegExp) If this is set, any changes to local and remote files that match this will be skipped.").setClass("wizardHidden").addTextArea((s => { - s.setValue(this.plugin.settings.syncIgnoreRegEx).setPlaceholder("\\.pdf$").onChange((async s => { - let r = false; - try { - new RegExp(s); - r = true; - } catch (s) {} - if (r || "" == s.trim()) { - this.plugin.settings.syncIgnoreRegEx = s; - await this.plugin.saveSettings(); - } - })); - return s; - })); - new import_obsidian.Setting(J).setName("Maximum file size").setDesc("(MB) If this is set, changes to local and remote files that are larger than this will be skipped. If the file becomes smaller again, a newer one will be used.").setClass("wizardHidden").addText((s => { - s.setPlaceholder("").setValue(this.plugin.settings.syncMaxSizeInMB + "").onChange((async s => { - let r = Number(s); - if (isNaN(r) || r < 1) r = 0; - this.plugin.settings.syncMaxSizeInMB = r; - await this.plugin.saveSettings(); - })); - s.inputEl.setAttribute("type", "number"); - })); - new import_obsidian.Setting(J).setName("(Beta) Use ignore files").setDesc("If this is set, changes to local files which are matched by the ignore files will be skipped. Remote changes are determined using local ignore files.").setClass("wizardHidden").addToggle((s => { - s.setValue(this.plugin.settings.useIgnoreFiles).onChange((async s => { - this.plugin.settings.useIgnoreFiles = s; - await this.plugin.saveSettings(); - this.display(); - })); - return s; - })); - if (this.plugin.settings.useIgnoreFiles) new import_obsidian.Setting(J).setName("Ignore files").setDesc("We can use multiple ignore files, e.g.) `.gitignore, .dockerignore`").setClass("wizardHidden").addTextArea((s => { - s.setValue(this.plugin.settings.ignoreFiles).setPlaceholder(".gitignore, .dockerignore").onChange((async s => { - this.plugin.settings.ignoreFiles = s; - await this.plugin.saveSettings(); - })); - return s; - })); - J.createEl("h4", { - text: (0, import_obsidian.sanitizeHTMLToDom)("Advanced settings") - }).addClass("wizardHidden"); - J.createEl("div", { - text: "If you reached the payload size limit when using IBM Cloudant, please decrease batch size and batch limit to a lower value." - }).addClass("wizardHidden"); - new import_obsidian.Setting(J).setName("Batch size").setDesc("Number of change feed items to process at a time. Defaults to 50. Minimum is 2.").setClass("wizardHidden").addText((s => { - s.setPlaceholder("").setValue(this.plugin.settings.batch_size + "").onChange((async s => { - let r = Number(s); - if (isNaN(r) || r < 2) r = 2; - this.plugin.settings.batch_size = r; - await this.plugin.saveSettings(); - })); - s.inputEl.setAttribute("type", "number"); - })); - new import_obsidian.Setting(J).setName("Batch limit").setDesc("Number of batches to process at a time. Defaults to 40. Minimum is 2. This along with batch size controls how many docs are kept in memory at a time.").setClass("wizardHidden").addText((s => { - s.setPlaceholder("").setValue(this.plugin.settings.batches_limit + "").onChange((async s => { - let r = Number(s); - if (isNaN(r) || r < 2) r = 2; - this.plugin.settings.batches_limit = r; - await this.plugin.saveSettings(); - })); - s.inputEl.setAttribute("type", "number"); - })); - new import_obsidian.Setting(J).setName("Use timeouts instead of heartbeats").setDesc("If this option is enabled, PouchDB will hold the connection open for 60 seconds, and if no change arrives in that time, close and reopen the socket, instead of holding it open indefinitely. Useful when a proxy limits request duration but can increase resource usage.").setClass("wizardHidden").addToggle((s => { - s.setValue(this.plugin.settings.useTimeouts).onChange((async s => { - this.plugin.settings.useTimeouts = s; - await this.plugin.saveSettings(); - })); - return s; - })); - new import_obsidian.Setting(J).setName("Batch size of on-demand fetching").setDesc("").setClass("wizardHidden").addText((s => { - s.setPlaceholder("").setValue(this.plugin.settings.concurrencyOfReadChunksOnline + "").onChange((async s => { - let r = Number(s); - if (isNaN(r) || r < 10) r = 10; - this.plugin.settings.concurrencyOfReadChunksOnline = r; - await this.plugin.saveSettings(); - })); - s.inputEl.setAttribute("type", "number"); - })); - new import_obsidian.Setting(J).setName("The delay for consecutive on-demand fetches").setDesc("").setClass("wizardHidden").addText((s => { - s.setPlaceholder("").setValue(this.plugin.settings.minimumIntervalOfReadChunksOnline + "").onChange((async s => { - let r = Number(s); - if (isNaN(r) || r < 10) r = 10; - this.plugin.settings.minimumIntervalOfReadChunksOnline = r; - await this.plugin.saveSettings(); - })); - s.inputEl.setAttribute("type", "number"); - })); - addScreenElement("30", J); - const se = r.createDiv(); - se.createEl("h3", { - text: "Hatch" - }); - new import_obsidian.Setting(se).setName("Make report to inform the issue").addButton((s => s.setButtonText("Make report").setDisabled(false).onClick((async () => { - let s = {}; - const r = "𝑅𝐸𝐷𝐴𝐶𝑇𝐸𝐷"; - try { - const o = await requestToCouchDB(this.plugin.settings.couchDB_URI, this.plugin.settings.couchDB_USER, this.plugin.settings.couchDB_PASSWORD, window.origin); - Logger(JSON.stringify(o.json, null, 2)); - s = o.json; - s["couch_httpd_auth"].secret = r; - s["couch_httpd_auth"].authentication_db = r; - s["couch_httpd_auth"].authentication_redirect = r; - s["couchdb"].uuid = r; - s["admins"] = r; - } catch (r) { - s = "Requesting information to the remote CouchDB has been failed. If you are using IBM Cloudant, it is the normal behaviour."; - } - const o = JSON.parse(JSON.stringify(this.plugin.settings)); - o.couchDB_DBNAME = r; - o.couchDB_PASSWORD = r; - const u = o.couchDB_URI.startsWith("http:") ? "(HTTP)" : o.couchDB_URI.startsWith("https:") ? "(HTTPS)" : ""; - o.couchDB_URI = isCloudantURI(o.couchDB_URI) ? "cloudant" : `self-hosted${u}`; - o.couchDB_USER = r; - o.passphrase = r; - o.encryptedPassphrase = r; - o.encryptedCouchDBConnection = r; - o.pluginSyncExtendedSetting = {}; - const g = `---- Obsidian info ----\n${navigator.userAgent}\n---- remote config ----\n${(0, - import_obsidian.stringifyYaml)(s)}\n---- Plug-in config ---\nversion:${L}\n${(0, - import_obsidian.stringifyYaml)(o)}`; - console.log(g); - await navigator.clipboard.writeText(g); - Logger("Information has been copied to clipboard", LOG_LEVEL_NOTICE); - })))); - if (this.plugin.replicator.remoteLockedAndDeviceNotAccepted) { - const s = se.createEl("div", { - text: "To prevent unwanted vault corruption, the remote database has been locked for synchronization, and this device was not marked as 'resolved'. it caused by some operations like this. re-initialized. Local database initialization should be required. please back your vault up, reset local database, and press 'Mark this device as resolved'. " - }); - s.createEl("button", { - text: "I'm ready, mark this device 'resolved'" - }, (r => { - r.addClass("mod-warning"); - r.addEventListener("click", (async () => { - await this.plugin.markRemoteResolved(); - s.remove(); - })); - })); - s.addClass("op-warn"); - } else if (this.plugin.replicator.remoteLocked) { - const s = se.createEl("div", { - text: "To prevent unwanted vault corruption, the remote database has been locked for synchronization. (This device is marked 'resolved') When all your devices are marked 'resolved', unlock the database." - }); - s.createEl("button", { - text: "I'm ready, unlock the database" - }, (r => { - r.addClass("mod-warning"); - r.addEventListener("click", (async () => { - await this.plugin.markRemoteUnlocked(); - s.remove(); - })); - })); - s.addClass("op-warn"); - } - new import_obsidian.Setting(se).setName("Back to non-configured").addButton((s => s.setButtonText("Back").setDisabled(false).onClick((async () => { - this.plugin.settings.isConfigured = false; - await this.plugin.saveSettings(); - this.askReload(); - })))); - se.createEl("div", { - text: "To stop the boot up sequence for fixing problems on databases, you can put redflag.md on top of your vault (Rebooting obsidian is required)." - }).addClass("op-warn-info"); - const addResult = (s, r, o) => { - ae.appendChild(ae.createEl("div", {}, (u => { - u.appendChild(u.createEl("h6", { - text: s - })); - u.appendChild(u.createEl("div", {}, (s => { - s.appendChild(s.createEl("div", { - text: "Storage : Modified: " + (!r ? "Missing:" : `${new Date(r.stat.mtime).toLocaleString()}, Size:${r.stat.size}`) - })); - s.appendChild(s.createEl("div", { - text: "Database: Modified: " + (!o ? "Missing:" : `${new Date(o.mtime).toLocaleString()}, Size:${o.size}`) - })); - }))); - if (o && r) u.appendChild(u.createEl("button", { - text: "Show history" - }, (s => { - s.onClickEvent((() => { - this.plugin.showHistory(r, o._id); - })); - }))); - if (r) u.appendChild(u.createEl("button", { - text: "Storage -> Database" - }, (s => { - s.onClickEvent((() => { - this.plugin.updateIntoDB(r, void 0, true); - u.remove(); - })); - }))); - if (o) u.appendChild(u.createEl("button", { - text: "Database -> Storage" - }, (s => { - s.onClickEvent((() => { - this.plugin.pullFile(this.plugin.getPath(o), [], true, void 0, false); - u.remove(); - })); - }))); - return u; - }))); - }, checkBetweenStorageAndDatabase = async (s, r) => { - const o = readAsBlob(r), u = createBlob(await this.plugin.vaultAccess.vaultReadAuto(s)); - if (await isDocContentSame(u, o)) Logger(`Compare: SAME: ${s.path}`); else { - Logger(`Compare: CONTENT IS NOT MATCHED! ${s.path}`, LOG_LEVEL_NOTICE); - addResult(s.path, s, r); - } - }; - new import_obsidian.Setting(se).setName("Verify and repair all files").setDesc("Compare the content of files between on local database and storage. If not matched, you will asked which one want to keep.").addButton((s => s.setButtonText("Verify all").setDisabled(false).setWarning().onClick((async () => { - const s = this.app.vault.getFiles(), r = [], o = this.plugin.localDatabase.findAllNormalDocs(); - for await (const s of o) r.push(this.plugin.getPath(s)); - const u = [ ...new Set([ ...r, ...s.map((s => s.path)) ]) ]; - let g = 0; - for (const r of u) { - g++; - Logger(`${g}/${s.length}\n${r}`, LOG_LEVEL_NOTICE, "verify"); - if (shouldBeIgnored(r)) continue; - const o = this.plugin.vaultAccess.getAbstractFileByPath(r), u = o instanceof import_obsidian5.TFile ? o : false; - if (!await this.plugin.isTargetFile(r)) continue; - if (u && this.plugin.isFileSizeExceeded(u.stat.size)) continue; - const _ = await this.plugin.localDatabase.getDBEntry(r); - if (!_ || !this.plugin.isFileSizeExceeded(_.size)) if (_ || !u) if (!_ || u) { - if (u && _) await checkBetweenStorageAndDatabase(u, _); - } else { - Logger(`Compare: Not found on the storage: ${r}`, LOG_LEVEL_NOTICE); - addResult(r, false, _); - } else { - Logger(`Compare: Not found on the local database: ${r}`, LOG_LEVEL_NOTICE); - addResult(r, u, false); - } - } - Logger("done", LOG_LEVEL_NOTICE, "verify"); - })))); - const ae = se.createDiv({ - text: "" - }); - new import_obsidian.Setting(se).setName("Check and convert non-path-obfuscated files").setDesc("").addButton((s => s.setButtonText("Perform").setDisabled(false).setWarning().onClick((async () => { - var s, r, o; - for await (const u of this.plugin.localDatabase.findAllDocNames()) if (!u.startsWith("f:")) { - const g = await this.plugin.path2id(u), _ = await this.plugin.localDatabase.getRaw(u); - if (!_) continue; - if ("newnote" != _.type && "plain" != _.type) continue; - if (null != (s = null == _ ? void 0 : _.deleted) ? s : false) continue; - const m = { - ..._ - }; - m._id = g; - m.path = u; - delete m._rev; - try { - const s = await this.plugin.localDatabase.getRaw(g, { - revs_info: true - }); - null == (r = s._revs_info) || r.shift(); - const b = null == (o = s._revs_info) ? void 0 : o.shift(); - if (b) m._rev = b.rev; else m._rev = "1-" + `00000000000000000000000000000000${~~(1e9 * Math.random())}${~~(1e9 * Math.random())}${~~(1e9 * Math.random())}${~~(1e9 * Math.random())}`.slice(-32); - const E = await this.plugin.localDatabase.putRaw(m, { - force: true - }); - if (E.ok) { - Logger(`${u} has been converted as conflicted document`, LOG_LEVEL_NOTICE); - _._deleted = true; - if ((await this.plugin.localDatabase.putRaw(_)).ok) Logger(`Old ${u} has been deleted`, LOG_LEVEL_NOTICE); - await this.plugin.queueConflictCheck(u); - } else { - Logger(`Converting ${u} Failed!`, LOG_LEVEL_NOTICE); - Logger(E, LOG_LEVEL_VERBOSE); - } - } catch (s) { - if (404 == (null == s ? void 0 : s.status)) { - if ((await this.plugin.localDatabase.putRaw(m)).ok) { - Logger(`${u} has been converted`, LOG_LEVEL_NOTICE); - _._deleted = true; - if ((await this.plugin.localDatabase.putRaw(_)).ok) Logger(`Old ${u} has been deleted`, LOG_LEVEL_NOTICE); - } - } else { - Logger(`Something went wrong on converting ${u}`, LOG_LEVEL_NOTICE); - Logger(s, LOG_LEVEL_VERBOSE); - } - } - } - Logger("Converting finished", LOG_LEVEL_NOTICE); - })))); - new import_obsidian.Setting(se).setName("Delete all customization sync data").addButton((s => s.setButtonText("Delete").setDisabled(false).setWarning().onClick((async () => { - Logger("Deleting customization sync data", LOG_LEVEL_NOTICE); - const s = (await this.plugin.localDatabase.allDocsRaw({ - startkey: "ix:", - endkey: "ix:􏿿", - include_docs: true - })).rows.map((s => ({ - ...s.doc, - _deleted: true - }))); - Logger(`${(await this.plugin.localDatabase.bulkDocsRaw(s)).length} items have been removed, to confirm how many items are left, please perform it again.`, LOG_LEVEL_NOTICE); - })))); - new import_obsidian.Setting(se).setName("Suspend file watching").setDesc("Stop watching for file change.").addToggle((s => s.setValue(this.plugin.settings.suspendFileWatching).onChange((async s => { - this.plugin.settings.suspendFileWatching = s; - await this.plugin.saveSettings(); - this.askReload(); - })))); - new import_obsidian.Setting(se).setName("Suspend database reflecting").setDesc("Stop reflecting database changes to storage files.").addToggle((s => s.setValue(this.plugin.settings.suspendParseReplicationResult).onChange((async s => { - this.plugin.settings.suspendParseReplicationResult = s; - await this.plugin.saveSettings(); - this.askReload(); - })))); - new import_obsidian.Setting(se).setName("Write logs into the file").setDesc("Warning! This will have a serious impact on performance. And the logs will not be synchronised under the default name. Please be careful with logs; they often contain your confidential information.").addToggle((s => s.setValue(this.plugin.settings.writeLogToTheFile).onChange((async s => { - this.plugin.settings.writeLogToTheFile = s; - await this.plugin.saveSettings(); - })))); - se.createEl("h4", { - text: (0, import_obsidian.sanitizeHTMLToDom)("Compatibility"), - cls: "wizardHidden" - }); - new import_obsidian.Setting(se).setName("Do not keep metadata of deleted files.").setClass("wizardHidden").addToggle((s => { - s.setValue(this.plugin.settings.deleteMetadataOfDeletedFiles).onChange((async s => { - this.plugin.settings.deleteMetadataOfDeletedFiles = s; - await this.plugin.saveSettings(); - this.display(); - })); - })); - if (this.plugin.settings.deleteMetadataOfDeletedFiles) new import_obsidian.Setting(se).setName("Delete old metadata of deleted files on start-up").setClass("wizardHidden").setDesc("(Days passed, 0 to disable automatic-deletion)").addText((s => { - s.setPlaceholder("").setValue(this.plugin.settings.automaticallyDeleteMetadataOfDeletedFiles + "").onChange((async s => { - let r = Number(s); - if (isNaN(r)) r = 0; - this.plugin.settings.automaticallyDeleteMetadataOfDeletedFiles = r; - await this.plugin.saveSettings(); - })); - s.inputEl.setAttribute("type", "number"); - })); - new import_obsidian.Setting(se).setName("Use an old adapter for compatibility").setDesc("Before v0.17.16, we used an old adapter for the local database. Now the new adapter is preferred. However, it needs local database rebuilding. Please disable this toggle when you have enough time. If leave it enabled, also while fetching from the remote database, you will be asked to disable this.").setClass("wizardHidden").addToggle((s => s.setValue(!this.plugin.settings.useIndexedDBAdapter).onChange((async s => { - this.plugin.settings.useIndexedDBAdapter = !s; - await this.plugin.saveSettings(); - await rebuildDB("localOnly"); - })))); - new import_obsidian.Setting(se).setName("Scan changes on customization sync").setDesc("Do not use internal API").addToggle((s => s.setValue(!this.plugin.settings.watchInternalFileChanges).onChange((async s => { - this.plugin.settings.watchInternalFileChanges = !s; - await this.plugin.saveSettings(); - })))); - let re = this.plugin.settings.additionalSuffixOfDatabaseName + ""; - new import_obsidian.Setting(se).setName("Database suffix").setDesc("LiveSync could not handle multiple vaults which have same name without different prefix, This should be automatically configured.").addText((s => { - s.setPlaceholder("").setValue(re).onChange((s => { - re = s; - })); - })).addButton((s => { - s.setButtonText("Change").onClick((async () => { - if (this.plugin.settings.additionalSuffixOfDatabaseName != re) { - this.plugin.settings.additionalSuffixOfDatabaseName = re; - await this.plugin.saveSettings(); - Logger("Suffix has been changed. Reopening database...", LOG_LEVEL_NOTICE); - await this.plugin.initializeDatabase(); - } else Logger("Suffix was not changed.", LOG_LEVEL_NOTICE); - })); - })); - new import_obsidian.Setting(se).setName("The Hash algorithm for chunk IDs").setDesc("xxhash64 is the current default.").setClass("wizardHidden").addDropdown((s => s.addOptions({ - "": "Old Algorithm", - xxhash32: "xxhash32 (Fast)", - xxhash64: "xxhash64 (Fastest)", - sha1: "Fallback (Without WebAssembly)" - }).setValue(this.plugin.settings.hashAlg).onChange((async s => { - this.plugin.settings.hashAlg = s; - await this.plugin.saveSettings(); - })))).setClass("wizardHidden"); - new import_obsidian.Setting(se).setName("Fetch database with previous behaviour").setDesc("").addToggle((s => s.setValue(this.plugin.settings.doNotSuspendOnFetching).onChange((async s => { - this.plugin.settings.doNotSuspendOnFetching = s; - await this.plugin.saveSettings(); - })))); - addScreenElement("50", se); - const oe = r.createDiv(); - oe.createEl("h3", { - text: "Customization sync (beta)" - }); - const le = new import_obsidian.Setting(oe).setName("Device name").setDesc("Unique name between all synchronized devices. To edit this setting, please disable customization sync once.").addText((s => { - s.setPlaceholder("desktop").setValue(this.plugin.deviceAndVaultName).onChange((async s => { - this.plugin.deviceAndVaultName = s; - await this.plugin.saveSettings(); - })); - })), updateDisabledOfDeviceAndVaultName = () => { - le.setDisabled(this.plugin.settings.usePluginSync); - }; - updateDisabledOfDeviceAndVaultName(); - new import_obsidian.Setting(oe).setName("Enable customization sync").addToggle((s => s.setValue(this.plugin.settings.usePluginSync).onChange((async r => { - if (r && "" == this.plugin.deviceAndVaultName.trim()) { - Logger("We have to configure `Device name` to use this feature.", LOG_LEVEL_NOTICE); - s.setValue(false); - return false; - } - this.plugin.settings.usePluginSync = r; - this.display(); - await this.plugin.saveSettings(); - })))); - if (this.plugin.settings.usePluginSync) { - new import_obsidian.Setting(oe).setName("Scan customization automatically").setDesc("Scan customization before replicating.").addToggle((s => s.setValue(this.plugin.settings.autoSweepPlugins).onChange((async s => { - this.plugin.settings.autoSweepPlugins = s; - updateDisabledOfDeviceAndVaultName(); - await this.plugin.saveSettings(); - })))); - if (!this.plugin.settings.watchInternalFileChanges) new import_obsidian.Setting(oe).setName("Scan customization periodically").setDesc("Scan customization every 1 minute.").addToggle((s => s.setValue(this.plugin.settings.autoSweepPluginsPeriodic).onChange((async s => { - this.plugin.settings.autoSweepPluginsPeriodic = s; - updateDisabledOfDeviceAndVaultName(); - await this.plugin.saveSettings(); - })))); - new import_obsidian.Setting(oe).setName("Notify customized").setDesc("Notify when other device has newly customized.").addToggle((s => s.setValue(this.plugin.settings.notifyPluginOrSettingUpdated).onChange((async s => { - this.plugin.settings.notifyPluginOrSettingUpdated = s; - await this.plugin.saveSettings(); - })))); - new import_obsidian.Setting(oe).setName("Open").setDesc("Open the dialog").addButton((s => { - s.setButtonText("Open").setDisabled(false).onClick((() => { - this.plugin.addOnConfigSync.showPluginSyncModal(); - })); - })); - } - updateDisabledOfDeviceAndVaultName(); - addScreenElement("60", oe); - const ce = r.createDiv(); - ce.createEl("h3", { - text: "Maintain databases" - }); - ce.createEl("h4", { - text: "The remote database" - }); - new import_obsidian.Setting(ce).setName("Lock remote database").setDesc("Lock remote database to prevent synchronization with other devices.").addButton((s => s.setButtonText("Lock").setDisabled(false).setWarning().onClick((async () => { - await this.plugin.markRemoteLocked(); - })))); - new import_obsidian.Setting(ce).setName("Overwrite remote database").setDesc("Overwrite remote database with local DB and passphrase.").addButton((s => s.setButtonText("Send").setWarning().setDisabled(false).onClick((async () => { - await rebuildDB("remoteOnly"); - })))); - ce.createEl("h4", { - text: "The local database" - }); - new import_obsidian.Setting(ce).setName("Fetch rebuilt DB").setDesc("Restore or reconstruct local database from remote database.").addButton((s => s.setButtonText("Fetch").setWarning().setDisabled(false).onClick((async () => { - await rebuildDB("localOnly"); - })))); - new import_obsidian.Setting(ce).setName("Fetch rebuilt DB (Save local documents before)").setDesc("Restore or reconstruct local database from remote database but use local chunks.").addButton((s => s.setButtonText("Save and Fetch").setWarning().setDisabled(false).onClick((async () => { - await rebuildDB("localOnlyWithChunks"); - })))); - new import_obsidian.Setting(ce).setName("Discard local database to reset or uninstall Self-hosted LiveSync").addButton((s => s.setButtonText("Discard").setWarning().setDisabled(false).onClick((async () => { - await this.plugin.resetLocalDatabase(); - await this.plugin.initializeDatabase(); - })))); - ce.createEl("h4", { - text: "Both databases" - }); - new import_obsidian.Setting(ce).setName("(Beta2) Clean up databases").setDesc("Delete unused chunks to shrink the database. This feature requires disabling 'Use an old adapter for compatibility'").addButton((s => s.setButtonText("DryRun").setDisabled(false).onClick((async () => { - await this.plugin.dryRunGC(); - })))).addButton((s => s.setButtonText("Perform cleaning").setDisabled(false).setWarning().onClick((async () => { - this.closeSetting(); - await this.plugin.dbGC(); - })))); - new import_obsidian.Setting(ce).setName("Rebuild everything").setDesc("Rebuild local and remote database with local files.").addButton((s => s.setButtonText("Rebuild").setWarning().setDisabled(false).onClick((async () => { - await rebuildDB("rebuildBothByThisDevice"); - })))); - applyDisplayEnabled(); - addScreenElement("70", ce); - applyDisplayEnabled(); - if ("" == this.selectedScreen) if (O != this.plugin.settings.lastReadUpdates) if (this.plugin.settings.isConfigured) changeDisplay("100"); else changeDisplay("110"); else if (isAnySyncEnabled()) changeDisplay("20"); else changeDisplay("110"); else changeDisplay(this.selectedScreen); - } -}; - -function isImage(s) { - const r = s.split(".").splice(-1)[0].toLowerCase(); - return [ "png", "jpg", "jpeg", "gif", "bmp", "webp" ].includes(r); -} - -function isComparableText(s) { - const r = s.split(".").splice(-1)[0].toLowerCase(); - return isPlainText(s) || [ "md", "mdx", "txt", "json" ].includes(r); -} - -function isComparableTextDecode(s) { - const r = s.split(".").splice(-1)[0].toLowerCase(); - return [ "json" ].includes(r); -} - -function readDocument(s) { - if (0 == s.data.length) return ""; - if (isImage(s.path)) return new Uint8Array(decodeBinary(s.data)); - if ("plain" == s.type || "plain" == s.datatype) return getDocData(s.data); - if (isComparableTextDecode(s.path)) return readString(new Uint8Array(decodeBinary(s.data))); - if (isComparableText(s.path)) return getDocData(s.data); - try { - return readString(new Uint8Array(decodeBinary(s.data))); - } catch (s) {} - return getDocData(s.data); -} - -var DocumentHistoryModal = class extends import_obsidian.Modal { - constructor(s, r, o, u, g) { - super(s); - this.showDiff = false; - this.revs_info = []; - this.currentText = ""; - this.currentDeleted = false; - this.BlobURLs = new Map; - this.plugin = r; - this.file = o instanceof import_obsidian.TFile ? getPathFromTFile(o) : o; - this.id = u; - this.initialRev = g; - if (!o && u) this.file = this.plugin.id2path(u); - if ("1" == localStorage.getItem("ols-history-highlightdiff")) this.showDiff = true; - } - async loadFile(s) { - var r, o; - if (!this.id) this.id = await this.plugin.path2id(this.file); - const u = this.plugin.localDatabase; - try { - const g = await u.getRaw(this.id, { - revs_info: true - }); - this.revs_info = null != (o = null == (r = g._revs_info) ? void 0 : r.filter((s => "available" == (null == s ? void 0 : s.status)))) ? o : []; - this.range.max = `${Math.max(this.revs_info.length - 1, 0)}`; - this.range.value = this.range.max; - this.fileInfo.setText(`${this.file} / ${this.revs_info.length} revisions`); - await this.loadRevs(s); - } catch (s) { - if (isErrorOfMissingDoc(s)) { - this.range.max = "0"; - this.range.value = ""; - this.range.disabled = true; - this.contentView.setText("History of this file was not recorded."); - } else { - this.contentView.setText("Error occurred."); - Logger(s, LOG_LEVEL_VERBOSE); - } - } - } - async loadRevs(s) { - if (0 == this.revs_info.length) return; - if (s) { - const r = this.revs_info.findIndex((r => r.rev == s)); - if (r >= 0) this.range.value = "" + (this.revs_info.length - 1 - r); - } - const r = this.revs_info.length - 1 - this.range.value / 1, o = this.revs_info[r]; - await this.showExactRev(o.rev); - } - revokeURL(s) { - const r = this.BlobURLs.get(s); - if (r) URL.revokeObjectURL(r); - this.BlobURLs.delete(s); - } - generateBlobURL(s, r) { - this.revokeURL(s); - const o = URL.createObjectURL(new Blob([ r ], { - endings: "transparent", - type: "application/octet-stream" - })); - this.BlobURLs.set(s, o); - return o; - } - async showExactRev(s) { - const r = this.plugin.localDatabase, o = await r.getDBEntry(this.file, { - rev: s - }, false, false, true); - this.currentText = ""; - this.currentDeleted = false; - if (false === o) { - this.currentDeleted = true; - this.info.innerHTML = ""; - this.contentView.innerHTML = `Could not read this revision
    (${s})`; - } else { - this.currentDoc = o; - this.info.innerHTML = `Modified:${new Date(o.mtime).toLocaleString()}`; - let s; - const u = readDocument(o); - this.currentDeleted = !!o.deleted; - if (this.showDiff) { - const o = this.revs_info.length - 1 - (this.range.value / 1 - 1); - if (o >= 0 && o < this.revs_info.length) { - const g = this.revs_info[o].rev, _ = await r.getDBEntry(this.file, { - rev: g - }, false, false, true); - if (false != _) if ("string" == typeof u) { - s = ""; - const r = new import_diff_match_patch.diff_match_patch, o = readDocument(_), g = r.diff_main(o, u); - r.diff_cleanupSemantic(g); - for (const r of g) { - const o = r[0], u = r[1]; - if (o == import_diff_match_patch.DIFF_DELETE) s += "" + escapeStringToHTML(u) + ""; else if (o == import_diff_match_patch.DIFF_EQUAL) s += "" + escapeStringToHTML(u) + ""; else if (o == import_diff_match_patch.DIFF_INSERT) s += "" + escapeStringToHTML(u) + ""; - } - s = s.replace(/\n/g, "
    "); - } else if (isImage(this.file)) { - s = `
    \n
    \n \n \n
    \n
    `; - this.contentView.removeClass("op-pre"); - } - } - } - if (null == s) if ("string" != typeof u) { - if (isImage(this.file)) { - s = `
    \n
    \n\n
    \n
    `; - this.contentView.removeClass("op-pre"); - } - } else s = escapeStringToHTML(u); - if (null == s) s = "string" == typeof u ? escapeStringToHTML(u) : "Binary file"; - this.contentView.innerHTML = (this.currentDeleted ? "(At this revision, the file has been deleted)\n" : "") + s; - } - } - onOpen() { - const {contentEl: s} = this; - this.titleEl.setText("Document History"); - s.empty(); - this.fileInfo = s.createDiv(""); - this.fileInfo.addClass("op-info"); - const r = s.createDiv(""); - r.addClass("op-flex"); - r.createEl("input", { - type: "range" - }, (s => { - this.range = s; - s.addEventListener("change", (s => { - this.loadRevs(); - })); - s.addEventListener("input", (s => { - this.loadRevs(); - })); - })); - s.createDiv("", (s => { - s.createEl("label", {}, (s => { - s.appendChild(createEl("input", { - type: "checkbox" - }, (s => { - if (this.showDiff) s.checked = true; - s.addEventListener("input", (r => { - this.showDiff = s.checked; - localStorage.setItem("ols-history-highlightdiff", true == this.showDiff ? "1" : ""); - this.loadRevs(); - })); - }))); - s.appendText("Highlight diff"); - })); - })).addClass("op-info"); - this.info = s.createDiv(""); - this.info.addClass("op-info"); - this.loadFile(this.initialRev); - const o = s.createDiv({ - text: "Loading old revisions..." - }); - this.contentView = o; - o.addClass("op-scrollable"); - o.addClass("op-pre"); - const u = s.createDiv(""); - u.createEl("button", { - text: "Copy to clipboard" - }, (s => { - s.addClass("mod-cta"); - s.addEventListener("click", (async () => { - await navigator.clipboard.writeText(this.currentText); - Logger("Old content copied to clipboard", LOG_LEVEL_NOTICE); - })); - })); - const focusFile = async s => { - const r = this.plugin.app.vault.getFileByPath(s); - if (r) { - const s = this.plugin.app.workspace.getLeaf(false); - await s.openFile(r); - } else Logger("The file could not view on the editor", LOG_LEVEL_NOTICE); - }; - u.createEl("button", { - text: "Back to this revision" - }, (s => { - s.addClass("mod-cta"); - s.addEventListener("click", (async () => { - const s = stripPrefix(this.file); - if (!isValidPath(s)) { - Logger("Path is not valid to write content.", LOG_LEVEL_INFO); - return; - } - if (!this.currentDoc) { - Logger("No active file loaded.", LOG_LEVEL_INFO); - return; - } - const r = readContent(this.currentDoc); - await this.plugin.vaultAccess.adapterWrite(s, r); - await focusFile(s); - this.close(); - })); - })); - } - onClose() { - const {contentEl: s} = this; - s.empty(); - this.BlobURLs.forEach((s => { - console.log(s); - if (s) URL.revokeObjectURL(s); - })); - } -}, WrappedNotice = class { - constructor(s, r) { - var o; - let u = ""; - if (s instanceof DocumentFragment) u = null != (o = s.textContent) ? o : ""; else u = s; - Logger(u, LOG_LEVEL_NOTICE); - } - setMessage(s) { - var r; - let o = ""; - if (s instanceof DocumentFragment) o = null != (r = s.textContent) ? r : ""; else o = s; - Logger(o, LOG_LEVEL_NOTICE); - return this; - } - hide() {} -}, _notice = WrappedNotice; - -function setNoticeClass(s) { - _notice = s; -} - -var StorageEventManager = class {}, StorageEventManagerObsidian = class extends StorageEventManager { - constructor(s) { - super(); - this.plugin = s; - } - beginWatch() { - const s = this.plugin; - this.watchVaultChange = this.watchVaultChange.bind(this); - this.watchVaultCreate = this.watchVaultCreate.bind(this); - this.watchVaultDelete = this.watchVaultDelete.bind(this); - this.watchVaultRename = this.watchVaultRename.bind(this); - this.watchVaultRawEvents = this.watchVaultRawEvents.bind(this); - s.registerEvent(s.app.vault.on("modify", this.watchVaultChange)); - s.registerEvent(s.app.vault.on("delete", this.watchVaultDelete)); - s.registerEvent(s.app.vault.on("rename", this.watchVaultRename)); - s.registerEvent(s.app.vault.on("create", this.watchVaultCreate)); - s.registerEvent(s.app.vault.on("raw", this.watchVaultRawEvents)); - s.fileEventQueue.startPipeline(); - } - watchVaultCreate(s, r) { - this.appendWatchEvent([ { - type: "CREATE", - file: s - } ], r); - } - watchVaultChange(s, r) { - this.appendWatchEvent([ { - type: "CHANGED", - file: s - } ], r); - } - watchVaultDelete(s, r) { - this.appendWatchEvent([ { - type: "DELETE", - file: s - } ], r); - } - watchVaultRename(s, r, o) { - if (s instanceof import_obsidian.TFile) this.appendWatchEvent([ { - type: "DELETE", - file: { - path: r, - mtime: s.stat.mtime, - ctime: s.stat.ctime, - size: s.stat.size, - deleted: true - } - }, { - type: "CREATE", - file: s - } ], o); - } - watchVaultRawEvents(s) { - if (this.plugin.settings.useIgnoreFiles && this.plugin.ignoreFiles.some((r => s.endsWith(r.trim())))) this.plugin.isTargetFile(s).then((() => this._watchVaultRawEvents(s))); else this._watchVaultRawEvents(s); - } - _watchVaultRawEvents(s) { - if (this.plugin.settings.syncInternalFiles || this.plugin.settings.usePluginSync) if (this.plugin.settings.watchInternalFileChanges) if (s.startsWith(this.plugin.app.vault.configDir)) if (!this.plugin.settings.syncInternalFilesIgnorePatterns.replace(/\n| /g, "").split(",").filter((s => s)).map((s => new RegExp(s, "i"))).some((r => s.match(r)))) this.appendWatchEvent([ { - type: "INTERNAL", - file: { - path: s, - mtime: 0, - ctime: 0, - size: 0 - } - } ], null); - } - async appendWatchEvent(s, r) { - var o; - if (this.plugin.settings.isConfigured) if (!this.plugin.settings.suspendFileWatching) for (const u of s) { - if (shouldBeIgnored(u.file.path)) continue; - const s = [ 0, 0, 0, 0, 0, 0 ].map((s => `${Math.floor(1e5 * Math.random())}`)).join("-"), g = u.type, _ = u.file, m = u.oldPath, b = _ instanceof import_obsidian.TFile ? _.stat.size : null != (o = null == _ ? void 0 : _.size) ? o : 0; - if (this.plugin.isFileSizeExceeded(b) && ("CREATE" == g || "CHANGED" == g)) { - Logger(`The storage file has been changed but exceeds the maximum size. Skipping: ${u.file.path}`, LOG_LEVEL_NOTICE); - continue; - } - if (_ instanceof import_obsidian.TFolder) continue; - if (!await this.plugin.isTargetFile(_.path)) continue; - if (_ instanceof import_obsidian.TFile && ("CREATE" == g || "CHANGED" == g)) { - await delay(10); - if (this.plugin.vaultAccess.recentlyTouched(_)) continue; - } - const E = _ instanceof import_obsidian.TFile ? { - ctime: _.stat.ctime, - mtime: _.stat.mtime, - file: _, - path: _.path, - size: _.stat.size - } : _; - this.plugin.fileEventQueue.enqueueWithKey(`file-${E.path}`, { - type: g, - args: { - file: E, - oldPath: m, - ctx: r - }, - key: s - }); - } - } -}; - -async function getChunk(s, r) { - const o = s.hashCaches.revGet(r); - if (void 0 !== o) return { - isNew: false, - id: o, - piece: r - }; - const u = PREFIX_CHUNK + await generateHashedChunk(s, r), g = s.hashCaches.get(u); - if (g && g != r) { - Logger(`Hash collided! If possible, please report the following string:${u}=>\nA:--${g}--\nB:--${r}--`, LOG_LEVEL_NOTICE); - return false; - } - s.hashCaches.set(u, r); - return { - isNew: true, - id: u, - piece: r - }; -} - -async function generateHashedChunk(s, r) { - const o = s.settings.passphrase; - if ("sha1" == s.settings.hashAlg) if (s.settings.encrypt) return "+" + await sha1(`${r}-${o}-${r.length}`); else return await sha1(`${r}-${r.length}`); else if ("" === s.settings.hashAlg) if (s.settings.encrypt) { - const u = s.h32Raw((new TextEncoder).encode(o)); - return "+" + (s.h32Raw((new TextEncoder).encode(r)) ^ u ^ r.length).toString(36); - } else return (s.h32Raw((new TextEncoder).encode(r)) ^ r.length).toString(36); else if ("xxhash64" == s.settings.hashAlg && s.xxhash64) if (s.settings.encrypt) return "+" + s.xxhash64(`${r}-${o}-${r.length}`).toString(36); else return s.xxhash64(`${r}-${r.length}`).toString(36); else if (s.settings.encrypt) return "+" + s.xxhash32(`${r}-${o}-${r.length}`).toString(36); else return s.xxhash32(`${r}-${r.length}`).toString(36); -} - -async function putDBEntry(s, r) { - var o; - const u = s.id2path(r._id, r), g = stripAllPrefixes(u); - if (!s.isTargetFile(u)) { - Logger(`File skipped:${g}`, LOG_LEVEL_VERBOSE); - return false; - } - let _ = 0; - const m = Math.floor(MAX_DOC_SIZE_BIN * (1 * (s.settings.customChunkSize || 0) + 1)); - let b = false; - const E = s.settings.minimumChunkSize; - if (Date.now() - r.mtime > 2592e6) b = false; else if (shouldSplitAsPlainText(u)) b = true; - const w = r.data instanceof Blob ? r.data : createTextBlob(r.data); - r.type = isTextBlob(w) ? "plain" : "newnote"; - r.datatype = r.type; - const S = await splitPieces2(w, m, b, E, u), L = []; - for await (const r of S()) { - _++; - L.push(getChunk(s, r)); - } - const O = await Promise.all(L); - if (O.some((s => false === s))) { - Logger(`This document could not be saved:${g}`, LOG_LEVEL_NOTICE); - return false; - } - const D = O.filter((s => s.isNew)).map((s => ({ - _id: s.id, - data: s.piece, - type: "leaf" - }))), k = _ - D.length; - if (D.length) { - const r = (await s.localDatabase.bulkDocs(D)).reduce(((s, r) => { - if ("ok" in r) { - s.ok.push(r); - return s; - } - if ("error" in r) if (409 == r.status) { - s.skip.push(r); - return s; - } - s.failed.push(r); - return s; - }), { - ok: [], - skip: [], - failed: [] - }); - if (r.failed.length) { - Logger(`Save failed.: ${g} :${r.failed.map((s => { - var r; - return null != (r = null == s ? void 0 : s.id) ? r : s.toString(); - })).join(",")}`, LOG_LEVEL_VERBOSE); - Logger(`This document could not be saved:${g}`, LOG_LEVEL_NOTICE); - return false; - } - Logger(`Chunks saved: doc: ${g} ,chunks: ${_} (new:${r.ok.length}, recycled:${r.skip.length}, cached:${k})`); - } - const C = { - children: O.map((s => s.id)), - _id: r._id, - path: r.path, - ctime: r.ctime, - mtime: r.mtime, - size: r.size, - type: r.datatype - }; - return null != (o = await serialized("file:" + u, (async () => { - try { - const r = await s.localDatabase.get(C._id); - C._rev = r._rev; - } catch (s) { - if (isErrorOfMissingDoc(s)) ; else throw s; - } - const r = await s.localDatabase.put(C, { - force: true - }); - if (r.ok) return r; else return false; - }))) ? o : false; -} - -async function getDBEntryMeta(s, r, o, u = false) { - var g, _; - if (!s.isTargetFile(r)) return false; - const m = await s.path2id(r); - try { - let b = null; - if (o) b = await s.localDatabase.get(m, o); else b = await s.localDatabase.get(m); - const E = null != (_ = null != (g = null == b ? void 0 : b.deleted) ? g : b._deleted) ? _ : void 0; - if (!u && E) return false; - if (b.type && "leaf" == b.type) return false; - if (!b.type || b.type && "notes" == b.type || "newnote" == b.type || "plain" == b.type) { - const s = b; - let o = [], u = "plain"; - if ("newnote" == b.type || "plain" == b.type) { - o = b.children; - u = b.type; - } - return { - data: "", - _id: s._id, - path: r, - ctime: s.ctime, - mtime: s.mtime, - size: s.size, - _rev: b._rev, - _conflicts: b._conflicts, - children: o, - datatype: u, - deleted: E, - type: u - }; - } - } catch (s) { - if (isErrorOfMissingDoc(s)) return false; - throw s; - } - return false; -} - -async function getDBEntryFromMeta(s, r, o, u = false, g = true, _ = false) { - var m, b, E; - const w = s.id2path(r._id, r); - if (!s.isTargetFile(w)) return false; - const S = stripAllPrefixes(w), L = null != (b = null != (m = r.deleted) ? m : r._deleted) ? b : void 0; - if (!r.type || r.type && "notes" == r.type) { - const s = r, o = { - data: s.data, - path: s.path, - _id: s._id, - ctime: s.ctime, - mtime: s.mtime, - size: s.size, - _rev: r._rev, - _conflicts: r._conflicts, - children: [], - datatype: "newnote", - deleted: L, - type: "newnote" - }; - if (u) { - Logger("--Old fashioned document--"); - Logger(o); - } - return o; - } - if ("newnote" == r.type || "plain" == r.type) { - if (u) { - const o = await s.localDatabase.get(r._id, { - conflicts: true, - revs_info: true - }); - Logger("-- Conflicts --"); - Logger(null != (E = o._conflicts) ? E : "No conflicts"); - Logger("-- Revs info -- "); - Logger(o._revs_info); - } - try { - if (u) { - Logger("--Bare document--"); - Logger(r); - } - let o = []; - if (s.settings.readChunksOnline) { - const u = await s.collectChunks(r.children, false, g); - if (false === u || u.some((s => "leaf" != s.type))) { - Logger(`Chunks of ${S} (${r._id.substring(0, 8)}) are not valid.`, LOG_LEVEL_NOTICE); - if (u) Logger(`Missing chunks: ${u.map((s => s._id)).join(",")}`, LOG_LEVEL_VERBOSE); - return false; - } - o = u.map((s => s.data)); - } else try { - if (g) { - o = await Promise.all(r.children.map((r => s.getDBLeaf(r, g)))); - if (u) { - Logger("--Chunks--"); - Logger(o); - } - } else { - const u = await s.localDatabase.allDocs({ - keys: r.children, - include_docs: true - }); - if (u.rows.some((s => "error" in s))) { - const s = u.rows.filter((s => "error" in s)).map((s => s.key)).join(", "); - Logger(`Chunks of ${S} (${r._id.substring(0, 8)}) are not valid.`, LOG_LEVEL_NOTICE); - Logger(`Missing chunks: ${s}`, LOG_LEVEL_VERBOSE); - return false; - } - if (u.rows.some((s => s.doc && "leaf" != s.doc.type))) { - const s = u.rows.filter((s => s.doc && "leaf" != s.doc.type)).map((s => s.id)).join(", "); - Logger(`Chunks of ${S} (${r._id.substring(0, 8)}) are not valid.`, LOG_LEVEL_NOTICE); - Logger(`Corrupted chunks: ${s}`, LOG_LEVEL_VERBOSE); - return false; - } - o = u.rows.map((s => s.doc.data)); - } - } catch (s) { - Logger(`Something went wrong on reading chunks of ${S}(${r._id.substring(0, 8)}) from database, see verbose info for detail.`, LOG_LEVEL_NOTICE); - Logger(s, LOG_LEVEL_VERBOSE); - return false; - } - const _ = { - data: o, - path: r.path, - _id: r._id, - ctime: r.ctime, - mtime: r.mtime, - size: r.size, - _rev: r._rev, - children: r.children, - datatype: r.type, - _conflicts: r._conflicts, - deleted: L, - type: r.type - }; - if (u) { - Logger("--Loaded Document--"); - Logger(_); - } - return _; - } catch (s) { - if (isErrorOfMissingDoc(s)) { - Logger(`Missing document content!, could not read ${S}(${r._id.substring(0, 8)}) from database.`, LOG_LEVEL_NOTICE); - return false; - } - Logger(`Something went wrong on reading ${S}(${r._id.substring(0, 8)}) from database:`, LOG_LEVEL_NOTICE); - Logger(s); - } - } - return false; -} - -async function getDBEntry(s, r, o, u = false, g = true, _ = false) { - const m = await getDBEntryMeta(s, r, o, _); - if (m) return await getDBEntryFromMeta(s, m, o, u, g, _); else return false; -} - -async function deleteDBEntry(s, r, o) { - var u; - if (!s.isTargetFile(r)) return false; - const g = await s.path2id(r); - try { - return null != (u = await serialized("file:" + r, (async () => { - let u = null; - if (o) u = await s.localDatabase.get(g, o); else u = await s.localDatabase.get(g); - const _ = o && "" != ("rev" in o ? o.rev : ""); - if (u.type && "leaf" == u.type) return false; - if (!u.type || u.type && "notes" == u.type) { - u._deleted = true; - const o = await s.localDatabase.put(u, { - force: !_ - }); - Logger(`Entry removed:${r} (${u._id.substring(0, 8)}-${o.rev})`); - return true; - } - if ("newnote" == u.type || "plain" == u.type) { - if (_) u._deleted = true; else { - u.deleted = true; - u.mtime = Date.now(); - if (s.settings.deleteMetadataOfDeletedFiles) u._deleted = true; - } - const o = await s.localDatabase.put(u, { - force: !_ - }); - Logger(`Entry removed:${r} (${u._id.substring(0, 8)}-${o.rev})`); - return true; - } else return false; - }))) ? u : false; - } catch (s) { - if (isErrorOfMissingDoc(s)) return false; - throw s; - } -} - -async function deleteDBEntryPrefix(s, r) { - let o = 0, u = 0; - const g = []; - do { - const _ = await s.localDatabase.allDocs({ - include_docs: false, - skip: o, - limit: 100, - conflicts: true - }); - u = _.rows.length; - if (u > 0) for (const o of _.rows) { - const u = s.id2path(o.id, o.doc); - if (u.startsWith(r)) { - if (s.isTargetFile(u)) g.push(o.id); - } else if (!o.id.startsWith("h:")) ; - } - o += u; - } while (0 != u); - let _ = 0, m = 0; - for (const r of g) try { - await serialized("file:" + r, (async () => { - const o = await s.localDatabase.get(r); - if ("newnote" == o.type || "plain" == o.type) { - o.deleted = true; - if (s.settings.deleteMetadataOfDeletedFiles) o._deleted = true; - o.mtime = Date.now(); - } else o._deleted = true; - await s.localDatabase.put(o, { - force: true - }); - })); - _++; - } catch (s) { - if (isErrorOfMissingDoc(s)) m++; else throw s; - } - Logger(`deleteDBEntryPrefix:deleted ${_} items, skipped ${m}`); - return true; -} - -async function ensureDatabaseIsCompatible(s, r, o, u) { - const g = { - _id: MILSTONE_DOCID, - type: "milestoneinfo", - created: new Date / 1, - locked: false, - accepted_nodes: [ o ], - node_chunk_info: { - [o]: u - } - }, _ = { - ...g, - ...await resolveWithIgnoreKnownError(s.get(MILSTONE_DOCID), g) - }; - _.node_chunk_info = { - ...g.node_chunk_info, - ..._.node_chunk_info - }; - if (_.node_chunk_info[o].min != u.min || _.node_chunk_info[o].max != u.max || "undefined" == typeof _._rev) { - _.node_chunk_info[o].min = u.min; - _.node_chunk_info[o].max = u.max; - await s.put(_); - } - let m = u.min, b = u.max; - for (const s of _.accepted_nodes) if (s != o) if (s in _.node_chunk_info) { - const r = _.node_chunk_info[s]; - m = Math.max(r.min, m); - b = Math.min(r.max, b); - } else { - m = 0; - b = 0; - } - if (b < m) if (!r.ignoreVersionCheck) return "INCOMPATIBLE"; - if (_.locked) { - if (-1 == _.accepted_nodes.indexOf(o)) if (_.cleaned) return "NODE_CLEANED"; else return "NODE_LOCKED"; - return "LOCKED"; - } - return "OK"; -} - -var LiveSyncLocalDB = class { - constructor(s, r) { - this.isReady = false; - this.xxhash64 = false; - this.hashCaches = new LRUCache(10, 1e3); - this.changeHandler = null; - this.chunkVersion = -1; - this.maxChunkVersion = -1; - this.minChunkVersion = -1; - this.needScanning = false; - this._chunkCollectProcessor = new QueueProcessor((async s => { - try { - const r = await this._collectChunks(s, false); - if (r) r.forEach((s => sendValue(`chunk-fetch-${s._id}`, s))); else throw Error("Failed: CollectChunksInternal"); - } catch (r) { - Logger("Exception raised while retrieving chunks", LOG_LEVEL_NOTICE); - Logger(r, LOG_LEVEL_VERBOSE); - s.forEach((s => sendValue(`chunk-fetch-${s}`, []))); - } - }), { - batchSize: 100, - interval: 100, - concurrentLimit: 1, - maintainDelay: true, - suspended: false, - totalRemainingReactiveSource: collectingChunks - }); - this.auth = { - username: "", - password: "" - }; - this.dbname = s; - this.env = r; - this.refreshSettings(); - } - onunload() { - var s, r; - this.env.beforeOnUnload(this); - null == (s = this.changeHandler) || s.cancel(); - null == (r = this.changeHandler) || r.removeAllListeners(); - this.localDatabase.removeAllListeners(); - } - refreshSettings() { - const s = this.env.getSettings(); - this.settings = s; - this.hashCaches = new LRUCache(s.hashCacheMaxCount, s.hashCacheMaxAmount); - } - id2path(s, r, o) { - return this.env.id2path(s, r, o); - } - async path2id(s, r) { - return await this.env.path2id(s, r); - } - async close() { - var s, r; - Logger("Database closed (by close)"); - this.isReady = false; - null == (s = this.changeHandler) || s.cancel(); - null == (r = this.changeHandler) || r.removeAllListeners(); - if (null != this.localDatabase) await this.localDatabase.close(); - this.env.onClose(this); - } - async initializeDatabase() { - var s, r; - await this.prepareHashFunctions(); - if (null != this.localDatabase) await this.localDatabase.close(); - null == (s = this.changeHandler) || s.cancel(); - null == (r = this.changeHandler) || r.removeAllListeners(); - this.localDatabase = null; - this.localDatabase = this.env.createPouchDBInstance(this.dbname + "-livesync-v2", { - auto_compaction: false, - revs_limit: 100, - deterministic_revs: true - }); - await this.env.onInitializeDatabase(this); - Logger("Opening Database..."); - Logger("Database info", LOG_LEVEL_VERBOSE); - Logger(await this.localDatabase.info(), LOG_LEVEL_VERBOSE); - this.localDatabase.on("close", (() => { - var s; - Logger("Database closed."); - this.isReady = false; - this.localDatabase.removeAllListeners(); - null == (s = this.env.getReplicator()) || s.closeReplication(); - })); - const o = this.localDatabase.changes({ - since: "now", - live: true, - filter: s => "leaf" == s.type - }).on("change", (s => { - if (!s.deleted) sendValue(`leaf-${s.id}`, s.doc); - })); - this.changeHandler = o; - this.isReady = true; - Logger("Database is now ready."); - return true; - } - async prepareHashFunctions() { - if (null == this.h32) if ("sha1" != this.settings.hashAlg) try { - const {h32ToString: s, h32Raw: r, h32: o, h64: u} = await e2(); - this.xxhash64 = u; - this.xxhash32 = o; - this.h32 = s; - this.h32Raw = r; - Logger("Newer xxhash has been initialised", LOG_LEVEL_VERBOSE); - } catch (s) { - Logger("Could not initialise xxhash: use v1", LOG_LEVEL_VERBOSE); - Logger(s); - try { - this.xxhash64 = false; - const {h32: s, h32Raw: r} = await xxhash_wasm_default(); - this.h32 = s; - this.h32Raw = r; - this.xxhash32 = s => r(writeString(s)); - } catch (s) { - Logger("Could not initialise xxhash: use sha1F", LOG_LEVEL_VERBOSE); - Logger(s); - this.settings.hashAlg = "sha1"; - } - } else Logger("Fallback(SHA1) is used for hashing", LOG_LEVEL_VERBOSE); - } - async readChunk(s, r) { - const o = this.hashCaches.revGet(s); - if (o) return o; - let u; - try { - u = await this.localDatabase.get(s); - } catch (s) { - if (!isErrorOfMissingDoc(s)) throw s; - } - if (void 0 === u && 0 != r) { - const o = await waitForValue(`leaf-${s}`, r); - if (o === RESULT_TIMED_OUT) throw new Error(`Timed out: ${s}`); - u = o; - } - if (void 0 === u) throw new Error(`Missing chunks of: ${s}`); - if ("leaf" != u.type) throw new Error(`Corrupted chunk has been detected: ${s}`); - this.hashCaches.set(s, u.data); - return u.data; - } - async getDBLeafWithTimeout(s, r) { - try { - return await this.readChunk(s, r); - } catch (s) { - Logger("Something went wrong while retrieving chunks"); - Logger(s, LOG_LEVEL_VERBOSE); - throw s; - } - } - getDBLeaf(s, r) { - return this.getDBLeafWithTimeout(s, r ? LEAF_WAIT_TIMEOUT : 0); - } - async getDBEntryMeta(s, r, o = false) { - return getDBEntryMeta(this, s, r, o); - } - async getDBEntry(s, r, o = false, u = true, g = false) { - return getDBEntry(this, s, r, o, u, g); - } - async getDBEntryFromMeta(s, r, o = false, u = true, g = false) { - return getDBEntryFromMeta(this, s, r, o, u, g); - } - async deleteDBEntry(s, r) { - return deleteDBEntry(this, s, r); - } - async deleteDBEntryPrefix(s) { - return deleteDBEntryPrefix(this, s); - } - async putDBEntry(s) { - return putDBEntry(this, s); - } - async resetDatabase() { - var s, r; - null == (s = this.changeHandler) || s.cancel(); - null == (r = this.changeHandler) || r.removeAllListeners(); - this.env.getReplicator().closeReplication(); - await this.env.onResetDatabase(this); - Logger("Database closed for reset Database."); - this.isReady = false; - await this.localDatabase.destroy(); - this.localDatabase = null; - await this.initializeDatabase(); - Logger("Local Database Reset", LOG_LEVEL_NOTICE); - } - isTargetFile(s) { - const r = s.startsWith("i:") ? s.substring(2) : s; - if (r.startsWith("ix:")) return true; - if (r.startsWith("ps:")) return true; - if (r.includes(":")) return false; - if (this.settings.syncOnlyRegEx) { - const s = new RegExp(this.settings.syncOnlyRegEx); - if (!r.match(s)) return false; - } - if (this.settings.syncIgnoreRegEx) { - const s = new RegExp(this.settings.syncIgnoreRegEx); - if (r.match(s)) return false; - } - return true; - } - async collectChunks(s, r = false, o) { - const u = await this.collectChunksWithCache(s); - if (0 == u.filter((s => !s.chunk)).map((s => s.id)).length) return u.map((s => s.chunk)); - this._chunkCollectProcessor.batchSize = this.settings.concurrencyOfReadChunksOnline; - this._chunkCollectProcessor.interval = this.settings.minimumIntervalOfReadChunksOnline; - this._chunkCollectProcessor.enqueueAll(s); - const g = s.map((s => waitForValue(`chunk-fetch-${s}`))); - return (await Promise.all(g)).filter(onlyNot(RESULT_TIMED_OUT)); - } - async _collectChunks(s, r = false) { - const o = await this.collectChunksWithCache(s), u = o.filter((s => !s.chunk)).map((s => s.id)); - if (0 == u.length) return o.map((s => s.chunk)); - const g = await this.env.getReplicator().fetchRemoteChunks(u, r); - if (false == g) { - Logger("Could not fetch chunks from the server. ", r ? LOG_LEVEL_NOTICE : LOG_LEVEL_VERBOSE, "fetch"); - return false; - } - g.forEach((s => this.hashCaches.set(s._id, s.data))); - await this.localDatabase.bulkDocs(g, { - new_edits: false - }); - const _ = Object.fromEntries([ ...o.map((s => s.chunk)).filter((s => false !== s)), ...g ].map((s => [ s._id, s ]))), m = s.map((s => { - var r; - return null != (r = null == _ ? void 0 : _[s]) ? r : void 0; - })); - if (m.some((s => void 0 === s))) return false; else return m; - } - async* findEntries(s, r, o) { - let u = s, g = this.allDocsRaw({ - limit: 100, - startkey: u, - endkey: r, - include_docs: true, - ...o - }); - do { - const s = await g; - if (0 === s.rows.length) break; - u = `${s.rows[s.rows.length - 1].id}`; - g = this.allDocsRaw({ - limit: 100, - skip: 1, - startkey: u, - endkey: r, - include_docs: true, - ...o - }); - for (const r of s.rows) { - const s = r.doc; - if ("type" in s) if ("newnote" == s.type || "plain" == s.type) yield s; - } - } while ("" != u); - } - async* findAllDocs(s) { - const r = [ () => this.findEntries("", "_", null != s ? s : {}), () => this.findEntries("_􏿿", "h:", null != s ? s : {}), () => this.findEntries("h:􏿿", "", null != s ? s : {}) ]; - for (const s of r) { - const r = s(); - for await (const s of r) yield s; - } - } - async* findEntryNames(s, r, o) { - let u = s, g = this.allDocsRaw({ - limit: 100, - startkey: u, - endkey: r, - ...o - }); - do { - const s = await g; - if (0 == s.rows.length) { - u = ""; - break; - } - u = `${s.rows[s.rows.length - 1].key}`; - g = this.allDocsRaw({ - limit: 100, - skip: 1, - startkey: u, - endkey: r, - ...o - }); - for (const r of s.rows) yield r.id; - } while ("" != u); - } - async* findAllDocNames(s) { - const r = [ () => this.findEntryNames("", "_", null != s ? s : {}), () => this.findEntryNames("_􏿿", "h:", null != s ? s : {}), () => this.findEntryNames("h:􏿿", "i:", null != s ? s : {}), () => this.findEntryNames("i:􏿿", "ix:", null != s ? s : {}), () => this.findEntryNames("ix:􏿿", "ps:", null != s ? s : {}), () => this.findEntryNames("ps:􏿿", "", null != s ? s : {}) ]; - for (const s of r) { - const r = s(); - for await (const s of r) if (!s.startsWith("_")) if (s != VERSIONINFO_DOCID) yield s; - } - } - async* findAllNormalDocs(s) { - const r = [ () => this.findEntries("", "_", null != s ? s : {}), () => this.findEntries("_􏿿", "h:", null != s ? s : {}), () => this.findEntries("h:􏿿", "i:", null != s ? s : {}), () => this.findEntries("i:􏿿", "ix:", null != s ? s : {}), () => this.findEntries("ix:􏿿", "ps:", null != s ? s : {}), () => this.findEntries("ps:􏿿", "", null != s ? s : {}) ]; - for (const s of r) { - const r = s(); - for await (const s of r) if (!s._id.startsWith("_")) if ("newnote" == s.type || "plain" == s.type) yield s; - } - } - async removeRevision(s, r) { - try { - const o = await this.localDatabase.get(s, { - rev: r - }); - o._deleted = true; - await this.localDatabase.put(o); - return true; - } catch (o) { - if (isErrorOfMissingDoc(o)) Logger(`Remove revision: Missing target revision, ${s}-${r}`, LOG_LEVEL_VERBOSE); - } - return false; - } - getRaw(s, r) { - return this.localDatabase.get(s, r || {}); - } - removeRaw(s, r, o) { - return this.localDatabase.remove(s, r, o || {}); - } - putRaw(s, r) { - return this.localDatabase.put(s, r || {}); - } - allDocsRaw(s) { - return this.localDatabase.allDocs(s); - } - bulkDocsRaw(s, r) { - return this.localDatabase.bulkDocs(s, r || {}); - } - async collectChunksWithCache(s) { - const r = s.map((s => this.hashCaches.has(s) ? { - id: s, - chunk: this.hashCaches.get(s) - } : { - id: s, - chunk: false - })), o = r.filter((s => false === s.chunk)); - if (o.length > 0) { - const s = await this.localDatabase.allDocs({ - keys: o.map((s => s.id)), - include_docs: true - }), u = s.rows.filter((s => !("error" in s))).map((s => s.doc)), g = s.rows.filter((s => "error" in s)).map((s => s.key)), _ = (await this.localDatabase.allDocs({ - keys: g.map((s => `_local/${s}`)), - include_docs: true - })).rows.filter((s => !("error" in s))).map((s => ({ - ...s.doc, - _id: s.id.substring(7) - }))), m = Object.fromEntries(_.map((s => [ s._id, s.data ]))); - for (const s of u) { - m[s._id] = s.data; - this.hashCaches.set(s._id, s.data); - } - return r.map((s => ({ - id: s.id, - chunk: false !== s.chunk ? s.chunk : s.id in m ? m[s.id] : false - }))).map((s => ({ - id: s.id, - chunk: false !== s.chunk ? { - _id: s.id, - data: s.chunk, - type: "leaf" - } : false - }))); - } else return r.map((s => ({ - id: s.id, - chunk: { - _id: s.id, - data: s.chunk, - type: "leaf" - } - }))); - } -}, currentVersionRange = { - min: 0, - max: 2, - current: 2 -}, selectorOnDemandPull = { - selector: { - type: { - $ne: "leaf" - } - } -}, selectorOnDemandPush = {}; - -async function* genReplication(s, r) { - const o = []; - let locker = () => Promise.resolve(), unlock = () => { - locker = () => new Promise((s => unlock = s)); - }; - unlock(); - const push = function(s) { - o.push(s); - unlock(); - }; - s.on("complete", (s => push([ "complete", s ]))); - s.on("change", (s => push([ "change", s ]))); - s.on("active", (() => push([ "active" ]))); - s.on("denied", (s => push([ "denied", s ]))); - s.on("error", (s => push([ "error", s ]))); - s.on("paused", (s => push([ "paused", s ]))); - s.then((() => push([ "finally" ]))).catch((() => push([ "finally" ]))); - try { - e: for (;;) { - const s = o.shift(); - if (!s) { - const dx = async () => { - await locker(); - return true; - }; - for (;;) { - const timeout = async () => { - await delay(100); - return false; - }; - if (await Promise.race([ dx(), timeout() ])) continue e; - if (r.aborted) break e; - } - } else { - yield s; - if ("finally" == s[0]) break; - } - } - } finally { - s.cancel(); - } -} - -var idbProxyableTypes, cursorAdvanceMethods, LiveSyncDBReplicator = class { - constructor(s) { - this.syncStatus = "NOT_CONNECTED"; - this.docArrived = 0; - this.docSent = 0; - this.lastSyncPullSeq = 0; - this.maxPullSeq = 0; - this.lastSyncPushSeq = 0; - this.maxPushSeq = 0; - this.nodeid = ""; - this.remoteLocked = false; - this.remoteCleaned = false; - this.remoteLockedAndDeviceNotAccepted = false; - this.updateInfo = () => { - this.env.replicationStat.value = { - sent: this.docSent, - arrived: this.docArrived, - maxPullSeq: this.maxPullSeq, - maxPushSeq: this.maxPushSeq, - lastSyncPullSeq: this.lastSyncPullSeq, - lastSyncPushSeq: this.lastSyncPushSeq, - syncStatus: this.syncStatus - }; - }; - this.env = s; - this.initializeDatabaseForReplication(); - this.env.getDatabase().on("close", (() => { - this.closeReplication(); - })); - } - async initializeDatabaseForReplication() { - const s = this.env.getDatabase(); - try { - const r = await resolveWithIgnoreKnownError(s.get(NODEINFO_DOCID), { - _id: NODEINFO_DOCID, - type: "nodeinfo", - nodeid: "", - v20220607: true - }); - if ("" == r.nodeid) { - r.nodeid = Math.random().toString(36).slice(-10); - await s.put(r); - } - this.nodeid = r.nodeid; - return true; - } catch (s) { - Logger(s); - } - return false; - } - async migrate(s, r) { - Logger(`Database updated from ${s} to ${r}`, LOG_LEVEL_NOTICE); - return true; - } - terminateSync() { - if (this.controller) { - this.controller.abort(); - this.controller = void 0; - } - } - async openReplication(s, r, o, u = false) { - await this.initializeDatabaseForReplication(); - if (r) this.openContinuousReplication(s, o, false); else return this.openOneShotReplication(s, o, false, "sync", u); - } - replicationActivated(s) { - this.syncStatus = "CONNECTED"; - this.updateInfo(); - Logger("Replication activated", s ? LOG_LEVEL_NOTICE : LOG_LEVEL_INFO, "sync"); - } - async replicationChangeDetected(s, r, o, u) { - try { - if ("pull" == s.direction) { - await this.env.processReplication(s.change.docs); - this.docArrived += s.change.docs.length; - } else this.docSent += s.change.docs.length; - if (r) { - const s = this.maxPullSeq, r = this.maxPushSeq, g = this.lastSyncPullSeq, _ = this.lastSyncPushSeq, m = 0 == _ ? "" : _ >= r ? " (LIVE)" : ` (${r - _})`, b = 0 == g ? "" : g >= s ? " (LIVE)" : ` (${s - g})`; - Logger(`↑${this.docSent - o}${m} ↓${this.docArrived - u}${b}`, LOG_LEVEL_NOTICE, "sync"); - } - this.updateInfo(); - } catch (s) { - Logger("Replication callback error", LOG_LEVEL_NOTICE, "sync"); - Logger(s, LOG_LEVEL_VERBOSE); - } - } - replicationCompleted(s) { - this.syncStatus = "COMPLETED"; - this.updateInfo(); - Logger("Replication completed", s ? LOG_LEVEL_NOTICE : LOG_LEVEL_INFO, s ? "sync" : ""); - this.terminateSync(); - } - replicationDenied(s) { - this.syncStatus = "ERRORED"; - this.updateInfo(); - this.terminateSync(); - Logger("Replication denied", LOG_LEVEL_NOTICE, "sync"); - Logger(s, LOG_LEVEL_VERBOSE); - } - replicationErrored(s) { - this.syncStatus = "ERRORED"; - this.terminateSync(); - this.updateInfo(); - Logger("Replication error", LOG_LEVEL_NOTICE, "sync"); - Logger(s, LOG_LEVEL_VERBOSE); - } - replicationPaused() { - this.syncStatus = "PAUSED"; - this.updateInfo(); - Logger("Replication paused", LOG_LEVEL_VERBOSE, "sync"); - } - async processSync(s, r, o, u, g, _, m = true) { - const b = new AbortController; - if (this.controller) this.controller.abort(); - this.controller = b; - const E = genReplication(s, b.signal); - try { - for await (const [s, m] of E) { - const b = await globalConcurrencyController.tryAcquire(1, REPLICATION_BUSY_TIMEOUT); - if (false === b) { - Logger("Replication stopped for busy.", r ? LOG_LEVEL_NOTICE : LOG_LEVEL_INFO, "sync"); - return "FAILED"; - } - b(); - switch (s) { - case "change": - if ("direction" in m) { - if ("pull" == m.direction) this.lastSyncPullSeq = Number(`${m.change.last_seq}`.split("-")[0]); else this.lastSyncPushSeq = Number(`${m.change.last_seq}`.split("-")[0]); - await this.replicationChangeDetected(m, r, o, u); - } else if ("pullOnly" == g) { - this.lastSyncPullSeq = Number(`${m.last_seq}`.split("-")[0]); - await this.replicationChangeDetected({ - direction: "pull", - change: m - }, r, o, u); - } else if ("pushOnly" == g) { - this.lastSyncPushSeq = Number(`${m.last_seq}`.split("-")[0]); - this.updateInfo(); - await this.replicationChangeDetected({ - direction: "push", - change: m - }, r, o, u); - } - if (_) if (this.docSent - o + (this.docArrived - u) > 2 * this.originalSetting.batch_size) return "NEED_RESURRECT"; - break; - - case "complete": - this.replicationCompleted(r); - return "DONE"; - - case "active": - this.replicationActivated(r); - break; - - case "denied": - this.replicationDenied(m); - return "FAILED"; - - case "error": - this.replicationErrored(m); - Logger("Replication stopped.", r ? LOG_LEVEL_NOTICE : LOG_LEVEL_INFO, "sync"); - if (this.env.getLastPostFailedBySize()) { - if (m && 413 == (null == m ? void 0 : m.status)) { - Logger("Something went wrong during synchronisation. Please check the log!", LOG_LEVEL_NOTICE); - return "FAILED"; - } - return "NEED_RETRY"; - } else { - Logger("Replication error", LOG_LEVEL_NOTICE, "sync"); - Logger(m); - } - return "FAILED"; - - case "paused": - this.replicationPaused(); - break; - - case "finally": - break; - - default: - Logger(`Unexpected synchronization status:${JSON.stringify(m)}`); - } - } - if (m) return "DONE"; else return "CANCELLED"; - } catch (s) { - Logger("Unexpected synchronization exception"); - Logger(s, LOG_LEVEL_VERBOSE); - return "FAILED"; - } finally { - this.terminateSync(); - this.controller = void 0; - } - } - async openOneShotReplication(s, r, o, u, g = false) { - if (this.controller) { - Logger("Replication is already in progress.", r ? LOG_LEVEL_NOTICE : LOG_LEVEL_INFO, "sync"); - return false; - } - const _ = this.env.getDatabase(); - Logger(`OneShot Sync begin... (${u})`); - const m = await this.checkReplicationConnectivity(s, false, o, r, g); - if (false === m) { - Logger("Could not connect to server.", r ? LOG_LEVEL_NOTICE : LOG_LEVEL_INFO, "sync"); - return false; - } - this.maxPullSeq = Number(`${m.info.update_seq}`.split("-")[0]); - this.maxPushSeq = Number(`${(await _.info()).update_seq}`.split("-")[0]); - if (r) Logger("Looking for the point last synchronized point.", LOG_LEVEL_NOTICE, "sync"); - const {db: b, syncOptionBase: E} = m; - this.syncStatus = "STARTED"; - this.updateInfo(); - const w = this.docArrived, S = this.docSent; - if (!o) this.originalSetting = s; - this.terminateSync(); - const L = "sync" == u ? _.sync(b, { - ...E - }) : "pullOnly" == u ? _.replicate.from(b, { - ...E, - ...s.readChunksOnline ? selectorOnDemandPull : {} - }) : "pushOnly" == u ? _.replicate.to(b, { - ...E, - ...s.readChunksOnline ? selectorOnDemandPush : {} - }) : void 0, O = await this.processSync(L, r, S, w, u, o, false); - if ("DONE" == O) return true; - if ("CANCELLED" == O) return false; - if ("FAILED" == O) return false; - if ("NEED_RESURRECT" == O) { - this.terminateSync(); - return await this.openOneShotReplication(this.originalSetting, r, false, u, g); - } - if ("NEED_RETRY" == O) { - const o = JSON.parse(JSON.stringify(s)); - o.batch_size = Math.ceil(o.batch_size / 2) + 2; - o.batches_limit = Math.ceil(o.batches_limit / 2) + 2; - if (o.batch_size <= 5 && o.batches_limit <= 5) { - Logger("We can't replicate more lower value.", r ? LOG_LEVEL_NOTICE : LOG_LEVEL_INFO); - return false; - } else { - Logger(`Retry with lower batch size:${o.batch_size}/${o.batches_limit}`, r ? LOG_LEVEL_NOTICE : LOG_LEVEL_INFO); - return await this.openOneShotReplication(o, r, true, u, g); - } - } - return false; - } - replicateAllToServer(s, r) { - return this.openOneShotReplication(s, null != r ? r : false, false, "pushOnly"); - } - replicateAllFromServer(s, r) { - return this.openOneShotReplication(s, null != r ? r : false, false, "pullOnly"); - } - async checkReplicationConnectivity(s, r, o, u, g = false) { - if ("" != s.versionUpFlash) { - Logger("Open settings and check message, please.", LOG_LEVEL_NOTICE); - return false; - } - const _ = s.couchDB_URI + ("" == s.couchDB_DBNAME ? "" : "/" + s.couchDB_DBNAME); - if (this.controller) { - Logger("Another replication running."); - return false; - } - const m = await this.connectRemoteCouchDBWithSetting(s, this.env.getIsMobile(), true); - if ("string" == typeof m) { - Logger(`Could not connect to ${_}: ${m}`, u ? LOG_LEVEL_NOTICE : LOG_LEVEL_INFO); - return false; - } - if (!o) { - if (!await checkRemoteVersion(m.db, this.migrate.bind(this), VER)) { - Logger("Remote database is newer or corrupted, make sure to latest version of self-hosted-livesync installed", LOG_LEVEL_NOTICE); - return false; - } - this.remoteCleaned = false; - this.remoteLocked = false; - this.remoteLockedAndDeviceNotAccepted = false; - const r = await ensureDatabaseIsCompatible(m.db, s, this.nodeid, currentVersionRange); - if ("INCOMPATIBLE" == r) { - Logger("The remote database has no compatibility with the running version. Please upgrade the plugin.", LOG_LEVEL_NOTICE); - return false; - } else if ("NODE_LOCKED" == r) { - Logger("The remote database has been rebuilt or corrupted since we have synchronized last time. Fetch rebuilt DB, explicit unlocking or chunk clean-up is required.", LOG_LEVEL_NOTICE); - this.remoteLockedAndDeviceNotAccepted = true; - this.remoteLocked = true; - return false; - } else if ("LOCKED" == r) this.remoteLocked = true; else if ("NODE_CLEANED" == r) if (g) this.remoteLocked = true; else { - Logger("The remote database has been cleaned up. Fetch rebuilt DB, explicit unlocking or chunk clean-up is required.", LOG_LEVEL_NOTICE); - this.remoteLockedAndDeviceNotAccepted = true; - this.remoteLocked = true; - this.remoteCleaned = true; - return false; - } - } - const b = { - batches_limit: s.batches_limit, - batch_size: s.batch_size - }; - if (s.readChunksOnline) { - b.push = { - ...selectorOnDemandPush - }; - b.pull = { - ...selectorOnDemandPull - }; - } - const E = r ? { - live: true, - retry: true, - heartbeat: s.useTimeouts ? false : 3e4, - ...b - } : { - ...b - }; - return { - db: m.db, - info: m.info, - syncOptionBase: b, - syncOption: E - }; - } - async openContinuousReplication(s, r, o) { - if (this.controller) { - Logger("Replication is already in progress.", r ? LOG_LEVEL_NOTICE : LOG_LEVEL_INFO); - return false; - } - const u = this.env.getDatabase(); - Logger("Before LiveSync, start OneShot once..."); - if (await this.openOneShotReplication(s, r, false, "pullOnly")) { - Logger("LiveSync begin..."); - const g = await this.checkReplicationConnectivity(s, true, true, r); - if (false === g) { - Logger("Could not connect to server.", r ? LOG_LEVEL_NOTICE : LOG_LEVEL_INFO); - return false; - } - if (r) Logger("Looking for the point last synchronized point.", LOG_LEVEL_NOTICE, "sync"); - const {db: _, syncOption: m} = g; - this.syncStatus = "STARTED"; - this.maxPullSeq = Number(`${g.info.update_seq}`.split("-")[0]); - this.maxPushSeq = Number(`${(await u.info()).update_seq}`.split("-")[0]); - this.updateInfo(); - const b = this.docArrived, E = this.docSent; - if (!o) this.originalSetting = s; - this.terminateSync(); - const w = u.sync(_, { - ...m - }), S = "sync", L = await this.processSync(w, r, E, b, S, o); - if ("DONE" == L) return true; - if ("FAILED" == L) return false; - if ("NEED_RESURRECT" == L) { - this.terminateSync(); - return await this.openContinuousReplication(this.originalSetting, r, false); - } - if ("NEED_RETRY" == L) { - const o = JSON.parse(JSON.stringify(s)); - o.batch_size = Math.ceil(o.batch_size / 2) + 2; - o.batches_limit = Math.ceil(o.batches_limit / 2) + 2; - if (o.batch_size <= 5 && o.batches_limit <= 5) { - Logger("We can't replicate more lower value.", r ? LOG_LEVEL_NOTICE : LOG_LEVEL_INFO); - return false; - } else { - Logger(`Retry with lower batch size:${o.batch_size}/${o.batches_limit}`, r ? LOG_LEVEL_NOTICE : LOG_LEVEL_INFO); - return await this.openContinuousReplication(o, r, true); - } - } - } - return false; - } - closeReplication() { - if (this.controller) { - this.controller.abort(); - this.controller = void 0; - this.syncStatus = "CLOSED"; - Logger("Replication closed"); - this.updateInfo(); - } - } - async tryResetRemoteDatabase(s) { - this.closeReplication(); - const r = await this.connectRemoteCouchDBWithSetting(s, this.env.getIsMobile(), true); - if ("string" != typeof r) try { - await r.db.destroy(); - Logger("Remote Database Destroyed", LOG_LEVEL_NOTICE); - await this.tryCreateRemoteDatabase(s); - } catch (s) { - Logger("Something happened on Remote Database Destroy:", LOG_LEVEL_NOTICE); - Logger(s, LOG_LEVEL_NOTICE); - } - } - async tryCreateRemoteDatabase(s) { - this.closeReplication(); - if ("string" != typeof await this.connectRemoteCouchDBWithSetting(s, this.env.getIsMobile(), true)) Logger("Remote Database Created or Connected", LOG_LEVEL_NOTICE); - } - async markRemoteLocked(s, r, o) { - const u = s.couchDB_URI + ("" == s.couchDB_DBNAME ? "" : "/" + s.couchDB_DBNAME), g = await this.connectRemoteCouchDBWithSetting(s, this.env.getIsMobile(), true); - if ("string" == typeof g) { - Logger(`could not connect to ${u}:${g}`, LOG_LEVEL_NOTICE); - return; - } - if (!await checkRemoteVersion(g.db, this.migrate.bind(this), VER)) { - Logger("Remote database is newer or corrupted, make sure to latest version of self-hosted-livesync installed", LOG_LEVEL_NOTICE); - return; - } - const _ = { - _id: MILSTONE_DOCID, - type: "milestoneinfo", - created: new Date / 1, - locked: r, - cleaned: o, - accepted_nodes: [ this.nodeid ], - node_chunk_info: { - [this.nodeid]: currentVersionRange - } - }, m = { - ..._, - ...await resolveWithIgnoreKnownError(g.db.get(MILSTONE_DOCID), _) - }; - m.node_chunk_info = { - ..._.node_chunk_info, - ...m.node_chunk_info - }; - m.accepted_nodes = [ this.nodeid ]; - m.locked = r; - m.cleaned = m.cleaned || o; - if (r) Logger("Lock remote database to prevent data corruption", LOG_LEVEL_NOTICE); else Logger("Unlock remote database to prevent data corruption", LOG_LEVEL_NOTICE); - await g.db.put(m); - } - async markRemoteResolved(s) { - const r = s.couchDB_URI + ("" == s.couchDB_DBNAME ? "" : "/" + s.couchDB_DBNAME), o = await this.connectRemoteCouchDBWithSetting(s, this.env.getIsMobile(), true); - if ("string" == typeof o) { - Logger(`could not connect to ${r}:${o}`, LOG_LEVEL_NOTICE); - return; - } - if (!await checkRemoteVersion(o.db, this.migrate.bind(this), VER)) { - Logger("Remote database is newer or corrupted, make sure to latest version of self-hosted-livesync installed", LOG_LEVEL_NOTICE); - return; - } - const u = { - _id: MILSTONE_DOCID, - type: "milestoneinfo", - created: new Date / 1, - locked: false, - accepted_nodes: [ this.nodeid ], - node_chunk_info: { - [this.nodeid]: currentVersionRange - } - }, g = { - ...u, - ...await resolveWithIgnoreKnownError(o.db.get(MILSTONE_DOCID), u) - }; - g.node_chunk_info = { - ...u.node_chunk_info, - ...g.node_chunk_info - }; - g.accepted_nodes = Array.from(new Set([ ...g.accepted_nodes, this.nodeid ])); - Logger("Mark this device as 'resolved'.", LOG_LEVEL_NOTICE); - await o.db.put(g); - } - connectRemoteCouchDBWithSetting(s, r, o = false, u = false) { - if (s.encrypt && "" == s.passphrase && !s.permitEmptyPassphrase) return "Empty passphrases cannot be used without explicit permission"; else return this.env.connectRemoteCouchDB(s.couchDB_URI + ("" == s.couchDB_DBNAME ? "" : "/" + s.couchDB_DBNAME), { - username: s.couchDB_USER, - password: s.couchDB_PASSWORD - }, s.disableRequestURI || r, s.encrypt ? s.passphrase : s.encrypt, s.useDynamicIterationCount, o, u); - } - async fetchRemoteChunks(s, r) { - const o = await this.connectRemoteCouchDBWithSetting(this.env.getSettings(), this.env.getIsMobile(), false, true); - if ("string" == typeof o) { - Logger(`Could not connect to server.${o} `, r ? LOG_LEVEL_NOTICE : LOG_LEVEL_INFO, "fetch"); - return false; - } - const u = await o.db.allDocs({ - keys: s, - include_docs: true - }); - if (u.rows.some((s => "error" in s))) { - Logger("Some chunks are not exists both on remote and local database.", r ? LOG_LEVEL_NOTICE : LOG_LEVEL_INFO, "fetch"); - return false; - } - return u.rows.map((s => s.doc)); - } -}, instanceOfAny = (s, r) => r.some((r => s instanceof r)); - -function getIdbProxyableTypes() { - return idbProxyableTypes || (idbProxyableTypes = [ IDBDatabase, IDBObjectStore, IDBIndex, IDBCursor, IDBTransaction ]); -} - -function getCursorAdvanceMethods() { - return cursorAdvanceMethods || (cursorAdvanceMethods = [ IDBCursor.prototype.advance, IDBCursor.prototype.continue, IDBCursor.prototype.continuePrimaryKey ]); -} - -var transactionDoneMap = new WeakMap, transformCache = new WeakMap, reverseTransformCache = new WeakMap; - -function promisifyRequest(s) { - const r = new Promise(((r, o) => { - const unlisten = () => { - s.removeEventListener("success", success); - s.removeEventListener("error", error); - }, success = () => { - r(wrap(s.result)); - unlisten(); - }, error = () => { - o(s.error); - unlisten(); - }; - s.addEventListener("success", success); - s.addEventListener("error", error); - })); - reverseTransformCache.set(r, s); - return r; -} - -function cacheDonePromiseForTransaction(s) { - if (transactionDoneMap.has(s)) return; - const r = new Promise(((r, o) => { - const unlisten = () => { - s.removeEventListener("complete", complete); - s.removeEventListener("error", error); - s.removeEventListener("abort", error); - }, complete = () => { - r(); - unlisten(); - }, error = () => { - o(s.error || new DOMException("AbortError", "AbortError")); - unlisten(); - }; - s.addEventListener("complete", complete); - s.addEventListener("error", error); - s.addEventListener("abort", error); - })); - transactionDoneMap.set(s, r); -} - -var idbProxyTraps = { - get(s, r, o) { - if (s instanceof IDBTransaction) { - if ("done" === r) return transactionDoneMap.get(s); - if ("store" === r) return o.objectStoreNames[1] ? void 0 : o.objectStore(o.objectStoreNames[0]); - } - return wrap(s[r]); - }, - set(s, r, o) { - s[r] = o; - return true; - }, - has(s, r) { - if (s instanceof IDBTransaction && ("done" === r || "store" === r)) return true; else return r in s; - } -}; - -function replaceTraps(s) { - idbProxyTraps = s(idbProxyTraps); -} - -function wrapFunction(s) { - if (getCursorAdvanceMethods().includes(s)) return function(...r) { - s.apply(unwrap(this), r); - return wrap(this.request); - }; else return function(...r) { - return wrap(s.apply(unwrap(this), r)); - }; -} - -function transformCachableValue(s) { - if ("function" == typeof s) return wrapFunction(s); - if (s instanceof IDBTransaction) cacheDonePromiseForTransaction(s); - if (instanceOfAny(s, getIdbProxyableTypes())) return new Proxy(s, idbProxyTraps); else return s; -} - -function wrap(s) { - if (s instanceof IDBRequest) return promisifyRequest(s); - if (transformCache.has(s)) return transformCache.get(s); - const r = transformCachableValue(s); - if (r !== s) { - transformCache.set(s, r); - reverseTransformCache.set(r, s); - } - return r; -} - -var unwrap = s => reverseTransformCache.get(s); - -function openDB(s, r, {blocked: o, upgrade: u, blocking: g, terminated: _} = {}) { - const m = indexedDB.open(s, r), b = wrap(m); - if (u) m.addEventListener("upgradeneeded", (s => { - u(wrap(m.result), s.oldVersion, s.newVersion, wrap(m.transaction), s); - })); - if (o) m.addEventListener("blocked", (s => o(s.oldVersion, s.newVersion, s))); - b.then((s => { - if (_) s.addEventListener("close", (() => _())); - if (g) s.addEventListener("versionchange", (s => g(s.oldVersion, s.newVersion, s))); - })).catch((() => {})); - return b; -} - -function deleteDB(s, {blocked: r} = {}) { - const o = indexedDB.deleteDatabase(s); - if (r) o.addEventListener("blocked", (s => r(s.oldVersion, s))); - return wrap(o).then((() => {})); -} - -var readMethods = [ "get", "getKey", "getAll", "getAllKeys", "count" ], writeMethods = [ "put", "add", "delete", "clear" ], cachedMethods = new Map; - -function getMethod(s, r) { - if (!(s instanceof IDBDatabase && !(r in s) && "string" == typeof r)) return; - if (cachedMethods.get(r)) return cachedMethods.get(r); - const o = r.replace(/FromIndex$/, ""), u = r !== o, g = writeMethods.includes(o); - if (!(o in (u ? IDBIndex : IDBObjectStore).prototype) || !(g || readMethods.includes(o))) return; - const method = async function(s, ...r) { - const _ = this.transaction(s, g ? "readwrite" : "readonly"); - let m = _.store; - if (u) m = m.index(r.shift()); - return (await Promise.all([ m[o](...r), g && _.done ]))[0]; - }; - cachedMethods.set(r, method); - return method; -} - -replaceTraps((s => ({ - ...s, - get: (r, o, u) => getMethod(r, o) || s.get(r, o, u), - has: (r, o) => !!getMethod(r, o) || s.has(r, o) -}))); - -var advanceMethodProps = [ "continue", "continuePrimaryKey", "advance" ], methodMap = {}, advanceResults = new WeakMap, ittrProxiedCursorToOriginalProxy = new WeakMap, cursorIteratorTraps = { - get(s, r) { - if (!advanceMethodProps.includes(r)) return s[r]; - let o = methodMap[r]; - if (!o) o = methodMap[r] = function(...s) { - advanceResults.set(this, ittrProxiedCursorToOriginalProxy.get(this)[r](...s)); - }; - return o; - } -}; - -async function* iterate(...s) { - let r = this; - if (!(r instanceof IDBCursor)) r = await r.openCursor(...s); - if (!r) return; - const o = new Proxy(r, cursorIteratorTraps); - ittrProxiedCursorToOriginalProxy.set(o, r); - reverseTransformCache.set(o, unwrap(r)); - for (;r; ) { - yield o; - r = await (advanceResults.get(o) || r.continue()); - advanceResults.delete(o); - } -} - -function isIteratorProp(s, r) { - return r === Symbol.asyncIterator && instanceOfAny(s, [ IDBIndex, IDBObjectStore, IDBCursor ]) || "iterate" === r && instanceOfAny(s, [ IDBIndex, IDBObjectStore ]); -} - -replaceTraps((s => ({ - ...s, - get(r, o, u) { - if (isIteratorProp(r, o)) return iterate; else return s.get(r, o, u); - }, - has: (r, o) => isIteratorProp(r, o) || s.has(r, o) -}))); - -var databaseCache = {}, OpenKeyValueDatabase = async s => { - if (s in databaseCache) { - databaseCache[s].close(); - delete databaseCache[s]; - } - const r = s, o = openDB(s, 1, { - upgrade(s) { - s.createObjectStore(r); - } - }); - let u = null; - u = await o; - databaseCache[s] = u; - return { - get: s => u.get(r, s), - set: (s, o) => u.put(r, o, s), - del: s => u.delete(r, s), - clear: () => u.clear(r), - keys: (s, o) => u.getAllKeys(r, s, o), - close() { - delete databaseCache[s]; - return u.close(); - }, - async destroy() { - delete databaseCache[s]; - u.close(); - await deleteDB(s); - } - }; -}, HiddenFileSync = class extends LiveSyncCommands { - constructor() { - super(...arguments); - this.periodicInternalFileScanProcessor = new PeriodicProcessor(this.plugin, (async () => this.settings.syncInternalFiles && this.localDatabase.isReady && await this.syncInternalFilesAndDatabase("push", false))); - this.internalFileProcessor = new KeyedQueueProcessor((async s => { - Logger(`START :Applying hidden ${s.length} files change`, LOG_LEVEL_VERBOSE); - await this.syncInternalFilesAndDatabase("pull", false, false, s); - Logger(`DONE :Applying hidden ${s.length} files change`, LOG_LEVEL_VERBOSE); - }), { - batchSize: 100, - concurrentLimit: 1, - delay: 10, - yieldThreshold: 10, - suspended: false, - totalRemainingReactiveSource: hiddenFilesEventCount - }); - this.recentProcessedInternalFiles = []; - this.conflictResolutionProcessor = new QueueProcessor((async s => { - var r, o, u; - const g = s[0]; - sendSignal(`cancel-internal-conflict:${g}`); - try { - const s = await this.path2id(g, ICHeader), _ = await this.localDatabase.getRaw(s, { - conflicts: true - }); - if (void 0 === _._conflicts) return []; - if (0 == _._conflicts.length) return []; - Logger(`Hidden file conflicted:${g}`); - const m = _._conflicts.sort(((s, r) => Number(s.split("-")[0]) - Number(r.split("-")[0]))), b = _._rev, E = m[0]; - if (g.endsWith(".json")) { - const w = m[0], S = Number(w.split("-")[0]), L = null != (u = null == (o = null == (r = (await this.localDatabase.getRaw(s, { - revs_info: true - }))._revs_info) ? void 0 : r.filter((s => "available" == s.status && Number(s.rev.split("-")[0]) < S)).first()) ? void 0 : o.rev) ? u : "", O = await this.plugin.mergeObject(g, L, _._rev, w); - if (O) { - Logger(`Object merge:${g}`, LOG_LEVEL_INFO); - const r = stripAllPrefixes(g); - if (!await this.plugin.vaultAccess.adapterExists(r)) await this.vaultAccess.ensureDirectory(r); - await this.plugin.vaultAccess.adapterWrite(r, O); - const o = await this.vaultAccess.adapterStat(r); - if (!o) throw new Error(`conflictResolutionProcessor: Failed to stat file ${r}`); - await this.storeInternalFileToDatabase({ - path: r, - ...o - }); - await this.extractInternalFileFromDatabase(r); - await this.localDatabase.removeRevision(s, E); - this.conflictResolutionProcessor.enqueue(g); - return []; - } else Logger("Object merge is not applicable.", LOG_LEVEL_VERBOSE); - return [ { - path: g, - revA: b, - revB: E, - id: s, - doc: _ - } ]; - } - await this.resolveByNewerEntry(s, g, _, b, E); - return []; - } catch (s) { - Logger(`Failed to resolve conflict (Hidden): ${g}`); - Logger(s, LOG_LEVEL_VERBOSE); - return []; - } - }), { - suspended: false, - batchSize: 1, - concurrentLimit: 5, - delay: 10, - keepResultUntilDownstreamConnected: true, - yieldThreshold: 10, - pipeTo: new QueueProcessor((async s => { - const {id: r, doc: o, path: u, revA: g, revB: _} = s[0], m = await this.localDatabase.getDBEntry(u, { - rev: g - }), b = await this.localDatabase.getDBEntry(u, { - rev: _ - }); - if (false == m || false == b) await this.resolveByNewerEntry(r, u, o, g, _); else if (await this.showJSONMergeDialogAndMerge(m, b)) this.conflictResolutionProcessor.enqueue(u); - }), { - suspended: false, - batchSize: 1, - concurrentLimit: 1, - delay: 10, - keepResultUntilDownstreamConnected: false, - yieldThreshold: 10 - }) - }); - } - get kvDB() { - return this.plugin.kvDB; - } - getConflictedDoc(s, r) { - return this.plugin.getConflictedDoc(s, r); - } - onunload() { - var s; - null == (s = this.periodicInternalFileScanProcessor) || s.disable(); - } - onload() { - this.plugin.addCommand({ - id: "livesync-scaninternal", - name: "Sync hidden files", - callback: () => { - this.syncInternalFilesAndDatabase("safe", true); - } - }); - } - async onInitializeDatabase(s) { - if (this.settings.syncInternalFiles) try { - Logger("Synchronizing hidden files..."); - await this.syncInternalFilesAndDatabase("push", s); - Logger("Synchronizing hidden files done"); - } catch (s) { - Logger("Synchronizing hidden files failed"); - Logger(s, LOG_LEVEL_VERBOSE); - } - } - async beforeReplicate(s) { - if (this.localDatabase.isReady && this.settings.syncInternalFiles && this.settings.syncInternalFilesBeforeReplication && !this.settings.watchInternalFileChanges) await this.syncInternalFilesAndDatabase("push", s); - } - async onResume() { - var s; - null == (s = this.periodicInternalFileScanProcessor) || s.disable(); - if (!this.plugin.suspended) { - if (this.settings.syncInternalFiles) await this.syncInternalFilesAndDatabase("safe", false); - this.periodicInternalFileScanProcessor.enable(this.settings.syncInternalFiles && this.settings.syncInternalFilesInterval ? 1e3 * this.settings.syncInternalFilesInterval : 0); - } - } - parseReplicationResultItem(s) { - return false; - } - realizeSettingSyncMode() { - var s; - null == (s = this.periodicInternalFileScanProcessor) || s.disable(); - if (this.plugin.suspended) return Promise.resolve(); - if (!this.plugin.isReady) return Promise.resolve(); - this.periodicInternalFileScanProcessor.enable(this.settings.syncInternalFiles && this.settings.syncInternalFilesInterval ? 1e3 * this.settings.syncInternalFilesInterval : 0); - return Promise.resolve(); - } - procInternalFile(s) { - this.internalFileProcessor.enqueueWithKey(s, s); - } - async watchVaultRawEventsAsync(s) { - var r, o, u; - if (!this.settings.syncInternalFiles) return; - const g = normalizePath(this.app.vault.configDir); - if ((!this.settings.usePluginSync ? [] : Object.values(this.settings.pluginSyncExtendedSetting).filter((s => s.mode == MODE_SELECTIVE || s.mode == MODE_PAUSED)).map((s => s.files)).flat().map((s => `${g}/${s}`.toLowerCase()))).some((r => r.startsWith(s.toLowerCase())))) { - Logger(`Hidden file skipped: ${s} is synchronized in customization sync.`, LOG_LEVEL_VERBOSE); - return; - } - const _ = await this.vaultAccess.adapterStat(s); - if (null != _ && "file" != _.type) return; - const m = null == _ ? 0 : null != (r = null == _ ? void 0 : _.mtime) ? r : 0, b = ~~(m / 1e3), E = `${s}-${b}`; - if (0 != m && this.recentProcessedInternalFiles.contains(E)) return; - this.recentProcessedInternalFiles = [ E, ...this.recentProcessedInternalFiles ].slice(0, 100); - const w = addPrefix(s, ICHeader), S = await this.localDatabase.getDBEntryMeta(w); - if (~~((S && S.mtime || 0) / 1e3) != b) if (0 == b) await this.deleteInternalFileOnDatabase(s); else await this.storeInternalFileToDatabase({ - path: s, - mtime: m, - ctime: null != (o = null == _ ? void 0 : _.ctime) ? o : m, - size: null != (u = null == _ ? void 0 : _.size) ? u : 0 - }); - } - async resolveConflictOnInternalFiles() { - const s = this.localDatabase.findEntries(ICHeader, ICHeaderEnd, { - conflicts: true - }); - this.conflictResolutionProcessor.suspend(); - try { - for await (const r of s) if ("_conflicts" in r) if (isInternalMetadata(r._id)) this.conflictResolutionProcessor.enqueue(r.path); - } catch (s) { - Logger("something went wrong on resolving all conflicted internal files"); - Logger(s, LOG_LEVEL_VERBOSE); - } - await this.conflictResolutionProcessor.startPipeline().waitForPipeline(); - } - async resolveByNewerEntry(s, r, o, u, g) { - var _; - const m = await this.localDatabase.getRaw(s, { - rev: g - }), b = ("mtime" in o && o.mtime || 0) < ("mtime" in m && m.mtime || 0) ? u : g; - await this.localDatabase.removeRevision(s, b); - Logger(`Older one has been deleted:${r}`); - if (0 === (null == (_ = (await this.localDatabase.getRaw(s, { - conflicts: true - }))._conflicts) ? void 0 : _.length)) await this.extractInternalFileFromDatabase(stripAllPrefixes(r)); else this.conflictResolutionProcessor.enqueue(r); - } - queueConflictCheck(s) { - this.conflictResolutionProcessor.enqueue(s); - } - async syncInternalFilesAndDatabase(s, r, o = false, u = false) { - await this.resolveConflictOnInternalFiles(); - const g = r ? LOG_LEVEL_NOTICE : LOG_LEVEL_INFO; - Logger("Scanning hidden files.", g, "sync_internal"); - const _ = this.settings.syncInternalFilesIgnorePatterns.replace(/\n| /g, "").split(",").filter((s => s)).map((s => new RegExp(s, "i"))), m = normalizePath(this.app.vault.configDir); - let b = o ? o : await this.scanInternalFiles(); - const E = !this.settings.usePluginSync ? [] : Object.values(this.settings.pluginSyncExtendedSetting).filter((s => s.mode == MODE_SELECTIVE || s.mode == MODE_PAUSED)).map((s => s.files)).flat().map((s => `${m}/${s}`.toLowerCase())); - b = b.filter((s => E.every((r => !s.path.toLowerCase().startsWith(r))))); - const w = (await this.localDatabase.allDocsRaw({ - startkey: ICHeader, - endkey: ICHeaderEnd, - include_docs: true - })).rows.map((s => s.doc)).filter((s => !s.deleted)), S = [ ...new Set([ ...b.map((s => normalizePath(s.path))), ...w.map((s => stripAllPrefixes(this.getPath(s)))) ]) ].filter((s => !u || u && -1 !== u.indexOf(s))).filter((s => E.every((r => !s.toLowerCase().startsWith(r))))), L = S.length; - let O = 0, D = 0; - const k = {}, countUpdatedFolder = s => { - const r = s.split("/"); - let o = r.shift(), u = ""; - D++; - for (;o; ) { - u += ("" != u ? "/" : "") + o; - u = normalizePath(u); - if (!(u in k)) k[u] = 0; - k[u]++; - o = r.shift(); - } - }; - let C = {}; - C = await this.kvDB.get("diff-caches-internal") || {}; - const T = b.reduce(((s, r) => { - s[r.path] = r; - return s; - }), {}), I = w.reduce(((s, r) => { - s[stripAllPrefixes(this.getPath(r))] = r; - return s; - }), {}); - await new QueueProcessor((async s => { - const r = s[0]; - O++; - if (O % 100 == 0) Logger(`Hidden file: ${O}/${L}`, g, "sync_internal"); - if (!r) return []; - if (_.some((s => r.match(s)))) return []; - if (await this.plugin.isIgnoredByIgnoreFiles(r)) return []; - const o = r in T ? T[r] : void 0, u = r in I ? I[r] : void 0; - return [ { - filename: r, - fileOnStorage: o, - fileOnDatabase: u - } ]; - }), { - suspended: true, - batchSize: 1, - concurrentLimit: 10, - delay: 0, - totalRemainingReactiveSource: hiddenFilesProcessingCount - }).pipeTo(new QueueProcessor((async r => { - const {filename: o, fileOnStorage: u, fileOnDatabase: g} = r[0]; - if (u && g) { - const r = o in C ? C[o] : { - storageMtime: 0, - docMtime: 0 - }; - if ("pullForce" != s && "pushForce" != s && g.mtime == r.docMtime && u.mtime == r.storageMtime) return; - const _ = function compareMTime2(s, r) { - return ~~(s / 1e3) - ~~(r / 1e3); - }(u.mtime, g.mtime); - if (_ > 0 || "pushForce" == s) await this.storeInternalFileToDatabase(u); - if (_ < 0 || "pullForce" == s) if (!await this.extractInternalFileFromDatabase(o)) return; - r.docMtime = g.mtime; - r.storageMtime = u.mtime; - C[o] = r; - countUpdatedFolder(o); - } else if (!u && g) { - if ("push" == s || "pushForce" == s) { - if (g.deleted) return; - await this.deleteInternalFileOnDatabase(o, false); - } else if ("pull" == s || "pullForce" == s) { - if (await this.extractInternalFileFromDatabase(o)) countUpdatedFolder(o); - } else if ("safe" == s) { - if (g.deleted) return; - if (await this.extractInternalFileFromDatabase(o)) countUpdatedFolder(o); - } - } else if (u && !g) if ("push" == s || "pushForce" == s || "safe" == s) await this.storeInternalFileToDatabase(u); else await this.extractInternalFileFromDatabase(u.path); else throw new Error("Invalid state on hidden file sync"); - }), { - suspended: true, - batchSize: 1, - concurrentLimit: 5, - delay: 0 - })).root.enqueueAll(S).startPipeline().waitForPipeline(); - await this.kvDB.set("diff-caches-internal", C); - if (("pull" == s || "pullForce" == s) && 0 != D) if (m in k) { - let s = k[m]; - try { - const r = Object.values(this.app.plugins.manifests), o = this.app.plugins.enabledPlugins, u = r.filter((s => o.has(s.id))); - for (const r of u) if (r.dir && r.dir in k) { - s -= k[r.dir]; - const o = r.id, u = r.name; - this.plugin.askInPopup(`updated-${o}`, `Files in ${u} has been updated, Press {HERE} to reload ${u}, or press elsewhere to dismiss this message.`, (s => { - s.text = "HERE"; - s.addEventListener("click", (async () => { - Logger(`Unloading plugin: ${u}`, LOG_LEVEL_NOTICE, "plugin-reload-" + o); - await this.app.plugins.unloadPlugin(o); - await this.app.plugins.loadPlugin(o); - Logger(`Plugin reloaded: ${u}`, LOG_LEVEL_NOTICE, "plugin-reload-" + o); - })); - })); - } - } catch (s) { - Logger("Error on checking plugin status."); - Logger(s, LOG_LEVEL_VERBOSE); - } - if (0 != s) this.plugin.askInPopup("updated-any-hidden", "Hidden files have been synchronized, Press {HERE} to reload Obsidian, or press elsewhere to dismiss this message.", (s => { - s.text = "HERE"; - s.addEventListener("click", (() => { - this.app.commands.executeCommandById("app:reload"); - })); - })); - } - Logger(`Hidden files scanned: ${D} files had been modified`, g, "sync_internal"); - } - async storeInternalFileToDatabase(s, r = false) { - if (await this.plugin.isIgnoredByIgnoreFiles(s.path)) return; - const o = await this.path2id(s.path, ICHeader), u = addPrefix(s.path, ICHeader), g = createBlob(await this.plugin.vaultAccess.adapterReadAuto(s.path)), _ = s.mtime; - return await serialized("file-" + u, (async () => { - try { - const m = await this.localDatabase.getDBEntry(u, void 0, false, false); - let b; - if (false === m) b = { - _id: o, - path: u, - data: g, - mtime: _, - ctime: _, - datatype: "newnote", - size: s.size, - children: [], - deleted: false, - type: "newnote" - }; else { - if (await isDocContentSame(readAsBlob(m), g) && !r) return; - b = { - ...m, - data: g, - mtime: _, - size: s.size, - datatype: m.datatype, - children: [], - deleted: false, - type: m.datatype - }; - } - const E = await this.localDatabase.putDBEntry(b); - Logger(`STORAGE --\x3e DB:${s.path}: (hidden) Done`); - return E; - } catch (r) { - Logger(`STORAGE --\x3e DB:${s.path}: (hidden) Failed`); - Logger(r, LOG_LEVEL_VERBOSE); - return false; - } - })); - } - async deleteInternalFileOnDatabase(s, r = false) { - const o = await this.path2id(s, ICHeader), u = addPrefix(s, ICHeader), g = (new Date).getTime(); - if (!await this.plugin.isIgnoredByIgnoreFiles(s)) await serialized("file-" + u, (async () => { - try { - const r = await this.localDatabase.getDBEntryMeta(u, void 0, true); - let _; - if (false === r) _ = { - _id: o, - path: u, - mtime: g, - ctime: g, - size: 0, - children: [], - deleted: true, - type: "newnote" - }; else { - const o = await this.localDatabase.getRaw(r._id, { - conflicts: true - }); - if (void 0 !== o._conflicts) for (const u of o._conflicts) { - await this.localDatabase.removeRevision(r._id, u); - Logger(`STORAGE -x> DB:${s}: (hidden) conflict removed ${r._rev} => ${u}`, LOG_LEVEL_VERBOSE); - } - if (r.deleted) { - Logger(`STORAGE -x> DB:${s}: (hidden) already deleted`); - return; - } - _ = { - ...r, - mtime: g, - size: 0, - children: [], - deleted: true, - type: "newnote" - }; - } - await this.localDatabase.putRaw(_); - Logger(`STORAGE -x> DB:${s}: (hidden) Done`); - } catch (r) { - Logger(`STORAGE -x> DB:${s}: (hidden) Failed`); - Logger(r, LOG_LEVEL_VERBOSE); - return false; - } - })); - } - async extractInternalFileFromDatabase(s, r = false) { - const o = await this.plugin.vaultAccess.adapterExists(s), u = addPrefix(s, ICHeader); - if (!await this.plugin.isIgnoredByIgnoreFiles(s)) return await serialized("file-" + u, (async () => { - var g; - try { - const _ = await this.localDatabase.getDBEntry(u, { - conflicts: true - }, false, true, true); - if (false === _) throw new Error(`File not found on database.:${s}`); - if (null == (g = null == _ ? void 0 : _._conflicts) ? void 0 : g.length) { - Logger(`Hidden file ${s} has conflicted revisions, to keep in safe, writing to storage has been prevented`, LOG_LEVEL_INFO); - return; - } - if (_.deleted || _._deleted || false) { - if (!o) Logger(`STORAGE { - Logger("Opening data-merging dialog", LOG_LEVEL_VERBOSE); - const u = [ s, r ], g = stripAllPrefixes(s.path); - new JsonResolveModal(this.app, g, [ s, r ], (async (s, r) => { - var _, m, b; - try { - const E = g; - let w = false; - if (!r && !s) { - Logger(`Skipped merging: ${E}`); - o(false); - return; - } - if (r || s) for (const r of u) if (r._rev != s) if (await this.localDatabase.deleteDBEntry(this.getPath(r), { - rev: r._rev - })) { - Logger(`Conflicted revision has been deleted: ${E}`); - w = true; - } - if (!s && r) { - if (!await this.plugin.vaultAccess.adapterExists(E)) await this.vaultAccess.ensureDirectory(E); - await this.plugin.vaultAccess.adapterWrite(E, r); - const s = await this.plugin.vaultAccess.adapterStat(E); - if (!s) throw new Error("Stat failed"); - const o = null != (_ = null == s ? void 0 : s.mtime) ? _ : 0; - await this.storeInternalFileToDatabase({ - path: E, - mtime: o, - ctime: null != (m = null == s ? void 0 : s.ctime) ? m : o, - size: null != (b = null == s ? void 0 : s.size) ? b : 0 - }, true); - try { - await this.app.vault.adapter.reconcileInternalFile(E); - } catch (s) { - Logger("Failed to call internal API(reconcileInternalFile)", LOG_LEVEL_VERBOSE); - Logger(s, LOG_LEVEL_VERBOSE); - } - Logger(`STORAGE <-- DB:${E}: written (hidden,merged)`); - } - if (w) { - await this.extractInternalFileFromDatabase(E, false); - Logger(`STORAGE --\x3e DB:${E}: extracted (hidden,merged)`); - } - o(true); - } catch (s) { - Logger("Could not merge conflicted json"); - Logger(s, LOG_LEVEL_VERBOSE); - o(false); - } - })).open(); - })); - } - async scanInternalFiles() { - var s, r, o, u, g, _; - const m = normalizePath(this.app.vault.configDir), b = this.settings.syncInternalFilesIgnorePatterns.replace(/\n| /g, "").split(",").filter((s => s)).map((s => new RegExp(s, "i"))), E = !this.settings.usePluginSync ? [] : Object.values(this.settings.pluginSyncExtendedSetting).filter((s => s.mode == MODE_SELECTIVE || s.mode == MODE_PAUSED)).map((s => s.files)).flat().map((s => `${m}/${s}`.toLowerCase())), w = this.app.vault.getRoot().path, S = (await this.getFiles(w, [], void 0, b)).filter((s => s.startsWith("."))).filter((s => !s.startsWith(".trash"))).filter((s => E.every((r => !s.toLowerCase().startsWith(r))))).map((async s => ({ - path: s, - stat: await this.plugin.vaultAccess.adapterStat(s) - }))), L = []; - for (const m of S) { - const b = await m; - if (await this.plugin.isIgnoredByIgnoreFiles(b.path)) continue; - const E = null != (r = null == (s = b.stat) ? void 0 : s.mtime) ? r : 0, w = null != (u = null == (o = b.stat) ? void 0 : o.ctime) ? u : E, S = null != (_ = null == (g = b.stat) ? void 0 : g.size) ? _ : 0; - L.push({ - ...b, - mtime: E, - ctime: w, - size: S - }); - } - return L; - } - async getFiles(s, r, o, u) { - let g; - try { - g = await this.app.vault.adapter.list(s); - } catch (r) { - Logger(`Could not traverse(HiddenSync):${s}`, LOG_LEVEL_INFO); - Logger(r, LOG_LEVEL_VERBOSE); - return []; - } - const _ = [ ...g.files.filter((s => !r.some((r => s.endsWith(r))))).filter((s => !o || o.some((r => s.match(r))))).filter((s => !u || u.every((r => !s.match(r))))) ]; - let m = []; - for (const s of _) if (!await this.plugin.isIgnoredByIgnoreFiles(s)) m.push(s); - e: for (const s of g.folders) { - for (const o of r) if (s.endsWith(o)) continue e; - if (!u || !u.some((r => s.match(r)))) if (!await this.plugin.isIgnoredByIgnoreFiles(s)) m = m.concat(await this.getFiles(s, r, o, u)); - } - return m; - } -}, SetupLiveSync = class extends LiveSyncCommands { - onunload() {} - onload() { - this.plugin.registerObsidianProtocolHandler("setuplivesync", (async s => await this.setupWizard(s.settings))); - this.plugin.addCommand({ - id: "livesync-copysetupuri", - name: "Copy settings as a new setup URI", - callback: () => fireAndForget(this.command_copySetupURI()) - }); - this.plugin.addCommand({ - id: "livesync-copysetupuri-short", - name: "Copy settings as a new setup URI (With customization sync)", - callback: () => fireAndForget(this.command_copySetupURIWithSync()) - }); - this.plugin.addCommand({ - id: "livesync-copysetupurifull", - name: "Copy settings as a new setup URI (Full)", - callback: () => fireAndForget(this.command_copySetupURIFull()) - }); - this.plugin.addCommand({ - id: "livesync-opensetupuri", - name: "Use the copied setup URI (Formerly Open setup URI)", - callback: () => fireAndForget(this.command_openSetupURI()) - }); - } - onInitializeDatabase(s) {} - beforeReplicate(s) {} - onResume() {} - parseReplicationResultItem(s) { - return false; - } - async realizeSettingSyncMode() {} - async command_copySetupURI(s = true) { - const r = await askString(this.app, "Encrypt your settings", "The passphrase to encrypt the setup URI", "", true); - if (false === r) return; - const o = { - ...this.settings, - configPassphraseStore: "", - encryptedCouchDBConnection: "", - encryptedPassphrase: "" - }; - if (s) delete o.pluginSyncExtendedSetting; - const u = Object.keys(o); - for (const s of u) if (JSON.stringify(s in o ? o[s] : "") == JSON.stringify(s in DEFAULT_SETTINGS ? DEFAULT_SETTINGS[s] : "*")) delete o[s]; - const g = encodeURIComponent(await encrypt(JSON.stringify(o), r, false)), _ = `${configURIBase}${g}`; - await navigator.clipboard.writeText(_); - Logger("Setup URI copied to clipboard", LOG_LEVEL_NOTICE); - } - async command_copySetupURIFull() { - const s = await askString(this.app, "Encrypt your settings", "The passphrase to encrypt the setup URI", "", true); - if (false === s) return; - const r = { - ...this.settings, - configPassphraseStore: "", - encryptedCouchDBConnection: "", - encryptedPassphrase: "" - }, o = encodeURIComponent(await encrypt(JSON.stringify(r), s, false)), u = `${configURIBase}${o}`; - await navigator.clipboard.writeText(u); - Logger("Setup URI copied to clipboard", LOG_LEVEL_NOTICE); - } - async command_copySetupURIWithSync() { - await this.command_copySetupURI(false); - } - async command_openSetupURI() { - const s = await askString(this.app, "Easy setup", "Set up URI", `${configURIBase}aaaaa`); - if (false === s) return; - if (!s.startsWith(`${configURIBase}`)) { - Logger("Set up URI looks wrong.", LOG_LEVEL_NOTICE); - return; - } - const r = decodeURIComponent(s.substring(configURIBase.length)); - console.dir(r); - await this.setupWizard(r); - } - async setupWizard(s) { - try { - const r = JSON.parse(JSON.stringify(this.settings)), o = await askString(this.app, "Passphrase", "The passphrase to decrypt your setup URI", "", true); - if (false === o) return; - const u = await JSON.parse(await decrypt(s, o, false)); - if (u) { - if ("yes" == await askYesNo(this.app, "Importing LiveSync's conf, OK?")) { - const s = Object.assign({}, DEFAULT_SETTINGS, u); - this.plugin.replicator.closeReplication(); - this.settings.suspendFileWatching = true; - console.dir(s); - s.configPassphraseStore = ""; - s.encryptedPassphrase = ""; - s.encryptedCouchDBConnection = ""; - s.additionalSuffixOfDatabaseName = `${"appId" in this.app ? this.app.appId : ""}`; - const o = "Just import setting", g = "Set it up as secondary or subsequent device", _ = "Secondary device but try keeping local changes", m = "Reconfigure and reconstitute the data", b = "Leave everything to me"; - s.syncInternalFiles = false; - s.usePluginSync = false; - s.isConfigured = true; - if (!s.useIndexedDBAdapter) s.useIndexedDBAdapter = true; - const E = await askSelectString(this.app, "How would you like to set it up?", [ g, m, _, o, b ]); - if (E == o) { - this.plugin.settings = s; - this.plugin.usedPassphrase = ""; - await this.plugin.saveSettings(); - } else if (E == g) { - this.plugin.settings = s; - this.plugin.usedPassphrase = ""; - await this.fetchLocal(); - } else if (E == _) { - this.plugin.settings = s; - this.plugin.usedPassphrase = ""; - await this.fetchLocalWithRebuild(); - } else if (E == m) { - const r = "I know this operation will rebuild all my databases with files on this device, and files that are on the remote database and I didn't synchronize to any other devices will be lost and want to proceed indeed."; - if (await askSelectString(this.app, "Do you really want to do this?", [ "Cancel", r ]) != r) return; - this.plugin.settings = s; - this.plugin.usedPassphrase = ""; - await this.rebuildEverything(); - } else if (E == b) { - const o = await askYesNo(this.app, "Keep local DB?"), u = await askYesNo(this.app, "Keep remote DB?"); - if ("yes" == o && "yes" == u) { - this.plugin.settings = s; - this.plugin.usedPassphrase = ""; - this.suspendAllSync(); - this.suspendExtraSync(); - await this.plugin.saveSettings(); - if ("yes" == await askYesNo(this.app, "Unlock and replicate?")) { - await this.plugin.replicate(true); - await this.plugin.markRemoteUnlocked(); - } - Logger("Configuration loaded.", LOG_LEVEL_NOTICE); - return; - } - if ("no" == o && "no" == u) if ("yes" != await askYesNo(this.app, "Drop everything?")) { - Logger("Cancelled", LOG_LEVEL_NOTICE); - this.plugin.settings = r; - return; - } - let g; - this.plugin.settings = s; - this.plugin.usedPassphrase = ""; - await this.plugin.saveSettings(); - if ("no" == o) { - await this.plugin.resetLocalDatabase(); - await this.plugin.localDatabase.initializeDatabase(); - if ("yes" == await askYesNo(this.app, "Rebuild the database?")) g = this.plugin.initializeDatabase(true); else await this.plugin.markRemoteResolved(); - } - if ("no" == u) { - await this.plugin.tryResetRemoteDatabase(); - await this.plugin.markRemoteLocked(); - } - if ("no" == o || "no" == u) if ("yes" == await askYesNo(this.app, "Replicate once?")) { - if (null != g) await g; - await this.plugin.replicate(true); - } - } - } - Logger("Configuration loaded.", LOG_LEVEL_NOTICE); - } else Logger("Cancelled.", LOG_LEVEL_NOTICE); - } catch (s) { - Logger("Couldn't parse or decrypt configuration uri.", LOG_LEVEL_NOTICE); - } - } - suspendExtraSync() { - Logger("Hidden files and plugin synchronization have been temporarily disabled. Please enable them after the fetching, if you need them.", LOG_LEVEL_NOTICE); - this.plugin.settings.syncInternalFiles = false; - this.plugin.settings.usePluginSync = false; - this.plugin.settings.autoSweepPlugins = false; - } - async askHiddenFileConfiguration(s) { - this.plugin.addOnSetup.suspendExtraSync(); - const r = `Would you like to enable \`Hidden File Synchronization\` or \`Customization sync\`?\n${s.enableFetch ? " - Fetch: Use files stored from other devices. \n" : ""}${s.enableOverwrite ? "- Overwrite: Use files from this device. \n" : ""}- Custom: Synchronize only customization files with a dedicated interface.\n- Keep them disabled: Do not use hidden file synchronization.\nOf course, we are able to disable these features.`, o = "Fetch", u = "Overwrite", g = "Custom", _ = "keep them disabled", m = []; - if (null == s ? void 0 : s.enableFetch) m.push(o); - if (null == s ? void 0 : s.enableOverwrite) m.push(u); - m.push(g); - m.push(_); - const b = await confirmWithMessage(this.plugin, "Hidden file sync", r, m, _, 40); - if (b == o) await this.configureHiddenFileSync("FETCH"); else if (b == u) await this.configureHiddenFileSync("OVERWRITE"); else if (b == _) await this.configureHiddenFileSync("DISABLE"); else if (b == g) await this.configureHiddenFileSync("CUSTOMIZE"); - } - async configureHiddenFileSync(s) { - this.plugin.addOnSetup.suspendExtraSync(); - if ("DISABLE" != s) { - if ("CUSTOMIZE" != s) { - Logger("Gathering files for enabling Hidden File Sync", LOG_LEVEL_NOTICE); - if ("FETCH" == s) await this.plugin.addOnHiddenFileSync.syncInternalFilesAndDatabase("pullForce", true); else if ("OVERWRITE" == s) await this.plugin.addOnHiddenFileSync.syncInternalFilesAndDatabase("pushForce", true); else if ("MERGE" == s) await this.plugin.addOnHiddenFileSync.syncInternalFilesAndDatabase("safe", true); - this.plugin.settings.syncInternalFiles = true; - await this.plugin.saveSettings(); - Logger("Done! Restarting the app is strongly recommended!", LOG_LEVEL_NOTICE); - } else if ("CUSTOMIZE" == s) { - if (!this.plugin.deviceAndVaultName) { - let s = await askString(this.app, "Device name", "Please set this device name", "desktop"); - if (!s) { - if (import_obsidian.Platform.isAndroidApp) s = "android-app"; else if (import_obsidian.Platform.isIosApp) s = "ios"; else if (import_obsidian.Platform.isMacOS) s = "macos"; else if (import_obsidian.Platform.isMobileApp) s = "mobile-app"; else if (import_obsidian.Platform.isMobile) s = "mobile"; else if (import_obsidian.Platform.isSafari) s = "safari"; else if (import_obsidian.Platform.isDesktop) s = "desktop"; else if (import_obsidian.Platform.isDesktopApp) s = "desktop-app"; else s = "unknown"; - s += Math.random().toString(36).slice(-4); - } - this.plugin.deviceAndVaultName = s; - } - this.plugin.settings.usePluginSync = true; - await this.plugin.saveSettings(); - await this.plugin.addOnConfigSync.scanAllConfigFiles(true); - } - } else { - this.plugin.settings.syncInternalFiles = false; - this.plugin.settings.usePluginSync = false; - await this.plugin.saveSettings(); - } - } - suspendAllSync() { - this.plugin.settings.liveSync = false; - this.plugin.settings.periodicReplication = false; - this.plugin.settings.syncOnSave = false; - this.plugin.settings.syncOnEditorSave = false; - this.plugin.settings.syncOnStart = false; - this.plugin.settings.syncOnFileOpen = false; - this.plugin.settings.syncAfterMerge = false; - } - async suspendReflectingDatabase() { - if (!this.plugin.settings.doNotSuspendOnFetching) { - Logger("Suspending reflection: Database and storage changes will not be reflected in each other until completely finished the fetching.", LOG_LEVEL_NOTICE); - this.plugin.settings.suspendParseReplicationResult = true; - this.plugin.settings.suspendFileWatching = true; - await this.plugin.saveSettings(); - } - } - async resumeReflectingDatabase() { - if (!this.plugin.settings.doNotSuspendOnFetching) { - Logger("Database and storage reflection has been resumed!", LOG_LEVEL_NOTICE); - this.plugin.settings.suspendParseReplicationResult = false; - this.plugin.settings.suspendFileWatching = false; - await this.plugin.syncAllFiles(true); - await this.plugin.loadQueuedFiles(); - await this.plugin.saveSettings(); - } - } - async askUseNewAdapter() { - if (!this.plugin.settings.useIndexedDBAdapter) { - const s = "Now this plugin has been configured to use the old database adapter for keeping compatibility. Do you want to deactivate it?", r = "Yes, disable and use latest", o = [ r, "No, keep compatibility" ]; - if (await confirmWithMessage(this.plugin, "Database adapter", s, o, r, 10) == r) this.plugin.settings.useIndexedDBAdapter = true; - } - } - async resetLocalDatabase() { - if (this.plugin.settings.isConfigured && "" == this.plugin.settings.additionalSuffixOfDatabaseName) await this.plugin.resetLocalDatabase(); - this.plugin.settings.additionalSuffixOfDatabaseName = `${"appId" in this.app ? this.app.appId : ""}`; - await this.plugin.resetLocalDatabase(); - } - async fetchRemoteChunks() { - if (!this.plugin.settings.doNotSuspendOnFetching && this.plugin.settings.readChunksOnline) { - Logger("Fetching chunks", LOG_LEVEL_NOTICE); - const s = await this.plugin.getReplicator().connectRemoteCouchDBWithSetting(this.settings, this.plugin.getIsMobile(), true); - if ("string" == typeof s) Logger(s, LOG_LEVEL_NOTICE); else await fetchAllUsedChunks(this.localDatabase.localDatabase, s.db); - Logger("Fetching chunks done", LOG_LEVEL_NOTICE); - } - } - async fetchLocal(s) { - this.suspendExtraSync(); - await this.askUseNewAdapter(); - this.plugin.settings.isConfigured = true; - await this.suspendReflectingDatabase(); - await this.plugin.realizeSettingSyncMode(); - await this.resetLocalDatabase(); - await delay(1e3); - await this.plugin.openDatabase(); - this.plugin.isReady = true; - if (s) await this.plugin.initializeDatabase(true); - await this.plugin.markRemoteResolved(); - await delay(500); - await this.plugin.replicateAllFromServer(true); - await delay(1e3); - await this.plugin.replicateAllFromServer(true); - await this.resumeReflectingDatabase(); - await this.askHiddenFileConfiguration({ - enableFetch: true - }); - } - async fetchLocalWithRebuild() { - return await this.fetchLocal(true); - } - async rebuildRemote() { - this.suspendExtraSync(); - this.plugin.settings.isConfigured = true; - await this.plugin.realizeSettingSyncMode(); - await this.plugin.markRemoteLocked(); - await this.plugin.tryResetRemoteDatabase(); - await this.plugin.markRemoteLocked(); - await delay(500); - await this.askHiddenFileConfiguration({ - enableOverwrite: true - }); - await delay(1e3); - await this.plugin.replicateAllToServer(true); - await delay(1e3); - await this.plugin.replicateAllToServer(true); - } - async rebuildEverything() { - this.suspendExtraSync(); - await this.askUseNewAdapter(); - this.plugin.settings.isConfigured = true; - await this.plugin.realizeSettingSyncMode(); - await this.resetLocalDatabase(); - await delay(1e3); - await this.plugin.initializeDatabase(true); - await this.plugin.markRemoteLocked(); - await this.plugin.tryResetRemoteDatabase(); - await this.plugin.markRemoteLocked(); - await delay(500); - await this.askHiddenFileConfiguration({ - enableOverwrite: true - }); - await delay(1e3); - await this.plugin.replicateAllToServer(true); - await delay(1e3); - await this.plugin.replicateAllToServer(true); - } -}; - -function add_css4(s) { - append_styles(s, "svelte-1vjy5r1", ".svelte-1vjy5r1.svelte-1vjy5r1.svelte-1vjy5r1{box-sizing:border-box}.globalhistory.svelte-1vjy5r1.svelte-1vjy5r1.svelte-1vjy5r1{margin-bottom:2em}table.svelte-1vjy5r1.svelte-1vjy5r1.svelte-1vjy5r1{width:100%}.more.svelte-1vjy5r1>div.svelte-1vjy5r1.svelte-1vjy5r1{display:flex}.more.svelte-1vjy5r1>div.svelte-1vjy5r1>button.svelte-1vjy5r1{flex-grow:1}th.svelte-1vjy5r1.svelte-1vjy5r1.svelte-1vjy5r1{position:sticky;top:0;backdrop-filter:blur(10px)}td.mtime.svelte-1vjy5r1.svelte-1vjy5r1.svelte-1vjy5r1{white-space:break-spaces}td.path.svelte-1vjy5r1.svelte-1vjy5r1.svelte-1vjy5r1{word-break:break-word}.row.svelte-1vjy5r1.svelte-1vjy5r1.svelte-1vjy5r1{display:flex;flex-direction:row;flex-wrap:wrap}.row.svelte-1vjy5r1>label.svelte-1vjy5r1.svelte-1vjy5r1{display:flex;align-items:center;min-width:5em}.row.svelte-1vjy5r1>input.svelte-1vjy5r1.svelte-1vjy5r1{flex-grow:1}.filenames.svelte-1vjy5r1.svelte-1vjy5r1.svelte-1vjy5r1{display:flex;flex-direction:column}.filenames.svelte-1vjy5r1>.path.svelte-1vjy5r1.svelte-1vjy5r1{font-size:70%}.rev.svelte-1vjy5r1.svelte-1vjy5r1.svelte-1vjy5r1{text-overflow:ellipsis;max-width:3em;display:inline-block;overflow:hidden;white-space:nowrap}"); -} - -function get_each_context4(s, r, o) { - const u = s.slice(); - u[26] = r[o]; - return u; -} - -function create_if_block_53(s) { - let r; - return { - c() { - r = element("div"); - r.textContent = "Gathering information..."; - attr(r, "class", " svelte-1vjy5r1"); - }, - m(s, o) { - insert(s, r, o); - }, - d(s) { - if (s) detach(r); - } - }; -} - -function create_if_block_44(s) { - let r; - return { - c() { - r = element("th"); - r.textContent = "Chunks"; - attr(r, "class", "svelte-1vjy5r1"); - }, - m(s, o) { - insert(s, r, o); - }, - d(s) { - if (s) detach(r); - } - }; -} - -function create_else_block_23(s) { - let r, o, u, g; - return { - c() { - r = element("div"); - o = element("button"); - o.textContent = "+1 week"; - attr(o, "class", "svelte-1vjy5r1"); - attr(r, "class", "svelte-1vjy5r1"); - }, - m(_, m) { - insert(_, r, m); - append(r, o); - if (!u) { - g = listen(o, "click", s[17]); - u = true; - } - }, - p: noop, - d(s) { - if (s) detach(r); - u = false; - g(); - } - }; -} - -function create_if_block_34(s) { - let r; - return { - c() { - r = element("div"); - attr(r, "class", " svelte-1vjy5r1"); - }, - m(s, o) { - insert(s, r, o); - }, - p: noop, - d(s) { - if (s) detach(r); - } - }; -} - -function create_else_block_14(s) { - let r, o = s[26].rev + ""; - return { - c() { - r = text(o); - }, - m(s, o) { - insert(s, r, o); - }, - p(s, u) { - if (32 & u && o !== (o = s[26].rev + "")) set_data(r, o); - }, - d(s) { - if (s) detach(r); - } - }; -} - -function create_if_block_24(s) { - let r, o, u, g, _ = s[26].rev + ""; - function click_handler_2() { - return s[19](s[26]); - } - return { - c() { - r = element("a"); - o = text(_); - attr(r, "class", "svelte-1vjy5r1"); - }, - m(s, _) { - insert(s, r, _); - append(r, o); - if (!u) { - g = listen(r, "click", click_handler_2); - u = true; - } - }, - p(r, u) { - s = r; - if (32 & u && _ !== (_ = s[26].rev + "")) set_data(o, _); - }, - d(s) { - if (s) detach(r); - u = false; - g(); - } - }; -} - -function create_if_block_14(s) { - let r, o, u = s[26].chunks + ""; - return { - c() { - r = element("td"); - o = text(u); - attr(r, "class", "svelte-1vjy5r1"); - }, - m(s, u) { - insert(s, r, u); - append(r, o); - }, - p(s, r) { - if (32 & r && u !== (u = s[26].chunks + "")) set_data(o, u); - }, - d(s) { - if (s) detach(r); - } - }; -} - -function create_each_block4(s) { - let r, o, u, g, _, m, b, E, w, S, L, O, D, k, C, T, I, A, R, x, P, N, B = s[26].mtimeDisp + "", F = s[26].dirname.split("/").join("​/") + "", M = s[26].filename + "", V = s[26].changes + ""; - function click_handler_1() { - return s[18](s[26]); - } - function select_block_type_1(s, r) { - if (s[26].isPlain) return create_if_block_24; else return create_else_block_14; - } - let G = select_block_type_1(s), j = G(s), q = s[1] && create_if_block_14(s); - return { - c() { - r = element("tr"); - o = element("td"); - u = text(B); - g = space(); - _ = element("td"); - m = element("div"); - b = element("span"); - E = text("/"); - w = text(F); - S = space(); - L = element("span"); - O = element("a"); - D = text(M); - k = space(); - C = element("td"); - T = element("span"); - j.c(); - I = space(); - A = element("td"); - R = text(V); - x = space(); - if (q) q.c(); - attr(o, "class", "mtime svelte-1vjy5r1"); - attr(b, "class", "path svelte-1vjy5r1"); - attr(O, "class", "svelte-1vjy5r1"); - attr(L, "class", "filename svelte-1vjy5r1"); - attr(m, "class", "filenames svelte-1vjy5r1"); - attr(_, "class", "path svelte-1vjy5r1"); - attr(T, "class", "rev svelte-1vjy5r1"); - attr(C, "class", "svelte-1vjy5r1"); - attr(A, "class", "svelte-1vjy5r1"); - attr(r, "class", "svelte-1vjy5r1"); - }, - m(s, B) { - insert(s, r, B); - append(r, o); - append(o, u); - append(r, g); - append(r, _); - append(_, m); - append(m, b); - append(b, E); - append(b, w); - append(m, S); - append(m, L); - append(L, O); - append(O, D); - append(r, k); - append(r, C); - append(C, T); - j.m(T, null); - append(r, I); - append(r, A); - append(A, R); - append(r, x); - if (q) q.m(r, null); - if (!P) { - N = listen(O, "click", click_handler_1); - P = true; - } - }, - p(o, g) { - s = o; - if (32 & g && B !== (B = s[26].mtimeDisp + "")) set_data(u, B); - if (32 & g && F !== (F = s[26].dirname.split("/").join("​/") + "")) set_data(w, F); - if (32 & g && M !== (M = s[26].filename + "")) set_data(D, M); - if (G === (G = select_block_type_1(s)) && j) j.p(s, g); else { - j.d(1); - j = G(s); - if (j) { - j.c(); - j.m(T, null); - } - } - if (32 & g && V !== (V = s[26].changes + "")) set_data(R, V); - if (s[1]) if (q) q.p(s, g); else { - q = create_if_block_14(s); - q.c(); - q.m(r, null); - } else if (q) { - q.d(1); - q = null; - } - }, - d(s) { - if (s) detach(r); - j.d(); - if (q) q.d(); - P = false; - N(); - } - }; -} - -function create_else_block4(s) { - let r, o, u, g; - return { - c() { - r = element("div"); - o = element("button"); - o.textContent = "+1 week"; - attr(o, "class", "svelte-1vjy5r1"); - attr(r, "class", "svelte-1vjy5r1"); - }, - m(_, m) { - insert(_, r, m); - append(r, o); - if (!u) { - g = listen(o, "click", s[20]); - u = true; - } - }, - p: noop, - d(s) { - if (s) detach(r); - u = false; - g(); - } - }; -} - -function create_if_block4(s) { - let r; - return { - c() { - r = element("div"); - attr(r, "class", " svelte-1vjy5r1"); - }, - m(s, o) { - insert(s, r, o); - }, - p: noop, - d(s) { - if (s) detach(r); - } - }; -} - -function create_fragment4(s) { - let r, o, u, g, _, m, b, E, w, S, L, O, D, k, C, T, I, A, R, x, P, N, B, F, M, V, G, j, q, U, z, W, H, K, Q, J, Y, X, Z, ee, te, ne, ie, se, ae, re, oe, le = s[6] && create_if_block_53(s), ce = s[1] && create_if_block_44(s); - function select_block_type(s, r) { - if (s[6]) return create_if_block_34; else return create_else_block_23; - } - let ue = select_block_type(s), de = ue(s), fe = ensure_array_like(s[5]), he = []; - for (let r = 0; r < fe.length; r += 1) he[r] = create_each_block4(get_each_context4(s, fe, r)); - function select_block_type_2(s, r) { - if (s[6]) return create_if_block4; else return create_else_block4; - } - let pe = select_block_type_2(s), ge = pe(s); - return { - c() { - r = element("div"); - o = element("h1"); - o.textContent = "Vault history"; - u = space(); - g = element("div"); - _ = element("div"); - m = element("label"); - m.textContent = "From:"; - b = element("input"); - E = space(); - w = element("div"); - S = element("label"); - S.textContent = "To:"; - L = element("input"); - O = space(); - D = element("div"); - k = element("label"); - k.textContent = "Info:"; - C = space(); - T = element("label"); - I = element("input"); - A = element("span"); - A.textContent = "Diff"; - R = space(); - x = element("label"); - P = element("input"); - N = element("span"); - N.textContent = "Chunks"; - B = space(); - F = element("label"); - M = element("input"); - V = element("span"); - V.textContent = "File integrity"; - G = space(); - if (le) le.c(); - j = space(); - q = element("table"); - U = element("tr"); - z = element("th"); - z.textContent = "Date"; - W = space(); - H = element("th"); - H.textContent = "Path"; - K = space(); - Q = element("th"); - Q.textContent = "Rev"; - J = space(); - Y = element("th"); - Y.textContent = "Stat"; - X = space(); - if (ce) ce.c(); - Z = space(); - ee = element("tr"); - te = element("td"); - de.c(); - ne = space(); - for (let s = 0; s < he.length; s += 1) he[s].c(); - ie = space(); - se = element("tr"); - ae = element("td"); - ge.c(); - attr(o, "class", "svelte-1vjy5r1"); - attr(m, "for", ""); - attr(m, "class", "svelte-1vjy5r1"); - attr(b, "type", "date"); - b.disabled = s[6]; - attr(b, "class", "svelte-1vjy5r1"); - attr(_, "class", "row svelte-1vjy5r1"); - attr(S, "for", ""); - attr(S, "class", "svelte-1vjy5r1"); - attr(L, "type", "date"); - L.disabled = s[6]; - attr(L, "class", "svelte-1vjy5r1"); - attr(w, "class", "row svelte-1vjy5r1"); - attr(k, "for", ""); - attr(k, "class", "svelte-1vjy5r1"); - attr(I, "type", "checkbox"); - I.disabled = s[6]; - attr(I, "class", "svelte-1vjy5r1"); - attr(A, "class", "svelte-1vjy5r1"); - attr(T, "class", "svelte-1vjy5r1"); - attr(P, "type", "checkbox"); - P.disabled = s[6]; - attr(P, "class", "svelte-1vjy5r1"); - attr(N, "class", "svelte-1vjy5r1"); - attr(x, "class", "svelte-1vjy5r1"); - attr(M, "type", "checkbox"); - M.disabled = s[6]; - attr(M, "class", "svelte-1vjy5r1"); - attr(V, "class", "svelte-1vjy5r1"); - attr(F, "class", "svelte-1vjy5r1"); - attr(D, "class", "row svelte-1vjy5r1"); - attr(g, "class", "control svelte-1vjy5r1"); - attr(z, "class", "svelte-1vjy5r1"); - attr(H, "class", "svelte-1vjy5r1"); - attr(Q, "class", "svelte-1vjy5r1"); - attr(Y, "class", "svelte-1vjy5r1"); - attr(U, "class", "svelte-1vjy5r1"); - attr(te, "colspan", "5"); - attr(te, "class", "more svelte-1vjy5r1"); - attr(ee, "class", "svelte-1vjy5r1"); - attr(ae, "colspan", "5"); - attr(ae, "class", "more svelte-1vjy5r1"); - attr(se, "class", "svelte-1vjy5r1"); - attr(q, "class", "svelte-1vjy5r1"); - attr(r, "class", "globalhistory svelte-1vjy5r1"); - }, - m(ue, fe) { - insert(ue, r, fe); - append(r, o); - append(r, u); - append(r, g); - append(g, _); - append(_, m); - append(_, b); - set_input_value(b, s[3]); - append(g, E); - append(g, w); - append(w, S); - append(w, L); - set_input_value(L, s[4]); - append(g, O); - append(g, D); - append(D, k); - append(D, C); - append(D, T); - append(T, I); - I.checked = s[0]; - append(T, A); - append(D, R); - append(D, x); - append(x, P); - P.checked = s[1]; - append(x, N); - append(D, B); - append(D, F); - append(F, M); - M.checked = s[2]; - append(F, V); - append(r, G); - if (le) le.m(r, null); - append(r, j); - append(r, q); - append(q, U); - append(U, z); - append(U, W); - append(U, H); - append(U, K); - append(U, Q); - append(U, J); - append(U, Y); - append(U, X); - if (ce) ce.m(U, null); - append(q, Z); - append(q, ee); - append(ee, te); - de.m(te, null); - append(q, ne); - for (let s = 0; s < he.length; s += 1) if (he[s]) he[s].m(q, null); - append(q, ie); - append(q, se); - append(se, ae); - ge.m(ae, null); - if (!re) { - oe = [ listen(b, "input", s[12]), listen(L, "input", s[13]), listen(I, "change", s[14]), listen(P, "change", s[15]), listen(M, "change", s[16]) ]; - re = true; - } - }, - p(s, [o]) { - if (64 & o) b.disabled = s[6]; - if (8 & o) set_input_value(b, s[3]); - if (64 & o) L.disabled = s[6]; - if (16 & o) set_input_value(L, s[4]); - if (64 & o) I.disabled = s[6]; - if (1 & o) I.checked = s[0]; - if (64 & o) P.disabled = s[6]; - if (2 & o) P.checked = s[1]; - if (64 & o) M.disabled = s[6]; - if (4 & o) M.checked = s[2]; - if (s[6]) if (le) ; else { - le = create_if_block_53(s); - le.c(); - le.m(r, j); - } else if (le) { - le.d(1); - le = null; - } - if (s[1]) if (ce) ; else { - ce = create_if_block_44(s); - ce.c(); - ce.m(U, null); - } else if (ce) { - ce.d(1); - ce = null; - } - if (ue === (ue = select_block_type(s)) && de) de.p(s, o); else { - de.d(1); - de = ue(s); - if (de) { - de.c(); - de.m(te, null); - } - } - if (1570 & o) { - fe = ensure_array_like(s[5]); - let r; - for (r = 0; r < fe.length; r += 1) { - const u = get_each_context4(s, fe, r); - if (he[r]) he[r].p(u, o); else { - he[r] = create_each_block4(u); - he[r].c(); - he[r].m(q, ie); - } - } - for (;r < he.length; r += 1) he[r].d(1); - he.length = fe.length; - } - if (pe === (pe = select_block_type_2(s)) && ge) ge.p(s, o); else { - ge.d(1); - ge = pe(s); - if (ge) { - ge.c(); - ge.m(ae, null); - } - } - }, - i: noop, - o: noop, - d(s) { - if (s) detach(r); - if (le) le.d(); - if (ce) ce.d(); - de.d(); - destroy_each(he, s); - ge.d(); - re = false; - run_all(oe); - } - }; -} - -function mtimeToDate(s) { - return new Date(s).toLocaleString(); -} - -function instance4(s, r, o) { - let {plugin: u} = r, g = false, _ = false, m = false, b = Date.now() - 6048e5, E = Date.now() + 1728e5; - const w = (new Date).getTimezoneOffset(); - let S = new Date(b - w).toISOString().split("T")[0], L = new Date(E - w).toISOString().split("T")[0], O = [], D = false; - async function getHistory(s, r, w) { - o(6, D = true); - const S = [], L = await async function fetchChanges() { - var s, r, w; - try { - const o = u.localDatabase; - let S = []; - for await (const L of o.findAllNormalDocs()) { - if (L.mtime < b) continue; - if (!isAnyNote(L)) continue; - const O = u.getPath(L), D = isPlainText(L.path); - let k; - const C = (null !== (s = (await o.getRaw(L._id, { - revs_info: true - }))._revs_info) && void 0 !== s ? s : []).reverse(), T = -1, I = 0, A = 1; - for (const s of C) if ("available" == s.status) { - const C = !D && g || m && s.rev == L._rev ? await o.getDBEntry(O, { - rev: s.rev - }, false, false, true) : await o.getDBEntryMeta(O, { - rev: s.rev - }, true); - if (false === C) continue; - const R = s.rev, x = "mtime" in C ? C.mtime : 0; - if (b > x) continue; - if (E < x) continue; - let P = ""; - if (g && !D) { - const s = getDocData(C.data); - if (void 0 === k) k = s; - if (k != s) { - const r = new import_diff_match_patch.diff_match_patch, o = r.diff_main(k, s); - r.diff_cleanupSemantic(o); - k = s; - const u = { - [T]: 0, - [I]: 0, - [A]: 0 - }, g = o.reduce(((s, r) => { - var o; - return { - ...s, - [r[0]]: (null !== (o = s[r[0]]) && void 0 !== o ? o : 0) + r[1].length - }; - }), u); - P = `-${g[T]}, +${g[A]}`; - } - } - const N = C._deleted || (null == C ? void 0 : C.deleted) || false; - if (N) P += " 🗑️"; - if (R == L._rev) if (m) { - const s = u.vaultAccess.getAbstractFileByPath(stripAllPrefixes(u.getPath(L))); - if (s instanceof import_obsidian.TFile) { - const r = await u.vaultAccess.adapterReadAuto(s), o = readAsBlob(C); - if (await isDocContentSame(r, o)) P += " ⚖️"; else P += " ⚠️"; - } - } - const B = u.getPath(C), [F, ...M] = B.split("/").reverse(); - let V = ""; - if (_) { - const s = null !== (r = null == C ? void 0 : C.children) && void 0 !== r ? r : [], u = await o.allDocsRaw({ - keys: [ ...s ] - }), g = u.rows.length, _ = u.rows.filter((s => "error" in s)).length; - if (0 == _) V = `✅ ${g}`; else V = `🔎 ${_} ✅ ${g}`; - } - S.push({ - id: C._id, - rev: C._rev, - path: B, - dirname: M.reverse().join("/"), - filename: F, - mtime: x, - mtimeDisp: mtimeToDate(x), - size: null !== (w = null == C ? void 0 : C.size) && void 0 !== w ? w : 0, - isDeleted: N, - changes: P, - chunks: V, - isPlain: D - }); - } - } - return [ ...S ].sort(((s, r) => r.mtime - s.mtime)); - } finally { - o(6, D = false); - } - }(); - S.push(...L); - o(5, O = [ ...S ]); - } - function nextWeek() { - o(4, L = new Date(E - w + 6048e5).toISOString().split("T")[0]); - } - function prevWeek() { - o(3, S = new Date(b - w - 6048e5).toISOString().split("T")[0]); - } - onMount((async () => { - await getHistory(); - })); - onDestroy((() => {})); - function showHistory(s, r) { - new DocumentHistoryModal(u.app, u, s, void 0, r).open(); - } - function openFile(s) { - u.app.workspace.openLinkText(s, s); - } - s.$$set = s => { - if ("plugin" in s) o(11, u = s.plugin); - }; - s.$$.update = () => { - if (31 & s.$$.dirty) { - b = new Date(S).getTime() + w; - E = new Date(L).getTime() + w; - getHistory(); - } - }; - return [ g, _, m, S, L, O, D, nextWeek, prevWeek, showHistory, openFile, u, function input0_input_handler() { - S = this.value; - o(3, S); - }, function input1_input_handler() { - L = this.value; - o(4, L); - }, function input2_change_handler() { - g = this.checked; - o(0, g); - }, function input3_change_handler() { - _ = this.checked; - o(1, _); - }, function input4_change_handler() { - m = this.checked; - o(2, m); - }, () => nextWeek(), s => openFile(s.path), s => showHistory(s.path, (null == s ? void 0 : s.rev) || ""), () => prevWeek() ]; -} - -var GlobalHistory = class extends SvelteComponent { - constructor(s) { - super(); - init2(this, s, instance4, create_fragment4, safe_not_equal, { - plugin: 11 - }, add_css4); - } -}, GlobalHistory_default = GlobalHistory, VIEW_TYPE_GLOBAL_HISTORY = "global-history", GlobalHistoryView = class extends import_obsidian.ItemView { - getIcon() { - return "clock"; - } - constructor(s, r) { - super(s); - this.plugin = r; - } - getViewType() { - return VIEW_TYPE_GLOBAL_HISTORY; - } - getDisplayText() { - return "Vault history"; - } - async onOpen() { - this.component = new GlobalHistory_default({ - target: this.contentEl, - props: { - plugin: this.plugin - } - }); - } - async onClose() { - this.component.$destroy(); - } -}, import_obsidian6 = require("obsidian"); - -function add_css5(s) { - append_styles(s, "svelte-1j0mkaj", ".svelte-1j0mkaj.svelte-1j0mkaj{box-sizing:border-box}.logpane.svelte-1j0mkaj.svelte-1j0mkaj{display:flex;height:100%;flex-direction:column}.log.svelte-1j0mkaj.svelte-1j0mkaj{overflow-y:scroll;user-select:text;padding-bottom:2em}.log.svelte-1j0mkaj>pre.svelte-1j0mkaj{margin:0}.log.svelte-1j0mkaj>pre.wrap-right.svelte-1j0mkaj{word-break:break-all;max-width:100%;width:100%;white-space:normal}.row.svelte-1j0mkaj.svelte-1j0mkaj{display:flex;flex-direction:row;justify-content:flex-end}.row.svelte-1j0mkaj>label.svelte-1j0mkaj{display:flex;align-items:center;min-width:5em;margin-right:1em}"); -} - -function get_each_context5(s, r, o) { - const u = s.slice(); - u[11] = r[o]; - return u; -} - -function create_each_block5(s) { - let r, o, u = s[11] + ""; - return { - c() { - r = element("pre"); - o = text(u); - attr(r, "class", "svelte-1j0mkaj"); - toggle_class(r, "wrap-right", s[1]); - }, - m(s, u) { - insert(s, r, u); - append(r, o); - }, - p(s, g) { - if (1 & g && u !== (u = s[11] + "")) set_data(o, u); - if (2 & g) toggle_class(r, "wrap-right", s[1]); - }, - d(s) { - if (s) detach(r); - } - }; -} - -function create_fragment5(s) { - let r, o, u, g, _, m, b, E, w, S, L, O, D, k, C, T, I, A, R, x, P = ensure_array_like(s[0]), N = []; - for (let r = 0; r < P.length; r += 1) N[r] = create_each_block5(get_each_context5(s, P, r)); - return { - c() { - r = element("div"); - o = comment("

    Self-hosted LiveSync Log

    "); - u = space(); - g = element("div"); - _ = element("div"); - m = element("label"); - b = element("input"); - E = element("span"); - E.textContent = "Wrap"; - w = space(); - S = element("label"); - L = element("input"); - O = element("span"); - O.textContent = "Auto scroll"; - D = space(); - k = element("label"); - C = element("input"); - T = element("span"); - T.textContent = "Pause"; - I = space(); - A = element("div"); - for (let s = 0; s < N.length; s += 1) N[s].c(); - attr(b, "type", "checkbox"); - attr(b, "class", "svelte-1j0mkaj"); - attr(E, "class", "svelte-1j0mkaj"); - attr(m, "class", "svelte-1j0mkaj"); - attr(L, "type", "checkbox"); - attr(L, "class", "svelte-1j0mkaj"); - attr(O, "class", "svelte-1j0mkaj"); - attr(S, "class", "svelte-1j0mkaj"); - attr(C, "type", "checkbox"); - attr(C, "class", "svelte-1j0mkaj"); - attr(T, "class", "svelte-1j0mkaj"); - attr(k, "class", "svelte-1j0mkaj"); - attr(_, "class", "row svelte-1j0mkaj"); - attr(g, "class", "control svelte-1j0mkaj"); - attr(A, "class", "log svelte-1j0mkaj"); - attr(r, "class", "logpane svelte-1j0mkaj"); - }, - m(P, B) { - insert(P, r, B); - append(r, o); - append(r, u); - append(r, g); - append(g, _); - append(_, m); - append(m, b); - b.checked = s[1]; - append(m, E); - append(_, w); - append(_, S); - append(S, L); - L.checked = s[2]; - append(S, O); - append(_, D); - append(_, k); - append(k, C); - C.checked = s[3]; - append(k, T); - append(r, I); - append(r, A); - for (let s = 0; s < N.length; s += 1) if (N[s]) N[s].m(A, null); - s[8](A); - if (!R) { - x = [ listen(b, "change", s[5]), listen(L, "change", s[6]), listen(C, "change", s[7]) ]; - R = true; - } - }, - p(s, [r]) { - if (2 & r) b.checked = s[1]; - if (4 & r) L.checked = s[2]; - if (8 & r) C.checked = s[3]; - if (3 & r) { - P = ensure_array_like(s[0]); - let o; - for (o = 0; o < P.length; o += 1) { - const u = get_each_context5(s, P, o); - if (N[o]) N[o].p(u, r); else { - N[o] = create_each_block5(u); - N[o].c(); - N[o].m(A, null); - } - } - for (;o < N.length; o += 1) N[o].d(1); - N.length = P.length; - } - }, - i: noop, - o: noop, - d(o) { - if (o) detach(r); - destroy_each(N, o); - s[8](null); - R = false; - run_all(x); - } - }; -} - -function instance5(s, r, o) { - let u, g, _ = [], m = false, b = true, E = false; - function updateLog(s) { - const r = s.value; - if (!E) { - o(0, _ = [ ...r ]); - setTimeout((() => { - if (g) o(4, g.scrollTop = g.scrollHeight, g); - }), 10); - } - } - onMount((async () => { - logMessages.onChanged(updateLog); - Logger("Log window opened"); - u = () => logMessages.offChanged(updateLog); - })); - onDestroy((() => { - if (u) u(); - })); - return [ _, m, b, E, g, function input0_change_handler() { - m = this.checked; - o(1, m); - }, function input1_change_handler() { - b = this.checked; - o(2, b); - }, function input2_change_handler() { - E = this.checked; - o(3, E); - }, function div2_binding(s) { - binding_callbacks[s ? "unshift" : "push"]((() => { - g = s; - o(4, g); - })); - } ]; -} - -var LogPane = class extends SvelteComponent { - constructor(s) { - super(); - init2(this, s, instance5, create_fragment5, safe_not_equal, {}, add_css5); - } -}, LogPane_default = LogPane, VIEW_TYPE_LOG = "log-log", LogPaneView = class extends import_obsidian6.ItemView { - getIcon() { - return "view-log"; - } - constructor(s, r) { - super(s); - this.plugin = r; - } - getViewType() { - return VIEW_TYPE_LOG; - } - getDisplayText() { - return "Self-hosted LiveSync Log"; - } - async onOpen() { - this.component = new LogPane_default({ - target: this.contentEl, - props: {} - }); - } - async onClose() { - this.component.$destroy(); - } -}; - -function getFileLockKey(s) { - return `fl:${"string" == typeof s ? s : s.path}`; -} - -function toArrayBuffer(s) { - if (s instanceof Uint8Array) return s.buffer; - if (s instanceof DataView) return s.buffer; else return s; -} - -async function processReadFile(s, r) { - return await serialized(getFileLockKey(s), (() => r())); -} - -async function processWriteFile(s, r) { - return await serialized(getFileLockKey(s), (() => r())); -} - -var SerializedFileAccess = class { - constructor(s) { - this.touchedFiles = []; - this.app = s; - } - async adapterStat(s) { - const r = s instanceof import_obsidian.TFile ? s.path : s; - return await processReadFile(s, (() => this.app.vault.adapter.stat(r))); - } - async adapterExists(s) { - const r = s instanceof import_obsidian.TFile ? s.path : s; - return await processReadFile(s, (() => this.app.vault.adapter.exists(r))); - } - async adapterRemove(s) { - const r = s instanceof import_obsidian.TFile ? s.path : s; - return await processReadFile(s, (() => this.app.vault.adapter.remove(r))); - } - async adapterRead(s) { - const r = s instanceof import_obsidian.TFile ? s.path : s; - return await processReadFile(s, (() => this.app.vault.adapter.read(r))); - } - async adapterReadBinary(s) { - const r = s instanceof import_obsidian.TFile ? s.path : s; - return await processReadFile(s, (() => this.app.vault.adapter.readBinary(r))); - } - async adapterReadAuto(s) { - const r = s instanceof import_obsidian.TFile ? s.path : s; - if (isPlainText(r)) return await processReadFile(s, (() => this.app.vault.adapter.read(r))); else return await processReadFile(s, (() => this.app.vault.adapter.readBinary(r))); - } - async adapterWrite(s, r, o) { - const u = s instanceof import_obsidian.TFile ? s.path : s; - if ("string" == typeof r) return await processWriteFile(s, (() => this.app.vault.adapter.write(u, r, o))); else return await processWriteFile(s, (() => this.app.vault.adapter.writeBinary(u, toArrayBuffer(r), o))); - } - async vaultCacheRead(s) { - return await processReadFile(s, (() => this.app.vault.cachedRead(s))); - } - async vaultRead(s) { - return await processReadFile(s, (() => this.app.vault.read(s))); - } - async vaultReadBinary(s) { - return await processReadFile(s, (() => this.app.vault.readBinary(s))); - } - async vaultReadAuto(s) { - if (isPlainText(s.path)) return await processReadFile(s, (() => this.app.vault.read(s))); else return await processReadFile(s, (() => this.app.vault.readBinary(s))); - } - async vaultModify(s, r, o) { - if ("string" == typeof r) return await processWriteFile(s, (async () => { - const u = await this.app.vault.read(s); - if (r === u) { - if (o && o.mtime) markChangesAreSame(s, s.stat.mtime, o.mtime); - return false; - } - await this.app.vault.modify(s, r, o); - return true; - })); else return await processWriteFile(s, (async () => { - const u = await this.app.vault.readBinary(s); - if (await isDocContentSame(createBinaryBlob(u), createBinaryBlob(r))) { - if (o && o.mtime) markChangesAreSame(s, s.stat.mtime, o.mtime); - return false; - } - await this.app.vault.modifyBinary(s, toArrayBuffer(r), o); - return true; - })); - } - async vaultCreate(s, r, o) { - if ("string" == typeof r) return await processWriteFile(s, (() => this.app.vault.create(s, r, o))); else return await processWriteFile(s, (() => this.app.vault.createBinary(s, toArrayBuffer(r), o))); - } - trigger(s, ...r) { - return this.app.vault.trigger(s, ...r); - } - async adapterAppend(s, r, o) { - return await this.app.vault.adapter.append(s, r, o); - } - async delete(s, r = false) { - return await processWriteFile(s, (() => this.app.vault.delete(s, r))); - } - async trash(s, r = false) { - return await processWriteFile(s, (() => this.app.vault.trash(s, r))); - } - getAbstractFileByPath(s) { - return this.app.vault.getAbstractFileByPath(s); - } - getFiles() { - return this.app.vault.getFiles(); - } - async ensureDirectory(s) { - const r = s.split("/"); - r.pop(); - let o = ""; - for (const s of r) { - o += s; - try { - await this.app.vault.adapter.mkdir(o); - } catch (s) { - if ("Folder already exists." == (null == s ? void 0 : s.message)) ; else { - Logger("Folder Create Error"); - Logger(s); - } - } - o += "/"; - } - } - touch(s) { - const r = s instanceof import_obsidian.TFile ? s : this.getAbstractFileByPath(s), o = `${r.path}-${r.stat.mtime}-${r.stat.size}`; - this.touchedFiles.unshift(o); - this.touchedFiles = this.touchedFiles.slice(0, 100); - } - recentlyTouched(s) { - const r = s instanceof import_obsidian.TFile ? `${s.path}-${s.stat.mtime}-${s.stat.size}` : `${s.path}-${s.mtime}-${s.size}`; - if (-1 == this.touchedFiles.indexOf(r)) return false; else return true; - } - clearTouched() { - this.touchedFiles = []; - } -}, isDebug = false; - -setNoticeClass(import_obsidian.Notice); - -setGlobalLogFunction(((s, r, o) => { - const u = { - message: s, - level: r, - key: o - }; - logStore.enqueue(u); -})); - -var recentLogs = [], recentLogProcessor = new QueueProcessor((s => { - recentLogs = [ ...recentLogs, ...s ].splice(-200); - logMessages.value = recentLogs; -}), { - batchSize: 25, - delay: 10, - suspended: false, - concurrentLimit: 1 -}).resumePipeLine(); - -async function fetchByAPI(s) { - var r, o; - const u = await (0, import_obsidian.requestUrl)(s); - if (u.status - u.status % 100 != 200) { - const s = new Error(`Request Error:${u.status}`); - if (u.json) { - s.message = u.json.reason; - s.name = `${null != (r = u.json.error) ? r : ""}:${null != (o = u.json.message) ? o : ""}`; - } - s.status = u.status; - throw s; - } - return u; -} - -var SETTING_HEADER = "````yaml:livesync-setting\n", SETTING_FOOTER = "\n````", ObsidianLiveSyncPlugin = class extends import_obsidian.Plugin { - constructor() { - super(...arguments); - this._suspended = false; - this.deviceAndVaultName = ""; - this.isReady = false; - this.packageVersion = ""; - this.manifestVersion = ""; - this.addOnHiddenFileSync = new HiddenFileSync(this); - this.addOnSetup = new SetupLiveSync(this); - this.addOnConfigSync = new ConfigSync(this); - this.addOns = [ this.addOnHiddenFileSync, this.addOnSetup, this.addOnConfigSync ]; - this.periodicSyncProcessor = new PeriodicProcessor(this, (async () => await this.replicate())); - this.last_successful_post = false; - this.vaultAccess = new SerializedFileAccess(this.app); - this._unloaded = false; - this.requestCount = reactiveSource(0); - this.responseCount = reactiveSource(0); - this.processReplication = s => this.parseReplicationResult(s); - this.replicationStat = reactiveSource({ - sent: 0, - arrived: 0, - maxPullSeq: 0, - maxPushSeq: 0, - lastSyncPullSeq: 0, - lastSyncPushSeq: 0, - syncStatus: "CLOSED" - }); - this.isRedFlagRaised = () => this.isFlagFileExist(FLAGMD_REDFLAG); - this.isRedFlag2Raised = () => this.isFlagFileExist(FLAGMD_REDFLAG2) || this.isFlagFileExist(FLAGMD_REDFLAG2_HR); - this.isRedFlag3Raised = () => this.isFlagFileExist(FLAGMD_REDFLAG3) || this.isFlagFileExist(FLAGMD_REDFLAG3_HR); - this.usedPassphrase = ""; - this.vaultManager = new StorageEventManagerObsidian(this); - this.pendingFileEventCount = reactiveSource(0); - this.processingFileEventCount = reactiveSource(0); - this.fileEventQueue = new KeyedQueueProcessor((s => this.handleFileEvent(s[0])), { - suspended: true, - batchSize: 1, - concurrentLimit: 5, - delay: 100, - yieldThreshold: FileWatchEventQueueMax, - totalRemainingReactiveSource: this.pendingFileEventCount, - processingEntitiesReactiveSource: this.processingFileEventCount - }).replaceEnqueueProcessor(((s, r) => this.queueNextFileEvent(s, r))); - this.notifies = {}; - this.statusLog = reactiveSource(""); - this.databaseQueueCount = reactiveSource(0); - this.databaseQueuedProcessor = new QueueProcessor((async s => { - var r; - const o = s[0], u = this.getPath(o), g = await this.localDatabase.getDBEntryFromMeta({ - ...o - }, {}, false, true, true); - if (g) if (isInternalMetadata(g._id) && this.settings.syncInternalFiles) { - const s = this.getPathWithoutPrefix(g); - this.isTargetFile(s).then((r => r ? this.addOnHiddenFileSync.procInternalFile(s) : Logger(`Skipped (Not target:${s})`, LOG_LEVEL_VERBOSE))); - } else if (isValidPath(this.getPath(g))) this.storageApplyingProcessor.enqueueWithKey(g.path, g); else Logger(`Skipped: ${g._id.substring(0, 8)}`, LOG_LEVEL_VERBOSE); else Logger(`Something went wrong while gathering content of ${u} (${o._id.substring(0, 8)}, ${null == (r = o._rev) ? void 0 : r.substring(0, 10)}) `, LOG_LEVEL_NOTICE); - }), { - suspended: true, - batchSize: 1, - concurrentLimit: 10, - yieldThreshold: 1, - delay: 0, - totalRemainingReactiveSource: this.databaseQueueCount - }).startPipeline(); - this.storageApplyingCount = reactiveSource(0); - this.storageApplyingProcessor = new KeyedQueueProcessor((async s => { - var r, o; - const u = s[0], g = this.getPath(u); - Logger(`Processing ${g} (${u._id.substring(0, 8)}: ${null == (r = u._rev) ? void 0 : r.substring(0, 5)}) :Started...`, LOG_LEVEL_VERBOSE); - const _ = this.vaultAccess.getAbstractFileByPath(this.getPathWithoutPrefix(u)); - if (_ instanceof import_obsidian.TFolder) Logger(`${this.getPath(u)} is already exist as the folder`); else { - await this.processEntryDoc(u, _ instanceof import_obsidian.TFile ? _ : void 0); - Logger(`Processing ${g} (${u._id.substring(0, 8)} :${null == (o = u._rev) ? void 0 : o.substring(0, 5)}) : Done`); - } - }), { - suspended: true, - batchSize: 1, - concurrentLimit: 2, - yieldThreshold: 1, - delay: 0, - totalRemainingReactiveSource: this.storageApplyingCount - }).startPipeline(); - this.replicationResultCount = reactiveSource(0); - this.replicationResultProcessor = new QueueProcessor((async s => { - if (this.settings.suspendParseReplicationResult) return; - const r = s[0]; - if (!isChunk(r._id)) { - for (const s of this.addOns) if (await s.parseReplicationResultItem(r)) return; - if ("versioninfo" != r.type) { - if (r._id != SYNCINFO_ID && !r._id.startsWith("_design")) if (isAnyNote(r)) { - if (this.databaseQueuedProcessor._isSuspended) Logger(`Processing scheduled: ${r.path}`, LOG_LEVEL_INFO); - const s = r.size; - if (this.isFileSizeExceeded(s)) { - Logger(`Processing ${r.path} has been skipped due to file size exceeding the limit`, LOG_LEVEL_NOTICE); - return; - } - this.databaseQueuedProcessor.enqueue(r); - } - } else if (r.version > VER) { - this.replicator.closeReplication(); - Logger("Remote database updated to incompatible version. update your Self-hosted LiveSync plugin.", LOG_LEVEL_NOTICE); - } - } else sendValue(`leaf-${r._id}`, r); - }), { - batchSize: 1, - suspended: true, - concurrentLimit: 100, - delay: 0, - totalRemainingReactiveSource: this.replicationResultCount - }).startPipeline().onUpdateProgress((() => { - this.saveQueuedFiles(); - })); - this.lastMessage = ""; - this.conflictProcessQueueCount = reactiveSource(0); - this.conflictResolveQueue = new KeyedQueueProcessor((async s => { - const r = s[0].filename, o = await this.checkConflictAndPerformAutoMerge(r); - if (o !== MISSING_OR_ERROR && o !== NOT_CONFLICTED && o !== CANCELLED) if (o !== AUTO_MERGED) { - if (this.settings.showMergeDialogOnlyOnActive) { - const s = this.getActiveFile(); - if (s && s.path != r) { - Logger(`${r} is conflicted. Merging process has been postponed to the file have got opened.`, LOG_LEVEL_NOTICE); - return; - } - } - Logger("conflict:Manual merge required!"); - await this.resolveConflictByUI(r, o); - } else { - if (this.settings.syncAfterMerge && !this.suspended) await shareRunningResult("replication", (() => this.replicate())); - Logger("conflict:Automatically merged, but we have to check it again"); - this.conflictCheckQueue.enqueue(r); - } - }), { - suspended: false, - batchSize: 1, - concurrentLimit: 1, - delay: 10, - keepResultUntilDownstreamConnected: false - }).replaceEnqueueProcessor(((s, r) => { - sendValue("cancel-resolve-conflict:" + r.entity.filename, true); - return [ ...[ ...s ].filter((s => s.key != r.key)), r ]; - })); - this.conflictCheckQueue = new QueueProcessor((s => { - const r = s[0]; - if (!(this.vaultAccess.getAbstractFileByPath(r) instanceof import_obsidian.TFolder)) return [ { - key: r, - entity: { - filename: r - } - } ]; - }), { - suspended: false, - batchSize: 1, - concurrentLimit: 5, - delay: 10, - keepResultUntilDownstreamConnected: true, - pipeTo: this.conflictResolveQueue, - totalRemainingReactiveSource: this.conflictProcessQueueCount - }); - this.ignoreFileCache = new LRUCache(300, 25e4, true); - this.ignoreFiles = []; - } - get suspended() { - var s; - return this._suspended || !(null == (s = this.settings) ? void 0 : s.isConfigured); - } - set suspended(s) { - this._suspended = s; - } - getLastPostFailedBySize() { - return !this.last_successful_post; - } - getDatabase() { - return this.localDatabase.localDatabase; - } - getSettings() { - return this.settings; - } - getIsMobile() { - return this.isMobile; - } - async connectRemoteCouchDB(s, r, o, u, g, _, m) { - if (!isValidRemoteCouchDBURI(s)) return "Remote URI is not valid"; - if (s.toLowerCase() != s) return "Remote URI and database name could not contain capital letters."; - if (-1 !== s.indexOf(" ")) return "Remote URI and database name could not contain spaces."; - let b = ""; - if (r.username && r.password) { - const s = String.fromCharCode.apply(null, [ ...writeString(`${r.username}:${r.password}`) ]), o = window.btoa(s); - b = "Basic " + o; - } else b = ""; - const E = new index_es_default(s, { - adapter: "http", - auth: r, - skip_setup: !_, - fetch: async (r, u) => { - var g, _; - let m = ""; - const E = r.toString().substring(s.length), w = null != (g = null == u ? void 0 : u.method) ? g : "GET"; - if (null == u ? void 0 : u.body) { - const r = u.body.toString().length; - if (r > 1e7) if (isCloudantURI(s)) { - this.last_successful_post = false; - Logger("This request should fail on IBM Cloudant.", LOG_LEVEL_VERBOSE); - throw new Error("This request should fail on IBM Cloudant."); - } - m = ` (${r})`; - } - if (!o && "string" == typeof r && "string" == typeof (null != (_ = null == u ? void 0 : u.body) ? _ : "")) { - const s = null == u ? void 0 : u.body, o = { - ...null == u ? void 0 : u.headers - }; - if ("" != b) o["authorization"] = b; - delete o["host"]; - delete o["Host"]; - delete o["content-length"]; - delete o["Content-Length"]; - const g = { - url: r, - method: null == u ? void 0 : u.method, - body: s, - headers: o, - contentType: "application/json" - }; - try { - this.requestCount.value = this.requestCount.value + 1; - const s = await fetchByAPI(g); - if ("POST" == w || "PUT" == w) this.last_successful_post = s.status - s.status % 100 == 200; else this.last_successful_post = true; - Logger(`HTTP:${w}${m} to:${E} -> ${s.status}`, LOG_LEVEL_DEBUG); - return new Response(s.arrayBuffer, { - headers: s.headers, - status: s.status, - statusText: `${s.status}` - }); - } catch (s) { - Logger(`HTTP:${w}${m} to:${E} -> failed`, LOG_LEVEL_VERBOSE); - if (-1 !== r.toString().indexOf("_bulk_docs")) this.last_successful_post = false; - Logger(s); - throw s; - } finally { - this.responseCount.value = this.responseCount.value + 1; - } - } - try { - this.requestCount.value = this.requestCount.value + 1; - const s = await fetch(r, u); - if ("POST" == w || "PUT" == w) this.last_successful_post = s.ok; else this.last_successful_post = true; - Logger(`HTTP:${w}${m} to:${E} -> ${s.status}`, LOG_LEVEL_DEBUG); - if (2 !== Math.floor(s.status / 100)) { - const r = s.clone(); - Logger(`The request may have failed. The reason sent by the server: ${r.status}: ${r.statusText}`); - try { - Logger(await (await r.blob()).text(), LOG_LEVEL_VERBOSE); - } catch (s) { - Logger("Cloud not parse response", LOG_LEVEL_VERBOSE); - } - } - return s; - } catch (s) { - Logger(`HTTP:${w}${m} to:${E} -> failed`, LOG_LEVEL_VERBOSE); - if (-1 !== r.toString().indexOf("_bulk_docs")) this.last_successful_post = false; - Logger(s); - throw s; - } finally { - this.responseCount.value = this.responseCount.value + 1; - } - } - }); - if ("false" !== u && "string" == typeof u) enableEncryption(E, u, g, false); - if (m) return { - db: E, - info: { - db_name: "", - doc_count: 0, - update_seq: "" - } - }; - try { - const s = await E.info(); - return { - db: E, - info: s - }; - } catch (s) { - let r = `${null == s ? void 0 : s.name}:${null == s ? void 0 : s.message}`; - if ("TypeError" == (null == s ? void 0 : s.name) && "Failed to fetch" == (null == s ? void 0 : s.message)) r += "\n**Note** This error caused by many reasons. The only sure thing is you didn't touch the server.\nTo check details, open inspector."; - Logger(s, LOG_LEVEL_VERBOSE); - return r; - } - } - get isMobile() { - return this.app.isMobile; - } - get vaultName() { - return this.app.vault.getName(); - } - getActiveFile() { - return this.app.workspace.getActiveFile(); - } - get appId() { - return `${"appId" in this.app ? this.app.appId : ""}`; - } - id2path(s, r, o) { - const u = id2path(s, r); - if (o && isInternalMetadata(u)) return stripInternalMetadataPrefix(u); else return u; - } - getPath(s) { - return getPath2(s); - } - getPathWithoutPrefix(s) { - return getPathWithoutPrefix(s); - } - async path2id(s, r) { - const o = addPrefix(s, null != r ? r : ""); - return await path2id(o, this.settings.usePathObfuscation ? this.settings.passphrase : ""); - } - createPouchDBInstance(s, r) { - const o = null != r ? r : {}; - if (this.settings.useIndexedDBAdapter) { - o.adapter = "indexeddb"; - o.purged_infos_limit = 1; - return new index_es_default(s + "-indexeddb", o); - } - return new index_es_default(s, o); - } - beforeOnUnload(s) { - this.kvDB.close(); - } - onClose(s) { - this.kvDB.close(); - } - async onInitializeDatabase(s) { - this.kvDB = await OpenKeyValueDatabase(s.dbname + "-livesync-kv"); - this.replicator = new LiveSyncDBReplicator(this); - } - async onResetDatabase(s) { - const r = "obsidian-livesync-queuefiles-" + this.getVaultName(); - localStorage.removeItem(r); - await this.kvDB.destroy(); - this.kvDB = await OpenKeyValueDatabase(s.dbname + "-livesync-kv"); - this.replicator = new LiveSyncDBReplicator(this); - } - getReplicator() { - return this.replicator; - } - getVaultName() { - var s; - return this.vaultName + ((null == (s = this.settings) ? void 0 : s.additionalSuffixOfDatabaseName) ? "-" + this.settings.additionalSuffixOfDatabaseName : ""); - } - isFlagFileExist(s) { - const r = this.vaultAccess.getAbstractFileByPath(normalizePath(s)); - if (null != r && r instanceof import_obsidian.TFile) return true; else return false; - } - async deleteFlagFile(s) { - try { - const r = this.vaultAccess.getAbstractFileByPath(normalizePath(s)); - if (null != r && r instanceof import_obsidian.TFile) await this.vaultAccess.delete(r, true); - } catch (r) { - Logger(`Could not delete ${s}`); - Logger(r, LOG_LEVEL_VERBOSE); - } - } - async deleteRedFlag2() { - await this.deleteFlagFile(FLAGMD_REDFLAG2); - await this.deleteFlagFile(FLAGMD_REDFLAG2_HR); - } - async deleteRedFlag3() { - await this.deleteFlagFile(FLAGMD_REDFLAG3); - await this.deleteFlagFile(FLAGMD_REDFLAG3_HR); - } - showHistory(s, r) { - new DocumentHistoryModal(this.app, this, s, r).open(); - } - async fileHistory() { - const s = []; - for await (const r of this.localDatabase.findAllDocs()) s.push({ - id: r._id, - path: this.getPath(r), - dispPath: this.getPathWithoutPrefix(r), - mtime: r.mtime - }); - s.sort(((s, r) => r.mtime - s.mtime)); - const r = s.map((s => s.dispPath)), o = await this.askSelectString("File to view History", r); - if (o) { - const r = s.find((s => s.dispPath == o)); - this.showHistory(r.path, r.id); - } - } - async pickFileForResolve() { - const s = []; - for await (const r of this.localDatabase.findAllDocs({ - conflicts: true - })) if ("_conflicts" in r) s.push({ - id: r._id, - path: this.getPath(r), - dispPath: this.getPathWithoutPrefix(r), - mtime: r.mtime - }); - s.sort(((s, r) => r.mtime - s.mtime)); - const r = s.map((s => s.dispPath)); - if (0 == r.length) { - Logger("There are no conflicted documents", LOG_LEVEL_NOTICE); - return false; - } - const o = await this.askSelectString("File to resolve conflict", r); - if (o) { - const r = s.find((s => s.dispPath == o)); - this.resolveConflicted(r.path); - await this.conflictCheckQueue.waitForPipeline(); - return true; - } - return false; - } - async resolveConflicted(s) { - if (isInternalMetadata(s)) this.addOnHiddenFileSync.queueConflictCheck(s); else if (isPluginMetadata(s)) await this.resolveConflictByNewerEntry(s); else if (isCustomisationSyncMetadata(s)) await this.resolveConflictByNewerEntry(s); else this.queueConflictCheck(s); - } - async collectDeletedFiles() { - const s = this.settings.automaticallyDeleteMetadataOfDeletedFiles; - if (s <= 0) return; - Logger("Checking expired file history"); - const r = Date.now() - 864e5 * s, o = []; - for await (const s of this.localDatabase.findAllDocs({ - conflicts: true - })) if (isAnyNote(s)) if (s.deleted && s.mtime - r < 0) o.push({ - path: this.getPath(s), - mtime: s.mtime, - ttl: (s.mtime - r) / 1e3 / 86400, - doc: s - }); - if (0 != o.length) { - for (const s of o) { - Logger(`Deletion history expired: ${s.path}`); - const r = s.doc; - r._deleted = true; - await this.localDatabase.putRaw(r); - } - Logger("Checking expired file history done"); - } else { - Logger("There are no old documents"); - Logger("Checking expired file history done"); - } - } - async onLayoutReady() { - this.registerFileWatchEvents(); - if (this.localDatabase.isReady) if (this.settings.isConfigured) try { - if (this.isRedFlagRaised() || this.isRedFlag2Raised() || this.isRedFlag3Raised()) { - this.settings.batchSave = false; - this.addOnSetup.suspendAllSync(); - this.addOnSetup.suspendExtraSync(); - this.settings.suspendFileWatching = true; - await this.saveSettings(); - if (this.isRedFlag2Raised()) { - Logger(`${FLAGMD_REDFLAG2} or ${FLAGMD_REDFLAG2_HR} has been detected! Self-hosted LiveSync suspends all sync and rebuild everything.`, LOG_LEVEL_NOTICE); - await this.addOnSetup.rebuildEverything(); - await this.deleteRedFlag2(); - if ("yes" == await this.askYesNo("Do you want to disable Suspend file watching and restart obsidian now?")) { - this.settings.suspendFileWatching = false; - await this.saveSettings(); - this.performAppReload(); - } - } else if (this.isRedFlag3Raised()) { - Logger(`${FLAGMD_REDFLAG3} or ${FLAGMD_REDFLAG3_HR} has been detected! Self-hosted LiveSync will discard the local database and fetch everything from the remote once again.`, LOG_LEVEL_NOTICE); - await this.addOnSetup.fetchLocal(); - await this.deleteRedFlag3(); - if (this.settings.suspendFileWatching) if ("yes" == await this.askYesNo("Do you want to disable Suspend file watching and restart obsidian now?")) { - this.settings.suspendFileWatching = false; - await this.saveSettings(); - this.performAppReload(); - } - } else { - this.settings.writeLogToTheFile = true; - await this.openDatabase(); - Logger("The red flag is raised! The whole initialize steps are skipped, and any file changes are not captured.", LOG_LEVEL_NOTICE); - } - } else { - if (this.settings.suspendFileWatching) Logger("'Suspend file watching' turned on. Are you sure this is what you intended? Every modification on the vault will be ignored.", LOG_LEVEL_NOTICE); - if (this.settings.suspendParseReplicationResult) Logger("'Suspend database reflecting' turned on. Are you sure this is what you intended? Every replicated change will be postponed until disabling this option.", LOG_LEVEL_NOTICE); - if (!await this.initializeDatabase(false, false)) return false; - } - this.registerWatchEvents(); - await this.realizeSettingSyncMode(); - this.swapSaveCommand(); - if (this.settings.syncOnStart) this.replicator.openReplication(this.settings, false, false); - this.scanStat(); - } catch (s) { - Logger("Error while loading Self-hosted LiveSync", LOG_LEVEL_NOTICE); - Logger(s, LOG_LEVEL_VERBOSE); - } else { - const s = "Hello and welcome to Self-hosted LiveSync.\n\nYour device seems to **not be configured yet**. Please finish the setup and synchronise your vaults!\n\nClick anywhere to stop counting down.\n\n## At the first device\n- With Setup URI -> Use `Use the copied setup URI`. \n If you have configured it automatically, you should have one.\n- Without Setup URI -> Use `Setup wizard` in setting dialogue. **`Minimal setup` is recommended**.\n- What is the Setup URI? -> Do not worry! We have [some docs](https://github.com/vrtmrz/obsidian-livesync/blob/main/README.md#how-to-use) now. Please refer to them once.\n\n## At the subsequent device\n- With Setup URI -> Use `Use the copied setup URI`. \n If you do not have it yet, you can copy it on the first device.\n- Without Setup URI -> Use `Setup wizard` in setting dialogue, but **strongly recommends using setup URI**.\n", r = "Open setting dialog", o = "Use the copied setup URI", u = "Dismiss", g = await confirmWithMessage(this, "Welcome to Self-hosted LiveSync", s, [ o, r, u ], u, 40); - if (g === r) try { - this.openSetting(); - } catch (s) { - Logger("Something went wrong on opening setting dialog, please open it manually", LOG_LEVEL_NOTICE); - } else if (g == o) fireAndForget(this.addOnSetup.command_openSetupURI()); - } else Logger("Something went wrong! The local database is not ready", LOG_LEVEL_NOTICE); - } - async scanStat() { - const s = []; - Logger("Additional safety scan..", LOG_LEVEL_VERBOSE); - for await (const r of this.localDatabase.findAllDocs({ - conflicts: true - })) if ("_conflicts" in r) s.push({ - path: this.getPath(r), - mtime: r.mtime - }); - if (s.length > 0) { - this.askInPopup("conflicting-detected-on-safety", 'Some files have been left conflicted! Press {HERE} to resolve them, or you can do it later by "Pick a file to resolve conflict', (s => { - s.text = "HERE"; - s.addEventListener("click", (() => { - this.performCommand("obsidian-livesync:livesync-all-conflictcheck"); - })); - })); - Logger('Some files have been left conflicted! Please resolve them by "Pick a file to resolve conflict". The list is written in the log.', LOG_LEVEL_VERBOSE); - for (const r of s) Logger(`Conflicted: ${r.path}`); - } else Logger("There are no conflicted files", LOG_LEVEL_VERBOSE); - Logger("Additional safety scan done", LOG_LEVEL_VERBOSE); - } - async askEnableV2() { - const s = "Keep v1"; - return await confirmWithMessage(this, "binary and encryption", "Since v0.20.0, Self-hosted LiveSync uses a new format for binary files and encrypted things. In the new format, files are split at meaningful delimitations, increasing the effectiveness of deduplication.\nHowever, the new format lacks compatibility with LiveSync before v0.20.0 and related projects. Basically enabling V2 is recommended. but If you are using some related products, stay in a while, please!\nNote: We can always able to read V1 format. It will be progressively converted. And, we can change this toggle later.", [ "Enable v2", s ], s, 40) == s; - } - addUIs() { - (0, import_obsidian.addIcon)("replicate", '\n \n \n \n \n '); - (0, import_obsidian.addIcon)("view-log", '\n \n \n '); - (0, import_obsidian.addIcon)("custom-sync", '\n \n '); - this.addRibbonIcon("replicate", "Replicate", (async () => { - await this.replicate(true); - })).addClass("livesync-ribbon-replicate"); - this.addRibbonIcon("view-log", "Show log", (() => { - this.showView(VIEW_TYPE_LOG); - })).addClass("livesync-ribbon-showlog"); - this.addRibbonIcon("custom-sync", "Show Customization sync", (() => { - this.addOnConfigSync.showPluginSyncModal(); - })).addClass("livesync-ribbon-showcustom"); - this.addCommand({ - id: "view-log", - name: "Show log", - callback: () => { - this.showView(VIEW_TYPE_LOG); - } - }); - this.addCommand({ - id: "livesync-replicate", - name: "Replicate now", - callback: async () => { - await this.replicate(); - } - }); - this.addCommand({ - id: "livesync-dump", - name: "Dump information of this doc ", - callback: () => { - const s = this.getActiveFile(); - if (s) this.localDatabase.getDBEntry(getPathFromTFile(s), {}, true, false); - } - }); - this.addCommand({ - id: "livesync-checkdoc-conflicted", - name: "Resolve if conflicted.", - editorCallback: (s, r) => { - const o = r.file; - if (o) this.queueConflictCheck(o); - } - }); - this.addCommand({ - id: "livesync-toggle", - name: "Toggle LiveSync", - callback: async () => { - if (this.settings.liveSync) { - this.settings.liveSync = false; - Logger("LiveSync Disabled.", LOG_LEVEL_NOTICE); - } else { - this.settings.liveSync = true; - Logger("LiveSync Enabled.", LOG_LEVEL_NOTICE); - } - await this.realizeSettingSyncMode(); - this.saveSettings(); - } - }); - this.addCommand({ - id: "livesync-suspendall", - name: "Toggle All Sync.", - callback: async () => { - if (this.suspended) { - this.suspended = false; - Logger("Self-hosted LiveSync resumed", LOG_LEVEL_NOTICE); - } else { - this.suspended = true; - Logger("Self-hosted LiveSync suspended", LOG_LEVEL_NOTICE); - } - await this.realizeSettingSyncMode(); - this.saveSettings(); - } - }); - this.addCommand({ - id: "livesync-history", - name: "Show history", - callback: () => { - const s = this.getActiveFile(); - if (s) this.showHistory(s, void 0); - } - }); - this.addCommand({ - id: "livesync-scan-files", - name: "Scan storage and database again", - callback: async () => { - await this.syncAllFiles(true); - } - }); - this.addCommand({ - id: "livesync-filehistory", - name: "Pick a file to show history", - callback: () => { - this.fileHistory(); - } - }); - this.addCommand({ - id: "livesync-conflictcheck", - name: "Pick a file to resolve conflict", - callback: () => { - this.pickFileForResolve(); - } - }); - this.addCommand({ - id: "livesync-all-conflictcheck", - name: "Resolve all conflicted files", - callback: async () => { - for (;await this.pickFileForResolve(); ) ; - } - }); - this.addCommand({ - id: "livesync-runbatch", - name: "Run pended batch processes", - callback: async () => { - await this.applyBatchChange(); - } - }); - this.addCommand({ - id: "livesync-abortsync", - name: "Abort synchronization immediately", - callback: () => { - this.replicator.terminateSync(); - } - }); - this.addCommand({ - id: "livesync-global-history", - name: "Show vault history", - callback: () => { - this.showGlobalHistory(); - } - }); - this.addCommand({ - id: "livesync-export-config", - name: "Write setting markdown manually", - checkCallback: s => { - if (s) return "" != this.settings.settingSyncFile; - this.saveSettingData(); - } - }); - this.addCommand({ - id: "livesync-import-config", - name: "Parse setting file", - editorCheckCallback: (s, r, o) => { - if (s) { - const s = r.getValue(); - return "" != this.extractSettingFromWholeText(s).body; - } - if (o.file) this.checkAndApplySettingFromMarkdown(o.file.path, false); - } - }); - this.registerView(VIEW_TYPE_GLOBAL_HISTORY, (s => new GlobalHistoryView(s, this))); - this.registerView(VIEW_TYPE_LOG, (s => new LogPaneView(s, this))); - } - async onload() { - logStore.pipeTo(new QueueProcessor((s => s.forEach((s => this.addLog(s.message, s.level, s.key)))), { - suspended: false, - batchSize: 20, - concurrentLimit: 1, - delay: 0 - })).startPipeline(); - Logger("loading plugin"); - this.addSettingTab(new ObsidianLiveSyncSettingTab(this.app, this)); - this.addUIs(); - const s = "0.22.16", r = "0.22.16"; - this.manifestVersion = s; - this.packageVersion = r; - Logger(`Self-hosted LiveSync v${s} ${r} `); - await this.loadSettings(); - const o = "obsidian-live-sync-ver" + this.getVaultName(), u = localStorage.getItem(o); - this.observeForLogs(); - if (this.settings.showStatusOnStatusbar) { - this.statusBar = this.addStatusBarItem(); - this.statusBar.addClass("syncstatusbar"); - } - if (~~(versionNumberString2Number(s) / 1e3) > this.settings.lastReadUpdates && this.settings.isConfigured) Logger("Self-hosted LiveSync has undergone a major upgrade. Please open the setting dialog, and check the information pane.", LOG_LEVEL_NOTICE); - if (this.isMobile) this.settings.disableRequestURI = true; - if (u && Number(u) < VER) { - this.settings.liveSync = false; - this.settings.syncOnSave = false; - this.settings.syncOnEditorSave = false; - this.settings.syncOnStart = false; - this.settings.syncOnFileOpen = false; - this.settings.syncAfterMerge = false; - this.settings.periodicReplication = false; - this.settings.versionUpFlash = "Self-hosted LiveSync has been upgraded and some behaviors have changed incompatibly. All automatic synchronization is now disabled temporary. Ensure that other devices are also upgraded, and enable synchronization again."; - this.saveSettings(); - } - localStorage.setItem(o, `${VER}`); - await this.openDatabase(); - this.watchWorkspaceOpen = this.watchWorkspaceOpen.bind(this); - this.watchWindowVisibility = this.watchWindowVisibility.bind(this); - this.watchOnline = this.watchOnline.bind(this); - this.realizeSettingSyncMode = this.realizeSettingSyncMode.bind(this); - this.parseReplicationResult = this.parseReplicationResult.bind(this); - this.loadQueuedFiles = this.loadQueuedFiles.bind(this); - await Promise.all(this.addOns.map((s => s.onload()))); - this.app.workspace.onLayoutReady(this.onLayoutReady.bind(this)); - } - async showView(s) { - const r = this.app.workspace.getLeavesOfType(s); - if (0 == r.length) await this.app.workspace.getLeaf(true).setViewState({ - type: s, - active: true - }); else r[0].setViewState({ - type: s, - active: true - }); - if (r.length > 0) this.app.workspace.revealLeaf(r[0]); - } - showGlobalHistory() { - this.showView(VIEW_TYPE_GLOBAL_HISTORY); - } - onunload() { - var s; - cancelAllPeriodicTask(); - cancelAllTasks(); - this._unloaded = true; - for (const s of this.addOns) s.onunload(); - if (null != this.localDatabase) this.localDatabase.onunload(); - null == (s = this.periodicSyncProcessor) || s.disable(); - if (null != this.localDatabase) { - this.replicator.closeReplication(); - this.localDatabase.close(); - } - Logger("unloading plugin"); - } - async openDatabase() { - if (null != this.localDatabase) await this.localDatabase.close(); - const s = this.getVaultName(); - Logger("Waiting for ready..."); - this.localDatabase = new LiveSyncLocalDB(s, this); - initializeStores(s); - return await this.localDatabase.initializeDatabase(); - } - getPassphrase(s) { - const r = { - "": () => Promise.resolve("*"), - LOCALSTORAGE: () => { - var s; - return Promise.resolve(null != (s = localStorage.getItem("ls-setting-passphrase")) ? s : false); - }, - ASK_AT_LAUNCH: () => askString(this.app, "Passphrase", "passphrase", "") - }, o = s.configPassphraseStore; - return (o in r ? r[o] : r[""])(); - } - async decryptConfigurationItem(s, r) { - const o = await tryDecrypt(s, r + SALT_OF_PASSPHRASE, false); - if (o) { - this.usedPassphrase = r; - return o; - } - return false; - } - tryDecodeJson(s) { - try { - if (!s) return false; else return JSON.parse(s); - } catch (s) { - return false; - } - } - async encryptConfigurationItem(s, r) { - if ("" != this.usedPassphrase) return await encrypt(s, this.usedPassphrase + SALT_OF_PASSPHRASE, false); - const o = await this.getPassphrase(r); - if (false === o) { - Logger("Could not determine passphrase to save data.json! You probably make the configuration sure again!", LOG_LEVEL_URGENT); - return ""; - } - const u = await encrypt(s, o + SALT_OF_PASSPHRASE, false); - if (u) { - this.usedPassphrase = o; - return u; - } - return ""; - } - async loadSettings() { - const s = Object.assign({}, DEFAULT_SETTINGS, await this.loadData()); - if ("undefined" == typeof s.isConfigured) if (JSON.stringify(s) !== JSON.stringify(DEFAULT_SETTINGS)) s.isConfigured = true; else { - s.additionalSuffixOfDatabaseName = this.appId; - s.isConfigured = false; - } - const r = await this.getPassphrase(s); - if (false === r) Logger("Could not determine passphrase for reading data.json! DO NOT synchronize with the remote before making sure your configuration is!", LOG_LEVEL_URGENT); else { - if (s.encryptedCouchDBConnection) { - const o = [ "couchDB_URI", "couchDB_USER", "couchDB_PASSWORD", "couchDB_DBNAME" ], u = this.tryDecodeJson(await this.decryptConfigurationItem(s.encryptedCouchDBConnection, r)); - if (u) { - for (const r of o) if (r in u) s[r] = u[r]; - } else { - Logger("Could not decrypt passphrase for reading data.json! DO NOT synchronize with the remote before making sure your configuration is!", LOG_LEVEL_URGENT); - for (const r of o) s[r] = ""; - } - } - if (s.encrypt && s.encryptedPassphrase) { - const o = s.encryptedPassphrase, u = await this.decryptConfigurationItem(o, r); - if (u) s.passphrase = u; else { - Logger("Could not decrypt passphrase for reading data.json! DO NOT synchronize with the remote before making sure your configuration is!", LOG_LEVEL_URGENT); - s.passphrase = ""; - } - } - } - this.settings = s; - if ("workingEncrypt" in this.settings) delete this.settings.workingEncrypt; - if ("workingPassphrase" in this.settings) delete this.settings.workingPassphrase; - this.settings.disableRequestURI = true; - this.settings.gcDelay = 0; - this.settings.useHistory = true; - const o = "obsidian-live-sync-vaultanddevicename-" + this.getVaultName(); - if ("" != this.settings.deviceAndVaultName) if (!localStorage.getItem(o)) { - this.deviceAndVaultName = this.settings.deviceAndVaultName; - localStorage.setItem(o, this.deviceAndVaultName); - this.settings.deviceAndVaultName = ""; - } - if (isCloudantURI(this.settings.couchDB_URI) && 0 != this.settings.customChunkSize) { - Logger("Configuration verification founds problems with your configuration. This has been fixed automatically. But you may already have data that cannot be synchronised. If this is the case, please rebuild everything.", LOG_LEVEL_NOTICE); - this.settings.customChunkSize = 0; - } - this.deviceAndVaultName = localStorage.getItem(o) || ""; - this.ignoreFiles = this.settings.ignoreFiles.split(",").map((s => s.trim())); - this.fileEventQueue.delay = this.settings.batchSave ? 5e3 : 100; - } - async saveSettingData() { - const s = "obsidian-live-sync-vaultanddevicename-" + this.getVaultName(); - localStorage.setItem(s, this.deviceAndVaultName || ""); - const r = { - ...this.settings - }; - if ("" == this.usedPassphrase && !await this.getPassphrase(r)) Logger("Could not determine passphrase for saving data.json! Our data.json have insecure items!", LOG_LEVEL_NOTICE); else { - if ("" != r.couchDB_PASSWORD || "" != r.couchDB_URI || "" != r.couchDB_USER || r.couchDB_DBNAME) { - const s = { - couchDB_DBNAME: r.couchDB_DBNAME, - couchDB_PASSWORD: r.couchDB_PASSWORD, - couchDB_URI: r.couchDB_URI, - couchDB_USER: r.couchDB_USER - }; - r.encryptedCouchDBConnection = await this.encryptConfigurationItem(JSON.stringify(s), r); - r.couchDB_PASSWORD = ""; - r.couchDB_DBNAME = ""; - r.couchDB_URI = ""; - r.couchDB_USER = ""; - } - if (r.encrypt && "" != r.passphrase) { - r.encryptedPassphrase = await this.encryptConfigurationItem(r.passphrase, r); - r.passphrase = ""; - } - } - await this.saveData(r); - this.localDatabase.settings = this.settings; - this.fileEventQueue.delay = this.settings.batchSave ? 5e3 : 100; - this.ignoreFiles = this.settings.ignoreFiles.split(",").map((s => s.trim())); - if ("" != this.settings.settingSyncFile) fireAndForget((() => this.saveSettingToMarkdown(this.settings.settingSyncFile))); - } - extractSettingFromWholeText(s) { - if (-1 === s.indexOf(SETTING_HEADER)) return { - preamble: s, - body: "", - postscript: "" - }; - const r = s.indexOf(SETTING_HEADER), o = -1 == r ? s.length : r, u = -1 == r ? s.length : s.indexOf(SETTING_FOOTER, o), g = -1 == u ? s.length : u, _ = s.substring(o + SETTING_HEADER.length, g); - return { - preamble: s.substring(0, o), - body: _, - postscript: s.substring(g + SETTING_FOOTER.length + 1) - }; - } - async parseSettingFromMarkdown(s, r) { - const o = this.vaultAccess.getAbstractFileByPath(s); - if (!(o instanceof import_obsidian.TFile)) return { - preamble: "", - body: "", - postscript: "" - }; - if (r) return this.extractSettingFromWholeText(r); - const u = null != r ? r : await this.vaultAccess.vaultRead(o); - return this.extractSettingFromWholeText(u); - } - async checkAndApplySettingFromMarkdown(s, r) { - if (r && !this.settings.notifyAllSettingSyncFile) if (!this.settings.settingSyncFile || this.settings.settingSyncFile != s) { - Logger(`Setting file (${s}) is not matched to the current configuration. skipped.`, LOG_LEVEL_DEBUG); - return; - } - const {body: o} = await this.parseSettingFromMarkdown(s); - let u = {}; - try { - u = (0, import_obsidian.parseYaml)(o); - } catch (s) { - Logger("Could not parse YAML", LOG_LEVEL_NOTICE); - Logger(s, LOG_LEVEL_VERBOSE); - return; - } - if ("settingSyncFile" in u && u.settingSyncFile != s) { - Logger("This setting file seems to backed up one. Please fix the filename or settingSyncFile value.", r ? LOG_LEVEL_INFO : LOG_LEVEL_NOTICE); - return; - } - let g = { - ...DEFAULT_SETTINGS - }; - g = { - ...g, - ...u - }; - if (!(null == g ? void 0 : g.writeCredentialsForSettingSync)) { - g.couchDB_USER = this.settings.couchDB_USER; - g.couchDB_PASSWORD = this.settings.couchDB_PASSWORD; - g.passphrase = this.settings.passphrase; - } - if (!isObjectDifferent(this.generateSettingForMarkdown(this.settings, g.writeCredentialsForSettingSync), this.generateSettingForMarkdown(g))) { - Logger("Setting markdown has been detected, but not changed.", r ? LOG_LEVEL_INFO : LOG_LEVEL_NOTICE); - return; - } - const _ = this.settings.settingSyncFile != s ? " (This is not-active file)" : ""; - this.askInPopup("apply-setting-from-md", `Setting markdown ${s}${_} has been detected. Apply this from {HERE}.`, (s => { - s.text = "HERE"; - s.addEventListener("click", (async () => { - const s = "Apply settings", r = "Apply settings and restart obsidian", o = "Apply settings and restart obsidian with red_flag_rebuild.md", u = "Apply settings and restart obsidian with red_flag_fetch.md", _ = await this.askSelectString("Ready for apply the setting.", [ r, s, u, o, "Cancel" ]); - if (_ == s || _ == r || _ == o || _ == u) { - this.settings = g; - await this.saveSettingData(); - if (_ == s) { - Logger("Loaded settings have been applied!", LOG_LEVEL_NOTICE); - return; - } - if (_ == o) await this.vaultAccess.vaultCreate(FLAGMD_REDFLAG2_HR, ""); - if (_ == u) await this.vaultAccess.vaultCreate(FLAGMD_REDFLAG3_HR, ""); - this.performAppReload(); - } - })); - })); - } - generateSettingForMarkdown(s, r) { - const o = { - ...s ? s : this.settings - }; - delete o.encryptedCouchDBConnection; - delete o.encryptedPassphrase; - if (!o.writeCredentialsForSettingSync && !r) { - delete o.couchDB_USER; - delete o.couchDB_PASSWORD; - delete o.passphrase; - } - return o; - } - async saveSettingToMarkdown(s) { - const r = this.generateSettingForMarkdown(); - let o = this.vaultAccess.getAbstractFileByPath(s); - if (!o) { - await this.vaultAccess.ensureDirectory(s); - const r = 'This file contains Self-hosted LiveSync settings as YAML.\nExcept for the `livesync-setting` code block, we can add a note for free.\n\nIf the name of this file matches the value of the "settingSyncFile" setting inside the `livesync-setting` block, LiveSync will tell us whenever the settings change. We can decide to accept or decline the remote setting. (In other words, we can back up this file by renaming it to another name).\n\nWe can perform a command in this file.\n- `Parse setting file` : load the setting from the file.\n\n**Note** Please handle it with all of your care if you have configured to write credentials in.\n\n\n'; - o = await this.vaultAccess.vaultCreate(s, r + SETTING_HEADER + "\n" + SETTING_FOOTER); - } - if (!(o instanceof import_obsidian.TFile)) { - Logger(`Markdown Setting: ${s} already exists as a folder`, LOG_LEVEL_NOTICE); - return; - } - const u = await this.vaultAccess.vaultRead(o), {preamble: g, body: _, postscript: m} = this.extractSettingFromWholeText(u), b = (0, - import_obsidian.stringifyYaml)(r); - if (b == _) Logger("Markdown setting: Nothing had been changed", LOG_LEVEL_VERBOSE); else { - await this.vaultAccess.vaultModify(o, g + SETTING_HEADER + b + SETTING_FOOTER + m); - Logger(`Markdown setting: ${s} has been updated!`, LOG_LEVEL_VERBOSE); - } - } - async saveSettings() { - await this.saveSettingData(); - fireAndForget((() => this.realizeSettingSyncMode())); - } - registerFileWatchEvents() { - this.vaultManager.beginWatch(); - } - swapSaveCommand() { - var s, r; - Logger("Modifying callback of the save command", LOG_LEVEL_VERBOSE); - const o = null == (r = null == (s = this.app.commands) ? void 0 : s.commands) ? void 0 : r["editor:save-file"], u = null == o ? void 0 : o.callback; - if ("function" == typeof u) { - this._initialCallback = u; - o.callback = () => { - scheduleTask("syncOnEditorSave", 250, (() => { - if (this._unloaded) { - Logger("Unload and remove the handler.", LOG_LEVEL_VERBOSE); - o.callback = this._initialCallback; - } else { - Logger("Sync on Editor Save.", LOG_LEVEL_VERBOSE); - if (this.settings.syncOnEditorSave) this.replicate(); - } - })); - u(); - }; - } - const g = this; - window.CodeMirrorAdapter.commands.save = () => { - g.performCommand("editor:save-file"); - }; - } - registerWatchEvents() { - this.registerEvent(this.app.workspace.on("file-open", this.watchWorkspaceOpen)); - this.registerDomEvent(document, "visibilitychange", this.watchWindowVisibility); - this.registerDomEvent(window, "online", this.watchOnline); - this.registerDomEvent(window, "offline", this.watchOnline); - } - watchOnline() { - scheduleTask("watch-online", 500, (() => fireAndForget((() => this.watchOnlineAsync())))); - } - async watchOnlineAsync() { - if (navigator.onLine && this.localDatabase.needScanning) { - this.localDatabase.needScanning = false; - await this.syncAllFiles(); - } - } - watchWindowVisibility() { - scheduleTask("watch-window-visibility", 500, (() => fireAndForget((() => this.watchWindowVisibilityAsync())))); - } - async watchWindowVisibilityAsync() { - var s; - if (this.settings.suspendFileWatching) return; - if (!this.settings.isConfigured) return; - if (!this.isReady) return; - const r = document.hidden; - await this.applyBatchChange(); - if (r) { - this.replicator.closeReplication(); - null == (s = this.periodicSyncProcessor) || s.disable(); - } else { - if (this.suspended) return; - await Promise.all(this.addOns.map((s => s.onResume()))); - if (this.settings.liveSync) this.replicator.openReplication(this.settings, true, false); - if (this.settings.syncOnStart) this.replicator.openReplication(this.settings, false, false); - this.periodicSyncProcessor.enable(this.settings.periodicReplication ? 1e3 * this.settings.periodicReplicationInterval : 0); - } - } - cancelRelativeEvent(s) { - this.fileEventQueue.modifyQueue((r => [ ...r.filter((r => r.entity.key != s.key)) ])); - } - queueNextFileEvent(s, r) { - if (this.settings.batchSave && !this.settings.liveSync) { - const o = r.entity.args.file; - let u = s.length; - e: for (;u >= 0; ) { - u--; - if (u < 0) break e; - if (s[u].entity.args.file.path == o.path) { - if (s[u].entity.type != r.entity.type) break e; - s.remove(s[u]); - } - } - } - s.push(r); - if ("DELETE" == r.entity.type || "RENAME" == r.entity.type) this.fileEventQueue.requestNextFlush(); - return s; - } - async handleFileEvent(s) { - const r = s.args.file, o = `file-last-proc-${s.type}-${r.path}`, u = Number(await this.kvDB.get(o) || 0); - let g = r.mtime; - if ("DELETE" == s.type) { - await this.deleteFromDBbyPath(r.path); - g = r.mtime - 1; - const s = `file-last-proc-CREATE-${r.path}`, o = `file-last-proc-CHANGED-${r.path}`; - await this.kvDB.set(s, g); - await this.kvDB.set(o, g); - } else if ("INTERNAL" == s.type) { - await this.addOnHiddenFileSync.watchVaultRawEventsAsync(r.path); - await this.addOnConfigSync.watchVaultRawEventsAsync(r.path); - } else { - const o = this.vaultAccess.getAbstractFileByPath(r.path); - if (!(o instanceof import_obsidian.TFile)) { - Logger(`Target file was not found: ${r.path}`, LOG_LEVEL_INFO); - return; - } - if (r.mtime == u) { - Logger(`File has been already scanned on ${s.type}, skip: ${r.path}`, LOG_LEVEL_VERBOSE); - return; - } - if ("CREATE" == s.type || "CHANGED" == s.type) { - fireAndForget((() => this.checkAndApplySettingFromMarkdown(s.args.file.path, true))); - const u = `file-last-proc-DELETED-${r.path}`; - await this.kvDB.set(u, g); - if (!await this.updateIntoDB(o, void 0)) { - Logger(`STORAGE -> DB: failed, cancel the relative operations: ${o.path}`, LOG_LEVEL_INFO); - this.cancelRelativeEvent(s); - return; - } - } - if ("RENAME" == s.type) await this.watchVaultRenameAsync(o, s.args.oldPath); - } - await this.kvDB.set(o, g); - } - flushFileEventQueue() { - return this.fileEventQueue.flush(); - } - watchWorkspaceOpen(s) { - if (!this.settings.suspendFileWatching) if (this.settings.isConfigured) if (this.isReady) if (s) scheduleTask("watch-workspace-open", 500, (() => fireAndForget((() => this.watchWorkspaceOpenAsync(s))))); - } - async watchWorkspaceOpenAsync(s) { - if (!this.settings.suspendFileWatching) if (this.settings.isConfigured) if (this.isReady) { - await this.applyBatchChange(); - if (null != s) { - if (this.settings.syncOnFileOpen && !this.suspended) await this.replicate(); - this.queueConflictCheck(s); - } - } - } - async applyBatchChange() { - if (this.settings.batchSave && !this.settings.liveSync) return await this.flushFileEventQueue(); - } - getFilePath(s) { - if (s instanceof import_obsidian.TFolder) if (s.isRoot()) return ""; else return this.getFilePath(s.parent) + "/" + s.name; - if (s instanceof import_obsidian.TFile) return this.getFilePath(s.parent) + "/" + s.name; else return this.getFilePath(s.parent) + "/" + s.name; - } - async watchVaultRenameAsync(s, r, o) { - Logger(`${r} renamed to ${s.path}`, LOG_LEVEL_VERBOSE); - if (s instanceof import_obsidian.TFile) try { - if (await this.updateIntoDB(s, o)) await this.deleteFromDBbyPath(r); else Logger(`Could not save new file: ${s.path} `, LOG_LEVEL_NOTICE); - } catch (s) { - Logger(s); - } - } - async addLog(s, r = LOG_LEVEL_INFO, o = "") { - var u, g, _; - if (r == LOG_LEVEL_DEBUG && !isDebug) return; - if (r < LOG_LEVEL_INFO && this.settings && this.settings.lessInformationInLog) return; - if (this.settings && !this.settings.showVerboseLog && r == LOG_LEVEL_VERBOSE) return; - const m = this.getVaultName(), b = new Date, E = b.toLocaleString(), w = "string" == typeof s ? s : s instanceof Error ? `${s.name}:${s.message}` : JSON.stringify(s, null, 2); - if (s instanceof Error) console.dir(s.stack); - const S = E + "->" + w; - console.log(m + ":" + S); - if (!(null == (u = this.settings) ? void 0 : u.showOnlyIconsOnEditor)) this.statusLog.value = w; - if (null == (g = this.settings) ? void 0 : g.writeLogToTheFile) { - const s = b.toISOString().split("T")[0], r = `${PREFIXMD_LOGFILE}${s}.md`; - if (!this.vaultAccess.getAbstractFileByPath(normalizePath(r))) this.vaultAccess.adapterAppend(normalizePath(r), "```\n"); - this.vaultAccess.adapterAppend(normalizePath(r), m + ":" + S + "\n"); - } - recentLogProcessor.enqueue(S); - if (r >= LOG_LEVEL_NOTICE) { - if (!o) o = w; - if (o in this.notifies) { - if (!(null == (_ = this.notifies[o].notice.noticeEl) ? void 0 : _.isShown())) this.notifies[o].notice = new import_obsidian.Notice(w, 0); - cancelTask(`notify-${o}`); - if (o == w) { - this.notifies[o].count++; - this.notifies[o].notice.setMessage(`(${this.notifies[o].count}):${w}`); - } else this.notifies[o].notice.setMessage(`${w}`); - } else { - const s = new import_obsidian.Notice(w, 0); - this.notifies[o] = { - count: 0, - notice: s - }; - } - scheduleTask(`notify-${o}`, 5e3, (() => { - const s = this.notifies[o].notice; - delete this.notifies[o]; - try { - s.hide(); - } catch (s) {} - })); - } - } - async processEntryDoc(s, r, o) { - const u = null == r ? "create" : "modify", g = this.getPath(s); - if (shouldBeIgnored(g)) return; - if (!await this.isTargetFile(g)) return; - const _ = await this.localDatabase.getDBEntry(g, { - conflicts: true - }), m = `STORAGE <- DB (${u}${o ? ",force" : ""},${_ ? null == _ ? void 0 : _.datatype : "--"}) `; - if (_ && _._conflicts) if (this.settings.writeDocumentsIfConflicted) { - Logger(`Processing: ${g}: Conflicted revision has been deleted, but there were more conflicts. `, LOG_LEVEL_INFO); - await this.processEntryDoc(s, r, true); - return; - } else if (true != o) { - Logger(`Processing: ${g}: Conflicted revision has been deleted, but there were more conflicts...`); - this.queueConflictCheck(g); - return; - } - if (s._deleted || s.deleted || false === _) { - if (!r) { - Logger(`delete skipped: ${g} :Already not exist on storage`, LOG_LEVEL_VERBOSE); - return; - } - if (r.path != g) { - Logger(`delete skipped: ${g} :Not exactly matched`, LOG_LEVEL_VERBOSE); - return; - } - if (false === _) await this.deleteVaultItem(r); else await this.pullFile(g, void 0, true); - return; - } - const b = compareFileFreshness(r, s), E = _; - if (!isAnyNote(E)) { - Logger(m + "ERROR, Invalid type: " + g + "(" + (null == E ? void 0 : E.type) || "type missing)", LOG_LEVEL_NOTICE); - return; - } - if (!o && (b == BASE_IS_NEW || b == EVEN)) return; - if (!isValidPath(g)) { - Logger(m + "ERROR, invalid path: " + g, LOG_LEVEL_NOTICE); - return; - } - const w = readContent(E); - await this.vaultAccess.ensureDirectory(g); - try { - let s, o = true; - if (!r) { - const r = normalizePath(g); - await this.vaultAccess.vaultCreate(r, w, { - ctime: E.ctime, - mtime: E.mtime - }); - s = this.vaultAccess.getAbstractFileByPath(r); - } else { - o = await this.vaultAccess.vaultModify(r, w, { - ctime: E.ctime, - mtime: E.mtime - }); - s = this.vaultAccess.getAbstractFileByPath(getPathFromTFile(r)); - } - if (o) { - Logger(m + g); - this.vaultAccess.touch(s); - this.vaultAccess.trigger(u, s); - } else Logger(m + "Skipped, the file is the same: " + g, LOG_LEVEL_VERBOSE); - } catch (s) { - Logger(m + "ERROR, Could not write: " + g, LOG_LEVEL_NOTICE); - Logger(s, LOG_LEVEL_VERBOSE); - } - } - async deleteVaultItem(s) { - if (s instanceof import_obsidian.TFile) if (!await this.isTargetFile(s)) return; - const r = s.parent; - if (this.settings.trashInsteadDelete) await this.vaultAccess.trash(s, false); else await this.vaultAccess.delete(s, true); - Logger(`xxx <- STORAGE (deleted) ${s.path}`); - if (r) { - Logger(`files: ${r.children.length}`); - if (0 == r.children.length) if (!this.settings.doNotDeleteFolder) { - Logger(`All files under the parent directory (${r.path}) have been deleted, so delete this one.`); - await this.deleteVaultItem(r); - } - } - } - queueConflictCheck(s) { - const r = s instanceof import_obsidian.TFile ? getPathFromTFile(s) : s; - if (this.settings.checkConflictOnlyOnOpen) { - const o = this.getActiveFile(); - if (o && o.path != r) { - Logger(`${s} is conflicted, merging process has been postponed.`, LOG_LEVEL_NOTICE); - return; - } - } - this.conflictCheckQueue.enqueue(r); - } - saveQueuedFiles() { - const s = JSON.stringify(this.replicationResultProcessor._queue.map((s => s._id))), r = "obsidian-livesync-queuefiles-" + this.getVaultName(); - localStorage.setItem(r, s); - } - async loadQueuedFiles() { - if (this.settings.suspendParseReplicationResult) return; - if (!this.settings.isConfigured) return; - const s = "obsidian-livesync-queuefiles-" + this.getVaultName(), r = arrayToChunkedArray([ ...new Set(JSON.parse(localStorage.getItem(s) || "[]")) ], 100); - for await (const s of r) { - const r = await this.localDatabase.allDocsRaw({ - keys: s, - include_docs: true, - limit: 100 - }); - this.replicationResultProcessor.enqueueAll(r.rows.map((s => s.doc))); - await this.replicationResultProcessor.waitForPipeline(); - } - } - parseReplicationResult(s) { - if (this.settings.suspendParseReplicationResult) this.replicationResultProcessor.suspend(); - this.replicationResultProcessor.enqueueAll(s); - if (!this.settings.suspendParseReplicationResult) this.replicationResultProcessor.resume(); - } - async realizeSettingSyncMode() { - var s; - this.replicator.closeReplication(); - null == (s = this.periodicSyncProcessor) || s.disable(); - this.localDatabase.refreshSettings(); - await this.applyBatchChange(); - await Promise.all(this.addOns.map((s => s.realizeSettingSyncMode()))); - if (this.suspended) return; - await Promise.all(this.addOns.map((s => s.onResume()))); - if (this.settings.liveSync) this.replicator.openReplication(this.settings, true, false); - const r = activeDocument.querySelector(".livesync-ribbon-showcustom"); - null == r || r.toggleClass("sls-hidden", !this.settings.usePluginSync); - this.periodicSyncProcessor.enable(this.settings.periodicReplication ? 1e3 * this.settings.periodicReplicationInterval : 0); - } - observeForLogs() { - const s = reactive((() => { - const s = this.databaseQueueCount.value, r = this.replicationResultCount.value, o = this.storageApplyingCount.value, u = collectingChunks.value, g = pluginScanningCount.value, _ = hiddenFilesEventCount.value + hiddenFilesProcessingCount.value, m = this.conflictProcessQueueCount.value; - return `${r ? `📥 ${r} ` : ""}${s ? `📄 ${s} ` : ""}${o ? `💾 ${o}` : ""}${u ? `🧩${u} ` : ""}${g ? `🔌${g} ` : ""}${_ ? `⚙️${_} ` : ""}${m ? `🔩${m} ` : ""}`; - })), r = reactive((() => 0 != this.requestCount.value - this.responseCount.value ? "📲 " : "")), o = reactive((() => { - const s = this.replicationStat.value, r = s.sent, o = s.arrived, u = s.maxPullSeq, g = s.maxPushSeq, _ = s.lastSyncPullSeq, m = s.lastSyncPushSeq; - let b = "", E = "", w = ""; - switch (s.syncStatus) { - case "CLOSED": - case "COMPLETED": - case "NOT_CONNECTED": - w = "⏹"; - break; - - case "STARTED": - w = "🌀"; - break; - - case "PAUSED": - w = "💤"; - break; - - case "CONNECTED": - w = "⚡"; - b = 0 == m ? "" : m >= g ? " (LIVE)" : ` (${g - m})`; - E = 0 == _ ? "" : _ >= u ? " (LIVE)" : ` (${u - _})`; - break; - - case "ERRORED": - w = "⚠"; - break; - - default: - w = "?"; - } - return { - w, - sent: r, - pushLast: b, - arrived: o, - pullLast: E - }; - })), u = reactive((() => { - const s = this.pendingFileEventCount.value, r = this.processingFileEventCount.value, o = s - r; - return `${0 != r ? `⏳${r} ` : ""}${0 != o ? ` 🛫${o}` : ""}`; - })), g = reactive((() => { - const {w: g, sent: _, pushLast: m, arrived: b, pullLast: E} = o.value, w = s.value, S = u.value; - return { - message: `${r.value}Sync: ${g} ↑${_}${m} ↓${b}${E}${S} ${w}` - }; - })), _ = reactive((() => { - const {message: s} = g.value; - return { - message: s, - status: this.statusLog.value - }; - })); - let m = 0; - const applyToDisplay = () => { - const s = _.value, r = Date.now(); - if (!(r - m < 10)) { - this.applyStatusBarText(s.message, s.status); - m = r; - } else scheduleTask("applyToDisplay", 20, (() => applyToDisplay())); - }; - _.onChanged(applyToDisplay); - } - applyStatusBarText(s, r) { - var o; - const u = s, g = r; - null == (o = this.statusBar) || o.setText(u.split("\n")[0]); - if (this.settings.showStatusOnEditor) activeDocument.documentElement.style.setProperty("--sls-log-text", "'" + u + "\\A " + g + "'"); - scheduleTask("log-hide", 3e3, (() => { - this.statusLog.value = ""; - })); - } - async replicate(s = false) { - if (!this.isReady) return; - if (isLockAcquired("cleanup")) { - Logger("Database cleaning up is in process. replication has been cancelled", LOG_LEVEL_NOTICE); - return; - } - if ("" != this.settings.versionUpFlash) { - Logger("Open settings and check message, please. replication has been cancelled.", LOG_LEVEL_NOTICE); - return; - } - await this.applyBatchChange(); - await Promise.all(this.addOns.map((r => r.beforeReplicate(s)))); - await this.loadQueuedFiles(); - const r = await this.replicator.openReplication(this.settings, false, s); - if (!r) if (this.replicator.remoteLockedAndDeviceNotAccepted) if (this.replicator.remoteCleaned && this.settings.useIndexedDBAdapter) { - Logger("The remote database has been cleaned.", s ? LOG_LEVEL_NOTICE : LOG_LEVEL_INFO); - await skipIfDuplicated("cleanup", (async () => { - const r = `The remote database has been cleaned up.\nTo synchronize, this device must be also cleaned up. ${await purgeUnreferencedChunks(this.localDatabase.localDatabase, true)} chunk(s) will be erased from this device.\nHowever, If there are many chunks to be deleted, maybe fetching again is faster.\nWe will lose the history of this device if we fetch the remote database again.\nEven if you choose to clean up, you will see this option again if you exit Obsidian and then synchronise again.`, o = "Fetch again", u = "Cleanup", g = "Dismiss", _ = await confirmWithMessage(this, "Cleaned", r, [ o, u, g ], g, 30); - if (_ == o) await performRebuildDB(this, "localOnly"); - if (_ == u) { - const r = await this.getReplicator().connectRemoteCouchDBWithSetting(this.settings, this.getIsMobile(), true); - if ("string" == typeof r) { - Logger(r, LOG_LEVEL_NOTICE); - return false; - } - await purgeUnreferencedChunks(this.localDatabase.localDatabase, false); - this.localDatabase.hashCaches.clear(); - if (await this.replicator.openReplication(this.settings, false, s, true)) { - await balanceChunkPurgedDBs(this.localDatabase.localDatabase, r.db); - await purgeUnreferencedChunks(this.localDatabase.localDatabase, false); - this.localDatabase.hashCaches.clear(); - await this.getReplicator().markRemoteResolved(this.settings); - Logger("The local database has been cleaned up.", s ? LOG_LEVEL_NOTICE : LOG_LEVEL_INFO); - } else Logger("Replication has been cancelled. Please try it again.", s ? LOG_LEVEL_NOTICE : LOG_LEVEL_INFO); - } - })); - } else { - const s = "\nThe remote database has been rebuilt.\nTo synchronize, this device must fetch everything again once.\nOr if you are sure know what had been happened, we can unlock the database from the setting dialog.\n ", r = "Fetch again", o = "Dismiss"; - if (await confirmWithMessage(this, "Locked", s, [ r, o ], o, 10) == r) await performRebuildDB(this, "localOnly"); - } - return r; - } - async initializeDatabase(s = false, r = true) { - this.isReady = false; - if (!r || await this.openDatabase()) { - if (this.localDatabase.isReady) await this.syncAllFiles(s); - await Promise.all(this.addOns.map((r => r.onInitializeDatabase(s)))); - this.isReady = true; - await this.flushFileEventQueue(); - return true; - } else { - this.isReady = false; - return false; - } - } - async replicateAllToServer(s = false) { - if (!this.isReady) return false; - await Promise.all(this.addOns.map((r => r.beforeReplicate(s)))); - return await this.replicator.replicateAllToServer(this.settings, s); - } - async replicateAllFromServer(s = false) { - if (!this.isReady) return false; else return await this.replicator.replicateAllFromServer(this.settings, s); - } - async markRemoteLocked(s = false) { - return await this.replicator.markRemoteLocked(this.settings, true, s); - } - async markRemoteUnlocked() { - return await this.replicator.markRemoteLocked(this.settings, false, false); - } - async markRemoteResolved() { - return await this.replicator.markRemoteResolved(this.settings); - } - isFileSizeExceeded(s) { - if (this.settings.syncMaxSizeInMB > 0 && s > 0) if (1024 * this.settings.syncMaxSizeInMB * 1024 < s) return true; - return false; - } - async syncAllFiles(s) { - if (!this.settings.isConfigured) { - if (s) Logger("LiveSync is not configured yet. Synchronising between the storage and the local database is now prevented.", LOG_LEVEL_NOTICE, "syncAll"); - return; - } - if (s) Logger("Initializing", LOG_LEVEL_NOTICE, "syncAll"); - Logger("Initialize and checking database files"); - Logger("Checking deleted files"); - await this.collectDeletedFiles(); - Logger("Collecting local files on the storage", LOG_LEVEL_VERBOSE); - const r = this.vaultAccess.getFiles(), o = []; - for (const s of r) if (await this.isTargetFile(s.path)) o.push(s); - const u = o.map((s => s.path)); - Logger("Collecting local files on the DB", LOG_LEVEL_VERBOSE); - const g = []; - let _ = 0; - for await (const r of this.localDatabase.findAllNormalDocs()) { - _++; - if (_ % 25 == 0) Logger(`Collecting local files on the DB: ${_}`, s ? LOG_LEVEL_NOTICE : LOG_LEVEL_INFO, "syncAll"); - const o = getPath2(r); - if (isValidPath(o) && await this.isTargetFile(o)) g.push(o); - } - Logger("Opening the key-value database", LOG_LEVEL_VERBOSE); - const m = await this.kvDB.get("initialized") || false, b = o.filter((s => -1 == g.indexOf(getPathFromTFile(s)))), E = g.filter((s => -1 == u.indexOf(s))), w = b.map((s => s.path)), S = o.filter((s => -1 == w.indexOf(s.path))); - Logger("Updating database by new files"); - const L = [], O = s ? LOG_LEVEL_NOTICE : LOG_LEVEL_INFO, runAll = async (s, r, o) => { - if (0 == r.length) { - Logger(`${s}: Nothing to do`); - return; - } - Logger(s); - if (!this.localDatabase.isReady) throw Error("Database is not ready!"); - let u = 0, g = 0; - const _ = new QueueProcessor((async r => { - try { - await o(r[0]); - u++; - } catch (r) { - Logger(`Error while ${s}`, LOG_LEVEL_NOTICE); - Logger(r, LOG_LEVEL_VERBOSE); - g++; - } - if ((u + g) % 10 == 0) Logger(`${s}: DONE:${u}, FAILED:${g}, LAST:${_._queue.length}`, O, `log-${s}`); - }), { - batchSize: 1, - concurrentLimit: 10, - delay: 0, - suspended: true - }, r); - await _.waitForPipeline(); - Logger(`${s} All done: DONE:${u}, FAILED:${g}`, O, `log-${s}`); - }; - L.push(runAll("UPDATE DATABASE", b, (async s => { - if (!this.isFileSizeExceeded(s.stat.size)) { - await this.updateIntoDB(s); - fireAndForget((() => this.checkAndApplySettingFromMarkdown(s.path, true))); - } else Logger(`UPDATE DATABASE: ${s.path} has been skipped due to file size exceeding the limit`, O); - }))); - L.push(runAll("UPDATE STORAGE", E, (async s => { - const r = await this.localDatabase.getDBEntryMeta(s, {}, true); - if (r && !(r.deleted || r._deleted)) if (!this.isFileSizeExceeded(r.size)) { - await this.pullFile(s, o, false, void 0, false); - fireAndForget((() => this.checkAndApplySettingFromMarkdown(s, true))); - Logger(`Check or pull from db:${s} OK`); - } else Logger(`UPDATE STORAGE: ${s} has been skipped due to file size exceeding the limit`, O); else if (r) Logger(`Deletion history skipped: ${s}`, LOG_LEVEL_VERBOSE); else Logger(`entry not found: ${s}`); - }))); - const D = new QueueProcessor((async s => { - const r = s[0]; - return [ { - file: r, - id: await this.path2id(getPathFromTFile(r)) - } ]; - }), { - batchSize: 1, - concurrentLimit: 10, - delay: 0, - suspended: true - }, S); - D.pipeTo(new QueueProcessor((async s => { - const r = await this.localDatabase.allDocsRaw({ - keys: s.map((s => s.id)), - include_docs: true - }), o = Object.fromEntries(r.rows.map((s => [ s.id, s.doc ]))); - return s.map((s => ({ - file: s.file, - doc: o[s.id] - }))); - }), { - batchSize: 10, - concurrentLimit: 5, - delay: 10, - suspended: false - })).pipeTo(new QueueProcessor((async s => { - const r = s[0]; - await this.syncFileBetweenDBandStorage(r.file, r.doc); - }), { - batchSize: 1, - concurrentLimit: 5, - delay: 10, - suspended: false - })); - D.startPipeline(); - L.push((async () => { - await D.waitForPipeline(); - })); - await Promise.all(L); - Logger("Initialized, NOW TRACKING!"); - if (!m) await this.kvDB.set("initialized", true); - if (s) Logger("Initialize done!", LOG_LEVEL_NOTICE, "syncAll"); - } - async getConflictedDoc(s, r) { - try { - const o = await this.localDatabase.getDBEntry(s, { - rev: r - }, false, false, true); - if (false === o) return false; - let u = getDocData(o.data); - if ("newnote" == o.datatype) u = readString(new Uint8Array(decodeBinary(o.data))); else if ("plain" == o.datatype) ; - return { - deleted: o.deleted || o._deleted, - ctime: o.ctime, - mtime: o.mtime, - rev: r, - data: u - }; - } catch (s) { - if (isErrorOfMissingDoc(s)) return false; - } - return false; - } - async mergeSensibly(s, r, o, u) { - var g, _, m, b; - const E = await this.getConflictedDoc(s, r), w = await this.getConflictedDoc(s, o), S = await this.getConflictedDoc(s, u); - let L = false; - if (false == E || false == w || false == S) return false; - if (w.deleted && S.deleted) return false; - const O = new import_diff_match_patch.diff_match_patch, D = O.diff_linesToChars_(E.data, w.data), k = O.diff_main(D.chars1, D.chars2, false); - O.diff_charsToLines_(k, D.lineArray); - const C = O.diff_linesToChars_(E.data, S.data), T = O.diff_main(C.chars1, C.chars2, false); - O.diff_charsToLines_(T, C.lineArray); - function splitDiffPiece(s) { - const r = []; - do { - const o = s.shift(); - if (void 0 === o) return r; - const u = o[1].split(/([^\n]*\n)/).filter((s => "" != s)); - if ("undefined" == typeof o) break; - if (o[0] != import_diff_match_patch.DIFF_DELETE) r.push(...u.map((s => [ o[0], s ]))); - if (o[0] == import_diff_match_patch.DIFF_DELETE) { - const g = s.shift(); - if ("undefined" != typeof g) { - const s = g[1].split(/([^\n]*\n)/).filter((s => "" != s)); - if (g[0] == import_diff_match_patch.DIFF_INSERT) { - for (const g of u) { - r.push([ o[0], g ]); - const u = s.shift(); - if ("undefined" != typeof u) r.push([ import_diff_match_patch.DIFF_INSERT, u ]); - } - r.push(...s.map((s => [ g[0], s ]))); - } else { - r.push(...u.map((s => [ o[0], s ]))); - r.push(...s.map((s => [ g[0], s ]))); - } - } else r.push(...u.map((s => [ 0, s ]))); - } - } while (s.length > 0); - return r; - } - const I = splitDiffPiece(k), A = splitDiffPiece(T); - let R = 0, x = 0; - const P = []; - L = true; - e: do { - if (x >= I.length && R >= A.length) break e; - const s = null != (g = I[x]) ? g : [ 0, "" ], r = null != (_ = A[R]) ? _ : [ 0, "" ]; - x++; - R++; - if (s[0] != import_diff_match_patch.DIFF_EQUAL || r[0] != import_diff_match_patch.DIFF_EQUAL || s[1] != r[1]) { - if (s[0] == import_diff_match_patch.DIFF_DELETE && r[0] == import_diff_match_patch.DIFF_DELETE && s[1] == r[1]) { - const r = x, o = R, [u, g] = [ null != (m = I[r]) ? m : [ 0, "" ], null != (b = A[o]) ? b : [ 0, "" ] ]; - if (u[0] == import_diff_match_patch.DIFF_INSERT && g[0] == import_diff_match_patch.DIFF_INSERT && u[1] != g[1]) { - L = false; - break; - } else { - P.push(s); - continue; - } - } - if (s[0] == import_diff_match_patch.DIFF_INSERT && r[0] == import_diff_match_patch.DIFF_INSERT) if (s[1] == r[1]) { - P.push(s); - continue; - } else if (w.mtime <= S.mtime) { - P.push(s); - P.push(r); - continue; - } else { - P.push(r); - P.push(s); - continue; - } - if (s[0] != import_diff_match_patch.DIFF_INSERT) if (r[0] != import_diff_match_patch.DIFF_INSERT) { - if (r[1] != s[1]) { - Logger(`MERGING PANIC:${s[0]},${s[1]} == ${r[0]},${r[1]}`, LOG_LEVEL_VERBOSE); - L = false; - break e; - } - if (s[0] == import_diff_match_patch.DIFF_DELETE) if (r[0] == import_diff_match_patch.DIFF_EQUAL) { - P.push(s); - continue; - } else { - L = false; - break e; - } - if (r[0] == import_diff_match_patch.DIFF_DELETE) if (s[0] == import_diff_match_patch.DIFF_EQUAL) { - P.push(r); - continue; - } else { - L = false; - break e; - } - Logger(`Weird condition:${s[0]},${s[1]} == ${r[0]},${r[1]}`, LOG_LEVEL_VERBOSE); - break e; - } else { - x--; - P.push(r); - } else { - R--; - P.push(s); - } - } else P.push(s); - } while (x < I.length || R < A.length); - if (L) { - Logger("Sensibly merge available", LOG_LEVEL_VERBOSE); - return P; - } else return false; - } - async mergeObject(s, r, o, u) { - try { - const g = await this.getConflictedDoc(s, r), _ = await this.getConflictedDoc(s, o), m = await this.getConflictedDoc(s, u); - if (false == g || false == _ || false == m) return false; - if (_.deleted && m.deleted) return false; - const b = { - data: tryParseJSON(g.data, {}) - }, E = { - data: tryParseJSON(_.data, {}) - }, w = { - data: tryParseJSON(m.data, {}) - }, S = generatePatchObj(b, E), L = generatePatchObj(b, w), O = new Map(flattenObject(S)), D = new Map(flattenObject(L)); - for (const [s, r] of O) if (D.has(s)) if (D.get(s) == r) D.delete(s); - for (const [s, r] of D) if (O.has(s) && O.get(s) != r) return false; - const k = [ { - mtime: _.mtime, - patch: S - }, { - mtime: m.mtime, - patch: L - } ].sort(((s, r) => s.mtime - r.mtime)); - let C = { - ...b - }; - for (const s of k) C = applyPatch(C, s.patch); - return JSON.stringify(C.data); - } catch (s) { - Logger("Could not merge object"); - Logger(s, LOG_LEVEL_VERBOSE); - return false; - } - } - async checkConflictAndPerformAutoMerge(s) { - var r, o; - const u = await this.localDatabase.getDBEntry(s, { - conflicts: true, - revs_info: true - }, false, false, true); - if (false === u) return MISSING_OR_ERROR; - if (null == u) return MISSING_OR_ERROR; - if (!u._conflicts) return NOT_CONFLICTED; - if (0 == u._conflicts.length) return NOT_CONFLICTED; - const g = u._conflicts.sort(((s, r) => Number(s.split("-")[0]) - Number(r.split("-")[0]))); - if ((isSensibleMargeApplicable(s) || isObjectMargeApplicable(s)) && !this.settings.disableMarkdownAutoMerge) { - const _ = g[0], m = Number(_.split("-")[0]), b = null != (o = null == (r = ((await this.localDatabase.getRaw(await this.path2id(s), { - revs_info: true - }))._revs_info || []).filter((s => "available" == s.status && Number(s.rev.split("-")[0]) < m)).first()) ? void 0 : r.rev) ? o : ""; - let E; - if (b) { - if (isSensibleMargeApplicable(s)) { - const r = await this.mergeSensibly(s, b, u._rev, _); - if (r) { - E = r.filter((s => s[0] != import_diff_match_patch.DIFF_DELETE)).map((s => s[1])).join(""); - Logger(`Sensible merge:${s}`, LOG_LEVEL_INFO); - } else Logger("Sensible merge is not applicable.", LOG_LEVEL_VERBOSE); - } else if (isObjectMargeApplicable(s)) { - const r = await this.mergeObject(s, b, u._rev, _); - if (r) { - Logger(`Object merge:${s}`, LOG_LEVEL_INFO); - E = r; - } else Logger("Object merge is not applicable.", LOG_LEVEL_VERBOSE); - } - if (null != E) { - await this.localDatabase.deleteDBEntry(s, { - rev: _ - }); - const r = this.vaultAccess.getAbstractFileByPath(stripAllPrefixes(s)); - if (r) { - if (await this.vaultAccess.vaultModify(r, E)) await this.updateIntoDB(r); - } else { - const r = await this.vaultAccess.vaultCreate(s, E); - await this.updateIntoDB(r); - } - await this.pullFile(s); - Logger(`Automatically merged (sensible) :${s}`, LOG_LEVEL_INFO); - return AUTO_MERGED; - } - } - } - const _ = await this.getConflictedDoc(s, u._rev), m = await this.getConflictedDoc(s, g[0]); - if (false == _) { - Logger(`could not get current revisions:${s}`, LOG_LEVEL_NOTICE); - return MISSING_OR_ERROR; - } - if (false == m) { - await this.localDatabase.deleteDBEntry(s, { - rev: g[0] - }); - await this.pullFile(s, void 0, true); - Logger(`could not get old revisions, automatically used newer one:${s}`, LOG_LEVEL_NOTICE); - return AUTO_MERGED; - } - const b = _.data == m.data && _.deleted == m.deleted, E = !isPlainText(s), w = this.settings.resolveConflictsByNewerFile; - if (b || E || w) { - let r = _; - if (compareMTime(_.mtime, m.mtime) != TARGET_IS_NEW) r = m; - await this.localDatabase.deleteDBEntry(s, { - rev: r.rev - }); - await this.pullFile(s, void 0, true); - Logger(`Automatically merged (${b ? "same," : ""}${E ? "binary," : ""}${w ? "alwaysNewer" : ""}) :${s}`, LOG_LEVEL_NOTICE); - return AUTO_MERGED; - } - const S = new import_diff_match_patch.diff_match_patch, L = S.diff_main(_.data, m.data); - S.diff_cleanupSemantic(L); - Logger(`conflict(s) found:${s}`); - return { - left: _, - right: m, - diff: L - }; - } - async resolveConflictByUI(s, r) { - Logger("Merge:open conflict dialog", LOG_LEVEL_VERBOSE); - const o = new ConflictResolveModal(this.app, s, r); - o.open(); - const u = await o.waitForResult(); - if (u === CANCELLED) { - Logger(`Merge: Cancelled ${s}`, LOG_LEVEL_INFO); - return false; - } - const g = await this.localDatabase.getDBEntry(s, { - conflicts: true - }, false, false, true); - if (false === g) { - Logger(`Merge: Could not read ${s} from the local database`, LOG_LEVEL_VERBOSE); - return false; - } - if (!g._conflicts) { - Logger(`Merge: Nothing to do ${s}`, LOG_LEVEL_VERBOSE); - return false; - } - const _ = u, m = r.left.rev != _ ? r.left.rev : r.right.rev; - if (_ === LEAVE_TO_SUBSEQUENT) { - const o = r.diff.map((s => s[1])).join(""); - await this.localDatabase.deleteDBEntry(s, { - rev: g._conflicts[0] - }); - const u = this.vaultAccess.getAbstractFileByPath(stripAllPrefixes(s)); - if (u) { - if (await this.vaultAccess.vaultModify(u, o)) await this.updateIntoDB(u); - } else { - const r = await this.vaultAccess.vaultCreate(s, o); - await this.updateIntoDB(r); - } - await this.pullFile(s); - Logger(`Merge: Changes has been concatenated: ${s}`); - } else if ("string" == typeof _) { - await this.localDatabase.deleteDBEntry(s, { - rev: _ - }); - await this.pullFile(s, void 0, true, m); - Logger(`Conflict resolved:${s}`); - } else { - Logger(`Merge: Something went wrong: ${s}, (${_})`, LOG_LEVEL_NOTICE); - return false; - } - if (this.settings.syncAfterMerge && !this.suspended) await shareRunningResult("replication", (() => this.replicate())); - this.conflictCheckQueue.enqueue(s); - return false; - } - async pullFile(s, r, o, u, g = true) { - const _ = this.vaultAccess.getAbstractFileByPath(stripAllPrefixes(s)); - if (await this.isTargetFile(s)) if (null == _) { - const r = await this.localDatabase.getDBEntry(s, u ? { - rev: u - } : void 0, false, g); - if (false === r) { - Logger(`${s} Skipped`); - return; - } - await this.processEntryDoc(r, void 0, o); - } else if (_ instanceof import_obsidian.TFile) { - const r = _, m = await this.localDatabase.getDBEntry(s, u ? { - rev: u - } : void 0, false, g); - if (false === m) { - Logger(`${s} Skipped`); - return; - } - await this.processEntryDoc(m, r, o); - } else Logger(`target files:${s} is exists as the folder`); - } - async syncFileBetweenDBandStorage(s, r) { - if (!r) throw new Error(`Missing doc:${s.path}`); - if (!(s instanceof import_obsidian.TFile) && "path" in s) { - const r = this.vaultAccess.getAbstractFileByPath(s.path); - if (r instanceof import_obsidian.TFile) s = r; else throw new Error(`Missing file:${s.path}`); - } - switch (compareFileFreshness(s, r)) { - case BASE_IS_NEW: - if (!this.isFileSizeExceeded(s.stat.size)) { - Logger("STORAGE -> DB :" + s.path); - await this.updateIntoDB(s); - fireAndForget((() => this.checkAndApplySettingFromMarkdown(s.path, true))); - } else Logger(`STORAGE -> DB : ${s.path} has been skipped due to file size exceeding the limit`, LOG_LEVEL_NOTICE); - break; - - case TARGET_IS_NEW: - if (!this.isFileSizeExceeded(r.size)) { - Logger("STORAGE <- DB :" + s.path); - const r = await this.localDatabase.getDBEntry(getPathFromTFile(s), void 0, false, false, true); - if (false != r) await this.processEntryDoc(r, s); else Logger(`STORAGE <- DB : Cloud not read ${s.path}, possibly deleted`, LOG_LEVEL_NOTICE); - return caches; - } else Logger(`STORAGE <- DB : ${s.path} has been skipped due to file size exceeding the limit`, LOG_LEVEL_NOTICE); - break; - - case EVEN: - Logger("STORAGE == DB :" + s.path, LOG_LEVEL_DEBUG); - break; - - default: - Logger("STORAGE ?? DB :" + s.path + " Something got weird"); - } - } - async updateIntoDB(s, r, o) { - if (!await this.isTargetFile(s)) return true; - if (shouldBeIgnored(s.path)) return true; - const u = !isPlainText(s.name); - if (u) Logger(`Reading : ${s.path}`, LOG_LEVEL_VERBOSE); - const g = createBlob(await this.vaultAccess.vaultReadAuto(s)), _ = determineTypeFromBlob(g); - if (u) Logger(`Processing: ${s.path}`, LOG_LEVEL_VERBOSE); - const m = getPathFromTFile(s), b = { - _id: await this.path2id(m), - path: getPathFromTFile(s), - data: g, - ctime: s.stat.ctime, - mtime: s.stat.mtime, - size: s.stat.size, - children: [], - datatype: _, - type: _ - }, E = `STORAGE -> DB (${_}) `; - if (await serialized("file-" + m, (async () => { - if (this.vaultAccess.recentlyTouched(s)) return true; - try { - const s = await this.localDatabase.getDBEntry(m, void 0, false, false); - if (false !== s) { - const r = { - data: s.data, - deleted: s._deleted || s.deleted - }, o = { - data: b.data, - deleted: b._deleted || b.deleted - }; - if (r.deleted != o.deleted) return false; - if (!await isDocContentSame(s.data, o.data)) return false; - Logger(E + "Skipped (not changed) " + m + (b._deleted || b.deleted ? " (deleted)" : ""), LOG_LEVEL_VERBOSE); - markChangesAreSame(s, b.mtime, s.mtime); - return true; - } - } catch (s) { - if (o) Logger(E + "Error, Could not check the diff for the old one." + (o ? "force writing." : "") + m + (b._deleted || b.deleted ? " (deleted)" : ""), LOG_LEVEL_VERBOSE); else Logger(E + "Error, Could not check the diff for the old one." + m + (b._deleted || b.deleted ? " (deleted)" : ""), LOG_LEVEL_VERBOSE); - return !o; - } - return false; - }))) { - Logger(E + " Skip " + m, LOG_LEVEL_VERBOSE); - return true; - } - const w = await this.localDatabase.putDBEntry(b); - if (false !== w) { - Logger(E + m); - if (this.settings.syncOnSave && !this.suspended) scheduleTask("perform-replicate-after-save", 250, (() => this.replicate())); - } - return false != w; - } - async deleteFromDB(s) { - if (!await this.isTargetFile(s)) return; - const r = getPathFromTFile(s); - Logger(`deleteDB By path:${r}`); - await this.deleteFromDBbyPath(r); - if (this.settings.syncOnSave && !this.suspended) await this.replicate(); - } - async deleteFromDBbyPath(s) { - await this.localDatabase.deleteDBEntry(s); - if (this.settings.syncOnSave && !this.suspended) await this.replicate(); - } - async resetLocalDatabase() { - this.vaultAccess.clearTouched(); - await this.localDatabase.resetDatabase(); - } - async tryResetRemoteDatabase() { - await this.replicator.tryResetRemoteDatabase(this.settings); - } - async tryCreateRemoteDatabase() { - await this.replicator.tryCreateRemoteDatabase(this.settings); - } - filterTargetFiles(s, r = false) { - const o = this.settings.syncInternalFilesIgnorePatterns.replace(/\n| /g, "").split(",").filter((s => s)).map((s => new RegExp(s, "i"))); - return s.filter((s => !o.some((r => s.path.match(r))))).filter((s => !r || r && -1 !== r.indexOf(s.path))); - } - async resolveConflictByNewerEntry(s) { - const r = await this.path2id(s), o = await this.localDatabase.getRaw(r, { - conflicts: true - }); - if (!("_conflicts" in o) || void 0 === o._conflicts) return false; - if (0 == o._conflicts.length) return false; - Logger(`Hidden file conflicted:${this.getPath(o)}`); - const u = o._conflicts.sort(((s, r) => Number(s.split("-")[0]) - Number(r.split("-")[0]))), g = o._rev, _ = u[0], m = await this.localDatabase.getRaw(r, { - rev: _ - }), b = ("mtime" in o && o.mtime || 0) < ("mtime" in m && m.mtime || 0) ? g : _; - await this.localDatabase.removeRevision(r, b); - Logger(`Older one has been deleted:${this.getPath(o)}`); - return true; - } - async readIgnoreFile(s) { - try { - const r = (await this.vaultAccess.adapterRead(s)).split(/\r?\n/g); - this.ignoreFileCache.set(s, r); - return r; - } catch (r) { - this.ignoreFileCache.set(s, false); - return false; - } - } - async getIgnoreFile(s) { - var r; - if (this.ignoreFileCache.has(s)) return null != (r = this.ignoreFileCache.get(s)) ? r : false; else return await this.readIgnoreFile(s); - } - async isIgnoredByIgnoreFiles(s) { - if (!this.settings.useIgnoreFiles) return false; - const r = s instanceof import_obsidian.TFile ? s.path : s; - if (this.ignoreFileCache.has(r)) await this.readIgnoreFile(r); - if (!await isAcceptedAll(stripAllPrefixes(r), this.ignoreFiles, (s => this.getIgnoreFile(s)))) return true; else return false; - } - async isTargetFile(s) { - const r = s instanceof import_obsidian.TFile ? s.path : s; - if (this.settings.useIgnoreFiles && await this.isIgnoredByIgnoreFiles(s)) return false; else return this.localDatabase.isTargetFile(r); - } - async dryRunGC() { - await skipIfDuplicated("cleanup", (async () => { - const s = await this.getReplicator().connectRemoteCouchDBWithSetting(this.settings, this.isMobile); - if ("string" != typeof s) { - await purgeUnreferencedChunks(s.db, true, this.settings, false); - await purgeUnreferencedChunks(this.localDatabase.localDatabase, true); - this.localDatabase.hashCaches.clear(); - } else Logger(s); - })); - } - async dbGC() { - await skipIfDuplicated("cleanup", (async () => { - this.getReplicator().markRemoteLocked(this.settings, true, true); - const s = await this.getReplicator().connectRemoteCouchDBWithSetting(this.settings, this.isMobile); - if ("string" != typeof s) { - await purgeUnreferencedChunks(s.db, false, this.settings, true); - await purgeUnreferencedChunks(this.localDatabase.localDatabase, false); - this.localDatabase.hashCaches.clear(); - await balanceChunkPurgedDBs(this.localDatabase.localDatabase, s.db); - this.localDatabase.refreshSettings(); - Logger("The remote database has been cleaned up! Other devices will be cleaned up on the next synchronisation."); - } else Logger(s); - })); - } - askYesNo(s) { - return askYesNo(this.app, s); - } - askSelectString(s, r) { - return askSelectString(this.app, s, r); - } - askInPopup(s, r, o) { - const u = createFragment((s => { - const [u, g] = r.split("{HERE}", 2); - s.createEl("span", void 0, (s => { - s.appendText(u); - s.appendChild(s.createEl("a", void 0, (s => { - o(s); - }))); - s.appendText(g); - })); - })), g = "popup-" + s; - scheduleTask(g, 1e3, (async () => { - var s; - const r = await memoIfNotExist(g, (() => new import_obsidian.Notice(u, 0))); - if (!(null == (s = null == r ? void 0 : r.noticeEl) ? void 0 : s.isShown())) memoObject(g, new import_obsidian.Notice(u, 0)); - scheduleTask(g + "-close", 2e4, (() => { - var s; - const r = retrieveMemoObject(g); - if (r) { - if (null == (s = null == r ? void 0 : r.noticeEl) ? void 0 : s.isShown()) r.hide(); - disposeMemoObject(g); - } - })); - })); - } - openSetting() { - this.app.setting.open(); - this.app.setting.openTabById("obsidian-livesync"); - } - performAppReload() { - this.performCommand("app:reload"); - } - performCommand(s) { - this.app.commands.executeCommandById(s); - } -}; \ No newline at end of file diff --git a/.obsidian/plugins/obsidian-livesync/manifest.json b/.obsidian/plugins/obsidian-livesync/manifest.json deleted file mode 100644 index cdc7672..0000000 --- a/.obsidian/plugins/obsidian-livesync/manifest.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "id": "obsidian-livesync", - "name": "Self-hosted LiveSync", - "version": "0.22.16", - "minAppVersion": "0.9.12", - "description": "Community implementation of self-hosted livesync. Reflect your vault changes to some other devices immediately. Please make sure to disable other synchronize solutions to avoid content corruption or duplication.", - "author": "vorotamoroz", - "authorUrl": "https://github.com/vrtmrz", - "isDesktopOnly": false -} diff --git a/.obsidian/plugins/obsidian-livesync/styles.css b/.obsidian/plugins/obsidian-livesync/styles.css deleted file mode 100644 index f163bd5..0000000 --- a/.obsidian/plugins/obsidian-livesync/styles.css +++ /dev/null @@ -1,322 +0,0 @@ -.added { - color: var(--text-on-accent); - background-color: var(--text-accent); -} - -.normal { - color: var(--text-normal); -} - -.deleted { - color: var(--text-on-accent); - background-color: var(--text-muted); -} - -.op-scrollable { - overflow-y: scroll; - /* min-height: 280px; */ - max-height: 280px; - user-select: text; -} - -.op-pre { - white-space: pre-wrap; -} - -.op-warn { - border: 1px solid salmon; - padding: 2px; - border-radius: 4px; -} - -.op-warn::before { - content: "Warning"; - font-weight: bold; - color: salmon; - position: relative; - display: block; -} - -.op-warn-info { - border: 1px solid rgb(255, 209, 81); - padding: 2px; - border-radius: 4px; -} - -.op-warn-info::before { - content: "Notice"; - font-weight: bold; - color: rgb(255, 209, 81); - position: relative; - display: block; -} - -.syncstatusbar { - -webkit-filter: grayscale(100%); - filter: grayscale(100%); -} - -.tcenter { - text-align: center; -} - -.sls-plugins-wrap { - display: flex; - flex-grow: 1; - max-height: 50vh; - overflow-y: scroll; -} - -.sls-plugins-tbl { - border: 1px solid var(--background-modifier-border); - width: 100%; - max-height: 80%; -} - -.divider th { - border-top: 1px solid var(--background-modifier-border); -} - -.sls-header-button { - margin-left: 2em; -} - -.sls-hidden { - display: none; -} - -:root { - --sls-log-text: ""; -} - -.sls-troubleshoot-preview { - max-width: max-content; -} - -.sls-troubleshoot-preview img { - max-width: 100%; -} - -.CodeMirror-wrap::before, -.markdown-preview-view.cm-s-obsidian::before, -.markdown-source-view.cm-s-obsidian::before, -.canvas-wrapper::before, -.empty-state::before { - content: var(--sls-log-text, ""); - text-align: right; - white-space: pre-wrap; - position: absolute; - border-radius: 4px; - /* border:1px solid --background-modifier-border; */ - display: inline-block; - top: 8px; - color: --text-normal; - opacity: 0.5; - font-size: 80%; - -webkit-filter: grayscale(100%); - filter: grayscale(100%); -} - -.empty-state::before, -.markdown-preview-view.cm-s-obsidian::before, -.markdown-source-view.cm-s-obsidian::before { - top: var(--header-height); - right: 1em; -} - -.is-mobile .empty-state::before, -.is-mobile .markdown-preview-view.cm-s-obsidian::before, -.is-mobile .markdown-source-view.cm-s-obsidian::before { - top: var(--view-header-height); - right: 1em; -} -.canvas-wrapper::before { - right: 48px; -} - -.CodeMirror-wrap::before { - right: 0px; -} - -.cm-s-obsidian > .cm-editor::before { - right: 16px; -} - -.sls-setting-tab { - display: none; -} - -div.sls-setting-menu-btn { - color: var(--text-normal); - background-color: var(--background-secondary-alt); - border-radius: 4px 4px 0 0; - padding: 6px 10px; - cursor: pointer; - margin-right: 12px; - font-family: "Inter", sans-serif; - outline: none; - user-select: none; - flex-grow: 1; - text-align: center; - flex-shrink: 1; -} - -.sls-setting-label.selected { - /* order: 1; */ - flex-grow: 1; - /* width: 100%; */ -} - -.sls-setting-tab:hover ~ div.sls-setting-menu-btn, -.sls-setting-label.selected .sls-setting-tab:checked ~ div.sls-setting-menu-btn { - background-color: var(--interactive-accent); - color: var(--text-on-accent); -} - -.sls-setting-menu { - display: flex; - flex-direction: row; - /* flex-wrap: wrap; */ - overflow-x: auto; -} - -.sls-setting-label { - flex-grow: 1; - display: inline-flex; - justify-content: center; -} - -.setting-collapsed { - display: none; -} - -.sls-plugins-tbl-buttons { - text-align: right; -} - -.sls-plugins-tbl-buttons button { - flex-grow: 0; - padding: 6px 10px; -} - -.sls-plugins-tbl-device-head { - background-color: var(--background-secondary-alt); - color: var(--text-accent); -} - -.op-flex { - display: flex; -} - -.op-flex input { - display: inline-flex; - flex-grow: 1; - margin-bottom: 8px; -} - -.op-info { - display: inline-flex; - flex-grow: 1; - border-bottom: 1px solid var(--background-modifier-border); - width: 100%; - margin-bottom: 4px; - padding-bottom: 4px; -} - -.history-added { - color: var(--text-on-accent); - background-color: var(--text-accent); -} - -.history-normal { - color: var(--text-normal); -} - -.history-deleted { - color: var(--text-on-accent); - background-color: var(--text-muted); - text-decoration: line-through; -} - -.ob-btn-config-fix label { - margin-right: 40px; -} - -.ob-btn-config-info { - border: 1px solid salmon; - padding: 2px; - margin: 1px; - border-radius: 4px; -} - -.ob-btn-config-head { - padding: 2px; - margin: 1px; - border-radius: 4px; -} - -.isWizard .wizardHidden { - display: none; -} - -.sls-setting:not(.isWizard) .wizardOnly { - display: none; -} - -.sls-item-dirty::before { - content: "✏"; -} - -.sls-setting-hidden { - display: none; -} - -.password-input > .setting-item-control > input { - -webkit-text-security: disc; -} - -span.ls-mark-cr::after { - user-select: none; - content: "↲"; - color: var(--text-muted); - font-size: 0.8em; -} - -.deleted span.ls-mark-cr::after { - color: var(--text-on-accent); -} - -.ls-imgdiff-wrap { - display: flex; - justify-content: center; - align-items: center; -} - -.ls-imgdiff-wrap .overlay { - position: relative; -} - -.ls-imgdiff-wrap .overlay .img-base { - position: relative; - top: 0; - left: 0; -} -.ls-imgdiff-wrap .overlay .img-overlay { - -webkit-filter: invert(100%) opacity(50%); - filter: invert(100%) opacity(50%); - position: absolute; - top: 0; - left: 0; - animation: ls-blink-diff 0.5s cubic-bezier(0.4, 0, 1, 1) infinite alternate; -} -@keyframes ls-blink-diff { - 0% { - opacity: 0; - } - 50% { - opacity: 0; - } - 100% { - opacity: 1; - } -} diff --git a/.obsidian/themes/Blue Topaz/manifest.json b/.obsidian/themes/Blue Topaz/manifest.json deleted file mode 100644 index ae35e16..0000000 --- a/.obsidian/themes/Blue Topaz/manifest.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name": "Blue Topaz", - "version": "2024041201", - "minAppVersion": "1.0.0", - "author": "WhyI & Pkmer", - "authorUrl": "https://github.com/whyt-byte" -} diff --git a/.obsidian/themes/Blue Topaz/theme.css b/.obsidian/themes/Blue Topaz/theme.css deleted file mode 100644 index 435f90a..0000000 --- a/.obsidian/themes/Blue Topaz/theme.css +++ /dev/null @@ -1,28979 +0,0 @@ -/* - - -If you want to distribute the whole or parts of the above codes, please copy & paste the following sentences: - -Partial style(s) is(are) sourced or adapted from Blue Topaz (https://github.com/PKM-er/Blue-Topaz_Obsidian-css), and I would like to express my appreciation to WhyI (https://github.com/whyt-byte) and pkmer.cn (https://pkmer.cn). - - -*/ - -/*蓝色托帕石,适合Obsidian v1.2.8。uid [20240402] flying fly flies制作。如果喜欢,可以在Github里给我星星 https://github.com/whyt-byte */ -/*Blue Topaz for Obsidian v1.2.8, uid [20240402] created by flying fly flies. Feel free to use, share and modify. If you like the theme, please star me on GitHub https://github.com/whyt-byte */ - -/* -MIT License - -Copyright (c) 2020 whyt-byte - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -*/ - - -/* 致谢 Credits: -thanks pkmer.cn -Many thanks to @Cuman -@LillianWho @成雙酱 @嘴上云 @Klaas @Thinkbond @Rainbell129(AKA Lavi) @awyugan @GeoffreyOuO (WooYoo~~~) @锋华 @CZ-15/YZ-10 */ - -/* @settings -name: 🥑Blue Topaz Theme -id: blue-topaz-theme -settings: - - - id: attension - title: Attention!Due to obsidian's policy of not being able to use online or local vault images, However, the option to customise the settings and fill in the url is currently supported. - title.zh: 注意!由于obsidian的政策,主题无法使用在线或本地库里的图片,相关内置图片选项已删除,需要显示背景图片请自行设置url。 - type: heading - level: 1 - collapsed: false - - - id: background-settings - title: 1. General settings - title.zh: 1. 整体性设置 - type: heading - level: 1 - collapsed: false - - - id: color-settings - title: 1.1 Color scheme - title.zh: 1.1 整体配色 - type: heading - level: 2 - collapsed: true - - - id: color-scheme-options - title: Color palette (from Topaz Community) - title.zh: 整体配色选择 (由Topaz社区贡献) - type: class-select - allowEmpty: false - default: color-scheme-options-default - options: - - - label: Default - value: color-scheme-options-default - - - label: Avocado - value: color-scheme-options-avocado-topaz - - - label: Monochrome - value: color-scheme-options-monochrome-topaz - - - label: Pink - value: color-scheme-options-pink-topaz - - - label: Topaz-Nord - value: color-scheme-options-topaz-nord - - - label: =↓😺 Created by Topaz Community 🐵↓= - value: - - - label: Flamingo (@Mouth on Cloud & @Rainbell) - value: color-scheme-options-flamingo - - - label: Honey milk (@LillianWho) - value: color-scheme-options-honey-milk-topaz - - - label: 榛子巧克力 Hazelnut chocolate (@LillianWho) - value: color-scheme-options-chocolate-topaz - - - label: Lilac (@awyugan) - value: color-scheme-options-lilac - - - label: Autumn (@LillianWho) - value: color-scheme-options-autumn-topaz - - - label: 魔方 Rubik's Cube (@LillianWho) - value: color-scheme-options-lillimon-topaz - - - label: Simplicity (@Cuman) - value: color-scheme-options-simplicity-topaz - - - id: disable-auto-hide-header - title: Disable auto hide header - title.zh: 禁用自动隐藏头部 - type: class-toggle - default: false - - - id: color-magic - title: Color of Rubik's cube palette - title.zh: 魔方配色 - description.zh: 当整体配色为【魔方】时生效 - type: heading - level: 3 - collapsed: true - - - id: magic-main-color - title: Main color - title.zh: 主题色 - description.zh: 主题色主要作用于标题,字体,列表等主色调,建议用对比度强,不易疲劳的色系。如果想单独调整个别类目请在2.1中继续细调。 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: magic-low-color - title: Low contrast color - title.zh: 浅色 - description.zh: 浅色主要作用于各类触发背景底色,建议用不影响阅读的背景色系。 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: magic-deep-color - title: Deep color - title.zh: 深色 - description.zh: 深色主要作用于主题强调色系,用在各种控件,提示等使用,建议用浅色相关的醒目色系。 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: background-settings - title: 1.2 Background images - title.zh: 1.2 背景设置 - type: heading - level: 2 - collapsed: true - - - id: background-settings-workplace - title: 1.2.1 Workplace background image - title.zh: 1.2.1 工作页面背景 - type: heading - level: 3 - collapsed: true - - - id: background-settings-workplace-background-image - title: Activate image background - title.zh: 开启背景 - type: class-toggle - default: false - addCommand: true - - - id: bt-background-split-container - title: Side split container background color - title.zh: 侧边分栏背景颜色 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: background-settings-workplace-theme-light - title: Light mode - type: class-select - allowEmpty: false - default: background-settings-workplace-theme-light-in-the-note - options: - - - label: Blue Mountain - value: background-settings-workplace-theme-light-blue-mountain - - - label: Note - value: background-settings-workplace-theme-light-in-the-note - - - label: Waves - value: background-settings-workplace-waves-light - - - label: Animating waves - value: background-settings-workplace-waves2-light - - - label: Custom - value: background-settings-workplace-theme-light-custom-option - - - id: background-settings-workplace-theme-light-custom - title: Custom theme light (url) - description: Customise the background image. Use the format in the Default below for an Online image. - description.zh: 需在上方选项种选择Custom,以自定义背景。使用Default内格式设置在线图片。 - type: variable-text - default: url("https://") - - - id: background-settings-workplace-theme-dark - title: Dark mode - type: class-select - allowEmpty: false - default: background-settings-workplace-theme-dark-in-the-sky - options: - - - label: Night sky - value: background-settings-workplace-theme-dark-night-sky - - - label: Dark sky - value: background-settings-workplace-theme-dark-dark-sky - - - label: In the sky - value: background-settings-workplace-theme-dark-in-the-sky - - - label: Waves - value: background-settings-workplace-waves - - - label: Animating waves - value: background-settings-workplace-waves2 - - - label: Custom - value: background-settings-workplace-theme-dark-custom-option - - - id: background-settings-workplace-theme-dark-custom - title: Custom theme dark (url) - description: Customise the background image. Use the format in the Default below for an Online image. - description.zh: 需在上方选项种选择Custom,以自定义背景。使用Default内格式设置网络图片。 - type: variable-text - default: url("https://") - - - id: blur-depth - title: Blur radius - title.zh: 模糊程度 - description: To adjust the radius of blur - description.zh: 调整背景壁纸模糊程度 - type: variable-number-slider - default: 10 - format: px - min: 0 - max: 30 - step: 1 - - - id: brightness-4-bg - title: Brightness of image - title.zh: 图片亮度 - description: To adjust the brightness - description.zh: 调整背景壁纸亮度 - type: variable-number-slider - default: 0.9 - min: 0.3 - max: 1.5 - step: 0.1 - - - id: saturate-4-bg - title: Saturation of image - title.zh: 图片饱和度 - description: To adjust the saturation - description.zh: 调整背景壁纸饱和度 - type: variable-number-slider - default: 1 - min: 0 - max: 2 - step: 0.1 - - - id: background-waves-color - title: Waves color - title.zh: 波浪背景颜色 - description.zh: 当背景色选择为waves时起作用。 - type: variable-themed-color - opacity: true - format: hex - default-light: '#4A75DB8C' - default-dark: '#4A75DB8C' - - - id: background-settings-workplace-random - title: Random background - title.zh: 随机背景 - description: Images will be refreshed when Obsidian launches; Internet required - description.zh: 图片在Obsidian打开时刷新;需要联网 - type: class-toggle - default: false - - - id: background-settings-markdown-page - title: 1.2.2 Note page background image - title.zh: 1.2.2 笔记背景 - type: heading - level: 3 - collapsed: true - - - id: background-image-settings-switch - title: Toggle note background image - title.zh: 开启笔记背景 - type: class-toggle - default: false - addCommand: true - - - id: toggle-nonoverlapping-bg - title: Activate non-overlapping note background when toggling workplace background - title.zh: 笔记背景和工作页面背景不重叠 - type: class-toggle - default: false - - - id: background-image-settings-markdown-page-options - title: Choose image set - title.zh: 选择背景 - type: class-select - allowEmpty: false - default: background-image-settings-markdown-page-transparent - options: - - - label: Transparent - value: background-image-settings-markdown-page-transparent - - - label: Custom - value: background-image-settings-markdown-page-custom - - - id: bg-markdown-page-opacity-cp - title: Opacity - title.zh: 笔记背景透明度 - type: variable-number-slider - default: 0.25 - min: 0 - max: 1 - step: 0.05 - - - id: custom-markdown-page-background-color - title: custom markdown page background color - title.zh: 自定义笔记背景颜色 - description.zh: 当背景色选择为custom时起作用。 - type: variable-themed-color - opacity: true - format: hex - default-light: '#a39b8f' - default-dark: '#000414' - - - id: background-markdown-page-theme-light-custom - title: Custom image (Light mode) - description: Customise the background image. Use the format in the Default below for an Online image. - description.zh: 需在上方选项种选择Custom,以自定义背景。使用Default内格式设置网络图片。 - type: variable-text - default: url("https://") - - - id: background-markdown-page-theme-dark-custom - title: Custom image (Dark mode) - description: Customise the background image. Use the format in the Default below for an Online image. - description.zh: 需在上方选项种选择Custom,以自定义背景。使用Default内格式设置网络图片。 - type: variable-text - default: url("https://") - - - - - - - id: background-notebook-liked-switch - title: Toggle notebook-liked background - title.zh: 开启笔记网格背景 - type: class-toggle - default: false - - - id: notebook-liked-markdown-page-options - title: Notebook-liked background - title.zh: 类笔记背景 - type: class-select - allowEmpty: false - default: notebook-liked-markdown-page-grid-notebook-1 - options: - - - label: Grid notebook 1 (@CZ-15/YZ-10) - value: notebook-liked-markdown-page-grid-notebook-1 - - - label: Grid notebook 2 - value: notebook-liked-markdown-page-grid-notebook-2 - - - label: Dotted notebook 1 - value: notebook-liked-markdown-page-dotted-notebook-1 - - - label: Dotted notebook 2 - value: notebook-liked-markdown-page-dotted-notebook-2 - - - label: Stripe notebook 1 - value: notebook-liked-markdown-page-stripe-notebook-1 - - - label: Stripe notebook 2 - value: notebook-liked-markdown-page-stripe-notebook-2 - - - id: toggle-fixed-pattern - title: Toggle fixed pattern - title.zh: 固定背景 - type: class-toggle - default: false - - - id: notebook-liked-background-settings - title: 1.2.2.1 Notebook-liked background options - title.zh: 1.2.2.1 类笔记样式背景设置 - type: heading - level: 4 - collapsed: true - - - id: toggle-split-note-background - title: Toggle background of split pane - title.zh: 取消侧边栏类笔记背景 - type: class-toggle - default: false - - - id: bg-color-notebook - title: Notebook background color - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: grid-notebook-line-color-1 - title: Grid notebook line color - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: grid-notebook-line-color-2 - title: Grid notebook line color for 'Grid 2' - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: dotted-notebook-dot-color - title: Dotted notebook dot color - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: stripe-notebook-stripe-color - title: Stripe notebook stripe color - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: background-settings-command-palette - title: 1.2.3 Images of command palette - title.zh: 1.2.3 命令面板背景 - type: heading - level: 3 - collapsed: true - - - id: background-image-settings-command-palette-switch - title: Toggle images of command palette - title.zh: 开启命令面板背景 - type: class-toggle - default: false - - - id: background-image-settings-command-palette-same-as-workplace - title: Same background as workplace's - title.zh: 与工作页面背景保持一致 - type: class-toggle - default: false - - - id: background-image-settings-command-palette-custom - title: Custom background image - title.zh: 自定义图片 - type: class-toggle - default: false - - - id: background-command-palette-theme-light-custom - title: Custom theme (light, url) - description: Customise the background image. Use the format in the Default below for an Online image. - description.zh: 需在上方选项种选择Custom,以自定义背景。使用Default内格式设置网络图片。 - type: variable-text - default: url("https://") - - - id: background-command-palette-theme-dark-custom - title: Custom theme (dark, url) - description: Customise the background image. Use the format in the Default below for an Online image. - description.zh: 需在上方选项种选择Custom,以自定义背景。使用Default内格式设置网络图片。 - type: variable-text - default: url("https://") - - - id: blur-depth-cp - title: Blur radius - title.zh: 模糊程度 - description: To adjust the radius of blur - description.zh: 调整背景壁纸模糊程度 - type: variable-number-slider - default: 10 - format: px - min: 0 - max: 30 - step: 1 - - - id: brightness-4-bg-cp - title: Brightness - title.zh: 图片亮度 - description: To adjust the brightness - description.zh: 调整背景壁纸亮度 - type: variable-number-slider - default: 0.9 - min: 0.3 - max: 1.5 - step: 0.1 - - - id: saturate-4-bg-cp - title: Saturation - title.zh: 图片饱和度 - description: To adjust the saturation - description.zh: 调整背景壁纸饱和度 - type: variable-number-slider - default: 1 - min: 0 - max: 2 - step: 0.1 - - - id: opacity-cp - title: Opacity - title.zh: 透明度 - type: variable-number-slider - default: 0.25 - min: 0 - max: 1 - step: 0.05 - - - id: background-settings-markdown-page - title: 1.2.4 File explorer background - title.zh: 1.2.4 文件栏背景 - type: heading - level: 3 - collapsed: true - - - id: toggle-bg-panel-page - title: Toggle background image - title.zh: 激活文件栏背景 - type: class-toggle - default: false - - - id: bg-panel-page-opacity-cp - title: Opacity - title.zh: 透明度 - type: variable-number-slider - default: 0.25 - min: 0 - max: 1 - step: 0.05 - - - id: bg-panel-page-option - title: Image picking (Light mode) - title.zh: 图片选择 (Light mode) - type: class-select - allowEmpty: false - default: panel-page-bg-theme-light-wall - options: - - - label: Wall - value: panel-page-bg-theme-light-wall - - - label: Custom - value: panel-page-bg-theme-light-custom - - - id: background-panel-page-theme-light-custom - title: Custom image (Light mode) - description: Customise the background image. Use the format in the Default below for an Online image. - description.zh: 需在上方选项种选择Custom,以自定义背景。使用Default内格式设置网络图片。 - type: variable-text - default: url("https://") - - - id: bg-panel-page-option-dark - title: Image picking (Dark mode) - title.zh: 图片选择 (Dark mode) - type: class-select - allowEmpty: false - default: panel-page-bg-theme-dark-plant - options: - - - label: Plant - value: panel-page-bg-theme-dark-plant - - - label: Custom - value: panel-page-bg-theme-dark-custom - - - id: background-panel-page-theme-dark-custom - title: Custom image (Dark mode) - description: Customise the background image. Use the format in the Default below for an Online image. - description.zh: 需在上方选项种选择Custom,以自定义背景。使用Default内格式设置网络图片。 - type: variable-text - default: url("https://") - - - id: layout-settings - title: 1.3 Layout - title.zh: 1.3 界面布局样式 - type: heading - level: 2 - collapsed: true - - - id: bt-colorful-titlebar - title: Colorful titlebar - title.zh: 开启顶部多彩标题栏样式 - type: class-toggle - default: false - - - id: background-titlebar-inner - title: Titlebar background color - title.zh: 标题栏背景颜色 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: left-ribbon-style - title: Left ribbon styles - title.zh: 左侧边栏样式选择 - type: class-select - allowEmpty: false - default: default-left-ribbon-style - options: - - - label: Fixed - value: default-left-ribbon-style - - - label: Hide to left - value: hide-left-ribbon - - - label: Hide to the left retention drawer - value: hide-left-ribbon-retention-drawer - - - label: Bubble - value: bt-bubble-ribbon - - - label: Bubble, hide to left - value: bt-bubble-ribbon-hide-left - - - id: ribbon-background - title: Left ribbon color - title.zh: 左侧边栏颜色 - type: variable-themed-color - opacity: false - format: hex - default-light: '#' - default-dark: '#' - - - id: ribbon-background-collapsed - title: Left ribbon color (collapsed) - title.zh: 左侧边栏颜色(关闭时) - type: variable-themed-color - opacity: false - format: hex - default-light: '#' - default-dark: '#' - - - id: hide-vault-name - title: Hide vault name - title.zh: 隐藏侧边栏中的库名称 - type: class-toggle - default: false - - - id: search-bar-style-option - title: Search bar style - title.zh: 文件内搜索栏位置 - type: class-select - allowEmpty: false - default: default-search-bar - options: - - - label: Default - value: default-search-bar - - - label: Bottom - value: bt-search-bar-bottom - - - id: bt-status-on - title: Fullwidth status bar - title.zh: 开启全宽状态栏 - type: class-toggle - default: false - - - id: scrollbar-style-option - title: Scrollbar style - title.zh: 滚动条样式 - type: class-select - allowEmpty: false - default: default-scrollbar - options: - - - label: Default - value: default-scrollbar - - - label: Hovering (adapted from @subframe7536's css snippet) - value: hover-scrollbars - - - label: Remove Scrollbar - value: remove-scrollbars - - - label: Obsidian default - value: native-scrollbars - - - id: scrollbar-thumb-bg - title: Scrollbar thumb background - title.zh: 滚动条滑块颜色 - type: variable-themed-color - opacity: false - format: hex - default-light: '#' - default-dark: '#' - - - id: scrollbar-active-thumb-bg - title: Scrollbar thumb background (Active) - title.zh: 滚动条滑块颜色 (选择时) - type: variable-themed-color - opacity: false - format: hex - default-light: '#' - default-dark: '#' - - - id: view-button-front - title: The view status button is placed in front of the header - title.zh: 视图切换按钮放置在文章标题前面 - type: class-toggle - default: false - - - id: tab-title-bar-position - title: The tab title bar positioned to the left - title.zh: Tab 导航栏位置放置左侧 - type: class-toggle - default: false - - - id: toggle-divider-lines - title: Toggle non-divided-line style - title.zh: 无分割线样式 - type: class-toggle - default: false - - - id: toggle-header-bottom-line - title: Toggle non-divided-line header box - title.zh: 无分割线文件标题框 - type: class-toggle - default: false - - - id: layout-style-options - title: Layout styles - title.zh: 界面布局样式选择 - type: class-select - allowEmpty: false - default: layout-style-options-default - options: - - - label: Default - value: layout-style-options-default - - - label: Rectangle - value: layout-style-options-rectangle - - - label: Asymmetric Style of Split Panes - value: asymmetric-split-left - - - label: Bubble - value: bt-bubble-layout - - - id: bt-bubble-settings - title: 1.3.1 Bubble settings - title.zh: 1.3.1 Bubble设置 - type: heading - level: 3 - collapsed: false - - - id: bt-bubble-not-file-tree - title: Enable card format for file browser - type: class-toggle - - - id: bt-bubble-layout-hide-borders - title: Remove borders of bubbles - type: class-toggle - - - id: bt-bubble-buttons - title: Toggle bubble buttons - type: class-toggle - - - id: bt-bubble-layout-padding - title: Bubble padding - type: variable-text - default: 8px - - - id: bt-bubble-radius - title: Bubble radius - type: variable-text - default: 15px - - - id: background-settings - title: 2. Detail settings - title.zh: 2. 细节设置 - type: heading - level: 1 - collapsed: false - - - id: color-settings - title: 2.1 Color settings - title.zh: 2.1 颜色设置 - type: heading - level: 2 - collapsed: true - - - id: text-normal - title: Main text color - type: variable-themed-color - opacity: false - format: hex - default-light: '#' - default-dark: '#' - - - id: background-color-settings - title: 2.1.1 Background colors - title.zh: 2.1.1 背景颜色设置 - type: heading - level: 3 - collapsed: true - - - id: background-primary-bg-4-bt - title: Background primary - description: background-primary-bg-4-bt - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: background-primary-alt-bg-4-bt - title: Background primary (alt) - description: background-primary-alt-bg-4-bt - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: background-secondary-bg-4-bt - title: Background secondary - description: background-secondary-bg-4-bt - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: background-secondary-alt-bg-4-bt - title: Background secondary (alt) - description: background-secondary-alt-bg-4-bt - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: background-modifier-border - title: Background modifier border - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: accent-color-settings - title: 2.1.2 Theme colors - title.zh: 2.1.2 主题色设置 - type: heading - level: 3 - collapsed: true - - - id: interactive-accent - title: Theme color - title.zh: 主题色 - description: interactive-accent - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: other-color-settings - title: 2.1.3 Other colors - title.zh: 2.1.3 其他颜色 - type: heading - level: 3 - collapsed: true - - - id: accent-strong - title: Bold type color - title.zh: 加粗颜色 - description: --accent-strong - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: accent-em - title: Italic type color - title.zh: 斜体颜色 - description: --accent-em - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: strong-em-color-1 - title: Bold italic color 1 - title.zh: 加粗斜体颜色 1 - description: --strong-em-color-1 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: strong-em-color-2 - title: Bold italic color 2 - title.zh: 加粗斜体颜色 2 - description: --strong-em-color-2 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: mjx-inline-math-color - title: Color of mathematical expressions (inline $x=0$) - title.zh: 数学表达式颜色(行内 $x=0$) - type: variable-themed-color - description: --mjx-inline-math-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: mjx-math-color - title: Color of mathematical expressions ($$x=0$$) - title.zh: 数学表达式颜色($$x=0$$) - description: --mjx-math-color - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: background-leaf-resize-handle - title: Color of leaf resize handle - title.zh: 页面大小调整条颜色 - description: --background-leaf-resize-handle - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: mjx-inline-math-color - title: Color of mathematical expressions (inline $x=0$) - title.zh: 数学表达式颜色(行内 $x=0$) - description: --mjx-inline-math-color - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: search-result-file-matched-bg - title: File search result highlight color - title.zh: 文件搜索结果高亮 - description: --search-result-file-matched-bg - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: text-search-highlight-bg - title: Text search result highlight color - title.zh: 文本搜索结果高亮 - description: --text-search-highlight-bg - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: text-selection - title: Text selection background - title.zh: 鼠标划选文字背景 - description: --text-selection - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: remove-selectionbackground - title: Toggle selection background (Non-text part) - title.zh: 还原鼠标划选时非文字部分背景颜色 - type: class-toggle - default: false - - - id: status-bar-bg - title: Status bar background - title.zh: 状态栏颜色 - description: --status-bar-bg - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: status-bar-text-color - title: Status bar text color - title.zh: 状态栏文字颜色 - description: --status-bar-text-color - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: icon-color-focused - title: Focused icon color - title.zh: 激活按钮的图标颜色 - description: --icon-color-focused - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: divider-color - title: Divider color - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: tab-outline-color - title: Tab outline color - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: graph-view-color-settings - title: 2.1.4 Graph-view colors - title.zh: 2.1.4 图谱颜色 - type: heading - level: 3 - collapsed: true - - - id: graph-canvas-bg - title: Graph-view canvas background - title.zh: 图谱背景颜色 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: graph-text-color - title: Graph-view text color - title.zh: 图谱文字颜色 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: graph-line - title: Graph-view line color - title.zh: 图谱线条颜色 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: graph-line-fill-highlight - title: Graph-view line highlight color (Hovering) - title.zh: 图谱线条激活颜色(鼠标悬浮) - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: graph-arrow - title: Graph-view arrow color - title.zh: 图谱箭头颜色 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: graph-circle-outline - title: Graph-view circle outline color - title.zh: 图谱圆点轮廓颜色 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: graph-circle - title: Graph-view normal circle color - title.zh: 图谱圆点颜色(默认) - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: graph-tag - title: Graph-view circle color (Tag) - title.zh: 图谱圆点颜色(标签) - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: graph-unresolved - title: Graph-view circle color (Unresolved) - title.zh: 图谱圆点颜色(未创建) - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: graph-attach - title: Graph-view circle color (Attachment) - title.zh: 图谱圆点颜色(附件) - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: graph-control-bg - title: Graph-view settings background color - title.zh: 图谱设置面板背景颜色 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: graph-circle-fill-highlight - title: Graph-view circle highlight color (Hovering) - title.zh: 图谱圆点激活颜色(鼠标悬浮) - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: font-settings - title: 2.2 Typography - title.zh: 2.2 排版 - type: heading - level: 2 - collapsed: true - - - id: font-settings - title: 2.2.1 Font family - title.zh: 2.2.1 字体设置 - type: heading - level: 3 - collapsed: true - - - id: font-family-change-to-default - title: Use Obsidian default font family - title.zh: 使用Obsidian默认字体 - type: class-toggle - default: false - - - id: font-text-theme - title: Main font - title.zh: 主体字体 - description: Fonts except from the code texts - description.zh: 除代码框外字体 - type: variable-text - default: "Bookerly,'Inter', 'Segoe UI','霞鹜文楷 GB', 'LXGW WenKai', 'Segoe UI Emoji',var(--font-interface)" - - - id: font-family-folder-file-title - title: Folder & file title - title.zh: 文件栏字体 - type: variable-text - default: "Arlrdbd, 'Source Han Sans', 'Noto Sans CJK', 'Source Sans Pro', 'Segoe UI Emoji', sans-serif" - - - id: font-monospace-theme - title: Codebox - title.zh: 代码框字体 - type: variable-text - default: "'JetBrains Mono', Consolas, Monaco, '等距更纱黑体 SC', 'Source Han Mono', 'Microsoft Yahei Mono', 'Segoe UI Emoji', 'Microsoft YaHei', 'Source Code Pro', monospace" - - - id: font-family-inline-code - title: Inline code - title.zh: 行内代码字体 - type: variable-text - default: var(--font-monospace-override), var(--font-monospace-theme) - - - id: font-family-tag - title: Tag - title.zh: 标签字体 - type: variable-text - default: "Bookerly, 'Microsoft YaHei', STzhongsong, STSong, 'Segoe UI Emoji', Serif" - - - id: font-family-strong - title: Bold text - title.zh: 加粗文字字体 - type: variable-text - default: "Bookerly,'Inter', 'Segoe UI', 'LXGW WenKai Screen', 'LXGW WenKai Screen R', '霞鹜文楷 GB', 'LXGW WenKai', 'Segoe UI Emoji', var(--font-interface)" - - - id: font-weight-strong - title: Bold text font weight - title.zh: 加粗文字样式 - description: type 'light, normal, bold, bolder; or 100-900' - type: variable-text - default: bold - - - id: font-family-em - title: Italic text - title.zh: 斜体文字字体 - type: variable-text - default: "var(--font-text-theme)" - - - id: font-style-em - title: Italic text style - title.zh: 斜体文字样式 - description: typy normal or italic - type: variable-text - default: italic - - - id: font-family-vault - title: Vault name - title.zh: 库名字体 - type: variable-text - default: "'Lucida Handwriting', 'Segoe UI Emoji'" - - - id: font-size-settings - title: 2.2.2 Font size - title.zh: 2.2.2 字体大小 - type: heading - level: 3 - collapsed: true - - - id: font-size-vault-name - title: Vault name - title.zh: 库名称大小 - type: variable-text - default: 0.95em - - - id: font-size-file-header-title - title: File Header (NOT for Sliding Pane plugin) - title.zh: 文件抬头标题 (非Sliding Pane plugin) - type: variable-text - default: 0.9375em - - - id: font-size-folder-and-file - title: Folder and file - title.zh: 左侧边栏文件字体大小 - type: variable-text - default: 0.85em - - - id: font-size-outline - title: Outline font size - title.zh: 大纲字体大小 - type: variable-text - default: 13px - - - id: font-size-code - title: Codeblock - title.zh: 代码框字体大小 - type: variable-text - default: 1em - - - id: font-size-latex - title: Mathematical expressions - title.zh: 数学公式字体大小 - type: variable-text - default: 1em - - - id: header-settings - title: 2.2.3 Headers - title.zh: 2.2.3 文内标题(H1-H6) - type: heading - level: 3 - collapsed: true - - - id: clutter-free-headings - title: Clutter free headings - title.zh: 编辑状态使用H1 H2 替代「#」(显示标题级别) - description: Adapted from https://github.com/deathau/obsidian-snippets/blob/main/clutter-free-headings.css - type: class-toggle - default: false - - - id: funny-header-anim - title: Funny header animation in live preview - title.zh: 编辑模式标题动画 - description: Adapted from https://cdn.discordapp.com/attachments/702656734631821413/1007258862606352424/FunnyHeaderAnimLP.css @sailKite - type: class-toggle - default: false - - - id: remove-heading-indicator - title: Remove H1-H6 Indicators before headings when hovering - title.zh: 移除鼠标悬浮时标题前的H1-H6 - type: class-toggle - default: false - - - id: retain-header-color - title: Retain header color - title.zh: 保留标题颜色 - description: Retain original color of headers when using italic, bold or bold italic within headers - type: class-toggle - default: false - - - id: h1-settings - title: 2.2.3.1 Header 1 - type: heading - level: 4 - collapsed: true - - - id: print-h1-color - title: Header 1 color - title.zh: 标题 1 颜色 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: h1-size - title: Header 1 size - title.zh: 标题 1 字体大小 - type: variable-text - default: 1.5625em - - - id: h1-font - title: Header 1 font family - title.zh: 标题 1 字体 - description: eg:var(--font-text-override),"Microsoft YaHei" - description.zh: 填入var(--font-text-override)调用Ob字体设置,填入"Microsoft YaHei" 为指定具体字体名称 - type: variable-text - default: "" - - - id: h1-toggle-underline - title: Toggle h1 underline - title.zh: 开启h1下划线 - type: class-toggle - default: false - - - id: h1-underline-width - title: Header 1 underline width - title.zh: 下划线宽度 - type: variable-text - default: 2px - - - id: h1-underline-style - title: Header 1 underline style - title.zh: 标题 1 下划线样式 - description: solid, double, dotted, dashed, groove, ridge - type: variable-text - default: solid - - - id: h1-underline-color - title: Header 1 underline color - title.zh: 标题 1 下划线颜色 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: h1-toggle-short-underline - title: Toggle h1 underline (Shorter) - title.zh: 开启h1下划线 (短线) - type: class-toggle - default: false - - - id: header-1-background - title: Toggle h1 Background - title.zh: 开启h1背景颜色 - type: class-toggle - default: false - - - id: h1-bg-color - title: h1 bg - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: h1-weight - title: h1 font weight - type: variable-text - default: bold - - - id: h1-line-height - title: Header 1 line height - title.zh: 标题 1 行高 - type: variable-number - default: 1.2 - - - id: h1-text-align-settings - title: h1 Text-align - title.zh: h1 位置 - type: class-select - allowEmpty: false - default: h1-text-align-start - options: - - - label: Default (Left/Start) - value: h1-text-align-start - - - label: Center - value: h1-text-align-center - - - label: Right/End - value: h1-text-align-end - - - id: h2-settings - title: 2.2.3.2 Header 2 - type: heading - level: 4 - collapsed: true - - - id: print-h2-color - title: Header 2 color - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: h2-size - title: Header 2 size - title.zh: 标题 2 字体大小 - type: variable-text - default: 1.4375em - - - id: h2-font - title: Header 2 font family - title.zh: 标题 2 字体 - description: eg:var(--font-text-override),"Microsoft YaHei" - description.zh: 填入var(--font-text-override)调用Ob字体设置,填入"Microsoft YaHei" 为指定具体字体名称 - type: variable-text - default: "" - - - id: h2-toggle-underline - title: toggle h2 underline - title.zh: 开启h2下划线 - type: class-toggle - default: false - - - id: h2-underline-width - title: Header 2 underline width - title.zh: 下划线宽度 - type: variable-text - default: 1px - - - id: h2-underline-style - title: Header 2 underline style - title.zh: 标题 2 下划线样式 - description: solid, double, dotted, dashed, groove, ridge - type: variable-text - default: solid - - - id: h2-underline-color - title: Header 2 underline color - title.zh: 标题 2 下划线颜色 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: h2-toggle-short-underline - title: Toggle h2 underline (Shorter) - title.zh: 开启h2下划线 (短线) - type: class-toggle - default: false - - - id: header-2-background - title: Toggle h2 background - title.zh: 开启h2背景颜色 - type: class-toggle - default: false - - - id: h2-bg-color - title: h2 background color - title.zh: 标题 2 背景颜色 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: h2-weight - title: h2 font weight - title.zh: 标题 2 字重 - type: variable-text - default: bold - - - id: h2-text-align-settings - title: h2 text-align - title.zh: h2 位置 - type: class-select - allowEmpty: false - default: h2-text-align-start - options: - - - label: Default (Left/Start) - value: h2-text-align-start - - - label: Center - value: h2-text-align-center - - - label: Right/End - value: h2-text-align-end - - - id: h3-settings - title: 2.2.3.3 Header 3 - type: heading - level: 4 - collapsed: true - - - id: print-h3-color - title: Header 3 color - title.zh: 标题 3 颜色 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: h3-size - title: Header 3 size - title.zh: 标题 3 字体大小 - type: variable-text - default: 1.3125em - - - id: h3-font - title: Header 3 font family - title.zh: 标题 3 字体 - type: variable-text - default: "" - - - id: h3-toggle-underline - title: toggle h3 underline - title.zh: 开启h3下划线 - type: class-toggle - default: false - - - id: h3-underline-width - title: Header 6 underline width - title.zh: 下划线宽度 - type: variable-text - default: 1px - - - id: h3-underline-style - title: Header 3 underline style - title.zh: 标题 3 下划线样式 - description: solid, double, dotted, dashed, groove, ridge - type: variable-text - default: solid - - - id: h3-underline-color - title: Header 3 underline color - title.zh: 标题 3 下划线颜色 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: h3-toggle-short-underline - title: Toggle h3 underline (Shorter) - title.zh: 开启h3下划线 (短线) - type: class-toggle - default: false - - - id: header-3-background - title: Toggle h3 Background - title.zh: 开启h3背景颜色 - type: class-toggle - default: false - - - id: h3-bg-color - title: h3 background color - title.zh: 标题 3 背景颜色 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: h3-weight - title: h3 font weight - title.zh: 标题 3 字重 - type: variable-text - default: bold - - - id: h3-text-align-settings - title: h3 text-align - title.zh: h3 位置 - type: class-select - allowEmpty: false - default: h3-text-align-start - options: - - - label: Default (Left/Start) - value: h3-text-align-start - - - label: Center - value: h3-text-align-center - - - label: Right/End - value: h3-text-align-end - - - id: h4-settings - title: 2.2.3.4 Header 4 - type: heading - level: 4 - collapsed: true - - - id: print-h4-color - title: Header 4 color - title.zh: 标题 4 颜色 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: h4-size - title: Header 4 size - title.zh: 标题 4 字体大小 - type: variable-text - default: 1.1875em - - - id: h4-font - title: Header 4 font family - title.zh: 标题 4 字体 - type: variable-text - default: "" - - - id: h4-toggle-underline - title: toggle h4 underline - title.zh: 开启H4下划线 - type: class-toggle - default: false - - - id: h4-underline-width - title: Header 4 underline width - title.zh: 下划线宽度 - type: variable-text - default: 1px - - - id: h4-underline-style - title: Header 4 underline style - title.zh: 标题 4 下划线样式 - description: solid, double, dotted, dashed, groove, ridge - type: variable-text - default: solid - - - id: h4-underline-color - title: Header 4 underline color - title.zh: 标题 4 下划线颜色 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: h4-toggle-short-underline - title: Toggle h4 underline (Shorter) - title.zh: 开启h4下划线 (短线) - type: class-toggle - default: false - - - id: header-4-background - title: Toggle h4 Background - title.zh: 开启h4背景颜色 - type: class-toggle - default: false - - - id: h4-bg-color - title: h4 background color - title.zh: 标题 4 背景颜色 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: h4-weight - title: h4 font weight - title.zh: 标题 4 字重 - type: variable-text - default: bold - - - id: h4-text-align-settings - title: h4 text-align - title.zh: h4 位置 - type: class-select - allowEmpty: false - default: h4-text-align-start - options: - - - label: Default (Left/Start) - value: h4-text-align-start - - - label: Center - value: h4-text-align-center - - - label: Right/End - value: h4-text-align-end - - - id: h5-settings - title: 2.2.3.5 Header 5 - type: heading - level: 4 - collapsed: true - - - id: print-h5-color - title: Header 5 color - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: h5-size - title: Header 5 size - title.zh: 标题 5 字体大小 - type: variable-text - default: 1.0625em - - - id: h5-font - title: Header 5 font family - title.zh: 标题 5 字体 - type: variable-text - default: "" - - - id: h5-toggle-underline - title: toggle h5 underline - title.zh: 开启H5下划线 - type: class-toggle - default: false - - - id: h5-underline-width - title: Header 5 underline width - title.zh: 下划线宽度 - type: variable-text - default: 1px - - - id: h5-underline-style - title: Header 5 underline style - title.zh: 标题 5 下划线样式 - description: solid, double, dotted, dashed, groove, ridge - type: variable-text - default: solid - - - id: h5-underline-color - title: Header 5 underline color - title.zh: 标题 5 下划线颜色 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: h5-toggle-short-underline - title: Toggle h5 underline (Shorter) - title.zh: 开启H5下划线 (短线) - type: class-toggle - default: false - - - id: header-5-background - title: Toggle h5 Background - title.zh: 开启h5背景颜色 - type: class-toggle - default: false - - - id: h5-bg-color - title: h5 background color - title.zh: 标题 5 背景颜色 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: h5-weight - title: h5 font weight - title.zh: 标题 5 字重 - type: variable-text - default: bold - - - id: h5-text-align-settings - title: h5 text-align - title.zh: h5 位置 - type: class-select - allowEmpty: false - default: h5-text-align-start - options: - - - label: Default (Left/Start) - value: h5-text-align-start - - - label: Center - value: h5-text-align-center - - - label: Right/End - value: h5-text-align-end - - - id: h6-settings - title: 2.2.3.6 Header 6 - type: heading - level: 4 - collapsed: true - - - id: print-h6-color - title: Header 6 color - title.zh: 标题 6 颜色 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: h6-size - title: Header 6 size - title.zh: 标题 6 字体大小 - type: variable-text - default: 1em - - - id: h6-font - title: Header 6 font family - title.zh: 标题 6 字体 - type: variable-text - default: "" - - - id: h6-toggle-underline - title: Toggle h6 underline - title.zh: 开启h6下划线 - type: class-toggle - default: false - - - id: h6-underline-width - title: Header 6 underline width - title.zh: 下划线宽度 - type: variable-text - default: 1px - - - id: h6-underline-style - title: Header 6 underline style - title.zh: 标题 6 下划线样式 - description: solid, double, dotted, dashed, groove, ridge - type: variable-text - default: solid - - - id: h6-underline-color - title: Header 6 underline color - title.zh: 标题 6 下划线颜色 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: h6-toggle-short-underline - title: Toggle h6 underline (Shorter) - title.zh: 开启h6下划线 (短线) - type: class-toggle - default: false - - - id: header-6-background - title: Toggle h6 background - title.zh: 开启h6背景颜色 - type: class-toggle - default: false - - - id: h6-bg-color - title: h6 background color - title.zh: 标题 6 背景颜色 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: h6-weight - title: h6 font weight - title.zh: 标题 6 字重 - type: variable-text - default: bold - - - id: h6-text-align-settings - title: h6 text-align - title.zh: h6 位置 - type: class-select - allowEmpty: false - default: h6-text-align-start - options: - - - label: Default (Left/Start) - value: h6-text-align-start - - - label: Center - value: h6-text-align-center - - - label: Right/End - value: h6-text-align-end - - - id: other-typography-settings - title: 2.2.4 Other typography settings - title.zh: 2.2.4 其他排版设置 - type: heading - level: 3 - collapsed: true - - - id: file-line-width - title: Line width (in the mode of 'readable line length') - title.zh: 行宽(缩减栏宽模式下) - description: The maximum line width in rem units (1rem = Body font size) - type: variable-number - default: 45 - format: rem - - - id: line-height-main - title: Line height - title.zh: 行间距 - type: variable-number - default: 1.5 - - - id: toggle-paragraph-spacing - title: Toggle paragraph spacing in reading mode - title.zh: 开启阅读模式段间距 - description.zh: 开启后对多个
    标记不再生效 - type: class-toggle - default: false - - - id: paragraph-spacing - title: Paragraph spacing - title.zh: 段间距 - type: variable-number-slider - default: 1 - min: 0 - max: 2 - step: 0.1 - - - id: letter-space-main - title: Letter spacing - title.zh: 字间距 - type: variable-number-slider - default: 0 - min: 0 - max: 2 - step: 0.1 - - - id: text-indentation-two-em - title: Slight indentation of the first line - title.zh: 段落首行缩进 - description.zh: 开启全局生效,单独生效只需要在,笔记yaml声明cssclass:indent。阅读模式缩进效果需要安装Contextual Typography插件 - description: Enable global effect, local effect only need to declare "cssclass:indent" in the YAML area. Contextual Typography plugin needs to be installed in Reading mode. - type: class-toggle - default: false - addCommand: true - - - id: justify-align - title: Alignment of both ends - title.zh: 段落两端对齐 - description.zh: 开启全局生效,单独生效只需要在,笔记yaml声明cssclass:text-justify。 - description: Enable global effect, local effect only need to declare "cssclass:text-justify" in the YAML area. - type: class-toggle - default: false - addCommand: true - - - id: reduce-bottom-padding - title: Reduce padding bottom of pages - title.zh: 缩减笔记下方预留空白大小 - type: class-toggle - default: false - - - id: bottom-padding-value - title: Adjust padding bottom of pages - title.zh: 调整笔记下方预留空白大小 - type: variable-text - default: 0em - - - id: toggle-left-aligned-content - title: Toggle Left-aligned note content - title.zh: 开启笔记内容居左 - description.zh: 开启后内容整体居左,而不是默认居中 - description: Left-aligned content when turned on, instead of centered by default - type: class-toggle - default: false - - - id: other-typography-settings - title: 2.2.5 *.md file in split pane - title.zh: 2.2.5 侧面拆分面板中的md文件 - type: heading - level: 3 - collapsed: true - - - id: font-size-split - title: Font size - title.zh: 字体大小 - type: variable-text - default: 0.85em - - - id: line-height-split - title: Line height - title.zh: 行间距 - type: variable-number - default: 1.3 - - - id: default-split-style - title: Toggle default style - title.zh: 切换默认样式 - type: class-toggle - default: false - - - id: inline-title-settings - title: 2.2.6 Inline title - title.zh: 2.2.6 页面内标题 - type: heading - level: 3 - collapsed: true - - - id: inline-title-font - title: Inline title font - title.zh: 页面内文件名字体 - type: variable-text - default: "" - - - id: inline-title-color - title: Inline title color - title.zh: 页面内标题颜色 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: inline-title-size - title: Inline title size - title.zh: 页面内标题字体大小 - type: variable-text - default: 1.5625em - - - id: inline-title-line-height - title: Inline title line height - title.zh: 页面内标题行间距 - type: variable-number - default: 1.2 - - - id: inline-title-weight - title: Inline title weight - title.zh: 页面内标题字重 - type: variable-text - default: "700" - - - id: inline-title-toggle-underline - title: Toggle underline - title.zh: 开启页面内标题下划线 - type: class-toggle - default: false - - - id: inline-title-underline-width - title: Inline title underline width - title.zh: 页面内标题下划线宽度 - type: variable-text - default: 2px - - - id: inline-title-underline-style - title: Inline title underline style - title.zh: 页面内标题下划线样式 - description: solid, double, dotted, dashed, groove, ridge - type: variable-text - default: solid - - - id: inline-title-underline-color - title: Inline title underline color - title.zh: 页面内标题下划线颜色 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: inline-title-toggle-short-underline - title: Toggle underline (Shorter) - title.zh: 开启页面内标题下划线 (短线) - type: class-toggle - default: false - - - id: toggle-inline-title-background - title: Toggle inline title background - title.zh: 开启页面内标题背景颜色 - type: class-toggle - default: false - - - id: inline-title-bg-color - title: Inline title background color - title.zh: 页面内标题背景颜色 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: inline-title-bg-url - title: Inline title background image (url) - title.zh: 页面内标题背景图片 (url) - type: variable-text - default: "url(https://)" - - - id: inline-title-text-align-settings - title: Inline title text-align - title.zh: 页面内标题位置 - type: class-select - allowEmpty: false - default: inline-title-text-align-start - options: - - - label: Default (Left/Start) - value: inline-title-text-align-start - - - label: Center - value: inline-title-text-align-center - - - label: Right/End - value: inline-title-text-align-end - - - id: style-change-options - title: 2.3 Element styles - title.zh: 2.3 其他元素样式 - type: heading - level: 2 - collapsed: true - - - id: activeline-background - title: Active line background color - title.zh: 所在行高亮颜色 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: muted-activeline-bg - title: Mute active line - title.zh: 取消所在行高亮 - type: class-toggle - default: false - - - id: plain-file-title - title: Remove colorful background of active file title - title.zh: 取消激活文件标题的彩色背景 - description: Make it austere - type: class-toggle - default: false - - - id: title-justify-start - title: Toggle title navigation bar position to left - title.zh: 标题导航栏左对齐 - type: class-toggle - default: false - - - id: fancy-hr-folder - title: 2.3.1 Dividing line (Horizontal ruler, hr, ---) - title.zh: 2.3.1 分割线(hr,---) - type: heading - level: 3 - collapsed: true - - - id: fancy-hr - title: Fancy Dividing line (Horizontal ruler, hr, ---) - title.zh: 装饰性分割线(hr,---) - type: class-select - allowEmpty: false - default: default-hr - options: - - - label: Default - value: default-hr - - - label: with icons - value: fancy-hr-icon - - - label: without icons - value: fancy-hr-no-icon - - - label: with Numbers - value: fancy-hr-number - - - id: fancy-hr-folder-icon - title: 2.3.1.1 w/ icons - title.zh: 2.3.1.1 有图标的hr - type: heading - level: 4 - collapsed: true - - - id: hr-color-icon-1 - title: Line color 1 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: hr-color-icon-2 - title: Line color 2 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: hr-color-icon-3 - title: Line color 3 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: hr-color-icon-4 - title: Line color 4 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: fancy-hr-icon - title: Centre icon - title.zh: 分割线中间图标 - description: Do not remove the quotes - description.zh: 保留引号 - type: variable-text - default: "'😀'" - - - id: fancy-hr-rotate - title: Degree of icon rotation - title.zh: 图标旋转角度 - type: variable-number - default: 0 - format: deg - - - id: fancy-hr-folder-no-icon - title: 2.3.1.2 w/o icons - title.zh: 2.3.1.2 没有图标的hr - type: heading - level: 4 - collapsed: true - - - id: hr-color-1 - title: hr-color-1 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: hr-color-2 - title: hr-color-2 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: hr-color-3 - title: hr-color-3 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: hr-color-4 - title: hr-color-4 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: fancy-hr-folder-with-number - title: 2.3.1.3 w/ numbers - title.zh: 2.3.1.3 带数字的hr - type: heading - level: 4 - collapsed: true - - - id: hr-color-numbers-line-1 - title: Line color 1 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: hr-color-numbers-line-2 - title: Line color 2 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: hr-color-numbers-line-3 - title: Line color 3 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: hr-color-numbers-line-4 - title: Line color 4 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: hr-color-numbers-color - title: Number color - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: hr-color-numbers-bg-color - title: Number background color - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: hollow-number - title: Toggle hollow numbers - title.zh: 切换空心数字 - type: class-toggle - default: false - - - id: hr-numbers-text-fill - title: Fill color - title.zh: 数字颜色 - description: Color inside the numbers - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: hr-numbers-text-stroke - title: Stroke color - title.zh: 线条颜色 - description: Color of lines drawn around numbers - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: list-style-change-options-folder - title: 2.3.2 List - title.zh: 2.3.2 列表 - type: heading - level: 3 - collapsed: true - - - id: line-height-list - title: Line height of list - title.zh: 列表行间距 - type: variable-number-slider - default: 1.4 - min: 1 - max: 2 - step: 0.1 - - - id: list-spacing-bt - title: List Spacing - title.zh: 列表项间距 - type: variable-number-slider - default: 1 - min: 0 - max: 10 - step: 0.2 - - - id: list-indent - title: List indent - title.zh: 列表缩进间距 - type: variable-number-slider - default: 2 - format: em - min: 0 - max: 6 - step: 0.1 - - - id: list-style-change-options-folder - title: 2.3.2.1 Unordered list - title.zh: 2.3.2.1 无序列表 - type: heading - level: 4 - collapsed: true - - - id: colorful-unordered-list - title: Toggle colorful unordered list marker - title.zh: 启用彩色无序列表符号 - type: class-toggle - default: false - - - id: unordered-list-style-options - title: Unordered list marker style - title.zh: 无序列表样式 - type: class-select - allowEmpty: false - default: bt-default-unordered-list - options: - - - label: Blue Topaz Default - value: bt-default-unordered-list - - - label: Custom - value: custom-unordered-list - - - label: Obsidian default - value: default-list-marker - - - id: options-bt-default - title: 2.3.2.1.1 Options for 'Blue Topaz Default' - type: heading - level: 5 - collapsed: true - - - id: list-ul-marker-size - title: Bullet size - title.zh: 符号大小 - type: variable-text - default: 1em - - - id: list-ul-marker-color - title: Text color (1st level) - title.zh: 符号颜色(第一层) - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: options-for-custom - title: 2.3.2.1.2 Options for 'Custom' - type: heading - level: 5 - collapsed: true - - - id: list-ul-marker-1 - title: List symbol (1st level) - title.zh: 符号(第一层) - type: variable-text - default: '"\2022"' - - - id: list-ul-marker-size-1 - title: Bullet size (1st level) - title.zh: 符号大小(第一层) - type: variable-text - default: 1em - - - id: list-ul-marker-color-1 - title: Bullet color (1st level) - title.zh: 符号颜色(第一层) - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: list-ul-marker-2 - title: List symbol (2nd level) - title.zh: 符号(第二层) - type: variable-text - default: '"\25E6"' - - - id: list-ul-marker-size-2 - title: Bullet size (2nd level) - title.zh: 符号大小(第二层) - type: variable-text - default: 1em - - - id: list-ul-marker-color-2 - title: Bullet color (2nd level) - title.zh: 符号颜色(第二层) - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: list-ul-marker-3 - title: List symbol (3rd level) - title.zh: 符号(第三层) - type: variable-text - default: '"\25AA"' - - - id: list-ul-marker-size-3 - title: Bullet size (3rd level) - title.zh: 符号大小(第三层) - type: variable-text - default: 1em - - - id: list-ul-marker-color-3 - title: Bullet color (3rd level) - title.zh: 符号颜色(第三层) - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: list-ul-marker-4 - title: List symbol (4th level) - title.zh: 符号(第四层) - type: variable-text - default: '"\25E6"' - - - id: list-ul-marker-size-4 - title: Bullet size (4th level) - title.zh: 符号大小(第四层) - type: variable-text - default: 1em - - - id: list-ul-marker-color-4 - title: Bullet color (4th level) - title.zh: 符号颜色(第四层) - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: list-style-change-options-folder - title: 2.3.2.2 Ordered list - title.zh: 2.3.2.2 有序列表 - type: heading - level: 4 - collapsed: false - - - id: colorful-ordered-list - title: Toggle colorful ordered list marker - title.zh: 启用彩色有序列表符号 - type: class-toggle - default: false - - - id: ordered-list-style-options - title: Ordered List marker style - title.zh: 有序列表样式 - type: class-select - allowEmpty: false - default: default-ol-list-marker - options: - - - label: Custom - value: custom-ordered-list - - - label: 1.1.1 - value: ordered-list-style-1 - - - label: Obsidian default - value: default-ol-list-marker - - - id: list-ol-number-color - title: Number color of ordered list - title.zh: 有序列表数字颜色 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: list-ol-marker-1 - title: List symbol (1st level) - title.zh: 有序列表第一层符号 - description: 数字:decimal,小写字母:lower-latin,小写罗马数字:lower-roman - type: variable-text - default: decimal - - - id: list-ol-marker-2 - title: List symbol (2nd level) - title.zh: 有序列表第二层符号 - description: 数字:decimal,小写字母:lower-latin,小写罗马数字:lower-roman - type: variable-text - default: lower-latin - - - id: list-ol-marker-3 - title: List symbol (3rd level) - title.zh: 有序列表第三层符号 - description: 数字:decimal,小写字母:lower-latin,小写罗马数字:lower-roman - type: variable-text - default: lower-roman - - - id: list-ol-marker-4 - title: List symbol (4th level) - title.zh: 有序列表第四层符号 - description: 数字:decimal,小写字母:lower-latin,小写罗马数字:lower-roman - type: variable-text - default: decimal - - - id: list-style-change-options - title: List style in reading view - title.zh: 阅读视图列表样式 - type: class-select - allowEmpty: false - default: list-no-border - options: - - - label: Bracket 1 - value: list-bracket-style - - - label: Bracket 2 (1.1.1) - value: list-bracket-style-two - - - label: Bracket 3 - value: list-bracket-style-three - - - label: Vertical line 1 (1.1.1) - value: list-vertical-line-one - - - label: Using Ob Settings - value: list-no-border - - - id: indentation-line-styles - title: 2.3.2.3 Indentation lines - title.zh: 2.3.2.3 层级线设置 - type: heading - level: 4 - collapsed: false - - - id: bt-connected-indent-hover - title: Toggle connected indent (Hovering) - title.zh: 启用Connected indent lines(鼠标悬浮) - description: Inspired from the CSS snippet by KillyMXI (https://gist.github.com/KillyMXI/cbef8edff6dd55d9e6ea4df66567e9b1) - type: class-toggle - default: true - - - id: bt-connected-indent-line-color - title: Connected indent line color (Hovering) - type: variable-themed-color - format: hex - opacity: true - default-light: '#FFA8A8' - default-dark: '#926a6a' - - - id: bt-colorful-connected-indent-hover - title: Toggle colorful indentation lines (Hovering) - title.zh: 启用彩色Connected indent lines(鼠标悬浮) - type: class-toggle - default: true - - - id: bt-indentation-width-hover - title: Width of indentation lines (Hovering) - title.zh: 层级线宽度 (Hovering) - type: variable-text - default: 3px - - - id: bt-list-indentation-margin-left-editing - title: Move to right by ?px (Editing) - title.zh: 向右移动 ?px (Editing) - type: variable-text - default: 1px - - - id: indentation-guide-color - title: Inactive line color (Editing) - type: variable-themed-color - format: rgb - opacity: true - default-light: 'rgba(0, 0, 0, 0.06)' - default-dark: 'rgba(255, 255, 255, 0.08)' - - - id: indentation-guide-color-active - title: Active line color (Editing) - type: variable-themed-color - format: rgb - opacity: true - default-light: 'rgba(0, 0, 0, 0.14)' - default-dark: 'rgba(255, 255, 255, 0.17)' - - - id: bt-colorful-indentation-lines-editing - title: Toggle colorful indentation lines (Editing) - title.zh: 启用彩色层级线 (编辑) - type: class-toggle - default: false - - - id: indentation-guide-width - title: Indent line width (Editing) - type: variable-number - default: 1 - format: px - - - id: bt-list-indentation-margin-left-reading - title: Move to right by ?px (Reading) - title.zh: 向右移动 ?px (Reading) - type: variable-text - default: 1px - - - id: bt-colorful-indentation-lines - title: Toggle colorful indentation lines (Reading) - title.zh: 启用彩色层级线 (阅读) - type: class-toggle - default: false - - - id: bt-colorful-indentation-line-options - title: Line styles (Reading) - title.zh: 层级线样式 (阅读) - type: class-select - allowEmpty: false - default: default-indentation-line - options: - - - label: Default - value: default-indentation-line - - - label: Gradient - value: bt-indentation-line-gradient - - - label: Image - value: bt-indentation-line-image - - - id: bt-indentation-gradient-color-1 - title: Indentation gradient color 1 - type: variable-themed-color - format: hex - opacity: true - default-light: '#' - default-dark: '#' - - - id: bt-indentation-gradient-color-2 - title: Indentation gradient color 2 - type: variable-themed-color - format: hex - opacity: true - default-light: '#' - default-dark: '#' - - - id: bt-colorful-indentation-width - title: Width of colorful indentation lines (Reading) - title.zh: 彩色层级线宽度 (阅读) - type: variable-text - default: 1px - - - id: bt-indentation-line-image - title: Add an image as indentation lines (Reading) - title.zh: 层级线背景图片 (阅读) - type: variable-text - default: url("https://") - - - id: folder-style-change-options-folder - title: 2.3.3 Folder - title.zh: 2.3.3 文件夹 - type: heading - level: 3 - collapsed: true - - - id: file-bg-shape-option - title: File background shape - title.zh: 文件背景形状 - type: class-select - allowEmpty: false - default: file-shape-default - options: - - - label: Rectangle - value: file-shape-default - - - label: Rounded Rectangle - value: file-bg-rounded-rectangle - - - label: Pill - value: file-bg-pill - - - id: file-name-style-option - title: File name style - title.zh: 文件名样式 - type: class-select - allowEmpty: false - default: file-name-non-wrapped - options: - - - label: Wrapped - value: file-name-wrapped - - - label: Non-wrapped - value: file-name-non-wrapped - - - label: File Name Scrolling When Hovering - value: file-name-animation - - - id: dark-background-file - title: Dark file background - title.zh: 当前文件背景变深 - type: class-toggle - default: false - - - id: unmuted-collapsed-folder - title: Unmute collapsed folder - title.zh: 未激活文件夹不再黯淡 - description: To normalize opacity of collapsed folder - description.zh: 统一激活/未激活文件夹亮度 - type: class-toggle - default: false - - - id: remove-file-icons - title: Remove file icons - title.zh: 移除文件前图标 - description: To remove the icons before .md files - description.zh: 移除md文件前图标 - type: class-toggle - default: false - - - id: text-folder-file-icon - title: Color of file icons - title.zh: 文件前图标颜色 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: folder-icons - title: Activate Folder Icons - title.zh: 激活文件夹图标 - type: class-toggle - default: true - - - id: remove-arrow - title: Folder Icons w/o arrows (Collapse Indicator) - title.zh: 文件夹图标开启后,移除箭头图标(折叠图标) - description: To be effective after toggling the option above - description.zh: 开启上面选项后起效 - type: class-toggle - default: true - - - id: remove-first-folder-icon - title: Remove the first-layer folder icons - title.zh: 去除第一层文件夹前图标 - type: class-toggle - default: true - - - id: folder-style-change-options-colorful-folder - title: 2.3.3.1 Colorful folder - title.zh: 2.3.3.1 多彩文件夹 - type: heading - level: 4 - collapsed: false - - - id: bt-toggle-colorful-folder - title: Toggle colorful folders - title.zh: 启用彩色文件夹 - type: class-toggle - default: true - - - id: folder-style-change-options-colorful - title: Select folder colorful mode - title.zh: 彩色化类型 - type: class-select - allowEmpty: false - default: folder-style-change-options-colorful-tab-liked - options: - - - label: Default non-colorful - value: folder-style-change-options-colorful-default - - - label: folder colorful with "0-9" or "A-Z" - value: folder-style-change-options-colorful - - - label: folder colorful by order - value: folder-style-change-options-colorful-order - - - label: folder title colorful - value: folder-style-change-options-colorful-title - - - label: Tab-liked - value: folder-style-change-options-colorful-tab-liked - - - id: folder-style-change-options-colorful-subfolder - title: Folder color palette - title.zh: 文件夹配色 - type: class-select - allowEmpty: false - default: folder-colorful-six - options: - - - label: Style 1 (high transparency) - value: folder-colorful-one - - - label: Style 2 (low transparency) - value: folder-colorful-two - - - label: Style 3 - value: folder-colorful-three - - - label: Style 4 - value: folder-colorful-four - - - label: Style 5 - value: folder-colorful-five - - - label: Style 6 - value: folder-colorful-six - - - label: Custom - value: folder-colorful-custom - - - id: folder-colorful-custom-color - title: Custom color of folder - title.zh: 自定义文件夹配色 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: blockquote-style-change-options-folder - title: 2.3.4 Blockquote - title.zh: 2.3.4 引用框 - type: heading - level: 3 - collapsed: true - - - id: blockquote-style-change-options - title: Blockquote - title.zh: 引用框样式 - type: class-select - allowEmpty: false - default: blockquote-style-default - options: - - - label: Default - value: blockquote-style-default - - - label: With quotation mark - value: blockquote-style-quotation-mark - - - label: Speech Bubble 1 - value: blockquote-style-speech-bubble-one - - - label: Speech Bubble 2 - value: blockquote-style-speech-bubble-two - - - label: Outline - value: blockquote-style-outline - - - label: Border left - value: blockquote-style-border-left - - - id: pdf-style - title: 2.3.5 Exported PDF style - title.zh: 2.3.5 PDF样式 - type: heading - level: 3 - collapsed: true - - - id: export-pdf-style-folder - title: Exported PDF style - title.zh: PDF导出样式 - type: heading - level: 4 - collapsed: true - - - id: hr-for-pagination - title: Use hr (---) for paging - title.zh: 使用分隔符(---)分页 - type: class-toggle - default: false - - - id: all-dark-pdf - title: All dark (Experimental, may or may not be desirable) - description: Export PDF with dark mode color scheme - description.zh: 导出黑暗配色的PDF - type: class-toggle - default: false - - - id: show-url-after-link - title: Print URL after links - title.zh: 显示地址超链接 - type: class-toggle - default: false - - - id: print-strong-color - title: Strong color - title.zh: 粗体颜色 - type: variable-themed-color - opacity: false - format: hex - default-light: '#' - default-dark: '#' - - - id: print-em-color - title: Italic type color - title.zh: 斜体颜色 - type: variable-themed-color - opacity: false - format: hex - default-light: '#' - default-dark: '#' - - - id: pdf-view-style - title: PDF View - title.zh: PDF 文件浏览样式 - type: heading - level: 4 - collapsed: true - - - id: ob-pdf-style-selection-light - title: PDF styles (Light) - title.zh: PDF 样式 (明亮) - type: class-select - allowEmpty: false - default: pdf-style-default-light - options: - - - label: Default - value: pdf-style-default-light - - - label: Invert colors - value: pdf-style-invert-color-light - - - label: Green - value: pdf-style-green-bg-light - - - label: Warm - value: pdf-style-warm-bg-light - - - label: Custom - value: pdf-style-custom-bg - - - id: ob-pdf-style-selection-dark - title: PDF styles (Dark) - title.zh: PDF 样式 (黑暗) - type: class-select - allowEmpty: false - default: pdf-style-default-dark - options: - - - label: Default - value: pdf-style-default-dark - - - label: Invert colors - value: pdf-style-invert-color-dark - - - label: Green - value: pdf-style-green-bg-dark - - - label: Warm - value: pdf-style-warm-bg-dark - - - label: Custom - value: pdf-style-custom-bg - - - id: custom-bg-pdf-style - title: Custom PDF background - title.zh: 自定义PDF背景颜色 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: embed-folder - title: 2.3.6 Embeds - title.zh: 2.3.6 嵌入样式 - type: heading - level: 3 - collapsed: true - - - id: adjustable-embed-content-height - title: Fixed embedded content height - title.zh: 固定嵌入页面高度 - type: class-toggle - default: false - - - id: embed-content-height - title: Height of embedded content - title.zh: 嵌入页面高度 - description: Switch on the above button to activate - type: variable-number - default: 600 - format: px - - - id: naked-embed - title: Transparent embedded background - title.zh: 嵌入背景透明 - type: class-toggle - default: false - - - id: hide-embed-title - title: Hide embedded title - title.zh: 隐藏嵌入文档标题 - type: class-toggle - default: false - - - id: hide-embed-banner - title: Hide embedded banner - title.zh: 隐藏嵌入文档banner - type: class-toggle - default: false - - - id: embed-hd - title: Hide embedded headers - title.zh: 隐藏嵌入文档中的H1 H2 H3标题 - type: class-toggle - default: false - - - id: embed-hover - title: Floating effect of embedded note when hovering - title.zh: 嵌入笔记浮动效果 - type: class-toggle - default: false - - - id: table-styles - title: 2.3.7 Table - title.zh: 2.3.7 表格 - type: heading - level: 3 - collapsed: true - - - id: toggle-table-transition - title: Toggle table zooming effect - title.zh: 移除表格悬浮放大效果 - type: class-toggle - default: false - - - id: table-format-options - title: Table format - title.zh: 表格格式 - type: class-select - allowEmpty: false - default: default-table - options: - - - label: Defaut table - value: default-table - - - label: Wrapped table (break all) - value: wrapped-table - - - label: Non-wrapped table (limited cell width) - value: no-wrapped-table-cell - - - label: Non-wrapped table - value: no-wrapped-table - - - id: show-border-table - title: Show borders - title.zh: 显示表格框线 - type: class-toggle - default: false - - - id: table-width - title: Table width - title.zh: md表格默认宽度 - type: class-select - default: table-width-100 - options: - - - label: 100% - value: table-width-100 - - - label: auto - value: table-width-auto - - - id: full-width-table - title: Full-width table display - title.zh: md表格全宽显示 - description: for Reading View, require Contextual Typography plugin - description.zh: 阅读模式下,实现效果需要安装Contextual Typography插件 - type: class-toggle - default: false - - - id: table-style-options - title: Table Style - title.zh: 表格样式 - type: class-select - allowEmpty: false - default: table-style-default - options: - - - label: Default - value: table-style-default - - - label: Style I - value: table-style-one - - - label: Style II - value: table-style-two - - - label: Style III - value: table-style-three - - - id: cloze-style - title: 2.3.8 Cloze style - title.zh: 2.3.8 挖空涂黑 - type: heading - level: 3 - collapsed: true - - - id: remove-cloze-style - title: Cancel cloze Style - title.zh: 取消挖空涂黑功能 - description: In this theme, you can use ==~~your words~~==, *==~~your words~~==* and *~~your words~~* to obtain a cloze-style, active this option to cancel it - description.zh: 当前主题下,使用以下格式可以对文本进行涂黑或挖空 ==~~your words~~==, *==~~your words~~==* 或 *~~your words~~*,激活该选项以取消 - type: class-toggle - default: false - - - id: cloze-bg-color - title: Cloze background color - title.zh: 涂黑背景颜色 - description: Cloze Style One, i.e. ==~~your words~~==, hovering to find "your words", should declare "cssclass:cloze" in the YAML area if you want to use them in the Live Preview mode - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: cloze-decoration - title: Underline decoration style - description: Can type 'solid', 'dotted', 'dashed', 'wavy' or 'double' for Cloze Style One, i.e. ==~~your words~~==, hovering to find "your words", should declare "cssclass:cloze" in the YAML area if you want to use them in the Live Preview mode - type: variable-text - default: none - - - id: cloze-decoration-color - title: Underline decoration color - description: For Cloze Style One, i.e. ==~~your words~~==, hovering to find "your words", should declare 'cssclass:cloze' in the YAML area if you want to use them in the Live Preview mode - type: variable-themed-color - opacity: false - format: hex - default-light: '#' - default-dark: '#' - - - id: cloze-decoration-2 - title: Underline decoration style for Cloze style TWO - description: Can type 'solid', 'dotted', 'dashed', 'wavy', 'double' or 'none' for Cloze Style TWO, i.e. *==~~your words~~==*, pressing down the primary mouse button to find "your words", should declare 'cssclass:cloze' in the YAML area if you want to use them in the Live Preview mode - type: variable-text - default: dashed - - - id: cloze-decoration-color-2 - title: Underline decoration color for Cloze style TWO - description: For Cloze Style TWO, i.e. *==~~your words~~==*, pressing down the primary mouse button to find "your words", should declare 'cssclass:cloze' in the YAML area if you want to use them in the Live Preview mode - type: variable-themed-color - opacity: false - format: hex - default-light: '#' - default-dark: '#' - - - id: cloze-decoration-3 - title: Underline decoration style for Cloze style THREE (*~~your words~~*) - description: Can type 'solid', 'dotted', 'dashed', 'wavy', 'double' or 'none' for Cloze Style THREE, i.e. *~~your words~~*, pressing down the primary mouse button to find "your words", should declare 'cssclass:cloze' in the YAML area if you want to use them in the Live Preview mode - type: variable-text - default: dashed - - - id: cloze-decoration-color-3 - title: Underline decoration color for Cloze style THREE - description: For Cloze Style THREE, i.e. *~~your words~~*, pressing down the primary mouse button to find "your words", should declare 'cssclass:cloze' in the YAML area if you want to use them in the Live Preview mode - type: variable-themed-color - opacity: false - format: hex - default-light: '#' - default-dark: '#' - - - id: link-style - title: 2.3.9 Links - title.zh: 2.3.9 链接 - type: heading - level: 3 - collapsed: true - - - id: link-underline-internal - title: Toggle internal link underline - title.zh: 开启内部链接下划线(默认:无) - type: class-toggle - default: false - - - id: link-underline-external - title: Disable external link underline - title.zh: 关闭外部链接下划线(默认:有) - type: class-toggle - default: false - - - id: link-underline-unresolved - title: Disable unresolved link underline - title.zh: 关闭未创建链接下划线(默认:有) - type: class-toggle - default: false - - - id: colorful-link-animation - title: Toggle colorful link background (hovering) - title.zh: 开启彩色链接背景颜色 (鼠标悬浮时) - type: class-toggle - default: false - - - id: internal-link-color - title: Internal link color - title.zh: 内链颜色 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: remove-external-link-icon - title: Toggle icon after external link - title.zh: 去除外部链接后面的图标 - type: class-toggle - default: false - - - id: external-link-color - title: External link color - title.zh: 外链颜色 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: default-unresolved-link - title: Toggle default unresolved link color - title.zh: 使用默认的未创建链接颜色 - type: class-toggle - default: false - - - id: unresolved-link - title: Unresolved Link Color - title.zh: 未创建链接颜色 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: link-click - title: Cancel click the link to trigger auto-jump - title.zh: 取消编辑模式下点击链接自动跳转 - type: class-toggle - default: false - description: You can click on the link by holding down the ctrl key to jump - description.zh: 可以通过按住ctrl键点击链接跳转 - - - id: cursor-style-folder - title: 2.3.10 Cursor - title.zh: 2.3.10 输入光标 - type: heading - level: 3 - collapsed: true - - - id: cursor-color - title: Cursor color - title.zh: 光标颜色 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: checkbox-style-folder - title: 2.3.11 Checkbox - title.zh: 2.3.11 勾选框 - type: heading - level: 3 - collapsed: true - - - id: circular-checkbox - title: Circular checkbox - title.zh: 圆形勾选框 - type: class-toggle - default: false - - - id: toggle-checked-decoration - title: Add strikethrough for checked items - title.zh: 添加完成任务时的删除线 - type: class-toggle - default: false - - - id: checklist-done-color - title: Checked text color - title.zh: 完成任务的文字颜色 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: checkbox-size - title: Checkbox Size - title.zh: 勾选框大小 - type: variable-text - default: 1rem - - - id: unmute-checkbox-animation - title: Deactivate checkbox animation - title.zh: 取消勾选框摇摆动画 - type: class-toggle - default: false - - - id: extend-checkbox-list - title: Extend checkbox list (unavailable) - title.zh: 扩充勾选框类型 (不可用) - type: class-toggle - default: false - - - id: icons-style-folder - title: 2.3.12 Icons - title.zh: 2.3.12 图标 - type: heading - level: 3 - collapsed: true - - - id: remove-custom-svg-icons - title: Toggle default icons - title.zh: 还原默认图标 - type: class-toggle - default: false - - - id: default-icons - title: Toggle default collapse icons - title.zh: 还原折叠图标 - type: class-toggle - default: false - - - id: enable-icon-anima - title: Enable clickable-icons' hovering animation - title.zh: 开启按钮图标的鼠标悬浮动画效果 - description.zh: 是否开启图标背景动画以及图标悬浮动画效果 - type: class-toggle - default: false - - - id: icons-style-folder - title: 2.3.13 Images - title.zh: 2.3.13 图片 - type: heading - level: 3 - collapsed: true - - - id: image-zoom - title: Deactivate image zooming - title.zh: 取消点击图片放大效果 - type: class-toggle - default: false - - - id: obsidian-default-image - title: Obsidian default image position - title.zh: Obsidian默认图片位置 - type: class-toggle - default: false - - - id: image-max-width - title: Image max-width - title.zh: 图片最大宽度 - type: variable-text - default: 100% - - - id: image-border - title: Image borders - title.zh: 图片添加边框 - type: class-toggle - default: false - - - id: icons-style-folder-1 - title: Intro to basic image position - title.zh: 基本图片位置简介 - description: You can add 🔸|Left (can also use `left`, `LEFT` or `L` to replace the `Left` before), 🔸|Right (right/RIGHT/R) and 🔸|Inline (inline/INLINE/inl/INL/Inl) 🔸|Centre/Center (CENTRE/CENTER/centre/center/C) (the “centre” one is for the “Obsidian Default Image Position above only, because Topaz's default image position is in the centre) into a image format to adjust the image position, e.g. ![[*.jpg|L]], ![[*.png|Right|200]] and ![|inl](...*.jpg) - description.zh: 在图片格式里添加 🔸|Left (can also use `left`, `LEFT` or `L` to replace the `Left` before), 🔸|Right (right/RIGHT/R) and 🔸|Inline (inline/INLINE/inl/INL/Inl) 🔸|Centre/Center (CENTRE/CENTER/centre/center/C) (这个选项只在开启 “Obsidian默认图片位置” 后生效,因为Topaz默认图片位置就是居中) 来改变图片位置, e.g. ![[*.jpg|L]], ![[*.png|Right|200]] and ![|inl](...*.jpg) - type: heading - level: 4 - collapsed: true - - - id: icons-style-folder-2 - title: Intro to image caption - title.zh: 图片标题介绍 - description: You can add 🔸#Left|your captions (can also use `left`, `LEFT` or `L` to replace the `Left`), 🔸#Right (or right/RIGHT/R)|your captions, 🔸#center/centre (CENTRE/CENTER/Center/Centre/C) |your captions and 🔸#inl (Inline/INLINE/inline/INL/Inl) |your captions into a image format to adjust the image position with a image caption, e.g. ![[*.jpg#left|Figure 1]], ![[*.png#right|Figure 2|200]], ![[*.jpg#centre|Figure 3]] and ![[*.jpg#inl|Figure 4|100]] - description.zh: 在图片格式里添加 🔸#left (can also use `left`, `LEFT` or `L` to replace the `Left`) |your captions, 🔸#right (or right/RIGHT/R) |your captions, 🔸#center/centre (CENTRE/CENTER/Center/Centre/C) |your captions and 🔸#inl (Inline/INLINE/inline/INL/Inl) |your captions 来改变图片位置,并添加图片标题, e.g. ![[*.jpg#left|Figure 1]], ![[*.png#right|Figure 2|200]], ![[*.jpg#C|Figure 3]] and ![[*.jpg#inl|Figure 4|100]] - type: heading - level: 4 - collapsed: true - - - id: icons-style-folder-3 - title: Intro to image grid - title.zh: 图片横排介绍 - description: You can add 🔸|+grid into some images to grid these images in a line, e.g. ![[*.jpg|+grid]] Or type ❗cssclass:img-grid❗ in YAML to make images arrange in a grid in the preview mode. require Contextual Typography plugin - description.zh: 在图片格式里添加 🔸|+grid 使复数的图片排成一行, e.g. ![[*.jpg|+grid]] 。或者在YAML种输入 ❗cssclass:img-grid❗最好安装 Contextual Typography 插件实现更好的并排效果 - type: heading - level: 4 - collapsed: false - - - id: img-grid - title: Enable global image grid - title.zh: 开启全局图片横排显示 - description: Enable the Contextual Typography plugin to control side-by-side images via blank lines - description.zh: 开启后,不需要在笔记上方声明cssclass:img-grid,通过图片空行控制是否并排 - type: class-toggle - default: false - - - id: loading-page-style-folder - title: 2.3.14 Loading page - title.zh: 2.3.14 加载页面 - type: heading - level: 3 - collapsed: true - - - id: loading-page-style-option - title: Loading page style - type: class-select - allowEmpty: false - default: default-loading-page - options: - - - label: Default Loading Page - value: default-loading-page - - - label: Shapes - value: loading-page-style-default - - - label: Custom Text - value: loading-custom-text - - - label: Default Text w/ Icons Before and After - value: loading-add-icons - - - label: Cat (GIF) - value: loading-animation-cat - - - label: Adding Image or Animation (GIF) - value: loading-animation-custom - - - label: Animation with Position Changing - value: loading-shape-with-custom-gif - - - label: Jumping Mario - value: loading-page-style-mario - - - - id: loading-custom-text-folder - title: 2.3.14.1 Custom text - type: heading - level: 4 - collapsed: true - - - id: loading-diy-text - title: Custom text - title.zh: 自定义文字 - type: variable-text - default: "'快乐摸鱼又一天,人生还剩多少天?'" - - - id: font-loading-text - title: Font family of custom text - title.zh: 字体 - type: variable-text - default: var(--font-monospace-theme) - - - id: font-size-loading-diy-text - title: Font size - type: variable-text - default: 3em - - - id: loading-diy-text-color - title: Text color - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: loading-text-typing-style - title: Typing style - title.zh: 打字效果 - type: class-toggle - default: true - - - id: loading-text-moving-style - title: Moving style - title.zh: 移动效果 - type: class-toggle - default: false - - - id: loading-text-shinning-style - title: Shinning style - title.zh: 闪烁效果 - type: class-toggle - default: false - - - id: loading-text-color-changing-style - title: Color-changing style - title.zh: 变色效果 - type: class-toggle - default: false - - - id: loading-add-icons-folder - title: 2.3.14.2 Custom image/animation - type: heading - level: 4 - collapsed: true - - - id: loading-text-before - title: Adding things before - type: variable-text - default: "'❀✿'" - - - id: loading-text-after - title: Adding things after - type: variable-text - default: "'✿❀'" - - - id: font-size-loading-add - title: Font size - type: variable-text - default: 1.5em - - - id: loading-add-text-color - title: Text color - type: variable-themed-color - opacity: true - format: hex - default-light: '#D3959B' - default-dark: '#D3959B' - - - id: loading-add-text-color-alt - title: Text color - type: variable-themed-color - opacity: true - format: hex - default-light: '#BFE6BA' - default-dark: '#BFE6BA' - - - id: loading-animation-custom-folder - title: 2.3.14.3 Custom image/animation - type: heading - level: 4 - collapsed: true - - - id: loading-page-custom-gif-url - title: Custom loading page image/animation - type: variable-text - default: url(https://) - - - id: loading-page-custom-gif-caption - title: Image caption - type: variable-text - default: " " - - - id: loading-shape-with-custom-gif-folder - title: 2.3.14.4 Custom image/animation with position changing - type: heading - level: 4 - collapsed: true - - - id: loading-page-custom-gif-caption-alt - title: Image caption - type: variable-text - default: " " - - - id: loading-shape-with-custom-high-contrast-bg - title: High contrast background - title.zh: 高对比度背景 - type: class-toggle - default: false - - - id: tag-color-settings - title: 2.3.15 Tags - title.zh: 2.3.15 标签 (#Tag) - type: heading - level: 3 - collapsed: true - - - id: tag-click - title: Cancel click the tag to trigger auto-jump - title.zh: 取消实时预览模式下点击标签自动跳转 - type: class-toggle - default: false - description: You can jump by clicking on the # marks in the tags - description.zh: 可以通过点击标签中的#号跳转 - - - id: head-tag-style - title: Label superscript in the header - title.zh: 标题中的标签上标样式 - type: class-toggle - default: false - description.zh: 标题出现标签自动上标,也可以用 或者包裹实现不一样的样式。 - - - id: tag-style-option - title: Tag Style - title.zh: 标签样式 - type: class-select - allowEmpty: false - default: tag-default - options: - - - label: Rainbow tag - value: rainbow-tag - - - label: Rainbow tag alt (No influence on emojis) - value: rainbow-tag-no-filter - - - label: Outlined - value: tag-pill-outlined - - - label: Clear - value: tag-clear-style - - - label: Obsidian default - value: tag-default - - - label: Customised colorful tag - value: colorful-tag-bt - - - id: customised-colorful-tag - title: 2.3.15.1 Customised colorful tag - type: heading - level: 4 - collapsed: true - - - id: tag1 - title: Tag-1 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: tag2 - title: Tag-2 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: tag3 - title: Tag-3 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: tag4 - title: Tag-4 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: tag5 - title: Tag-5 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: tag-text - title: Tag text - type: variable-themed-color - opacity: false - format: hex - default-light: '#f8f8f8' - default-dark: '#e4e4e4' - - - id: outlined-style - title: 2.3.15.2 Outlined - type: heading - level: 4 - collapsed: true - - - id: tag-border-width - title: Tag border width - title.zh: 标签边框宽度 - type: variable-text - default: 1px - - - id: tag-color-settings - title: 2.3.16 Setting, Menu, Option panes - title.zh: 2.3.16 设置、菜单、选项面板 - type: heading - level: 3 - collapsed: true - - - id: setting-etc-pane-style - title: Pane style - type: class-select - allowEmpty: false - default: setting-style-traditional - options: - - - label: Frosted Glass - value: setting-default-frosted-glass - - - label: Traditional - value: setting-style-traditional - - - label: Translucent (only for setting panel) - value: translucent-setting-panel - - - id: titlebar-settings - title: 2.3.17 Titlebar style - title.zh: 2.3.17 标题栏样式 - type: heading - level: 3 - collapsed: true - - - id: simple-titlebar - title: Simple title bar - title.zh: 简单的Title bar - description: To remove the background image of title bar - description.zh: 自定义title bar背景 - type: class-toggle - default: false - - - id: custom-titlebar-bg - title: Title bar background color - title.zh: 自定义标题栏背景色 - description: custom-titlebar-bg - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: titlebar-blur-depth - title: Title bar blur radius - title.zh: Title bar 模糊程度 - description: To adjust the radius of blur - description.zh: 调整Title bar 背景模糊程度 - type: variable-number-slider - default: 8 - format: px - min: 0 - max: 30 - step: 1 - - - id: titlebar-blur-depth - title: Title bar blur radius - title.zh: Title bar 模糊程度 - description: To adjust the radius of blur - description.zh: 调整Title bar 背景模糊程度 - type: variable-number-slider - default: 8 - format: px - min: 0 - max: 30 - step: 1 - - - id: titlebar-brightness - title: Title bar brightness of image - title.zh: Title bar 背景亮度 - description: To adjust the brightness - description.zh: 调整Title bar 背景亮度 - type: variable-number-slider - default: 1 - min: 0.1 - max: 1.5 - step: 0.1 - - - id: titlebar-close-button - title: Titlebar close button - title.zh: Ob标题栏关闭按钮 - type: class-select - allowEmpty: false - default: default-titlebar - options: - - - label: Default - value: default-titlebar - - - label: Reversal - value: reversal-titlebar - - - id: hide-titlebar-text - title: Hide text in title bar - title.zh: 隐藏Obsidian标题栏中的文字 - type: class-toggle - default: false - - - id: hide-titlebar-close-btn - title: Auto-hide title bar close button - title.zh: 自动隐藏关闭按钮 - type: class-toggle - default: false - - - id: outline-settings - title: 2.3.18 Outline - title.zh: 2.3.18 侧边栏大纲 - type: heading - level: 3 - collapsed: true - - - id: outline-style - title: Outline style - title.zh: 大纲样式 - type: class-select - allowEmpty: false - default: default-outline-style - options: - - - label: Default - value: default-outline-style - - - label: Logseq - value: logseq-outline-style - - - id: nowrap-outline - title: Nowrap - title.zh: 不换行 - type: class-toggle - default: false - - - id: prompt-settings - title: 2.3.19 Prompt (ctrl p) - title.zh: 2.3.19 提示框 (ctrl p) - type: heading - level: 3 - collapsed: true - - - id: prompt-options - title: Prompt styles - title.zh: 提示框唤出样式 - type: variable-select - allowEmpty: false - default: default-prompt-style - options: - - - label: Default - value: default-prompt-style - - - label: Fancy prompt 1 - value: fancy-prompt-1 - - - label: Slide Up Large - value: slideUpLarge - - - label: Quick Scale Down - value: quickScaleDown - - - label: Blow Up Modal - value: blowUpModal - - - label: Road Runner In - value: roadRunnerIn - - - label: Road Runner Out - value: roadRunnerOut - - - label: Unfold In - value: unfoldIn - - - label: Pop-swirl - value: pop-swirl - - - id: stack-settings - title: 2.3.20 Stack tabs - type: heading - level: 3 - collapsed: true - - - id: stack-tabs-text-ori-options - title: Text orientation styles - title.zh: stack 模式汉字竖排 - type: class-select - allowEmpty: false - default: stack-tab-text-ori-mixed - options: - - - label: Default - value: default-stack-text-ori-style - - - label: Mixed orientation - value: stack-tab-text-ori-mixed - - - id: stack-tabs-background-blur-depth - title: stack tabs background blur radius - title.zh: 堆叠模式下笔记背景模糊程度 - description: To adjust the radius of blur - description.zh: 调整背景模糊程度 - type: variable-number-slider - default: 40 - format: px - min: 0 - max: 200 - step: 10 - - - id: tabs-settings - title: 2.3.21 Tabs - type: heading - level: 3 - collapsed: true - - - id: tab-head-style - title: Tab style - type: class-select - allowEmpty: false - default: default-tab - options: - - - label: Default - value: default-tab - - - label: Underline - value: underline-tab-style - - - label: Safari-style - value: safari-tab-style - - - label: Transparent-style - value: transparent-tab-style - - - id: mermaid-styles - title: 2.3.21 Mermaid - type: heading - level: 3 - collapsed: true - - - id: resizable-mermaid - title: Resizable mermaid in reading mode - title.zh: 阅读模式可调整mermaid大小 - type: class-toggle - default: false - - - id: canvas-styles - title: 2.3.23 Canvas - title.zh: 2.3.23 白板 Canvas - type: heading - level: 3 - collapsed: true - - - id: canvas-card-focus-mode - title: Canvas card focus mode (Unavailable) - title.zh: 开启Canvas聚焦模式 (不可用) - description: clicking on a card will highlight all cards and lines of the same color on the canvas When turned on - description.zh: 开启后 点击卡片会突出显示画布上所有相同颜色的卡片和线条 - type: class-toggle - default: false - addCommand: true - - - id: zoom-multiplier - title: Canvas card size for "Zoom to selection" - title.zh: “聚焦”时卡片大小 - type: variable-number-slider - default: 1 - min: 0.5 - max: 2 - step: 0.05 - - - id: canvas-card-text-middle - title: Canvas card text center align - title.zh: 卡片文字默认居中 - type: class-toggle - default: false - - - id: canvas-card-opacity - title: Canvas card opacity - title.zh: 卡片透明度 - type: variable-number-slider - default: 0.1 - min: 0 - max: 1 - step: 0.05 - - - id: canvas-workplace-background-heading - title: 2.3.23.1 canvas workplace background settings - title.zh: 2.3.23.1 canvas页面背景设置 - type: heading - level: 4 - collapsed: true - - - id: toggle-canvas-grid - title: Toggle canvas grid - title.zh: 关闭Canvas网格显示 - type: class-toggle - default: false - - - id: canvas-workplace-background - title: Toggle canvas workplace background - title.zh: 关闭Canvas工作区背景 - description.zh: 如果开启了1.2.1工作页面背景,编辑画板也会带有背景,这里可以关闭画板背景 - type: class-toggle - default: false - - - id: canvas-background - title: Custom canvas background color - title.zh: 自定义canvas背景色 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: tab-stack-folder - title: 2.3.24 Tab stack - title.zh: 2.3.24 堆叠标签页 - type: heading - level: 3 - collapsed: true - - - id: tab-stacked-pane-width - title: Tag stacked pane with - type: variable-number - default: 700 - format: px - - - id: tab-stacked-header-width - title: Spine width - type: variable-number - default: 40 - format: px - - - id: highlight-bg-color-folder - title: 2.3.25 Highlights (==xx==) - title.zh: 2.3.25 高亮 (==xx==) - type: heading - level: 3 - collapsed: true - - - id: text-highlight - title: Highlight text color - title.zh: 高亮文本颜色 - description: ==XXXXX== color - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: highlight-style - title: Highlight styles - title.zh: 高亮样式 - type: class-select - allowEmpty: false - default: bt-default-highlight - options: - - - label: Default - value: bt-default-highlight - - - label: All rounded corners (@Mon & @TheGodOfKing) - value: all-rounded-corners-highlight - - - label: No rounded corners - value: no-rounded-corners-highlight - - - id: highlight-bg-color-head - title: Highlight background color - title.zh: 高亮背景颜色 - type: heading - level: 4 - collapsed: true - - - id: text-highlight-bg-h-light - title: Hue (Light mode) - description: To adjust Hue - description.zh: 调整颜色 明亮模式 - type: variable-number-slider - default: 34 - min: 0 - max: 360 - step: 5 - - - id: text-highlight-bg-s-light - title: Saturation (Light mode) - description: To adjust Saturation - description.zh: 调整饱和度 明亮模式 - type: variable-number-slider - default: 100 - min: 0 - max: 100 - step: 5 - format: "%" - - - id: text-highlight-bg-l-light - title: Lightness (Light mode) - description: To adjust Lightness - description.zh: 调整亮度 明亮模式 - type: variable-number-slider - default: 80 - min: 0 - max: 100 - step: 5 - format: "%" - - - id: text-highlight-bg-a-light - title: Opacity (Light mode) - description: To adjust Alpha - description.zh: 调整透明度(Alpha)明亮模式 - type: variable-number-slider - default: 0.80 - min: 0 - max: 1 - step: 0.05 - - - id: text-highlight-bg-h-dark - title: Hue (Dark mode) - description: To adjust Hue - description.zh: 调整颜色 黑暗模式 - type: variable-number-slider - default: 57 - min: 0 - max: 360 - step: 5 - - - id: text-highlight-bg-s-dark - title: Saturation (Dark mode) - description: To adjust Saturation - description.zh: 调整饱和度 黑暗模式 - type: variable-number-slider - default: 40 - min: 0 - max: 100 - step: 5 - format: "%" - - - id: text-highlight-bg-l-dark - title: Lightness (Dark mode) - description: To adjust Lightness - description.zh: 调整亮度 黑暗模式 - type: variable-number-slider - default: 38 - min: 0 - max: 100 - step: 5 - format: "%" - - - id: text-highlight-bg-a-dark - title: Opacity (Dark mode) - description: To adjust Alpha - description.zh: 调整透明度(Alpha)黑暗模式 - type: variable-number-slider - default: 0.55 - min: 0 - max: 1 - step: 0.05 - - - id: colorful-highlight-head - title: Colorful highlight setting - title.zh: 多彩高亮背景颜色 - type: heading - level: 4 - collapsed: true - - - id: remove-colorful-highlight-bg - title: Deactivate colorful-highlight - title.zh: 取消多彩高亮颜色 - description: In this theme, *==xxx==*, **==xxx==** and ***==xxx==*** possese different background colors by default, active this option to cancel it. Even with this option actived, you can still type "cssclass:colorful-highlight" into yaml to make the colorful-highlight style available to individual documents - description.zh: 当前主题下,*==xxx==*, **==xxx==** and ***==xxx==*** 默认情况下具有不同高亮背景色,激活该选项以取消。即使取消了该功能,你依旧可以在yaml中键入"cssclass:colorful-highlight",使单个文档激活多彩高亮功能 - type: class-toggle - default: false - - - id: bg-color-highlight-1 - title: Highlight background color Plus 1 (*==xx==*) - title.zh: 高亮颜色 Plus 1 (*==xx==*) - type: variable-themed-color - opacity: true - format: hex - default-light: '#ff000034' - default-dark: '#c865656f' - - - id: color-highlight-1 - title: Highlight text color Plus 1 (*==xx==*) - title.zh: 高亮文字颜色 Plus 1 (*==xx==*) - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: font-weight-highlight-1 - title: Font weight of highlight text Plus 1 (*==xx==*) - title.zh: 字重 Plus 1 (*==xx==*) - description: Can type normal, bold, lighter or bolder to change the font weight - description.zh: 可以输入 normal, bold, lighter 或者 bolder 去改变字重 - type: variable-text - default: normal - - - id: bg-color-highlight-2 - title: Highlight background color Plus 2 (**==xx==**) - title.zh: 高亮颜色 Plus 2 (**==xx==**) - type: variable-themed-color - opacity: true - format: hex - default-light: '#0fc41835' - default-dark: '#54b9476f' - - - id: color-highlight-2 - title: Highlight text color Plus 2 (**==xx==**) - title.zh: 高亮文字颜色 Plus 2 (**==xx==**) - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: font-weight-highlight-2 - title: Font weight of highlight text Plus 2 (**==xx==**) - title.zh: 字重 Plus 2 (**==xx==**) - description: Can type normal, bold, lighter or bolder to change the font weight - description.zh: 可以输入 normal, bold, lighter 或者 bolder 去改变字重 - type: variable-text - default: normal - - - id: bg-color-highlight-3 - title: Highlight background color Plus 3 (***==xx==***) - title.zh: 高亮颜色 Plus 3 (***==xx==***) - type: variable-themed-color - opacity: true - format: hex - default-light: '#4ca6ff51' - default-dark: '#1e83d086' - - - id: color-highlight-3 - title: Highlight text color Plus 3 (***==xx==***) - title.zh: 高亮文字颜色 Plus 3 (***==xx==***) - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: font-weight-highlight-3 - title: Font weight of highlight text Plus 3 (***==xx==***) - title.zh: 字重 Plus 3 (***==xx==***) - description: Can type normal, bold, lighter or bolder to change the font weight - description.zh: 可以输入 normal, bold, lighter 或者 bolder 去改变字重 - type: variable-text - default: normal - - - id: highlight-bg-color-folder - title: 2.3.26 Popover - title.zh: 2.3.26 悬浮预览弹窗 - type: heading - level: 3 - collapsed: true - - - id: background-popover - title: Hover popover background color - title.zh: 悬浮弹窗背景色 - description: --background-popover - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: popover-width-factor - title: Popover width - title.zh: 弹窗宽度 - type: variable-number-slider - default: 1 - min: 0.5 - max: 2.5 - step: 0.05 - - - id: popover-height-factor - title: Popover height - title.zh: 弹窗宽度 - type: variable-number-slider - default: 1 - min: 0.5 - max: 2 - step: 0.05 - - - id: style-options-for-other-plugins - title: 3. For Plugins - title.zh: 3. 插件样式 - type: heading - level: 1 - collapsed: true - - - id: style-options-for-admonition-plugin-header - title: 3.1 Admonition & Callout style - type: heading - level: 2 - collapsed: true - - - id: admonition-bg-color - title: Admontion codebock and Callout background - title.zh: Admonition 和 Callout背景色 - type: variable-themed-color - opacity: true - format: hex - default-light: '#FFFFFF00' - default-dark: '#11111100' - - - id: admonition-bg-color-same - title: The same as the title color - title.zh: 背景色与标题色一致 - description.zh: Obsidian 默认callout样式 - type: class-toggle - default: false - - - id: callout-style-settings - title: callout style settings - title.zh: Callout 外观样式设置 - type: class-select - allowEmpty: false - default: admonition-bg-color-same - options: - - - label: Default - value: admonition-bg-color-same - - - label: Traditional - value: traditional-callout-style - - - label: Border - value: border-callout-style - - - label: Shade - value: shade-callout-style - - - id: full-width-callout - title: Full-width layout for callout & admonition - title.zh: callout和ad块全宽显示 - description.zh: 不收缩减栏宽影响,全宽显示callout块 - type: class-toggle - default: false - - - id: style-options-for-admonition-plugin - title: Admonition special style support - title.zh: 是否开启Admonition特别样式支持 - type: class-toggle - default: true - description : 目前支持ad类型:blank 全透明框🔸def definition🔸thm theorem🔸lem lemma🔸cor corollary🔸pro proposition 🔸hibox 自动隐藏框🔸col2 col3 col4内容分多栏🔸kanban 伪看板🔸table 表格单行全部显示❗使用方法❗下面以thm类型为例,在admonition插件的设置页面中,类型填 thm,标题填 定理,图标选择hand-point-right,颜色自己选比如浅绿色,添加成功后,在正文中使用代码块```ad-thm 即可激活。其他类型以此类推。 - - - id: style-options-for-calendar-plugin-header - title: 3.2 Calendar - type: heading - level: 2 - collapsed: true - - - id: toggle-calendar-shadow - title: Toggle shadow of current date - title.zh: 开启日历中当前日期的阴影 - type: class-toggle - default: false - - - id: toggle-calendar-transparent - title: Transparent calendar background - title.zh: 日历背景透明 - type: class-toggle - default: false - - - id: style-options-for-calendar-plugin - title: Calendar - type: class-select - allowEmpty: false - default: style-options-for-calendar-plugin-default - options: - - - label: Default - value: style-options-for-calendar-plugin-default - - - label: Style 1 - value: style-options-for-calendar-plugin-style-one - - - label: Style 2 - value: style-options-for-calendar-plugin-style-two - - - id: rainbow-checklist-folder - title: 3.3 Checklist plugin - type: heading - level: 2 - collapsed: true - - - id: rainbow-checklist - title: Rainbow checklist - title.zh: 彩虹色条目 - type: class-toggle - default: false - - - id: style-options-for-kanban-plugin-header - title: 3.4 Kanban - type: heading - level: 2 - collapsed: true - - - id: style-options-for-kanban-plugin-static - title: Static - type: class-select - allowEmpty: false - default: style-options-for-kanban-plugin-static-default - options: - - - label: Default - value: style-options-for-kanban-plugin-static-default - - - label: All color (instead of images in light mode) - value: style-options-for-kanban-plugin-static-all-color - - - label: All image-1 - value: style-options-for-kanban-plugin-static-all-image-one - - - label: All image-2 abstract - value: style-options-for-kanban-plugin-static-all-image-two - - - label: Plain - value: style-options-for-kanban-plugin-static-plain - - - label: Little color - value: style-options-for-kanban-plugin-static-little-color - - - id: style-options-for-kanban-plugin-dynamic - title: Dynamic - type: class-select - allowEmpty: false - default: style-options-for-kanban-plugin-dynamic-default - options: - - - label: None - value: style-options-for-kanban-plugin-dynamic-default - - - label: Neon-1 - value: style-options-for-kanban-plugin-dynamic-neon-one - - - label: Neon-2 - value: style-options-for-kanban-plugin-dynamic-neon-two - - - label: Neon-3 - value: style-options-for-kanban-plugin-dynamic-neon-three - - - id: style-options-for-buttons-plugin-heading - title: 3.5 Buttons - type: heading - level: 2 - collapsed: true - - - id: style-options-for-buttons-plugin - title: Buttons special style support - title.zh: 是否开启Buttons特别样式支持 - type: class-toggle - default: true - description : 目前内置class:🔸circle_btn 圆形按钮🔸blank 透明按钮🔸grad_button渐变按钮🟣g_purple 紫色🔵g_blue蓝色🟢g_green 绿色💚g_lightgreen 浅绿🟡g_yellow黄色 - - - id: style-options-for-buttons-plugin-heading - title: 3.6 Dataview - type: heading - level: 2 - collapsed: true - - - id: style-options-for-dataview-plugin-heading - title: 3.6.1 Dataview list - type: heading - level: 3 - collapsed: true - - - id: folder-dataview-list-style - title: Style - title.zh: 样式 - type: class-select - allowEmpty: false - default: dataview-list-style-pacman - options: - - - label: Pac-man - value: dataview-list-style-pacman - - - label: Normal - value: dataview-list-style-normal - - - id: style-options-for-dataview-table-plugin-heading - title: 3.6.2 Dataview table - type: heading - level: 3 - collapsed: true - - - id: dvtable-style-options - title: Dataview table format - title.zh: Dataview 表格格式 - type: class-select - allowEmpty: false - default: default-dvtable - options: - - - label: Defaut table - value: default-dvtable - - - label: Wrapped table (break all) - value: wrapped-dvtable - - - label: Non-wrapped table (limited cell width) - value: no-wrapped-dvtable-cell - - - label: Non-wrapped table - value: no-wrapped-dvtable - - - id: auto-serial-number-dvtable - title: Automatically add serial numbers to tables - title.zh: Dataview表格自动添加序号 - type: class-toggle - default: false - - - id: full-width-dvtable - title: Full-width dvtable display - title.zh: dataview表格全宽显示 - description: for Reading View, require Contextual Typography plugin - description.zh: 阅读模式下,实现效果需要安装Contextual Typography插件 - type: class-toggle - default: false - - - id: style-options-for-dialogue-plugin-heading - title: 3.7 Dialogue & Chatview - type: heading - level: 2 - collapsed: true - - - id: dialogue-style - title: Dialogue & Chatview Style - title.zh: 聊天框样式 - type: class-select - allowEmpty: false - default: dialogue-style-default - description.zh: Wechat样式适合titleMode:all ,chat样式适合 titleMode:first - description: Wechat options is for ’titleMode:all‘ ,chat options is for ‘titleMode:first’ - options: - - - label: Default - value: dialogue-style-default - - - label: Wechat - value: dialogue-style-wechat - - - label: Chat - value: dialogue-style-chat - - - id: style-options-for-Thino-plugin-heading - title: 3.9 ✏️Thino - description: Adapted from @Quorafind's Thino Plugin - type: heading - level: 2 - collapsed: false - - - id: style-options-for-Thino-plugin-heading-1 - title: 3.9.1 Thino style - title.zh: 3.9.1 Thino 全局样式 - type: heading - level: 3 - collapsed: true - - - id: memos-inputbox - title: Put input box to bottom - title.zh: PC端memos输入框置于页面底部 - type: class-toggle - default: false - - - id: memos-hide-header - title: hider Thino header - title.zh: 隐藏thino 视图的头部 - type: class-toggle - default: false - - - id: memos-scroll - title: add Thino list scroll - title.zh: 列表 瀑布流模式下给thino 增加一个滚动条 - type: class-toggle - default: false - - - id: hider-memos-modern-banner - title: hide thino modern moment banner - title.zh: 隐藏Thino modern 主题下的动态视图的banner - type: class-toggle - default: false - - - id: memos-banner-gradient - title: moment banner gradient - title.zh: 动态视图的banner 渐变显示 - type: class-toggle - default: true - - - id: thino-view-style - title: thino style - title.zh: Thino的风格 - type: class-select - allowEmpty: false - default: thino-frosted-style - options: - - - label: default - value: thino-default - - - label: Frosted Style(Transparent) - value: thino-frosted-style - - - label: Frosted Style - value: thino-frosted-style-default - - - id: thino-view-background - title: custom thino background - title.zh: 自定义Thino背景 - type: class-select - allowEmpty: false - default: thino-background-default - options: - - - label: default - value: thino-background-default - - - label: custom color - value: thino-background-color - - - label: Custom background img - value: custom-thino-background - - - id: thino-modern-primary - title: thino background color - title.zh: thino 背景色 - type: variable-themed-color - opacity: true - format: hsl-split - default-light: '#ebf3ee' - default-dark: '#1e1e1e' - - - id: thino-background-light-custom - title: Custom thino background light (url) - title.zh: 自定义Thino背景(亮色模式) - description: Customise the background image. Use the format in the Default below for an Online image. - description.zh: 需在上方选项种选择Custom,以自定义背景。使用Default内格式设置在线图片。 - type: variable-text - default: url("https://") - - - id: thino-background-dark-custom - title: Custom thino background dark (url) - title.zh: 自定义Thino背景(暗色模式) - description: Customise the background image. Use the format in the Default below for an Online image. - description.zh: 需在上方选项种选择Custom,以自定义背景。使用Default内格式设置在线图片。 - type: variable-text - default: url("https://") - - - id: style-options-for-Thino-plugin-share-heading - title: 3.9.2 Thino share style - title.zh: 3.9.2 Thino 卡片分享样式 - type: heading - level: 3 - collapsed: true - - - id: share-thino-style - title: share thino style - title.zh: Thino分享样式 - type: class-select - allowEmpty: false - default: thino-share-default - options: - - - label: default - value: thino-share-default - - - label: Same as workspace background - value: share-thino-with-workspace-background - - - label: Same as thino background - value: share-thino-with-thino-background - - - label: Custom share background - value: custom-thino-share-background - - - id: share-card-background-opacity-cp - title: Share Card Background Opacity - title.zh: 分享卡片背景透明度 - type: variable-number-slider - default: 0.6 - min: 0 - max: 1 - step: 0.05 - - - id: share-card-background-color - title: Share Card Background color(Gradient Mode) - title.zh: 自定义分享卡片渐变背景颜色(渐变模式生效) - type: variable-themed-color - opacity: true - format: hsl-split - default-light: '#ffafbd' - default-dark: '#1e1e1e' - - - id: share-thino-background-light-custom - title: Custom thino share background light (url) - description: Customise the background image. Use the format in the Default below for an Online image. - description.zh: 需在上方选项种选择Custom,以自定义背景。使用Default内格式设置在线图片。 - type: variable-text - default: url("https://") - - - id: share-thino-background-dark-custom - title: Custom thino share background dark (url) - description: Customise the background image. Use the format in the Default below for an Online image. - description.zh: 需在上方选项种选择Custom,以自定义背景。使用Default内格式设置在线图片。 - type: variable-text - default: url("https://") - - - id: style-options-for-backlinks-panel - title: 3.10 backlinks panel - title.zh: 3.10 反链面板 - type: heading - level: 2 - collapsed: true - - - id: full-width-backlinks - title: Full-width backlinks panel display - title.zh: 笔记中的反链面板全宽度显示 - type: class-toggle - default: false - - - id: style-options-for-quiet-outline - title: 3.11 Quiet outline - title.zh: 3.11 Quiet outline - type: heading - level: 2 - collapsed: true - - - id: quiet-outline-optimize - title: Optimize quiet-outline plugin - title.zh: 美化 quiet-outline 插件 - type: class-toggle - default: true - - - id: build-in-style-folder - title: 4. Built-in style intro - title.zh: 4. 内置样式介绍 - description: There are some built-in CSS classes that should be manually declared in the YAML area. Details refer to the TIPS demo vault for Blue Topaz on Github. - description.zh: 主题内置css类,手动在文档YAML区域进行cssclass声明,详细用法可以参考主题tips库,可以在主题QQ群(社区)获取。 - type: heading - level: 1 - collapsed: true - - - id: built-in-style-kanban - title: Pseudo-kanban - title.zh: 伪看板 kanban - type: heading - level: 2 - collapsed: false - description: ❗cssclass:kanban❗ A kind of kanban-liked style for unordered lists. (Adapted from Spectrum theme by @Wiktoria Mielcarek) - description.zh: ❗cssclass:kanban❗ 实现类似看板样式并排显示,只对无序列表生效。改自Spectrum theme by @Wiktoria Mielcarek - - - id: simple-p-kanban - title: Simple pseudo-kanban - title.zh: 单色伪看板 - description: Remove colors of pseudo-kanban - description.zh: 移除伪看板头部颜色 - type: class-toggle - default: false - - - id: remove-shadow-p-kanban - title: Remove shadow of pseudo-kanban - title.zh: 移除伪看板触发阴影 - type: class-toggle - default: false - - - id: colorful-p-kanban - title: Colorful pseudo-kanban - title.zh: 多彩伪看板 - type: class-toggle - default: false - - - id: blur-p-kanban-frosted-glass - title: Blur radius (For Frosted Glass Style) - title.zh: 模糊程度 (毛玻璃效果) - type: variable-number-slider - default: 2 - min: 0 - max: 8 - step: 1 - - - id: p-kanban-color-1 - title: pseudo-kanban color 1 - type: variable-themed-color - opacity: true - format: hex - default-light: '#52aaf365' - default-dark: '#3496e652' - - - id: p-kanban-color-2 - title: pseudo-kanban color 2 - type: variable-themed-color - opacity: true - format: hex - default-light: '#84ecec65' - default-dark: '#2ec4c452' - - - id: p-kanban-color-3 - title: pseudo-kanban color 3 - type: variable-themed-color - opacity: true - format: hex - default-light: '#94ec8c65' - default-dark: '#38ce2a52' - - - id: p-kanban-color-4 - title: pseudo-kanban color 4 - type: variable-themed-color - opacity: true - format: hex - default-light: '#dce28765' - default-dark: '#d2dd3852' - - - id: p-kanban-color-5 - title: pseudo-kanban color 5 - type: variable-themed-color - opacity: true - format: hex - default-light: '#eeb36f65' - default-dark: '#eb973752' - - - id: p-kanban-color-6 - title: pseudo-kanban color 6 - type: variable-themed-color - opacity: true - format: hex - default-light: '#f18e8e65' - default-dark: '#f3424252' - - - id: p-kanban-color-7 - title: pseudo-kanban color 7 - type: variable-themed-color - opacity: true - format: hex - default-light: '#e677e065' - default-dark: '#e45bdd52' - - - id: p-kanban-color-8 - title: pseudo-kanban color 8 - type: variable-themed-color - opacity: true - format: hex - default-light: '#ba8be165' - default-dark: '#b962ff52' - - - id: p-kanban-card-color-1 - title: pseudo-kanban-card subitem color - title.zh: 伪看板子项背景色 - type: variable-themed-color - opacity: true - format: hex - default-light: '#f9f9f99b' - default-dark: '#0000003f' - - - id: p-kanban-border-color - title: pseudo-kanban-border color - title.zh: 伪看板边框颜色 - type: variable-themed-color - opacity: true - format: hex - default-light: '#a0a0a060' - default-dark: '#00000000' - - - id: built-in-style-code-wrap - title: Code Wrap - title.zh: 代码行自动换行 code-wrap - type: heading - level: 2 - collapsed: true - description.zh: ❗cssclass:code-wrap❗实现代码块中的代码行自动换行。 - description: ❗cssclass:code-wrap❗ Can be used to wrap code in code blocks for individual .md file - - - id: built-in-style-inline-list - title: List in a horizontal row (inline list) - title.zh: 行内列表 inline-list - type: heading - level: 2 - collapsed: true - description.zh: ❗cssclass:inline-list❗列表项横向排布。 - description: ❗cssclass:inline-list❗ To make the list show in a horizontal row. Meanwhile, it makes the list show inline which can be used with inline images (like ![[xxx.jpg|inlineR]]) - - - id: built-in-style-img-grid - title: Image grid - title.zh: 图片自适应横排显示 img-grid - type: heading - level: 2 - collapsed: true - description.zh: ❗cssclass:img-grid❗实现图片类似网格一样自适应横排显示。也可以使用类似格式单独调整![[obsidian_image.png|inl|100]] (adapted from https://github.com/iEchoxu/obsidian_orange/blob/main/.obsidian/snippets/image-grid.css) - description: ❗cssclass:img-grid❗ To make images arrange in a grid in the preview mode. (adapted from https://github.com/iEchoxu/obsidian_orange/blob/main/.obsidian/snippets/image-grid.css) - - - id: built-in-style-matrix - title: Eisenhower matrix - title.zh: 表格四象图分布 matrix - type: heading - level: 2 - collapsed: true - description: ❗cssclass:matrix❗ Usage https://forum.obsidian.md/t/theme-spectrum-version-1-0-0-and-resise-graphs-controls/12688/34 (Adapted from Spectrum theme by @Wiktoria Mielcarek) - description.zh: ❗cssclass:matrix❗ 实现N*2表格四象限分布。表格内容使用![[XXX]]引入 见 https://forum.obsidian.md/t/theme-spectrum-version-1-0-0-and-resise-graphs-controls/12688/34。改自Spectrum theme by @Wiktoria Mielcarek - - - id: built-in-style-full-width - title: full-width layout - title.zh: 全宽显示元素 (i.e. wide-dataview, wide-table, wide-callout and wide-backlinks) - type: heading - level: 2 - collapsed: true - description: ❗cssclass:fullwidth wide-dataview wide-table wide-callout wide-backlinks❗ (Adapted from https://github.com/efemkay @ Faiz Khuzaimah) - description.zh: ❗cssclass:fullwidth wide-dataview wide-table wide-callout wide-backlinks❗ 分别实现整页,dv表格 md表格 callout 反链面板全宽度布局。改自https://github.com/efemkay @ Faiz Khuzaimah - - - id: topaz-community - title: Supported by Topaz Community 😁 - title.zh: 感谢Topaz社区支持😁,欢迎来访,QQ群:908688452 - type: heading - level: 1 - collapsed: false - - - id: bt-buyacoffe - title: Support me - description: "[https://www.buymeacoffee.com/whyi](https://www.buymeacoffee.com/whyi)" - type: info-text - markdown: true - - - id: bt-github - title: Star the theme - description: "[https://github.com/PKM-er/Blue-Topaz_Obsidian-css](https://github.com/PKM-er/Blue-Topaz_Obsidian-css)" - type: info-text - markdown: true -*/ - -/* @settings -name: 🥑Blue Topaz Codebox Settings -id: Blue-Topaz-Codebox-Highlight -settings: - - - id: code-header-theme - title: Codebox highlighting - title.zh: 代码框高亮语法设置 - type: heading - level: 1 - collapsed: false - - - id: code-theme-selection - title: Codebox highlighting schemes - title.zh: 代码高亮主题 - type: class-select - allowEmpty: false - default: code-theme-bt-default - options: - - - label: bt-default - value: code-theme-bt-default - - - label: Solarized Light - value: code-theme-solarized-light - - - label: Material Palenight - value: code-theme-material-palenight - - - label: Dracula - value: code-theme-dracula - - - label: Gruvbox Dark - value: code-theme-Gruvbox-dark - - - label: monokai - value: code-theme-monokai - - - label: sublime - value: code-theme-sublime - - - label: Custom - value: code-theme-custom - - - id: code-style-settings - title: Codebox style settings - title.zh: 代码框样式设置 - type: heading - level: 1 - collapsed: true - - - id: mute-code-indent-line - title: Mute codebox indent line - title.zh: 取消代码块缩进参考线 - type: class-toggle - default: false - - - id: code-line-number - title: Code box showing line numbers (Editing mode) - title.zh: 代码显示行号 (编辑模式) - description: csslass declares code-line-number to be available for the current document - description.zh: csslass 声明code-line-number 可对单篇note生效 - type: class-toggle - default: false - - - id: whole-code-wrap - title: Code wrap (Reading mode) - title.zh: 代码换行 (阅读模式) - type: class-toggle - default: true - addCommand: true - - - id: remove-language-type - title: Toggle showing types of code languages - title.zh: 移除阅读模式下代码名称 - type: class-toggle - default: false - - - id: nowrap-edit-codebox - title: Non-wrap Codebox (Live preview) - title.zh: 代码不换行 (Live preview) - type: class-toggle - default: false - addCommand: true - - - id: letter-space-code - title: Letter spacing for code - title.zh: 代码字间距 - type: variable-number-slider - default: 0 - min: 0 - max: 2 - step: 0.1 - - - id: code-box-style-option - title: Codebox style - type: class-select - allowEmpty: false - default: codebox-default-style - options: - - - label: Default - value: codebox-default-style - - - label: Frosted Glass - value: codebox-frosted-glass - - - id: blur-codebox-frosted-glass - title: Blur radius (For Frosted Glass Style) - title.zh: 模糊程度 (毛玻璃效果) - type: variable-number-slider - default: 2 - min: 0 - max: 8 - step: 1 - - - id: code-background-colors - title: Codebox highlighting background colors - title.zh: 代码框高亮背景色设置 - type: heading - level: 1 - collapsed: true - - - id: background-code - title: Codebox background color - title.zh: 代码块背景色 - type: variable-themed-color - format: hex - opacity: true - default-light: '#292d3e' - default-dark: '#292d3e' - - - id: muted-code-activeline-bg - title: Mute codebox active line - title.zh: 取消代码块当前行高亮 - type: class-toggle - default: false - - - id: code-active-line-background-color - title: Codebox active line background color - title.zh: 代码块当前行背景色 - type: variable-themed-color - format: hex - opacity: true - default-light: '#353a50' - default-dark: '#353a50' - - - id: code-selection-background - title: Codebox selection line background color - title.zh: 代码块选中背景色 - type: variable-themed-color - format: hex - opacity: true - default-light: '#353a50' - default-dark: '#353a50' - - - id: code-block-colors - title: Custom codebox syntax highlighting colors - title.zh: 自定义语法高亮颜色 - type: heading - level: 1 - collapsed: true - - - id: code-normal - title: Code block normal color - description.zh: 代码框普通字体颜色 - type: variable-themed-color - format: hex - opacity: true - default-light: '#d4d4d4' - default-dark: '#d4d4d4' - - - id: code-keyword - title: Code block keyword color - type: variable-themed-color - format: hex - default-light: '#c792ea' - default-dark: '#c792ea' - - - id: code-value - title: Code block number color - type: variable-themed-color - format: hex - default-light: '#ff5370' - default-dark: '#ff5370' - - - id: code-type - title: Code block type color - type: variable-themed-color - format: hex - default-light: '#decb6b' - default-dark: '#decb6b' - - - id: code-property - title: Code block property color - type: variable-themed-color - format: hex - default-light: '#c792ea' - default-dark: '#c792ea' - - - id: code-variable - title: Code block variable color - type: variable-themed-color - format: hex - default-light: '#f07178' - default-dark: '#f07178' - - - id: code-variable-2 - title: Code block variable-2 color - type: variable-themed-color - format: hex - default-light: '#eeffff' - default-dark: '#eeffff' - - - id: code-variable-3 - title: Code block variable-3 color - type: variable-themed-color - format: hex - default-light: '#f07178' - default-dark: '#f07178' - - - id: code-qualifier - title: Code block qualifier color - type: variable-themed-color - format: hex - default-light: '#decb6b' - default-dark: '#decb6b' - - - id: code-operator - title: Code block operator color - type: variable-themed-color - format: hex - default-light: '#89ddff' - default-dark: '#89ddff' - - - id: code-hr - title: Code block hr color - type: variable-themed-color - format: hex - default-light: '#98e342' - default-dark: '#98e342' - - - id: code-builtin - title: Code block builtin color - type: variable-themed-color - format: hex - default-light: '#ffcb6b' - default-dark: '#ffcb6b' - - - id: code-tag - title: Code block tag color - type: variable-themed-color - format: hex - default-light: '#ff5370' - default-dark: '#ff5370' - - - id: code-string-2 - title: Code block string-2 color - description: class-name - type: variable-themed-color - format: hex - default-light: '#f07178' - default-dark: '#f07178' - - - id: code-punctuation - title: Code block punctuation color - description: code punctuation, bracket color - type: variable-themed-color - format: hex - default-light: '#ff5370' - default-dark: '#ff5370' - - - id: code-comment - title: Code block comment color - type: variable-themed-color - format: hex - default-light: '#676e95' - default-dark: '#676e95' - - - id: code-string - title: Code block string color - type: variable-themed-color - format: hex - default-light: '#c3e88d' - default-dark: '#c3e88d' - - - id: code-attribute - title: Code block attribute color - type: variable-themed-color - format: hex - default-light: '#c792ea' - default-dark: '#c792ea' - - - id: code-function - title: Code block function color - type: variable-themed-color - format: hex - default-light: '#c792ea' - default-dark: '#c792ea' - - - id: code-important - title: Code block important color - type: variable-themed-color - format: hex - default-light: '#c792ea' - default-dark: '#c792ea' - - - id: cm-atom - title: Code block atom color - description: Frontmatter keys color - type: variable-themed-color - format: hex - default-light: '#f78c6c' - default-dark: '#f78c6c' - - - id: code-meta - title: Code block meta color - description: Frontmatter punctuation color - type: variable-themed-color - format: hex - default-light: '#ffcb6b' - default-dark: '#ffcb6b' - - - id: code-language - title: Code block language color - type: variable-themed-color - format: hex - default-light: '#ff5370' - default-dark: '#ff5370' - - - id: codeblock-folder - title: Inline code - title.zh: 行内代码 - type: heading - level: 1 - collapsed: true - - - id: background-code-2 - title: Inline code background color - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: text-color-code - title: Inline code color - title.zh: 行内代码颜色 - type: variable-themed-color - opacity: true - format: hex - default-light: '#' - default-dark: '#' - - - id: font-weight-inline-code - title: Font weight of inline code - title.zh: 行内代码字重 - type: variable-text - default: bold -*/ - -@font-face { - font-family: 'Lucida Handwriting'; - src: url('data:font/woff2;charset=utf-8;base64,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') format('woff2'); - font-weight: normal; - font-style: italic; - font-display: swap; -} - -@font-face { - font-family: 'boxicons'; - src: url('data:font/woff2;charset=utf-8;base64,d09GMgABAAAAAAUQAAwAAAAACcgAAATCAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhYGYABcEQgKizCJEgsWAAE2AiQDIAQgBYJKB20bvAfIjsK22bOwIjmQDyeRhxX00NzbvN1Nmu62nLQHQCDL9ufY3SlWLCy602dZsQLOD3n6L92cdrLTQfkrT6MySDfJpw9OaT98nP5JmH4/V2cmpe/6WhKztuSGJ/ESuA4hvX1EJEJolEji6JTI0tpue1NL4JWIHgIq4OgbhCi/3NpClyACc5XyAoCL6n70EWwlhmpONTB1FlpfjQVO/p/gZZEPIDSpXtxo4LaSYhHSHYt+SxUJhpheH+5uX9ye3VV/Gfy/gOQ3Fu8zRRlHGQfpRqmPgCzFCBUF1Uh/SQrUgH4DZhk6yeGXoC8cBhsxFq7pb0yj9ZTXp1KXLMmRQUixqcS8vOSggBJukKH1ydDZR4IPYZr5Euhg83gIFk9pP/Clx0I87acK8hy24z0qvcx2nb/0Cdoa+Ii0XgVzgN6r+iK0nkGLXR2X+z/gex7bxsateRzxFtwXn/LeVSySZJFoZH5I+4HvqJZKR+o4Dur6t87I2TrM6j9XdbrRcY44fLSlI+3ubuzuV5Hdvmmca2jI1uvoSDsmADmD6IHuGenUM5hVdZIFkpwkXs2bzaqVg5ig21xnZ9bUpK4udbC3keseVkdfg/zQ+QTxrilf2khRYnFlXQ3oFA9wOU5xw2nnctiCmtR0SRXZXYGyoKwnVewY+LjeTGHwbDzaORny7Ubx7umQd2bik2Sobg3K+RPl9l33+SOXNRX7Rzyyh3xsi93O6bABkL+k7Qg6sJdNW4lpYOrJSeqY8Y5wNiV/TaCTQbNh4pWu3ptEMLym787heHiFV1iqrfSZGuEmx6pMFUnBWUPZprrSuqbVv4VrsZIKU9XLvSABx5PYHh7sJLorocDdi5VC+fTknXoQAxapG1EZ7VJcvB7ywPCse5ZoWiXhxg3VDtXKzdUSo1yu6AlFbyjzB3Pl5lRYKqpMFQC6zlNVwVQBoO3DfBetL/3fZHyLEH875zoW9LUhTUVOcYUwA6fRgIBbTtKvA2yR+LMPYlIc5SLq732uzjZsbz84PdW809uR351YPvDkeGS/e1mcsIKQurCaoLCpnHWQjeFEVjhOEDgAvBQ5jVYIczAa5Qa864uU+J0mG9FJzq7mz8ye7ie0vQGl5woLR5VRhY1FYIfw4VmMLCL8P4DJY4JBvrso7cAWqDglK65rDHcKgpDsOnEZo+/qSKSJPI5BruiogT4dVdX60tQ816e755+W0fkD9Kn+1ymZhUg7aIxqABL9F1JVtE7bwhtlS+iC/gaPfES5EmhGRPcKfzdjw4z8RBxP5HiAThQ/8i1/7/VOSbevCeoAeBVmJ+lNFB8tT6ATuAU6O9hvowFoaKlY+maXjJ1P0vq4gXpOO6ynCtbAAgG8fQ61ZUvrtSoegKYKJ8usGcpIYLktWu4idUSgenkMV3u60AWLXDmihnGgNlQxb7mF5Q7UEQ2sWR6D18uFQ3uIogdmMPf3es536ZyNhdVX/kVvRrnAOOLfKX4a7IGgiBTiIMgklwgSSCKfdGLIgU0COeSSUjGpxRhGMIoFieY8tDhIAtqr9WPII4H4zj0Uo8XiwfKhEM12YYFBf70HGYwsVk6RYpUpiQ8eK85KthbJP5FiReyeEPPGMJafL53oZ03CnHJ0G2cA') format('woff2'); - font-weight: normal; - font-style: normal; - font-display: swap; -} - - -body { - --font-size-obsidian-titlebar: 13px; - --font-size-vault-name: 1em;/*左侧库名字体大小*/ - --font-size-file-header-title: 0.9em;/*文件抬头标题,只在非Andy mode plugin时生效*/ - --font-size-file-header-title-andy-plugin: 1em;/*文件抬头标题for Andy mode plugin*/ - --font-size-embed-title-size: 1.3em; - --font-size-embed-file: 1.25em; - --font-size-folder-and-file: 0.9em;/*左侧边栏文件字体大小*/ - --font-size-edit-normal: 1em;/*编辑正文字体大小*/ - --font-size-preview-normal: 1em;/*预览正文字体大小*/ - --h1-size: 1.5625em; - --h2-size: 1.4375em; - --h3-size: 1.3125em; - --h4-size: 1.1875em; - --h5-size: 1.0625em; - --h6-size: 1em; - --font-size-tag: 0.85em; - --font-size-emoji-after-tag: 1.5625em; - --font-size-list: 1em; - --font-size-preview-blockquote: 1em; - --font-size-edit-blockquote: 1em; - --font-size-outline:var(--nav-item-size); - --font-size-code: 1em; - --font-size-latex: 1em; - --font-size-cloze: 0.9375em; - --font-size-better-footnote: 1.3em; - --font-size-checklist: 0.85em; - --font-size-split: 0.85em; - --font-size-loading-diy-text: 3em; - --font-size-loading-add: 1.5em; - --table-header-size: inherit; - - /*font family*/ - --font-default: ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Inter", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Microsoft YaHei Light", sans-serif; - --font-family-list: ;/*列表字体*/ - --font-text-theme: Bookerly, 'Inter', "Segoe UI", "霞鹜文楷 GB", "LXGW WenKai", "Microsoft YaHei"; /*主体(包括列表)字体,除代码框等少数部分*/ - --h1-font: var(--font-text),var(--font-default); - --h2-font: var(--font-text),var(--font-default); - --h3-font: var(--font-text),var(--font-default); - --h4-font: var(--font-text),var(--font-default); - --font-family-title: ;/*文件抬头标题*/ - --font-family-folder-file-title: Arlrdbd, "Source Han Sans", "Noto Sans CJK", "Source Sans Pro", "Segoe UI Emoji", sans-serif;/*左侧边栏文件、文件夹字体*/ - --font-monospace-theme: 'JetBrains Mono', Consolas, Monaco, "等距更纱黑体 SC", "Source Han Mono", "Microsoft Yahei Mono", "Segoe UI Emoji", "Microsoft YaHei", "Source Code Pro", monospace; - --font-family-inline-code: var(--font-monospace-override), var(--font-monospace-theme); - --font-family-tag: Bookerly, 'Inter', "Segoe UI", "Microsoft YaHei", STzhongsong, STSong, "Segoe UI Emoji", Serif; - --font-family-vault: "Lucida Handwriting", "Segoe UI Emoji";/*左侧库名字体*/ - --font-family-special-tag: "Lucida Handwriting", "Segoe UI Emoji"; - --mermaid-font-family: Segoe UI, "Microsoft YaHei", "Segoe UI Emoji", "trebuchet ms", verdana, Arial, cursive; - --font-family-better-footnote: Arlrdbd, "Source Han Sans", "Segoe UI Emoji"; - --font-family-strong: Bookerly, 'Inter', "Segoe UI", "LXGW WenKai Screen", "LXGW WenKai Screen R", "霞鹜文楷 GB", "LXGW WenKai", "Segoe UI Emoji", var(--font-interface); - --font-family-em: ; - --font-loading-text: var(--font-monospace-theme); - - /*radius*/ - --radius-xs: 3px; - --radius-s: 5px; - --radius-m: 7px; - --radius-l: 15px; - - --background-settings-workplace-theme-light-custom: url("https://"); - --background-settings-workplace-theme-dark-custom: url("https://"); - --background-command-palette-theme-light-custom: url("https://"); - --background-command-palette-theme-dark-custom: url("https://"); - --background-panel-page-theme-dark-custom: url("https://"); - --background-panel-page-theme-light-custom: url("https://"); - --background-markdown-page-theme-dark-custom: url("https://"); - --background-markdown-page-theme-light-custom: url("https://"); - --blur-depth: 10px; - --blur-depth-cp: 10px; - --saturate-4-bg: 1; - --saturate-4-bg-cp: 1; - --brightness-4-bg: 0.9; - --brightness-4-bg-cp: 0.9; - --opacity-cp: 0.25; - --bg-panel-page-opacity-cp:0.25; - --titlebar-brightness: 1; - --titlebar-blur-depth: 8px; - --stack-tabs-background-blur-depth:40px; - - --fancy-hr-icon: '😀'; - --fancy-hr-rotate: 0deg; - --line-height-main: 1.5; - --line-height-list: 1.4; - - --line-height-split: 1.3; - --letter-space-main: 0; - --letter-space-code: 0; - - --file-line-width: 45rem; - --embed-content-height: 600px; - - --bottom-padding-value: 0em; - - --font-weight-highlight-1: normal; - --font-weight-highlight-2: normal; - --font-weight-highlight-3: normal; - --font-weight-inline-code: bold; - --image-max-width: 100%; - - --checkbox-size: 0.9rem; - - --loading-diy-text: "快乐摸鱼又一天,人生还剩多少天?"; - --loading-diy-text-color: var(--text-normal); - --loading-page-custom-gif-caption: " "; - --loading-page-custom-gif-caption-alt: " "; - --loading-page-custom-gif-url: url(https://); - --loading-text-before: "❀✿"; - --loading-text-after: "✿❀"; - --loading-add-text-color: #d47e86; - --loading-add-text-color-alt: #a4e39c; - --pixel: 20px; - --c-1: #da2400; - --c-2: #ffb623; - --c-3: #8c6e22; - - --nord0: #2E3440; - --nord1: #3B4252; - --nord1-1: #3B425251; - --nord2: #434C5E; - --nord3: #4C566A; - --nord3-1: #717a91; - - --nord4: #d8dee9; - --nord4-1: #d8dee95c; - --nord5: #E5E9F0; - --nord5-1: #E5E9F053; - --nord6: #ECEFF4; - --nord6-1: #ECEFF46c; - --nord6-2: #ECEFF43c; - - --nord7: #8fbcbb; - --nord7-transparent: #8fbcbb2f; - --nord8: #88C0D0; - --nord8-0: #65afc4; - --nord9: #81a1c1; - --nord9-1: #81a1c16c; - --nord9-2: #81a1c13c; - --nord10: #5e81ac; - - --nord11: #BF616A; - --nord11-1: #BF616A4b; - --nord12: #D08770; - --nord13: #EBCB8B; - --nord13-0: #e2b65e; - --nord13-1: #ebca894b; - --nord14: #A3BE8C; - --nord14-0: #95b677; - --nord15: #B48EAD; - - --hr-color-icon-1: var(--theme-color); - --hr-color-icon-2: var(--theme-color); - --hr-color-icon-3: var(--theme-color); - --hr-color-icon-4: var(--theme-color); - --hr-color-1: var(--theme-color); - --hr-color-2: var(--theme-color); - --hr-color-3: var(--theme-color); - --hr-color-4: var(--theme-color); - --hr-color-numbers-line-1: var(--theme-color); - --hr-color-numbers-line-2: var(--theme-color); - --hr-color-numbers-line-3: var(--theme-color); - --hr-color-numbers-line-4: var(--theme-color); - --hr-color-numbers-bg-color: var(--theme-color-translucent-015); - --hr-color-numbers-color: var(--theme-color); - --hr-numbers-text-fill: transparent; - --hr-numbers-text-stroke: var(--text-normal); - - --cloze-bg-color: var(--accent-strong); - --cloze-decoration: none; - --cloze-decoration-color: red; - --cloze-decoration-2: dashed; - --cloze-decoration-color-2: var(--theme-color); - --cloze-bg-color-3: transparent; - --cloze-decoration-3: dashed; - --cloze-decoration-color-3: var(--theme-color); - - --custom-titlebar-bg: var(--background-secondary-alt); - - --text-highlight-bg-h-dark: 57; - --text-highlight-bg-s-dark: 40%; - --text-highlight-bg-l-dark: 38%; - --text-highlight-bg-a-dark: 0.541; - - --text-highlight-bg-h-light: 34; - --text-highlight-bg-s-light: 100%; - --text-highlight-bg-l-light: 80%; - --text-highlight-bg-a-light: 0.847; - - --cursor-color: var(var(--text-normal)); - - --fancy-cursor-width: 2px; - --cursor-color-temp: var(var(--text-normal)); - - --print-strong-color: ; - --print-em-color: var(--accent-em); - - --tag-border-width: 1px; - --paragraph-spacing: 1; - --blur-codebox-frosted-glass: 2; - --blur-p-kanban-frosted-glass: 5; - - --status-bar-bg: var(--background-secondary-alt); - --status-bar-text-color: var(--text-muted); - - --list-ol-marker-1: decimal; - --list-ol-marker-2: lower-latin; - --list-ol-marker-3: lower-roman; - --list-ol-marker-4: decimal; - --list-ul-marker-1: '\2022'; - --list-ul-marker-2: '\25E6'; - --list-ul-marker-3: '\25AA'; - --list-ul-marker-4: '\25E6'; - --list-ul-marker-color: var(--list-marker-color); - --list-marker-color-collapsed: var(--theme-color); - - --list-ul-colorful-marker-content: '\2022'; - - --he-title-bar-active-bg: var(--theme-color-translucent-005); - --he-title-bar-active-pinned-bg: var(--theme-color-translucent-005); - --he-title-bar-inactive-bg: var(--theme-color-translucent-001); - --he-title-bar-inactive-pinned-bg: var(--theme-color-translucent-001); - --he-title-bar-inactive-action: var(--text-normal); - --he-title-bar-active-action: var(--theme-color); - --he-title-bar-active-fg: var(--text-normal); - --he-title-bar-inactive-fg: var(--text-muted); - - --list-spacing-bt: 1; - - --font-weight-strong: bold; - --font-style-em: italic; - --code-background: var(--background-code); - --canvas-card-opacity: 0.1; - - --popover-width-factor: 1; - --popover-height-factor: 1; - - /*bubble*/ - --bt-bubble-layout-padding: 8px; - --bt-bubble-background-color: transparent; - --bt-bubble-border-color: var(--background-modifier-border); - --bt-indentation-gradient-color-1: var(--theme-color); - --bt-indentation-gradient-color-2: transparent; - --bt-colorful-indentation-width: 1px; - - --h1-bg-color: color-mix(in srgb, var(--h1-color) 15%, transparent); - --h2-bg-color: color-mix(in srgb, var(--h2-color) 15%, transparent); - --h3-bg-color: color-mix(in srgb, var(--h3-color) 15%, transparent); - --h4-bg-color: color-mix(in srgb, var(--h4-color) 15%, transparent); - --h5-bg-color: color-mix(in srgb, var(--h5-color) 15%, transparent); - --h6-bg-color: color-mix(in srgb, var(--h6-color) 15%, transparent); - --inline-title-bg-color: color-mix(in srgb, var(--h1-color) 15%, transparent); - - --ribbon-background: var(--background-secondary-alt);--ribbon-background-collapsed: var(--background-secondary-alt); - - --bt-indentation-width-hover: 3px; - - /***thino***/ - --share-thino-background-light-custom:url("https://"); - --share-thino-background-dark-custom:url("https://"); - --thino-background-light-custom:url("https://"); - --thino-background-dark-custom:url("https://"); - - --share-card-background-opacity-cp:0.6; -} - - -body.all-dark-pdf .print, -.theme-dark { - --background-primary: var(--background-primary-bg-4-bt,#202020); - --background-primary-alt: var(--background-primary-alt-bg-4-bt,#444444); - --background-secondary: var(--background-secondary-bg-4-bt,#151515); - --background-secondary-alt: var(--background-secondary-alt-bg-4-bt,#000000); - --background-modifier-border: #343434; - --background-modifier-success: #539126; - --background-modifier-success-rgb: 83, 145, 38; - --background-modifier-error: #9b4343; - --background-modifier-error-rgb: 155, 67, 67; - --text-accent: var(--color-accent); - --text-accent-hover: var(--color-accent-2); - --text-normal: #c6c6c6; - --text-highlight: var(--text-normal); - --background-modifier-box-shadow: rgba(228, 228, 228, 0.08); - - --text-muted: #8a8a8a; - --text-muted-rgb: 138, 138, 138; - --text-faint: #797979; - --text-folder-file: #b3b3b3; - --accent-strong: #e7e7e7; - --accent-em: #a4ca8e; - --text-error: #e16d76; - --text-error-hover: #c9626a; - --text-selection: #3b767160; - --text-on-accent: #e4e4e4; - --interactive-normal: #2b2b2b; - --interactive-hover: #373737; - --accent-h: 208; - --accent-s: 64%; - --accent-l: 49%; - --accent-l-alt: calc(var(--accent-l) * 1.05); - --interactive-accent-rgb: 45, 130, 204; - --interactive-accent-hover: var(--color-accent-2); - --panel-border-color: #18191e; - --search-text: #e0e0e0; - --folder-title: #ffffff; - - --text-highlight-bg: hsla(var(--text-highlight-bg-h-dark), var(--text-highlight-bg-s-dark), var(--text-highlight-bg-l-dark), var(--text-highlight-bg-a-dark)); - --mark-highlight-strong-em: #fff7603a; - --strong-em-highlight-color: #a7b4ff; - --text-search-highlight-bg: #bb4361; - --strong-em-color-1: #43d3ff; - --strong-em-color-2: #baaaff; - - --background-search-result: var(--background-secondary-bg-4-bt); - --search-result-file-matched-bg: #023774; - --page-border-bottom: var(--background-secondary-alt); - --background-asymm-split-left: var(--background-secondary-alt); - --background-mobile-drawer-1: #1b1b1b; - --background-mobile-drawer-2: #1b1b1b69; - --background-modifier-border-hr: #3f3f3f; - --background-modifier-border-asymm: #343434; - --background-modifier-border-checkbox: #7b7b7b; - --background-transparent-black-or-white-1: #1b1b1b9a; - --background-transparent-black-or-white-2: #1e1e1ebd; - --background-transparent-black-or-white-3: #2f2f2f6c; - --background-transparent-black-or-white-3-1: #00000064; - --background-transparent-black-or-white-4: #7e7e7e1d; - --background-transparent-black-or-white-5: #0f0f0f6c; - --background-black-or-white-1: #353535; - --background-modifier-border-1: #000000; - --background-transparent-blue: #003e759a; - --scrollbar-thumb-bg: #3f3f3f7e; - --scrollbar-active-thumb-bg: #4d4d4d88; - --gray-1: #5C6370; - --gray-2: #abb2bf; - --red: #db7c84; - --red-1: #d05a63; - --orange: #d1945b; - --orange-1: #da904b; - --green: #abd58e; - --darkgreen: #568060; - --aqua: #35bed0; - --purple: #c594d4; - --blue: #a0c7e9; - --darkblue: #478fee; - --yellow: #d6b87f; - --light-yellow: #cac685; - --white: #ffffff; - --variable-2: #0072d0; - --variable-3: #5a96f7; - - --embed-color: hsla(calc(var(--accent-h) * 1),calc(var(--accent-s) * 1.2),calc(var(--accent-l) * 2),0.055); - --search-result-file-title-color: var(--text-normal); - --theme-color: var(--interactive-accent); - --theme-color-translucent-06: hsla(var(--interactive-accent-hsl),0.6); - --theme-color-translucent-04: hsla(var(--interactive-accent-hsl),0.4); - --theme-color-translucent-02: hsla(var(--interactive-accent-hsl),0.2); - --theme-color-translucent-015: hsla(var(--interactive-accent-hsl),0.15); - --theme-color-translucent-01: hsla(var(--interactive-accent-hsl),0.1); - --theme-color-translucent-005: hsla(var(--interactive-accent-hsl),0.05); - --theme-color-translucent-001: hsla(var(--interactive-accent-hsl),0.01); - - --background-blockquote: #9191911c; - --background-code: #1111118c; - --background-code-2: #4c4c4cb0; - --text-color-code: #d58000; - --code-normal: #d0d0d0; - --list-ul-block-color: #e19742a9; - --list-ul-disc-color: #eb9563; - --green-1: #79c142; - --list-ul-hover: #e28915de; - --list-ol-block-color: #2685bbb4; - --list-ol-number-color: var(--list-marker-color); - --list-ol-hover: #2c7bd6; - --list-marker-color-collapsed: var(--theme-color); - - --tag-text: #e4e4e4; - --stag1: #f08383; - --stag1-bg: #bd1919; - --stag2: #e7b263; - --stag2-bg: #ac6700; - --stag3: #77df89; - --stag3-bg: #058c1c; - --tag1: #3674bb; - --tag2: #3685ad; - --tag3: #2a8f91; - --tag4: #43804f; - --tag5: #5f932e; - - --tag-dailynote: #98c8ff; - --tag-dailynote-bg: #0f60bd; - --tag-weeklynote: #d1e6ff; - --tag-weeklynote-bg: #3971b1; - --tag-questions: #d4bdff; - --tag-questions-bg: #6640ae; - --tag-ideas: #fcfcc0; - --tag-ideas-bg: #565656d8; - - --h1-color: var(--print-h1-color,hsl(78, 62%, 47%)); - --h2-color: var(--print-h2-color,hsl(118, 42%, 49%)); - --h3-color: var(--print-h3-color,hsl(180, 53%, 48%)); - --h4-color: var(--print-h4-color,hsl(216, 69%, 68%)); - --h5-color: var(--print-h5-color,hsl(258, 79%, 77%)); - --h6-color: var(--print-h6-color,hsl(290, 85%, 81%)); - - --graph-text-color: #B5B5B5; - --graph-tag: #88d842bb; - --graph-attach: #b2cfe0bb; - --graph-circle: #55a2d6bb; - --graph-line: #8c8c8c; - --graph-unresolved: #f08080de; - --graph-arrow: #c23917; - --graph-control-bg: #00000080; - --graph-circle-outline: transparent; - --graph-canvas-bg: var(--background-primary); - --graph-circle-fill-highlight: var(--interactive-accent); - --graph-line-fill-highlight: rgb(var(--interactive-accent-rgb)); - - --unresolved-link: var(--graph-unresolved); - --link-unresolved-decoration-color: var(--graph-unresolved); - --internal-link-color: var(--text-accent); - --external-link-color: var(--internal-link-color); - - /*mermaid*/ - --mermaid-active-task-color: #187ef1; - --mermaid-seq-dia-color: #1371be; - - /*table*/ - --table-background-color: #2f2f2f32; - --table-background-color-odd: #00000033; - --table-border-color: #4a4a4a; - --table-thead-background-color: var(--theme-color-translucent-01); - --table-hover-raw-color: #08569a21; - --table-hover-color: #1f65a221; - --table-hover-thead-color: #21395bc7; - --table-header-color: var(--text-normal); - - /*calendar*/ - --calendar-week-color: #a2df94; - --calendar-week-hover: #61815c; - --calendar-week-background-color: #4a5842; - --calendar-today-background-color: #8c4545; - --calendar-hover-color: var(--theme-color-translucent-02); - --calendar-active-color: var(--theme-color-translucent-04); - - /*day planner*/ - --day-planner-pie: #f19c1c; - --day-planner-timeline: #000000; - --day-planner-line: #dfcf77; - --day-planner-dot: #dfcf77; - --day-planner-item-hover: #053c85; - --event-item-color1: #283493bb; - --event-item-color2: #1565c0bb; - --event-item-color3: #00838fbb; - --event-item-color4: #2e7d32bb; - --event-item-color5: #9e9d24bb; - --event-item-color6: #ff8f00bb; - --event-item-color7: #d84315bb; - --event-item-color8: #c62828bb; - --event-item-color9: #ad1457bb; - --event-item-color10: #6a1b9abb; - - --kanban-color-1: #0065d852; - --kanban-color-2: #30e4e441; - --kanban-color-3: #1cb54f44; - --kanban-color-4: #97b82b49; - --kanban-color-5: #bb722d41; - --kanban-color-6: #d12e2e42; - --kanban-color-7: #8f36cb3f; - - /*colourful notes*/ - --text-gray: #acacac; - --text-brown: #be9684; - --text-orange: #ffa344; - --text-yellow: #ffdc51; - --text-yellow-2: #cca217; - --text-green: #52c7b2; - --text-blue: #7c94ff; - --text-purple: #b386f1; - --text-pink: #ff6bba; - --text-red: #ff4f4f; - - --background-gray: #535353; - --background-brown: #493a3a; - --background-orange: #53422f; - --background-yellow: #585536; - --background-green: #32503e; - --background-blue: #2f5264; - --background-purple: #443f57; - --background-pink: #533b4a; - --background-red: #683c3c; - - --note-important: #d64545; - --note-cloze: #ffffff; - - /* stickies */ - --stickies-color-1: #84c584; - --stickies-color-2: #c7a3cf; - --tape-color: #99999967; - - /*Sliding panes*/ - --sliding-panes-header-color: #f1a634d0; - --background-4-sliding-pane: #252525ed; - --bg-sliding-pane-header: #00000043; - --bg-sliding-pane-leaf: #0f0f0f36; - - /*admonition*/ - --admonition-bg-color: #11111100; - - /*checklist*/ - --checklist-bg: #1d1d1d96; - --checklist-bg-hover: #08080896; - - --color-view-header-gradient-1: #060813de; - --color-view-header-gradient-2: #00285dc0; - - --checkbox-color-0: #3187d3; - --checkbox-color-1: #a9a608; - --checkbox-color-2: #1dac10; - --checkbox-color-3: #ffd1d1; - --checkbox-color-4: #625d4c; - --checkbox-color-5: #9a67ae; - --checkbox-color-6: #5f5f5f; - --text-checked-checkbox: #8e8e8e; - - --activeline-background: var(--theme-color-translucent-005); - - /*pseudo-kanban*/ - --p-kanban-bg-color: #6c6c6c42; - --p-kanban-border-color: transparent; - --p-kanban-card-color-1: #0000003f; - --p-kanban-card-color-2: #41414136; - --p-kanban-color-6: #f3424252; - --p-kanban-color-5: #eb973752; - --p-kanban-color-4: #d2dd3852; - --p-kanban-color-3: #38ce2a52; - --p-kanban-color-2: #2ec4c452; - --p-kanban-color-1: #3496e652; - --p-kanban-color-8: #b962ff52; - --p-kanban-color-7: #e45bdd52; - --p-kanban-color-simple: #8e8e8e41; - --p-kanban-color-shadow: #0000004d; - - /*style settings*/ - --background-secondary-translucent: #2c2c2c26; - --background-secondary-translucent-1: #2c2c2c26; - - /*rainbow-checklist*/ - --checklist-color-1: #005aa486; - --checklist-color-2: #00798986; - --checklist-color-3: #12781586; - --checklist-color-4: #897b0086; - --checklist-color-5: #a4620086; - --checklist-color-6: #ab100586; - --checklist-color-7: #7f1f9086; - - --table-color-calendar-2: rgb(0, 91, 144); - --table-color-rgb: 0, 91, 144; - - --mjx-inline-math-color: var(--text-normal); - --mjx-math-color: var(--text-normal); - --background-leaf-resize-handle: var(--background-secondary-alt-bg-4-bt); - --search-result-background: var(--background-secondary-alt-bg-4-bt); - --text-folder-file-icon: var(--theme-color); - - --color-highlight-1: var(--text-normal); - --color-highlight-2: var(--text-normal); - --color-highlight-3: var(--text-normal); - --bg-color-highlight-1: #c865656f; - --bg-color-highlight-2: #54b9476f; - --bg-color-highlight-3: #1e83d086; - - --background-popover: var(--color-base-10); - - --cursor-red: #ff3939; - --cursor-yellow: #fff955; - --cursor-green: #7dff7d; - --cursor-blue: #8ac7ff; - --cursor-violet: #bf76ff; - - --bg-color-settings-0: #07070747; - --bg-color-settings-0-1: #ffffff00; - --bg-color-settings-1: #7c7c7c6d; - --bg-color-settings-2: #1f1f1f52; - --bg-color-settings-3: #141414be; - --bg-color-settings-4: #2e2e2e9d; - --bg-color-settings-5: #424242aa; - --bg-color-settings-6: #191919c7; - - --background-waves-color:#4A75DB8C; - - --tab-stacked-shadow: #0e0e0e; - --divider-color: #000000; - --tab-outline-color: #151515; - - --bg-color-notebook: #2a2825; - --grid-notebook-line-color-1: #c7c7c71f; - --grid-notebook-line-color-2: #74747440; - --dotted-notebook-dot-color: #c7c7c71f; - --background-nonoverlapping-note: #000000; - --stripe-notebook-stripe-color: #162419; - --prompt-box-shadow: #555555; - --background-titlebar-inner: hsla(var(--accent-h), var(--accent-s), var(--accent-l), 10%); - --window-shadow: 0 1px 3px hsla(207, 10%, 10%, 0.1); - --window-shadow2: 0 0 9px hsla(212, 17%, 0%, 0.3); - --bt-indentation-line-image: url(""); - --bt-connected-indent-line-color: #926a6a; - --list-colorful-marker: #ff8686; -} - -.theme-light { - --background-primary: var(--background-primary-bg-4-bt,#ffffff); - --background-primary-alt: var(--background-primary-alt-bg-4-bt,#e9e9e9); - --background-secondary: var(--background-secondary-bg-4-bt,#fcfcfc); - --background-secondary-alt: var(--background-secondary-alt-bg-4-bt,#f3f3f3); - - --background-modifier-border: #dddddd; - --background-modifier-form-field: #fff; - --background-modifier-form-field-highlighted: #fff; - --background-modifier-box-shadow: rgba(0, 0, 0, 0.08); - --background-modifier-success: #A4E7C3; - --background-modifier-error: #e68787; - --background-modifier-error-rgb: 230, 135, 135; - --background-modifier-error-hover: #FF9494; - - --text-accent: var(--color-accent); - --text-accent-hover: var(--color-accent-2); - --text-normal: #0e0e0e; - --text-muted: #7f7f7f; - --text-highlight: var(--text-normal); - --text-faint: #7f7f7f; - --text-folder-file: #272727; - --accent-strong: #000000; - --accent-em: #099d4e; - --text-error: #e75545; - --text-error-hover: #f86959; - - --text-selection: #a9d1c859; - --text-on-accent: #ffffff; - --interactive-normal: #efefef; - --interactive-hover: #e6e6e6; - --accent-h: 207; - --accent-s: 77%; - --accent-l: 54%; - --accent-l-alt: calc(var(--accent-l) * 0.9); - --interactive-accent-rgb: 70, 142, 235; - - --interactive-accent-hover: var(--color-accent-2); - --panel-border-color: #dbdbdc; - --search-text: #000000; - --folder-title: #000000; - - --strong-em-highlight-color: #237add; - --mark-highlight-strong-em: #ff880049; - --text-highlight-bg: hsla(var(--text-highlight-bg-h-light), var(--text-highlight-bg-s-light), var(--text-highlight-bg-l-light), var(--text-highlight-bg-a-light)); - --text-search-highlight-bg: #ffd1dd; - --strong-em-color-1: #1048ff; - --strong-em-color-2: #14c8ff; - - --background-search-result: var(--background-secondary-bg-4-bt); - --search-result-file-matched-bg: #ffd9d9e5; - - --page-border-bottom: var(--background-secondary-alt); - --background-asymm-split-left: var(--background-secondary-alt); - - --background-mobile-drawer-1: #ffffff; - --background-mobile-drawer-2: #ffffffa1; - --background-modifier-border-hr: #bfbfbf; - --background-modifier-border-asymm: #d8d8d8; - --background-modifier-border-checkbox: #9c9c9c; - --background-secondary-alt-bg-4-bt-publish: #f6f6f6; - - --background-transparent-black-or-white-1: #ffffffb0; - --background-transparent-black-or-white-2: #ffffffca; - --background-transparent-black-or-white-3: #eeeeee91; - --background-transparent-black-or-white-3-1: #fafafac3; - --background-transparent-black-or-white-4: #a7a7a765; - --background-transparent-black-or-white-5: #f0f0f091; - --background-black-or-white-1: #e4e4e4; - --background-modifier-border-1: #e1dfdf; - --background-transparent-blue: #c6e5ffde; - --bg-color-settings-0: #7d7d7d6b; - --bg-color-settings-0-1: #ffffff77; - --bg-color-settings-1: #ffffff17; - --bg-color-settings-2: #ffffff5a; - --bg-color-settings-3: #ffffffda; - --bg-color-settings-4: #ffffffd2; - --bg-color-settings-5: #d4d4d464; - --bg-color-settings-6: #ffffff85; - - --scrollbar-thumb-bg: #dcdcdcbe; - --scrollbar-active-thumb-bg: #ddddddd9; - - --gray-1: #383a42; - --gray-2: #383a42; - --red: var(--nord11); - --red-1: #f16464f5; - --green: var(--nord14); - --darkgreen: #068a5e; - --blue: var(--nord10); - --darkblue: #3b84e4; - --purple: #c74df7; - --aqua: var(--nord8); - --yellow: #e48100; - --light-yellow: #ab9a02; - --orange: #db9600; - --orange-1: #cc7523; - --light-purple: #b74ff3; - --blue-green: #3bd4da; - --white: #ffffff; - --variable-2: #0072d0; - --variable-3: #5a96f7; - - --embed-color: hsla(calc(var(--accent-h) * 1),calc(var(--accent-s) * 0.8),calc(var(--accent-l) * 1),0.035); - --search-result-file-title-color: var(--text-normal); - --theme-color: var(--interactive-accent); - --theme-color-translucent-06: hsla(var(--interactive-accent-hsl),0.6); - --theme-color-translucent-04: hsla(var(--interactive-accent-hsl),0.4); - --theme-color-translucent-02: hsla(var(--interactive-accent-hsl),0.2); - --theme-color-translucent-015: hsla(var(--interactive-accent-hsl),0.15); - --theme-color-translucent-01: hsla(var(--interactive-accent-hsl),0.1); - --theme-color-translucent-005: hsla(var(--interactive-accent-hsl),0.05); - --theme-color-translucent-001: hsla(var(--interactive-accent-hsl),0.01); - - --background-blockquote: #d5d5d52c; - --background-code: #e6e6e671; - --background-code-2: #cccccc62; - --text-color-code: #e95d00; - --code-normal: #000000; - - --list-ul-block-color: #b9751b; - --list-ul-disc-color: #f39c55; - --green-1: #3dc730; - --list-ul-hover: #dd922f; - --list-ol-block-color: #3573a5; - --list-ol-number-color: var(--list-marker-color); - --list-ol-hover: #2c7bd6; - --list-marker-color-collapsed: var(--theme-color); - - --tag-text: #f8f8f8; - --stag1: #fa8787; - --stag1-bg: #eb2727; - --stag2: #fdbd5c; - --stag2-bg: #ee9002; - --stag3: #50ce3a; - --stag3-bg: #22ac09; - --tag1: #2573f0; - --tag2: #2193f0; - --tag3: #17a5e7; - --tag4: #14acc7; - --tag5: #10bdbd; - --tag-dailynote: #0077ff; - --tag-dailynote-bg: #277CDD; - --tag-weeklynote: #4b9fff; - --tag-weeklynote-bg: #6aafff; - --tag-questions: #b68fff; - --tag-questions-bg: #b085ff; - --tag-ideas: #ceb900; - --tag-ideas-bg: #444444d8; - - --h1-color: var(--print-h1-color,hsl(216, 88%, 26%)); - --h2-color: var(--print-h2-color,hsl(212, 100%, 33%)); - --h3-color: var(--print-h3-color,hsl(210, 86%, 39%)); - --h4-color: var(--print-h4-color,hsl(208, 58%, 49%)); - --h5-color: var(--print-h5-color,hsl(209, 70%, 62%)); - --h6-color: var(--print-h6-color,hsl(209, 65%, 72%)); - - --graph-text-color: #696969; - --graph-tag: #77d425cc; - --graph-attach: #afcfe0cc; - --graph-circle: #1f78b4cc; - --graph-line: #b1b1b1; - --graph-unresolved: #db4e4ecc; - --graph-arrow: #e25300; - --graph-control-bg: #ffffff9a; - --graph-circle-outline: transparent; - --graph-canvas-bg: var(--background-primary); - --graph-circle-fill-highlight: var(--interactive-accent); - --graph-line-fill-highlight: rgb(var(--interactive-accent-rgb)); - - --unresolved-link: var(--graph-unresolved); - --link-unresolved-decoration-color: var(--graph-unresolved); - --internal-link-color: var(--text-accent); - --external-link-color: var(--internal-link-color); - - /*mermaid*/ - --mermaid-active-task-color: #44bbff; - --mermaid-seq-dia-color: #76c8ff; - - /*table*/ - --table-background-color: #f1f1f176; - --table-background-color-odd: #ffffff70; - --table-border-color: #7d7d7d; - --table-thead-background-color: var(--theme-color-translucent-01); - --table-hover-raw-color: #85bfee2f; - --table-hover-color: #5dacec34; - --table-hover-thead-color: #ddefff; - --table-header-color: var(--text-normal); - - /*calendar*/ - --calendar-week-color: #48b432; - --calendar-week-hover: #e9ffe3; - --calendar-week-background-color: #d6e6bf; - --calendar-today-background-color: #aaeec6; - --calendar-hover-color: var(--theme-color-translucent-01); - --calendar-active-color: var(--theme-color-translucent-02); - - /*day planner*/ - --day-planner-pie: #eca95c; - --day-planner-timeline: #d62f2f; - --day-planner-line: #ffd900; - --day-planner-dot: #ffd900; - --day-planner-item-hover: #8fccff; - --event-item-color1: #65ace6; - --event-item-color2: #52a4e7; - --event-item-color3: #2e96eb; - --event-item-color4: #2786da; - --event-item-color5: #1275cc; - --event-item-color6: #2664c0; - --event-item-color7: #1652ac; - --event-item-color8: #0c469c; - --event-item-color9: #0a3c86; - --event-item-color10: #072f6b; - - /*colourful notes*/ - --text-gray: #37352f99; - --text-brown: #855a46; - --text-orange: #d9730d; - --text-yellow: #d4a300; - --text-yellow-2: #a78000; - --text-green: #00927f; - --text-blue: #0083bb; - --text-purple: #5d1fb9; - --text-pink: #c40075; - --text-red: #ff4343; - --background-gray: #ebeced; - --background-brown: #e9e5e3; - --background-orange: #faebdd; - --background-yellow: #fbf3db; - --background-green: #ddedea; - --background-blue: #ddebf1; - --background-purple: #eae4f2; - --background-pink: #f4dfeb; - --background-red: #ffe3e3; - - --note-important: #fd4141; - --note-cloze: #000000; - - /* stickies */ - --stickies-color-1: #b3e2b3; - --stickies-color-2: #e9c6f1; - --tape-color: #acacac65; - - /*Sliding panes*/ - --sliding-panes-header-color: #0e64bb; - --background-4-sliding-pane: #ffffffef; - --bg-sliding-pane-header: #ffffff97; - --bg-sliding-pane-leaf: #ffffff88; - - /*admonition*/ - --admonition-bg-color: #FFFFFF00; - - /*checklist*/ - --checklist-bg: #dfdfdf8e; - --checklist-bg-hover: #ffffffcc; - - --color-view-header-gradient-1: #ffffffce; - --color-view-header-gradient-2: #ffffffce; - - /*checkbox*/ - --checkbox-color-0: #2f92e4; - --checkbox-color-1: #c4c116; - --checkbox-color-2: #4bbf40; - --checkbox-color-3: #ffe9e9; - --checkbox-color-4: #fff8b7; - --checkbox-color-5: #ad7fbf; - --checkbox-color-6: #5f5f5f; - --text-checked-checkbox: #9b9b9b; - - --activeline-background: var(--theme-color-translucent-005); - - /*pseudo-kanban*/ - --p-kanban-bg-color: #d3d3d32d; - --p-kanban-border-color: #a0a0a060; - --p-kanban-card-color-1: #ffffff80; - --p-kanban-card-color-2: #ffffff; - --p-kanban-color-6: #f18e8e65; - --p-kanban-color-5: #eeb36f65; - --p-kanban-color-4: #d1d77f65; - --p-kanban-color-3: #8ce38465; - --p-kanban-color-2: #7cdddd65; - --p-kanban-color-1: #52aaf365; - --p-kanban-color-8: #ba8be165; - --p-kanban-color-7: #e677e065; - --p-kanban-color-simple: #cdcdcd2c; - --p-kanban-color-shadow: #cfcfcf4d; - - /*style settings*/ - --background-secondary-translucent: #ffffff3d; --background-secondary-translucent-1: #ffffff5d; - - /*rainbow-checklist*/ - --checklist-color-1: #bbdefbab; - --checklist-color-2: #b2ebf2ab; - --checklist-color-3: #c8e6c9ab; - --checklist-color-4: #f8ef99ab; - --checklist-color-5: #ffe0b2ab; - --checklist-color-6: #ffcdd2ab; - --checklist-color-7: #e1bee7ab; - - --table-color-calendar-2: rgb(167, 223, 251); - --table-color-rgb: 167, 223, 251; - - --mjx-inline-math-color: var(--text-normal); - --mjx-math-color: var(--text-normal); - --background-leaf-resize-handle: var(--background-secondary-alt-bg-4-bt); - --text-folder-file-icon: var(--theme-color); - - --color-highlight-1: var(--text-normal); - --color-highlight-2: var(--text-normal); - --color-highlight-3: var(--text-normal); - --bg-color-highlight-1: #ff000034; - --bg-color-highlight-2: #0fc41835; - --bg-color-highlight-3: #4ca6ff51; - - --background-popover: var(--color-base-10); - - --cursor-red: #ff0000; - --cursor-yellow: #d5ca00; - --cursor-green: #008000; - --cursor-blue: #1791e2; - --cursor-violet: #ee82ee; - - --background-waves-color:#4A75DB8C; - - --tab-stacked-shadow: #d6d6d6; - --divider-color: #e3e3e3; - --tab-outline-color: #e3e3e3; - - --bg-color-notebook: #fef9f1; - --grid-notebook-line-color-1: #c7c7c740; - --grid-notebook-line-color-2: #afafaf40; - --dotted-notebook-dot-color: #c7c7c780; - --stripe-notebook-stripe-color: #f5f2e6; - --background-nonoverlapping-note: #ffffff; - --prompt-box-shadow: #bebebe; - --background-titlebar-inner: hsla(var(--accent-h), var(--accent-s), var(--accent-l), 10%); - --window-shadow: 0 1px 3px hsla(212, 17%, 80%, 0.2); - --window-shadow2: 0 0 9px hsla(217, 15%, 83%, 0.7); - --bt-indentation-line-image: url(""); - --bt-connected-indent-line-color: #FFA8A8; - --list-colorful-marker: #fd4949; -} - -body.color-scheme-options-avocado-topaz .theme-light, -body.color-scheme-options-avocado-topaz.theme-light { - --background-primary: var(--background-primary-bg-4-bt,#ffffff); - --background-primary-alt: var(--background-primary-alt-bg-4-bt,#e9e9e9); - --background-secondary: var(--background-secondary-bg-4-bt,#fcfcfc); - --background-secondary-alt: var(--background-secondary-alt-bg-4-bt,#e8f0e8); - - --background-modifier-border: #e1dfdf; - - --accent-em: #620ac6; - --text-selection: #7fbffe59; - --accent-h: 143; - --accent-s: 34%; - --accent-l: 45%; - --interactive-accent-rgb: 122, 189, 148; - - --search-text: #000000; - --folder-title: #000000; - - --strong-em-highlight-color: #08ae84; - --mark-highlight-strong-em: #dbe72849; - --text-highlight-bg: #ecf56ed8; - --text-search-highlight-bg: #ffd1dd; - --strong-em-color-1: #08ae84; - --strong-em-color-2: #01531d; - - --background-primary-bg-4-bt: #ffffff; - --background-primary-alt-bg-4-bt: #e9e9e9; - --background-secondary-bg-4-bt: #ffffff; - --background-secondary-alt-bg-4-bt: #e8f0e8; - - --background-mobile-drawer-1: #ffffff; - --background-mobile-drawer-2: #ffffffa1; - --background-secondary-alt-bg-4-bt-publish: #f6f6f6; - - --background-transparent-blue: #c6e5ffde; - - --scrollbar-thumb-bg: #c6c6c6a8; - --scrollbar-active-thumb-bg: #c6c6c6; - --search-result-file-title-color: var(--text-normal); - - --background-blockquote: #b6b6b62c; - --background-code: #ebebeb71; - --background-code-2: #cccccc62; - --text-color-code: #e95d00; - - --list-ul-block-color: #b9751b; - --list-ul-disc-color: #f39c55; - --green-1: #3dc730; - --list-ul-hover: #dd922f; - --list-ol-block-color: #35a569; - --list-ol-number-color: #429a71; - --list-ol-hover: #31b870; - - --tag-text: #f8f8f8; - --stag1: #fa8787; - --stag1-bg: #eb2727; - --stag2: #fdbd5c; - --stag2-bg: #ee9002; - --stag3: #50ce3a; - --stag3-bg: #22ac09; - --tag1: #79a26b; - --tag2: #7eb56b; - --tag3: #56b15b; - --tag4: #2db37b; - --tag5: #17b198; - --tag6: #19bb8b; - --tag7: #15bf1d; - --tag8: #61c108; - --tag9: #6ab607; - --tag-dailynote: #0077ff; - --tag-dailynote-bg: #277CDD; - --tag-weeklynote: #4b9fff; - --tag-weeklynote-bg: #6aafff; - --tag-questions: #b68fff; - --tag-questions-bg: #b085ff; - --tag-ideas: #ceb900; - --tag-ideas-bg: #444444d8; - - --h1-color: var(--print-h1-color,#02401f); - --h2-color: var(--print-h2-color,#034f27); - --h3-color: var(--print-h3-color,#034924); - --h4-color: var(--print-h4-color,#14452b); - --h5-color: var(--print-h5-color,#0e4728); - --h6-color: var(--print-h6-color,#19452e); - - /*graph*/ - --graph-text-color: #696969; - --graph-tag: #da9ee2cc; - --graph-attach: #88b0d6cc; - --graph-circle: #6fbf8ecc; - --graph-line: #b1b1b1; - --graph-unresolved: #db4e4ecc; - --graph-arrow: #e25300; - --graph-control-bg: #ffffff9a; - - /*mermaid*/ - --mermaid-active-task-color: #44bbff; - --mermaid-seq-dia-color: #76c8ff; - - /*table*/ - --table-border-color: #7d7d7d; - --table-thead-background-color: #dbe4dac7; - --table-hover-raw-color: #dbe4da57; - --table-hover-color: #dbe4da37; - --table-hover-thead-color: #dbe4da; - - /*calendar*/ - --calendar-week-color: #48b432; - --calendar-week-hover: #e9ffe3; - --calendar-week-background-color: #d6e6bf; - --calendar-today-background-color: #aaeec6; - - /*day planner*/ - --day-planner-pie: #eca95c; - --day-planner-timeline: #d62f2f; - --day-planner-line: #ffd900; - --day-planner-dot: #ffd900; - --day-planner-item-hover: #5ca35c; - --event-item-color1: #7c9f14; - --event-item-color2: #659f14; - --event-item-color3: #529f14; - --event-item-color4: #3d9f14; - --event-item-color5: #2d9f14; - --event-item-color6: #1d9f14; - --event-item-color7: #149f1f; - --event-item-color8: #149f2d; - --event-item-color9: #149f39; - --event-item-color10: #149f44; - - /*Sliding panes*/ - --sliding-panes-header-color: #02401f; - - --color-view-header-gradient-1: #d9f7d9ef; - --color-view-header-gradient-2: #e9f3edef; - - /*checkbox*/ - --checkbox-color-0: #4cb385; - --checkbox-color-1: #c4c116; - --checkbox-color-2: #4077bf; - --checkbox-color-3: #ffe9e9; - --checkbox-color-4: #fffbd4; - --checkbox-color-5: #ad7fbf; - --checkbox-color-6: #5f5f5f; - - --table-color-calendar-2: rgb(182, 221, 191); - --table-color-rgb: 182, 221, 191; -} - -body.color-scheme-options-avocado-topaz .workspace-leaf.mod-active .view-header-title { - color: var(--h1-color); -} - -body.color-scheme-options-avocado-topaz.theme-dark { - --background-primary: var(--background-primary-bg-4-bt,#181818); - --background-primary-alt: var(--background-primary-alt-bg-4-bt,#000000); - --background-secondary: var(--background-secondary-bg-4-bt,#181818); - --background-secondary-alt: var(--background-secondary-alt-bg-4-bt,#000000); - --accent-h: 140; - --accent-s: 52%; - --accent-l: 41%; - --interactive-accent-rgb: 50, 159, 86; - - --text-selection: #0080ff59; - --text-highlight-bg: #47893b8a; - --mark-highlight-strong-em: #47893b7a; - --strong-em-highlight-color: #9c8ce6; - --text-search-highlight-bg: #bb4361; - --strong-em-color-1: #9c8ce6; - --strong-em-color-2: #23d05c; - - --background-mobile-drawer-1: #1b1b1b; - --background-mobile-drawer-2: #1b1b1b69; - --background-transparent-blue: #003e759a; - --scrollbar-thumb-bg: #8282827e; - --scrollbar-active-thumb-bg: #828282; - --search-result-file-title-color: var(--text-normal); - - --background-blockquote: #9191911c; - --background-code: #1111118c; - --background-code-2: #4c4c4cb0; - --text-color-code: #d58000; - - --list-ul-block-color: #e19742a9; - --list-ul-disc-color: #eb9563; - --green-1: #79c142; - --list-ul-hover: #e28915de; - --list-ol-block-color: #26bb32b4; - --list-ol-number-color: #95c49d; - --list-ol-hover: #2cd62c; - - --graph-text-color: #B5B5B5; - --graph-tag: #b992ddbb; - --graph-attach: #76c1f0bb; - --graph-circle: #44d07ebb; - --graph-line: #8c8c8c; - --graph-unresolved: #f08080de; - --graph-arrow: #c23917; - --graph-control-bg: #00000080; - - /*mermaid*/ - --mermaid-active-task-color: #187ef1; - --mermaid-seq-dia-color: #1371be; - - /*table*/ - --table-thead-background-color: #557f5c43; - --table-hover-raw-color: #557f5c23; - --table-hover-color: #557f5c23; - --table-hover-thead-color: #557f5c53; - - /*calendar*/ - --calendar-week-color: #a2df94; - --calendar-week-hover: #61815c; - --calendar-week-background-color: #4a5842; - --calendar-today-background-color: #8c4545; - - /*day planner*/ - --day-planner-pie: #f19c1c; - --day-planner-timeline: #000000; - --day-planner-line: #dfcf77; - --day-planner-dot: #dfcf77; - --day-planner-item-hover: #059429; - --event-item-color1: #347703; - --event-item-color2: #077703; - --event-item-color3: #03771e; - --event-item-color4: #037737; - --event-item-color5: #03774d; - --event-item-color6: #03775a; - --event-item-color7: #03776c; - --event-item-color8: #037377; - --event-item-color9: #036877; - --event-item-color10: #035e77; - - /*Sliding panes*/ - --sliding-panes-header-color: #27b822; - --background-4-sliding-pane: #252525ed; - - --color-view-header-gradient-1: #000000de; - --color-view-header-gradient-2: #002900c0; - - /*checkbox*/ - --checkbox-color-0: #25c648; - --checkbox-color-1: #a9a608; - --checkbox-color-2: #1061ac; - --checkbox-color-3: #ffd1d1; - --checkbox-color-4: #625d4c; - --checkbox-color-5: #9a67ae; - --checkbox-color-6: #5f5f5f; - - --table-color-calendar-2: rgb(5, 158, 5); - --table-color-rgb: 5, 158, 5; - --divider-color: #000000; -} - - -body.color-scheme-options-monochrome-topaz.theme-dark { - --background-primary: var(--background-primary-bg-4-bt,#1e1e1e); - --background-primary-alt: var(--background-primary-alt-bg-4-bt,#000000); - --background-secondary: var(--background-secondary-bg-4-bt,#151515); - --background-secondary-alt: var(--background-secondary-alt-bg-4-bt,#000000); - --accent-em: #ffffff; - --accent-h: 0; - --accent-s: 0%; - --accent-l: 47%; - --interactive-accent-rgb: 120, 120, 120; - - --text-highlight-bg: #89853b8a; - --mark-highlight-strong-em: #fff7603a; - --strong-em-highlight-color: #ffffff; - --text-search-highlight-bg: #bb4361; - - --search-result-file-title-color: var(--text-normal); - - --background-blockquote: #9191911c; - --background-code: #1111118c; - --background-code-2: #4c4c4cb0; - --text-color-code: #d58000; - - --internal-link-color: #3197eb; - --list-ul-block-color: #d0d0d0a9; - --list-ul-disc-color: #eb9563; - --green-1: #79c142; - --list-ul-hover: #e28915de; - --list-ol-block-color: #878787b4; - --list-ol-number-color: #c6c6c6; - --list-ol-hover: #2c7bd6; - --tag-text: #e4e4e4; - --stag1: #f08383; - --stag1-bg: #bd1919; - --stag2: #e7b263; - --stag2-bg: #ac6700; - --stag3: #77df89; - --stag3-bg: #058c1c; - --tag1: #cccccc; - --tag2: #cccccc; - --tag3: #cccccc; - --tag4: #cccccc; - --tag5: #cccccc; - --tag-dailynote: #98c8ff; - --tag-dailynote-bg: #0f60bd; - --tag-weeklynote: #d1e6ff; - --tag-weeklynote-bg: #3971b1; - --tag-questions: #d4bdff; - --tag-questions-bg: #6640ae; - --tag-ideas: #fcfcc0; - --tag-ideas-bg: #565656d8; - - --h1-color: var(--print-h1-color,#ebebeb); - --h2-color: var(--print-h2-color,#ebebeb); - --h3-color: var(--print-h3-color,#ebebeb); - --h4-color: var(--print-h4-color,#ebebeb); - --h5-color: var(--print-h5-color,#ebebeb); - --h6-color: var(--print-h6-color,#ebebeb); - - /*graph*/ - --graph-text-color: #B5B5B5; - --graph-tag: #88d842bb; - --graph-attach: #5cb5e9bb; - --graph-circle: #ebebebb9; - --graph-line: #8c8c8c; - --graph-unresolved: #f08080de; - --graph-arrow: #c23917; - --graph-control-bg: #00000080; - - /*mermaid*/ - --mermaid-active-task-color: #187ef1; - --mermaid-seq-dia-color: #1371be; - - --table-border-color: #878787; - --table-thead-background-color: #b3b3b363; - --table-hover-raw-color: #4040401c; - --table-hover-color: #59595947; - --table-hover-thead-color: #6969691c; - - /*calendar*/ - --calendar-week-color: #ededed; - --calendar-week-hover: #bfbfbf52; - --calendar-week-background-color: #b5b5b52e; - --calendar-today-background-color: #8c4545; - - /*day planner*/ - --day-planner-pie: #f19c1c; - --day-planner-timeline: #000000; - --day-planner-line: #dfcf77; - --day-planner-dot: #dfcf77; - --day-planner-item-hover: #707070; - --event-item-color1: #0a0a0a; - --event-item-color2: #121212; - --event-item-color3: #171717; - --event-item-color4: #212121; - --event-item-color5: #2b2b2b; - --event-item-color6: #333333; - --event-item-color7: #3d3d3d; - --event-item-color8: #454545; - --event-item-color9: #4d4d4d; - --event-item-color10: #575757; - - /*Sliding panes*/ - --sliding-panes-header-color: #ebebeb; - --background-4-sliding-pane: #252525ed; - - - - --color-view-header-gradient-1: #000000de; - --color-view-header-gradient-2: #000000c0; - - --table-color-calendar-2: rgb(69, 69, 69); - --table-color-rgb: 69, 69, 69; -} - -body.color-scheme-options-monochrome-topaz .theme-light, -body.color-scheme-options-monochrome-topaz.theme-light { - --background-primary: var(--background-primary-bg-4-bt,#ffffff); - --background-primary-alt: var(--background-primary-alt-bg-4-bt,#e9e9e9); - --background-secondary: var(--background-secondary-bg-4-bt,#ffffff); - --background-secondary-alt: var(--background-secondary-alt-bg-4-bt,#f5f5f5); - --accent-strong: #000000; - --accent-em: #000000; - --text-selection: #c6c6c659; - --accent-h: 0; - --accent-s: 0%; - --accent-l: 31%; - --interactive-accent-rgb: 79, 79, 79; - - --strong-em-highlight-color: #000000; - --text-highlight-bg: #ecf56eb4; - --mark-highlight-strong-em: #ecf56eb4; - --text-search-highlight-bg: #ffd1dd; - --strong-em-color-1: #08ae84; - --strong-em-color-2: #01531d; - - --search-result-file-title-color: var(--text-normal); - - --background-blockquote: #b6b6b62c; - --background-code: #ebebeb71; - --background-code-2: #cccccc62; - --text-color-code: #e95d00; - - --internal-link-color: #0040ff; - - /*list*/ - --list-ul-block-color: #313131; - --list-ul-disc-color: #f39c55; - --green-1: #3dc730; - --list-ul-hover: #dd922f; - --list-ol-block-color: #a2a2a2; - --list-ol-number-color: #b5b5b5; - --list-ol-hover: #4f8fcb; - - --tag-text: #5a5a5a; - --stag1: #fa8787; - --stag1-bg: #eb2727; - --stag2: #fdbd5c; - --stag2-bg: #ee9002; - --stag3: #50ce3a; - --stag3-bg: #22ac09; - --tag1: #4f4f4f; - --tag2: #4f4f4f; - --tag3: #4f4f4f; - --tag4: #4f4f4f; - --tag5: #4f4f4f; - --tag-dailynote: #0077ff; - --tag-dailynote-bg: #277CDD; - --tag-weeklynote: #4b9fff; - --tag-weeklynote-bg: #6aafff; - --tag-questions: #b68fff; - --tag-questions-bg: #b085ff; - --tag-ideas: #ceb900; - --tag-ideas-bg: #444444d8; - - --h1-color: var(--print-h1-color,#000000); - --h2-color: var(--print-h2-color,#000000); - --h3-color: var(--print-h3-color,#000000); - --h4-color: var(--print-h4-color,#000000); - --h5-color: var(--print-h5-color,#000000); - --h6-color: var(--print-h6-color,#000000); - - /*graph*/ - --graph-text-color: #696969; - --graph-tag: #57bf5fcc; - --graph-attach: #78b0e4cc; - --graph-circle: #6a6a6acc; - --graph-line: #b1b1b1; - --graph-unresolved: #db4e4ecc; - --graph-arrow: #e25300; - --graph-control-bg: #ffffff9a; - - /*mermaid*/ - --mermaid-active-task-color: #44bbff; - --mermaid-seq-dia-color: #76c8ff; - - /*table*/ - --table-border-color: #7d7d7d; - --table-thead-background-color: #bdbdbdc7; - --table-hover-raw-color: #f0f0f063; - --table-hover-color: #e3e3e354; - --table-hover-thead-color: #ebebeb54; - - /*calendar*/ - --calendar-week-color: #949494; - --calendar-week-hover: #b5b5b52e; - --calendar-week-background-color: #878787; - --calendar-today-background-color: #aaeec6; - - /*day planner*/ - --day-planner-pie: #eca95c; - --day-planner-timeline: #d62f2f; - --day-planner-line: #ffd900; - --day-planner-dot: #ffd900; - --day-planner-item-hover: #474747; - --event-item-color1: #b5b5b5; - --event-item-color2: #a8a8a8; - --event-item-color3: #a1a1a1; - --event-item-color4: #969696; - --event-item-color5: #8c8c8c; - --event-item-color6: #828282; - --event-item-color7: #787878; - --event-item-color8: #707070; - --event-item-color9: #666666; - --event-item-color10: #595959; - - /*Sliding panes*/ - --sliding-panes-header-color: #000000; - --background-4-sliding-pane: #ffffffef; - - --color-view-header-gradient-1: #ffffffef; - --color-view-header-gradient-2: #ffffffef; - - --table-color-calendar-2: rgb(212, 212, 212); - --table-color-rgb: 212, 212, 212; -} - - -body.color-scheme-options-avocado-topaz .workspace-leaf.mod-active .view-header-title { - color: var(--h1-color); -} - -body.color-scheme-options-monochrome-topaz *:not(font)>em>strong, -body.color-scheme-options-monochrome-topaz *:not(font)>strong>em, -body.color-scheme-options-monochrome-topaz .cm-strong.cm-em { - background-image: initial; - background-clip: initial; - -webkit-background-clip: initial; - -webkit-text-fill-color: initial; - background-color: initial; -} - -body.color-scheme-options-pink-topaz .theme-light, -body.color-scheme-options-pink-topaz.theme-light { - --background-primary: var(--background-primary-bg-4-bt,#fffaf0); - --background-primary-alt: var(--background-primary-alt-bg-4-bt,#e9e9e9); - --background-secondary: var(--background-secondary-bg-4-bt,#fffaf0); - --background-secondary-alt: var(--background-secondary-alt-bg-4-bt,#ffebeb); - --background-modifier-border: #e1dfdf; - --text-normal: #0e0e0e; - --text-muted: #7f7f7f; - --text-faint: #7f7f7f; - --text-folder-file: #272727; - - --accent-em: #000000; - --accent-h: 325; - --accent-s: 80%; - --accent-l: 77%; - --text-selection: #f7b2cf59; - --interactive-accent-rgb: 243, 148, 203; - - --search-text: #000000; - --folder-title: #000000; - - --strong-em-highlight-color: #000000; - --mark-highlight-strong-em: #ffd0e99b; - --text-highlight-bg: #ffd0e99b; - --text-search-highlight-bg: #ffd1dd; - --search-result-file-matched-bg: #ffc3c3; - - --background-mobile-drawer-1: #ffffff; - --background-mobile-drawer-2: #ffffffa1; - --background-secondary-alt-bg-4-bt-publish: #f6f6f6; - - --scrollbar-thumb-bg: #e2bdbd8d; - --scrollbar-active-thumb-bg: #e2bdbd; - --search-result-file-title-color: #cc437c; - - --background-blockquote: #e6d6ba2c; - --background-code: #fae4ee4d; - --background-code-2: #d5d5d562; - --text-color-code: #e95d00; - - --list-ul-block-color: #c7c947; - --list-ul-disc-color: #f39c55; - --green-1: #3dc730; - --list-ul-hover: #dd922f; - --list-ol-block-color: #ce6d8a; - --list-ol-number-color: #e599ac; - --list-ol-hover: #b83175; - - --tag-text: #f8f8f8; - --stag1: #fa8787; - --stag1-bg: #eb2727; - --stag2: #fdbd5c; - --stag2-bg: #ee9002; - --stag3: #50ce3a; - --stag3-bg: #22ac09; - --tag1: #f1afaf; - --tag2: #e7c190; - --tag3: #86c93a; - --tag4: #48c6bf; - --tag5: #797fd1; - --tag-dailynote: #0077ff; - --tag-dailynote-bg: #277CDD; - --tag-weeklynote: #4b9fff; - --tag-weeklynote-bg: #6aafff; - --tag-questions: #b68fff; - --tag-questions-bg: #b085ff; - --tag-ideas: #ceb900; - --tag-ideas-bg: #444444d8; - - --h1-color: var(--print-h1-color,#6f0000); - --h2-color: var(--print-h2-color,#7a0757); - --h3-color: var(--print-h3-color,#9a1d75); - --h4-color: var(--print-h4-color,#b52a87); - --h5-color: var(--print-h5-color,#bb5795); - --h6-color: var(--print-h6-color,#cc76b7); - - /*graph*/ - --graph-text-color: #585858; - --graph-tag: #e3c982c7; - --graph-attach: #c982e3c7; - --graph-circle: #f596bbcc; - --graph-line: #e6b0c9; - --graph-unresolved: #db4e4ecc; - --graph-arrow: #e25300; - --graph-control-bg: #ffffff9a; - - /*mermaid*/ - --mermaid-active-task-color: #44bbff; - --mermaid-seq-dia-color: #76c8ff; - - /*table*/ - - --table-border-color: #7d7d7d; - --table-thead-background-color: #fad1e96f; - --table-hover-raw-color: #fad1e92f; - --table-hover-color: #fad1e92f; - --table-hover-thead-color: #fad1e98f; - - /*calendar*/ - --calendar-week-color: #b884a5c7; - --calendar-week-hover: #e3d8df66; - --calendar-week-background-color: #b884a599; - --calendar-today-background-color: #b1779c94; - - /*day planner*/ - --day-planner-pie: #eca95c; - --day-planner-timeline: #d62f2f; - --day-planner-line: #ffd900; - --day-planner-dot: #ffd900; - --day-planner-item-hover: #e8a6be; - --event-item-color1: #e5b8cb; - --event-item-color2: #e1a3bd; - --event-item-color3: #e090b1; - --event-item-color4: #e080a8; - --event-item-color5: #e0719f; - --event-item-color6: #e16096; - --event-item-color7: #e25590; - --event-item-color8: #e64c8c; - --event-item-color9: #e64186; - --event-item-color10: #e92b7a; - - /* stickies */ - --stickies-color-1: #e5c7dab5; - --stickies-color-2: #dac7afc7; - --tape-color: #acacac65; - - /*Sliding panes*/ - --sliding-panes-header-color: #6f0000; - --background-4-sliding-pane: #ffffffef; - - --color-view-header-gradient-1: #ffdfe4ef; - --color-view-header-gradient-2: #ffe4e4ef; - - /*checkbox*/ - --checkbox-color-0: #d879a8; - --checkbox-color-1: #c4c116; - --checkbox-color-2: #50a947; - --checkbox-color-3: #ffe9e9; - --checkbox-color-4: #fffbd4; - --checkbox-color-5: #ad7fbf; - --checkbox-color-6: #5f5f5f; - --text-checked-checkbox: #9b9b9b; - - --table-color-calendar-2: rgb(245, 214, 224); - --table-color-rgb: 245, 214, 224; -} - - -body.color-scheme-options-pink-topaz.theme-dark { - --background-primary: var(--background-primary-bg-4-bt,#0f0f0f); - --background-primary-alt: var(--background-primary-alt-bg-4-bt,#000000); - --background-secondary: var(--background-secondary-bg-4-bt,#181818); - --background-secondary-alt: var(--background-secondary-alt-bg-4-bt,#222222); - - --accent-em: #d9d4a6; - --accent-h: 338; - --accent-s: 51%; - --accent-l: 59%; - --interactive-accent-rgb: 204, 97, 136; - - --text-highlight-bg: #de87a785; - --mark-highlight-strong-em: #dc799e85; - - --strong-em-highlight-color: #d9afb3d1; - --text-search-highlight-bg: #bb4361; - --strong-em-color-1: #fc3b3b; - --strong-em-color-2: #f5c414; - --search-result-file-matched-bg: #a9672dc9; - - --background-mobile-drawer-1: #1b1b1b; - --background-mobile-drawer-2: #1b1b1b69; - - --background-transparent-blue: #003e759a; - --scrollbar-thumb-bg: #8d69698d; - --scrollbar-active-thumb-bg: #8d6969; - --search-result-file-title-color: #c0689b; - - --background-blockquote: #9191911c; - --background-code: #00000082; - --background-code-2: #4c4c4cb0; - --text-color-code: #d58000; - - /*list*/ - --list-ul-block-color: #b27b7b; - --list-ul-disc-color: #af5a5a; - --green-1: #79c142; - --list-ul-hover: #b69696; - --list-ol-block-color: #ce7ea7; - --list-ol-number-color: #a25d81; - --list-ol-hover: #c0a5b3; - - --tag-text: #e4e4e4; - --stag1: #f08383; - --stag1-bg: #bd1919; - --stag2: #e7b263; - --stag2-bg: #ac6700; - --stag3: #77df89; - --stag3-bg: #058c1c; - --tag1: #ba6d6d; - --tag2: #ba6d7b; - --tag3: #ba6d88; - --tag4: #ba6d96; - --tag5: #ba6da6; - --tag-dailynote: #98c8ff; - --tag-dailynote-bg: #0f60bd; - --tag-weeklynote: #d1e6ff; - --tag-weeklynote-bg: #3971b1; - --tag-questions: #d4bdff; - --tag-questions-bg: #6640ae; - --tag-ideas: #fcfcc0; - --tag-ideas-bg: #565656d8; - - --h1-color: var(--print-h1-color,#c66279); - --h2-color: var(--print-h2-color,#bb7283); - --h3-color: var(--print-h3-color,#b4507f); - --h4-color: var(--print-h4-color,#b25c84); - --h5-color: var(--print-h5-color,#b74e94); - --h6-color: var(--print-h6-color,#b7629a); - - /*graph*/ - --graph-text-color: #B5B5B5; - --graph-tag: #d2bf83c7; - --graph-attach: #ad71d6c7; - --graph-circle: #d67a8dc7; - --graph-line: #ad7b8dc7; - --graph-unresolved: #cf3a3ac7; - --graph-arrow: #c23917; - --graph-control-bg: #00000080; - - /*mermaid*/ - --mermaid-active-task-color: #187ef1; - --mermaid-seq-dia-color: #1371be; - - /*table*/ - - --table-thead-background-color: #a76c8f45; - --table-hover-raw-color: #a76c8f25; - --table-hover-color: #a76c8f2b; - --table-hover-thead-color: #a76c8f35; - - /*calendar*/ - --calendar-week-color: #bb6396e6; - --calendar-week-hover: #96798a6b; - --calendar-week-background-color: #c794948c; - --calendar-today-background-color: #8c4545; - - /*day planner*/ - --day-planner-pie: #f19c1c; - --day-planner-timeline: #000000; - --day-planner-line: #dfcf77; - --day-planner-dot: #dfcf77; - --day-planner-item-hover: #b893a3ad; - --event-item-color1: #d35f5fc7; - --event-item-color2: #d35f6ac7; - --event-item-color3: #d35f76c7; - --event-item-color4: #d35f7ec7; - --event-item-color5: #d35f86c7; - --event-item-color6: #d35f8dc7; - --event-item-color7: #d35f95c7; - --event-item-color8: #d35f9dc7; - --event-item-color9: #d35fa3c7; - --event-item-color10: #d35facc7; - - /*kanban*/ - --kanban-color-1: #9b3636ad; - --kanban-color-2: #9b364ead; - --kanban-color-3: #9b3660ad; - --kanban-color-4: #9b366fad; - --kanban-color-5: #9b3679ad; - --kanban-color-6: #9b368cad; - --kanban-color-7: #99369bad; - - /* stickies */ - --stickies-color-1: #ecb6d8c7; - --stickies-color-2: #ecd9b6c7; - - /*Sliding panes*/ - --sliding-panes-header-color: #ffffff; - --background-4-sliding-pane: #252525ed; - - --color-view-header-gradient-1: #000000c2; - --color-view-header-gradient-2: #2e1f28c2; - - --checkbox-color-0: var(--theme-color); - --checkbox-color-1: #a9a608; - --checkbox-color-2: #1061ac; - --checkbox-color-3: #ffd1d1; - --checkbox-color-4: #625d4c; - --checkbox-color-5: #9a67ae; - --checkbox-color-6: #5f5f5f; - --text-checked-checkbox: #8e8e8e; - - --table-color-calendar-2: rgb(215, 121, 153); - --table-color-rgb: 215, 121, 153; -} - -body.color-scheme-options-pink-topaz.theme-light *:not(font)>em>strong, -body.color-scheme-options-pink-topaz.theme-light *:not(font)>strong>em, -body.color-scheme-options-pink-topaz.theme-light .cm-strong.cm-em { - background-image: initial; - background-clip: initial; - -webkit-background-clip: initial; - -webkit-text-fill-color: initial; - background-color: initial; -} - - -body.color-scheme-options-topaz-nord.theme-dark { - --background-primary: var(--background-primary-bg-4-bt,#2E3440); - --background-primary-alt: var(--background-primary-alt-bg-4-bt,#2E3440); - --background-secondary: var(--background-secondary-bg-4-bt,#3B4252); - --background-secondary-alt: var(--background-secondary-alt-bg-4-bt,#434C5E); - - --background-black-or-white-1: var(--nord2); - - --text-normal: var(--nord4); - --text-muted: var(--nord5); - --text-faint: var(--nord6); - --accent-h: 210; - --accent-s: 34%; - --accent-l: 63%; - - --text-folder-file: var(--nord4); - - --accent-em: var(--nord14); - - --text-highlight-bg: var(--nord13-1); - --mark-highlight-strong-em: var(--nord13-1); - --text-selection: var(--nord9-2); - - --interactive-accent-rgb: 129, 161, 193; - - --folder-title: var(--nord4); - - --tag-text: var(--nord7); - --tag1: var(--nord7-transparent); - --tag2: var(--nord7-transparent); - --tag3: var(--nord7-transparent); - --tag4: var(--nord7-transparent); - --tag5: var(--nord7-transparent); - - --h1-color: var(--print-h1-color,var(--nord11)); - --h2-color: var(--print-h2-color,var(--nord12)); - --h3-color: var(--print-h3-color,var(--nord13)); - --h4-color: var(--print-h4-color,var(--nord14)); - --h5-color: var(--print-h5-color,var(--nord8)); - --h6-color: var(--print-h6-color,var(--nord15)); - - --background-code: #3B42525c; - --background-blockquote: #3B42525c; - - --text-color-code: var(--nord8); - - --color-view-header-gradient-1: var(--nord0); - --color-view-header-gradient-2: var(--nord0); - - --strong-em-color-1: var(--accent-strong); - --strong-em-color-2: var(--accent-strong); - --strong-em-highlight-color: var(--accent-strong); - - --embed-color: var(--nord1-1); - - --activeline-background: #4C566A1a; - - --list-ul-block-color: var(--nord12); - --list-ul-disc-color: var(--nord12); - --green-1: var(--nord14); - --list-ul-hover: var(--nord13); - --list-ol-block-color: var(--nord9); - --list-ol-number-color: var(--nord9); - --list-ol-hover: var(--nord7); - - --table-thead-background-color: var(--nord9-2); - --table-hover-raw-color: var(--nord9-2); - --table-hover-color: var(--nord9-2); - --table-hover-thead-color: var(--nord9-1); - - --checkbox-color-0: var(--interactive-accent); - - --graph-text-color: var(--nord4); - --graph-tag: var(--nord7); - --graph-attach: var(--nord15); - --graph-circle: var(--nord9); - --graph-line: var(--nord6); - --graph-unresolved: var(--nord11); - --graph-arrow: var(--nord11); - - --text-search-highlight-bg: var(--nord9-1); - --tab-outline-color: var(--nord0); - --divider-color: var(--nord0); -} - -body.color-scheme-options-topaz-nord.theme-dark .titlebar-text { - color: var(--nord4); -} - -body.color-scheme-options-topaz-nord.theme-dark .token.unit { - color: var(--nord10) !important; -} - -body.color-scheme-options-topaz-nord.theme-dark .cm-s-obsidian .cm-hmd-frontmatter.cm-qualifier, -body.color-scheme-options-topaz-nord.theme-dark .cm-s-obsidian .cm-math.cm-qualifier, -body.color-scheme-options-topaz-nord.theme-dark .cm-s-obsidian .cm-qualifier, -body.color-scheme-options-topaz-nord.theme-dark .token.class { - color: var(--nord7) !important; -} - -body.color-scheme-options-topaz-nord.theme-dark .token.number, -body.color-scheme-options-topaz-nord.theme-dark .cm-number { - color: var(--nord15) !important; -} - -body.color-scheme-options-topaz-nord.theme-dark .token.operator, -body.color-scheme-options-topaz-nord.theme-dark .token.entity, -body.color-scheme-options-topaz-nord.theme-dark .token.url, -body.color-scheme-options-topaz-nord.theme-dark .language-css .token.string, -body.color-scheme-options-topaz-nord.theme-dark .style .token.string, -body.color-scheme-options-topaz-nord.theme-dark .cm-string, -body.color-scheme-options-topaz-nord.theme-dark .token.string, -body.color-scheme-options-topaz-nord.theme-dark .token.char, -body.color-scheme-options-topaz-nord.theme-dark .token.attr-value, -body.color-scheme-options-topaz-nord.theme-dark .token.builtin, -body.color-scheme-options-topaz-nord.theme-dark .token.inserted { - color: var(--nord14) !important; -} - -body.color-scheme-options-topaz-nord.theme-dark .token.selector, -body.color-scheme-options-topaz-nord.theme-dark .token.tag, -body.color-scheme-options-topaz-nord.theme-dark .cm-s-obsidian span.cm-variable-3 { - color: var(--nord10) !important; -} - -body.color-scheme-options-topaz-nord.theme-dark .token.regex, -body.color-scheme-options-topaz-nord.theme-dark .token.variable, -body.color-scheme-options-topaz-nord.theme-dark .cm-s-obsidian span.cm-variable-2 { - color: var(--nord12) !important; -} - -body.color-scheme-options-topaz-nord.theme-dark .token.macro.property, -body.color-scheme-options-topaz-nord.theme-dark .markdown-source-view.cm-s-obsidian .cm-hmd-codeblock.cm-property, -body.color-scheme-options-topaz-nord.theme-dark .token.property, -body.color-scheme-options-topaz-nord.theme-dark .token.boolean, -body.color-scheme-options-topaz-nord.theme-dark .token.constant, -body.color-scheme-options-topaz-nord.theme-dark .token.symbol, -body.color-scheme-options-topaz-nord.theme-dark .token.attr-name, -body.color-scheme-options-topaz-nord.theme-dark .token.deleted { - color: var(--nord9) !important; -} - -body.color-scheme-options-topaz-nord.theme-dark .token.function, -body.color-scheme-options-topaz-nord.theme-dark .markdown-source-view.cm-s-obsidian .cm-variable { - color: var(--nord13) !important; -} - -body.color-scheme-options-topaz-nord.theme-dark .token.comment, -body.color-scheme-options-topaz-nord.theme-dark .cm-s-obsidian span.cm-comment { - color: var(--nord3-1) !important; -} - -body.color-scheme-options-topaz-nord.theme-dark .token.atrule, -body.color-scheme-options-topaz-nord.theme-dark .token.keyword { - color: var(--nord13) !important; -} - -body.color-scheme-options-topaz-nord.theme-dark .token.tag, -body.color-scheme-options-topaz-nord.theme-dark .token.constant, -body.color-scheme-options-topaz-nord.theme-dark .token.symbol, -body.color-scheme-options-topaz-nord.theme-dark .token.deleted, -body.color-scheme-options-topaz-nord.theme-dark .cm-tag { - color: var(--nord11) !important; -} - -body.color-scheme-options-topaz-nord.theme-dark .token.color, -body.color-scheme-options-topaz-nord.theme-dark .token.hexcode.color { - color: var(--nord8) !important; -} - -body.color-scheme-options-topaz-nord.theme-dark #calendar-container, -body.style-options-for-calendar-plugin-style-one.color-scheme-options-topaz-nord.theme-dark #calendar-container { - --color-tr: var(--nord0); - --color-calendar-weekends: var(--nord11); -} - -body.color-scheme-options-topaz-nord .theme-light, -body.color-scheme-options-topaz-nord.theme-light { - --accent-h: 210; - --accent-s: 34%; - --accent-l: 63%; - --accent-em: var(--nord14-0); - - --text-selection: var(--nord9-2); - - --interactive-accent-rgb: 129, 161, 193; - - --tag-text: #3a79dd; - --tag1: #005aec21; - --tag2: #005aec21; - --tag3: #005aec21; - --tag4: #005aec21; - --tag5: #005aec21; - --h1-color: var(--print-h1-color,var(--nord11)); - --h2-color: var(--print-h2-color,var(--nord12)); - --h3-color: var(--print-h3-color,var(--nord13-0)); - --h4-color: var(--print-h4-color,var(--nord14-0)); - --h5-color: var(--print-h5-color,var(--nord8-0)); - --h6-color: var(--print-h6-color,var(--nord15)); - - --background-code: var(--nord6-2); - --background-blockquote: var(--nord6-2); - - --text-highlight-bg: var(--nord13-1); - --mark-highlight-strong-em: var(--nord13-1); - - --text-color-code: var(--nord8-0); - - --color-view-header-gradient-1: var(--background-primary-bg-4-bt); - --color-view-header-gradient-2: var(--background-primary-bg-4-bt); - - --strong-em-color-1: var(--accent-strong); - --strong-em-color-2: var(--accent-strong); - --strong-em-highlight-color: var(--accent-strong); - - --embed-color: var(--nord6-2); - - --activeline-background: var(--nord5-1); - - --list-ul-block-color: var(--nord12); - --list-ul-disc-color: var(--nord12); - --green-1: var(--nord14-0); - --list-ul-hover: var(--nord13-0); - --list-ol-block-color: var(--nord9); - --list-ol-number-color: var(--nord9); - --list-ol-hover: var(--nord7); - - --table-thead-background-color: var(--nord9-2); - --table-hover-raw-color: var(--nord9-2); - --table-hover-color: var(--nord9-2); - --table-hover-thead-color: var(--nord9-1); - - --checkbox-color-0: var(--interactive-accent); - - --graph-text-color: var(--nord1); - --graph-tag: var(--nord7); - --graph-attach: var(--nord15); - --graph-circle: var(--nord9); - --graph-line: var(--nord3-1); - --graph-unresolved: var(--nord11); - --graph-arrow: var(--nord11); - - --text-search-highlight-bg: var(--nord9-2); -} - -/*@Lavi & @嘴 的Flamingo主题色(原Pink Topaz)*/ -body.color-scheme-options-flamingo .theme-light, -body.color-scheme-options-flamingo.theme-light { - --background-primary: var(--background-primary-bg-4-bt,#efe9d9); - --background-primary-alt: var(--background-primary-alt-bg-4-bt,#ffdece); - --background-secondary: var(--background-secondary-bg-4-bt,#efe9d9); - --background-secondary-alt: var(--background-secondary-alt-bg-4-bt,#efe9d9); - - --background-4-sliding-panel: #efe9d9; - --background-mobile-drawer-1: #efe9d9; - --background-mobile-drawer-2: #efe9d9; - --graph-control-bg: #efe9d9; - - --background-modifier-border: rgba(0, 0, 0, 0.1); - --background-modifier-form-field: #ffdece; - --background-modifier-form-field-highlighted: #f5a7a2; - --background-modifier-box-shadow: rgba(0, 0, 0, 0.1); - --background-modifier-success: #ffdece; - --background-modifier-error: #f5a7a2; - --background-modifier-error-rgb: 230, 135, 135; - --background-modifier-error-hover: #fefcf9; - - --text-normal: #37291a; - --text-muted: #37291a; - --text-faint: #37291a; - --accent-strong: #37291a; - --text-error: #f5a7a2; - --text-error-hover: #fefcf9; - - --text-highlight-bg-h: 4; - --text-highlight-bg-s: 81%; - --text-highlight-bg-l: 80%; - --text-highlight-bg-a: 0.847; - --text-highlight-bg: hsla(var(--text-highlight-bg-h), var(--text-highlight-bg-s), var(--text-highlight-bg-l), var(--text-highlight-bg-a)); - --text-selection: #f39ba044; - - --interactive-accent-rgb: 245,167,162; - --accent-h: 4; - --accent-s: 81%; - --accent-l: 80%; - --panel-border-color: #fd355a; - --search-text: #37291a; - --folder-title: #37291a; - - --gray-1: #c4c4c4; - --gray-2: #7c8595; - --red: #fd355a; - --red-1: #980000; - --green: #40916c; - --darkgreen: #004f2d; - --blue: #69a2ee; - --darkblue: #5981f0; - --purple: #8673b4; - --aqua: #4dd8ef; - --yellow: #ffc727; - --light-yellow: #e5e79c; - --orange: #f19c79; - --light-purple: #d3d6fe; - --blue-green: #16bcc0; - - --search-result-file-title-color: #980000; - - --list-ul-block-color: #f5a7a2; - --list-ul-disc-color: #fd355a; - --list-ul-hover: #980000; - --list-ol-block-color: #f5a7a2; - --list-ol-number-color: #f5a7a2; - --list-ol-hover: #980000; - --stag1: #fd355a; - --stag2: #fd355a; - --stag3: #fd355a; - --tag1: #56cfc7c7; - --tag2: #eca1bcda; - --tag3: #e6d00d; - --tag4: #40916c; - --tag5: #68c7a4; - - --h1-color: var(--print-h1-color,#f39ba0); - --h2-color: var(--print-h2-color,#f39ba0); - --h3-color: var(--print-h3-color,#f39ba0); - --h4-color: var(--print-h4-color,#f39ba0); - --h5-color: var(--print-h5-color,#f39ba0); - --h6-color: var(--print-h6-color,#f39ba0); - - --graph-text-color: #37291a; - --graph-tag: #ffdece; - --graph-attach: #f5a7a2; - --graph-circle: #FD355C; - --graph-line: #fea2c2; - --graph-unresolved: #E87659; - --graph-arrow: #980000; - --mermaid-active-task-color: #f5a7a2; - --mermaid-seq-dia-color: #ffdece; - --table-background-color: #ffdece; - --table-background-color-odd: #ffdece; - --table-border-color: #fd355a; - --table-thead-background-color: #f5a7a2; - --table-hover-color: #f5a7a2; - --table-hover-thead-color: #f5a7a2; - --table-hover-raw-color: #ffdece; - --calendar-week-color: #f5a7a2; - --calendar-week-hover: #ffdece; - --calendar-week-background-color: #ffdece; - --day-planner-pie: #f5a7a2; - --day-planner-timeline: #ffdece; - --day-planner-line: #fd355a; - --day-planner-dot: #ffdece; - --day-planner-item-hover: #f5a7a2; - --event-item-color1: #f39ba063; - --event-item-color2: #f39ba091; - --event-item-color3: #f39ba0c4; - --event-item-color4: #f39ba0; - --event-item-color5: #D08489; - --event-item-color6: #B27175; - --event-item-color7: #D08489; - --event-item-color8: #f39ba0; - --event-item-color9: #f39ba0c4; - --event-item-color10: #f39ba091; - - --note-important: #fd355a; - --note-cloze: #fd355a; - --stickies-color-1: #e46969; - --stickies-color-2: #f5a7a2; - --tape-color: #acacac65; - --header-color: #f5a7a2; - - --color-view-header-gradient-1: #efe9d933; - --color-view-header-gradient-2: #efe9d933; - - --table-color-calendar-2: rgb(214, 118, 146); - --table-color-rgb: 214, 118, 146; - --scrollbar-thumb-bg: #f39ba050; - --scrollbar-active-thumb-bg: #f39ba0; -} - - -body.color-scheme-options-flamingo.theme-dark { - --background-primary: var(--background-primary-bg-4-bt,#212121); - --background-primary-alt: var(--background-primary-alt-bg-4-bt,#f937590d); - --background-secondary: var(--background-secondary-bg-4-bt,#242424); - --background-secondary-alt: var(--background-secondary-alt-bg-4-bt,#191919); - - --background-modifier-border: #191919; - --background-modifier-form-field: #f39ba0; - --background-modifier-form-field-highlighted: #e5c7a9; - --background-modifier-box-shadow: #292929; - --background-modifier-success: #f93759; - --background-modifier-error: #f93759; - --background-modifier-error-rgb: #f93759; - --background-modifier-error-hover: #F93758; - - --text-normal: #efe9d9; - --text-muted: #efe9d9; - --text-faint: #efe9d9; - --accent-strong: #efe9d9; - --text-em-color: #f93759; - --text-error: #f93759; - --text-error-hover: #f93759; - - --text-highlight-bg-h: 357; - --text-highlight-bg-s: 79%; - --text-highlight-bg-l: 78%; - --text-highlight-bg-a: 0.847; - --text-highlight-bg: hsla(var(--text-highlight-bg-h), var(--text-highlight-bg-s), var(--text-highlight-bg-l), var(--text-highlight-bg-a)); - --text-selection: #e5c7a94a; - - --accent-h: 357; - --accent-s: 79%; - --accent-l: 78%; - --interactive-accent-rgb: 243, 155, 160; - - --panel-border-color: #f93759; - --search-text: #fff; - --folder-title: #fff; - - --gray-1: #c9b0b0; - --gray-2: #b4b1c6; - --red: #ff9090; - --red-1: #f93759; - --orange: #f28d61; - --green: #00ffc7; - --darkgreen: #1bbc9b; - --aqua: #30daff; - --purple: #b073ff; - --blue: #00a3b9; - --darkblue: #0040ff; - --yellow: #fcdc00; - --light-yellow: #ffd26c; - - --search-result-file-title-color: #f39ba0; - --background-blockquote-dark: #292929; - --list-ul-block-color: #f39ba0; - --list-ul-disc-color: #f93759; - --list-ul-hover: #ffebec; - --list-ol-block-color: #f39ba0; - --list-ol-number-color: #ffccbc; - --list-ol-hover: #ffebec; - --stag1: #f39ba0; - --stag2: #ffccbc; - --stag3: #ffebec; - --tag1: #028588; - --tag2: #40916c; - --tag3: #69a2ee; - --tag4: #c47a5e; - --tag5: #004f2d; - - --h1-color: var(--print-h1-color,#ffccbc); - --h2-color: var(--print-h2-color,#ffccbc); - --h3-color: var(--print-h3-color,#ffccbc); - --h4-color: var(--print-h4-color,#ffccbc); - --h5-color: var(--print-h5-color,#ffccbc); - --h6-color: var(--print-h6-color,#ffccbc); - - --graph-text-color: #efe9d9; - --graph-tag: #f39ba0; - --graph-attach: #ffebec; - --graph-circle: #f39ba0; - --graph-line: #ffc3bc; - --graph-unresolved: #ffccbc; - --graph-arrow: #ffc3bc; - --mermaid-active-task-color: #F39BA4; - --mermaid-seq-dia-color: #ffebec; - --table-background-color: #212121; - --table-background-color-odd: transparent; - --table-border-color: #ffebec; - --table-thead-background-color: #f39ba0ad; - --table-hover-raw-color: #292929; - --table-hover-color: #ffccbc0a; - --table-hover-thead-color: #f39ba0; - --calendar-week-color: #ffccbc; - --calendar-week-hover: #f39ba0; - --calendar-week-background-color: transparent; - --day-planner-pie: #ffccbc; - --day-planner-timeline: #ff9b7c; - --day-planner-line: #f39ba0; - --day-planner-dot: #ffebec; - --day-planner-item-hover: #f39ba0; - --event-item-color9: #ffc3bc; - --event-item-color8: #ffbcbc; - --event-item-color10: #ffccbc; - --event-item-color7: #ffbcc4; - --event-item-color6: #ffbcbc; - --event-item-color5: #ffc3bc; - --event-item-color4: #ffccbc; - --event-item-color3: #ffd4bc; - --event-item-color2: #ffdcbc; - --event-item-color1: #ffe4bc; - - --note-important: #f93759; - --note-cloze: #f93759; - --stickies-color-1: #f39ba0; - --stickies-color-2: #ffebec; - --tape-color: #ffccbc47; - --header-color: #f39ba0; - - --color-view-header-gradient-1: #21212122; - --color-view-header-gradient-2: #21212122; - - --table-color-calendar-2: rgb(215, 86, 125); - --table-color-rgb: 215, 86, 125; - --scrollbar-thumb-bg: #e2bdbd50; - --scrollbar-active-thumb-bg: #e2bdbd; -} - -body.color-scheme-options-flamingo.theme-light #calendar-container { - --color-background-heading: transparent; - --color-background-weeknum: transparent; - --color-background-day: transparent; - --color-background-weekend: transparent; - - --color-tr: #ffdece8c !important; - --color-tr-odd: #ffdece !important; - - --color-dot: var(--text-accent); - --color-arrow: currentColor; - --color-button: var(--text-muted); - --color-text-weeknum: var(--calendar-week-color); - - --color-text-title: var(--text-normal); - --color-text-heading: var(--text-normal); - --color-text-day: var(--text-normal); - --color-text-today: var(--text-accent); - - padding: 0px 5px 0px 8px; - margin: -21px -8px 0px -8px; - line-height: 0.6; -} - -/*表格调整*/ -/*星期*/ -body.color-scheme-options-flamingo.theme-light #calendar-container th { - padding: 6px 0; - border-radius: 0px !important; - background-color: var(--table-thead-background-color) !important; -} - -body.color-scheme-options-flamingo.theme-light #calendar-container .week-num, -body.color-scheme-options-flamingo.theme-light #calendar-container .day { - border-radius: 0px !important; -} - -/*天*/ -body.color-scheme-options-flamingo.theme-light #calendar-container td { - width: 12.5%; - border-right: 0px solid var(--background-secondary-alt); - padding: 0px 0px 0px 0px !important; - line-height: 22px; - border-radius: 0px !important; -} - -body.color-scheme-options-flamingo.theme-light #calendar-container tr { - border: 2px solid var(--background-secondary-alt); -} - -/*“Today”*/ -body.color-scheme-options-flamingo.theme-light #calendar-container .reset-button { - font-size: 14px !important; - margin: 0; - padding: 0; - cursor: pointer; - line-height: 1.2; - text-align: center; -} - -/*悬停Today*/ -body.color-scheme-options-flamingo.theme-light #calendar-container .reset-button:hover { - color: var(--header-color); - background-color: var(--table-hover-raw-color); -} - -/*悬停arrow*/ -body.color-scheme-options-flamingo.theme-light #calendar-container .arrow:hover { - color: var(--theme-color); -} - -body.color-scheme-options-flamingo.theme-light #calendar-container .day:active, -body.color-scheme-options-flamingo.theme-light #calendar-container .active, -body.color-scheme-options-flamingo.theme-light #calendar-container .active.today { - background-color: #f5a7a2 !important; -} - -/*点调整 dot*/ -body.color-scheme-options-flamingo.theme-light #calendar-container .dot-container { - margin-top: -2px; - margin-bottom: -1px; -} - -/*月份调整 month*/ -body.color-scheme-options-flamingo.theme-light #calendar-container .month { - font-size: 20px; - line-height: 1; -} - -/*年份调整 year*/ -body.color-scheme-options-flamingo.theme-light #calendar-container .year { - font-size: 20px; - line-height: 1; -} - -/*星期数 week*/ -body.color-scheme-options-flamingo.theme-light #calendar-container .week-num { - background-color: var(--calendar-week-background-color); - font-weight: 600; -} - -/*星期数悬停 week hover*/ -body.color-scheme-options-flamingo.theme-light #calendar-container .week-num:hover { - background-color: var(--calendar-week-hover) !important; -} - -/*比上面那个还菜鸟的人做的一些修改*/ -body.color-scheme-options-flamingo.theme-light .nav-folder.mod-root>.nav-folder-title { - background-color: var(--background-secondary-alt-bg-4-bt) -} - -body.color-scheme-options-flamingo.theme-light .admonition { - background-color: #ffebec15 !important; -} - -body.color-scheme-options-flamingo.theme-light { - --font-family-vault: Arlrdbd, 'Source Han Sans', 'Noto Sans CJK', 'Source Sans Pro' !important; /*左侧库名字体*/ - --font-family-folder-file-title: Arlrdbd, 'Source Han Sans', 'Noto Sans CJK', 'Source Sans Pro' !important;/*左侧边栏文件、文件夹字体*/ -} - -body.color-scheme-options-flamingo.theme-light .tag[href^="#DailyNote"] { - background-color: var(--tag1); - font-weight: 600; - font-family: var(--font-family-special-tag) !important; -} - -body.color-scheme-options-flamingo.theme-light .tag[href^="#DailyNote"]::after { - content: '❀'; - font-size: var(--font-size-emoji-after-tag); -} - -body.color-scheme-options-flamingo.theme-light .search-result-file-match { - background: transparent; -} - -/*@Lavi & @嘴 的Flamingo主题色(原Pink Topaz)到此结束 */ - -/*=================== Lillian 的配色 ========================*/ -/*蜂蜜牛奶配色 by Lillian */ -body.color-scheme-options-honey-milk-topaz .theme-light, -body.color-scheme-options-honey-milk-topaz.theme-light { - /*色系设置*/ - --color1: #ffde89; - --color2: #ffd876; - --color3: #ffd362; - --color4: #ffcd4e; - --color5: #ffc83b; - --color6: #ffc227; - --color7: #ffbd14; - --color8: #ffb700; - --color9: #ebae14; - --color10: #d8a627; - --color11: #c49d3b; - - --main-color: #f1b024; - --low-color: var(--color3); - --high-color: var(--color8); - --deep-color: var(--color11); - - --bg-color: #f8f8f5; - --bg-color2: #f0ede0; - - --background-primary: var(--background-primary-bg-4-bt,#f8f8f5); - --background-primary-alt: var(--background-primary-alt-bg-4-bt,#f0ede0); - --background-secondary: var(--background-secondary-bg-4-bt,#f8f8f5); - --background-secondary-alt: var(--background-secondary-alt-bg-4-bt,#f0ede0); - - --background-modifier-border: #e1dfdf; - - --accent-em: #099d4e; - - --text-selection: #66bbaa59; - --accent-h: 41; - --accent-s: 88%; - --accent-l: 54%; - --interactive-accent-rgb: 215, 178, 88; - - --search-text: #000000; - --folder-title: #000000; - - --strong-em-highlight-color: var(--color11); - - --text-highlight-bg-h: 34; - --text-highlight-bg-s: 100%; - --text-highlight-bg-l: 80%; - --text-highlight-bg-a: 0.847; - --text-highlight-bg: hsla(var(--text-highlight-bg-h), var(--text-highlight-bg-s), var(--text-highlight-bg-l), var(--text-highlight-bg-a)); - --text-search-highlight-bg: var(--color2); - --search-result-file-matched-bg: var(--low-color); - - --background-mobile-drawer-1: var(--bg-color); - --background-mobile-drawer-2: var(--bg-color); - --background-secondary-alt-bg-4-bt-publish: #f6f6f6; - - --search-result-file-title-color: var(--main-color); - - --list-ul-block-color: var(--color6); - --list-ul-disc-color: var(--main-color); - --green-1: #3dc730; - --list-ul-hover: var(--low-color); - --list-ol-block-color: var(--main-color); - --list-ol-number-color: var(--main-color); - --list-ol-hover: var(--low-color); - - --h1-color: var(--print-h1-color,var(--color6)); - --h2-color: var(--print-h2-color,var(--color7)); - --h3-color: var(--print-h3-color,var(--color8)); - --h4-color: var(--print-h4-color,var(--color9)); - --h5-color: var(--print-h5-color,var(--color10)); - --h6-color: var(--print-h6-color,var(--color11)); - - /*graph*/ - --graph-text-color: #696969; - --graph-tag: #77d425cc; - --graph-attach: #afcfe0cc; - --graph-circle: var(--color3); - --graph-line: #b1b1b1; - --graph-unresolved: #db4e4ecc; - --graph-arrow: #e25300; - --graph-control-bg: var(--bg-color); - - /*mermaid*/ - --mermaid-active-task-color: var(--high-color); - --mermaid-seq-dia-color: var(--low-color); - - /*table*/ - --table-background-color: var(--bg-color2); - --table-background-color-odd: #ffffffaf; - --table-border-color: #7d7d7d; - --table-thead-background-color: var(--color1); - --table-hover-raw-color: var(--color2); - --table-hover-color: var(--color1); - --table-hover-thead-color: var(--color2); - - /*calendar*/ - --calendar-week-color: var(--high-color); - --calendar-week-hover: var(--color1); - --calendar-week-background-color: var(--bg-color); - --calendar-today-background-color: var(--color1); - - /*day planner*/ - --day-planner-pie: var(--deep-color); - --day-planner-timeline: #d62f2f; - --day-planner-line: var(--low-color); - --day-planner-dot: var(--low-color); - --day-planner-item-hover: var(--color1); - --event-item-color1: var(--color2); - --event-item-color2: var(--color3); - --event-item-color3: var(--color4); - --event-item-color4: var(--color5); - --event-item-color5: var(--color6); - --event-item-color6: var(--color7); - --event-item-color7: var(--color8); - --event-item-color8: var(--color9); - --event-item-color9: var(--color10); - --event-item-color10: var(--color11); - - /*Sliding panes*/ - --sliding-panes-header-color: var(--deep-color); - --background-4-sliding-pane: var(--bg-color); - - - - /*checklist*/ - --checklist-bg: #dfdfdf8e; - --checklist-bg-hover: #ffffffcc; - - --color-view-header-gradient-1: var(--color1); - --color-view-header-gradient-2: var(--bg-color); - - /*checkbox*/ - --checkbox-color-0: var(--main-color); - --checkbox-color-1: #c4c116; - --checkbox-color-2: #4bbf40; - --checkbox-color-3: #ffe9e9; - --checkbox-color-4: #fffbd4; - --checkbox-color-5: #ad7fbf; - --checkbox-color-6: #5f5f5f; - --text-checked-checkbox: #9b9b9b; - - --table-color-calendar-2: rgb(242, 235, 207); - --table-color-rgb: 242, 235, 207; -} - - -body.color-scheme-options-honey-milk-topaz.theme-dark { - /*蜂蜜牛奶 #f1b024*/ - - --color1: #ffde89; - --color2: #ffd876; - --color3: #ffd362; - --color4: #ffcd4e; - --color5: #ffc83b; - --color6: #ffc227; - --color7: #ffbd14; - --color8: #ffb700; - --color9: #ebae14; - --color10: #d8a627; - --color11: #a17f28; - - --main-color: #f1b024; - --low-color: var(--color3); - --high-color: var(--color8); - --deep-color: var(--color11); - - --bg-color: #222222; - --bg-color2: #333333; - - --background-primary: var(--background-primary-bg-4-bt,#222222); - --background-primary-alt: var(--background-primary-alt-bg-4-bt,#222222); - --background-secondary: var(--background-secondary-bg-4-bt,#333333); - --background-secondary-alt: var(--background-secondary-alt-bg-4-bt,#222222); - - --background-modifier-border: #565656; - - --text-selection: #47a5914d;/*鼠标选择 文字背景颜色*/ - --accent-h: 43; - --accent-s: 69%; - --accent-l: 50%; - --interactive-accent-rgb: 216, 166, 39;/*主题强调色 rgb , 需与主题色一致(把上面的值转成rgb放下面)*/ - - --panel-border-color: #18191e;/*侧边栏、下部状态栏线条颜色,改了没有,线条被我取消了 :p*/ - --search-text: var(--color1);/*搜索结果文字颜色*/ - --folder-title: #ffffff;/*文件栏文件夹文字颜色*/ - - --strong-em-highlight-color: var(--color11); - --text-search-highlight-bg: #bb4361; - - --strong-em-color-1: #43d3ff;/*加粗斜体渐变色1*/ - --strong-em-color-2: #baaaff;/*加粗斜体渐变色2*/ - --search-result-file-matched-bg: var(--color9);/* 搜索结果文字高亮颜色 */ - - --background-mobile-drawer-1: var(--bg-color); - --background-mobile-drawer-2: var(--bg-color); - - --background-transparent-blue: #003e759a; - - --scrollbar-thumb-bg: #8282827e; - --scrollbar-active-thumb-bg: #828282; - - --search-result-file-title-color: var(--main-color); - - --background-blockquote: #9191911c;/*引用框背景颜色*/ - --background-code: #1111118c;/*代码框背景颜色*/ - --background-code-2: #4c4c4cb0; - --text-color-code: #d58000;/*代码框文字颜色*/ - - --list-ul-block-color: var(--deep-color); - --list-ul-disc-color: var(--main-color); - --green-1: #3dc730; - --list-ul-hover: var(--low-color); - --list-ol-block-color: var(--deep-color); - --list-ol-number-color: var(--main-color); - --list-ol-hover: var(--low-color); - - --h1-color: var(--print-h1-color,var(--color6)); - --h2-color: var(--print-h2-color,var(--color7)); - --h3-color: var(--print-h3-color,var(--color8)); - --h4-color: var(--print-h4-color,var(--color9)); - --h5-color: var(--print-h5-color,var(--color10)); - --h6-color: var(--print-h6-color,var(--color11)); - - /*graph*/ - --graph-text-color: #B5B5B5;/*图谱文字颜色*/ - --graph-tag: #88d842bb;/*图谱线颜色*/ - --graph-attach: #b2cfe0bb;/*图谱附件颜色*/ - --graph-circle: var(--color8);/*图谱普通点颜色*/ - --graph-line: #8c8c8c;/*图谱线颜色*/ - --graph-unresolved: #f08080de;/*图谱未创建点颜色,兼未创建双链颜色*/ - --graph-arrow: #c23917;/*图谱箭头颜色*/ - --graph-control-bg: #00000080;/*图谱控制窗背景颜色*/ - - /*mermaid*/ - --mermaid-active-task-color: var(--low-color); - --mermaid-seq-dia-color: var(--high-color); - - --table-background-color: var(--bg-color2); - --table-background-color-odd: var(--bg-color); - --table-border-color: #878787; - --table-thead-background-color: var(--color11); - --table-hover-raw-color: var(--color10); - --table-hover-color: var(--color11);; - --table-hover-thead-color: var(--color10); - - /*calendar*/ - --calendar-week-color: var(--high-color); - --calendar-week-hover: var(--color1); - --calendar-week-background-color: var(--bg-color); - --calendar-today-background-color: var(--color1); - - /*day planner*/ - --day-planner-pie: var(--color1); - --day-planner-timeline: #000000; - --day-planner-line: var(--low-color); - --day-planner-dot: var(--low-color); - --day-planner-item-hover: var(--main-color); - --event-item-color1: var(--color2); - --event-item-color2: var(--color3); - --event-item-color3: var(--color4); - --event-item-color4: var(--color5); - --event-item-color5: var(--color6); - --event-item-color6: var(--color7); - --event-item-color7: var(--color8); - --event-item-color8: var(--color9); - --event-item-color9: var(--color10); - --event-item-color10: var(--color11); - - /*Sliding panes*/ - --sliding-panes-header-color: var(--color1); - - --color-view-header-gradient-1: var(--bg-color2); - --color-view-header-gradient-2: var(--bg-color); - - /*checkbox*/ - --checkbox-color-0: var(--main-color); - - --table-color-calendar-2: rgb(120, 104, 38); - --table-color-rgb: 120, 104, 38; -} - -body.color-scheme-options-honey-milk-topaz #calendar-container { - --color-background-heading: transparent; - --color-background-weeknum: transparent; - --color-background-day: transparent; - --color-background-weekend: transparent; - - --color-tr: var(--bg-color) !important; - --color-tr-odd: #ffdece !important; - - --color-dot: var(--text-accent); - --color-arrow: currentColor; - --color-button: var(--text-muted); - --color-text-weeknum: var(--calendar-week-color); - - --color-text-title: var(--text-normal); - --color-text-heading: var(--text-normal); - --color-text-day: var(--text-normal); - --color-text-today: var(--text-accent); - - padding: 0px 5px 0px 8px; - margin: -21px -8px 0px -8px; - line-height: 0.6; -} - -/*巧克力色 by Lillian */ -body.color-scheme-options-chocolate-topaz .theme-light, -body.color-scheme-options-chocolate-topaz.theme-light { - --color1: #f8d3a0; - --color2: #d8a86a; - --color3: #c2907a; - --color4: #af7d6b; - --color5: #af694f; - --color6: #74412d; - --color7: #683725; - --color8: #502819; - --color9: #552917; - --color10: #572917; - --color11: #4b1e0e; - - --main-color: var(--color6); - --low-color: var(--color3); - --high-color: var(--color8); - --deep-color: var(--color11); - - --bg-color: #faf4eb; - --bg-color2: #f7e6ce; - - --background-primary: var(--background-primary-bg-4-bt,#faf4eb); - --background-primary-alt: var(--background-primary-alt-bg-4-bt,#faf4eb); - --background-secondary: var(--background-secondary-bg-4-bt,#faf4eb); - --background-secondary-alt: var(--background-secondary-alt-bg-4-bt,#f7e6ce); - - --background-modifier-border: #e1dfdf; - - --accent-em: #099d4e; - --text-selection: #66bbaa59; - - --accent-h: 17; - --accent-s: 44%; - --accent-l: 32%; - --interactive-accent-rgb: 116, 65, 45; - - --strong-em-highlight-color: var(--color11); - - --text-search-highlight-bg: #ffd1dd; - --search-result-file-matched-bg: var(--low-color); - - --background-mobile-drawer-1: var(--bg-color); - --background-mobile-drawer-2: var(--bg-color); - --background-secondary-alt-bg-4-bt-publish: #f6f6f6; - - --search-result-file-title-color: var(--main-color); - --background-blockquote: #b6b6b62c; - --background-code: #ebebeb71; - --background-code-2: #cccccc62; - --text-color-code: #e95d00; - - --list-ul-block-color: var(--color5); - --list-ul-disc-color: var(--main-color); - --green-1: #3dc730; - --list-ul-hover: var(--low-color); - --list-ol-block-color: var(--main-color); - --list-ol-number-color: var(--main-color); - --list-ol-hover: var(--low-color); - - --tag-text: #f8f8f8; - --stag1: #fa8787; - --stag1-bg: #eb2727; - --stag2: #fdbd5c; - --stag2-bg: #ee9002; - --stag3: #50ce3a; - --stag3-bg: #22ac09; - --tag1: var(--color3); - --tag2: var(--color4); - --tag3: var(--color5); - --tag4: var(--color6); - --tag5: var(--color7); - - --tag-dailynote: var(--low-color); - --tag-dailynote-bg: var(--color3); - --tag-weeklynote: var(--color6); - --tag-weeklynote-bg: var(--color4); - --tag-questions: var(--color5); - --tag-questions-bg: var(--color5); - --tag-ideas: #ceb900; - --tag-ideas-bg: #444444d8; - - --h1-color: var(--print-h1-color,var(--color7)); - --h2-color: var(--print-h2-color,var(--color6)); - --h3-color: var(--print-h3-color,var(--color5)); - --h4-color: var(--print-h4-color,var(--color4)); - --h5-color: var(--print-h5-color,var(--color3)); - --h6-color: var(--print-h6-color,var(--color2)); - - /*graph*/ - --graph-text-color: #696969; - --graph-tag: #77d425cc; - --graph-attach: #afcfe0cc; - --graph-circle: var(--color3); - --graph-line: #b1b1b1; - --graph-unresolved: #db4e4ecc; - --graph-arrow: #e25300; - --graph-control-bg: var(--bg-color); - - /*mermaid*/ - --mermaid-active-task-color: var(--high-color); - --mermaid-seq-dia-color: var(--low-color); - - /*table*/ - --table-background-color: var(--bg-color2); - --table-background-color-odd: var(--bg-color); - --table-border-color: #7d7d7d; - --table-thead-background-color: var(--color1); - --table-hover-raw-color: var(--color2); - --table-hover-color: var(--color1); - --table-hover-thead-color: var(--color2); - - /*calendar*/ - --calendar-week-color: var(--high-color); - --calendar-week-hover: var(--color1); - --calendar-week-background-color: var(--bg-color); - --calendar-today-background-color: var(--color1); - - /*day planner*/ - --day-planner-pie: var(--deep-color); - --day-planner-timeline: #d62f2f; - --day-planner-line: var(--low-color); - --day-planner-dot: var(--low-color); - --day-planner-item-hover: var(--color1); - --event-item-color1: var(--color2); - --event-item-color2: var(--color3); - --event-item-color3: var(--color4); - --event-item-color4: var(--color5); - --event-item-color5: var(--color6); - --event-item-color6: var(--color7); - --event-item-color7: var(--color8); - --event-item-color8: var(--color9); - --event-item-color9: var(--color10); - --event-item-color10: var(--color11); - - /*Sliding panes*/ - --sliding-panes-header-color: var(--deep-color); - --background-4-sliding-pane: var(--bg-color); - - --color-view-header-gradient-1: var(--color1); - --color-view-header-gradient-2: var(--bg-color); - - /*checkbox*/ - --checkbox-color-0: var(--main-color); - - --table-color-calendar-2: rgb(76, 52, 16); - --table-color-rgb: 76, 52, 16; -} - -body.color-scheme-options-chocolate-topaz.theme-dark { - /* 焦茶色 焦茶#6f4b3e */ - --color1: #f8d3a0; - --color2: #d8a86a; - --color3: #c2907a; - --color4: #af7d6b; - --color5: #af694f; - --color6: #74412d; - --color7: #683725; - --color8: #502819; - --color9: #552917; - --color10: #572917; - --color11: #4b1e0e; - - --main-color: var(--color6); - --low-color: var(--color3); - --high-color: var(--color7); - --deep-color: var(--color11); - - /*黑暗颜色的背景不建议修改*/ - --bg-color: #222222; - --bg-color2: #222222; - - --background-primary: var(--background-primary-bg-4-bt,#222222); - --background-primary-alt: var(--background-primary-alt-bg-4-bt,#222222); - --background-secondary: var(--background-secondary-bg-4-bt,#222222); - --background-secondary-alt: var(--background-secondary-alt-bg-4-bt,#222222); - - --background-modifier-border: #565656;/*一些线条颜色*/ - - --text-muted: #8a8a8a;/*muted 文字颜色*/ - --text-faint: #797979;/*faint 文字颜色*/ - --text-folder-file: #b3b3b3;/*文件夹、文件 文字颜色*/ - - --accent-em: #a4ca8e;/*斜体 文字颜色*/ - - --text-selection: #47a5914d;/*鼠标选择 文字背景颜色*/ - --accent-h: 17; - --accent-s: 44%; - --accent-l: 32%; - --interactive-accent: var(--main-color); /*主题强调色*/ - --interactive-accent-rgb: 116, 65, 45;/*主题强调色 rgb , 需与主题色一致(把上面的值转成rgb放下面)*/ - - --panel-border-color: #18191e;/*侧边栏、下部状态栏线条颜色,改了没有,线条被我取消了 :p*/ - --search-text: #e0e0e0;/*搜索结果文字颜色*/ - --folder-title: #ffffff;/*文件栏文件夹文字颜色*/ - - --strong-em-highlight-color: var(--color11); - --text-search-highlight-bg: #bb4361; - --strong-em-color-1: #43d3ff;/*加粗斜体渐变色1*/ - --strong-em-color-2: #baaaff;/*加粗斜体渐变色2*/ - --search-result-file-matched-bg: var(--color9);/* 搜索结果文字高亮颜色 */ - - --background-mobile-drawer-1: var(--bg-color); - --background-mobile-drawer-2: var(--bg-color); - - --background-transparent-blue: #003e759a;/*用在kanban里的,可以不调*/ - --scrollbar-thumb-bg: #8282827e; - --scrollbar-active-thumb-bg: #828282; - - --search-result-file-title-color: var(--main-color); - - --background-blockquote: #9191911c;/*引用框背景颜色*/ - --background-code: #1111118c;/*代码框背景颜色*/ - --background-code-2: #4c4c4cb0; - --text-color-code: #d58000;/*代码框文字颜色*/ - - --list-ul-block-color: var(--color6); - --list-ul-disc-color: var(--main-color); - --green-1: #3dc730; - --list-ul-hover: var(--low-color); - --list-ol-block-color: var(--main-color); - --list-ol-number-color: var(--main-color); - --list-ol-hover: var(--low-color); - - --tag-text: #e4e4e4; - --stag1: #f08383; - --stag1-bg: #bd1919; - --stag2: #e7b263; - --stag2-bg: #ac6700; - --stag3: #77df89; - --stag3-bg: #058c1c; - - --tag1: var(--color11); - --tag2: var(--color10); - --tag3: var(--color9); - --tag4: var(--color8); - --tag5: var(--color7); - - --tag-dailynote: var(--mian-color); - --tag-dailynote-bg: var(--color5); - --tag-weeklynote: var(--color3); - --tag-weeklynote-bg: var(--color6); - --tag-questions: var(--color8); - --tag-questions-bg: var(--color8); - --tag-ideas: #fcfcc0; - --tag-ideas-bg: #565656d8; - - --h1-color: var(--print-h1-color,var(--color2)); - --h2-color: var(--print-h2-color,var(--color3)); - --h3-color: var(--print-h3-color,var(--color4)); - --h4-color: var(--print-h4-color,var(--color5)); - --h5-color: var(--print-h5-color,var(--color6)); - --h6-color: var(--print-h6-color,var(--color7)); - - /*graph*/ - --graph-text-color: #B5B5B5; - --graph-tag: #88d842bb; - --graph-attach: #b2cfe0bb; - --graph-circle: var(--color8); - --graph-line: #8c8c8c; - --graph-unresolved: #f08080de; - --graph-arrow: #c23917; - --graph-control-bg: #00000080; - - /*mermaid*/ - --mermaid-active-task-color: var(--low-color); - --mermaid-seq-dia-color: var(--high-color); - - /*table*/ - --table-background-color: var(--bg-color2); - --table-background-color-odd: var(--bg-color); - --table-border-color: #878787; - --table-thead-background-color: var(--color11); - --table-hover-raw-color: var(--color10); - --table-hover-color: var(--color11);; - --table-hover-thead-color: var(--color10); - - /*calendar*/ - --calendar-week-color: var(--high-color); - --calendar-week-hover: var(--color1); - --calendar-week-background-color: var(--bg-color); - --calendar-today-background-color: var(--color1); - - /*day planner*/ - --day-planner-pie: var(--color1); - --day-planner-timeline: #000000; - --day-planner-line: var(--low-color); - --day-planner-dot: var(--low-color); - --day-planner-item-hover: var(--main-color); - --event-item-color1: var(--color2); - --event-item-color2: var(--color3); - --event-item-color3: var(--color4); - --event-item-color4: var(--color5); - --event-item-color5: var(--color6); - --event-item-color6: var(--color7); - --event-item-color7: var(--color8); - --event-item-color8: var(--color9); - --event-item-color9: var(--color10); - --event-item-color10: var(--color11); - - /*Sliding panes*/ - --sliding-panes-header-color: var(--color1); - --background-4-sliding-panel: #252525ed;/* sliding panes 背景颜色 */ - - --color-view-header-gradient-1: var(--bg-color2); - --color-view-header-gradient-2: var(--bg-color); - - /*checkbox*/ - --checkbox-color-0: var(--main-color); - - --table-color-calendar-2: rgb(70, 45, 6); - --table-color-rgb: 70, 45, 6; -} - -body.color-scheme-options-chocolate-topaz #calendar-container { - --color-background-heading: transparent; - --color-background-weeknum: transparent; - --color-background-day: transparent; - --color-background-weekend: transparent; - - --color-tr: var(--bg-color) !important; - --color-tr-odd: #ffdece !important; - - --color-dot: var(--text-accent); - --color-arrow: currentColor; - --color-button: var(--text-muted); - --color-text-weeknum: var(--calendar-week-color); - - --color-text-title: var(--text-normal); - --color-text-heading: var(--text-normal); - --color-text-day: var(--text-normal); - --color-text-today: var(--text-accent); - - /*===*/ - padding: 0px 5px 0px 8px; - margin: -21px -8px 0px -8px; - line-height: 0.6; -} - -body.color-scheme-options-autumn-topaz .theme-light, -body.color-scheme-options-autumn-topaz.theme-light { - /*色系设置*/ - --color1: #ebe1cc; - --color2: #e4ca8f; - --color3: #e6bf66 ; - --color4: #fab102; - --color5: #b6af00; - --color6: #70a600; - --color7: #00992c; - --color8: #00884a; - --color9: #007562; - --color10: #006674; - --color11: #2f4858; - - /*Lillian: 第三步:把上面的色系,粘贴到dark模式下*/ - --main-color: var(--color6); - --low-color: var(--color4); - --high-color: var(--color7); - --deep-color:var(--color11); - - --bg-color:#fafaf3; - --bg-color2:#bbddcd; - - --background-primary: var(--background-primary-bg-4-bt,#fafaf3); - --background-primary-alt: var(--background-primary-alt-bg-4-bt,#fafaf3); - --background-secondary: var(--background-secondary-bg-4-bt,#fafaf3); - --background-secondary-alt: var(--background-secondary-alt-bg-4-bt,#bbddcd); - --accent-h: 80; - --accent-s: 100%; - --accent-l: 33%; - --interactive-accent-rgb: 112, 166, 0; - - --strong-em-highlight-color: var(--color11); - --text-search-highlight-bg: #ffd1dd; - --search-result-file-matched-bg: var(--low-color); - - --background-mobile-drawer-1: var(--bg-color); - --background-mobile-drawer-2: var(--bg-color); - - --search-result-file-title-color: var(--main-color); - - --list-ul-block-color: var(--color5); - --list-ul-disc-color: var(--main-color); - --green-1: #3dc730; - --list-ul-hover: var(--low-color); - --list-ol-block-color: var(--main-color); - --list-ol-number-color: var(--main-color); - --list-ol-hover: var(--low-color); - - --tag1: var(--color3); - --tag2: var(--color4); - --tag3: var(--color5); - --tag4: var(--color6); - --tag5: var(--color7); - - --tag-dailynote: var(--low-color); - --tag-dailynote-bg: var(--color3); - --tag-weeklynote: var(--color6); - --tag-weeklynote-bg: var(--color4); - --tag-questions: var(--color5); - --tag-questions-bg: var(--color5); - - --h1-color: var(--print-h1-color,var(--color9)); - --h2-color: var(--print-h2-color,var(--color8)); - --h3-color: var(--print-h3-color,var(--color7)); - --h4-color: var(--print-h4-color,var(--color6)); - --h5-color: var(--print-h5-color,var(--color5)); - --h6-color: var(--print-h6-color,var(--color4)); - - /*graph*/ - --graph-circle: var(--color3); - --graph-control-bg: var(--bg-color); - - /*mermaid*/ - --mermaid-active-task-color: var(--high-color); - --mermaid-seq-dia-color: var(--low-color); - - /*table*/ - --table-background-color: var(--bg-color2); - --table-background-color-odd: var(--bg-color); - --table-border-color: #7d7d7d; - --table-thead-background-color: var(--color1); - --table-hover-raw-color: var(--color2); - --table-hover-color: var(--color1); - --table-hover-thead-color: var(--color2); - - /*calendar*/ - --calendar-week-color: var(--high-color); - --calendar-week-hover: var(--color1); - --calendar-week-background-color: var(--bg-color); - --calendar-today-background-color: var(--color1); - - /*day planner*/ - --day-planner-pie: var(--deep-color); - --day-planner-timeline: #d62f2f; - --day-planner-line: var(--low-color); - --day-planner-dot: var(--low-color); - --day-planner-item-hover: var(--color1); - --event-item-color1: var(--color2); - --event-item-color2: var(--color3); - --event-item-color3: var(--color4); - --event-item-color4: var(--color5); - --event-item-color5: var(--color6); - --event-item-color6: var(--color7); - --event-item-color7: var(--color8); - --event-item-color8: var(--color9); - --event-item-color9: var(--color10); - --event-item-color10:var(--color11); - - /*Sliding panes*/ - --sliding-panes-header-color: var(--deep-color); - --background-4-sliding-pane: var(--bg-color); - - --color-view-header-gradient-1: #70a60085; - --color-view-header-gradient-2: var(--bg-color); - - /*checkbox*/ - --checkbox-color-0: var(--main-color); - - --table-color-calendar-2: rgb(222, 236, 182); - --table-color-rgb: 222, 236, 182; -} - - -body.color-scheme-options-autumn-topaz.theme-dark { - /* 黄绿*/ - --color1: #ebe1cc; - --color2: #e4ca8f; - --color3: #e6bf66 ; - --color4: #fab102; - --color5: #b6af00; - --color6: #70a600; - --color7: #00992c; - --color8: #00884a; - --color9: #007562; - --color10: #006674; - --color11: #2f4858; - - --main-color: var(--color6); - --low-color: var(--color3); - --high-color: var(--color7); - --deep-color:var(--color11); - - --bg-color:#222222; - --bg-color2:#444444; - - --background-primary: var(--background-primary-bg-4-bt,#222222); - --background-primary-alt: var(--background-primary-alt-bg-4-bt,#222222); - --background-secondary: var(--background-secondary-bg-4-bt,#222222); - --background-secondary-alt: var(--background-secondary-alt-bg-4-bt,#444444); - - --text-muted: #8a8a8a; /*muted 文字颜色*/ - --text-faint: #797979; /*faint 文字颜色*/ - --text-folder-file: #b3b3b3; /*文件夹、文件 文字颜色*/ - --accent-strong: #f7f7f7; /*加粗 文字颜色*/ - --accent-em: #a4ca8e; /*斜体 文字颜色*/ - - --text-selection: #47a5914d; /*鼠标选择 文字背景颜色*/ - - --interactive-accent: var(--main-color); /*主题强调色*/ - --interactive-accent-rgb: 104, 56, 39; /*主题强调色 rgb , 需与主题色一致(把上面的值转成rgb放下面)*/ - - --strong-em-highlight-color: var(--color11); - - --search-result-file-matched-bg: var(--color9); /* 搜索结果文字高亮颜色 */ - - --background-mobile-drawer-1: var(--bg-color); - --background-mobile-drawer-2: var(--bg-color); - - --search-result-file-title-color: var(--main-color); - - --list-ul-block-color: var(--color6); - --list-ul-disc-color: var(--main-color); - --green-1: #3dc730; - --list-ul-hover: var(--low-color); - --list-ol-block-color: var(--main-color); - --list-ol-number-color: var(--main-color); - --list-ol-hover: var(--low-color); - - --tag1: var(--color11); - --tag2: var(--color10); - --tag3: var(--color9); - --tag4: var(--color8); - --tag5: var(--color7); - --tag-dailynote: var(--mian-color); - --tag-dailynote-bg: var(--color5); - --tag-weeklynote: var(--color3); - --tag-weeklynote-bg: var(--color6); - --tag-questions: var(--color8); - --tag-questions-bg: var(--color8); - --tag-ideas: #fcfcc0; - --tag-ideas-bg: #565656d8; - - --h1-color: var(--print-h1-color,var(--color4)); - --h2-color: var(--print-h2-color,var(--color5)); - --h3-color: var(--print-h3-color,var(--color6)); - --h4-color: var(--print-h4-color,var(--color7)); - --h5-color: var(--print-h5-color,var(--color8)); - --h6-color: var(--print-h6-color,var(--color9)); - - --graph-text-color: #B5B5B5; /*图谱文字颜色*/ - --graph-tag: #88d842bb; /*图谱线颜色*/ - --graph-attach: #b2cfe0bb; /*图谱附件颜色*/ - --graph-circle: var(--color8); /*图谱普通点颜色*/ - --graph-line: #8c8c8c; /*图谱线颜色*/ - --graph-unresolved: #f08080de; /*图谱未创建点颜色,兼未创建双链颜色*/ - --graph-arrow: #c23917; /*图谱箭头颜色*/ - --graph-control-bg: #00000080; /*图谱控制窗背景颜色*/ - - /*mermaid*/ - --mermaid-active-task-color: var(--low-color); - --mermaid-seq-dia-color: var(--high-color); - - /*table*/ - --table-background-color: var(--bg-color2); - --table-background-color-odd: var(--bg-color); - --table-border-color: #878787; - --table-thead-background-color: var(--color11); - --table-hover-raw-color: var(--color10); - --table-hover-color: var(--color11);; - --table-hover-thead-color: var(--color10); - - /*calendar*/ - --calendar-week-color: var(--high-color); - --calendar-week-hover: var(--color1); - --calendar-week-background-color: var(--bg-color); - --calendar-today-background-color: var(--color1); - - /*day planner*/ - --day-planner-pie: var(--color1); - --day-planner-timeline: #000000; - --day-planner-line: var(--low-color); - --day-planner-dot: var(--low-color); - --day-planner-item-hover: var(--main-color); - --event-item-color1: var(--color2); - --event-item-color2: var(--color3); - --event-item-color3: var(--color4); - --event-item-color4: var(--color5); - --event-item-color5: var(--color6); - --event-item-color6: var(--color7); - --event-item-color7: var(--color8); - --event-item-color8: var(--color9); - --event-item-color9: var(--color10); - --event-item-color10:var(--color11); - - /*Sliding panes*/ - --sliding-panes-header-color: var(--color1); - - --checklist-bg-hover: #08080896; - - --color-view-header-gradient-1: var(--bg-color2); - --color-view-header-gradient-2: var(--bg-color); - - /*checkbox*/ - --checkbox-color-0: var(--main-color); - - --table-color-calendar-2: rgb(81, 165, 39); - --table-color-rgb: 81, 165, 39; -} - -body.color-scheme-options-autumn-topaz #calendar-container { - --color-background-heading: transparent; - --color-background-weeknum: transparent; - --color-background-day: transparent; - --color-background-weekend: transparent; - - --color-tr: var(--bg-color) !important; - --color-tr-odd: #ffdece !important; - - --color-dot: var(--text-accent); - --color-arrow: currentColor; - --color-button: var(--text-muted); - --color-text-weeknum: var(--calendar-week-color); - - --color-text-title: var(--text-normal); - --color-text-heading: var(--text-normal); - --color-text-day: var(--text-normal); - --color-text-today: var(--text-accent); - - padding: 0px 5px 0px 8px; - margin: -21px -8px 0px -8px; - line-height: 0.6; -} - -body.color-scheme-options-lillimon-topaz .theme-light, -body.color-scheme-options-lillimon-topaz.theme-light { - /*魔方浅色*/ - /*色系设置*/ - --magic-low-color: #e0e79a; - --magic-main-color: var(--theme-color); - --magic-deep-color: #746909; - --accent-h: 66; - --accent-s: 96%; - --accent-l: 33%; - --bg-color: #f8f8f5; - --bg-color2: #e7e7e4; - - /*色系共 5 个值,3个主题色+2个背景色*/ - --color1: var(--magic-low-color); - --color2: var(--magic-low-color); - --color3: var(--magic-low-color); - --color4: var(--magic-low-color); - --color5: var(--magic-main-color); - --color6: var(--magic-main-color); - --color7: var(--magic-main-color); - --color8: var(--magic-main-color); - --color9: var(--magic-deep-color); - --color10: var(--magic-deep-color); - --color11: var(--magic-deep-color); - - --high-color: var(--color8); - - /*色系设置结束*/ - --background-primary: var(--background-primary-bg-4-bt,#f8f8f5); - --background-primary-alt: var(--background-primary-alt-bg-4-bt,#f8f8f5); - --background-secondary: var(--background-secondary-bg-4-bt,#f8f8f5); - --background-secondary-alt: var(--background-secondary-alt-bg-4-bt,#e7e7e4); - - --text-normal:var(--magic-main-color); - --interactive-accent-rgb: 215, 178, 88; - - --strong-em-highlight-color: var(--color11); - - --search-result-file-matched-bg: var(--magic-low-color); - - --background-mobile-drawer-1: var(--bg-color); - --background-mobile-drawer-2: var(--bg-color); - - --search-result-file-title-color: var(--magic-main-color); - - --list-ul-block-color: var(--color5); - --list-ul-disc-color: var(--magic-main-color); - --green-1: #3dc730; - --list-ul-hover: var(--magic-low-color); - --list-ol-block-color: var(--magic-main-color); - --list-ol-number-color: var(--magic-main-color); - --list-ol-hover: var(--magic-low-color); - - --tag-dailynote: var(--magic-low-color); - --tag-dailynote-bg: var(--color10); - --tag-weeklynote: var(--color6); - --tag-weeklynote-bg: var(--color10); - --tag-questions: var(--color5); - --tag-questions-bg: var(--color5); - --tag-ideas: #ceb900; - --tag-ideas-bg: #444444d8; - - --tag1: var(--color3); - --tag2: var(--color4); - --tag3: var(--color5); - --tag4: var(--color6); - --tag5: var(--color7); - - --h1-color: var(--print-h1-color,var(--color9)); - --h2-color: var(--print-h2-color,var(--color8)); - --h3-color: var(--print-h3-color,var(--color7)); - --h4-color: var(--print-h4-color,var(--color6)); - --h5-color: var(--print-h5-color,var(--color5)); - --h6-color: var(--print-h6-color,var(--color4)); - - /*graph*/ - --graph-circle: var(--color3); - --graph-control-bg: var(--bg-color); - - /*mermaid*/ - --mermaid-active-task-color: var(--high-color); - --mermaid-seq-dia-color: var(--magic-low-color); - - /*table*/ - --table-background-color: var(--bg-color2); - --table-background-color-odd: var(--bg-color); - --table-border-color: #7d7d7d; - --table-thead-background-color: var(--color1); - --table-hover-raw-color: var(--color2); - --table-hover-color: var(--color1); - --table-hover-thead-color: var(--color2); - - /*calendar*/ - --calendar-week-color: var(--high-color); - --calendar-week-hover: var(--color1); - --calendar-week-background-color: var(--bg-color); - --calendar-today-background-color: var(--color1); - - /*day planner*/ - --day-planner-pie: var(--magic-deep-color); - --day-planner-timeline: #d62f2f; - --day-planner-line: var(--magic-low-color); - --day-planner-dot: var(--magic-low-color); - --day-planner-item-hover: var(--color1); - --event-item-color1: var(--color2); - --event-item-color2: var(--color3); - --event-item-color3: var(--color4); - --event-item-color4: var(--color5); - --event-item-color5: var(--color6); - --event-item-color6: var(--color7); - --event-item-color7: var(--color8); - --event-item-color8: var(--color9); - --event-item-color9: var(--color10); - --event-item-color10: var(--color11); - - /*Sliding panes*/ - --sliding-panes-header-color: var(--magic-deep-color); - --background-4-sliding-pane: var(--bg-color); - - --color-view-header-gradient-1: var(--color1); - --color-view-header-gradient-2: var(--bg-color); - - /*checkbox*/ - --checkbox-color-0: var(--magic-main-color); -} - - -body.color-scheme-options-lillimon-topaz.theme-dark { - /*魔方深色*/ - /*魔方*/ - --magic-low-color: #e0e79a; - --magic-main-color: #95a503; - --magic-deep-color: #746909; - --accent-h: 66; - --accent-s: 96%; - --accent-l: 33%; - --bg-color: #222222; - --bg-color2: #333333; - - --color1: var(--magic-low-color); - --color2: var(--magic-low-color); - --color3: var(--magic-low-color); - --color4: var(--magic-low-color); - --color5: var(--magic-main-color); - --color6: var(--magic-main-color); - --color7: var(--magic-main-color); - --color8: var(--magic-main-color); - --color9: var(--magic-deep-color); - --color10: var(--magic-deep-color); - --color11: var(--magic-deep-color); - --high-color: var(--color8); - /*主题色设置结束**/ - - --background-primary: var(--background-primary-bg-4-bt,#222222); - --background-primary-alt: var(--background-primary-alt-bg-4-bt,#222222); - --background-secondary: var(--background-secondary-bg-4-bt,#222222); - --background-secondary-alt: var(--background-secondary-alt-bg-4-bt,#333333); - - --interactive-accent-rgb: 58, 91, 82; - - --strong-em-highlight-color: var(--color11); - - --search-result-file-matched-bg: var(--high-color); - /* 搜索结果文字高亮颜色 */ - - --background-mobile-drawer-1: var(--bg-color); - --background-mobile-drawer-2: var(--bg-color); - - --search-result-file-title-color: var(--magic-main-color); - - --list-ul-block-color: var(--color6); - --list-ul-disc-color: var(--magic-main-color); - --green-1: #3dc730; - --list-ul-hover: var(--magic-low-color); - --list-ol-block-color: var(--magic-main-color); - --list-ol-number-color: var(--magic-main-color); - --list-ol-hover: var(--magic-low-color); - - --tag1: var(--color11); - --tag2: var(--color10); - --tag3: var(--color9); - --tag4: var(--color8); - --tag5: var(--color7); - - --tag-dailynote: var(--mian-color); - --tag-dailynote-bg: var(--color5); - --tag-weeklynote: var(--color3); - --tag-weeklynote-bg: var(--color6); - --tag-questions: var(--color8); - --tag-questions-bg: var(--color8); - --tag-ideas: #fcfcc0; - --tag-ideas-bg: #565656d8; - - --h1-color: var(--print-h1-color,var(--color4)); - --h2-color: var(--print-h2-color,var(--color5)); - --h3-color: var(--print-h3-color,var(--color6)); - --h4-color: var(--print-h4-color,var(--color7)); - --h5-color: var(--print-h5-color,var(--color8)); - --h6-color: var(--print-h6-color,var(--color9)); - - --graph-circle: var(--color8); - /*图谱普通点颜色*/ - - /*mermaid*/ - --mermaid-active-task-color: var(--magic-low-color); - --mermaid-seq-dia-color: var(--high-color); - - /*table*/ - --table-background-color: var(--bg-color2); - --table-background-color-odd: var(--bg-color); - --table-border-color: #878787; - --table-thead-background-color: var(--color11); - --table-hover-raw-color: var(--color10); - --table-hover-color: var(--color11); - --table-hover-thead-color: var(--color10); - - /*calendar*/ - --calendar-week-color: var(--high-color); - --calendar-week-hover: var(--color1); - --calendar-week-background-color: var(--bg-color); - --calendar-today-background-color: var(--color1); - - /*day planner*/ - --day-planner-pie: var(--color1); - --day-planner-timeline: #000000; - --day-planner-line: var(--magic-low-color); - --day-planner-dot: var(--magic-low-color); - --day-planner-item-hover: var(--magic-main-color); - --event-item-color1: var(--color2); - --event-item-color2: var(--color3); - --event-item-color3: var(--color4); - --event-item-color4: var(--color5); - --event-item-color5: var(--color6); - --event-item-color6: var(--color7); - --event-item-color7: var(--color8); - --event-item-color8: var(--color9); - --event-item-color9: var(--color10); - --event-item-color10: var(--color11); - - /*Sliding panes*/ - --sliding-panes-header-color: var(--color1); - - --color-view-header-gradient-1: var(--bg-color2); - --color-view-header-gradient-2: var(--bg-color); - - /*checkbox*/ - --checkbox-color-0: var(--magic-main-color); -} - -body.color-scheme-options-lillimon-topaz #calendar-container { - --color-background-heading: transparent; - --color-background-weeknum: transparent; - --color-background-day: transparent; - --color-background-weekend: transparent; - - --color-tr: var(--bg-color) !important; - --color-tr-odd: #ffdece !important; - - --color-dot: var(--text-accent); - --color-arrow: currentColor; - --color-button: var(--text-muted); - --color-text-weeknum: var(--calendar-week-color); - - --color-text-title: var(--text-normal); - --color-text-heading: var(--text-normal); - --color-text-day: var(--text-normal); - --color-text-today: var(--text-accent); - - padding: 0px 5px 0px 8px; - margin: -21px -8px 0px -8px; - line-height: 0.6; -} -/*=================== Lillian 的配色 end ========================*/ - -/*========== awyugan 的 配色 =========*/ -body.color-scheme-options-lilac .theme-light, -body.color-scheme-options-lilac.theme-light { - --background-primary: var(--background-primary-bg-4-bt,#d7c4f2); - --background-primary-alt: var(--background-primary-alt-bg-4-bt,#e8dffa); - --background-secondary: var(--background-secondary-bg-4-bt,#e1cefa); - --background-secondary-alt: var(--background-secondary-alt-bg-4-bt,#d7c4f2); - - --background-modifier-border: #af9dd1; - --background-modifier-success: #d7a4e7; - - --text-normal: #0e0e0e; - --text-muted: #ab7ecf; - --text-faint: #a23ac2; - --accent-em: #620ac6; - --text-selection: #8b66bb59; - - --interactive-normal: #eaeaeb; - --interactive-hover: #d1b6f0; - - --interactive-accent-rgb: 195, 144, 230;/*工作区旁边的线*/ - --accent-h: 266; - --accent-s: 62%; - --accent-l: 72%; - --strong-em-highlight-color: #7908ae; - --text-highlight-bg-h: 273; - --text-highlight-bg-s: 65%; - --text-highlight-bg-l: 75%; - --text-highlight-bg-a: 0.706; - --text-highlight-bg: hsla(var(--text-highlight-bg-h), var(--text-highlight-bg-s), var(--text-highlight-bg-l), var(--text-highlight-bg-a)); - --text-search-highlight-bg: #d1d2ff; - --strong-em-color-1: #5008ae; - --strong-em-color-2: #2e0153; - --search-result-file-matched-bg: #ffc3c3; - - --background-mobile-drawer-1: #ffffff; - --background-mobile-drawer-2: #ffffffa1; - - --background-secondary-alt-bg-4-bt-publish: #e1d5eb61; - - --scrollbar-thumb-bg: #aa7dd3a8; - --scrollbar-active-thumb-bg: #aa7dd3; - - --search-result-file-title-color: #5a10a0; - - --background-blockquote: #b6b6b62c; - - --internal-link-color: #6203a2; - - --list-ul: #ffffff; - --list-ul-block-color: #7f1bb9; - --list-ul-disc-color: #d955f3; - --list-ul-hover: #ba2fdd; - --list-ol-block-color: #7835a5; - --list-ol-number-color: #85429a; - --list-ol-hover: #9231b8; - - --green-1: #9c30c7; - - --tag-text: #d2a3d4; - --stag1: #fa8787; - --stag1-bg: #eb2727; - --stag2: #fdbd5c; - --stag2-bg: #ee9002; - --stag3: #50ce3a; - --stag3-bg: #22ac09; - - --tag1: #2b85ce; - --tag2: #29b325; - --tag3: #20b9ce; - --tag4: #dfd331; - --tag5: #bbbbbb; - - --tag-dailynote: #0077ff; - --tag-dailynote-bg: #277CDD; - --tag-weeklynote: #4b9fff; - --tag-weeklynote-bg: #6aafff; - --tag-questions: #b68fff; - --tag-questions-bg: #b085ff; - --tag-ideas: #ceb900; - --tag-ideas-bg: #444444d8; - - --h1-color: var(--print-h1-color, #6F6493); - --h2-color: var(--print-h2-color, #724681); - --h3-color: var(--print-h3-color, #330349); - --h4-color: var(--print-h4-color, #2d1445); - --h5-color: var(--print-h5-color, #300e47); - --h6-color: var(--print-h6-color, #331945); - - /*graph*/ - --graph-text-color: #696969; - --graph-tag: #da9ee2cc; - --graph-attach: #88b0d6cc; - --graph-circle: #ac6fbfcc; - --graph-line: #b1b1b1; - --graph-unresolved: #db4e4ecc; - --graph-arrow: #e25300; - --graph-control-bg: #ffffff9a; - - /*mermaid*/ - --mermaid-active-task-color: #44bbff; - --mermaid-seq-dia-color: #76c8ff; - - /*table*/ - --table-background-color: #efe0f1; - --table-background-color-odd: #ffffffaf; - --table-border-color: #7d7d7d; - --table-thead-background-color: #d4a7e6c7; - --table-hover-raw-color: #c485ee2f; - --table-hover-color: #a75dec34; - --table-hover-thead-color: #edddff; - - /*calendar*/ - --calendar-week-color: #8b32b4; - --calendar-week-hover: #f9e3ff; - --calendar-week-background-color: #d4bfe6; - --calendar-today-background-color: #c2aaee; - --color-text-weeknum: #8b32b4; - - /*day planner 改为相应色系*/ - --day-planner-pie: #eca95c; - --day-planner-timeline: #d62f2f; - --day-planner-line: #d0aee6; - --day-planner-dot: #d0aee6; - --day-planner-item-hover: #d0aee6; - - --event-item-color1: #e6e0f1; - --event-item-color2: #d4cae5; - --event-item-color3: #c2b4d9; - --event-item-color4: #b09fcd; - --event-item-color5: #9f8ac1; - --event-item-color6: #9078b6; - --event-item-color7: #8066ac; - --event-item-color8: #7154a1; - --event-item-color9: #604195; - --event-item-color10: #4f2d89; - --event-item-color11: #3c197c; - --event-item-color12: #280070; - - /* stickies */ - --stickies-color-1: #b8b3e2; - --stickies-color-2: #e9c6f1; - --tape-color: #acacac65; - - /*Sliding panes*/ - --sliding-panes-header-color: #2c0240; - --background-4-sliding-pane: #ffffffef; - - --color-view-header-gradient-1: #efe0f1ef; /*标题上的颜色*/ - --color-view-header-gradient-2: #e1c9f1ef; - - /*checkbox*/ - --checkbox-color-0: var(--text-accent); - --checkbox-color-1: #e0dd2a; - --checkbox-color-2: #4077bf; - --checkbox-color-3: #ffe9e9; - --checkbox-color-4: #fffbd4; - --checkbox-color-5: #ad7fbf; - --checkbox-color-6: #a3a1a1; - --text-checked-checkbox: #9b9b9b; - - --interactive-hover: #dbdbdc; - - --table-color-calendar-2: rgb(211, 161, 247); - --table-color-rgb: 211, 161, 247; - - --divider-color: #d7c4f2; - --tab-stacked-shadow: #c69fd5; -} - - -body.color-scheme-options-lilac.theme-dark { - --bg-color: #462058; - --bg-color2: #b276c4; - - --background-primary: var(--background-primary-bg-4-bt,#462058); - --background-primary-alt: var(--background-primary-alt-bg-4-bt,#b276c4); - --background-secondary: var(--background-secondary-bg-4-bt,#462058); - --background-secondary-alt: var(--background-secondary-alt-bg-4-bt,#462058); - - --background-modifier-border: #947676; - - --text-normal: #c9b8e9; - - --text-muted: #c46ec4; - --text-faint: #b932e2; - --text-folder-file: #b3b3b3; - - --accent-em: #ca91d8; - --accent-h: 300; - --accent-s: 53%; - --accent-l: 47%; - --interactive-normal: #20242b; - --interactive-hover: #353b47; - - --interactive-accent-rgb: 128, 50, 159; - - --strong-em-highlight-color: #9c8ce6; - - --text-highlight-bg-h: 286; - --text-highlight-bg-s: 40%; - --text-highlight-bg-l: 38%; - --text-highlight-bg-a: 0.541; - --text-highlight-bg: hsla(var(--text-highlight-bg-h), var(--text-highlight-bg-s), var(--text-highlight-bg-l), var(--text-highlight-bg-a)); - --text-search-highlight-bg: #bb4361; - --strong-em-color-1: #9c8ce6; - --strong-em-color-2: #23d05c; - - --background-mobile-drawer-1: #1b1b1b; - --background-mobile-drawer-2: #1b1b1b69; - --background-transparent-blue: #003e759a; - - --scrollbar-thumb-bg: #603a8199; - --scrollbar-active-thumb-bg: #603a81; - - --search-result-file-title-color: #a75ac6; - - --background-blockquote: #9191911c; - --background-code: #1111118c; - --background-code-2: #4c4c4cb0; - --text-color-code: #d58000; - - --internal-link-color: #a360da; - - --list-ul: #f1a8f8; - --list-ul-block-color: #e142d9a9; - --list-ul-disc-color: #ae63eb; - --green-1: #8442c1; - --list-ul-hover: #9715e2de; - --list-ol-block-color: #9826bbb4; - --list-ol-number-color: #b595c4; - --list-ol-hover: #ba2cd6; - - --tag-text: #e4e4e4; - --stag1: #f08383; - --stag1-bg: #bd1919; - --stag2: #e7b263; - --stag2-bg: #ac6700; - --stag3: #77df89; - --stag3-bg: #058c1c; - --tag1: #2b85ce; - --tag2: #29b325; - --tag3: #20b9ce; - --tag4: #dfd331; - --tag5: #bbbbbb; - - --h1-color: var(--print-h1-color, #bc7ad4); - --h2-color: var(--print-h2-color, #8d26ac); - --h3-color: var(--print-h3-color, #9642af); - --h4-color: var(--print-h4-color, #d496f8); - --h5-color: var(--print-h5-color, #a192f7); - --h6-color: var(--print-h6-color, #c675f5); - - /*graph*/ - --graph-tag: #b992ddbb; - --graph-attach: #76c1f0bb; - --graph-circle: #8f70a1bb; - --graph-line: #8c8c8c; - --graph-unresolved: #c3afdade; - - /*mermaid*/ - --mermaid-active-task-color: #187ef1; - --mermaid-seq-dia-color: #1371be; - - /*table*/ - --table-background-color: #58266e; - --table-background-color-odd: #0000001c; - --table-border-color: #ac9494; - --table-thead-background-color: #4332ddc2; - --table-hover-raw-color: #08569a21; - --table-hover-color: #4125a5a1; - --table-hover-thead-color: #5f298cc7; - - /*calendar*/ - --calendar-week-color: #c194df; - --calendar-week-hover: #705c81; - --calendar-week-background-color: #683270; - --calendar-today-background-color: #e01313; - - /*day planner 改为相应色系*/ - --day-planner-pie: #eca95c; - --day-planner-timeline: #9231b8; - --day-planner-line: #8b36b3; - --day-planner-dot: #8b36b3; - --day-planner-item-hover: #8b36b3; - --event-item-color1: #c79cdb; - --event-item-color2: #b67fd1; - --event-item-color4: #9646bc; - --event-item-color3: #a662c6; - --event-item-color5: #8b3fae; - --event-item-color6: #7f3aa0; - --event-item-color7: #683083; - --event-item-color8: #592672; - --event-item-color9: #371945; - --event-item-color10:#351544; - - /* stickies */ - --stickies-color-1: #683083; - --stickies-color-2: #823a92; - --tape-color: #99999967; - - /*Sliding panes*/ - --sliding-panes-header-color: var(--h2-color); - --background-4-sliding-pane: #252525ed; - - --color-view-header-gradient-1: #330c46de; - --color-view-header-gradient-2: #002900c0; - - /*checkbox*/ - --checkbox-color-0: var(--text-accent); - --checkbox-color-1: #dbd821; - --checkbox-color-2: #1061ac; - --checkbox-color-3: #ffd1d1; - --checkbox-color-4: #625d4c; - --checkbox-color-5: #9a67ae; - --checkbox-color-6: #5f5f5f; - --text-checked-checkbox: #b9b8b8; - - --interactive-hover: #dbdbdc; - - --table-color-calendar-2: rgb(98, 36, 143); - --table-color-rgb: 98, 36, 143; - - --tab-stacked-shadow: #240a2e; -} - -/*分割工作区的线透明*/ -body.color-scheme-options-lilac .workspace-split.mod-left-split>.workspace-leaf-resize-handle, -body.color-scheme-options-lilac .workspace-split.mod-right-split>.workspace-leaf-resize-handle { - width: 2px; - background-color: transparent; -} - -/* scrollbar 滚动条颜色*/ -body.color-scheme-options-lilac.theme-light ::-webkit-scrollbar-thumb { - background-color: #cbb5e9; -} -body.color-scheme-options-lilac.theme-dark ::-webkit-scrollbar-thumb { - background-color: #683083; -} - -/*stickies*/ -body.color-scheme-options-lilac .stickies { - color: var(--text-normal); -} - -body.color-scheme-options-lilac div .CodeMirror-line span.cm-hashtag-begin + span.cm-hashtag.cm-meta.cm-hashtag-end { - background-color: transparent; - border: 1px solid var(--text-normal); - color: var(--tag-text); - border-radius: var(--radius-l); - padding-right: 0.4375em; - padding-left: 0.4375em; -} - -body.color-scheme-options-lilac *:not(font) > em > strong, -body.color-scheme-options-lilac *:not(font) > strong > em, -body.color-scheme-options-lilac .cm-strong.cm-em { - background-image: initial; - background-clip: initial; - -webkit-background-clip: initial; - -webkit-text-fill-color: initial; - background-color: initial; -} - -body.color-scheme-options-lilac.theme-dark #calendar-container { - --theme-color-translucent-3: #553b75; -} - -body.color-scheme-options-lilac.theme-light #calendar-container { - --theme-color-translucent-3: #dccaffb0; -} -/*======@awyugan--end========*/ - - -/*======@cuman--start========*/ -/*modified from https://github.com/hydescarf/Obsidian-Theme-Mado-Miniflow*/ -:root { - --simple-white-1:hsla(204, 45%, 97%, 1); - --simple-white-2:hsla(210, 45%, 95%, 1); - --simple-white-3:hsla(212, 17%, 80%, 0.2); - --simple-white-4:hsla(180, 33%, 99%, 1); - --simple-white-5:hsla(207, 10%, 90%, 0.1); - --simple-white-6:hsla(212, 17%, 80%, 0.3); - - --simple-blue-1:hsla(209, 95%, 62%, 1); - --simple-blue-2:hsla(209, 85%, 72%, 0.5); - --simple-blue-3: hsla(245, 60%, 67%, 1); - --simple-blue-4:hsla(209, 20%, 66%, 0.62); - - --simple-black-1:hsla(0, 0%, 13%, 1); - --simple-black-2:hsla(220, 20%, 35%, 1); - --simple-gray-1:hsla(0, 0%, 33%, 1); - --simple-gray-2:hsla(210, 15%, 70%, 0.2); - --simple-gray-3:hsla(210, 15%, 20%, 0.2); - --simple-gray-4:hsla(210, 6%, 38%, 0.5); - --simple-gray-5:hsla(207, 17%, 90%, 1); - --simple-gray-6:hsla(217, 15%, 83%, 1); - --simple-gray-7:hsla(217, 15%, 83%, 0.7); - --simple-tran:hsla(204, 45%, 97%, 0); - --simple-yellow:hsla(60, 100%, 50%, 0.4); - --simple-orange:hsla(25, 75%, 65%, 1); - --simple-red-1:hsla(365, 90%, 62%, 1); - --simple-red-2:hsl(365, 95%, 85%, 1); - --simple-red-3:hsl(365, 85%, 45%, 1); - --button-radius:4px; - --window-radius:8px; -} - -body.color-scheme-options-simplicity-topaz .theme-light, -body.color-scheme-options-simplicity-topaz.theme-light { - --h1-color: var(--print-h1-color,var(--text-normal)); - --h2-color: var(--print-h2-color,var(--text-normal)); - --h3-color: var(--print-h3-color,var(--text-normal)); - --h4-color: var(--print-h4-color,var(--text-normal)); - --h5-color: var(--print-h5-color,var(--text-normal)); - --h6-color: var(--print-h6-color,var(--text-normal)); - --background-accent: var(--simple-white-1); - --background-modifier-border: var(--simple-gray-5); - --background-modifier-form-field: var(--simple-white-1); - --background-modifier-form-field-highlighted: var(--simple-white-1); - --background-modifier-box-shadow: rgba(0, 0, 0, 0.05); - - --text-normal: var(--simple-black-1); - --text-muted: hsla(218, 19%, 39%, 1); - - --text-faint: hsla(218, 19%, 39%, 1); - - --accent-em: var(--simple-gray-4); - --text-error: var(--simple-red-1); - - --text-selection: var(--simple-gray-7); - - --interactive-normal: var(--simple-white-2); - --interactive-hover: var(--simple-white-4); - --accent-h: 220; - --accent-s: 20%; - --accent-l: 35%; - --interactive-accent-rgb: 70, 142, 235; - - --panel-border-color: var(--simple-white-4); - - --background-primary-bg-4-bt: var(--simple-white-2); - --background-primary-alt-bg-4-bt: var(--simple-tran); - --background-secondary-bg-4-bt: var(--simple-tran); - --background-secondary-alt-bg-4-bt: var(--simple-tran); - --background-primary-alt:var(--simple-white-2); - - --background-mobile-drawer-1: var(--simple-white-1); - --background-mobile-drawer-2: var(--simple-white-1); - --background-modifier-border-hr: var(--simple-gray-5); - --background-secondary-alt-bg-4-bt-publish: var(--simple-gray-5); - - --scrollbar-thumb-bg: var(--simple-gray-5); - - --color-black: var(--simple-black-1); - --color-dark-gray: var(--simple-gray-1); - --color-accent: var(--simple-blue-1); - --color-accent-alt: var(--simple-blue-2); - --color-accent-dark: var(--simple-blue-3); - --color-gray: var(--simple-gray-2); - --color-light-gray: var(--simple-gray-3); - --color-medium-gray: var(--simple-gray-4); - - --modal-group-border: var(--simple-gray-6); - --button-selected: var(--simple-white-6); - --button-hover: var(--simple-white-6); - --button-selected-hover: var(--simple-white-3); - - --window-shadow: 0 1px 3px var(--simple-white-3); - --window-shadow2: 0 0 9px var(--simple-gray-7); - --window-shadow-hover: 0 3px 5px var(--simple-white-6); - --window-shadow-transparent:0 3px 5px transparent; - - --border:1px solid var(--simple-gray-5); - - --background-primary: var(--simple-white-1); - - --background-secondary-alt: var(--simple-white-2); - - --background-tertiary: var(--simple-white-3); - - --background-accent: var(--simple-blue-1); - --background-fourth: var(--simple-white-4); - --background-fifth: var(--simple-white-5); - --background-sixth: var(--simple-white-4); - - --text-color-code: var(--simple-orange); - --text-normal: var(--simple-black-1); - --text-error: var(--simple-red-1); - - --text-faint: var(--simple-gray-1); - --text-highlight-bg: var(--simple-yellow); - --accent-strong: var(--simple-black-2); - --accent-em: var(--simple-gray-4); - --text-muted: hsla(218, 19%, 39%, 1); - - --background-modifier-error: var(--simple-red-1); - --background-modifier-border: var(--simple-gray-5); - --custom-titlebar-bg: var(--background-secondary); - --background-code-2: var(--simple-tran); - --scrollbar-bg: transparent; - --background-transparent-black-or-white-1: var(--simple-white-2) !important; - --background-transparent-black-or-white-2: var(--bg-color-settings-1) !important; - --background-transparent-black-or-white-3: var(--bg-color-settings-1) !important; - --tab-background-active: #ffffff; - --theme-color-translucent-01: hsla(254,80%,68%,0.1); -} - - -body.color-scheme-options-simplicity-topaz.theme-dark { - /* dark mode quick hack */ - --simple-white-1:hsla(215, 17%, 10%, 1); - --simple-white-2:hsla(214, 24%, 15%, 1); - --simple-white-3:hsla(212, 17%, 22%, 0.9); - --simple-white-6:hsla(212, 17%, 0%, 0.3); - --simple-white-4:hsla(215, 22%, 13%, 1); - --simple-white-5:hsla(207, 10%, 10%, 0.1); - --simple-tran:hsla(207, 10%, 10%, 0); - --simple-black-1:hsla(0, 0%, 73%, 1); - --simple-black-2:hsla(213, 33%, 65%, 1); - --simple-gray-1:hsla(0, 0%, 83%, 1); - --simple-gray-2:hsla(210, 25%, 5%, 0.3); - --simple-gray-3:hsla(210, 15%, 50%, 0.4); - --simple-gray-4:hsla(210, 15%, 70%, 0.5); - --simple-gray-5:hsla(207, 17%, 10%, 0.5); - --simple-gray-6:hsla(217, 28%, 90%, 0.9); - --simple-gray-7:hsla(217, 18%, 50%, 0.9); - - --simple-yellow:hsla(45, 63%, 43%, 1); - --simple-blue-3:hsla(245, 60%, 67%, 1); - - --custom-titlebar-bg:var(--background-modifier-cover); - - --color-black: var(--simple-black-1); - --color-dark-gray: var(--simple-gray-1); - --color-accent: var(--simple-blue-1); - --color-accent-alt: var(--simple-blue-2); - --color-accent-dark: var(--simple-blue-3); - --color-gray: var(--simple-gray-2); - --color-light-gray: var(--simple-gray-3); - --color-medium-gray: var(--simple-gray-4); - - --modal-group-border: var(--simple-gray-6); - --button-selected: var(--simple-white-6); - --button-hover: var(--simple-white-6); - --button-selected-hover: var(--simple-white-3); - - --window-shadow: 0 1px 3px var(--simple-white-5); - --window-shadow2: 0 0 9px var(--simple-white-6); - --window-shadow-hover: 0 3px 5px var(--simple-white-6); - --window-shadow-transparent: 0 3px 5px transparent; - - --border:1px solid var(--simple-gray-5); - - --background-primary: var(--simple-white-2); - - --tab-outline-color: var(--simple-white-2); - --divider-color: var(--simple-gray-5); - --background-secondary-alt: var(--simple-white-2); - --background-tertiary: var(--simple-white-3); - --background-primary-alt: var(--simple-white-6); - --background-secondary-bg-4-bt: var(--simple-tran) ; - - --background-accent: var(--simple-blue-1); - --background-fourth: var(--simple-white-3); - --background-fifth: var(--simple-white-5); - --background-sixth: var(--simple-white-5); - - --text-color-code:var(--simple-orang-1); - --text-normal: var(--simple-black-1); - --text-error: var(--simple-red-1); - - --text-faint: var(--simple-gray-6); - --text-highlight-bg:var(--simple-yellow); - --text-bold: var(--simple-black-2); - --text-em: var(--simple-gray-6); - --text-muted: hsl(218, 17%, 58%); - - --background-modifier-error: var(--simple-red-1); - --background-modifier-border: var(--simple-gray-5); - --accent-h: 209; - --accent-s: 60%; - --accent-l: 55%; - --indentation-guide: var(--simple-gray-3); - --search-result-background:var(--simple-gray-2); - --scrollbar-bg: transparent; - -} - -body.color-scheme-options-simplicity-topaz:not(.background-settings-workplace-background-image) { - --background-secondary: var(--simple-white-2); -} - -body.theme-dark.color-scheme-options-simplicity-topaz .workspace-tab-header.is-active { - --tab-background-active: var(--background-primary); - --tab-outline-width: var(--simple-gray-5); -} - -body.theme-dark.color-scheme-options-simplicity-topaz .workspace-split.mod-root .workspace-tab-header.is-active.mod-active { - background-color: var(--tab-background-active); -} - - -body.color-scheme-options-simplicity-topaz.background-image-settings-switch.background-image-settings-markdown-page-transparent { - --background-secondary: var(--simple-tran); - --background-primary: var(--simple-tran); - --background-secondary-bg-4-bt: var(--simple-tran); - --tab-outline-color: var(--background-secondary); -} - -/* ---------------------------- - Title Bar ---------------------------- -*/ - -@media screen and (max-width:960px) { - body.color-scheme-options-simplicity-topaz .view-header .view-actions .view-action{ - opacity: 1 !important; - } - body.color-scheme-options-simplicity-topaz .workspace>.workspace-split.mod-vertical{ - padding: 0; - } -} - -body.is-mobile.color-scheme-options-simplicity-topaz .workspace>.workspace-split.mod-vertical{ - padding: 0; -} -.view-header .view-actions .view-action -{ - z-index: 1; -} -body.color-scheme-options-simplicity-topaz .view-header .view-actions .view-action, -body.color-scheme-options-simplicity-topaz .titlebar-button-container.mod-right{ - opacity: 0; - z-index: 1; - transition: all 0.6s linear; -} -body.color-scheme-options-simplicity-topaz .view-header:hover .view-actions .view-action, -body.color-scheme-options-simplicity-topaz .titlebar-button-container.mod-left:hover, -body.color-scheme-options-simplicity-topaz .titlebar-button-container.mod-right:hover { - opacity: 0.8; - transition: all 0.6s linear; -} - -body.color-scheme-options-simplicity-topaz .nav-action-button.is-active { - background-color: var(--simple-blue-2); -} -body.color-scheme-options-simplicity-topaz .checkbox-container.is-enabled { - background-color: var(--interactive-accent-hover); -} - -body.theme-light.color-scheme-options-simplicity-topaz .workspace-split.mod-root .workspace-tab-header.is-active.mod-active { - border-radius: 6px; - border-color: var(--background-modifier-border); - border-style: solid; - border-width: 0px; -} - -body.color-scheme-options-simplicity-topaz.theme-dark:not(.background-settings-workplace-background-image) .workspace-split.mod-root .workspace-tab-header.is-active.mod-active { - background-color: var(--simple-white-4); -} - -/* Hide dock's tab menu, and show them when hovered */ -body.color-scheme-options-simplicity-topaz .workspace-tab-header-container { - /* z-index: 1; */ - /* height:1px; */ - transition: opacity 0.1s; - /* border-radius: var(--button-radius); */ - box-shadow: none; - width: 100%; - border-bottom: var(--tab-outline-width) transparent; -} -body.color-scheme-options-simplicity-topaz .modal, -body.color-scheme-options-simplicity-topaz .modal-container .prompt { - animation: 0.2s popup forwards; - border-radius: 20px; - box-shadow: var(--window-shadow2); -} - -body.color-scheme-options-simplicity-topaz.setting-default-frosted-glass.theme-dark .modal-bg { - background-color: var(--bg-color-settings-3); - backdrop-filter: blur(5px); -} - -body.color-scheme-options-simplicity-topaz.background-image-settings-command-palette-switch .modal-container .prompt::before { - border-radius: 20px; - box-shadow: var(--window-shadow2); -} - -body.color-scheme-options-simplicity-topaz.background-image-settings-command-palette-switch .modal-container .community-plugin-search { - border-bottom-left-radius: 20px; -} - -body.color-scheme-options-simplicity-topaz.background-image-settings-command-palette-switch .modal-container .community-plugin-search { - border-bottom-left-radius: 20px; -} - -body.color-scheme-options-simplicity-topaz [class="menu"] { - animation: 0.2s popup forwards; - border-radius: 10px; - box-shadow: var(--window-shadow2); -} -@keyframes popup { - 0% { transform:scale(70%); opacity:0; } - 15% { transform:scale(80%); opacity:0.1; } - 35% { transform:scale(102%); } - 45% { opacity:0.3; } - 65% { opacity:0.7; } - 100% { transform:scale(100%); opacity:1; } -} -/* Left dock navigation (new note, new folder, reorder) */ - -body.color-scheme-options-simplicity-topaz:not(.disable-auto-hide-header) .workspace-tab-header-container:hover + .workspace-tab-container .workspace-leaf .workspace-leaf-content>.nav-header { - margin-top: 0; - transition: all 0.1s linear; -} - -body.color-scheme-options-simplicity-topaz:not(.disable-auto-hide-header) .workspace-tab-header-container + .workspace-tab-container .workspace-leaf .workspace-leaf-content>.nav-header:hover { - margin-top: 0; - transition: all 0.6s linear; -} -body.color-scheme-options-simplicity-topaz:not(.disable-auto-hide-header) .workspace-tab-header-container + .workspace-tab-container .workspace-leaf .workspace-leaf-content>.nav-header { - margin-top: -30px; - transition: all 0.6s linear; -} - - -body.color-scheme-options-simplicity-topaz:not(.disable-auto-hide-header) .workspace-tab-header-container + .workspace-tab-container .workspace-leaf .workspace-leaf-content[data-type="file-tree-view"] -.view-content .file-tree-header-fixed { - position: relative; - margin-top: -30px; - transition: all 0.6s linear; -} -body.color-scheme-options-simplicity-topaz:not(.disable-auto-hide-header) .workspace-tab-header-container:hover + .workspace-tab-container .workspace-leaf .workspace-leaf-content[data-type="file-tree-view"] .view-content .file-tree-header-fixed { - margin-top: 0; - transition: all 0.3s linear; -} -body.color-scheme-options-simplicity-topaz:not(.disable-auto-hide-header) .workspace-tab-header-container + .workspace-tab-container .workspace-leaf .workspace-leaf-content[data-type="file-tree-view"] .view-content .file-tree-header-fixed:hover{ - margin-top: 0; -} - -body.color-scheme-options-simplicity-topaz .oz-folders-tree-wrapper .oz-folder-contents { - border-left: 1px solid var(--background-modifier-border); -} -body.color-scheme-options-simplicity-topaz .oz-flex-container { - justify-content: start; -} -body.color-scheme-options-simplicity-topaz .oz-nav-action-button { - color: var(--text-faint); - opacity: 0.3; -} - -/* Remove style for border-on-active */ -body.color-scheme-options-simplicity-topaz .workspace-tabs .workspace-leaf, -body.color-scheme-options-simplicity-topaz .workspace-tabs .workspace-leaf.mod-active{ - border: none; -} - -body.color-scheme-options-simplicity-topaz .horizontal-main-container { - overflow: visible; -} -body.color-scheme-options-simplicity-topaz .workspace { - overflow: visible; -} - -/* ---------------------------- - Note Title ---------------------------- -*/ - -body.color-scheme-options-simplicity-topaz .workspace-split.mod-root > .workspace-leaf:first-of-type:last-of-type .view-header, -body.color-scheme-options-simplicity-topaz .workspace-split.mod-horizontal > .workspace-leaf .view-header, -body.color-scheme-options-simplicity-topaz .workspace-split.mod-vertical > .workspace-leaf .view-header { - display: flex; - align-items: center; - border: none; - background: var(--simple-white-2); -} - -body.theme-dark.color-scheme-options-simplicity-topaz .workspace-split.mod-root > .workspace-leaf:first-of-type:last-of-type .view-header, -body.theme-dark.color-scheme-options-simplicity-topaz .workspace-split.mod-horizontal > .workspace-leaf .view-header, -body.theme-dark.color-scheme-options-simplicity-topaz .workspace-split.mod-vertical > .workspace-leaf .view-header { - background-color: transparent; -} - -body.color-scheme-options-simplicity-topaz .view-header-title { - font-size: 1rem; - border-radius: var(--button-radius); - margin-left: 0; - border: 1px solid transparent; - transition:border 0.2s, background 0.2s; -} - -body.color-scheme-options-simplicity-topaz .view-header-title:hover, -body.color-scheme-options-simplicity-topaz .view-header-title:focus { - background: var(--background-fourth); -} - -body.color-scheme-options-simplicity-topaz .view-action, -body.color-scheme-options-simplicity-topaz .view-header-icon{ - display: flex; - padding: 4px; - margin: 0 3px; - color: var(--color-dark-gray); - border-radius: var(--button-radius); - transition: 0.1s background, 0.1s opacity; - top: 0; -} - -body.color-scheme-options-simplicity-topaz .view-action:hover,.view-header-icon:hover{ - background: var(--button-hover); - color: var(--color-dark-gray); -} - -body.color-scheme-options-simplicity-topaz .view-action:active,.view-header-icon:active { - opacity: 0.75; -} - -body.color-scheme-options-simplicity-topaz .workspace-split.mod-horizontal > * > .workspace-leaf-resize-handle { - background: none; - height: 7px; - border: none; - background-color: transparent; -} - -body.color-scheme-options-simplicity-topaz .workspace-split.mod-vertical > * > .workspace-leaf-resize-handle, -body.color-scheme-options-simplicity-topaz .workspace-split.mod-left-split > .workspace-leaf-resize-handle, -body.color-scheme-options-simplicity-topaz .workspace-split.mod-right-split > .workspace-leaf-resize-handle{ - background: none; - background-color: transparent; - width: 3px; - border: none; -} -body.color-scheme-options-simplicity-topaz .workspace-split .workspace-leaf-resize-handle:hover{ - background: var(--simple-gray-2); -} - -body:not(.is-mobile).color-scheme-options-simplicity-topaz:not(.background-image-settings-switch) .workspace-split.mod-root .view-content, -body:not(.is-mobile).color-scheme-options-simplicity-topaz:not(.background-settings-workplace-background-image) .workspace-split.mod-root .view-content { - background-color: var(--background-primary); -} - -body:not(.is-mobile).color-scheme-options-simplicity-topaz .workspace-fake-target-overlay:not(.is-in-sidebar) .workspace-tabs .workspace-leaf, -body:not(.is-mobile).color-scheme-options-simplicity-topaz .mod-root .workspace-tabs .workspace-leaf, -body:not(.is-mobile).color-scheme-options-simplicity-topaz .mod-root .workspace-tabs .workspace-tab-header-container { - background-color: transparent; -} - - -body:not(.is-mobile).color-scheme-options-simplicity-topaz.background-settings-workplace-background-image .workspace-split.mod-root -{ - background-color: var(--simple-tran); -} -body.color-scheme-options-simplicity-topaz .workspace-split.mod-root -{ - background-color: var(--simple-white-2); -} -body.color-scheme-options-simplicity-topaz.background-settings-workplace-background-image .workspace-tabs, -body.theme-dark.color-scheme-options-simplicity-topaz.background-settings-workplace-background-image .workspace-ribbon.side-dock-ribbon.mod-left, -body.color-scheme-options-simplicity-topaz.background-settings-workplace-background-image div.workspace-ribbon.mod-left:before -{ - background-color: var(--background-secondary-bg-4-bt); -} - -body.color-scheme-options-simplicity-topaz.background-image-settings-switch.background-image-settings-markdown-page-transparent .workspace .mod-root .workspace-tabs.mod-stacked .workspace-tab-container .workspace-tab-header { - background-color:var(--simple-white-5); -} -body.color-scheme-options-simplicity-topaz .workspace .mod-root .workspace-tabs.mod-stacked .workspace-tab-container .workspace-tab-header.is-active { - box-shadow: var(--window-shadow-hover); -} -body.color-scheme-options-simplicity-topaz .workspace .mod-root .workspace-tabs.mod-stacked .workspace-tab-container .workspace-tab-header { - border-radius: 15px; - box-shadow: none; -} - -body.color-scheme-options-simplicity-topaz .workspace .mod-root .workspace-tabs.mod-stacked .workspace-tab-container .workspace-tab-header-inner { - border-radius: 15px; -} - -/* ---------------------------- - Main Pane Border Styling ---------------------------- -*/ -body.color-scheme-options-simplicity-topaz .workspace-split.mod-horizonta.mod-left-split.is-collapsed+.workspace-split.mod-root > .workspace-leaf:first-of-type .workspace-leaf-content{ - border-top-left-radius: 0px; -} - -body:not(.is-mobile).color-scheme-options-simplicity-topaz .workspace-split.mod-vertical.mod-root .workspace-leaf{ - border-radius: 15px; -} - -body.color-scheme-options-simplicity-topaz.theme-dark .view-content { - border-bottom-right-radius: 20px; - border-bottom-left-radius: 20px; -} -body.color-scheme-options-simplicity-topaz .workspace-split.mod-vertical.mod-root .workspace-split.mod-vertical:not(:first-child):last-child .workspace-leaf{ - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} - -body.color-scheme-options-simplicity-topaz .workspace-split.mod-vertical.mod-root, -body.color-scheme-options-simplicity-topaz .workspace-split.mod-vertical.mod-root .workspace-split{ - display: flex; - gap: 18px; -} -body.color-scheme-options-simplicity-topaz .workspace>.workspace-split.mod-vertical{ - padding: 0px 3px 0; -} - -body.is-popout-window.color-scheme-options-simplicity-topaz .workspace>.workspace-split.mod-vertical{ - padding: 0; -} - - -body.theme-light.color-scheme-options-simplicity-topaz .workspace-split.mod-vertical.mod-root .workspace-leaf{ - box-shadow: var(--window-shadow); - height: 100%; -} -body.color-scheme-options-simplicity-topaz .workspace-split.mod-vertical > .workspace-leaf{ - padding: 0; -} -body.color-scheme-options-simplicity-topaz .workspace-split.mod-root > .workspace-leaf:last-of-type .workspace-leaf-content{ - border-top-right-radius: 0; -} - -/* Remove sttles on button-on-active, but not during right-click-menu as that is alright */ -body.color-scheme-options-simplicity-topaz .nav-folder-title, -body.color-scheme-options-simplicity-topaz .nav-file{ - border: none; -} -body.color-scheme-options-simplicity-topaz .workspace-leaf.mod-active .nav-folder.has-focus > .nav-folder-title, -body.color-scheme-options-simplicity-topaz .workspace-leaf.mod-active .nav-file.has-focus{ - border-radius: none; - border: none; - background-color: none; -} - -body.theme-light.color-scheme-options-simplicity-topaz .workspace-split.mod-horizontal > .workspace-leaf.mod-active .view-header, -body.theme-light.color-scheme-options-simplicity-topaz .workspace-split.mod-vertical > .workspace-leaf.mod-active .view-header { - background:var(--simple-white-1); -} -body.theme-dark.color-scheme-options-simplicity-topaz .workspace-split.mod-horizontal > .workspace-leaf.mod-active .view-header .view-header-title, -body.theme-dark.color-scheme-options-simplicity-topaz .workspace-split.mod-vertical > .workspace-leaf.mod-active .view-header .view-header-title{ - color:var(--simple-black-2); - text-shadow: 0px 0px 0px rgba(145, 237, 232, 1); -} - -body.color-scheme-options-simplicity-topaz .workspace-tab-header:not(.is-active ) .workspace-tab-header-inner-icon { - color: var(--text-faint); - opacity: 0.3; -} - - - -body.color-scheme-options-simplicity-topaz .markdown-source-view.mod-cm6 .cm-underline, -body.color-scheme-options-simplicity-topaz a, -body.color-scheme-options-simplicity-topaz :is(.markdown-preview-view,.markdown-rendered) .internal-link { - font-weight: 600; -} - -body.color-scheme-options-simplicity-topaz .nav-folder-children, -body.color-scheme-options-simplicity-topaz -.item-list{ - padding-left: 0.5em; - display: flex; - flex-direction: column; -} -body.color-scheme-options-simplicity-topaz .nav-folder{ -padding-bottom: 2px; -} - -body.color-scheme-options-simplicity-topaz .nav-folder-title{ - font-weight: 500; -} - -body.color-scheme-options-simplicity-topaz :is(h3,h4,h5,h6), -body.color-scheme-options-simplicity-topaz .cm-s-obsidian :is(.cm-header-3,.cm-header-4,.cm-header-5,.cm-header.cm-header-6) { - font-weight: 500; -} - -body.color-scheme-options-simplicity-topaz.background-settings-workplace-background-image:is(.background-settings-workplace-waves2-light,.background-settings-workplace-waves-light).theme-light{ - --background-secondary-bg-4-bt: var(--simple-tran); -} -body.color-scheme-options-simplicity-topaz.background-settings-workplace-background-image.theme-dark { - --background-primary-alt-bg-4-bt: var(--simple-tran); - --background-secondary-bg-4-bt: var(--simple-tran); - --background-secondary-alt-bg-4-bt: var(--simple-tran); - --background-primary: var(--simple-gray-2); -} - - -body.color-scheme-options-simplicity-topaz.is-frameless.background-settings-workplace-background-image .workspace-tab-header.is-active { - box-shadow: none; -} - -body.color-scheme-options-simplicity-topaz .workspace-leaf-content .view-header .view-header-icon { - margin-left: -10px; - opacity: 0; - width: 18px; -} -body.color-scheme-options-simplicity-topaz .workspace-leaf-content .view-header .view-header-icon:hover { - opacity: 1; -} - -body.color-scheme-options-simplicity-topaz:not(.view-button-front) .workspace-leaf-content .view-header .view-header-nav-buttons { - margin-left: -15px; -} - -body.default-tab.theme-light.color-scheme-options-simplicity-topaz .workspace-split.mod-root .workspace-tab-header.is-active { - background-image: linear-gradient(to right, var(--background-secondary), var(--simple-white-2)); -} -body.default-tab.color-scheme-options-simplicity-topaz:not(.background-settings-workplace-background-image,.background-image-settings-switch.background-image-settings-markdown-page-transparent) -.workspace-split.mod-root .workspace-tab-header.is-active { - background:var(--background-primary); - --tab-background-active:var(--background-primary); -} - -body.default-tab.background-image-settings-switch.background-image-settings-markdown-page-transparent -.workspace-split.mod-root .workspace-tab-header.is-active { - background:transparent; - --tab-background-active:transparent; -} - - - -body.color-scheme-options-simplicity-topaz .workspace-leaf-content .view-header .view-header-icon svg { - opacity: 0; -} -body.color-scheme-options-simplicity-topaz .workspace-tab-container-before.is-before-active, -body.color-scheme-options-simplicity-topaz .workspace-tab-container-after.is-after-active, -.workspace-tab-header.is-before-active, -body.color-scheme-options-simplicity-topaz .workspace-tab-header.is-after-active, -body.color-scheme-options-simplicity-topaz .workspace-split.mod-right-split .workspace-tabs .workspace-leaf, -body.color-scheme-options-simplicity-topaz .workspace-split.mod-left-split .workspace-tabs .workspace-leaf, -body.color-scheme-options-simplicity-topaz .workspace-tabs .workspace-tab-header-container { - background-color: var(--background-secondary-alt); -} -body.color-scheme-options-simplicity-topaz.background-settings-workplace-background-image .workspace-tabs .workspace-tab-header-container { - background-color: transparent; -} - -body.is-mobile.color-scheme-options-simplicity-topaz .workspace-tabs .workspace-tab-header-container { - background-color: var(--background-secondary); -} - -body.color-scheme-options-simplicity-topaz.background-settings-workplace-background-image .mod-root .workspace-tabs:not(.mod-top) .workspace-tab-header-container-inner { - padding-bottom:1px; -} - -/*==============*/ -/*==============*/ -/*======@cuman--end========*/ - -body.font-family-change-to-default .markdown-source-view, -body.font-family-change-to-default :is(.markdown-preview-view,.markdown-rendered), -body.font-family-change-to-default .markdown-source-view.mod-cm6 .cm-scroller, -body.font-family-change-to-default :is(.markdown-preview-view,.markdown-rendered) h5, -body.font-family-change-to-default :is(.markdown-preview-view,.markdown-rendered) h6, -body.font-family-change-to-default .nav-file-title, -body.font-family-change-to-default .nav-folder-title, -body.font-family-change-to-default a.tag, -body.font-family-change-to-default .cm-s-obsidian span.cm-hashtag, -body.font-family-change-to-default .nav-folder.mod-root>.nav-folder-title, -body.font-family-change-to-default pre.frontmatter.language-yaml::before, -body.font-family-change-to-default span.cm-strong, -body.font-family-change-to-default :not(font)>strong, -body.font-family-change-to-default a, -body.font-family-change-to-default :is(.markdown-preview-view,.markdown-rendered) .internal-link, -body.font-family-change-to-default :is(.markdown-preview-view,.markdown-rendered) th, -body.font-family-change-to-default *:not(font)>em>strong, -body.font-family-change-to-default *:not(font)>strong>em, -body.font-family-change-to-default .cm-strong.cm-em { - font-family: var(--font-default) !important; -} - -body.font-family-change-to-default .cm-s-obsidian .cm-hmd-frontmatter, -body.font-family-change-to-default .markdown-rendered code, -body.font-family-change-to-default :is(.markdown-preview-view,.markdown-rendered) code{ - font-family: var(--font-monospace); -} - -body.reduce-bottom-padding .workspace-leaf-content[data-type="markdown"] :is(.markdown-preview-view,.markdown-rendered) .markdown-preview-sizer, -body.reduce-bottom-padding:not(.plugin-cm-typewriter-scroll) .cm-s-obsidian .cm-content { - padding-bottom: var(--bottom-padding-value) !important; -} - - -/*===============================*/ -/*=============YAML==============*/ -/*===============================*/ - -input[type='text'].metadata-property-key-input { - background:transparent; -} - - -/* cssclass: inline-list */ -/* can change list from block to inline; can be used with inline images */ -.inline-list ul, -.inline-list ol { - display: inline-block; - margin-top: 0.3em; -} - -/* cssclass: code-wrap */ -/* as implied by the name, to wrap texts for code boxes */ -.code-wrap pre>code>span { - word-wrap: break-word; - word-break: break-all; - white-space: pre-wrap; -} -.code-wrap code.language-yaml.is-loaded { - word-wrap: break-word !important; - word-break: break-word !important; - white-space: pre-wrap !important; -} -.code-wrap code.language-md.is-loaded { - word-wrap: break-word !important; - word-break: break-word !important; - white-space: break-spaces !important; -} - -/* cssclass: image-grid */ -/* image-grid-2 */ -/* adapted from https://github.com/iEchoxu/obsidian_orange/blob/main/.obsidian/snippets/image-grid.css */ - -.img-grid :is(.markdown-preview-section,.markdown-rendered)>div>p>.image-embed[alt*="."]:last-child { - padding-right: 0; -} -.img-grid :is(.markdown-preview-section,.markdown-rendered)>div>p>.image-embed[alt*="."]:first-child { - padding-left: 0; -} -.img-grid :is(.markdown-preview-section,.markdown-rendered)>div hr { - width: 100%; -} -.img-grid span.image-embed[alt*="."] { - display: table-cell; -} -.img-grid img[alt*="."] { - max-height: 100vh; - object-fit: cover; -} - -.img-grid .markdown-preview-section .el-embed-image img:not([width]),.img-grid .markdown-preview-section video{ - width:100% -} -.img-grid .markdown-preview-section>.el-embed-image>p{ - display:grid; - grid-column-gap:0.5rem; - grid-row-gap:0; - grid-template-columns:repeat(auto-fit,minmax(0,1fr)) -} -.img-grid .markdown-preview-section>.el-embed-image>p>br{ - display:none -} -.img-grid .markdown-preview-section>.el-embed-image>p>img{ - object-fit:cover; - align-self:stretch -} -.img-grid .markdown-preview-section>.el-embed-image>p>.internal-embed img{ - object-fit:cover; - height:100% -} - -.img-grid-ratio .markdown-preview-section>.el-embed-image>p>.internal-embed img -,.img-grid.img-grid-ratio .markdown-preview-section>.el-embed-image>p>.internal-embed img{ - object-fit:contain; - height:100%; - align-self:center -} -@media (max-width:400pt){ - .el-embed-image{ - margin-top:.25rem - } - .img-grid .markdown-preview-section>.el-embed-image>p{ - grid-column-gap:0.25rem - } -} - -/* cssclass: kanban */ -/* adapted from spectrum theme, thanks to @Braweria. https://github.com/Braweria/Spectrum */ -/* a kind of css-based pseudo-kanban feature */ -.kanban ul { - display: flex; - flex-direction: row; - border: 0px solid var(--p-kanban-border-color); - padding: 0rem; - border-radius: var(--radius-m); - flex-wrap: wrap; -} -.kanban ul>li .list-bullet:after { - display: none; -} - -.kanban ul>li { - flex: 1 1 20%; - padding: 0.1em 1em 0.1em 0.8em; - margin: 0 0.3em 0.3em 0 !important; - list-style: none; - border: 1px solid var(--p-kanban-border-color); - border-left: 1px solid var(--p-kanban-border-color) !important; - border-radius: var(--radius-s); - word-wrap: break-word; - word-break: break-word; -} - -.kanban ul li.task-list-item .task-list-item-checkbox { - margin-left: auto; -} - - -.kanban ul .list-collapse-indicator.collapse-indicator.collapse-icon::before { - color: var(--text-accent); - transition: transform 10ms linear 0s -} - -body.colorful-p-kanban .kanban ul>li:nth-of-type(8n+1) { - background-color: var(--p-kanban-color-1); -} -body.colorful-p-kanban .kanban ul>li:nth-of-type(8n+2) { - background-color: var(--p-kanban-color-2); -} -body.colorful-p-kanban .kanban ul>li:nth-of-type(8n+3) { - background-color: var(--p-kanban-color-3); -} -body.colorful-p-kanban .kanban ul>li:nth-of-type(8n+4) { - background-color: var(--p-kanban-color-4); -} -body.colorful-p-kanban .kanban ul>li:nth-of-type(8n+5) { - background-color: var(--p-kanban-color-5); -} -body.colorful-p-kanban .kanban ul>li:nth-of-type(8n+6) { - background-color: var(--p-kanban-color-6); -} -body.colorful-p-kanban .kanban ul>li:nth-of-type(8n+7) { - background-color: var(--p-kanban-color-7); -} -body.colorful-p-kanban .kanban ul>li:nth-of-type(8n) { - background-color: var(--p-kanban-color-8); -} -.canvas-node-container .kanban ul>li:nth-of-type(n) { - backdrop-filter:none; -} -.kanban ul>li:nth-of-type(n) { - background-color: var(--p-kanban-color-simple); - padding-left: 1em; - backdrop-filter: blur(calc(var(--blur-p-kanban-frosted-glass) * 2px)); -} -.kanban ul:first-child>li:nth-of-type(8n+1) { - border-top: 6px solid var(--p-kanban-color-1) !important; -} -.kanban ul:first-child>li:nth-of-type(8n+2) { - border-top: 6px solid var(--p-kanban-color-2) !important; -} -.kanban ul:first-child>li:nth-of-type(8n+3) { - border-top: 6px solid var(--p-kanban-color-3) !important; -} -.kanban ul:first-child>li:nth-of-type(8n+4) { - border-top: 6px solid var(--p-kanban-color-4) !important; -} -.kanban ul:first-child>li:nth-of-type(8n+5) { - border-top: 6px solid var(--p-kanban-color-5) !important; -} -.kanban ul:first-child>li:nth-of-type(8n+6) { - border-top: 6px solid var(--p-kanban-color-6) !important; -} -.kanban ul:first-child>li:nth-of-type(8n+7) { - border-top: 6px solid var(--p-kanban-color-7) !important; -} -.kanban ul:first-child>li:nth-of-type(8n) { - border-top: 6px solid var(--p-kanban-color-8) !important; -} -body.simple-p-kanban .kanban ul:first-child>li:nth-of-type(n) { - border-top: none !important; -} - -body:not(.remove-shadow-p-kanban) .kanban ul>li:hover { - transition: box-shadow .2s cubic-bezier(.4, 0, 1, 1); - box-shadow: 0 3px 5px 0 var(--p-kanban-color-shadow), 0 3px 1px -3px var(--p-kanban-color-shadow), 2px 3px 3px 0 var(--p-kanban-color-shadow); -} - -.kanban ul ul { - display: flex; - flex-direction: column; - justify-content: center; - padding: 0rem; - margin-top: 0.5rem; - border-radius: 0; - border: 0; - background: none; -} - -.kanban ul ul li:not(.task-list-item) { - width: 100%; - display: block; - background-color: var(--p-kanban-card-color-1) !important; -} - -body.remove-shadow-p-kanban .kanban ul ul li:hover { - background: var(--p-kanban-card-color-2) !important; - border-color: var(--p-kanban-border-color) !important; - border-left: 1px solid var(--p-kanban-border-color) !important; -} - -body.remove-shadow-p-kanban.theme-dark .kanban ul ul li:hover { - border-color: #696969e1 !important; - border-left: 1px solid #696969e1 !important; -} - -.kanban ul ul li .task-list-item-checkbox { - margin-left: 1.5rem !important; -} - -.kanban ul ul ul { - margin-right: 0; -} - -.kanban ul ul::before { - border-left: 0; -} - -:is(.markdown-preview-view,.markdown-rendered).is-readable-line-width.kanban .markdown-preview-sizer>div>ul { - max-width: 100%; -} - -.kanban :is(ol,ul).contains-task-list :is(ol,ul) { - position: initial; -} - -.kanban :is(ol,ul).contains-task-list :is(ol,ul)::before { - all: initial; -} - -.kanban ul > li.task-list-item { - flex: 1 1 20%; - padding: 0.1em 1em; - list-style: none; - border: 1px solid var(--p-kanban-border-color); - border-left: 1px solid var(--p-kanban-border-color) !important; - border-radius: var(--radius-s); - word-wrap: break-word; - word-break: break-word; - text-indent: 0.01em; -} - -.kanban ul ul li.task-list-item { - width: 100%; - display: block; - padding-left: 2em; - text-indent: -3em; - background-color: var(--p-kanban-card-color-1) !important; -} - -.kanban ul ul li.task-list-item .list-collapse-indicator.collapse-indicator.collapse-icon { - text-indent: -1em; -} - -body:not(.default-icons) .kanban li.task-list-item .list-collapse-indicator.collapse-indicator.collapse-icon::before { - margin-left: -0.2em; -} - -body:not(.default-icons) .kanban li.task-list-item .task-list-item.is-collapsed .list-collapse-indicator.collapse-indicator.collapse-icon::before { - transform: translateX(-0.9em) translateY(-1em) rotate(-90deg); -} - -body.colorful-p-kanban .kanban .task-list-item-checkbox { - border-color: var(--text-normal) !important; -} - -/* cssclass: colorful-highlight */ -body:not(.remove-colorful-highlight-bg) .markdown-source-view.is-live-preview *:not([class*="cm-formatting-highlight"])~*:not([class*="cm-em"])~.cm-em.cm-highlight.cm-strong, -.markdown-source-view.is-live-preview.colorful-highlight .cm-em.cm-highlight.cm-strong { - background-color: var(--bg-color-highlight-3) !important; - color: var(--color-highlight-3) !important; - -webkit-text-fill-color: unset; - font-style: normal; - font-weight: var(--font-weight-highlight-3); -} -body:not(.remove-colorful-highlight-bg) .markdown-source-view.is-live-preview *:not([class*="cm-formatting-highlight"])~*:not([class*="cm-strong"])~.cm-highlight.cm-strong, -.markdown-source-view.is-live-preview.colorful-highlight .cm-highlight.cm-strong { - background-color: var(--bg-color-highlight-2) !important; - color: var(--color-highlight-2) !important; - font-weight: var(--font-weight-highlight-2); -} -body:not(.remove-colorful-highlight-bg) .markdown-source-view.is-live-preview *:not([class*="cm-formatting-highlight"])~*:not([class*="cm-em"])~.cm-em.cm-highlight, -.markdown-source-view.is-live-preview.colorful-highlight .cm-em.cm-highlight { - background-color: var(--bg-color-highlight-1) !important; - color: var(--color-highlight-1) !important; - font-style: normal; - font-weight: var(--font-weight-highlight-1); -} -.cm-s-obsidian .cm-formatting.cm-formatting-highlight.cm-highlight~.cm-formatting.cm-highlight[class*="cm-em"]~span.cm-highlight[class*="cm-em"], -.cm-s-obsidian .cm-formatting.cm-formatting-highlight.cm-highlight~.cm-formatting.cm-highlight[class*="cm-strong"]~span.cm-highlight[class*="cm-strong"], -.cm-s-obsidian .cm-formatting.cm-formatting-highlight.cm-highlight~.cm-formatting.cm-highlight[class*="cm-em"]:not([class*="cm-formatting-highlight"]), -.cm-s-obsidian .cm-formatting.cm-formatting-highlight.cm-highlight~.cm-formatting.cm-highlight[class*="cm-strong"]:not([class*="cm-formatting-highlight"]) { - background-color: var(--text-highlight-bg) !important; -} - -/* cssclass: cloze */ -.markdown-source-view.is-live-preview.cloze .cm-highlight.cm-strikethrough:not([class*="formatting"]), -body:not(.remove-cloze-style) .markdown-source-view.is-live-preview .cm-highlight.cm-strikethrough:not([class*="formatting"]) { - background-color: var(--cloze-bg-color) !important; - color: var(--cloze-bg-color); - text-decoration: underline var(--cloze-decoration) var(--cloze-decoration-color); -} - -.markdown-source-view.is-live-preview.cloze .cm-highlight.cm-strikethrough:hover, -body:not(.remove-cloze-style) .markdown-source-view.is-live-preview .cm-highlight.cm-strikethrough:hover { - background-color: transparent !important; - color: var(--text-normal) !important; - transition: all 400ms ease-in-out; -} - - -body:not(.remove-cloze-style) .markdown-rendered mark:has(> del) { - background-color: transparent !important; -} - -body:not(.remove-cloze-style) .markdown-rendered mark:empty { - background-color: initial !important; -} - - -.markdown-source-view.is-live-preview.cloze .cm-em.cm-highlight.cm-strikethrough:not([class*="formatting"]), -body:not(.remove-cloze-style) .markdown-source-view.is-live-preview .cm-em.cm-highlight.cm-strikethrough:not([class*="formatting"]) { - color: transparent !important; - background-color: transparent !important; - padding: 0 2px; - text-decoration: underline var(--cloze-decoration-2) var(--cloze-decoration-color-2) !important; -} - - -/*========floating-toc===========*/ -div.markdown-source-view ul.floating-toc>li{ - flex:none; - background-color: transparent; - border:0px; -} -div.markdown-source-view ul.floating-toc{ - flex-wrap:unset; -} -/*=========================*/ -/*==========tags===========*/ -/*=========================*/ -/*customised colorful tags*/ -body.colorful-tag-bt .tag:not(.token):nth-child(5n+1) { - background-color: var(--tag1); -} - -body.colorful-tag-bt .tag:not(.token):nth-child(5n+2) { - background-color: var(--tag2); -} - -body.colorful-tag-bt .tag:not(.token):nth-child(5n+3) { - background-color: var(--tag3); -} - -body.colorful-tag-bt .tag:not(.token):nth-child(5n+4) { - background-color: var(--tag4); -} - -body.colorful-tag-bt .tag:not(.token):nth-child(5n) { - background-color: var(--tag5); -} - -/*rainbow tag alt*/ -body.rainbow-tag-no-filter .tag:not(.token):nth-child(5n+1) { - --tag-border-color: hsla(var(--accent-h), var(--accent-s), var(--accent-l), 20%); - background-color: var(--theme-color-translucent-01); - color: var(--theme-color); -} - -body.rainbow-tag-no-filter .tag:not(.token):nth-child(5n+2) { - --tag-border-color: hsla(calc(var(--accent-h) + 70), var(--accent-s), var(--accent-l), 20%); - background-color: hsla(calc(var(--accent-h) + 70), var(--accent-s), var(--accent-l), 10%) !important; - color: hsl(calc(var(--accent-h) + 70), var(--accent-s), var(--accent-l-alt)) !important; -} - -body.rainbow-tag-no-filter .tag:not(.token):nth-child(5n+3) { - --tag-border-color: hsla(calc(var(--accent-h) + 140), var(--accent-s), var(--accent-l), 20%); - background-color: hsla(calc(var(--accent-h) + 140), var(--accent-s), var(--accent-l), 10%) !important; - color: hsl(calc(var(--accent-h) + 140), var(--accent-s), var(--accent-l-alt)) !important; -} - -body.rainbow-tag-no-filter .tag:not(.token):nth-child(5n+4) { - --tag-border-color: hsla(calc(var(--accent-h) + 210), var(--accent-s), var(--accent-l), 20%); - background-color: hsla(calc(var(--accent-h) + 210), var(--accent-s), var(--accent-l), 10%) !important; - color: hsl(calc(var(--accent-h) + 210), var(--accent-s), var(--accent-l-alt)) !important; -} - -body.rainbow-tag-no-filter .tag:not(.token):nth-child(5n) { - --tag-border-color: hsla(calc(var(--accent-h) + 280), var(--accent-s), var(--accent-l), 20%); - background-color: hsla(calc(var(--accent-h) + 280), var(--accent-s), var(--accent-l), 10%) !important; - color: hsl(calc(var(--accent-h) + 280), var(--accent-s), var(--accent-l-alt)) !important; -} - - -body.rainbow-tag-no-filter .tag:not(.token):nth-child(5n):hover { - color: white !important; - background-color: hsl(calc(var(--accent-h) + 280), var(--accent-s), var(--accent-l)) !important; -} -body.rainbow-tag-no-filter .tag:not(.token):nth-child(5n+1):hover { - color: white !important; - background-color: hsl(var(--accent-h), var(--accent-s), var(--accent-l)) !important; -} -body.rainbow-tag-no-filter .tag:not(.token):nth-child(5n+2):hover { - color: white !important; - background-color: hsl(calc(var(--accent-h) + 70), var(--accent-s), var(--accent-l)) !important; -} -body.rainbow-tag-no-filter .tag:not(.token):nth-child(5n+3):hover { - color: white !important; - background-color: hsl(calc(var(--accent-h) + 140), var(--accent-s), var(--accent-l)) !important; -} -body.rainbow-tag-no-filter .tag:not(.token):nth-child(5n+4):hover { - color: white !important; - background-color: hsl(calc(var(--accent-h) + 210), var(--accent-s), var(--accent-l)) !important; -} - -body.rainbow-tag-no-filter .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+1), -body.rainbow-tag-no-filter .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+1)+span.cm-hashtag, -body.rainbow-tag-no-filter .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+1)+.cm-hashtag.cm-meta, -body.rainbow-tag-no-filter .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+1)+span.cm-hashtag.cm-meta+span.cm-hashtag.cm-hashtag-end { - --tag-border-color: hsla(var(--accent-h), var(--accent-s), var(--accent-l), 20%); - background-color: var(--theme-color-translucent-01) !important; - color: var(--theme-color) !important; -} - -body.rainbow-tag-no-filter .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+2), -body.rainbow-tag-no-filter .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+2)+span.cm-hashtag, -body.rainbow-tag-no-filter .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+2)+.cm-hashtag.cm-meta, -body.rainbow-tag-no-filter .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+2)+span.cm-hashtag.cm-meta+span.cm-hashtag.cm-hashtag-end { - --tag-border-color: hsla(calc(var(--accent-h) + 210), var(--accent-s), var(--accent-l), 20%); - background-color: hsla(calc(var(--accent-h) + 210), var(--accent-s), var(--accent-l), 10%) !important; - color: hsl(calc(var(--accent-h) + 210), var(--accent-s), var(--accent-l-alt)) !important; -} - -body.rainbow-tag-no-filter .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+3), -body.rainbow-tag-no-filter .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+3)+span.cm-hashtag, -body.rainbow-tag-no-filter .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+3)+.cm-hashtag.cm-meta, -body.rainbow-tag-no-filter .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+3)+span.cm-hashtag.cm-meta+span.cm-hashtag.cm-hashtag-end { - --tag-border-color: hsla(calc(var(--accent-h) + 70), var(--accent-s), var(--accent-l), 20%); - background-color: hsla(calc(var(--accent-h) + 70), var(--accent-s), var(--accent-l), 10%) !important; - color: hsl(calc(var(--accent-h) + 70), var(--accent-s), var(--accent-l-alt)) !important; -} - -body.rainbow-tag-no-filter .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+4), -body.rainbow-tag-no-filter .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+4)+span.cm-hashtag, -body.rainbow-tag-no-filter .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+4)+.cm-hashtag.cm-meta, -body.rainbow-tag-no-filter .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+4)+span.cm-hashtag.cm-meta+span.cm-hashtag.cm-hashtag-end { - --tag-border-color: hsla(calc(var(--accent-h) + 280), var(--accent-s), var(--accent-l), 20%); - background-color: hsla(calc(var(--accent-h) + 280), var(--accent-s), var(--accent-l), 10%) !important; - color: hsl(calc(var(--accent-h) + 280), var(--accent-s), var(--accent-l-alt)) !important; -} - -body.rainbow-tag-no-filter .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n), -body.rainbow-tag-no-filter .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n)+span.cm-hashtag, -body.rainbow-tag-no-filter .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n)+.cm-hashtag.cm-meta, -body.rainbow-tag-no-filter .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n)+span.cm-hashtag.cm-meta+span.cm-hashtag.cm-hashtag-end { - --tag-border-color: hsla(calc(var(--accent-h) + 140), var(--accent-s), var(--accent-l), 20%); - background-color: hsla(calc(var(--accent-h) + 140), var(--accent-s), var(--accent-l), 10%) !important; - color: hsl(calc(var(--accent-h) + 140), var(--accent-s), var(--accent-l-alt)) !important; -} - - - -/*rainbow tag*/ -body.rainbow-tag .tag:not(.token):nth-child(5n+1) { - background-color: var(--theme-color-translucent-01); - color: var(--theme-color); -} - -body.rainbow-tag .tag:not(.token):nth-child(5n+2) { - background-color: var(--theme-color-translucent-01); - color: var(--theme-color); - filter: hue-rotate(70deg); -} - -body.rainbow-tag .tag:not(.token):nth-child(5n+3) { - background-color: var(--theme-color-translucent-01); - color: var(--theme-color); - filter: hue-rotate(140deg); -} - -body.rainbow-tag .tag:not(.token):nth-child(5n+4) { - background-color: var(--theme-color-translucent-01); - color: var(--theme-color); - filter: hue-rotate(210deg); -} - -body.rainbow-tag .tag:not(.token):nth-child(5n) { - background-color: var(--theme-color-translucent-01); - color: var(--theme-color); - filter: hue-rotate(280deg); -} - -body.rainbow-tag .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+1), -body.rainbow-tag .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+1)+span.cm-hashtag, -body.rainbow-tag .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+1)+.cm-hashtag.cm-meta, -body.rainbow-tag .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+1)+span.cm-hashtag.cm-meta+span.cm-hashtag.cm-hashtag-end { - background-color: var(--theme-color-translucent-01) !important; - color: var(--theme-color) !important; -} - -body.rainbow-tag .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+2), -body.rainbow-tag .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+2)+span.cm-hashtag, -body.rainbow-tag .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+2)+.cm-hashtag.cm-meta, -body.rainbow-tag .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+2)+span.cm-hashtag.cm-meta+span.cm-hashtag.cm-hashtag-end { - background-color: var(--theme-color-translucent-01) !important; - color: var(--theme-color) !important; - filter: hue-rotate(210deg); -} - -body.rainbow-tag .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+3), -body.rainbow-tag .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+3)+span.cm-hashtag, -body.rainbow-tag .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+3)+.cm-hashtag.cm-meta, -body.rainbow-tag .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+3)+span.cm-hashtag.cm-meta+span.cm-hashtag.cm-hashtag-end { - background-color: var(--theme-color-translucent-01) !important; - color: var(--theme-color) !important; - filter: hue-rotate(70deg); -} - -body.rainbow-tag .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+4), -body.rainbow-tag .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+4)+span.cm-hashtag, -body.rainbow-tag .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+4)+.cm-hashtag.cm-meta, -body.rainbow-tag .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+4)+span.cm-hashtag.cm-meta+span.cm-hashtag.cm-hashtag-end { - background-color: var(--theme-color-translucent-01) !important; - color: var(--theme-color) !important; - filter: hue-rotate(280deg); -} - -body.rainbow-tag .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n), -body.rainbow-tag .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n)+span.cm-hashtag, -body.rainbow-tag .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n)+.cm-hashtag.cm-meta, -body.rainbow-tag .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n)+span.cm-hashtag.cm-meta+span.cm-hashtag.cm-hashtag-end { - background-color: var(--theme-color-translucent-01) !important; - color: var(--theme-color) !important; - filter: hue-rotate(140deg); -} - - -/*tag font size and font family*/ -body.colorful-tag-bt a.tag:not(.token) { - font-size: var(--font-size-tag); - font-family: var(--font-family-tag) !important; - border: none; - color: var(--tag-text); - text-align: center; - text-decoration: none; - cursor: pointer; -} - -body:not(.tag-default) .tag:not(.token):hover { - color: white !important; - background-color: var(--theme-color) !important; -} - -body:is(:not(.tag-default),:not(.font-family-change-to-default)) .cm-s-obsidian span.cm-hashtag { - font-family: var(--font-family-tag); - font-size: var(--font-size-tag) !important; - text-decoration: none; -} - -body:not(.tag-default) .cm-s-obsidian span.cm-hashtag-begin { - border-top-left-radius: var(--radius-l); - border-bottom-left-radius: var(--radius-l); - border-right: none !important; - text-decoration: none; - padding-left: 0.3em; -} - -body:not(.tag-default) .cm-s-obsidian span.cm-hashtag-end { - border-radius: 0 var(--radius-l) var(--radius-l) 0; - padding-right: 0.3em !important; - border-left: none; - text-decoration: none; -} - -body:not(.tag-default) .cm-s-obsidian span.cm-hashtag-begin+.cm-hashtag.cm-meta { - padding-right: 0; - border-left: none !important; -} - -body:is(.rainbow-tag,.tag-pill-outlined,.tag-clear-style,.colorful-tag-bt) .cm-s-obsidian span:is(.cm-hashtag,.cm-hashtag-begin,.cm-hashtag-end,.cm-hashtag-begin+.cm-hashtag.cm-meta,.cm-hashtag-begin+.cm-hashtag.cm-meta+span.cm-hashtag.cm-meta.cm-hashtag-end) { - color: var(--tag-text) ; -} - - -body:not(.tag-default) .cm-s-obsidian span.cm-hashtag-begin+.cm-hashtag.cm-meta+span.cm-hashtag.cm-meta.cm-hashtag-end { - padding-left: 0; - border-top-right-radius: var(--radius-l); - border-bottom-right-radius: var(--radius-l); - border-top-left-radius: 0; - border-bottom-left-radius: 0; - padding-right: 0.3em; -} - -body:not(.tag-default).tag-pill-outlined .tag:not(.token) { - color: var(--text-normal); - background-color: transparent !important; - border: var(--tag-border-width) solid; - padding: 0px 8px; -} - -a.tag, -.editor .cl-hashtag, -.cm-hashtag { - padding-top: 0.1em; - padding-bottom: 0.1em; -} -.is-live-preview a.tag { - line-height: 1.8; -} -body.tag-pill-outlined .tag:not(.token):nth-child(5n+1) { - border-color: var(--tag1); - color: var(--tag1); -} -body.tag-pill-outlined .tag:not(.token):nth-child(5n+2) { - border-color: var(--tag2); - color: var(--tag2); -} -body.tag-pill-outlined .tag:not(.token):nth-child(5n+3) { - border-color: var(--tag3); - color: var(--tag3); -} -body.tag-pill-outlined .tag:not(.token):nth-child(5n+4) { - border-color: var(--tag4); - color: var(--tag4); -} -body.tag-pill-outlined .tag:not(.token):nth-child(5n) { - border-color: var(--tag5); - color: var(--tag5); -} - -body.tag-pill-outlined .cm-s-obsidian span.cm-hashtag, -body.tag-pill-outlined .cm-s-obsidian span.cm-hashtag-begin, -body.tag-pill-outlined .cm-s-obsidian span.cm-hashtag-end, -body.tag-pill-outlined .cm-s-obsidian span.cm-hashtag-begin+.cm-hashtag.cm-meta, -body.tag-pill-outlined .cm-s-obsidian span.cm-hashtag-begin+.cm-hashtag.cm-meta+span.cm-hashtag.cm-meta.cm-hashtag-end { - color: var(--text-normal) !important; -} - -body.tag-pill-outlined .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+1), -body.tag-pill-outlined .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+1)+span.cm-hashtag, -body.tag-pill-outlined .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+1)+.cm-hashtag.cm-meta, -body.tag-pill-outlined .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+1)+span.cm-hashtag.cm-meta+span.cm-hashtag.cm-hashtag-end { - border: var(--tag-border-width) solid var(--tag1); - background-color: transparent !important; - color: var(--tag1) !important; -} - -body.tag-pill-outlined .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+2), -body.tag-pill-outlined .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+2)+span.cm-hashtag, -body.tag-pill-outlined .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+2)+.cm-hashtag.cm-meta, -body.tag-pill-outlined .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+2)+span.cm-hashtag.cm-meta+span.cm-hashtag.cm-hashtag-end { - border: var(--tag-border-width) solid var(--tag2); - background-color: transparent !important; - color: var(--tag2) !important; -} - -body.tag-pill-outlined .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+3), -body.tag-pill-outlined .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+3)+span.cm-hashtag, -body.tag-pill-outlined .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+3)+.cm-hashtag.cm-meta, -body.tag-pill-outlined .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+3)+span.cm-hashtag.cm-meta+span.cm-hashtag.cm-hashtag-end { - border: var(--tag-border-width) solid var(--tag3); - background-color: transparent !important; - color: var(--tag3) !important; -} - -body.tag-pill-outlined .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+4), -body.tag-pill-outlined .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+4)+span.cm-hashtag, -body.tag-pill-outlined .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+4)+.cm-hashtag.cm-meta, -body.tag-pill-outlined .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+4)+span.cm-hashtag.cm-meta+span.cm-hashtag.cm-hashtag-end { - border: var(--tag-border-width) solid var(--tag4); - background-color: transparent !important; - color: var(--tag4) !important; -} - -body.tag-pill-outlined .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n), -body.tag-pill-outlined .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n)+span.cm-hashtag, -body.tag-pill-outlined .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n)+.cm-hashtag.cm-meta, -body.tag-pill-outlined .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n)+span.cm-hashtag.cm-meta+span.cm-hashtag.cm-hashtag-end { - border: var(--tag-border-width) solid var(--tag5); - background-color: transparent !important; - color: var(--tag5) !important; -} - - -body.tag-pill-outlined .cm-s-obsidian span.cm-hashtag-begin:nth-child(n)+span.cm-hashtag:not([class*="-end"]), -body.tag-pill-outlined .cm-s-obsidian span.cm-hashtag-begin:nth-child(n)+.cm-hashtag.cm-meta:not([class*="-end"]) { - border-left: none; - border-right: none; -} - -body.tag-pill-outlined .cm-s-obsidian span.cm-hashtag-begin:nth-child(n)+span.cm-hashtag.cm-meta+span.cm-hashtag.cm-hashtag-end { - border-left: none; -} - -body.tag-clear-style .tag:not(.token):nth-child(n) { - background-color: transparent; - border: none; - color: var(--text-accent); - text-decoration: underline; - padding: 0 2px; -} - -body.tag-clear-style .tag:not(.token):nth-child(n):hover { - background-color: var(--theme-color-translucent-015) !important; -} - -body.tag-clear-style .cm-s-obsidian span.cm-hashtag-begin, -body.tag-clear-style .cm-s-obsidian span.cm-hashtag-begin+.cm-hashtag.cm-meta, -body.tag-clear-style .cm-s-obsidian span.cm-hashtag-end, -body.tag-clear-style .cm-s-obsidian span.cm-hashtag-begin+span.cm-hashtag.cm-meta.cm-hashtag-end, -body.tag-clear-style .cm-s-obsidian span.cm-hashtag-begin+.cm-hashtag.cm-meta { - background-color: transparent; - border: none; - color: var(--text-accent) !important; - text-decoration: underline; - padding: 0; -} - -body.tag-clear-style .cm-s-obsidian span.cm-hashtag-begin+span.cm-hashtag.cm-meta+span.cm-hashtag.cm-hashtag-end { - background-color: transparent; -} - -body:not(.tag-default) .cm-s-obsidian:not([class="markdown-source-view cm-s-obsidian mod-cm6"]) .cm-formatting.cm-formatting-hashtag.cm-hashtag.cm-hashtag-begin.cm-meta.cm-tag-dailynote, -body:not(.tag-default) .cm-s-obsidian:not([class="markdown-source-view cm-s-obsidian mod-cm6"]) .cm-formatting.cm-formatting-hashtag.cm-hashtag.cm-hashtag-begin.cm-meta.cm-tag-weeklynote, -body:not(.tag-default) .cm-s-obsidian:not([class="markdown-source-view cm-s-obsidian mod-cm6"]) .cm-formatting.cm-formatting-hashtag.cm-hashtag.cm-hashtag-begin.cm-meta.cm-tag-ideas, -body:not(.tag-default) .cm-s-obsidian:not([class="markdown-source-view cm-s-obsidian mod-cm6"]) .cm-formatting.cm-formatting-hashtag.cm-hashtag.cm-hashtag-begin.cm-meta.cm-tag-inprogress, -body:not(.tag-default) .cm-s-obsidian:not([class="markdown-source-view cm-s-obsidian mod-cm6"]) .cm-formatting.cm-formatting-hashtag.cm-hashtag.cm-hashtag-begin.cm-meta.cm-tag-important, -body:not(.tag-default) .cm-s-obsidian:not([class="markdown-source-view cm-s-obsidian mod-cm6"]) .cm-formatting.cm-formatting-hashtag.cm-hashtag.cm-hashtag-begin.cm-meta.cm-tag-questions, -body:not(.tag-default) .cm-s-obsidian:not([class="markdown-source-view cm-s-obsidian mod-cm6"]) .cm-formatting.cm-formatting-hashtag.cm-hashtag.cm-hashtag-begin.cm-meta.cm-tag-complete { - font-weight: 600; - font-family: var(--font-family-special-tag) !important; - display: inline; - color: var(--white) !important; -} - -body.colorful-tag-bt .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+1), -body.colorful-tag-bt .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+1)+span.cm-hashtag, -body.colorful-tag-bt .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+1)+.cm-hashtag.cm-meta, -body.colorful-tag-bt .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+1)+span.cm-hashtag.cm-meta+span.cm-hashtag.cm-hashtag-end { - background-color: var(--tag1); -} - -body.colorful-tag-bt .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+2), -body.colorful-tag-bt .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+2)+span.cm-hashtag, -body.colorful-tag-bt .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+2)+.cm-hashtag.cm-meta, -body.colorful-tag-bt .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+2)+span.cm-hashtag.cm-meta+span.cm-hashtag.cm-hashtag-end { - background-color: var(--tag2); -} - -body.colorful-tag-bt .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+3), -body.colorful-tag-bt .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+3)+span.cm-hashtag, -body.colorful-tag-bt .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+3)+.cm-hashtag.cm-meta, -body.colorful-tag-bt .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+3)+span.cm-hashtag.cm-meta+span.cm-hashtag.cm-hashtag-end { - background-color: var(--tag3); -} - -body.colorful-tag-bt .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+4), -body.colorful-tag-bt .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+4)+span.cm-hashtag, -body.colorful-tag-bt .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+4)+.cm-hashtag.cm-meta, -body.colorful-tag-bt .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n+4)+span.cm-hashtag.cm-meta+span.cm-hashtag.cm-hashtag-end { - background-color: var(--tag4); -} - -body.colorful-tag-bt .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n), -body.colorful-tag-bt .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n)+span.cm-hashtag, -body.colorful-tag-bt .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n)+.cm-hashtag.cm-meta, -body.colorful-tag-bt .cm-s-obsidian span.cm-hashtag-begin:nth-child(5n)+span.cm-hashtag.cm-meta+span.cm-hashtag.cm-hashtag-end { - background-color: var(--tag5); -} - - -/*special tags*/ -body.tag-pill-outlined .cm-s-obsidian:not([class="markdown-source-view cm-s-obsidian mod-cm6"]) span.cm-hashtag.cm-meta.cm-hashtag-end:is(.cm-tag-important,.cm-tag-complete,.cm-tag-ideas,.cm-tag-questions,.cm-tag-weeklynote,.cm-tag-dailynote,.cm-tag-inprogress):not(.cm-formatting-hashtag) { - border-top: var(--tag-border-width) solid var(--tag1); - border-bottom: var(--tag-border-width) solid var(--tag1); -} - -body:not(.tag-default) .tag[href ^="#important"]:not(.token) { - background-color: var(--stag1-bg) !important; - font-weight: 600; - font-family: var(--font-family-special-tag) !important; - color: var(--white) !important; - filter: hue-rotate(0) !important; -} - -body:not(.tag-default) .cm-s-obsidian:not([class="markdown-source-view cm-s-obsidian mod-cm6"]) span.cm-hashtag.cm-meta.cm-hashtag-end.cm-tag-important:not(.cm-formatting-hashtag) { - font-family: var(--font-family-special-tag) !important; - font-weight: 600; - background-color: var(--stag1-bg) !important; - color: var(--white) !important; - font-size: calc(var(--font-size-tag) - 0.3em); - filter: hue-rotate(0) !important; -} - -body:not(.tag-default) .tag[href^="#重要"]:not(.token) { - background-color: var(--stag1-bg) !important; - font-weight: 600; - font-family: Webdings, 'Microsoft YaHei'; - color: var(--white) !important; - filter: hue-rotate(0) !important; -} - -body:not(.tag-default) .tag[href^="#complete"]:not(.token) { - background-color: var(--stag3-bg) !important; - font-weight: 600; - font-family: var(--font-family-special-tag) !important; - color: var(--white) !important; - filter: hue-rotate(0) !important; -} - -body:not(.tag-default) .cm-s-obsidian:not([class="markdown-source-view cm-s-obsidian mod-cm6"]) span.cm-hashtag.cm-meta.cm-hashtag-end.cm-tag-complete:not(.cm-formatting-hashtag) { - font-family: var(--font-family-special-tag) !important; - font-weight: 600; - background-color: var(--stag3-bg) !important; - color: var(--white) !important; - font-size: 0.95em; - filter: hue-rotate(0) !important; -} - -body:not(.tag-default) .tag[href^="#完成"]:not(.token) { - background-color: var(--stag3-bg) !important; - font-family: Origin, 'Microsoft YaHei'; - font-weight: 600; - color: var(--white) !important; - filter: hue-rotate(0) !important; -} - -body:not(.tag-default) .tag[href ^="#inprogress"]:not(.token) { - background-color: var(--stag2-bg) !important; - font-weight: 600; - font-family: var(--font-family-special-tag) !important; - color: var(--white) !important; - filter: hue-rotate(0) !important; -} - -body:not(.tag-default) .cm-s-obsidian:not([class="markdown-source-view cm-s-obsidian mod-cm6"]) span.cm-hashtag.cm-meta.cm-hashtag-end.cm-tag-inprogress:not(.cm-formatting-hashtag) { - font-family: var(--font-family-special-tag) !important; - font-weight: 600; - background-color: var(--stag2-bg) !important; - color: var(--white) !important; - font-size: 0.95em; - filter: hue-rotate(0) !important; -} - -body:not(.tag-default) .tag[href ^="#进行中"]:not(.token) { - background-color: var(--stag2-bg) !important; - font-weight: 600; - font-family: Wingdings, 'Microsoft YaHei'; - color: var(--white) !important; - filter: hue-rotate(0) !important; -} - -body:not(.tag-default) .tag[href ^="#dailynote"]:not(.token) { - background-color: var(--tag-dailynote-bg) !important; - font-weight: 600; - font-family: var(--font-family-special-tag) !important; - color: var(--white) !important; - filter: hue-rotate(0) !important; -} - -body:not(.tag-default) .tag[href ^="#dailynote"]::after { - content: ' 🐈'; - font-size: var(--font-size-emoji-after-tag); -} - -body:not(.tag-default) .cm-s-obsidian:not([class="markdown-source-view cm-s-obsidian mod-cm6"]) span.cm-tag-dailynote:not(.cm-formatting-hashtag)::after { - content: ' 🐈'; -} - -body:not(.tag-default) .cm-s-obsidian:not([class="markdown-source-view cm-s-obsidian mod-cm6"]) span.cm-hashtag.cm-meta.cm-hashtag-end.cm-tag-dailynote:not(.cm-formatting-hashtag) { - font-family: var(--font-family-special-tag) !important; - font-weight: 600; - background-color: var(--tag-dailynote-bg) !important; - color: var(--white) !important; - font-size: 0.95em; - filter: hue-rotate(0) !important; -} - -body:not(.tag-default) .tag[href ^="#weeklynote"]:not(.token) { - background-color: var(--tag-weeklynote-bg) !important; - font-weight: 600; - font-family: var(--font-family-special-tag) !important; - color: var(--white) !important; - filter: hue-rotate(0) !important; -} - -body:not(.tag-default) .tag[href^="#weeklynote"]::after { - content: ' 🥑'; - font-size: var(--font-size-emoji-after-tag); -} - -body:not(.tag-default) .cm-s-obsidian:not([class="markdown-source-view cm-s-obsidian mod-cm6"]) span.cm-tag-weeklynote:not(.cm-formatting-hashtag)::after { - content: ' 🥑'; -} - -body:not(.tag-default) .cm-s-obsidian:not([class="markdown-source-view cm-s-obsidian mod-cm6"]) .cm-hashtag.cm-meta.cm-hashtag-end.cm-tag-weeklynote:not(.cm-formatting-hashtag) { - font-family: var(--font-family-special-tag) !important; - font-weight: 600; - background-color: var(--tag-weeklynote-bg) !important; - color: var(--white) !important; - font-size: 0.95em; - filter: hue-rotate(0) !important; -} - -body:not(.tag-default) .tag[href ^="#questions"]:not(.token) { - background-color: var(--tag-questions-bg) !important; - font-weight: 600; - font-family: var(--font-family-special-tag) !important; - color: var(--white) !important; - filter: hue-rotate(0) !important; -} - -body:not(.tag-default) .tag[href^="#questions"]::after { - content: ' ❓'; - font-size: var(--font-size-emoji-after-tag); -} - -body:not(.tag-default) .cm-s-obsidian:not([class="markdown-source-view cm-s-obsidian mod-cm6"]) span.cm-tag-questions:not(.cm-formatting-hashtag)::after { - content: ' ❓'; -} - -body:not(.tag-default) .cm-s-obsidian:not([class="markdown-source-view cm-s-obsidian mod-cm6"]) span.cm-hashtag.cm-meta.cm-hashtag-end.cm-tag-questions:not(.cm-formatting-hashtag) { - font-family: var(--font-family-special-tag) !important; - font-weight: 600; - background-color: var(--tag-questions-bg) !important; - color: var(--white) !important; - font-size: 0.95em; - filter: hue-rotate(0) !important; -} - -body:not(.tag-default) .tag[href ^="#ideas"]:not(.token) { - background-color: var(--tag-ideas-bg) !important; - font-weight: 600; - font-family: var(--font-family-special-tag) !important; - color: var(--white) !important; - filter: hue-rotate(0) !important; -} - -body:not(.tag-default) .tag[href^="#ideas"]::after { - content: ' 💡'; - font-size: var(--font-size-emoji-after-tag); -} - -body:not(.tag-default) .cm-s-obsidian:not([class="markdown-source-view cm-s-obsidian mod-cm6"]) span.cm-tag-ideas:not(.cm-formatting-hashtag)::after { - content: ' 💡'; -} - -body:not(.tag-default) .cm-s-obsidian:not([class="markdown-source-view cm-s-obsidian mod-cm6"]) span.cm-hashtag.cm-meta.cm-hashtag-end.cm-tag-ideas:not(.cm-formatting-hashtag) { - background-color: var(--tag-ideas-bg) !important; - font-family: var(--font-family-special-tag) !important; - font-weight: 600; - color: var(--white) !important; - font-size: 0.95em; -} - -body:not(.tag-default) .cm-s-obsidian:not([class="markdown-source-view cm-s-obsidian mod-cm6"]) .cm-formatting.cm-formatting-hashtag.cm-hashtag.cm-hashtag-begin.cm-meta.cm-tag-important { - background-color: var(--stag1-bg) !important; - filter: hue-rotate(0) !important; -} - -body:not(.tag-default) .cm-s-obsidian:not([class="markdown-source-view cm-s-obsidian mod-cm6"]) .cm-formatting.cm-formatting-hashtag.cm-hashtag.cm-hashtag-begin.cm-meta.cm-tag-weeklynote { - background-color: var(--tag-weeklynote-bg) !important; - filter: hue-rotate(0) !important; -} - -body:not(.tag-default) .cm-s-obsidian:not([class="markdown-source-view cm-s-obsidian mod-cm6"]) .cm-formatting.cm-formatting-hashtag.cm-hashtag.cm-hashtag-begin.cm-meta.cm-tag-dailynote { - background-color: var(--tag-dailynote-bg) !important; - filter: hue-rotate(0) !important; -} - -body:not(.tag-default) .cm-s-obsidian:not([class="markdown-source-view cm-s-obsidian mod-cm6"]) .cm-formatting.cm-formatting-hashtag.cm-hashtag.cm-hashtag-begin.cm-meta.cm-tag-ideas { - background-color: var(--tag-ideas-bg) !important; - filter: hue-rotate(0) !important; -} -body:not(.tag-default) .cm-s-obsidian:not([class="markdown-source-view cm-s-obsidian mod-cm6"]) .cm-formatting.cm-formatting-hashtag.cm-hashtag.cm-hashtag-begin.cm-meta.cm-tag-inprogress { - background-color: var(--stag2-bg) !important; - filter: hue-rotate(0) !important; -} - -body:not(.tag-default) .cm-s-obsidian:not([class="markdown-source-view cm-s-obsidian mod-cm6"]) .cm-formatting.cm-formatting-hashtag.cm-hashtag.cm-hashtag-begin.cm-meta.cm-tag-questions { - background-color: var(--tag-questions-bg) !important; - filter: hue-rotate(0) !important; -} -body:not(.tag-default) .cm-s-obsidian:not([class="markdown-source-view cm-s-obsidian mod-cm6"]) .cm-formatting.cm-formatting-hashtag.cm-hashtag.cm-hashtag-begin.cm-meta.cm-tag-complete { - background-color: var(--stag3-bg) !important; - filter: hue-rotate(0) !important; -} - -/*source mode*/ -div[class="markdown-source-view cm-s-obsidian mod-cm6"] span.cm-hashtag { - background-color: transparent !important; - color: var(--text-muted) !important; - text-decoration: underline; -} - -div[class="markdown-source-view cm-s-obsidian mod-cm6"] span.cm-hashtag, -div[class="markdown-source-view cm-s-obsidian mod-cm6"] span.cm-hashtag-begin, -div[class="markdown-source-view cm-s-obsidian mod-cm6"] span.cm-hashtag-end, -div[class="markdown-source-view cm-s-obsidian mod-cm6"] span.cm-hashtag-begin+.cm-hashtag.cm-meta { - padding: 0 !important; -} - -/*thanks to Klaas from Obsidian Members Group on discord*/ -/* Selection highlight */ -.suggestion-item.is-selected { - background-color: var(--theme-color-translucent-015); -} - -:is(.markdown-preview-view,.markdown-rendered):not([class*="kanban-plugin"]) { - position: relative; - overflow-y: auto; - overflow-wrap: break-word; - color: var(--text-normal); - user-select: text; -} - -/*edit mode font size*/ -pre.CodeMirror-line { - font-size: var(--font-size-edit-normal) !important; -} - -/*preview mode font size*/ -p { - font-size: var(--font-size-preview-normal); -} - -:is(.markdown-preview-view,.markdown-rendered) p { - margin-block-start: calc(var(--paragraph-spacing) * 1em); - margin-block-end: calc(var(--paragraph-spacing) * 1em); -} - - -:is(.markdown-preview-view,.markdown-rendered) :is(ol,ul) { - margin-block-start: calc((var(--paragraph-spacing) - 1) * 1em); - margin-block-end: calc((var(--paragraph-spacing) - 1) * 1em); -} -body.toggle-paragraph-spacing :is(.markdown-preview-view,.markdown-rendered) p>br { - content:" "; - margin-top: calc((var(--paragraph-spacing) - 1) * 1em); - display: block; -} - -body.toggle-left-aligned-content .markdown-source-view.mod-cm6.is-readable-line-width:not(.is-rtl) .cm-scroller > *:first-child { - margin-left: 0; -} - -body.toggle-left-aligned-content :is(.markdown-preview-view,.markdown-rendered).is-readable-line-width:not(.matrix) .markdown-preview-sizer, .markdown-source-view.is-readable-line-width:not(.matrix) .CodeMirror, :is(.markdown-preview-view,.markdown-rendered):not(.matrix) .is-readable-line-width :is(.markdown-preview-section,.markdown-rendered), :is(.markdown-preview-view,.markdown-rendered):not(.matrix) .is-readable-line-width :is(.markdown-preview-section,.markdown-rendered) > div, :is(.markdown-preview-view,.markdown-rendered).is-readable-line-width:not(.matrix) :is(.markdown-preview-section,.markdown-rendered) { - margin-left: 0; -} - -.markdown-source-view.mod-cm6 div.cm-line:not(.HyperMD-codeblock) { - padding-bottom: calc((var(--paragraph-spacing) - 1) * 1em) ; -} - -body.text-indentation-two-em .workspace-leaf-content[data-type="markdown"] .markdown-source-view.mod-cm6 div.cm-line:not(:is(.HyperMD-header,.HyperMD-quote,.HyperMD-list-line)), -.markdown-source-view.mod-cm6.indent div.cm-line:not(:is(.HyperMD-header,.HyperMD-quote,.HyperMD-list-line)) { - text-indent: 2em; -} - -body.text-indentation-two-em .workspace-leaf-content[data-type="markdown"] .markdown-source-view.mod-cm6 div.cm-line:not(:is(.HyperMD-header,.HyperMD-quote,.HyperMD-list-line)) .cm-hmd-frontmatter:first-of-type, -.markdown-source-view.mod-cm6.indent div.cm-line:not(:is(.HyperMD-header,.HyperMD-quote,.HyperMD-list-line)) .cm-hmd-frontmatter:first-of-type { - margin-left: -2em; -} -body.text-indentation-two-em .markdown-source-view.mod-cm6 div.has-banner.cm-line:not(.HyperMD-header) .cm-def.cm-hmd-frontmatter, -body.text-indentation-two-em .markdown-source-view.mod-cm6 div.has-banner.cm-line:not(.HyperMD-header) .collapse-indicator, -.markdown-source-view.mod-cm6.indent div.has-banner.cm-line:not(.HyperMD-header) .cm-def.cm-hmd-frontmatter, -.markdown-source-view.mod-cm6.indent div.has-banner.cm-line:not(.HyperMD-header) .collapse-indicator { - margin-left: 0; - left: -3em; -} - -body.text-indentation-two-em [data-type="markdown"] div[class="el-p"]:not(blockquote) > p, -[data-type="markdown"] :is(.markdown-preview-view,.markdown-rendered).indent div[class="el-p"]:not(blockquote) > p { - text-indent: 2em; -} - - -body.text-indentation-two-em [data-type="markdown"] div[class="el-p"]:not(blockquote) > p>br, -[data-type="markdown"] :is(.markdown-preview-view,.markdown-rendered).indent div[class="el-p"]:not(blockquote) > p>br { - content: ' '; - white-space: pre; - line-height: calc((var(--paragraph-spacing) + 0.3) * 1em); - display:unset; -} -body.text-indentation-two-em [data-type="markdown"] div[class="el-p"]:not(blockquote) > p>br::after, -[data-type="markdown"] :is(.markdown-preview-view,.markdown-rendered).indent div[class="el-p"]:not(blockquote) >p>br::after { - content: '\A\9\9'; -} - -body.justify-align div[data-type="markdown"] div.cm-line:not(.HyperMD-codeblock), -body.justify-align div[data-type="markdown"] :is(.markdown-preview-view,.markdown-rendered), -.markdown-source-view.text-justify div.cm-line:not(.HyperMD-codeblock), -:is(.markdown-preview-view,.markdown-rendered).text-justify { - text-align: justify; - hyphens: auto; -} - -/*edit mode blockquote font size*/ -.cm-s-obsidian span.cm-quote { - font-size: var(--font-size-edit-blockquote); -} - -.CodeMirror-code span.cm-formatting.cm-formatting-quote.cm-formatting-quote.cm-quote::before { - content: ""; - border-left: 7px solid var(--theme-color); - border-radius: 0; /*5px 0 0 5px;*/ - height: 100%; - margin-left: -7px; - position: absolute; -} - -.markdown-source-view.mod-cm6 .cm-blockquote-border { - border-color: var(--theme-color); -} - -.CodeMirror-line span.cm-formatting-quote + *::before, -.CodeMirror-line span.cm-formatting-quote + span.cm-hmd-indent-in-quote + span.cm-quote:not(.cm-formatting-quote)::before, -.CodeMirror-line span.cm-inline-code + *::before, -.CodeMirror-line span.cm-highlight + *::before, -.CodeMirror-line span.cm-quote + *::before, -.CodeMirror-line span.cm-hmd-html-end + *::before, -.CodeMirror-line span.cm-formatting-math + *::before { - border-left: none; -} - -/*Quote (> lorem ipsum ...) in edit mode with left border rendered instead of >*/ -div:not(.CodeMirror-activeline)>.CodeMirror-line span.cm-formatting-quote { - color: transparent !important; -} - -.CodeMirror-line span.cm-formatting-quote { - color: var(--red) !important; -} - -.HyperMD-quote.CodeMirror-line { - background-color: var(--background-blockquote); -} - -.cm-quote:not([class*="link"]):not([class*="string"]):not([class*="em"]):not([class*="strong"]) { - color: var(--text-normal); -} - -/* highlight */ -:is(.markdown-preview-view,.markdown-rendered) mark { - background-color: var(--text-highlight-bg); - padding: 1px 2px; - color: var(--text-highlight); - border-radius: var(--radius-xs); -} - -.cm-s-obsidian span.cm-highlight, -.cm-highlight.cm-quote { - color: var(--text-highlight); - padding: 2px 0 1px 0; -} - -body:not(.no-rounded-corners-highlight):not(.all-rounded-corners-highlight) .cm-s-obsidian .cm-widgetBuffer[aria-hidden="true"]+span.cm-highlight:has(+ .cm-widgetBuffer[aria-hidden="true"]) { - border-radius: 3px; - padding: 1px 2px; -} - -.cm-s-obsidian span.cm-formatting-highlight { - border-radius: 3px 0 0 3px; -} - -.cm-s-obsidian span[class="cm-highlight"]+span.cm-formatting-highlight, -.cm-s-obsidian span[class*="cm-highlight"][class*="cm-list"]+span.cm-formatting-highlight, -.cm-s-obsidian span[class*="cm-highlight"][class*="cm-quote"]+span.cm-formatting-highlight, -.cm-s-obsidian span[class*="cm-highlight"][class*="cm-header"]+span.cm-formatting-highlight, -.cm-s-obsidian span[class*="cm-highlight"][class*="cm-formatting-code"][class*="cm-inline-code"]+span.cm-formatting-highlight, -.cm-s-obsidian span[class*="cm-highlight"][class*="cm-formatting-link"]+span.cm-formatting-highlight, -.cm-s-obsidian span[class*="cm-highlight"][class*="cm-hmd-internal-link"]+span.cm-formatting-highlight, -.cm-s-obsidian span[class*="cm-highlight"][class*="cm-strong"]+span.cm-formatting-highlight, -.cm-s-obsidian span[class*="cm-highlight"][class*="cm-em"]+span.cm-formatting-highlight, -.cm-s-obsidian span[class*="cm-highlight"][class*="strikethrough"]+span.cm-formatting-highlight { - border-radius: 0 3px 3px 0; -} - -span.cm-formatting.cm-formatting-code.cm-highlight.cm-inline-code, -span.cm-highlight.cm-inline-code { - border-radius: 0; - padding: 2px 0 1px !important; -} - -.theme-dark .cm-formatting.cm-formatting-highlight.cm-strong.cm-em.cm-highlight { - background-image: initial; - background-clip: initial; - -webkit-background-clip: initial; - -webkit-text-fill-color: initial; - background-color: var(--text-highlight-bg); - color: var(--text-highlight); -} - -.CodeMirror-lines span.cm-strong.cm-em.cm-highlight { - padding: 0 1px 1px; -} - -/*cloze*/ -body:not(.remove-cloze-style) :is(.markdown-preview-view,.markdown-rendered) mark > del, -:is(.markdown-preview-view, -.markdown-rendered).cloze mark > del { - background-color: var(--cloze-bg-color); - color: var(--cloze-bg-color); - text-decoration: underline var(--cloze-decoration) var(--cloze-decoration-color); - border-radius:5px; - padding:2px; -} - -body:not(.remove-cloze-style) .cm-s-obsidian .cm-formatting.cm-formatting-highlight.cm-highlight~span.cm-formatting-strikethrough.cm-highlight.cm-strikethrough~span.cm-highlight.cm-strikethrough:not(.cm-em), -body:not(.remove-cloze-style) .cm-s-obsidian .cm-formatting.cm-formatting-highlight.cm-highlight~span.cm-formatting-strikethrough.cm-highlight.cm-strikethrough, -.markdown-source-view.cloze .cm-formatting.cm-formatting-highlight.cm-highlight~span.cm-formatting-strikethrough.cm-highlight.cm-strikethrough~span.cm-highlight.cm-strikethrough:not(.cm-em), -.markdown-source-view.cloze *:not([class*="cm-formatting-em"]).cm-formatting.cm-formatting-highlight.cm-highlight~span.cm-formatting-strikethrough.cm-highlight.cm-strikethrough { - text-decoration: underline var(--cloze-decoration) var(--cloze-decoration-color); - background-color: transparent !important; -} - -body:not(.remove-cloze-style) .cm-s-obsidian .cm-formatting.cm-formatting-highlight.cm-highlight~.cm-formatting.cm-formatting-strikethrough~span.cm-highlight.cm-strikethrough:not(.cm-em):hover, -.markdown-source-view.cloze .cm-formatting.cm-formatting-highlight.cm-highlight~.cm-formatting.cm-formatting-strikethrough~span.cm-highlight.cm-strikethrough:not(.cm-em):hover { - background-color: var(--text-highlight-bg); - color: var(--text-normal); - transition: all 400ms ease-in-out; -} - -body:not(.remove-cloze-style) :is(.markdown-preview-view, -.markdown-rendered) mark > del:hover, -:is(.markdown-preview-view, -.markdown-rendered).cloze mark > del:hover { - background-color: transparent; - color: var(--accent-strong); - transition: all 400ms ease-in-out; -} - -body:not(.remove-cloze-style) :is(.markdown-preview-view, -.markdown-rendered) em > mark > del, -:is(.markdown-preview-view, -.markdown-rendered).cloze em > mark > del { - color: transparent; - background-color: transparent; - padding: 0 2px; - text-decoration: underline var(--cloze-decoration-2) var(--cloze-decoration-color-2) !important; -} - -body:not(.remove-cloze-style) :is(.markdown-preview-view, -.markdown-rendered) em > mark > del:hover, -:is(.markdown-preview-view, -.markdown-rendered).cloze em > mark > del:hover { - cursor: pointer; - color: transparent; -} - -body:not(.remove-cloze-style) :is(.markdown-preview-view, -.markdown-rendered) em > mark > del:active, -:is(.markdown-preview-view, -.markdown-rendered).cloze em > mark > del:active { - color: var(--accent-strong); - background-color: transparent; - transition: all 400ms ease-in-out; -} - -body:not(.remove-cloze-style) .cm-s-obsidian .cm-em.cm-formatting.cm-formatting-em.cm-em.cm-formatting.cm-formatting-em~.cm-em.cm-formatting.cm-formatting-highlight.cm-highlight~.cm-em.cm-formatting.cm-formatting-strikethrough.cm-highlight.cm-strikethrough~span.cm-em.cm-highlight.cm-strikethrough:not([class*="formatting"]), -body:not(.remove-cloze-style) .cm-s-obsidian .cm-em.cm-formatting.cm-formatting-em.cm-em.cm-formatting.cm-formatting-em~.cm-em.cm-formatting.cm-formatting-highlight.cm-highlight~.cm-em.cm-formatting.cm-formatting-strikethrough.cm-highlight.cm-strikethrough:not([class*="formatting"]), -.markdown-source-view.cloze .cm-em.cm-formatting.cm-formatting-em.cm-em.cm-formatting.cm-formatting-em~.cm-em.cm-formatting.cm-formatting-highlight.cm-highlight~.cm-em.cm-formatting.cm-formatting-strikethrough.cm-highlight.cm-strikethrough~span.cm-em.cm-highlight.cm-strikethrough, -.markdown-source-view.cloze .cm-em.cm-formatting.cm-formatting-em.cm-em.cm-formatting.cm-formatting-em~.cm-em.cm-formatting.cm-formatting-highlight.cm-highlight~.cm-em.cm-formatting.cm-formatting-strikethrough.cm-highlight.cm-strikethrough { - color: var(--accent-strong) !important; - text-decoration: underline var(--cloze-decoration-2) var(--cloze-decoration-color-2) !important; -} -body:not(.remove-cloze-style) .cm-s-obsidian .cm-em.cm-formatting.cm-formatting-em.cm-em.cm-formatting.cm-formatting-em~.cm-em.cm-formatting.cm-formatting-highlight.cm-highlight~.cm-em.cm-formatting.cm-formatting-strikethrough.cm-highlight.cm-strikethrough~span.cm-em.cm-highlight.cm-strikethrough, -body:not(.remove-cloze-style) .cm-s-obsidian .cm-em.cm-formatting.cm-formatting-em.cm-em.cm-formatting.cm-formatting-em~.cm-em.cm-formatting.cm-formatting-highlight.cm-highlight~.cm-em.cm-formatting.cm-formatting-strikethrough.cm-highlight.cm-strikethrough{ - background-color: transparent !important; -} -body:not(.remove-cloze-style) .markdown-source-view:not([class*="cm5"]) .cm-em.cm-formatting.cm-formatting-em.cm-em.cm-formatting.cm-formatting-em~.cm-em.cm-formatting.cm-formatting-highlight.cm-highlight~.cm-em.cm-formatting.cm-formatting-strikethrough.cm-highlight.cm-strikethrough~span.cm-em.cm-highlight.cm-strikethrough~.cm-em.cm-formatting.cm-formatting-highlight.cm-highlight, -.markdown-source-view:not([class*="cm5"]).cloze .cm-em.cm-formatting.cm-formatting-em.cm-em.cm-formatting.cm-formatting-em~.cm-em.cm-formatting.cm-formatting-highlight.cm-highlight~.cm-em.cm-formatting.cm-formatting-strikethrough.cm-highlight.cm-strikethrough~span.cm-em.cm-highlight.cm-strikethrough~.cm-em.cm-formatting.cm-formatting-highlight.cm-highlight { - background-color: var(--bg-color-highlight-1) !important; - color: var(--color-highlight-1); - font-style: normal; -} - -body:not(.remove-cloze-style) :is(.markdown-preview-view, -.markdown-rendered) em > del, -:is(.markdown-preview-view, -.markdown-rendered).cloze em > del { - background-color: var(--cloze-bg-color-3); - color: var(--cloze-bg-color-3); - font-style: normal; - text-decoration: underline var(--cloze-decoration-3) var(--cloze-decoration-color-3); -} - -body:not(.remove-cloze-style) :is(.markdown-preview-view, -.markdown-rendered) em > del:hover, -:is(.markdown-preview-view, -.markdown-rendered).cloze em > del:hover { - background-color: transparent; - color: var(--text-normal); - transition: all 400ms ease-in-out; -} - -body:not(.remove-cloze-style) .markdown-source-view.is-live-preview .cm-em.cm-strikethrough, -.markdown-source-view.is-live-preview.cloze .cm-em.cm-strikethrough { - background-color: var(--cloze-bg-color-3); - color: var(--cloze-bg-color-3); - font-style: normal; - text-decoration: underline var(--cloze-decoration-3) var(--cloze-decoration-color-3); -} - -body:not(.remove-cloze-style) .markdown-source-view.is-live-preview .cm-em.cm-strikethrough:hover, -.markdown-source-view.is-live-preview.cloze .cm-em.cm-strikethrough:hover { - background-color: transparent !important; - color: var(--text-normal) !important; - transition: all 400ms ease-in-out; -} - -body:not(.remove-cloze-style) .cm-em.cm-formatting.cm-formatting-em~.cm-em.cm-formatting.cm-formatting-strikethrough.cm-strikethrough, -.markdown-source-view.cloze .cm-em.cm-formatting.cm-formatting-em~.cm-em.cm-formatting.cm-formatting-strikethrough.cm-strikethrough { - color: var(--accent-strong); - text-decoration: none; -} -body:not(.remove-cloze-style) .cm-em.cm-formatting.cm-formatting-em~.cm-em.cm-formatting.cm-formatting-strikethrough.cm-strikethrough~span.cm-em.cm-strikethrough:not([class*="formatting"]), -.markdown-source-view.cloze .cm-em.cm-formatting.cm-formatting-em~.cm-em.cm-formatting.cm-formatting-strikethrough.cm-strikethrough~span.cm-em.cm-strikethrough:not([class*="formatting"]) { - font-style: normal; - color: var(--accent-strong); - text-decoration: underline var(--cloze-decoration-3) var(--cloze-decoration-color-3); -} - -span.cm-strong.cm-em.cm-highlight { - background-image: initial; - background-clip: initial; - -webkit-background-clip: initial; - -webkit-text-fill-color: var(--strong-em-highlight-color); - background-color: var(--text-highlight-bg); -} - - - -/* body.default-icons .nav-folder.mod-root .nav-folder > .nav-folder-children { - margin: 0 0 0 16px; -} */ - -/* .nav-folder.mod-root .nav-folder > .nav-folder-children { - margin: 0 0 0 13px; -} */ - -.nav-folder.mod-root .nav-folder > .nav-folder-children:hover { - border-left-color: var(--theme-color-translucent-04); -} - -.view-header-title-container:after, -.view-header-title-container::before { - display: none; -} - -.workspace-leaf.mod-active .view-header-icon { - color: var(--interactive-accent); - cursor: grab; - position: relative; -} - -body.hide-titlebar-text .titlebar-text { - display: none -} - -.titlebar-left { - width: 30px; -} - -/*change color when hover*/ -.titlebar-button.mod-back:hover, -.titlebar-button.mod-forward:hover, -.titlebar-button.mod-maximize:hover, -.titlebar-button.mod-minimize:hover, -.workspace-ribbon-collapse-btn:hover { - color: var(--theme-color); -} - -.titlebar-button { - -webkit-app-region: no-drag; - padding: 0 9px; - cursor: pointer; - opacity: 0.8; -} - -.titlebar-button:hover { - opacity: 1; -} - -.workspace-tab-header-inner { - padding: 3px 9px; -} - -/*reduce space of header buttons*/ -body:not(.is-mobile) div.nav-header { - padding: 3px 2px; - line-height: 1; -} - -div.nav-buttons-container { - margin: 1px; -} - -.workspace-leaf-content[data-type='file-explorer'] .nav-buttons-container { - margin-right: 2px; - border-radius: var(--radius-s); -} - -input.search-input { - margin: -2px 0px -3px 0px; -} - -.nav-action-button { - margin: 0px 5px !important; -} - - -/*tag page button*/ -.nav-buttons-container>.nav-action-button, -.nav-buttons-container>.nav-action-button.is-active { - padding: 3px 2px 1px; -} - -.titlebar-text { - font-size: var(--font-size-obsidian-titlebar); - font-weight: 600; -} - -body:not(.is-focused) .titlebar-text { - opacity: 0.5; -} - -.side-dock-ribbon-tab:hover, -.side-dock-ribbon-action:hover { - color: var(--theme-color); -} - -.side-dock-settings { - margin-top: auto; - margin-bottom: 2px; -} - -.workspace-leaf-content[data-type="file-explorer"] .nav-folder.mod-root>.nav-folder-title { - padding-left: 5px; - font-size: var(--font-size-vault-name); - font-family: var(--font-family-vault); - font-weight: bolder; - text-shadow: 1px 1px 6px var(--theme-color-translucent-04); - cursor: default; -} - -.theme-dark .nav-folder.mod-root>.nav-folder-title { - color: var(--theme-color); - text-shadow: none; -} - -.theme-dark .nav-folder.mod-root>.nav-folder-title:hover { - background-color: var(--background-secondary-alt); - color: var(--text-muted); - opacity: 1; -} - -.theme-light .nav-folder.mod-root>.nav-folder-title:hover { - background-color: var(--background-secondary-alt); - text-shadow: 1px 1px 5px #ffffff7c; - color: var(--theme-color); - opacity: 1; -} - -/*=======search panel=======*/ -.search-result-file-title { - color: var(--search-result-file-title-color); -} - -.workspace-leaf-content[data-type="outgoing-link"] .search-result-file-match { - padding: 4px 10px; - left: 0; -} - -.backlink-pane .search-result-container { - margin-left: 3px; -} - -.search-result-file-matches { - border-bottom: none; - margin-bottom: 0; -} - -.tree-item-self.is-clickable:hover { - background-color: transparent; - color: var(--search-result-file-title-color); -} - -.tree-item-self.is-clickable.is-collapsed .tree-item-inner { - opacity: 0.6; -} - -.tag-container .tree-item-self.tag-pane-tag.is-clickable:hover { - background-color: var(--theme-color-translucent-015); - color: var(--text-normal); -} - -.outline .tree-item-self.is-clickable:hover { - background-color: var(--theme-color-translucent-015); - color: var(--text-normal); -} -.outline .tree-item-self { - font-size: var(--font-size-outline); -} - -.search-result-file-match:hover { - background-color: var(--background-secondary-alt); - color: var(--text-normal); -} - -span.search-result-file-matched-text { - color: var(--search-text); - background-color: var(--search-result-file-matched-bg); - opacity: 0.8; -} - -.is-flashing { - background-color: var(--search-result-file-matched-bg); -} - -/* background of search result */ -.search-result { - border-radius: var(--radius-s); - margin: 0 0 0 1px; -} - -.tree-item.search-result .tree-item-self.search-result-file-title.is-clickable { - padding-left: 15px; -} - -span.obsidian-search-match-highlight { - background-color: var(--text-search-highlight-bg) !important; -} - -.search-result-file-match:after { - display: none; -} - -.search-input { - display: block; - margin: 0 auto 10px auto; - width: calc(100% - 20px); -} - -.nav-action-button>svg { - width: 17px; - height: 17px; -} - -/*code box unfold icon*/ -.CodeMirror-foldgutter-open.CodeMirror-guttermarker-subtle::after { - color: var(--text-accent); -} - -.CodeMirror-gutter.CodeMirror-linenumbers, -.CodeMirror-gutter.CodeMirror-foldgutter { - background-color: transparent; -} - -/*checkbox*/ -span.cm-formatting-task.cm-property { - color: var(--text-accent); -} - -:is(.markdown-preview-view,.markdown-rendered,.markdown-reading-view) .task-list-item-checkbox { - top: 0.25em; -} - -/* -.markdown-source-view.mod-cm6 .task-list-label .task-list-item-checkbox { - margin-left: -1.5px; - margin-top: 0px; - margin-bottom: 2px; - margin-right:3px; - vertical-align: middle; - top: 0; -} -.markdown-source-view.mod-cm6 .cm-formatting-list-ol ~ .task-list-label .task-list-item-checkbox { - margin-left: 3px; -} -*/ -input[type=checkbox] { - -webkit-appearance: none; - appearance: none; - border-radius: var(--radius-xs); - border: 1px solid var(--background-modifier-border-checkbox); - padding: 0; - margin: 0 2px 2px 0; - width: var(--checkbox-size); - height: var(--checkbox-size); -} -input[type=checkbox]:hover { - border: 1px solid var(--theme-color); -} - -ul > li.task-list-item.is-checked, -.markdown-source-view.mod-cm6 .HyperMD-task-line[data-task] { - text-decoration: none; -} - -body.toggle-checked-decoration .markdown-source-view.mod-cm6 .HyperMD-task-line[data-task="x"], -body.toggle-checked-decoration .markdown-source-view.mod-cm6 .HyperMD-task-line[data-task="X"], -body.toggle-checked-decoration ul > li.task-list-item[data-task="x"], -body.toggle-checked-decoration ul > li.task-list-item[data-task="X"] { - text-decoration: var(--checklist-done-decoration); -} - -.task-list-item-checkbox { - filter: hue-rotate(0); -} - -input[type=checkbox]:checked:after { - display: none; -} - -.is-flashing input[type=checkbox]:checked, -input[type=checkbox]:checked { - border-radius: var(--radius-xs); - border: none; - background-repeat: no-repeat; - background-position: center; - background-size: 120%; - background-image: url('data:image/svg+xml; utf8, '); - background-color: var(--checkbox-color-0); -} - -body:not(.unmute-checkbox-animation) .is-flashing input.task-list-item-checkbox[type=checkbox]:checked:hover, -body:not(.unmute-checkbox-animation) input.task-list-item-checkbox[type=checkbox]:checked:hover { - animation: tada 1s; - filter: hue-rotate(160deg) !important; -} - - -/* SVG Plane-right; bujo: task-migrated/waiting */ -input[data-task=">"]:checked, -li[data-task=">"]>input:checked, -li[data-task=">"]>p>input:checked { - background-color: var(--checkbox-color-1); - background-image: url('data:image/svg+xml; utf8, '); -} -:is(.markdown-preview-view,.markdown-rendered) ul.contains-task-list li.task-list-item.is-checked[data-task=">"], -:is(.markdown-preview-view,.markdown-rendered) ol.contains-task-list li.task-list-item.is-checked[data-task=">"], -.markdown-source-view.is-live-preview input.task-list-item-checkbox[data-task=">"] { - text-decoration: none !important; - color: var(--text-normal); -} -/* SVG Plane-left; bujo: task-scheduled/delegated */ -input[data-task="<"]:checked, -li[data-task="<"]>input:checked, -li[data-task="<"]>p>input:checked { - background-color: var(--checkbox-color-2); - background-image: url('data:image/svg+xml; utf8, '); -} -input[data-task="?"]:checked, -li[data-task="?"]>input:checked, -li[data-task="?"]>p>input:checked { - background-color: var(--checkbox-color-3); - background-image: url('data:image/svg+xml; utf8, '); -} - -input[data-task="!"]:checked, -li[data-task="!"]>input:checked, -li[data-task="!"]>p>input:checked { - background-color: var(--checkbox-color-4); - background-image: url('data:image/svg+xml; utf8, '); -} - -input[data-task="+"]:checked, -li[data-task="+"]>input:checked, -li[data-task="+"]>p>input:checked { - background-color: var(--checkbox-color-5); - background-image: url('data:image/svg+xml; utf8, '); -} -input[data-task="-"]:checked, -li[data-task="-"]>input:checked, -li[data-task="-"]>p>input:checked { - background-color: var(--checkbox-color-6); - background-image: url('data:image/svg+xml; utf8, '); -} - -ul > li[data-task="-"].task-list-item.is-checked, .markdown-source-view.mod-cm6 .HyperMD-task-line[data-task="-"] { - text-decoration: line-through !important; -} - -body.extend-checkbox-list input[data-task="“"]:checked, -body.extend-checkbox-list li[data-task="“"]>input:checked, -body.extend-checkbox-list li[data-task="“"]>p>input:checked { - background-color: transparent; - background-image: url('data:image/svg+xml; utf8, '); -} - -body.extend-checkbox-list input[data-task="…"]:checked, -body.extend-checkbox-list li[data-task="…"]>input:checked, -body.extend-checkbox-list li[data-task="…"]>p>input:checked { - background-color: transparent; - background-image: url('data:image/svg+xml; utf8, '); -} - -body.extend-checkbox-list input[data-task="/"]:checked, -body.extend-checkbox-list li[data-task="/"]>input:checked, -body.extend-checkbox-list li[data-task="/"]>p>input:checked { - background-color: transparent; - background-image: url('data:image/svg+xml; utf8, '); -} - -body.extend-checkbox-list input[data-task="."]:checked, -body.extend-checkbox-list li[data-task="."]>input:checked, -body.extend-checkbox-list li[data-task="."]>p>input:checked { - background-color: transparent; - background-image: url('data:image/svg+xml; utf8, '); -} - -body.extend-checkbox-list input[data-task="d"]:checked, -body.extend-checkbox-list li[data-task="d"]>input:checked, -body.extend-checkbox-list li[data-task="d"]>p>input:checked { - background-color: transparent; - background-image: url('data:image/svg+xml; utf8, '); -} - -body.extend-checkbox-list input[data-task="u"]:checked, -body.extend-checkbox-list li[data-task="u"]>input:checked, -body.extend-checkbox-list li[data-task="u"]>p>input:checked { - background-color: transparent; - background-image: url('data:image/svg+xml; utf8, '); -} - - -body.extend-checkbox-list input[data-task="A"]:checked, -body.extend-checkbox-list li[data-task="A"]>input:checked, -body.extend-checkbox-list li[data-task="A"]>p>input:checked { - background-color: transparent; - background-image: url('data:image/svg+xml; utf8, '); -} - -body.extend-checkbox-list input[data-task="D"]:checked, -body.extend-checkbox-list li[data-task="D"]>input:checked, -body.extend-checkbox-list li[data-task="D"]>p>input:checked { - background-color: transparent; - background-image: url('data:image/svg+xml; utf8, '); -} - -body.extend-checkbox-list input:is([data-task="¥"],[data-task="$"]):checked, -body.extend-checkbox-list li:is([data-task="¥"],[data-task="$"])>input:checked, -body.extend-checkbox-list li:is([data-task="¥"],[data-task="$"])>p>input:checked { - background-color: transparent; - background-image: url('data:image/svg+xml; utf8, '); -} - -body.extend-checkbox-list input[data-task="*"]:checked, -body.extend-checkbox-list li[data-task="*"]>input:checked, -body.extend-checkbox-list li[data-task="*"]>p>input:checked { - background-color: transparent; - background-image: url('data:image/svg+xml; utf8, '); -} - -@keyframes fade-left { - 0% {-webkit-transform: translateX(-10px); transform: translateX(-10px); opacity: 0;} - 75% {-webkit-transform: translateX(0); transform: translateX(0); opacity: 1;} -} - -@keyframes tada { - from {-webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1);} - 10%, - 20% {-webkit-transform: scale3d(.95, .95, .95) rotate3d(0, 0, 1, -10deg);transform: scale3d(.95, .95, .95) rotate3d(0, 0, 1, -10deg);} - 30%, - 50%, - 70%, - 90% {-webkit-transform: scale3d(1, 1, 1) rotate3d(0, 0, 1, 10deg);transform: scale3d(1, 1, 1) rotate3d(0, 0, 1, 10deg);} - 40%, - 60%, - 80% {-webkit-transform: rotate3d(0, 0, 1, -10deg); transform: rotate3d(0, 0, 1, -10deg);} - to {-webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1);} -} - -body.circular-checkbox input[type=checkbox] { - border-radius: 50%; -} - -/* headers */ -/*编辑状态是否显示H1 H2标记*/ -/*适配Live preview模式*/ -body.clutter-free-headings div:not(.cm-active).cm-line span:not(.cm-formatting-header):not(.cm-hashtag):not(.cm-inline-code):not(.cm-highlight).cm-header::before { - font-size: 0.6rem; - width: auto; - margin-right: 1px; - border-radius: var(--radius-xs); - color: var(--text-muted); - overflow: visible; - font-family: var(--font-interface); - font-weight: normal !important; -} - -body.clutter-free-headings div.mod-cm6.is-live-preview div:not(.cm-active).cm-line .cm-header ~ span.cm-header::before, -body.clutter-free-headings div.mod-cm6.is-live-preview div:not(.cm-active).cm-line .cm-header.cm-hmd-internal-link::before { - display: none; -} - -body.clutter-free-headings div:not(.cm-active).cm-line span:not(.cm-formatting-header).cm-header-1::before { - content: 'H1'; - margin-top: calc(var(--h1-size) - 0.1em); -} - -body.clutter-free-headings div:not(.cm-active).cm-line span:not(.cm-formatting-header).cm-header-2::before { - content: 'H2'; - margin-top: calc(var(--h2-size) - 0.2em); -} - -body.clutter-free-headings div:not(.cm-active).cm-line span:not(.cm-formatting-header).cm-header-3::before { - content: 'H3'; - margin-top: calc(var(--h3-size) - 0.2em); -} -body.clutter-free-headings div:not(.cm-active).cm-line span:not(.cm-formatting-header).cm-header-4::before { - content: 'H4'; - margin-top: calc(var(--h4-size) - 0.3em); -} - -body.clutter-free-headings div:not(.cm-active).cm-line span:not(.cm-formatting-header).cm-header-5::before { - content: 'H5'; - margin-top: calc(var(--h5-size) - 0.4em); -} - -body.clutter-free-headings div:not(.cm-active).cm-line span:not(.cm-formatting-header).cm-header-6::before { - content: 'H6'; - margin-top: calc(var(--h6-size) - 0.4em); -} - -/*适配source mode 模式*/ -body.clutter-free-headings div.mod-cm6:not(.is-live-preview) div:not(.cm-active).cm-line span:not(.cm-formatting-header).cm-header ~ span.cm-header::before { - display: none; -} -body.clutter-free-headings div.mod-cm6:not(.is-live-preview) div:not(.cm-active).cm-line span.cm-formatting-header { - display:none; -} -/*适配传统模式*/ -body.clutter-free-headings div:not(.CodeMirror-activeline)>.CodeMirror-line.hmd-inactive-line span.cm-formatting-header::before { - position: absolute; - margin-top: 10px; - font-size: 0.7rem; - width: auto; - margin-left: -18px; - padding: 0px 2px; - border-radius: var(--radius-xs); - color: var(--text-muted); - overflow: visible; - font-family: var(--font-default); - font-weight: normal !important; -} -body.clutter-free-headings div:not(.CodeMirror-activeline)>.CodeMirror-line:not(.hmd-inactive-line) span.cm-formatting-header::before { - position: absolute; - margin-top: 10px; - font-size: 0.7rem; - width: auto; - margin-left: -6px; - border-radius: var(--radius-xs); - color: var(--text-muted); - overflow: visible; - font-family: var(--font-default); - font-weight: normal !important; -} - -body.clutter-free-headings div:not(.CodeMirror-activeline)>.CodeMirror-line span.cm-formatting-header { - color: transparent !important; - background: none; -} - -body.clutter-free-headings div:not(.CodeMirror-activeline)>.CodeMirror-line span.cm-formatting-header-1::before { - content: 'H1'; -} -body.clutter-free-headings div:not(.CodeMirror-activeline)>.CodeMirror-line span.cm-formatting-header-2::before { - content: 'H2'; -} -body.clutter-free-headings div:not(.CodeMirror-activeline)>.CodeMirror-line span.cm-formatting-header-3::before { - content: 'H3'; -} -body.clutter-free-headings div:not(.CodeMirror-activeline)>.CodeMirror-line span.cm-formatting-header-4::before { - content: 'H4'; -} -body.clutter-free-headings div:not(.CodeMirror-activeline)>.CodeMirror-line span.cm-formatting-header-5::before { - content: 'H5'; -} -body.clutter-free-headings div:not(.CodeMirror-activeline)>.CodeMirror-line span.cm-formatting-header-6::before { - content: 'H6'; -} - -body.h1-toggle-underline :is(.markdown-preview-view,.markdown-rendered) h1, -body.h1-toggle-underline .markdown-source-view.is-live-preview .HyperMD-header.HyperMD-header-1.cm-line { - border-bottom: var(--h1-underline-width, 2px) var(--h1-underline-style, solid) var(--h1-underline-color, var(--h1-color)); -} -body.h2-toggle-underline :is(.markdown-preview-view,.markdown-rendered) h2, -body.h2-toggle-underline .markdown-source-view.is-live-preview .HyperMD-header.HyperMD-header-2.cm-line { - border-bottom: var(--h2-underline-width, 1px) var(--h2-underline-style, solid) var(--h2-underline-color, var(--h2-color)); -} -body.h3-toggle-underline :is(.markdown-preview-view,.markdown-rendered) h3, -body.h3-toggle-underline .markdown-source-view.is-live-preview .HyperMD-header.HyperMD-header-3.cm-line { - border-bottom: var(--h3-underline-width, 1px) var(--h3-underline-style, solid) var(--h3-underline-color, var(--h3-color)); -} -body.h4-toggle-underline :is(.markdown-preview-view,.markdown-rendered) h4, -body.h4-toggle-underline .markdown-source-view.is-live-preview .HyperMD-header.HyperMD-header-4.cm-line { - border-bottom: var(--h4-underline-width, 1px) var(--h4-underline-style, solid) var(--h4-underline-color, var(--h4-color)); -} -body.h5-toggle-underline :is(.markdown-preview-view,.markdown-rendered) h5, -body.h5-toggle-underline .markdown-source-view.is-live-preview .HyperMD-header.HyperMD-header-5.cm-line { - border-bottom: var(--h5-underline-width, 1px) var(--h5-underline-style, solid) var(--h5-underline-color, var(--h5-color)); -} -body.h6-toggle-underline :is(.markdown-preview-view,.markdown-rendered) h6, -body.h6-toggle-underline .markdown-source-view.is-live-preview .HyperMD-header.HyperMD-header-6.cm-line { - border-bottom: var(--h6-underline-width, 1px) var(--h6-underline-style, solid) var(--h6-underline-color, var(--h6-color)); -} - -body.inline-title-toggle-underline .inline-title { - border-bottom: var(--inline-title-underline-width, 2px) var(--inline-title-underline-style, solid) var(--inline-title-underline-color, var(--h1-color)); -} - -body.h1-toggle-short-underline :is(.markdown-preview-view,.markdown-rendered) h1, -body.h2-toggle-short-underline :is(.markdown-preview-view,.markdown-rendered) h2, -body.h3-toggle-short-underline :is(.markdown-preview-view,.markdown-rendered) h3, -body.h4-toggle-short-underline :is(.markdown-preview-view,.markdown-rendered) h4, -body.h5-toggle-short-underline :is(.markdown-preview-view,.markdown-rendered) h5, -body.h6-toggle-short-underline :is(.markdown-preview-view,.markdown-rendered) h6, -body.h1-toggle-short-underline .markdown-source-view.is-live-preview .HyperMD-header.HyperMD-header-1.cm-line, -body.h2-toggle-short-underline .markdown-source-view.is-live-preview .HyperMD-header.HyperMD-header-2.cm-line, -body.h3-toggle-short-underline .markdown-source-view.is-live-preview .HyperMD-header.HyperMD-header-3.cm-line, -body.h4-toggle-short-underline .markdown-source-view.is-live-preview .HyperMD-header.HyperMD-header-4.cm-line, -body.h5-toggle-short-underline .markdown-source-view.is-live-preview .HyperMD-header.HyperMD-header-5.cm-line, -body.h6-toggle-short-underline .markdown-source-view.is-live-preview .HyperMD-header.HyperMD-header-6.cm-line, -body.inline-title-toggle-short-underline .inline-title { - text-decoration: underline; -} - -body.header-1-background .cm-header-1, -body.header-1-background :is(.markdown-preview-view,.markdown-rendered) h1 { - background-color: var(--h1-bg-color); -} -body.header-2-background .cm-header-2, -body.header-2-background :is(.markdown-preview-view,.markdown-rendered) h2 { - background-color: var(--h2-bg-color); -} -body.header-3-background .cm-header-3, -body.header-3-background :is(.markdown-preview-view,.markdown-rendered) h3 { - background-color: var(--h3-bg-color); -} -body.header-4-background .cm-header-4, -body.header-4-background :is(.markdown-preview-view,.markdown-rendered) h4 { - background-color: var(--h4-bg-color); -} -body.header-5-background .cm-header-5, -body.header-5-background :is(.markdown-preview-view,.markdown-rendered) h5 { - background-color: var(--h5-bg-color); -} -body.header-6-background .cm-header-6, -body.header-6-background :is(.markdown-preview-view,.markdown-rendered) h6 { - background-color: var(--h6-bg-color); -} - -body.toggle-inline-title-background .inline-title { - background: no-repeat center/100% var(--inline-title-bg-url) var(--inline-title-bg-color); -} - -.cm-contentContainer :is(.cm-header-1,.cm-header-2,.cm-header-3,.cm-header-4) { - line-height: calc(var(--paragraph-spacing) + 0.5); -} - -body.h1-text-align-center .HyperMD-header.HyperMD-header-1.cm-line, -body.h2-text-align-center .HyperMD-header.HyperMD-header-2.cm-line, -body.h3-text-align-center .HyperMD-header.HyperMD-header-3.cm-line, -body.h4-text-align-center .HyperMD-header.HyperMD-header-4.cm-line, -body.h5-text-align-center .HyperMD-header.HyperMD-header-5.cm-line, -body.h6-text-align-center .HyperMD-header.HyperMD-header-6.cm-line, -body.h1-text-align-center :is(.markdown-preview-view,.markdown-rendered) h1, -body.h2-text-align-center :is(.markdown-preview-view,.markdown-rendered) h2, -body.h3-text-align-center :is(.markdown-preview-view,.markdown-rendered) h3, -body.h4-text-align-center :is(.markdown-preview-view,.markdown-rendered) h4, -body.h5-text-align-center :is(.markdown-preview-view,.markdown-rendered) h5, -body.h6-text-align-center :is(.markdown-preview-view,.markdown-rendered) h6, -body.inline-title-text-align-center .inline-title { - text-align: center; -} -body.h1-text-align-end .HyperMD-header.HyperMD-header-1.cm-line, -body.h2-text-align-end .HyperMD-header.HyperMD-header-2.cm-line, -body.h3-text-align-end .HyperMD-header.HyperMD-header-3.cm-line, -body.h4-text-align-end .HyperMD-header.HyperMD-header-4.cm-line, -body.h5-text-align-end .HyperMD-header.HyperMD-header-5.cm-line, -body.h6-text-align-end .HyperMD-header.HyperMD-header-6.cm-line, -body.h1-text-align-end :is(.markdown-preview-view,.markdown-rendered) h1, -body.h2-text-align-end :is(.markdown-preview-view,.markdown-rendered) h2, -body.h3-text-align-end :is(.markdown-preview-view,.markdown-rendered) h3, -body.h4-text-align-end :is(.markdown-preview-view,.markdown-rendered) h4, -body.h5-text-align-end :is(.markdown-preview-view,.markdown-rendered) h5, -body.h6-text-align-end :is(.markdown-preview-view,.markdown-rendered) h6, -body.inline-title-text-align-end .inline-title { - text-align: end; -} - -body.retain-header-color :is(.markdown-preview-view,.markdown-rendered) :is(h1,h2,h3,h4,h5,h6) em, -body.retain-header-color :is(.markdown-preview-view,.markdown-rendered) :is(h1,h2,h3,h4,h5,h6) strong, -body.retain-header-color :is(.markdown-preview-view,.markdown-rendered) :is(h1,h2,h3,h4,h5,h6) strong em, -body.retain-header-color .cm-s-obsidian .cm-header[class*="cm-em"], -body.retain-header-color .cm-s-obsidian .cm-header[class*="cm-strong"] { - background-image: initial; - background-clip: initial; - -webkit-background-clip: initial; - -webkit-text-fill-color: initial; - background-color: initial; -} -body.retain-header-color :is(.markdown-preview-view,.markdown-rendered) h1 em, -body.retain-header-color :is(.markdown-preview-view,.markdown-rendered) h1 strong, -body.retain-header-color :is(.markdown-preview-view,.markdown-rendered) h1 strong em, -body.retain-header-color .cm-s-obsidian .cm-header.cm-header-1[class*="cm-em"], -body.retain-header-color .cm-s-obsidian .cm-header.cm-header-1[class*="cm-strong"] { - color: var(--h1-color) !important; - font-family: var(--h1-font) !important; -} -body.retain-header-color :is(.markdown-preview-view,.markdown-rendered) h2 em, -body.retain-header-color :is(.markdown-preview-view,.markdown-rendered) h2 strong, -body.retain-header-color :is(.markdown-preview-view,.markdown-rendered) h2 strong em, -body.retain-header-color .cm-s-obsidian .cm-header.cm-header-2[class*="cm-em"], -body.retain-header-color .cm-s-obsidian .cm-header.cm-header-2[class*="cm-strong"] { - color: var(--h2-color) !important; - font-family: var(--h2-font) !important; -} -body.retain-header-color :is(.markdown-preview-view,.markdown-rendered) h3 em, -body.retain-header-color :is(.markdown-preview-view,.markdown-rendered) h3 strong, -body.retain-header-color :is(.markdown-preview-view,.markdown-rendered) h3 strong em, -body.retain-header-color .cm-s-obsidian .cm-header.cm-header-3[class*="cm-em"], -body.retain-header-color .cm-s-obsidian .cm-header.cm-header-3[class*="cm-strong"] { - color: var(--h3-color) !important; - font-family: var(--h3-font) !important; -} -body.retain-header-color :is(.markdown-preview-view,.markdown-rendered) h4 em, -body.retain-header-color :is(.markdown-preview-view,.markdown-rendered) h4 strong, -body.retain-header-color :is(.markdown-preview-view,.markdown-rendered) h4 strong em, -body.retain-header-color .cm-s-obsidian .cm-header.cm-header-4[class*="cm-em"], -body.retain-header-color .cm-s-obsidian .cm-header.cm-header-4[class*="cm-strong"] { - color: var(--h4-color) !important; - font-family: var(--h4-font) !important; -} -body.retain-header-color :is(.markdown-preview-view,.markdown-rendered) h5 em, -body.retain-header-color :is(.markdown-preview-view,.markdown-rendered) h5 strong, -body.retain-header-color :is(.markdown-preview-view,.markdown-rendered) h5 strong em, -body.retain-header-color .cm-s-obsidian .cm-header.cm-header-5[class*="cm-em"], -body.retain-header-color .cm-s-obsidian .cm-header.cm-header-5[class*="cm-strong"] { - color: var(--h5-color) !important; - font-family: var(--h5-font) !important; -} -body.retain-header-color :is(.markdown-preview-view,.markdown-rendered) h6 em, -body.retain-header-color :is(.markdown-preview-view,.markdown-rendered) h6 strong, -body.retain-header-color :is(.markdown-preview-view,.markdown-rendered) h6 strong em, -body.retain-header-color .cm-s-obsidian .cm-header.cm-header-6[class*="cm-em"], -body.retain-header-color .cm-s-obsidian .cm-header.cm-header-6[class*="cm-strong"] { - color: var(--h6-color) !important; - font-family: var(--h6-font) !important; -} - -:is(.markdown-preview-section,.markdown-rendered):not(:first-child) :is(h1,h2,h3,h4,h5) { - margin-top: 13px !important; -} - -:is(.markdown-preview-section,.markdown-rendered):not(:first-child) h6 { - margin-top: 0 !important; - margin-bottom: 0 !important; -} - -/*preview Header hover*/ -/* adapted from Obsidian-Typora-Vue https://github.com/ZekunC/Obsidian-Typora-Vue-Theme */ -:is(.markdown-preview-view,.markdown-rendered) :is(h1,h2,h3,h4,h5,h6) { - position: relative; -} -body:not(.remove-heading-indicator) :is(.markdown-preview-view,.markdown-rendered) h1:hover::before { - content: 'H1'; - position: absolute; - font-size: 0.7rem; - width: auto; - margin-left: -24px; - border: 1px solid; - padding: 0px 2px; - border-radius: var(--radius-xs); - top: 25px; -} -body:not(.remove-heading-indicator) :is(.markdown-preview-view,.markdown-rendered) h2:hover::before { - content: 'H2'; - position: absolute; - font-size: 0.7rem; - width: auto; - margin-left: -25px; - border: 1px solid; - padding: 0px 2px; - border-radius: var(--radius-xs); - top: 23px; -} -body:not(.remove-heading-indicator) :is(.markdown-preview-view,.markdown-rendered) h3:hover::before { - content: 'H3'; - position: absolute; - font-size: 0.65rem; - width: auto; - margin-left: -25px; - border: 1px solid; - padding: 0px 2px; - border-radius: var(--radius-xs); - top: 22px; -} -body:not(.remove-heading-indicator) :is(.markdown-preview-view,.markdown-rendered) h4:hover::before { - content: 'H4'; - position: absolute; - font-size: 0.6rem; - width: auto; - margin-left: -25px; - border: 1px solid; - padding: 0px 2px; - border-radius: var(--radius-xs); - top: 22px; -} -body:not(.remove-heading-indicator) :is(.markdown-preview-view,.markdown-rendered) h5:hover::before { - content: 'H5'; - position: absolute; - font-size: 0.6rem; - width: auto; - margin-left: -25px; - border: 1px solid; - padding: 0px 2px; - border-radius: var(--radius-xs); - top: 22px; -} -body:not(.remove-heading-indicator) :is(.markdown-preview-view,.markdown-rendered) h6:hover::before { - content: 'H6'; - position: absolute; - font-size: 0.6rem; - width: auto; - margin-left: -25px; - border: 1px solid; - padding: 0px 2px; - border-radius: var(--radius-xs); - top: 22px; -} - -/*---*/ -.markdown-rendered hr { - border-color: var(--background-modifier-border-hr); -} - -/* inspired by Obsidianite */ -body.fancy-hr-icon .markdown-rendered hr { - overflow: initial; - margin-block-start: 2.5em; - margin-block-end: 2.5em; - border: none; - height: 0; - min-height: 0.7em; - border-bottom: 2px solid; - border-image-slice: 1; - border-width: 2px; - border-image: linear-gradient(to right, transparent 0%, var(--hr-color-icon-1) 30%, var(--hr-color-icon-2) 46%, transparent 46%, transparent 54%, var(--hr-color-icon-3) 54%, var(--hr-color-icon-4) 70%, transparent 100%) 1; -} - -body.fancy-hr-icon .markdown-rendered hr::after { - content: var(--fancy-hr-icon); - display: inline-block; - position: relative; - left: 50%; - font-size: 1em; - transform: translate(-50%, -0.35em) rotate(var(--fancy-hr-rotate)); - transform-origin: 50% 50%; - padding: 0.3rem; - color: var(--theme-color); -} - -body.fancy-hr-icon div:not(.CodeMirror-activeline) > .CodeMirror-line span.cm-hr { - opacity: 0; - position: relative; -} - -body.fancy-hr-icon div > .CodeMirror-line span.cm-hr { - display: inline-block; -} - -body.fancy-hr-icon div:not(.CodeMirror-activeline) > .CodeMirror-line.HyperMD-hr::before { - position: absolute; - content: ''; - width: 100%; - height: 2px; - border-image: linear-gradient(to right, transparent 0%, var(--hr-color-icon-1) 30%, var(--hr-color-icon-2) 46%, transparent 46%, transparent 54%, var(--hr-color-icon-3) 54%, var(--hr-color-icon-4) 70%, transparent 100%) 1; - left: 0; - top: 50%; -} - -body.fancy-hr-icon div:not(.CodeMirror-activeline) > .CodeMirror-line.HyperMD-hr::after { - content: var(--fancy-hr-icon); - display: inline-block; - position: absolute; - left: 50%; - top: 50%; - font-size: 1em; - transform: translate(-50%, -50%) rotate(var(--fancy-hr-rotate)); - transform-origin: 50% 50%; - padding: 0.5rem; - color: var(--theme-color); -} - -body.fancy-hr-icon .cm-s-obsidian hr { - border-image: linear-gradient(to right, transparent 0%, var(--hr-color-icon-1) 30%, var(--hr-color-icon-2) 46%, transparent 46%, transparent 54%, var(--hr-color-icon-3) 54%, var(--hr-color-icon-4) 70%, transparent 100%) 1; - border-width: 2px; -} - -body.fancy-hr-icon .markdown-source-view.mod-cm6 .hr::after { - content: var(--fancy-hr-icon); - display: inline-block; - position: absolute; - font-size: 1em; - left: 50%; - top: 50%; - transform: translate(-50%, -50%) rotate(var(--fancy-hr-rotate)); - transform-origin: 50% 50%; - padding: 0.5rem; - color: var(--theme-color); -} - -body.fancy-hr-no-icon .cm-s-obsidian hr { - border-image: linear-gradient(to right, transparent 0%, var(--hr-color-1) 20%, var(--hr-color-2) 40%, var(--hr-color-3) 60%, var(--hr-color-4) 80%, transparent 100%) 1; - border-width: 2px; -} - -body.fancy-hr-no-icon .markdown-rendered hr { - margin-block-start: 2.5em; - margin-block-end: 2.5em; - border: none; - height: 0; - border-bottom: 2px solid; - border-width: 2px; - border-image: linear-gradient(to right, transparent 0%, var(--hr-color-1) 20%, var(--hr-color-2) 40%, var(--hr-color-3) 60%, var(--hr-color-4) 80%, transparent 100%) 1; -} - -body.fancy-hr-no-icon div:not(.CodeMirror-activeline) > .CodeMirror-line.HyperMD-hr::before { - position: absolute; - content: ''; - width: 100%; - height: 2px; - background-image: linear-gradient(to right, transparent 0%, var(--hr-color-1) 20%, var(--hr-color-2) 40%, var(--hr-color-3) 60%, var(--hr-color-4) 80%, transparent 100%); - left: 0; - top: 50%; -} - -body.fancy-hr-number .markdown-rendered { - counter-reset: fancyhrno; -} - -body.fancy-hr-number .markdown-rendered hr { - overflow: initial; - margin-block-start: 2.5em; - margin-block-end: 2.5em; - border: none; - height: 0; - min-height: 0.7em; - border-bottom: 2px solid; - border-image-slice: 1; - border-width: 2px; - border-image-source: linear-gradient(to right, transparent 0%, var(--hr-color-numbers-line-1) 30%, var(--hr-color-numbers-line-2) 46%, transparent 46%, transparent 54%, var(--hr-color-numbers-line-3) 54%, var(--hr-color-numbers-line-4) 70%, transparent 100%); - counter-increment: fancyhrno; -} - -body.fancy-hr-number .markdown-rendered hr::after { - content: counter(fancyhrno); - display: inline-block; - font-family: var(--font-monospace-theme); - font-weight: bold; - position: relative; - left: 50%; - transform: translate(-50%, -0.2em); - color: var(--hr-color-numbers-color); - background: var(--hr-color-numbers-bg-color); - border-radius: 50%; - padding: 0 0.44em 0 0.5em; -} - -body.fancy-hr-number.hollow-number .markdown-rendered hr::after, -body.fancy-hr-number.hollow-number .markdown-source-view.mod-cm6 hr::after, -body.fancy-hr-number.hollow-number .markdown-source-view div:not(.CodeMirror-activeline) > .HyperMD-hr.CodeMirror-line::after { - -webkit-text-fill-color: var(--hr-numbers-text-fill); - -webkit-text-stroke: 1px var(--hr-numbers-text-stroke); - font-family: var(--font-text-theme); -} - -body.fancy-hr-number div:not(.CodeMirror-activeline) > .CodeMirror-line span.cm-hr { - opacity: 0; - position: relative; -} - -body.fancy-hr-number div > .CodeMirror-line span.cm-hr { - display: inline-block; -} - -body.fancy-hr-number .markdown-source-view { - counter-reset: fancyhrno1; -} - -body.fancy-hr-number .markdown-source-view div:not(.CodeMirror-activeline) > .HyperMD-hr.CodeMirror-line::before { - position: absolute; - content: ''; - width: 100%; - height: 2px; - background-image: linear-gradient(to right, transparent 0%, var(--hr-color-numbers-line-1) 30%, var(--hr-color-numbers-line-2) 46%, transparent 46%, transparent 54%, var(--hr-color-numbers-line-3) 54%, var(--hr-color-numbers-line-4) 70%, transparent 100%); - left: 0; - top: 50%; - counter-increment: fancyhrno1; -} - -body.fancy-hr-number .markdown-source-view div:not(.CodeMirror-activeline) > .HyperMD-hr.CodeMirror-line::after { - content: counter(fancyhrno1); - display: inline-block; - font-family: var(--font-monospace-theme); - font-weight: bold; - position: absolute; - left: 50%; - top: 50%; - transform: translate(-50%, -50%); - color: var(--hr-color-numbers-color); - background: var(--hr-color-numbers-bg-color); - border-radius: 50%; - padding: 0 0.44em 0 0.5em; -} - -body.fancy-hr-number .cm-s-obsidian hr { - border-image: linear-gradient(to right, transparent 0%, var(--hr-color-numbers-line-1) 30%, var(--hr-color-numbers-line-2) 46%, transparent 46%, transparent 54%, var(--hr-color-numbers-line-3) 54%, var(--hr-color-numbers-line-4) 70%, transparent 100%) 1; - border-width: 2px; - counter-increment: fancyhrno; -} - -body.fancy-hr-number .markdown-source-view.mod-cm6 { - counter-reset: fancyhrno; -} - -body.fancy-hr-number .markdown-source-view.mod-cm6 .hr::after { - left: 50%; - top: 50%; - content: counter(fancyhrno); - display: inline-block; - font-family: var(--font-monospace-theme); - font-weight: bold; - position: absolute; - transform: translate(-50%, -50%); - color: var(--hr-color-numbers-color); - background: var(--hr-color-numbers-bg-color); - border-radius: 50%; - padding: 0 0.45em 0 0.5em; -} - -.nav-files-container { - padding: 0 3px 10px; -} - -/* blockquote */ -:is(.markdown-preview-view,.markdown-rendered) blockquote { - padding: 0.5em 0.5em 0.5em 0.6em; - border-right-width: 0; - border-left: solid; - border-top-width: 0; - border-bottom-width: 0; - border-left-width: 5px; - border-color: var(--theme-color); - background-color: var(--background-blockquote); - border-radius: var(--radius-s); - margin-inline-start: 2.5%; - margin-inline-end: 2.5%; -} - -:is(.markdown-preview-view,.markdown-rendered) blockquote p { - margin-left: 1px; - margin-right: 0; - font-size: var(--font-size-preview-blockquote); -} - -body:not(.font-family-change-to-default) :is(.markdown-preview-view,.markdown-rendered), -body:not(.font-family-change-to-default) .markdown-source-view.mod-cm6 .cm-scroller, -body:not(.font-family-change-to-default) .markdown-source-view { - font-family: var(--font-text); -} - -/* preview page */ -:is(.markdown-preview-view,.markdown-rendered).is-readable-line-width :is(.markdown-preview-section,.markdown-rendered), -.markdown-source-view.is-readable-line-width .CodeMirror, -:is(.markdown-preview-view,.markdown-rendered).is-readable-line-width .markdown-preview-sizer, -:is(.markdown-preview-view,.markdown-rendered) :is(.markdown-preview-section,.markdown-rendered), -.markdown-source-view .CodeMirror, -:is(.markdown-preview-view,.markdown-rendered) .markdown-preview-sizer, -.markdown-source-view.mod-cm6 .cm-scroller, -.cm-s-obsidian.is-folding.is-readable-line-width .markdown-reading-view { - line-height: var(--line-height-main); - letter-spacing: calc(var(--letter-space-main) * 0.03em); - /*text-align: var();*/ - -webkit-font-smoothing: subpixel-antialiased; -} - -:is(.markdown-preview-view,.markdown-rendered).is-readable-line-width:not(.matrix) .markdown-preview-sizer, -.markdown-source-view.is-readable-line-width:not(.matrix) .CodeMirror, -:is(.markdown-preview-view,.markdown-rendered):not(.matrix) .is-readable-line-width :is(.markdown-preview-section,.markdown-rendered), -:is(.markdown-preview-view,.markdown-rendered):not(.matrix) .is-readable-line-width :is(.markdown-preview-section,.markdown-rendered) > div, -:is(.markdown-preview-view,.markdown-rendered).is-readable-line-width:not(.matrix) :is(.markdown-preview-section,.markdown-rendered) { - width: var(--file-line-width); - max-width: 100%; - margin: 0 auto; -} - -.markdown-source-view.mod-cm6.is-readable-line-width:not(.is-rtl) .cm-contentContainer { - max-width: var(--file-line-width); -} - -.markdown-source-view.mod-cm6.is-readable-line-width:not(.is-rtl) .cm-content { -/* width: var(--file-line-width); - max-width: 100%; */ - margin: 0 auto; -} - -.markdown-source-view.mod-cm6.is-line-wrap.is-readable-line-width .cm-line:not(.HyperMD-table-row) { - max-width: 100%; -} - -body:not(.default-split-style) .workspace>.workspace-split:not(.mod-root) .CodeMirror, -body:not(.default-split-style) .workspace>.workspace-split:not(.mod-root) .cm-scroller, -body:not(.default-split-style) .workspace>.workspace-split:not(.mod-root) .markdown-preview-sizer { - line-height: var(--line-height-split); - font-size: var(--font-size-split); -} - - -body:not(.default-split-style) .workspace>.workspace-split:not(.mod-root) .cm-lineNumbers .cm-gutterElement { - padding: 0; -} - -/* code */ -.cm-s-obsidian .hmd-fold-html-stub, -.cm-s-obsidian .hmd-fold-code-stub, -.cm-s-obsidian.CodeMirror .HyperMD-hover > .HyperMD-hover-content code, -body:not(.tag-default) .cm-s-obsidian .cm-formatting-hashtag, -.cm-s-obsidian .cm-inline-code, -.cm-s-obsidian .HyperMD-codeblock, -.cm-s-obsidian .HyperMD-hr, -.cm-s-obsidian .cm-hmd-frontmatter, -.cm-s-obsidian .cm-hmd-orgmode-markup, -.cm-s-obsidian .cm-formatting-code, -.cm-s-obsidian .cm-math, -.cm-s-obsidian span.hmd-fold-math-placeholder, -.cm-s-obsidian .CodeMirror-linewidget kbd, -.cm-s-obsidian .hmd-fold-html kbd { - font-family: var(--font-monospace); -} -.is-live-preview .admonition-content .math-block>mjx-container { - padding: 0.3em 0; -} - -.math.math-block mjx-container[jax='CHTML'] { - outline: none; - font-size: var(--font-size-latex); -} - -.markdown-source-view mjx-math, -:is(.markdown-preview-view,.markdown-rendered) :not(:is(h1,h2,h3,h4,h5,h6))>.math>mjx-container>mjx-math { - color: var(--mjx-inline-math-color); -} -.markdown-source-view .cm-header-1 ~ .math mjx-math { - color: var(--h1-color); -} -.markdown-source-view .cm-header-2 ~ .math mjx-math { - color: var(--h2-color); -} -.markdown-source-view .cm-header-3 ~ .math mjx-math { - color: var(--h3-color); -} -.markdown-source-view .cm-header-4 ~ .math mjx-math { - color: var(--h4-color); -} -.markdown-source-view .cm-header-5 ~ .math mjx-math { - color: var(--h5-color); -} -.markdown-source-view .cm-header-6 ~ .math mjx-math { - color: var(--h6-color); -} - -div.math.math-block mjx-math{ - color: var(--mjx-math-color); -} - -.cm-s-obsidian pre.HyperMD-codeblock, -:is(.markdown-preview-view,.markdown-rendered) code, -.markdown-rendered code { - color: var(--text-color-code); - font-size: var(--font-size-code) !important; - font-family: var(--font-monospace); - text-align: start; -} -.cm-s-obsidian span.cm-math:not(.cm-formatting-math-begin):not(.cm-formatting-math-end) { - font-size: var(--font-size-code) !important; - font-family: var(--font-monospace); - text-align: start; -} - -.cm-s-obsidian .cm-widgetBuffer[aria-hidden="true"]+.cm-inline-code:has(+ .cm-widgetBuffer[aria-hidden="true"]) { - border-radius: var(--radius-s); - padding: 2px 2px 1px; -} - -.cm-s-obsidian div.HyperMD-codeblock-bg { - border-left: none; - border-right: none; - border-top: none; -} - -:is(.markdown-preview-view,.markdown-rendered) pre { - background-color: var(--background-code); - padding: 1em 1.5em; -} - -:is(.markdown-preview-view,.markdown-rendered) code { - vertical-align: auto; - background-color: var(--background-code-2) ; -} - -:is(.markdown-preview-view,.markdown-rendered) pre code { - background-color: transparent !important; - color:var(--code-normal); -} - -.cm-s-obsidian span.cm-inline-code:not(.cm-formatting):not(.cm-hmd-indented-code):not(.obsidian-search-match-highlight), -.cm-formatting.cm-formatting-code.cm-inline-code { - color: var(--text-color-code); - background-color: var(--background-code-2); -} - -.cm-s-obsidian .cm-inline-code.cm-strong { - color: var(--text-color-code) !important; -} - -/*******codebox settings*******/ -/* ================================== */ -/* ===== editor syntax highlight ==== */ -/* ================================== */ -body.theme-dark { - --code-tag: var(--red); -} -body { - --code-selection-background: var(--text-selection); - --code-selection-color: var(--code-normal); - --code-type: var(--code-function); - --code-qualifier: var(--aqua); - --code-property: var(--blue); - --code-value: var(--green); - --code-tag: var( --purple); - --code-operator: var(--code-property); - --code-hr: var(--code-punctuation); - --code-string-2: var(--code-string); - --code-language: var(--text-muted); - --code-attribute: var(--code-function); - --code-atom: var(--orange-1); - --code-comment: var(--darkgreen); -} - - -:root, -.code-theme-custom { - /* material: palenight theme */ - --code-keyword: #c792ea; - --code-atom: #f78c6c; - --code-number: #ff5370; - --code-type: #decb6b; - --code-def: #82aaff; - --code-property: #c792ea; - --code-variable: #f07178; - --code-variable-2: #53ada3; - --code-variable-3: #e7852fe7; - --code-definition: #82aaff; - --code-callee: #89ddff; - --code-qualifier: #decb6b; - --code-operator: #89ddff; - --code-hr: #98e342; - --code-link: #696d70; - --code-error-bg: #ff5370; - --code-header: #da7dae; - --code-builtin: #ffcb6b; - --code-meta: #ffcb6b; - --code-matching-bracket: #ffffff; - --code-tag: #ff5370; - --code-tag-in-comment: #ff5370; - --code-string-2: #f07178; - --code-bracket: #ff5370; - --code-comment: #676e95; - --code-string: #c3e88d; - --code-attribute: #c792ea; - --code-attribute-in-comment: #c792ea; - --background-code: #292d3e; - --code-normal: #d4d4d4; -} -.theme-light, -.theme-dark { - --code-active-line-background-color: var(--activeline-background); -} - -.code-theme-custom { - --code-active-line-background-color: #353a50c2; -} - -body.theme-light.code-theme-material-palenight, -body.theme-dark.code-theme-material-palenight { - /* material: palenight theme */ - --code-keyword: #c792ea; - --code-atom: #f78c6c; - --code-number: #ff5370; - --code-type: #decb6b; - --code-def: #82aaff; - --code-property: #c792ea; - --code-variable: #f07178; - --code-variable-2: #eeffff; - --code-variable-3: #f07178; - --code-definition: #82aaff; - --code-callee: #89ddff; - --code-qualifier: #decb6b; - --code-operator: #89ddff; - --code-hr: #98e342; - --code-link: #696d70; - --code-error-bg: #ff5370; - --code-header: #da7dae; - --code-builtin: #ffcb6b; - --code-meta: #ffcb6b; - --code-matching-bracket: #ffffff; - --code-tag: #ff5370; - --code-tag-in-comment: #ff5370; - --code-string-2: #f07178; - --code-bracket: #ff5370; - --code-comment: #676e95; - --code-string: #c3e88d; - --code-attribute: #c792ea; - --code-attribute-in-comment: #c792ea; - --background-code: #292d3eba; - --code-active-line-background-color: #353a50; - --code-normal: #d4d4d4; -} - -body.theme-light.code-theme-solarized-light, -body.theme-dark.code-theme-solarized-light { - /* solarized */ - --code-keyword: #cb4b16; - --code-atom: #d33682; - --code-number: #d33682; - --code-type: #6c71c4; - --code-def: #2aa198; - --code-property: #2aa198; - --code-variable: #839496; - --code-variable-2: #b58900; - --code-variable-3: #6c71c4; - --code-function: var(--code-def) ; - --code-definition: #82aaff; - --code-callee: #89ddff; - --code-qualifier: #b58900; - --code-operator: #6c71c4; - --code-hr: #98e342; - --code-link: #93a1a1; - --code-error-bg: #ff5370; - --code-header: #586e75; - --code-builtin: #d33682; - --code-meta: #859900; - --code-matching-bracket: #859900; - --code-tag: #93a1a1; - --code-tag-in-comment: #ff5370; - --code-string-2: #b58900; - --code-bracket: #cb4b16; - --code-comment: #586e75; - --code-string: #859900; - --code-attribute: #2aa198; - --code-attribute-in-comment: #c792ea; - --background-code: #fdf6e3e1; - --code-active-line-background-color: #fffcf4; - --code-normal: #657b83; -} - -body.theme-dark.code-theme-bt-default { - --background-code: #1111118c; - --code-variable: var(--red) ; - --code-normal: #ebdbb2; - --code-comment: var(--darkgreen) ; - --code-function: var(--light-yellow) ; - --code-important: var(--darkblue); - --code-keyword: var(--darkblue);; - --code-operator: #a89984; - --code-property: var(--blue) ; - --code-punctuation: var(--gray-2) ; - --code-string: var(--green) ; - --code-tag: var(--red) ; - --code-value: var(--green) ; - --code-string-2:var(--yellow) ; - --code-active-line-background-color: #111111eb; -} -body.theme-light.code-theme-bt-default { - --code-keyword:var(--blue-green); - --code-tag: var(--purple); - --code-function: var(--red); - --code-important: var(--blue-green); - --code-active-line-background-color: var(--activeline-background); - --code-string-2: var(--orange-1); - --code-variable-2: var(--light-purple); - --code-meta: var(--text-faint); -} - -body.code-theme-Gruvbox-dark { - --code-selection-color: #fbf1c7; - --code-selection-background: #7c6f6456; - --code-active-line-background-color: #533c3cee; - --background-code: #1d2021c6; - --code-variable: var(--code-property); - --code-normal: #ebdbb2; - --code-comment: #a89984; - --code-function: #fabd2f; - --code-important: #fb4934; - --code-keyword: #fb4934; - --code-operator: #a89984; - --code-property: #fb4934; - --code-punctuation: #a89984; - --code-string: #b8bb26; - --code-tag: #fabd2f; - --code-value: #d3869b; - --code-meta:var(--code-comment); -} - -body.theme-light.code-theme-dracula { - --background-code: #e6e6e671; - --code-normal: var(--tex-normal); - --code-string: var(--orange) ; - --code-string-2: var(--orange-1) ; - --code-variable: var(--blue-green); - --code-variable-2: var(--light-purple) ; - --code-meta: var(--text-faint); - --code-active-line-background-color:#dee1b9a5; -} -body.code-theme-dracula { - --background-code: #282a36c0; - --code-normal: #f8f8f2; - --code-comment: #6272a4; - --code-string: #f1fa8c; - --code-string-2: #ffb86c;; - --code-number: #bd93f9; - --code-variable: #50fa7b; - --code-variable-2: #ffffff; - --code-def: #50fa7b; - --code-operator: #8be9fd; - --code-keyword: #ff79c6; - --code-atom: #bd93f9; - --code-meta: #f8f8f2; - --code-tag: #ff79c6; - --code-attribute: #50fa7b; - --code-qualifier: #50fa7b; - --code-property: #66d9ef; - --code-builtin: #50fa7b; - --code-variable-3: #dc8e3b; - --code-type: #ffb86c; - --code-active-line-background-color: #414458; - --code-matchingbracket: #fffff; -} -body.theme-light.code-theme-monokai { - --code-comment: #aca47a; -} -body.code-theme-monokai { - --background-code: #272822d9; - --code-normal: #F8F8F2; - --code-keyword:#F92772; - --code-value: #AE81FF; - --code-string-2:#E6DB74; - --code-comment: #75715E; - --code-active-line-background-color: #17013f9f; -} -body.code-theme-sublime { - --code-operator: #9a6e3a; - --code-variable: #5180de; - --code-keyword: #EA5E66; - --code-string: #40bf31; - --code-function: #F9AE58; - --code-string-2: #F9AE58; - --code-type: #F9AE58; - --code-def: #F9AE58; -} - - -.cm-s-obsidian span.cm-variable { - color: var(--code-variable); -} -.cm-s-obsidian span.cm-variable-2 { - color: var(--code-variable-2); -} - -.cm-s-obsidian span.cm-variable-3 { - color: var(---code-variable-3); -} -.token.class, -.token.class-name { - color: var(--code-string-2) ; -} - -span.cm-variable + .cm-hmd-codeblock + span.cm-variable { - color: var(--code-variable-2); -} - -span.cm-variable + .cm-hmd-codeblock + span.cm-variable + .cm-hmd-codeblock + span.cm-variable { - color: var(--code-variable-3); -} -span.cm-type { - color: var(--code-keyword); -} -span.cm-def { - color:var(--code-function); -} -.cm-type { - color: var(--code-type); -} -.token.atrule, -.token.attr-value, -.cm-property, -.cm-attribute { - color: var(--code-attribute); -} - -.cm-qualifier { - color: var(--code-qualifier); -} - -.cm-operator { - color:var(--code-operator); -} - -.cm-hr { - color: var(--code-hr); -} -.cm-string-2 { - color: var(--code-string-2); -} - -.cm-s-obsidian .cm-hmd-frontmatter.cm-atom, -.cm-s-obsidian .cm-templater-command.cm-atom, -.cm-s-obsidian .cm-math.cm-atom, -.cm-s-obsidian .HyperMD-codeblock .cm-atom, -.markdown-preview-view pre.cm-s-obsidian .cm-atom { - color: var(--code-atom); -} - -.cm-s-obsidian .cm-hmd-frontmatter.cm-meta, -.cm-s-obsidian .cm-templater-command.cm-meta, -.cm-s-obsidian .cm-math.cm-meta, -.cm-s-obsidian .HyperMD-codeblock .cm-meta, -.markdown-preview-view pre.cm-s-obsidian .cm-meta { - color: var(--code-meta); -} - -.cm-s-obsidian .cm-hmd-frontmatter.cm-builtin, -.cm-s-obsidian .cm-templater-command.cm-builtin, -.cm-s-obsidian .cm-math.cm-builtin, -.cm-s-obsidian .HyperMD-codeblock .cm-builtin, -.markdown-preview-view pre.cm-s-obsidian .cm-builtin, -.markdown-preview-view pre code span.builtin { - color: var(--code-builtin); -} - - -.markdown-preview-view pre code span.class { - color: var(--code-qualifier); -} - -.markdown-preview-view pre code span.function { - color: var(--code-function); -} - -.markdown-preview-view pre code span.punctuation { - color: var(--code-punctuation); -} - -.markdown-preview-view pre code span.operator { - color: var(--code-operator); - background: transparent; -} - -.markdown-preview-view pre code span.entity { - color: var(--code-attribute); -} - -.markdown-preview-view pre code span.parameter { - color: var(--code-property); -} - -.markdown-preview-view pre code span.property { - color: var(--code-property); -} - -.markdown-preview-view pre code span.important { - color: var(--code-important); -} - -.markdown-preview-view pre code span.attr-name { - color: var(--code-tag); -} - -.markdown-preview-view pre code span.attr-value { - color: var(--code-string); -} - -.markdown-preview-view pre code span.builtin { - color: var(--code-builtin); -} - -.markdown-preview-view pre code span.unit { - color: var(--code-value); -} - -.markdown-preview-view span.token.macro-name { - color: var(--code-important); -} - -span.token.directive-hash { - color: var(--code-tag); -} -.cm-s-obsidian span.cm-comment { - color: var(--code-comment); -} - -.muted-code-activeline-bg .markdown-source-view.cm-s-obsidian.mod-cm6 .cm-active.cm-line.HyperMD-codeblock-bg { - background-color: var(--background-code) !important; -} -.muted-code-activeline-bg .markdown-source-view.cm-s-obsidian.mod-cm6 .cm-active.cm-line.HyperMD-codeblock-bg::before { - background-color: unset !important; -} -.markdown-source-view.cm-s-obsidian.mod-cm6 .cm-active.cm-line.HyperMD-codeblock-bg::before { - display: none; -} -.markdown-source-view.cm-s-obsidian.mod-cm6 .cm-active.cm-line.HyperMD-codeblock-bg { - background-color: var(--code-active-line-background-color) !important; - --text-selection:var(--code-selection-background); - z-index: -1; -} - -pre code[class*="language-"] { - padding: 1em 0.5em; -} -pre[class*="language-"]::selection, -pre[class*="language-"] ::selection, -code[class*="language-"]::selection, -code[class*="language-"] ::selection { - color: var(--code-selection-color); - background: var(--code-active-line-background-color); -} - -/*Advanced Codeblock */ -.HyperMD-codeblock.HyperMD-codeblock-bg.cm-line span.live-preview-codeblock-line-nums { - margin-left: -1.5em; -} - -.code-line-number .HyperMD-codeblock-begin { - counter-reset: line-numbers; -} - -.code-line-number .HyperMD-codeblock.cm-line:not(.HyperMD-codeblock-begin):not(.HyperMD-codeblock-end) { - padding-left: 3em; - position: relative; -} - -.code-line-number .HyperMD-codeblock.cm-line:not(.HyperMD-codeblock-begin):not(.HyperMD-codeblock-end)::after { - align-items: flex-start; - color: var(--text-faint); - content: counter(line-numbers); - counter-increment: line-numbers; - display: flex; - font-size: 0.8em; - height: 100%; - justify-content: flex-end; - left: 0; - position: absolute; - text-align: right; - width: 2em; - padding-right: 0.5em; - bottom: -2px; - border-right: 1px solid var(--scrollbar-thumb-bg); -} - -.code-line-number .HyperMD-codeblock.cm-line.cm-active:not(.HyperMD-codeblock-begin):not(.HyperMD-codeblock-end)::after { - color: var(--color-accent); -} - -.code-line-number .HyperMD-codeblock .cm-foldPlaceholder::before { - display: none; -} - - -/* ================================== */ -.cm-s-obsidian .cm-hmd-frontmatter.cm-qualifier, -.cm-s-obsidian .cm-math.cm-qualifier, -.cm-s-obsidian .cm-qualifier { - color: var(--yellow) ; -} - -.cm-s-obsidian pre.HyperMD-codeblock .cm-qualifier { - color: var(--code-qualifier) ; -} - -.cm-s-obsidian .cm-hmd-frontmatter.cm-property, -.cm-s-obsidian .cm-math.cm-property, -.cm-s-obsidian pre.HyperMD-codeblock .cm-property { - color: var(--code-property) ; -} - -.cm-s-obsidian .cm-math.cm-atom, -.cm-s-obsidian pre.HyperMD-codeblock .cm-atom { - color: var(--text-normal) ; -} - -.cm-s-obsidian .cm-hmd-frontmatter.cm-number, -.cm-s-obsidian .cm-math.cm-number, -.cm-s-obsidian pre.HyperMD-codeblock .cm-number { - color: var(--code-value) ; -} - -.cm-s-obsidian .cm-hmd-frontmatter.cm-comment, -.cm-s-obsidian .cm-math.cm-comment, -.cm-s-obsidian pre.HyperMD-codeblock .cm-comment { - color: var(--code-comment) ; -} - -.theme-dark .cm-s-obsidian .cm-hmd-frontmatter.cm-tag, -.theme-dark .cm-s-obsidian .cm-math.cm-tag, -.theme-dark .cm-s-obsidian pre.HyperMD-codeblock .cm-tag { - color: var(--code-tag) ; -} - -.theme-light .cm-s-obsidian .cm-hmd-frontmatter.cm-tag, -.theme-light .cm-s-obsidian .cm-math.cm-tag, -.theme-light .cm-s-obsidian pre.HyperMD-codeblock .cm-tag { - color: var(--code-tag) ; -} - -.cm-atom.cm-hmd-frontmatter { - color: var(--code-atom) ; -} - -.cm-meta.cm-hmd-frontmatter { - color: var(--code-meta) ; -} -.token.punctuation, -.cm-punctuation, -.cm-bracket { - color: var(--code-punctuation) !important ; -} - -.theme-dark .cm-s-obsidian span.cm-keyword { - font-weight: 600 ; -} - - -/*inline code*/ -.cm-s-obsidian.mod-cm6 .HyperMD-codeblock span.cm-inline-code { - display: inline-block; - padding: unset; -} - -.cm-s-obsidian span.cm-formatting-code.cm-inline-code { - color: var(--text-muted); - border-radius: 3px 0 0 3px; -} - -.cm-s-obsidian span[class="cm-inline-code"]+span.cm-formatting-code.cm-inline-code, -.cm-s-obsidian span[class*="cm-inline-code"][class*="cm-list"]+span.cm-formatting-code.cm-inline-code, -.cm-s-obsidian span[class*="cm-inline-code"][class*="cm-quote"]+span.cm-formatting-code.cm-inline-code, -.cm-s-obsidian span[class*="cm-inline-code"][class*="cm-header"]+span.cm-formatting-code.cm-inline-code, -.cm-s-obsidian span[class*="cm-inline-code"][class*="cm-em"]+span.cm-formatting-code.cm-inline-code, -.cm-s-obsidian span[class*="cm-inline-code"][class*="cm-strong"]+span.cm-formatting-code.cm-inline-code { - color: var(--text-muted); - border-radius: 0 3px 3px 0; -} - -.cm-formatting.cm-formatting-code-block.cm-hmd-codeblock { - color: var(--code-language); -} -.cm-hmd-frontmatter { - color: var(--code-normal); -} -.cm-hmd-frontmatter.cm-string { - color: var(--code-string); -} -/*bold code text except code language*/ -:not(pre)>code:not([class*='language-']) { - font-weight: var(--font-weight-inline-code); - padding: 2px 2px 1px; - font-family: var(--font-family-inline-code) !important; -} - -.cm-s-obsidian span.cm-inline-code { - padding: 2px 0 1px; - color: var(--text-color-code); - font-weight: var(--font-weight-inline-code); - font-family: var(--font-family-inline-code) !important; - font-size: var(--font-size-code) !important; -} - -.cm-formatting.cm-formatting-list.cm-formatting-list-ol { - color: var(--list-ol-number-color); -} - -:not(.default-ol-list-marker) .cm-formatting.cm-formatting-list.cm-formatting-list-ol { - margin-left: -2px; -} - -.cm-s-obsidian .HyperMD-table-row.HyperMD-table-row.HyperMD-table-row { - min-width: max-content; - white-space: pre-wrap; -} - -.markdown-source-view.mod-cm6 .HyperMD-list-line.cm-line { - font-family: var(--font-family-list); -} - -li { - line-height: var(--line-height-list); - font-family: var(--font-family-list); -} - -li>p:not(.task-list-item) { - margin-top: 0.75em; - margin-bottom: 0.75em; -} - -.markdown-source-view ol > li, -.markdown-source-view ul > li, -.markdown-preview-view ol > li, -.markdown-preview-view ul > li, -.markdown-rendered ul > li, -.mod-cm6 .HyperMD-list-line.cm-line { - padding-top: calc(var(--list-spacing-bt) * 0.075em); - padding-bottom: calc(var(--list-spacing-bt) * 0.075em); -} - -ul, -ol ul, -ol ol ul, -ol ol ol ul { - list-style: disc; -} -ul ul, -ol ul ul, -ul ol ul, -ol ol ul ul { - list-style: circle; -} -ul ul ul, -ol ul ul ul, -ul ol ul ul, -ul ul ol ul { - list-style: square; -} -ul ul ul ul, -ol ul ul ul ul, -ul ol ul ul ul, -ul ul ol ul ul, -ul ul ul ol ul { - list-style: circle; -} - - -body.custom-ordered-list ol { - list-style: var(--list-ol-marker-1); -} -body.custom-ordered-list :is(ul, ol) ol { - list-style: var(--list-ol-marker-2); -} -body.custom-ordered-list :is(ul, ol) :is(ul, ol) ol { - list-style: var(--list-ol-marker-3); -} -body.custom-ordered-list :is(ul, ol) :is(ul, ol) :is(ul, ol) ol { - list-style: var(--list-ol-marker-4); -} - -body.custom-ordered-list ol>li::marker { - font-weight: 600; - color: var(--list-ol-number-color); - white-space: pre; - font-family: Inter; -} - -:is(ol,ul) li { - font-size: var(--font-size-list); -} - -ol > li::marker { - color: var(--list-ol-number-color); -} - -ol > li.is-collapsed::marker, -ul > li.is-collapsed::marker, -.cm-s-obsidian .is-collapsed ~ .cm-formatting-list { - color: var(--list-marker-color-collapsed); -} - -/*list-no-border*/ -body.list-no-border ul>li:not(.task-list-item) { - border-left: none !important; -} - -body.list-no-border ol>li { - border-left: none !important; -} - -/* Adapted from https://gist.github.com/KillyMXI/cbef8edff6dd55d9e6ea4df66567e9b1 */ -body.bt-connected-indent-hover .cm-s-obsidian:not(.kanban) .HyperMD-list-line-1:not(:has(~ .HyperMD-list-line-1 ~ .HyperMD-list-line:hover)):has(~ :is(.HyperMD-list-line-7, .HyperMD-list-line-6, .HyperMD-list-line-5, .HyperMD-list-line-4, .HyperMD-list-line-3, .HyperMD-list-line-2):hover)::after, -body.bt-connected-indent-hover .cm-s-obsidian:not(.kanban) .HyperMD-list-line-1:not(:has(~ .HyperMD-list-line-1 ~ .HyperMD-list-line:hover)) ~ .HyperMD-list-line:has(~ .HyperMD-list-line-2:hover, ~ .HyperMD-list-line-2 ~ :is(.HyperMD-list-line-3, .HyperMD-list-line-4, .HyperMD-list-line-5, .HyperMD-list-line-6, .HyperMD-list-line-7):hover)::before, -body.bt-connected-indent-hover .cm-s-obsidian:not(.kanban) .HyperMD-list-line-2:not(:has(~ .HyperMD-list-line-2 ~ .HyperMD-list-line:hover)):is(:hover, :has(~ :is(.HyperMD-list-line-3, .HyperMD-list-line-4, .HyperMD-list-line-5, .HyperMD-list-line-6, .HyperMD-list-line-7):hover))::before { - --list-threading-offset: 1em; -} - -body.bt-connected-indent-hover .cm-s-obsidian:not(.kanban) .HyperMD-list-line-2:not(:has(~ .HyperMD-list-line-2 ~ .HyperMD-list-line:hover)):has(~ :is(.HyperMD-list-line-7, .HyperMD-list-line-6, .HyperMD-list-line-5, .HyperMD-list-line-4, .HyperMD-list-line-3):hover)::after, -body.bt-connected-indent-hover .cm-s-obsidian:not(.kanban) .HyperMD-list-line-2:not(:has(~ .HyperMD-list-line-2 ~ .HyperMD-list-line:hover)) ~ .HyperMD-list-line:has(~ .HyperMD-list-line-3:hover, ~ .HyperMD-list-line-3 ~ :is(.HyperMD-list-line-4, .HyperMD-list-line-5, .HyperMD-list-line-6, .HyperMD-list-line-7):hover)::before, -body.bt-connected-indent-hover .cm-s-obsidian:not(.kanban) .HyperMD-list-line-3:not(:has(~ .HyperMD-list-line-3 ~ .HyperMD-list-line:hover)):is(:hover, :has(~ :is(.HyperMD-list-line-4, .HyperMD-list-line-5, .HyperMD-list-line-6, .HyperMD-list-line-7):hover))::before { - --list-threading-offset: calc(1em + var(--list-indent)); -} - -body.bt-connected-indent-hover .cm-s-obsidian:not(.kanban) .HyperMD-list-line-3:not(:has(~ .HyperMD-list-line-3 ~ .HyperMD-list-line:hover)):has(~ :is(.HyperMD-list-line-7, .HyperMD-list-line-6, .HyperMD-list-line-5, .HyperMD-list-line-4):hover)::after, -body.bt-connected-indent-hover .cm-s-obsidian:not(.kanban) .HyperMD-list-line-3:not(:has(~ .HyperMD-list-line-3 ~ .HyperMD-list-line:hover)) ~ .HyperMD-list-line:has(~ .HyperMD-list-line-4:hover, ~ .HyperMD-list-line-4 ~ :is(.HyperMD-list-line-5, .HyperMD-list-line-6, .HyperMD-list-line-7):hover)::before, -body.bt-connected-indent-hover .cm-s-obsidian:not(.kanban) .HyperMD-list-line-4:not(:has(~ .HyperMD-list-line-4 ~ .HyperMD-list-line:hover)):is(:hover, :has(~ :is(.HyperMD-list-line-5, .HyperMD-list-line-6, .HyperMD-list-line-7):hover))::before { - --list-threading-offset: calc(1em + 2 * var(--list-indent)); -} - -body.bt-connected-indent-hover .cm-s-obsidian:not(.kanban) .HyperMD-list-line-4:not(:has(~ .HyperMD-list-line-4 ~ .HyperMD-list-line:hover)):has(~ :is(.HyperMD-list-line-7, .HyperMD-list-line-6, .HyperMD-list-line-5):hover)::after, -body.bt-connected-indent-hover .cm-s-obsidian:not(.kanban) .HyperMD-list-line-4:not(:has(~ .HyperMD-list-line-4 ~ .HyperMD-list-line:hover)) ~ .HyperMD-list-line:has(~ .HyperMD-list-line-5:hover, ~ .HyperMD-list-line-5 ~ :is(.HyperMD-list-line-6, .HyperMD-list-line-7):hover)::before, -body.bt-connected-indent-hover .cm-s-obsidian:not(.kanban) .HyperMD-list-line-5:not(:has(~ .HyperMD-list-line-5 ~ .HyperMD-list-line:hover)):is(:hover, :has(~ :is(.HyperMD-list-line-6, .HyperMD-list-line-7):hover))::before { - --list-threading-offset: calc(1em + 3 * var(--list-indent)); -} - -body.bt-connected-indent-hover .cm-s-obsidian:not(.kanban) .HyperMD-list-line-5:not(:has(~ .HyperMD-list-line-5 ~ .HyperMD-list-line:hover)):has(~ :is(.HyperMD-list-line-7, .HyperMD-list-line-6):hover)::after, -body.bt-connected-indent-hover .cm-s-obsidian:not(.kanban) .HyperMD-list-line-5:not(:has(~ .HyperMD-list-line-5 ~ .HyperMD-list-line:hover)) ~ .HyperMD-list-line:has(~ .HyperMD-list-line-6:hover, ~ .HyperMD-list-line-6 ~ :is(.HyperMD-list-line-7):hover)::before, -body.bt-connected-indent-hover .cm-s-obsidian:not(.kanban) .HyperMD-list-line-6:not(:has(~ .HyperMD-list-line-6 ~ .HyperMD-list-line:hover)):is(:hover, :has(~ :is(.HyperMD-list-line-7):hover))::before { - --list-threading-offset: calc(1em + 4 * var(--list-indent)); -} - -body.bt-connected-indent-hover .cm-s-obsidian:not(.kanban) .HyperMD-list-line-6:not(:has(~ .HyperMD-list-line-6 ~ .HyperMD-list-line:hover)):has(~ :is(.HyperMD-list-line-7):hover)::after, -body.bt-connected-indent-hover .cm-s-obsidian:not(.kanban) .HyperMD-list-line-6:not(:has(~ .HyperMD-list-line-6 ~ .HyperMD-list-line:hover)) ~ .HyperMD-list-line:has(~ .HyperMD-list-line-7:hover, ~ .HyperMD-list-line-7 ~ :is(.HyperMD-list-line-8):hover)::before, -body.bt-connected-indent-hover .cm-s-obsidian:not(.kanban) .HyperMD-list-line-7:not(:has(~ .HyperMD-list-line-7 ~ .HyperMD-list-line:hover)):hover::before { - --list-threading-offset: calc(1em + 5 * var(--list-indent)); -} - -body.bt-connected-indent-hover.bt-colorful-connected-indent-hover .cm-s-obsidian:not(.kanban) .HyperMD-list-line-2:not(:has(~ .HyperMD-list-line-2 ~ .HyperMD-list-line:hover)):has(~ :is(.HyperMD-list-line-7, .HyperMD-list-line-6, .HyperMD-list-line-5, .HyperMD-list-line-4, .HyperMD-list-line-3):hover)::after, -body.bt-connected-indent-hover.bt-colorful-connected-indent-hover .cm-s-obsidian:not(.kanban) .HyperMD-list-line-2:not(:has(~ .HyperMD-list-line-2 ~ .HyperMD-list-line:hover)) ~ .HyperMD-list-line:has(~ .HyperMD-list-line-3:hover, ~ .HyperMD-list-line-3 ~ :is(.HyperMD-list-line-4, .HyperMD-list-line-5, .HyperMD-list-line-6, .HyperMD-list-line-7):hover)::before, -body.bt-connected-indent-hover.bt-colorful-connected-indent-hover .cm-s-obsidian:not(.kanban) .HyperMD-list-line-3:not(:has(~ .HyperMD-list-line-3 ~ .HyperMD-list-line:hover)):is(:hover, :has(~ :is(.HyperMD-list-line-4, .HyperMD-list-line-5, .HyperMD-list-line-6, .HyperMD-list-line-7):hover))::before { - filter: hue-rotate(60deg); -} - -body.bt-connected-indent-hover.bt-colorful-connected-indent-hover .cm-s-obsidian:not(.kanban) .HyperMD-list-line-3:not(:has(~ .HyperMD-list-line-3 ~ .HyperMD-list-line:hover)):has(~ :is(.HyperMD-list-line-7, .HyperMD-list-line-6, .HyperMD-list-line-5, .HyperMD-list-line-4):hover)::after, -body.bt-connected-indent-hover.bt-colorful-connected-indent-hover .cm-s-obsidian:not(.kanban) .HyperMD-list-line-3:not(:has(~ .HyperMD-list-line-3 ~ .HyperMD-list-line:hover)) ~ .HyperMD-list-line:has(~ .HyperMD-list-line-4:hover, ~ .HyperMD-list-line-4 ~ :is(.HyperMD-list-line-5, .HyperMD-list-line-6, .HyperMD-list-line-7):hover)::before, -body.bt-connected-indent-hover.bt-colorful-connected-indent-hover .cm-s-obsidian:not(.kanban) .HyperMD-list-line-4:not(:has(~ .HyperMD-list-line-4 ~ .HyperMD-list-line:hover)):is(:hover, :has(~ :is(.HyperMD-list-line-5, .HyperMD-list-line-6, .HyperMD-list-line-7):hover))::before { - filter: hue-rotate(120deg); -} - -body.bt-connected-indent-hover.bt-colorful-connected-indent-hover .cm-s-obsidian:not(.kanban) .HyperMD-list-line-4:not(:has(~ .HyperMD-list-line-4 ~ .HyperMD-list-line:hover)):has(~ :is(.HyperMD-list-line-7, .HyperMD-list-line-6, .HyperMD-list-line-5):hover)::after, -body.bt-connected-indent-hover.bt-colorful-connected-indent-hover .cm-s-obsidian:not(.kanban) .HyperMD-list-line-4:not(:has(~ .HyperMD-list-line-4 ~ .HyperMD-list-line:hover)) ~ .HyperMD-list-line:has(~ .HyperMD-list-line-5:hover, ~ .HyperMD-list-line-5 ~ :is(.HyperMD-list-line-6, .HyperMD-list-line-7):hover)::before, -body.bt-connected-indent-hover.bt-colorful-connected-indent-hover .cm-s-obsidian:not(.kanban) .HyperMD-list-line-5:not(:has(~ .HyperMD-list-line-5 ~ .HyperMD-list-line:hover)):is(:hover, :has(~ :is(.HyperMD-list-line-6, .HyperMD-list-line-7):hover))::before { - filter: hue-rotate(180deg); -} - -body.bt-connected-indent-hover.bt-colorful-connected-indent-hover .cm-s-obsidian:not(.kanban) .HyperMD-list-line-5:not(:has(~ .HyperMD-list-line-5 ~ .HyperMD-list-line:hover)):has(~ :is(.HyperMD-list-line-7, .HyperMD-list-line-6):hover)::after, -body.bt-connected-indent-hover.bt-colorful-connected-indent-hover .cm-s-obsidian:not(.kanban) .HyperMD-list-line-5:not(:has(~ .HyperMD-list-line-5 ~ .HyperMD-list-line:hover)) ~ .HyperMD-list-line:has(~ .HyperMD-list-line-6:hover, ~ .HyperMD-list-line-6 ~ :is(.HyperMD-list-line-7):hover)::before, -body.bt-connected-indent-hover.bt-colorful-connected-indent-hover .cm-s-obsidian:not(.kanban) .HyperMD-list-line-6:not(:has(~ .HyperMD-list-line-6 ~ .HyperMD-list-line:hover)):is(:hover, :has(~ :is(.HyperMD-list-line-7):hover))::before { - filter: hue-rotate(240deg); -} - -body.bt-connected-indent-hover.bt-colorful-connected-indent-hover .cm-s-obsidian:not(.kanban) .HyperMD-list-line-6:not(:has(~ .HyperMD-list-line-6 ~ .HyperMD-list-line:hover)):has(~ :is(.HyperMD-list-line-7):hover)::after, -body.bt-connected-indent-hover.bt-colorful-connected-indent-hover .cm-s-obsidian:not(.kanban) .HyperMD-list-line-6:not(:has(~ .HyperMD-list-line-6 ~ .HyperMD-list-line:hover)) ~ .HyperMD-list-line:has(~ .HyperMD-list-line-7:hover, ~ .HyperMD-list-line-7 ~ :is(.HyperMD-list-line-8):hover)::before, -body.bt-connected-indent-hover.bt-colorful-connected-indent-hover .cm-s-obsidian:not(.kanban) .HyperMD-list-line-7:not(:has(~ .HyperMD-list-line-7 ~ .HyperMD-list-line:hover)):hover::before { - filter: hue-rotate(300deg); -} - -/* tails */ -body.bt-connected-indent-hover .cm-s-obsidian:not(.kanban) .HyperMD-list-line-1:not(:has(~ .HyperMD-list-line-1 ~ .HyperMD-list-line:hover)):has(~ :is(.HyperMD-list-line-7, .HyperMD-list-line-6, .HyperMD-list-line-5, .HyperMD-list-line-4, .HyperMD-list-line-3, .HyperMD-list-line-2):hover)::after, -body.bt-connected-indent-hover .cm-s-obsidian:not(.kanban) .HyperMD-list-line-2:not(:has(~ .HyperMD-list-line-2 ~ .HyperMD-list-line:hover)):has(~ :is(.HyperMD-list-line-7, .HyperMD-list-line-6, .HyperMD-list-line-5, .HyperMD-list-line-4, .HyperMD-list-line-3):hover)::after, -body.bt-connected-indent-hover .cm-s-obsidian:not(.kanban) .HyperMD-list-line-3:not(:has(~ .HyperMD-list-line-3 ~ .HyperMD-list-line:hover)):has(~ :is(.HyperMD-list-line-7, .HyperMD-list-line-6, .HyperMD-list-line-5, .HyperMD-list-line-4):hover)::after, -body.bt-connected-indent-hover .cm-s-obsidian:not(.kanban) .HyperMD-list-line-4:not(:has(~ .HyperMD-list-line-4 ~ .HyperMD-list-line:hover)):has(~ :is(.HyperMD-list-line-7, .HyperMD-list-line-6, .HyperMD-list-line-5):hover)::after, -body.bt-connected-indent-hover .cm-s-obsidian:not(.kanban) .HyperMD-list-line-5:not(:has(~ .HyperMD-list-line-5 ~ .HyperMD-list-line:hover)):has(~ :is(.HyperMD-list-line-7, .HyperMD-list-line-6):hover)::after, -body.bt-connected-indent-hover .cm-s-obsidian:not(.kanban) .HyperMD-list-line-6:not(:has(~ .HyperMD-list-line-6 ~ .HyperMD-list-line:hover)):has(~ :is(.HyperMD-list-line-7):hover)::after { - content: ""; - position: absolute; - left: var(--list-threading-offset); - bottom: 0; - height: calc(100% - 1em); - width: var(--bt-indentation-width-hover); - background-color: var(--bt-connected-indent-line-color); -} -body.bt-connected-indent-hover .cm-s-obsidian:not(.kanban) .HyperMD-list-line.HyperMD-task-line::after { - max-height: calc(100% - 1.2em); -} - -/* in-between lines */ -body.bt-connected-indent-hover .cm-s-obsidian:not(.kanban) .HyperMD-list-line-1:not(:has(~ .HyperMD-list-line-1 ~ .HyperMD-list-line:hover)) ~ .HyperMD-list-line:has(~ .HyperMD-list-line-2:hover, ~ .HyperMD-list-line-2 ~ :is(.HyperMD-list-line-7, .HyperMD-list-line-6, .HyperMD-list-line-5, .HyperMD-list-line-4, .HyperMD-list-line-3):hover)::before, -body.bt-connected-indent-hover .cm-s-obsidian:not(.kanban) .HyperMD-list-line-2:not(:has(~ .HyperMD-list-line-2 ~ .HyperMD-list-line:hover)) ~ .HyperMD-list-line:has(~ .HyperMD-list-line-3:hover, ~ .HyperMD-list-line-3 ~ :is(.HyperMD-list-line-7, .HyperMD-list-line-6, .HyperMD-list-line-5, .HyperMD-list-line-4):hover)::before, -body.bt-connected-indent-hover .cm-s-obsidian:not(.kanban) .HyperMD-list-line-3:not(:has(~ .HyperMD-list-line-3 ~ .HyperMD-list-line:hover)) ~ .HyperMD-list-line:has(~ .HyperMD-list-line-4:hover, ~ .HyperMD-list-line-4 ~ :is(.HyperMD-list-line-7, .HyperMD-list-line-6, .HyperMD-list-line-5):hover)::before, -body.bt-connected-indent-hover .cm-s-obsidian:not(.kanban) .HyperMD-list-line-4:not(:has(~ .HyperMD-list-line-4 ~ .HyperMD-list-line:hover)) ~ .HyperMD-list-line:has(~ .HyperMD-list-line-5:hover, ~ .HyperMD-list-line-5 ~ :is(.HyperMD-list-line-7, .HyperMD-list-line-6):hover)::before, -body.bt-connected-indent-hover .cm-s-obsidian:not(.kanban) .HyperMD-list-line-5:not(:has(~ .HyperMD-list-line-5 ~ .HyperMD-list-line:hover)) ~ .HyperMD-list-line:has(~ .HyperMD-list-line-6:hover, ~ .HyperMD-list-line-6 ~ :is(.HyperMD-list-line-7, .HyperMD-list-line-6):hover)::before, -body.bt-connected-indent-hover .cm-s-obsidian:not(.kanban) .HyperMD-list-line-6:not(:has(~ .HyperMD-list-line-6 ~ .HyperMD-list-line:hover)) ~ .HyperMD-list-line:has(~ .HyperMD-list-line-7:hover)::before { - content: ""; - position: absolute; - left: var(--list-threading-offset); - top: 0; - height: 100%; - width: var(--bt-indentation-width-hover); - background-color: var(--bt-connected-indent-line-color); -} - -/* elbows */ -body.bt-connected-indent-hover .cm-s-obsidian:not(.kanban) .HyperMD-list-line-2:not(:has(~ .HyperMD-list-line-2 ~ .HyperMD-list-line:hover)):is(:hover, :has(~ :is(.HyperMD-list-line-7, .HyperMD-list-line-6, .HyperMD-list-line-5, .HyperMD-list-line-4, .HyperMD-list-line-3):hover))::before, -body.bt-connected-indent-hover .cm-s-obsidian:not(.kanban) .HyperMD-list-line-3:not(:has(~ .HyperMD-list-line-3 ~ .HyperMD-list-line:hover)):is(:hover, :has(~ :is(.HyperMD-list-line-7, .HyperMD-list-line-6, .HyperMD-list-line-5, .HyperMD-list-line-4):hover))::before, -body.bt-connected-indent-hover .cm-s-obsidian:not(.kanban) .HyperMD-list-line-4:not(:has(~ .HyperMD-list-line-4 ~ .HyperMD-list-line:hover)):is(:hover, :has(~ :is(.HyperMD-list-line-7, .HyperMD-list-line-6, .HyperMD-list-line-5):hover))::before, -body.bt-connected-indent-hover .cm-s-obsidian:not(.kanban) .HyperMD-list-line-5:not(:has(~ .HyperMD-list-line-5 ~ .HyperMD-list-line:hover)):is(:hover, :has(~ :is(.HyperMD-list-line-7, .HyperMD-list-line-6):hover))::before, -body.bt-connected-indent-hover .cm-s-obsidian:not(.kanban) .HyperMD-list-line-6:not(:has(~ .HyperMD-list-line-6 ~ .HyperMD-list-line:hover)):is(:hover, :has(~ :is(.HyperMD-list-line-7):hover))::before, -body.bt-connected-indent-hover .cm-s-obsidian:not(.kanban) .HyperMD-list-line-7:not(:has(~ .HyperMD-list-line-7 ~ .HyperMD-list-line:hover)):hover::before { - content: ""; - position: absolute; - left: var(--list-threading-offset); - width: var(--list-indent); - top: 0; - height: calc(var(--line-height-list) / 2 * var(--font-size-list) + var(--list-spacing-bt) * 0.075em * 1.5); - border-bottom-left-radius: var(--radius-m); - border-bottom: var(--bt-indentation-width-hover) solid var(--bt-connected-indent-line-color); - border-left: var(--bt-indentation-width-hover) solid var(--bt-connected-indent-line-color); -} -body.bt-connected-indent-hover .cm-s-obsidian:not(.kanban) .HyperMD-list-line.HyperMD-task-line::before { - max-width: calc(var(--list-indent) - 0.35em); -} - -body.bt-colorful-indentation-lines.bt-indentation-line-gradient ul ul::before, -body.bt-colorful-indentation-lines.bt-indentation-line-gradient ol ol::before { - border-right-color: var(--bt-connected-indent-line-color) !important; - border-image: linear-gradient(var(--bt-indentation-gradient-color-1), var(--bt-indentation-gradient-color-2)) 10; -} - -body.bt-colorful-indentation-lines.bt-indentation-line-image :is(ul, ol) :is(ul, ol)::before { - border-right-color: var(--bt-connected-indent-line-color) !important; - border-image: var(--bt-indentation-line-image) 10; -} - -body.bt-colorful-indentation-lines :is(ul, ol) :is(ul, ol)::before { - border-right-color: var(--bt-connected-indent-line-color) !important; - border-right-width: var(--bt-colorful-indentation-width); - border-right-style: double; -} -body.bt-colorful-indentation-lines :is(ul, ol) :is(ul, ol) :is(ul, ol)::before { - border-right-color: var(--bt-connected-indent-line-color) !important; - filter: hue-rotate(60deg); -} -body.bt-colorful-indentation-lines :is(ul, ol) :is(ul, ol) :is(ul, ol) :is(ul, ol)::before { - border-right-color: var(--bt-connected-indent-line-color) !important; - filter: hue-rotate(120deg); -} -body.bt-colorful-indentation-lines :is(ul, ol) :is(ul, ol) :is(ul, ol) :is(ul, ol) :is(ul, ol)::before { - border-right-color: var(--bt-connected-indent-line-color) !important; - filter: hue-rotate(180deg); -} -body.bt-colorful-indentation-lines :is(ul, ol) :is(ul, ol) :is(ul, ol) :is(ul, ol) :is(ul, ol) :is(ul, ol)::before { - border-right-color: var(--bt-connected-indent-line-color) !important; - filter: hue-rotate(240deg); -} -body.bt-colorful-indentation-lines :is(ul, ol) :is(ul, ol) :is(ul, ol) :is(ul, ol) :is(ul, ol) :is(ul, ol) :is(ul, ol)::before { - border-right-color: var(--bt-connected-indent-line-color) !important; - filter: hue-rotate(300deg); -} - -body.bt-colorful-indentation-lines-editing .HyperMD-list-line-2 .cm-hmd-list-indent > .cm-indent::before, -body.bt-colorful-indentation-lines-editing .HyperMD-list-line-3 .cm-hmd-list-indent > .cm-indent::before, -body.bt-colorful-indentation-lines-editing .HyperMD-list-line-4 .cm-hmd-list-indent > .cm-indent::before, -body.bt-colorful-indentation-lines-editing .HyperMD-list-line-5 .cm-hmd-list-indent > .cm-indent::before, -body.bt-colorful-indentation-lines-editing .HyperMD-list-line-6 .cm-hmd-list-indent > .cm-indent::before, -body.bt-colorful-indentation-lines-editing .HyperMD-list-line-7 .cm-hmd-list-indent > .cm-indent::before, -body.bt-colorful-indentation-lines-editing .HyperMD-list-line-8 .cm-hmd-list-indent > .cm-indent::before, -body.bt-colorful-indentation-lines-editing .HyperMD-list-line-9 .cm-hmd-list-indent > .cm-indent::before { - border-color: var(--bt-connected-indent-line-color) -} - -body.bt-colorful-indentation-lines-editing .HyperMD-list-line-3 .cm-hmd-list-indent > .cm-indent ~ .cm-indent::before, -body.bt-colorful-indentation-lines-editing .HyperMD-list-line-4 .cm-hmd-list-indent > .cm-indent ~ .cm-indent::before, -body.bt-colorful-indentation-lines-editing .HyperMD-list-line-5 .cm-hmd-list-indent > .cm-indent ~ .cm-indent::before, -body.bt-colorful-indentation-lines-editing .HyperMD-list-line-6 .cm-hmd-list-indent > .cm-indent ~ .cm-indent::before, -body.bt-colorful-indentation-lines-editing .HyperMD-list-line-7 .cm-hmd-list-indent > .cm-indent ~ .cm-indent::before, -body.bt-colorful-indentation-lines-editing .HyperMD-list-line-8 .cm-hmd-list-indent > .cm-indent ~ .cm-indent::before, -body.bt-colorful-indentation-lines-editing .HyperMD-list-line-9 .cm-hmd-list-indent > .cm-indent ~ .cm-indent::before { - border-color: var(--bt-connected-indent-line-color); - filter: hue-rotate(60deg); -} - -body.bt-colorful-indentation-lines-editing .HyperMD-list-line-4 .cm-hmd-list-indent > .cm-indent ~ .cm-indent ~ .cm-indent::before, -body.bt-colorful-indentation-lines-editing .HyperMD-list-line-5 .cm-hmd-list-indent > .cm-indent ~ .cm-indent ~ .cm-indent::before, -body.bt-colorful-indentation-lines-editing .HyperMD-list-line-6 .cm-hmd-list-indent > .cm-indent ~ .cm-indent ~ .cm-indent::before, -body.bt-colorful-indentation-lines-editing .HyperMD-list-line-7 .cm-hmd-list-indent > .cm-indent ~ .cm-indent ~ .cm-indent::before, -body.bt-colorful-indentation-lines-editing .HyperMD-list-line-8 .cm-hmd-list-indent > .cm-indent ~ .cm-indent ~ .cm-indent::before, -body.bt-colorful-indentation-lines-editing .HyperMD-list-line-9 .cm-hmd-list-indent > .cm-indent ~ .cm-indent ~ .cm-indent::before { - border-color: var(--bt-connected-indent-line-color); - filter: hue-rotate(120deg); -} - -body.bt-colorful-indentation-lines-editing .HyperMD-list-line-5 .cm-hmd-list-indent > .cm-indent ~ .cm-indent ~ .cm-indent ~ .cm-indent::before, -body.bt-colorful-indentation-lines-editing .HyperMD-list-line-6 .cm-hmd-list-indent > .cm-indent ~ .cm-indent ~ .cm-indent ~ .cm-indent::before, -body.bt-colorful-indentation-lines-editing .HyperMD-list-line-7 .cm-hmd-list-indent > .cm-indent ~ .cm-indent ~ .cm-indent ~ .cm-indent::before, -body.bt-colorful-indentation-lines-editing .HyperMD-list-line-8 .cm-hmd-list-indent > .cm-indent ~ .cm-indent ~ .cm-indent ~ .cm-indent::before, -body.bt-colorful-indentation-lines-editing .HyperMD-list-line-9 .cm-hmd-list-indent > .cm-indent ~ .cm-indent ~ .cm-indent ~ .cm-indent::before { - border-color: var(--bt-connected-indent-line-color); - filter: hue-rotate(180deg); -} - -body.bt-colorful-indentation-lines-editing .HyperMD-list-line-6 .cm-hmd-list-indent > .cm-indent ~ .cm-indent ~ .cm-indent ~ .cm-indent ~ .cm-indent::before, -body.bt-colorful-indentation-lines-editing .HyperMD-list-line-7 .cm-hmd-list-indent > .cm-indent ~ .cm-indent ~ .cm-indent ~ .cm-indent ~ .cm-indent::before, -body.bt-colorful-indentation-lines-editing .HyperMD-list-line-8 .cm-hmd-list-indent > .cm-indent ~ .cm-indent ~ .cm-indent ~ .cm-indent ~ .cm-indent::before, -body.bt-colorful-indentation-lines-editing .HyperMD-list-line-9 .cm-hmd-list-indent > .cm-indent ~ .cm-indent ~ .cm-indent ~ .cm-indent ~ .cm-indent::before { - border-color: var(--bt-connected-indent-line-color); - filter: hue-rotate(240deg); -} - -body.bt-colorful-indentation-lines-editing .HyperMD-list-line-7 .cm-hmd-list-indent > .cm-indent ~ .cm-indent ~ .cm-indent ~ .cm-indent ~ .cm-indent ~ .cm-indent::before, -body.bt-colorful-indentation-lines-editing .HyperMD-list-line-8 .cm-hmd-list-indent > .cm-indent ~ .cm-indent ~ .cm-indent ~ .cm-indent ~ .cm-indent ~ .cm-indent::before, -body.bt-colorful-indentation-lines-editing .HyperMD-list-line-9 .cm-hmd-list-indent > .cm-indent ~ .cm-indent ~ .cm-indent ~ .cm-indent ~ .cm-indent ~ .cm-indent::before{ - border-color: var(--bt-connected-indent-line-color); - filter: hue-rotate(300deg); -} - -body.bt-connected-indent-hover .markdown-preview-view:not(.kanban) li { - position: relative; -} - -/* In-between items */ -body.bt-connected-indent-hover .markdown-preview-view:not(.kanban) *:not([data-callout="kanban"]) > div > :is(ul, ol) li > :is(ul, ol) > li:has(~ li:hover)::before, -body.bt-connected-indent-hover .markdown-preview-view:not(.kanban) *:not([data-callout="kanban"]) > div > :is(ul, ol) :is(ul, ol):has(~ *:hover) > li::before { - content: ""; - position: absolute; - background-color: var(--bt-connected-indent-line-color); - width: var(--bt-indentation-width-hover); - top: calc(var(--list-spacing-bt) * 0.075em - var(--font-size-list) * 0.6); - left: calc(-1.5 * var(--list-indent)); - bottom: calc(var(--list-spacing-bt) * 0.075em - var(--font-size-list) * 0.5); -} - -/* Elbows items */ -body.bt-connected-indent-hover .markdown-preview-view:not(.kanban) *:not([data-callout="kanban"]) > div > :is(ul, ol) li > :is(ul, ol) > li:hover::before { - content: ""; - position: absolute; - background-color: transparent; - top: calc(var(--list-spacing-bt) * 0.075em - var(--font-size-list) * 0.6); - left: calc(-1.5 * var(--list-indent)); - width: calc(1em + var(--size-4-4)); - height: calc(var(--font-size-list) * 1.27); - border-bottom-left-radius: var(--radius-m); - border-bottom: var(--bt-indentation-width-hover) solid var(--bt-connected-indent-line-color); - border-left: var(--bt-indentation-width-hover) solid var(--bt-connected-indent-line-color); -} - -body.bt-connected-indent-hover.bt-colorful-connected-indent-hover .markdown-preview-view:not(.kanban) *:not([data-callout="kanban"]) > div > :is(ul, ol) li > :is(ul, ol) > li > :is(ul, ol) > li:has( ~ li:hover)::before, -body.bt-connected-indent-hover.bt-colorful-connected-indent-hover .markdown-preview-view:not(.kanban) *:not([data-callout="kanban"]) > div > :is(ul, ol) li > :is(ul, ol) > li > :is(ul, ol) > li:hover::before, -body.bt-connected-indent-hover.bt-colorful-connected-indent-hover .markdown-preview-view:not(.kanban) *:not([data-callout="kanban"]) > div > :is(ul, ol) li:hover > :is(ul, ol) > li > ul:has(+ ol) > li::before, -body.bt-connected-indent-hover.bt-colorful-connected-indent-hover .markdown-preview-view:not(.kanban) *:not([data-callout="kanban"]) > div > :is(ul, ol) li:hover > :is(ul, ol) > li > ol:has(+ ul) > li::before { - filter: hue-rotate(60deg); -} - -body.bt-connected-indent-hover.bt-colorful-connected-indent-hover .markdown-preview-view:not(.kanban) *:not([data-callout="kanban"]) > div > :is(ul, ol) li > :is(ul, ol) > li > :is(ul, ol) > li > :is(ul, ol) > li:has( ~ li:hover)::before, -body.bt-connected-indent-hover.bt-colorful-connected-indent-hover .markdown-preview-view:not(.kanban) *:not([data-callout="kanban"]) > div > :is(ul, ol) li > :is(ul, ol) > li > :is(ul, ol) > li > :is(ul, ol) > li:hover::before, -body.bt-connected-indent-hover.bt-colorful-connected-indent-hover .markdown-preview-view:not(.kanban) *:not([data-callout="kanban"]) > div > :is(ul, ol) li:hover > :is(ul, ol) > li > :is(ul, ol) > li > ul:has(+ ol) > li::before, -body.bt-connected-indent-hover.bt-colorful-connected-indent-hover .markdown-preview-view:not(.kanban) *:not([data-callout="kanban"]) > div > :is(ul, ol) li:hover > :is(ul, ol) > li > :is(ul, ol) > li > ol:has(+ ul) > li::before { - filter: hue-rotate(120deg); -} - -body.bt-connected-indent-hover.bt-colorful-connected-indent-hover .markdown-preview-view:not(.kanban) *:not([data-callout="kanban"]) > div > :is(ul, ol) li > :is(ul, ol) > li > :is(ul, ol) > li > :is(ul, ol) > li > :is(ul, ol) >li:has( ~ li:hover)::before, -body.bt-connected-indent-hover.bt-colorful-connected-indent-hover .markdown-preview-view:not(.kanban) *:not([data-callout="kanban"]) > div > :is(ul, ol) li > :is(ul, ol) > li > :is(ul, ol) > li > :is(ul, ol) > li > :is(ul, ol) > li:hover::before, -body.bt-connected-indent-hover.bt-colorful-connected-indent-hover .markdown-preview-view:not(.kanban) *:not([data-callout="kanban"]) > div > :is(ul, ol) li:hover > :is(ul, ol) > li > :is(ul, ol) > li > :is(ul, ol) > li > ul:has(+ ol) > li::before, -body.bt-connected-indent-hover.bt-colorful-connected-indent-hover .markdown-preview-view:not(.kanban) *:not([data-callout="kanban"]) > div > :is(ul, ol) li:hover > :is(ul, ol) > li > :is(ul, ol) > li > :is(ul, ol) > li > ol:has(+ ul) > li::before { - filter: hue-rotate(180deg); -} - -body.bt-connected-indent-hover.bt-colorful-connected-indent-hover .markdown-preview-view:not(.kanban) *:not([data-callout="kanban"]) > div > :is(ul, ol) li > :is(ul, ol) > li > :is(ul, ol) > li > :is(ul, ol) > li > :is(ul, ol) > li > :is(ul, ol) >li:has( ~ li:hover)::before, -body.bt-connected-indent-hover.bt-colorful-connected-indent-hover .markdown-preview-view:not(.kanban) *:not([data-callout="kanban"]) > div > :is(ul, ol) li > :is(ul, ol) > li > :is(ul, ol) > li > :is(ul, ol) > li > :is(ul, ol) > li > :is(ul, ol) > li:hover::before, -body.bt-connected-indent-hover.bt-colorful-connected-indent-hover .markdown-preview-view:not(.kanban) *:not([data-callout="kanban"]) > div > :is(ul, ol) li:hover > :is(ul, ol) > li > :is(ul, ol) > li > :is(ul, ol) > li > :is(ul, ol) > li > ul:has(+ ol) > li::before, -body.bt-connected-indent-hover.bt-colorful-connected-indent-hover .markdown-preview-view:not(.kanban) *:not([data-callout="kanban"]) > div > :is(ul, ol) li:hover > :is(ul, ol) > li > :is(ul, ol) > li > :is(ul, ol) > li > :is(ul, ol) > li > ol:has(+ ul) > li::before { - filter: hue-rotate(240deg); -} - -body.bt-connected-indent-hover.bt-colorful-connected-indent-hover .markdown-preview-view:not(.kanban) *:not([data-callout="kanban"]) > div > :is(ul, ol) li > :is(ul, ol) > li > :is(ul, ol) > li > :is(ul, ol) > li > :is(ul, ol) > li > :is(ul, ol) > li > :is(ul, ol) > li:has( ~ li:hover)::before, -body.bt-connected-indent-hover.bt-colorful-connected-indent-hover .markdown-preview-view:not(.kanban) *:not([data-callout="kanban"]) > div > :is(ul, ol) li > :is(ul, ol) > li > :is(ul, ol) > li > :is(ul, ol) > li > :is(ul, ol) > li > :is(ul, ol) > li > :is(ul, ol) > li:hover::before, -body.bt-connected-indent-hover.bt-colorful-connected-indent-hover .markdown-preview-view:not(.kanban) *:not([data-callout="kanban"]) > div > :is(ul, ol) li:hover > :is(ul, ol) > li > :is(ul, ol) > li > :is(ul, ol) > li > :is(ul, ol) > li > :is(ul, ol) > li > ul:has(+ ol) > li::before, -body.bt-connected-indent-hover.bt-colorful-connected-indent-hover .markdown-preview-view:not(.kanban) *:not([data-callout="kanban"]) > div > :is(ul, ol) li:hover > :is(ul, ol) > li > :is(ul, ol) > li > :is(ul, ol) > li > :is(ul, ol) > li > :is(ul, ol) > li > ol:has(+ ul) > li::before { - filter: hue-rotate(300deg); -} - - -/*===========*/ -:is(.markdown-preview-view,.markdown-rendered) :is(b,strong), -.view-header-title { - font-weight: bold; -} - -span.cm-strong, -:not(font)>strong, -.cm-s-obsidian .cm-highlight.cm-strong { - font-weight: var(--font-weight-strong); -} - -span.cm-strong, -:not(font)>strong, -.cm-s-obsidian .cm-highlight.cm-strong { - color: var(--accent-strong) !important; - font-family: var(--font-family-strong) !important; -} - -font>strong { - font-family: var(--font-family-strong) !important; -} - -span.cm-em, -span.cm-em.cm-highlight, -span.cm-em.cm-quote, -span.cm-em.cm-highlight.cm-quote, -:is(.markdown-preview-view,.markdown-rendered) :not(font):not(strong)>em, -:is(.markdown-preview-view,.markdown-rendered) em>mark { - color: var(--accent-em); - font-family: var(--font-family-em); - font-style: var(--font-style-em); -} - -*:not(font)>em>strong, -*:not(font)>strong>em, -.cm-strong.cm-em { - padding-right: 0.05em; - background-clip: text; - -webkit-background-clip: text; - -webkit-text-fill-color: transparent; - background-color: #f55454; - background-image: linear-gradient(120deg, var(--strong-em-color-1) 0%, var(--strong-em-color-2) 80%); - font-family: var(--font-family-strong) !important; -} - -:is(.markdown-preview-view,.markdown-rendered) :not(font)>strong>em>mark { - background-color: var(--mark-highlight-strong-em); - padding: 1px 3px; - border-radius: var(--radius-xs); -} - -em>strong>font, -strong>em>font, -strong>em>mark>font { - background-image: initial; - background-clip: initial; - -webkit-background-clip: initial; - -webkit-text-fill-color: initial; - background-color: initial; -} - -/*internal link with strong&em*/ -strong>em>.internal-link, -.cm-strong.cm-em.cm-hmd-internal-link { - -webkit-text-fill-color: initial; - text-decoration: underline !important; -} - -.markdown-source-view.mod-cm5 span.cm-formatting.cm-formatting-strong.cm-strong, -.markdown-source-view.mod-cm5 span.cm-formatting.cm-formatting-em.cm-em { - opacity: 0.2; -} - -.theme-dark .markdown-source-view.mod-cm5 .cm-formatting.cm-formatting-strong.cm-em.cm-strong { - opacity: 0.2; - -webkit-text-fill-color: var(--green); -} - -.theme-light .markdown-source-view.mod-cm5 .cm-formatting.cm-formatting-strong.cm-em.cm-strong { - opacity: 0.2; - -webkit-text-fill-color: var(--orange); -} - -a:not([class*="is-unresolved"]).internal-link>strong, -a.external-link>strong, -a:not([class*="is-unresolved"]).internal-link>em, -a.external-link>em { - color: var(--text-accent); -} - -body.remove-external-link-icon a.external-link { - background-image: none; -} -body.remove-external-link-icon span.external-link -{ - background-image:none; -} -/*link format [[]]*/ -.cm-formatting-link.cm-strong.cm-em { - -webkit-text-fill-color: var(--text-faint); - opacity: 0.2; -} - -div.CodeMirror-activeline .CodeMirror-line span.cm-formatting-link.cm-strong.cm-em { - opacity: 1; -} - -.theme-dark div.CodeMirror-activeline .CodeMirror-line span.cm-formatting.cm-formatting-strong.cm-strong { - opacity: 1; - color: var(--text-accent); -} - -.theme-dark div.CodeMirror-activeline .CodeMirror-line span.cm-formatting.cm-formatting-em.cm-em { - opacity: 1; - color: var(--text-orange); -} - -.theme-dark div.CodeMirror-activeline .CodeMirror-line span.cm-formatting.cm-formatting-strong.cm-em.cm-strong { - opacity: 1; - color: var(--green); -} - -.theme-light div.CodeMirror-activeline .CodeMirror-line span.cm-formatting.cm-formatting-strong.cm-strong { - opacity: 1; - color: var(--orange); -} - -.theme-light div.CodeMirror-activeline .CodeMirror-line span.cm-formatting.cm-formatting-em.cm-em, -.theme-light div.CodeMirror-activeline .CodeMirror-line span.cm-formatting.cm-formatting-strong.cm-em.cm-strong { - opacity: 1; - color: var(--orange); -} - -.workspace>.workspace-split>.workspace-leaf:first-of-type:last-of-type .view-header { - border: none; - background: var(--background-primary); -} - -/*smaller header title*/ -.view-header-title { - font-size: var(--font-size-file-header-title); -} - -.popover.hover-popover { - overflow: hidden; - box-shadow: 0 0 6px 6px var(--theme-color-translucent-015); -} - - - -/*hover editor plugin*/ -.popover.hover-editor .popover-title:after { - background: none !important; -} - -body:not(.remove-heading-indicator) .popover h1:hover::before, -body:not(.remove-heading-indicator) .markdown-embed h1:hover::before, -body:not(.remove-heading-indicator) .markdown-preview-view .callout-content h1:hover::before { - content: 'H1'; - position: absolute; - font-size: 0.4em; - width: auto; - border: 1px solid; - padding: 0 2px; - border-radius: var(--radius-xs); - top: -1.1em; -} -body:not(.remove-heading-indicator) .popover h2:hover::before, -body:not(.remove-heading-indicator) .markdown-embed h2:hover::before, -body:not(.remove-heading-indicator) .markdown-preview-view .callout-content h2:hover::before { - content: 'H2'; - position: absolute; - font-size: 0.45em; - width: auto; - border: 1px solid; - padding: 0 2px; - border-radius: var(--radius-xs); - top: -1.1em; -} -body:not(.remove-heading-indicator) .popover h3:hover::before, -body:not(.remove-heading-indicator) .markdown-embed h3:hover::before, -body:not(.remove-heading-indicator) .markdown-preview-view .callout-content h3:hover::before { - content: 'H3'; - position: absolute; - font-size: 0.45em; - width: auto; - border: 1px solid; - padding: 0 2px; - border-radius: var(--radius-xs); - top: -1.1em; -} -body:not(.remove-heading-indicator) .popover h4:hover::before, -body:not(.remove-heading-indicator) .markdown-embed h4:hover::before, -body:not(.remove-heading-indicator) .markdown-preview-view .callout-content h4:hover::before { - content: 'H4'; - position: absolute; - font-size: 0.5em; - width: auto; - border: 1px solid; - padding: 0 2px; - border-radius: var(--radius-xs); - top: -1.1em; -} -body:not(.remove-heading-indicator) .popover h5:hover::before, -body:not(.remove-heading-indicator) .markdown-embed h5:hover::before, -body:not(.remove-heading-indicator) .markdown-preview-view .callout-content h5:hover::before { - content: 'H5'; - position: absolute; - font-size: 0.55em; - width: auto; - border: 1px solid; - padding: 0 2px; - border-radius: var(--radius-xs); - top: -1.1em; -} -body:not(.remove-heading-indicator) .popover h6:hover::before, -body:not(.remove-heading-indicator) .markdown-embed h6:hover::before, -body:not(.remove-heading-indicator) .markdown-preview-view .callout-content h6:hover::before { - content: 'H6'; - position: absolute; - font-size: 0.6em; - width: auto; - border: 1px solid; - padding: 0 2px; - border-radius: var(--radius-xs); - top: -1.1em; -} - -body:not(.remove-heading-indicator) .markdown-embed :is(h1, h2, h3, h4, h5, h6):hover::before, -body:not(.remove-heading-indicator) .callout-content :is(h1, h2, h3, h4, h5, h6):hover::before{ - margin-left: 0 !important; -} -body:not(.remove-heading-indicator) .callout-content :is(h1, h2, h3, h4, h5, h6):hover::before { - top: -1.25em; -} - -:is(.markdown-preview-section,.markdown-rendered) table:not(:is(.dataview.table-view-table,.table-editor)) { - - border-collapse: collapse; - overflow: auto; - margin: 20px auto; -} - -body.table-width-100 :is(.markdown-preview-section,.markdown-rendered) table:not(.dataview.table-view-table) { - width: 100%; -} -body.table-width-auto :is(.markdown-preview-section,.markdown-rendered) table:not(.dataview.table-view-table) { - width: auto; -} - -:is(.markdown-preview-section,.markdown-rendered) table:not(:is(.dataview.table-view-table,.table-editor)):active, -:is(.markdown-preview-section,.markdown-rendered) table:not(:is(.dataview.table-view-table,.table-editor)):hover { - overflow: hidden; - resize: both !important; -} - -body .markdown-preview-view th, -body .markdown-source-view.mod-cm6 .dataview.table-view-table thead.table-view-thead tr th, -body .table-view-table>thead>tr>th { - background-image: none; -} -/*修复Itinerary插件显示问题*/ -:is(.markdown-preview-view,.markdown-rendered) :is(.markdown-preview-section,.markdown-rendered) .block-language-itinerary.fc table { - overflow: unset; -} - -/*modified from https://codepen.io/brettdewoody/pen/oBjbbB */ -body.no-wrapped-table-cell table:not([class*="table-view-table"]), -body.no-wrapped-dvtable-cell .dataview.table-view-table { - width: 100%; - table-layout: fixed; -} - -body.no-wrapped-table-cell table:not([class*="table-view-table"]) :is(th,td), -body.no-wrapped-dvtable-cell .dataview.table-view-table :is(th,td) { - white-space: nowrap; - overflow-x: auto; - text-overflow: ellipsis; -} - -body.no-wrapped-table-cell table:not([class*="table-view-table"]) :is(th,td):hover, -body.no-wrapped-dvtable-cell .dataview.table-view-table :is(th,td):hover { - text-overflow: clip; -} -/*modified from https://forum.obsidian.md/t/custom-css-for-tables-5-new-styles-ready-to-use-in-your-notes/17084 */ - -/****dataview table***/ -table.table-view-table > thead > tr > th { - font-size: 0.9em; -} -table.table-view-table > tbody > tr > td { - font-size: 0.85em; -} - -body.wrapped-dvtable:not(.no-wrapped-dvtable-cell):not(.no-wrapped-dvtable) :is(.markdown-preview-view,.markdown-rendered) table.dataview.table-view-table>thead>tr, -body.wrapped-dvtable:not(.no-wrapped-dvtable-cell):not(.no-wrapped-dvtable) :is(.markdown-preview-view,.markdown-rendered) .table.dataview.table-view-table>tbody>tr, -body.wrapped-table:not(.no-wrapped-table-cell):not(.no-wrapped-table) :is(.markdown-preview-view,.markdown-rendered) table:not([class*="table-view-table"]) >thead>tr, -body.wrapped-table:not(.no-wrapped-table-cell):not(.no-wrapped-table) :is(.markdown-preview-view,.markdown-rendered) table:not([class*="table-view-table"]) >tbody>tr { - white-space: pre-wrap; - word-break: break-word; - overflow-wrap: anywhere; -} - -body.no-wrapped-dvtable .block-language-dataview, -body.no-wrapped-table table:not([class*="table-view-table"]) { - width: 100%; - margin: 0; - overflow-x: auto; - white-space: nowrap; -} -body.no-wrapped-dvtable table.dataview th { - padding: 0 20px; - font-size: 1em; -} - -body.no-wrapped-dvtable table.dataview tbody tr td:first-child { - font-size: 0.9em; -} - -body.no-wrapped-dvtable table.dataview td:not(:first-child), -body.no-wrapped-dvtable table.dataview tr > td:last-of-type { - font-size: 0.9em; - max-width: unset; -} - -body.auto-serial-number-dvtable .markdown-source-view:not(.cards) .dataview.table-view-table { - counter-reset: sec; -} -body.auto-serial-number-dvtable .markdown-source-view:not(.cards) .dataview.table-view-table> tbody > tr> td:first-child::before { - counter-increment: sec; - content:counter(sec) ". "; -} - -body.auto-serial-number-dvtable .markdown-preview-view:not(.cards) .dataview.table-view-table { - counter-reset: section; -} -body.auto-serial-number-dvtable .markdown-preview-view:not(.cards) .dataview.table-view-table> tbody > tr> td:first-child::before { - counter-increment: section; - content:counter(section) ". "; -} - -body:not(.no-wrapped-dvtable) :is(.markdown-preview-view,.markdown-rendered) .table-view-table>tbody>tr>td, -body:not(.no-wrapped-dvtable) .markdown-source-view.mod-cm6 .table-view-table>tbody>tr>td { - max-width: 18em; -} - -:is(.markdown-preview-view,.markdown-rendered) table tbody>tr:nth-child(odd), -.markdown-source-view table tbody>tr:nth-child(odd) { - background-color: var(--table-background-color-odd); -} - -:is(.markdown-preview-view,.markdown-rendered) table tbody>tr, -.markdown-source-view table tbody>tr { - background-color: var(--table-background-color); -} - -:is(.markdown-preview-view,.markdown-rendered) :is(th,td) { - padding: 4px 10px; - border: none; -} - -:is(.markdown-preview-view,.markdown-rendered,.markdown-source-view) th, -:is(.markdown-preview-view,.markdown-rendered,.markdown-source-view) thead tr > th:nth-child(2n+2) { - background-color: var(--table-thead-background-color); - font-family: var(--font-family-strong); -} - - -/*table hover*/ -:is(.markdown-preview-view,.markdown-rendered) td:hover, -.markdown-rendered tbody tr > td:nth-child(2n+2):hover { - background-color: var(--table-hover-color); -} - -/*table raw hover*/ -:is(.markdown-preview-view,.markdown-rendered) table tbody>tr:hover, -.markdown-rendered tbody tr:nth-child(odd):hover { - background-color: var(--table-hover-raw-color); -} - -:is(.markdown-preview-view,.markdown-rendered,.markdown-source-view) th:hover, -:is(.markdown-preview-view,.markdown-rendered,.markdown-source-view) thead tr > th:nth-child(2n+2):hover { - background-color: var(--table-hover-thead-color); -} - - -body.toggle-table-transition :is(.markdown-preview-view,.markdown-rendered,.markdown-source-view) tbody tr:nth-child(odd):hover, -body.toggle-table-transition :is(.markdown-preview-view,.markdown-rendered,.markdown-source-view) tbody tr:hover{ - background: var(--table-hover-raw-color); - transform: scale(1.02); - transition: transform 0.1s cubic-bezier(0.11, 0.33, 0.23, 0.33); -} - -body.toggle-table-transition :is(.markdown-preview-view,.markdown-rendered,.markdown-source-view) tbody td:hover{ - background: var(--table-hover-color); - transform: scale(1.02); - transition: transform 0.1s cubic-bezier(0.22, 0.66, 0.46, 0.66); -} - -body.show-border-table :is(.markdown-preview-view,.markdown-rendered) :is(th,td) { - border: 1px solid var(--table-border-color); -} - -:is(.markdown-preview-view,.markdown-rendered) table { - box-shadow: 1px 1px 0px rgba(0, 0, 0, 0.1); -} - -body.table-style-one.theme-light { - --table-background-color-odd: rgba(0, 0, 0, 0.02); - --table-background-color: rgba(0, 0, 0, 0.02); - --table-thead-background-color: rgba(0, 0, 0, 0.1); - --table-hover-color: rgba(0, 0, 0, 0.03); - --table-hover-raw-color: rgba(0, 0, 0, 0.05); - --table-hover-thead-color: var(--table-thead-background-color); -} -body.table-style-one.theme-dark { - --table-background-color-odd: rgba(0, 0, 0, 0.3); - --table-background-color: rgba(0, 0, 0, 0.3); - --table-thead-background-color: rgba(0, 0, 0, 0.5); - --table-hover-color: rgba(0, 0, 0, 0.5); - --table-hover-raw-color: rgba(0, 0, 0, 0.5); - --table-hover-thead-color: var(--table-thead-background-color); -} - -body.table-style-two.theme-light { - --table-background-color-odd: rgba(0, 0, 0, 0.02); - --table-background-color: rgba(0, 0, 0, 0.05); - --table-thead-background-color: rgba(0, 0, 0, 0.1); - --table-hover-color: rgba(0, 0, 0, 0.03); - --table-hover-raw-color: rgba(0, 0, 0, 0.09); - --table-hover-thead-color: var(--table-thead-background-color); -} -body.table-style-two.theme-dark { - --table-background-color-odd: rgba(0, 0, 0, 0.3); - --table-background-color: rgba(0, 0, 0, 0.4); - --table-thead-background-color: rgba(0, 0, 0, 0.5); - --table-hover-color: rgba(0, 0, 0, 0.5); - --table-hover-raw-color: rgba(0, 0, 0, 0.5); - --table-hover-thead-color: var(--table-thead-background-color); -} - -body.table-style-two :is(.markdown-preview-view,.markdown-rendered) th { - border: none; - border-bottom: 2px solid; -} -body.table-style-two :is(.markdown-preview-view,.markdown-rendered) td { - border: none; -} - -body.table-style-three :is(.markdown-preview-view,.markdown-rendered) th, -body.table-style-three .markdown-source-view th, -body.table-style-three :is(.markdown-preview-view,.markdown-rendered) th:hover, -body.table-style-three .markdown-source-view th:hover, -body.table-style-three :is(.markdown-preview-view,.markdown-rendered) td:hover, -body.table-style-three .markdown-source-view td:hover, -body.table-style-three :is(.markdown-preview-view,.markdown-rendered) table tbody>tr:hover, -body.table-style-three .markdown-source-view table tbody>tr:hover, -body.table-style-three :is(.markdown-preview-view,.markdown-rendered) table tbody>tr:nth-child(odd), -body.table-style-three .markdown-source-view table tbody>tr:nth-child(odd), -body.table-style-three :is(.markdown-preview-view,.markdown-rendered) table tbody>tr, -body.table-style-three .markdown-source-view table tbody>tr { - background-color: transparent; -} - -/*Full-width table dvtable callout backlinks layout*/ -/*modified from https://github.com/efemkay */ -:is(body.full-width-table,body.full-width-dvtable,body.full-width-callout,body.full-width-backlinks) .markdown-source-view.mod-cm6 .cm-contentContainer.cm-contentContainer, -:is(body.full-width-table,body.full-width-dvtable,body.full-width-callout,body.full-width-backlinks) .markdown-source-view.mod-cm6 .cm-contentContainer.cm-contentContainer > div, -:is(body.full-width-table,body.full-width-dvtable,body.full-width-callout,body.full-width-backlinks) .markdown-source-view.mod-cm6 .cm-contentContainer.cm-contentContainer > div.cm-content, -:is(body.full-width-table,body.full-width-dvtable,body.full-width-callout,body.full-width-backlinks) .markdown-source-view.mod-cm6 .cm-contentContainer.cm-contentContainer > div.cm-content .cm-table-widge { - max-width: 100%; - /* width: 100%; ob1.0*/ -} - -:is(body.full-width-table,body.full-width-dvtable,body.full-width-callout,body.full-width-backlinks) .markdown-preview-view .markdown-preview-sizer.markdown-preview-sizer, -:is(body.full-width-table,body.full-width-dvtable,body.full-width-callout,body.full-width-backlinks) .markdown-preview-view .markdown-preview-sizer.markdown-preview-sizer > div { - max-width: 100%; - margin-inline: auto; - width: 100%; -} - -/* Editing View -- set all divs back to normal width (ensuring specificity rule over some theme), then expand to full-width for each selected css class */ -:is(body.full-width-table,body.full-width-dvtable,body.full-width-callout,body.full-width-backlinks) div.markdown-source-view.mod-cm6 .cm-contentContainer.cm-contentContainer > div > div, -:is(body.full-width-table,body.full-width-dvtable,body.full-width-callout,body.full-width-backlinks) div.markdown-source-view.mod-cm6 .cm-contentContainer.cm-contentContainer > div > .cm-line { - max-width: var(--file-line-width); - margin-inline: auto !important; -} /* important for margin needed because app.css:2842 use it */ - -body.full-width-dvtable .markdown-source-view.mod-cm6 .cm-contentContainer.cm-contentContainer > div > div.cm-preview-code-block:not(.admonition-parent), -body.full-width-table .markdown-source-view.mod-cm6 .cm-contentContainer.cm-contentContainer > div > div:is(.HyperMD-table-row, .cm-table-widget), -body.full-width-callout .markdown-source-view.mod-cm6 .cm-contentContainer.cm-contentContainer > div > div:is(.cm-callout,.admonition-parent), -body.full-width-backlinks .markdown-source-view.mod-cm6 .cm-contentContainer.cm-contentContainer > div:is(.embedded-backlinks) > div { - max-width: 100%; -} - -body.full-width-dvtable .markdown-source-view.mod-cm6 .cm-contentContainer.cm-contentContainer > div > div.cm-preview-code-block>div[class^="block-language"]:not(.block-language-dataview) { - max-width: var(--file-line-width); - margin-inline: auto; -} - -/* Reading View -- similar to Editing View, set all divs to normal-width and then selected divs to full-width, - however, for Reading View, wide-dataview and wide-table will require Contextual Typography plugin */ -:is(body.full-width-table,body.full-width-dvtable,body.full-width-callout,body.full-width-backlinks) div.markdown-preview-view:not(.fullwidth) .markdown-preview-sizer.markdown-preview-sizer > div:not(.obsidian-banner-wrapper) { - max-width: var(--file-line-width); - margin-inline: auto; -} - - -body.full-width-dvtable .markdown-preview-view .markdown-preview-sizer.markdown-preview-sizer > div:is(.el-lang-dataview), -body.full-width-table .markdown-preview-view .markdown-preview-sizer.markdown-preview-sizer > div:is(.el-table), -body.full-width-callout .markdown-preview-view .markdown-preview-sizer.markdown-preview-sizer > div:is([data-callout],.admonition-parent), -body.full-width-backlinks .markdown-preview-view .markdown-preview-sizer.markdown-preview-sizer > div:is(.embedded-backlinks) { - max-width: 100%!important; -} - -/*Full-width table dvtable callout backlinks layout*/ -/*modified from https://github.com/efemkay */ - -/* Editing View -- set Readable Line Length (RLL) to wide (100%) for any css class with "wide" word in it. / "width:100%" added for Blue Topaz / div.cm-content added to override Mado 11 */ -div[class*="wide-"].markdown-source-view.mod-cm6 .cm-contentContainer.cm-contentContainer, -div[class*="wide-"].markdown-source-view.mod-cm6 .cm-contentContainer.cm-contentContainer > div, -div[class*="wide-"].markdown-source-view.mod-cm6 .cm-contentContainer.cm-contentContainer > div.cm-content, -div[class*="wide-"].markdown-source-view.mod-cm6 .cm-contentContainer.cm-contentContainer > div.cm-content .cm-table-widget { - max-width: 100%; - /* width: 100%; ob1.0*/ -} - -/* Reading View -- similar to Editing View, set the RLL to 100% for any css class with "wide" word in it. "width:100%" added for Blue Topaz */ -div[class*="wide-"].markdown-preview-view .markdown-preview-sizer.markdown-preview-sizer, -div[class*="wide-"].markdown-preview-view .markdown-preview-sizer.markdown-preview-sizer > div { - max-width: 100%; - margin-inline: auto; - width: 100%; -} - -/* === Wide Dataview, Table & Backlink === */ -/* Editing View -- set all divs back to normal width (ensuring specificity rule over some theme), then expand to full-width for each selected css class (i.e. wide-dataview, wide-table and wide-backlinks) */ -div.markdown-source-view.mod-cm6:is(.wide-dataview,.wide-table,.wide-backlinks,.wide-callout) .cm-contentContainer.cm-contentContainer > div > div, -div.markdown-source-view.mod-cm6:is(.wide-dataview,.wide-table,.wide-backlinks,.wide-callout) .cm-contentContainer.cm-contentContainer > div > .cm-line { - max-width: var(--file-line-width); - margin-inline: auto !important; -} /* important for margin needed because app.css:2842 use it */ -div[class*="-dataview"].markdown-source-view.mod-cm6 .cm-contentContainer.cm-contentContainer > div > div.cm-preview-code-block:not(.admonition-parent), -div[class*="-table"].markdown-source-view.mod-cm6 .cm-contentContainer.cm-contentContainer > div > div:is(.HyperMD-table-row, .cm-table-widget), -div[class*="-callout"].markdown-source-view.mod-cm6 .cm-contentContainer.cm-contentContainer > div > div:is(.cm-callout,.admonition-parent), -div[class*="-backlinks"].markdown-source-view.mod-cm6 .cm-contentContainer.cm-contentContainer > div:is(.embedded-backlinks) > div { - max-width: 100%; -} - -div[class*="-dataview"].markdown-source-view.mod-cm6 .cm-contentContainer.cm-contentContainer > div > div.cm-preview-code-block>div[class^="block-language"]:not(.block-language-dataview) { - max-width: var(--file-line-width); - margin-inline: auto; -} - -/* Reading View -- similar to Editing View, set all divs to normal-width and then selected divs to full-width, however, for Reading View, wide-dataview and wide-table will require Contextual Typography plugin */ -div.markdown-preview-view:is(.wide-dataview,.wide-table,.wide-backlinks,.wide-callout) .markdown-preview-sizer.markdown-preview-sizer > div { - max-width: var(--file-line-width); - margin-inline: auto; -} -div[class*="-dataview"].markdown-preview-view .markdown-preview-sizer.markdown-preview-sizer > div:is(.el-lang-dataview), -div[class*="-table"].markdown-preview-view .markdown-preview-sizer.markdown-preview-sizer > div:is(.el-table), -div[class*="-callout"].markdown-preview-view .markdown-preview-sizer.markdown-preview-sizer > div:is([data-callout],.admonition-parent), -div[class*="-backlinks"].markdown-preview-view .markdown-preview-sizer.markdown-preview-sizer > div:is(.embedded-backlinks) { - max-width: 100%!important; -} - -/***end--Full-width table display--end****/ - -.popover mark { - color: var(--text-normal); -} - -.theme-light .cm-s-obsidian span.cm-formatting-highlight, -.theme-light .cm-s-obsidian span.cm-highlight:not([class*="code"]), -.theme-light :is(.markdown-preview-view,.markdown-rendered) mark, -.theme-light .cm-formatting.cm-formatting-highlight.cm-strong.cm-em.cm-highlight, -.theme-light .popover mark, -.theme-light span.cm-strong.cm-em.cm-highlight { - background-color: hsla(var(--text-highlight-bg-h-light), var(--text-highlight-bg-s-light), var(--text-highlight-bg-l-light), var(--text-highlight-bg-a-light)); -} -.theme-dark .cm-s-obsidian span.cm-formatting-highlight, -.theme-dark .cm-s-obsidian span.cm-highlight:not([class*="code"]), -.theme-dark :is(.markdown-preview-view,.markdown-rendered) mark, -.theme-dark .cm-formatting.cm-formatting-highlight.cm-strong.cm-em.cm-highlight, -.theme-dark .popover mark, -.theme-dark span.cm-strong.cm-em.cm-highlight { - background-color: hsla(var(--text-highlight-bg-h-dark), var(--text-highlight-bg-s-dark), var(--text-highlight-bg-l-dark), var(--text-highlight-bg-a-dark)); -} - -.theme-light :is(.markdown-preview-view,.markdown-rendered) :not(font)>strong>em>mark { - background-color: hsla(var(--text-highlight-bg-h-light), calc(var(--text-highlight-bg-s-light) * 1.5), calc(var(--text-highlight-bg-l-light) * 0.6), calc(var(--text-highlight-bg-a-light) * 0.28)); -} - -.theme-dark :is(.markdown-preview-view,.markdown-rendered) :not(font)>strong>em>mark { - background-color: hsla(var(--text-highlight-bg-h-dark), calc(var(--text-highlight-bg-s-dark) * 1.5), calc(var(--text-highlight-bg-l-dark) * 1.1), calc(var(--text-highlight-bg-a-dark) * 0.55)); -} - -body:not(.remove-colorful-highlight-bg) .cm-em.cm-formatting.cm-formatting-highlight.cm-highlight, -body:not(.remove-colorful-highlight-bg) .cm-em.cm-formatting.cm-formatting-highlight.cm-highlight + .cm-em.cm-highlight:not([class*="strong"]), -.markdown-source-view.colorful-highlight .cm-em.cm-formatting.cm-formatting-highlight.cm-highlight, -.markdown-source-view.colorful-highlight .cm-em.cm-formatting.cm-formatting-highlight.cm-highlight + .cm-em.cm-highlight:not([class*="strong"]), -body:not(.remove-colorful-highlight-bg) :is(.markdown-preview-view,.markdown-rendered) :not(font):not(strong)>em>mark, -:is(.markdown-preview-view,.markdown-rendered).colorful-highlight :not(font):not(strong)>em>mark { - background-color: var(--bg-color-highlight-1); - color: var(--color-highlight-1); - font-style: normal; - font-weight: var(--font-weight-highlight-1); -} -body:not(.remove-colorful-highlight-bg) :is(.markdown-preview-view,.markdown-rendered) :not(font):not(strong)>em>mark { - border-radius: var(--radius-xs); -} - -body:not(.remove-colorful-highlight-bg) .cm-formatting.cm-formatting-highlight.cm-highlight.cm-strong, -body:not(.remove-colorful-highlight-bg) .cm-formatting.cm-formatting-highlight.cm-highlight.cm-strong + .cm-highlight.cm-strong:not([class*="em"]), -.markdown-source-view.colorful-highlight .cm-formatting.cm-formatting-highlight.cm-highlight.cm-strong, -.markdown-source-view.colorful-highlight .cm-formatting.cm-formatting-highlight.cm-highlight.cm-strong + .cm-highlight.cm-strong:not([class*="em"]), -body:not(.remove-colorful-highlight-bg) :is(.markdown-preview-view,.markdown-rendered) :not(font):not(em)>strong>mark, -:is(.markdown-preview-view,.markdown-rendered).colorful-highlight :not(font):not(em)>strong>mark { - background-color: var(--bg-color-highlight-2) !important; - color: var(--color-highlight-2) !important; - font-weight: var(--font-weight-highlight-2); -} - -body:not(.remove-colorful-highlight-bg) .cm-em.cm-formatting.cm-formatting-highlight.cm-highlight.cm-strong, -body:not(.remove-colorful-highlight-bg) .cm-em.cm-formatting.cm-formatting-highlight.cm-highlight.cm-strong + .cm-em.cm-highlight.cm-strong, -.markdown-source-view.colorful-highlight .cm-em.cm-formatting.cm-formatting-highlight.cm-highlight.cm-strong, -.markdown-source-view.colorful-highlight .cm-em.cm-formatting.cm-formatting-highlight.cm-highlight.cm-strong + .cm-em.cm-highlight.cm-strong, -body:not(.remove-colorful-highlight-bg) :is(.markdown-preview-view,.markdown-rendered) :not(font)>strong>em>mark, -:is(.markdown-preview-view,.markdown-rendered).colorful-highlight :not(font)>strong>em>mark { - background-color: var(--bg-color-highlight-3) !important; - color: var(--color-highlight-3) !important; - font-style: normal; - font-weight: var(--font-weight-highlight-3); - background-image: initial; - background-clip: initial; - -webkit-background-clip: initial; - -webkit-text-fill-color: initial; -} -body:not(.remove-colorful-highlight-bg) .cm-em.cm-formatting.cm-formatting-highlight.cm-highlight.cm-strong, -body:not(.remove-colorful-highlight-bg) .cm-em.cm-formatting.cm-formatting-highlight.cm-highlight.cm-strong + .cm-em.cm-highlight.cm-strong, -body:not(.remove-colorful-highlight-bg) .cm-em.cm-formatting.cm-formatting-highlight.cm-highlight, -body:not(.remove-colorful-highlight-bg) .cm-em.cm-formatting.cm-formatting-highlight.cm-highlight + .cm-em.cm-highlight:not([class*="strong"]) { - padding: 1px 0; -} - -body.all-rounded-corners-highlight .cm-s-obsidian span.cm-highlight, -body.all-rounded-corners-highlight :is(.markdown-preview-view,.markdown-rendered) mark { - -webkit-box-decoration-break: clone; - border-radius: 5px; - padding: 1px 2px; - margin: 0 2px; -} - -body.all-rounded-corners-highlight .cm-s-obsidian .cm-formatting.cm-formatting-highlight:has(+ span.cm-highlight) { - border-radius: 5px 0 0 5px; - padding: 1px 0; - margin: 0 -5px 0 2px; -} - -body.all-rounded-corners-highlight .cm-s-obsidian .cm-formatting.cm-formatting-highlight+span.cm-highlight:has(+ span.cm-highlight) { - padding: 1px 4px; -} - -body.all-rounded-corners-highlight .cm-s-obsidian span.cm-highlight+.cm-formatting.cm-formatting-highlight { - border-radius: 0 5px 5px 0; - padding: 1px 0; - margin: 0 2px 0 -5px; -} - -body.no-rounded-corners-highlight .cm-s-obsidian span.cm-highlight, -body.no-rounded-corners-highlight :is(.markdown-preview-view,.markdown-rendered) mark { - border-radius: 0; - padding: 0; - margin: 0; -} - -.status-bar, -.side-dock.mod-right, -.side-dock.mod-left { - border-color: var(--panel-border-color); - border-width: 1px; -} -/* ----状态栏透明开关----------- */ - -body.bt-search-bar-bottom .document-search-container { - bottom: 38px; - width: 100% !important; - position: absolute; - height: 62px !important; - margin: 0 5px; -} -body.bt-status-on .status-bar { - position: sticky; -} -.status-bar { - --bar-vertical-padding: 5px; - --bar-height: calc(22px + (var(--bar-vertical-padding))); - line-height: 1; - height: var(--bar-height); - max-height: var(--bar-height); - min-height: var(--bar-height); - overflow: hidden; - color: var(--status-bar-text-color); - border-top: 1px solid var(--panel-border-color); - background-color: var(--status-bar-bg); -} - -.is-translucent .status-bar { - margin: 0; -} - -body.dark-background-file .nav-file-title.is-active { - background-color: var(--theme-color); - color: var(--white); -} - -/** file name**/ - -body.file-name-animation .nav-file-title-content:not(.is-being-renamed):hover { - animation: filemove 1.5s 1 normal linear; -} - -body.file-name-animation .nav-file-title-content:not(.is-being-renamed) { - min-width: 200px; - white-space: nowrap; -} -body.file-name-animation .nav-file { - display: table; -} -/** file folder name**/ -body.file-name-animation .obsidian-icon-folder-icon { - vertical-align: middle; - display: inline; -} - -body.file-name-animation .nav-folder-title { - white-space: nowrap; -} - -.nav-folder-title-content.is-being-renamed { - white-space: break-spaces; -} - -body.file-name-animation .nav-folder-title-content:not(.is-being-renamed) { - min-width: 200px; - white-space: nowrap; -} -body.file-name-animation .nav-folder-title-content:not(.is-being-renamed):hover { - animation: filemove 1.5s 1 normal linear; -} - -@keyframes filemove { - 0% {transform: translate(0, 0);} - 100% {transform: translate(calc(-100% + 200px), 0);} -} - -body.file-bg-rounded-rectangle .nav-file-title.is-active, -body.file-bg-rounded-rectangle .nav-folder-title.is-active, -body:not(.is-grabbing).file-bg-rounded-rectangle .nav-file-title:hover, -body:not(.is-grabbing).file-bg-rounded-rectangle .nav-folder-title:hover { - border-radius: var(--radius-m); -} - -body.file-bg-pill .nav-file-title.is-active, -body.file-bg-pill .nav-folder-title.is-active, -body:not(.is-grabbing).file-bg-pill .nav-file-title:hover, -body:not(.is-grabbing).file-bg-pill .nav-folder-title:hover { - border-radius: 15px; -} - -body.file-bg-pill .nav-folder.mod-root>.nav-folder-title { - margin-left: -2px; -} - -.item-list { - padding: 0; -} - -body.file-bg-pill .item-list { - padding: 0 4px 0 1px; -} - -.item-list .nav-file-icon { - margin-left: 2px; -} - -.nav-file-title.is-active { - background-color: var(--theme-color-translucent-01); -} - -body:not(.is-grabbing) .tree-item-self.is-clickable.nav-folder-title:hover { - background-color: color-mix(in srgb, var(--nav-item-background-active), transparent 0%); - color: var(--text-normal); - font-weight: bold; -} - -.nav-folder-title.is-being-dragged-over { - border-radius: var(--radius-xs); - color: var(--theme-color); - background: var(--theme-color-translucent-015); -} - -body:not(.is-grabbing) .tree-item-self.is-clickable.nav-file-title.is-active:hover, -body:not(.is-grabbing) .tree-item-self.is-clickable.nav-file-title:hover, -.nav-file:not(.is-active):hover .nav-file-title, -.nav-folder:hover .nav-folder-content { - background-color: var(--theme-color-translucent-01); -} - -body.is-grabbing .nav-folder-title:hover, -body.is-grabbing .nav-file-title:hover { - font-weight: bold !important; - color: var(--theme-color); - filter: hue-rotate(160deg); - background-color: var(--theme-color-translucent-015); - opacity: 1; -} - -.workspace-leaf.mod-active .nav-folder.has-focus > .nav-folder-title, -.workspace-leaf.mod-active .nav-file.has-focus > .nav-file-title { - background-color: var(--theme-color-translucent-015); -} - -body.is-grabbing:not(.remove-file-icons):not(.bt-toggle-colorful-folder.folder-style-change-options-colorful) .nav-file-title.is-active[data-path$=".md"]>.nav-file-title-content::before, -body:not(.remove-file-icons):not(.bt-toggle-colorful-folder.folder-style-change-options-colorful) .nav-file-title.is-active[data-path$=".md"]:hover>.nav-file-title-content::before { - filter: hue-rotate(160deg); -} - -.side-dock-plugin-panel-inner { - padding-left: 6px; -} - -/*link*/ -:is(.markdown-preview-view,.markdown-rendered) .internal-link { - font-family: var(--font-family-strong) !important; -} - -body:not(.default-unresolved-link) :is(.markdown-preview-view,.markdown-rendered) .internal-link.is-unresolved>*, -body:not(.default-unresolved-link) *>.internal-link.is-unresolved, -body:not(.default-unresolved-link) .markdown-source-view.mod-cm6 .cm-hmd-internal-link .is-unresolved .cm-underline -{ - color: var(--unresolved-link) !important; - --link-unresolved-decoration-color:var(--unresolved-link); -} - -body:not(.default-unresolved-link) .markdown-source-view.mod-cm6 .is-unresolved .cm-underline, -body:not(.default-unresolved-link) :is(.markdown-preview-view,.markdown-rendered) .internal-link.is-unresolved { - opacity: 0.7; -} - -body.link-underline-unresolved :is(.markdown-preview-view,.markdown-rendered) .internal-link.is-unresolved>*, -body.link-underline-unresolved *>.internal-link.is-unresolved, -body.link-underline-unresolved .markdown-source-view.mod-cm6 .cm-hmd-internal-link .is-unresolved .cm-underline, -body.link-underline-unresolved .markdown-source-view.mod-cm6 .is-unresolved .cm-underline, -body.link-underline-unresolved :is(.markdown-preview-view,.markdown-rendered) .internal-link.is-unresolved, -body.link-underline-unresolved .cm-hmd-internal-link .is-unresolved .cm-underline { - text-decoration: none !important; -} - -body:not(.default-unresolved-link) :is(.markdown-preview-view,.markdown-rendered) mark .internal-link.is-unresolved { - opacity: 0.9; -} - -:is(.markdown-preview-view,.markdown-rendered) .internal-link.is-unresolved:hover { - opacity: 1 !important; -} -.metadata-container .internal-link:hover, -.markdown-rendered .internal-link:hover -{ - color: var(--internal-link-color); - opacity: 0.8; -} -.cm-s-obsidian span.cm-hmd-internal-link:hover -{ - color: var(--internal-link-color); -} -.metadata-container .internal-link, - .markdown-rendered .internal-link, -a.internal-link, -.cm-s-obsidian span.cm-hmd-internal-link , -.cm-s-obsidian span.cm-hmd-internal-link a { - color: var(--internal-link-color); -} -.metadata-container a.external-link:hover, -.markdown-rendered a.external-link:hover -{ - color: var(--external-link-color); - opacity: 0.8; -} -.cm-s-obsidian span.cm-link:hover, -.cm-s-obsidian span.cm-url:hover, -.markdown-source-view.mod-cm6 .cm-link .cm-underline:hover, -.markdown-source-view.mod-cm6 .cm-url .cm-underline:hover -{ - color: var(--external-link-color); -} -.cm-s-obsidian span.cm-link, -.cm-s-obsidian span.cm-url, -.cm-s-obsidian span.cm-link a -{ - color: var(--external-link-color); -} - - -/* internal link in highlight -.cm-highlight.cm-hmd-internal-link, -:is(.markdown-preview-view,.markdown-rendered) mark .internal-link:not(.is-unresolved) { - color: var(--internal-link-color-in-highlight) !important; -} -*/ - -:is(.markdown-preview-view,.markdown-rendered) a:hover { - color: var(--text-accent); - border-radius: var(--radius-xs); - text-decoration: none !important; - transition: all 0.4s ease-in-out; - text-shadow: var(--window-shadow-hover); - -} - -body.colorful-link-animation :is(.markdown-preview-view,.markdown-rendered) a:hover { - animation: 2s colorful-link infinite; -} - -@keyframes colorful-link { - 0% { filter: hue-rotate(0deg); } - 100% { filter: hue-rotate(360deg); } -} - -a.external-link { - text-decoration: underline; - color: var(--external-link-color); -} - - -body.link-underline-external .markdown-source-view.mod-cm6 .cm-link .cm-underline, -body.link-underline-externa .markdown-source-view.mod-cm6 .cm-url .cm-underline, -body.link-underline-external a.external-link, -body:not(.link-underline-internal) .markdown-source-view.mod-cm6 .cm-hmd-internal-link >*:not(.is-unresolved).cm-underline, -body:not(.link-underline-internal) :is(.markdown-preview-view,.markdown-rendered) .internal-link:not(.is-unresolved) { - text-decoration-line:none; -} - -.cm-url:hover { - transition: all 600ms; -} - -.cm-s-obsidian div.HyperMD-codeblock-bg { - background: var(--background-code); -} - -.theme-dark :not(pre)>code[class*='language-'], -.theme-dark pre[class*='language-'] { - background: var(--background-code) ; - border-radius: var(--radius-m); -} - -.theme-light :not(pre)>code[class*='language-'], -.theme-light pre[class*='language-'] { - background: var(--background-code); - border-radius: var(--radius-m); -} - -.theme-light code[class*="language-"], -.theme-light pre[class*="language-"] { - text-shadow: none; - color: var(--code-normal); - letter-spacing: calc(var(--letter-space-code) * 0.02em); -} - -.theme-dark code[class*="language-"], -.theme-dark pre[class*="language-"] { - color: var(--code-normal); - text-shadow: none; - letter-spacing: calc(var(--letter-space-code) * 0.02em); -} - -body.codebox-frosted-glass .canvas-node-container pre[class*='language-'] { - backdrop-filter: none; -} -body.codebox-frosted-glass .cm-s-obsidian div.HyperMD-codeblock-bg, -body.codebox-frosted-glass :not(pre)>code[class*='language-'], -body.codebox-frosted-glass pre[class*='language-'] { - backdrop-filter: blur(calc(var(--blur-codebox-frosted-glass) * 2px)); -} - -code[class*="language-"] { - padding: 1em 0.5em; -} - -/*embedded*/ -body.naked-embed.theme-dark, -body.naked-embed.theme-light { - --embed-color: transparent !important; -} -body.naked-embed .markdown-source-view.mod-cm6 .markdown-embed { - border: none; -} -body.hide-embed-title .markdown-embed-title{ - display: none; -} -body.embed-hd .markdown-embed :is(.markdown-preview-view,.markdown-rendered) :is(h1,h2,h3,h4,h5,h6) { - display: none; -} -.hide-embed-banner .markdown-embed-content .obsidian-banner-wrapper { - display: none; -} - - -.popover.hover-popover :is(.markdown-preview-view,.markdown-rendered) .markdown-embed, -.popover .markdown-preview-sizer:is(.markdown-preview-section,.markdown-rendered) { - height: auto; - min-height: min-content !important; -} - - -body.embed-hover.theme-light :is(.markdown-preview-view,.markdown-rendered) .internal-embed .markdown-embed:hover { - box-shadow: 0 3px 8px 0 rgba(0, 0, 0, .25); - transition: all .2s ease-in-out; - transform: translate3d(0px, -3px, 0px); -} -body.embed-hover.theme-light .markdown-source-view .internal-embed .markdown-embed:hover { - background: var(--background-primary-alt); - color: var(--text-normal); - border-radius: 6px; - border-width: 1px; - box-shadow: 0 1rem 2rem rgba(0, 0, 0, 0.1); -} - -body.embed-hover.theme-dark .internal-embed .markdown-embed:hover { - box-shadow: 0 14px 28px rgba(0,0,0,0.25), 0 10px 10px rgba(0,0,0,0.22); - transform: translate3d(0px, -3px, 0px); -} - -body:not(.is-mobile).hover-scrollbars .markdown-embed:not(.canvas-node-content), -body:not(.is-mobile).hover-scrollbars .popover.hover-popover .markdown-embed .markdown-embed { - padding: 0 0 0 1em; -} -.markdown-embed:not(.canvas-node-content), -.popover.hover-popover .markdown-embed .markdown-embed { - background-color: var(--embed-color); - border: 1px solid var(--embed-color); - border-radius: var(--radius-xs); - margin-bottom: 0; - padding: 0 0.5em 0 1em; - margin-top: 0; -} -.popover.hover-popover, -.popover.hover-popover .markdown-embed { - background-color: var(--background-popover); -} - - -.markdown-embed-link, -.file-embed-link { - position: absolute; - top: 2px; - right: 2px; - color: var(--text-faint); - cursor: pointer; - opacity: 0; -} - -.markdown-embed:hover .markdown-embed-link, -.markdown-embed:hover .file-embed-link { - opacity: 1; -} - -.markdown-source-view .markdown-embed { - border-color: transparent; - border-radius: var(--radius-xs); -} - -:is(.markdown-preview-view,.markdown-rendered,.cm-s-obsidian) .file-embed { - border: 2px solid var(--embed-color); - border-radius: var(--radius-l); - padding: 0.1em 0.5em; - margin: 0.1em 0; - background-color: transparent; -} - -:is(.markdown-preview-view,.markdown-rendered,.cm-s-obsidian) .file-embed:hover { - border: 2px solid var(--theme-color-translucent-04); - background-color: var(--embed-color); - border-radius: var(--radius-m); -} - -.markdown-embed .markdown-preview-sizer:is(.markdown-preview-section,.markdown-rendered):first-child :is(h1,h2,h3,h4,h5,h6) { - margin-block-start: 0.5em; -} - -.inline-embed .markdown-embed-content p:first-child { - margin: 0.5em 0; -} - -body:not(.adjustable-embed-content-height) :is(.markdown-preview-view,.markdown-rendered) .markdown-embed-content { - padding-right: 0; - max-height: 100%; - max-width: 100%; - overflow: auto; -} - -body.adjustable-embed-content-height :is(.markdown-preview-view,.markdown-rendered) .markdown-embed-content { - padding-right: 0; - max-height: var(--embed-content-height); - max-width: 100%; - overflow: auto; -} - -.file-embed-icon { - color: var(--theme-color); - vertical-align: middle; -} - -.markdown-embed-title { - font-weight: 600; - font-size: var(--font-size-embed-title-size); - line-height: inherit; - height: unset; - word-wrap: break-word; - white-space: pre-wrap; -} - -.file-embed-title { - font-weight: 600; - text-align: left; - line-height: 1.5em; - font-size: var(--font-size-embed-file); -} - -/* Source: https://github.com/AGMStudio/prism-theme-one-dark */ -body:not(.whole-code-wrap) code[class*='language-'], -body:not(.whole-code-wrap) pre[class*='language-'] { - word-spacing: normal; - word-break: normal; - word-wrap: break-word; - white-space: pre; - -moz-tab-size: 4 !important; - -o-tab-size: 4 !important; - tab-size: 4 !important; -} - -body.whole-code-wrap code[class*='language-'], -body.whole-code-wrap pre[class*='language-'] { - word-spacing: normal; - word-wrap: break-word; - white-space: pre-wrap; - word-break: normal; -} - - - -/* Inline code */ -:not(pre)>code[class*='language-'] { - padding: .1em !important; - border-radius: var(--radius-s) !important; - white-space: normal !important; -} - -.token.important, -.token.bold { - font-weight: bold !important; -} - -.token.italic { - font-style: italic !important; -} - -.token.entity { - cursor: help !important; -} - -/*show language type in preview mode*/ -/*Thanks to elutao from https://snippets.cacher.io/snippet/018387c872dc39277996 */ -body:not(.remove-language-type) pre::before { - font-family: var(--font-default); - color: #95a3b5; - opacity: 0.7; - font-size: 0.85em; - font-weight: 600; - position: absolute; - right: 48px; - top: 0.05em; -} - -pre { - position: relative; -} - -body:not(.remove-language-type) pre[class~='language-c']::before { - content: "C"; -} -body:not(.remove-language-type) pre[class~='language-py']::before, -body:not(.remove-language-type) pre[class~='language-python']::before { - content: "PYTHON"; -} -body:not(.remove-language-type) pre[class~='language-nginx']::before { - content: "NGINX"; -} -body:not(.remove-language-type) pre[class~='language-css']::before { - content: "CSS"; -} -body:not(.remove-language-type) pre[class~='language-javascript']::before { - content: "JS"; -} -body:not(.remove-language-type) pre[class~='language-js']::before { - content: "JS"; -} -body:not(.remove-language-type) pre[class~='language-php']::before { - content: "PHP"; -} -body:not(.remove-language-type) pre[class~='language-shell']::before, -body:not(.remove-language-type) pre[class~='language-bash']::before { - content: "SHELL"; -} -body:not(.remove-language-type) pre[class~='language-flow']::before { - content: "FLOW"; -} -body:not(.remove-language-type) pre[class~='language-sequence']::before { - content: "SEQUENCE"; -} -body:not(.remove-language-type) pre[class~='language-sql']::before { - content: "SQL"; -} -body:not(.remove-language-type) pre[class~='language-yaml']::before { - content: "YAML"; -} -body:not(.remove-language-type) pre[class~='language-ini']::before { - content: "INI"; -} -body:not(.remove-language-type) pre[class~='language-xml']::before { - content: "XML"; -} -body:not(.remove-language-type) pre[class~='language-git']::before { - content: "GIT"; -} -body:not(.remove-language-type) pre[class~='language-cs']::before { - content: "C#"; -} -body:not(.remove-language-type) pre[class~='language-cpp']::before { - content: "C++"; -} -body:not(.remove-language-type) pre[class~='language-java']::before { - content: "JAVA"; -} -body:not(.remove-language-type) pre[class~='language-html']::before { - content: "HTML"; -} -body:not(.remove-language-type) pre[class~='language-txt']::before { - content: "TXT"; -} -body:not(.remove-language-type) pre[class~='language-r']::before { - content: "R"; -} -body:not(.remove-language-type) pre[class~='language-matlab']::before { - content: "MATLAB"; -} - -/* ==== fold icons ==== */ -.CodeMirror-guttermarker-subtle { - color: var(--text-normal); -} - -/*-- reduce left padding --*/ -div:not(.CodeMirror-activeline)>.CodeMirror-line span.cm-formatting.cm-formatting-header { - font-size: 0.6rem !important; - opacity: 0.5; -} - -div.CodeMirror-activeline .CodeMirror-line span.cm-formatting.cm-formatting-header { - font-size: 0.6rem !important; - opacity: 1; -} - -span.cm-formatting.cm-formatting-header { - opacity: 0.45; -} - -body.image-border img{ - border: 1px solid rgba(var(--mono-rgb-100),0.1); - filter: drop-shadow(0px 0px 3px rgba(var(--mono-rgb-100),0.2)); -} -/* images : reduce displayed size of embedded files, zoom on hover */ -body:not(.obsidian-default-image) :is(.markdown-preview-view, .markdown-rendered) .workspace-leaf-content[data-type="markdown"] img:not([class*="emoji"]) { - max-width: var(--image-max-width); - margin-left: auto; - margin-right: auto; -} - -body:not(.obsidian-default-image) .print :is(.markdown-preview-view, .markdown-rendered) img:not([class*="emoji"]) { - display: block; -} - -body:not(.obsidian-default-image) .workspace-leaf-content[data-type="markdown"] .view-content :not(.canvas-node-content)>img:not([class*="emoji"]) { - cursor: zoom-in; - display: block; - margin-left: auto ; - margin-right: auto; -} - -body:not(.image-zoom) .markdown-reading-view button img, -body:not(.image-zoom) .markdown-reading-view .callout-title-inner img { - pointer-events: none; -} - -body:not(.image-zoom) .markdown-reading-view img:not([class*="emoji"]):active, -.workspace-leaf-content[data-type="image"] img:active { - cursor: zoom-out !important; - position: fixed; - object-fit: contain; - max-height: 100%; - max-width: 100%; - height: 100%; - width: 100%; - margin: 1px auto 0; - padding: 0; - left: 0; - right: 0; - bottom: 0; - z-index: 200; - background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MCIgaGVpZ2h0PSI4MCIgdmlld0JveD0iMCAwIDgwIDgwIj4KICA8ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgPHJlY3Qgd2lkdGg9IjgwIiBoZWlnaHQ9IjgwIiBmaWxsPSIjRjJGNEY2Ii8+CiAgICA8ZyBmaWxsPSIjRkZGIj4KICAgICAgPHJlY3Qgd2lkdGg9IjIiIGhlaWdodD0iNzkiIHg9Ijc4Ii8+CiAgICAgIDxyZWN0IHdpZHRoPSIxIiBoZWlnaHQ9IjE5IiB4PSIxOSIvPgogICAgICA8cmVjdCB3aWR0aD0iMSIgaGVpZ2h0PSIxOSIgeD0iMzkiLz4KICAgICAgPHJlY3Qgd2lkdGg9IjEiIGhlaWdodD0iMTkiIHg9IjU5Ii8+CiAgICAgIDxyZWN0IHdpZHRoPSIxIiBoZWlnaHQ9IjE5IiB4PSIxOSIgeT0iMjAiLz4KICAgICAgPHJlY3Qgd2lkdGg9IjEiIGhlaWdodD0iMTkiIHg9IjM5IiB5PSIyMCIvPgogICAgICA8cmVjdCB3aWR0aD0iMSIgaGVpZ2h0PSIxOSIgeD0iNTkiIHk9IjIwIi8+CiAgICAgIDxyZWN0IHdpZHRoPSIxIiBoZWlnaHQ9IjE5IiB4PSIxOSIgeT0iNDAiLz4KICAgICAgPHJlY3Qgd2lkdGg9IjEiIGhlaWdodD0iMTkiIHg9IjM5IiB5PSI0MCIvPgogICAgICA8cmVjdCB3aWR0aD0iMSIgaGVpZ2h0PSIxOSIgeD0iNTkiIHk9IjQwIi8+CiAgICAgIDxyZWN0IHdpZHRoPSIxIiBoZWlnaHQ9IjE5IiB4PSIxOSIgeT0iNjAiLz4KICAgICAgPHJlY3Qgd2lkdGg9IjEiIGhlaWdodD0iMTkiIHg9IjM5IiB5PSI2MCIvPgogICAgICA8cmVjdCB3aWR0aD0iMSIgaGVpZ2h0PSIxOSIgeD0iNTkiIHk9IjYwIi8+CiAgICAgIDxyZWN0IHdpZHRoPSI3OSIgaGVpZ2h0PSIxIiB5PSIxOSIvPgogICAgICA8cmVjdCB3aWR0aD0iNzkiIGhlaWdodD0iMSIgeT0iMzkiLz4KICAgICAgPHJlY3Qgd2lkdGg9Ijc5IiBoZWlnaHQ9IjEiIHk9IjU5Ii8+CiAgICA8L2c+CiAgICA8cmVjdCB3aWR0aD0iODAiIGhlaWdodD0iMiIgeT0iNzgiIGZpbGw9IiNGRkYiLz4KICA8L2c+Cjwvc3ZnPgo="); -} - -body:not(.obsidian-default-image) .workspace-leaf-content[data-type="markdown"] .internal-embed.image-embed.is-loaded img:not([class*="emoji"]) { - max-width: var(--image-max-width); - - display: block; -} - -.internal-embed[alt$="inline"], -.internal-embed[alt$="Inline"], -.internal-embed[alt$="INLINE"], -.internal-embed[alt$="inl"] { - display: inline ; -} - -body:not(.obsidian-default-image) .markdown-source-view.mod-cm6 img:not([class*="emoji"]) { - display: block; - margin: auto !important; - cursor: help; -} - -body.hide-vault-name .nav-folder.mod-root>.nav-folder-title { - display: none; -} - -body.file-name-wrapped .workspace-leaf-content[data-type="file-explorer"] .nav-file-title-content, -body.file-name-wrapped .workspace-leaf-content[data-type="file-explorer"] .nav-folder-title-content { - white-space: normal; -} - -.nav-file-title-content.is-being-renamed { - margin-left: 0px; - text-indent: 0px; - color: black !important; -} - -/* Cursor color in normal vim mode and opacity */ -.cm-fat-cursor .CodeMirror-cursor, -.cm-animate-fat-cursor { - width: 0.6em; - background: #db9a1f; - opacity: 0.6 !important; -} - -/*an active line highlight in vim normal mode */ -.cm-fat-cursor .CodeMirror-activeline .CodeMirror-linebackground, -.CodeMirror-activeline-background.CodeMirror-linebackground, -.cm-active.cm-line { - background-color: var(--activeline-background) !important; -} - -.mute-code-indent-line .markdown-source-view.mod-cm6 .HyperMD-codeblock .cm-indent::before { - display: none; -} - -.muted-activeline-bg .CodeMirror-activeline-background.CodeMirror-linebackground, -.muted-activeline-bg .markdown-source-view.cm-s-obsidian.mod-cm6 .cm-active.cm-line:not(.HyperMD-codeblock-bg) { - background-color: transparent !important; -} - -.CodeMirror pre.CodeMirror-line, -.CodeMirror pre.CodeMirror-line-like { - padding-left: 0; -} - -.CodeMirror pre.HyperMD-codeblock.CodeMirror-line { - padding-left: 4px; - letter-spacing: calc(var(--letter-space-code) * 0.02em); -} - -.CodeMirror pre.HyperMD-quote.CodeMirror-line { - padding-left: 4px; -} - -.cm-s-obsidian pre.HyperMD-header { - padding-top: 0.25em; -} - -/*linenumber*/ -.is-mobile .cm-lineNumbers .cm-gutterElement, -.cm-s-obsidian .CodeMirror-linenumber { - font-family: var(--font-monospace-theme); - font-size: 0.85em; -} - -.cm-gutter.cm-lineNumbers { - font-family: var(--font-monospace-theme); -} - -.cm-lineNumbers .cm-active.cm-gutterElement { - color: var(--text-accent); - /* background: var(--activeline-background); */ -} - -/*----file explorer smaller fonts & line height----*/ -.workspace-leaf-content[data-type="file-explorer"] .nav-file-title, -.workspace-leaf-content[data-type="file-explorer"] .nav-folder-title { - font-size: var(--font-size-folder-and-file); - font-family: var(--font-family-folder-file-title); - border-radius: 0; -} - -.workspace-leaf-content[data-type="file-explorer"] .nav-file-title { - padding: 1px 5px 3px 4px; - color: var(--text-folder-file); -} - -.workspace-leaf-content[data-type="file-explorer"] .nav-folder-title, -.workspace-leaf-content[data-type="file-explorer"] .tree-item-self.is-clickable.mod-collapsible.nav-folder-title { - font-weight: 600; - padding: 4px 0 4px 23px; - color: var(--text-normal); -} - -/*rename*/ -.nav-file-title-content.is-being-renamed, -.nav-folder-title-content.is-being-renamed { - cursor: text; - border-color: transparent; - background-color: white; - color: black; -} - -/*---- nav arrows adjust location ----*/ -body:not(.default-icons) .nav-folder-collapse-indicator { - position: absolute; - transition: transform 20ms linear 0s; -} - -/* body.default-icons .nav-folder-collapse-indicator { - margin-left: -9px; -} */ - -body:not(.default-icons):not(.remove-arrow) .nav-folder-collapse-indicator::before { - position: absolute; - content: "↓"; - margin-left: 3px; - font-family: 'Inter'; - font-weight: bold; - color: var(--text-accent); - transition: transform 10ms linear 0s; -} - -body:not(.default-icons) .nav-folder-collapse-indicator svg { - display: none; - color: var(--accent-strong); - height: 7px; - width: 7px; -} - -body:not(.unmuted-collapsed-folder):not(.is-grabbing) .nav-folder.is-collapsed .nav-folder-title-content:not(.is-being-renamed) { - opacity: 0.55; -} - -body:not(.default-icons) .nav-folder.is-collapsed .nav-folder-collapse-indicator::before { - transform: rotate(-90deg); - opacity: 0.55; -} - -/*search icon 1*/ -body:not(.default-icons) .backlink-pane .search-result-container .collapse-icon { - transition: transform 20ms linear 0s; -} - -body:not(.default-icons) .backlink-pane .search-result-container .collapse-icon::before { - content: "↓"; - font-size: 14px; - font-family: 'Inter'; - font-weight: bold; - color: var(--text-accent); - transition: transform 10ms linear 0s; -} - -body:not(.default-icons) .backlink-pane .search-result-container .collapse-icon svg { - display: none; - color: var(--accent-strong); - height: 7px; - width: 7px; -} - -body:not(.default-icons) .backlink-pane .search-result-container .tree-item.search-result.is-collapsed .collapse-icon::before { - transform: rotate(-90deg); - opacity: 0.5; -} - -/* search panel icons */ -body:not(.default-icons) .workspace-leaf .search-result-container.mod-global-search .tree-item-self.search-result-file-title.is-clickable .collapse-icon { - transition: transform 20ms linear 0s; -} - -body:not(.default-icons) .workspace-leaf .search-result-container.mod-global-search .tree-item-self.search-result-file-title.is-clickable .collapse-icon::before { - content: "↓"; - font-size: 14px; - font-weight: bold; - font-family: 'Inter'; - color: var(--text-accent); - transition: transform 10ms linear 0s; -} - -body:not(.default-icons) .workspace-leaf .search-result-container.mod-global-search .tree-item-self.search-result-file-title.is-clickable .collapse-icon svg { - display: none; - color: var(--accent-strong); - height: 7px; - width: 7px; -} - -body:not(.default-icons) .workspace-leaf .search-result-container.mod-global-search .tree-item.search-result.is-collapsed .collapse-icon::before { - transform: rotate(-90deg); - opacity: 0.5; -} - -/* header collaspe indicators*/ -:is(.markdown-preview-view,.markdown-rendered) div.is-collapsed :is(h1,h2,h3,h4,h5,h6)::after, -:is(.markdown-preview-view,.markdown-rendered) li.is-collapsed::after { - content: "..."; - padding: 5px; - color: var(--text-faint); -} - -body:not(.default-icons) div.heading-collapse-indicator.collapse-indicator { - position: absolute; - margin: 15px 0 0 -20px; - padding: 0; - transition: transform 20ms linear 0s; -} - -body:not(.default-icons) :is(h1,h2) div.heading-collapse-indicator.collapse-indicator { - position: absolute; - transition: transform 20ms linear 0s; -} - -body:not(.default-icons) div.heading-collapse-indicator.collapse-indicator::before { - content: "↓"; - position: absolute; - font-size: 15px; - font-weight: bold; - font-family: 'Inter'; - color: var(--text-accent); - transition: transform 10ms linear 0s; - opacity: 0; -} - -body:not(.default-icons) .heading-collapse-indicator.collapse-indicator.collapse-icon svg { - display: none; -} - -body:not(.default-icons) div.is-collapsed div.heading-collapse-indicator.collapse-indicator { - transform: translateX(7px) translateY(7px) rotate(-90deg); -} - -body:not(.default-icons) div.is-collapsed div.heading-collapse-indicator.collapse-indicator::before, -body:not(.default-icons) :is(h1,h2,h3,h4,h5,h6):hover div.heading-collapse-indicator.collapse-indicator::before { - opacity: 1; -} - -body:not(.default-icons) .outline .tree-item .collapse-icon { - padding: 0; - transition: transform 20ms linear 0s; -} - -body:not(.default-icons) .outline .tree-item .collapse-icon::before { - content: "↓"; - font-size: 1em; - font-weight: bold; - font-family: 'Inter'; - color: var(--text-accent); - transition: transform 10ms linear 0s; -} - -body:not(.default-icons) .outline .tree-item .collapse-icon svg { - display: none; - color: var(--accent-strong); - height: 7px; - width: 7px; -} - -body:not(.default-icons) .outline .tree-item.is-collapsed .collapse-icon::before { - transform: rotate(-90deg); - opacity: 0.5; -} - -/*vertical lines in outline page*/ -.outline .tree-item-children { - margin-left: 14px; - border-left: 1px solid #94949433; - border-radius: 0; - transition: all 400ms ease-in-out; -} - -body.default-icons .outline .tree-item-children { - margin-left: 12.5px; -} - -.outline .tree-item-children:hover { - border-left-color: var(--theme-color-translucent-04); -} - -.tree-item-flair { - line-height: 17px; - padding-top: 3px; - height: 1.45rem; -} - -body.nowrap-outline .outline .tree-item-inner { - white-space: nowrap; -} -/*****from https://www.yuque.com/fanmofeng/obsidian/ioifq0 *******/ - -body.logseq-outline-style .workspace-leaf-content[data-type=outline] .view-content .outline .collapse-icon { - padding-inline-end: var(--size-2-3); -} -body.logseq-outline-style .workspace-leaf-content[data-type=outline] .view-content .outline .collapse-icon::before { - content: "" !important; -} -body.logseq-outline-style .workspace-leaf-content[data-type=outline] .view-content .outline .tree-item { - position: relative; -} -body.logseq-outline-style .workspace-leaf-content[data-type=outline] .view-content .outline .tree-item-self { - position: relative; - margin-bottom: 0; - white-space: nowrap; - margin-top: -1px; /* fix item gap */ -} -body.logseq-outline-style .workspace-leaf-content[data-type=outline] .view-content .outline .tree-item-self .tree-item-inner { - padding-left: 4px; - overflow: hidden; - text-overflow: ellipsis; - height: calc(var(--nav-item-size) * 1.8); - line-height: calc(var(--nav-item-size) * 1.8); -} -body.logseq-outline-style .workspace-leaf-content[data-type=outline] .view-content .outline .tree-item-self .tree-item-inner::before { - content: ""; - width: var(--size-4-1); - height: var(--size-4-1); - border: 2px solid hsla(var(--color-accent-hsl), 0.9); - border-radius: 50%; - position: absolute; - margin-left:-1.5em; - top: 50%; - transform: translateY(-50%); -} -body.logseq-outline-style .workspace-leaf-content[data-type=outline] .view-content .outline .tree-item-self .tree-item-icon ~ .tree-item-inner { - padding-left: 4px; -} -body.logseq-outline-style .workspace-leaf-content[data-type=outline] .view-content .outline .tree-item-self .tree-item-icon ~ .tree-item-inner::before { - content: none; -} -body.logseq-outline-style .workspace-leaf-content[data-type=outline] .view-content .outline .tree-item.is-collapsed .tree-item-icon::before { - box-shadow: 0 0 0 4px var(--background-modifier-hover); -} -body.logseq-outline-style .workspace-leaf-content[data-type=outline] .view-content .outline .tree-item::after { - content: ""; - width: 1.5px; - position: absolute; - background-color: transparent; - top: calc(calc(var(--nav-item-size) * 1.8) / 2 * -1); - left: -10px; - height: calc(100% - calc(var(--nav-item-size) * 1.8) + var(--size-4-8)); -} -body.logseq-outline-style .workspace-leaf-content[data-type=outline] .view-content .outline .tree-item-icon { - cursor: pointer; -} -body.logseq-outline-style .workspace-leaf-content[data-type=outline] .view-content .outline .tree-item-icon::before { - margin-top: 50%; - width: var(--size-4-2); - height: var(--size-4-2); - background-color: hsla(var(--color-accent-hsl), 0.9); - border-radius: 50%; - position: absolute; - left: 4px; - top: 50%; - transform: translateY(-50%); -} -body.logseq-outline-style .workspace-leaf-content[data-type=outline] .view-content .outline .tree-item-icon svg { - display: block; -} -body.logseq-outline-style .workspace-leaf-content[data-type=outline] .view-content .outline .tree-item-icon svg path { - display: none; -} -body.logseq-outline-style .workspace-leaf-content[data-type=outline] .view-content .outline .tree-item:hover > .tree-item-children > .tree-item::after { - background-color: hsla(var(--color-accent-hsl), 0.9); -} -body.logseq-outline-style .workspace-leaf-content[data-type=outline] .view-content .outline .tree-item:hover > .tree-item-self:hover + .tree-item-children .tree-item::after { - background-color: transparent; -} -body.logseq-outline-style .workspace-leaf-content[data-type=outline] .view-content .outline .tree-item:hover > .tree-item-children > .tree-item:hover::after, body.logseq-outline-style .workspace-leaf-content[data-type=outline] .view-content .outline .tree-item:hover > .tree-item-children > .tree-item:hover ~ .tree-item::after { - background-color: transparent; -} -body.logseq-outline-style .workspace-leaf-content[data-type=outline] .view-content .outline .tree-item:hover > .tree-item-children > .tree-item:hover::before { - content: ""; - position: absolute; - top: calc(calc(var(--nav-item-size) * 1.8) / 2 * -1); - left: -10px; - bottom: calc(100% - (calc(var(--nav-item-size) * 1.8) + var(--size-4-2)) / 2 - 1px); - width: 16px; - border-bottom-left-radius: var(--radius-m); - border-bottom: 1.5px solid hsla(var(--color-accent-hsl), 0.9); - border-left: 2px solid hsla(var(--color-accent-hsl), 0.9); -} -body.logseq-outline-style .workspace-leaf-content[data-type=outline] .view-content .outline :is(.tree-item-children, .tree-item-self .tree-item-self) { - padding-left: 0; - margin-left: var(--size-4-5); - border-left: none; -} - -/*tag collapse indicator*/ -.tag-container .tree-item-children { - border-left: 1px solid #94949433; - border-radius: 0 3px 3px 0; - transition: all 300ms ease-in-out; -} - -.tag-container .tree-item-children > div[style="width: 1px; height: 0.1px; margin-bottom: 0px;"] { - height: 0 !important; -} - -.tag-container .tree-item-self .tree-item-icon svg { - display: none; -} - -.tag-container .tree-item-self .tree-item-icon::before { - content: "#"; - font-size: 1em; - font-weight: bold; - font-family: 'Inter'; - color: var(--text-accent); - transition: transform 10ms linear 0s; -} - -.tag-container .tree-item-children:hover { - border-left-color: var(--theme-color); -} - -.tag-container .tree-item.is-collapsed .collapse-icon { - opacity: 0.5; -} - -/*setting panel*/ - -.modal .modal-title { - margin-left: 1em; -} -.modal-content .cmdr-setting-content { - height: auto; -} -[class='modal'] { - max-width: unset ; - width: unset; - min-width: var(--dialog-width); -} - -.modal.mod-settings { - border: none; -} - -.modal.mod-narrow .modal-content { - overflow: hidden; -} - -.vertical-tab-nav-item { - padding: 6px 6px 6px 24px; - margin-bottom: 0; -} - - -.modal.mod-settings .vertical-tab-content-container { - padding: 0; -} - -.modal-content .cmdr-setting-content { - height: auto; -} - -.vertical-tab-content .setting-item { - padding: 8px 0; -} - -.is-phone .setting-item-heading { - margin-top: 0px; - margin-bottom: 0px; -} - -.modal button:not(.mod-cta):not(.mod-warning):hover { - background-color: var(--interactive-accent-hover); - color: #fdfdfd; -} -.modal .community-modal-details { - background-color: var(--background-primary); -} -.community-theme-container .clickable-icon { - color: var(--accent-strong) -} - -.dropdown { - background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDIwMDEwOTA0Ly9FTiIKICJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy1TVkctMjAwMTA5MDQvRFREL3N2ZzEwLmR0ZCI+CjxzdmcgdmVyc2lvbj0iMS4wIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiB3aWR0aD0iMTI4MC4wMDAwMDBwdCIgaGVpZ2h0PSI2NDAuMDAwMDAwcHQiIHZpZXdCb3g9IjAgMCAxMjgwLjAwMDAwMCA2NDAuMDAwMDAwIgogcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQgbWVldCI+CjxtZXRhZGF0YT4KQ3JlYXRlZCBieSBwb3RyYWNlIDEuMTUsIHdyaXR0ZW4gYnkgUGV0ZXIgU2VsaW5nZXIgMjAwMS0yMDE3CjwvbWV0YWRhdGE+CjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAuMDAwMDAwLDY0MC4wMDAwMDApIHNjYWxlKDAuMTAwMDAwLC0wLjEwMDAwMCkiCmZpbGw9IiMyMTk2ZjMiIHN0cm9rZT0ibm9uZSI+CjxwYXRoIGQ9Ik0xMCA2MzkyIGMwIC00IDE0MzggLTE0NDUgMzE5NSAtMzIwMiBsMzE5NSAtMzE5NCAzMTk1IDMxOTQgYzE3NTcKMTc1NyAzMTk1IDMxOTggMzE5NSAzMjAyIDAgNSAtMjg3NSA4IC02MzkwIDggLTM1MTUgMCAtNjM5MCAtMyAtNjM5MCAtOHoiLz4KPC9nPgo8L3N2Zz4K); -} - -/*translucent setting panel*/ -body.translucent-setting-panel .modal-bg { - background-color: var(--background-secondary-translucent-1); -} - - - -body.setting-default-frosted-glass .prompt { - background-color: var(--bg-color-settings-4); - backdrop-filter: blur(3px); -} - -body.setting-default-frosted-glass.theme-dark .prompt { - backdrop-filter: blur(8px); -} - -body.setting-default-frosted-glass .vertical-tab-header-group-title { - color: var(--text-normal); - border-top: 1px dashed var(--text-muted); -} - -body.translucent-setting-panel .modal-bg, -body.setting-default-frosted-glass .modal-bg { - background-color: var(--bg-color-settings-0); - backdrop-filter: blur(5px); -} - -body.translucent-setting-panel .modal.mod-settings, -body.setting-default-frosted-glass .modal.mod-settings { - background-color: var(--bg-color-settings-0-1); - box-shadow: 0 0 20px var(--bg-color-settings-1); -} - -body.translucent-setting-panel .modal.mod-settings, -body.setting-default-frosted-glass .modal.mod-settings { - border: none; -} -body.setting-default-frosted-glass .vertical-tab-header, -body.translucent-setting-panel .vertical-tab-header { - background-color: var(--bg-color-settings-1); -} -body.translucent-setting-panel .horizontal-tab-nav-item, -body.translucent-setting-panel .vertical-tab-nav-item, -body.setting-default-frosted-glass .horizontal-tab-nav-item, -body.setting-default-frosted-glass .vertical-tab-nav-item { - background-color: transparent; -} - -body.translucent-setting-panel .horizontal-tab-nav-item:hover, -body.translucent-setting-panel .vertical-tab-nav-item:hover, -body.translucent-setting-panel .horizontal-tab-nav-item.is-active, -body.translucent-setting-panel .vertical-tab-nav-item.is-active, -body.setting-default-frosted-glass .horizontal-tab-nav-item:hover, -body.setting-default-frosted-glass .vertical-tab-nav-item:hover, -body.setting-default-frosted-glass .horizontal-tab-nav-item.is-active, -body.setting-default-frosted-glass .vertical-tab-nav-item.is-active { - background-color: var(--bg-color-settings-2); - color: var(--text-normal); - font-weight: bold; -} - -body.translucent-setting-panel .horizontal-tab-content, -body.translucent-setting-panel .vertical-tab-content, -body.setting-default-frosted-glass .horizontal-tab-content, -body.setting-default-frosted-glass .vertical-tab-content { - background-color: var(--bg-color-settings-3); -} - -body.translucent-setting-panel .vertical-tab-content { - background-color: var(--bg-color-settings-1); -} - -body.setting-default-frosted-glass .vertical-tab-header-group-title { - border: none; -} - -/* ======= graph view ==============*/ -.workspace-leaf-content[data-type="graph"] .graph-controls { - background-color: var(--graph-control-bg); - border: none; -} -.workspace-split.mod-root .workspace-leaf-content[data-type="graph"] .view-content { - background-color: var(--graph-canvas-bg); -} - -.graph-view.color-fill { - color: var(--graph-circle); -} -.graph-view.color-circle { - color: var(--graph-circle-outline); -} -.graph-view.color-line { - color: var(--graph-line); -} -.graph-view.color-text { - color: var(--graph-text-color); -} -.graph-view.color-fill-highlight { - color: var(--graph-circle-fill-highlight); -} -.graph-view.color-line-highlight { - color: var(--graph-line-fill-highlight); -} -.graph-view.color-fill-tag { - color: var(--graph-tag) !important; -} -.graph-view.color-fill-attachment { - color: var(--graph-attach) !important; -} -.graph-view.color-fill-unresolved { - color: var(--graph-unresolved); - opacity: 1; -} -.graph-view.color-arrow { - color: var(--graph-arrow); - opacity: 1; -} - -/*Horizontal line in edit mode. Changes --- to full-width line*/ -/*thanks to Piotr from obsidian forum*/ -div:not(.CodeMirror-activeline)>.CodeMirror-line span.cm-hr { - color: transparent; -} - -div:not(.CodeMirror-activeline)>.CodeMirror-line span.cm-hr:after { - content: ""; - position: absolute; - height: 1px; - width: 100%; - background: var(--text-muted); - left: 0; - top: 50%; -} - -/*change collapse icon position in left side*/ -.workspace-ribbon.mod-left .workspace-ribbon-collapse-btn { - margin-top: 0; - padding: 7px 6px 2px 6px; -} - -/* colourful notes */ -/* from Notation by death_au https://github.com/deathau/Notation-for-Obsidian */ -/* Original idea from: https://gist.github.com/mklepaczewski/54e451f09994b9d450de81c8baaf8aa4 */ -/* but also with simpler classes so you can use `` as well */ - :is(.markdown-preview-view,.markdown-rendered) pre.language-note-gray-bg code, - :is(.markdown-preview-view,.markdown-rendered) pre.language-note-brown-bg code, - :is(.markdown-preview-view,.markdown-rendered) pre.language-note-orange-bg code, - :is(.markdown-preview-view,.markdown-rendered) pre.language-note-yellow-bg code, - :is(.markdown-preview-view,.markdown-rendered) pre.language-note-green-bg code, - :is(.markdown-preview-view,.markdown-rendered) pre.language-note-blue-bg code, - :is(.markdown-preview-view,.markdown-rendered) pre.language-note-purple-bg code, - :is(.markdown-preview-view,.markdown-rendered) pre.language-note-pink-bg code, - :is(.markdown-preview-view,.markdown-rendered) pre.language-note-red-bg code, -.print pre.language-note-gray-bg code, -.print pre.language-note-brown-bg code, -.print pre.language-note-orange-bg code, -.print pre.language-note-yellow-bg code, -.print pre.language-note-green-bg code, -.print pre.language-note-blue-bg code, -.print pre.language-note-purple-bg code, -.print pre.language-note-pink-bg code, -.print pre.language-note-red-bg code, -.popover :is(.markdown-preview-view,.markdown-rendered) pre.language-note-gray-bg code, -.popover :is(.markdown-preview-view,.markdown-rendered) pre.language-note-brown-bg code, -.popover :is(.markdown-preview-view,.markdown-rendered) pre.language-note-orange-bg code, -.popover :is(.markdown-preview-view,.markdown-rendered) pre.language-note-yellow-bg code, -.popover :is(.markdown-preview-view,.markdown-rendered) pre.language-note-green-bg code, -.popover :is(.markdown-preview-view,.markdown-rendered) pre.language-note-blue-bg code, -.popover :is(.markdown-preview-view,.markdown-rendered) pre.language-note-purple-bg code, -.popover :is(.markdown-preview-view,.markdown-rendered) pre.language-note-pink-bg code, -.popover :is(.markdown-preview-view,.markdown-rendered) pre.language-note-red-bg code{ - background: unset !important; - background-color:unset !important; - white-space: pre-wrap !important; -} - -:is(.markdown-preview-view,.markdown-rendered) pre.language-note-notice, -:is(.markdown-preview-view,.markdown-rendered) pre.language-note-gray-background, -:is(.markdown-preview-view,.markdown-rendered) pre.language-note-gray-bg, -.gray-background, -.gray-bg, -.print pre.language-note-gray-bg .popover :is(.markdown-preview-view,.markdown-rendered) pre.language-note-notice, -.popover :is(.markdown-preview-view,.markdown-rendered) pre.language-note-gray-background, -.popover :is(.markdown-preview-view,.markdown-rendered) pre.language-note-gray-bg { - background-color: var(--background-gray) !important; -} -:is(.markdown-preview-view,.markdown-rendered) pre.language-note-brown-background, -:is(.markdown-preview-view,.markdown-rendered) pre.language-note-brown-bg, -.brown-background, -.brown-bg, -.print pre.language-note-brown-bg, -.popover :is(.markdown-preview-view,.markdown-rendered) pre.language-note-brown-background, -.popover :is(.markdown-preview-view,.markdown-rendered) pre.language-note-brown-bg { - background-color: var(--background-brown) !important; -} -:is(.markdown-preview-view,.markdown-rendered) pre.language-note-orange-background, -:is(.markdown-preview-view,.markdown-rendered) pre.language-note-orange-bg, -.orange-background, -.orange-bg, -.print pre.language-note-orange-bg, -.popover :is(.markdown-preview-view,.markdown-rendered) pre.language-note-orange-background, -.popover :is(.markdown-preview-view,.markdown-rendered) pre.language-note-orange-bg { - background-color: var(--background-orange) !important; -} -:is(.markdown-preview-view,.markdown-rendered) pre.language-note-yellow-background, -:is(.markdown-preview-view,.markdown-rendered) pre.language-note-yellow-bg, -.yellow-background, -.yellow-bg, -.print pre.language-note-yellow-bg, -.popover :is(.markdown-preview-view,.markdown-rendered) pre.language-note-yellow-background, -.popover :is(.markdown-preview-view,.markdown-rendered) pre.language-note-yellow-bg { - background-color: var(--background-yellow) !important; -} -:is(.markdown-preview-view,.markdown-rendered) pre.language-note-green-background, -:is(.markdown-preview-view,.markdown-rendered) pre.language-note-green-bg, -.green-background, -.green-bg, -.print pre.language-note-green-bg, -.popover :is(.markdown-preview-view,.markdown-rendered) pre.language-note-green-background, -.popover :is(.markdown-preview-view,.markdown-rendered) pre.language-note-green-bg { - background-color: var(--background-green) !important; -} - :is(.markdown-preview-view,.markdown-rendered) pre.language-note-blue-background, - :is(.markdown-preview-view,.markdown-rendered) pre.language-note-blue-bg, -.blue-background, -.blue-bg, -.print pre.language-note-blue-bg, -.popover :is(.markdown-preview-view,.markdown-rendered) pre.language-note-blue-background, -.popover :is(.markdown-preview-view,.markdown-rendered) pre.language-note-blue-bg { - background-color: var(--background-blue) !important; -} -:is(.markdown-preview-view,.markdown-rendered) pre.language-note-purple-background, -:is(.markdown-preview-view,.markdown-rendered) pre.language-note-purple-bg, -.purple-background, -.purple-bg, -.print pre.language-note-purple-bg, -.popover :is(.markdown-preview-view,.markdown-rendered) pre.language-note-purple-background, -.popover :is(.markdown-preview-view,.markdown-rendered) pre.language-note-purple-bg { - background-color: var(--background-purple) !important; -} -:is(.markdown-preview-view,.markdown-rendered) pre.language-note-pink-background, -:is(.markdown-preview-view,.markdown-rendered) pre.language-note-pink-bg, -.pink-background, -.pink-bg, -.print pre.language-note-pink-bg, -.popover :is(.markdown-preview-view,.markdown-rendered) pre.language-note-pink-background, -.popover :is(.markdown-preview-view,.markdown-rendered) pre.language-note-pink-bg { - background-color: var(--background-pink) !important; -} -:is(.markdown-preview-view,.markdown-rendered) pre.language-note-red-background, -:is(.markdown-preview-view,.markdown-rendered) pre.language-note-red-bg, -.red-background, -.red-bg, -.print pre.language-note-red-bg, -.popover :is(.markdown-preview-view,.markdown-rendered) pre.language-note-red-background, -.popover :is(.markdown-preview-view,.markdown-rendered) pre.language-note-red-bg { - background-color: var(--background-red) !important; -} -:is(.markdown-preview-view,.markdown-rendered) pre.language-note-important, -:is(.markdown-preview-view,.markdown-rendered) pre.language-note-imp, -.print pre.language-note-important, -.print pre.language-note-imp, -.popover :is(.markdown-preview-view,.markdown-rendered) pre.language-note-important, -.popover :is(.markdown-preview-view,.markdown-rendered) pre.language-note-imp { - border: 4px dashed var(--note-important) !important; -} -pre.language-note-important:before, -pre.language-note-imp::before { - content: "Important"; - color: var(--note-important) !important; - font-weight: 800; - top: -1px; -} - -/*colourful text*/ -:is(.markdown-preview-view,.markdown-rendered) pre.language-note-gray, -:is(.markdown-preview-view,.markdown-rendered) pre.language-note-brown, -:is(.markdown-preview-view,.markdown-rendered) pre.language-note-orange, -:is(.markdown-preview-view,.markdown-rendered) pre.language-note-yellow, -:is(.markdown-preview-view,.markdown-rendered) pre.language-note-green, -:is(.markdown-preview-view,.markdown-rendered) pre.language-note-blue, -:is(.markdown-preview-view,.markdown-rendered) pre.language-note-purple, -:is(.markdown-preview-view,.markdown-rendered) pre.language-note-pink, -:is(.markdown-preview-view,.markdown-rendered) pre.language-note-red, -.print pre.language-note-gray, -.print pre.language-note-brown, -.print pre.language-note-orange, -.print pre.language-note-yellow, -.print pre.language-note-green, -.print pre.language-note-blue, -.print pre.language-note-purple, -.print pre.language-note-pink, -.print pre.language-note-red, -.popover :is(.markdown-preview-view,.markdown-rendered) pre.language-note-gray, -.popover :is(.markdown-preview-view,.markdown-rendered) pre.language-note-brown, -.popover :is(.markdown-preview-view,.markdown-rendered) pre.language-note-orange, -.popover :is(.markdown-preview-view,.markdown-rendered) pre.language-note-yellow, -.popover :is(.markdown-preview-view,.markdown-rendered) pre.language-note-green, -.popover :is(.markdown-preview-view,.markdown-rendered) pre.language-note-blue, -.popover :is(.markdown-preview-view,.markdown-rendered) pre.language-note-purple, -.popover :is(.markdown-preview-view,.markdown-rendered) pre.language-note-pink, -.popover :is(.markdown-preview-view,.markdown-rendered) pre.language-note-red { - background-color: transparent !important; - margin: 3px 0; - padding: 5px 10px; -} - -:is(.markdown-preview-view,.markdown-rendered) pre.language-note-gray code.language-note-gray, -.print code.language-note-gray, -.popover :is(.markdown-preview-view,.markdown-rendered) pre.language-note-gray code.language-note-gray { - color: var(--text-gray) !important; - background: unset !important; -} -:is(.markdown-preview-view,.markdown-rendered) pre.language-note-brown code.language-note-brown, -.print code.language-note-brown, -.popover :is(.markdown-preview-view,.markdown-rendered) pre.language-note-brown code.language-note-brown { - color: var(--text-brown) !important; - background: unset !important; -} -:is(.markdown-preview-view,.markdown-rendered) pre.language-note-orange code.language-note-orange, -.print code.language-note-orange, -.popover :is(.markdown-preview-view,.markdown-rendered) pre.language-note-orange code.language-note-orange { - color: var(--text-orange) !important; - background: unset !important; -} -:is(.markdown-preview-view,.markdown-rendered) pre.language-note-yellow code.language-note-yellow, -.print code.language-note-yellow, -.popover :is(.markdown-preview-view,.markdown-rendered) pre.language-note-yellow code.language-note-yellow { - color: var(--text-yellow) !important; - background: unset !important; -} -:is(.markdown-preview-view,.markdown-rendered) pre.language-note-green code.language-note-green, -.print code.language-note-green, -.popover :is(.markdown-preview-view,.markdown-rendered) pre.language-note-green code.language-note-green { - color: var(--text-green) !important; - background: unset !important; -} -:is(.markdown-preview-view,.markdown-rendered) pre.language-note-blue code.language-note-blue, -.print code.language-note-blue, -.popover :is(.markdown-preview-view,.markdown-rendered) pre.language-note-blue code.language-note-blue { - color: var(--text-blue) !important; - background: unset !important; -} -:is(.markdown-preview-view,.markdown-rendered) pre.language-note-purple code.language-note-purple, -.print code.language-note-purple, -.popover :is(.markdown-preview-view,.markdown-rendered) pre.language-note-purple code.language-note-purple { - color: var(--text-purple) !important; - background: unset !important; -} -:is(.markdown-preview-view,.markdown-rendered) pre.language-note-pink code.language-note-pink, -.print code.language-note-pink, -.popover :is(.markdown-preview-view,.markdown-rendered) pre.language-note-pink code.language-note-pink { - color: var(--text-pink) !important; - background: unset !important; -} -:is(.markdown-preview-view,.markdown-rendered) pre.language-note-red code.language-note-red, -.print code.language-note-red, -.popover :is(.markdown-preview-view,.markdown-rendered) pre.language-note-red code.language-note-red { - color: var(--text-red) !important; - background: unset !important; -} - -/* cloze */ -:is(.markdown-preview-view,.markdown-rendered) pre.language-note-cloze code.language-note-cloze, -.popover :is(.markdown-preview-view,.markdown-rendered) pre.language-note-cloze code.language-note-cloze { - color: var(--text-normal) !important; - background-color: var(--text-normal)!important; - display: block; - padding: 0px !important; - text-shadow: none; - margin: 1em 0.7em 0; - font-size: var(--font-size-cloze) !important; -} - -:is(.markdown-preview-view,.markdown-rendered) pre.language-note-cloze, -.popover :is(.markdown-preview-view,.markdown-rendered) pre.language-note-cloze { - background-color: transparent; -} - -code.language-note-cloze.is-loaded:hover { - cursor: pointer; -} -:is(.markdown-preview-view,.markdown-rendered) pre.language-note-cloze code.language-note-cloze.is-loaded:active, -.popover :is(.markdown-preview-view,.markdown-rendered) pre.language-note-cloze code.language-note-cloze.is-loaded:active { - background-color: transparent !important; -} - -pre.language-note-cloze::before { - content: "TO RECALL"; - color: var(--note-cloze); - font-weight: 800; - left: 22px; -} - -/*hidden box*/ -/*改自 https://github.com/chokcoco/iCSS/issues/153 */ -@property --hibox { - syntax: ''; - inherits: false; - initial-value: 24px; -} - -:is(.markdown-preview-view,.markdown-rendered) pre.language-hibox { - background-color: transparent; -} - -:is(.markdown-preview-view,.markdown-rendered) pre.language-hibox code.language-hibox:hover { - color: var(--text-normal); - --hibox: 900px; - overflow: auto; -} - -:is(.markdown-preview-view,.markdown-rendered) pre.language-hibox code.language-hibox { - position: relative; - height: auto; - overflow: hidden; - background: radial-gradient(circle at 0px 0px, var(--theme-color-translucent-015) 0, var(--theme-color-translucent-015) var(--hibox), transparent var(--hibox), transparent 0); - transition: --hibox 0.4s linear; - color: var(--background-code); - color: transparent; -} - - -/*======== optionnal mermaid style below ========*/ -.markdown-source-view.mod-cm6 .cm-content > [contenteditable=false] { - overflow: auto; -} - -body.resizable-mermaid .mermaid { - resize: both; - overflow: auto; - position: relative; -} - -:is(.markdown-preview-section,.markdown-rendered) .mermaid, -.markdown-source-view.mod-cm6 .cm-scroller .mermaid { - letter-spacing: 0; -} - -.markdown-source-view.mod-cm6 .mermaid svg { - margin: 0 auto; - display: block; -} - -.mermaid .label { - font-family: var(--mermaid-font-family) !important; - color: var(--text-normal) !important; -} - -.mermaid .label text { - fill: var(--background-primary-alt) !important; -} - -.mermaid .node:not([class*="id"]) rect:not([style*="fill"]):not([style*="stroke"]), -.mermaid .node:not([class$="id"]) circle:not([style*="fill"]):not([style*="stroke"]), -.mermaid .node:not([class$="id"]) ellipse:not([style*="fill"]):not([style*="stroke"]), -.mermaid .node:not([class$="id"]) polygon:not([style*="fill"]):not([style*="stroke"]), -.mermaid .node:not([class$="id"]) path:not([style*="fill"]):not([style*="stroke"]) { - fill: var(--background-primary) !important; -} - -.mermaid .node .label { - text-align: center !important; -} - -.mermaid .node.clickable { - cursor: pointer !important; -} - -.mermaid .arrowheadPath { - fill: var(--text-faint) !important; -} - -.mermaid .edgePath .path, -.mermaid .flowchart-link { - stroke: var(--text-faint) !important; -} - -.mermaid .edgeLabel { - background-color: var(--background-primary) !important; - text-align: center !important; -} - -.mermaid .edgeLabel rect { - opacity: 0 !important; -} - -.mermaid .cluster rect { - fill: var(--background-primary-alt) !important; - stroke: var(--text-faint) !important; -} - -.mermaid .cluster text { - fill: var(--background-primary) !important; -} - -/* Sequence Diagram variables */ -.mermaid .actor { - stroke: var(--text-accent) !important; -} - -.mermaid .actor-line { - stroke: var(--text-muted) !important; -} - -.mermaid .messageLine0 { - stroke-dasharray: none !important; - stroke: var(--text-muted) !important; -} - -.mermaid .messageLine1 { - stroke-dasharray: 2, 2 !important; - stroke: var(--text-muted) !important; -} - -.mermaid #arrowhead path, -.mermaid #crosshead path { - fill: var(--text-muted) !important; - stroke: var(--text-muted) !important; -} - -.mermaid .sequenceNumber { - fill: var(--background-primary) !important; -} - -.mermaid #sequencenumber, -.mermaid .messageText { - fill: var(--text-muted) !important; -} - -.mermaid .labelBox { - stroke: var(--text-accent) !important; - fill: var(--background-secondary-alt) !important; -} - -.mermaid .labelText, -.mermaid .labelText>tspan, -.mermaid .loopText, -.mermaid .loopText>tspan { - fill: var(--text-muted) !important; - stroke: none !important; -} - -.mermaid .loopLine { - stroke-dasharray: 2, 2 !important; - stroke: var(--text-accent) !important; - fill: var(--text-accent) !important; -} - -.mermaid .note { - stroke: var(--text-normal) !important; - fill: var(--mermaid-seq-dia-color) !important; -} - -.mermaid .noteText, -.mermaid .noteText>tspan { - fill: var(--text-normal) !important; - stroke: none !important; -} - -/* Gantt chart variables */ -.mermaid .activation0, -.mermaid .activation1, -.mermaid .activation2 { - fill: var(--background-secondary) !important; - stroke: var(--text-accent) !important; -} - -/** Section styling */ -.mermaid .mermaid-main-font { - font-family: var(--mermaid-font-family) !important; -} - -.mermaid .section { - stroke: none !important; - opacity: 0.3 !important; -} - -.mermaid .section0 { - fill: var(--text-faint) !important; -} - -.mermaid .section2 { - fill: var(--text-accent) !important; -} - -.mermaid .section1, -.mermaid .section3 { - fill: var(--text-muted) !important; - opacity: 0.15 !important; -} - -.mermaid .sectionTitle0, -.mermaid .sectionTitle1, -.mermaid .sectionTitle2, -.mermaid .sectionTitle3 { - fill: var(--text-normal) !important; -} - -.mermaid .sectionTitle { - text-anchor: start !important; - font-size: 15px !important; - font-weight: bold; - line-height: 14px !important; - font-family: var(--mermaid-font-family) !important; -} - -/* Grid and axis */ -.mermaid .grid .tick { - stroke: var(--text-muted) !important; - opacity: 1 !important; - shape-rendering: crispEdges !important; -} - -.mermaid .grid .tick text { - font-family: var(--mermaid-font-family) !important; - font-size: 13px; -} - -.mermaid .grid path { - stroke-width: 0 !important; -} - -/* Today line */ -.today { - fill: none !important; - stroke: var(--background-modifier-error) !important; - stroke-width: 2px !important; -} - -/* Task styling */ - -/* Default task */ -.task { - stroke-width: 0.5px !important; -} - -.taskText:not([font-size]) { - font-size: 9px !important; -} - -.taskTextOutsideRight { - fill: var(--text-normal) !important; - text-anchor: start !important; - font-size: 12px !important; - font-family: var(--mermaid-font-family) !important; -} - -.taskTextOutsideLeft { - fill: var(--text-normal) !important; - text-anchor: end !important; - font-size: 9px !important; -} - -/* Special case clickable */ -.task.clickable { - cursor: pointer !important; -} - -.taskText.clickable { - cursor: pointer !important; - fill: var(--interactive-accent_hover) !important; - font-weight: bold !important; -} - -.taskTextOutsideLeft.clickable { - cursor: pointer !important; - fill: var(--interactive-accent_hover) !important; - font-weight: bold !important; -} - -.taskTextOutsideRight.clickable { - cursor: pointer !important; - fill: var(--interactive-accent_hover) !important; - font-weight: bold !important; -} - -/* Specific task settings for the sections*/ -.taskText0, -.taskText1, -.taskText2, -.taskText3 { - fill: var(--text-normal) !important; - font-size: 13px; -} - -.task0, -.task1, -.task2, -.task3 { - fill: var(--theme-color-translucent-04) !important; - stroke: var(--text-muted) !important; -} - -.taskTextOutside0, -.taskTextOutside2, -.taskTextOutside1, -.taskTextOutside3 { - fill: var(--text-muted) !important; -} - -/* Active task */ -.active0, -.active1, -.active2, -.active3 { - fill: var(--mermaid-active-task-color) !important; - stroke: var(--text-muted) !important; -} - -.activeText0, -.activeText1, -.activeText2, -.activeText3 { - fill: var(--text-normal) !important; -} - -/* Completed task */ -.done0, -.done1, -.done2, -.done3 { - stroke: var(--text-muted) !important; - fill: var(--background-secondary) !important; -} - -.doneText0, -.doneText1, -.doneText2, -.doneText3 { - fill: var(--text-normal) !important; -} - -/* Tasks on the critical line */ -.crit0, -.crit1, -.crit2, -.crit3 { - stroke: var(--red-1) !important; - fill: var(--red-1) !important; -} - -.activeCrit0, -.activeCrit1, -.activeCrit2, -.activeCrit3 { - stroke: var(--accent-strong) !important; - fill: var(--text-accent) !important; -} - -.doneCrit0, -.doneCrit1, -.doneCrit2, -.doneCrit3 { - stroke: var(--accent-strong) !important; - fill: var(--text-muted) !important; - cursor: pointer !important; - shape-rendering: crispEdges !important; -} - -.milestone { - transform: rotate(45deg) scale(0.8, 0.8) !important; -} - -.milestoneText { - font-style: italic !important; -} - -.doneCritText0, -.doneCritText1, -.doneCritText2, -.doneCritText3, -.activeCritText0, -.activeCritText1, -.activeCritText2, -.activeCritText3 { - fill: var(--text-normal) !important; -} - -.titleText { - text-anchor: middle !important; - font-size: 20px !important; - fill: var(--text-normal) !important; - font-family: var(--mermaid-font-family) !important; -} - -g.classGroup text { - fill: var(--text-normal) !important; - stroke: none !important; - font-size: 8px !important; -} - -g.classGroup text .title { - font-weight: bolder !important; -} - -g.clickable { - cursor: pointer !important; -} - -g.classGroup rect { - fill: var(--background-secondary-alt) !important; - stroke: var(--theme-color) !important; -} - -g.classGroup line { - stroke: var(--theme-color) !important; - stroke-width: 1 !important; -} - -.classLabel .box { - stroke: none !important; - stroke-width: 0 !important; - fill: var(--background-secondary-alt) !important; - opacity: 0.2 !important; -} - -.classLabel .label { - fill: var(--text-accent) !important; - font-size: 10px !important; -} - -.relation { - stroke: var(--text-accent) !important; - fill: none !important; -} - -.dashed-line { - stroke-dasharray: 3 !important; -} - -#compositionStart, -#compositionEnd, -#dependencyStart, -#dependencyEnd, -#extensionStart, -#extensionEnd { - fill: var(--text-accent) !important; - stroke: var(--text-accent) !important; -} - -#aggregationStart, -#aggregationEnd { - fill: var(--background-secondary-alt) !important; - stroke: var(--text-accent) !important; -} - -.commit-id, -.commit-msg, -.branch-label { - fill: var(--text-muted) !important; - color: var(--text-muted) !important; - font-family: var(--mermaid-font-family) !important; -} - -.pieTitleText { - text-anchor: middle !important; - font-size: 18px !important; - fill: var(--text-normal) !important; - font-family: var(--mermaid-font-family) !important; -} - -.slice { - font-family: var(--mermaid-font-family) !important; -} - -g.stateGroup text { - fill: var(--text-accent) !important; - stroke: none !important; - font-size: 10px !important; - font-family: var(--mermaid-font-family) !important; -} - -g.stateGroup text { - fill: var(--text-accent) !important; - stroke: none !important; - font-size: 10px !important; -} - -g.stateGroup .state-title { - font-weight: bolder !important; - fill: var(--text-normal) !important; -} - -g.stateGroup rect { - fill: var(--background-secondary-alt) !important; - stroke: var(--background-secondary-alt) !important; -} - -g.stateGroup line, -.transition { - stroke: var(--text-accent) !important; -} - -.stateGroup .composit { - fill: var(--background-secondary) !important; - border-bottom: 1px !important; -} - -.stateGroup .alt-composit { - fill: var(--background-primary) !important; - border-bottom: 1px !important; -} - -.state-note { - stroke: var(--text-faint) !important; - fill: var(--text-accent) !important; -} - -.state-note text { - fill: black !important; - stroke: none !important; - font-size: 10px !important; -} - -.stateLabel .box { - stroke: none !important; - stroke-width: 0 !important; - fill: var(--background-secondary-alt) !important; - opacity: 0.5 !important; -} - -.stateLabel text { - fill: black !important; - font-size: 10px !important; - font-weight: bold !important; - font-family: var(--mermaid-font-family) !important; -} - -.node circle.state-start { - fill: var(--text-normal) !important; - stroke: var(--text-normal) !important; -} - -.node circle.state-end { - fill: var(--text-normal) !important; - stroke: var(--text-normal) !important; - stroke-width: 1.5 !important; -} - -#statediagram-barbEnd { - fill: var(--text-accent) !important; -} - -.statediagram-cluster rect { - fill: var(--background-secondary-alt) !important; -} - -.statediagram-cluster rect.outer, -.statediagram-state .title-state, -.statediagram-state rect.basic { - rx: 5px !important; - ry: 5px !important; -} - -.statediagram-state .divider { - stroke: var(--text-accent) !important; -} - -.statediagram-cluster.statediagram-cluster .inner { - fill: var(--background-secondary) !important; -} - -.statediagram-cluster.statediagram-cluster-alt .inner { - fill: var(--background-secondary-alt) !important; -} - -.statediagram-cluster .inner { - rx: 0 !important; - ry: 0 !important; -} - -.statediagram-state rect.divider { - stroke-dasharray: 10, 10 !important; - fill: var(--background-secondary) !important; -} - -.note-edge { - stroke-dasharray: 5 !important; -} - -.statediagram-note rect { - fill: var(--text-accent) !important; - stroke: var(--text-muted) !important; - stroke-width: 1px !important; - rx: 0 !important; - ry: 0 !important; -} - -/* Classes common for multiple diagrams */ -.error-icon { - fill: var(--text-error) !important; -} - -.error-text { - fill: var(--text-muted) !important; - stroke: var(--text-muted) !important; -} - -.edge-pattern-solid { - stroke-dasharray: 0 !important; -} - -.edge-pattern-dashed { - stroke-dasharray: 3 !important; -} - -.edge-pattern-dotted { - stroke-dasharray: 2 !important; -} - -.marker { - fill: var(--text-muted) !important; -} - -.marker.cross { - stroke: var(--text-muted) !important; -} - -.mermaid div:not(text.tracker-month-label) #arrowhead, -.mermaid div:not(text.tracker-month-label) #sequencenumber, -.mermaid div:not(text.tracker-month-label) .cluster text, -.mermaid div:not(text.tracker-month-label) .label text, -.mermaid div:not(text.tracker-month-label) text, -.mermaid div:not(text.tracker-month-label) text.actor { - fill: var(--text-muted) !important; -} - -/*emoji🙂*/ -.mermaid g>g>circle, -.mermaid g>circle { - stroke: #000000 !important; -} - -.mermaid line.task-line { - stroke: #6e6e6e !important; -} - -/* scrollbar*/ -body:not(.native-scrollbars) ::-webkit-scrollbar-thumb { - background-clip: padding-box; - border: 3px solid transparent; - border-width: 3px 2px 3px 3px; - min-height: 65px; - background-color: var(--scrollbar-thumb-bg); - border: 3.5px solid transparent !important; -} - -body:not(.native-scrollbars) ::-webkit-scrollbar { - background: transparent; -} - -body:not(.native-scrollbars) textarea:hover::-webkit-scrollbar-thumb:active, -body:not(.native-scrollbars) ::-webkit-scrollbar-thumb:hover { - background: var(--scrollbar-active-thumb-bg); -} - -body.remove-scrollbars ::-webkit-scrollbar-thumb { - display: none; -} - -/*adapted from the CSS snippet created by @subframe7536 https://forum-zh.obsidian.md/t/topic/11164*/ -body.body:not(.is-mobile).hover-scrollbars :is(.vertical-tab-header, .vertical-tab-content, .nav-files-container,.workspace-leaf-content .view-content, .search-result-container, .git-view-body, .workspace-leaf-content[data-type=markdown] .cm-scroller, .markdown-preview-view, .suggestion-container .suggestion, -.prompt-results, .markdown-embed-content, .community-modal-search-results-wrapper,.community-modal-info,.tag-container)::-webkit-scrollbar-thumb { - box-shadow: inset 0 0 0 10px !important; - background-color: transparent !important; -} - -body.body:not(.is-mobile).hover-scrollbars .community-modal-info div[class^='community-modal-info-'] { - color:var(--text-normal); -} -body.body:not(.is-mobile).hover-scrollbars .canvas-node-content .markdown-preview-view { - overflow-y: auto!important; -} -body.body:not(.is-mobile).hover-scrollbars :is(.vertical-tab-header, .vertical-tab-content, .nav-files-container, .view-content, .search-result-container, .git-view-body, .workspace-leaf-content[data-type=markdown] .cm-scroller, .markdown-preview-view, .suggestion-container .suggestion, .prompt-results, .markdown-embed-content, .community-modal-search-results-wrapper,.community-modal-info,.tag-container) { - color: transparent; - transition: color var(--anim-duration-fast) var(--anim-motion-smooth); - overflow-y: overlay; -} -body.body:not(.is-mobile).hover-scrollbars :is(.vertical-tab-header, .vertical-tab-content, .nav-files-container, .view-content, .search-result-container, .git-view-body, .workspace-leaf-content[data-type=markdown] .cm-scroller, .markdown-preview-view, .suggestion-container .suggestion, .prompt-results, .markdown-embed-content, .community-modal-search-results-wrapper,.community-modal-info,.tag-container):hover { - color: var(--scrollbar-thumb-bg); -} -body.body:not(.is-mobile).hover-scrollbars :is(.vertical-tab-header, .vertical-tab-content, .nav-files-container, .view-content, .search-result-container, .git-view-body, .workspace-leaf-content[data-type=markdown] .cm-scroller, .markdown-preview-view, .suggestion-container .suggestion, .prompt-results, .community-modal-search-results-wrapper,.tag-container) > :not(h1, h2, h3, h4, h5, h6) { - color: var(--text-normal); -} - -body.body:not(.is-mobile).hover-scrollbars :is(.vertical-tab-header, .vertical-tab-content, .nav-files-container, .view-content, .search-result-container, .git-view-body, .workspace-leaf-content[data-type=markdown] .cm-scroller, .markdown-preview-view, .suggestion-container .suggestion, .prompt-results, .markdown-embed-content, .community-modal-search-results-wrapper,.community-modal-info,.tag-container)::-webkit-scrollbar-thumb:active { - background-color: var(--scrollbar-active-thumb-bg) !important; -} - -body.body:not(.is-mobile).hover-scrollbars .popover.hover-popover > .markdown-embed > .markdown-embed-content > .markdown-preview-view { - color: transparent !important; -} -body.body:not(.is-mobile).hover-scrollbars .popover.hover-popover > .markdown-embed > .markdown-embed-content > .markdown-preview-view:hover { - color: var(--scrollbar-thumb-bg) !important; -} - - -.workspace-split::-webkit-scrollbar:vertical { - display: none; -} - -body.plugin-sliding-panes.transparent-panes .workspace-leaf.mod-am-left-of-active .workspace-leaf-content .view-content, -body.plugin-sliding-panes.transparent-panes .workspace-leaf.mod-am-left-of-active .workspace-leaf-content .view-content *, -body.plugin-sliding-panes.transparent-panes .workspace-leaf.mod-am-left-of-active .workspace-leaf-content .view-content *::before, -body.plugin-sliding-panes.transparent-panes .workspace-leaf.mod-am-left-of-active .workspace-leaf-content .view-content *::-webkit-scrollbar-thumb, -body.plugin-sliding-panes.transparent-panes .workspace-leaf.mod-am-left-of-active .workspace-leaf-content .view-content *::-webkit-scrollbar, -body.plugin-sliding-panes.transparent-panes .workspace-leaf.mod-am-left-of-active .workspace-leaf-content .view-content *::marker { - color: transparent !important; - background: none !important; - background-color: transparent !important; - border: none !important; - -webkit-text-fill-color: transparent !important; -} - -body.plugin-sliding-panes.transparent-panes .workspace-split.mod-root .workspace-leaf:not(:first-of-type) .workspace-leaf-content { - background-color: transparent; -} - -body.plugin-sliding-panes.transparent-panes .workspace-split.mod-vertical > * > .workspace-leaf-resize-handle { - width: 0; -} - -body.plugin-sliding-panes.plugin-sliding-panes.transparent-panes.theme-light .workspace-split.mod-vertical>.workspace-leaf { - box-shadow: -5px 0px 6px 0px rgba(0, 0, 0, 0.1) !important; -} - - -/*==========================*/ -/* obsidian-calendar-plugin */ -/*==========================*/ -#calendar-container { - --color-background-heading: transparent; - --color-background-weeknum: transparent; - --color-background-day: transparent; - --color-background-weekend: transparent; - - --color-dot: var(--text-accent); - --color-arrow: currentColor; - --color-button: var(--text-muted); - --color-text-weeknum: var(--calendar-week-color); - - --color-text-title: var(--text-normal); - --color-text-heading: var(--text-normal); - --color-text-day: var(--text-normal); - --color-text-today: var(--text-accent); - - padding: 0 8px 0 8px; - margin: -21px -8px 0px -8px; - line-height: 0.6; -} - -.theme-dark #calendar-container { - --color-tr: #11111166; - --color-tr-odd: #1e1e1e93; - --color-calendar-weekends: #cc8484; - --color-calendar-weekends-2: #ff9f9f21; - --calendar-today-background-color: #00b3005e; - --theme-color-translucent-3: #217cc769; -} - -.theme-light #calendar-container { - --color-tr: #ffffff6a; - --color-tr-odd: #eeeeeea2; - --color-calendar-weekends: #c74a4a; - --color-calendar-weekends-2: #fdadad21; - --theme-color-translucent-3: #91c2eb80; -} - -#calendar-container .calendar { - background-color: transparent; - padding: 0 4px 2px 4px; - margin-top: -8px; - margin-left: 2px; - border-collapse: separate; - border-spacing: 0; -} - -#calendar-container .calendar tr { - background-color: transparent; -} - -/*表格调整*/ -/*星期*/ -#calendar-container th:first-of-type { - border-top-left-radius: 3px !important; -} - -#calendar-container th:last-of-type { - border-top-right-radius: 3px !important; -} - -#calendar-container th { - padding: 8px 0; - border-bottom: 2px solid var(--text-accent); - border-radius: 0 !important; -} - -/*天*/ -#calendar-container td { - width: 12.5%; - border-right: none; - padding: 0 !important; - line-height: 23px; -} - -#calendar-container tr { - background-color: var(--color-tr); -} - -#calendar-container .day { - padding: 2px 0 0 !important; -} - -#calendar-container .day.has-note.active:not(.today) { - background-color: var(--calendar-hover-color) !important; - color: var(--text-normal) !important; - font-weight: 700; -} - -#calendar-container .day:not(:empty):hover { - background-color: var(--calendar-hover-color); -} - -#calendar-container .day:active, -#calendar-container .active, -#calendar-container .active.today { - background-color: var(--calendar-active-color) !important; - font-weight: 700; -} - -#calendar-container .active.today, -#calendar-container .day.has-note.active { - color: var(--text-accent) !important; - font-weight: 700; -} - -body.toggle-calendar-shadow #calendar-container .active.today { - box-shadow: 0 0 1px 2px var(--text-accent); -} - -body.toggle-calendar-shadow #calendar-container .today { - box-shadow: 0 0 5px var(--text-accent); -} - -#calendar-container .today { - font-weight: bolder; -} - -/*“Today”*/ -#calendar-container .reset-button { - font-size: 14px !important; - margin: 0; - padding: 0; - cursor: pointer; - line-height: 1.2; - text-align: center; -} - -/*悬停Today*/ -#calendar-container .reset-button:hover { - color: var(--sliding-panes-header-color); - background-color: var(--table-hover-raw-color); -} - -/*悬停arrow*/ -#calendar-container .arrow:hover { - color: var(--theme-color); -} - -/*dot*/ -#calendar-container .dot { - stroke: transparent; - margin: -3px 0 2px !important; -} - -#calendar-container .hollow { - margin: -3px 0 2px !important; -} - -#calendar-container .dot-container { - margin-top: 0; - margin-bottom: 0; -} - -/*月份调整 month*/ -#calendar-container .month { - font-size: 20px; - line-height: 1; -} - -/*年份调整 year*/ -#calendar-container .year { - font-size: 20px; - line-height: 1; -} - -/*星期数 week*/ -#calendar-container .week-num { - border-right: 2px solid var(--calendar-week-background-color) !important; - background-color: transparent; - font-weight: 600; - border-radius: 0; -} - -#calendar-container .week-num.active { - background-color: var(--calendar-week-background-color) !important; - color: var(--color-text-weeknum) !important; - font-weight: 800; -} - -/*星期数悬停 week hover*/ -#calendar-container .week-num:hover { - background-color: var(--calendar-week-hover) !important; -} - -/* calendar-1 translucent, v0.2, for Blue Topaz*/ -body.style-options-for-calendar-plugin-style-one.theme-dark { - --color-calendar-weekends: #cc8484; - --color-calendar-weekends-2: #ff9f9f21; - --calendar-today-background-color: #00b3005e; - --theme-color-translucent-3: #217cc769; -} - -body.style-options-for-calendar-plugin-style-one.theme-light { - --color-calendar-weekends: #c74a4a; - --color-calendar-weekends-2: #fdadad21; - --theme-color-translucent-3: #91c2eb80; -} - -body.style-options-for-calendar-plugin-style-one.theme-dark #calendar-container { - --color-tr: #11111183; -} - -body.style-options-for-calendar-plugin-style-one.theme-light #calendar-container { - --color-tr: #ffffffa9; -} - -body.style-options-for-calendar-plugin-style-one #calendar-container th { - padding: 10px 0; - border-radius: 0 !important; -} - -body.style-options-for-calendar-plugin-style-one #calendar-container th:nth-last-child(1), -body.style-options-for-calendar-plugin-style-one #calendar-container th:nth-last-child(2) { - color: var(--color-calendar-weekends) !important; -} - -body.style-options-for-calendar-plugin-style-one #calendar-container td:nth-last-child(1), -body.style-options-for-calendar-plugin-style-one #calendar-container td:nth-last-child(2) { - background-color: var(--color-calendar-weekends-2) !important; -} - -body.style-options-for-calendar-plugin-style-one #calendar-container .day { - border-radius: 50% !important; -} - -body.style-options-for-calendar-plugin-style-one #calendar-container .today { - color: var(--text-accent) !important; - font-weight: 700 !important; - background-image: unset; -} - -body.style-options-for-calendar-plugin-style-one #calendar-container .day:active, -body.style-options-for-calendar-plugin-style-one #calendar-container .active, -body.style-options-for-calendar-plugin-style-one #calendar-container .active.today { - background-color: var(--theme-color-translucent-3) !important; -} - -body.style-options-for-calendar-plugin-style-two #calendar-container .day { - border-radius: 0 !important; -} - -body.style-options-for-calendar-plugin-style-two .day.adjacent-month { - background-color: var(--background-transparent-black-or-white-3) !important; -} - -body.style-options-for-calendar-plugin-style-two #calendar-container tbody tr:first-child { - background-color: rgba(var(--table-color-rgb), 0.1) !important; -} - -body.style-options-for-calendar-plugin-style-two #calendar-container tbody tr:nth-child(2) { - background-color: rgba(var(--table-color-rgb), 0.2) !important; -} - -body.style-options-for-calendar-plugin-style-two #calendar-container tbody tr:nth-child(3) { - background-color: rgba(var(--table-color-rgb), 0.3) !important; -} - -body.style-options-for-calendar-plugin-style-two #calendar-container tbody tr:nth-child(4) { - background-color: rgba(var(--table-color-rgb), 0.4) !important; -} - -body.style-options-for-calendar-plugin-style-two #calendar-container tbody tr:nth-child(5) { - background-color: rgba(var(--table-color-rgb), 0.5) !important; -} - -body.style-options-for-calendar-plugin-style-two #calendar-container tbody tr:nth-child(6) { - background-color: rgba(var(--table-color-rgb), 0.6) !important; -} - -/*===========================*/ -/*copy button for code blocks*/ -/*===========================*/ -button.copy-code-button:not([style="right: 32pt"]) { - background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAABU0lEQVRYhe2WMU4CQRSG/2eMjQRptQB7j8AJnIbKEq/A2qg0SjRROgauYGljTMALLN7AA7Ak1oRIY7HPYt0IuzPLMgxggK97u2/e/PPv25kBNh0yGSSavQqYqkHEDx2n0FqaANH0SmC8RIqU2k7+1YqAs9rH3uggcw+iMoBD7UDyi75PRESuLoeBT4CeMoPhzXPt5FuVsxt98JXL3hH4cpryduX4HQCE9LQ5BBwBfDXKZRlANZUAgMtAsMJwkt+JGAA6Tn7CtTBWvT9t9IpE5DL4XCdgR636b4Xz8HZR6I7XVKFwIJlwpbaIObBsUjsQ/fa2WLkDWwEz/wWzMq13Vu6AsQAh+10hPdc0nlsAwEwAm8cahPTY9m6XxPr0gGm+xR6wlL/tgbQsrAeCi2RwnUouaacHYvu0kP1HgK91ZWzfC2IO7A+GtwDVQyf+Let7FmwcPzCZvMtlTU3QAAAAAElFTkSuQmCC); - background-repeat: no-repeat; - background-size: contain; - background-position: center; - background-color: transparent; - color: transparent; - height: 1.6em; -} - -button.copy-code-button:hover { - background-color: var(--theme-color-translucent-015); -} - -.obsidian-banner-wrapper.has-copy-button { - position:unset; -} - -/*====================*/ -/*day planner plugin*/ -/*====================*/ -.day-planner-status-bar-text { - color: var(--text-accent); - font-weight: 600; -} - -.progress-pie.day-planner { - background-color: var(--day-planner-pie); - float: left; - height: 20px; - margin: 0.3px 10px 0.3px 0; - width: 20px; - display: none; -} - -#scroll-controls input#auto-scroll.toggle { - background-image: none; -} - -.aside__line { - background: var(--day-planner-dot) !important; - left: 35px !important; -} - -.ei_Dot { - background-color: var(--day-planner-line) !important; - left: 28px !important; -} - -.ei_Title { - font-size: 15px !important; - margin-left: -10px !important; -} - -.ei_Copy { - font-size: 15px !important; - margin-left: 5px !important; -} - -.event_item { - overflow: hidden !important; -} - -#now-line, .timeline-time { - background-color: var(--day-planner-timeline) !important; -} - -.event_item:hover { - background-color: var(--day-planner-item-hover) !important; - box-shadow: 0px 0px 52px -18px rgba(0, 0, 0, 0.75); -} - -.event_item_color1 { - background-color: var(--event-item-color1) !important; -} -.event_item_color2 { - background-color: var(--event-item-color2) !important; -} -.event_item_color3 { - background-color: var(--event-item-color3) !important; -} -.event_item_color4 { - background-color: var(--event-item-color4) !important; -} -.event_item_color5 { - background-color: var(--event-item-color5) !important; -} -.event_item_color6 { - background-color: var(--event-item-color6) !important; -} -.event_item_color7 { - background-color: var(--event-item-color7) !important; -} -.event_item_color8 { - background-color: var(--event-item-color8) !important; -} -.event_item_color9 { - background-color: var(--event-item-color9) !important; -} -.event_item_color10 { - background-color: var(--event-item-color10) !important; -} - -/* ================================== */ -/* ============= kanban ============= */ -/* ================================== */ -.kanban-plugin__markdown-preview-view { - font-family: var(--font-text) !important; -} -/*body:not(.style-options-for-kanban-plugin-static-default)*/ -.workspace-leaf .kanban-plugin__lane { - border-radius: 8px; - box-shadow: 0 2px 6px 1px rgba(0, 0, 0, 0.1); -} - -.kanban-plugin { - background-color: var(--background-secondary) !important; -} - -.kanban-plugin__item-title ol:not(.contains-task-list)>li:not(.task-list-item), -.kanban-plugin__item-title ul:not(.contains-task-list)>li:not(.task-list-item) { - border-left: none; - padding: 0 1px; - margin-left: 0px; -} - -.kanban-plugin .task-list-item-checkbox { - margin: 0px 7px 0px 0; -} - -.kanban-plugin__markdown-preview-view blockquote { - padding-top: 1px; - padding-bottom: 1px; -} - -.kanban-plugin__lane-header-wrapper { - background: var(--theme-color-translucent-015) !important; - padding: 8px 11px !important; - border-radius: 5px 5px 0 0; - margin-bottom: 0px !important; - z-index: 100 !important; - border-bottom: none !important; -} - -.theme-dark .kanban-plugin__lane-header-wrapper { - background: unset !important; - padding: 8px 11px 0 !important; -} - - -.kanban-plugin__checkbox-wrapper { - background: var(--background-transparent-black-or-white-2); -} - -.kanban-plugin__item { - border: none !important; - z-index: 100 !important; -} - -.kanban-plugin__item-content-wrapper, -.kanban-plugin__item-title-wrapper { - background: var(--background-transparent-black-or-white-1) !important; - z-index: 100 !important; -} - -.kanban-plugin__item-content-wrapper:hover, -.kanban-plugin__item-title-wrapper:hover { - background: var(--background-transparent-black-or-white-3-1) !important; -} - -.kanban-plugin__item-button-wrapper { - background: var(--background-transparent-black-or-white-2) !important; - border-radius: 0 0 5px 5px; -} - -button.kanban-plugin__new-item-button { - color: var(--text-muted) !important; - font-weight: bold; - font-size: 0.8em; - z-index: 100 !important; -} - -button.kanban-plugin__new-item-button:hover { - color: var(--accent-strong) !important; -} - -.kanban-plugin__lane { - border: none !important; -} - -.kanban-plugin__lane-items { - padding: 4px !important; -} - -.kanban-plugin__markdown-preview-view ol:not(.contains-task-list)>li:not(.task-list-item), -.kanban-plugin__markdown-preview-view:not(.kanban) ul>li:not(.task-list-item) { - margin-left: unset; - padding-left: unset; - margin-bottom: unset; - margin-top: unset; -} - -/*meta*/ -.kanban-plugin__meta-row { - background: transparent !important; -} - -.kanban-plugin__item-metadata-wrapper:not(:empty) { - background: var(--background-transparent-black-or-white-3) !important; -} - -.kanban-plugin__lane { - background: transparent !important; -} - -.theme-light .kanban-plugin__lane { - background: var(--background-transparent-black-or-white-3) !important; -} - -.kanban-plugin__lane-wrapper { - border-radius: var(--radius-s); -} - -.kanban-plugin__lane-wrapper { - background-repeat: no-repeat; - background-size: cover; -} - -/* checkbox */ -.kanban-plugin__item-prefix-button-wrapper input[type=checkbox] { - margin: 1px 6px 0 0; - width: 14px; - height: 14px; - filter: hue-rotate(var(--theme-color)) !important; -} - -.theme-dark .kanban-plugin__lane-wrapper:nth-child(7n+1) { - background: linear-gradient(to bottom, var(--kanban-color-1) 60%, transparent); - --scrollbar-thumb-bg: color-mix(in srgb, var(--kanban-color-1), transparent 60%); - --scrollbar-active-thumb-bg: var(--kanban-color-1); -} -.theme-dark .kanban-plugin__lane-wrapper:nth-child(7n+2) { - background: linear-gradient(to bottom, var(--kanban-color-2) 60%, transparent); - --scrollbar-thumb-bg: color-mix(in srgb, var(--kanban-color-2), transparent 60%); - --scrollbar-active-thumb-bg: var(--kanban-color-2); -} -.theme-dark .kanban-plugin__lane-wrapper:nth-child(7n+3) { - background: linear-gradient(to bottom, var(--kanban-color-3) 60%, transparent); - --scrollbar-thumb-bg: color-mix(in srgb, var(--kanban-color-3), transparent 60%); - --scrollbar-active-thumb-bg: var(--kanban-color-3); -} -.theme-dark .kanban-plugin__lane-wrapper:nth-child(7n+4) { - background: linear-gradient(to bottom, var(--kanban-color-4) 60%, transparent); - --scrollbar-thumb-bg: color-mix(in srgb, var(--kanban-color-4), transparent 60%); - --scrollbar-active-thumb-bg: var(--kanban-color-4); -} -.theme-dark .kanban-plugin__lane-wrapper:nth-child(7n+5) { - background: linear-gradient(to bottom, var(--kanban-color-5) 60%, transparent); - --scrollbar-thumb-bg: color-mix(in srgb, var(--kanban-color-5), transparent 60%); - --scrollbar-active-thumb-bg: var(--kanban-color-5); -} -.theme-dark .kanban-plugin__lane-wrapper:nth-child(7n+6) { - background: linear-gradient(to bottom, var(--kanban-color-6) 60%, transparent); - --scrollbar-thumb-bg: color-mix(in srgb, var(--kanban-color-6), transparent 60%); - --scrollbar-active-thumb-bg: var(--kanban-color-6); -} -.theme-dark .kanban-plugin__lane-wrapper:nth-child(7n+0) { - background: linear-gradient(to bottom, var(--kanban-color-7) 60%, transparent); - --scrollbar-thumb-bg: color-mix(in srgb, var(--kanban-color-7), transparent 60%); - --scrollbar-active-thumb-bg: var(--kanban-color-7); -} - -body.style-options-for-kanban-plugin-static-all-color.theme-light { - --kanban-color-1: #63a1e970; - --kanban-color-2: #63e6e970; - --kanban-color-3: #63e98270; - --kanban-color-4: #dee96370; - --kanban-color-5: #e8c89170; - --kanban-color-6: #e8919170; - --kanban-color-7: #bd91e870; -} - -body.style-options-for-kanban-plugin-static-all-color.theme-light .kanban-plugin__lane-wrapper:nth-child(7n+1) { - background: linear-gradient(to bottom, var(--kanban-color-1) 30%, transparent) !important; - --scrollbar-thumb-bg: color-mix(in srgb, var(--kanban-color-1), transparent 60%); - --scrollbar-active-thumb-bg: var(--kanban-color-1); -} -body.style-options-for-kanban-plugin-static-all-color.theme-light .kanban-plugin__lane-wrapper:nth-child(7n+2) { - background: linear-gradient(to bottom, var(--kanban-color-2) 30%, transparent) !important; - --scrollbar-thumb-bg: color-mix(in srgb, var(--kanban-color-2), transparent 60%); - --scrollbar-active-thumb-bg: var(--kanban-color-2); -} -body.style-options-for-kanban-plugin-static-all-color.theme-light .kanban-plugin__lane-wrapper:nth-child(7n+3) { - background: linear-gradient(to bottom, var(--kanban-color-3) 30%, transparent) !important; - --scrollbar-thumb-bg: color-mix(in srgb, var(--kanban-color-3), transparent 60%); - --scrollbar-active-thumb-bg: var(--kanban-color-3); -} -body.style-options-for-kanban-plugin-static-all-color.theme-light .kanban-plugin__lane-wrapper:nth-child(7n+4) { - background: linear-gradient(to bottom, var(--kanban-color-4) 30%, transparent) !important; - --scrollbar-thumb-bg: color-mix(in srgb, var(--kanban-color-4), transparent 60%); - --scrollbar-active-thumb-bg: var(--kanban-color-4); -} -body.style-options-for-kanban-plugin-static-all-color.theme-light .kanban-plugin__lane-wrapper:nth-child(7n+5) { - background: linear-gradient(to bottom, var(--kanban-color-5) 30%, transparent) !important; - --scrollbar-thumb-bg: color-mix(in srgb, var(--kanban-color-5), transparent 60%); - --scrollbar-active-thumb-bg: var(--kanban-color-5); -} -body.style-options-for-kanban-plugin-static-all-color.theme-light .kanban-plugin__lane-wrapper:nth-child(7n+6) { - background: linear-gradient(to bottom, var(--kanban-color-6) 30%, transparent) !important; - --scrollbar-thumb-bg: color-mix(in srgb, var(--kanban-color-6), transparent 60%); - --scrollbar-active-thumb-bg: var(--kanban-color-6); -} -body.style-options-for-kanban-plugin-static-all-color.theme-light .kanban-plugin__lane-wrapper:nth-child(7n+0) { - background: linear-gradient(to bottom, var(--kanban-color-7) 30%, transparent) !important; - --scrollbar-thumb-bg: color-mix(in srgb, var(--kanban-color-7), transparent 60%); - --scrollbar-active-thumb-bg: var(--kanban-color-7); -} -body.style-options-for-kanban-plugin-static-all-color .kanban-plugin__item-title-wrapper { - background: transparent !important; -} - - -body.style-options-for-kanban-plugin-static-all-image-one.theme-dark .kanban-plugin__lane-wrapper { - background-repeat: no-repeat; - background-size: cover; -} - - - -body.style-options-for-kanban-plugin-static-all-image-two.theme-dark .kanban-plugin__lane-wrapper { - background-repeat: no-repeat; - background-size: cover; -} - -body.style-options-for-kanban-plugin-static-plain .kanban-plugin__lane-wrapper { - background: unset !important; - --scrollbar-thumb-bg: unset !important; - --scrollbar-active-thumb-bg: unset !important; -} - -body.style-options-for-kanban-plugin-static-plain .kanban-plugin__lane { - border: 2px solid var(--background-modifier-border) !important; -} - -body.style-options-for-kanban-plugin-static-plain .kanban-plugin__lane-header-wrapper { - background: unset !important; - border-bottom: 1px solid var(--background-modifier-border) !important; -} - -body.style-options-for-kanban-plugin-static-plain.theme-dark .kanban-plugin__lane-header-wrapper, -body.style-options-for-kanban-plugin-static-little-color.theme-dark .kanban-plugin__lane-header-wrapper { - padding: 10px 11px !important; -} - -body.style-options-for-kanban-plugin-static-plain .kanban-plugin__item-button-wrapper { - background: transparent !important; -} - -body.style-options-for-kanban-plugin-static-little-color.theme-light { - --kanban-color-1: #91bae870; - --kanban-color-2: #91e8e070; - --kanban-color-3: #91e89a70; - --kanban-color-4: #e0e89170; - --kanban-color-5: #e8c89170; - --kanban-color-6: #e8919170; - --kanban-color-7: #bd91e870; -} - -body.style-options-for-kanban-plugin-static-little-color.style-options-for-kanban-plugin-dynamic-neon-three .kanban-plugin__lane, -body.style-options-for-kanban-plugin-static-plain.style-options-for-kanban-plugin-dynamic-neon-three .kanban-plugin__lane, -body.style-options-for-kanban-plugin-static-little-color.style-options-for-kanban-plugin-dynamic-neon-one .kanban-plugin__lane, -body.style-options-for-kanban-plugin-static-plain.style-options-for-kanban-plugin-dynamic-neon-one .kanban-plugin__lane, -body.style-options-for-kanban-plugin-static-little-color.style-options-for-kanban-plugin-dynamic-neon-two .kanban-plugin__lane, -body.style-options-for-kanban-plugin-static-plain.style-options-for-kanban-plugin-dynamic-neon-two .kanban-plugin__lane { - border: none !important; -} - -body.style-options-for-kanban-plugin-static-little-color .kanban-plugin__item, -body.style-options-for-kanban-plugin-static-little-color .kanban-plugin__lane { - border: 1px solid var(--background-modifier-border) !important -} - -body.style-options-for-kanban-plugin-static-little-color .kanban-plugin__lane-wrapper { - background-image: unset !important; - background-color: transparent !important; -} -body.style-options-for-kanban-plugin-static-little-color .kanban-plugin__lane-wrapper:nth-child(7n+1) .kanban-plugin__lane-header-wrapper { - background-color: var(--kanban-color-1) !important; -} -body.style-options-for-kanban-plugin-static-little-color .kanban-plugin__lane-wrapper:nth-child(7n+2) .kanban-plugin__lane-header-wrapper { - background-color: var(--kanban-color-2) !important; -} -body.style-options-for-kanban-plugin-static-little-color .kanban-plugin__lane-wrapper:nth-child(7n+3) .kanban-plugin__lane-header-wrapper { - background-color: var(--kanban-color-3) !important; -} -body.style-options-for-kanban-plugin-static-little-color .kanban-plugin__lane-wrapper:nth-child(7n+4) .kanban-plugin__lane-header-wrapper { - background-color: var(--kanban-color-4) !important; -} -body.style-options-for-kanban-plugin-static-little-color .kanban-plugin__lane-wrapper:nth-child(7n+5) .kanban-plugin__lane-header-wrapper { - background-color: var(--kanban-color-5) !important; -} -body.style-options-for-kanban-plugin-static-little-color .kanban-plugin__lane-wrapper:nth-child(7n+6) .kanban-plugin__lane-header-wrapper { - background-color: var(--kanban-color-6) !important; -} -body.style-options-for-kanban-plugin-static-little-color .kanban-plugin__lane-wrapper:nth-child(7n) .kanban-plugin__lane-header-wrapper { - background-color: var(--kanban-color-7) !important; -} - -/* Kanban Neon, v0.5, for Blue Topaz, modified from https://codepen.io/Chokcoco/pen/BaQzBEG by @Chokcoco */ -body.style-options-for-kanban-plugin-dynamic-neon-one.theme-dark, -body.style-options-for-kanban-plugin-dynamic-neon-two.theme-dark, -body.style-options-for-kanban-plugin-dynamic-neon-three.theme-dark { - --background-transparent-black-or-white-1: #232323c2; - --background-transparent-black-or-white-2: #0f0f0f69; - --background-transparent-black-or-white-3: #2222224d; - --background-transparent-blue: #53a3ff41; -} - -body.style-options-for-kanban-plugin-dynamic-neon-one.theme-light, -body.style-options-for-kanban-plugin-dynamic-neon-two.theme-light, -body.style-options-for-kanban-plugin-dynamic-neon-three.theme-light { - --background-transparent-black-or-white-1: #ffffffb0; - --background-transparent-black-or-white-2: #eeeeee88; - --background-transparent-black-or-white-3: #f5f5f583; - --background-transparent-blue: #5eb6ff44; -} - -body.style-options-for-kanban-plugin-dynamic-neon-one .kanban-plugin, -body.style-options-for-kanban-plugin-dynamic-neon-two .kanban-plugin, -body.style-options-for-kanban-plugin-dynamic-neon-three .kanban-plugin { - background-color: var(--background-secondary-alt) !important; -} - -body.style-options-for-kanban-plugin-dynamic-neon-one.theme-dark .kanban-plugin__lane-header-wrapper, -body.style-options-for-kanban-plugin-dynamic-neon-two.theme-dark .kanban-plugin__lane-header-wrapper, -body.style-options-for-kanban-plugin-dynamic-neon-three.theme-dark .kanban-plugin__lane-header-wrapper { - background: var(--background-transparent-blue) !important; - padding: 5px 11px!important; - border-radius: 6px 6px 0 0; - margin-bottom: 5px !important; - z-index: 100 !important; -} - -body.style-options-for-kanban-plugin-dynamic-neon-one .kanban-plugin__lane-wrapper:nth-child(n) { - - position: relative; - z-index: 0; - border-radius: 10px; - overflow: hidden; - cursor: pointer; - transition: .3s; - -webkit-box-reflect: below 10px linear-gradient(transparent, rgba(0, 0, 0, .4)); -} - -body.style-options-for-kanban-plugin-dynamic-neon-one .kanban-plugin__lane-wrapper:nth-child(n)::before, -body.style-options-for-kanban-plugin-dynamic-neon-two .kanban-plugin__lane-wrapper:nth-child(n)::before { - content: ''; - position: absolute; - z-index: -2; - left: 50%; - top: 50%; - transform: translate(-50%, -50%); - width: 38px; - height: 125%; - background-color: var(--background-secondary-alt) !important; - background-repeat: no-repeat; - background-size: 50% 50%; - background-position: 0 0; - background-image: conic-gradient(var(--kanban-shadow), var(--kanban-shadow)); - animation: rotate 2s linear infinite; -} - -body.style-options-for-kanban-plugin-dynamic-neon-one .kanban-plugin__lane-wrapper:nth-child(n)::after, -body.style-options-for-kanban-plugin-dynamic-neon-two .kanban-plugin__lane-wrapper:nth-child(n)::after { - content: ''; - position: absolute; - z-index: -1; - left: 2px; - top: 2px; - width: calc(100% - 4px); - height: calc(100% - 4px); - background-color: var(--background-secondary-alt) !important; - border-radius: 10px; -} - -body.style-options-for-kanban-plugin-dynamic-neon-two .kanban-plugin__lane-wrapper:nth-child(n) { - background: unset !important; - position: relative; - z-index: 0; - border-radius: 10px; - overflow: hidden; - cursor: pointer; - transition: .3s; - box-shadow: 0px 0px 5px 1px var(--kanban-shadow); -} - -@keyframes rotate { - 100% {transform: translate(-50%, -50%) rotate(1turn);} -} - -body.style-options-for-kanban-plugin-dynamic-neon-one .kanban-plugin__lane-wrapper:nth-child(n):hover -body.style-options-for-kanban-plugin-dynamic-neon-two .kanban-plugin__lane-wrapper:nth-child(n):hover { - box-shadow: 0 0 5px var(--kanban-shadow), 0 0 25px var(--kanban-shadow); -} - -body.style-options-for-kanban-plugin-dynamic-neon-one .kanban-plugin__lane-wrapper:nth-child(n):hover::after, -body.style-options-for-kanban-plugin-dynamic-neon-one .kanban-plugin__lane-wrapper:nth-child(n):hover::before, -body.style-options-for-kanban-plugin-dynamic-neon-two .kanban-plugin__lane-wrapper:nth-child(n):hover::after, -body.style-options-for-kanban-plugin-dynamic-neon-two .kanban-plugin__lane-wrapper:nth-child(n):hover::before { - transition: .3s; - background: linear-gradient(to bottom, var(--kanban-shadow) 30%, transparent) !important; -} - -body.style-options-for-kanban-plugin-dynamic-neon-one .kanban-plugin__lane-wrapper:nth-child(7n+2), -body.style-options-for-kanban-plugin-dynamic-neon-two .kanban-plugin__lane-wrapper:nth-child(7n+2) { - filter: hue-rotate(50deg); -} -body.style-options-for-kanban-plugin-dynamic-neon-one .kanban-plugin__lane-wrapper:nth-child(7n+3), -body.style-options-for-kanban-plugin-dynamic-neon-two .kanban-plugin__lane-wrapper:nth-child(7n+3) { - filter: hue-rotate(140deg); -} -body.style-options-for-kanban-plugin-dynamic-neon-one .kanban-plugin__lane-wrapper:nth-child(7n+4), -body.style-options-for-kanban-plugin-dynamic-neon-two .kanban-plugin__lane-wrapper:nth-child(7n+4) { - filter: hue-rotate(180deg); -} -body.style-options-for-kanban-plugin-dynamic-neon-one .kanban-plugin__lane-wrapper:nth-child(7n+5), -body.style-options-for-kanban-plugin-dynamic-neon-two .kanban-plugin__lane-wrapper:nth-child(7n+5) { - filter: hue-rotate(220deg); -} -body.style-options-for-kanban-plugin-dynamic-neon-one .kanban-plugin__lane-wrapper:nth-child(7n+6), -body.style-options-for-kanban-plugin-dynamic-neon-two .kanban-plugin__lane-wrapper:nth-child(7n+6) { - filter: hue-rotate(280deg); -} -body.style-options-for-kanban-plugin-dynamic-neon-one .kanban-plugin__lane-wrapper:nth-child(7n) -body.style-options-for-kanban-plugin-dynamic-neon-two .kanban-plugin__lane-wrapper:nth-child(7n) { - filter: hue-rotate(330deg); -} - -body.style-options-for-kanban-plugin-dynamic-neon-three .kanban-plugin__lane-wrapper:nth-child(n) { - background: unset !important; - position: relative; - border-radius: 10px; - overflow: hidden; - cursor: pointer; - transition: .3s; - animation: huerotate-1 6s infinite linear; - filter: hue-rotate(360deg); -} - -@keyframes huerotate-1 { - 0% {filter: hue-rotate(0deg);} - 100% {filter: hue-rotate(360deg);} -} - -body.style-options-for-kanban-plugin-dynamic-neon-three .kanban-plugin__lane-wrapper:nth-child(n)::before { - content: ''; - position: absolute; - z-index: -2; - left: 50%; - top: 50%; - transform: translate(-50%, -50%); - width: 250%; - height: 300%; - background-color: var(--background-secondary-alt) !important; - background-repeat: no-repeat; - background-size: 50% 50%; - background-position: 0 0; - background-image: conic-gradient(var(--kanban-shadow), var(--kanban-shadow)); - animation: rotate 2s linear infinite; -} - -body.style-options-for-kanban-plugin-dynamic-neon-three .kanban-plugin__lane-wrapper:nth-child(n)::after { - content: ''; - position: absolute; - z-index: -1; - left: 2px; - top: 2px; - width: calc(100% - 4px); - height: calc(100% - 4px); - background-color: var(--background-secondary-alt) !important; - border-radius: 10px; -} - -body.style-options-for-kanban-plugin-dynamic-neon-three .kanban-plugin__lane-wrapper:nth-child(n):hover { - box-shadow: 0 0 5px var(--kanban-shadow), 0 0 25px var(--kanban-shadow); -} -body.style-options-for-kanban-plugin-dynamic-neon-three .kanban-plugin__lane-wrapper:nth-child(n):hover::after, -body.style-options-for-kanban-plugin-dynamic-neon-three .kanban-plugin__lane-wrapper:nth-child(n):hover::before { - transition: .3s; - background: var(--kanban-shadow); -} -body.style-options-for-kanban-plugin-dynamic-neon-three .kanban-plugin__lane-wrapper:nth-child(7n+2) { - animation: huerotate-2 6s infinite linear; - filter: hue-rotate(410deg); -} - -@keyframes huerotate-2 { - 0% {filter: hue-rotate(50deg);} - 100% {filter: hue-rotate(410deg);} -} - -body.style-options-for-kanban-plugin-dynamic-neon-three .kanban-plugin__lane-wrapper:nth-child(7n+3) { - animation: huerotate-3 6s infinite linear; - filter: hue-rotate(500deg); -} - -@keyframes huerotate-3 { - 0% {filter: hue-rotate(140deg);} - 100% {filter: hue-rotate(500deg);} -} - -body.style-options-for-kanban-plugin-dynamic-neon-three .kanban-plugin__lane-wrapper:nth-child(7n+4) { - filter: hue-rotate(540deg); - animation: huerotate-4 6s infinite linear; -} - -@keyframes huerotate-4 { - 0% {filter: hue-rotate(180deg);} - 100% {filter: hue-rotate(540deg);} -} - -body.style-options-for-kanban-plugin-dynamic-neon-three .kanban-plugin__lane-wrapper:nth-child(7n+5) { - filter: hue-rotate(580deg); - animation: huerotate-5 6s infinite linear; -} - -@keyframes huerotate-5 { - 0% {filter: hue-rotate(220deg);} - 100% {filter: hue-rotate(580deg);} -} - -body.style-options-for-kanban-plugin-dynamic-neon-three .kanban-plugin__lane-wrapper:nth-child(7n+6) { - filter: hue-rotate(640deg); - animation: huerotate-6 6s infinite linear; -} - -@keyframes huerotate-6 { - 0% {filter: hue-rotate(280deg);} - 100% {filter: hue-rotate(640deg);} -} - -body.style-options-for-kanban-plugin-dynamic-neon-three .kanban-plugin__lane-wrapper:nth-child(7n+0) { - filter: hue-rotate(690deg); - animation: huerotate-7 6s infinite linear; -} - -@keyframes huerotate-7 { - 0% { filter: hue-rotate(330deg);} - 100% { filter: hue-rotate(690deg);} -} - -/* =========================================*/ -/* =========tapes pins and stickies=========*/ -/* =========================================*/ -/* thanks to death_au, Gabroel and Lithou from Obsidian Members Group on Discord */ -.stickies { - text-align: center; - transition: width 2s; - padding: 5px; - margin: 18px; - position: relative; - float: right; - right: -10px; - width: max(180px, 30%); - max-width: 50%; - background-color: var(--stickies-color-1); - -webkit-transform: rotate(0deg); - -moz-transform: rotate(0deg); - -o-transform: rotate(0deg); - -ms-transform: rotate(0deg); - transform: rotate(2deg); - transition: all 2s ease; - z-index: 1; - padding-top: 10px; - padding-bottom: 10px; - border-radius: 0; - color: black; -} - -.stickies::after { - content: ""; - left: -5%; - top: -10px; - height: 40px; - width: 15px; - border-radius: var(--radius-l); - border: 3px solid #979797; - display: inline-block; - position: absolute; - -webkit-transform: rotate(0deg); - -moz-transform: rotate(0deg); - -o-transform: rotate(0deg); - -ms-transform: rotate(0deg); - transform: rotate(-11deg); - z-index: 11; -} - -.stickies::before { - width: 11px; - height: 20px; - content: ""; - display: inline-block; - position: absolute; - left: -3.5%; - top: -2px; - border-radius: var(--radius-l); - border: 3px solid #979797; - border-bottom: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; - z-index: 10; - -webkit-transform: rotate(0deg); - -moz-transform: rotate(0deg); - -o-transform: rotate(0deg); - -ms-transform: rotate(0deg); - transform: rotate(-11deg); -} - -.stickies2 { - position: relative; - float: left; - box-shadow: 0 10px 10px 2px #9191912d; - width: max(180px, 30%); - max-width: 50%; - background-color: var(--stickies-color-2); - -webkit-transform: rotate(0deg); - -moz-transform: rotate(0deg); - -o-transform: rotate(0deg); - -ms-transform: rotate(0deg); - transform: rotate(-2deg); - transition: all 2s ease; - z-index: 1; - padding: 20px; - margin: 10px; - color: black; -} - -.stickies2::after { - content: ""; - display: block; - height: 32px; - width: 2px; - position: absolute; - left: 50%; - top: -10px; - z-index: 1; - border-radius: 50%; - display: inline-block; - height: 15px; - width: 15px; - border: 1px; - box-shadow: inset -10px -10px 10px #f0b7a4, inset 3px 3px 5px; -} - -.to-recall { - position: relative; - float: left; - max-width: 30%; - background-color: var(--text-normal); - border-radius: var(--radius-xs); - -webkit-transform: rotate(0deg); - -moz-transform: rotate(0deg); - -o-transform: rotate(0deg); - -ms-transform: rotate(0deg); - transform: rotate(0deg); - z-index: 1; - padding: 8px; - margin-right: 8px; - margin-top: 20px; - font-weight: bold; - font-family: Cooper; - color: var(--text-normal); -} - -.to-recall:hover { - cursor: pointer; -} - -.to-recall:active { - background-color: transparent; - transition: all 300ms ease; -} - -.to-recall::after { - content: "Click"; - position: absolute; - font-size: 12px; - top: 1px; - right: 5px; - font-weight: 600; - font-family: Arial; - color: var(--background-primary); -} - -.to-recall:active:after { - display: none; -} - -.to-recall::before { - content: " To Recall"; - display: inline-block; - position: absolute; - top: -20px; - left: -8px; - border-radius: var(--radius-l); - font-size: 14px; - font-weight: bold; - font-family: OCR A; - color: #858585; - white-space: pre; -} - - -/* ================================== */ -/* ====== markdown assitance ======== */ -/* ================================== */ -.command-list-view-row-selected { - background-color: gray !important; -} - - -/* -.cm-s-obsidian pre.HyperMD-codeblock, -.cm-s-obsidian span.cm-math:not(.cm-formatting-math-begin):not(.cm-formatting-math-end) { - color: var(--gray-2); -} -*/ - -/* ================================== */ -/* ============ comments ============ */ -/* ================================== */ -.theme-light .ob-comment { - position: relative; - border-bottom: 1px dotted black; - color: var(--text-normal) !important; - background-color: #57b2ee77 !important; - border-radius: 10% !important; -} - -.theme-dark .ob-comment { - position: relative; - border-bottom: 1px dotted rgb(255, 255, 255); - color: var(--text-normal) !important; - background-color: #0054b5e0 !important; - border-radius: 10% !important; -} - -.theme-light .ob-comment:hover { - background-color: #57b2ee50 !important; -} - -.theme-dark .ob-comment:hover { - background-color: #0062d1 !important; -} - -.theme-light .ob-comment span { - visibility: hidden; - min-width: auto; - max-width: 500px; - width: max-content; - background-color: #c7e2f5e5 !important; - color: #0068c9 !important; - text-align: left; - border-radius: var(--radius-s); - padding: 10px 10px; - z-index: 1; - position: absolute; - top: 20px; - right: 20px; - box-shadow: 1px 1px 10px 5px var(--background-secondary); - transition: opacity 1s; -} - -.theme-dark .ob-comment span { - visibility: hidden; - min-width: auto; - max-width: 500px; - width: max-content; - background-color: #aed6f3ef !important; - color: #005cb3 !important; - text-align: left; - border-radius: var(--radius-s); - padding: 10px 10px; - z-index: 1; - position: absolute; - top: 20px; - right: 20px; - box-shadow: 1px 1px 10px 5px var(--background-secondary); - transition: opacity 1s; -} - -.theme-light .comment-pannel-p3 { - background-color: #c7e2f5e5 !important; - color: #0068c9 !important; -} - -.theme-dark .comment-pannel-p3 { - background-color: #aed6f3ef !important; - color: #005cb3 !important; -} - -.comment-pannel-bubble { - width: 90% !important; - padding: 0 5px !important; - text-decoration: none; - display: inline-block; - margin-right: 0 !important; -} - -/* ======== tooltip ========= */ -.tooltip, -.tooltip.mod-right { - color: var(--white); - background-color: var(--interactive-accent); -} -.tooltip .tooltip-arrow { - border-bottom: 5px solid var(--interactive-accent); -} -.tooltip.mod-right .tooltip-arrow { - border-right: 5px solid var(--interactive-accent); -} -.tooltip.mod-left .tooltip-arrow { - border-left: 5px solid var(--interactive-accent); -} - -/* ================================== */ -/* ======== better footnote ========= */ -/* ================================== */ -:is(.markdown-preview-view,.markdown-rendered) .tippy-content { - -webkit-background-clip: initial; - -webkit-text-fill-color: initial; - /* font-size: var(--font-size-better-footnote) !important;*/ - font-family: var(--font-family-better-footnote) !important; -} - -/*default footnote*/ -section.footnotes ol>li:not(.task-list-item) { - border-left: none !important; -} - -.cm-s-obsidian span.cm-footref { - color: var(--text-accent); -} -.tippy-box[data-theme~="obsidian"] -{ - backdrop-filter: blur(8px); -} -.file-embed.mod-empty:hover { - backdrop-filter: blur(5px); -} -/* ================================== */ -/* =========== admonition =========== */ -/* ================================== */ -body.style-options-for-admonition-plugin .admonition { - break-inside: avoid; -} - -body.style-options-for-admonition-plugin .callout.admonition .admonition-content { - overflow: hidden; -} - -.admonition.callout { - border-color: rgba(var(--callout-color),0.15); -} -.callout:not(.admonition).drop-shadow -{ - box-shadow:var(--window-shadow2); -} -.callout.admonition.admonition-plugin.is-collapsed { - overflow: hidden; -} -/* ad伪看板效果*/ -body.style-options-for-admonition-plugin .admonition-kanban { - overflow: visible; - background-color: rgba(255, 255, 255, 0) !important; - border-left: none !important; - margin: auto; - box-shadow: none !important; -} -body.style-options-for-admonition-plugin .admonition-kanban .admonition-content { - overflow: visible; - margin: 0; -} - -body.style-options-for-admonition-plugin .admonition-kanban .is-mobile ul { - display: flex; -} - -body.style-options-for-admonition-plugin .admonition-kanban ul { - display: flex; - margin: 0; - flex-direction: row; - border: none; - padding: 0; - border-radius: var(--radius-m); - flex-wrap: wrap; -} - -body.style-options-for-admonition-plugin .admonition-kanban ul>li:not(.task-list-item) { - flex: 1 1 20%; - padding: 0.1em 1em 0.1em 0.8em !important; - margin: 0 0.1em 0.3em 0 !important; - list-style: none; - border: 1px solid var(--p-kanban-border-color); - border-left: 1px solid var(--p-kanban-border-color) !important; - border-radius: var(--radius-s); - word-wrap: break-word; - word-break: break-word; -} - -body.style-options-for-admonition-plugin .admonition-kanban ul .list-collapse-indicator.collapse-indicator.collapse-icon { - margin-left: -1.2em; - position: absolute; -} - -body.style-options-for-admonition-plugin .admonition-kanban ul .list-collapse-indicator.collapse-indicator.collapse-icon::before { - color: var(--text-accent); - transition: transform 10ms linear 0s; -} - -body.style-options-for-admonition-plugin.colorful-p-kanban .admonition-kanban ul>li:nth-of-type(8n+1) { - background-color: var(--p-kanban-color-1); - padding-left: 1em; -} -body.style-options-for-admonition-plugin.colorful-p-kanban .admonition-kanban ul>li:nth-of-type(8n+2) { - background-color: var(--p-kanban-color-2); - padding-left: 1em; -} -body.style-options-for-admonition-plugin.colorful-p-kanban .admonition-kanban ul>li:nth-of-type(8n+3) { - background-color: var(--p-kanban-color-3); - padding-left: 1em; -} -body.style-options-for-admonition-plugin.colorful-p-kanban .admonition-kanban ul>li:nth-of-type(8n+4) { - background-color: var(--p-kanban-color-4); - padding-left: 1em; -} -body.style-options-for-admonition-plugin.colorful-p-kanban .admonition-kanban ul>li:nth-of-type(8n+5) { - background-color: var(--p-kanban-color-5); - padding-left: 1em; -} -body.style-options-for-admonition-plugin.colorful-p-kanban .admonition-kanban ul>li:nth-of-type(8n+6) { - background-color: var(--p-kanban-color-6); - padding-left: 1em; -} -body.style-options-for-admonition-plugin.colorful-p-kanban .admonition-kanban ul>li:nth-of-type(8n+7) { - background-color: var(--p-kanban-color-7); - padding-left: 1em; -} -body.style-options-for-admonition-plugin.colorful-p-kanban .admonition-kanban ul>li:nth-of-type(8n) { - background-color: var(--p-kanban-color-8); - padding-left: 1em; -} - -body.style-options-for-admonition-plugin .admonition-kanban ul ul { - display: flex; - flex-direction: column; - justify-content: center; - padding: 0; - margin-top: 0.5rem; - border-radius: 0; - border: 0; - background: none; -} - -body.style-options-for-admonition-plugin .admonition-kanban ul ul li:not(.task-list-item) { - width: 100%; - display: block; - background-color: var(--p-kanban-card-color-1) !important; -} - -body.style-options-for-admonition-plugin .admonition-kanban ul>li:hover { - border-color: var(--p-kanban-border-color) !important; -} - -body.style-options-for-admonition-plugin .admonition-kanban ul ul li:hover { - background: transparent !important; - border-color: var(--p-kanban-border-color) !important; - border-left: 1px solid var(--p-kanban-border-color) !important; -} - -.theme-dark body.style-options-for-admonition-plugin .admonition-kanban ul ul li:hover { - border-color: #696969e1 !important; - border-left: 1px solid #696969e1 !important; -} - -body.style-options-for-admonition-plugin .admonition-kanban ul ul li .task-list-item-checkbox { - margin-left: 1.5rem; -} - -body.style-options-for-admonition-plugin .admonition-kanban ul ul ul { - margin-right: 0; -} - -body.style-options-for-admonition-plugin .admonition-kanban ul ul::before { - border-left: 0; -} - -:is(.markdown-preview-view,.markdown-rendered).is-readable-line-widthbody.style-options-for-admonition-plugin .admonition-kanban .markdown-preview-sizer>div>ul { - max-width: 100%; -} - -body.style-options-for-admonition-plugin .admonition-kanban ul.contains-task-list ul, -body.style-options-for-admonition-plugin .admonition-kanban ol.contains-task-list ul, -body.style-options-for-admonition-plugin .admonition-kanban ul.contains-task-list ol, -body.style-options-for-admonition-plugin .admonition-kanban ol.contains-task-list ol { - position: initial; -} - -body.style-options-for-admonition-plugin .admonition-kanban ul.contains-task-list ul::before, -body.style-options-for-admonition-plugin .admonition-kanban ol.contains-task-list ul::before, -body.style-options-for-admonition-plugin .admonition-kanban ul.contains-task-list ol::before, -body.style-options-for-admonition-plugin .admonition-kanban ol.contains-task-list ol::before { - all: initial -} - -body.style-options-for-admonition-plugin .admonition-kanban ul > li.task-list-item { - flex: 1 1 20%; - padding: 0.1em 1em; - margin: 0 0.1em 0.3em 0; - list-style: none; - border: 1px solid var(--p-kanban-border-color); - border-left: 1px solid var(--p-kanban-border-color) !important; - border-radius: var(--radius-s); - word-wrap: break-word; - word-break: break-word; - text-indent: 0; -} - -body.style-options-for-admonition-plugin .admonition-kanban ul ul li.task-list-item { - width: 100%; - display: block; - padding-left: 2em; - text-indent: -3.1em; - background-color: var(--p-kanban-card-color-1) !important; -} - -/*blank ad分栏 -修改自 https://forum-zh.obsidian.md/t/topic/2081 */ -body.style-options-for-admonition-plugin .is-live-preview .admonition-col2 .callout-content.admonition-content>div:nth-child(2), -body.style-options-for-admonition-plugin .is-live-preview .admonition-col3 .callout-content.admonition-content>div:nth-child(2), -body.style-options-for-admonition-plugin .is-live-preview .admonition-col4 .callout-content.admonition-content>div:nth-child(2) { - margin-top: -1.5em; -} -body.style-options-for-admonition-plugin .admonition-kanban .admonition-title-icon, -body.style-options-for-admonition-plugin .admonition-flex .admonition-title-icon, -body.style-options-for-admonition-plugin .admonition-col2 .admonition-title-icon, -body.style-options-for-admonition-plugin .admonition-col3 .admonition-title-icon, -body.style-options-for-admonition-plugin .admonition-col4 .admonition-title-icon { - display: none; -} -body.style-options-for-admonition-plugin .is-live-preview :is(.admonition-col2, .admonition-col3, .admonition-col4, .admonition-flex) .admonition-content blockquote { - padding: 0; - margin: 0; - line-height:1em; -} -body.style-options-for-admonition-plugin :is(.admonition-col2, .admonition-col3, .admonition-col4, .admonition-flex) .admonition-content blockquote { - flex: 100%; - border-left: none; - padding-left: 0; - padding-right: 0; - margin-block-start: 0; - margin: 0; - box-shadow: none; - background-color: transparent; - color: var(--text-muted); -} -body.style-options-for-admonition-plugin :is(.admonition-col2, .admonition-col3, .admonition-col4, .admonition-flex) .admonition-content blockquote p::before { - display: none; -} -body.style-options-for-admonition-plugin :is(.admonition-col2, .admonition-col3, .admonition-col4, .admonition-flex) .admonition-content blockquote p { - margin: 0; - overflow-wrap: anywhere; -} - -body.style-options-for-admonition-plugin :is(.callout.admonition-col2,.callout.admonition-col3,.callout.admonition-col4,.callout.admonition-flex)>.admonition-content>ul { - margin-left: auto; -} -body.style-options-for-admonition-plugin .admonition-col2 .admonition-content>ul, -body.style-options-for-admonition-plugin .admonition-col3 .admonition-content>ul, -body.style-options-for-admonition-plugin .admonition-col4 .admonition-content>ul, -body.style-options-for-admonition-plugin .admonition-flex .admonition-content>ul { - padding-inline-start: 20px !important; - margin-left: -20px; - margin-block-start:0; -} - -body.style-options-for-admonition-plugin :is(.admonition-flex,.admonition-col2,.admonition-col3,.admonition-col4) .admonition-content .admonition-content>ul>li{ - list-style-type: none; - padding:0; -} -.markdown-rendered .admonition ul li p:last-of-type, .markdown-rendered ol li p:last-of-type { - margin-block-end: 0.5em; -} - -.markdown-rendered .admonition ul li p:first-of-type, .markdown-rendered ol li p:first-of-type { - margin-block-start: 0.5em; -} - -body.style-options-for-admonition-plugin .admonition-col2 .admonition-content ul li .task-list-item-checkbox, -body.style-options-for-admonition-plugin .admonition-col3 .admonition-content ul li .task-list-item-checkbox, -body.style-options-for-admonition-plugin .admonition-col4 .admonition-content ul li .task-list-item-checkbox, -body.style-options-for-admonition-plugin .admonition-flex .admonition-content ul li .task-list-item-checkbox { - margin-left: auto; -} -:is(.admonition-col2,.admonition-col3,.admonition-col4,.admonition-flex) .callout-content ul.dataview.list-view-ul>li:not(.task-list-item) { - margin-left: auto; -} - -body.style-options-for-admonition-plugin .admonition-col2 { - box-shadow: none!important; -} - -body.style-options-for-admonition-plugin .admonition-col2 .admonition { - overflow: visible; - margin: 0; -} - -body.style-options-for-admonition-plugin .admonition-col2>.admonition-content-holder> .admonition-content { - columns: 150px 2; - -moz-columns: 150px 2; - -webkit-columns: 150px 2; - column-gap: 2vw; - overflow: visible; - margin: 0; - /*分栏的分割线 - column-rule: 1px solid #d4d2d2; */ -} -body.style-options-for-admonition-plugin .callout.admonition-col2> .admonition-content { - columns: 150px 2; - -moz-columns: 150px 2; - -webkit-columns: 150px 2; - column-gap: 2vw; - overflow: visible; - margin: 0; - /*分栏的分割线 - column-rule: 1px solid #d4d2d2; */ -} -body.style-options-for-admonition-plugin .admonition-col2 .admonition-content ol, -body.style-options-for-admonition-plugin .admonition-col2 .admonition-content ul { - margin-top: -0.25em; - -} -body.style-options-for-admonition-plugin :is(.markdown-preview-view,.markdown-rendered) .admonition-col2 .admonition-content :is(h3,h4) { - margin-top: -0.001em !important; -} -body.style-options-for-admonition-plugin .admonition-kanban .admonition-col2 .admonition-content ol{ - margin: 0; - break-inside: avoid; -} - -body.style-options-for-admonition-plugin .admonition-kanban .admonition-col2 .admonition-content ul { - margin: 0; - break-inside: avoid; -} - -body.style-options-for-admonition-plugin .admonition-col2 .admonition-content { - overflow: visible ; -} - -body.style-options-for-admonition-plugin .admonition-col2 > .admonition-content-holder { - margin-top: 0 !important; - margin-bottom: 0 !important; -} -body.style-options-for-admonition-plugin .admonition-col2 p { - text-align: justify; - margin-top: 0; - padding: 2px; - /* height:100%; - overflow: auto; */ -} -body.style-options-for-admonition-plugin .admonition-col2 p > img{ - display: block; - height: auto; -} - -body.style-options-for-admonition-plugin .admonition-col2-parent .admonition-col2 .admonition > .admonition-title.no-title + .admonition-content-holder { - margin-top: 0; -} - -/****col3 三栏*****/ -body.style-options-for-admonition-plugin .admonition-col3 { - box-shadow: none !important; -} - -body.style-options-for-admonition-plugin .admonition-col3 .admonition { - overflow: visible; - margin: 0; -} - -body.style-options-for-admonition-plugin .callout.admonition-col3>.admonition-content { - columns: 100px 3; - -moz-columns: 100px 3; - -webkit-columns: 100px 3; - column-gap: 1vw; - overflow: visible; - margin: 0; - break-inside: avoid; - column-rule: 1px solid #d4d2d2; -} -body.style-options-for-admonition-plugin .admonition-col3>.admonition-content-holder>.admonition-content { - columns: 100px 3; - -moz-columns: 100px 3; - -webkit-columns: 100px 3; - column-gap: 1vw; - overflow: visible ; - margin: 0; - break-inside: avoid; - column-rule: 1px solid #d4d2d2; -} -body.style-options-for-admonition-plugin .admonition-col3 .admonition-content ol, -body.style-options-for-admonition-plugin .admonition-col3 .admonition-content ul { - margin-top: -0.25em; -} -body.style-options-for-admonition-plugin .admonition-kanban .admonition-col3 .admonition-content ul { - margin: 0; - break-inside: avoid; -} -body.style-options-for-admonition-plugin .admonition-kanban .admonition-col3 .admonition-content ol { - margin: 0; - break-inside: avoid; -} -body.style-options-for-admonition-plugin .admonition-col3 .admonition-content { - overflow: visible; -} - -body.style-options-for-admonition-plugin .admonition-col3 >.admonition-content-holder { - margin-top: 0 !important; - margin-bottom: 0 !important; -} -body.style-options-for-admonition-plugin .admonition-col3 p{ - text-align: justify; - margin-top: 0; - padding: 2px; - /* height:100%; - overflow: auto; */ -} -body.style-options-for-admonition-plugin .admonition-col3 p>img{ - display: block; - height: auto; -} - -body.style-options-for-admonition-plugin .admonition-col3-parent .admonition-col3 .admonition > .admonition-title.no-title + .admonition-content-holder { - margin-top: 0; -} - -/****col4 四栏*****/ -body.style-options-for-admonition-plugin .admonition-col4 { - box-shadow: none !important; -} - -body.style-options-for-admonition-plugin .admonition-col4 .admonition { - overflow: visible; - margin: 0; -} - -body.style-options-for-admonition-plugin .callout.admonition-col4 > .admonition-content { - column-count: 4; - column-gap: 1vw; - overflow: visible; - margin: 0; - break-inside: avoid; -} -body.style-options-for-admonition-plugin .admonition-col4 > .admonition-content-holder>.admonition-content { - column-count: 4; - column-gap: 1vw; - overflow: visible; - margin: 0; - break-inside: avoid; -} -body.style-options-for-admonition-plugin .admonition-col4 .admonition-content { - margin: 0; - break-inside: avoid; -} - -body.style-options-for-admonition-plugin .admonition-col4 .admonition-content ol, -body.style-options-for-admonition-plugin .admonition-col4 .admonition-content ul { - margin-top: -0.25em; -} -body.style-options-for-admonition-plugin .admonition-kanban .admonition-col4 .admonition-content ul { - margin: 0; - break-inside: avoid; -} -body.style-options-for-admonition-plugin .admonition-kanban .admonition-col4 .admonition-content ol { - margin: 0; - break-inside: avoid; -} -body.style-options-for-admonition-plugin .admonition-col4 > .admonition-content { - overflow: visible; -} - -body.style-options-for-admonition-plugin .admonition-col4 > .admonition-content-holder { - margin-top: 0 !important; - margin-bottom: 0 !important; -} -body.style-options-for-admonition-plugin .admonition-col4 p { - text-align: justify; - margin-top: 0; - padding: 2px; -} -body.style-options-for-admonition-plugin .admonition-col4 p>img{ - display: block; - height: auto; - -webkit-transition: -webkit-transform .3s ease; - -moz-transition: -moz-transform .3s ease; - -ms-transition: -ms-transform .3s ease; - transition: transform .3s ease; -} - -body.style-options-for-admonition-plugin .admonition-col4 p>img:hover{ - -webkit-transform: scale(1.2); - -moz-transform: scale(1.2); - -ms-transform: scale(1.2); - transform: scale(1.2) -} - -body.style-options-for-admonition-plugin .admonition-col4-parent .admonition-col4 .admonition > .admonition-title.no-title + .admonition-content-holder { - margin-top: 0; -} - -/*自适应分栏*/ -body.style-options-for-admonition-plugin .admonition-flex { - margin: auto; - box-shadow: none; - border-left: none; - word-break: break-word; -} -body.admonition-bg-color-same.style-options-for-admonition-plugin .admonition-flex { - margin: 1em 0; -} -.is-live-preview .callout-content.admonition-content >p { - margin-top: 0; -} -body.style-options-for-admonition-plugin .admonition-flex >.admonition-content-holder { - margin-top: 0 !important; - margin-bottom: 0 !important; -} -body.style-options-for-admonition-plugin .admonition-flex .admonition-content { - width: 100%; - margin: 0px; - display: flex; - flex-wrap: wrap; - border: none; -} -body.style-options-for-admonition-plugin .admonition-flex .admonition-content>div{ - flex: 1; - margin: 0 0.625rem; -} -body.style-options-for-admonition-plugin .admonition-flex .admonition-content[data-embed-type="image"] p{ - align-self: baseline; -} - -body.style-options-for-admonition-plugin .admonition-flex .admonition-content[data-embed-type="image"] { - justify-content: space-around; -} - -/*ad-table*/ -body.style-options-for-admonition-plugin .admonition-table { - overflow: visible; - margin: auto; - box-shadow: none; -} -body.style-options-for-admonition-plugin .admonition-table .admonition-content { - width: calc(100% - 5px); - margin: 0; - overflow-x: auto !important; - white-space: nowrap; -} -body.style-options-for-admonition-plugin .admonition-table .admonition-content thead > tr > th, -body.style-options-for-admonition-plugin .admonition-table .admonition-content tbody > tr > td { - white-space: nowrap; -} -/*blank ad框全透明隐藏*/ -body.style-options-for-admonition-plugin .admonition-blank { - overflow: visible; - background-color: rgba(255, 255, 255, 0) !important; - border-left: none !important; - margin: auto; - box-shadow: none; -} -body.style-options-for-admonition-plugin .admonition-blank .admonition-content { - overflow: visible; - margin: 0; -} -body.style-options-for-admonition-plugin .callout.admonition-blank .admonition-content { - overflow: hidden; -} - -/* 感谢 围城 网友分享 -本样式仿造自elegantbook模板:https://github.com/ElegantLaTeX/ElegantBook -为以下类型设置了样式,需要在admonition中自行添加,设置好颜色和icon -- def: definition -- thm: theorem -- lem: lemma -- cor: corollary -- pro: proposition - -标题使用方正书宋_GBK,正文使用方正楷体_GBK,系统需要安装 -*/ - -body.style-options-for-admonition-plugin :is(.admonition-def,.admonition-thm,.admonition-lem,.admonition-cor,.admonition-pro) { - margin: 1.5625em 0 !important; - overflow: visible !important; - border: 1px solid rgb(var(--callout-color)) !important; - border-radius: 0.3em !important; - background-color: rgba(var(--callout-color),0.05) !important; - box-shadow: 0 0 0 !important; -} - -body.style-options-for-admonition-plugin :is(.admonition-def,.admonition-thm,.admonition-lem,.admonition-cor,.admonition-pro) *.admonition-title { - display: inline-block; - top: -0.9em; - left: 1.5em; - padding: 1px 8px !important; - background-color: rgb(var(--callout-color)) !important; - border-radius: 0.2em; -} - -body.style-options-for-admonition-plugin :is(.admonition-def,.admonition-thm,.admonition-lem,.admonition-cor,.admonition-pro) *.callout-title.admonition-title { - display: flex; - top: unset; - left: 1.5em; - padding: 1px 8px !important; - background-color: rgb(var(--callout-color)) !important; - border-radius: 0.2em; - position: relative; - width: fit-content; -} - -body.style-options-for-admonition-plugin :is(.admonition-def,.admonition-thm,.admonition-lem,.admonition-cor,.admonition-pro) *.admonition-title-content { - color: white; - font-family: "方正书宋_GBK", var(--font-text); - font-size: 1.1em; -} - -body.style-options-for-admonition-plugin :is(.admonition-def,.admonition-thm,.admonition-lem,.admonition-cor,.admonition-pro) *.admonition-title-icon { - /* display: none !important; */ - color: white; - background-color: rgb(var(--callout-color)); - margin: 0.2em; -} - -body.style-options-for-admonition-plugin :is(.admonition-def,.admonition-thm,.admonition-lem,.admonition-cor,.admonition-pro) *.admonition-content-holder { - margin-top: -1em; - padding: 0; -} - -body.style-options-for-admonition-plugin :is(.admonition-def,.admonition-thm,.admonition-lem,.admonition-cor,.admonition-pro) *.callout-title.admonition-title { - margin-top: -1em ; - padding: 0; -} - -body.style-options-for-admonition-plugin :is(.admonition-def,.admonition-thm,.admonition-lem,.admonition-cor,.admonition-pro) p { - text-indent: 0; - font-family: "方正楷体_GBK", var(--font-text) !important; - font-size: 1.1em; -} - -/*hibox*/ -/*改自 https://github.com/chokcoco/iCSS/issues/153 */ -body.style-options-for-admonition-plugin .admonition-hibox .admonition-content-holder { - margin: -1em 0.2em; -} - -body.style-options-for-admonition-plugin .admonition-hibox { - background-color: transparent !important; - box-shadow: none !important; -} - -body.style-options-for-admonition-plugin .admonition-hibox *::marker { - visibility: hidden; -} - -body.style-options-for-admonition-plugin .admonition-hibox { - position: relative; - height: auto; - overflow: hidden; - border-radius: var(--radius-s) !important; - background: radial-gradient(circle at 0px 0px, rgba(var(--callout-color), 0.2) 0, rgba(var(--callout-color), 0.2) var(--hibox), transparent var(--hibox), transparent 0); - transition: --hibox 0.6s linear; - border-left: none !important; -} - -body.style-options-for-admonition-plugin .admonition-hibox:hover { - --hibox: 1500px; - box-shadow: 0 0.2rem 0.5rem var(--background-modifier-box-shadow) !important; -} - -body.style-options-for-admonition-plugin .admonition-hibox:hover * { - visibility: visible; -} - -body.style-options-for-admonition-plugin .admonition-hibox .admonition-content-copy { - top: 7px; -} - -body.style-options-for-admonition-plugin .admonition-hibox:hover ol:not(.contains-task-list)>li:not(.task-list-item) { - border-color: var(--list-ol-block-color) !important; -} - -body.style-options-for-admonition-plugin .admonition-hibox:hover ul>li:not(.task-list-item) { - border-color: var(--list-ul-block-color) !important; -} - -body.style-options-for-admonition-plugin .admonition-hibox:hover *::marker { - color: var(--list-ol-number-color) !important; -} - -body.style-options-for-admonition-plugin .admonition-hibox:hover blockquote { - border-color: var(--theme-color) !important; - background-color: var(--background-blockquote) !important; -} - -body.style-options-for-admonition-plugin .admonition-hibox:hover { - border-color: var(--text-normal) !important; -} - -body.style-options-for-admonition-plugin .admonition-hibox .admonition-title { - display: none; -} - - -/* ======Notice================ */ -.notice-container .notice:nth-child(4n+1){ - background-color: var(--background-pink); - color: var(--text-normal); -} -.notice-container .notice:nth-child(4n+2){ - background-color: var(--background-yellow); - color: var(--text-normal); -} -.notice-container .notice:nth-child(4n+3){ - background-color: var(--background-green); - color: var(--text-normal); -} -.notice-container .notice:nth-child(4n+4){ - background-color: var(--background-red); - color: var(--text-normal); -} - -.notice-container { - z-index: var(--layer-notice); - position: fixed; - top: 40px; - right: 0px; - padding: 0px; - overflow: hidden; -} - -/* ================================== */ -/* ============ checklist =========== */ -/* ================================== */ -.checklist-plugin-main button { - box-shadow: none; -} -.checklist-plugin-main:is(.markdown-preview-view,.markdown-rendered) li { - border-left: none !important; - font-size: var(--font-size-checklist); -} - -.checklist-plugin-main { - --todoList-listItemBackground: var(--checklist-bg) !important; - --todoList-listItemBackground--hover: var(--checklist-bg-hover) !important; -} - -body.rainbow-checklist .checklist-plugin-main:is(.markdown-preview-view,.markdown-rendered) li:nth-of-type(7n+1) { - background-color: var(--checklist-color-1); -} -body.rainbow-checklist .checklist-plugin-main:is(.markdown-preview-view,.markdown-rendered) li:nth-of-type(7n+2) { - background-color: var(--checklist-color-2); -} -body.rainbow-checklist .checklist-plugin-main:is(.markdown-preview-view,.markdown-rendered) li:nth-of-type(7n+3) { - background-color: var(--checklist-color-3); -} -body.rainbow-checklist .checklist-plugin-main:is(.markdown-preview-view,.markdown-rendered) li:nth-of-type(7n+4) { - background-color: var(--checklist-color-4); -} -body.rainbow-checklist .checklist-plugin-main:is(.markdown-preview-view,.markdown-rendered) li:nth-of-type(7n+5) { - background-color: var(--checklist-color-5); -} -body.rainbow-checklist .checklist-plugin-main:is(.markdown-preview-view,.markdown-rendered) li:nth-of-type(7n+6) { - background-color: var(--checklist-color-6); -} -body.rainbow-checklist .checklist-plugin-main:is(.markdown-preview-view,.markdown-rendered) li:nth-of-type(7n+7) { - background-color: var(--checklist-color-7); -} - -.is-mobile .checklist-plugin-main :is(.markdown-preview-view,.markdown-rendered) ul { - padding-inline-start: 0; -} - -.is-mobile .checklist-plugin-main button.toggle { - width: unset; -} - -.checklist-plugin-main button.toggle .checked { - background-color: var(--theme-color) !important; -} - -/* ================================== */ -/* ============ longform ============ */ -/* ================================== */ -.workspace-leaf-content[data-type="VIEW_TYPE_LONGFORM_EXPLORER"] li { - border-left: none; -} - -/* ================================== */ -/* ========== Breadcrumbs =========== */ -/* ================================== */ -.workspace-leaf-content[data-type="breadcrumbs-matrix"] summary.hier-summary, -h3.breadcrumbs-matrix-header { - color: var(--h3-color) !important; -} - -.workspace-leaf-content[data-type="breadcrumbs-matrix"] summary { - color: var(--h4-color) !important; -} - -/*remove H3, H5 when hovering*/ -h3.breadcrumbs-matrix-header:hover::before, -h5.breadcrumbs-matrix-header:hover::before { - display: none; -} - -h5.breadcrumbs-header, -h5.breadcrumbs-matrix-header { - color: var(--h5-color) !important; -} - -.breadcrumbs-matrix-square { - border: none !important; -} - -.breadcrumbs-matrix ol { - margin-left: 8px !important; -} - -/* ================================== */ -/* ===== code block enhancer ======= */ -/* ================================== */ -.obsidian-banner-wrapper.code-block-wrap { - position: unset; -} -.code-block-wrap .code-block-linenum-wrap { - top: 0.4em; - background-color: transparent; -} -.code-block-wrap .code-block-lang-name { - top: 4px; - left: 2px; -} -.code-block-wrap .code-block-lang-name + .code-block-linenum-wrap>.code-block-linenum:first-child::before { - color: transparent; -} - -/* ================================== */ -/* ============ Dataview ============ */ -/* ================================== */ -span.dataview.small-text { - position: relative; - font-size: 70%; - line-height: 0; - vertical-align: baseline; - top: -.5em; - color: var(--text-accent); - border-radius: 3px; - text-align: center; - padding: 0 0.2em; - margin: 0 1px; - font-variant-numeric: ordinal; - opacity: 0.6; -} - -.dataview-container .internal-link { - font-size:0.88em; -} - -ul.dataview.list-view-ul>li:not(.task-list-item) { - border-left: none !important; - margin-left: -1em; -} - -li.dataview-result-list-li ul>li:not(.task-list-item) { - border-left: none !important; -} - -ul.dataview.list-view-ul>li:not(.task-list-item)::before { - font-family: boxicons; - font-size: 0.8em; - padding: 0 5px 0 0; -} - -body.dataview-list-style-pacman ul.dataview.list-view-ul>li:not(.task-list-item):first-of-type::before { - content: '\edcf'; - color: var(--list-ol-number-color); -} -body.dataview-list-style-pacman ul.dataview.list-view-ul>li:not(.task-list-item):not(:first-of-type):nth-of-type(2n):not(:nth-of-type(10n))::before { - content: '\eaee'; - color: var(--list-ul-disc-color); -} -body.dataview-list-style-pacman ul.dataview.list-view-ul>li:not(.task-list-item):not(:first-of-type):nth-of-type(2n+1)::before { - content: '\edd1'; - color: var(--list-ul-disc-color); -} -body.dataview-list-style-pacman ul.dataview.list-view-ul>li:not(.task-list-item):nth-of-type(10n)::before { - content: '\ef29'; - color: var(--list-ol-number-color); -} - -body.dataview-list-style-pacman ul.dataview.list-view-ul { - list-style: none; -} - -ul.dataview.dataview-ul.dataview-result-list-root-ul>li.dataview-result-list-li { - border-left: none !important; - margin: 0; - padding-left: 0em; -} - -ul.dataview.dataview-ul.dataview-result-list-root-ul { - list-style: none; -} - -.CodeMirror-code .CodeMirror-linewidget.rendered-block-embed.rendered-widget { - background-color: var(--embed-color); - border-radius: var(--radius-xs); - border: 1px solid var(--embed-color); -} - -body:is(.rainbow-lines-reading,.list-vertical-line-one) table.dataview.table-view-table :is(ol,ul) :is(ol,ul)::before, -body:is(.rainbow-lines-reading,.list-vertical-line-one) .kanban-plugin__markdown-preview-view :is(ol,ul) :is(ol,ul)::before { - border-left: none; -} - -:is(.markdown-preview-view,.markdown-rendered) .dataview.inline-field-standalone-value { - background-color: transparent; -} - -/* ================================== */ -/* ======= CodeMirror Options ======= */ -/* ================================== */ -.CodeMirror-widget img.hmd-image:active { - all: initial; -} - -.cm-formatting.cm-formatting-highlight.cm-highlight.hmd-hidden-token+.cm-highlight { - border-radius: var(--radius-xs); - padding: 0 3px 2px; -} - -.cm-formatting.cm-formatting-code.cm-inline-code.hmd-hidden-token+.cm-inline-code { - border-radius: var(--radius-xs); - padding: 2px 4px; -} - -.cm-formatting.cm-formatting-code.cm-inline-code.hmd-hidden-token { - font-size: 0 !important; -} - -.cm-formatting.cm-formatting-task.cm-property.hmd-hidden-token[data-task=">"] { - background-size: 80% !important; - background-position: 60% 55% !important; - background-image: url('data:image/svg+xml;utf8,') !important; -} -.cm-formatting.cm-formatting-task.cm-property.hmd-hidden-token[data-task=">"]::before { - content: ' '; - position: absolute; - padding: 0 0.2em; - margin-left: 0.4em; - border-radius: var(--radius-xs); - background-color: var(--checkbox-color-2); - z-index: -1; -} - -.cm-formatting.cm-formatting-task.cm-property.hmd-hidden-token[data-task="<"] { - background-size: 80% !important; - background-position: 60% 55% !important; - background-image: url('data:image/svg+xml;utf8,') !important; -} -.cm-formatting.cm-formatting-task.cm-property.hmd-hidden-token[data-task="<"]::before { - content: ' '; - position: absolute; - padding: 0 0.2em; - margin-left: 0.4em; - border-radius: var(--radius-xs); - background-color: var(--checkbox-color-1); - z-index: -1; -} - -.cm-formatting.cm-formatting-task.cm-property.hmd-hidden-token[data-task="!"] { - background-size: 62% !important; - background-position: center !important; - background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI0IDI0IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0cHgiIGZpbGw9IiNkNGEzMDAiPjxnPjxyZWN0IGZpbGw9Im5vbmUiIGhlaWdodD0iMjQiIHdpZHRoPSIyNCIvPjwvZz48Zz48Zy8+PGc+PHBhdGggZD0iTTEyLDNjLTAuNDYsMC0wLjkzLDAuMDQtMS40LDAuMTRDNy44NCwzLjY3LDUuNjQsNS45LDUuMTIsOC42NmMtMC40OCwyLjYxLDAuNDgsNS4wMSwyLjIyLDYuNTYgQzcuNzcsMTUuNiw4LDE2LjEzLDgsMTYuNjlWMTljMCwxLjEsMC45LDIsMiwyaDAuMjhjMC4zNSwwLjYsMC45OCwxLDEuNzIsMXMxLjM4LTAuNCwxLjcyLTFIMTRjMS4xLDAsMi0wLjksMi0ydi0yLjMxIGMwLTAuNTUsMC4yMi0xLjA5LDAuNjQtMS40NkMxOC4wOSwxMy45NSwxOSwxMi4wOCwxOSwxMEMxOSw2LjEzLDE1Ljg3LDMsMTIsM3ogTTE0LDE3aC00di0xaDRWMTd6IE0xMCwxOXYtMWg0djFIMTB6IE0xNS4zMSwxMy43NGMtMC4wOSwwLjA4LTAuMTYsMC4xOC0wLjI0LDAuMjZIOC45MmMtMC4wOC0wLjA5LTAuMTUtMC4xOS0wLjI0LTAuMjdjLTEuMzItMS4xOC0xLjkxLTIuOTQtMS41OS00LjcgYzAuMzYtMS45NCwxLjk2LTMuNTUsMy44OS0zLjkzQzExLjMyLDUuMDMsMTEuNjYsNSwxMiw1YzIuNzYsMCw1LDIuMjQsNSw1QzE3LDExLjQzLDE2LjM5LDEyLjc5LDE1LjMxLDEzLjc0eiIvPjwvZz48Zz48cmVjdCBoZWlnaHQ9IjMiIHdpZHRoPSIxIiB4PSIxMS41IiB5PSIxMSIvPjxyZWN0IGhlaWdodD0iMyIgdHJhbnNmb3JtPSJtYXRyaXgoMC43MDcxIC0wLjcwNzEgMC43MDcxIDAuNzA3MSAtNC4wMzEyIDEwLjg1MzYpIiB3aWR0aD0iMSIgeD0iMTAuNTkiIHk9IjguNzkiLz48cmVjdCBoZWlnaHQ9IjMiIHRyYW5zZm9ybT0ibWF0cml4KC0wLjcwNzEgLTAuNzA3MSAwLjcwNzEgLTAuNzA3MSAxNC43Njc4IDI2LjcwMjgpIiB3aWR0aD0iMSIgeD0iMTIuNDEiIHk9IjguNzkiLz48L2c+PC9nPjwvc3ZnPg==) !important; -} -.theme-dark .cm-formatting.cm-formatting-task.cm-property.hmd-hidden-token[data-task="!"] { - background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI0IDI0IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0cHgiIGZpbGw9IiNmZmRjNTEiPjxnPjxyZWN0IGZpbGw9Im5vbmUiIGhlaWdodD0iMjQiIHdpZHRoPSIyNCIvPjwvZz48Zz48Zy8+PGc+PHBhdGggZD0iTTEyLDNjLTAuNDYsMC0wLjkzLDAuMDQtMS40LDAuMTRDNy44NCwzLjY3LDUuNjQsNS45LDUuMTIsOC42NmMtMC40OCwyLjYxLDAuNDgsNS4wMSwyLjIyLDYuNTYgQzcuNzcsMTUuNiw4LDE2LjEzLDgsMTYuNjlWMTljMCwxLjEsMC45LDIsMiwyaDAuMjhjMC4zNSwwLjYsMC45OCwxLDEuNzIsMXMxLjM4LTAuNCwxLjcyLTFIMTRjMS4xLDAsMi0wLjksMi0ydi0yLjMxIGMwLTAuNTUsMC4yMi0xLjA5LDAuNjQtMS40NkMxOC4wOSwxMy45NSwxOSwxMi4wOCwxOSwxMEMxOSw2LjEzLDE1Ljg3LDMsMTIsM3ogTTE0LDE3aC00di0xaDRWMTd6IE0xMCwxOXYtMWg0djFIMTB6IE0xNS4zMSwxMy43NGMtMC4wOSwwLjA4LTAuMTYsMC4xOC0wLjI0LDAuMjZIOC45MmMtMC4wOC0wLjA5LTAuMTUtMC4xOS0wLjI0LTAuMjdjLTEuMzItMS4xOC0xLjkxLTIuOTQtMS41OS00LjcgYzAuMzYtMS45NCwxLjk2LTMuNTUsMy44OS0zLjkzQzExLjMyLDUuMDMsMTEuNjYsNSwxMiw1YzIuNzYsMCw1LDIuMjQsNSw1QzE3LDExLjQzLDE2LjM5LDEyLjc5LDE1LjMxLDEzLjc0eiIvPjwvZz48Zz48cmVjdCBoZWlnaHQ9IjMiIHdpZHRoPSIxIiB4PSIxMS41IiB5PSIxMSIvPjxyZWN0IGhlaWdodD0iMyIgdHJhbnNmb3JtPSJtYXRyaXgoMC43MDcxIC0wLjcwNzEgMC43MDcxIDAuNzA3MSAtNC4wMzEyIDEwLjg1MzYpIiB3aWR0aD0iMSIgeD0iMTAuNTkiIHk9IjguNzkiLz48cmVjdCBoZWlnaHQ9IjMiIHRyYW5zZm9ybT0ibWF0cml4KC0wLjcwNzEgLTAuNzA3MSAwLjcwNzEgLTAuNzA3MSAxNC43Njc4IDI2LjcwMjgpIiB3aWR0aD0iMSIgeD0iMTIuNDEiIHk9IjguNzkiLz48L2c+PC9nPjwvc3ZnPg==) !important; -} -.cm-formatting.cm-formatting-task.cm-property.hmd-hidden-token[data-task="!"]::before { - content: ' '; - position: absolute; - padding: 0 0.2em; - margin-left: 0.4em; - border-radius: var(--radius-xs); - background-color: var(--checkbox-color-4); - z-index: -1; -} - -.cm-formatting.cm-formatting-task.cm-property.hmd-hidden-token[data-task="?"] { - background-size: 62% !important; - background-position: 55% 80% !important; - background-image: url('data:image/svg+xml;utf8,') !important; -} -.cm-formatting.cm-formatting-task.cm-property.hmd-hidden-token[data-task="?"]::before { - content: ' '; - position: absolute; - padding: 0 0.2em; - margin-left: 0.4em; - border-radius: var(--radius-xs); - background-color: var(--checkbox-color-3); - z-index: -1; -} - -.cm-formatting.cm-formatting-task.cm-property.hmd-hidden-token[data-task="+"] { - background-size: 65% !important; - background-position: 52% 55% !important; - background-image: url('data:image/svg+xml;utf8,') !important; -} -.cm-formatting.cm-formatting-task.cm-property.hmd-hidden-token[data-task="+"]::before { - content: ' '; - position: absolute; - padding: 0 0.2em; - margin-left: 0.4em; - border-radius: var(--radius-xs); - background-color: var(--checkbox-color-5); - z-index: -1; -} - -.cm-formatting.cm-formatting-task.cm-property.hmd-hidden-token[data-task="-"] { - background-size: 65% !important; - background-position: 55% 60% !important; - background-image: url('data:image/svg+xml;utf8,') !important; -} -.cm-formatting.cm-formatting-task.cm-property.hmd-hidden-token[data-task="-"]::before { - content: ' '; - position: absolute; - padding: 0 0.2em; - margin-left: 0.4em; - border-radius: var(--radius-xs); - background-color: var(--checkbox-color-6); - z-index: -1; -} - -.theme-dark .cm-formatting.cm-formatting-task.cm-property.hmd-hidden-token[data-task="<"], -.theme-dark .cm-formatting.cm-formatting-task.cm-property.hmd-hidden-token[data-task=">"], -.theme-dark .cm-formatting.cm-formatting-task.cm-property.hmd-hidden-token[data-task="!"], -.theme-dark .cm-formatting.cm-formatting-task.cm-property.hmd-hidden-token[data-task="?"], -.theme-dark .cm-formatting.cm-formatting-task.cm-property.hmd-hidden-token[data-task="+"], -.theme-dark .cm-formatting.cm-formatting-task.cm-property.hmd-hidden-token[data-task="-"] { - filter: invert(0) !important; -} - -.theme-dark .cm-formatting.cm-formatting-task.cm-property.hmd-hidden-token[data-task="<"]::before, -.theme-dark .cm-formatting.cm-formatting-task.cm-property.hmd-hidden-token[data-task=">"]::before, -.theme-dark .cm-formatting.cm-formatting-task.cm-property.hmd-hidden-token[data-task="!"]::before, -.theme-dark .cm-formatting.cm-formatting-task.cm-property.hmd-hidden-token[data-task="?"]::before, -.theme-dark .cm-formatting.cm-formatting-task.cm-property.hmd-hidden-token[data-task="+"]::before, -.theme-dark .cm-formatting.cm-formatting-task.cm-property.hmd-hidden-token[data-task="-"]::before { - filter: invert(0) opacity(0.5) !important; -} - -span.cm-formatting.cm-formatting-highlight.cm-strong.cm-em.cm-highlight.hmd-hidden-token { - padding: 0; -} - -.markdown-source-view.mod-cm5 .CodeMirror-lines .view-content { - background-color: var(--background-transparent-black-or-white-3) !important; -} - -.hide-tokens .cm-s-obsidian pre.HyperMD-hr { - background: unset !important; -} - -.HyperMD-quote.CodeMirror-line .CodeMirror-widget + span.cm-quote::before { - border-left: none; -} - -.vertical-tab-content { - padding-bottom: 4em; -} - -.modal-container .modal-content textarea:not(.rename-textarea) { - height: 18rem !important; -} - -.suggestion-container -{ - background-color: var(--bg-color-settings-4); - backdrop-filter: blur(3px); -} - -/* ================================== */ -/* ============ QuickAdd ============ */ -/* ================================== */ -.quickAddModal .modal { - max-height: 90% !important; -} - -.modal-container.quickAddModal .modal-content { - overflow: initial !important; - margin-top: 5px !important; -} - -/* ================================== */ -/* ========= Style Settings ========= */ -/* ================================== */ -.style-settings-heading { - border-bottom: none !important; -} -.setting-item.setting-item-heading.style-settings-heading[data-level="2"], -.style-settings-container[data-level="2"], -.setting-item.setting-item-heading.style-settings-heading[data-level="3"], -.style-settings-container[data-level="3"], -.setting-item.setting-item-heading.style-settings-heading[data-level="4"], -.style-settings-container[data-level="4"] { - padding-left: 20px; -} - -.setting-item-description, -.setting-item-info { - word-wrap: break-word; - word-break: break-word; -} - -.setting-item.setting-item-heading.style-settings-heading[data-level="1"] .setting-item-name { - color: var(--h2-color) !important; -} -.setting-item.setting-item-heading.style-settings-heading[data-level="2"] .setting-item-name { - color: var(--h3-color)!important; -} -.setting-item.setting-item-heading.style-settings-heading[data-level="3"] .setting-item-name { - color: var(--h4-color) !important; -} -.setting-item.setting-item-heading.style-settings-heading[data-level="4"] .setting-item-name { - color: var(--h5-color) !important; -} -.style-settings-collapse-indicator { - color: var(--theme-color) !important; -} - -.setting-item.setting-item-heading.style-settings-heading.is-collapsed .style-settings-collapse-indicator { - opacity: 0.4; -} - -.style-settings-container { - padding-bottom: 5px !important; -} - -.style-settings-container .setting-item-control select { - max-width: 330px; -} - -.workspace-leaf-content .style-settings-container .setting-item:first-child { - margin-top: 20px; -} - -div.style-settings-heading[data-level="0"] { - position: relative; - padding: 8px; - margin-bottom: 0; - background-color: var(--background-primary); - border-radius: var(--radius-l); - box-shadow: 0 3px 5px var(--background-modifier-box-shadow); -} - -.is-mobile div.style-settings-heading[data-level="0"] { - padding: 4px; -} - -div.style-settings-heading[data-level="0"] + .style-settings-container { - padding: 20px 30px; - margin-top: -10px; - margin-bottom: 0; - margin-left: 0; - border: 0px; - border-radius: var(--radius-l); -} - -div.style-settings-heading[data-level="0"] + .style-settings-container .style-settings-collapse-indicator { - margin-left: 0; -} - - -div.style-settings-heading[data-level="0"].is-collapsed { - margin-bottom: 15px; - border-radius: var(--radius-l); - box-shadow: 0 3px 5px var( --background-modifier-box-shadow); -} - -div.style-settings-heading[data-level="0"].is-collapsed { - background-color: var(--background-primary-alt); -} - - -div.style-settings-heading[data-level="1"] .setting-item-description { - padding-left: 2em; -} - -div.style-settings-heading:not([data-level="0"]):not([data-level="1"]) .setting-item-description { - padding-left: 2em; -} - -div.style-settings-heading { - padding: 8px 0; - margin-bottom: 5px; -} - -div.style-settings-container[data-level="0"] { - margin-left: 4px; -} - -div.style-settings-container[data-level] { - padding-bottom: 0; - margin-left: 0.5em; -} - -.setting-item.setting-item-heading.style-settings-heading .setting-item-name { - width: fit-content; - padding: 0 8px; - border-radius: var(--radius-l); -} - -.setting-item.setting-item-heading.style-settings-heading:hover .style-settings-collapse-indicator { - color: var(--text-accent-hover)!important; -} - -.setting-item.setting-item-heading.style-settings-heading:hover .setting-item-name { - color: var(--text-accent-hover)!important; -} - -div.workspace-leaf-content[data-type="style-settings"] .view-content .style-settings-container div.setting-item:not(.setting-item-heading) { - flex-flow: wrap; -} - -div.workspace-leaf-content[data-type="style-settings"] .setting-item-description { - font-size:12px; -} - -div.workspace-leaf-content[data-type="style-settings"] div.setting-item, -div.workspace-leaf-content[data-type="style-settings"] div.style-settings-heading { - border-bottom: unset; - border-top: 1px inset #ffffff24; -} - - -/* -.theme-light div.setting-item { - border-bottom: 1px dotted #e1e1e199; - border-top: 1.5px solid #cfcfcf42; - -} - - -.theme-dark div.setting-item { - border-bottom: 1px solid var(--background-modifier-border); - box-shadow: inset 0 -1px 0 rgb(0 0 0 / 45%), - inset 0 -2px 0 rgb(0 0 0 / 10%) -} -*/ - - -div.workspace-leaf-content[data-type="style-settings"] div.style-settings-heading[data-id="topaz-community"] { - margin-top: 10px; - margin-bottom: 0; - pointer-events: none; - cursor: text; - border-top: 2px solid var(--background-modifier-border); - pointer-events: none; -} - -.style-settings-heading[data-id="topaz-community"] .setting-item-control, -.style-settings-heading[data-id="topaz-community"] .style-settings-collapse-indicator { - display: none; -} - -.style-settings-heading[data-id="topaz-community"] .setting-item-name::before { - display: inline-block; - width: 20px; - height: fit-content; - padding-right: 8px; - font-family: "Segoe UI Emoji", "Apple Color Emoji", sans-serif; - font-weight: initial; - color: unset; - content: "❤️"; -} - -.setting-item.style-settings-heading[data-id="topaz-github"] { - cursor: default; -} - -.setting-item.style-settings-heading[data-id="topaz-github"]:hover div.setting-item-name { - color: var(--text-normal); -} - -.setting-item.style-settings-heading[data-id="topaz-github"] .setting-item-name::before { - display: inline-block; - width: 20px; - height: fit-content; - padding-right: 8px; - font-family: "Segoe UI Emoji", "Apple Color Emoji", sans-serif; - font-weight: initial; - color: unset; - content: "⭐"; -} - -.setting-item.style-settings-heading[data-id="topaz-github"] .setting-item-description { - color: var(--interactive-accent); - cursor: text; - user-select: all; -} - -.setting-item.style-settings-heading[data-id="topaz-example-github"] { - cursor: default; -} - -.setting-item.style-settings-heading[data-id="topaz-example-github"]:hover div.setting-item-name { - color: var(--text-normal); -} - -.setting-item.style-settings-heading[data-id="topaz-example-github"] .setting-item-name::before { - display: inline-block; - width: 20px; - height: fit-content; - padding-right: 8px; - font-family: "Segoe UI Emoji", "Apple Color Emoji", sans-serif; - font-weight: initial; - color: unset; - content: "⚠️"; -} - -.setting-item.style-settings-heading[data-id="topaz-example-github"] .setting-item-description { - color: var(--interactive-accent); - cursor: text; - user-select: all; -} - -.style-settings-container .setting-item:is([data-id*="interactive-accent"], [data-id*="text-accent"]) .setting-item-control::before { - width: 1.5em; - height: 1.5em; - margin-right: 8px; - content: " "; - border: 1px solid var(--background-modifier-border); - border-radius: var(--radius-l); -} - - -.style-settings-container .setting-item:is([data-id^="interactive-accent"]) .setting-item-control::before { - background-color: var(--interactive-accent); -} -.style-settings-container .setting-item:is([data-id^="text-accent"]) .setting-item-control::before { - background-color: var(--text-accent); -} -/**style setting logic ******/ -body:not(.color-scheme-options-lillimon-topaz) .setting-item[data-id="color-magic"], -body:not(.background-settings-workplace-background-image) .setting-item[data-id="background-settings-workplace-background-image"] ~ * { - display: none; -} -body:not(.background-image-settings-switch) .setting-item[data-id="bg-markdown-page-opacity-cp"], -body:not(.background-image-settings-switch) .setting-item[data-id="toggle-nonoverlapping-bg"], -body:not(.background-image-settings-switch) .setting-item[data-id="background-image-settings-markdown-page-options"], -body:not(.background-image-settings-switch) .setting-item[data-id="background-image-settings-markdown-page-random"], -body:not(.background-image-settings-switch) .setting-item[data-id="background-image-settings-markdown-page-random-options"] { - display: none; -} - -body:not(.background-notebook-liked-switch) .setting-item[data-id="background-notebook-liked-switch"] ~ * { - display: none; -} - -body:not([class*="background-settings-workplace-wave"]) .setting-item[data-id="background-waves-color"], -body:not(.background-settings-workplace-theme-light-custom-option) .setting-item[data-id="background-settings-workplace-theme-light-custom"], -body:not(.background-settings-workplace-theme-dark-custom-option) .setting-item[data-id="background-settings-workplace-theme-dark-custom"], -body:not(.background-settings-workplace-random-dark) .setting-item[data-id="background-settings-workplace-random"], -body:not(.background-settings-workplace-random-light) .setting-item[data-id="background-settings-workplace-random"], -body:not(.custom-thino-background) .setting-item[data-id="thino-background-dark-custom"], -body:not(.custom-thino-background) .setting-item[data-id="thino-background-light-custom"], -body:not(.custom-thino-share-background) .setting-item[data-id="share-thino-background-dark-custom"], -body:not(.custom-thino-share-background) .setting-item[data-id="share-thino-background-light-custom"], -body:not(.thino-background-color) .setting-item[data-id="thino-modern-primary"] - { - display: none; -} -body:not(:is(.share-thino-with-workspace-background,.share-thino-with-thino-background,.custom-thino-share-background)) .setting-item[data-id="blur-thino-share-frosted-glass"] -{ - display: none; -} - -.setting-item:is([data-id="background-image-settings-switch"],[data-id="background-notebook-liked-switch"],[data-id="background-settings-workplace-background-image"],[data-id="background-image-settings-command-palette-switch"]) .setting-item-name { - font-weight: bold; -} -body:not(.background-image-settings-markdown-page-custom) .setting-item[data-id="custom-markdown-page-background-color"], -body:not(.background-image-settings-markdown-page-custom) .setting-item[data-id="background-markdown-page-theme-light-custom"], -body:not(.background-image-settings-markdown-page-custom) .setting-item[data-id="background-markdown-page-theme-dark-custom"] { - display: none; -} - - -body:not(.background-image-settings-markdown-page-random) .setting-item[data-id="background-image-settings-markdown-page-random-options"] { - display: none; -} -.setting-item[data-id="notebook-liked-background-settings"] + .style-settings-container .setting-item:not(:first-child) { - /* display: none; */ -} -body:is(.notebook-liked-markdown-page-grid-notebook-1,.notebook-liked-markdown-page-grid-notebook-2, -.notebook-liked-markdown-page-dotted-notebook-1,.notebook-liked-markdown-page-dotted-notebook-2) .setting-item[data-id="bg-color-notebook"], -body.notebook-liked-markdown-page-grid-notebook-1 .setting-item[data-id="grid-notebook-line-color-1"], -body.notebook-liked-markdown-page-grid-notebook-2 .setting-item[data-id="grid-notebook-line-color-2"], -body:is(.notebook-liked-markdown-page-dotted-notebook-1,.notebook-liked-markdown-page-dotted-notebook-2) .setting-item[data-id="dotted-notebook-dot-color"] { - display: block !important; -} -body:not(.background-image-settings-command-palette-switch) .setting-item[data-id="background-image-settings-command-palette-switch"] ~ *, -body:not(.background-image-settings-command-palette-custom) .setting-item[data-id="background-command-palette-theme-light-custom"], -body:not(.background-image-settings-command-palette-custom) .setting-item[data-id="background-command-palette-theme-dark-custom"] { - display: none; -} -body:not(.toggle-bg-panel-page) .setting-item[data-id="toggle-bg-panel-page"] ~ *, -body:not(.panel-page-bg-theme-light-custom) .setting-item[data-id="background-panel-page-theme-light-custom"], -body:not(.panel-page-bg-theme-dark-custom) .setting-item[data-id="background-panel-page-theme-dark-custom"] { - display: none; -} - -body:not(.fancy-hr-icon) .setting-item[data-id="fancy-hr-folder-icon"], -body:not(.fancy-hr-no-icon) .setting-item[data-id="fancy-hr-folder-no-icon"], -body:not(.fancy-hr-number) .setting-item[data-id="fancy-hr-folder-with-number"] { - display: none; -} - -body:not(.bt-default-unordered-list) .setting-item[data-id="options-bt-default"], -body:not(.custom-unordered-list) .setting-item[data-id="options-for-custom"] { - display: none; -} - -body:not(.custom-ordered-list) .setting-item[data-id^="list-ol-marker-"] { - display: none; -} -body.folder-style-change-options-colorful-default .setting-item[data-id="folder-style-change-options-colorful-subfolder"] { - display: none; -} - -body:not(.folder-colorful-custom) .setting-item[data-id="folder-colorful-custom-color"] { - display: none; -} - -body:not(.loading-custom-text) .setting-item[data-id="loading-custom-text-folder"], -body:not(.loading-animation-custom) .setting-item[data-id="loading-animation-custom-folder"] { - display: none; -} - -body:not(.colorful-tag-bt) .setting-item[data-id="customised-colorful-tag"], -body:not(.tag-pill-outlined) .setting-item[data-id="outlined-style"] { - display: none; -} - - -body.is-hidden-frameless .setting-item:is([data-id="simple-titlebar"],[data-id="custom-titlebar-bg"],[data-id="titlebar-blur-depth"],[data-id="titlebar-brightness"],[data-id="hide-titlebar-text"]) { - display: none; -} - -body:not(.is-hidden-frameless) .setting-item:is([data-id="hide-titlebar-close-btn"]) { - display: none; -} - -body:not(.color-scheme-options-simplicity-topaz) .setting-item:is([data-id="disable-auto-hide-header"]) { - display: none; -} - -body:not(.bt-colorful-titlebar) .setting-item[data-id="background-titlebar-inner"] { - display: none; -} - -/********/ -/* ================================== */ -/* ==== advanced-tables-toolbar ===== */ -/* ================================== */ -.workspace-leaf-content[data-type="advanced-tables-toolbar"] .nav-buttons-container>.nav-action-button { - padding: 5px; -} - -.workspace-leaf-content[data-type="advanced-tables-toolbar"] .nav-buttons-container>.nav-action-button svg { - height: 20px; - width: 20px; -} - -/* ================================== */ -/* =========== RTL support ========= */ -/* ================================== */ -:is(.markdown-preview-view,.markdown-rendered).rtl blockquote { - border-right-width: 7px; - border-left-width: 0; -} - -:is(.markdown-preview-view,.markdown-rendered).rtl ul >li:not(.task-list-item) { - border-left: none; - border-right: 0.125em solid var(--list-ul-block-color); -} - -:is(.markdown-preview-view,.markdown-rendered).rtl ol:not(.contains-task-list)>li:not(.task-list-item) { - border-right: 0.125em solid var(--list-ol-block-color); - border-left: none; -} - -.markdown-preview-view.rtl:not(.kanban) ul>li:not(.task-list-item), -.markdown-preview-view.rtl ol:not(.contains-task-list)>li:not(.task-list-item) { - padding-right: 0.25em; -} - -:is(.markdown-preview-view,.markdown-rendered).rtl h1:hover::before { - margin-right: -24px; -} - -:is(.markdown-preview-view,.markdown-rendered).rtl h2:hover::before, -:is(.markdown-preview-view,.markdown-rendered).rtl h3:hover::before, -:is(.markdown-preview-view,.markdown-rendered).rtl h4:hover::before, -:is(.markdown-preview-view,.markdown-rendered).rtl h5:hover::before, -:is(.markdown-preview-view,.markdown-rendered).rtl h6:hover::before { - margin-right: -25px; -} - -body:not(.default-icons) :is(.markdown-preview-view,.markdown-rendered).rtl div.heading-collapse-indicator.collapse-indicator { - position: absolute; - right: -33px; - padding-left: 0; - transition: transform 20ms linear 0s; -} - -body:not(.default-icons) :is(.markdown-preview-view,.markdown-rendered).rtl h1 div.heading-collapse-indicator.collapse-indicator, -body:not(.default-icons) :is(.markdown-preview-view,.markdown-rendered).rtl h2 div.heading-collapse-indicator.collapse-indicator { - position: absolute; - right: -32px; - padding-left: 0; - margin-top: 11px; - transition: transform 20ms linear 0s; -} - -body:not(.default-icons) :is(.markdown-preview-view,.markdown-rendered).rtl div.is-collapsed h1 div.heading-collapse-indicator.collapse-indicator, -body:not(.default-icons) :is(.markdown-preview-view,.markdown-rendered).rtl div.is-collapsed h2 div.heading-collapse-indicator.collapse-indicator { - transform: translateX(-9px) translateY(18px) rotate(90deg); - opacity: 0.5; -} - -body:not(.default-icons) :is(.markdown-preview-view,.markdown-rendered).rtl div.is-collapsed div.heading-collapse-indicator.collapse-indicator { - transform: translateX(-2px) translateY(25px) rotate(90deg); - opacity: 0.5; -} - -body:not(.default-icons) :is(.markdown-preview-view,.markdown-rendered).rtl .list-collapse-indicator.collapse-indicator.collapse-icon::before { - right: 0; -} - -body:not(.default-icons) :is(.markdown-preview-view,.markdown-rendered).rtl div>ul>li>.list-collapse-indicator.collapse-indicator.collapse-icon::before, -body:not(.default-icons) :is(.markdown-preview-view,.markdown-rendered).rtl div>ol>li>.list-collapse-indicator.collapse-indicator.collapse-icon::before { - margin-right: 48px; -} - -body:not(.default-icons) :is(.markdown-preview-view,.markdown-rendered).rtl li.is-collapsed div.list-collapse-indicator.collapse-indicator.collapse-icon::before { - transform: rotate(90deg); -} - -.markdown-source-view.mod-cm6.is-live-preview.is-rtl .HyperMD-quote { - border: 0 solid var(--theme-color); - border-right-width: 5px; -} - -.CodeMirror-code.CodeMirror-rtl span.cm-quote::before { - content: ""; - border-right: 7px solid var(--theme-color); - border-radius: 0; /*5px 0 0 5px;*/ - height: 100%; - border-left: none !important; - margin-right: -11px; - position: absolute; -} - -.markdown-source-view.mod-cm6.is-rtl .HyperMD-list-line:not([class*="quote"]) .cm-indent::before { - margin-right: 0.3rem; -} - -.CodeMirror-code.CodeMirror-rtl span.cm-formatting-quote + *::before, -.CodeMirror-code.CodeMirror-rtl span.cm-formatting-quote + span.cm-hmd-indent-in-quote + span.cm-quote:not(.cm-formatting-quote)::before, -.CodeMirror-code.CodeMirror-rtl span.cm-inline-code + *::before, -.CodeMirror-code.CodeMirror-rtl span.cm-highlight + *::before, -.CodeMirror-code.CodeMirror-rtl span.cm-quote + *::before, -.CodeMirror-code.CodeMirror-rtl span.cm-hmd-html-end + *::before { - border-right: none; -} - -.CodeMirror-code.CodeMirror-rtl *:not(font)>em>strong, -.CodeMirror-code.CodeMirror-rtl *:not(font)>strong>em, -.CodeMirror-code.CodeMirror-rtl .cm-strong.cm-em { - padding-right: 0 !important; -} - -/* ================================== */ -/* ============ CardBoard =========== */ -/* ================================== */ -.card-board input[type="checkbox"] { - box-sizing: border-box !important; - border: 2px solid var(--background-modifier-border) !important; - width: 1.2em !important; - height: 1.2em !important; - margin: 0.2em 0.5em 0em 0; - filter: hue-rotate(var(--theme-color)); -} - -.card-board input[type="checkbox"]:checked { - background-position: center; - background-size: 120%; - background-repeat: no-repeat; - background-image: url('data:image/svg+xml; utf8, '); -} - -.card-board input[type="checkbox"]:checked { - border: none !important; -} - -.card-board input[type="checkbox"]:checked::before, -.card-board input[type="checkbox"]:hover::before { - display: none; -} - -/* ================================== */ -/* ============ Outliner ============ */ -/* ================================== */ -body:not(.outliner-plugin-bls).markdown-source-view.mod-cm5 .cm-hmd-list-indent { - position: initial !important; -} - -.outliner-plugin-bls .cm-hmd-list-indent .cm-tab::before { - display: none; -} - -.outliner-plugin-bls .cm-s-obsidian.is-live-preview .list-bullet:before { - display: none; -} -.outliner-plugin-bls .CodeMirror-line .cm-hmd-list-indent::before { - left: -0.2em !important; - right: -0.4em; - background-size: 1.6ch 1px !important; -} -.outliner-plugin-bls .cm-line .cm-hmd-list-indent::before { - right: -0.4em; - background-size: 1.45ch 1px !important; -} - - -/* ================================== */ -/* ==============Better Code Block ============= */ -/* ================================== */ -pre.code-block-pre__has-linenum { - padding: 0; - min-height: unset; -} -div.code-block-wrap > pre pre:not([closed]) + code[class*=language-] { - padding-bottom: 1em !important; -} - -.obsidian-embedded-code-title__code-block-title > .title { - line-height: 29px; - font-weight: bold; - font-size: var(--callout-title-size); - font-family: var(--font-text); -} -.markdown-rendered pre.obsidian-embedded-code-title__code-block-title[closed] { - background-color: rgba(var(--interactive-accent-rgb), 0.1) !important; -} -.markdown-rendered pre.obsidian-embedded-code-title__code-block-title { - overflow-y: hidden; - background-color: transparent !important; -} - -.obsidian-embedded-code-title__code-block-title:not([closed]) .langName { - opacity: 0.35; - font-size: 12px; -} -.obsidian-embedded-code-title__code-block-title .langName { - color: var(--code-language); -} -.obsidian-embedded-code-title__code-block-title .collapser .handle { - margin-top: -3px; -} -.obsidian-embedded-code-title__code-block-title[closed] .langName { - opacity: 0.75; - font-size: 12px; -} -.obsidian-embedded-code-title__code-block-title .collapser .handle { - opacity: 0.35; -} -pre.code-block-pre__has-linenum::before { - display: none; -} -.code-block-linenum-wrap { - opacity: 0.5; - border-right-color:rgba(var(--mono-rgb-100), 0.5) !important; -} - -.markdown-rendered .code-block-pre__has-linenum button.copy-code-button:not([style="right: 32pt"]) { - background-image: url("data:image/svg+xml,%3Csvg t='1667575665955' class='icon' viewBox='0 0 1024 1024' version='1.1' xmlns='http://www.w3.org/2000/svg' p-id='5542' width='32' height='32'%3E%3Cpath d='M568.7 319.8l86.8 86.8v476.6h-466V319.8h379.2m29-70H178.9c-32.8 0-59.4 26.5-59.4 59.3v584.7c0 15.7 6.3 30.8 17.4 42 11.1 11.2 26.2 17.4 42 17.4h487.4c15.7 0 30.8-6.3 41.9-17.4 11.1-11.1 17.3-26.2 17.3-42V377.6L597.7 249.8z' fill='%2391B1D5' p-id='5543'%3E%3C/path%3E%3Cpath d='M776.7 70.8H357.9c-32.8 0-59.4 26.5-59.4 59.3v100h70v-89.3h379.2l86.8 86.8v476.6h-85.8v70h96.6c15.7 0 30.8-6.3 41.9-17.4 11.1-11.1 17.3-26.2 17.3-42V198.6L776.7 70.8z' fill='%2391B1D5' p-id='5544'%3E%3C/path%3E%3C/svg%3E"); -} -.code-block-pre__has-linenum button.copy-code-button:hover { - background-color: none; - box-shadow: var(--window-shadow); -} -/* ================================== */ -/* ============== Make.md ============= */ -/* ================================== */ -body.mk-mark-sans #calendar-container { - margin: -10px -8px 0px -8px; -} - -/* ================================== */ -/* ============== Memos Thino============= */ -/* ================================== */ - -body:not(.thino-default) div[data-type='thino_view'] -{ - --activeline-background:transparent; - --thino-wrapper-border:transparent; - --memos-icon-hover:var(--background-modifier-border); - - --memos-memo-border:transparent; - --memos-location-wrapper-bg: transparent; - --memos-bg-accent:var(--theme-color-translucent-04); - --thino-background-primary:var(--bg-color-settings-0-1); - --memos-bg-light-blue: var(--theme-color-translucent-02); - --memos-text-blue:var(--interactive-accent); -} -body:is(.thino-default,.thino-frosted-style-default) div[data-type=thino_view] #page-wrapper:not(.memos-moments-view) .memo-editor-wrapper{ - background-color: var(--background-primary-bg-4-bt, var(--background-primary)); -} -body:is(.thino-default,.thino-frosted-style-default) div[data-type=thino_view] .memolist-wrapper>.memolist-container { - - background-color: transparent; - -} -body:is(.thino-default,.thino-frosted-style-default) div[data-type=thino_view] .memo-wrapper, -body:is(.thino-default,.thino-frosted-style-default) .thino-hover-popover .memo-wrapper, -body:is(.thino-default,.thino-frosted-style-default) .block-language-thino .thino-embed-container .memo-wrapper { - - background-color: var(--background-primary-bg-4-bt, var(--background-primary)); - -} -div[data-type=thino_view] .memo-editor-wrapper>.tip-text { -padding-left:1.5em; -} -.thino-editor-modal .common-editor-wrapper .common-editor-inputer { - border: none; -} -body.custom-thino-background div[data-type='thino_view'].workspace-leaf-content -{ - background-image: var(--thino-background-light-custom) ; - --background-primary:var(--bg-color-settings-2); - --memos-memo-bg:var(--bg-color-settings-0-1); - --memos-memo-border:var(--bg-color-settings-0-1); - background-size: cover; -} -body.custom-thino-background.theme-dark div[data-type='thino_view'].workspace-leaf-content -{ - background-image: var(--thino-background-dark-custom); - --background-primary:var(--bg-color-settings-2); - --memos-memo-bg:var(--bg-color-settings-0-1); - --memos-memo-border:var(--bg-color-settings-0-1); - background-size: cover; -} - -body.custom-thino-background.theme-dark div[data-type='thino_view'] #page-wrapper -{ - - background: var(--bg-color-settings-2); -} -.workspace-tab-container:fullscreen div[data-type='thino_view'], -.workspace-tab-container:fullscreen .workspace-leaf-content -{ - - background-color: var(--background-primary-alt); - -} - - .theme-dark div[data-type=thino_view] .usage-heat-map-wrapper .stat-container { - - background-color: #2a2a2a8a; - box-shadow:none; -} -body:not(:is(.hider-memos-modern-banner,.memos-banner-gradient)) div[data-type=thino_view] .moments-view .moments-view-background-wrapper .moments-view-background-overlay .moments-view-user-info .moments-view-user-name -{ - color: white; - font-weight: bold; - letter-spacing: 1px; -} -.theme-dark div[data-type=thino_view] .memo-editor-wrapper, -.theme-dark .thino-editor-modal .memo-editor-wrapper { - border: none; -} -.modal.thino-editor-modal .modal-content -{ - background-color:var(--bg-color-settings-3); -} -div[data-type=thino_view] .moments-view .thino-moment-wrapper .thino-moment-container .thino-moment-user-name { - color: #66789d; -} -div[data-type=thino_view] .moments-view .moments-view-background-wrapper .moments-view-background-overlay .moments-view-user-idea { - font-size: 12px; -} -div[data-type=thino_view] .memo-wrapper>.memo-top-wrapper>.memo-top-left-wrapper>.memo-type-img -{ - align-items: flex-end; -} -div[data-type=thino_view] .moments-view .memo-content-text p a[href^="#收集"] { - display: block; - position: absolute; - left: 180px; - top: calc(100% - 31px); - font-size: 10px; - padding-top: 4px; - padding-bottom: 4px; - color: var(--tag-color); -} - - -div[data-type=thino_view].mobile-view .moments-view .memos-header-container>.memos-header-search-section - :is(.memos-review-entry-wrapper, .memos-view-switcher-wrapper,.thino-inline-filter-wrapper,.search-bar-inputer:not(:has(input:focus))) -{ -padding: 0px ; -color:var(--memos-icon-hover); -} -div[data-type=thino_view] .memos-header-container>.memos-header-search-section .search-bar-inputer:has(input:focus) - { - padding: 0px ; - color:var(--memos-text-muted); - } -.is-mobile div[data-type=thino_view].mobile-view .search-bar-container>.search-bar-inputer { - width: 110px; - -} -.is-mobile div[data-type=thino_view] .memos-header-container .refresh-icon -{ -margin: 0px; -} -.is-mobile div[data-type=thino_view].mobile-view #page-wrapper -{ -margin-top:0; -} -.is-mobile div[data-type=thino_view].mobile-view .view-content:not(:has(.show-editor.moments-view)) { - padding-top: var(--size-4-2); -} -div[data-type=thino_view].mobile-view .memos-sidebar-wrapper -{ - background: linear-gradient(to right, var(--color-base-00) 30%, var(--background-mobile-drawer-2) 100%); - backdrop-filter: blur(10px); -} -div[data-type=thino_view] .common-editor-inputer:has(.cm-focused) + .common-tools-wrapper >.btns-container>.confirm-btn -{ - background-color:var(--interactive-accent); -} -div[data-type=thino_view] button:not(.clickable-icon):hover - { - box-shadow: none; - -} -div[data-type=thino_view] .queries-wrapper>.create-query-btn-container>.btn -{ - border: 1px solid var(--memos-memo-border); -} -body:not(.thino-default) .heatmap-date-picker-wrapper>.date-picker-day-container>.date-picker-day-content>.day-item.current { - background-color: var(--memos-stat-day-L1-bg); - filter: opacity(0.8); -} -body:not(.thino-default) .heatmap-date-picker-wrapper>.date-picker-day-container>.date-picker-day-content>.day-item.current .day-item-text { - color:var(--color-base-70); -} -body:is(.thino-frosted-style) div[data-type=thino_view] .modern#page-wrapper, -body:is(.thino-frosted-style) div[data-type=thino_view] .memo-wrapper, .thino-hover-popover .memo-wrapper, -body:is(.thino-frosted-style) .block-language-thino .thino-embed-container .memo-wrapper, -body:is(.thino-frosted-style) div[data-type=thino_view] .memo-editor-wrapper, .thino-editor-modal .memo-editor-wrapper -{ - --memos-memo-bg: transparent; - --memos-memo-bg-primary: transparent; -} - - -body:is(.thino-background-default,.custom-thino-background) div[data-type=thino_view] .modern#page-wrapper, -body:is(.thino-background-default,.custom-thino-background) div[data-type=thino_view] .memo-wrapper, .thino-hover-popover .memo-wrapper, -body:is(.thino-background-default,.custom-thino-background) .block-language-thino .thino-embed-container .memo-wrapper, -body:is(.thino-background-default,.custom-thino-background) div[data-type=thino_view] .memo-editor-wrapper, .thino-editor-modal .memo-editor-wrapper -{ - --memos-memo-bg: var(--bg-color-settings-0-1); - --memos-memo-bg-primary: var(--bg-color-settings-0-1); - -} -body:is(.thino-background-default,.thino-frosted-style,.custom-thino-background,.thino-background-color) div[data-type=thino_view] .modern#page-wrapper:is(.memos-chat-view,.memos-moments-view,.memos-list-view,.memos-table-view,.memos-calendar-view,.memos-waterfall-view) { - - background-color: transparent; - --thino-modern-secondary:transparent; - --thino-modern-primary:transparent; -} -body.thino-frosted-style-default div[data-type=thino_view] .modern#page-wrapper:is(.memos-chat-view,.memos-moments-view,.memos-list-view,.memos-table-view,.memos-calendar-view,.memos-waterfall-view) - - { - --thino-modern-primary: var(--bg-color-settings-0-1); - --thino-modern-secondary: transparent; - } - body.thino-frosted-style-default div[data-type=thino_view] .moments-view .thino-moment-wrapper { - border-radius: var(--radius-m); - background-color: var(--bg-color-settings-2); -} -body.thino-frosted-style-default div[data-type=thino_view] .moments-view .thino-moment-wrapper:after -{ - display:none; -} -body.thino-background-color div[data-type=thino_view].workspace-leaf-content -{ - --start-color: hsla( - var(--thino-modern-primary-h), - var(--thino-modern-primary-s), - var(--thino-modern-primary-l), - var(--thino-modern-primary-a) - ); - --end-color: hsla( - calc(var(--thino-modern-primary-h) + 30), - calc(var(--thino-modern-primary-s) + 5%), - calc(var(--thino-modern-primary-l) + 13%), - calc(var(--thino-modern-primary-a) * 0.8) - ); - background: linear-gradient(117deg, var(--start-color), var(--end-color)); - --background-primary:var(--bg-color-settings-2); - --memos-memo-bg:var(--bg-color-settings-0-1); - --memos-memo-border:var(--bg-color-settings-0-1); - } - -body:not(.thino-default) div[data-type=thino_view] .menu-btns-popup { - - background-color:var(--bg-color-settings-3); - backdrop-filter: blur(10px); -} -body:not:is(.thino-background-default,.custom-thino-background,.thino-frosted-style) div[data-type=thino_view] .memo-editor-wrapper>.memo-editor, .thino-editor-modal .memo-editor-wrapper>.memo-editor { - - background: linear-gradient(to bottom, var(--background-secondary), transparent); - -} - -div[data-type=thino_view] .memos-chat-view .memolist-wrapper .memolist-container .chat-view { - --memos-memo-bg: transparent; -} - -div[data-type=thino_view] .memos-chat-view .memolist-wrapper .memolist-container .chat-view:is(.fluent-style,.inline-style) .thino-bubble.right .wrap>.content:has(:is(.callout,img)) { - border: 1px solid var(--memos-memo-border); -} -div[data-type=thino_view] .memos-chat-view .memolist-wrapper .memolist-container .chat-view:is(.fluent-style,.inline-style) .thino-bubble.right .wrap>.content:has(:is(.callout,img)):before { -display:none; -} -body:not(.thino-default) div[data-type=thino_view].mobile-view .search-bar-container>.quickly-action-wrapper>.quickly-action-container -{ - background-color:var(--bg-color-settings-3); - backdrop-filter: blur(10px); -} -body:not(.thino-default) div[data-type=thino_view] .memo-wrapper>.memo-top-wrapper>.memo-top-right-wrapper>.btns-container>.more-action-btns-wrapper>.more-action-btns-container, -body:not(.thino-default) .thino-hover-popover .memo-wrapper>.memo-top-wrapper>.memo-top-right-wrapper>.btns-container>.more-action-btns-wrapper>.more-action-btns-container, -body:not(.thino-default) .block-language-thino .thino-embed-container .memo-wrapper>.memo-top-wrapper>.memo-top-right-wrapper>.btns-container>.more-action-btns-wrapper>.more-action-btns-container, -body:not(.thino-default) div[data-type=thino_view] .menu { - background-color:var(--bg-color-settings-3); - backdrop-filter: blur(10px); -} -div[data-type=thino_view].mobile-view .search-bar-container>.quickly-action-wrappe { - padding: 0px; - width: 275px; -} -div[data-type=thino_view].mobile-view .section-header-container>.memos-header-search-section .thino-inline-filter-container -{ - width: 275px; - -} - -div[data-type=thino_view] #cMenuToolbarModalBar .cMenuToolbarCommandItem { - - backdrop-filter: unset; - -} -div[data-type=thino_view] #cMenuToolbarModalBar .more-menu -{ - border:none; -} -div[data-type=thino_view] #cMenuToolbarModalBar.cMenuToolbarGlassAesthetic, -div[data-type=thino_view] #cMenuToolbarModalBar.cMenuToolbarGlassAesthetic~#cMenuToolbarPopoverBar -{ - backdrop-filter: unset; -} -div[data-type=thino_view].mobile-view .search-bar-container { - width: auto; -} -div[data-type=thino_view] .search-bar-container>.search-bar-inputer{ - - background-color: transparent!important; - padding:0; -} -div[data-type=thino_view].mobile-view .search-bar-container>.search-bar-inputer input:focus{ - background-color: var(--memos-bg-searchbar-lightgray); - } -div[data-type=thino_view] .daily-thinos-list-wrapper .daily-thinos-view-wrapper .daily-thinos-view-container .date-card-container>.date-container-details .details-text -{ - font-size:18px; -} - -div[data-type=thino_view].mobile-view .thino-inline-filter-container .btns-container -{ - flex-wrap: wrap; -} - -div[data-type=thino_view].mobile-view .memo-editor-wrapper, - .thino-editor-modal .memo-editor-wrapper -{ - padding:8px; -} - -body div[data-type='thino_view'] .memo-editor-wrapper:has(.cm-focused) { - - border: 1px solid var(--color-base-30); -} -div[data-type=thino_view] .user-banner-container>.userinfo-header-container>.userinfo-container .thino-user-icon -{ - background-color: transparent!important; - box-shadow:none; -} - -div[data-type=thino_view]:not(.mobile-view) .memos-moments-view .section-header-container.memos-header-container -{ - justify-content: flex-start; - height: 40px; - flex-wrap: nowrap; - margin-top: 0; - padding: 0 20px; -} -div[data-type=thino_view] .moments-view .moments-view-background-wrapper .moments-show-editor-btn -{ - top:20px; -} - -div[data-type=thino_view].mobile-view .search-bar-container>.quickly-action-wrapper>.quickly-action-container, -div[data-type=thino_view] .search-bar-container>.quickly-action-wrapper>.quickly-action-container, - .thino-canvas-filter-group .search-bar-container>.quickly-action-wrapper>.quickly-action-container { - - background-color:var(--color-base-20); - -} - -div[data-type=thino_view] .section-header-container>.memos-header-search-section .thino-inline-filter-container -{ - background-color:var(--color-base-20); - -} -div[data-type=thino_view] .modern input:not([type=checkbox]) -{ - border: 1px solid var(--background-modifier-border); -} - -div[data-type=thino_view].mobile-view .modern .content-wrapper:has(.moments-view:not(.show-editor)) .section-header-container, -div[data-type=thino_view] .content-wrapper:has(.moments-view:not(.show-editor)) .section-header-container { - /* position: absolute; */ - z-index:1; - width:calc(100% - 55px); -} - -div[data-type=thino_view] .memos-moments-view .filter-query-container { - z-index: 1; - padding: 6px 0 0 20px; - justify-content: flex-start; -} -div[data-type=thino_view] .memos-chat-view .filter-query-container { - -padding-bottom:20px; -padding-left:0px; - -} -div[data-type=thino_view] .moments-view .thino-moment-wrapper .thino-moment-container .thino-moment-user-content .memo-wrapper .memo-top-wrapper .btn.more-action-btn { - background-color: transparent; -} - - body:not(.day) div[data-type=thino_view] .memos-moments-view .filter-query-container:not(.hidden) + .memolist-wrapper { - margin-top: auto ; -} -div[data-type=thino_view]:not(.mobile-view) .memos-moments-view .section-header-container.memos-header-container:has(~.memo-editor-wrapper:not(.edit-ing)):has(~.filter-query-container:not(.hidden)) -{ - opacity: 1; -} -div[data-type=thino_view] .memos-moments-view .content-wrapper:not(:has(.edit-ing)) .memolist-wrapper { - - margin-top: -60px; - transition: all 0.2s linear; -} -body.is-mobile div[data-type=thino_view] .memos-moments-view .memolist-wrapper { - margin-top: 6px; -} -body.is-mobile div[data-type=thino_view] .view-header:has(+.view-content>.memos-moments-view) { - position: absolute; - background: transparent; - border: none; -} -body div[data-type=thino_view] .section-header-container>.memos-header-search-section >* -{ - border-color: transparent!important; -} -body.is-mobile div[data-type=thino_view] .moments-view .moments-view-background-wrapper .moments-show-editor-btn { - top: 68px; -} -body.is-mobile div[data-type=thino_view].mobile-view .search-bar-container>.search-bar-inputer input:focus -{ - background-color: transparent; -} - - -body.is-mobile div[data-type=thino_view] .memos-moments-view .filter-query-container:not(.hidden) -{ - margin-top: 30px; -} - -body.is-mobile div[data-type=thino_view] .memos-moments-view .memos-sidebar-wrapper -{ - margin-top: 48px; - height: calc(100% - 85px); - -} -body.is-mobile div[data-type=thino_view].mobile-view .tags-wrapper -{ - background-color: transparent; -} -body.is-mobile div[data-type=thino_view] .memo-content-text -{ - padding: 0 18px 0 0; -} -div[data-type=thino_view].mobile-view .modern#page-wrapper.memos-moments-view .content-wrapper .section-header-container .search-bar-container .search-bar-inputer -{ -max-width:280px; -} - -.share-memo-image-dialog .memo-content-text.markdown-rendered blockquote, -div[data-type=thino_view] .memo-content-text.markdown-rendered blockquote -{ - margin-inline-start: 0; - margin-inline-end: 0; -} -div[data-type=thino_view] .memolist-wrapper .memolist-container .table-view th -{ - min-width:auto; -} -div[data-type=thino_view] .memolist-wrapper .memolist-container .table-view th:has(.create-at-header-cell) { - min-width: 60px; -} -.thino-activation .thino-verify-component { - - background: hsla(var(--interactive-accent-hsl),0.2); - -} -div[data-type=thino_view] .user-banner-container>.userinfo-header-container>.userinfo-container .thino-user-info>.username-container>.user-pro-badge.activated -{ -background: var(--color-yellow) !important; -color:#000000a3!important; -padding: 2px 4px; -margin-top: -1em; -font-size:10px; -} - -/****thino 分享文字背景**/ - -body.share-thino-with-workspace-background .share-memo-image-dialog>.dialog-container>.dialog-content-container>.memo-container:is(.modern,.clean,.gradient)>.memo-background { - - background-image: var(--theme-background)!important; - background-size: cover; -} -body.theme-dark .share-memo-image-dialog>.dialog-container>.dialog-content-container>.memo-container:is(.modern,.clean,.gradient)>.memo-background { - - box-shadow: rgba(0, 0, 0, 0.15) 1.95px 1.95px 2.6px; -} - -body:is(.share-thino-with-thino-background,.share-thino-with-workspace-background, .custom-thino-share-background) .share-memo-image-dialog>.dialog-container>.dialog-content-container.clean .memo-container>.memo-background .property-image { - - display:none; - -} -body.share-thino-with-thino-background.theme-dark .share-memo-image-dialog>.dialog-container>.dialog-content-container>.memo-container:is(.modern,.clean,.gradient)>.memo-background { - - background-image: var(--thino-background-dark-custom)!important; - background-size: cover; - -} -body.share-thino-with-thino-background .share-memo-image-dialog>.dialog-container>.dialog-content-container>.memo-container:is(.modern,.clean,.gradient)>.memo-background { - - background-image: var(--thino-background-light-custom)!important; - background-size: cover; -} - -body.custom-thino-share-background .share-memo-image-dialog>.dialog-container>.dialog-content-container>.memo-container:is(.modern,.clean,.gradient)>.memo-background { - - background-image: var(--share-thino-background-light-custom)!important; - background-size: cover; - -} -body.custom-thino-share-background.theme-dark .share-memo-image-dialog>.dialog-container>.dialog-content-container>.memo-container:is(.modern,.clean,.gradient)>.memo-background { - - background-image: var(--share-thino-background-dark-custom)!important; - background-size: cover; - -} - -.share-memo-image-dialog>.dialog-container>.dialog-content-container>.memo-container:is(.modern,.clean,.gradient)>.memo-background>.memo-content-text, -.share-memo-image-dialog>.dialog-container>.dialog-content-container>.memo-container:is(.modern,.clean,.gradient)>.memo-background>.thino-user-header, -.share-memo-image-dialog>.dialog-container>.dialog-content-container>.memo-container:is(.modern,.clean,.gradient)>.memo-background>.watermark-container , -.share-memo-image-dialog>.dialog-container>.dialog-content-container>.memo-container:is(.modern,.clean,.gradient)>.memo-background>.thino-time-footer - { - background:rgba(255, 255, 255, var(--share-card-background-opacity-cp)); - -} - -.share-memo-image-dialog>.dialog-container>.dialog-content-container>.memo-container>.memo-background>.memo-content-text, -.share-memo-image-dialog>.dialog-container>.dialog-content-container>.memo-container>.memo-background>.thino-user-header, -.share-memo-image-dialog>.dialog-container>.dialog-content-container>.memo-container>.memo-background>.watermark-container , -.share-memo-image-dialog>.dialog-container>.dialog-content-container>.memo-container>.memo-background>.thino-time-footer - { - - overflow: hidden; -} - -.share-memo-image-dialog .memo-content-text p br { - display: block; - margin-top: 0.5em; - content: '\A'; - white-space: pre; -} - -.theme-dark .share-memo-image-dialog>.dialog-container>.dialog-content-container>.memo-container:is(.modern,.clean,.gradient)>.memo-background>.memo-content-text, -.theme-dark .share-memo-image-dialog>.dialog-container>.dialog-content-container>.memo-container:is(.modern,.clean,.gradient)>.memo-background>.thino-user-header, -.theme-dark .share-memo-image-dialog>.dialog-container>.dialog-content-container>.memo-container:is(.modern,.clean,.gradient)>.memo-background>.watermark-container , -.theme-dark .share-memo-image-dialog>.dialog-container>.dialog-content-container>.memo-container:is(.modern,.clean,.gradient)>.memo-background>.thino-time-footer -{ - background:rgba(24, 24, 24, var(--share-card-background-opacity-cp)); - overflow: hidden; - -} - -.share-memo-image-dialog>.dialog-container>.dialog-content-container.gradient .memo-container -{ - --start-color: hsla( - var(--share-card-background-color-h), - var(--share-card-background-color-s), - var(--share-card-background-color-l), - var(--share-card-background-color-a) - ); - --end-color: hsla( - calc(var(--share-card-background-color-h) - 30), - calc(var(--share-card-background-color-s) + 10%), - calc(var(--share-card-background-color-l) + 20%), - 0.8 - ); - background: linear-gradient(117deg, var(--start-color,#ffc3a0), var(--end-color,#ffafbd)); - - } -/**********thino 加滚动条***/ -body.memos-scroll div[data-type=thino_view] .memolist-wrapper .memolist-container .masonry-memolist { - max-height: 660px; - overflow: auto; -} - -/**********动态海报渐变显示***/ -body.memos-banner-gradient div[data-type=thino_view] .moments-view .moments-view-background-wrapper .moments-view-background { - mask-image: linear-gradient(to bottom,black 50%,transparent); - -webkit-mask-image: linear-gradient(to bottom,black 50%,transparent); -} -/**********隐藏头部信息***/ - -/* thino 隐藏头部信息 */ -body.memos-hide-header -div[data-type="thino_view"] - .view-header - :is(.view-header-nav-buttons, .view-header-title-container) { - display: none; -} - -body.memos-hide-header div[data-type="thino_view"] .view-header { - position: absolute; - right: 0; - background-color: transparent !important; - top: 12px; - transition: all 0.1s linear; - transform: translateY(-15px); -} - -body.memos-hide-header div[data-type="thino_view"] .view-actions { - position: relative; -} - -body.memos-hide-header div[data-type="thino_view"] .view-header:not(:hover) { - transform: translateY(calc(-1 * var(--header-height))); - transition: all 0.6s linear; -} - -div[data-type=thino_view] .moments-view .moments-view-background-wrapper .moments-view-background-overlay .moments-view-user-info .moments-view-user-icon, -div[data-type=thino_view] .moments-view .thino-moment-wrapper .thino-moment-icon -{ - background-color: transparent; -} - -div[data-type=thino_view] .memos-moments-view .search-bar-container>.quickly-action-wrapper, .thino-canvas-filter-group .search-bar-container>.quickly-action-wrapper { - top: 38px; - left: 220px; - right:0; -} -.is-mobile div[data-type=thino_view].tiny-view .section-header-container>.memos-header-search-section .memos-view-switcher-wrapper, -div[data-type=thino_view] .memos-header-container>.memos-header-search-section .memos-view-switcher-wrapper { - border-color: transparent; -} -/********moden 动态视图模式***/ -body.hider-memos-modern-banner div[data-type=thino_view]:not(.mobile-view) .memos-moments-view.modern .content-wrapper:has(.moments-view:not(.show-editor)) .section-header-container { - border-bottom: 1px solid var(--border-color); - padding-bottom: 8px; - margin-top: 9px; -} -body.hider-memos-modern-banner div[data-type=thino_view] .memos-moments-view.modern .moments-show-editor-btn { - top: 22px ; - right: 0px; -} -body.hider-memos-modern-banner div[data-type=thino_view] .moments-view .moments-view-background-wrapper -{ - position:unset; -} -body.hider-memos-modern-banner div[data-type=thino_view] .memos-moments-view.modern .search-bar-inputer { - width: 90%; -} - -body.hider-memos-modern-banner div[data-type=thino_view] .memos-moments-view.modern .search-bar-container>.quickly-action-wrapper { - right: 80px; -} -body.hider-memos-modern-banner div[data-type=thino_view] .memos-moments-view.modern .moments-view .moments-view-background-wrapper .moments-view-background { - display: none; -} -body.hider-memos-modern-banner div[data-type=thino_view] .memos-moments-view.modern .moments-view .moments-view-background-wrapper .moments-view-background-overlay { - margin-top: -20px; -} -body.hider-memos-modern-banner div[data-type=thino_view] .view-header:has(+.view-content>.memos-moments-view.modern) { - display: none; -} -body.hider-memos-modern-banner div[data-type=thino_view] .memos-moments-view.modern .moments-view .moments-view-background-wrapper .moments-view-background-overlay .moments-view-user-info .moments-view-user-icon -{ - width: 40px; - height: 40px; - margin-top: -12px;; -} - body:is(.custom-thino-background,.thino-background-color) div[data-type='thino_view'] .view-content - { - background: var(--bg-color-settings-0-1) ; - } - body.thino-frosted-style-default:not(.is-mobile) div[data-type='thino_view']:not(.mobile-view) .view-content , - body.thino-frosted-style:not(.is-mobile) div[data-type='thino_view']:not(.mobile-view) .view-content { - background: var(--bg-color-settings-2) ; - backdrop-filter: blur(20px); - width: 95% ; - height: 95% ; - margin: auto; - box-shadow: var( --window-shadow2); - border-radius:var(--radius-l); -} -body:is(.thino-frosted-style,.custom-thino-background,.thino-background-color) div[data-type=thino_view] #page-wrapper:is(.memos-chat-view,.memos-moments-view,.memos-list-view,.memos-table-view,.memos-calendar-view,.memos-waterfall-view) { - background: var(--bg-color-settings-2) ; - -} - -/**memos 输入框移到下方***/ -body.memos-inputbox div[data-type='thino_view']:not(.mobile-view) #page-wrapper .memo-editor-wrapper { - bottom: 0; - margin-bottom: -145px; - position: absolute; - padding:8px; -} -body.memos-inputbox div[data-type='thino_view']:not(.mobile-view) .memolist-wrapper.completed { - padding-bottom: 20px; -} -body.memos-inputbox div[data-type='thino_view']:not(.mobile-view) #page-wrapper > .content-wrapper { - height: calc(100% - 150px); -} - -body.memos-inputbox div[data-type='thino_view']:not(.mobile-view) .memolist-wrapper { - flex-direction: column-reverse; -} -body.memos-inputbox div[data-type=thino_view] .memolist-wrapper .memolist-container .list-view .masonry-memolist-grid_column { - - flex-direction: column-reverse; -} -body.memos-inputbox div[data-type=thino_view] .common-editor-wrapper .common-editor-inputer -{ - min-height: 78px; -} - - -/* ==============Commander================ */ - -.cmdr.titlebar-button{ - float: left; - left: 100px; -} - -/* =============recent files=============== */ - -/**recent file **/ -body.remove-file-icons .workspace-leaf-content[data-type="recent-files"] .view-content { - padding: unset; -} - -body.remove-file-icons:not(.remove-arrow) .nav-folder.mod-root>.nav-folder-children>.nav-file { - padding-left: 16px; -} -body.remove-file-icons.remove-arrow .nav-folder.mod-root { - padding-left: 4px; -} -.workspace-leaf-content[data-type="recent-files"] .view-content { - padding: 3px 0 3px 3px; -} -.workspace-leaf-content[data-type="recent-files"] .nav-folder.mod-root { - height: fit-content; -} - -/**end recent file **/ -/* =============Db folder=============== */ - -/**db folder*/ -.database-plugin__cell_size_normal div.dataview-error-box { - min-height:auto; -} -.database-plugin__cell_size_normal .database-plugin__tr .data-input { - padding: 0; - flex: 0; - font-size: 0.9em; -} -.database-plugin__cell_size_normal .database-plugin__tr .data-input .markdown-preview-view { - padding:0px; - -} -.database-plugin__cell_size_normal .database-plugin__tr .database-plugin__td .database-plugin__md_cell { - padding: 0; -} -.database-plugin__cell_size_normal .data-input > * -{ - align-items: center; -} -.database-plugin__cell_size_normal .data-input > div -{ - display: flex;; - align-items: center; -} - -.data-input.database-plugin__calendar { - flex: 0; - cursor: pointer; -} - -div.react-datepicker-wrapper { - flex: 0; -} -.data-input.text-align-right { - flex: 0; -} -.database-plugin__td :is(.cell-padding, .data-input):empty::before { - content: "✏️"; - text-align: center; - color: hsla(var(--interactive-accent-hsl),0.8); - pointer-events: none; -} -.database-plugin__markdown-preview-view { - padding: 0; -} -.database-plugin__markdown-preview-view p{ - margin-block-start: 0; - margin-block-end: 0; -} -.database-plugin__tr .database-plugin__td { - background-color: transparent; -} -.database-plugin__tr .database-plugin__td .data-input { - background-color: transparent; -} -.database-plugin__table .database-plugin__tr:nth-child(odd) { - background-color: var(--table-background-color-odd); -} - -.database-plugin__td input[type="checkbox"] { - border: 1px dashed currentColor; -} -.database-plugin__td input[type="checkbox"]:checked { - border: none; -} -.database-plugin__td .database-plugin__checkbox input[type="checkbox"]:checked::before { - transform: scale(0); -} - - -/* =============folder tree===================== */ - -.oz-folders-tree-wrapper .oz-folder-contents { - border-left: 1px solid var(--background-modifier-border); -} -.oz-folders-tree-wrapper .file-tree-header-fixed { - background-color: transparent; -} -body.hide-titlebar-close-btn.hide-left-ribbon-retention-drawer .file-tree-plugin-view .oz-nav-action-button { - margin-left: 20px!important; -} -.file-tree-plugin-view .oz-flex-container { - margin-top: -6px; -} -.file-tree-plugin-view .oz-folders-tree-wrapper{ - margin-top: -8px; -} -/* ================================== */ -/* ============== webpage export html ============= */ -/* ================================== */ - -.webpage-container { - --banner-height:300px; - --banner-internal-embed-height:200px; - --banner-preview-embed-height:120px; - } - -body.color-scheme-options-simplicity-topaz.theme-dark.background-settings-workplace-background-image .webpage-container::before { - filter: blur(var(--blur-depth)) brightness(calc(var(--brightness-4-bg) - 0.5)) saturate(var(--saturate-4-bg)); -} -body.background-settings-workplace-background-image.theme-light .webpage-container::before, -body.background-settings-workplace-background-image.theme-dark .webpage-container::before { - background-image: var(--theme-background); - background-size: cover; - filter: blur(var(--blur-depth)) brightness(var(--brightness-4-bg)) saturate(var(--saturate-4-bg)); -} -body.background-settings-workplace-background-image.background-settings-workplace-waves2-light.theme-light .webpage-container::before, -body.background-settings-workplace-background-image.background-settings-workplace-waves2.theme-dark .webpage-container:before { - content: ""; - position: fixed; - height: auto; - width: 300%; - top: 75%; - left: -25%; - background-image: unset; - -webkit-mask-image: var(--theme-background); - background-size: 100% 100%; - opacity: 0.7; - filter: blur(var(--blur-depth)) brightness(var(--brightness-4-bg)) saturate(var(--saturate-4-bg)); - background-color: var(--wave2-background-color); -} -body.background-settings-workplace-background-image .webpage-container::before { - content: ''; - display: block; - position: absolute; - top: -37px; - right: -15px; - bottom: 0; - left: -15px; -} - -body.background-settings-workplace-background-image.background-settings-workplace-waves-light.theme-light .webpage-container::before, -body.background-settings-workplace-background-image.background-settings-workplace-waves.theme-dark .webpage-container::before { - content: ""; - position: fixed; - height: auto; - width: 300%; - transform: rotate(180deg); - top: 75%; - left: -25%; - background-image: unset; - -webkit-mask-image: var(--theme-background); - background-size: 100% 100%; - opacity: 0.7; - filter: blur(var(--blur-depth)) brightness(var(--brightness-4-bg)) saturate(var(--saturate-4-bg)); - background-color: var(--wave-background-color); -} - -.document-container :is(.markdown-preview-view,.markdown-rendered),.document-container .markdown-source-view { - background-color: var(--background-primary)!important; -} - -/* ================================== */ -/* ============== quiet-outline ============= */ -/* ================================== */ - -/**quiet outline**/ -body.quiet-outline-optimize .workspace-leaf-content[data-type=quiet-outline] .view-content { - padding: unset; -} -body.quiet-outline-optimize .workspace-leaf-content[data-type=quiet-outline] .n-slider .n-slider-rail { - background-color: var(--background-secondary-alt); - box-shadow: 0 3px 5px var(--background-modifier-box-shadow); -} -body.quiet-outline-optimize .workspace-leaf-content[data-type=quiet-outline] .n-slider .n-slider-rail .n-slider-rail__fill { - background-color: var(--background-modifier-border); -} -body.quiet-outline-optimize .workspace-leaf-content[data-type=quiet-outline] .n-slider .n-slider-dots .n-slider-dot { - background-color: var(--background-primary); - border: 2px solid var(--background-modifier-border); -} -body.quiet-outline-optimize .workspace-leaf-content[data-type=quiet-outline] .n-slider .n-slider-dots .n-slider-dot.n-slider-dot--active { - border: 2px solid var(--interactive-accent); -} - - -body.quiet-outline-optimize .workspace-leaf-content[data-type=quiet-outline] .n-button { - width: 32px; - height: 32px; - background-color: var(--background-secondary-alt); - border: 0px; - border-radius: var(--radius-l); -} -body.quiet-outline-optimize .workspace-leaf-content[data-type=quiet-outline] .n-button .n-button__icon svg { - display: flex; - align-items: center; - justify-content: center; -} -body.quiet-outline-optimize .workspace-leaf-content[data-type=quiet-outline] .n-button .n-button__border, -body.quiet-outline-optimize .workspace-leaf-content[data-type=quiet-outline] .n-button .n-button__state-border { - display: none; -} - -body.quiet-outline-optimize .workspace-leaf-content[data-type=quiet-outline] .quiet-outline .n-tree-node-content__text p { - color:var(--text-normal); -} - - -body.quiet-outline-optimize .workspace-leaf-content[data-type=quiet-outline] .quiet-outline { - padding-top: 10px; - padding-bottom: 28px; - margin-bottom: 5px; - border-radius: var(--radius-l); -} - -body.quiet-outline-optimize .workspace-leaf-content[data-type=quiet-outline] .quiet-outline .function-bar > :first-child { - margin-right: 8px; -} -body.quiet-outline-optimize .workspace-leaf-content[data-type=quiet-outline] .quiet-outline .level-2 .n-tree-node-indent, -body.quiet-outline-optimize .workspace-leaf-content[data-type=quiet-outline] .quiet-outline .level-3 .n-tree-node-indent:first-child, -body.quiet-outline-optimize .workspace-leaf-content[data-type=quiet-outline] .quiet-outline .level-4 .n-tree-node-indent:first-child, -body.quiet-outline-optimize .workspace-leaf-content[data-type=quiet-outline] .quiet-outline .level-5 .n-tree-node-indent:first-child, -body.quiet-outline-optimize .workspace-leaf-content[data-type=quiet-outline] .quiet-outline .level-6 .n-tree-node-indent:first-child { - border-right: 1px solid rgb(var(--accent-1-rgb),0.5) ; -} -body.quiet-outline-optimize .workspace-leaf-content[data-type=quiet-outline] .quiet-outline .level-3 .n-tree-node-indent, -body.quiet-outline-optimize .workspace-leaf-content[data-type=quiet-outline] .quiet-outline .level-4 .n-tree-node-indent:nth-child(2), -body.quiet-outline-optimize .workspace-leaf-content[data-type=quiet-outline] .quiet-outline .level-5 .n-tree-node-indent:nth-child(2), -body.quiet-outline-optimize .workspace-leaf-content[data-type=quiet-outline] .quiet-outline .level-6 .n-tree-node-indent:nth-child(2) { - border-right: 1px solid rgb(var(--accent-2-rgb),0.5) ; -} -body.quiet-outline-optimize .workspace-leaf-content[data-type=quiet-outline] .quiet-outline .level-4 .n-tree-node-indent, -body.quiet-outline-optimize .workspace-leaf-content[data-type=quiet-outline] .quiet-outline .level-5 .n-tree-node-indent:nth-child(3), -body.quiet-outline-optimize .workspace-leaf-content[data-type=quiet-outline] .quiet-outline .level-6 .n-tree-node-indent:nth-child(3) { - border-right: 1px solid rgb(var(--accent-3-rgb),0.5) ; -} -body.quiet-outline-optimize .workspace-leaf-content[data-type=quiet-outline] .quiet-outline .level-5 .n-tree-node-indent, -body.quiet-outline-optimize .workspace-leaf-content[data-type=quiet-outline] .quiet-outline .level-6 .n-tree-node-indent:nth-child(4) { - border-right: 1px solid rgb(var(--accent-4-rgb),0.5) ; -} -body.quiet-outline-optimize .workspace-leaf-content[data-type=quiet-outline] .quiet-outline .level-6 .n-tree-node-indent { - border-right: 1px solid rgb(var(--accent-5-rgb),0.5) ; -} -body.quiet-outline-optimize .workspace-leaf-content[data-type=quiet-outline] .n-tree.n-tree--block-line .n-tree-node:not(.n-tree-node--disabled):hover { - background-color: hsla(var(--interactive-accent-hsl),0.2) -} -body.quiet-outline-optimize .workspace-leaf-content[data-type=quiet-outline] .n-tree.n-tree--block-line .n-tree-node:not(.n-tree-node--disabled):hover p { - color: var(--text-accent-hover); -} - -body.quiet-outline-optimize .workspace-leaf-content[data-type=quiet-outline] .quiet-outline .n-tree-node--selectable.located p { - color: var(--text-accent-hover); -} -body.quiet-outline-optimize .workspace-leaf-content[data-type=quiet-outline] .quiet-outline .n-tree-node--selected p { - color: var(--text-accent-hover); - font-weight: 600; - background-color: hsla(var(--interactive-accent-hsl),0.2) -} - -body.quiet-outline-optimize .workspace-leaf-content[data-type=quiet-outline] .n-input { - height: 32px; - background-color: var(--background-primary); - border-radius: var(--radius-l); -} -body.quiet-outline-optimize .workspace-leaf-content[data-type=quiet-outline] .n-input .n-input__border { - border: 0; -} -body.quiet-outline-optimize .workspace-leaf-content[data-type=quiet-outline] .n-input:not(.n-input--disabled):hover .n-input__state-border, -body.quiet-outline-optimize .workspace-leaf-content[data-type=quiet-outline] .n-input:not(.n-input--disabled).n-input--focus .n-input__state-border { - border: 0; - box-shadow: unset; -} -body.quiet-outline-optimize .workspace-leaf-content[data-type=quiet-outline] .n-input .n-input__placeholder { - display: none; -} -body.quiet-outline-optimize .workspace-leaf-content[data-type=quiet-outline] .n-input .n-input__input input { - caret-color: var(--interactive-accent); -} -body.quiet-outline-optimize .workspace-leaf-content[data-type=quiet-outline] .n-input .n-input__input input::placeholder { - color: var(--text-faint); -} -/* #end quiet outline */ - -/* ============ */ -/*table-generatorn*/ -/* ============ */ - -.table-generator { - animation:0.2s popup forwards; - border-radius:10px; - width: auto!important; - box-shadow: 2px 2px 12px rgba(0, 0, 0, 0.1); -} - -.table-generator-view { - border: none !important; -} -.input-table-generator { - font-size: small; -} -.input-table-generator input { - outline-style: none; - border: 1px solid var(--background-modifier-border)!important; - border-radius: 3px; -} -.table-generator button { - border: 1px solid var(--background-modifier-border)!important; - border-radius: 3px; -} - -/* ============ */ -/*image position*/ -/* ============ */ -img[alt$="left"]:not([class*="emoji"]), -img[alt$="Left"]:not([class*="emoji"]), -img[alt$="LEFT"]:not([class*="emoji"]), -img[alt$="L"]:not([class*="emoji"]), -.markdown-source-view.mod-cm6 img[alt$="left"]:not([class*="emoji"]), -.markdown-source-view.mod-cm6 img[alt$="Left"]:not([class*="emoji"]), -.markdown-source-view.mod-cm6 img[alt$="LEFT"]:not([class*="emoji"]), -.markdown-source-view.mod-cm6 img[alt$="L"]:not([class*="emoji"]), -.internal-embed.image-embed.is-loaded[alt$="left"] img[alt$="left"]:not([class*="emoji"]), -.internal-embed.image-embed.is-loaded[alt$="Left"] img[alt$="Left"]:not([class*="emoji"]), -.internal-embed.image-embed.is-loaded[alt$="LEFT"] img[alt$="LEFT"]:not([class*="emoji"]), -.internal-embed.image-embed.is-loaded[alt$="L"] img[alt$="L"]:not([class*="emoji"]), -body:not(.image-zoom) .view-content img[alt$="left"]:not([class*="emoji"]), -body:not(.image-zoom) .view-content img[alt$="Left"]:not([class*="emoji"]), -body:not(.image-zoom) .view-content img[alt$="LEFT"]:not([class*="emoji"]), -body:not(.image-zoom) .view-content img[alt$="L"]:not([class*="emoji"]) { - margin: auto !important; - margin-left: 0 !important; - display: block; -} - -img[alt$="right"]:not([class*="emoji"]), -img[alt$="Right"]:not([class*="emoji"]), -img[alt$="RIGHT"]:not([class*="emoji"]), -img[alt$="R"]:not([class*="emoji"]), -.markdown-source-view.mod-cm6 img[alt$="right"]:not([class*="emoji"]), -.markdown-source-view.mod-cm6 img[alt$="Right"]:not([class*="emoji"]), -.markdown-source-view.mod-cm6 img[alt$="RIGHT"]:not([class*="emoji"]), -.markdown-source-view.mod-cm6 img[alt$="R"]:not([class*="emoji"]), -.internal-embed.image-embed.is-loaded[alt$="right"] img[alt$="right"]:not([class*="emoji"]), -.internal-embed.image-embed.is-loaded[alt$="Right"] img[alt$="Right"]:not([class*="emoji"]), -.internal-embed.image-embed.is-loaded[alt$="RIGHT"] img[alt$="RIGHT"]:not([class*="emoji"]), -.internal-embed.image-embed.is-loaded[alt$="R"] img[alt$="R"]:not([class*="emoji"]), -body:not(.image-zoom) .view-content img[alt$="right"]:not([class*="emoji"]), -body:not(.image-zoom) .view-content img[alt$="Right"]:not([class*="emoji"]), -body:not(.image-zoom) .view-content img[alt$="RIGHT"]:not([class*="emoji"]), -body:not(.image-zoom) .view-content img[alt$="R"]:not([class*="emoji"]) { - margin: auto !important; - margin-right: 0 !important; - display: block; -} - -img[alt$="centre"]:not([class*="emoji"]), -img[alt$="center"]:not([class*="emoji"]), -img[alt$="CENTRE"]:not([class*="emoji"]), -img[alt$="CENTER"]:not([class*="emoji"]), -img[alt$="Center"]:not([class*="emoji"]), -img[alt$="Centre"]:not([class*="emoji"]), -img[alt$="C"]:not([class*="emoji"]), -.markdown-source-view.mod-cm6 img[alt$="centre"]:not([class*="emoji"]), -.markdown-source-view.mod-cm6 img[alt$="center"]:not([class*="emoji"]), -.markdown-source-view.mod-cm6 img[alt$="Centre"]:not([class*="emoji"]), -.markdown-source-view.mod-cm6 img[alt$="Center"]:not([class*="emoji"]), -.markdown-source-view.mod-cm6 img[alt$="CENTRE"]:not([class*="emoji"]), -.markdown-source-view.mod-cm6 img[alt$="CENTER"]:not([class*="emoji"]), -.markdown-source-view.mod-cm6 img[alt$="C"]:not([class*="emoji"]), -.internal-embed.image-embed.is-loaded[alt$="centre"] img[alt$="right"]:not([class*="emoji"]), -.internal-embed.image-embed.is-loaded[alt$="center"] img[alt$="Right"]:not([class*="emoji"]), -.internal-embed.image-embed.is-loaded[alt$="Centre"] img[alt$="RIGHT"]:not([class*="emoji"]), -.internal-embed.image-embed.is-loaded[alt$="Center"] img[alt$="R"]:not([class*="emoji"]), -.internal-embed.image-embed.is-loaded[alt$="CENTRE"] img[alt$="Right"]:not([class*="emoji"]), -.internal-embed.image-embed.is-loaded[alt$="CENTER"] img[alt$="RIGHT"]:not([class*="emoji"]), -.internal-embed.image-embed.is-loaded[alt$="C"] img[alt$="R"]:not([class*="emoji"]), -body:not(.image-zoom) .view-content img[alt$="centre"]:not([class*="emoji"]), -body:not(.image-zoom) .view-content img[alt$="center"]:not([class*="emoji"]), -body:not(.image-zoom) .view-content img[alt$="Centre"]:not([class*="emoji"]), -body:not(.image-zoom) .view-content img[alt$="Center"]:not([class*="emoji"]), -body:not(.image-zoom) .view-content img[alt$="CENTRE"]:not([class*="emoji"]), -body:not(.image-zoom) .view-content img[alt$="CENTER"]:not([class*="emoji"]), -body:not(.image-zoom) .view-content img[alt$="C"]:not([class*="emoji"]) { - margin: auto !important; - display: block; -} - -img[alt$="inline"]:not([class*="emoji"]), -img[alt$="Inline"]:not([class*="emoji"]), -img[alt$="INLINE"]:not([class*="emoji"]), -img[alt$="inl"]:not([class*="emoji"]), -img[alt$="INL"]:not([class*="emoji"]), -img[alt$="Inl"]:not([class*="emoji"]) { - display: inline !important; - padding: 0.05em 0.05em !important; - vertical-align: bottom; -} - -img[alt$="inlineL"]:not([class*="emoji"]), -img[alt$="InlineL"]:not([class*="emoji"]), -img[alt$="INLINEL"]:not([class*="emoji"]), -img[alt$="inlL"]:not([class*="emoji"]), -img[alt$="INLL"]:not([class*="emoji"]), -img[alt$="InlL"]:not([class*="emoji"]) { - float: left; - padding: 0 0.05em 0.05em 0 !important; -} - -img[alt$="inlineR"]:not([class*="emoji"]), -img[alt$="InlineR"]:not([class*="emoji"]), -img[alt$="INLINER"]:not([class*="emoji"]), -img[alt$="inlR"]:not([class*="emoji"]), -img[alt$="INLR"]:not([class*="emoji"]), -img[alt$="InlR"]:not([class*="emoji"]) { - float: right; - padding: 0 0 0.05em 0.05em !important; -} - -img.excalidraw-svg-right, -img.excalidraw-svg-Right, -img.excalidraw-svg-RIGHT, -img.excalidraw-svg-R { - float: right !important; -} - -img.excalidraw-svg-left, -img.excalidraw-svg-Left, -img.excalidraw-svg-LEFT, -img.excalidraw-svg-L { - float: left !important; -} - -img.excalidraw-svg-right, -img.excalidraw-svg-Right, -img.excalidraw-svg-RIGHT, -img.excalidraw-svg-R, -img.excalidraw-svg-left, -img.excalidraw-svg-Left, -img.excalidraw-svg-LEFT, -img.excalidraw-svg-L { - display: table; - width: 100% -} - -/* img captions */ -/* modified from Discordian theme by @radekkozak */ -:is(.markdown-preview-view,.markdown-rendered,.markdown-source-view.mod-cm6.is-live-preview) .image-embed[src$="center"], -:is(.markdown-preview-view,.markdown-rendered,.markdown-source-view.mod-cm6.is-live-preview) .image-embed[src$="centre"], -:is(.markdown-preview-view,.markdown-rendered,.markdown-source-view.mod-cm6.is-live-preview) .image-embed[src$="Centre"], -:is(.markdown-preview-view,.markdown-rendered,.markdown-source-view.mod-cm6.is-live-preview) .image-embed[src$="Center"], -:is(.markdown-preview-view,.markdown-rendered,.markdown-source-view.mod-cm6.is-live-preview) .image-embed[src$="CENTRE"], -:is(.markdown-preview-view,.markdown-rendered,.markdown-source-view.mod-cm6.is-live-preview) .image-embed[src$="CENTER"], -:is(.markdown-preview-view,.markdown-rendered,.markdown-source-view.mod-cm6.is-live-preview) .image-embed[src$="C"] { - clear: both; - margin: 0 auto !important; - width: fit-content; - display: block; -} - -:is(.markdown-preview-view,.markdown-rendered,.markdown-source-view.mod-cm6.is-live-preview) .image-embed[src$="center"]::after, -:is(.markdown-preview-view,.markdown-rendered,.markdown-source-view.mod-cm6.is-live-preview) .image-embed[src$="centre"]::after, -:is(.markdown-preview-view,.markdown-rendered,.markdown-source-view.mod-cm6.is-live-preview) .image-embed[src$="Centre"]::after, -:is(.markdown-preview-view,.markdown-rendered,.markdown-source-view.mod-cm6.is-live-preview) .image-embed[src$="Center"]::after, -:is(.markdown-preview-view,.markdown-rendered,.markdown-source-view.mod-cm6.is-live-preview) .image-embed[src$="CENTRE"]::after, -:is(.markdown-preview-view,.markdown-rendered,.markdown-source-view.mod-cm6.is-live-preview) .image-embed[src$="CENTER"]::after, -:is(.markdown-preview-view,.markdown-rendered,.markdown-source-view.mod-cm6.is-live-preview) .image-embed[src$="C"]::after { - content: attr(alt); - margin: 0.5rem 0; - display: block; - caption-side: bottom; - text-align: center; - font-size: 0.85rem; -} - -:is(.markdown-preview-view,.markdown-rendered,.markdown-source-view.mod-cm6.is-live-preview) .image-embed[src$="left"], -:is(.markdown-preview-view,.markdown-rendered,.markdown-source-view.mod-cm6.is-live-preview) .image-embed[src$="LEFT"], -:is(.markdown-preview-view,.markdown-rendered,.markdown-source-view.mod-cm6.is-live-preview) .image-embed[src$="Left"], -:is(.markdown-preview-view,.markdown-rendered,.markdown-source-view.mod-cm6.is-live-preview) .image-embed[src$="L"] { - position: relative; - float: left; - margin: 0.5rem 1rem 0.5rem 0 !important; - clear: both; - display: table; -} - -:is(.markdown-preview-view,.markdown-rendered,.markdown-source-view.mod-cm6.is-live-preview) .image-embed[src$="left"]::after, -:is(.markdown-preview-view,.markdown-rendered,.markdown-source-view.mod-cm6.is-live-preview) .image-embed[src$="LEFT"]::after, -:is(.markdown-preview-view,.markdown-rendered,.markdown-source-view.mod-cm6.is-live-preview) .image-embed[src$="Left"]::after, -:is(.markdown-preview-view,.markdown-rendered,.markdown-source-view.mod-cm6.is-live-preview) .image-embed[src$="L"]::after { - content: attr(alt); - padding: 0 0.5rem; - margin: 0.5rem 0 1rem; - display: table-caption; - caption-side: bottom; - text-align: center; - font-size: 0.85rem; -} - -:is(.markdown-preview-view,.markdown-rendered,.markdown-source-view.mod-cm6.is-live-preview) .image-embed[src$="right"], -:is(.markdown-preview-view,.markdown-rendered,.markdown-source-view.mod-cm6.is-live-preview) .image-embed[src$="RIGHT"], -:is(.markdown-preview-view,.markdown-rendered,.markdown-source-view.mod-cm6.is-live-preview) .image-embed[src$="Right"], -:is(.markdown-preview-view,.markdown-rendered,.markdown-source-view.mod-cm6.is-live-preview) .image-embed[src$="R"] { - position: relative; - float: right; - margin: 0.5rem 0 0.5rem 1rem !important; - clear: both; - display: table; -} - -:is(.markdown-preview-view,.markdown-rendered,.markdown-source-view.mod-cm6.is-live-preview) .image-embed[src$="right"]::after, -:is(.markdown-preview-view,.markdown-rendered,.markdown-source-view.mod-cm6.is-live-preview) .image-embed[src$="RIGHT"]::after, -:is(.markdown-preview-view,.markdown-rendered,.markdown-source-view.mod-cm6.is-live-preview) .image-embed[src$="Right"]::after, -:is(.markdown-preview-view,.markdown-rendered,.markdown-source-view.mod-cm6.is-live-preview) .image-embed[src$="R"]::after { - content: attr(alt); - padding: 0 0.5rem; - margin: 0.5rem 0 1rem; - display: table-caption; - caption-side: bottom; - text-align: center; - font-size: 0.85rem; -} - -:is(.markdown-preview-view,.markdown-rendered,.markdown-source-view.mod-cm6.is-live-preview) .image-embed[src$="inline"], -:is(.markdown-preview-view,.markdown-rendered,.markdown-source-view.mod-cm6.is-live-preview) .image-embed[src$="Inline"], -:is(.markdown-preview-view,.markdown-rendered,.markdown-source-view.mod-cm6.is-live-preview) .image-embed[src$="INLINE"], -:is(.markdown-preview-view,.markdown-rendered,.markdown-source-view.mod-cm6.is-live-preview) .image-embed[src$="inl"], -:is(.markdown-preview-view,.markdown-rendered,.markdown-source-view.mod-cm6.is-live-preview) .image-embed[src$="INL"], -:is(.markdown-preview-view,.markdown-rendered,.markdown-source-view.mod-cm6.is-live-preview) .image-embed[src$="Inl"] { - clear: both; - margin: 0 auto !important; - width: fit-content; - display: inline-table; -} - -:is(.markdown-preview-view,.markdown-rendered,.markdown-source-view.mod-cm6.is-live-preview) .image-embed[src$="inline"]::after, -:is(.markdown-preview-view,.markdown-rendered,.markdown-source-view.mod-cm6.is-live-preview) .image-embed[src$="Inline"]::after, -:is(.markdown-preview-view,.markdown-rendered,.markdown-source-view.mod-cm6.is-live-preview) .image-embed[src$="INLINE"]::after, -:is(.markdown-preview-view,.markdown-rendered,.markdown-source-view.mod-cm6.is-live-preview) .image-embed[src$="inl"]::after, -:is(.markdown-preview-view,.markdown-rendered,.markdown-source-view.mod-cm6.is-live-preview) .image-embed[src$="INL"]::after, -:is(.markdown-preview-view,.markdown-rendered,.markdown-source-view.mod-cm6.is-live-preview) .image-embed[src$="Inl"]::after { - content: attr(alt); - padding: 0 0.7em; - margin: 0.5rem 0; - display: block; - caption-side: bottom; - text-align: center; - font-size: 0.85rem; -} - -/* image-grid-1 */ -/* adapted from https://github.com/Lithou/Sandbox/blob/main/.obsidian/snippets/pub-Image%20Flags.css */ -body span[alt*="+grid"] { - display: table-cell; - vertical-align: middle; - padding: 5px; -} - -.markdown-source-view.is-live-preview .internal-embed.image-embed.is-loaded[alt*="+grid"] { - display: inline-table; - vertical-align: middle; - max-width: 25%; -} - -/* image-background */ -.markdown-preview-view img[alt^="background"] { - width: 100%; - margin: 0px auto; - position: absolute; - top: 0; - left: 0; - -webkit-mask-image: -webkit-gradient(linear, left top, left bottom, from(rgba(0,0,0,1)), to(rgba(0,0,0,0))); - mask-image: linear-gradient(to bottom, rgba(0,0,0,1), rgba(0,0,0,0)); - z-index: -1; - background-size:cover; -} -.is-live-preview img[alt^="background"] { - width: 100%; - margin: 0px auto; - position: absolute; - top: 0; - left: 0; - -webkit-mask-image: -webkit-gradient(linear, left top, left bottom, from(rgba(0,0,0,1)), to(rgba(0,0,0,0))); - mask-image: linear-gradient(to bottom, rgba(0,0,0,1), rgba(0,0,0,0)); - opacity: 0.35; - z-index: -1; -} - - -/*===================================================*/ -/*================== PRESENTATION =================*/ -/*===================================================*/ -/* -.slides-container li { - line-height: 1.05em; -} - -.reveal ol, -.reveal dl, -.reveal ul { - margin: 0.3em 0 0 1em; -} - -.slides-container ol>li { - border-left: 3px solid var(--list-ol-block-color); -} - -.slides-container ul>li:not(.task-list-item) { - border-left: 3px solid var(--list-ul-block-color); -} -*/ -/*===================================================*/ -/*================== MOBILE =====================*/ -/*===================================================*/ -.is-mobile :is(.markdown-preview-view,.markdown-rendered) { - padding: 0 18px 0 21px; -} - -.is-mobile :is(.markdown-preview-view,.markdown-rendered) ol:not(.contains-task-list)>li:not(.task-list-item), -.is-mobile .markdown-preview-view:not(.kanban) ul>li:not(.task-list-item) { - margin-left: 0; -} - -/*collapse allows*/ -body:not(.default-icons).is-mobile h1 div.heading-collapse-indicator.collapse-indicator, -body:not(.default-icons).is-mobile h2 div.heading-collapse-indicator.collapse-indicator, -body:not(.default-icons).is-mobile div.heading-collapse-indicator.collapse-indicator { - padding-left: 2px; -} - -body:not(.default-icons).is-mobile div.is-collapsed div.heading-collapse-indicator.collapse-indicator { - transform: translateX(-11px) translateY(16px) rotate(-90deg); -} - -body:not(.default-icons).is-mobile div.is-collapsed h1 div.heading-collapse-indicator.collapse-indicator, -body:not(.default-icons).is-mobile div.is-collapsed h2 div.heading-collapse-indicator.collapse-indicator { - transform: translateX(-2px) translateY(6px) rotate(-90deg); -} - -/*main body*/ -.is-mobile :is(.markdown-preview-view,.markdown-rendered) :is(.markdown-preview-section,.markdown-rendered), -.is-mobile .markdown-source-view .CodeMirror, -.is-mobile :is(.markdown-preview-view,.markdown-rendered) .markdown-preview-sizer { - text-align: left; -} - -/*strong*/ -.is-mobile :is(h1,h2,h3,h4,h5,h6,b), -.is-mobile .view-header-title { - font-weight: bold; -} - -.is-mobile .view-header-title { - line-height: 37px; - -webkit-mask-image: unset; - text-overflow: ellipsis; -} - -.is-mobile .view-header-title-container, -.is-mobile .view-header { - height: 40px; -} - -.is-mobile .view-action { - margin: 0 5px; -} - -.is-mobile span.cm-strong, -.is-mobile :not(font)>strong, -.is-mobile .cm-highlight.cm-strong { - color: var(--accent-strong); - font-weight: bold; -} - -/*image*/ -body:not(.image-zoom).is-mobile .markdown-reading-view img:not([class*="emoji"]):active { - cursor: initial; - position: initial; - object-fit: initial; - height: initial; - width: initial; - padding: initial; - top: initial; - left: initial; - right: initial; - bottom: initial; - transform: initial; - z-index: initial; - background-image: initial; - margin: initial; - max-width: 100%; -} - -.is-mobile .workspace-drawer-active-tab-container { - padding: 0; -} - - - -/*======================= -===custom buttons by cuman==== -========================*/ -/*便签动画效果*/ -@keyframes shake { /* 水平抖动,核心代码 */ - 10%, 90% { transform: translate3d(-1px, 0, 0); } - 20%, 80% { transform: translate3d(+2px, 0, 0); } - 30%, 70% { transform: translate3d(-4px, 0, 0); } - 40%, 60% { transform: translate3d(+4px, 0, 0); } - 50% { transform: translate3d(-4px, 0, 0); } -} -:is(.markdown-preview-view,.markdown-rendered) .stickies:hover{ - animation: shake 800ms ease-in-out; -} - -/*按钮颜色*/ -/*图标按钮*/ -button:not(.clickable-icon) { - box-shadow: none; -} -button:not(.clickable-icon):hover { - box-shadow: var(--input-shadow-hover); -} -body.style-options-for-buttons-plugin button.circle_btn { - box-shadow: none; - font-size: 12px; - word-break: keep-all; - margin: 4px; - padding: 0px; - height: 50px; - /* border-radius:50%; */ - position: relative; - border: 0; - display: inline-grid; - text-align: center; - justify-items: center; -} -/* blank 透明按钮*/ -body.style-options-for-buttons-plugin button.blank { - box-shadow: none; - background: #fff0f000; - padding: 0; -} -body.style-options-for-buttons-plugin button.blank:hover { - animation: swing_image 0.8s linear 0s 1 normal; - box-shadow: 0 2px 6px rgba(0, 0, 0, .3); -} - -body.style-options-for-buttons-plugin .admonition-content span>button.grad_button { - margin:3px; -} -body.style-options-for-buttons-plugin button.grad_button { - margin:5PX; - line-height: inherit; - display: inline-flex; - justify-content: center; - align-items: center; - min-width: 90px; - padding: 0 18px; - height: 38px; - font-size: 16px; - color: #fff; - text-align: center; - box-sizing: border-box; - font-weight: 500; - cursor: pointer; - border-radius: 30px; - transition: box-shadow .5s ease, transform .2s ease; - will-change: transform; - box-shadow: 0 2px 5px rgba(0, 0, 0, .2); - transform: - translateY(var(--ty, 0)) - rotateX(var(--rx, 0)) - rotateY(var(--ry, 0)) - translateZ(var(--tz, -12px)); -} - -body.style-options-for-buttons-plugin button.grad_button:hover { - animation: swing_image 0.8s linear 0s 1 normal; - box-shadow: 0 5px 15px rgba(0, 0, 0, .3); -} -body.style-options-for-buttons-plugin button.g_purple { - background: linear-gradient(135deg, #6e8efb, #a777e3); -} -body.style-options-for-buttons-plugin button.g_blue { - background: linear-gradient(135deg, #3370ff, #9fb9f6); -} -body.style-options-for-buttons-plugin button.g_green { - background: linear-gradient(135deg, #0eb347, #5be08a); -} -body.style-options-for-buttons-plugin button.g_lightgreen { - color: #17695e; - background: linear-gradient(135deg, #adfdad, #dafdda); -} -body.style-options-for-buttons-plugin button.g_yellow { - color: #836f20; - background: linear-gradient(135deg, #fcd539, #ffeb9b); -} -body.style-options-for-buttons-plugin.theme-dark button.g_yellow { - color: #e4cb58; - background: none; - border: 1px solid; -} -body.style-options-for-buttons-plugin.theme-dark button.g_green { - color: #19bc8b; - background: none; - border: 1px solid; -} -body.style-options-for-buttons-plugin.theme-dark button.g_lightgreen { - color: #8fc866; - background: none; - border: 1px solid; -} -body.style-options-for-buttons-plugin.theme-dark button.g_purple { - color: #ffa260; - background: none; - border: 1px solid; -} -body.style-options-for-buttons-plugin.theme-dark button.g_blue { - color: #739df9; - background: none; - border: 1px solid; -} -body.style-options-for-buttons-plugin.theme-dark .grad_button:hover { - color: var(--text-accent) -} - -button.tiny { - border-radius: 10px; - display: inline-flex; - justify-content: center; - align-items: center; - font-size: 1em; - min-width:3.5em; - cursor: pointer; - margin: 0; - padding:3px 6px; - background-color: transparent; - color: var(--text-normal); - position: relative; - z-index: 1; - overflow: hidden; - box-shadow: rgba(0, 0, 0, 0.1) 0px 5px 35px, rgba(0, 0, 0, 0.05) 0px 5px 5px; -} -button.tiny:hover { - color: var(--text-on-accent); -} -button.tiny::before { - content: ""; - position: absolute; - z-index: -1; - top: 50%; - left: 50%; - width: 1rem; - height: 1rem; - transform: translate3d(-50%,-50%,0) scale(0,0); - border-radius: 50%; - background-color: var(--interactive-accent-hover); - transform-origin: center; - transition: ease-in-out .5s; -} - -button.tiny:hover::before { - transform: translate3d(-50%,-50%,0) scale(15,15); -} - - -/*buttons*/ -.is-mobile .nav-action-button { - margin: 0px 3px !important -} - -.is-mobile .workspace-leaf-content[data-type='file-explorer'] .nav-buttons-container { - margin: 0 0 5px 0; -} - -.is-mobile .workspace-leaf-content .view-header-icon { - padding: 7px 3px 5px 8px; -} - -.is-mobile .nav-buttons-container>.nav-action-button svg { - width: 1.5em; - height: 1.5em; -} - -/* side bar button */ -.is-mobile .side-dock-ribbon-action { - padding: 5px; -} - -.is-mobile .cm-s-obsidian .HyperMD-codeblock { - color: var(--text-color-code); -} - -.is-mobile :is(.markdown-preview-view,.markdown-rendered) blockquote { - margin-left: 3%; - margin-right: 3%; -} - -.is-mobile code:not([class*='language-']), -.is-mobile .cm-s-obsidian span.cm-inline-code { - padding: 5px 3px 2px; -} - -.is-mobile .workspace>.workspace-split>.workspace-leaf:first-of-type:last-of-type .view-header { - background: linear-gradient(120deg, var(--color-view-header-gradient-1) 0%, var(--color-view-header-gradient-2) 90%) !important; -} - -.is-mobile .cm-s-obsidian .cm-gutters { - background-color: transparent !important; -} - -.is-mobile .cm-foldGutter .cm-gutterElement { - color: transparent !important; -} - -.is-mobile .cm-formatting.cm-formatting-quote { - color: var(--red); -} - -body:not(.font-family-change-to-default).is-mobile .markdown-source-view.mod-cm6 .cm-scroller { - font-family: var(--font-text); -} - -.is-mobile #calendar-container { - padding: 0 4px 2px 4px; - margin: unset !important; - line-height: unset; -} - -.is-mobile #calendar-container .calendar { - margin-left: -8px !important; - width: 103%; -} - -.is-mobile #calendar-container th { - padding: 2px 0 !important; -} - -.is-mobile #calendar-container td { - padding: 0 !important; - line-height: 24px !important; -} - -.is-mobile #calendar-container th { - padding: 10px 0; - border-radius: 0 !important; - background-color: transparent !important; -} - -.is-mobile #calendar-container tr { - background-color: transparent; -} - -.is-mobile #calendar-container .dot { - margin-top: 0 !important; -} - -.is-mobile #calendar-container .hollow { - margin: 0 !important; -} - -.is-mobile .workspace-drawer-header-name { - font-size: 25px; -} - -.is-mobile .workspace-drawer-header-name-text { - color: var(--text-accent); - font-weight: 600; -} - -.is-mobile .workspace-drawer-active-tab-header { - margin: 5px 0; -} - -.is-mobile .workspace-drawer.mod-left { - border-right: none; -} - -.is-mobile .workspace-drawer.mod-right { - border-left: none; -} - -.is-mobile .workspace-drawer.mod-right .workspace-drawer-inner { - background: linear-gradient(to left, var(--background-mobile-drawer-1) 30%, var(--background-mobile-drawer-2) 100%); -} - -.is-mobile .workspace-drawer.mod-left .workspace-drawer-inner { - background: linear-gradient(to right, var(--background-mobile-drawer-1) 30%, var(--background-mobile-drawer-2) 100%); -} - -.is-mobile .workspace-drawer-ribbon { - background-color: var(--background-secondary-alt); -} - -.is-mobile .nav-buttons-container { - margin-bottom: 10px; -} - -.is-mobile .cm-line .cm-link.cm-strong { - color: var(--text-accent); -} - -.is-mobile .cm-line .cm-formatting.cm-formatting-link, -.is-mobile .cm-line .cm-string.cm-strong.cm-url { - color: var(--text-muted); -} - -.is-mobile .search-result-file-match-replace-button { - color: var(--text-normal); -} - -.is-mobile :is(.markdown-preview-view,.markdown-rendered).kanban-plugin__markdown-preview-view { - padding: 0 5px; -} - -/***修复iphone 底部横条不透明的问题*** -body.is-mobile { - padding-bottom: 0 !important; -} -/*** iphone标题栏上方遮罩*** -body.is-mobile .safe-area-top-cover { - background-color: var(--background-primary); -} -/*** iphone标题栏上方遮罩 设置背景色后遮罩颜色跟工作区保持一致*** -body.is-mobile.background-settings-workplace-background-image .safe-area-top-cover { - background-color: var(--background-primary); -} -*/ - -body.is-mobile .menu { - background-color: var(--color-base-20); -} -body.is-mobile .menu { - color:var(--text-muted); -} -body.is-mobile .menu-item-title { - padding-left: 4px; -} - -/*侧边栏文件列表字体大小*/ -.is-mobile .nav-file-title, .is-mobile .nav-folder-title, .is-mobile .outline, .is-mobile .tree-item-self, .is-mobile .tag-container, .is-mobile .tag-pane-tag { - font-size: calc(var(--font-size-folder-and-file) + 0.2em); - line-height: 1.5; - margin-bottom: 2px; -} - -body:not(.default-icons).is-mobile .nav-folder-collapse-indicator::before { - margin-left: -0.1em; -} - -/*侧边栏工作区标题*/ -.is-mobile .workspace-drawer-tab-option-item-title, .is-mobile .workspace-drawer-active-tab-title { - font-size: calc(var(--font-size-folder-and-file) + 0.15em); -} -/*小屏幕特别优化*/ -@media screen and(min-width: 480px) and (max-width: 767px) { - body.style-options-for-admonition-plugin .admonition-flex .admonition-content { - gap:24px; - } - body.style-options-for-admonition-plugin .admonition-kanban ul > li.task-list-item { - flex: 1 1 40%; - } - body.style-options-for-admonition-plugin .admonition-kanban ul>li:not(.task-list-item) { - flex: 1 1 40%; - } - .kanban ul>li:not(.task-list-item) { - flex: 1 1 40%; - } - .kanban ul>li.task-list-item{ - flex: 1 1 40%; - } -} - -@media screen and (max-width: 479px) { - body.style-options-for-admonition-plugin .admonition-flex .admonition-content { - gap:15px; - } - body.style-options-for-admonition-plugin .admonition-flex .admonition-content div { - flex: 1 1 60%; - margin: 0; - } - body.style-options-for-admonition-plugin .admonition-kanban ul > li.task-list-item { - flex: 1 1 60%; - } - body.style-options-for-admonition-plugin .admonition-kanban ul>li:not(.task-list-item) { - flex: 1 1 40%; - } - - /*伪看板优化显示*/ - .kanban ul>li:not(.task-list-item) { - flex: 1 1 auto; - } - .kanban ul>li.task-list-item { - flex: 1 1 auto; - } - .is-mobile .nav-folder.mod-root > .nav-folder-title { - display: none; - } - - body:not(.default-icons).is-mobile .nav-folder-collapse-indicator::before { - top: 1px; - } -} - -/*======================= -=== projects by cuman==== -========================*/ -.projects-container [role='row']:hover { - background-color: hsla(var(--color-accent-hsl), 0.1); -} - -.projects-container [role='row'] { - position: relative; - font-size: var(--font-ui-small); -} -.projects-container a { - font-size: var(--font-ui-small); - text-decoration-line:none; -} - -.projects-container [role='row'] [role='gridcell']{ - background-color: transparent; -} - -.projects-container [role='row'] [role='gridcell'][aria-selected="true"]::before { - content: " "; - position:absolute; - left: 0; - min-height: 30px; - background-color: hsla(var(--color-accent-hsl), 0.2); - width: 100%; - pointer-events: none; -} - -.projects-container [role='row'] [role='gridcell'].selected { - box-shadow: 0 0 0 1px var(--interactive-accent); -} - -.projects-container div.rowHeader { - backdrop-filter: blur(10px); -} -/*======================= -=== dialogue by cuman==== -========================*/ -body.dialogue-style-wechat .dialogue-plugin-block-wrapper { - margin-bottom: 15px; - position: relative; - display: flex; -} -body.dialogue-style-wechat .dialogue-plugin-message { - background-color:unset; - padding: 1px; -} - -body.dialogue-style-wechat.is-mobile .dialogue-plugin-message { - max-width: calc(100% - 2em) !important; -} -body.dialogue-style-wechat.is-mobile .dialogue-plugin-message .dialogue-plugin-message-content { - margin-left: 2em; - margin-right: 2em; -} - -body.dialogue-style-wechat.is-mobile .dialogue-plugin-message .dialogue-plugin-message-title { - min-width:unset; - margin-left: -1em; - margin-right: -1em; -} - -body.dialogue-style-wechat .dialogue-plugin-comment-wrapper .dialogue-plugin-comment { - margin: 7px; - width: fit-content; - max-width: 75%; - margin: 24px auto; - line-height: 1.8; - text-align: center; - opacity: var(--opacity); -} - -body.dialogue-style-wechat .dialogue-plugin-message .dialogue-plugin-message-title { - min-width: 6.8em; - font-size: 18px; - height: 50px; - background: #f1f1f1; - border-radius: 8px; - background-size: cover; - background-repeat: no-repeat; - position: absolute; - background-position: center; - overflow: hidden; - display: flex; - align-items: center; - justify-content: right; - background-color: unset; -} - -body.dialogue-style-wechat .dialogue-plugin-message-wrapper-right .dialogue-plugin-message-title { - justify-content:left; - margin-left: 2em; - right: 0; -} -body.dialogue-style-wechat .dialogue-plugin-message-wrapper-left .dialogue-plugin-message .dialogue-plugin-message-content { - margin-right: 0px; -} -body.dialogue-style-wechat .dialogue-plugin-message-wrapper-left .dialogue-plugin-message-content:after { - box-shadow: -1px 2px 0px 0 rgb(178 178 178 / 23%) -} - -body.dialogue-style-wechat .dialogue-plugin-message-wrapper-right .dialogue-plugin-message .dialogue-plugin-message-content { - color: black; - background: #98e970; - margin-left: 0; -} -body.dialogue-style-wechat .dialogue-plugin-message-wrapper-right .dialogue-plugin-message .dialogue-plugin-message-content:after { - background: #98e970; - left: auto; - right: -5px; - border-top-right-radius: 2px; - border-bottom-left-radius: 0; -} -body.dialogue-style-wechat .dialogue-plugin-message .dialogue-plugin-message-content { - background: #fff; - padding: 12px 18px; - font-size: large; - border-radius: 8px; - margin-right: 7em; - word-break: break-all; - margin-left: 7em; - display: inline-block; - position: relative; - line-height: normal; - min-height: 50px; - -moz-box-shadow: 0 1px 2px rgba(0,0,0,0.25); - -webkit-box-shadow: 0 1px 2px rgba(0,0,0,0.25); -} -.dialogue-style-wechat.theme-dark .dialogue-plugin-message .dialogue-plugin-message-content { - background: #343434; -} - -body.dialogue-style-wechat .dialogue-plugin-message .dialogue-plugin-message-content:after { - content: ''; - background: #fff; - width: 12px; - height: 12px; - border-bottom-left-radius: 2px; - top: 20px; - left: -6px; - position: absolute; - transform: rotate(45deg); -} - -.dialogue-style-wechat.theme-dark .dialogue-plugin-message .dialogue-plugin-message-content:after { - background: #343434; -} - -/*chatview-style-wechat*/ -body.dialogue-style-wechat div.chat-view-bubble { - background-color: transparent; - border: 0px; -} -body.dialogue-style-wechat .chat-view-message .chat-view-header { - font-size: 18px; - height: 55px; - background: #f1f1f1; - border-radius: 8px; - background-size: cover; - background-repeat: no-repeat; - position: absolute; - background-position: center; - overflow: hidden; - display: flex; - align-items: center; - justify-content: center; - background-color:unset; -} - -body.dialogue-style-wechat .chat-view-align-right .chat-view-header { - text-align: right; - margin-right: 0.5em; -} - -body.dialogue-style-wechat div.chat-view-align-left .chat-view-message { - margin-right: 0; - -} -body.dialogue-style-wechat .chat-view-align-right .chat-view-message { - color: black; - background: #98e970; - float: right; -} -body.dialogue-style-wechat div.chat-view-align-center .chat-view-message { - background: #e4effc; - padding: 12px 18px; - font-size: large; - border-radius: 8px; - word-break: break-all; - display: inline-block; - position: relative; - line-height: normal; - min-height: 50px; - -moz-box-shadow: 0 1px 2px rgba(0,0,0,0.25); - -webkit-box-shadow: 0 1px 2px rgba(0,0,0,0.25); -} -body.dialogue-style-wechat div.chat-view-align-center .chat-view-message:after { - content: ''; - background: #e4effc; - width: 12px; - height: 12px; - border-bottom-left-radius: 2px; - top: -5px; - left: 10%; - position: absolute; - transform: rotate(45deg); -} - -body.dialogue-style-wechat div.chat-view-align-left .chat-view-message:after { - box-shadow: -1px 2px 0px 0 rgb(178 178 178 / 23%) -} - -body.dialogue-style-wechat .chat-view-align-right .chat-view-message:after { - background: #98e970; - left: auto; - right: -5px; - border-top-right-radius: 2px; - border-bottom-left-radius: 0; -} -body.dialogue-style-wechat .chat-view-message, -body.dialogue-style-wechat .chat-view-bubble> :not(:is(h1,h2,h3,h4,h5,h6,sub)) { - background: #fff; - padding: 12px 18px; - font-size: large; - border-radius: 8px; - word-break: break-all; - display: inline-block; - position: relative; - line-height: normal; - min-height: 50px; - -moz-box-shadow: 0 1px 2px rgba(0,0,0,0.25); - -webkit-box-shadow: 0 1px 2px rgba(0,0,0,0.25); -} -body.dialogue-style-wechat.theme-dark .chat-view-align-left .chat-view-message { - background: #343434; -} -body.dialogue-style-wechat.theme-dark .chat-view-align-center .chat-view-message { - background: #3cb676; - color:black; -} -body.dialogue-style-wechat.theme-dark .chat-view-align-center .chat-view-message:after { - background: #3cb676; -} - -body.dialogue-style-wechat .chat-view-bubble> :not(:is(h1,h2,h3,h4,h5,h6,sub)):after { - content: ''; - background: #fff; - width: 12px; - height: 12px; - border-bottom-left-radius: 2px; - top: 20px; - left: -6px; - position: absolute; - transform: rotate(45deg); -} - -body.dialogue-style-wechat.theme-dark .chat-view-align-left .chat-view-message:after { - background: #343434; -} - -body.dialogue-style-wechat .chat-view-bubble .chat-view-subtext { - display:block; -} -body.dialogue-style-wechat .chat-view-align-right .chat-view-subtext { - float: right; -} -body.dialogue-style-wechat div.chat-view-align-right { - overflow: hidden; -} -body.dialogue-style-wechat h4.chat-view-header { - margin-bottom: 2px; - margin-top: 0 !important; -} -body.dialogue-style-wechat div.chat-view-align-center h4.chat-view-header { - text-align: left; - margin-bottom: 8px; -} - -/*dialogue-style-chat*/ -.dialogue-style-chat.theme-dark .dialogue-plugin-message-wrapper-left .dialogue-plugin-message { - color: #cccccc; - background: #343434; - box-shadow: 0px 2px 1px 0px #191818,0px 2px 1px 0px #343434; -} -.dialogue-style-chat.theme-dark .dialogue-plugin-message-wrapper-right .dialogue-plugin-message { - color: #333333; - background-image: -webkit-linear-gradient(left, #cccccc,#cccccc); -} -body.dialogue-style-chat .dialogue-plugin-message-wrapper-left .dialogue-plugin-message { - font-size: 15px; - background: #f5f8ff; - letter-spacing: 1.5px; - color: #333; - border-radius:12px; - border-bottom-left-radius: 0px; - margin-left: 6px; - box-shadow: 0px 2px 1px 0px #f3f3f3,0px 2px 1px 0px #f3f3f3; - margin-right: 3em; - align-self: flex-end; -} - -body.dialogue-style-chat .dialogue-plugin-message-wrapper-right .dialogue-plugin-message{ - font-size: 15px; - letter-spacing: 1.5px; - color: #333; - border-radius: 12px; - border-bottom-right-radius: 0px; - background-image: -webkit-linear-gradient(left, #cee4ff,#d7eaff); - margin-right: 6px; - align-self: flex-end; - margin-left: 3em; -} - -body.dialogue-style-chat .dialogue-plugin-message-title { - font-size: 16px; - letter-spacing: 2px; - text-align: center; - color: rgb(236, 236, 236); - font-weight: bold; -} - -/*===================================================*/ -/*================= Live Preview ================*/ -/*===================================================*/ -.markdown-source-view.is-live-preview span.cm-quote::before { - all: initial; -} - -.markdown-source-view.mod-cm6 .cm-gutters { - background-color: transparent !important; -} - -.markdown-source-view.mod-cm6.is-live-preview .HyperMD-quote { - border-color: var(--theme-color); - background-color: var(--background-blockquote); -} - -.markdown-source-view.is-live-preview .cm-formatting.cm-formatting-quote.cm-quote { - color: var(--red); -} - -.markdown-source-view.is-live-preview span.code-block-flair { - color: var(--code-language); -} - -.markdown-source-view .HyperMD-codeblock.HyperMD-codeblock-bg.cm-line { - letter-spacing: calc(var(--letter-space-code) * 0.02em); - line-height: var(--line-height-normal); -} - -.cm-s-obsidian div.HyperMD-codeblock-end-bg { - border-bottom: none; -} - -.markdown-source-view.cm-s-obsidian.mod-cm6 .HyperMD-codeblock { - font-size: var(--font-size-code); -} - -/* ============ */ -/* just for fun */ -/* ============ */ -/*cursor*/ -.CodeMirror-cursor, -.cm-s-obsidian .cm-cursor, -.cm-s-obsidian .cm-dropCursor { - border-left-color: var(--cursor-color-temp); -} - -.markdown-source-view.mod-cm6 .cm-content { - caret-color: var(--cursor-color); -} - -body.bt-colorful-titlebar .titlebar::after { - content: ""; - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: var(--background-titlebar-inner); -} - -body.theme-dark.bt-colorful-titlebar .workspace-split.mod-root .workspace-tab-header.is-active.mod-active { - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; - box-shadow: none; - background-color: #181818; -} -body.theme-light.bt-colorful-titlebar .workspace-split.mod-root .workspace-tab-header.is-active.mod-active { - box-shadow: none; - background-color:var(--color-base-00); -} -body.theme-light.background-settings-workplace-background-image .workspace-ribbon.side-dock-ribbon.mod-left, -body.theme-light.background-settings-workplace-background-image .workspace-ribbon.side-dock-ribbon.mod-right, -body.theme-light.background-settings-workplace-background-image .nav-folder.mod-root>.nav-folder-title { - background-color: var(--background-secondary); -} -body.theme-dark.background-settings-workplace-background-image .workspace-ribbon.side-dock-ribbon.mod-left { - background-color: var(--background-secondary) -} -body.theme-dark.background-settings-workplace-background-image .workspace-ribbon.side-dock-ribbon.mod-right { - background-color: var(--background-primary-alt); -} - - -/*==== separators =====*/ -body.asymmetric-split-left .workspace-split.mod-horizontal.mod-left-split .workspace-leaf { - background-color: var(--background-asymm-split-left); -} - -body.asymmetric-split-left .workspace-ribbon.mod-left { - border-right: 1px solid var(--background-modifier-border-asymm); -} - -body.asymmetric-split-left .titlebar, -body.asymmetric-split-left .workspace-split.mod-left-split .workspace-tabs{ - border-bottom: 1px solid var(--background-modifier-border-asymm); -} - -body.asymmetric-split-left .workspace-split.mod-left-split .workspace-tab-container-before.is-before-active .workspace-tab-header-inner, -body.asymmetric-split-left .workspace-split.mod-left-split .workspace-tab-container-after.is-after-active .workspace-tab-header-inner, -body.asymmetric-split-left .workspace-split.mod-left-split .workspace-tab-header.is-before-active .workspace-tab-header-inner, -body.asymmetric-split-left .workspace-split.mod-left-split .workspace-tab-header.is-after-active .workspace-tab-header-inner, -body.asymmetric-split-left .workspace-split.mod-left-split .workspace-tab-header, -body.asymmetric-split-left .workspace-split.mod-left-split .workspace-tab-header-inner, -body.asymmetric-split-left .workspace-split.mod-left-split .workspace-tab-header.is-after-active, -body.asymmetric-split-left .workspace-split.mod-left-split .workspace-tab-header.is-before-active, -body.asymmetric-split-left .workspace-split.mod-left-split .workspace-tab-container-before.is-before-active .workspace-tab-header-inner { - background-color: var(--background-asymm-split-left); - border-radius: 0; -} - -body.asymmetric-split-left .workspace-split.mod-left-split .workspace-tab-header-container { - padding: 4px 0; -} - -.workspace-split.mod-left-split>.workspace-leaf-resize-handle:hover, -.workspace-split.mod-right-split>.workspace-leaf-resize-handle:hover { - background-color: hsla(var(--interactive-accent-hsl),0.5) -} - -.is-translucent .workspace-split.mod-left-split>.workspace-leaf-resize-handle, -.is-translucent .workspace-split.mod-right-split>.workspace-leaf-resize-handle { - background-color: var(--background-modifier-border); -} - -.workspace-tab-container-before.is-before-active .workspace-tab-header-inner, -.workspace-tab-container-after.is-after-active .workspace-tab-header-inner, -.workspace-tab-header.is-before-active .workspace-tab-header-inner, -.workspace-tab-header.is-after-active .workspace-tab-header-inner { - background-color: var(--background-secondary-alt); -} - -.workspace-tabs { - background-color: var(--background-secondary); - padding-right: 0; -} - -.is-hidden-frameless.mod-windows .titlebar-button { - background: var(--background-primary); -} - -body:not(.color-scheme-options-simplicity-topaz) .workspace-ribbon.mod-left:before, -body:not(.color-scheme-options-simplicity-topaz) .workspace-split.mod-root, -body:not(.color-scheme-options-simplicity-topaz) .workspace-tabs { - background: var(--background-secondary-alt); -} - -.workspace-tab-header-container { - background: var(--background-secondary-alt); -} - -.sidebar-toggle-button, -body.background-settings-workplace-background-image:not(.is-frameless) .workspace-split.mod-root .workspace-tab-header-container, -body.background-settings-workplace-background-image:not(.is-frameless) .mod-root .workspace-tabs .workspace-leaf, -body.background-settings-workplace-background-image .workspace { - background: transparent; -} - -body.background-settings-workplace-background-image .workspace-ribbon.mod-left:before, -body.background-settings-workplace-background-image .workspace-tabs { - background: var(--background-secondary); -} - - -body.toggle-divider-lines { - --divider-color: transparent; - --tab-outline-color: transparent; - --tab-divider-color: transparent; -} -body.toggle-divider-lines .workspace-ribbon, -body.toggle-divider-lines .workspace-split > .workspace-leaf-resize-handle, -body.toggle-divider-lines .view-header { - border: none; -} - -body.toggle-divider-lines .workspace-split.mod-horizontal > * > .workspace-leaf-resize-handle:not(:hover) { - border-bottom-color: transparent; -} - -body.toggle-divider-lines .workspace-ribbon.mod-left:before { - border-bottom: var(--tab-outline-width) transparent; -} -body.toggle-divider-lines .workspace-tab-header-container{ - border-bottom: var(--tab-outline-width) transparent; -} - -body.toggle-divider-lines .workspace-split.mod-root .workspace-tab-header.is-active { - box-shadow: var(--window-shadow); -} - -/* -body.background-settings-workplace-background-image .titlebar, -body.background-settings-workplace-background-image .workspace-ribbon.mod-left { - background: var(--background-secondary); -} -*/ -body.background-settings-workplace-background-image.theme-dark .workspace-ribbon.mod-left { - background: transparent; -} - -body.background-settings-workplace-background-image .workspace-tab-header::before { - clip-path: inset(50% 0 0 50%); - left: calc(var(--tab-curve) * -1.97); -} -body.background-settings-workplace-background-image .workspace-tab-header::after { - clip-path: inset(50% 50% 0 0); - right: calc(var(--tab-curve) * -1.97); -} - -body.background-settings-workplace-background-image .nav-folder.mod-root>.nav-folder-title { - background-color: transparent; -} - -body.background-settings-workplace-background-image { - --tab-text-color-focused: var(--text-normal); - --titlebar-text-color-focused: var(--text-noraml); - --canvas-background: transparent; -} - -body.is-frameless.background-settings-workplace-background-image.theme-dark { - --divider-color: #22222288; -} - -/* -body.is-frameless.background-settings-workplace-background-image .workspace-tab-header.is-active { - box-shadow: none; -} -*//* -body.is-frameless.background-settings-workplace-background-image .workspace-split.mod-root, -body:not(.is-focused).is-frameless.background-settings-workplace-background-image .workspace-tabs.mod-top .workspace-tab-header-container, -body.is-frameless.background-settings-workplace-background-image .workspace-tabs.mod-top .workspace-tab-header-container, -body.is-frameless.background-settings-workplace-background-image .workspace-split.mod-root .workspace-tab-header-container { - background-color: transparent !important; -} -*/ -body:not(.is-focused):not(.is-frameless) .workspace-split.mod-root .workspace-tab-header-container { - background-color: transparent; -} - -.workspace-tab-container-before.is-before-active, -.workspace-tab-container-after.is-after-active, -.workspace-tab-header.is-before-active, -.workspace-tab-header.is-after-active, -.workspace-split.mod-right-split .workspace-tabs .workspace-leaf, -.workspace-split.mod-left-split .workspace-tabs .workspace-leaf { - background-color: var(--background-secondary); -} - - -.view-header { - border-top: none; - height: 33px; - border-bottom: 1px solid var(--page-border-bottom); -} - -body.color-scheme-options-flamingo .view-header, -body.color-scheme-options-honey-milk-topaz .view-header, -body.color-scheme-options-chocolate-topaz .view-header, -body.color-scheme-options-autumn-topaz .view-header, -body.color-scheme-options-lillimon-topaz .view-header { - border-bottom: 1px solid transparent; -} - -.workspace-split.mod-root .view-content { - background-color: var(--background-primary); -} - -:is(.markdown-preview-view,.markdown-rendered), -.markdown-source-view { - background-color: transparent; -} - - -body.view-button-front .popover .workspace-leaf-content:is([data-mode="preview"],[data-mode="source"]) .view-header .view-actions>:is([aria-label^="该面板处于编辑视图中"],[aria-label^="Current view: editing"]), -body.view-button-front .popover .workspace-leaf-content:is([data-mode="preview"],[data-mode="source"]) .view-header .view-actions>:is([aria-label^="该面板处于编辑视图中"],[aria-label^="Current view: editing"]) { - left: 0; - top: 6px; -} -body.view-button-front .popover .workspace-leaf-content[data-mode='preview'] .view-header .view-actions>:is([aria-label^="该面板处于阅读视图中"],[aria-label^="Current view: reading"]) , -body.view-button-front .popover .workspace-leaf-content[data-mode='preview'] .view-header .view-actions>:is([aria-label^="该面板处于阅读视图中"],[aria-label^="Current view: reading"]) { - left: 0; - top: 6px; -} - -body.is-mobile.view-button-front .workspace-leaf-content:is([data-mode="preview"],[data-mode="source"]) .view-header .view-actions>:is([aria-label^="该面板处于编辑视图中"],[aria-label^="Current view: editing"]) { - left: 0; - top: 6px; -} - -body.view-button-front .workspace-leaf-content:is([data-mode="preview"],[data-mode="source"]) .view-header .view-actions>:is([aria-label^="该面板处于编辑视图中"],[aria-label^="Current view: editing"]) { - opacity: 0.8; - position: absolute; - left: 20px; - top: 3px; -} -body.is-mobile.view-button-front .workspace-leaf-content[data-mode='preview'] .view-header .view-actions>:is([aria-label^="该面板处于阅读视图中"],[aria-label^="Current view: reading"]) { - left: 0; - top: 6px; -} -body.view-button-front .workspace-leaf-content[data-mode='preview'] .view-header .view-actions>:is([aria-label^="该面板处于阅读视图中"],[aria-label^="Current view: reading"]) { - opacity: 0.5; - position: absolute; - left: 20px; - top: 3px; -} -body.view-button-front .workspace-leaf-content[data-mode='preview'] .view-header:hover .view-actions>:is([aria-label^="该面板处于阅读视图中"],[aria-label^="Current view: reading"]) { - opacity: 1; -} - -body.view-button-front:not(.color-scheme-options-simplicity-topaz) .workspace-leaf-content .view-header .view-header-nav-buttons { - margin-left: 25px; -} -body.view-button-front.hide-titlebar-close-btn.hide-left-ribbon-retention-drawer.color-scheme-options-simplicity-topaz .workspace-leaf-content .view-header .view-header-nav-buttons { - margin-left: 5px; -} - -body.view-button-front .workspace-leaf-content[data-mode='source'] .view-content .markdown-source-view:not(.is-live-preview)::before { - content: ""; - background-image:url("data:image/svg+xml,%3Csvg width='' height='' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M84.8 468.8H43.2C17.6 468.8 0 486.4 0 512s17.6 43.2 43.2 43.2h43.2C110.4 555.2 128 537.6 128 512s-17.6-43.2-43.2-43.2zM384 468.8h-43.2c-25.6 0-43.2 17.6-43.2 43.2s17.6 43.2 43.2 43.2H384c25.6 0 43.2-17.6 43.2-43.2s-17.6-43.2-43.2-43.2zM683.2 468.8H640c-25.6 0-43.2 17.6-43.2 43.2s17.6 43.2 43.2 43.2h43.2c25.6 0 43.2-17.6 43.2-43.2-1.6-25.6-17.6-43.2-43.2-43.2zM980.8 468.8h-43.2c-25.6 0-43.2 17.6-43.2 43.2s17.6 43.2 43.2 43.2h43.2c25.6 0 43.2-17.6 43.2-43.2s-17.6-43.2-43.2-43.2z' fill='%23666666'/%3E%3C/svg%3E"); - background-size: 14px 16px; - background-repeat: no-repeat; - height: 12px; - width: 15px; - position: absolute; - z-index: 1; - top: 17px; - left: 26px; - opacity: 0.5; - pointer-events: none; -} - -body.hide-titlebar-close-btn.hide-left-ribbon-retention-drawer.view-button-front .workspace-leaf-content[data-mode='source'] .view-content .markdown-source-view:not(.is-live-preview)::before { - left: 38px; -} - -body.view-button-front:not(.remove-custom-svg-icons) .workspace-leaf-content .view-header .view-actions svg.svg-icon.lucide-book-open { - -webkit-mask-image: url("data:image/svg+xml,%3Csvg width='' height='' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M114.18 936.37c-7.08-0.01-13.88-2.83-18.90-7.84-7.13-7.13-9.73-17.60-6.78-27.24 0.58-1.89 58.08-190.17 69.57-232.60 1.24-4.57 3.65-8.73 6.99-12.08 0 0 509.13-509.34 524.08-524.12 27.32-27.32 63.92-43.31 102.51-44.84 35.84 0.81 69.89 15.79 94.70 41.66 32.72 31.43 49.66 65.07 50.34 100.03 0.52 35.39-15.64 70.37-48.22 103.97C856.96 365.85 382.08 835.45 361.87 855.42c-3.13 3.09-6.97 5.37-11.19 6.62-31.98 9.53-226.32 72.36-228.29 72.99C119.75 935.90 116.98 936.35 114.18 936.37zM207.99 690.03c-10.01 35.62-39.82 125.58-56.68 181.06 55.85-17.99 146.82-49.51 177.65-59.01 50.76-50.21 491.57-486.20 521.11-516.63 22.12-22.85 33.24-44.76 32.85-65.12-0.40-19.87-11.67-40.69-33.65-61.74-14.94-16.13-35.63-25.74-57.60-26.73-24.42 1.73-47.44 12.11-64.90 29.28-14.10 13.90-465.93 465.95-518.84 518.88L207.99 690.03zM350.36 853.71c-13.57-0.06-24.98-10.20-26.63-23.68-6.27-30.87-21.46-59.22-43.70-81.52-22.46-24.48-52.04-41.30-84.56-48.09-14.71-1.90-25.17-15.27-23.48-30.01 1.53-14.70 14.70-25.39 29.40-23.85 0.01 0 0.03 0 0.05 0 88.93 17.85 158.30 87.60 175.66 176.62 1.91 14.80-8.50 28.34-23.28 30.29-1.16 0.15-2.33 0.22-3.51 0.22L350.36 853.71zM828.88 369.14c-13.58-0.05-24.99-10.20-26.62-23.68-14.30-64.29-64.20-114.68-128.34-129.60-14.70-1.94-25.13-15.30-23.45-30.03 1.51-14.67 14.63-25.35 29.31-23.85 0.03 0.01 0.06 0.01 0.10 0.01 44.72 8.07 85.64 30.37 116.68 63.57 30.72 30.78 51.32 70.19 59.05 112.99 2.02 14.73-8.28 28.31-23.02 30.33-1.25 0.18-2.52 0.26-3.80 0.26L828.88 369.14z' fill='%23666666'/%3E%3C/svg%3E"); - opacity:0.6; -} - -body:not(.remove-custom-svg-icons) .workspace-leaf-content[data-type="markdown"] .view-header-icon:hover::before { - content:"👆🏻"; - opacity: 0.6; - margin-left: -12px; -} - - -body.folder-icons .nav-folder-children .nav-folder-title-content::before { - position: relative; - content: ""; - display: inline-block; - opacity: 0.9; - top: 2px; - margin-left: -1px; - width: 0.95rem; - height: 0.95rem; - margin-right: 5px; - background-size: contain; - background-repeat: no-repeat; - background-position: center center; - background-color: var(--text-folder-file-icon); - filter: hue-rotate(160deg); - -webkit-mask-image: url('data:image/svg+xml;utf8,'); -} -body.folder-icons .nav-folder-children .nav-folder.is-collapsed .nav-folder-title-content::before { - position: relative; - content: ""; - display: inline-block; - width: 0.95rem; - height: 0.95rem; - background-size: contain; - background-repeat: no-repeat; - background-position: center center; - background-color: var(--text-folder-file-icon); - filter: hue-rotate(160deg); - -webkit-mask-image: url('data:image/svg+xml;utf8,'); -} - - -body.remove-arrow:not(.default-icons):not(.bt-toggle-colorful-folder.folder-style-change-options-colorful-tab-liked) .nav-folder-collapse-indicator::before { - display: none; -} -body.remove-arrow:not(.default-icons) :not([class*="mk-tree"]).nav-folder-title-content { - margin-left: -18px; -} - -body.remove-arrow:not(.default-icons) .tree-item.nav-folder.mod-root>.tree-item-self.nav-folder-title { - padding-left: 23px; - margin-left: -10px; -} - -body.remove-arrow .nav-folder-title .iconize-icon { - margin: 0 22px 0 -18px !important; -} - -body:not(.remove-file-icons) [data-type="starred"] .nav-file-icon .svg-icon { - padding: 4px 0 0; -} - -body:not(.remove-file-icons) .workspace-leaf-content[data-type="starred"] .nav-file-title-content::before { - display: none; -} -body:not(.remove-file-icons) .nav-file-title .nav-file-title-content:not(.mk-tree-text)::before { - position: relative; - content: ""; - display: inline-block; - width: 0.9rem; - opacity: 0.9; - top: 0.15rem; - height: 0.9rem; - margin-right: 5px; - background-size: contain; - background-repeat: no-repeat; - background-position: center center; - background-color: var(--text-folder-file-icon); - -webkit-mask-image: url('data:image/svg+xml;utf8,'); -} - -body:not(.remove-file-icons) .nav-file-title[data-path$=".pdf"] .nav-file-title-content::before { - -webkit-mask-image: url('data:image/svg+xml;utf8,'); - filter: hue-rotate(-45deg); -} - -body:not(.remove-file-icons) .nav-file-title[data-path$=".pdf"] .nav-file-tag { - background-color: var(--theme-color-translucent-01); - color: var(--theme-color); - filter: hue-rotate(-45deg); -} - -body:not(.remove-file-icons) .nav-file-title[data-path$=".jpg"] .nav-file-title-content::before, -body:not(.remove-file-icons) .nav-file-title[data-path$=".png"] .nav-file-title-content::before, -body:not(.remove-file-icons) .nav-file-title[data-path$=".svg"] .nav-file-title-content::before, -body:not(.remove-file-icons) .nav-file-title[data-path$=".gif"] .nav-file-title-content::before, -body:not(.remove-file-icons) .nav-file-title[data-path$=".jpeg"] .nav-file-title-content::before, -body:not(.remove-file-icons) .nav-file-title[data-path$=".bmp"] .nav-file-title-content::before { - -webkit-mask-image: url('data:image/svg+xml;utf8,'); - filter: hue-rotate(45deg); -} - -body:not(.remove-file-icons) .nav-file-title[data-path$=".jpg"] .nav-file-tag, -body:not(.remove-file-icons) .nav-file-title[data-path$=".png"] .nav-file-tag, -body:not(.remove-file-icons) .nav-file-title[data-path$=".svg"] .nav-file-tag, -body:not(.remove-file-icons) .nav-file-title[data-path$=".gif"] .nav-file-tag, -body:not(.remove-file-icons) .nav-file-title[data-path$=".jpeg"] .nav-file-tag, -body:not(.remove-file-icons) .nav-file-title[data-path$=".bmp"] .nav-file-tag { - background-color: var(--theme-color-translucent-01); - color: var(--theme-color); - filter: hue-rotate(45deg); -} - -body:not(.remove-file-icons) .nav-file-title[data-path$=".mp4"] .nav-file-title-content::before, -body:not(.remove-file-icons) .nav-file-title[data-path$=".webm"] .nav-file-title-content::before, -body:not(.remove-file-icons) .nav-file-title[data-path$=".ogv"] .nav-file-title-content::before, -body:not(.remove-file-icons) .nav-file-title[data-path$=".mov"] .nav-file-title-content::before, -body:not(.remove-file-icons) .nav-file-title[data-path$=".mkv"] .nav-file-title-content::before { - -webkit-mask-image: url('data:image/svg+xml;utf8,'); - filter: hue-rotate(90deg); -} - -body:not(.remove-file-icons) .nav-file-title[data-path$=".mp4"] .nav-file-tag, -body:not(.remove-file-icons) .nav-file-title[data-path$=".webm"] .nav-file-tag, -body:not(.remove-file-icons) .nav-file-title[data-path$=".ogv"] .nav-file-tag, -body:not(.remove-file-icons) .nav-file-title[data-path$=".mov"] .nav-file-tag, -body:not(.remove-file-icons) .nav-file-title[data-path$=".mkv"] .nav-file-tag { - background-color: var(--theme-color-translucent-01); - color: var(--theme-color); - filter: hue-rotate(90deg); -} - -body:not(.remove-file-icons) .nav-file-title[data-path$=".mp3"] .nav-file-title-content::before, -body:not(.remove-file-icons) .nav-file-title[data-path$=".wav"] .nav-file-title-content::before, -body:not(.remove-file-icons) .nav-file-title[data-path$=".m4a"] .nav-file-title-content::before, -body:not(.remove-file-icons) .nav-file-title[data-path$=".ogg"] .nav-file-title-content::before, -body:not(.remove-file-icons) .nav-file-title[data-path$=".3gp"] .nav-file-title-content::before, -body:not(.remove-file-icons) .nav-file-title[data-path$=".flac"] .nav-file-title-content::before { - -webkit-mask-image: url('data:image/svg+xml;utf8,'); - filter: hue-rotate(-90deg); -} - -body:not(.remove-file-icons) .nav-file-title[data-path$=".mp3"] .nav-file-tag, -body:not(.remove-file-icons) .nav-file-title[data-path$=".wav"] .nav-file-tag, -body:not(.remove-file-icons) .nav-file-title[data-path$=".m4a"] .nav-file-tag, -body:not(.remove-file-icons) .nav-file-title[data-path$=".ogg"] .nav-file-tag, -body:not(.remove-file-icons) .nav-file-title[data-path$=".3gp"] .nav-file-tag, -body:not(.remove-file-icons) .nav-file-title[data-path$=".flac"] .nav-file-tag { - background-color: var(--theme-color-translucent-01); - color: var(--theme-color); - filter: hue-rotate(-90deg); -} - -body:not(.remove-file-icons) .nav-file-title[data-path$=".canvas"] .nav-file-title-content::before { - -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23adb5bd' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='svg-icon lucide-layout-dashboard'%3E%3Crect x='3' y='3' width='7' height='9'%3E%3C/rect%3E%3Crect x='14' y='3' width='7' height='5'%3E%3C/rect%3E%3Crect x='14' y='12' width='7' height='9'%3E%3C/rect%3E%3Crect x='3' y='16' width='7' height='5'%3E%3C/rect%3E%3C/svg%3E"); - filter: hue-rotate(180deg); -} - -body:not(.remove-file-icons) .nav-file-title[data-path$=".canvas"] .nav-file-tag { - background-color: var(--theme-color-translucent-01); - color: var(--theme-color); - filter: hue-rotate(180deg); -} - -body:not(.remove-file-icons) .nav-file-title[data-path$=".excalidraw.md"] .nav-file-title-content::before { - -webkit-mask-image: url('data:image/svg+xml;utf8,'); - /* - -webkit-mask-image: url('data:image/svg+xml;utf8,');*/ - filter: hue-rotate(135deg); -} - -body:not(.remove-file-icons) .nav-file-title[data-path$=".loom"] .nav-file-title-content::before { - -webkit-mask-image: url('data:image/svg+xml;utf8,'); - filter: hue-rotate(200deg); -} -body:not(.remove-file-icons) .nav-file-title[data-path$=".loom"] .nav-file-tag { - background-color: var(--theme-color-translucent-01); - color: var(--theme-color); - filter: hue-rotate(200deg); -} - -body.dark-background-file:not(.remove-file-icons):not(.bt-toggle-colorful-folder.folder-style-change-options-colorful) .nav-file-title.is-active[data-path$=".md"]>.nav-file-title-content::before { - background-color: var(--white); -} -body:not(.remove-file-icons) .nav-file-title.is-active[data-path$=".md"]>.nav-file-title-content::before { - background-color: var(--text-folder-file-icon); - opacity: 1; -} - -body:not(.remove-custom-svg-icons) .workspace-leaf-content .view-header .view-actions svg.svg-icon.lucide-edit-3 > path, -body:not(.remove-custom-svg-icons) .workspace-leaf-content .view-header .view-actions svg.svg-icon.lucide-book-open > path { - display: none; -} - -body:not(.remove-custom-svg-icons) .workspace-leaf-content .view-header .view-actions svg.svg-icon.lucide-edit-3, -body:not(.remove-custom-svg-icons) .workspace-leaf-content .view-header .view-actions svg.svg-icon.lucide-book-open { - background-color: currentColor; -} - -body:not(.remove-custom-svg-icons) .workspace-leaf-content .view-action svg{ - width: 17px; - height: 17px; - background-repeat: no-repeat; -} - -body:not(.remove-custom-svg-icons) .workspace-leaf-content .view-header .view-actions svg.svg-icon.lucide-edit-3 { - -webkit-mask-image: url('data:image/svg+xml;utf8,'); -} - -body:not(.remove-custom-svg-icons) .workspace-leaf-content .view-header .view-actions svg.svg-icon.lucide-book-open { - -webkit-mask-image: url('data:image/svg+xml;utf8,'); - background-color: var(--theme-color); -} - -body.setting-default-frosted-glass [class="menu"] { - border: none; - backdrop-filter: blur(8px); - background-color: var(--bg-color-settings-3); - box-shadow: 0 0 8px var(--bg-color-settings-5); -} - -.menu-item.selected:not(.is-disabled):not(.is-label), -.menu-item:hover:not(.is-disabled):not(.is-label) { - background-color: var(--bg-color-settings-5); -} -body.toggle-bg-panel-page :is(.nav-files-container,.file-tree-plugin-view)::before { - content: ''; - display: block; - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: no-repeat center/cover var(--panel-page-background-url-theme); - z-index: -1; -} - -body.toggle-bg-panel-page.theme-dark :is(.nav-files-container,.file-tree-plugin-view)::before { - opacity: var(--bg-panel-page-opacity-cp); -} - -body.toggle-bg-panel-page.theme-light :is(.nav-files-container,.file-tree-plugin-view)::before { - opacity: var(--bg-panel-page-opacity-cp); -} - - -body.toggle-bg-panel-page.panel-page-bg-theme-dark-plant.theme-dark { - --panel-page-background-url-theme: url("data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAA1HbWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAANbwAAIoYAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAMv2lwcnAAAAyfaXBjbwAAABRpc3BlAAAAAAAAAu4AAAH1AAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQQMAAAADFRjb2xycHJvZgAADEhMaW5vAhAAAG1udHJSR0IgWFlaIAfOAAIACQAGADEAAGFjc3BNU0ZUAAAAAElFQyBzUkdCAAAAAAAAAAAAAAAAAAD21gABAAAAANMtSFAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWNwcnQAAAFQAAAAM2Rlc2MAAAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIEAAAAFHJYWVoAAAIYAAAAFGdYWVoAAAIsAAAAFGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRtZGQAAALEAAAAiHZ1ZWQAAANMAAAAhnZpZXcAAAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQMAAAAJHRlY2gAAAQwAAAADHJUUkMAAAQ8AAAIDGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRleHQAAAAAQ29weXJpZ2h0IChjKSAxOTk4IEhld2xldHQtUGFja2FyZCBDb21wYW55AABkZXNjAAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVogAAAAAAAA81EAAQAAAAEWzFhZWiAAAAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAAAG+iAAA49QAAA5BYWVogAAAAAAAAYpkAALeFAAAY2lhZWiAAAAAAAAAkoAAAD4QAALbPZGVzYwAAAAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAAAAAAACxSZWZlcmVuY2UgVmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAsUmVmZXJlbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdmlldwAAAAAAE6T+ABRfLgAQzxQAA+3MAAQTCwADXJ4AAAABWFlaIAAAAAAATAlWAFAAAABXH+dtZWFzAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAACjwAAAAJzaWcgAAAAAENSVCBjdXJ2AAAAAAAABAAAAAAFAAoADwAUABkAHgAjACgALQAyADcAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8AIEAhgCLAJAAlQCaAJ8ApACpAK4AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0BEwEZAR8BJQErATIBOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB0QHZAeEB6QHyAfoCAwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLVAuAC6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APsA/kEBgQTBCAELQQ7BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVnBXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcrBz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQKagqBCpgKrgrFCtwK8wsLCyILOQtRC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM8w0NDSYNQA1aDXQNjg2pDcMN3g34DhMOLg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBDEGEQfhCbELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMjE0MTYxODE6QTxRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxayFtYW+hcdF0EXZReJF64X0hf3GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7pHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgjZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXHJfcmJyZXJocmtyboJxgnSSd6J6sn3CgNKD8ocSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysCKzYraSudK9EsBSw5LG4soizXLQwtQS12Last4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCkMNsxEjFKMYIxujHyMioyYzKbMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjauNuk3JDdgN5w31zgUOFA4jDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0iPWE9oT3gPiA+YD6gPuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQDREdEikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL4kwqTHJMuk0CTUpNk03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19TqlP2VEJUj1TbVShVdVXCVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtFW5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8YU9homH1YklinGLwY0Njl2PrZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3a09rp2v/bFdsr20IbWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRwdMx1KHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwhfIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauGDoZyhteHO4efiASIaYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+cHJyJnPedZJ3SnkCerp8dn4uf+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhSqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660JbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6Evv+/er/1wHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dBx7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXONs62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724DcBdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy8f/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c/23//wAAABNjb2xybmNseAABAA0ABoAAAAAYaXBtYQAAAAAAAAABAAEFAQKDBAUAACKObWRhdBIACgoZJi7fpwQENBoQMvVERDwAMMMMQPaGftXSVUJfY92g+VvDgnOoxsXp5GHrG4AxUxz0YNCD7fxpDoPnkR/ev6EtrQ8W5Gb+36eFHtewziaX5hFoVmALXtjwOfEL2xjX11oPQQP7g3SDa4jGRi94TIQ15YL9FxCZVnSTK7WExCFBruVQ2tVjdB6UdR3lXjdR/8qqAkyHOWcY3GOXRD9GLsO5jbtHhikXXwC5bafUf6qcSXZbU9hxWiaVSfXd4tmvs/pl2osLUxeuFSMh6wjltuftcyyMNJinrjIy6CasCWo87igSJicpYZKjOMcfIAAA//MW/qx7PevdDyPXfP0kkJA7vOvXzJwKq4vuykxGvOl68gZCZkaYApE5FgHzJyYMZYSIssMN6BJTKrafrsYSSkujG0kFhzfRTpoxp4lbBTEnn50/cphUdjcHlbbkEP5SRRxt+qOWHvH7EX5vzcU6j8kgwV+riF9j2D/NNAahRUaP92oz0yc34TURbtl/fl1XQT16d4J6I0WKC1nrnjHCTnrPsa/jx2s96uZtvYIwb5PttEY/oshH+xfUTMr8VhlSE0uNNF8QoFpNRJFI8T3WqKe4XdAEwyXl4umcQLFxfR/4okHZr/YIsa347sagig8fS5FmeYh9avlG07U0bAWLUzmxbFp8OcP8I7hgQK4rtqL/UdlSLp+iyA9UFdF7ps/LAMsHgU2wpfKNB5V+8KAShLUnp4D9oya6nS5CPHndv6rCom2WNLasm1KQwErEGrReeNBDnPCtu8uvkhdoTYY4MxItB3/Etaf68nmgwbEOkj/JTsL2Yvg8iwPHbkXOf30EHx9iNCUxiLF0VTvRtgWjUq2fnPvIcxnjgdhyXdBqHExgHfoS6fvdqhZ+GOxKAOCJm2vHRE86ZfrDW9StEbrnoKdX7afDLJr9oK9UpPVsKXofaBucaf9DHTFIbsa1iXaX+GN+o+wi7I7krzjnSwN8nVBABRqCr4LAy7JFZ1GNMp0Ozftx85nmW8GIVwoIeNJzDcuawHOcthxeMDPLFy21nJE4JQqG1iZ6Uf7z+qRFaaOSiad9hQq3eveBmGBC2hJ+I9IwJdWt+IOgIzyBq30LHh9NK8T68L9m//UMoZ3TMC7EBMms6ED5H3SW+0LQT7hFouWJvk9FIwSRY7ZkS2d2bmA0EfYNSjhZJeLffhfLMHwah7I3A/z2OaOFM73gyf9Nzg72H28xy3ZvtHstYkk43PYDUNw9ltdER31VIqOFed/6ovjSHBWbrPjv6zyvPI9qyjpVqps2JBNDjftbgU8WT4T+0MCHr9t4j03K6F5TNvOHwUsvdOL2r9yn/V9zhPLzGkQm6V2XK97lN6aYvyVV+Vb9WmI8rI3GtbOJZNEId+hoZ5Ve960PTUOctuMAeiVrZ4FbEkVpOjFBDjHP7zVLoEWHBPyb/vWvxSnnAiKEIV3C0QSyZdn/so0ArDNF0RurWa0J9fwMgLFybvL9Z/Sp82ZlVeg6ahiu2bpwAGMTycupdjfwXCz2xAzQ2AIcRkbgEbEmAJDSWZXoaoHj64U3FsvzRcxH3pJ8lOB/nY/cMdWXFXtbHaVqFSUb7bzsmvG+d6Vg8os9lhoXIX1vZ6HZ7BiQ2Eku8DEiKTodQjgt1AA8bqsf+fljuwgqu/AZkMMf4dlnVnvO8ck9sgqzj+Okky1oOUhknS7UWfWNZIpdYFO35WUkr71rR+XWRrvWDWYdRDiUuF2i4W1PVJ2M2r9YTXQOkh2qrYvSfBzzOUpBs8OkyUcdLlr3A9a7lgE+/deidMNYYZH5XI6dj0innASSRdv9ZIFX6oN5ZvtdVPLrpV675fQXV2eAdvSmMx+q/ZWUO9xuwGm7UwvxfXXSfp5s7tTBuf00Zm7JBRi7Ey+x1uarFQU4kZ2QfMbf6dc5F+vPl5Sz/1eLZPTaKA/AMyR449SM5qu+2KIBZJBAxvpF8NDecWM5PSckJglWrBMamIQXr0OyYbKKvCVkKVqPYw2WAN7zFNLP9J39znNqAZJkrNkLbxSjPnt7LEpaKN2ddZZNMIrXtg/JlKjorhbCHBnvYxgDb1+UnOFQlU5ZOE9l9Cv5dVN1DIdQKoiypZESICLegBA0JPJGUVirxMaeqvrR9BmrXoLST+wjCzbZtS6XJi6qRhT5hbjqRR8R3ajmpKoYw9Ow4ulfCSFxqOVrpS8HYVtzPpWZFdEguc6MOs5TqDgd0aiyU87W9wKJbh5PDTetEoWomg6gpuKqfTz3AHJbCYdyd8PUDz0xyVYK5bb3+7L1t5N3TaukC02f2aUJloaiECHyJYeszIHlXvVYJskHwnFCSz/UnGpkbVBFVwVObgyIuTVy0OVnNBULmDNk+fqR6JC8pQt3wJlKlnsvy0piYnyKLCrDn0Rh79UeGFvXhEJGHhaqS4AwkBjDwo4TLPwgSXD0AjrKnxR7K24dlxY4gA0+V4QL30Nr1JQjVXzG7N4R9HN6SHzVanTe7GkZ4iETG864BkzG2M6suK2vjCeV0YS8ahsVjHXr6GAQKzuqQ2iZVVwvepx8QoJtbYmZtyDK8TXywRjO8F3tMLBlGjRdPmwj5uuo+jKUGxnja4bDoBb5Vlo6mY+TtcuYMuttVhZqNk4635q5OvbFOuSGMbdPimOyV/3oXSaiT+gw4y9T4ytRQYfvQN1UAiAakCEykcQvjI+qm3HC3F5JW1SO5iYRxYdyHpZuW6ya5mFBzdSKuaszEhS8MZS8MYyfsY1vEvSopGN6aDMnF9itbP3L/5a2kTfUx3imnoVEKjvMd530m9THDvnjZ/d9nxMk4eLr/mVpaVjJRQ0KebkfJDuuuLzTc+vxsc7airOqbgQ3GsM94f/DBrqEB4k799T8v1lY8sw9CnQxOK099uDlijtxry1PfXAos/YZg9s9Tt7cN++OJi7mYqgYXU4YThz2sbLyc6hKU7b9dLR7I4aHD5RkssZN37WzJ6HHJaz7KW4LX9lGliTg2AhQPoRBYO3ogI1fZUmT/lG79VRUXfJnwnztEYsEXGKogxxMQXSt/qrr8ug1VJ03mcLZQdI8YKxjg2zegzdMT8rYVw8+Ozs1L5VemNL+F45Bs11YBiTCKwDOB9CfdfpzevsnyE+DJAnF2eczT5Lvh5GzoSltCqoEnRMdiCuMCK8wgpZztK0jzcjuFQQtcGThK2Y8PG2H/TX9EykfPPaGPCyydiEF1JEdasmlXFPAw+9pjUf5XTCTgrwBfAD9dxlZsKMOMgtV2Vhvmlxp2UN6kBu1+pwXdbE4Dz/crpyvLWQRz1sYGy6fCl7fbsG25Ij/aQFAHdHUPVHzRxk2gZO/qYnfyAN6D9zx07nmxPStM9Id/TNE0fLIunCZQutqx59ACV1sXH+HrTHMN268LAU7Dgb2j0OnHEWvFT4/b0SZdjRfXhAUQAGK7wRdkYLb7FpBXfHLhN39TrM0B/5O7twAf4nF/1e3pd/N/0G1YGh5PlTFs2OzX9j5c+j30T+S3gu8UzjDcGF9F7mtkf/ZFTgyvsfE4Q9bAXkrsO9FaxzGbQnSKfB5PNNy6T8pWDmwTlKGqMJ2HShgMkmzst5RgdAPYyEcOTZYBq6xMiGqJn9Kt3AewrpYINqY/HapAxI+C2rsV2YdMXNBjgU1mWF5fZIk7jiuRrSFcUwAwATcyyua1lqZjW59/P5Yn5ICibURfGNuR5C5hP1h+OUJFypddDDROLCL3quGxI95DUnBUj+erf8DsGc9Fs+C1ysgwcLmTGQB9Bh6iyfwfZZmjzNYmsQOjnd5mLWDIs9RBMhQT5CKsVM4EUgc8lovOH/nCg2omzVocvR8U4ajbkH2vb50Oat9EKW1i5ebJsn0a0RMXaWqgTIhV7ltbEoLNkjT00GsVWVex9r5DYd+dTGdTxV8RIDGs1nq3BV0D0DvpUY6B9khUVId8BFFIxeDhXuO/9Xwa+NQz3nTXcRGXKI9eErd2itG0EWvUL+kaMMxDfBgxhoIh+G4lsWChNWqM9NsQBnK/RROT2ozL6RkL8FBbmJBk4uX55wBLMLAv1Hl+esl3MmYvZifZXe5IQxNJqUWfK3BWvNh7baulPiuw/vFGPfcbisC7W0r4KXPDTly7KWZ000ox+uwDX3iJ8YXZWmSvmjujTLuGzCsLci9pquhX2KLa9Y32lA2dz1fK3+Q1EfNcF4QNpHFHOKvnrwhSMpduuzEKQMu2WOgnn9Nx5s3UPO6VHvWd/iH8FzWl0Oyk/XUF14Dibf8T25OlIKq3un9z2FcIJkyZFoXWSo3pL5CPq1TZ94Lct2iiX4uXl8XD+kLIF6W1ooVDNIoM9+s6Q2rnxuENJK8eJ6tlriZdVe/kOfx9dBJCarI/x9E9T2ixSIeON3BX0M14p5zw1YC86BXydang6aE7s8b7cFzBEUJzYMXrmgL1nZPnlZOvaASNNpJgqfj6OqrFjfutjbYWFAmsu2M8Xkp2D9530cjInNqOY4126NfIhdy7nCNTjim2xYk+Tjt3TGfIJEYR8r99go9jrloWV22nxt1ySdZYhqxnfteuTWmg5bHNAeAcAlXgiWpJMmhzlTnzcJgxrrHU/QRpQjbi6NQd9tpNXEjLE2YrKq4nDz5JVNWqduMaV7Fy7LGEZNg0Bd+0Hjl7lY+BsekJxjY/tb2/ZcgY/B0mycnh15VvY8UEVrQUtPJojQybiNxUr4bM4BGagyw5QAhz1MMFSu2UaDsQfuqhdkpNSe+lMWqlr1OnkfnX7G0YfOvF4sfp1SlXy9+/FBL2Xagdv5zTBvgyRT2Kh8wYDvWEKkvKoC3GxTb7Jw3MYQe4luQRy5t87YGhanS92fzBz0WI3Gmq0wvdDAeYiU2V3vMPQsUxBeFb/dOgnUobykX4X7IyODnNWOeX3Hw6TUQMmBQonou+W64pfg/ZPoJPNm+9FLq0bLLeGNTM2HOMjPZvt5nZGVaUFodQVXkNfdFxw5h7fQY9RmOk6H58uZvSwmktnmcPYUfboqL9LOpXNwg8iUaSkErbfx+0P8+fslL0pmyHUeuX8+Cxwfpds8yb1j0N40zLAcEuixgUOIKMD6BZL1AoTTLiaiPHjMKbDTyd6/3nS/wgEavz62mkFKmw7zj+gziCfrC5vcePX59z1gTbz20zhBsSESJhXLyz6KOiJYMLo3BLFpVNV9YNsRXepKxjwpb5ryLMOoUhD8O2qtjEdi+Ez82MJvVa8JEFptR9nGNQ9cg/HxrmQ3gQ+975npx66jF4AMCbdPfcHX0BOeBWQ3doGops3gW+XexU6eWT/eBs5Gz9e8N2Bjr8aeovcxoGzNR97fGPczjZ3bkuxqvOOrtvR5D2dF3PEQ6HZaB1XoSxkMB7W/9qZ2L2bKPe5xnMoud6d93AnnpQtAEDB9MBZWtQ65VKAaj7sypl1B9xT/mlAiMCTyE1xw+pMckhirRmPA2seaxFCQy/ZGxfin8FSo/0GddLC11chCfLWBp9Bu5wZFCQ8g7Ex/XrgtzijXMNyG66mjCzsVEhSeTN3vU55GhEQB8NFfuz8zMls62BU5NQCqxbEEWVFmd3ekRH6+VeY/xlqmZ+Gkl/t0eQy50YBh8YJQFCWxmaZwVNyAH7fOQl3BxW8+LfTzNC6AQPGO7DUTjNKjY3c5voD4ZdcvzLeKODjmyzEJuGrcpYS4MnWo/i+6rpI3TPfYqZYLkTDqTRzhAOfhRFwu4g9VKha4hLm7u/TJhSmIb4Z1bkprnbRar3SVTTXiemDFm848bno38AgRrblVVG9NUSQVBXFt/OYqn1AA6r1W1Myh5KLkrVPR7pPlkbuUDAPww1Djlyi3NrvKXwTBHRXE3UCqrBxFvjmoJckHDNREyimxvDLEmp1Lf48u8+9Ozn747NNuxHee/hmyxFzVWTgsn3PXJ2BAI1Y59bNvybdWFD23i86RLbQKFP2rEhnN6sRtpsRXqbAp3CwW7crHbShuhM9cct38vbMvPWLqauU6QNEx61FBLEt2rzJwtZaTjjCfaQaZ5bpN2+pCiHm+uXw3Rc7lu6Cor98mLECCxEI/ukqFsAKWdQSuQbpBJ/pVisYn3esCVu7vFojyvvAjhZNhex9c9jALh8YVt1PBaC8sxFjY80cWvyOGdE3vng+rOy44GXdiAzsGMlmB750qqTRYB0TT9ArSWcGwic6ZBZmHCwZgdy3r1K3YPDv2zRcoTq309+PBP2pcsSszhrwB+dwdZGwhzym2xJedKVnSnIJgsLwW5LFM3Y1C5J1+rlkT0Pqwodi7/chV6ISDS9/B2Izj3XaCPg4pR3i/J4LsY4oKm7Y6INcqLHwXYKvKJcZ/riMipCjwiC6p/p+GuR/6+d5bE+3oi67mHouGfs6+DGOY2tcSiMxAVrdl7lP+AK01mYvY6rOQWpCXyyd2g3OkgUhFszvhCAgi+DSobBMDF5J/FaDd3nWafLiBEvyo05yMy8SZhDReKhF8YWn5AhDAcrrUTez1OF1jVzQV304Na6g0tfx6t1kOsvb2Plexdg1wxcTkXLHfyQjv7AgAiuqNz9vGbRDsUsC8hvB0N6hzH7SflJpIPDeCoqY5oKZowzbr1Xhv/5CzgIiby8oxaK4R3xuIu7fQMuJ6Tgqcqsgqb+D1RseCJjo1tRQ4ccBe+UtTE2Z66CwiN7g+RdussivLg+beqQoqAuf5AFHsGyayXdt5jVwq167/SZ/zP/1n5u+StLqx7C77WoepTnuw8MDKlx6g2wdseWKFxjCZq/eWW/1Pn8QByiWvcRtR5jiaKqBLYUyc6P5QqFWeKhXFjz/xSpgfXtxceTx6gDY6Lt/pvrxvmmQR5nScyIKGSEPWMfj/3XCgq21WyLApG7YrA3pgm56brhcI9EnSjjRjUrsQxTedtH05z9JmQ0B/qE1jD/tFFnhtv5bX6+TpN895pckdfXWGCLRfeoMbwcO6Yva8F4A2bztJq0OSYRL9DuXdk1/6WOpCvrHP4yQu5fKOW2DqbbGBFtyW/RAvu6Y9YEQH9cc2TH0A6vwa+/Un9aBr9gtqHdSvxFPkvUasm5r/3BlfthuBpfAazRiTeVakzTW3sMkGQXDkxopjWmaW+MV4vAXoOe62SiCCurnYp1WvkalV6b8wkHSDMUQMLqh05YvwCYwnD6fKFbjYd4WXoQZmLzacxsNvdqh82wolzTX4hM0+KPelk3rraxz5P4Nk+cYkz6Ecxzm3qL1XSz1vZBuOz8hPTeMKc3Ot5+NoWcSSaVODxTq7HslwvlvFG0NRsGjv76agrfZF/D87JXtmQ6PeTeEsRZMobL5Zk7vEtxRoW4UydwcKUzL9umQyooqmHj9UmuJKjRYxkj0lV2fMowz8/Xk+4EHcC52jglkMXCTHGCKY/wIGTVtFCsZd0Cizmu+cpmFb1NkDQWXd3F5gdx/z1MeLYXRGSIhXouXpIIJIeTTP8Qk/XIabWdLLMaU4kDSdF5zHw9dbqNvlGb61MQ/gwmLRphKtasQVzkGX2WDUEF/Vilg3ixHthKqHLC7tSe+Zf/m3h7Mbbmz2aPenxkQOyPQ0X4B4boLcCoiyGoOLc3jxxyWLzyjREChxCKDNOcCPaSEYkWf5cmUXr/roXxc1omPNx5nYeAX9y6UnuPS/8+utOjQ0H9koLaR5YhqTFyr+hEtsE9nbNegBTFRQOmSHeAOnlLKY0zjZr3MzYQR2uPKnX9/50j6ftWNSs1uyVk/ICnxNXn6OitxkHoK0K8nf9SLXGIcJG4eQ43NaUcahqwa5V3mbuSbm/6eZmTo544xkWVMuk/uWoxaYOHFP2w77l1whZx/5Rud3HO0T9U7H1Qnz2SxJQYv1fu3IM/CODUdnVnaioou40mA0sVifs2/XHEml/i9r//r/gxv0fidT1uqC9gZLU1RUPFQpgcsJYCwE9IgrBjxdlS3vqK7zN1RxjxK5ToZA4tDsnjPZ/DLLzFgrBQGPlATiQN6bBxQPUAPA7CLCvVUhLhYd/qaI+crBVgWDgo7B53+i/0iKc5+ybLC871Af2n8LJdtoDqqfYqecj5gfsMkAZSqPMjjaPbH3PwKLovdd2ymjjTMMmqYQ2sPbos51X/0Cnc5jv9vvew8qyHYlBPIbpphr1L7SpA7AdXTAgaKIfWXUWmze2KXAfhy6kK/ccwYwaSL2ZD04ZT75ySoPq5i7Iyy9+U5mFj83j7tBOs6CmD3b18z8O17FI2TezIYWEJ2teCSUoKJ2r8HL+jmQamUOuH38rR2HjwpekkjjS6Bi5H8om0K4+nW2shEyDWvYc9BkoAAlDqF3n7d0/WIj5xQqjvEbMZ2ZUTPHMF2gVWQRX5WKp9A37v5hLxkm3u9LuQEeHgpsWybHRnnuC+ptaslICmFKPaYxHxtH5UvKYQxdtkIBs+8H0IdNYjN8kQmnHrF2AH1a7Tu/9NtIxRo3M/SWFjBoZJljJiGsDHELpeP/6XOwNQYvSWLeRjG2ryx0qeVj0uke6vFxSh5LBUjCn21HJzz7pFD98aJ85GmSStnDRa2b12MSkYOuSPP5p9D96W6RaU/mUDj1H4d31yG8i4RdlwWv3EvG/Nte187U3t2k+6ji9kXwMSTsLEjo2wNUe06fLamgdtbLP09SLtFyo3BTxPT87xc0PiZh0yuHG0ZKQYorWuQNVaF4DKtYYBKDpx6k8hZLryy2sb1fAXE6rFfRvWvkTyY8st8UygluHZTtXeeR6PC1fGYa60AzjG13dY99e5IliXvrnUazi8yzbyxC9qat+taeRNbSBfbclsO1dNA1Zh9noNc6M8H6wTOxcAGLjW8soxvyCkgTFwZq+ogTae3I6/uNkq2r3ukb2GKwXJwCWrwBnmPyqZcjEDCqySXVR6q6I0HJ54be1ACldNqMohTFi9acBrO8lSeTu5bldjCtM35esWRUqXJrSMBsD9KznlmhruKOA0ag1pAoTp5umQ0BG7GHiX4acAVSZV7KnRYlhk2uLxjJvqcT/qE1teRysLQzPVob5yko3mhr4CuguARC6Ox+RZW+da+ZINbbftaRbF/76/tVrO+Zmzi7QGFn+2UPpMwUi+spqxQirXK3oXq9BcUpqXPxEv+hRzX12F/XRwRA8GHagjiR0vlEAmc20FgwdT+lmIIZ6OdpDUv1nzyFJpd6HluYI5PNgzFW3/PDHHN9KC0RmbTQV0amRN9DpHagnWjbqwAcmZF5AbWubnfeHBpapDOOvaEf30cw2LzScmIXtdQ2yDcI8KtcpNl0CKzSmmqd9gJqb5fm1lkhFIoV7UiJ085+S0JSr7V958FB7aL+I3OrVuKymVYq/Bk1Ds8rMuRQfU27rUKzq+/rufw2UEnN4glcztHY/IjZzbd7gpUPzXmhx98qOqKu9KY8mLGm/LDPaU822Y88j/a5Jtb8TAiWqdrIhAjFOUCsIwdrQuWs5pqSOnRb6XXexHixu7L/yRqR4RgoRiwwoZd3ssJ0aAj4XJ1C53XVAwvDeoydLFeGl3U/FNmlynU6Fjk2E5SI3KaBmSLspa0xO3sJe66Iyvg2utmvQ35ZzWr0mfjliYIaKEnHVzYVnUJ9iTb9pnW5l4LthGCe/zUJ1yK1R+AcFNaGJIFsV0PkB0Oqo2oLQACIq8N9SHTDdXjU4H5pfKCqACtKgy4uNJsF2S2+9NyGRTAsVAAEJ8u/CZ/H0r+7jYv8CGHpCHkhLU78SjAaOMI3Pn3kptpHFCH4Z4JGQdW6yoTztCJvkSHhpXop5OnCNN9TFbb7cUO1fuPHgziC/ZfsiIb8etqRkbz7fMxoe+E+KowaYuzJTs6W7Kc2a0J1GBoh/RYLvwWj3Un2lk3ynsG04d+FJMPKWtmt2JCGQrgTwms6uB6OIDmqBayvYua3HjzXxxUE0E9+3ualIsEiBRqaDWzQEFxS1AyzPPsSyyGnGtaA6UEE9giKqKXTgdU+7j0S8xbLDYxVrIvzVlpXBw4x/IbVTqAJ4Nxs1aQjpWA0KaAFsCnXGMO2Tlxm7fom46xxJErtsAAfnJBxHeUWcgod31WPJ9c4HdMQgvh1tgQvLHsF/VseHiY1xxV6JmATtSPYsIUAYbcbRQvwsD6vi2MrA4r0/TVAimKm7aSJQ8Z3LkG0ZCSTvMAAAbToOnCDhD4na2H5FohYv27UGhoJDvjRiyP7vwHm4NIRvqlh2Hih697qoElwt92NOrR1PwFvH+5RRfHmqQEzTJgzRsEdjue7WjCLbiH/WgCNXyBIUeYjXN4zEUwT2yaIH4flmnIpHG2yWkOgf3TyOpEApzZV6UhP8ia1J1F2LSAlXuqmZXX+VDr6q+5XasXdFacHvJiL93N2ZvNWyQZFj7oVDSBK24+Qspg3bP/zhAAwSbnTTM76CWEGDxUK/ZrxomBEx7SaZXz7MjFNZrwIMOap7nvvfS+jRNhx6RE3ZZx/dWz7F6g6UAc0mcsm1DhJ/GVIAhLXry0lGxN+CZwYxyhsmLXooaKsSx6kSPwm4cJ/tSTm7H3XEIAFVB6B5mHcFfkgRzAgttU3wE4Cx911WkvASC9RbktPFyX8xPA2kZVyAVthPFMbSX9bvdhhc3cT5jPyHeXtl2FNMhUy5nTlM5q9lvUarzVgZ54vpxgj4MrhyxF4bv8QcYbRFySMPAkYMg42t8L1YhSfJbJ4zwiK9B3YH9fwtGSEtISFECiuJvimnaXX7s+0DRKEHLcoAmxZs5cQYtPomFCrEOGc5TjhutxEMGemBoOjAKTdF0m5rdhNFRNBxxR3NiNDIGcTM2pTZNyAQz4Qv5EKWyEhobY+Q9qzoI4kZqzAUMHh2nHDcxt2q0CkcDT5ZVQlWPaI5j6lbGmF4NikLYsiLqwFafGUdl8sjUUjpnC32twI5mzA7tOHNJtU1v1rM543yIYyF/XXjw4goTpU+jBsNtV0FFGBPh5EhA694WVXdpWVW4S3BXNQ0Vs0D2FvwEfYX8bxDBQjSr30gtsdAtdVU9+pjqwq17p9dawXrLNcMCgUJETFTcj2LjAKHrJw2NUMDGEU5Sqjk+tZDgbE0r06j6BcJACRucrRN7/EO6jex/OKj6YQTBCrIVzJVTgyZXXdNni/P8jdwWWFu5yNvYKHMvvCI0G/B5aBxLDtU8B9F+YkJBSW2O07gwcWbqSxpgapzBwB6biPJDarp+3hiDc4RG3kMQnun+LNqr3i/kpJ56KtIFK5FrZMiGhQpV6IVuC4Xt6BDJE16tn5Nkv+UtFXbI2AoZ9Av4He1pTbWb3U5o3VkqDAOx2rvFa6/+gU7tuzmhokmh+T66rUXbCSc5eTW1oGI3tYoGoUiGI0MX5ON/x1xtlksJEdq/IsS9IQDy3IkRl9WTg/Nyb7gaHwAYnaOo6oWYjC0yI6VxdSr8ngStXZFEcfjXI7nGqa05dpvb+WnUtbUNCMq5fd5KyuUS3zQAeghHlqUsyR/wINzSRx3ViLqsceGD8ZqLszROp5IV85K3RDlBE29fCCHWUqOwyQaJkTHK2yFnxkjf5iV3pPFGlXhft9AkN1Ryok6gTqPhDZ10FssHvNwK54LqYmS1pRdwM1dvZrE9CP7QU98Gsv9nUtFKXA8XNMF1VYZLUfaUH+k1JzWUH0YQM5+rKLBaGPOu1B31ZsMwCZpmkJo1zpscEP9wmxziaRz8zUBNVv00dlk9jo73E9rm+2aFWIbQxGi6jGcSfFIB6IG7sUcpH6mPTyLP2lWXJ3Tq5NuQhAPGogydrj4aD92CBtB550mnuOvfSmjzlqbL6YEUvbbV5HdoG1vN/IFg1Spjw1eUB+aKPh6VUL1MPdxE2RzfSJl6YPL4E3IezWE8c8VT5n+QA=="); -} -body.toggle-bg-panel-page.panel-page-bg-theme-dark-custom.theme-dark { - --panel-page-background-url-theme: var(--background-panel-page-theme-dark-custom); -} - -body.toggle-bg-panel-page.panel-page-bg-theme-light-wall.theme-light { - --panel-page-background-url-theme: url("data:image/avif;base64,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"); -} -body.toggle-bg-panel-page.panel-page-bg-theme-light-custom.theme-light { - --panel-page-background-url-theme: var(--background-panel-page-theme-light-custom); -} - - -body.background-image-settings-switch.toggle-nonoverlapping-bg .workspace-split.mod-root .view-content { - background: var(--background-nonoverlapping-note); -} - -/* Sea and sky for Blue Topaz */ -.workspace-split.mod-root .workspace-leaf:nth-child(n) .workspace-leaf-content[data-type="markdown"]::before { - content: ''; - display: block; - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - opacity: 0.12; - background-size: 100% 100%; -} - -body.background-notebook-liked-switch .markdown-embed :is(.markdown-preview-view, .markdown-rendered), -body.background-notebook-liked-switch .cm-s-obsidian .cm-embed-block { - background: inherit !important; -} -body.background-notebook-liked-switch.notebook-liked-markdown-page-grid-notebook-1 .markdown-preview-view.markdown-rendered, -body.background-notebook-liked-switch.notebook-liked-markdown-page-grid-notebook-1 .cm-s-obsidian .cm-scroller { - background: var(--bg-color-notebook); - background-image: linear-gradient(90deg, var(--grid-notebook-line-color-1) 3%, transparent 0), linear-gradient(var(--grid-notebook-line-color-1) 3%, transparent 0); - background-size: 20px 20px; -} - -body:not(.toggle-fixed-pattern).background-notebook-liked-switch .markdown-preview-view.markdown-rendered, -body:not(.toggle-fixed-pattern).background-notebook-liked-switch .cm-s-obsidian .cm-scroller { - background-attachment: local !important; -} - -body.background-notebook-liked-switch.notebook-liked-markdown-page-dotted-notebook-1 .markdown-preview-view.markdown-rendered, -body.background-notebook-liked-switch.notebook-liked-markdown-page-dotted-notebook-1 .cm-s-obsidian .cm-scroller { - background: var(--bg-color-notebook); - background-image: radial-gradient(var(--dotted-notebook-dot-color) 10%, transparent 0); - background-size: 22px 22px; - background-position: 8px 8px; -} - -body.background-notebook-liked-switch.notebook-liked-markdown-page-dotted-notebook-2 .markdown-preview-view.markdown-rendered, -body.background-notebook-liked-switch.notebook-liked-markdown-page-dotted-notebook-2 .cm-s-obsidian .cm-scroller { - background: var(--bg-color-notebook); - background-image: radial-gradient(var(--dotted-notebook-dot-color) 10%, transparent 0), - radial-gradient(var(--dotted-notebook-dot-color) 10%, transparent 0); - background-size: 30px 30px; - background-position: 0 0, 15px 15px; -} - -/*https://www.jianshu.com/p/2b713844cfe9*/ -body.background-notebook-liked-switch.notebook-liked-markdown-page-grid-notebook-2 .markdown-preview-view.markdown-rendered, -body.background-notebook-liked-switch.notebook-liked-markdown-page-grid-notebook-2 .cm-s-obsidian .cm-scroller { - background: var(--bg-color-notebook); - background-image: - linear-gradient(var(--grid-notebook-line-color-2) 1px, transparent 0), - linear-gradient(90deg, var(--grid-notebook-line-color-2) 1px,transparent 0), - linear-gradient(var(--grid-notebook-line-color-1) 1px, - transparent 0), - linear-gradient(90deg,var(--grid-notebook-line-color-1) 1px, - transparent 0); - background-size: 75px 75px, 75px 75px, 15px 15px, 15px 15px; -} -body.background-notebook-liked-switch.notebook-liked-markdown-page-stripe-notebook-1 .markdown-preview-view.markdown-rendered, -body.background-notebook-liked-switch.notebook-liked-markdown-page-stripe-notebook-1 .cm-s-obsidian .cm-scroller { - background: var(--stripe-notebook-stripe-color); - background-image: repeating-linear-gradient(135deg, - hsla(0,0%,100%,.03), hsla(0,0%,100%,.03) 13px, transparent 0, transparent 30px); -} -body.background-notebook-liked-switch.notebook-liked-markdown-page-stripe-notebook-1.theme-light .markdown-preview-view.markdown-rendered, -body.background-notebook-liked-switch.notebook-liked-markdown-page-stripe-notebook-1.theme-light .cm-s-obsidian .cm-scroller { - background: var(--stripe-notebook-stripe-color); - background-image: repeating-linear-gradient(135deg, - hsla(0,0%,100%,.3), hsla(0,0%,100%,.3) 13px, transparent 0, transparent 30px); -} -body.background-notebook-liked-switch.notebook-liked-markdown-page-stripe-notebook-2 .markdown-preview-view.markdown-rendered, -body.background-notebook-liked-switch.notebook-liked-markdown-page-stripe-notebook-2 .cm-s-obsidian .cm-scroller { - background: var(--stripe-notebook-stripe-color); - background-image:repeating-linear-gradient(45deg, - hsla(0,0%,100%,.025), hsla(0,0%,100%,.025) 20px, transparent 0, transparent 60px), repeating-linear-gradient(-45deg, hsla(0,0%,100%,.025), hsla(0,0%,100%,.025) 20px, transparent 0, transparent 60px); -} -body.background-notebook-liked-switch.notebook-liked-markdown-page-stripe-notebook-2.theme-light .markdown-preview-view.markdown-rendered, -body.background-notebook-liked-switch.notebook-liked-markdown-page-stripe-notebook-2.theme-light .cm-s-obsidian .cm-scroller { - background: var(--stripe-notebook-stripe-color); - background-image:repeating-linear-gradient(45deg, - hsla(0,0%,100%,.3), hsla(0,0%,100%,.3) 20px, transparent 0, transparent 60px), repeating-linear-gradient(-45deg, hsla(0,0%,100%,.3), hsla(0,0%,100%,.3) 20px, transparent 0, transparent 60px); -} - -.workspace-leaf-content .floating-toc-div+.markdown-source-view .cm-editor { - padding-left: 0; -} - -body.toggle-split-note-background .workspace-split.mod-horizontal:is(.mod-left-split,.mod-right-split) .workspace-leaf-content .markdown-rendered, -body.toggle-split-note-background .workspace-split.mod-horizontal:is(.mod-left-split,.mod-right-split) .workspace-tab-container .workspace-leaf-content .cm-scroller, -body.toggle-split-note-background .workspace-split.mod-horizontal:is(.mod-left-split,.mod-right-split) .workspace-tab-container .workspace-leaf-content .markdown-reading-view { - background: initial; -} - -body.background-image-settings-switch .workspace-split.mod-root .workspace-leaf:nth-child(n) .workspace-leaf-content[data-type="markdown"]::before { - content: ''; - display: block; - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - opacity: var(--bg-markdown-page-opacity-cp,0.25); - background-size: cover; -} - - -body.background-image-settings-switch.background-image-settings-markdown-page-transparent .workspace-split.mod-root { - --background-primary: transparent; - --tab-outline-color:transparent; -} - -body.background-image-settings-switch.background-image-settings-markdown-page-transparent.theme-dark .workspace-split.mod-root .workspace-tab-header.is-active { - background-color: transparent; -} -body.background-image-settings-switch.background-image-settings-markdown-page-transparent .mod-root .workspace-tabs .workspace-leaf { - background-color: unset; -} - - - - -body.background-image-settings-switch.background-image-settings-markdown-page-custom.theme-dark .workspace-split.mod-root .workspace-leaf .workspace-leaf-content[data-type="markdown"]::before { - background-image: var(--background-markdown-page-theme-dark-custom); -} - -body.background-image-settings-switch.background-image-settings-markdown-page-custom.theme-light .workspace-split.mod-root .workspace-leaf .workspace-leaf-content[data-type="markdown"]::before { - background-image: var(--background-markdown-page-theme-light-custom); -} -body.background-image-settings-switch.background-image-settings-markdown-page-custom .workspace-split.mod-root .workspace-leaf .workspace-leaf-content[data-type="markdown"]::before { -background-size:unset; -background-color: var(--custom-markdown-page-background-color); -opacity: var(--bg-markdown-page-opacity-cp,1); -} -/* ================================== */ -/* ============= publish ============ */ -/* ================================== */ -/* -.site-body .site-body-left-column-site-name { - color: var(--theme-color); - font-size: 2.5em; -} - -.modal.mod-publish .file-tree-item-checkbox { - filter: hue-rotate(var(--theme-color)); -} - -.graph-view-outer .graph-view-container, -.site-body-left-column, -.site-body-left-column:before { - background-color: var(--background-secondary); -} - -.theme-light .site-body-left-column, -.theme-light .site-body-left-column:before { - background-color: var(--background-secondary-alt-bg-4-bt-publish); -} - -.nav-view-outer .tree-item .tree-item .tree-item-children { - margin-left: 12px; - padding-left: 0; - border-left: 1px solid var(--background-modifier-border); - border-radius: 0; - transition: all 400ms ease-in; -} - -.nav-view-outer .tree-item .tree-item .tree-item-children:hover { - border-left-color: var(--theme-color); -} - -body:not(.default-icons) .nav-view-outer .tree-item-self.collapse-icon { - left: 0px; - top: 7px; - margin-top: 0px; -} - -body:not(.default-icons) .nav-view-outer .tree-item-self .tree-item-icon::before { - content: "↓"; - font-size: 14px; - font-family: 'Inter'; - font-weight: bold; - color: var(--text-accent); - transition: transform 10ms linear 0s; -} - -body:not(.default-icons) .nav-view-outer .tree-item-self .tree-item-icon svg { - display: none; - color: var(--accent-strong); - height: 7px; - width: 7px; -} - -body:not(.default-icons) .nav-view-outer .tree-item.is-collapsed .tree-item-icon.collapse-icon { - transform: translateX(0px) translateY(0px) rotate(-90deg); - opacity: 0.5; -} - -.nav-view-outer .tree-item-self.mod-active { - --background-secondary-alt: var(--interactive-accent); - --text-normal: #ffffff; -} - -.nav-view-outer .tree-item .tree-item-self.is-clickable { - color: var(--text-normal); - font-weight: 600; -} - -.nav-view-outer .tree-item .tree-item-self.is-clickable:hover { - background-color: var(--background-secondary-alt); -} - -.nav-view-outer .tree-item.is-collapsed .tree-item-self.is-clickable { - color: var(--text-muted); -} - -.outline-view-outer .tree-item .tree-item-children { - margin-left: 12px; - padding-left: 0; - border-left: 1px solid var(--background-modifier-border); - border-radius: 0; - transition: all 400ms ease-in; -} - -.outline-view-outer .tree-item.tree-item-children:hover { - border-left-color: var(--theme-color); -} - -.outline-view-outer .tree-item-self { - padding: 2px 6px 2px 10px; -} - -.outline-view-outer .tree-item-self.mod-active { - background-color: var(--theme-color-translucent-015); -} - -.site-body :is(.markdown-preview-view,.markdown-rendered) .tag:not(.token) { - color: var(--tag-text); -} - -.site-body .publish-renderer :is(.markdown-preview-view,.markdown-rendered) ol>li { - border-left: 0.125em solid var(--list-ol-block-color); -} - -.site-body .publish-renderer :is(.markdown-preview-view,.markdown-rendered) ul>li:not(.task-list-item) { - border-left: 0.125em solid var(--list-ul-block-color); -} -*/ - -/* Coloured Folders for Blue Topaz 0-Z, v0.3 -modified from the snippet created by @Lithou */ -body.bt-toggle-colorful-folder:is(.folder-style-change-options-colorful,.folder-style-change-options-colorful-order) .nav-folder-title { - margin-bottom: 0; -} - -body.bt-toggle-colorful-folder:is(.folder-style-change-options-colorful,.folder-style-change-options-colorful-order).theme-dark { - --FoldText: #cbcbcb; -} - -/*color scheme-1, high transparency*/ -body.bt-toggle-colorful-folder.folder-colorful-one.theme-dark { - --Fold0: #ff40403d; - --Fold1: #f31f7448; - --Fold2: #be25ff49; - --Fold3: #7337ff67; - --Fold4: #2f4bff65; - --Fold5: #1372d188; - --Fold6: #0289d17e; - --Fold7: #0096a77e; - --Fold8: #00796b94; - --Fold9: #388e3c80; - --FoldA: #689f3883; - --FoldB: #afb42b81; - --FoldC: #f9ab255d; - --FoldD: #ff910063; - --FoldE: #ef6c0067; - --FoldF: #d8421559; - --FoldG: #1e5f74ca; - --FoldH: #c53571b9; - --FoldI: #4b5d67d0; - --FoldJ: #295d6d7a; - --FoldK: #5734d691; - --FoldL: #4c4c6dda; - --FoldM: #ad62aab9; - --FoldN: #c490e4a1; - --FoldO: #b42a3d8e; - --FoldP: #af173880; - --FoldQ: #4c25a0b2; - --FoldR: #5f84dbc4; - --FoldS: #c06c84ce; - --FoldT: #684656d5; - --FoldU: #797d8581; - --FoldV: #556e53e3; - --FoldW: #2f5241b2; - --FoldX: #834c69ed; - --FoldY: #df85c885; - --FoldZ: #362222ea; -} - -/*color scheme-2, low transparency*/ -body.bt-toggle-colorful-folder.folder-colorful-two.theme-dark { - --Fold0: #823131d7; - --Fold1: #96174ad7; - --Fold2: #731a9ad7; - --Fold3: #543796d7; - --Fold4: #2b3ba2d7; - --Fold5: #185898d7; - --Fold6: #1e6b95d7; - --Fold7: #187782d7; - --Fold8: #0d6a5fd7; - --Fold9: #1f7624d7; - --FoldA: #2f6007ef; - --FoldB: #6c7e12ef; - --FoldC: #7b7e0def; - --FoldD: #7f6c0cef; - --FoldE: #7d550cef; - --FoldF: #76350aef; - --FoldG: #671c14ef; - --FoldH: #710d0def; - --FoldI: #7a0d36ef; - --FoldJ: #710b52ef; - --FoldK: #710e7aef; - --FoldL: #621287ef; - --FoldM: #470f7bef; - --FoldN: #381182ef; - --FoldO: #1c1089ef; - --FoldP: #192698ef; - --FoldQ: #1737a2ef; - --FoldR: #0e4295ef; - --FoldS: #0f5495ef; - --FoldT: #0f5f8eef; - --FoldU: #0d687eef; - --FoldV: #0a7373ef; - --FoldW: #0d6e5def; - --FoldX: #0b6542ef; - --FoldY: #0a642def; - --FoldZ: #105b09ef; -} - -/*color scheme-3*/ -body.bt-toggle-colorful-folder.folder-colorful-three.theme-dark { - --Fold0: #002044d7; - --Fold1: #042b58d7; - --Fold2: #032d5dd7; - --Fold3: #032f60d7; - --Fold4: #04356ed7; - --Fold5: #053c7ad7; - --Fold6: #0f4a8ed7; - --Fold7: #18559ad7; - --Fold8: #1e5fa9d7; - --Fold9: #296bb6d7; - --FoldA: #003404ef; - --FoldB: #014406ef; - --FoldC: #004c06ef; - --FoldD: #005607ef; - --FoldE: #005d08ef; - --FoldF: #006c09ef; - --FoldG: #007a06ef; - --FoldH: #4e3200ef; - --FoldI: #5d3c00ef; - --FoldJ: #6c4600ef; - --FoldK: #784e00ef; - --FoldL: #8c5b00ef; - --FoldM: #915e00ef; - --FoldN: #a06800ef; - --FoldO: #5d0000ef; - --FoldP: #640000ef; - --FoldQ: #780000ef; - --FoldR: #870000ef; - --FoldS: #930000ef; - --FoldT: #a20000ef; - --FoldU: #0a0f58ef; - --FoldV: #050b64ef; - --FoldW: #091075ef; - --FoldX: #131a82ef; - --FoldY: #1f2791ef; - --FoldZ: #2a3296ef; -} - -/*color scheme-4*/ -body.bt-toggle-colorful-folder.folder-colorful-four.theme-dark { - --Fold0: #002f65d7; - --Fold1: #003675d7; - --Fold2: #003d82d7; - --Fold3: #004696d7; - --Fold4: #0053b1d7; - --Fold5: #0657b5d7; - --Fold6: #0b66ced7; - --Fold7: #156cd0d7; - --Fold8: #2278dad7; - --Fold9: #2879d6d7; - --FoldA: #001e5fef; - --FoldB: #002473ef; - --FoldC: #002d90ef; - --FoldD: #0135a5ef; - --FoldE: #073bb6ef; - --FoldF: #0d46c2ef; - --FoldG: #1253d6ef; - --FoldH: #002351ef; - --FoldI: #00306eef; - --FoldJ: #05336fef; - --FoldK: #093c7eef; - --FoldL: #0f4489ef; - --FoldM: #19529def; - --FoldN: #2965b3ef; - --FoldO: #003156ef; - --FoldP: #003f6fef; - --FoldQ: #004b84ef; - --FoldR: #005190ef; - --FoldS: #07599bef; - --FoldT: #1c6db0ef; - --FoldU: #003d5aef; - --FoldV: #004d71ef; - --FoldW: #005c87ef; - --FoldX: #066996ef; - --FoldY: #1379a9ef; - --FoldZ: #1b89bbef; -} - -/*color scheme-5*/ -body.bt-toggle-colorful-folder.folder-colorful-five.theme-dark { - --Fold0: #7b7b05d7; - --Fold1: #2d7a04d7; - --Fold2: #097a4bd7; - --Fold3: #09756fd7; - --Fold4: #0a6b7ad7; - --Fold5: #0b556ed7; - --Fold6: #0b426fd7; - --Fold7: #0d226ed7; - --Fold8: #350e6cd7; - --Fold9: #5b0254d7; - --FoldA: #350e6cd7; - --FoldB: #0d226ed7; - --FoldC: #0b426fd7; - --FoldD: #0b556ed7; - --FoldE: #09756fd7; - --FoldF: #097a4bd7; - --FoldG: #2d7a04d7; - --FoldH: #7b7b05d7; - --FoldI: #2d7a04d7; - --FoldJ: #097a4bd7; - --FoldK: #09756fd7; - --FoldL: #0b556ed7; - --FoldM: #0b556ed7; - --FoldN: #0b426fd7; - --FoldO: #0d226ed7; - --FoldP: #350e6cd7; - --FoldQ: #5b0254d7; - --FoldR: #350e6cd7; - --FoldS: #0d226ed7; - --FoldT: #0b426fd7; - --FoldU: #0b556ed7; - --FoldV: #0b556ed7; - --FoldW: #09756fd7; - --FoldX: #097a4bd7; - --FoldY: #2d7a04d7; - --FoldZ: #7b7b05d7; -} - -body.bt-toggle-colorful-folder:is(.folder-style-change-options-colorful,.folder-style-change-options-colorful-order).theme-light { - --FoldText: #000000; -} - -/*color scheme-1, high transparency*/ -body.bt-toggle-colorful-folder.folder-colorful-one.theme-light { - --Fold0: #f3bfbf54; - --Fold1: #ffbdd769; - --Fold2: #ebbcff69; - --Fold3: #ccb7ff65; - --Fold4: #b1bcff5e; - --Fold5: #98c6f45d; - --Fold6: #99ceeb5d; - --Fold7: #81dee95d; - --Fold8: #6ec7bc5b; - --Fold9: #8dde9162; - --FoldA: #a5dd745e; - --FoldB: #c9d96c5e; - --FoldC: #dbdd6a65; - --FoldD: #e5cb5965; - --FoldE: #e6b25365; - --FoldF: #e5915965; - --FoldG: #df756765; - --FoldH: #f46f6f65; - --FoldI: #f16fa16e; - --FoldJ: #ec6bc66e; - --FoldK: #de6ce86e; - --FoldL: #be62e96e; - --FoldM: #ad6cea6e; - --FoldN: #966ce66e; - --FoldO: #786be56e; - --FoldP: #717ce26e; - --FoldQ: #748fe76e; - --FoldR: #6f9ee96e; - --FoldS: #6fade86e; - --FoldT: #68b8e76e; - --FoldU: #63c9e36e; - --FoldV: #6ed3d36e; - --FoldW: #61c0b06e; - --FoldX: #4dbc916e; - --FoldY: #52bb7b6e; - --FoldZ: #5fbb576e; -} - -/*color scheme-2, low transparency*/ -body.bt-toggle-colorful-folder.folder-colorful-two.theme-light { - --Fold0: #ffe2e2; - --Fold1: #ffdee9; - --Fold2: #f6e1ff; - --Fold3: #e9dfff; - --Fold4: #e1e5ff; - --Fold5: #d4eaff; - --Fold6: #cdedff; - --Fold7: #ccf2f7; - --Fold8: #d5f8f4; - --Fold9: #d8f8da; - --FoldA: #ecffdb; - --FoldB: #f4fbd2; - --FoldC: #f7f8cf; - --FoldD: #f7f0cc; - --FoldE: #fdeed2; - --FoldF: #ffe4d3; - --FoldG: #ffdbd6; - --FoldH: #ffdfdf; - --FoldI: #ffdce9; - --FoldJ: #ffdbf4; - --FoldK: #fcddff; - --FoldL: #f4dbff; - --FoldM: #ecd7ff; - --FoldN: #e5d7ff; - --FoldO: #dad6ff; - --FoldP: #d6daff; - --FoldQ: #d7e1ff; - --FoldR: #d5e5ff; - --FoldS: #d3eaff; - --FoldT: #d3eeff; - --FoldU: #d6f7ff; - --FoldV: #d6ffff; - --FoldW: #dafff8; - --FoldX: #dcfcef; - --FoldY: #dcffe9; - --FoldZ: #defcdc; -} - - -/*color scheme-3*/ -body.bt-toggle-colorful-folder.folder-colorful-three.theme-light { - --Fold0: #80dc87ef; - --Fold1: #8fe296ef; - --Fold2: #9de5a3ef; - --Fold3: #b1ebb6ef; - --Fold4: #bbebbfef; - --Fold5: #c8ebcbef; - --Fold6: #d9ecdaef; - --FoldG: #50a2ffd7; - --FoldF: #60aaffd7; - --FoldE: #6eb2ffd7; - --FoldD: #76b6ffd7; - --FoldC: #89c0ffd7; - --FoldB: #93c5ffd7; - --FoldA: #aad2ffd7; - --Fold9: #bbdbffd7; - --Fold8: #c8e2ffd7; - --Fold7: #d2e7ffd7; - --FoldH: #ffbc40ef; - --FoldI: #ffc75fef; - --FoldJ: #ffcd71ef; - --FoldK: #ffd485ef; - --FoldL: #ffe0a6ef; - --FoldM: #ffe7bbef; - --FoldN: #ffedcbef; - --FoldO: #ff7676ef; - --FoldP: #ff9494ef; - --FoldQ: #ffa1a1ef; - --FoldR: #ffb8b8ef; - --FoldS: #ffcbcbef; - --FoldT: #ffe1e1ef; - --FoldU: #a38fffef; - --FoldV: #b09fffef; - --FoldW: #c2b5ffef; - --FoldX: #d2c6ffef; - --FoldY: #e0daffef; - --FoldZ: #eae4ffef; -} - -/*color scheme-4*/ -body.bt-toggle-colorful-folder.folder-colorful-four.theme-light { - --Fold0: #50a2ffd7; - --Fold1: #60aaffd7; - --Fold2: #6eb2ffd7; - --Fold3: #76b6ffd7; - --Fold4: #89c0ffd7; - --Fold5: #93c5ffd7; - --Fold6: #aad2ffd7; - --Fold7: #bbdbffd7; - --Fold8: #c8e2ffd7; - --Fold9: #d2e7ffd7; - --FoldA: #709effef; - --FoldB: #81a9ffef; - --FoldC: #92b5ffef; - --FoldD: #a4c1ffef; - --FoldE: #b4cbffef; - --FoldF: #c3d6ffef; - --FoldG: #d4e2ffef; - --FoldH: #7ab3ffef; - --FoldI: #86bbffef; - --FoldJ: #9dc7ffef; - --FoldK: #acd0ffef; - --FoldL: #b1d3ffef; - --FoldM: #c6dfffef; - --FoldN: #d1e5ffef; - --FoldO: #80c8ffef; - --FoldP: #97d2ffef; - --FoldQ: #a9daffef; - --FoldR: #b7e0ffef; - --FoldS: #c8e6ffef; - --FoldT: #d9eeffef; - --FoldU: #7dd6ffef; - --FoldV: #94ddffef; - --FoldW: #a4e2ffef; - --FoldX: #b5e8ffef; - --FoldY: #c5edffef; - --FoldZ: #d2f1ffef; -} - -/*color scheme-5*/ -body.bt-toggle-colorful-folder.folder-colorful-five.theme-light { - --Fold0: #e4e483d7; - --Fold1: #bde7a7d7; - --Fold2: #9de2c5d7; - --Fold3: #93dad6d7; - --Fold4: #9de2ecd7; - --Fold5: #8ddcf7d7; - --Fold6: #8acaffd7; - --Fold7: #aebdf3d7; - --Fold8: #cab2ebd7; - --Fold9: #e9b1e5d7; - --FoldA: #cab2ebd7; - --FoldB: #aebdf3d7; - --FoldC: #8acaffd7; - --FoldD: #9de2ecd7; - --FoldE: #93dad6d7; - --FoldF: #9de2c5d7; - --FoldG: #bde7a7d7; - --FoldH: #e4e483d7; - --FoldI: #bde7a7d7; - --FoldJ: #9de2c5d7; - --FoldK: #93dad6d7; - --FoldL: #9de2ecd7; - --FoldM: #8ddcf7d7; - --FoldN: #8acaffd7; - --FoldO: #aebdf3d7; - --FoldP: #cab2ebd7; - --FoldQ: #e9b1e5d7; - --FoldR: #cab2ebd7; - --FoldS: #aebdf3d7; - --FoldT: #8acaffd7; - --FoldU: #8ddcf7d7; - --FoldV: #9de2ecd7; - --FoldW: #93dad6d7; - --FoldX: #9de2c5d7; - --FoldY: #bde7a7d7; - --FoldZ: #e4e483d7; -} - -/*color scheme-custom*/ -body.bt-toggle-colorful-folder.folder-colorful-custom:not(.folder-style-change-options-colorful-default) { - --Fold0: hue-rotate(350deg); - --Fold1: hue-rotate(340deg); - --Fold2: hue-rotate(330deg); - --Fold3: hue-rotate(320deg); - --Fold4: hue-rotate(310deg); - --Fold5: hue-rotate(300deg); - --Fold6: hue-rotate(290deg); - --Fold7: hue-rotate(280deg); - --Fold8: hue-rotate(270deg); - --Fold9: hue-rotate(260deg); - --FoldA: hue-rotate(250deg); - --FoldB: hue-rotate(240deg); - --FoldC: hue-rotate(230deg); - --FoldD: hue-rotate(220deg); - --FoldE: hue-rotate(210deg); - --FoldF: hue-rotate(200deg); - --FoldG: hue-rotate(190deg); - --FoldH: hue-rotate(180deg); - --FoldJ: hue-rotate(170deg); - --FoldK: hue-rotate(160deg); - --FoldL: hue-rotate(150deg); - --FoldM: hue-rotate(140deg); - --FoldN: hue-rotate(130deg); - --FoldO: hue-rotate(120deg); - --FoldP: hue-rotate(110deg); - --FoldQ: hue-rotate(100deg); - --FoldR: hue-rotate(90deg); - --FoldS: hue-rotate(80deg); - --FoldT: hue-rotate(70deg); - --FoldU: hue-rotate(60deg); - --FoldV: hue-rotate(50deg); - --FoldW: hue-rotate(40deg); - --FoldX: hue-rotate(30deg); - --FoldY: hue-rotate(20deg); - --FoldZ: hue-rotate(10deg); -} - -body.bt-toggle-colorful-folder.folder-colorful-six { - --Fold0: #fc5c65; - --Fold1: #fd9644; - --Fold2: #fed330; - --Fold3: #26de81; - --Fold4: #2bcbba; - --Fold5: #45aaf2; - --Fold6: #4b7bec; - --Fold7: #a55eea; - --Fold8: #d1d8e0; - --Fold9: #778ca3; - --FoldA: #eb3b5a; - --FoldB: #fa8231; - --FoldC: #f7b731; - --FoldD: #20bf6b; - --FoldE: #0fb9b1; - --FoldF: #2d98da; - --FoldG: #3867d6; - --FoldH: #8854d0; - --FoldI: #a5b1c2; - --FoldJ: #4b6584; - --FoldK: #fc5c65; - --FoldL: #fd9644; - --FoldM: #fed330; - --FoldN: #26de81; - --FoldO: #2bcbba; - --FoldP: #45aaf2; - --FoldQ: #4b7bec; - --FoldR: #a55eea; - --FoldS: #d1d8e0; - --FoldT: #778ca3; - --FoldU: #eb3b5a; - --FoldV: #fa8231; - --FoldW: #f7b731; - --FoldX: #20bf6b; - --FoldY: #0fb9b1; - --FoldZ: #2d98da; -} -/* =======folder-colorful-custom============= */ -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder .nav-folder-title:hover, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder .nav-file-title:hover{ - font-weight: bold; -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title+.nav-folder-children .nav-file-title.is-active { - opacity: 0.8; - background-color: var(--folder-colorful-custom-color); -} - -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="0"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="0"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="0"]+.nav-folder-children .nav-file-title.is-active { - filter: var(--Fold0); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="1"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="1"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="1"]+.nav-folder-children .nav-file-title.is-active { - filter: var(--Fold1); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="2"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="2"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="2"]+.nav-folder-children .nav-file-title.is-active { - filter: var(--Fold2); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="3"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="3"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="3"]+.nav-folder-children .nav-file-title.is-active { - filter: var(--Fold3); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="4"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="4"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="4"]+.nav-folder-children .nav-file-title.is-active { - filter: var(--Fold4); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="5"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="5"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="5"]+.nav-folder-children .nav-file-title.is-active { - filter: var(--Fold5); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="6"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="6"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="6"]+.nav-folder-children .nav-file-title.is-active { - filter: var(--Fold6); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="7"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="7"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="7"]+.nav-folder-children .nav-file-title.is-active { - filter: var(--Fold7); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="8"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="8"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="8"]+.nav-folder-children .nav-file-title.is-active { - filter: var(--Fold8); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="9"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="9"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="9"]+.nav-folder-children .nav-file-title.is-active { - filter: var(--Fold9); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="A"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="A"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="A"]+.nav-folder-children .nav-file-title.is-active { - filter: var(--FoldA); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="B"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="B"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="B"]+.nav-folder-children .nav-file-title.is-active { - filter: var(--FoldB); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="C"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="C"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="C"]+.nav-folder-children .nav-file-title.is-active { - filter: var(--FoldC); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="D"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="D"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="D"]+.nav-folder-children .nav-file-title.is-active { - filter: var(--FoldD); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="E"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="E"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="E"]+.nav-folder-children .nav-file-title.is-active { - filter: var(--FoldE); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="F"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="F"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="F"]+.nav-folder-children .nav-file-title.is-active { - filter: var(--FoldF); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="G"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="G"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="G"]+.nav-folder-children .nav-file-title.is-active { - filter: var(--FoldG); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="H"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="H"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="H"]+.nav-folder-children .nav-file-title.is-active { - filter: var(--FoldH); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="I"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="I"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="I"]+.nav-folder-children .nav-file-title.is-active { - filter: var(--FoldI); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="J"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="J"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="J"]+.nav-folder-children .nav-file-title.is-active { - filter: var(--FoldJ); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="K"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="K"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="K"]+.nav-folder-children .nav-file-title.is-active { - filter: var(--FoldK); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="L"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="L"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="L"]+.nav-folder-children .nav-file-title.is-active { - filter: var(--FoldL); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="M"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="M"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="M"]+.nav-folder-children .nav-file-title.is-active { - filter: var(--FoldM); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="N"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="N"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="N"]+.nav-folder-children .nav-file-title.is-active { - filter: var(--FoldN); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="O"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="O"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="O"]+.nav-folder-children .nav-file-title.is-active { - filter: var(--FoldO); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="P"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="P"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="P"]+.nav-folder-children .nav-file-title.is-active { - filter: var(--FoldP); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="Q"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="Q"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="Q"]+.nav-folder-children .nav-file-title.is-active { - filter: var(--FoldQ); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="R"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="R"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="R"]+.nav-folder-children .nav-file-title.is-active { - filter: var(--FoldR); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="S"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="S"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="S"]+.nav-folder-children .nav-file-title.is-active { - filter: var(--FoldS); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="T"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="T"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="T"]+.nav-folder-children .nav-file-title.is-active { - filter: var(--FoldT); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="U"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="U"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="U"]+.nav-folder-children .nav-file-title.is-active { - filter: var(--FoldU); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="V"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="V"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="V"]+.nav-folder-children .nav-file-title.is-active { - filter: var(--FoldV); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="W"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="W"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="W"]+.nav-folder-children .nav-file-title.is-active { - filter: var(--FoldW); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="X"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="X"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="X"]+.nav-folder-children .nav-file-title.is-active { - filter: var(--FoldX); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="Y"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="Y"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="Y"]+.nav-folder-children .nav-file-title.is-active { - filter: var(--FoldY); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="Z"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="Z"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="Z"]+.nav-folder-children .nav-file-title.is-active { - filter: var(--FoldZ); -} - -/* ===folder-style-change-options-colorful-order ============ */ - -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-order .nav-folder.mod-root>.nav-folder-children>.nav-folder .nav-file-title { - color: var(--FoldText); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-order .nav-folder.mod-root>.nav-folder-children>.nav-folder .nav-folder-title.is-active, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-order .nav-folder.mod-root>.nav-folder-children>.nav-folder .nav-folder-title:hover { - font-weight: bold; - filter: saturate(150%); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-order .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+2) .nav-folder-title, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-order .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+2) .nav-folder-title+.nav-folder-children { - background-color: var(--Fold0); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-order .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+3) .nav-folder-title, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-order .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+3) .nav-folder-title+.nav-folder-children { - background-color: var(--Fold1); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-order .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+4) .nav-folder-title, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-order .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+4) .nav-folder-title+.nav-folder-children { - background-color: var(--Fold2); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-order .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+5) .nav-folder-title, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-order .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+5) .nav-folder-title+.nav-folder-children { - background-color: var(--Fold3); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-order .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+6) .nav-folder-title, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-order .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+6) .nav-folder-title+.nav-folder-children { - background-color: var(--Fold4); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-order .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+7) .nav-folder-title, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-order .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+7) .nav-folder-title+.nav-folder-children { - background-color: var(--Fold5); -} - -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-order .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+8) .nav-folder-title, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-order .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+8) .nav-folder-title+.nav-folder-children { - background-color: var(--Fold6); -} - -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-order .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+9) .nav-folder-title, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-order .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+9) .nav-folder-title+.nav-folder-children { - background-color: var(--Fold7); -} - -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-order .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+10) .nav-folder-title, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-order .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+10) .nav-folder-title+.nav-folder-children { - background-color: var(--Fold8); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-order .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+11) .nav-folder-title, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-order .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+11) .nav-folder-title+.nav-folder-children { - background-color: var(--Fold9); -} - -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-order .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+12) .nav-folder-title, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-order .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+12) .nav-folder-title+.nav-folder-children { - background-color: var(--FoldA); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-order .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+13) .nav-folder-title, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-order .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+13) .nav-folder-title+.nav-folder-children { - background-color: var(--FoldB); -} - -/*=====folder colorful title=====*/ -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-title .nav-folder.mod-root>.nav-folder-children>.nav-folder .nav-folder-title.is-active, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-title .nav-folder.mod-root>.nav-folder-children>.nav-folder .nav-file-title.is-active, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-title .nav-folder.mod-root>.nav-folder-children>.nav-folder .nav-folder-title:hover, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-title .nav-folder.mod-root>.nav-folder-children>.nav-folder .nav-file-title:hover{ - font-weight: bold; - filter: saturate(150%); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-title .nav-folder.mod-root>.nav-folder-children>.nav-folder .nav-folder-title { - font-weight: 600; -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-title .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+2) .nav-folder-title, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-title .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+2) .nav-file-title { - color: var(--Fold0); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-title .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+3) .nav-folder-title, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-title .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+3) .nav-file-title { - color: var(--Fold1); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-title .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+4) .nav-folder-title, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-title .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+4) .nav-file-title{ - color: var(--Fold2); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-title .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+5) .nav-folder-title, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-title .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+5) .nav-file-title { - color: var(--Fold3); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-title .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+6) .nav-folder-title, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-title .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+6) .nav-file-title { - color: var(--Fold4); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-title .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+7) .nav-folder-title, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-title .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+7) .nav-file-title { - color: var(--Fold5); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-title .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+8) .nav-folder-title, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-title .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+8) .nav-file-title { - color: var(--Fold6); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-title .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+9) .nav-folder-title, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-title .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+9) .nav-file-title { - color: var(--Fold7); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-title .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+10) .nav-folder-title, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-title .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+10) .nav-file-title { - color: var(--Fold8); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-title .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+11) .nav-folder-title, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-title .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+11) .nav-file-title { - color: var(--Fold9); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-title .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+12) .nav-folder-title, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-title .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+12) .nav-file-title { - color: var(--FoldA); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-title .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+13) .nav-folder-title, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-title .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+13) .nav-file-title { - color: var(--FoldB); -} - -/*=====folder-colorful-custom=====*/ -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-order.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder .nav-folder-title, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-order.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder .nav-folder-title+.nav-folder-children { - background-color: var(--folder-colorful-custom-color); -} - -body.bt-toggle-colorful-folder:is(.folder-style-change-options-colorful,.folder-style-change-options-colorful-order,.folder-style-change-options-colorful-title) { - --folder-colorful-custom-color: var(--theme-color); -} - -body.bt-toggle-colorful-folder.folder-colorful-custom:not(.folder-style-change-options-colorful-default) .nav-folder.mod-root>.nav-folder-children>.nav-folder .nav-folder-title.is-active, -body.bt-toggle-colorful-folder.folder-colorful-custom:not(.folder-style-change-options-colorful-default) .nav-folder.mod-root>.nav-folder-children>.nav-folder .nav-file-title.is-active, -body.bt-toggle-colorful-folder.folder-colorful-custom:not(.folder-style-change-options-colorful-default) .nav-folder.mod-root>.nav-folder-children>.nav-folder .nav-folder-title:hover, -body.bt-toggle-colorful-folder.folder-colorful-custom:not(.folder-style-change-options-colorful-default) .nav-folder.mod-root>.nav-folder-children>.nav-folder .nav-file-title:hover{ - font-weight: bold; - filter: saturate(150%); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-title.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder .nav-folder-title, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-title.folder-colorful-custom .nav-folder.mod-root>.nav-folder-children>.nav-folder .nav-file-title { - color:var(--folder-colorful-custom-color); - font-weight: 600; -} -body.bt-toggle-colorful-folder.folder-colorful-custom:not(.folder-style-change-options-colorful-default) .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+2) .nav-folder-title, -body.bt-toggle-colorful-folder.folder-colorful-custom:not(.folder-style-change-options-colorful-default) .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+2) .nav-file-title { - filter: var(--Fold0); -} -body.bt-toggle-colorful-folder.folder-colorful-custom:not(.folder-style-change-options-colorful-default) .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+3) .nav-folder-title, -body.bt-toggle-colorful-folder.folder-colorful-custom:not(.folder-style-change-options-colorful-default) .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+3) .nav-file-title { - filter: var(--Fold1); -} -body.bt-toggle-colorful-folder.folder-colorful-custom:not(.folder-style-change-options-colorful-default) .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+4) .nav-folder-title, -body.bt-toggle-colorful-folder.folder-colorful-custom:not(.folder-style-change-options-colorful-default) .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+4) .nav-file-title { - filter: var(--Fold2); -} -body.bt-toggle-colorful-folder.folder-colorful-custom:not(.folder-style-change-options-colorful-default) .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+5) .nav-folder-title, -body.bt-toggle-colorful-folder.folder-colorful-custom:not(.folder-style-change-options-colorful-default) .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+5) .nav-file-title { - filter: var(--Fold3); -} -body.bt-toggle-colorful-folder.folder-colorful-custom:not(.folder-style-change-options-colorful-default) .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+6) .nav-folder-title, -body.bt-toggle-colorful-folder.folder-colorful-custom:not(.folder-style-change-options-colorful-default) .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+6) .nav-file-title { - filter: var(--Fold4); -} -body.bt-toggle-colorful-folder.folder-colorful-custom:not(.folder-style-change-options-colorful-default) .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+7) .nav-folder-title, -body.bt-toggle-colorful-folder.folder-colorful-custom:not(.folder-style-change-options-colorful-default) .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+7) .nav-file-title { - filter: var(--Fold5); -} -body.bt-toggle-colorful-folder.folder-colorful-custom:not(.folder-style-change-options-colorful-default) .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+8) .nav-folder-title, -body.bt-toggle-colorful-folder.folder-colorful-custom:not(.folder-style-change-options-colorful-default) .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+8) .nav-file-title { - filter: var(--Fold6); -} -body.bt-toggle-colorful-folder.folder-colorful-custom:not(.folder-style-change-options-colorful-default) .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+9) .nav-folder-title, -body.bt-toggle-colorful-folder.folder-colorful-custom:not(.folder-style-change-options-colorful-default) .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+9) .nav-file-title { - filter: var(--Fold7); -} -body.bt-toggle-colorful-folder.folder-colorful-custom:not(.folder-style-change-options-colorful-default) .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+10) .nav-folder-title, -body.bt-toggle-colorful-folder.folder-colorful-custom:not(.folder-style-change-options-colorful-default) .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+10) .nav-file-title { - filter: var(--Fold8); -} -body.bt-toggle-colorful-folder.folder-colorful-custom:not(.folder-style-change-options-colorful-default) .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+11) .nav-folder-title, -body.bt-toggle-colorful-folder.folder-colorful-custom:not(.folder-style-change-options-colorful-default) .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+11) .nav-file-title { - filter: var(--Fold9); -} -body.bt-toggle-colorful-folder.folder-colorful-custom:not(.folder-style-change-options-colorful-default) .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+12) .nav-folder-title, -body.bt-toggle-colorful-folder.folder-colorful-custom:not(.folder-style-change-options-colorful-default) .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+12) .nav-file-title { - filter: var(--FoldA); -} -body.bt-toggle-colorful-folder.folder-colorful-custom:not(.folder-style-change-options-colorful-default) .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+13) .nav-folder-title, -body.bt-toggle-colorful-folder.folder-colorful-custom:not(.folder-style-change-options-colorful-default) .nav-folder.mod-root>.nav-folder-children>.nav-folder:nth-child(12n+13) .nav-file-title { - filter: var(--FoldB); -} - -/* Set up explorer container margins */ -body.bt-toggle-colorful-folder:is(.folder-style-change-options-colorful,.folder-style-change-options-colorful-order) .nav-files-container { - margin: 0 5px; -} - -/* Remove collapse arrow from top level folders */ -body.remove-arrow.bt-toggle-colorful-folder:is(.folder-style-change-options-colorful,.folder-style-change-options-colorful-order) .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title>.nav-folder-collapse-indicator { - display: none; -} - -/* Top Level Folder Titles */ -body.bt-toggle-colorful-folder:is(.folder-style-change-options-colorful,.folder-style-change-options-colorful-order) .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title { - color: var(--FoldText); - padding: var(--nav-item-parent-padding); - padding-bottom: 4px; - /* padding-left: 3px; */ - margin-top: 3px; - /* space between top level sections */ - border-radius: 5px 5px 0 0; -} - -/* Rounded borders */ -body.bt-toggle-colorful-folder:is(.folder-style-change-options-colorful,.folder-style-change-options-colorful-order) .nav-folder.mod-root>.nav-folder-children>.nav-folder.is-collapsed>.nav-folder-title { - border-radius: 5px; -} - -/* General Nav Folder Children (this is the part that expands from each top level folder) */ -body.bt-toggle-colorful-folder:is(.folder-style-change-options-colorful,.folder-style-change-options-colorful-order) .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-children { - margin-left: 0; - border-radius: 0 0 5px 5px; - padding-bottom: 5px; - border-left: 0px solid; - padding-left:1em; -} - -body.bt-toggle-colorful-folder:is(.folder-style-change-options-colorful,.folder-style-change-options-colorful-order) .nav-file-title { - padding-left: 5px; -} - -body.bt-toggle-colorful-folder:is(.folder-style-change-options-colorful,.folder-style-change-options-colorful-order) .nav-file-title-content { - color: var(--FoldText); -} - -/* -body.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder>.nav-folder-children { - margin-left: 0; - padding-left: 0; - border-left: unset !important; - border-radius: 0; - transition: all 400ms ease-in; -} -*/ -body.bt-toggle-colorful-folder:is(.folder-style-change-options-colorful,.folder-style-change-options-colorful-order).is-mobile .nav-folder-title { - margin-bottom: 0; -} - -body.bt-toggle-colorful-folder:is(.folder-style-change-options-colorful,.folder-style-change-options-colorful-order) .nav-folder-children .nav-folder-children { - border-left: 1px solid var(--text-muted); -} - -body.bt-toggle-colorful-folder:is(.folder-style-change-options-colorful,.folder-style-change-options-colorful-order).is-mobile .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-children { - padding-bottom: 5px; -} - -/* active file increase font size and removes normal highlight marker */ -body.bt-toggle-colorful-folder:is(.folder-style-change-options-colorful,.folder-style-change-options-colorful-order) .nav-file-title.is-active { - background-color: var(--theme-color-translucent-015); -} - -/* Adds hemisphere marker to active file instead */ -body.bt-toggle-colorful-folder:is(.folder-style-change-options-colorful,.folder-style-change-options-colorful-order) .nav-file-title.is-active::before { - content: ''; - position: absolute; - bottom: -1px; - left: 0; - height: 2px; - width: 100%; - background-image: linear-gradient(to right, var(--theme-color), transparent 90%); -} - -body.unmuted-collapsed-folder.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.is-collapsed { - opacity: 1; -} - -/* 16 Top level Folders By Starting Digit (0-F) -These are set for me by leading number/letter which also ensures they are in the correct order when sorted alphabetically -You can change these to match your use case. -*/ -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="0"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="0"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="0"]+.nav-folder-children .nav-file-title.is-active { - background-color: var(--Fold0); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="1"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="1"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="1"]+.nav-folder-children .nav-file-title.is-active { - background-color: var(--Fold1); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="2"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="2"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="2"]+.nav-folder-children .nav-file-title.is-active { - background-color: var(--Fold2); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="3"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="3"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="3"]+.nav-folder-children .nav-file-title.is-active { - background-color: var(--Fold3); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="4"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="4"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="4"]+.nav-folder-children .nav-file-title.is-active { - background-color: var(--Fold4); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="5"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="5"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="5"]+.nav-folder-children .nav-file-title.is-active { - background-color: var(--Fold5); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="6"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="6"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="6"]+.nav-folder-children .nav-file-title.is-active { - background-color: var(--Fold6); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="7"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="7"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="7"]+.nav-folder-children .nav-file-title.is-active { - background-color: var(--Fold7); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="8"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="8"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="8"]+.nav-folder-children .nav-file-title.is-active { - background-color: var(--Fold8); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="9"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="9"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="9"]+.nav-folder-children .nav-file-title.is-active { - background-color: var(--Fold9); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="A"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="A"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="A"]+.nav-folder-children .nav-file-title.is-active { - background-color: var(--FoldA); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="B"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="B"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="B"]+.nav-folder-children .nav-file-title.is-active { - background-color: var(--FoldB); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="C"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="C"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="C"]+.nav-folder-children .nav-file-title.is-active { - background-color: var(--FoldC); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="D"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="D"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="D"]+.nav-folder-children .nav-file-title.is-active { - background-color: var(--FoldD); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="E"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="E"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="E"]+.nav-folder-children .nav-file-title.is-active { - background-color: var(--FoldE); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="F"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="F"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="F"]+.nav-folder-children .nav-file-title.is-active { - background-color: var(--FoldF); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="G"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="G"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="G"]+.nav-folder-children .nav-file-title.is-active { - background-color: var(--FoldG); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="H"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="H"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="H"]+.nav-folder-children .nav-file-title.is-active { - background-color: var(--FoldH); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="I"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="I"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="I"]+.nav-folder-children .nav-file-title.is-active { - background-color: var(--FoldI); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="J"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="J"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="J"]+.nav-folder-children .nav-file-title.is-active { - background-color: var(--FoldJ); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="K"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="K"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="K"]+.nav-folder-children .nav-file-title.is-active { - background-color: var(--FoldK); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="L"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="L"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="L"]+.nav-folder-children .nav-file-title.is-active { - background-color: var(--FoldL); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="M"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="M"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="M"]+.nav-folder-children .nav-file-title.is-active { - background-color: var(--FoldM); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="N"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="N"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="N"]+.nav-folder-children .nav-file-title.is-active { - background-color: var(--FoldN); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="O"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="O"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="O"]+.nav-folder-children .nav-file-title.is-active { - background-color: var(--FoldO); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="P"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="P"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="P"]+.nav-folder-children .nav-file-title.is-active { - background-color: var(--FoldP); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="Q"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="Q"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="Q"]+.nav-folder-children .nav-file-title.is-active { - background-color: var(--FoldQ); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="R"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="R"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="R"]+.nav-folder-children .nav-file-title.is-active { - background-color: var(--FoldR); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="S"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="S"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="S"]+.nav-folder-children .nav-file-title.is-active { - background-color: var(--FoldS); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="T"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="T"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="T"]+.nav-folder-children .nav-file-title.is-active { - background-color: var(--FoldT); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="U"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="U"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="U"]+.nav-folder-children .nav-file-title.is-active { - background-color: var(--FoldU); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="V"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="V"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="V"]+.nav-folder-children .nav-file-title.is-active { - background-color: var(--FoldV); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="W"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="W"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="W"]+.nav-folder-children .nav-file-title.is-active { - background-color: var(--FoldW); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="X"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="X"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="X"]+.nav-folder-children .nav-file-title.is-active { - background-color: var(--FoldX); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="Y"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="Y"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="Y"]+.nav-folder-children .nav-file-title.is-active { - background-color: var(--FoldY); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="Z"], -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="Z"]+.nav-folder-children, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children>.nav-folder>.nav-folder-title[data-path^="Z"]+.nav-folder-children .nav-file-title.is-active { - background-color: var(--FoldZ); -} -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder.mod-root>.nav-folder-children .nav-file-title.is-active { - filter: hue-rotate(110deg); -} -/* Scrollbars eliminated -body.folder-style-change-options-colorful .workspace-leaf-content[data-type='file-explorer'] ::-webkit-scrollbar { - width: 0px; - height: 0px; -} -*/ - -body.bt-toggle-colorful-folder.folder-style-change-options-colorful .nav-folder-title:hover { - font-weight: bold; - filter: saturate(250%); -} - -body.bt-toggle-colorful-folder:is(.folder-style-change-options-colorful,.folder-style-change-options-colorful-order) .theme-dark .workspace-leaf-content[data-type="file-explorer"] { - background-color: var(--background-secondary-alt); -} - -body.bt-toggle-colorful-folder:is(.folder-style-change-options-colorful,.folder-style-change-options-colorful-order) .nav-folder.mod-root>.nav-folder-title { - background-color: initial; -} - -/*style settings blockquote quotation marks*/ -body.blockquote-style-quotation-mark .markdown-source-view.mod-cm6.is-live-preview .HyperMD-quote:before, -body.blockquote-style-quotation-mark .markdown-source-view.mod-cm6 .cm-blockquote-border:before { - border-left: none; -} -body.blockquote-style-quotation-mark :is(.markdown-preview-view,.markdown-rendered) blockquote { - color: var(--text-normal); - - background:transparent; -} - -body.blockquote-style-quotation-mark :is(.markdown-preview-view,.markdown-rendered) blockquote { - padding-left: 35px; - padding-right: 10px; - margin-inline-start: 1%; - margin-inline-end: 1%; - border-left-width: 0px; - border:none; -} - -body.blockquote-style-quotation-mark :is(.markdown-preview-view,.markdown-rendered) blockquote p { - position: relative; - margin-left: 0.7em; - margin-right: 0; - font-size: var(--font-size-preview-blockquote); -} - -body.blockquote-style-quotation-mark :is(.markdown-preview-view,.markdown-rendered) blockquote p:first-of-type::before { - content: '\ee81'; - font-size: 2em; - font-family: boxicons; - color: var(--text-folder-file-icon); - position: absolute; - top: -0.4em; - left: -1.2em; -} - -body.blockquote-style-quotation-mark -.markdown-source-view.mod-cm6.is-live-preview -.HyperMD-quote:not(.cm-active) > .cm-formatting.cm-formatting-quote.cm-quote::before { - content: '\ee81'; - font-size: 1.5em; - font-family: boxicons; - color: var(--text-folder-file-icon); - position: absolute; - margin-left: -0.8em; -} -body.blockquote-style-quotation-mark .markdown-source-view.mod-cm6.is-live-preview .HyperMD-quote + .HyperMD-quote > .cm-formatting.cm-formatting-quote.cm-quote::before { - display: none; -} -body.blockquote-style-quotation-mark .markdown-source-view.mod-cm6.is-live-preview .cm-content div.HyperMD-quote .cm-blockquote-border { - border: none; -} - -/*speech bubble-1*/ -body.blockquote-style-speech-bubble-one :is(.markdown-preview-view,.markdown-rendered):not(.kanban-plugin__markdown-preview-view) blockquote { - position: relative; - color: var(--theme-color); - font-weight: normal; - line-height: 1.5; - margin-top: 2em; - margin-bottom: 2.5em; - border: 3px solid; - border-radius: 20px; - padding: 10px 15px; - background: var(--background-primary) !important; -} - -body.blockquote-style-speech-bubble-one .theme-dark :is(.markdown-preview-view,.markdown-rendered):not(.kanban-plugin__markdown-preview-view) blockquote { - background-color: var(--background-primary) !important; -} - -body.blockquote-style-speech-bubble-one :is(.markdown-preview-view,.markdown-rendered):not(.kanban-plugin__markdown-preview-view) blockquote p { - color: var(--text-normal); -} - -body.blockquote-style-speech-bubble-one :is(.markdown-preview-view,.markdown-rendered):not(.kanban-plugin__markdown-preview-view) blockquote:after { - content: ''; - position: absolute; - border: 2.5px solid var(--theme-color); - border-radius: 35px 0 0 0; - width: 1.75rem; - height: 3.45rem; - bottom: -3.65rem; - left: 1.8rem; - border-bottom: none; - border-left: none; - border-right: none; - z-index: 3; -} - -body.blockquote-style-speech-bubble-one :is(.markdown-preview-view,.markdown-rendered):not(.kanban-plugin__markdown-preview-view) blockquote:before { - content: ''; - position: absolute; - width: 25px; - border: 4px solid var(--background-primary); - bottom: -4px; - left: 20px; - z-index: 2; -} - -/*speech bubble-2*/ -/*adapted from https://codepen.io/mchernin34/pen/ojXvLq*/ -body.blockquote-style-speech-bubble-two :is(.markdown-preview-view,.markdown-rendered):not(.kanban-plugin__markdown-preview-view) blockquote { - position: relative; - padding: 10px; - margin-top: 1.5rem; - margin-bottom: 2.2rem; - border: 4px solid var(--theme-color); - text-align: center; - background: var(--background-primary); - -webkit-border-radius: 20px; - -moz-border-radius: 20px; - border-radius: 20px; - font-size: 1.2em; -} - -body.blockquote-style-speech-bubble-two .theme-dark :is(.markdown-preview-view,.markdown-rendered):not(.kanban-plugin__markdown-preview-view) blockquote { - background-color: var(--background-primary) !important; - border: 4px solid var(--theme-color); -} - -body.blockquote-style-speech-bubble-two.theme-dark :is(.markdown-preview-view,.markdown-rendered):not(.kanban-plugin__markdown-preview-view) blockquote:before, -body.blockquote-style-speech-bubble-two.theme-dark :is(.markdown-preview-view,.markdown-rendered):not(.kanban-plugin__markdown-preview-view) blockquote:after { - border-color: var(--theme-color); -} - -body.blockquote-style-speech-bubble-two.theme-dark :is(.markdown-preview-view,.markdown-rendered):not(.kanban-plugin__markdown-preview-view) blockquote> :first-child:before { - background: var(--theme-color); -} - -body.blockquote-style-speech-bubble-two :is(.markdown-preview-view,.markdown-rendered):not(.kanban-plugin__markdown-preview-view) blockquote:before { - content: ''; - position: absolute; - z-index: 10; - bottom: -35px; - left: 50px; - width: 50px; - height: 29px; - border-style: solid; - border-width: 0 7px 4px 0; - border-color: var(--theme-color); - background: transparent; - -webkit-border-bottom-right-radius: 80px 50px; - -moz-border-radius-bottomright: 80px 50px; - border-bottom-right-radius: 80px 50px; - display: block; -} - -body.blockquote-style-speech-bubble-two :is(.markdown-preview-view,.markdown-rendered):not(.kanban-plugin__markdown-preview-view) blockquote:after { - content: ''; - position: absolute; - z-index: 10; - bottom: -35px; - left: 49px; - width: 20px; - height: 29px; - border-style: solid; - border-width: 0 7px 4px 0; - border-color: var(--theme-color); - background: transparent; - -webkit-border-bottom-right-radius: 40px 50px; - -moz-border-radius-bottomright: 40px 50px; - border-bottom-right-radius: 40px 50px; - display: block; -} - -/* creates a small circle to produce a rounded point where the two curves meet */ -body.blockquote-style-speech-bubble-two :is(.markdown-preview-view,.markdown-rendered):not(.kanban-plugin__markdown-preview-view) blockquote> :first-child:before { - content: ''; - position: absolute; - bottom: -35px; - left: 47px; - width: 4px; - height: 4px; - background: var(--theme-color); - -webkit-border-radius: 10px; - -moz-border-radius: 10px; - border-radius: 10px; -} - -/* creates a white rectangle to cover part of the oval border*/ -body.blockquote-style-speech-bubble-two :is(.markdown-preview-view,.markdown-rendered):not(.kanban-plugin__markdown-preview-view) blockquote> :first-child:after { - content: ""; - position: absolute; - bottom: -10px; - left: 76px; - width: 24px; - height: 15px; - background: var(--background-primary); -} - -/*blockquote-style-outline*/ -body.blockquote-style-outline :is(.markdown-preview-view,.markdown-rendered) blockquote { - border: 3px solid var(--theme-color-translucent-04); - background-color: transparent; - border-radius: var(--radius-m); -} - -/*blockquote-style-border-left*/ -body.blockquote-style-border-left :is(.markdown-preview-view,.markdown-rendered) blockquote { - border-left: 3px solid var(--theme-color-translucent-04); - background-color: transparent; - border-radius: 0; -} - -body.background-settings-workplace-background-image .titlebar { - z-index: 1; -} - -body.background-settings-workplace-background-image.theme-light .titlebar-text, -body.background-settings-workplace-background-image.theme-dark .titlebar-text { - color: var(--text-normal); -} - -body.background-settings-workplace-background-image:not(.simple-titlebar):not(.is-frameless) .titlebar::before { - background-image: var(--theme-background); - background-size: cover; - content: ''; - display: block; - position: absolute; - top: -3px; - filter: blur(var(--titlebar-blur-depth)) brightness(var(--titlebar-brightness)) opacity(0.5); - right: -15px; - bottom: 0px; - left: -15px; -} -body.background-settings-workplace-background-image:not(.simple-titlebar):not(.is-frameless).theme-dark .titlebar::before { - filter: blur(var(--titlebar-blur-depth)) brightness(calc(var(--titlebar-brightness) - 0.5)) opacity(0.5); -} - -body:not(.simple-titlebar).background-settings-workplace-waves-light.theme-light .titlebar::before { - content: ''; - display: block; - position: absolute; - height:40px; - width: 120%; - background-image: unset; - -webkit-mask-image: var(--theme-background); - background-size: 100% 100%; - opacity: 0.5; - background-color: var(--wave-background-color); -} -body.background-settings-workplace-background-image:not(.simple-titlebar):not(.is-hidden-frameless) .titlebar { - --custom-titlebar-bg: var(--background-primary); - background-color: var(--custom-titlebar-bg); - border: none; -} - -body .titlebar, -body .workspace-ribbon.mod-left { - --titlebar-background: var(--titlebar-background-focused); -} - -body.simple-titlebar .titlebar { - background-color: var(--custom-titlebar-bg); - border: none; -} - -body.simple-titlebar .titlebar::before { - content: ''; - background-color: var(--custom-titlebar-bg); -} - -/*==========*/ -body.background-settings-workplace-background-image .side-dock-ribbon-tab, -body.background-settings-workplace-background-image .side-dock-ribbon-action:not(:hover), -body.background-settings-workplace-style-high-transparency .side-dock-ribbon-tab, -body.background-settings-workplace-style-high-transparency .side-dock-ribbon-action:not(:hover) { - color: var(--text-normal); -} - -body.is-mobile.background-settings-workplace-background-image .workspace-split.mod-root { - background-color: transparent; -} -body.is-mobile.background-settings-workplace-background-image:not(:is(.background-settings-workplace-waves-light,.background-settings-workplace-waves2-light,.background-settings-workplace-waves,.background-settings-workplace-waves2)) { - background-image: var(--theme-background); - background-size: cover; - opacity: 0.8; -} -body.color-scheme-options-simplicity-topaz.theme-dark.background-settings-workplace-background-image .workspace::before { - filter: blur(var(--blur-depth)) brightness(calc(var(--brightness-4-bg) - 0.5)) saturate(var(--saturate-4-bg)); -} - -body.background-settings-workplace-background-image.theme-light .workspace::before, -body.background-settings-workplace-background-image.theme-dark .workspace::before { - background-image: var(--theme-background); - background-size: cover; - filter: blur(var(--blur-depth)) brightness(var(--brightness-4-bg)) saturate(var(--saturate-4-bg)); -} - -body.is-mobile.background-settings-workplace-background-image:is(.background-settings-workplace-waves-light,.background-settings-workplace-waves2-light,.background-settings-workplace-waves,.background-settings-workplace-waves2), -body.background-settings-workplace-background-image:is(.background-settings-workplace-waves-light,.background-settings-workplace-waves2-light).theme-light .workspace, -body.color-scheme-options-simplicity-topaz.background-settings-workplace-background-image:is(.background-settings-workplace-waves,.background-settings-workplace-waves2).theme-dark .workspace, -body.background-settings-workplace-background-image:is(.background-settings-workplace-waves-light,.background-settings-workplace-waves2-light):not(.is-hidden-frameless).theme-light .titlebar { - background: var(--simple-white-2); -} - -body.background-settings-workplace-background-image:is(.background-settings-workplace-waves-light,.background-settings-workplace-waves,.background-settings-workplace-waves2,.background-settings-workplace-waves2-light):not(.is-hidden-frameless) .titlebar-inner, -body.background-settings-workplace-background-image:is(.background-settings-workplace-waves,.background-settings-workplace-waves2).theme-dark .workspace { - background: var(--background-secondary); -} - -/****from https://www.shapedivider.app/*****/ -body.background-settings-workplace-background-image.background-settings-workplace-waves-light.theme-light .workspace:before, -body.background-settings-workplace-background-image.background-settings-workplace-waves.theme-dark .workspace:before { - content: ""; - position: fixed; - height: auto; - width: 300%; - transform: rotate(180deg); - top: 75%; - left: -25%; - background-image: unset; - -webkit-mask-image: var(--theme-background); - background-size: 100% 100%; - opacity: 0.7; - filter: blur(var(--blur-depth)) brightness(var(--brightness-4-bg)) saturate(var(--saturate-4-bg)); - background-color: var(--wave-background-color); -} -/**from https://svgwave.in/*/ -body.background-settings-workplace-background-image.background-settings-workplace-waves2-light.theme-light .workspace::before, -body.background-settings-workplace-background-image.background-settings-workplace-waves2.theme-dark .workspace:before { - content: ""; - position: fixed; - height: auto; - width: 300%; - top: 75%; - left: -25%; - background-image: unset; - -webkit-mask-image: var(--theme-background); - background-size: 100% 100%; - opacity: 0.7; - filter: blur(var(--blur-depth)) brightness(var(--brightness-4-bg)) saturate(var(--saturate-4-bg)); - background-color: var(--wave2-background-color); -} - -body.background-settings-workplace-background-image.theme-light .workspace-split.mod-root .workspace-tab-container:fullscreen::before, -body.background-settings-workplace-background-image.theme-dark .workspace-split.mod-root .workspace-tab-container:fullscreen::before { - background-image: var(--theme-background); - background-size: cover; - filter: blur(var(--blur-depth)) brightness(var(--brightness-4-bg)) saturate(var(--saturate-4-bg)); - content: ''; - display: block; - position: absolute; - top: -25px; - right: -15px; - bottom: 0px; - left: -15px; -} - -/****from https://www.shapedivider.app/*****/ -body.background-settings-workplace-background-image.background-settings-workplace-waves-light.theme-light .workspace-split.mod-root::before, -body.background-settings-workplace-background-image.background-settings-workplace-waves.theme-dark .workspace-split.mod-root::before { - content: ""; - position: fixed; - height: auto; - width: 300%; - transform: rotate(180deg); - top: 75%; - left: -25%; - background-image: unset; - -webkit-mask-image: var(--theme-background); - background-size: 100% 100%; - opacity: 0.7; - filter: blur(var(--blur-depth)) brightness(var(--brightness-4-bg)) saturate(var(--saturate-4-bg)); - background-color: var(--wave-background-color); -} - -/**from https://svgwave.in/*/ -body.background-settings-workplace-background-image.background-settings-workplace-waves2-light.theme-light .workspace-split.mod-root::before, -body.background-settings-workplace-background-image.background-settings-workplace-waves2.theme-dark .workspace-split.mod-root:before { - content: ""; - position: fixed; - height: auto; - width: 300%; - top: 75%; - left: -25%; - background-image: unset; - -webkit-mask-image: var(--theme-background); - background-size: 100% 100%; - opacity: 0.7; - filter: blur(var(--blur-depth)) brightness(var(--brightness-4-bg)) saturate(var(--saturate-4-bg)); - background-color: var(--wave2-background-color); -} - - - -body.background-settings-workplace-background-image .workspace::before { - content: ''; - display: block; - position: absolute; - top: -37px; - right: -15px; - bottom: 0; - left: -15px; -} - -/* -body.background-settings-workplace-background-image.theme-light .workspace-leaf .view-header { - background: #f7f7f7; -} - -body.background-settings-workplace-background-image.theme-light .workspace-split.mod-root .workspace-tab-header.is-active.mod-active { - --tab-background-active: #f7f7f7; -} -*/ -body.background-settings-workplace-background-image.theme-light { - --background-primary:var(--background-primary-bg-4-bt); - --background-primary-bg-4-bt: #ffffffab; - --background-primary-alt-bg-4-bt: #ffffffbe; - --background-secondary-bg-4-bt: #ffffff80; - --background-secondary-alt-bg-4-bt: #ffffff20; - --text-muted: #525252; - --text-folder-file: #292929; - --background-modifier-border: #bfbfbf; - --page-border-bottom: var(--color-base-30); - --tab-outline-color: #dededee0; - --divider-color: #dededee0; -} - -textarea, input[type='text'], input[type='search'], input[type='email'], input[type='password'], input[type='number'] -{ - background: var(--bg-color-settings-4); -} - -body:is(.background-settings-workplace-background-image,.background-image-settings-switch) .modal-container { - --modal-background:var(--bg-color-settings-3); - --background-primary: var(--bg-color-settings-3); - --background-secondary:var(--bg-color-settings-3); -} - -.snw-popover-container -{ - --background-primary: var(--color-base-10); - --text-highlight:var(--text-highlight-bg); -} -.snw-popover-container a -{ - padding: 2px 4px; -} - -/* font color */ -/* body.background-settings-workplace-background-image :is(.tree-item-inner,.tree-item-flair,.workspace-ribbon-collapse-btn,.side-dock-ribbon-tab,.side-dock-ribbon-action):not(:hover) { - color: var(--text-normal); -} */ -body.background-settings-workplace-background-image.background-settings-workplace-theme-light-blue-mountain.theme-light { - --blue-mountain: url(data:image/avif;base64,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); - --theme-background: var(--blue-mountain); -} - -body.background-settings-workplace-background-image.background-settings-workplace-theme-light-in-the-note.theme-light { - --in-the-note: url(data:image/avif;base64,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); - --theme-background: var(--in-the-note); -} - - -body.background-settings-workplace-background-image.theme-dark { - --background-primary-bg-4-bt: #1414148a; - --background-secondary-bg-4-bt: #16161680; - --background-secondary-alt-bg-4-bt: #16161680; - --background-primary-alt-bg-4-bt: #1c1c1ccf; - --text-normal: #cccccc; - --page-border-bottom: var(--color-base-30); - --tab-background-active: transparent; - --tab-outline-width: transparent; -} - -body.background-settings-workplace-background-image .nav-folder.mod-root>.nav-folder-title { - background-color: transparent !important; -} - -body.background-settings-workplace-background-image.theme-dark.is-mobile { - --background-primary-bg-4-bt: #1f1f1fbf; - --background-secondary-bg-4-bt: #00000069; - --background-secondary-alt-bg-4-bt: #16161680; - --background-primary-alt-bg-4-bt: #00000082; - --text-normal: #d4d4d4; - --page-border-bottom: var(--color-base-30); -} - -body.background-settings-workplace-background-image.background-settings-workplace-theme-dark-night-sky.theme-dark { - --night-sky: url(data:image/jpeg;base64,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); - --theme-background: var(--night-sky); -} - -body.background-settings-workplace-background-image.background-settings-workplace-theme-dark-dark-sky.theme-dark { - --dark-sky: url(data:image/jpeg;base64,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); - --theme-background: var(--dark-sky); -} - -body.background-settings-workplace-background-image.background-settings-workplace-theme-dark-in-the-sky.theme-dark { - --in-the-sky: url(data:image/jpeg;base64,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); - --theme-background: var(--in-the-sky); -} - -body.background-settings-workplace-background-image.background-settings-workplace-waves-light.theme-light, -body.background-settings-workplace-background-image.background-settings-workplace-waves.theme-dark { - --wave-background: url("data:image/svg+xml, %3Csvg data-name='Layer 1' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1200 120' preserveAspectRatio='none'%3E %3Cpath d='M0,0V46.29c47.79,22.2,103.59,32.17,158,28,70.36-5.37,136.33-33.31,206.8-37.5C438.64,32.43,512.34,53.67,583,72.05c69.27,18,138.3,24.88,209.4,13.08,36.15-6,69.85-17.84,104.45-29.34C989.49,25,1113-14.29,1200,52.47V0Z' opacity='.25' class='shape-fill'%3E%3C/path%3E %3Cpath d='M0,0V15.81C13,36.92,27.64,56.86,47.69,72.05,99.41,111.27,165,111,224.58,91.58c31.15-10.15,60.09-26.07,89.67-39.8,40.92-19,84.73-46,130.83-49.67,36.26-2.85,70.9,9.42,98.6,31.56,31.77,25.39,62.32,62,103.63,73,40.44,10.79,81.35-6.69,119.13-24.28s75.16-39,116.92-43.05c59.73-5.85,113.28,22.88,168.9,38.84,30.2,8.66,59,6.17,87.09-7.5,22.43-10.89,48-26.93,60.65-49.24V0Z' opacity='.5' class='shape-fill'%3E%3C/path%3E %3Cpath d='M0,0V5.63C149.93,59,314.09,71.32,475.83,42.57c43-7.64,84.23-20.12,127.61-26.46,59-8.63,112.48,12.24,165.56,35.4C827.93,77.22,886,95.24,951.2,90c86.53-7,172.46-45.71,248.8-84.81V0Z' class='shape-fill'%3E%3C/path%3E %3C/svg%3E"); - --theme-background: var(--wave-background); - --wave-background-color: var(--background-waves-color); -} -body.background-settings-workplace-background-image.background-settings-workplace-waves2-light.theme-light, -body.background-settings-workplace-background-image.background-settings-workplace-waves2.theme-dark { - --wave2-background: url("data:image/svg+xml,%3Csvg width='100%25' height='100%25' id='svg' viewBox='0 0 1440 600' xmlns='http://www.w3.org/2000/svg' class='transition duration-300 ease-in-out delay-150'%3E%3Cstyle%3E .path-0%7B animation:pathAnim-0 4s; animation-timing-function: linear; animation-iteration-count: infinite; %7D @keyframes pathAnim-0%7B 0%25%7B d: path('M 0,600 C 0,600 0,150 0,150 C 81.35641025641027,172.9153846153846 162.71282051282054,195.83076923076922 252,194 C 341.28717948717946,192.16923076923078 438.50512820512824,165.59230769230766 511,146 C 583.4948717948718,126.40769230769234 631.2666666666665,113.80000000000004 703,116 C 774.7333333333335,118.19999999999996 870.428205128205,135.20769230769227 957,154 C 1043.571794871795,172.79230769230773 1121.0205128205127,193.3692307692308 1200,193 C 1278.9794871794873,192.6307692307692 1359.4897435897437,171.3153846153846 1440,150 C 1440,150 1440,600 1440,600 Z'); %7D 25%25%7B d: path('M 0,600 C 0,600 0,150 0,150 C 93.78717948717946,117.86410256410255 187.57435897435892,85.72820512820512 265,105 C 342.4256410256411,124.27179487179488 403.4897435897436,194.95128205128205 488,191 C 572.5102564102564,187.04871794871795 680.4666666666668,108.46666666666668 760,108 C 839.5333333333332,107.53333333333332 890.6435897435897,185.18205128205128 968,201 C 1045.3564102564103,216.81794871794872 1148.9589743589743,170.8051282051282 1232,152 C 1315.0410256410257,133.1948717948718 1377.520512820513,141.5974358974359 1440,150 C 1440,150 1440,600 1440,600 Z'); %7D 50%25%7B d: path('M 0,600 C 0,600 0,150 0,150 C 96.15641025641025,143.13589743589745 192.3128205128205,136.2717948717949 266,127 C 339.6871794871795,117.72820512820512 390.9051282051282,106.04871794871795 455,129 C 519.0948717948718,151.95128205128205 596.0666666666668,209.5333333333333 676,201 C 755.9333333333332,192.4666666666667 838.8282051282051,117.81794871794872 936,114 C 1033.1717948717949,110.18205128205128 1144.6205128205129,177.1948717948718 1231,195 C 1317.3794871794871,212.8051282051282 1378.6897435897436,181.4025641025641 1440,150 C 1440,150 1440,600 1440,600 Z'); %7D 75%25%7B d: path('M 0,600 C 0,600 0,150 0,150 C 55.16923076923078,140.31538461538463 110.33846153846156,130.63076923076923 198,135 C 285.66153846153844,139.36923076923077 405.8153846153846,157.7923076923077 496,167 C 586.1846153846154,176.2076923076923 646.4000000000001,176.2 733,158 C 819.5999999999999,139.8 932.5846153846155,103.40769230769229 1001,104 C 1069.4153846153845,104.59230769230771 1093.2615384615385,142.16923076923078 1159,156 C 1224.7384615384615,169.83076923076922 1332.3692307692309,159.9153846153846 1440,150 C 1440,150 1440,600 1440,600 Z'); %7D 100%25%7B d: path('M 0,600 C 0,600 0,150 0,150 C 81.35641025641027,172.9153846153846 162.71282051282054,195.83076923076922 252,194 C 341.28717948717946,192.16923076923078 438.50512820512824,165.59230769230766 511,146 C 583.4948717948718,126.40769230769234 631.2666666666665,113.80000000000004 703,116 C 774.7333333333335,118.19999999999996 870.428205128205,135.20769230769227 957,154 C 1043.571794871795,172.79230769230773 1121.0205128205127,193.3692307692308 1200,193 C 1278.9794871794873,192.6307692307692 1359.4897435897437,171.3153846153846 1440,150 C 1440,150 1440,600 1440,600 Z'); %7D %7D%3C/style%3E%3Cdefs%3E%3ClinearGradient id='gradient' x1='0%25' y1='50%25' x2='100%25' y2='50%25'%3E%3Cstop offset='5%25' stop-color='%23002bdc66'%3E%3C/stop%3E%3Cstop offset='95%25' stop-color='%2332ded466'%3E%3C/stop%3E%3C/linearGradient%3E%3C/defs%3E%3Cpath d='M 0,600 C 0,600 0,150 0,150 C 81.35641025641027,172.9153846153846 162.71282051282054,195.83076923076922 252,194 C 341.28717948717946,192.16923076923078 438.50512820512824,165.59230769230766 511,146 C 583.4948717948718,126.40769230769234 631.2666666666665,113.80000000000004 703,116 C 774.7333333333335,118.19999999999996 870.428205128205,135.20769230769227 957,154 C 1043.571794871795,172.79230769230773 1121.0205128205127,193.3692307692308 1200,193 C 1278.9794871794873,192.6307692307692 1359.4897435897437,171.3153846153846 1440,150 C 1440,150 1440,600 1440,600 Z' stroke='none' stroke-width='0' fill='url(%23gradient)' class='transition-all duration-300 ease-in-out delay-150 path-0'%3E%3C/path%3E%3Cstyle%3E .path-1%7B animation:pathAnim-1 4s; animation-timing-function: linear; animation-iteration-count: infinite; %7D @keyframes pathAnim-1%7B 0%25%7B d: path('M 0,600 C 0,600 0,300 0,300 C 82.94102564102565,295.425641025641 165.8820512820513,290.85128205128206 257,284 C 348.1179487179487,277.14871794871794 447.41282051282053,268.02051282051286 514,267 C 580.5871794871795,265.97948717948714 614.4666666666667,273.06666666666666 676,278 C 737.5333333333333,282.93333333333334 826.7205128205128,285.71282051282054 921,295 C 1015.2794871794872,304.28717948717946 1114.6512820512821,320.0820512820513 1202,322 C 1289.3487179487179,323.9179487179487 1364.674358974359,311.9589743589744 1440,300 C 1440,300 1440,600 1440,600 Z'); %7D 25%25%7B d: path('M 0,600 C 0,600 0,300 0,300 C 88.24102564102563,279.49487179487176 176.48205128205126,258.98974358974357 263,274 C 349.51794871794874,289.01025641025643 434.3128205128206,339.5358974358975 519,332 C 603.6871794871794,324.4641025641025 688.2666666666667,258.8666666666667 759,247 C 829.7333333333333,235.13333333333335 886.6205128205129,276.99743589743593 960,293 C 1033.3794871794871,309.00256410256407 1123.2512820512823,299.14358974358976 1206,296 C 1288.7487179487177,292.85641025641024 1364.374358974359,296.42820512820515 1440,300 C 1440,300 1440,600 1440,600 Z'); %7D 50%25%7B d: path('M 0,600 C 0,600 0,300 0,300 C 77.61025641025643,301.1948717948718 155.22051282051285,302.38974358974355 229,309 C 302.77948717948715,315.61025641025645 372.7282051282051,327.63589743589745 455,315 C 537.2717948717949,302.36410256410255 631.8666666666667,265.0666666666667 730,264 C 828.1333333333333,262.9333333333333 929.8051282051283,298.0974358974359 1003,313 C 1076.1948717948717,327.9025641025641 1120.9128205128204,322.54358974358973 1189,317 C 1257.0871794871796,311.45641025641027 1348.5435897435898,305.7282051282051 1440,300 C 1440,300 1440,600 1440,600 Z'); %7D 75%25%7B d: path('M 0,600 C 0,600 0,300 0,300 C 53.37692307692305,305.2846153846154 106.7538461538461,310.5692307692308 202,310 C 297.2461538461539,309.4307692307692 434.36153846153854,303.00769230769225 521,293 C 607.6384615384615,282.99230769230775 643.8,269.4 716,259 C 788.2,248.6 896.4384615384615,241.39230769230772 974,254 C 1051.5615384615385,266.6076923076923 1098.4461538461537,299.03076923076924 1171,310 C 1243.5538461538463,320.96923076923076 1341.7769230769231,310.4846153846154 1440,300 C 1440,300 1440,600 1440,600 Z'); %7D 100%25%7B d: path('M 0,600 C 0,600 0,300 0,300 C 82.94102564102565,295.425641025641 165.8820512820513,290.85128205128206 257,284 C 348.1179487179487,277.14871794871794 447.41282051282053,268.02051282051286 514,267 C 580.5871794871795,265.97948717948714 614.4666666666667,273.06666666666666 676,278 C 737.5333333333333,282.93333333333334 826.7205128205128,285.71282051282054 921,295 C 1015.2794871794872,304.28717948717946 1114.6512820512821,320.0820512820513 1202,322 C 1289.3487179487179,323.9179487179487 1364.674358974359,311.9589743589744 1440,300 C 1440,300 1440,600 1440,600 Z'); %7D %7D%3C/style%3E%3Cdefs%3E%3ClinearGradient id='gradient' x1='0%25' y1='50%25' x2='100%25' y2='50%25'%3E%3Cstop offset='5%25' stop-color='%23002bdc88'%3E%3C/stop%3E%3Cstop offset='95%25' stop-color='%2332ded488'%3E%3C/stop%3E%3C/linearGradient%3E%3C/defs%3E%3Cpath d='M 0,600 C 0,600 0,300 0,300 C 82.94102564102565,295.425641025641 165.8820512820513,290.85128205128206 257,284 C 348.1179487179487,277.14871794871794 447.41282051282053,268.02051282051286 514,267 C 580.5871794871795,265.97948717948714 614.4666666666667,273.06666666666666 676,278 C 737.5333333333333,282.93333333333334 826.7205128205128,285.71282051282054 921,295 C 1015.2794871794872,304.28717948717946 1114.6512820512821,320.0820512820513 1202,322 C 1289.3487179487179,323.9179487179487 1364.674358974359,311.9589743589744 1440,300 C 1440,300 1440,600 1440,600 Z' stroke='none' stroke-width='0' fill='url(%23gradient)' class='transition-all duration-300 ease-in-out delay-150 path-1'%3E%3C/path%3E%3Cstyle%3E .path-2%7B animation:pathAnim-2 4s; animation-timing-function: linear; animation-iteration-count: infinite; %7D @keyframes pathAnim-2%7B 0%25%7B d: path('M 0,600 C 0,600 0,450 0,450 C 76.1974358974359,467.39230769230767 152.3948717948718,484.7846153846154 220,481 C 287.6051282051282,477.2153846153846 346.6179487179487,452.25384615384615 441,452 C 535.3820512820513,451.74615384615385 665.1333333333334,476.2 762,477 C 858.8666666666666,477.8 922.8487179487179,454.94615384615383 984,443 C 1045.1512820512821,431.05384615384617 1103.4717948717948,430.0153846153846 1179,433 C 1254.5282051282052,435.9846153846154 1347.2641025641026,442.9923076923077 1440,450 C 1440,450 1440,600 1440,600 Z'); %7D 25%25%7B d: path('M 0,600 C 0,600 0,450 0,450 C 86.80769230769232,454.0974358974359 173.61538461538464,458.1948717948718 262,469 C 350.38461538461536,479.8051282051282 440.3461538461538,497.3179487179487 508,488 C 575.6538461538462,478.6820512820513 621,442.53333333333336 697,418 C 773,393.46666666666664 879.6538461538462,380.5487179487179 972,401 C 1064.3461538461538,421.4512820512821 1142.3846153846155,475.2717948717949 1218,489 C 1293.6153846153845,502.7282051282051 1366.8076923076924,476.36410256410255 1440,450 C 1440,450 1440,600 1440,600 Z'); %7D 50%25%7B d: path('M 0,600 C 0,600 0,450 0,450 C 79.76153846153846,435.7282051282051 159.52307692307693,421.45641025641027 229,422 C 298.4769230769231,422.54358974358973 357.6692307692308,437.9025641025641 443,442 C 528.3307692307692,446.0974358974359 639.8,438.93333333333334 720,424 C 800.2,409.06666666666666 849.1307692307691,386.36410256410255 925,394 C 1000.8692307692309,401.63589743589745 1103.676923076923,439.6102564102564 1194,454 C 1284.323076923077,468.3897435897436 1362.1615384615384,459.1948717948718 1440,450 C 1440,450 1440,600 1440,600 Z'); %7D 75%25%7B d: path('M 0,600 C 0,600 0,450 0,450 C 72.5102564102564,462.1435897435897 145.0205128205128,474.28717948717946 236,478 C 326.9794871794872,481.71282051282054 436.42820512820515,476.9948717948718 503,459 C 569.5717948717949,441.0051282051282 593.2666666666667,409.7333333333333 677,408 C 760.7333333333333,406.2666666666667 904.5051282051284,434.07179487179496 998,437 C 1091.4948717948716,439.92820512820504 1134.7128205128206,417.9794871794872 1200,416 C 1265.2871794871794,414.0205128205128 1352.6435897435897,432.0102564102564 1440,450 C 1440,450 1440,600 1440,600 Z'); %7D 100%25%7B d: path('M 0,600 C 0,600 0,450 0,450 C 76.1974358974359,467.39230769230767 152.3948717948718,484.7846153846154 220,481 C 287.6051282051282,477.2153846153846 346.6179487179487,452.25384615384615 441,452 C 535.3820512820513,451.74615384615385 665.1333333333334,476.2 762,477 C 858.8666666666666,477.8 922.8487179487179,454.94615384615383 984,443 C 1045.1512820512821,431.05384615384617 1103.4717948717948,430.0153846153846 1179,433 C 1254.5282051282052,435.9846153846154 1347.2641025641026,442.9923076923077 1440,450 C 1440,450 1440,600 1440,600 Z'); %7D %7D%3C/style%3E%3Cdefs%3E%3ClinearGradient id='gradient' x1='0%25' y1='50%25' x2='100%25' y2='50%25'%3E%3Cstop offset='5%25' stop-color='%23002bdcff'%3E%3C/stop%3E%3Cstop offset='95%25' stop-color='%2332ded4ff'%3E%3C/stop%3E%3C/linearGradient%3E%3C/defs%3E%3Cpath d='M 0,600 C 0,600 0,450 0,450 C 76.1974358974359,467.39230769230767 152.3948717948718,484.7846153846154 220,481 C 287.6051282051282,477.2153846153846 346.6179487179487,452.25384615384615 441,452 C 535.3820512820513,451.74615384615385 665.1333333333334,476.2 762,477 C 858.8666666666666,477.8 922.8487179487179,454.94615384615383 984,443 C 1045.1512820512821,431.05384615384617 1103.4717948717948,430.0153846153846 1179,433 C 1254.5282051282052,435.9846153846154 1347.2641025641026,442.9923076923077 1440,450 C 1440,450 1440,600 1440,600 Z' stroke='none' stroke-width='0' fill='url(%23gradient)' class='transition-all duration-300 ease-in-out delay-150 path-2'%3E%3C/path%3E%3C/svg%3E"); - --theme-background: var(--wave2-background); - --wave2-background-color: var(--background-waves-color); -} - -body.is-mobile.background-settings-workplace-background-image:is(.background-settings-workplace-waves-light,.background-settings-workplace-waves2-light).theme-light, -body.is-mobile.background-settings-workplace-background-image:is(.background-settings-workplace-waves,.background-settings-workplace-waves2).theme-dark { - --wave2-background-color: #001ae0; - --wave-background-color: #245eff; -} - -body.background-image-settings-command-palette-switch .modal-container .prompt::before { - background-size: cover; - content: ''; - top: 0; - right: 0; - bottom: 0; - left: 0; - position: absolute; -} - -body.background-image-settings-command-palette-same-as-workplace.background-image-settings-command-palette-switch .modal-container .prompt::before { - background-image: var(--theme-background); - filter: blur(var(--blur-depth-cp)) brightness(var(--brightness-4-bg-cp)) saturate(var(--saturate-4-bg-cp)); - opacity: var(--opacity-cp); - z-index: -1; -} -body.background-image-settings-command-palette-same-as-workplace.background-image-settings-command-palette-switch.background-settings-workplace-waves2-light .modal-container .prompt::before, -body.background-image-settings-command-palette-same-as-workplace.background-image-settings-command-palette-switch.background-settings-workplace-waves2 .modal-container .prompt::before { - top: 60%; -} - -body.theme-light.background-image-settings-command-palette-same-as-workplace.background-image-settings-command-palette-switch.background-settings-workplace-waves-light .modal-container .prompt::before, -body.background-image-settings-command-palette-same-as-workplace.background-image-settings-command-palette-switch.background-settings-workplace-background-image.background-settings-workplace-waves.theme-dark .prompt:before { - transform: rotate(180deg); - top: 75%; - background-image:unset; - -webkit-mask-image: var(--theme-background); - background-size:100% 100%; - opacity:0.5; - background-color: var(--wave-background-color); -} - -body.background-image-settings-command-palette-same-as-workplace.background-image-settings-command-palette-switch .modal-container .prompt input.prompt-input, -body.background-image-settings-command-palette-switch:not(.background-image-settings-command-palette-same-as-workplace) .modal-container .prompt input.prompt-input { - background-color: transparent; -} - -body.background-image-settings-command-palette-custom.background-image-settings-command-palette-switch:not(.background-image-settings-command-palette-same-as-workplace).theme-light .modal-container .prompt::before { - background-image: var(--background-command-palette-theme-light-custom); -} - -body.background-image-settings-command-palette-custom.background-image-settings-command-palette-switch:not(.background-image-settings-command-palette-same-as-workplace).theme-dark .modal-container .prompt::before { - background-image: var(--background-command-palette-theme-dark-custom); -} - -body.layout-style-options-default.background-settings-workplace-background-image .workspace-tab-container-before.is-before-active .workspace-tab-header-inner, -body.layout-style-options-default.background-settings-workplace-background-image .workspace-tab-container-after.is-after-active .workspace-tab-header-inner, -body.layout-style-options-default.background-settings-workplace-background-image .workspace-tab-header.is-before-active .workspace-tab-header-inner, -body.layout-style-options-default.background-settings-workplace-background-image .workspace-tab-header.is-after-active .workspace-tab-header-inner, -body.layout-style-options-default.background-settings-workplace-background-image .workspace-tab-container-before.is-before-active, -body.layout-style-options-default.background-settings-workplace-background-image .workspace-tab-container-after.is-after-active, -body.layout-style-options-default.background-settings-workplace-background-image .workspace-tab-header.is-before-active, -body.layout-style-options-default.background-settings-workplace-background-image .workspace-tab-header.is-after-active { - background-color: transparent; -} - -body.background-settings-workplace-background-image.background-settings-workplace-theme-light-custom-option.theme-light { - --theme-background: var(--background-settings-workplace-theme-light-custom); -} - -body.background-settings-workplace-background-image.background-settings-workplace-theme-dark-custom-option.theme-dark { - --theme-background: var(--background-settings-workplace-theme-dark-custom); -} - -/*rectangle*/ -body.layout-style-options-rectangle .workspace-tab-container-before.is-before-active .workspace-tab-header-inner, -body.layout-style-options-rectangle .workspace-tab-container-after.is-after-active .workspace-tab-header-inner, -body.layout-style-options-rectangle .workspace-tab-header.is-before-active .workspace-tab-header-inner, -body.layout-style-options-rectangle .workspace-tab-header.is-after-active .workspace-tab-header-inner, -body.layout-style-options-rectangle .workspace-tab-header, -body.layout-style-options-rectangle .workspace-tab-header-inner, -body.layout-style-options-rectangle .workspace-split.mod-left-split .view-content, -body.layout-style-options-rectangle .workspace-split.mod-right-split .view-content, -body.layout-style-options-rectangle .workspace-tab-header.is-after-active, -body.layout-style-options-rectangle .workspace-tab-header.is-before-active, -body.layout-style-options-rectangle .workspace-tab-container-before.is-before-active .workspace-tab-header-inner { - background-color: transparent; - border-radius: 0; -} - -body.layout-style-options-rectangle .workspace-split.mod-root>.workspace-leaf:first-of-type .workspace-leaf-content, -body.layout-style-options-rectangle .workspace-split.mod-root>.workspace-leaf:last-of-type .workspace-leaf-content { - border-top-right-radius: 0; - border-top-left-radius: 0; -} - -body.layout-style-options-rectangle .workspace-tab-header-inner { - padding: 3px 9px; -} - -body.layout-style-options-rectangle .workspace-tab-container-before, -body.layout-style-options-rectangle .workspace-tab-container-after { - width: 0; -} - -body.layout-style-options-rectangle .workspace-tab-header-container { - padding: 4px 0 0 4px; -} - -body.layout-style-options-rectangle .workspace-split.mod-right-split .workspace-tabs .workspace-leaf { - border-top-right-radius: 0; -} - -body.layout-style-options-rectangle .workspace-split.mod-left-split .workspace-tabs .workspace-leaf { - border-top-left-radius: 0; -} - -body.layout-style-options-rectangle .workspace-tab-header-container { - background-color: var(--background-secondary); - border-bottom: 1px solid var(--background-modifier-border-1); -} - -body.layout-style-options-rectangle .workspace-split.mod-left-split>.workspace-leaf-resize-handle:not(:hover), -body.layout-style-options-rectangle .workspace-split.mod-right-split>.workspace-leaf-resize-handle:not(:hover), -body.layout-style-options-rectangle .workspace-split.mod-vertical>*>.workspace-leaf-resize-handle:not(:hover) { - height: 100%; - background-color: var(--background-leaf-resize-handle); -} - -body.layout-style-options-rectangle .workspace-split.mod-left-split>.workspace-leaf-resize-handle:hover, -body.layout-style-options-rectangle .workspace-split.mod-right-split>.workspace-leaf-resize-handle:hover, -body.layout-style-options-rectangle .workspace-split.mod-vertical>*>.workspace-leaf-resize-handle:hover { - height: 100%; -} - -body.layout-style-options-rectangle .side-dock-ribbon-action { - padding: 3px 0; -} - -/*-------- Eisenhower Matrix start--- */ -/* Eisenhower Matrix from Spectrum themes */ - -/*for Blue Topaz theme-表格四象图分布 Modified by cuman 2021-11-29*/ -/* 用法 yaml区域声明 -cssclass: matrix -内容如下形式(表格内容最好使用嵌入形式): - -| | | -| ----------------- | ----------- | -| ![[#To-Do]] | ![[#Doing]] | -| ![[#Considering]] | ![[#Maybe]] | - -*/ - -:root, -.theme-dark, -.theme-light { - --matrix-1: var(--p-kanban-color-2); - --matrix-2: var(--p-kanban-color-3); - --matrix-4: var(--p-kanban-color-5); - --matrix-5: var(--p-kanban-color-6); -} - -:is(.markdown-preview-view,.markdown-rendered).matrix table tr { - display: flex; -} -:is(.markdown-preview-view,.markdown-rendered).matrix table th { - background-color: transparent; - background-image: none; -} -:is(.markdown-preview-view,.markdown-rendered).matrix table tbody>tr { - background-color: transparent; -} - -:is(.markdown-preview-view,.markdown-rendered).matrix .internal-embed:not(.image-embed) { - border: 1px solid; - border-radius: 10px; -} -:is(.markdown-preview-view,.markdown-rendered).matrix thead { - background-color: transparent; -} -:is(.markdown-preview-view,.markdown-rendered).matrix table tr th, -:is(.markdown-preview-view,.markdown-rendered).matrix table tr td { - background-color: transparent; - padding-right: 0; - border: 0px; - width: 50%; - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; -} -:is(.markdown-preview-view,.markdown-rendered).matrix .markdown-embed { - background-color: transparent; -} -:is(.markdown-preview-view,.markdown-rendered).matrix table tr th > *, -:is(.markdown-preview-view,.markdown-rendered).matrix table tr td > * { - width: 100%; - height: 100%; - background-color: var(--background-secondary); -} - -:is(.markdown-preview-view,.markdown-rendered).matrix table tr td { - background-color: transparent; -} - -:is(.markdown-preview-view,.markdown-rendered).matrix table tr:nth-child(1n) td:nth-child(1) > * { - border-color: var(--matrix-1); -} - -:is(.markdown-preview-view,.markdown-rendered).matrix table tr:nth-child(1n) td:nth-child(1):hover { - background-color: var(--matrix-1); -} - -:is(.markdown-preview-view,.markdown-rendered).matrix table tr:nth-child(1n) td:nth-child(2) > * { - border-color: var(--matrix-2); -} - -:is(.markdown-preview-view,.markdown-rendered).matrix table tr:nth-child(1n) td:nth-child(2):hover { - background-color: var(--matrix-2); -} - -:is(.markdown-preview-view,.markdown-rendered).matrix table tr:nth-child(2n) td:nth-child(1) > * { - border-color: var(--matrix-4); -} - -:is(.markdown-preview-view,.markdown-rendered).matrix table tr:nth-child(2n) td:nth-child(1):hover { - background-color: var(--matrix-4); -} - -:is(.markdown-preview-view,.markdown-rendered).matrix table tr:nth-child(2n) td:nth-child(2) > * { - border-color: var(--matrix-5); -} - -:is(.markdown-preview-view,.markdown-rendered).matrix table tr:nth-child(2n) td:nth-child(2):hover { - background-color: var(--matrix-5); -} -/*-------- Eisenhower Matrix end--- */ - -.recent-vaults-list-item:hover { - color: var(--theme-color) !important; -} - -body.plain-file-title.theme-light, -body.plain-file-title.theme-dark { - --color-view-header-gradient-1: var(--background-primary); - --color-view-header-gradient-2: var(--background-primary); -} - -body:not(:is(.default-loading-page,.is-popout-window)) .progress-bar-message { - visibility: hidden; -} - -body:not(.default-loading-page).loading-page-style-default .progress-bar-message:before { - content: ""; - width: 80px; - height: 80px; - position: relative; - animation: shape 2.5s infinite alternate; - visibility: visible !important; - display: block; - transform: translateZ(0); - -webkit-transform: translateZ(0); - will-change: transform; -} - -body:not(.default-loading-page).theme-light .progress-bar { - background-color: white; -} -body:not(.default-loading-page).theme-dark .progress-bar { - background-color: #222222; -} - -@keyframes shape { - 0% {background-color: transparent; transform: translate(-50px, -50px); border-radius: 50%;} - 10% {background-color: #53c7ff; transform: translate(-50px, -50px); border-radius: 50%;} - 30% {background-color: #8fff7b; transform: translate(110px, -50px); border-radius: 0;} - 50% {background-color: #ffe468; transform: translate(110px, 110px); border-radius: 50%;} - 70% {background-color: #fe9289; transform: translate(-50px, 110px); border-radius: 0;} - 90% {background-color: #53c7ff; transform: translate(-50px, -50px); border-radius: 50%;} - 100% {background-color: transparent; transform: translate(-50px, -50px); border-radius: 50%;} -} - -/* the gif animation was created by @Jake Fleming https://dribbble.com/shots/9948351-kitty-wiggle */ -body:not(.default-loading-page).loading-animation-cat .progress-bar-message::before { - content: "GIF creator: Jake Fleming"; - display: block; - background: no-repeat center/cover; - width: 800px; - height: 500px; - margin-top: -20px; - font-size: initial; - color: var(--text-muted); - filter: hue-rotate(-55deg) saturate(120%); - position: initial; - animation: unset; -} - -body:not(.default-loading-page).loading-animation-cat.theme-dark .progress-bar-message::before { - filter: invert(100%) hue-rotate(153deg) saturate(250%); -} - -body:not(.default-loading-page).loading-animation-cat.theme-light .progress-bar { - background-color: white; -} - -body:not(.default-loading-page).loading-animation-cat.theme-dark .progress-bar { - background-color: black; -} - -body:not(.default-loading-page).loading-animation-cat .progress-bar-message { - color: var(--text-normal); - font-size: 25px; - visibility: visible; -} - -body:not(.default-loading-page).loading-animation-custom .progress-bar-message::before { - position: initial; - animation: unset; - display: block; - content: var(--loading-page-custom-gif-caption); - background: no-repeat center/cover var(--loading-page-custom-gif-url); - width: 800px; - height: 600px; - margin-top: -20px; -} - -body:not(.default-loading-page).loading-shape-with-custom-gif .progress-bar-message:before { - display: block; - width: 250px; - height: 250px; - content: var(--loading-page-custom-gif-caption-alt); - background: no-repeat center/cover var(--loading-page-custom-gif-url-alt); - animation: shape-gif 2.5s infinite alternate; -} - -body:not(.default-loading-page).loading-shape-with-custom-gif.loading-shape-with-custom-high-contrast-bg.theme-light .progress-bar { - background-color: black; -} - -body:not(.default-loading-page).loading-shape-with-custom-gif.loading-shape-with-custom-high-contrast-bg.theme-dark .progress-bar { - background-color: white; -} - -body:not(.default-loading-page).loading-shape-with-custom-gif.loading-shape-with-custom-high-contrast-bg.theme-dark .progress-bar-message::before { - animation: shape-gif-dark 2.5s infinite alternate; - transform: translateZ(0); - -webkit-transform: translateZ(0); - will-change: transform; -} - -@keyframes shape-gif { - 0% {filter: hue-rotate(0deg); transform: translate(-80px, -80px); border-radius: 50%;} - 25% {filter: hue-rotate(90deg); transform: translate(80px, -80px); border-radius: 0;} - 50% {filter: hue-rotate(180deg); transform: translate(80px, 80px); border-radius: 50%;} - 75% {filter: hue-rotate(270deg); transform: translate(-80px, 80px); border-radius: 0;} - 100% {filter: hue-rotate(360deg); transform: translate(-80px, -80px); border-radius: 50%;} -} - -@keyframes shape-gif-dark { - 0% {filter: hue-rotate(0deg) invert(100%); transform: translate(-80px, -80px); border-radius: 50%;} - 25% {filter: hue-rotate(90deg) invert(100%); transform: translate(80px, -80px); border-radius: 0;} - 50% {filter: hue-rotate(180deg) invert(100%); transform: translate(80px, 80px); border-radius: 50%;} - 75% {filter: hue-rotate(270deg) invert(100%); transform: translate(-80px, 80px); border-radius: 0;} - 100% {filter: hue-rotate(360deg) invert(100%); transform: translate(-80px, -80px); border-radius: 50%;} -} - -body:not(.default-loading-page).loading-add-icons .progress-bar-message { - all: initial; - font-size: var(--font-size-loading-add); - color: var(--loading-add-text-color); - animation: 1.5s infinite alternate; - animation-name: gradientChange, moving; -} - -/*加载画面的文字*/ -body:not(.default-loading-page).loading-add-icons .progress-bar-message::before { - all: initial; - color: var(--loading-add-text-color); - content: var(--loading-text-before); - animation: 2s infinite alternate; - animation-name: gradientChange; -} - -body:not(.default-loading-page).loading-add-icons .progress-bar-message::after { - all: initial; - color: var(--loading-add-text-color); - content: var(--loading-text-after); - animation: 2s infinite alternate; - animation-name: gradientChange; - transform: translateZ(0); - -webkit-transform: translateZ(0); - will-change: transform; -} - -@keyframes gradientChange { - 100% { color: var(--loading-add-text-color-alt); } -} -@keyframes moving { - 0% { transform: translateX(-100px); } - 100% { transform: translateX(100px); } -} - -body:not(.default-loading-page).loading-custom-text .progress-bar-message::before { - all: initial; - content: var(--loading-diy-text); - font-family: var(--font-loading-text) !important; - visibility: visible !important; - display: block; - font-size: var(--font-size-loading-diy-text); - line-height: 2; - color: var(--loading-diy-text-color); -} - -body:not(.default-loading-page).loading-custom-text.loading-text-typing-style .progress-bar-message::before { - overflow: hidden; - white-space: nowrap; - border-right: 0.07em solid; - animation: typing-style 3s steps(23, end), - cursor-blink 0.3s step-end infinite alternate; - transform: translateZ(0); - -webkit-transform: translateZ(0); - will-change: transform; -} - -@keyframes cursor-blink { - 50% {border-color: transparent;} -} - -@keyframes typing-style { - 0% {width: 0;} - 100% {width: 42ch;} -} - -body:not(.default-loading-page).loading-custom-text.loading-text-moving-style .progress-bar-message::before { - animation: moving-style 3s ease-in-out infinite alternate; - transform: translateZ(0); - -webkit-transform: translateZ(0); - will-change: transform; -} - -@keyframes moving-style { - 0% {-webkit-transform: translateX(-100px); transform: translateX(-100px);} - 50% {-webkit-transform: translateX(100px); transform: translateX(100px);} - 100% {-webkit-transform: translateX(-100px); transform: translateX(-100px)} -} - -body:not(.default-loading-page).loading-custom-text.loading-text-shinning-style .progress-bar-message::before { - animation: shinning-style 3s infinite; - transform: translateZ(0); - -webkit-transform: translateZ(0); - will-change: transform; -} - -@keyframes shinning-style { - 0% { opacity: 1;} - 45% { opacity: 0;} - 90% { opacity: 1;} -} - -body:not(.default-loading-page).loading-custom-text.loading-text-color-changing-style .progress-bar-message::before { - animation: color-changing-style 3s infinite; - transform: translateZ(0); - -webkit-transform: translateZ(0); - will-change: transform; -} - -@keyframes color-changing-style { - 0% { color: var(--text-blue);} - 25% { color: var(--text-green);} - 50% { color: var(--text-yellow);} - 75% { color: var(--text-red);} - 100% { color: var(--text-blue);} -} - -body:not(.default-loading-page).loading-custom-text.loading-text-typing-style.loading-text-moving-style .progress-bar-message::before { - animation: - typing-style 3s steps(26, end), - cursor-blink 0.3s step-end infinite alternate, - moving-style 3s ease-in-out infinite alternate; - transform: translateZ(0); - -webkit-transform: translateZ(0); - will-change: transform; -} - -body:not(.default-loading-page).loading-custom-text.loading-text-typing-style.loading-text-shinning-style .progress-bar-message::before { - animation: - typing-style 3s steps(26, end), - cursor-blink 0.3s step-end infinite alternate, - shinning-style 3s infinite; - transform: translateZ(0); - -webkit-transform: translateZ(0); - will-change: transform; -} - -body:not(.default-loading-page).loading-custom-text.loading-text-typing-style.loading-text-color-changing-style .progress-bar-message::before { - animation: - color-changing-style 3s infinite, - typing-style 3s steps(26, end), - cursor-blink 0.3s step-end infinite alternate; - transform: translateZ(0); - -webkit-transform: translateZ(0); - will-change: transform; -} - -body:not(.default-loading-page).loading-custom-text.loading-text-typing-style.loading-text-moving-style.loading-text-shinning-style .progress-bar-message::before { - animation: - typing-style 3s steps(26, end), - cursor-blink 0.3s step-end infinite alternate, - moving-style 3s ease-in-out infinite alternate, - shinning-style 3s infinite; - transform: translateZ(0); - -webkit-transform: translateZ(0); - will-change: transform; -} - -body:not(.default-loading-page).loading-custom-text.loading-text-typing-style.loading-text-moving-style.loading-text-shinning-style.loading-text-color-changing-style .progress-bar-message::before { - animation: - typing-style 3s steps(26, end), - cursor-blink 0.3s step-end infinite alternate, - moving-style 3s ease-in-out infinite alternate, - shinning-style 3s infinite, - color-changing-style 3s infinite; - transform: translateZ(0); - -webkit-transform: translateZ(0); - will-change: transform; -} - -body:not(.default-loading-page).loading-custom-text.loading-text-moving-style.loading-text-shinning-style .progress-bar-message::before { - animation: - moving-style 3s ease-in-out infinite alternate, - shinning-style 3s infinite; - transform: translateZ(0); - -webkit-transform: translateZ(0); - will-change: transform; -} - -body:not(.default-loading-page).loading-custom-text.loading-text-moving-style.loading-text-color-changing-style .progress-bar-message::before { - animation: - moving-style 3s ease-in-out infinite alternate, - color-changing-style 3s infinite; - transform: translateZ(0); - -webkit-transform: translateZ(0); - will-change: transform; -} - -body:not(.default-loading-page).loading-custom-text.loading-text-moving-style.loading-text-shinning-style.loading-text-color-changing-style .progress-bar-message::before { - animation: - moving-style 3s ease-in-out infinite alternate, - shinning-style 3s infinite, - color-changing-style 3s infinite; - transform: translateZ(0); - -webkit-transform: translateZ(0); - will-change: transform; -} - -body:not(.default-loading-page).loading-custom-text.loading-text-shinning-style.loading-text-color-changing-style .progress-bar-message::before { - animation: - shinning-style 3s infinite, - color-changing-style 3s infinite; - transform: translateZ(0); - -webkit-transform: translateZ(0); - will-change: transform; -} - -/* the mario animation was created by @B.C.Rikko https://bcrikko.github.io/css-collection/other/mario/index.html */ -/* need mario snippets */ -body:not(.default-loading-page).loading-page-style-mario .progress-bar-message:before { - content: ""; - position: relative; - visibility: visible !important; - display: block; - top: calc(var(--pixel) * -6); - left: calc(var(--pixel) * -6.5); - width: var(--pixel); - height: var(--pixel); - background: transparent; - animation: sprite 0.618s infinite, jump 0.618s infinite; - transform: translateZ(0); - -webkit-transform: translateZ(0); - will-change: transform; -} - -@keyframes jump { - from, 25%, 75%, to {transform: translateY(0);} - 50% {transform: translateY(calc(var(--pixel) * -8));} -} - -@keyframes sprite { - from, 24%, 74%, to { - box-shadow: - /* r:1 */ - calc(var(--pixel) * 1) calc(var(--pixel) * 1) 0 transparent, - calc(var(--pixel) * 2) calc(var(--pixel) * 1) 0 transparent, - calc(var(--pixel) * 3) calc(var(--pixel) * 1) 0 transparent, - calc(var(--pixel) * 4) calc(var(--pixel) * 1) 0 transparent, - calc(var(--pixel) * 5) calc(var(--pixel) * 1) 0 transparent, - calc(var(--pixel) * 6) calc(var(--pixel) * 1) 0 transparent, - calc(var(--pixel) * 7) calc(var(--pixel) * 1) 0 var(--c-1), - calc(var(--pixel) * 8) calc(var(--pixel) * 1) 0 var(--c-1), - calc(var(--pixel) * 9) calc(var(--pixel) * 1) 0 var(--c-1), - calc(var(--pixel) * 10) calc(var(--pixel) * 1) 0 var(--c-1), - calc(var(--pixel) * 11) calc(var(--pixel) * 1) 0 var(--c-1), - calc(var(--pixel) * 12) calc(var(--pixel) * 1) 0 transparent, - calc(var(--pixel) * 13) calc(var(--pixel) * 1) 0 transparent, - calc(var(--pixel) * 14) calc(var(--pixel) * 1) 0 transparent, - calc(var(--pixel) * 15) calc(var(--pixel) * 1) 0 transparent, - calc(var(--pixel) * 16) calc(var(--pixel) * 1) 0 transparent, - - /* r:2 */ - calc(var(--pixel) * 1) calc(var(--pixel) * 2) 0 transparent, - calc(var(--pixel) * 2) calc(var(--pixel) * 2) 0 transparent, - calc(var(--pixel) * 3) calc(var(--pixel) * 2) 0 transparent, - calc(var(--pixel) * 4) calc(var(--pixel) * 2) 0 transparent, - calc(var(--pixel) * 5) calc(var(--pixel) * 2) 0 transparent, - calc(var(--pixel) * 6) calc(var(--pixel) * 2) 0 var(--c-1), - calc(var(--pixel) * 7) calc(var(--pixel) * 2) 0 var(--c-1), - calc(var(--pixel) * 8) calc(var(--pixel) * 2) 0 var(--c-1), - calc(var(--pixel) * 9) calc(var(--pixel) * 2) 0 var(--c-1), - calc(var(--pixel) * 10) calc(var(--pixel) * 2) 0 var(--c-1), - calc(var(--pixel) * 11) calc(var(--pixel) * 2) 0 var(--c-1), - calc(var(--pixel) * 12) calc(var(--pixel) * 2) 0 var(--c-1), - calc(var(--pixel) * 13) calc(var(--pixel) * 2) 0 var(--c-1), - calc(var(--pixel) * 14) calc(var(--pixel) * 2) 0 var(--c-1), - calc(var(--pixel) * 15) calc(var(--pixel) * 2) 0 transparent, - calc(var(--pixel) * 16) calc(var(--pixel) * 2) 0 transparent, - - /* r:3 */ - calc(var(--pixel) * 1) calc(var(--pixel) * 3) 0 transparent, - calc(var(--pixel) * 2) calc(var(--pixel) * 3) 0 transparent, - calc(var(--pixel) * 3) calc(var(--pixel) * 3) 0 transparent, - calc(var(--pixel) * 4) calc(var(--pixel) * 3) 0 transparent, - calc(var(--pixel) * 5) calc(var(--pixel) * 3) 0 transparent, - calc(var(--pixel) * 6) calc(var(--pixel) * 3) 0 var(--c-3), - calc(var(--pixel) * 7) calc(var(--pixel) * 3) 0 var(--c-3), - calc(var(--pixel) * 8) calc(var(--pixel) * 3) 0 var(--c-3), - calc(var(--pixel) * 9) calc(var(--pixel) * 3) 0 var(--c-2), - calc(var(--pixel) * 10) calc(var(--pixel) * 3) 0 var(--c-2), - calc(var(--pixel) * 11) calc(var(--pixel) * 3) 0 var(--c-3), - calc(var(--pixel) * 12) calc(var(--pixel) * 3) 0 var(--c-2), - calc(var(--pixel) * 13) calc(var(--pixel) * 3) 0 transparent, - calc(var(--pixel) * 14) calc(var(--pixel) * 3) 0 transparent, - calc(var(--pixel) * 15) calc(var(--pixel) * 3) 0 transparent, - calc(var(--pixel) * 16) calc(var(--pixel) * 3) 0 transparent, - - /* r:4 */ - calc(var(--pixel) * 1) calc(var(--pixel) * 4) 0 transparent, - calc(var(--pixel) * 2) calc(var(--pixel) * 4) 0 transparent, - calc(var(--pixel) * 3) calc(var(--pixel) * 4) 0 transparent, - calc(var(--pixel) * 4) calc(var(--pixel) * 4) 0 transparent, - calc(var(--pixel) * 5) calc(var(--pixel) * 4) 0 var(--c-3), - calc(var(--pixel) * 6) calc(var(--pixel) * 4) 0 var(--c-2), - calc(var(--pixel) * 7) calc(var(--pixel) * 4) 0 var(--c-3), - calc(var(--pixel) * 8) calc(var(--pixel) * 4) 0 var(--c-2), - calc(var(--pixel) * 9) calc(var(--pixel) * 4) 0 var(--c-2), - calc(var(--pixel) * 10) calc(var(--pixel) * 4) 0 var(--c-2), - calc(var(--pixel) * 11) calc(var(--pixel) * 4) 0 var(--c-3), - calc(var(--pixel) * 12) calc(var(--pixel) * 4) 0 var(--c-2), - calc(var(--pixel) * 13) calc(var(--pixel) * 4) 0 var(--c-2), - calc(var(--pixel) * 14) calc(var(--pixel) * 4) 0 var(--c-2), - calc(var(--pixel) * 15) calc(var(--pixel) * 4) 0 transparent, - calc(var(--pixel) * 16) calc(var(--pixel) * 4) 0 transparent, - - /* r:5 */ - calc(var(--pixel) * 1) calc(var(--pixel) * 5) 0 transparent, - calc(var(--pixel) * 2) calc(var(--pixel) * 5) 0 transparent, - calc(var(--pixel) * 3) calc(var(--pixel) * 5) 0 transparent, - calc(var(--pixel) * 4) calc(var(--pixel) * 5) 0 transparent, - calc(var(--pixel) * 5) calc(var(--pixel) * 5) 0 var(--c-3), - calc(var(--pixel) * 6) calc(var(--pixel) * 5) 0 var(--c-2), - calc(var(--pixel) * 7) calc(var(--pixel) * 5) 0 var(--c-3), - calc(var(--pixel) * 8) calc(var(--pixel) * 5) 0 var(--c-3), - calc(var(--pixel) * 9) calc(var(--pixel) * 5) 0 var(--c-2), - calc(var(--pixel) * 10) calc(var(--pixel) * 5) 0 var(--c-2), - calc(var(--pixel) * 11) calc(var(--pixel) * 5) 0 var(--c-2), - calc(var(--pixel) * 12) calc(var(--pixel) * 5) 0 var(--c-3), - calc(var(--pixel) * 13) calc(var(--pixel) * 5) 0 var(--c-2), - calc(var(--pixel) * 14) calc(var(--pixel) * 5) 0 var(--c-2), - calc(var(--pixel) * 15) calc(var(--pixel) * 5) 0 var(--c-2), - calc(var(--pixel) * 16) calc(var(--pixel) * 5) 0 transparent, - - /* r:6 */ - calc(var(--pixel) * 1) calc(var(--pixel) * 6) 0 transparent, - calc(var(--pixel) * 2) calc(var(--pixel) * 6) 0 transparent, - calc(var(--pixel) * 3) calc(var(--pixel) * 6) 0 transparent, - calc(var(--pixel) * 4) calc(var(--pixel) * 6) 0 transparent, - calc(var(--pixel) * 5) calc(var(--pixel) * 6) 0 var(--c-3), - calc(var(--pixel) * 6) calc(var(--pixel) * 6) 0 var(--c-3), - calc(var(--pixel) * 7) calc(var(--pixel) * 6) 0 var(--c-2), - calc(var(--pixel) * 8) calc(var(--pixel) * 6) 0 var(--c-2), - calc(var(--pixel) * 9) calc(var(--pixel) * 6) 0 var(--c-2), - calc(var(--pixel) * 10) calc(var(--pixel) * 6) 0 var(--c-2), - calc(var(--pixel) * 11) calc(var(--pixel) * 6) 0 var(--c-3), - calc(var(--pixel) * 12) calc(var(--pixel) * 6) 0 var(--c-3), - calc(var(--pixel) * 13) calc(var(--pixel) * 6) 0 var(--c-3), - calc(var(--pixel) * 14) calc(var(--pixel) * 6) 0 var(--c-3), - calc(var(--pixel) * 15) calc(var(--pixel) * 6) 0 transparent, - calc(var(--pixel) * 16) calc(var(--pixel) * 6) 0 transparent, - - /* r:7 */ - calc(var(--pixel) * 1) calc(var(--pixel) * 7) 0 transparent, - calc(var(--pixel) * 2) calc(var(--pixel) * 7) 0 transparent, - calc(var(--pixel) * 3) calc(var(--pixel) * 7) 0 transparent, - calc(var(--pixel) * 4) calc(var(--pixel) * 7) 0 transparent, - calc(var(--pixel) * 5) calc(var(--pixel) * 7) 0 transparent, - calc(var(--pixel) * 6) calc(var(--pixel) * 7) 0 transparent, - calc(var(--pixel) * 7) calc(var(--pixel) * 7) 0 var(--c-2), - calc(var(--pixel) * 8) calc(var(--pixel) * 7) 0 var(--c-2), - calc(var(--pixel) * 9) calc(var(--pixel) * 7) 0 var(--c-2), - calc(var(--pixel) * 10) calc(var(--pixel) * 7) 0 var(--c-2), - calc(var(--pixel) * 11) calc(var(--pixel) * 7) 0 var(--c-2), - calc(var(--pixel) * 12) calc(var(--pixel) * 7) 0 var(--c-2), - calc(var(--pixel) * 13) calc(var(--pixel) * 7) 0 var(--c-2), - calc(var(--pixel) * 14) calc(var(--pixel) * 7) 0 transparent, - calc(var(--pixel) * 15) calc(var(--pixel) * 7) 0 transparent, - calc(var(--pixel) * 16) calc(var(--pixel) * 7) 0 transparent, - - /* r:8 */ - calc(var(--pixel) * 1) calc(var(--pixel) * 8) 0 transparent, - calc(var(--pixel) * 2) calc(var(--pixel) * 8) 0 transparent, - calc(var(--pixel) * 3) calc(var(--pixel) * 8) 0 transparent, - calc(var(--pixel) * 4) calc(var(--pixel) * 8) 0 transparent, - calc(var(--pixel) * 5) calc(var(--pixel) * 8) 0 transparent, - calc(var(--pixel) * 6) calc(var(--pixel) * 8) 0 var(--c-3), - calc(var(--pixel) * 7) calc(var(--pixel) * 8) 0 var(--c-3), - calc(var(--pixel) * 8) calc(var(--pixel) * 8) 0 var(--c-1), - calc(var(--pixel) * 9) calc(var(--pixel) * 8) 0 var(--c-3), - calc(var(--pixel) * 10) calc(var(--pixel) * 8) 0 var(--c-3), - calc(var(--pixel) * 11) calc(var(--pixel) * 8) 0 var(--c-3), - calc(var(--pixel) * 12) calc(var(--pixel) * 8) 0 transparent, - calc(var(--pixel) * 13) calc(var(--pixel) * 8) 0 transparent, - calc(var(--pixel) * 14) calc(var(--pixel) * 8) 0 transparent, - calc(var(--pixel) * 15) calc(var(--pixel) * 8) 0 transparent, - calc(var(--pixel) * 16) calc(var(--pixel) * 8) 0 transparent, - - /* r:9 */ - calc(var(--pixel) * 1) calc(var(--pixel) * 9) 0 transparent, - calc(var(--pixel) * 2) calc(var(--pixel) * 9) 0 transparent, - calc(var(--pixel) * 3) calc(var(--pixel) * 9) 0 transparent, - calc(var(--pixel) * 4) calc(var(--pixel) * 9) 0 transparent, - calc(var(--pixel) * 5) calc(var(--pixel) * 9) 0 var(--c-3), - calc(var(--pixel) * 6) calc(var(--pixel) * 9) 0 var(--c-3), - calc(var(--pixel) * 7) calc(var(--pixel) * 9) 0 var(--c-3), - calc(var(--pixel) * 8) calc(var(--pixel) * 9) 0 var(--c-1), - calc(var(--pixel) * 9) calc(var(--pixel) * 9) 0 var(--c-3), - calc(var(--pixel) * 10) calc(var(--pixel) * 9) 0 var(--c-3), - calc(var(--pixel) * 11) calc(var(--pixel) * 9) 0 var(--c-1), - calc(var(--pixel) * 12) calc(var(--pixel) * 9) 0 var(--c-3), - calc(var(--pixel) * 13) calc(var(--pixel) * 9) 0 var(--c-3), - calc(var(--pixel) * 14) calc(var(--pixel) * 9) 0 var(--c-3), - calc(var(--pixel) * 15) calc(var(--pixel) * 9) 0 transparent, - calc(var(--pixel) * 16) calc(var(--pixel) * 9) 0 transparent, - - /* r:10 */ - calc(var(--pixel) * 1) calc(var(--pixel) * 10) 0 transparent, - calc(var(--pixel) * 2) calc(var(--pixel) * 10) 0 transparent, - calc(var(--pixel) * 3) calc(var(--pixel) * 10) 0 transparent, - calc(var(--pixel) * 4) calc(var(--pixel) * 10) 0 var(--c-3), - calc(var(--pixel) * 5) calc(var(--pixel) * 10) 0 var(--c-3), - calc(var(--pixel) * 6) calc(var(--pixel) * 10) 0 var(--c-3), - calc(var(--pixel) * 7) calc(var(--pixel) * 10) 0 var(--c-3), - calc(var(--pixel) * 8) calc(var(--pixel) * 10) 0 var(--c-1), - calc(var(--pixel) * 9) calc(var(--pixel) * 10) 0 var(--c-1), - calc(var(--pixel) * 10) calc(var(--pixel) * 10) 0 var(--c-1), - calc(var(--pixel) * 11) calc(var(--pixel) * 10) 0 var(--c-1), - calc(var(--pixel) * 12) calc(var(--pixel) * 10) 0 var(--c-3), - calc(var(--pixel) * 13) calc(var(--pixel) * 10) 0 var(--c-3), - calc(var(--pixel) * 14) calc(var(--pixel) * 10) 0 var(--c-3), - calc(var(--pixel) * 15) calc(var(--pixel) * 10) 0 var(--c-3), - calc(var(--pixel) * 16) calc(var(--pixel) * 10) 0 transparent, - - /* r:11 */ - calc(var(--pixel) * 1) calc(var(--pixel) * 11) 0 transparent, - calc(var(--pixel) * 2) calc(var(--pixel) * 11) 0 transparent, - calc(var(--pixel) * 3) calc(var(--pixel) * 11) 0 transparent, - calc(var(--pixel) * 4) calc(var(--pixel) * 11) 0 var(--c-2), - calc(var(--pixel) * 5) calc(var(--pixel) * 11) 0 var(--c-2), - calc(var(--pixel) * 6) calc(var(--pixel) * 11) 0 var(--c-3), - calc(var(--pixel) * 7) calc(var(--pixel) * 11) 0 var(--c-1), - calc(var(--pixel) * 8) calc(var(--pixel) * 11) 0 var(--c-2), - calc(var(--pixel) * 9) calc(var(--pixel) * 11) 0 var(--c-1), - calc(var(--pixel) * 10) calc(var(--pixel) * 11) 0 var(--c-1), - calc(var(--pixel) * 11) calc(var(--pixel) * 11) 0 var(--c-2), - calc(var(--pixel) * 12) calc(var(--pixel) * 11) 0 var(--c-1), - calc(var(--pixel) * 13) calc(var(--pixel) * 11) 0 var(--c-3), - calc(var(--pixel) * 14) calc(var(--pixel) * 11) 0 var(--c-2), - calc(var(--pixel) * 15) calc(var(--pixel) * 11) 0 var(--c-2), - calc(var(--pixel) * 16) calc(var(--pixel) * 11) 0 transparent, - - /* r:12 */ - calc(var(--pixel) * 1) calc(var(--pixel) * 12) 0 transparent, - calc(var(--pixel) * 2) calc(var(--pixel) * 12) 0 transparent, - calc(var(--pixel) * 3) calc(var(--pixel) * 12) 0 transparent, - calc(var(--pixel) * 4) calc(var(--pixel) * 12) 0 var(--c-2), - calc(var(--pixel) * 5) calc(var(--pixel) * 12) 0 var(--c-2), - calc(var(--pixel) * 6) calc(var(--pixel) * 12) 0 var(--c-2), - calc(var(--pixel) * 7) calc(var(--pixel) * 12) 0 var(--c-1), - calc(var(--pixel) * 8) calc(var(--pixel) * 12) 0 var(--c-1), - calc(var(--pixel) * 9) calc(var(--pixel) * 12) 0 var(--c-1), - calc(var(--pixel) * 10) calc(var(--pixel) * 12) 0 var(--c-1), - calc(var(--pixel) * 11) calc(var(--pixel) * 12) 0 var(--c-1), - calc(var(--pixel) * 12) calc(var(--pixel) * 12) 0 var(--c-1), - calc(var(--pixel) * 13) calc(var(--pixel) * 12) 0 var(--c-2), - calc(var(--pixel) * 14) calc(var(--pixel) * 12) 0 var(--c-2), - calc(var(--pixel) * 15) calc(var(--pixel) * 12) 0 var(--c-2), - calc(var(--pixel) * 16) calc(var(--pixel) * 12) 0 transparent, - - /* r:13 */ - calc(var(--pixel) * 1) calc(var(--pixel) * 13) 0 transparent, - calc(var(--pixel) * 2) calc(var(--pixel) * 13) 0 transparent, - calc(var(--pixel) * 3) calc(var(--pixel) * 13) 0 transparent, - calc(var(--pixel) * 4) calc(var(--pixel) * 13) 0 var(--c-2), - calc(var(--pixel) * 5) calc(var(--pixel) * 13) 0 var(--c-2), - calc(var(--pixel) * 6) calc(var(--pixel) * 13) 0 var(--c-1), - calc(var(--pixel) * 7) calc(var(--pixel) * 13) 0 var(--c-1), - calc(var(--pixel) * 8) calc(var(--pixel) * 13) 0 var(--c-1), - calc(var(--pixel) * 9) calc(var(--pixel) * 13) 0 var(--c-1), - calc(var(--pixel) * 10) calc(var(--pixel) * 13) 0 var(--c-1), - calc(var(--pixel) * 11) calc(var(--pixel) * 13) 0 var(--c-1), - calc(var(--pixel) * 12) calc(var(--pixel) * 13) 0 var(--c-1), - calc(var(--pixel) * 13) calc(var(--pixel) * 13) 0 var(--c-1), - calc(var(--pixel) * 14) calc(var(--pixel) * 13) 0 var(--c-2), - calc(var(--pixel) * 15) calc(var(--pixel) * 13) 0 var(--c-2), - calc(var(--pixel) * 16) calc(var(--pixel) * 13) 0 transparent, - - /* r:14 */ - calc(var(--pixel) * 1) calc(var(--pixel) * 14) 0 transparent, - calc(var(--pixel) * 2) calc(var(--pixel) * 14) 0 transparent, - calc(var(--pixel) * 3) calc(var(--pixel) * 14) 0 transparent, - calc(var(--pixel) * 4) calc(var(--pixel) * 14) 0 transparent, - calc(var(--pixel) * 5) calc(var(--pixel) * 14) 0 transparent, - calc(var(--pixel) * 6) calc(var(--pixel) * 14) 0 var(--c-1), - calc(var(--pixel) * 7) calc(var(--pixel) * 14) 0 var(--c-1), - calc(var(--pixel) * 8) calc(var(--pixel) * 14) 0 var(--c-1), - calc(var(--pixel) * 9) calc(var(--pixel) * 14) 0 transparent, - calc(var(--pixel) * 10) calc(var(--pixel) * 14) 0 transparent, - calc(var(--pixel) * 11) calc(var(--pixel) * 14) 0 var(--c-1), - calc(var(--pixel) * 12) calc(var(--pixel) * 14) 0 var(--c-1), - calc(var(--pixel) * 13) calc(var(--pixel) * 14) 0 var(--c-1), - calc(var(--pixel) * 14) calc(var(--pixel) * 14) 0 transparent, - calc(var(--pixel) * 15) calc(var(--pixel) * 14) 0 transparent, - calc(var(--pixel) * 16) calc(var(--pixel) * 14) 0 transparent, - - /* r:15 */ - calc(var(--pixel) * 1) calc(var(--pixel) * 15) 0 transparent, - calc(var(--pixel) * 2) calc(var(--pixel) * 15) 0 transparent, - calc(var(--pixel) * 3) calc(var(--pixel) * 15) 0 transparent, - calc(var(--pixel) * 4) calc(var(--pixel) * 15) 0 transparent, - calc(var(--pixel) * 5) calc(var(--pixel) * 15) 0 var(--c-3), - calc(var(--pixel) * 6) calc(var(--pixel) * 15) 0 var(--c-3), - calc(var(--pixel) * 7) calc(var(--pixel) * 15) 0 var(--c-3), - calc(var(--pixel) * 8) calc(var(--pixel) * 15) 0 transparent, - calc(var(--pixel) * 9) calc(var(--pixel) * 15) 0 transparent, - calc(var(--pixel) * 10) calc(var(--pixel) * 15) 0 transparent, - calc(var(--pixel) * 11) calc(var(--pixel) * 15) 0 transparent, - calc(var(--pixel) * 12) calc(var(--pixel) * 15) 0 var(--c-3), - calc(var(--pixel) * 13) calc(var(--pixel) * 15) 0 var(--c-3), - calc(var(--pixel) * 14) calc(var(--pixel) * 15) 0 var(--c-3), - calc(var(--pixel) * 15) calc(var(--pixel) * 15) 0 transparent, - calc(var(--pixel) * 16) calc(var(--pixel) * 15) 0 transparent, - - /* r:16 */ - calc(var(--pixel) * 1) calc(var(--pixel) * 16) 0 transparent, - calc(var(--pixel) * 2) calc(var(--pixel) * 16) 0 transparent, - calc(var(--pixel) * 3) calc(var(--pixel) * 16) 0 transparent, - calc(var(--pixel) * 4) calc(var(--pixel) * 16) 0 var(--c-3), - calc(var(--pixel) * 5) calc(var(--pixel) * 16) 0 var(--c-3), - calc(var(--pixel) * 6) calc(var(--pixel) * 16) 0 var(--c-3), - calc(var(--pixel) * 7) calc(var(--pixel) * 16) 0 var(--c-3), - calc(var(--pixel) * 8) calc(var(--pixel) * 16) 0 transparent, - calc(var(--pixel) * 9) calc(var(--pixel) * 16) 0 transparent, - calc(var(--pixel) * 10) calc(var(--pixel) * 16) 0 transparent, - calc(var(--pixel) * 11) calc(var(--pixel) * 16) 0 transparent, - calc(var(--pixel) * 12) calc(var(--pixel) * 16) 0 var(--c-3), - calc(var(--pixel) * 13) calc(var(--pixel) * 16) 0 var(--c-3), - calc(var(--pixel) * 14) calc(var(--pixel) * 16) 0 var(--c-3), - calc(var(--pixel) * 15) calc(var(--pixel) * 16) 0 var(--c-3), - calc(var(--pixel) * 16) calc(var(--pixel) * 16) 0 transparent; - } - - 25%, 75% { - box-shadow: - /* r:1 */ - calc(var(--pixel) * 1) calc(var(--pixel) * 1) 0 transparent, - calc(var(--pixel) * 2) calc(var(--pixel) * 1) 0 transparent, - calc(var(--pixel) * 3) calc(var(--pixel) * 1) 0 transparent, - calc(var(--pixel) * 4) calc(var(--pixel) * 1) 0 transparent, - calc(var(--pixel) * 5) calc(var(--pixel) * 1) 0 transparent, - calc(var(--pixel) * 6) calc(var(--pixel) * 1) 0 transparent, - calc(var(--pixel) * 7) calc(var(--pixel) * 1) 0 transparent, - calc(var(--pixel) * 8) calc(var(--pixel) * 1) 0 transparent, - calc(var(--pixel) * 9) calc(var(--pixel) * 1) 0 transparent, - calc(var(--pixel) * 10) calc(var(--pixel) * 1) 0 transparent, - calc(var(--pixel) * 11) calc(var(--pixel) * 1) 0 transparent, - calc(var(--pixel) * 12) calc(var(--pixel) * 1) 0 transparent, - calc(var(--pixel) * 13) calc(var(--pixel) * 1) 0 transparent, - calc(var(--pixel) * 14) calc(var(--pixel) * 1) 0 var(--c-2), - calc(var(--pixel) * 15) calc(var(--pixel) * 1) 0 var(--c-2), - calc(var(--pixel) * 16) calc(var(--pixel) * 1) 0 var(--c-2), - - /* r:2 */ - calc(var(--pixel) * 1) calc(var(--pixel) * 2) 0 transparent, - calc(var(--pixel) * 2) calc(var(--pixel) * 2) 0 transparent, - calc(var(--pixel) * 3) calc(var(--pixel) * 2) 0 transparent, - calc(var(--pixel) * 4) calc(var(--pixel) * 2) 0 transparent, - calc(var(--pixel) * 5) calc(var(--pixel) * 2) 0 transparent, - calc(var(--pixel) * 6) calc(var(--pixel) * 2) 0 transparent, - calc(var(--pixel) * 7) calc(var(--pixel) * 2) 0 var(--c-1), - calc(var(--pixel) * 8) calc(var(--pixel) * 2) 0 var(--c-1), - calc(var(--pixel) * 9) calc(var(--pixel) * 2) 0 var(--c-1), - calc(var(--pixel) * 10) calc(var(--pixel) * 2) 0 var(--c-1), - calc(var(--pixel) * 11) calc(var(--pixel) * 2) 0 var(--c-1), - calc(var(--pixel) * 12) calc(var(--pixel) * 2) 0 transparent, - calc(var(--pixel) * 13) calc(var(--pixel) * 2) 0 transparent, - calc(var(--pixel) * 14) calc(var(--pixel) * 2) 0 var(--c-2), - calc(var(--pixel) * 15) calc(var(--pixel) * 2) 0 var(--c-2), - calc(var(--pixel) * 16) calc(var(--pixel) * 2) 0 var(--c-2), - - /* r:3 */ - calc(var(--pixel) * 1) calc(var(--pixel) * 3) 0 transparent, - calc(var(--pixel) * 2) calc(var(--pixel) * 3) 0 transparent, - calc(var(--pixel) * 3) calc(var(--pixel) * 3) 0 transparent, - calc(var(--pixel) * 4) calc(var(--pixel) * 3) 0 transparent, - calc(var(--pixel) * 5) calc(var(--pixel) * 3) 0 transparent, - calc(var(--pixel) * 6) calc(var(--pixel) * 3) 0 var(--c-1), - calc(var(--pixel) * 7) calc(var(--pixel) * 3) 0 var(--c-1), - calc(var(--pixel) * 8) calc(var(--pixel) * 3) 0 var(--c-1), - calc(var(--pixel) * 9) calc(var(--pixel) * 3) 0 var(--c-1), - calc(var(--pixel) * 10) calc(var(--pixel) * 3) 0 var(--c-1), - calc(var(--pixel) * 11) calc(var(--pixel) * 3) 0 var(--c-1), - calc(var(--pixel) * 12) calc(var(--pixel) * 3) 0 var(--c-1), - calc(var(--pixel) * 13) calc(var(--pixel) * 3) 0 var(--c-1), - calc(var(--pixel) * 14) calc(var(--pixel) * 3) 0 var(--c-1), - calc(var(--pixel) * 15) calc(var(--pixel) * 3) 0 var(--c-2), - calc(var(--pixel) * 16) calc(var(--pixel) * 3) 0 var(--c-2), - - /* r:4 */ - calc(var(--pixel) * 1) calc(var(--pixel) * 4) 0 transparent, - calc(var(--pixel) * 2) calc(var(--pixel) * 4) 0 transparent, - calc(var(--pixel) * 3) calc(var(--pixel) * 4) 0 transparent, - calc(var(--pixel) * 4) calc(var(--pixel) * 4) 0 transparent, - calc(var(--pixel) * 5) calc(var(--pixel) * 4) 0 transparent, - calc(var(--pixel) * 6) calc(var(--pixel) * 4) 0 var(--c-3), - calc(var(--pixel) * 7) calc(var(--pixel) * 4) 0 var(--c-3), - calc(var(--pixel) * 8) calc(var(--pixel) * 4) 0 var(--c-3), - calc(var(--pixel) * 9) calc(var(--pixel) * 4) 0 var(--c-2), - calc(var(--pixel) * 10) calc(var(--pixel) * 4) 0 var(--c-2), - calc(var(--pixel) * 11) calc(var(--pixel) * 4) 0 var(--c-3), - calc(var(--pixel) * 12) calc(var(--pixel) * 4) 0 var(--c-2), - calc(var(--pixel) * 13) calc(var(--pixel) * 4) 0 transparent, - calc(var(--pixel) * 14) calc(var(--pixel) * 4) 0 var(--c-2), - calc(var(--pixel) * 15) calc(var(--pixel) * 4) 0 var(--c-2), - calc(var(--pixel) * 16) calc(var(--pixel) * 4) 0 var(--c-2), - - /* r:5 */ - calc(var(--pixel) * 1) calc(var(--pixel) * 5) 0 transparent, - calc(var(--pixel) * 2) calc(var(--pixel) * 5) 0 transparent, - calc(var(--pixel) * 3) calc(var(--pixel) * 5) 0 transparent, - calc(var(--pixel) * 4) calc(var(--pixel) * 5) 0 transparent, - calc(var(--pixel) * 5) calc(var(--pixel) * 5) 0 var(--c-3), - calc(var(--pixel) * 6) calc(var(--pixel) * 5) 0 var(--c-2), - calc(var(--pixel) * 7) calc(var(--pixel) * 5) 0 var(--c-3), - calc(var(--pixel) * 8) calc(var(--pixel) * 5) 0 var(--c-2), - calc(var(--pixel) * 9) calc(var(--pixel) * 5) 0 var(--c-2), - calc(var(--pixel) * 10) calc(var(--pixel) * 5) 0 var(--c-2), - calc(var(--pixel) * 11) calc(var(--pixel) * 5) 0 var(--c-3), - calc(var(--pixel) * 12) calc(var(--pixel) * 5) 0 var(--c-2), - calc(var(--pixel) * 13) calc(var(--pixel) * 5) 0 var(--c-2), - calc(var(--pixel) * 14) calc(var(--pixel) * 5) 0 var(--c-2), - calc(var(--pixel) * 15) calc(var(--pixel) * 5) 0 var(--c-3), - calc(var(--pixel) * 16) calc(var(--pixel) * 5) 0 var(--c-3), - - /* r:6 */ - calc(var(--pixel) * 1) calc(var(--pixel) * 6) 0 transparent, - calc(var(--pixel) * 2) calc(var(--pixel) * 6) 0 transparent, - calc(var(--pixel) * 3) calc(var(--pixel) * 6) 0 transparent, - calc(var(--pixel) * 4) calc(var(--pixel) * 6) 0 transparent, - calc(var(--pixel) * 5) calc(var(--pixel) * 6) 0 var(--c-3), - calc(var(--pixel) * 6) calc(var(--pixel) * 6) 0 var(--c-2), - calc(var(--pixel) * 7) calc(var(--pixel) * 6) 0 var(--c-3), - calc(var(--pixel) * 8) calc(var(--pixel) * 6) 0 var(--c-3), - calc(var(--pixel) * 9) calc(var(--pixel) * 6) 0 var(--c-2), - calc(var(--pixel) * 10) calc(var(--pixel) * 6) 0 var(--c-2), - calc(var(--pixel) * 11) calc(var(--pixel) * 6) 0 var(--c-2), - calc(var(--pixel) * 12) calc(var(--pixel) * 6) 0 var(--c-3), - calc(var(--pixel) * 13) calc(var(--pixel) * 6) 0 var(--c-2), - calc(var(--pixel) * 14) calc(var(--pixel) * 6) 0 var(--c-2), - calc(var(--pixel) * 15) calc(var(--pixel) * 6) 0 var(--c-2), - calc(var(--pixel) * 16) calc(var(--pixel) * 6) 0 var(--c-3), - - /* r:7 */ - calc(var(--pixel) * 1) calc(var(--pixel) * 7) 0 transparent, - calc(var(--pixel) * 2) calc(var(--pixel) * 7) 0 transparent, - calc(var(--pixel) * 3) calc(var(--pixel) * 7) 0 transparent, - calc(var(--pixel) * 4) calc(var(--pixel) * 7) 0 transparent, - calc(var(--pixel) * 5) calc(var(--pixel) * 7) 0 var(--c-3), - calc(var(--pixel) * 6) calc(var(--pixel) * 7) 0 var(--c-3), - calc(var(--pixel) * 7) calc(var(--pixel) * 7) 0 var(--c-2), - calc(var(--pixel) * 8) calc(var(--pixel) * 7) 0 var(--c-2), - calc(var(--pixel) * 9) calc(var(--pixel) * 7) 0 var(--c-2), - calc(var(--pixel) * 10) calc(var(--pixel) * 7) 0 var(--c-2), - calc(var(--pixel) * 11) calc(var(--pixel) * 7) 0 var(--c-3), - calc(var(--pixel) * 12) calc(var(--pixel) * 7) 0 var(--c-3), - calc(var(--pixel) * 13) calc(var(--pixel) * 7) 0 var(--c-3), - calc(var(--pixel) * 14) calc(var(--pixel) * 7) 0 var(--c-3), - calc(var(--pixel) * 15) calc(var(--pixel) * 7) 0 transparent, - calc(var(--pixel) * 16) calc(var(--pixel) * 7) 0 transparent, - - /* r:8 */ - calc(var(--pixel) * 1) calc(var(--pixel) * 8) 0 transparent, - calc(var(--pixel) * 2) calc(var(--pixel) * 8) 0 transparent, - calc(var(--pixel) * 3) calc(var(--pixel) * 8) 0 transparent, - calc(var(--pixel) * 4) calc(var(--pixel) * 8) 0 transparent, - calc(var(--pixel) * 5) calc(var(--pixel) * 8) 0 transparent, - calc(var(--pixel) * 6) calc(var(--pixel) * 8) 0 transparent, - calc(var(--pixel) * 7) calc(var(--pixel) * 8) 0 var(--c-2), - calc(var(--pixel) * 8) calc(var(--pixel) * 8) 0 var(--c-2), - calc(var(--pixel) * 9) calc(var(--pixel) * 8) 0 var(--c-2), - calc(var(--pixel) * 10) calc(var(--pixel) * 8) 0 var(--c-2), - calc(var(--pixel) * 11) calc(var(--pixel) * 8) 0 var(--c-2), - calc(var(--pixel) * 12) calc(var(--pixel) * 8) 0 var(--c-2), - calc(var(--pixel) * 13) calc(var(--pixel) * 8) 0 var(--c-2), - calc(var(--pixel) * 14) calc(var(--pixel) * 8) 0 transparent, - calc(var(--pixel) * 15) calc(var(--pixel) * 8) 0 transparent, - calc(var(--pixel) * 16) calc(var(--pixel) * 8) 0 transparent, - - /* r:9 */ - calc(var(--pixel) * 1) calc(var(--pixel) * 9) 0 transparent, - calc(var(--pixel) * 2) calc(var(--pixel) * 9) 0 transparent, - calc(var(--pixel) * 3) calc(var(--pixel) * 9) 0 var(--c-3), - calc(var(--pixel) * 4) calc(var(--pixel) * 9) 0 var(--c-3), - calc(var(--pixel) * 5) calc(var(--pixel) * 9) 0 var(--c-3), - calc(var(--pixel) * 6) calc(var(--pixel) * 9) 0 var(--c-3), - calc(var(--pixel) * 7) calc(var(--pixel) * 9) 0 var(--c-3), - calc(var(--pixel) * 8) calc(var(--pixel) * 9) 0 var(--c-1), - calc(var(--pixel) * 9) calc(var(--pixel) * 9) 0 var(--c-3), - calc(var(--pixel) * 10) calc(var(--pixel) * 9) 0 var(--c-3), - calc(var(--pixel) * 11) calc(var(--pixel) * 9) 0 var(--c-3), - calc(var(--pixel) * 12) calc(var(--pixel) * 9) 0 var(--c-1), - calc(var(--pixel) * 13) calc(var(--pixel) * 9) 0 var(--c-3), - calc(var(--pixel) * 14) calc(var(--pixel) * 9) 0 transparent, - calc(var(--pixel) * 15) calc(var(--pixel) * 9) 0 transparent, - calc(var(--pixel) * 16) calc(var(--pixel) * 9) 0 transparent, - - /* r:10 */ - calc(var(--pixel) * 1) calc(var(--pixel) * 10) 0 transparent, - calc(var(--pixel) * 2) calc(var(--pixel) * 10) 0 var(--c-3), - calc(var(--pixel) * 3) calc(var(--pixel) * 10) 0 var(--c-3), - calc(var(--pixel) * 4) calc(var(--pixel) * 10) 0 var(--c-3), - calc(var(--pixel) * 5) calc(var(--pixel) * 10) 0 var(--c-3), - calc(var(--pixel) * 6) calc(var(--pixel) * 10) 0 var(--c-3), - calc(var(--pixel) * 7) calc(var(--pixel) * 10) 0 var(--c-3), - calc(var(--pixel) * 8) calc(var(--pixel) * 10) 0 var(--c-1), - calc(var(--pixel) * 9) calc(var(--pixel) * 10) 0 var(--c-3), - calc(var(--pixel) * 10) calc(var(--pixel) * 10) 0 var(--c-3), - calc(var(--pixel) * 11) calc(var(--pixel) * 10) 0 var(--c-3), - calc(var(--pixel) * 12) calc(var(--pixel) * 10) 0 var(--c-1), - calc(var(--pixel) * 13) calc(var(--pixel) * 10) 0 transparent, - calc(var(--pixel) * 14) calc(var(--pixel) * 10) 0 transparent, - calc(var(--pixel) * 15) calc(var(--pixel) * 10) 0 transparent, - calc(var(--pixel) * 16) calc(var(--pixel) * 10) 0 var(--c-3), - - /* r:11 */ - calc(var(--pixel) * 1) calc(var(--pixel) * 11) 0 var(--c-2), - calc(var(--pixel) * 2) calc(var(--pixel) * 11) 0 var(--c-2), - calc(var(--pixel) * 3) calc(var(--pixel) * 11) 0 var(--c-3), - calc(var(--pixel) * 4) calc(var(--pixel) * 11) 0 var(--c-3), - calc(var(--pixel) * 5) calc(var(--pixel) * 11) 0 var(--c-3), - calc(var(--pixel) * 6) calc(var(--pixel) * 11) 0 var(--c-3), - calc(var(--pixel) * 7) calc(var(--pixel) * 11) 0 var(--c-3), - calc(var(--pixel) * 8) calc(var(--pixel) * 11) 0 var(--c-3), - calc(var(--pixel) * 9) calc(var(--pixel) * 11) 0 var(--c-1), - calc(var(--pixel) * 10) calc(var(--pixel) * 11) 0 var(--c-1), - calc(var(--pixel) * 11) calc(var(--pixel) * 11) 0 var(--c-1), - calc(var(--pixel) * 12) calc(var(--pixel) * 11) 0 var(--c-1), - calc(var(--pixel) * 13) calc(var(--pixel) * 11) 0 var(--c-1), - calc(var(--pixel) * 14) calc(var(--pixel) * 11) 0 transparent, - calc(var(--pixel) * 15) calc(var(--pixel) * 11) 0 transparent, - calc(var(--pixel) * 16) calc(var(--pixel) * 11) 0 var(--c-3), - - /* r:12 */ - calc(var(--pixel) * 1) calc(var(--pixel) * 12) 0 var(--c-2), - calc(var(--pixel) * 2) calc(var(--pixel) * 12) 0 var(--c-2), - calc(var(--pixel) * 3) calc(var(--pixel) * 12) 0 var(--c-2), - calc(var(--pixel) * 4) calc(var(--pixel) * 12) 0 transparent, - calc(var(--pixel) * 5) calc(var(--pixel) * 12) 0 transparent, - calc(var(--pixel) * 6) calc(var(--pixel) * 12) 0 var(--c-1), - calc(var(--pixel) * 7) calc(var(--pixel) * 12) 0 var(--c-3), - calc(var(--pixel) * 8) calc(var(--pixel) * 12) 0 var(--c-1), - calc(var(--pixel) * 9) calc(var(--pixel) * 12) 0 var(--c-1), - calc(var(--pixel) * 10) calc(var(--pixel) * 12) 0 var(--c-1), - calc(var(--pixel) * 11) calc(var(--pixel) * 12) 0 var(--c-2), - calc(var(--pixel) * 12) calc(var(--pixel) * 12) 0 var(--c-1), - calc(var(--pixel) * 13) calc(var(--pixel) * 12) 0 var(--c-2), - calc(var(--pixel) * 14) calc(var(--pixel) * 12) 0 var(--c-1), - calc(var(--pixel) * 15) calc(var(--pixel) * 12) 0 var(--c-3), - calc(var(--pixel) * 16) calc(var(--pixel) * 12) 0 var(--c-3), - - /* r:13 */ - calc(var(--pixel) * 1) calc(var(--pixel) * 13) 0 transparent, - calc(var(--pixel) * 2) calc(var(--pixel) * 13) 0 var(--c-2), - calc(var(--pixel) * 3) calc(var(--pixel) * 13) 0 transparent, - calc(var(--pixel) * 4) calc(var(--pixel) * 13) 0 var(--c-3), - calc(var(--pixel) * 5) calc(var(--pixel) * 13) 0 transparent, - calc(var(--pixel) * 6) calc(var(--pixel) * 13) 0 var(--c-1), - calc(var(--pixel) * 7) calc(var(--pixel) * 13) 0 var(--c-1), - calc(var(--pixel) * 8) calc(var(--pixel) * 13) 0 var(--c-1), - calc(var(--pixel) * 9) calc(var(--pixel) * 13) 0 var(--c-1), - calc(var(--pixel) * 10) calc(var(--pixel) * 13) 0 var(--c-1), - calc(var(--pixel) * 11) calc(var(--pixel) * 13) 0 var(--c-1), - calc(var(--pixel) * 12) calc(var(--pixel) * 13) 0 var(--c-1), - calc(var(--pixel) * 13) calc(var(--pixel) * 13) 0 var(--c-1), - calc(var(--pixel) * 14) calc(var(--pixel) * 13) 0 var(--c-1), - calc(var(--pixel) * 15) calc(var(--pixel) * 13) 0 var(--c-3), - calc(var(--pixel) * 16) calc(var(--pixel) * 13) 0 var(--c-3), - - /* r:14 */ - calc(var(--pixel) * 1) calc(var(--pixel) * 14) 0 transparent, - calc(var(--pixel) * 2) calc(var(--pixel) * 14) 0 transparent, - calc(var(--pixel) * 3) calc(var(--pixel) * 14) 0 var(--c-3), - calc(var(--pixel) * 4) calc(var(--pixel) * 14) 0 var(--c-3), - calc(var(--pixel) * 5) calc(var(--pixel) * 14) 0 var(--c-3), - calc(var(--pixel) * 6) calc(var(--pixel) * 14) 0 var(--c-1), - calc(var(--pixel) * 7) calc(var(--pixel) * 14) 0 var(--c-1), - calc(var(--pixel) * 8) calc(var(--pixel) * 14) 0 var(--c-1), - calc(var(--pixel) * 9) calc(var(--pixel) * 14) 0 var(--c-1), - calc(var(--pixel) * 10) calc(var(--pixel) * 14) 0 var(--c-1), - calc(var(--pixel) * 11) calc(var(--pixel) * 14) 0 var(--c-1), - calc(var(--pixel) * 12) calc(var(--pixel) * 14) 0 var(--c-1), - calc(var(--pixel) * 13) calc(var(--pixel) * 14) 0 var(--c-1), - calc(var(--pixel) * 14) calc(var(--pixel) * 14) 0 var(--c-1), - calc(var(--pixel) * 15) calc(var(--pixel) * 14) 0 var(--c-3), - calc(var(--pixel) * 16) calc(var(--pixel) * 14) 0 var(--c-3), - - /* r:15 */ - calc(var(--pixel) * 1) calc(var(--pixel) * 15) 0 transparent, - calc(var(--pixel) * 2) calc(var(--pixel) * 15) 0 var(--c-3), - calc(var(--pixel) * 3) calc(var(--pixel) * 15) 0 var(--c-3), - calc(var(--pixel) * 4) calc(var(--pixel) * 15) 0 var(--c-3), - calc(var(--pixel) * 5) calc(var(--pixel) * 15) 0 var(--c-1), - calc(var(--pixel) * 6) calc(var(--pixel) * 15) 0 var(--c-1), - calc(var(--pixel) * 7) calc(var(--pixel) * 15) 0 var(--c-1), - calc(var(--pixel) * 8) calc(var(--pixel) * 15) 0 var(--c-1), - calc(var(--pixel) * 9) calc(var(--pixel) * 15) 0 var(--c-1), - calc(var(--pixel) * 10) calc(var(--pixel) * 15) 0 var(--c-1), - calc(var(--pixel) * 11) calc(var(--pixel) * 15) 0 var(--c-1), - calc(var(--pixel) * 12) calc(var(--pixel) * 15) 0 var(--c-1), - calc(var(--pixel) * 13) calc(var(--pixel) * 15) 0 transparent, - calc(var(--pixel) * 14) calc(var(--pixel) * 15) 0 transparent, - calc(var(--pixel) * 15) calc(var(--pixel) * 15) 0 transparent, - calc(var(--pixel) * 16) calc(var(--pixel) * 15) 0 transparent, - - /* r:16 */ - calc(var(--pixel) * 1) calc(var(--pixel) * 16) 0 transparent, - calc(var(--pixel) * 2) calc(var(--pixel) * 16) 0 var(--c-3), - calc(var(--pixel) * 3) calc(var(--pixel) * 16) 0 transparent, - calc(var(--pixel) * 4) calc(var(--pixel) * 16) 0 transparent, - calc(var(--pixel) * 5) calc(var(--pixel) * 16) 0 var(--c-1), - calc(var(--pixel) * 6) calc(var(--pixel) * 16) 0 var(--c-1), - calc(var(--pixel) * 7) calc(var(--pixel) * 16) 0 var(--c-1), - calc(var(--pixel) * 8) calc(var(--pixel) * 16) 0 var(--c-1), - calc(var(--pixel) * 9) calc(var(--pixel) * 16) 0 transparent, - calc(var(--pixel) * 10) calc(var(--pixel) * 16) 0 transparent, - calc(var(--pixel) * 11) calc(var(--pixel) * 16) 0 transparent, - calc(var(--pixel) * 12) calc(var(--pixel) * 16) 0 transparent, - calc(var(--pixel) * 13) calc(var(--pixel) * 16) 0 transparent, - calc(var(--pixel) * 14) calc(var(--pixel) * 16) 0 transparent, - calc(var(--pixel) * 15) calc(var(--pixel) * 16) 0 transparent, - calc(var(--pixel) * 16) calc(var(--pixel) * 16) 0 transparent; - } -} - -/*加载画面的进度条框*/ -body:not(.default-loading-page) .progress-bar-line { - display: none; -} - -/*加载画面的进度条*/ -body:not(.default-loading-page) .progress-bar-subline { - display: none; -} - -/* ================================== */ -/* ======= Banner ======= */ -/* ================================== */ -.obsidian-banner-wrapper { - margin-top: 0px; - padding-top: 0px; -} -.mod-header:has(+ .obsidian-banner-wrapper) .metadata-container -{ - display:none; -} -.mod-header:has(+ .obsidian-banner-wrapper) .inline-title -{ - display:none; -} -.mod-header:has(+ .obsidian-banner-wrapper) { - margin-top: var(--banner-height); - -} -.show-inline-title .obsidian-banner-wrapper.has-banner-icon .obsidian-banner-icon.v-center, -.show-inline-title .obsidian-banner-wrapper.has-banner-icon .obsidian-banner-icon.v-custom { - margin-top: calc(-1em - 6px); -} -.show-inline-title .obsidian-banner-wrapper.has-banner-icon .obsidian-banner-icon.v-above { - margin-top: calc(-2em - 12px); -} -/* ====cssclass background 属性可以使得banner作为笔记背景 ===== */ -.markdown-preview-view.background .obsidian-banner-wrapper { - position: absolute; - width: 100%; - height: 100%; - top: 0; - bottom: 0; - left: 0; - background-size: cover; - z-index: -1; - opacity: 0.8; - background-attachment:fixed; -} - -.markdown-preview-view.background .obsidian-banner { - top: -310px; - width: 100%; - height: 100%; - background-repeat: no-repeat; - background-size: cover; -} - -.is-live-preview.background .has-banner .obsidian-banner { - position: absolute!important; - width: 100%; - top: 0; - bottom: 0; - left: 0; - background-size: cover; - z-index: -1; -} -.is-live-preview.background .has-banner .cm-hmd-frontmatter { - display: none; -} -.is-live-preview.background .has-banner .obsidian-banner.cm6-banner { - opacity: 0.5; - height: 100%; -} - -:is(.markdown-preview-view,.markdown-rendered) img.banner-image.full-width{ - max-width: none; -} -/* ==修复新弹出窗口banner位置错位===================== */ -body.is-popout-window { - --banner-height: 300px; - --banner-internal-embed-height: 200px; - --banner-preview-embed-height: 120px; -} - - -/* ================================== */ -/* =======Tasks======= */ -/* ================================== */ -:is(.markdown-preview-view,.markdown-rendered) .tasks-backlink>.internal-link.internal-link-short-mode { - font-size: 0; -} -:is(.markdown-preview-view,.markdown-rendered) .tasks-backlink>.internal-link.internal-link-short-mode::before { - content: ""; - background-image: url("data:image/svg+xml,%3Csvg width='' height='' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M330.97 451.71l-120.70 120.70a170.67 170.67 0 0 0 235.22 247.21l6.14-5.89 120.70-120.66 60.33 60.33-120.70 120.70A256 256 0 1 1 149.93 512l120.70-120.66 60.33 60.33z m301.70-60.33a42.67 42.67 0 0 1 0 60.33l-181.03 181.03a42.67 42.67 0 0 1-60.33-60.33l181.03-181.03a42.67 42.67 0 0 1 60.33 0z m241.37-241.37a256 256 0 0 1 0 362.03l-120.70 120.70-60.33-60.33 120.70-120.70a170.67 170.67 0 0 0-235.22-247.21l-6.14 5.85-120.70 120.70-60.33-60.33L512 150.02a256 256 0 0 1 362.03 0z' fill='%230061b0'/%3E%3C/svg%3E"); - background-size: 16px 16px; - transform: translate(0, 2px); - background-repeat: no-repeat; - display: inline-block; - height: 16px; - width: 16px; -} - -a.tasks-edit { - background-color: var(--text-accent); - mask-image: url("data:image/svg+xml,%3Csvg width='' height='' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M247.47 851.91c-7.11 0-14.22-2.84-19.91-8.53-7.11-7.11-9.96-15.64-8.53-25.6l34.13-184.89c1.42-5.69 4.27-11.38 8.53-14.22l345.6-345.6c52.62-52.62 137.96-52.62 190.58 0 25.6 25.6 39.82 59.73 39.82 95.29s-14.22 69.69-39.82 95.29L453.69 809.24c-4.27 4.27-8.53 7.11-14.22 8.53l-184.89 34.13h-7.11z m186.31-62.58z m-125.16-137.96l-25.6 136.53 136.53-25.6 338.49-338.49c14.22-14.22 22.76-34.13 22.76-55.47s-8.53-39.82-22.76-55.47c-29.87-29.87-79.64-29.87-110.93 0L308.62 651.38z' fill='%230061b0'/%3E%3Cpath d='M739.56 510.58c-7.11 0-14.22-2.84-19.91-8.53L568.89 351.29c-11.38-11.38-11.38-28.44 0-39.82 11.38-11.38 28.44-11.38 39.82 0l150.76 150.76c11.38 11.38 11.38 28.44 0 39.82-4.27 5.69-12.8 8.53-19.91 8.53z' fill='%230061b0'/%3E%3Cpath d='M797.87 860.44H593.07c-15.64 0-28.44-12.8-28.44-28.44s12.8-28.44 28.44-28.44h204.8c15.64 0 28.44 12.8 28.44 28.44s-12.8 28.44-28.44 28.44z' fill='%230061b0'/%3E%3C/svg%3E"); - -webkit-mask-image: url("data:image/svg+xml,%3Csvg width='' height='' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M247.47 851.91c-7.11 0-14.22-2.84-19.91-8.53-7.11-7.11-9.96-15.64-8.53-25.6l34.13-184.89c1.42-5.69 4.27-11.38 8.53-14.22l345.6-345.6c52.62-52.62 137.96-52.62 190.58 0 25.6 25.6 39.82 59.73 39.82 95.29s-14.22 69.69-39.82 95.29L453.69 809.24c-4.27 4.27-8.53 7.11-14.22 8.53l-184.89 34.13h-7.11z m186.31-62.58z m-125.16-137.96l-25.6 136.53 136.53-25.6 338.49-338.49c14.22-14.22 22.76-34.13 22.76-55.47s-8.53-39.82-22.76-55.47c-29.87-29.87-79.64-29.87-110.93 0L308.62 651.38z' fill='%230061b0'/%3E%3Cpath d='M739.56 510.58c-7.11 0-14.22-2.84-19.91-8.53L568.89 351.29c-11.38-11.38-11.38-28.44 0-39.82 11.38-11.38 28.44-11.38 39.82 0l150.76 150.76c11.38 11.38 11.38 28.44 0 39.82-4.27 5.69-12.8 8.53-19.91 8.53z' fill='%230061b0'/%3E%3Cpath d='M797.87 860.44H593.07c-15.64 0-28.44-12.8-28.44-28.44s12.8-28.44 28.44-28.44h204.8c15.64 0 28.44 12.8 28.44 28.44s-12.8 28.44-28.44 28.44z' fill='%230061b0'/%3E%3C/svg%3E"); - display: inline-block; - transform: translate(0, -1px); - background-size: 25px 20px; - height: 20px; - width: 20px; - margin-left: -0.1em; - cursor: pointer; -} - -/* ================================== */ -/* ======= Hover editor======= */ -/* ================================== */ -body.theme-light .popover.hover-popover:not(.is-loaded) { - box-shadow: 0px 2.7px 3.1px rgba(0, 0, 0, 0.032), - 0px 5.9px 8.7px rgba(0, 0, 0, 0.052), - 0px 10.4px 18.1px rgba(0, 0, 0, 0.071), - 0px 20px 40px rgba(0, 0, 0, 0.11); -} - -body .popover.hover-popover:not(.is-loaded) :is(.markdown-preview-view,.markdown-rendered), -.popover.hover-popover:not(.is-loaded) .markdown-source-view .cm-scroller { - padding: 5px 32px 0; -} - -body.theme-dark .popover.hover-popover:not(.is-loaded) { - box-shadow: 0px 2.7px 3.1px rgba(0, 0, 0, 0.081), - 0px 5.9px 8.7px rgba(0, 0, 0, 0.131), - 0px 10.4px 18.1px rgba(0, 0, 0, 0.18), - 0px 20px 40px rgba(0, 0, 0, 0.28); -} - -/* ================================== */ -/* ======= custom cssclass ======= */ -/* ========fullwidth noyaml noscroll================ */ -/*主页预览宽度*/ -:is(.markdown-preview-view,.markdown-rendered).fullwidth.is-readable-line-width .markdown-preview-sizer, -.markdown-source-view.is-readable-line-width.fullwidth .CodeMirror, -.is-readable-line-width.fullwidth :is(.markdown-preview-section,.markdown-rendered), -.is-readable-line-width.fullwidth :is(.markdown-preview-section,.markdown-rendered) > div, -:is(.markdown-preview-view,.markdown-rendered).is-readable-line-width.fullwidth :is(.markdown-preview-section,.markdown-rendered) { - width: 100% !important; - max-width: 100% !important; - /* margin: 0 auto; */ -} - - -/*隐藏backlinks区域*/ -:is(.markdown-preview-view,.markdown-rendered).nobacklinks .embedded-backlinks { - display: none; -} -/*隐藏yaml区域*/ -:is(.markdown-preview-view,.markdown-rendered).noyaml div>.language-yaml { - display: none; -} -:is(.markdown-preview-view,.markdown-rendered).noyaml div>:is(.metadata-container,.frontmatter-container) { - display: none; -} -/*隐藏滚动条*/ -:is(.markdown-preview-view,.markdown-rendered).noscroll::-webkit-scrollbar { - display: none; -} -/*无序列表分栏(配合伪看板使用)*/ -.theme-dark .gridlist ul>li a { - color:var(--text-folder-file) !important; -} - -.gridlist ul ul { - display: grid; - grid-template-columns: repeat(2, minmax(10px, 1fr)); - gap: 0.5rem; -} -.gridlist ul>li:not(.task-list-item) { - padding:0.2em 1em 0.2em 0.8em; - margin: 0px!important; -} -.gridlist ul>li>p:not(.task-list-item) { - margin-top: 0.55em; - margin-bottom: 0.55em; -} -.gridlist ul>li strong::before { - content: ''; - background-image: url("data:image/svg+xml,%3Csvg t='1626092983490' class='icon' viewBox='0 0 1024 1024' version='1.1' xmlns='http://www.w3.org/2000/svg' p-id='3709' width='200' height='200'%3E%3Cpath d='M444.88192 549.376h529.72544v263.5776a48.83456 48.83456 0 0 1-48.7936 48.88064H303.48288v-170.80832A141.53216 141.53216 0 0 1 444.88192 549.376z' fill='%23F4CA1C' p-id='3710'%3E%3C/path%3E%3Cpath d='M890.83904 196.80256h-269.85984a2.23744 2.23744 0 0 1-1.024-0.24064l-160.48128-80.384A82.176 82.176 0 0 0 422.81984 107.52H133.16096A82.11968 82.11968 0 0 0 51.2 189.60896v644.78208A82.11968 82.11968 0 0 0 133.16096 916.48h757.67808A82.11968 82.11968 0 0 0 972.8 834.39104V278.89152a82.11968 82.11968 0 0 0-81.96096-82.08896z m-757.67808-9.472h289.65888a2.24768 2.24768 0 0 1 1.024 0.24064l160.49664 80.384a82.304 82.304 0 0 0 36.65408 8.66816h269.85984a2.2784 2.2784 0 0 1 2.27328 2.27328v91.51488H130.88768V189.60896a2.2784 2.2784 0 0 1 2.27328-2.2784z m757.67808 649.33888H133.16096a2.2784 2.2784 0 0 1-2.27328-2.2784V450.22208h762.22464v384.16896a2.2784 2.2784 0 0 1-2.27328 2.2784z' fill='%23595BB3' p-id='3711'%3E%3C/path%3E%3C/svg%3E"); - background-size: 14px 14px; - background-repeat: no-repeat; - display: inline-block; - height: 13px; - width: 13px; - margin-right: 5px; - margin-left:-5px; -} - -.gridlist ul ul ul{ - display:flex; -} -.gridlist ul ul li:hover { - background: var(--background-secondary-translucent) !important; - border-color: var(--p-kanban-border-color) !important; - border-left: 1px solid var(--p-kanban-border-color) !important; -} - - -.gridlist ul li a[href$=".js"]::before { - font-family:var(--font-family-inline-code); - content: 'JS'; - color: var(--text-faint); - margin-right: 5px; - font-size:10px; -} -.gridlist ul li a[href$=".css"]::before { - font-family:var(--font-family-inline-code); - content: 'CSS'; - color: var(--text-faint); - margin-right: 5px; - font-size:10px; -} - -.gridlist ul li a[href$=".html"]::before { - font-family:var(--font-family-inline-code); - content: 'HTML'; - color: var(--text-faint); - margin-right: 5px; - font-size:10px; -} - -.gridlist ul li a[href$=".pdf"]::before { - font-family:var(--font-family-inline-code); - content: 'PDF'; - color: var(--text-faint); - margin-right: 5px; - font-size:10px; -} -.gridlist ul li a[href$=".mp3"]::before, -.gridlist ul li a[href$=".wav"]::before, -.gridlist ul li a[href$=".m4a"]::before, -.gridlist ul li a[href$=".ogg"]::before, -.gridlist ul li a[href$=".3gp"]::before, -.gridlist ul li a[href$=".flac"]::before { - content: ''; - background-size: 18px 18px; - background-repeat: no-repeat; - display: inline-block; - height: 18px; - width: 18px; - vertical-align: text-top; - margin-right: 5px; - background-image: url("data:image/svg+xml,%3Csvg t='1667450617533' class='icon' viewBox='0 0 1024 1024' version='1.1' xmlns='http://www.w3.org/2000/svg' p-id='2116' width='32' height='32'%3E%3Cpath d='M512 900.8c214.4 0 388.9-174.4 388.9-388.9 0-54-11.1-105.4-31-152.1 10.1 106.6-34.1 271.1-172 382.9-143.8 116.6-375.7 80.7-477 26.6 71.2 80.6 175.3 131.5 291.1 131.5z' fill='%23FFD524' p-id='2117'%3E%3C/path%3E%3Cpath d='M512 64.2c-26.1 0-52.2 2.3-77.7 6.7-16 2.8-26.7 18.1-23.9 34.1 2.8 16 18.1 26.7 34.1 23.9 22.2-3.9 44.9-5.9 67.6-5.9 160.5 0 298.5 97.7 357.8 236.7 20 46.8 31 98.2 31 152.1 0 214.4-174.4 388.9-388.9 388.9-115.8 0-219.9-50.9-291.2-131.5-60.7-68.6-97.7-158.7-97.7-257.4 0-124.2 57.2-238 157.1-312.3 13-9.7 15.8-28.2 6.1-41.2-9.7-13-28.2-15.8-41.2-6.1C131.8 236.7 64.2 371.1 64.2 512c0 246.9 200.9 447.8 447.8 447.8S959.7 758.9 959.7 512 758.9 64.2 512 64.2z' fill='%23333333' p-id='2118'%3E%3C/path%3E%3Cpath d='M343.2 158.6c4 0 8-0.8 11.9-2.5 3.4-1.5 6.8-3 10.3-4.4 15-6.2 22.3-23.4 16.1-38.4-6.2-15-23.3-22.3-38.4-16.1-3.9 1.6-7.8 3.3-11.7 5-14.9 6.6-21.6 24-15 38.8 4.7 11 15.5 17.6 26.8 17.6zM394.6 787.4c66.2 0 120.9-50.5 127.4-115.1 0.4-2 0.7-4 0.7-6.1V313.6H663c-8 21.5-27.6 49.4-75.9 63.8-15.6 4.6-24.5 21-19.8 36.6 3.8 12.8 15.5 21.1 28.2 21.1 2.8 0 5.6-0.4 8.4-1.2C705.3 403.8 728.9 322 727.2 283c-0.7-15.8-13.6-28.2-29.4-28.2H493.3c-16.3 0-29.4 13.2-29.4 29.4v375.2c0 38.2-31.1 69.2-69.2 69.2s-69.2-31.1-69.2-69.2c0-38.2 31.1-69.2 69.2-69.2 16.3 0 29.4-13.2 29.4-29.4s-13.2-29.4-29.4-29.4c-70.6 0-128.1 57.5-128.1 128.1s57.4 127.9 128 127.9z' fill='%23333333' p-id='2119'%3E%3C/path%3E%3C/svg%3E"); -} - -.gridlist ul li a[href$=".jpg"]::before, -.gridlist ul li a[href$=".png"]::before, -.gridlist ul li a[href$=".svg"]::before, -.gridlist ul li a[href$=".gif"]::before, -.gridlist ul li a[href$=".jpeg"]::before, -.gridlist ul li a[href$=".bmp"]::before { - content: ''; - background-image: url("data:image/svg+xml,%3Csvg t='1626092464076' class='icon' viewBox='0 0 1024 1024' version='1.1' xmlns='http://www.w3.org/2000/svg' p-id='3121' width='200' height='200'%3E%3Cpath d='M266.42944 804.352l123.3408-136.82688a37.93408 37.93408 0 0 1 53.39136-2.90304l81.6896 72.83712a37.92384 37.92384 0 0 0 56.43776-6.76864l99.92704-145.04448a37.91872 37.91872 0 0 1 58.15808-5.12l86.33856 87.31136 66.64704 72.65792-13.9264 60.18048-67.30752 25.46176-529.20832 11.5712z' fill='%23F4CA1C' p-id='3122'%3E%3C/path%3E%3Cpath d='M814.76096 148.48H209.23904A153.26208 153.26208 0 0 0 56.32 301.74208v415.40096A153.26208 153.26208 0 0 0 209.23904 870.4h605.52192A153.26208 153.26208 0 0 0 967.68 717.13792V301.74208A153.26208 153.26208 0 0 0 814.76096 148.48z m83.456 568.65792a83.62496 83.62496 0 0 1-83.456 83.62496H209.23904a83.62496 83.62496 0 0 1-83.456-83.62496V301.74208a83.62496 83.62496 0 0 1 83.456-83.63008h605.52192a83.62496 83.62496 0 0 1 83.456 83.61984v415.40096z m-137.728-298.55744a72.42752 72.42752 0 0 0-111.4112 9.87648l-99.712 145.46432a2.8672 2.8672 0 0 1-2.14528 1.29536 2.81088 2.81088 0 0 1-2.38592-0.75264L463.28832 501.41696a72.52992 72.52992 0 0 0-102.272 5.59104l-123.0848 137.216a34.77504 34.77504 0 1 0 51.67104 46.55616l123.0848-137.216a3.03104 3.03104 0 0 1 4.28544-0.2304l81.51552 73.04192a72.41728 72.41728 0 0 0 108.1088-13.02528l99.71712-145.4592a3.03104 3.03104 0 0 1 4.66432-0.41472l86.15936 87.552a34.78016 34.78016 0 1 0 49.47456-48.896z m-316.2368-33.32608a47.00672 47.00672 0 1 0-46.90432-47.00672 46.95552 46.95552 0 0 0 46.90432 47.00672z' fill='%23595BB3' p-id='3123'%3E%3C/path%3E%3C/svg%3E"); - background-size: 18px 16px; - background-repeat: no-repeat; - display: inline-block; - height: 18px; - width: 18px; - vertical-align: middle; - margin-right: 5px; -} - -.gridlist ul li a[href*=".excalidraw"]::before { - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23595BB3' d='M18.404 2.998c-.757-.754-2.077-.751-2.828.005l-1.784 1.791L11.586 7H7a.998.998 0 0 0-.939.658l-4 11c-.133.365-.042.774.232 1.049l2 2a.997.997 0 0 0 1.049.232l11-4A.998.998 0 0 0 17 17v-4.586l2.207-2.207v-.001h.001L21 8.409c.378-.378.586-.881.585-1.415 0-.535-.209-1.038-.588-1.415l-2.593-2.581zm-3.111 8.295A.996.996 0 0 0 15 12v4.3l-9.249 3.363 4.671-4.671c.026.001.052.008.078.008A1.5 1.5 0 1 0 9 13.5c0 .026.007.052.008.078l-4.671 4.671L7.7 9H12c.266 0 .52-.105.707-.293L14.5 6.914 17.086 9.5l-1.793 1.793zm3.206-3.208-2.586-2.586 1.079-1.084 2.593 2.581-1.086 1.089z '%3E%3C/path%3E%3C/svg%3E"); - content: ''; - background-size: 14px 18px; - background-repeat: no-repeat; - display: inline-block; - height: 14px; - width: 14px; - margin-right: 5px; -} - -/*PDF*/ - -@media print { - - code[class*='language-'], - pre[class*='language-'] { - word-wrap: break-word !important; - white-space: pre-wrap !important; - } - - th, - td { - white-space: pre-wrap !important; - /* word-break: break-word !important; */ - overflow-wrap: break-word !important; - } - /* Page breaks */ - - h2, h3, h4, h5, h6 { - page-break-after: avoid; - } - pre, blockquote { - page-break-inside: avoid; - } - - .print :not(font)>strong { - -webkit-print-color-adjust: exact; - color: var(--print-strong-color) !important; - } - - .print :not(font):not(strong)>em { - color: var(--print-em-color) !important; - } - - body.hr-for-pagination .markdown-rendered hr { - break-after: page; - visibility: hidden; - } - - body.hr-for-pagination.fancy-hr-number .markdown-rendered hr:after { - break-after: page; - visibility: visible; - } - - body.show-url-after-link a.external-link::after { - content: " (" attr(href) ") "; - } - - body.fancy-hr-icon .markdown-rendered hr { - border-image-source: linear-gradient(to right, var(--background-primary) 0%, var(--hr-color-icon-1) 30%, var(--hr-color-icon-2) 46%, transparent 46%, transparent 54%, var(--hr-color-icon-3) 54%, var(--hr-color-icon-4) 70%, var(--background-primary) 100%); - } - body.fancy-hr-no-icon .markdown-rendered hr { - border-image: linear-gradient(to right, var(--background-primary) 0%, var(--hr-color-1) 20%, var(--hr-color-2) 40%, var(--hr-color-3) 60%, var(--hr-color-4) 80%, var(--background-primary) 100%) 1; - } - - body.all-dark-pdf .print :is(.markdown-preview-view,.markdown-rendered) { - --background-primary:#202020; - -webkit-print-color-adjust: exact; - background-color: var(--background-primary) !important; - } - body.all-dark-pdf .print :is(.markdown-preview-view,.markdown-rendered) mark { - color: var(--text-highlight) !important; - } - body.all-dark-pdf .print .markdown-preview-view { - color: var(--text-normal) !important; - } - - .print .markdown-preview-view .callout.callout[data-callout="timeline"] >.callout-content { - display: grid !important; - } - .print .markdown-preview-view .callout.callout[data-callout="timeline"] .callout-content hr { - visibility: visible; - } - .print .markdown-preview-view .admonition-flex .admonition-content { - display: flex !important; - } - - body.text-indentation-two-em .print *:not(blockquote) > p { - text-indent: 2em; - } - body.text-indentation-two-em .print *:not(blockquote) > p>br { - content: ' '; - white-space: pre; - line-height: calc((var(--paragraph-spacing) + 0.3) * 1em); - display:unset; - } - body.text-indentation-two-em .print *:not(blockquote) > p>br::after { - content: '\A\9\9''; - } - body.justify-align .print *:not(blockquote) > p { - text-align: justify; - hyphens: auto; - } -} - -body.pdf-style-invert-color-light.theme-light, -body.pdf-style-invert-color-dark.theme-dark { - --pdf-background: var(--background-secondary); - --pdf-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1), 0 2px 8px transparent; - --pdf-thumbnail-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1), 0 2px 8px transparent; -} -body.pdf-style-invert-color-light.theme-light .pdf-viewer .canvasWrapper, -body.pdf-style-invert-color-dark.theme-dark .pdf-viewer .canvasWrapper, -body.pdf-style-invert-color.theme-light .pdf-thumbnail-view .thumbnailImage, -body.pdf-style-invert-color.theme-dark .pdf-thumbnail-view .thumbnailImage { - filter: invert(1) hue-rotate(180deg); -} - -body.pdf-style-green-bg-light.theme-light .pdf-viewer .textLayer, -body.pdf-style-green-bg-dark.theme-dark .pdf-viewer .textLayer { - background-color: #74c969; -} - -body.pdf-style-warm-bg-light.theme-light .pdf-viewer .textLayer, -body.pdf-style-warm-bg-dark.theme-dark .pdf-viewer .textLayer { - background-color: #f7b955; -} - -body.pdf-style-custom-bg.theme-dark { - --custom-bg-pdf-style: #; -} -body.pdf-style-custom-bg.theme-light { - --custom-bg-pdf-style: #; -} - -body.pdf-style-custom-bg .pdf-viewer .textLayer { - background-color: var(--custom-bg-pdf-style); -} - -/* ================================== */ -/* ======= Callout======= */ -/* ================================== */ -body.admonition-bg-color-same .callout { - background-color: rgba(var(--callout-color), 0.1); - border-width: var(--callout-border-width); -} -body.shade-callout-style .callout { - border:none; - box-shadow: inset 0 0 0 2px rgba(var(--callout-color), 0.25), 0px 0.5px 1px 0.5px rgba(0, 0, 0, 0.1) !important; -} -body.shade-callout-style .callout .callout-title { - padding: 6px; - background-color: rgba(var(--callout-color), 0.4); -} - -body.border-callout-style .callout { - --callout-radius: 2px; - border-left: solid 4px rgb(var(--callout-color)); -} - -body.border-callout-style .callout .callout-title { - padding: 6px; - background-color: rgba(var(--callout-color), 0.4); -} -body.border-callout-style .callout .callout-content { - background-color: rgba(var(--callout-color), 0.1); -} -.callout-title { - background-color: rgba(var(--callout-color), 0.15); -} -.callout { - padding: 0; - border-left: 4px solid rgba(var(--callout-color),0.15); - background-color:var(--admonition-bg-color); -} - -.callout-content { - padding: 5px 15px; -} -.is-live-preview .admonition-content>* br { - display: unset; -} -body.admonition-bg-color-same .callout-title { - color: rgb(var(--callout-color)); - background-color:unset; -} -.callout-title { - padding: 8px 0 8px 12px; - color: unset; -} -.admonition-title .admonition-title-icon { - color: rgb(var(--callout-color)); -} - -.callout .callout-title-inner>img:not([class*="emoji"]) { - border-radius: 1em !important; - margin: auto; - display: block; -} - -.callout-title-inner.admonition-title-content svg { - height: 1em; - align-self: center; - width: 1em; -} - -.callout-icon svg { - height: 1em; -} - -.markdown-source-view.is-live-preview .admonition-content .callout-content :is(h1,h2,h3,h4,h5,h6,p) { - margin: 0; -} - -.callout .callout-content p img { - display: block; -} - -.is-live-preview .callout:not(.admonition) .callout-content { - padding-top: 0; - padding-bottom: 0; -} -.callout-content { - padding-left: 10px; - padding-right: 10px; -} -.callout img[alt*=circle] { - border-radius: 35px; - width: 70px; - height: 70px; -} -/* ===编辑代码块按钮调整============ */ - - -.markdown-source-view.mod-cm6 .edit-block-button { - padding: 0; - top: 0; - border-radius: var(--radius-s); - right: 10px; - opacity: 0.3; -} -.markdown-source-view.mod-cm6 .edit-block-button::before { - width: 25px; - font-size: 11px; - text-align: center; - content: ''; - margin-left:1em; -} -.markdown-source-view.mod-cm6 .edit-block-button>svg { - display: none; -} - -/*cards 视图*/ -:root{ - --cards-width: 138px; -} - -@media (max-width: 450px) { - :root{ - --cards-width: 112.64px; - } -} - -@media (max-width: 375px) { - :root{ - --cards-width: 102.4px; - } -} - -@media (max-width: 350px) { - :root{ - --cards-width: 87.04px; - } -} -.callout.callout[data-callout*=cards] .callout-content { - padding: 0; -} -.callout.callout[data-callout*=cards] progress { - position: absolute; - width: var(--cards-width); - margin-top: -10px; - margin-left: calc(var(--cards-width) /2 * -1); - overflow: hidden; - height: 3px; - background: #f0ec05; -} -.callout.callout[data-callout*=cards] progress.yellow::-moz-progress-bar { - background: #e78f0c; -} -.callout.callout[data-callout*=cards] progress.yellow::-webkit-progress-value { - border-radius: 1em; - background: #e78f0c; -} - -.callout.callout[data-callout*=cards] progress.hot::-moz-progress-bar { - background: #fa7131dc; -} -.callout.callout[data-callout*=cards] progress.hot::-webkit-progress-value { - border-radius: 1em; - background: #fa7131dc; -} - - -.callout.callout[data-callout*=cards] table.dataview tbody { - display: flex; - flex-flow: wrap; - margin-top: 20px; - margin-left: 0.5em; - width: 105%; -} - -@media (max-width:1120px) { - .callout.callout[data-callout*=cards] table.dataview tbody { - margin-left: -40px; - padding: 0 40px - } -} - -@media (max-width:960px) { - .callout.callout[data-callout*=cards] table.dataview tbody { - margin-left: -30px; - padding: 0 30px - } -} - -@media (max-width:460px) { - .callout.callout[data-callout*=cards] table.dataview tbody { - padding: 0px; - margin-left: -20px; - } -} - -.callout.callout[data-callout*=cards] table.dataview>tbody>tr { - display: block; - width:var(--cards-width); - height: auto; - margin-left: 1.2em; - margin-bottom: 44px; - background-color: transparent; -} - -@media (max-width:1120px) { - .callout.callout[data-callout*=cards] table.dataview>tbody>tr { - margin-left: 40px; - } -} - -@media (max-width:960px) { - .callout.callout[data-callout*=cards] table.dataview>tbody>tr { - margin-left: 30px; - } -} - -@media (max-width:460px) { - .callout.callout[data-callout*=cards] table.dataview>tbody>tr { - margin-left: 20px; - margin-bottom: 20px; - } -} - -.callout.callout[data-callout*=cards] table.dataview tbody>tr>td:first-child, -.markdown-source-view.mod-cm6.callout.callout[data-callout*=cards] .dataview.table-view-table>tbody>tr>td:first-child { - width: 100%; - display: block; - box-shadow: 0 2px 16px rgba(0, 0, 0, .2); - position: relative; - padding: 0; -} - -.callout.callout[data-callout*=cards] table.dataview tbody>tr>td img { - vertical-align: top; - width: 100%; - height: calc(var(--cards-width) / 0.7 ); - background-color:var(--background-secondary); - -o-object-fit: cover; - object-fit: cover; -} -.callout.callout[data-callout*=cards] table.dataview tbody>tr>td:before { - display: none; -} -.callout.callout[data-callout*=cards] table.dataview tbody>tr>td:first-child:after { - content: ""; - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background-image: linear-gradient(90deg, hsla(0, 0%, 63.1%, .25), rgba(21, 21, 20, .1) 1%, hsla(0, 0%, 100%, .15) 4%, hsla(0, 0%, 58%, .1) 8%, hsla(0, 0%, 89%, 0) 57%, rgba(223, 218, 218, .03) 91%, rgba(223, 218, 218, .05) 98%, hsla(0, 0%, 100%, .1)); - box-shadow: inset 0 0 0 0 rgba(0, 0, 0, .1); -} -.callout.callout[data-callout*=cards] table.dataview tbody>tr>td:not(:first-child), -.markdown-source-view.mod-cm6.callout.callout[data-callout*=cards] .dataview.table-view-table>tbody>tr>td:not(:first-child) { - text-align: center; - padding: 0; - margin-top: 4px; - font-size: 15px; - color: var(--text-muted); - line-height: 18px; - overflow: hidden; - display: -webkit-box; - display: -moz-box; - -webkit-line-clamp: 2; - -moz-line-clamp: 2; - line-clamp: 2; - -webkit-box-orient: vertical; - -webkit-text-size-adjust: none; - box-orient: vertical; - height: auto; - font-size: 13px; - line-height: 1.1; - white-space: nowrap; - text-overflow: ellipsis; -} -.callout.callout[data-callout*=cards] table.dataview tbody>tr>td>button { - font-size: 12px; - background-color: transparent; - padding: 0; -} -.callout.callout[data-callout*=cards] table.dataview tbody>tr>td:nth-child(2) { - margin-top: 10px; -} -.callout.callout[data-callout*=cards] table.dataview tbody>tr>td:nth-child(3) { - -webkit-text-stroke: 0.25px ; -} -/*------------*/ - -.callout.callout[data-callout*=cards] table.dataview thead { - user-select: none; - width: 160px; - display: block; - float: right; - position: relative; - text-align: right; - padding-bottom: 4px -} -.callout.callout[data-callout*=cards] table.dataview thead:before { - content: ''; - background-repeat: no-repeat; - cursor: var(--cursor); - text-align: right; - padding: 4px 10px; - margin-bottom: 2px; - border-radius: 5px; - font-weight: 500; - font-size: var(--font-adaptive-small); -} -.callout.callout[data-callout*=cards] table.dataview thead:before { - opacity: .25; - background-position: center center; - background-size: 18px; - background-image: url('data:image/svg+xml;utf8,'); -} -.theme-light .callout.callout[data-callout*=cards] table.dataview thead:before { - background-image: url('data:image/svg+xml;utf8,'); -} -.callout.callout[data-callout*=cards] table.dataview thead:hover:before { - opacity: .5; -} -.callout.callout[data-callout*=cards] table.dataview thead>tr { - position: absolute; - display: none; - z-index: 9; - border: 1px solid var(--background-modifier-border); - background-color: var(--background-secondary); - box-shadow: 0 2px 8px var(--background-modifier-box-shadow); - padding: 6px; - border-radius: 6px; - flex-direction: column; - margin: 0; - width: 100%; -} -.callout.callout[data-callout*=cards] table.dataview thead:hover>tr { - display: flex; -} -.callout.callout[data-callout*=cards] table.dataview thead>tr>th { - display: block; - background-color: var(--background-primary); - padding: 3px 30px 3px 6px!important; - border-radius: 5px; - width: 100%; - font-weight: 400; - color: var(--text-muted); - border: none; - font-size: var(--font-adaptive-small); -} -.callout.callout[data-callout*=cards] table.dataview thead>tr>th[sortable-style=sortable-asc], -.callout.callout[data-callout*=cards] table.dataview thead>tr>th[sortable-style=sortable-desc] { - color: var(--text-normal); -} -.callout.callout[data-callout*=cards] table.dataview thead>tr>th:hover { - color: var(--text-normal); - background-color: var(--background-secondary); -} - -/*全透明callout*/ -.callout.callout[data-callout*=blank] { - box-shadow: none; - max-width: 100%; - background: transparent; - border: none; - background-color: transparent !important; - box-shadow: none !important; - margin: 0; -} - -.callout.callout[data-callout*=blank].is-collapsed .callout-fold { - border: none; - padding: 5px 10px; -} -.callout.callout[data-callout*=blank] .callout-title, -.callout.callout[data-callout*=blank] .callout-title :is(.callout-icon, .callout-title-inner) { - display: none; -} -.callout.callout[data-callout*=blank] .callout-content { - overflow: visible; - margin: 0; - padding: 0; - border: none; -} - -/* ===段落自动缩进============ */ -/*支持两种写法 - > [!note|indent] - > [!note indent] - */ -.callout.callout:is([data-callout-metadata*="indent"], -[data-callout*=indent]) .callout-content p br { - content: ''; - white-space: pre; - line-height: calc((var(--paragraph-spacing) + 0.3) * 1em); - display: unset; -} -.callout.callout:is([data-callout-metadata*="indent"], -[data-callout*=indent]) .callout-content>p { - text-indent: 2em; -} -.callout.callout:is([data-callout-metadata*="indent"], -[data-callout*=indent]) .callout-content blockquote>p { - text-indent: 2em; -} - -.callout.callout:is([data-callout-metadata*="indent"], -[data-callout*=indent]) .callout-content p br::after { - content: '\A\9\9'; -} - -/* ===段落两端对齐============ */ -/*支持两种写法 - > [!note|justify] - > [!note justify] - */ -.callout.callout:is([data-callout-metadata*="justify"], -[data-callout*=justify]) .callout-content>p { - text-align: justify; - hyphens: auto; - -webkit-hyphens: auto; -} -/* ===隐藏图标============ */ -.callout.callout:is([data-callout-metadata^="noicon"], -[data-callout*=noicon]) .callout-icon { - display: none; -} - -/* ===隐藏边框============ */ -.callout.callout:is([data-callout-metadata*="noborder"], -[data-callout*=noborder]) { - border-left: none; - background-color: transparent; - box-shadow: none; -} -.callout.callout:is([data-callout-metadata*="noborder"], -[data-callout*=noborder]) .callout-content { - border-left: none; - background-color: transparent; - box-shadow: none; - border: none; -} - -/* ===banner============ */ -.is-live-preview .admonition-flex .callout.callout[data-callout-metadata*="banner"]:nth-child(2) { - margin-top: -1.5em; -} - -.callout.callout[data-callout-metadata*="banner"] { - border-left: 0; - background-color: transparent; - box-shadow: none !important; -} -.callout.callout[data-callout-metadata*="banner"] .callout-content{ - overflow: visible; -} -.callout.callout[data-callout-metadata*="banner"] .callout-title { - background-color: transparent; - display: inline; -} -/* nested callout note for culumns | image used as tittle + centered */ -.callout.callout[data-callout-metadata*="banner"] .callout-title img { - border-radius: 1em; - margin: auto; - display: block; -} -.callout.callout[data-callout-metadata*="banner"] .callout-fold { - display: none; -} -.callout.callout[data-callout-metadata*="banner"] .callout-icon { - display: none; -} -.callout.callout[data-callout-metadata*="banner"] .callout-title h3 { - text-align: center; - line-height: 2; -} -.callout.callout[data-callout-metadata*="banner"] .callout-title h3::before { - display: none; -} -/* ===隐藏标题============ */ -.callout.callout:is([data-callout-metadata*="notitle"], -[data-callout*=notitle]) .callout-title { - display:none; -} -/* ===支持 right left center 语法============ */ -/*支持两种写法 - > [!note|right] - > [!note right] - */ -.callout.callout:is([data-callout-metadata*="left"], -[data-callout*=left]) { - float: left !important; - margin: unset; -} -.callout.callout:is([data-callout-metadata*="right"], -[data-callout*=right]) { - float: right !important; - margin: unset; -} - -.callout.callout:is([data-callout-metadata*="center"], -[data-callout*=center]) { - display: block; - margin: auto; - float: unset ; - text-align:center; -} -/* ===块内元素不换行============ */ -.callout.callout:is([data-callout-metadata*='nowrap'], -[data-callout*='nowrap']) { - max-width: unset !important; - white-space: nowrap; - overflow: hidden; -} -.callout.callout:is([data-callout-metadata*='nowrap'], -[data-callout*='nowrap']) thead > tr > th, -.callout.callout:is([data-callout-metadata*='nowrap'], -[data-callout*='nowrap']) tbody > tr > td { - white-space: nowrap; -} -.callout.callout:is([data-callout-metadata*='nowrap'], -[data-callout*='nowrap']) .callout-content { - overflow-x: auto !important; -} -.callout.callout:is([data-callout-metadata*='nowrap'], -[data-callout*='nowrap']) .callout-content p { - display: flex; - align-items: center; - margin-block-start: 0; - margin-block-end: 0; -} -.callout.callout:is([data-callout-metadata*='nowrap'], -[data-callout*='nowrap']) .callout-content img { - max-width: unset !important; - display: table-cell; - vertical-align: middle; - padding: 1px; - max-height: 30vh; -} - -/* ===块内元素网格布局============ */ -.callout.callout:is([data-callout-metadata*='grid'], -[data-callout*='grid']) { - max-width: unset !important; - white-space: nowrap; - overflow: hidden; -} -.callout.callout:is([data-callout-metadata*='grid'], -[data-callout*='grid']) .callout-content { - overflow-x: auto!important; -} -.callout.callout:is([data-callout-metadata*='grid'], -[data-callout*='grid']) .callout-content p { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(0, auto)); - grid-gap: 2px; -} -.callout.callout:is([data-callout-metadata*='grid'], -[data-callout*='grid']) .callout-content ul { - display: grid; - grid-template-columns: repeat(auto-fill, minmax(160px, auto)); - grid-gap: 0 10px; -} -.callout.callout:is([data-callout-metadata*='grid'], -[data-callout*='grid']) .callout-content ul li { - WHITE-SPACE: normal; - padding-left: 1em; - text-indent: -1em; -} -.callout.callout:is([data-callout-metadata*='grid'], -[data-callout*='grid']) .callout-content ul li::before { - content: ' ' !important; -} -.callout.callout:is([data-callout-metadata*='grid'], -[data-callout*='grid']) .callout-content img { - display: flex; - flex: 1; - align-self: stretch; - object-fit: cover; - margin: unset !important; -} - - -/* ===百分比宽度============ */ -/*支持两种写法 - > [!note|30%] - > [!note 30%] -*/ -.callout.callout:is([data-callout-metadata*='100%'], -[data-callout*='100%']) { - width: 100%; -} -.callout.callout:is([data-callout-metadata*='95%'], -[data-callout*='95%']) { - width: 95%; -} -.callout.callout:is([data-callout-metadata*='90%'], -[data-callout*='90%']) { - width: 90%; -} -.callout.callout:is([data-callout-metadata*='85%'], -[data-callout*='85%']) { - width: 85%; -} -.callout.callout:is([data-callout-metadata*='80%'], -[data-callout*='80%']) { - width: 80%; -} -.callout.callout:is([data-callout-metadata*='75%'], -[data-callout*='75%']) { - width: 75%; -} -.callout.callout:is([data-callout-metadata*='70%'], -[data-callout*='70%']) { - width: 70%; -} -.callout.callout:is([data-callout-metadata*='65%'], -[data-callout*='65%']) { - width: 65%; -} -.callout.callout:is([data-callout-metadata*='60%'], -[data-callout*='60%']) { - width: 60%; -} -.callout.callout:is([data-callout-metadata*='55%'], -[data-callout*='55%']) { - width: 55%; -} -.callout.callout:is([data-callout-metadata*='50%'], -[data-callout*='50%']) { - width: 50%; -} -.callout.callout:is([data-callout-metadata*='45%'], -[data-callout*='45%']) { - width: 45%; -} -.callout.callout:is([data-callout-metadata*='40%'], -[data-callout*='40%']) { - width: 40%; -} -.callout.callout:is([data-callout-metadata*='35%'], -[data-callout*='35%']) { - width: 35%; -} -.callout.callout:is([data-callout-metadata*='30%'], -[data-callout*='30%']) { - width: 30%; -} -.callout.callout:is([data-callout-metadata*='25%'], -[data-callout*='25%']) { - width: 25%; -} -.callout.callout:is([data-callout-metadata*='20%'], -[data-callout*='20%']) { - width: 20%; -} -.callout.callout:is([data-callout-metadata*='15%'], -[data-callout*='15%']) { - width: 15%; -} -.callout.callout:is([data-callout-metadata*='10%'], -[data-callout*='10%']) { - width: 10%; -} - - -/* callout模糊文字效果*/ -.callout.callout[data-callout=cloze] { - border-left-width: 0; - filter: blur(4px); -} - -.callout.callout[data-callout=cloze]:hover { - filter: none; -} - -.callout.callout[data-callout=cloze] .callout-title { - display: none; -} - -/* callout伪看板效果*/ -.callout.callout[data-callout*="kanban"] ul { - display: flex; - flex-direction: row; - border: 0px solid var(--p-kanban-border-color); - padding: 0; - border-radius: var(--radius-m); - flex-wrap: wrap; -} -.callout.callout[data-callout*="kanban"] li .list-bullet{ - display: none; -} - -.callout.callout[data-callout*="kanban"] ul>li { - flex: 1 1 20%; - padding: 0.1em 1em 0.1em 0.8em; - margin: 0 0.3em 0.3em 0 !important; - list-style: none; - border: 1px solid var(--p-kanban-border-color); - border-left: 1px solid var(--p-kanban-border-color) !important; - border-radius: var(--radius-s); - word-wrap: break-word; - word-break: break-word; -} - -.callout.callout[data-callout*="kanban"] ul li.task-list-item .task-list-item-checkbox { - margin-left: auto; -} - - -.callout.callout[data-callout*="kanban"] ul .list-collapse-indicator.collapse-indicator.collapse-icon::before { - color: var(--text-accent); - transition: transform 10ms linear 0s; -} - -body.colorful-p-kanban .callout.callout[data-callout*="kanban"] ul>li:nth-of-type(8n+1) { - background-color: var(--p-kanban-color-1); -} -body.colorful-p-kanban .callout.callout[data-callout*="kanban"] ul>li:nth-of-type(8n+2) { - background-color: var(--p-kanban-color-2); -} -body.colorful-p-kanban .callout.callout[data-callout*="kanban"] ul>li:nth-of-type(8n+3) { - background-color: var(--p-kanban-color-3); -} -body.colorful-p-kanban .callout.callout[data-callout*="kanban"] ul>li:nth-of-type(8n+4) { - background-color: var(--p-kanban-color-4); -} -body.colorful-p-kanban .callout.callout[data-callout*="kanban"] ul>li:nth-of-type(8n+5) { - background-color: var(--p-kanban-color-5); -} -body.colorful-p-kanban .callout.callout[data-callout*="kanban"] ul>li:nth-of-type(8n+6) { - background-color: var(--p-kanban-color-6); -} -body.colorful-p-kanban .callout.callout[data-callout*="kanban"] ul>li:nth-of-type(8n+7) { - background-color: var(--p-kanban-color-7); -} -body.colorful-p-kanban .callout.callout[data-callout*="kanban"] ul>li:nth-of-type(8n) { - background-color: var(--p-kanban-color-8); -} - -.callout.callout[data-callout*="kanban"] ul>li:nth-of-type(n) { - background-color: var(--p-kanban-color-simple); - padding-left: 1em; -} -.callout.callout[data-callout*="kanban"] .callout-content>ul:first-child>li:nth-of-type(8n+1) { - border-top: 6px solid var(--p-kanban-color-1) !important; -} -.callout.callout[data-callout*="kanban"] .callout-content>ul:first-child>li:nth-of-type(8n+2) { - border-top: 6px solid var(--p-kanban-color-2) !important; -} -.callout.callout[data-callout*="kanban"] .callout-content>ul:first-child>li:nth-of-type(8n+3) { - border-top: 6px solid var(--p-kanban-color-3) !important; -} -.callout.callout[data-callout*="kanban"] .callout-content>ul:first-child>li:nth-of-type(8n+4) { - border-top: 6px solid var(--p-kanban-color-4) !important; -} -.callout.callout[data-callout*="kanban"] .callout-content>ul:first-child>li:nth-of-type(8n+5) { - border-top: 6px solid var(--p-kanban-color-5) !important; -} -.callout.callout[data-callout*="kanban"] .callout-content>ul:first-child>li:nth-of-type(8n+6) { - border-top: 6px solid var(--p-kanban-color-6) !important; -} -.callout.callout[data-callout*="kanban"] .callout-content>ul:first-child>li:nth-of-type(8n+7) { - border-top: 6px solid var(--p-kanban-color-7) !important; -} -.callout.callout[data-callout*="kanban"] .callout-content>ul:first-child>li:nth-of-type(8n) { - border-top: 6px solid var(--p-kanban-color-8) !important; -} -body.simple-p-kanban .callout.callout[data-callout*="kanban"] ul:first-child>li:nth-of-type(n) { - border-top: none !important; -} - -body:not(.remove-shadow-p-kanban) .callout.callout[data-callout*="kanban"] ul>li:hover { - transition: box-shadow .2s cubic-bezier(.4, 0, 1, 1); - box-shadow: 0 3px 5px 0 var(--p-kanban-color-shadow), 0 3px 1px -3px var(--p-kanban-color-shadow), 2px 3px 3px 0 var(--p-kanban-color-shadow); -} - -.callout.callout[data-callout*="kanban"] ul ul { - display: flex; - flex-direction: column; - justify-content: center; - padding: 0rem; - margin-top: 0.5rem; - border-radius: 0; - border: 0; - background: none; -} - -.callout.callout[data-callout*="kanban"] ul ul li:not(.task-list-item) { - width: 100%; - display: block; - background-color: var(--p-kanban-card-color-1) !important; -} - -body.remove-shadow-p-kanban .callout.callout[data-callout*="kanban"] ul ul li:hover { - background: var(--p-kanban-card-color-2) !important; - border-color: var(--p-kanban-border-color) !important; - border-left: 1px solid var(--p-kanban-border-color) !important; -} - -body.remove-shadow-p-kanban.theme-dark .callout.callout[data-callout*="kanban"] ul ul li:hover { - border-color: #696969e1 !important; - border-left: 1px solid #696969e1 !important; -} - -.callout.callout[data-callout*="kanban"] ul ul li .task-list-item-checkbox { - margin-left: 1.5rem !important; -} - -.callout.callout[data-callout*="kanban"] ul ul ul { - margin-right: 0; -} - -.callout.callout[data-callout*="kanban"] ul ul::before { - border-left: 0; - border:0; -} - -:is(.markdown-preview-view,.markdown-rendered).is-readable-line-width.callout.callout[data-callout*="kanban"] .markdown-preview-sizer>div>ul { - max-width: 100%; -} - -.callout.callout[data-callout*="kanban"] :is(ol,ul).contains-task-list :is(ol,ul) { - position: initial; -} - -.callout.callout[data-callout*="kanban"] :is(ol,ul).contains-task-list :is(ol,ul)::before { - all: initial; -} - -.callout.callout[data-callout*="kanban"] ul > li.task-list-item { - flex: 1 1 20%; - padding: 0.1em 1em; - list-style: none; - border: 1px solid var(--p-kanban-border-color); - border-left: 1px solid var(--p-kanban-border-color) !important; - border-radius: var(--radius-s); - word-wrap: break-word; - word-break: break-word; - text-indent: 0.01em; -} - -.callout.callout[data-callout*="kanban"] ul ul li.task-list-item { - width: 100%; - display: block; - padding-left: 2em; - text-indent: -3em; - background-color: var(--p-kanban-card-color-1) !important; -} - -.callout.callout[data-callout*="kanban"] ul ul li.task-list-item .list-collapse-indicator.collapse-indicator.collapse-icon { - text-indent: -1em; -} - -body:not(.default-icons) .callout.callout[data-callout*="kanban"] li.task-list-item .list-collapse-indicator.collapse-indicator.collapse-icon::before { - margin-left: -0.2em; -} - -body:not(.default-icons) .callout.callout[data-callout*="kanban"] li.task-list-item .task-list-item.is-collapsed .list-collapse-indicator.collapse-indicator.collapse-icon::before { - transform: translateX(-0.9em) translateY(-1em) rotate(-90deg); -} - -body.colorful-p-kanban .callout.callout[data-callout*="kanban"] .task-list-item-checkbox { - border-color: var(--text-normal) !important; -} - -/*callout hibox*/ -.callout.callout[data-callout*="hibox"] { - background-color: transparent !important; - box-shadow: none !important; -} - -.callout.callout[data-callout*="hibox"] .callout-content *, -.callout.callout[data-callout*="hibox"] .callout-content *::before, -.callout.callout[data-callout*="hibox"] .callout-content *::marker { - visibility: hidden; -} - -.callout.callout[data-callout*="hibox"] .callout-content { - position: relative; - height: auto; - overflow: hidden; - background: radial-gradient(circle at 0px 0px, var(--background-modifier-box-shadow), 0, var(--background-modifier-box-shadow), var(--hibox), transparent var(--hibox), transparent 0); - transition: --hibox 0.6s linear; -} - -.callout.callout[data-callout*="hibox"] .callout-content:hover { - --hibox: 1500px; - box-shadow: 0 0.2rem 0.5rem var(--background-modifier-box-shadow) !important; -} - -.callout.callout[data-callout*="hibox"] .callout-content:hover *, -.callout.callout[data-callout*="hibox"] .callout-content:hover *::marker, -.callout.callout[data-callout*="hibox"] .callout-content:hover *::before { - border-color: inherit; - visibility: visible; -} - -.callout.callout[data-callout*="hibox"] .callout-content:hover ol:not(.contains-task-list)>li:not(.task-list-item) { - border-color: var(--list-ol-block-color) !important; -} - -.callout.callout[data-callout*="hibox"] .callout-content:hover ul>li:not(.task-list-item) { - border-color: var(--list-ul-block-color) !important; -} - -.callout.callout[data-callout*="hibox"] .callout-content:hover blockquote { - border-color: var(--theme-color) !important; - background-color: var(--background-blockquote) !important; -} - -.callout.callout[data-callout*="hibox"] .callout-content:hover { - border-color: var(--text-normal) !important; -} - -/* callout infobox效果*/ -/*Infobox from https://github.com/SlRvb/Obsidian--ITS-Theme/blob/main/S%20-%20Callouts.css*/ -:is(.is-mobile, .is-live-preview) .callout[data-callout*=infobox] { - float: unset !important; - max-width: 100%; - margin: 0 !important; -} - -.callout.callout[data-callout*=infobox] { - --callout-color: var(--interactive-accent-rgb); - background: transparent; - border: 0; - box-shadow: none !important; - margin: 0; - margin-left: 8px; - align-self: center; - float: right; -} -.callout.callout[data-callout*=infobox] .callout-title { - background-color: transparent; - padding: 0; - justify-content: center; -} -.callout.callout[data-callout*=infobox].is-collapsed .callout-fold { - padding: 3px 10px; -} -.callout.callout[data-callout*=infobox]:not(:hover):not(.is-collapsible) .callout-title, .callout.callout[data-callout*=infobox]:not(.is-collapsible) .callout-title :is(.callout-icon, .callout-fold,.callout-title-inner) { - display: none; -} -.callout.callout[data-callout*=infobox] .callout-content { - padding: 1px; - margin: 0; - border-radius: var(--radius, var(--co-radius)); -} -.callout.callout[data-callout*=infobox] table { - width: 100%; -} -.callout.callout[data-callout*=infobox] :is(p, table) { - margin-block-start: 0; - margin-block-end: 0; - margin: 0; -} -.callout.callout[data-callout*=infobox] :is(h1, h2, h3, h4, h5, h6) { - text-align: center; - margin: 0; - padding: 2px; - color: var(--text-normal); -} -.callout.callout[data-callout*=infobox] p, -.callout.callout[data-callout*=infobox] .internal-embed, -.callout.callout[data-callout*=infobox] img { - margin: auto; - padding: auto; - text-align: center; -} - -/******callout bookinfo*****/ -.callout.callout[data-callout*="bookinfo"] { - --callout-color: 64, 201, 75; - --callout-icon: ''; - overflow: unset; - border: 0; - width: auto; - padding: 0; -} - -.callout.callout[data-callout*=bookinfo] .callout-title { - text-align: center; - display: flex; - justify-content: space-between; -} - -.callout.callout[data-callout*=bookinfo] .callout-content { - display: flex; - justify-content: space-between; -} - -.callout.callout[data-callout*=bookinfo] .callout-content table { - width: 68%; - margin-left: 2%; - word-break: normal; -} -.callout.callout[data-callout*=bookinfo] .callout-content table tr th { - padding-right: 5px;; -} -.callout.callout[data-callout*=bookinfo] .callout-content td:nth-child(2) { - display: table-cell; - overflow: hidden; -} -@media screen and (max-width: 768px) { - .callout.callout[data-callout*=bookinfo] .callout-content table { - width: 100%; - } - .callout.callout[data-callout*=bookinfo] .callout-content { - display: grid; - } -} -/******callout timeline*****/ -.callout.callout[data-callout="timeline"] { - --callout-color: 31, 172, 139; - --callout-icon: ''; - border-left: none; - background-color: transparent; -} - -.callout.callout[data-callout="timeline"] >.callout-content { - border-left:none; - display: -ms-grid; - display: grid; - -ms-grid-columns: auto auto 1fr; - grid-template-columns: 0.3fr auto 1fr; - -webkit-column-gap: 1.5rem; - column-gap: 1.5rem; - row-gap: 0.25rem; - margin: 2.3rem 1rem 0 0; - padding: 0; -} -.callout.callout[data-callout="timeline"] .callout-content hr::before { - display: none; -} -.callout.callout[data-callout="timeline"] .callout-content hr { - height: 100%; - width: 0.5rem; - -ms-grid-column: 2; - -ms-grid-column-span: 1; - grid-column: 2 / span 1; - -ms-grid-row: 1; - grid-row-start: 1; - background-color: var(--text-normal); - opacity: 0.1; - grid-row-end: 9; - margin:auto; - border: none; - overflow: hidden; - border-radius: 10px; -} -.callout.callout[data-callout="timeline"] .callout-content blockquote { - color: var(--text-on-accent); - display: block; - -ms-grid-column: 1; - -ms-grid-column-span: 1; - grid-column: 1 / span 1; - position: relative; - -ms-flex-item-align: start; - -ms-grid-row-align: start; - align-self: start; - text-align: left; - box-shadow: none; - margin: 0; - border: none; - padding: 0; - background-color: var(--interactive-accent); -} -.callout.callout[data-callout="timeline"] .callout-content blockquote p::before { - display: none; -} -.callout.callout[data-callout="timeline"] .callout-content blockquote, -.callout.callout[data-callout="timeline"] .callout-content blockquote + *:not(.callout), -.callout.callout[data-callout="timeline"] .callout-content hr+ *:not(.callout) { - padding-top: 0.2em; - padding-bottom: 0.2em; -} -.callout.callout[data-callout="timeline"] .callout-content blockquote .list-bullet::after{ - color: var(--text-on-accent); - left:0; -} -.callout.callout[data-callout="timeline"] .callout-content blockquote p { - display: block; - color: var(--text-on-accent); - background-color: var(--interactive-accent); - font-style: normal; - border-radius: 5px; -} -.callout.callout[data-callout="timeline"] .callout-content>*:not(blockquote):not(hr) { - position: relative; - -ms-grid-column: 3; - -ms-grid-column-span: 1; - grid-column: 3 / span 1; - margin-block-start: 0; - margin-block-end: 0; -} -.callout.callout[data-callout="timeline"] table { - font-size: 13px; -} - -/******callout icon*****/ -.show-inline-title .callout.callout:is([data-callout-metadata^='icon'], -.show-inline-title [data-callout='icon']) { - margin-top: -7em; -} -.callout.callout:is([data-callout-metadata^='icon'], -[data-callout='icon']) { - flex: none !important; - border-left: 0; - background-color: transparent; - box-shadow: none; - float: left; - margin-top: -4em; - margin-bottom: 0; -} -.is-live-preview .callout.callout:is([data-callout-metadata^='icon'], -[data-callout='icon']) { - margin-top: -1.6em; -} -.callout.callout:is([data-callout-metadata^='icon'], -[data-callout='icon']) .callout-title { - display: none; -} -.callout.callout:is([data-callout-metadata^='icon'], -[data-callout='icon']) .callout { - overflow: visible; - margin: 0; -} -.callout.callout:is([data-callout-metadata^='icon'], -[data-callout='icon']) > .callout-content { - padding: 0; -} -.callout.callout:is([data-callout-metadata^='icon'], -[data-callout='icon']) > .callout-content>svg { - height: calc(1em + 12px); - padding: 6px; - border-radius: 4px; - pointer-events: initial; - transition: ease .2s background; - font-size: 4em; - margin-bottom: 0px; -} - -/***Sticky notes 便签效果**/ -.callout[data-callout="stickies"] { - box-shadow:none; - border-left:0px; - overflow: unset; -} -.callout[data-callout="stickies"][data-callout-metadata*="left"] { - width: max(180px, 30%); -} - -.callout[data-callout="stickies"][data-callout-metadata*="left"]>.callout-content { - max-width: 100%; -} -.callout[data-callout="stickies"] >.callout-title { - display: none; -} - -.callout[data-callout="stickies"] >.callout-content { - overflow:visible; - text-align: center; - transition: width 2s; - padding: 5px; - margin: 18px; - position: relative; - float: right; - right: -10px; - width: max(180px, 30%); - max-width: 50%; - background-color: var(--stickies-color-1); - -webkit-transform: rotate(0deg); - -moz-transform: rotate(0deg); - -o-transform: rotate(0deg); - -ms-transform: rotate(0deg); - transform: rotate(2deg); - transition: all 2s ease; - z-index: 1; - padding-top: 10px; - padding-bottom: 10px; - border-radius: 0px; - color: black; -} -.callout[data-callout="stickies"] >.callout-content::after { - content: ""; - left: -5%; - top: -10px; - height: 40px; - width: 15px; - border-radius: var(--radius-l); - border: 3px solid #979797; - display: inline-block; - position: absolute; - -webkit-transform: rotate(0deg); - -moz-transform: rotate(0deg); - -o-transform: rotate(0deg); - -ms-transform: rotate(0deg); - transform: rotate(-11deg); - z-index: 11; -} -.callout[data-callout="stickies"] >.callout-content::before { - width: 11px; - height: 20px; - content: ""; - display: inline-block; - position: absolute; - left: -3.5%; - top: -2px; - border-radius: var(--radius-l); - border: 3px solid #979797; - border-bottom: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; - z-index: 10; - -webkit-transform: rotate(0deg); - -moz-transform: rotate(0deg); - -o-transform: rotate(0deg); - -ms-transform: rotate(0deg); - transform: rotate(-11deg); -} - -.callout[data-callout="stickies2"] { - box-shadow: none; - border-left: none; -} -.callout[data-callout="stickies2"] >.callout-title { - display: none; -} - -.callout[data-callout="stickies2"] >.callout-content { - overflow:visible; - position: relative; - float: left; - box-shadow: 0 10px 10px 2px #9191912d; - width: max(180px, 30%); - max-width: 50%; - background-color: var(--stickies-color-2); - -webkit-transform: rotate(0deg); - -moz-transform: rotate(0deg); - -o-transform: rotate(0deg); - -ms-transform: rotate(0deg); - transform: rotate(-2deg); - transition: all 2s ease; - z-index: 1; - padding: 20px; - margin: 10px; - color: black; -} -.callout[data-callout="stickies2"] >.callout-content::after { - content: ""; - display: block; - height: 32px; - width: 2px; - position: absolute; - left: 50%; - top: -10px; - z-index: 1; - border-radius: 50%; - display: inline-block; - height: 15px; - width: 15px; - border: 1px; - box-shadow: inset -10px -10px 10px #f0b7a4, inset 3px 3px 5px; -} -.callout[data-callout="stickies2"][data-callout-metadata*="right"] { - width: max(180px, 30%); -} -.callout[data-callout="stickies2"][data-callout-metadata*="right"] >.callout-content { - float:right; - max-width: 100%; -} - -.callout[data-callout="stickies3"] { - background-color: transparent ; - box-shadow:none; - border-left:0px; - margin: 20px auto 0 auto !important; -} -.callout[data-callout="stickies3"] >.callout-title { - display: none; -} - -.callout[data-callout="stickies3"] >.callout-content { - overflow:visible; - width: max(180px, 30%); - max-width: 235px; - min-height: 235px; - padding-top: 2.5em; - font-family: Arial; - margin-top: 20px; - margin-right: 25px; - position: relative; - vertical-align: top; - display: inline-block; - background: #F7E999; - text-align: center; - box-shadow: 0 4px 5px rgba(0, 0, 0, 0.2); - color: black; - font-family: var(--font-family-vault); -} -div.is-live-preview .callout[data-callout="stickies3"] >.callout-content { - padding: 20px 15px 10px 15px; -} -.markdown-preview-view .callout[data-callout="stickies3"] >.callout-content p { - margin-block-start: 0.5em; - margin-block-end: 0.5em; -} -div.callout[data-callout="stickies3"] >.callout-content ul { - text-align: left; - margin-left: auto; -} -.callout[data-callout="stickies3"] >.callout-content::before { - display: block; - content: ""; - background: rgba(227, 200, 114, 0.4); - width: 56%; - height: 28px; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); - border-radius: 6px/18px 0; - position: absolute; - top: -13px; - left: 20%; - -webkit-transform: rotate(-2deg); - -moz-transform: rotate(-2deg); - -o-transform: rotate(-2deg); - -ms-transform: rotate(-2deg); - transform: rotate(-2deg); -} -.callout[data-callout="stickies3"] >.callout-content a { - color: #6b824f; - -webkit-transition: all 0.4s ease; - -moz-transition: all 0.4s ease; - -o-transition: all 0.4s ease; - -ms-transition: all 0.4s ease; - transition: all 0.4s ease; -} -.callout[data-callout="stickies3"] >.callout-content a:hover { - color: #D83A25; - background: transparent; -} -.callout[data-callout="stickies3"] >.callout-content a::before { - content: ""; -} - -.markdown-preview-view .callout[data-callout="stickies3"] >.callout-content span { - font-size: smaller; -} - -.markdown-preview-view .callout[data-callout="stickies3"] >.callout-content img { - max-height: 205px; - margin-top: -2.5em; -} -.markdown-preview-view .callout[data-callout="stickies3"] >.callout-content { - font-size: smaller; -} -.theme-dark .markdown-preview-view .callout[data-callout="stickies3"] >.callout-content blockquote { - color: var(--interactive-normal); -} -.theme-dark .markdown-preview-view .callout[data-callout="stickies3"] >.callout-content em { - color: var(--interactive-accent); - -webkit-text-fill-color: unset; -} -.theme-dark .markdown-preview-view .callout[data-callout="stickies3"] >.callout-content strong { - color: var(--interactive-accent)!important; -} -.markdown-preview-view .callout[data-callout="stickies3"] >.callout-content .block-language-dataviewjs p { - max-height: 195px; -} - -.callout:is([data-callout-metadata*='yellow']) .callout-content{ - background: #F7E999; - -webkit-transform: rotate(2deg); - -moz-transform: rotate(2deg); - -o-transform: rotate(2deg); - -ms-transform: rotate(2deg); - transform: rotate(2deg); -} - -.callout:is([data-callout-metadata*='blue']) .callout-content { - background: #b9dcf4; - -webkit-transform: rotate(-2deg); - -moz-transform: rotate(-2deg); - -o-transform: rotate(-2deg); - -ms-transform: rotate(-2deg); - transform: rotate(-2deg); -} - -.callout:is([data-callout-metadata*='pink']) .callout-content { - background: #FFBDA3; - -webkit-transform: rotate(1deg); - -moz-transform: rotate(1deg); - -o-transform: rotate(1deg); - -ms-transform: rotate(1deg); - transform: rotate(1deg); -} - -.callout:is([data-callout-metadata*='green']) .callout-content { - background: #CAF4B9; - -webkit-transform: rotate(-1deg); - -moz-transform: rotate(-1deg); - -o-transform: rotate(-1deg); - -ms-transform: rotate(-1deg); - transform: rotate(-1deg); -} -/*禁用点击超链接跳转 需要跳转 按ctrl+超链接即可*/ -body.link-click .cm-s-obsidian span.cm-link a { - pointer-events: none; -} - -/*禁用实时预览点击标签跳转 需要跳转 点击#号即可*/ -body.tag-click .cm-line span.cm-hashtag:not(.cm-formatting) { - pointer-events: none; -} -/*ob关闭按钮顺序调整*/ -body.reversal-titlebar .titlebar-button-container.mod-right { - direction: rtl; -} -body.is-hidden-frameless:not(.is-fullscreen).is-focused .titlebar-button-container.mod-right { - background-color:transparent; -} - - -/* funny LP headers animation 开启标题动画 === -from discord @sailKite https://cdn.discordapp.com/attachments/702656734631821413/1007258862606352424/FunnyHeaderAnimLP.css -*/ -body.funny-header-anim .is-live-preview .cm-line > :is(.cm-header, .cm-widgetBuffer) + .cm-header, -body.funny-header-anim.clutter-free-headings .cm-line > :is(.cm-header, .cm-widgetBuffer) + .cm-header { - display: inline-block; -} -body.funny-header-anim .is-live-preview .cm-line:not(.cm-active) :is(.cm-header, .cm-widgetBuffer) + .cm-header, -body.funny-header-anim.clutter-free-headings .cm-line:not(.cm-active) :is(.cm-header, .cm-widgetBuffer) + .cm-header, -body.funny-header-anim .is-live-preview .cm-line:not(.cm-active) :is(.cm-header, .cm-widgetBuffer) + .cm-header ~ *, -body.funny-header-anim.clutter-free-headings .cm-line:not(.cm-active) :is(.cm-header, .cm-widgetBuffer) + .cm-header ~ * { - transform: translateX(0ch); - transition: transform 333ms; -} -body.funny-header-anim .is-live-preview .cm-active :is(.cm-header, .cm-widgetBuffer) + .cm-header, -body.funny-header-anim.clutter-free-headings :is(.cm-header, .cm-widgetBuffer) + .cm-header , -body.funny-header-anim .is-live-preview .cm-active :is(.cm-header, .cm-widgetBuffer) + .cm-header ~ *, -body.funny-header-anim.clutter-free-headings :is(.cm-header, .cm-widgetBuffer) + .cm-header ~ *{ - transition: transform 333ms; - transform: translateX(30px); -} -body.funny-header-anim .is-live-preview .cm-active :is(.cm-header) +.cm-widgetBuffer + .cm-html-embed, -body.funny-header-anim.clutter-free-headings .cm-active :is(.cm-header) + .cm-widgetBuffer + .cm-html-embed { - transition: margin-left 500ms; - margin-left: 30px; -} -body.funny-header-anim .is-live-preview .cm-active :is(.cm-header, .cm-widgetBuffer) + .cm-bracket, -body.funny-header-anim.clutter-free-headings .cm-active :is(.cm-header, .cm-widgetBuffer) + .cm-bracket { - transition: margin-left 333ms; - margin-left: 30px; -} -body.funny-header-anim .is-live-preview .cm-line:not(.cm-active) .cm-header:first-of-type, -body.funny-header-anim.clutter-free-headings .cm-line:not(.cm-active) .cm-header:first-of-type { - display: none; - opacity: 0; -} - -body.funny-header-anim .is-live-preview .cm-active .cm-formatting-header + .cm-header, -body.funny-header-anim.clutter-free-headings .cm-active .cm-formatting-header + .cm-header{ - margin-left: -30px; -} - -body.funny-header-anim .is-live-preview .cm-active .cm-formatting-header ~ .cm-foldPlaceholder, -body.funny-header-anim.clutter-free-headings .cm-active .cm-formatting-header ~ .cm-foldPlaceholderr{ - transition: margin-left 333ms; - margin-left: 30px; -} -body.funny-header-anim .is-live-preview .cm-active .cm-header:first-of-type, -body.funny-header-anim.clutter-free-headings .cm-active .cm-header:first-of-type { - transform: translateX(0ch); - animation: opac 333ms; -} - -@keyframes opac { - from {opacity: 0;} - to {opacity: 1;} -} - -/* head-tag-style*/ -body.head-tag-style :is(.cm-header) +.cm-widgetBuffer + .cm-html-embed>sup { - background-color: var(--text-accent-hover); - color: #fff; - vertical-align: top; - border-radius: 3px; - padding: 1px 6px; - font-size: 12px; - line-height: calc(var(--paragraph-spacing) + 0.7); - margin-left: 0.5em; - letter-spacing: .1em; - font-family: var(--font-default); -} -body.head-tag-style :is(.cm-header) +.cm-widgetBuffer + .cm-html-embed>sub { - background-color: var( --simple-orange); - color: #fff; - vertical-align: top; - border-radius: 3px; - padding: 1px 6px; - font-size: 12px; - line-height: calc(var(--paragraph-spacing) + 0.7); - margin-left: 0.5em; - letter-spacing: .1em; - font-family: var(--font-default); -} - -body.head-tag-style :is(.markdown-preview-view,.markdown-rendered) :is(h1,h2,h3,h4,h5,h6) sup { - background-color: var(--text-accent-hover); - color: #fff; - vertical-align: top; - border-radius: 3px; - padding: 1px 6px; - font-size: 12px; - margin-left: 0.5em; - letter-spacing: .1em; - margin-top: -0.2em; - line-height: calc(var(--line-height-main) - 0.7); -} - -body.head-tag-style :is(.markdown-preview-view,.markdown-rendered) :is(h1,h2,h3,h4,h5,h6) sub { - background-color: var( --simple-orange); - color: #fff; - vertical-align: top; - border-radius: 3px; - padding: 1px 6px; - font-size: 12px; - margin-left: 0.5em; - letter-spacing: .1em; - margin-top: -0.2em; - line-height: calc(var(--line-height-main) - 0.7); -} -body.head-tag-style :is(.markdown-preview-view,.markdown-rendered) :is(h1,h2,h3,h4,h5,h6) :is(sub,sup)>.tag:not(.token) { - padding: 0; - background-color: transparent; -} - -body.head-tag-style .cm-s-obsidian .cm-header ~ span.cm-hashtag { - font-size: calc(var(--font-size-tag) - 0.3em)!important; - vertical-align: top; -} -body.head-tag-style .cm-s-obsidian .cm-formatting.cm-formatting-hashtag.cm-hashtag.cm-hashtag-begin.cm-header, -body.head-tag-style .cm-s-obsidian .cm-hashtag.cm-header { - vertical-align: top; -} - - -body:not(.tag-default) .cm-s-obsidian .cm-header ~ span.cm-hashtag { - font-size: calc(var(--font-size-tag) - 0.3em)!important; -} - - -body.head-tag-style :is(.markdown-preview-view,.markdown-rendered) :is(h1,h2,h3,h4,h5,h6) >.tag:not(.token) { - font-size: calc(var(--font-size-tag) - 0.3em); - vertical-align: top; -} - -/* -.cm-s-obsidian .cm-formatting.cm-formatting-hashtag.cm-hashtag.cm-hashtag-begin.cm-header, -.cm-s-obsidian .cm-hashtag.cm-header { - font-size: calc(var(--font-size-tag) - 0.3em) !important; - vertical-align: middle; - margin-top: -0.3em; -} -*/ - -body.head-tag-style .cm-s-obsidian .cm-formatting.cm-formatting-hashtag.cm-hashtag.cm-hashtag-begin.cm-header, -body.head-tag-style .cm-s-obsidian .cm-hashtag.cm-header { - vertical-align: top; -} - -:is(.markdown-preview-view,.markdown-rendered) :is(h1,h2,h3,h4,h5,h6) >.tag:not(.token) { - font-size: calc(var(--font-size-tag) - 0.2em); - vertical-align: middle; -} - -/****** 网络图片标题样式********/ -[data-dv-key="img-caption"] + span.dataview>span { - margin: 0.5rem 0; - display: block; - caption-side: bottom; - text-align: center; - font-size: 0.85rem; -} -.dataview.inline-field-key[data-dv-key="img-caption"] + .dataview.inline-field-value { - background-color:unset; - border-radius: 0px; - padding: 0; - font-family: var(--font-text); -} - -.dataview.inline-field-key[data-dv-key="img-caption"] { - display:none; - background-color:unset; - font-size: 0px; - padding: 0; - border-radius: 0px; -} - -.dataview.inline-field-key[data-dv-key="img-caption"] { - display:none; - background-color:unset; - font-size: 0px; - padding: 0; - border-radius: 0px; -} - - -body:not(.remove-selectionbackground) .markdown-source-view.mod-cm6 .cm-editor .cm-selectionBackground { - background: transparent; -} - -.clickable-icon.is-active, -.clickable-icon.has-active-menu, -.clickable-icon:active, -.clickable-icon:hover { - background-color: var(--theme-color-translucent-015); -} - -.workspace.is-left-sidedock-open .workspace-ribbon.side-dock-ribbon.mod-left .sidebar-toggle-button .clickable-icon, -.workspace-split.mod-horizontal .sidebar-toggle-button .clickable-icon, -.workspace.is-right-sidedock-open .sidebar-toggle-button.mod-right .clickable-icon { - color: var(--theme-color); -} - -.workspace-tabs .view-header { - margin: 0; - padding: 0 var(--size-4-2); -} - -.workspace-split.mod-root .workspace-tab-header.is-active { - z-index: var(--layer-popover); - color: var(--text-normal); - /*box-shadow: var(--window-shadow);*/ -} -.is-mobile .workspace-split.mod-root .workspace-tab-header.is-active.mod-active { - z-index: 29; -} -.is-focused .workspace-tab-header { - color: var(--text-muted); -} - - -/* -.workspace-tabs.mod-stacked .view-header, -.is-focused .workspace .mod-root .workspace-tabs.mod-stacked .workspace-leaf.mod-active .view-header { - background-color: var(--color-base-10); -}*/ -.workspace-split.mod-root .workspace-tabs.mod-stacked .view-content { - backdrop-filter: blur(var(--stack-tabs-background-blur-depth)); -} -.workspace .mod-root .workspace-tabs.mod-stacked .workspace-tab-container .workspace-tab-header { - background-color: var(--background-primary); - border-right: 1px solid var(--page-border-bottom); - box-shadow: -1px 0 10px 0 var(--tab-stacked-shadow); - backdrop-filter: blur(6px); -} -.workspace .mod-root .workspace-tabs.mod-stacked .workspace-tab-container .workspace-tab-header:first-child { - border-left: 1px solid var(--page-border-bottom); -} - -.titlebar-button:hover { - background-color: unset; -} - -/* body:not(.default-list-marker) .list-bullet::before { - display: none; -} */ - -body:not(.default-list-marker) .markdown-rendered .list-bullet::after { - content: '\2022'; - font-size: var(--list-ul-marker-size); - font-family: Inter; - width: unset; - height: unset; - border: none; - background: transparent; - color: var(--list-ul-marker-color); - margin-left: 0.13em; - /* margin-top: calc(0.466em * var(--line-height-list) - 0.286em); */ - line-height: 0.55; - transition: all 0.15s ease; -} - -body:not(.default-list-marker) .list-bullet::after { - content: '\2022'; - font-size: var(--list-ul-marker-size); - font-family: Inter; - width: unset; - border: none; - background: transparent; - color: var(--list-ul-marker-color); -/* margin-left: -0.03em; - margin-top: -0.15em; */ - display: flex; - justify-content: center; - flex-direction: column; - height: 43%; - transition: all 0.15s ease; -} - -body.custom-unordered-list .markdown-rendered .has-list-bullet .has-list-bullet .has-list-bullet .has-list-bullet .list-bullet::after, -body.custom-unordered-list .markdown-rendered .list-bullet::after { - content: var(--list-ul-marker-4); - font-size: var(--list-ul-marker-size-4); - color: var(--list-ul-marker-color-4,var(--list-marker-color)); -} - -body.custom-unordered-list .markdown-source-view.mod-cm6 .list-bullet::after { - content: var(--list-ul-marker-4); - font-size: var(--list-ul-marker-size-4); - color: var(--list-ul-marker-color-4,var(--list-marker-color)); -} - -body.custom-unordered-list .has-list-bullet .list-bullet::after, -body.custom-unordered-list .markdown-source-view.mod-cm6 .HyperMD-list-line.HyperMD-list-line-1.cm-line div.cm-fold-indicator ~ span.cm-formatting .list-bullet::after, -body.custom-unordered-list .markdown-source-view.mod-cm6 .HyperMD-list-line.HyperMD-list-line-1.cm-line>span.cm-formatting:first-of-type .list-bullet::after { - content: var(--list-ul-marker-1); - font-size: var(--list-ul-marker-size-1); - color: var(--list-ul-marker-color-1,var(--list-marker-color)); -} - -body.custom-unordered-list .has-list-bullet .has-list-bullet .list-bullet::after, -body.custom-unordered-list .markdown-source-view.mod-cm6 .HyperMD-list-line.HyperMD-list-line-2.cm-line div.cm-fold-indicator ~ span.cm-formatting .list-bullet::after, -body.custom-unordered-list .markdown-source-view.mod-cm6 .HyperMD-list-line.HyperMD-list-line-2.cm-line span.cm-hmd-list-indent ~ span.cm-formatting .list-bullet::after { - content: var(--list-ul-marker-2); - font-size: var(--list-ul-marker-size-2); - color: var(--list-ul-marker-color-2,var(--list-marker-color)); -} -body.custom-unordered-list .has-list-bullet .has-list-bullet .has-list-bullet .list-bullet::after, -body.custom-unordered-list .markdown-source-view.mod-cm6 .HyperMD-list-line.HyperMD-list-line-3.cm-line div.cm-fold-indicator ~ span.cm-formatting .list-bullet::after, -body.custom-unordered-list .markdown-source-view.mod-cm6 .HyperMD-list-line.HyperMD-list-line-3.cm-line span.cm-hmd-list-indent ~ span.cm-formatting .list-bullet::after { - content: var(--list-ul-marker-3); - font-size: var(--list-ul-marker-size-3); - color: var(--list-ul-marker-color-3,var(--list-marker-color)); -} - - -.markdown-source-view.mod-cm6 .cm-indent::before { - margin-left: var(--bt-list-indentation-margin-left-editing, 0px); -} -.markdown-rendered.show-indentation-guide li > ul::before, -.markdown-rendered.show-indentation-guide li > ol::before { - margin-left: var(--bt-list-indentation-margin-left-reading, 0); -} - -.is-focused .mod-active .workspace-tab-header.is-active -.workspace-tab-header-inner-icon { - color: var(--theme-color); -} - -body:not(.default-list-marker) .list-collapse-indicator:hover ~ .list-bullet:after, -body:not(.default-list-marker) .cm-fold-indicator:hover ~ .list-bullet:after, -body:not(.default-list-marker) .list-collapse-indicator:hover ~ .cm-formatting-list .list-bullet:after, -body:not(.default-list-marker) .cm-fold-indicator:hover ~ .cm-formatting-list .list-bullet:after { - box-shadow: -0.02em 0.058em 0 2px var(--background-modifier-hover); - background-color: var(--background-modifier-hover); -} - -body:not(.default-list-marker) li.is-collapsed .list-collapse-indicator:hover ~ .list-bullet:after, -body:not(.default-list-marker) li.is-collapsed .cm-fold-indicator:hover ~ .list-bullet:after, -body:not(.default-list-marker) .list-collapse-indicator:hover.is-collapsed ~ .list-bullet:after, -body:not(.default-list-marker) .cm-fold-indicator:hover.is-collapsed ~ .list-bullet:after, -body:not(.default-list-marker) li.is-collapsed .list-collapse-indicator:hover ~ .cm-formatting-list .list-bullet:after, -body:not(.default-list-marker) li.is-collapsed .cm-fold-indicator:hover ~ .cm-formatting-list .list-bullet:after, -body:not(.default-list-marker) .list-collapse-indicator:hover.is-collapsed ~ .cm-formatting-list .list-bullet:after, -body:not(.default-list-marker) .cm-fold-indicator:hover.is-collapsed ~ .cm-formatting-list .list-bullet:after, - -body:not(.default-list-marker) li.is-collapsed .list-bullet:after, -body:not(.default-list-marker) .is-collapsed ~ .cm-formatting-list .list-bullet:after, -body:not(.default-list-marker) .markdown-rendered .has-list-bullet .has-list-bullet .has-list-bullet .has-list-bullet .is-collapsed .list-bullet::after { - color: var(--list-marker-color-collapsed); - box-shadow: -0.02em 0.058em 0 2px var(--background-modifier-active-hover); - background-color: var(--background-modifier-active-hover); -} - - -body.colorful-unordered-list ul > li::marker { - color: var(--list-colorful-marker); -} -body.colorful-unordered-list :is(ul, ol) ul li::marker { - color: hsl(calc(var(--accent-h) + 60),var(--accent-s),var(--accent-l)); -} -body.colorful-ordered-list :is(ul, ol) :is(ul, ol) ul li::marker { - color: hsl(calc(var(--accent-h) + 120),var(--accent-s),calc(var(--accent-l) * 0.95)); -} -body.colorful-ordered-list :is(ul, ol) :is(ul, ol) :is(ul, ol) ul li::marker { - color: hsl(calc(var(--accent-h) + 180),var(--accent-s),calc(var(--accent-l) * 0.95)); -} -body.colorful-ordered-list :is(ul, ol) :is(ul, ol) :is(ul, ol) :is(ul, ol) ul li::marker { - color: hsl(calc(var(--accent-h) + 240),var(--accent-s),calc(var(--accent-l) * 0.95)); -} -body.colorful-ordered-list :is(ul, ol) :is(ul, ol) :is(ul, ol) :is(ul, ol) :is(ul, ol) ul li::marker { - color: hsl(calc(var(--accent-h) + 300),var(--accent-s),calc(var(--accent-l) * 0.95)); -} -body.colorful-ordered-list :is(ul, ol) :is(ul, ol) :is(ul, ol) :is(ul, ol) :is(ul, ol) :is(ul, ol) ul li::marker { - color: hsl(calc(var(--accent-h) + 0), var(--accent-s), calc(var(--accent-l) * 0.95)); -} - -body.colorful-unordered-list .markdown-source-view.mod-cm6 .list-bullet::after { - content: var(--list-ul-colorful-marker-content); -} - -body.colorful-unordered-list .has-list-bullet .list-bullet::after, -body.colorful-unordered-list .markdown-source-view.mod-cm6 .HyperMD-list-line.HyperMD-list-line-1.cm-line div.cm-fold-indicator ~ span.cm-formatting .list-bullet::after, -body.colorful-unordered-list .markdown-source-view.mod-cm6 .HyperMD-list-line.HyperMD-list-line-1.cm-line>span.cm-formatting:first-of-type .list-bullet::after { - color: var(--list-colorful-marker); -} - - -body.colorful-unordered-list .has-list-bullet .has-list-bullet .list-bullet::after, -body.colorful-unordered-list .markdown-source-view.mod-cm6 .HyperMD-list-line.HyperMD-list-line-2.cm-line div.cm-fold-indicator ~ span.cm-formatting .list-bullet::after, -body.colorful-unordered-list .markdown-source-view.mod-cm6 .HyperMD-list-line.HyperMD-list-line-2.cm-line span.cm-hmd-list-indent ~ span.cm-formatting .list-bullet::after { - color: var(--list-colorful-marker); - filter: hue-rotate(60deg); -} -body.colorful-unordered-list .has-list-bullet .has-list-bullet .has-list-bullet .list-bullet::after, -body.colorful-unordered-list .markdown-source-view.mod-cm6 .HyperMD-list-line.HyperMD-list-line-3.cm-line div.cm-fold-indicator ~ span.cm-formatting .list-bullet::after, -body.colorful-unordered-list .markdown-source-view.mod-cm6 .HyperMD-list-line.HyperMD-list-line-3.cm-line span.cm-hmd-list-indent ~ span.cm-formatting .list-bullet::after { - color: var(--list-colorful-marker); - filter: hue-rotate(120deg); -} -body.colorful-unordered-list .has-list-bullet .has-list-bullet .has-list-bullet .has-list-bullet .list-bullet::after, -body.colorful-unordered-list .markdown-source-view.mod-cm6 .HyperMD-list-line.HyperMD-list-line-4.cm-line div.cm-fold-indicator ~ span.cm-formatting .list-bullet::after, -body.colorful-unordered-list .markdown-source-view.mod-cm6 .HyperMD-list-line.HyperMD-list-line-4.cm-line span.cm-hmd-list-indent ~ span.cm-formatting .list-bullet::after { - color: var(--list-colorful-marker); - filter: hue-rotate(180deg); -} -body.colorful-unordered-list .has-list-bullet .has-list-bullet .has-list-bullet .has-list-bullet .has-list-bullet .list-bullet::after, -body.colorful-unordered-list .markdown-source-view.mod-cm6 .HyperMD-list-line.HyperMD-list-line-5.cm-line div.cm-fold-indicator ~ span.cm-formatting .list-bullet::after, -body.colorful-unordered-list .markdown-source-view.mod-cm6 .HyperMD-list-line.HyperMD-list-line-5.cm-line span.cm-hmd-list-indent ~ span.cm-formatting .list-bullet::after { - color: var(--list-colorful-marker); - filter: hue-rotate(240deg); -} -body.colorful-unordered-list .has-list-bullet .has-list-bullet .has-list-bullet .has-list-bullet .has-list-bullet .has-list-bullet .list-bullet::after, -body.colorful-unordered-list .markdown-source-view.mod-cm6 .HyperMD-list-line.HyperMD-list-line-6.cm-line div.cm-fold-indicator ~ span.cm-formatting .list-bullet::after, -body.colorful-unordered-list .markdown-source-view.mod-cm6 .HyperMD-list-line.HyperMD-list-line-6.cm-line span.cm-hmd-list-indent ~ span.cm-formatting .list-bullet::after { - color: var(--list-colorful-marker); - filter: hue-rotate(300deg); -} - - -body.colorful-unordered-list li.is-collapsed .list-collapse-indicator:hover ~ .list-bullet:after, -body.colorful-unordered-list li.is-collapsed .cm-fold-indicator:hover ~ .list-bullet:after, -body.colorful-unordered-list .list-collapse-indicator:hover.is-collapsed ~ .list-bullet:after, -body.colorful-unordered-list .cm-fold-indicator:hover.is-collapsed ~ .list-bullet:after, -body.colorful-unordered-list li.is-collapsed .list-collapse-indicator:hover ~ .cm-formatting-list .list-bullet:after, -body.colorful-unordered-list li.is-collapsed .cm-fold-indicator:hover ~ .cm-formatting-list .list-bullet:after, -body.colorful-unordered-list .list-collapse-indicator:hover.is-collapsed ~ .cm-formatting-list .list-bullet:after, -body.colorful-unordered-list .cm-fold-indicator:hover.is-collapsed ~ .cm-formatting-list .list-bullet:after, - -body.colorful-unordered-list li.is-collapsed .list-bullet:after, -body.colorful-unordered-list .is-collapsed ~ .cm-formatting-list .list-bullet:after, -body.colorful-unordered-list .markdown-rendered .has-list-bullet .has-list-bullet .has-list-bullet .has-list-bullet .is-collapsed .list-bullet::after { - color: var(--list-marker-color-collapsed); - box-shadow: -0.02em 0.058em 0 2px var(--background-modifier-active-hover); - background-color: var(--background-modifier-active-hover); -} - - -/*ordered-list-style-1*/ -body.ordered-list-style-1 ol, -body.ordered-list-style-1 ol ol, -body.ordered-list-style-1 ol ol ol, -body.ordered-list-style-1 ol ul ol, -body.ordered-list-style-1 ol ol ol ol, -body.ordered-list-style-1 ol ol ul ol, -body.ordered-list-style-1 ol ul ol ol { - list-style: none; -} - -body.ordered-list-style-1 ol { - counter-reset: niceBT; -} - -body.ordered-list-style-1 ol>li { - counter-increment: niceBT; -} - -body.ordered-list-style-1 .markdown-rendered.show-indentation-guide li > ul::before { - left: -18px; -} -body.ordered-list-style-1 .markdown-rendered.show-indentation-guide li > ol::before { - left: -11px; -} - -body.ordered-list-style-1 ol>li::before { - content: counters(niceBT, '.') '. '; - font-weight: bold; - font-family: Inter; - color: var(--list-ol-number-color); - display: inline-block; - white-space: pre; - margin-left: -0.7em; -} -body.ordered-list-style-1 ul>li:not(.task-list-item)>p { - display: inline; -} -body.ordered-list-style-1 ul>li:not(.task-list-item) { - list-style-position: inside; - padding-left: 0.25em; -} - -body.ordered-list-style-1 ol.contains-task-list>li.task-list-item { - margin-left: -1.2em; -} - -body.list-bracket-style .markdown-rendered.show-indentation-guide li:not(.task-list-item) > :is(ol,ul)::before{ - border: none; -} - -body.list-bracket-style :is(.markdown-preview-view,.markdown-rendered) ul>li:not(.task-list-item)::marker { - font-size: 0.9em; -} - - -body.list-bracket-style :is(.markdown-preview-view,.markdown-rendered):not(.kanban) li:not(.task-list-item) { - padding-left: 0.3rem; -} - -body.list-bracket-style :is(.markdown-preview-view,.markdown-rendered):not(.kanban) ul>li:not(.task-list-item) { - border-radius: var(--radius-s); - word-wrap: break-word; - word-break: break-word; - transition: all 300ms ease-in-out; - border-left: 0.125em solid var(--list-ul-block-color); -} - -body.list-bracket-style :is(.markdown-preview-view,.markdown-rendered):not(.kanban) ul>li:not(.task-list-item):hover { - border-color: var(--list-ul-hover); -} - - - -body.list-bracket-style :is(.markdown-preview-view,.markdown-rendered) ol:not(.contains-task-list)>li:not(.task-list-item) { - border-left: 0.125em solid var(--list-ol-block-color); - border-radius: var(--radius-s); - padding-left: 0.3rem; - border-radius: var(--radius-s); - transition: all 300ms ease-in-out; -} - -body.list-bracket-style ol.contains-task-list ol li:not(.task-list-item) { - border-left: none !important; - padding-left: 0.25em; -} - -body.list-bracket-style :is(.markdown-preview-view,.markdown-rendered) ol:not(.contains-task-list)>li:not(.task-list-item):hover { - border-color: var(--list-ol-hover); -} - - -body.list-bracket-style-two :is(.markdown-preview-view,.markdown-rendered):not(.kanban) :is(ul,ol)>li:not(.task-list-item) { - border-radius: var(--radius-s); - word-wrap: break-word; - word-break: break-word; - transition: all 300ms ease-in-out; - border-left: 0.125em solid var(--list-ul-block-color); -} - -body.list-bracket-style-two :is(.markdown-preview-view,.markdown-rendered):not(.kanban) ol>li:not(.task-list-item) { - border-left: 0.125em solid var(--list-ol-block-color); -} - -body.list-bracket-style-two .markdown-rendered.show-indentation-guide li:not(.task-list-item) > ul::before, -body.list-bracket-style-two .markdown-rendered.show-indentation-guide li:not(.task-list-item) > ol::before { - border: none; -} - -/*list-bracket-style-two*/ -body.list-bracket-style-two ol, -body.list-bracket-style-two ol ol, -body.list-bracket-style-two ol ol ol, -body.list-bracket-style-two ol ul ol, -body.list-bracket-style-two ol ol ol ol, -body.list-bracket-style-two ol ol ul ol, -body.list-bracket-style-two ol ul ol ol { - list-style: none; -} - -body.list-bracket-style-two ol { - counter-reset: niceBT; -} - -body.list-bracket-style-two ol>li { - counter-increment: niceBT; -} - -body.list-bracket-style-two ol>li::before { - content: counters(niceBT, '.') '. '; - font-weight: bold; - font-family: Monaco; - font-size: 0.8em; - color: var(--list-ol-number-color); - display: inline-block; - white-space: pre; -} - -body.list-bracket-style-two ul>li:not(.task-list-item) { - padding-left: 1.1em; -} -body.list-bracket-style-two ol>li:not(.task-list-item) { - padding-left: 0.4em; -} - -body.list-bracket-style-two .markdown-rendered .list-bullet { - left: 0.6em; -} - -body.list-bracket-style-three :is(.markdown-preview-view,.markdown-rendered):not(.kanban) :is(ul,ol):has(:is(ol,ul))>li:has(:is(ol,ul)):not(.task-list-item) { - border-radius: var(--radius-s); - word-wrap: break-word; - word-break: break-word; - transition: all 300ms ease-in-out; - border-left: 0.125em solid var(--list-ul-block-color); -} -body.list-bracket-style-three :is(.markdown-preview-view,.markdown-rendered):not(.kanban) ol:has(:is(ol,ul))>li:has(:is(ol,ul)):not(.task-list-item) { - border-left: 0.125em solid var(--list-ol-block-color); -} - -body.list-bracket-style-three :is(.markdown-preview-view,.markdown-rendered):not(.kanban) :is(ul,ol):has(:is(ol,ul))>li:has(:is(ol,ul)):not(.task-list-item) { - padding-left: 0.3em; -} - -body.list-bracket-style-three .markdown-rendered.show-indentation-guide li:not(.task-list-item) > ul::before, -body.list-bracket-style-three .markdown-rendered.show-indentation-guide li:not(.task-list-item) > ol::before { - border: none; -} -body.list-bracket-style-three :is(.markdown-preview-view,.markdown-rendered):not(.kanban) li:not(.task-list-item) { - padding-left: 0.45rem; -} - - -/*list-vertical-line-one*/ -body.list-vertical-line-one ol, -body.list-vertical-line-one ol ol, -body.list-vertical-line-one ol ol ol, -body.list-vertical-line-one ol ul ol, -body.list-vertical-line-one ol ol ol ol, -body.list-vertical-line-one ol ol ul ol, -body.list-vertical-line-one ol ul ol ol { - list-style: none; -} - -body.list-vertical-line-one ol { - counter-reset: niceBTT; -} - -body.list-vertical-line-one ol>li { - counter-increment: niceBTT; -} - -body.list-vertical-line-one ol>li::before { - content: counters(niceBTT, '.') '. '; - font-weight: bold; - color: var(--list-ol-number-color); - margin-left: -1.3em; - font-family: Monaco; - font-size: 0.9em; -} - -body.list-vertical-line-one :is(ol,ul) :is(ol,ul) { - position: relative; -} - -:is(body.list-vertical-line-one,body.list-vertical-line-one, body.list-vertical-line-one) :is(.markdown-preview-view,.markdown-rendered) ul ol:not(.contains-task-list)>li:not(.task-list-item), -:is(body.list-vertical-line-one,body.list-vertical-line-one, body.list-vertical-line-one) :is(.markdown-preview-view,.markdown-rendered) ul ol:not(.contains-task-list)+ul>li:not(.task-list-item), -:is(body.list-vertical-line-one,body.list-vertical-line-one, body.list-vertical-line-one) :is(.markdown-preview-view,.markdown-rendered):not(.kanban) ol ul>li:not(.task-list-item), -:is(body.list-vertical-line-one,body.list-vertical-line-one, body.list-vertical-line-one) :is(.markdown-preview-view,.markdown-rendered):not(.kanban) ol ul+ol>li:not(.task-list-item) { - margin-top: calc(var(--margin-list) * -0.25em); - padding-top: calc(var(--margin-list) * 0.25em); -} - - -body.colorful-ordered-list ol li::marker, -body.colorful-ordered-list ol li::before, -body.colorful-ordered-list .markdown-source-view.mod-cm6 .HyperMD-list-line.HyperMD-list-line-1.cm-line div.cm-fold-indicator ~ span.cm-formatting.cm-formatting-list-ol, -body.colorful-ordered-list .cm-formatting.cm-formatting-list.cm-formatting-list-ol, -body.colorful-ordered-list .markdown-source-view.mod-cm6 .HyperMD-list-line.HyperMD-list-line-1.cm-line span.cm-hmd-list-indent ~ span.cm-formatting.cm-formatting-list-ol { - color: var(--list-colorful-marker); -} - -body.colorful-ordered-list :is(ul, ol) ol li::marker { - color: hsl(calc(var(--accent-h) + 60),var(--accent-s),var(--accent-l)); -} -body.colorful-ordered-list :is(ul, ol) ol li::before, -body.colorful-ordered-list .markdown-source-view.mod-cm6 .HyperMD-list-line.HyperMD-list-line-2.cm-line div.cm-fold-indicator ~ span.cm-formatting.cm-formatting-list-ol, -body.colorful-ordered-list .markdown-source-view.mod-cm6 .HyperMD-list-line.HyperMD-list-line-2.cm-line span.cm-hmd-list-indent ~ span.cm-formatting.cm-formatting-list-ol { - color: var(--list-colorful-marker); - filter: hue-rotate(60deg); -} - -body.colorful-ordered-list :is(ul, ol) :is(ul, ol) ol li::marker { - color: hsl(calc(var(--accent-h) + 120),var(--accent-s),calc(var(--accent-l) * 0.95)); -} -body.colorful-ordered-list :is(ul, ol) :is(ul, ol) ol li::before, -body.colorful-ordered-list .markdown-source-view.mod-cm6 .HyperMD-list-line.HyperMD-list-line-3.cm-line div.cm-fold-indicator ~ span.cm-formatting.cm-formatting-list-ol, -body.colorful-ordered-list .markdown-source-view.mod-cm6 .HyperMD-list-line.HyperMD-list-line-3.cm-line span.cm-hmd-list-indent ~ span.cm-formatting.cm-formatting-list-ol { - color: var(--list-colorful-marker); - filter: hue-rotate(120deg); -} - -body.colorful-ordered-list :is(ul, ol) :is(ul, ol) :is(ul, ol) ol li::marker { - color: hsl(calc(var(--accent-h) + 180),var(--accent-s),calc(var(--accent-l) * 0.95)); -} -body.colorful-ordered-list :is(ul, ol) :is(ul, ol) :is(ul, ol) ol li::before, -body.colorful-ordered-list .markdown-source-view.mod-cm6 .HyperMD-list-line.HyperMD-list-line-4.cm-line div.cm-fold-indicator ~ span.cm-formatting.cm-formatting-list-ol, -body.colorful-ordered-list .markdown-source-view.mod-cm6 .HyperMD-list-line.HyperMD-list-line-4.cm-line span.cm-hmd-list-indent ~ span.cm-formatting.cm-formatting-list-ol { - color: var(--list-colorful-marker); - filter: hue-rotate(180deg); -} - -body.colorful-ordered-list :is(ul, ol) :is(ul, ol) :is(ul, ol) :is(ul, ol) ol li::marker { - color: hsl(calc(var(--accent-h) + 240),var(--accent-s),calc(var(--accent-l) * 0.95)); -} -body.colorful-ordered-list :is(ul, ol) :is(ul, ol) :is(ul, ol) :is(ul, ol) ol li::before, -body.colorful-ordered-list .markdown-source-view.mod-cm6 .HyperMD-list-line.HyperMD-list-line-5.cm-line div.cm-fold-indicator ~ span.cm-formatting.cm-formatting-list-ol, -body.colorful-ordered-list .markdown-source-view.mod-cm6 .HyperMD-list-line.HyperMD-list-line-5.cm-line span.cm-hmd-list-indent ~ span.cm-formatting.cm-formatting-list-ol { - color: var(--list-colorful-marker); - filter: hue-rotate(240deg); -} - -body.colorful-ordered-list :is(ul, ol) :is(ul, ol) :is(ul, ol) :is(ul, ol) :is(ul, ol) ol li::marker { - color: hsl(calc(var(--accent-h) + 300),var(--accent-s),calc(var(--accent-l) * 0.95)); -} - -body.colorful-ordered-list :is(ul, ol) :is(ul, ol) :is(ul, ol) :is(ul, ol) :is(ul, ol) ol li::before, -body.colorful-ordered-list .markdown-source-view.mod-cm6 .HyperMD-list-line.HyperMD-list-line-6.cm-line div.cm-fold-indicator ~ span.cm-formatting.cm-formatting-list-ol, -body.colorful-ordered-list .markdown-source-view.mod-cm6 .HyperMD-list-line.HyperMD-list-line-6.cm-line span.cm-hmd-list-indent ~ span.cm-formatting.cm-formatting-list-ol { - color: var(--list-colorful-marker); - filter: hue-rotate(300deg); -} - -body.colorful-ordered-list :is(ul, ol) :is(ul, ol) :is(ul, ol) :is(ul, ol) :is(ul, ol) :is(ul, ol) ol li::marker { - color: hsl(calc(var(--accent-h) + 0), var(--accent-s), calc(var(--accent-l) * 0.95)); -} - -body.colorful-ordered-list :is(ul, ol) :is(ul, ol) :is(ul, ol) :is(ul, ol) :is(ul, ol) :is(ul, ol) ol li::before, -body.colorful-ordered-list .markdown-source-view.mod-cm6 .HyperMD-list-line.HyperMD-list-line-7.cm-line div.cm-fold-indicator ~ span.cm-formatting.cm-formatting-list-ol, -body.colorful-ordered-list .markdown-source-view.mod-cm6 .HyperMD-list-line.HyperMD-list-line-7.cm-line span.cm-hmd-list-indent ~ span.cm-formatting.cm-formatting-list-ol { - color: var(--list-colorful-marker); - filter: hue-rotate(0deg); -} - - -@property --colorA { - syntax: ''; - inherits: false; - initial-value: #9800f021; -} -@property --colorB { - syntax: ''; - inherits: false; - initial-value: #0048f021; -} -@property --colorC { - syntax: ''; - inherits: false; - initial-value: #00f02c21; -} -body.enable-icon-anima div.nav-header:hover { - background: linear-gradient(135deg,var(--colorA),var(--colorB),var(--colorC)); - animation: rainbow-change 8s infinite linear; -} - -@keyframes rainbow-change { - 20% { - --colorA: #f0000015; - --colorB: #88f00015; - --colorC: #0048f015; - } - 40% { - --colorA: #10f00015; - --colorB: #007cf015; - --colorC: #6400f015; - } - 60% { - --colorA: #d4f00015; - --colorB: #f0780015; - --colorC: #f0003c15; - } - 80% { - --colorA: #0060f015; - --colorB: #f0700015; - --colorC: #00d0f015; - } -} - - -body.enable-icon-anima :is(.workspace-ribbon, .nav-header) .clickable-icon:before{ - content: ''; - background-color: var(--theme-color-translucent-01); - position: absolute; - width: 20px; - height: 20px; - border-radius: 50%; - visibility: hidden; -} - -body.enable-icon-anima :is(.workspace-ribbon, .nav-header) .clickable-icon:hover:before { - animation: bead-1 1s; -} - -body.enable-icon-anima :is(.workspace-ribbon, .nav-header) .clickable-icon:after { - content: ''; - background-color: var(--theme-color-translucent-01); - position: absolute; - width: 20px; - height: 20px; - border-radius: 50%; - visibility: hidden; -} - -body.enable-icon-anima :is(.workspace-ribbon, .nav-header) .clickable-icon:hover:after { - animation: bead-2 1s; -} - -@keyframes bead-1 { - 0% { - transform: scale(1); - visibility: visible; - } - 25% { - margin-left: 20px; - margin-top: 20px; - transform: scale(0); - visibility: hidden; - } - 50% { - margin: 0px; - transform: scale(1); - visibility: visible; - } - 100% { - margin-left: 20px; - margin-top: -20px; - transform: scale(0); - visibility: hidden; - } -} - -@keyframes bead-2 { - 0% { - transform: scale(1); - visibility: visible; - } - 25% { - margin-left: -20px; - margin-top: -20px; - transform: scale(0); - visibility: hidden; - } - 50% { - margin: 0px; - transform: scale(1); - visibility: visible; - } - 100% { - margin-left: -20px; - margin-top: 20px; - transform: scale(0); - visibility: hidden; - } -} - -/**ob 1.0 **/ -.is-hidden-frameless:not(.is-fullscreen) .titlebar-button-container.mod-right:hover { - background-color: var(--titlebar-background-focused); -} -.is-hidden-frameless:not(.is-fullscreen) .titlebar-button-container.mod-right { - background-color: transparent; -} -.is-hidden-frameless.mod-windows .titlebar-button { - background-color: transparent; -} - -.markdown-preview-view progress, .markdown-rendered progress, .markdown-source-view.is-live-preview progress { - overflow: unset; - vertical-align:top; -} - -body.title-justify-start .view-header-title-container { - justify-content: flex-start; -} - -.search-input-container input:hover { - box-shadow: var(--window-shadow-hover); -} - -.menu{ - background-color: var(--color-base-00); -} - -.memo-context-menu{ - background-color:var(--bg-color-settings-3); - backdrop-filter: blur(10px); -} -.cm-s-obsidian span.obsidian-search-match-highlight { - box-shadow: none; -} -select:hover, -.dropdown:hover, -select:focus, -.dropdown:focus { - box-shadow: none; -} - -.workspace-leaf.mod-active .nav-folder.has-focus > .nav-folder-title, .workspace-leaf.mod-active .nav-file.has-focus > .nav-file-title { - box-shadow: none; -} - -.nav-folder.mod-root > .nav-folder-children > .nav-file .nav-file-title { - padding-left: var(--size-2-3); -} - -.nav-folder .nav-folder-children[style="height: 0px;"] { - height: auto !important; -} - -textarea:active, -input[type='text']:active, -input[type='search']:active, -input[type='email']:active, -input[type='password']:active, -input[type='number']:active, -textarea:focus, -input[type='text']:focus, -input[type='search']:focus, -input[type='email']:focus, -input[type='password']:focus, -input[type='number']:focus, -textarea:focus-visible, -input[type='text']:focus-visible, -input[type='search']:focus-visible, -input[type='email']:focus-visible, -input[type='password']:focus-visible, -input[type='number']:focus-visible { - box-shadow: none; -} - - -@keyframes fancy-prompt-1 { - 0% { - transform: scale(1.2) rotate(0); - opacity: 0; - box-shadow: 0 0 0 rgba(241, 241, 241, 0); - } - 50% { - transform: scale(1) rotate(-0.2deg); - opacity: 1; - box-shadow: 0 0 0 rgba(241, 241, 241, 0.5); - } - 75% { - transform: scale(1) rotate(0.2deg); - opacity: 1; - box-shadow: 0 0 250px rgba(241, 241, 241, 0.5); - } - 100% { - transform: scale(1) rotate(0); - opacity: 1; - box-shadow: 0 0 500px rgba(241, 241, 241, 0); - } -} - -.prompt { - backdrop-filter: blur(10px); - box-shadow: 0 0 10px 1px var(--prompt-box-shadow); - border: none; -} - - -@keyframes slideUpLarge { - 0% { - transform: translateY(-100%); - } - 100% { - transform: translateY(0%); - } -} - -@keyframes quickScaleDown { - 0% { - transform: scale(0); - } - 20% { - transform: scale(0.2); - } - - 40% { - transform: scale(0.4); - } - 60% { - transform: scale(0.6); - } - 80% { - transform: scale(0.8); - } - 100% { - transform: scale(1); - } -} - -@keyframes blowUpModal { - 0% { - transform: scale(0); - opacity: 0; - } - 100% { - transform: scale(1); - opacity: 1; - } -} - - -@keyframes roadRunnerIn { - 0% { - transform: translateX(-1500px) skewX(30deg) scaleX(1.3); - } - 70% { - transform: translateX(30px) skewX(0deg) scaleX(0.9); - } - 100% { - transform: translateX(0px) skewX(0deg) scaleX(1); - } -} - -@keyframes roadRunnerOut { - 0% { - transform: translateX(400px) skewX(30deg) scaleX(1.3); - } - 50% { - transform: translateX(-30px) skewX(0deg) scaleX(0.9); - } - 100% { - transform: translateX(0px) skewX(0deg) scaleX(1); - } -} - -@keyframes pop-swirl { - 0% { - transform: scale(0) rotate(360deg); - } - 60% { - transform: scale(0.8) rotate(-10deg); - } - 100% { - transform: scale(1) rotate(0deg); - } -} - -@keyframes unfoldIn { - 0% { - transform: scaleY(0.005) scaleX(0); - } - 50% { - transform: scaleY(0.005) scaleX(1); - } - 100% { - transform: scaleY(1) scaleX(1); - } -} - -[class="prompt"] { - animation: var(--prompt-options) .5s ease-in; -} - -body.hide-left-ribbon .workspace-ribbon.mod-left:not(:hover):before, -body.hide-left-ribbon .workspace-ribbon.side-dock-ribbon.mod-left:not(:hover), -body.hide-left-ribbon .workspace-ribbon.side-dock-ribbon.mod-left:not(:hover) .sidebar-toggle-button.mod-left { - margin-left: -40px; -} - -body.hide-left-ribbon .workspace-ribbon.side-dock-ribbon.mod-left .sidebar-toggle-button.mod-left, -body.hide-left-ribbon .workspace-ribbon.mod-left:before, -body.hide-left-ribbon .workspace-ribbon.side-dock-ribbon.mod-left { - transition: all 350ms ease-in-out; -} - -body.hide-left-ribbon-retention-drawer.hide-titlebar-close-btn.is-hidden-frameless .titlebar-button.mod-logo { - display: none; -} - -body.hide-left-ribbon-retention-drawer.hide-titlebar-close-btn.is-hidden-frameless .workspace-ribbon.mod-left .sidebar-toggle-button { - padding-top: var(--size-4-2); -} -body.hide-left-ribbon-retention-drawer .workspace-ribbon.mod-left:not(:hover) ~ .workspace-split .workspace-tabs.mod-top.mod-top-left-space .workspace-tab-header-container { - margin-left: 30px; - transition: all 350ms ease-in-out; -} -body.hide-left-ribbon-retention-drawer .workspace-ribbon.mod-left:not(:hover):before, -body.hide-left-ribbon-retention-drawer .workspace-ribbon.side-dock-ribbon.mod-left:not(:hover) { - margin-left: -40px; -} - -body.hide-left-ribbon-retention-drawer .workspace-ribbon.side-dock-ribbon.mod-left .sidebar-toggle-button.mod-left, -body.hide-left-ribbon-retention-drawer .workspace-ribbon.mod-left:before, -body.hide-left-ribbon-retention-drawer .workspace-ribbon.side-dock-ribbon.mod-left, -body.hide-left-ribbon-retention-drawer .workspace-ribbon.mod-left:hover ~ .workspace-split .workspace-tabs.mod-top .workspace-tab-header-container { - transition: all 350ms ease-in-out; -} -body.hide-titlebar-close-btn.hide-left-ribbon-retention-drawer .workspace-ribbon.side-dock-ribbon.mod-left .sidebar-toggle-button.mod-left { - background: unset; -} - - -body.hide-left-ribbon-retention-drawer:not(.background-settings-workplace-background-image) .workspace-tabs.mod-top { - background: var(--background-secondary-alt); -} -body.stack-tab-text-ori-mixed .workspace-tab-header-inner-title { - text-orientation: mixed; -} - -body:is(.bt-bubble-ribbon-hide-left,.bt-bubble-ribbon) .side-dock-actions { - border-radius: 0 var(--radius-l) var(--radius-l) 0; -} -body:is(.bt-bubble-ribbon-hide-left,.bt-bubble-ribbon) .side-dock-actions, -body:is(.bt-bubble-ribbon-hide-left,.bt-bubble-ribbon) .side-dock-settings { - border: 1px solid var(--tab-outline-color); - padding: 5px 0; - background-color: var(--background-primary); -} -body:is(.bt-bubble-ribbon-hide-left,.bt-bubble-ribbon) .side-dock-settings { - border-radius: 0 var(--radius-l) 0 0; - margin-bottom: 0; -} -body:is(.bt-bubble-ribbon-hide-left,.bt-bubble-ribbon) .workspace-ribbon { - padding: 0 3px 0 0; - border-right: none; -} - -body.bt-bubble-ribbon-hide-left .workspace-ribbon.mod-left:not(:hover):before, -body.bt-bubble-ribbon-hide-left .workspace-ribbon.side-dock-ribbon.mod-left:not(:hover), -body.bt-bubble-ribbon-hide-left .workspace-ribbon.side-dock-ribbon.mod-left:not(:hover) .sidebar-toggle-button.mod-left { - margin-left: -40px; -} - -body.bt-bubble-ribbon-hide-left .workspace-ribbon.side-dock-ribbon.mod-left .sidebar-toggle-button.mod-left, -body.bt-bubble-ribbon-hide-left .workspace-ribbon.mod-left:before, -body.bt-bubble-ribbon-hide-left .workspace-ribbon.side-dock-ribbon.mod-left { - transition: all 350ms ease-in-out; -} - - -body.tab-title-bar-position .workspace-tabs:not(.mod-stacked) .view-header { - left: 16px; - border: none; - transform-origin: right center; - writing-mode: vertical-rl; - position: absolute; - padding: 0; - background: transparent; -} - -body.tab-title-bar-position .workspace-tabs:not(.mod-stacked) .view-header-nav-buttons { - margin-left: -12px; -} - -body.tab-title-bar-position .workspace-tabs:not(.mod-stacked) .view-header .view-actions { - margin-left: -13px; -} -body.tab-title-bar-position .workspace-tabs:not(.mod-stacked) .view-header-title-container { - position: absolute; - top: 25vh; - left: -8px; - transform-origin: right center; - writing-mode: vertical-rl; - text-orientation: mixed; -} - -body.view-button-front.tab-title-bar-position .workspace-leaf-content .view-header .view-header-nav-buttons{ - margin-left: -12px; - margin-top: 25px; -} - -body.view-button-front.tab-title-bar-position .workspace-leaf-content:is([data-mode="preview"], -[data-mode="source"]) .view-header .view-actions>:is([aria-label^="该面板处于编辑视图中"], -[aria-label^="Current view: editing"]) { - left: -10px; -} -body.view-button-front.tab-title-bar-position .workspace-leaf-content[data-mode='preview'] .view-header .view-actions>:is([aria-label^="该面板处于阅读视图中"],[aria-label^="Current view: reading"]) { - left: -10px; -} - -body.tab-title-bar-position .markdown-preview-view { - padding-left: unset; -} - -body.tab-title-bar-position .workspace-split.mod-root .workspace-leaf-content[data-type='markdown'] .view-content { - padding-left: 2.5rem; -} - -body.tab-title-bar-position .workspace-tabs:not(.mod-stacked) .view-header-title-container.web-browser-header-bar { - top: unset; -} - -body.mod-windows.hide-titlebar-close-btn.is-hidden-frameless .titlebar-button.mod-logo { - display: block; - margin-left: 5px; - margin-top: 6px; -} - -body.hide-titlebar-close-btn.hide-left-ribbon-retention-drawer .view-header { - padding-left: 24px; -} -body.hide-titlebar-close-btn.hide-left-ribbon-retention-drawer.view-button-front .workspace-leaf-content:is([data-mode="preview"],[data-mode="source"]) .view-header .view-actions>:is([aria-label^="该面板处于编辑视图中"],[aria-label^="Current view: editing"]) { - left:30px -} -body.hide-titlebar-close-btn.hide-left-ribbon-retention-drawer.view-button-front .workspace-leaf-content[data-mode='preview'] .view-header .view-actions>:is([aria-label^="该面板处于阅读视图中"],[aria-label^="Current view: reading"]) { - left: 30px; -} - -body.view-button-front .view-header { - padding-left: 32px !important; -} -body.hide-titlebar-close-btn.hide-left-ribbon.is-hidden-frameless .titlebar-button.mod-logo { - display: none; -} - -body.mod-windows.hide-titlebar-close-btn.is-hidden-frameless .workspace-ribbon.side-dock-ribbon.mod-left { - padding-top: 26px; -} - -body.mod-windows.hide-titlebar-close-btn.is-hidden-frameless .workspace-ribbon.mod-left .sidebar-toggle-button { - padding-top: 56px; -} -body.mod-windows.hide-titlebar-close-btn.is-hidden-frameless .workspace-ribbon.mod-left.is-collapsed .sidebar-toggle-button { - padding-top: 54px; -} -body.mod-windows.hide-titlebar-close-btn.is-hidden-frameless .workspace-ribbon.mod-left .side-dock-actions { - padding-top: 12px; -} -body.hide-titlebar-close-btn.is-hidden-frameless .titlebar-button-container.mod-right:not(:hover) { - transform: translateY(calc( -1 * var(--header-height) + 6px)); - transition: all 0.6s linear; -} - -body.hide-titlebar-close-btn.is-hidden-frameless:not(.is-fullscreen) .workspace-tabs.mod-top-right-space .workspace-tab-header-container:after { - top: -20px; -} - -body.hide-titlebar-close-btn.is-hidden-frameless:not(.is-fullscreen) .workspace-tabs.mod-top-right-space .workspace-tab-header-container { - padding-right: unset; -} -body.hide-titlebar-close-btn.is-hidden-frameless .titlebar-inner:hover .titlebar-button-container.mod-right { - transition: all 0.1s linear; - transform:translateY(-15px); - background: var(--titlebar-background-focused); - opacity: 0.8; -} -body.hide-titlebar-close-btn.is-hidden-frameless.mod-linux .titlebar-button, -body.hide-titlebar-close-btn.is-hidden-frameless.mod-windows .titlebar-button { - padding-bottom: 6px; - align-items: flex-end; -} - -.theme-light .view-header-title-container:is(.web-browser-header-bar,.wb-header-bar) input:is(.web-browser-search-bar,.wb-search-bar) { - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='svg-icon lucide-search'%3E%3Ccircle cx='11' cy='11' r='8'%3E%3C/circle%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'%3E%3C/line%3E%3C/svg%3E"); - background-repeat: no-repeat; - background-position: 4px 7.5px; - background-size: 14px; - opacity: 0.6; - padding: 0 0 0 22px; - border: none; -} -.theme-dark .view-header-title-container:is(.web-browser-header-bar,.wb-header-bar) input:is(.web-browser-search-bar,.wb-search-bar) { - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='svg-icon lucide-search'%3E%3Ccircle cx='11' cy='11' r='8'%3E%3C/circle%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'%3E%3C/line%3E%3C/svg%3E"); - background-repeat: no-repeat; - background-position: 4px 7.5px; - background-size: 14px; - opacity: 0.6; - padding: 0 0 0 22px; - border: none; - background-color: transparent; -} -.view-header-title-container:is(.web-browser-header-bar,.wb-header-bar) input:is(.web-browser-search-bar,.wb-search-bar):focus { - opacity: 1; -} -.view-header .view-header-title-container:is(.web-browser-header-bar,.wb-header-bar):hover { - border:none; -} - -.view-header-title-container:is(.web-browser-header-bar,.wb-header-bar) .view-header-title-parent:before { - content: ' '; - margin-left: 10px; - color: var(--text-faint); - width:10px; - height: 6px; - background-color: var(--text-muted); - -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='svg-icon lucide-search'%3E%3Ccircle cx='11' cy='11' r='8'%3E%3C/circle%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'%3E%3C/line%3E%3C/svg%3E"); -} -/* ====web-browser==== */ -.wb-bookmark-bar { - overflow: unset; - border:none; - right: 7px; -} -.wb-page-search-bar-text { - font-family: var(--font-family-vault); -} -.workspace-leaf-content:is([data-type$="web-browser-view"],[data-type="surfing-view"]) .view-actions .view-action { - opacity: 1 !important; -} -.workspace-leaf-content[data-type$="web-browser-view"] .view-actions>a:not([class*="-web-browser"]) { - display: none; -} -.workspace-leaf-content:not([data-type$="web-browser-view"]) .view-actions>a[class*="-web-browser"]{ - display: none; -} -.workspace-leaf-content[data-type="surfing-view"] .view-actions>a:not(:is([class*="surfing"],[aria-label^="Surfing"],[aria-label="星标"],[aria-label="设置"],[aria-label="star"],[aria-label="settings"])) { - display: none; -} -.wb-bookmark-item, .wb-bookmark-folder { - width: auto; -} -.workspace-leaf-content:not([data-type="surfing-view"]) .view-actions>a:is([class*="surfing"],[aria-label^="Surfing"]) { - display: none; -} - -.wb-page-search-bar-input-container input.wb-page-search-bar-input{ - background-color: var(--background-secondary); - box-shadow: var(--window-shadow2); -} -.wb-page-search-bar-input-container input.wb-page-search-bar-input:not(:hover){ - border:none; -} -.view-header-title-container.web-browser-header-bar input { - padding: 0 10px 0 19px; - border: 0; - outline: none; - background: transparent; -} - -.view-header-title-container.web-browser-header-bar:hover { - border: var(--input-border-width) solid; - color: var(--interactive-accent-hover); - border-radius: 6px; -} -/* ==End==web-browser==== */ - -/* ====new style==== */ -body.background-settings-workplace-background-image.workspace > .workspace-leaf { - background-color: transparent; -} -body:not(.color-scheme-options-simplicity-topaz) .workspace > .workspace-split { - background-color: var(--background-secondary-alt); -} -body.background-settings-workplace-background-image:not(.is-mobile) .workspace-tab-container-before.is-before-active, -body.background-settings-workplace-background-image:not(.is-mobile) .workspace-tab-container-after.is-after-active, -body.background-settings-workplace-background-image:not(.is-mobile) .workspace-tab-header.is-before-active, -body.background-settings-workplace-background-image:not(.is-mobile) .workspace-tab-header.is-after-active, -body.background-settings-workplace-background-image:not(.is-mobile) .workspace-split.mod-right-split .workspace-tabs .workspace-leaf, -body.background-settings-workplace-background-image:not(.is-mobile) .workspace-split.mod-left-split .workspace-tabs .workspace-leaf, -body.background-settings-workplace-background-image:not(.is-mobile) .workspace-leaf-resize-handle, -body.background-settings-workplace-background-image .workspace-split.mod-horizontal:is(.mod-left-split,.mod-right-split) .workspace-tab-header.is-active { - background-color: transparent; -} - -body.toggle-header-bottom-line .workspace .mod-root .workspace-tabs.mod-stacked .workspace-tab-container .workspace-tab-header { - --page-border-bottom: transparent; -} -body.toggle-header-bottom-line.show-view-header .view-header { - --page-border-bottom: transparent; - border-top-left-radius:var(--radius-m); - border-top-right-radius: var(--radius-m); -} - -.workspace-split.mod-root .workspace-tab-header-container-inner .workspace-tab-header:first-child { - margin-left: 1rem; -} - -body.background-settings-workplace-background-image .workspace-split.mod-root .workspace-tab-header.is-active::before, -body.background-settings-workplace-background-image .workspace-split.mod-root .workspace-tab-header.is-active::after { - box-shadow: inset 0 0 0 var(--tab-outline-width) transparent, 0 0 0 calc(var(--tab-curve) * 4) var(--background-secondary); -} - -body.theme-dark:not(.background-settings-workplace-background-image) .workspace-split.mod-horizontal:is(.mod-left-split,.mod-right-split) .workspace-tabs .workspace-leaf-resize-handle { - --divider-color: var(--background-primary); -} -.workspace-tabs:not(.mod-top) .workspace-tab-header-container { - background-color:transparent; -} -/*** emoji toolbar**/ -.callout img.emoji { - display: inline-block!important; -} -/**emoji toolbar*****/ - -body.underline-tab-style .workspace-split:not(.mod-left-split):not(.mod-right-split) .workspace-tab-header-container-inner .workspace-tab-header { - background-color: transparent; - box-shadow: none; -} -body.underline-tab-style .workspace-split:not(.mod-left-split):not(.mod-right-split) .workspace-tab-header-container-inner .workspace-tab-header::before, -body.underline-tab-style .workspace-split:not(.mod-left-split):not(.mod-right-split) .workspace-tab-header-container-inner .workspace-tab-header::after { - display: none; -} -body.underline-tab-style .workspace-split:not(.mod-left-split):not(.mod-right-split) .workspace-tab-header-container-inner .workspace-tab-header.is-active { - border-radius: 0; - border-bottom: 2px solid var(--text-accent); - margin-bottom: 0px; - padding-bottom: 0px; -} -body.underline-tab-style .workspace-split:not(.mod-left-split):not(.mod-right-split) .workspace-tab-header-container-inner .workspace-tab-header.is-active .workspace-tab-header-inner { - border-radius: var(--tab-radius) var(--tab-radius) 0px 0px; - margin-top: 0.5px; - padding-bottom: 4px; -} -body.underline-tab-style .workspace-split:not(.mod-left-split):not(.mod-right-split) .workspace-tab-header-container-inner .workspace-tab-header ::after { - display: none; -} -body.underline-tab-style .workspace-split:not(.mod-left-split):not(.mod-right-split) .workspace-tab-header-container-inner .workspace-tab-header:hover .workspace-tab-header-inner { - background-color: var(--background-modifier-hover); -} - -body.safari-tab-style .workspace-tabs:not(.mod-stacked) .workspace-tab-header::before, -body.safari-tab-style .workspace-tabs:not(.mod-stacked) .workspace-tab-header::after, -body.safari-tab-style .workspace .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header-inner::after { - display: none; -} - -body.safari-tab-style .mod-vertical:not(.mod-left-split):not(.mod-right-split) .workspace-tabs:not(.mod-stacked) .workspace-tab-header-container-inner, -body.safari-tab-style .mod-horizontal:not(.mod-left-split):not(.mod-right-split) .workspace-tabs:not(.mod-stacked) .workspace-tab-header-container-inner { - align-items: center; - margin: 0; - width: 100%; -} - -body.safari-tab-style .mod-vertical:not(.mod-left-split):not(.mod-right-split) .workspace-tabs:not(.mod-stacked) .workspace-tab-header, -body.safari-tab-style .mod-horizontal:not(.mod-left-split):not(.mod-right-split) .workspace-tabs:not(.mod-stacked) .workspace-tab-header { - border-radius: 6px; - box-shadow: none; - height: calc(var(--header-height) * 0.7); - margin-left: 12px; - padding: 0 !important; - transition: 400ms, background-color 150ms ease-in-out; -} - -body.safari-tab-style .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header { - transition: 400ms; -} - -body.safari-tab-style .workspace-tabs:not(.mod-stacked) .workspace-tab-header:first-child { - margin-left: 0; -} - -body.safari-tab-style .mod-root:not(.mod-left-split):not(.mod-right-split) .workspace-tabs:not(.mod-stacked) .workspace-tab-header-inner { - padding: 0 4px 0 8px; - transition: 400ms; -} -body.safari-tab-style .mod-root:not(.mod-left-split):not(.mod-right-split) .workspace-tabs:not(.mod-stacked) .workspace-tab-header-inner, -body.safari-tab-style .mod-root:not(.mod-left-split):not(.mod-right-split) .workspace-tabs:not(.mod-stacked) .workspace-tab-header-inner-close-button, -body.safari-tab-style .mod-root:not(.mod-left-split):not(.mod-right-split) .workspace-tabs:not(.mod-stacked) .workspace-tab-header-inner-icon { - color: var(--text-muted); -} - -body.safari-tab-style .workspace .mod-root .workspace-tab-header-inner::after { - display: none; -} - -body.safari-tab-style .mod-root:not(.mod-left-split):not(.mod-right-split) .workspace-tabs:not(.mod-stacked) .workspace-tab-header.is-active { - flex-grow: 1.67; - max-width: 300px; -} - -body.safari-tab-style .mod-root .workspace-tabs:not(.mod-stacked).mod-active .workspace-tab-header.is-active .workspace-tab-header-inner, -body.safari-tab-style .mod-root .workspace-tabs:not(.mod-stacked).mod-active .workspace-tab-header.is-active .workspace-tab-header-inner-title, -body.safari-tab-style .mod-root .workspace-tabs:not(.mod-stacked).mod-active .workspace-tab-header.is-active .workspace-tab-header-inner-close-button, -body.safari-tab-style .mod-root .workspace-tabs:not(.mod-stacked).mod-active .workspace-tab-header.is-active .workspace-tab-header-inner-icon { - color: var(--text-noraml); - font-weight:bold; -} - -body.safari-tab-style .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header.is-active:hover { - background-color: var(--background-modifier-border); -} - -body.safari-tab-style.theme-light .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header { - border: 1px solid var(--tab-outline-color); -} -body.safari-tab-style .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header { - border: 1px solid rgba(var(--mono-rgb-0), .25) ; -} - -body.transparent-tab-style .workspace-split:not(.mod-left-split):not(.mod-right-split) .workspace-tab-header-container-inner .workspace-tab-header { - --tab-background-active: transparent; - --tab-outline-width: transparent; -} -body.transparent-tab-style.color-scheme-options-simplicity-topaz.theme-dark:not(.background-settings-workplace-background-image) .workspace-split.mod-root .workspace-tab-header.is-active.mod-active { - background-color: var(--tab-background-active); -} - -body.transparent-tab-style.theme-dark .workspace-split.mod-root .workspace-tab-header.is-active.mod-active { - background-color: var(--tab-background-active); -} - -.is-mobilebody, -.is-mobile .app-container, -.is-mobile .horizontal-main-container { - background-color: var(--background-secondary); -} - -.is-mobile.theme-light .mobile-toolbar { - background-color: var(--background-primary-alt); -} - -.is-frameless:is(.is-mobile,.is-tablet).mod-windows { - background-color: var(--background-secondary-alt) !important; -} - -.is-frameless:is(.is-mobile,.is-tablet).mod-windows::after { - content: ""; - display: block; - position: absolute; - left: 0; - top: 0; - right: 0; - bottom: 0; - height: calc(var(--titlebar-height) / var(--zoom-factor)); - width: 100%; - background-color: var(--background-mobile-padding-top); - --background-mobile-padding-top: var(--background-secondary-alt); -} - -body.background-settings-workplace-background-image.theme-light.is-frameless:is(.is-mobile,.is-tablet).mod-windows::after { - --background-mobile-padding-top: #f9f9f9; -} -body.background-settings-workplace-background-image.theme-dark.is-frameless:is(.is-mobile,.is-tablet).mod-windows::after { - --background-mobile-padding-top: #000000; -} - -.workspace-tab-header.mod-active .workspace-tab-header-inner-title { - font-weight: bold; -} - -.theme-dark .mod-root .workspace-tabs .workspace-leaf { - background-color: transparent; -} - -.workspace-tab-header-inner-icon img { - margin:auto; -} - -.cm-s-obsidian span.cm-hmd-escape-char { - color: var(--text-muted); -} - - -/* ================================== */ -/* ========= Canvas ========= */ -/* ================================== */ -.canvas-node-content.markdown-embed > .markdown-embed-content > .markdown-preview-view { - padding: 0 0.5em; -} - -body.canvas-workplace-background .workspace-leaf-content[data-type="canvas"], -body.canvas-workplace-background .canvas-wrapper { - --background-primary: var(--color-base-00); -} - -/* hide canvas export grid */ -body.toggle-canvas-grid .canvas-wrapper .canvas-background rect, -.canvas-wrapper.is-screenshotting .canvas-background rect { - opacity: 0; -} - - -/*=======canvas-card-focus-mode======== -=====Modified by Cuman from boninall=====*/ -/* -body.canvas-card-focus-mode .canvas:has(.is-focused.mod-canvas-color-1) .canvas-edges>:not(.mod-canvas-color-1), -body.canvas-card-focus-mode .canvas:has(.is-focused.mod-canvas-color-2) .canvas-edges>:not(.mod-canvas-color-2), -body.canvas-card-focus-mode .canvas:has(.is-focused.mod-canvas-color-3) .canvas-edges>:not(.mod-canvas-color-3), -body.canvas-card-focus-mode .canvas:has(.is-focused.mod-canvas-color-4) .canvas-edges>:not(.mod-canvas-color-4), -body.canvas-card-focus-mode .canvas:has(.is-focused.mod-canvas-color-5) .canvas-edges>:not(.mod-canvas-color-5), -body.canvas-card-focus-mode .canvas:has(.is-focused.mod-canvas-color-6) .canvas-edges>:not(.mod-canvas-color-6), -body.canvas-card-focus-mode .canvas:has(.is-focused.mod-canvas-color-custom) .canvas-edges>:not(.mod-canvas-color-custom), -body.canvas-card-focus-mode .canvas:has(.is-focused.mod-canvas-color-1) .canvas-node.is-themed:not(:is(.mod-canvas-color-1)), -body.canvas-card-focus-mode .canvas:has(.is-focused.mod-canvas-color-2) .canvas-node.is-themed:not(:is(.mod-canvas-color-2)), -body.canvas-card-focus-mode .canvas:has(.is-focused.mod-canvas-color-3) .canvas-node.is-themed:not(:is(.mod-canvas-color-3)), -body.canvas-card-focus-mode .canvas:has(.is-focused.mod-canvas-color-4) .canvas-node.is-themed:not(:is(.mod-canvas-color-4)), -body.canvas-card-focus-mode .canvas:has(.is-focused.mod-canvas-color-5) .canvas-node.is-themed:not(:is(.mod-canvas-color-5)), -body.canvas-card-focus-mode .canvas:has(.is-focused.mod-canvas-color-6) .canvas-node.is-themed:not(:is(.mod-canvas-color-6)), -body.canvas-card-focus-mode .canvas:has(.is-focused.mod-canvas-color-custom) .canvas-node.is-themed:not(.mod-canvas-color-custom) { - filter:grayscale(0.9); -} -*/ - -.canvas-node-content.markdown-embed table { - text-align: start; -} - - - -.workspace-split.mod-horizontal:is(.mod-left-split,.mod-right-split) .workspace-tab-container .workspace-leaf-content:not([data-type="file-properties"]) -:is(.metadata-container,.frontmatter-container) { - display: none; -} - -.workspace-leaf-content[data-type="recent-files"] .view-content { - overflow-x: hidden; -} - -.canvas-node-container h1 { - font-size: calc(var(--h1-size) + 1em); - text-align: center; -} - -.canvas-node-placeholder::after { - background-color: rgba(var(--canvas-color), 0.3); -} -.canvas-icon-placeholder svg { - opacity: 0.5; -} -body.canvas-card-text-middle .canvas-node-container .canvas-node-content.markdown-embed:not(.is-loaded) { - text-align: center; -} - -div#popup-search { - background-color: var(--color-base-10); -} - -body:not(.is-phone) .workspace-leaf.mod-active .tree-item-self.has-focus { - --background-modifier-border-focus: color-mix(in srgb, var(--theme-color), transparent 30%); -} - -.tree-item-self { - align-items: center; -} - -body.bt-bubble-layout { - --divider-color: transparent; - --divider-color-hover: var(--backgrouund-modifier-border); -} - -body:not(.bt-bubble-layout) .setting-item[data-id="bt-bubble-settings"], -body:not(.bt-bubble-layout) .setting-item[data-id="bt-bubble-not-file-tree"], -body:not(.bt-bubble-layout) .setting-item[data-id="bt-bubble-layout-hide-borders"], -body:not(.bt-bubble-layout) .setting-item[data-id="bt-bubble-buttons"], -body:not(.bt-bubble-layout) .setting-item[data-id="bt-bubble-layout-padding"], -body:not(.bt-bubble-layout) .setting-item[data-id="bt-bubble-radius"] { - display: none; -} - -body.bt-bubble-layout .mod-vertical .workspace-tabs, -body.bt-bubble-layout .mod-left-split .workspace-tab-container, -body.bt-bubble-layout .mod-right-split .workspace-tab-container { - padding: 0 var(--bt-bubble-layout-padding); -} - -body.bt-bubble-layout .mod-left-split .workspace-tab-header.has-active-menu, -body.bt-bubble-layout .mod-right-split .workspace-tab-header.has-active-menu, -body.bt-bubble-layout .mod-left-split .workspace-tab-header.is-active, -body.bt-bubble-layout .mod-right-split .workspace-tab-header.is-active { - background-color: var(--background-primary); - border: 1px solid var(--bt-bubble-border-color); -} - -body.bt-bubble-layout.bt-bubble-buttons .mod-left-split .workspace-tab-header-container-inner, -body.bt-bubble-layout.bt-bubble-buttons .mod-right-split .workspace-tab-header-container-inner { - padding: 4px; - margin: 4px 0 4px var(--bt-bubble-layout-padding); - border-radius: var(--radius-m); - background-color: color-mix(in srgb, var(--background-primary) 80%, transparent); -} -body.bt-bubble-layout.bt-bubble-buttons .mod-left-split .workspace-tab-header.has-active-menu, -body.bt-bubble-layout.bt-bubble-buttons .mod-right-split .workspace-tab-header.has-active-menu, -body.bt-bubble-layout.bt-bubble-buttons .mod-left-split .workspace-tab-header.is-active, -body.bt-bubble-layout.bt-bubble-buttons .mod-right-split .workspace-tab-header.is-active { - background-color: color-mix(in srgb, lightgray, var(--background-secondary-alt) 75%); - border: 1px solid transparent; -} -body.bt-bubble-layout.bt-bubble-not-file-tree .workspace-leaf-content:is([data-type="file-explorer"],[data-type="mk-file-view"]), -body.bt-bubble-layout .workspace-split .workspace-leaf-content { - border-radius: var(--bt-bubble-radius, var(--radius-l)); - background-color: var(--background-primary); - border: 1px solid var(--bt-bubble-border-color); - margin-bottom: var(--bt-bubble-layout-padding); -} -body.bt-bubble-layout .workspace-split.mod-right-split .workspace-tabs .workspace-leaf, -body.bt-bubble-layout .workspace-split.mod-left-split .workspace-tabs .workspace-leaf, -body.bt-bubble-layout .mod-root .workspace-tabs .workspace-leaf { - background-color: transparent; -} -body.bt-bubble-layout .workspace-tab-header-container, -body.bt-bubble-layout .workspace-ribbon.mod-left:before { - border-bottom: none; -} -body.bt-bubble-layout:not(.background-settings-workplace-background-image) .workspace-split.mod-horizontal:is(.mod-left-split,.mod-right-split) .workspace-tabs .workspace-leaf-resize-handle { - --divider-color: transparent; -} - -body.bt-bubble-layout.bt-bubble-layout-hide-borders { - --bt-bubble-border-color: transparent; - --tab-outline-color: transparent; -} -body.bt-bubble-layout.bt-bubble-layout-hide-borders .menu { - border: 0 !important; -} - -body.bt-bubble-layout .workspace-split.mod-horizontal > * > .workspace-leaf-resize-handle, -body.bt-bubble-layout .workspace-split.mod-right-split > .workspace-leaf-resize-handle, -body.bt-bubble-layout .workspace-split.mod-vertical > * > .workspace-leaf-resize-handle, -body.bt-bubble-layout .workspace-split.mod-left-split > .workspace-leaf-resize-handle { - border: none; -} - -body.background-settings-workplace-background-image .workspace-tabs.mod-active .view-header, -body.background-settings-workplace-background-image .workspace-split.mod-root .view-content, -body.background-settings-workplace-background-image .workspace-tabs .view-header { - background-color: transparent; -} - -body.background-settings-workplace-background-image .workspace-tab-header-container-inner { - margin: 6px -5px 0; -} - -/*Inspired by the OneNote theme in Siyuan software*/ -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-tab-liked .nav-folder.mod-root>.nav-folder-title { - margin-left: -12px; -} - -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-tab-liked .nav-files-container { - padding: 0 0 0 12px; -} - -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-tab-liked .tree-item.nav-folder.mod-root>.tree-item-children.nav-folder-children > .tree-item.nav-folder > .tree-item-children.nav-folder-children { - border-left: none; -} - -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-tab-liked:not(.default-tabs):not(.remove-arrow) .nav-folder-collapse-indicator::after { - display: none; -} - -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-tab-liked .tree-item.nav-folder.mod-root>.tree-item-children.nav-folder-children > .tree-item.nav-folder { - border: 1px solid var(--tab-divider-color); - margin: 5px 4px; - border-radius: 3px; - border-left: 2px solid var(--tab-color); -} - -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-tab-liked:not(.is-grabbing) .tree-item-self.is-clickable.nav-folder-title:hover { - background-color: #cccccc29; -} - -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-tab-liked .tree-item.nav-folder.mod-root>.tree-item-children.nav-folder-children > .tree-item.nav-folder.is-collapsed>.tree-item-self.is-clickable.mod-collapsible.nav-folder-title::before { - content: ""; - width: 6px; - height: 20px; - position: absolute; - margin-left: -30px; - border-radius: 3px 0px 0px 3px; - background-color: var(--tab-color); -} - -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-tab-liked .tree-item.nav-folder.mod-root>.tree-item-children.nav-folder-children > .tree-item.nav-folder>.tree-item-self.is-clickable.mod-collapsible.nav-folder-title::before { - content: ""; - width: 13px; - height: 20px; - position: absolute; - margin-left: -36px; - border-radius: 3px 0px 0px 3px; - background-color: var(--tab-color); -} - -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-tab-liked .tree-item.nav-folder.mod-root>.tree-item-children.nav-folder-children > .tree-item.nav-folder:nth-child(20n+2)::before, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-tab-liked .tree-item.nav-folder.mod-root>.tree-item-children.nav-folder-children > .tree-item.nav-folder:nth-child(20n+2) { - --tab-color: var(--Fold0); -} - -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-tab-liked .tree-item.nav-folder.mod-root>.tree-item-children.nav-folder-children > .tree-item.nav-folder:nth-child(20n+3)::before, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-tab-liked .tree-item.nav-folder.mod-root>.tree-item-children.nav-folder-children > .tree-item.nav-folder:nth-child(20n+3) { - --tab-color: var(--Fold1); -} - -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-tab-liked .tree-item.nav-folder.mod-root>.tree-item-children.nav-folder-children > .tree-item.nav-folder:nth-child(20n+4)::before, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-tab-liked .tree-item.nav-folder.mod-root>.tree-item-children.nav-folder-children > .tree-item.nav-folder:nth-child(20n+4) { - --tab-color: var(--Fold2); -} - -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-tab-liked .tree-item.nav-folder.mod-root>.tree-item-children.nav-folder-children > .tree-item.nav-folder:nth-child(20n+5)::before, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-tab-liked .tree-item.nav-folder.mod-root>.tree-item-children.nav-folder-children > .tree-item.nav-folder:nth-child(20n+5) { - --tab-color: var(--Fold3); -} - -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-tab-liked .tree-item.nav-folder.mod-root>.tree-item-children.nav-folder-children > .tree-item.nav-folder:nth-child(20n+6)::before, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-tab-liked .tree-item.nav-folder.mod-root>.tree-item-children.nav-folder-children > .tree-item.nav-folder:nth-child(20n+6) { - --tab-color: var(--Fold4); -} - -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-tab-liked .tree-item.nav-folder.mod-root>.tree-item-children.nav-folder-children > .tree-item.nav-folder:nth-child(20n+7)::before, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-tab-liked .tree-item.nav-folder.mod-root>.tree-item-children.nav-folder-children > .tree-item.nav-folder:nth-child(20n+7) { - --tab-color: var(--Fold5); -} - -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-tab-liked .tree-item.nav-folder.mod-root>.tree-item-children.nav-folder-children > .tree-item.nav-folder:nth-child(20n+8)::before, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-tab-liked .tree-item.nav-folder.mod-root>.tree-item-children.nav-folder-children > .tree-item.nav-folder:nth-child(20n+8) { - --tab-color: var(--Fold6); -} - -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-tab-liked .tree-item.nav-folder.mod-root>.tree-item-children.nav-folder-children > .tree-item.nav-folder:nth-child(20n+9)::before, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-tab-liked .tree-item.nav-folder.mod-root>.tree-item-children.nav-folder-children > .tree-item.nav-folder:nth-child(20n+9) { - --tab-color: var(--Fold7); -} - -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-tab-liked .tree-item.nav-folder.mod-root>.tree-item-children.nav-folder-children > .tree-item.nav-folder:nth-child(20n+10)::before, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-tab-liked .tree-item.nav-folder.mod-root>.tree-item-children.nav-folder-children > .tree-item.nav-folder:nth-child(20n+10) { - --tab-color: var(--Fold8); -} - -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-tab-liked .tree-item.nav-folder.mod-root>.tree-item-children.nav-folder-children > .tree-item.nav-folder:nth-child(20n+11)::before, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-tab-liked .tree-item.nav-folder.mod-root>.tree-item-children.nav-folder-children > .tree-item.nav-folder:nth-child(20n+11) { - --tab-color: var(--Fold9); -} - -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-tab-liked .tree-item.nav-folder.mod-root>.tree-item-children.nav-folder-children > .tree-item.nav-folder:nth-child(20n+12)::before, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-tab-liked .tree-item.nav-folder.mod-root>.tree-item-children.nav-folder-children > .tree-item.nav-folder:nth-child(20n+12) { - --tab-color: var(--FoldA); -} - -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-tab-liked .tree-item.nav-folder.mod-root>.tree-item-children.nav-folder-children > .tree-item.nav-folder:nth-child(20n+13)::before, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-tab-liked .tree-item.nav-folder.mod-root>.tree-item-children.nav-folder-children > .tree-item.nav-folder:nth-child(20n+13) { - --tab-color: var(--FoldB); -} - -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-tab-liked .tree-item.nav-folder.mod-root>.tree-item-children.nav-folder-children > .tree-item.nav-folder:nth-child(20n+14)::before, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-tab-liked .tree-item.nav-folder.mod-root>.tree-item-children.nav-folder-children > .tree-item.nav-folder:nth-child(20n+14) { - --tab-color: var(--FoldC); -} - -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-tab-liked .tree-item.nav-folder.mod-root>.tree-item-children.nav-folder-children > .tree-item.nav-folder:nth-child(20n+15)::before, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-tab-liked .tree-item.nav-folder.mod-root>.tree-item-children.nav-folder-children > .tree-item.nav-folder:nth-child(20n+15) { - --tab-color: var(--FoldD); -} - -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-tab-liked .tree-item.nav-folder.mod-root>.tree-item-children.nav-folder-children > .tree-item.nav-folder:nth-child(20n+16)::before, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-tab-liked .tree-item.nav-folder.mod-root>.tree-item-children.nav-folder-children > .tree-item.nav-folder:nth-child(20n+16) { - --tab-color: var(--FoldE); -} - -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-tab-liked .tree-item.nav-folder.mod-root>.tree-item-children.nav-folder-children > .tree-item.nav-folder:nth-child(20n+17)::before, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-tab-liked .tree-item.nav-folder.mod-root>.tree-item-children.nav-folder-children > .tree-item.nav-folder:nth-child(20n+17) { - --tab-color: var(--FoldF); -} - -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-tab-liked .tree-item.nav-folder.mod-root>.tree-item-children.nav-folder-children > .tree-item.nav-folder:nth-child(20n+18)::before, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-tab-liked .tree-item.nav-folder.mod-root>.tree-item-children.nav-folder-children > .tree-item.nav-folder:nth-child(20n+18) { - --tab-color: var(--FoldG); -} - -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-tab-liked .tree-item.nav-folder.mod-root>.tree-item-children.nav-folder-children > .tree-item.nav-folder:nth-child(20n+19)::before, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-tab-liked .tree-item.nav-folder.mod-root>.tree-item-children.nav-folder-children > .tree-item.nav-folder:nth-child(20n+19) { - --tab-color: var(--FoldH); -} - -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-tab-liked .tree-item.nav-folder.mod-root>.tree-item-children.nav-folder-children > .tree-item.nav-folder:nth-child(20n)::before, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-tab-liked .tree-item.nav-folder.mod-root>.tree-item-children.nav-folder-children > .tree-item.nav-folder:nth-child(20n) { - --tab-color: var(--FoldI); -} - -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-tab-liked .tree-item.nav-folder.mod-root>.tree-item-children.nav-folder-children > .tree-item.nav-folder:nth-child(20n+1)::before, -body.bt-toggle-colorful-folder.folder-style-change-options-colorful-tab-liked .tree-item.nav-folder.mod-root>.tree-item-children.nav-folder-children > .tree-item.nav-folder:nth-child(20n+1) { - --tab-color: var(--FoldJ); -} - -body.remove-first-folder-icon .tree-item.nav-folder.mod-root>.tree-item-children.nav-folder-children > .tree-item.nav-folder>.tree-item-self.is-clickable.mod-collapsible.nav-folder-title .nav-folder-title-content::before, -body.remove-first-folder-icon .tree-item.nav-folder.mod-root>.tree-item-children.nav-folder-children > .tree-item.nav-folder>.tree-item-self.is-clickable.mod-collapsible.nav-folder-title -.nav-folder-collapse-indicator::before{ - display: none; -} - -.obsidian-icon-folder-icon { - margin: 0 0 0 -18px !important -} - -body.background-settings-workplace-background-image .workspace-split:not(.mod-root) .workspace-tab-container { - background-color: var(--bt-background-split-container); -} - -body.nowrap-edit-codebox .HyperMD-codeblock { - white-space: nowrap; -} - -.modal.mod-settings .vertical-tab-content-container { - background: var(--bg-color-settings-6); - -} - \ No newline at end of file diff --git a/.obsidian/themes/Maple/manifest.json b/.obsidian/themes/Maple/manifest.json deleted file mode 100644 index 0327b24..0000000 --- a/.obsidian/themes/Maple/manifest.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name": "Maple", - "version": "0.7.26", - "minAppVersion": "1.0.0", - "author": "subframe7536", - "authorUrl": "https://github.com/subframe7536" -} \ No newline at end of file diff --git a/.obsidian/themes/Maple/theme.css b/.obsidian/themes/Maple/theme.css deleted file mode 100644 index 575ee2d..0000000 --- a/.obsidian/themes/Maple/theme.css +++ /dev/null @@ -1,6382 +0,0 @@ -@charset "UTF-8"; -/* #region [style settings] */ -/* @settings - -name: 🛠️ Maple Basic Setting -id: maple-basic -settings: - - - id: setting-animation-time - title: animation duration (ms) - title.zh: 动画持续时间(毫秒) - type: variable-number-slider - format: ms - default: 200 - min: 0 - max: 500 - step: 50 - - - id: color-use-custom - title: use custom accent color - description: use style setting accent color instead of Obsidian's accent color - title.zh: 自定义 accent color - description.zh: 使用 style setting 的颜色,而不是 Obsidian 自带的颜色 - type: class-toggle - - - id: color-accent-light - title: light mode - title.zh: 浅色模式 - type: heading - collapsed: true - level: 2 - - - id: setting-accent-h-light - title: base color - title.zh: 基础颜色 - type: variable-number-slider - default: 35 - min: 0 - max: 360 - step: 5 - - - id: color-active-light - title: highlight color - title.zh: 高亮颜色 - type: class-select - allowEmpty: false - default: color-active-default-light - options: - - label: accent color - value: color-active-default-light - - label: accent color alt - value: color-active-alt-light - - label: custom - value: color-active-custom-light - - - id: setting-color-active-custom-light - title: custom highlight color - title.zh: 自定义高亮颜色 - type: variable-color - format: rgb - default: '#' - opacity: false - - - id: color-more-light - title: more configuration - title.zh: 更多设置 - type: heading - collapsed: true - level: 3 - - - id: setting-accent-s-light - title: accent color saturation - description: s of hsl - title.zh: 高亮颜色饱和度 - description.zh: hsl中的s - type: variable-number-slider - default: 32 - format: '%' - min: 0 - max: 100 - step: 1 - - - id: setting-accent-l-light - title: accent color lightness - description: l of hsl - title.zh: 高亮颜色亮度 - description.zh: hsl中的l - type: variable-number-slider - default: 58 - format: '%' - min: 0 - max: 100 - step: 1 - - - id: color-accent-dark - title: dark mode - title.zh: 暗色模式 - type: heading - collapsed: true - level: 2 - - - id: setting-accent-h-dark - title: base color - title.zh: 基础颜色 - type: variable-number-slider - default: 207 - min: 0 - max: 360 - step: 5 - - - id: color-active-dark - title: highlight color - title.zh: 高亮颜色 - type: class-select - allowEmpty: false - default: color-active-default-dark - options: - - label: accent color - value: color-active-default-dark - - label: accent color alt - value: color-active-alt-dark - - label: custom - value: color-active-custom-dark - - - id: setting-color-active-custom-dark - title: custom highlight color - title.zh: 自定义高亮颜色 - type: variable-color - default: '#' - format: rgb - opacity: false - - - id: color-more-dark - title: more configuration - title.zh: 更多设置 - type: heading - collapsed: true - level: 3 - - - id: setting-accent-s-dark - title: accent color saturation - description: s of hsl - title.zh: 高亮颜色饱和度 - description.zh: hsl中的s - type: variable-number-slider - default: 32 - format: '%' - min: 0 - max: 100 - step: 1 - - - id: setting-accent-l-dark - title: accent color lightness - description: l of hsl - title.zh: 高亮颜色亮度 - description.zh: hsl中的l - type: variable-number-slider - default: 58 - format: '%' - min: 0 - max: 100 - step: 1 - - -*/ -/* @settings - -name: 🌏 Maple Workspace -id: maple-workspace -settings: - - - id: titlebar - title: obsidian titlebar - title.zh: obsidian 标题栏 - type: heading - collapsed: true - level: 2 - - - id: titlebar-button-style - title: styled window buttons - description: for Windows and Linux - title.zh: 窗体按钮美化 - description.zh: 在 Windows 和 Linux 中生效 - type: class-toggle - default: true - - - id: titlebar-colorful - title: colorful titlebar - description: reference from https://github.com/kepano/obsidian-minimal - title.zh: 多彩 Obsidian 标题栏 - description.zh: 参考 https://github.com/kepano/obsidian-minimal - type: class-toggle - - - id: bg - title: wave background - description: will also add in canvas card when card width > 768px - title.zh: 波浪背景图 - description.zh: 白板的卡片宽度 >768px 时编辑卡片也会添加 - type: heading - collapsed: true - level: 2 - - - id: bg-enable - title: background wave image - description: static style reference from https://github.com/hydescarf/Obsidian-Theme-Mado-Miniflow, ❗live style will increase CPU/GPU use - title.zh: 背景波浪图 - description.zh: 静态图(static)参考 https://github.com/hydescarf/Obsidian-Theme-Mado-Miniflow,❗动态图(live)将提高 CPU/GPU 占用率 - type: class-select - allowEmpty: false - default: bg-static - options: - - label: disable - value: bg-default - - label: static - value: bg-static - - label: live - value: bg-live - - - id: setting-bg-color - title: wave color - title.zh: 波浪颜色 - type: variable-themed-color - format: rgb - opacity: false - default-light: '#' - default-dark: '#' - - - id: explorer - title: file explorer - title.zh: 文件管理器 - type: heading - collapsed: true - level: 2 - - - id: explorer-vault-name-position - title: optimize vault name position - title.zh: 优化仓库名称位置 - type: class-toggle - - - id: explorer-nav-decoration - title: styled active file - description: reference from https://github.com/Akifyss/obsidian-border - title.zh: 当前文件美化 - description.zh: 参考 https://github.com/Akifyss/obsidian-border - type: class-toggle - default: true - - - id: explorer-title-wrap - title: title wrap - title.zh: 标题换行 - type: class-toggle - - - id: explorer-item-height - title: item line height - title.zh: 行高 - type: variable-number-slider - default: 1.6 - min: 1.2 - max: 1.8 - step: 0.1 - - - id: explorer-icon - title: enable prefix icon - description: if the tree indent is weird, please collpase all the directory and restart Obsidian - title.zh: 开启前置图标 - description.zh: 如果缩进出现问题,请折叠全部文件夹并重启 Obsidian - type: class-toggle - default: true - - - id: setting-color-dirs - title: dir color - title.zh: 文件夹颜色 - type: variable-themed-color - format: rgb-values - opacity: false - default-light: rgb(245, 180, 0) - default-dark: rgb(245, 180, 0) - - - id: outline-panel - title: outline panel - title.zh: 文档大纲 - type: heading - collapsed: true - level: 2 - - - id: outline-enable - title: enable bullet style - description: reference from https://github.com/pengx17/logseq-dev-theme/blob/main/bullet_threading.css - title.zh: 开启引导线样式 - description.zh: 参考 https://github.com/pengx17/logseq-dev-theme/blob/main/bullet_threading.css - type: class-toggle - default: true - - - id: outline-item-animation - title: enable item animation - title.zh: 开启鼠标经过动画 - type: class-toggle - - - id: status-bar - title: status bar - title.zh: 状态栏 - type: heading - collapsed: true - level: 2 - - - id: status-bar-enable - title: enable status bar style - title.zh: 启用状态栏样式 - type: class-toggle - default: true - - - id: status-bar-style-float - title: round style status bar - title.zh: 圆角风格的状态栏 - type: class-toggle - default: true - - - id: status-bar-style - title: status bar animation - description: ❗last style only valid when turn on “round status bar” - title.zh: 状态栏样式 - description.zh: ❗最后一种样式只在开启“圆角风格的状态栏”才生效 - type: class-select - allowEmpty: false - default: status-bar-default - options: - - label: default - value: status-bar-default - - label: show on hover - value: status-bar-hidden - - label: scroll out on hover - value: status-bar-scroll - - - id: status-bar-style-center - title: center status bar - title.zh: 状态栏居中 - type: class-toggle - - - id: search-internal - title: document search panel - title.zh: 文档内搜索框 - type: heading - collapsed: true - level: 2 - - - id: search-internal-enable - title: enable VSCode style search/replace panel - title.zh: 启用 VSCode 样式的搜索框 - type: class-toggle - default: true - - - id: search-internal-expand-on-focus - title: search/replace input expand on search/replace input focus - title.zh: 文档内搜索框获得焦点时扩大宽度 - type: class-toggle - - - id: search-internal-disable-select-all - title: hide select all button - description: display it maybe seems to be too long - title.zh: 文档内搜索框隐藏选择全部按钮 - description.zh: 显示会过长 - type: class-toggle - default: true - - - id: tab - title: tab - title.zh: 标签页 - type: heading - collapsed: true - level: 2 - - - id: tab-float - title: float tabs style like firefox / Microsoft Edge - title.zh: 仿 Firefox / Microsoft Edge 的标签页 - type: class-toggle - - - id: labeled-nav - title: text labels for primary navigation - description: reference from https://github.com/kepano/obsidian-minimal - title.zh: 主导航栏添加文字 - description.zh: 参考自 https://github.com/kepano/obsidian-minimal - type: class-toggle - - - id: tab-show-close - title: when to show close button on tabs - title.zh: 何时显示标签页的关闭按钮 - type: class-select - allowEmpty: false - default: tab-show-close-default - options: - - label: default - value: tab-show-close-default - - label: on hover all tabs - value: tab-show-close-all - - label: on hover except active tab - value: tab-show-close-part - - - id: tab-title - title: tab title bar - title.zh: 标签页标题栏 - type: heading - level: 3 - - - id: tab-title-bar-round - title: enable tab title bar round style - title.zh: 开启标签页标题栏圆角样式 - type: class-toggle - - - id: tab-title-bar-shadow - title: add shadow for active tab title bar - title.zh: 为当前标签页标题栏添加阴影 - type: class-toggle - - - id: tab-title-bar-text - title: file name on tab title bar - title.zh: 标签页标题栏的文件名 - type: class-select - allowEmpty: false - default: tab-title-bar-text-default - options: - - label: default - value: tab-title-bar-text-default - - label: small size - value: tab-title-bar-text-small - - label: show on hover - value: tab-title-bar-text-hidden - - - id: message - title: tooltip & notice - title.zh: 气泡提示框 & 通知 - type: heading - collapsed: true - level: 2 - - - id: message-tooltip-hide-arrow - title: hide tooltip arrow - title.zh: 隐藏气泡提示框箭头 - type: class-toggle - - - id: message-tooltip-hide - title: always hide tooltip - title.zh: 永久隐藏气泡提示框 - type: class-toggle - - - id: message-modify - title: change tooltip & notice color - title.zh: 修改气泡提示框和消息的颜色 - type: class-toggle - default: true - - - id: setting-message-bg - title: background color - title.zh: 背景色 - type: variable-themed-color - format: hsl-values - opacity: false - default-light: '#' - default-dark: '#' - - - id: setting-message-fg - title: foreground color - title.zh: 前景色 - type: variable-themed-color - format: rgb-values - opacity: false - default-light: '#' - default-dark: '#' - - - id: modal - title: modal & setting panel - title.zh: 弹出框 & 设置面板 - type: heading - collapsed: true - level: 2 - - - id: modal-blur - title: enable modal background blur - description: If there is a delay in scrolling, try turning this option off - title.zh: 开启弹出框背景模糊 - description.zh: 如果滚动时有卡顿,尝试关闭该选项 - type: class-toggle - default: true - - - id: modal-header - title: add header for setting panel - description: better with plugin “setting search”, invalid in mobile - title.zh: 为设置面板添加顶部框 - description.zh: 配合 setting search 插件使用更佳,移动端无效 - type: class-toggle - - - id: setting-modal-header-title - title: set modal header title - title.zh: 设置面板标题 - type: variable-text - default: "'maple 0.7.26'" - - - id: setting-group-title - title: add style for left navigation group title - title.zh: 为左侧选项组标题添加样式 - type: class-toggle - default: true - - - id: setting-nav-decoration - title: styled active nav item - title.zh: 左侧当前设置项美化 - type: class-toggle - default: true - - - id: modal-slider - title: styled slider thumb - title.zh: 滑动条按钮美化 - type: class-toggle - default: true - - - id: modal-toggle - title: styled toggle button - title.zh: 开关按钮美化 - type: class-select - allowEmpty: false - default: modal-toggle-default - options: - - label: default - value: modal-toggle-default - - label: thin - value: modal-toggle-thin - - label: round - value: modal-toggle-round - - - id: modal-animation - title: modal bounce animation - desciption: reference from https://github.com/hydescarf/Obsidian-Theme-Mado-Miniflow - title.zh: 弹出框抖动动画 - desciption.zh: 参考 https://github.com/hydescarf/Obsidian-Theme-Mado-Miniflow - type: class-toggle - default: true - - - id: menu-blur - title: menu blur - title.zh: 菜单模糊 - type: heading - collapsed: true - level: 2 - - - id: menu-normal - title: normal menu - title.zh: 普通菜单 - type: class-toggle - default: true - - - id: menu-suggestion - title: suggestion menu - title.zh: 提示菜单 - type: class-toggle - default: true - - - id: menu-graph - title: graph menu - title.zh: 图谱菜单 - type: class-toggle - default: true - - - id: scrollbar - title: scrollbar - title.zh: 滚动条 - type: heading - collapsed: true - level: 2 - - - id: scrollbar-hide - title: always hide scrollbar - title.zh: 不显示滚动条 - type: class-toggle - - - id: scrollbar-hover - title: scrollbar hover action - title.zh: 鼠标经过时滚动条变化 - type: class-select - allowEmpty: false - default: scrollbar-hover-default - options: - - label: default - value: scrollbar-hover-default - - label: accent - value: scrollbar-hover-accent - - label: expand - value: scrollbar-hover-expand - - - id: scrollbar-movein-animation-enable - title: enable scrollbar animation - description: when disabled, always show scrollbar; when enabled, hide scrollbar when the mouse move outside the container - title.zh: 启用滚动条动画 - description.zh: 关闭时,一直显示滚动条;开启后,鼠标在容器外时隐藏滚动条 - type: class-toggle - default: true - - - id: graph - title: graph - title.zh: 关系图谱 - type: heading - collapsed: true - level: 2 - - - id: setting-graph-node - title: node color - title.zh: 普通节点颜色 - type: variable-themed-color - format: rgb-values - opacity: true - default-light: '#' - default-dark: '#' - - - id: setting-graph-node-unresolved - title: unresolved node color - title.zh: 未连接节点颜色 - type: variable-themed-color - format: rgb-values - opacity: true - default-light: '#' - default-dark: '#' - - - id: setting-graph-node-focus - title: focused node color - title.zh: 聚焦节点颜色 - type: variable-themed-color - format: rgb-values - opacity: true - default-light: '#' - default-dark: '#' -*/ -/* @settings - -name: ✏️ Maple Editor -id: maple-editor -settings: - - - id: bg - title: background - title.zh: 背景 - type: heading - collapsed: true - level: 2 - - - id: setting-editor-bg - title: editor background color - title.zh: 编辑器背景色 - type: variable-themed-color - format: hsl-values - default-light: '#' - default-dark: '#' - - - id: setting-md-container-bg - title: editor container background color - description: quote, code block, table and so on - title.zh: 编辑器容器背景色 - description.zh: 引用、代码块、表格等 - type: variable-themed-color - format: hsl-values - default-light: '#' - default-dark: '#' - - - id: text-line-font - title: text & font & line - title.zh: 文字 & 字体 & 行 - type: heading - collapsed: true - level: 2 - - - id: font-maple - title: use "Maple Mono" as monospace - description: https://github.com/subframe7536/Maple-font - title.zh: 使用 Maple Mono 作为等宽字体 - description.zh: https://github.com/subframe7536/Maple-font - type: class-toggle - default: true - - - id: font-fix-latex - title: fix latex italic absent - description: latex in my vault often wrong rendered, so i make this setting. If wrong rendered, just toggle it - title.zh: 修复 latex 斜体问题 - description.zh: 在我的仓库里经常渲染失败,只能自己打包一份字体进主题了。只要字体不正常,开关一次即可 - type: class-toggle - - - id: font-latex-text - title: use “text font” in non-formula parts of latex - description: ❗only tested in CJK font, maybe not reconcile with latin characters - title.zh: 在 latex 非公式部分使用正文字体 - description.zh: 默认的字体比较丑 - type: class-toggle - - - id: setting-editor-p-spacing - title: editor paragraph spacing (px) - title.zh: 编辑器段落间隔(px) - type: variable-number-slider - default: 4 - format: 'px' - min: 0 - max: 20 - step: 1 - - - id: setting-editor-p-indent - title: editor paragraph indent - description: if 'p-indent' exist in properties.cssclasses, all paragraph will add indent(n times of font size) - title.zh: 编辑器段落缩进 - description.zh: 在文档属性的cssclasses中存在 'p-indent' 类时,会为段落添加缩进(字体大小的倍数) - type: variable-number-slider - default: 2 - min: 0 - max: 4 - step: 0.2 - - - id: setting-line-height - title: editor line height - description: multiple of the text size - title.zh: 编辑器行高 - description.zh: 文字大小的倍数 - type: variable-number-slider - default: 2.1 - min: 1.5 - max: 2.5 - step: 0.1 - - - id: setting-editor-width - title: editor line width (px) - title.zh: 编辑器行宽(px) - type: variable-number-slider - default: 700 - format: 'px' - min: 400 - max: 1000 - step: 50 - - - id: line-indicator-enable - title: enable hover line indicator - description: reference from https://github.com/Akifyss/obsidian-border, need install version>=1.1.9 - title.zh: 启用鼠标经过行指示器 - description.zh: 参考自 https://github.com/Akifyss/obsidian-border, 需要安装版本>=1.1.9 - type: class-toggle - default: true - - - id: line-active-enable - title: enable active line hightlight - title.zh: 启用当前行高亮 - type: class-toggle - default: true - - - id: setting-line-active-color - title: active line color - title.zh: 高亮行颜色 - type: variable-themed-color - format: hex - opacity: true - default-light: '#' - default-dark: '#' - - - id: setting-text-normal - title: editor text color - title.zh: 编辑器文字颜色 - type: variable-themed-color - format: hex - opacity: true - default-light: '#' - default-dark: '#' - - - id: text-highlight - title: highlight - title.zh: 高亮 - type: heading - collapsed: true - level: 3 - - - id: setting-text-highlight-bg - title: highlight text background color - description: The value can be the value of any background attribute in css - title.zh: 文本高亮背景色 - description.zh: 填写的值可以为css中任意 background 属性的值 - type: variable-text - default: 'rgba(255, 208, 0, 0.4)' - - - id: setting-text-highlight-color - title: highlight text color - title.zh: 文本高亮文字颜色 - type: variable-themed-color - format: hex - opacity: true - default-light: '#' - default-dark: '#' - - - id: setting-text-highlight-radius - title: highlight background radius - description: format px - title.zh: 高亮背景色圆角大小 - description.zh: 单位 px - type: variable-number-slider - default: 4 - min: 0 - max: 8 - step: 1 - - - id: text-highlight-all-round - title: keep radius when wrap - description: except when edit - title.zh: 换行时保持圆角 - description.zh: 除了编辑的时候 - type: class-toggle - default: true - - - id: text-highlight-margin - title: add spacing around highlight - title.zh: 增加高亮周围边距 - type: class-toggle - - - id: text-bold - title: bold - title.zh: 粗体 - type: heading - collapsed: true - level: 3 - - - id: setting-text-bold-color - title: bold text color - title.zh: 粗体颜色 - type: variable-themed-color - format: hex - opacity: true - default-light: '#' - default-dark: '#' - - - id: setting-text-bold-style - title: bold style - description: support any css text-decoration property - title.zh: 粗体样式 - description.zh: 支持任何 css 的 text-decoration 属性值 - type: variable-text - default: "underline dotted" - - - id: setting-text-bold-font - title: bold font - title.zh: 粗体字体 - type: variable-text - default: "''" - - - id: text-italic - title: italic - title.zh: 斜体 - type: heading - collapsed: true - level: 3 - - - id: setting-text-italic-color - title: italic text color - title.zh: 斜体颜色 - type: variable-themed-color - format: hex - opacity: true - default-light: '#' - default-dark: '#' - - - id: setting-text-italic-style - title: italic style - description: support any css text-decoration property - title.zh: 斜体样式 - description.zh: 支持任何 css 的 text-decoration 属性值 - type: variable-text - default: "underline dotted" - - - id: setting-text-italic-font - title: italic font - title.zh: 斜体字体 - type: variable-text - default: "''" - - - id: links - title: link - title.zh: 链接 - type: heading - collapsed: true - level: 2 - - - id: link-hover-expand - title: use underline animation on hover - title.zh: 鼠标经过时开启下划线动画 - type: class-toggle - - - id: link-icon - title: add icon before link in editor - title.zh: 编辑器内链接前添加图标 - type: class-toggle - default: true - - - id: link-heading - title: Compatible with heading style - description: keep link color with heading, but keep icon - title.zh: 兼容标题样式 - description.zh: 链接颜色改为标题颜色,保留图标 - type: class-toggle - - - id: link-click-to-edit-in-live-preview - title: click to edit link in Live-Preview - description: ❗will disable hover animation, external link prefix icon will be diabled - title.zh: 实时预览 模式时点击链接进行编辑而不是跳转 - description.zh: ❗鼠标经过动画会消失,外部链接的前置图标会消失 - type: class-toggle - - - id: link-color - title: link color - title.zh: 链接颜色 - type: heading - collapsed: true - level: 3 - - - id: setting-link-internal-color - title: internal link color - title.zh: 内部链接颜色 - type: variable-themed-color - format: rgb-value - opacity: false - default-light: '#' - default-dark: '#' - - - id: setting-link-internal-color-underline - title: internal link underline color - title.zh: 内部链接下划线颜色 - type: variable-themed-color - format: rgb - opacity: false - default-light: '#' - default-dark: '#' - - - id: setting-link-external-color - title: external link color - title.zh: 外部链接颜色 - type: variable-themed-color - format: rgb-value - opacity: false - default-light: '#' - default-dark: '#' - - - id: setting-link-external-color-underline - title: external link underline color - title.zh: 外部链接下划线颜色 - type: variable-themed-color - format: rgb - opacity: false - default-light: '#' - default-dark: '#' - - - id: heading - title: heading - title.zh: 标题 - type: heading - collapsed: true - level: 2 - - - id: fix-line-number - title: fix line number movement - description: will increase '#' size - title.zh: 修复行号的移动 - description.zh: 将增加 '#' 的大小 - type: class-toggle - - - id: heading-level - title: heading level icon - description: add prefix icon for heading, click to collapse title if you open setting “Fold heading” - title.zh: 标题等级图标 - description.zh: 为标题添加前置图标,如果你开启了“折叠图标”选项,点击图标可以收起标题 - type: heading - collapsed: true - level: 3 - - - id: heading-level-enable - title: enable level heading icon - title.zh: 启用标题等级图标 - type: class-toggle - - - id: heading-level-fix - title: always show heading icon - description: highlight on hover - title.zh: 总是显示图标 - description.zh: 鼠标经过时高亮 - type: class-toggle - - - id: heading-level - title: heading style preference - title.zh: 标题样式设置 - type: heading - collapsed: true - level: 3 - - - id: heading-h1-center - title: center h1 - title.zh: h1 居中 - type: class-toggle - default: true - - - id: heading-underline-thin - title: thinner heading underline - title.zh: 标题下划线变细 - type: class-toggle - - - id: heading-h6-variant - title: set font small-caps for h6 - description: always capital style - title.zh: 添加 h6 small-caps - description.zh: 全大写 - type: class-toggle - default: true - - - id: heading-color - title: heading color - title.zh: 标题颜色 - type: heading - collapsed: true - level: 3 - - - id: heading-color-style - title: heading color style - title.zh: 标题颜色样式 - type: class-select - allowEmpty: false - default: heading-color-colorful - options: - - label: text color - value: heading-color-base - - label: accent color - value: heading-color-accent - - label: colorful - value: heading-color-colorful - - - id: heading-color-custom - title: custom heading color - title.zh: 自定义标题颜色 - type: heading - level: 4 - - - id: setting-h1-color - title: h1 color - title.zh: 标题 1 颜色 - type: variable-themed-color - format: hex - opacity: false - default-light: '#' - default-dark: '#' - - - id: setting-h2-color - title: h2 color - title.zh: 标题 2 颜色 - type: variable-themed-color - format: hex - opacity: false - default-light: '#' - default-dark: '#' - - - id: setting-h3-color - title: h3 color - title.zh: 标题 3 颜色 - type: variable-themed-color - format: hex - opacity: false - default-light: '#' - default-dark: '#' - - - id: setting-h4-color - title: h4 color - title.zh: 标题 4 颜色 - type: variable-themed-color - format: hex - opacity: false - default-light: '#' - default-dark: '#' - - - id: setting-h5-color - title: h5 color - title.zh: 标题 5 颜色 - type: variable-themed-color - format: hex - opacity: false - default-light: '#' - default-dark: '#' - - - id: setting-h6-color - title: h6 color - title.zh: 标题 6 颜色 - type: variable-themed-color - format: hex - opacity: false - default-light: '#' - default-dark: '#' - - - id: heading-size - title: heading size - description: compare to normal text - title.zh: 标题大小 - description.zh: 相对于正文字体 - type: heading - collapsed: true - level: 3 - - - id: setting-h1-size - title: h1 font size - title.zh: 标题 1 字体大小 - type: variable-number-slider - default: 1.6 - min: 1 - max: 2.4 - step: 0.1 - - - id: setting-h2-size - title: h2 font size - title.zh: 标题 2 字体大小 - type: variable-number-slider - default: 1.5 - min: 1 - max: 2.4 - step: 0.1 - - - id: setting-h3-size - title: h3 font size - title.zh: 标题 3 字体大小 - type: variable-number-slider - default: 1.4 - min: 1 - max: 2.4 - step: 0.1 - - - id: setting-h4-size - title: h4 font size - title.zh: 标题 4 字体大小 - type: variable-number-slider - default: 1.3 - min: 1 - max: 2.4 - step: 0.1 - - - id: setting-h5-size - title: h5 font size - title.zh: 标题 5 字体大小 - type: variable-number-slider - default: 1.2 - min: 1 - max: 2.4 - step: 0.1 - - - id: setting-h6-size - title: h6 font size - title.zh: 标题 6 字体大小 - type: variable-number-slider - default: 1.1 - min: 1 - max: 2.4 - step: 0.1 - - - id: heading-underline - title: heading underline - description: with line-gredient - title.zh: 标题下划线 - description.zh: 渐变色 - type: heading - collapsed: true - level: 3 - - - id: heading-h1-underline - title: add underline for h1 - title.zh: 添加 h1 下划线 - type: class-toggle - - - id: heading-h2-underline - title: add underline for h2 - title.zh: 添加 h2 下划线 - type: class-toggle - default: true - - - id: heading-h3-underline - title: add underline for h3 - title.zh: 添加 h3 下划线 - type: class-toggle - - - id: heading-h4-underline - title: add underline for h4 - title.zh: 添加 h4 下划线 - type: class-toggle - - - id: heading-h5-underline - title: add underline for h5 - title.zh: 添加 h5 下划线 - type: class-toggle - - - id: heading-h6-underline - title: add underline for h6 - title.zh: 添加 h6 下划线 - type: class-toggle - - - id: heading-font - title: heading font - title.zh: 标题字体 - type: heading - collapsed: true - level: 3 - - - id: setting-h1-font - title: h1 font - title.zh: 标题 1 字体 - type: variable-text - default: "''" - - - id: setting-h2-font - title: h2 font - title.zh: 标题 2 字体 - type: variable-text - default: "''" - - - id: setting-h3-font - title: h3 font - title.zh: 标题 3 字体 - type: variable-text - default: "''" - - - id: setting-h4-font - title: h4 font - title.zh: 标题 4 字体 - type: variable-text - default: "''" - - - id: setting-h5-font - title: h5 font - title.zh: 标题 5 字体 - type: variable-text - default: "''" - - - id: setting-h6-font - title: h6 font - title.zh: 标题 6 字体 - type: variable-text - default: "''" - - - id: hr - title: hr - title.zh: 分隔行 - type: heading - collapsed: true - level: 2 - - - id: hr-enable - title: enable hr style - title.zh: 开启分割线样式 - type: class-toggle - default: true - - - id: setting-hr-icon - title: set icon in the center of hr - title.zh: 分割行中部图标 - type: variable-text - default: "'⭐'" - - - id: table - title: table - title.zh: 表格 - type: heading - collapsed: true - level: 2 - - - id: table-colorful - title: colorful table - description: accent header and line color - title.zh: 多彩表格 - description.zh: 添加表头和行的颜色 - type: class-toggle - default: true - - - id: setting-table-header-text - title: header text color - title.zh: 表头前景色 - type: variable-themed-color - format: hex - opacity: true - default-light: '#' - default-dark: '#' - - - id: setting-table-header-bg - title: header background color - title.zh: 表头背景色 - type: variable-themed-color - format: hex - opacity: true - default-light: '#' - default-dark: '#' - - - id: setting-table-line-bg - title: alt line color - title.zh: 交错行背景 - type: variable-themed-color - format: hex - opacity: true - default-light: '#' - default-dark: '#' - - - id: embed - title: embed - title.zh: 内嵌文档 - type: heading - collapsed: true - level: 2 - - - id: embed-enable - title: enable embed file style - title.zh: 启用内嵌文档样式 - type: class-toggle - default: true - - - id: embed-title-right-top - title: move embed title to right top - description: visiable on hover, disabled when alias is '#', Example ![[FileName|#]] - title.zh: 内嵌文档标题移至右上角 - description.zh: 鼠标经过时显示;别名为'#'时禁用,例:![[文件名|#]] - type: class-toggle - default: true - - - id: image - title: image - title.zh: 图片 - type: heading - collapsed: true - level: 2 - - - id: image-alt - title: add alt text below and center the image - description: example ![[image.jpg|alt text]] - title.zh: 在图片底部添加提示文本并居中图片 - description.zh: 样例 ![[图片.jpg|提示文本]] - type: class-toggle - default: true - - - id: image-zoom - title: click to zoom out image - description: invalid in source view or Live-Preview - title.zh: 鼠标按下时放大图片 - description.zh: 在 源码模式 或者 实时预览 模式不生效 - type: class-toggle - default: true - - - id: image-dark-hover - title: decrease brightness in dark mode - description: hover will increase brightness - title.zh: 黑暗模式下降低图片亮度 - description.zh: 鼠标经过时会增加亮度 - type: class-toggle - default: true - - - id: quote - title: quote - title.zh: 引言 - type: heading - collapsed: true - level: 2 - - - id: quote-theme - title: enable quote theme - description: with thick guide line - title.zh: 启用引言块主题 - description.zh: 宽引导线 - type: class-toggle - default: true - - - id: quote-mark - title: add front quote mark in preview mode - title.zh: 阅读模式 引言块添加前置引号 - type: class-toggle - - - id: quote-outline-style - title: Preview mode outline style - title.zh: 阅读模式 外部样式 - type: class-select - allowEmpty: false - default: quote-shadow - options: - - label: none - value: quote-none - - label: border - value: quote-border - - label: shadow - value: quote-shadow - - - id: list - title: list - title.zh: 列表 - type: heading - collapsed: true - level: 2 - - - id: list-enable - title: enable list style - description: ❗no support for list or task items inside callout - title.zh: 启用列表样式 - description.zh: ❗精力有限,不打算适配 callout 中的列表或者代办项 - type: class-toggle - default: true - - - id: setting-list-marker - title: list marker color - title.zh: 列表标号颜色 - type: variable-themed-color - format: hex - opacity: false - default-light: '#' - default-dark: '#' - - - id: setting-list-marker-alt - title: list marker alt color - title.zh: 列表标号颜色 2 - type: variable-themed-color - format: hex - opacity: false - default-light: '#' - default-dark: '#' - - - id: list-checkbox - title: checkbox - title.zh: 勾选框 - type: heading - collapsed: true - level: 3 - - - id: setting-list-checkbox-color - title: checkbox marker color - title.zh: 勾选框颜色 - type: variable-themed-color - format: hex - opacity: false - default-light: '#' - default-dark: '#' - - - id: setting-list-checkbox-color-hover - title: checkbox marker hover color - title.zh: 勾选框鼠标经过色 - type: variable-themed-color - format: hex - opacity: false - default-light: '#' - default-dark: '#' - - - id: setting-list-checkbox-border - title: checkbox marker border - title.zh: 勾选框边框 - type: variable-themed-color - format: hex - opacity: false - default-light: '#' - default-dark: '#' - - - id: code - title: code - title.zh: 代码 - type: heading - collapsed: true - level: 2 - - - id: setting-code-inline - title: inline code color - title.zh: 行内代码前景色 - type: variable-themed-color - format: hex - opacity: false - default-light: '#' - default-dark: '#' - - - id: setting-code-bg - title: code block background color - title.zh: 代码块背景色 - type: variable-themed-color - format: hex - opacity: false - default-light: '#' - default-dark: '#' - - - id: code-line-number - title: add code block line number in live Preview mode - description: if the code block lines are too large, the line number will have error - title.zh: 为 实时预览模式 代码块添加行号 - description.zh: 如果代码块行数太多,行号会出现错误 - type: class-toggle - default: true - - - id: code-language - title: add code block language indicator in Preview mode - title.zh: 为 阅读模式 代码块添加语言标识 - type: class-toggle - default: true - - - id: code-nowrap - title: no wrap in Preview mode - title.zh: 阅读模式 代码块不换行 - type: class-toggle - default: true - - - id: setting-code-ligature - title: monospace font feature - description: if you use “Maple Mono” as monospace, recommend to set 'calt','cv02' - title.zh: 等宽字体字体特性 - description.zh: 如果你使用“Maple Mono”作为等宽字体,推荐设置为 'calt','cv02' - type: variable-text - default: "'calt'" - - - id: code-preview-bg - title: enable codeblock background in Preview mode - description: need install version >= 1.1.9 - title.zh: 在 阅读模式 开启代码块背景 - description.zh: 需要安装程序版本 >= 1.1.9 - type: class-toggle - - - id: setting-code-bg-radius - title: code block border radius - title.zh: 代码块背景圆角 - type: variable-number-slider - default: 12 - format: 'px' - min: 0 - max: 20 - step: 1 - - - id: setting-code-bg-outer - title: custom codeblock background in Preview mode - description: need install version >= 1.1.9, image is supported(eg. 'url("/your/image/uri")'), it can be all the css value that supported by background-image - title.zh: 修改 阅读模式 代码块背景 - description.zh: 需要安装程序版本 >= 1.1.9,支持图片('url("图片地址")'),可以是 css background-image 支持的所有的值 - type: variable-text - default: "''" - - - id: code-mac-style-header - title: add mac style code block header in Preview mode - description: no code block border - title.zh: 为 阅读模式 代码块添加mac的标题栏 - description.zh: 没有代码块边框 - type: class-toggle - - - id: setting-code-language-color - title: language indicator color - title.zh: 语言标识颜色 - type: variable-themed-color - format: hex - opacity: false - default-light: '#' - default-dark: '#' - - - id: code-theme - title: use theme's color schema - title.zh: 使用主题的代码高亮 - type: class-toggle - default: true - - - id: tag - title: tag - title.zh: 标签 - type: heading - collapsed: true - level: 2 - - - id: tag-click-to-edit - title: click to edit tags in Live-Preview mode - description: click '#' to jump - title.zh: 点击标签进行编辑 - description.zh: 点击'#'跳转 - type: class-toggle - - - id: tag-style - title: tag style - title.zh: 标签样式 - type: class-select - allowEmpty: false - default: tag-outline - options: - - label: default - value: tag-default - - label: plain - value: tag-plain - - label: outline - value: tag-outline - - - id: setting-tag-bg - title: tag background color - title.zh: 标签背景颜色 - type: variable-themed-color - format: hex - opacity: false - default-light: '#' - default-dark: '#' - - - id: tag-outline-setting - title: outline style setting - title.zh: 边框模式设置 - type: heading - collapsed: true - level: 3 - - - id: setting-tag-color - title: tag text color - title.zh: 标签文字颜色 - type: variable-themed-color - format: hex - opacity: false - default-light: '#' - default-dark: '#' - - - id: setting-tag-border - title: tag border color - title.zh: 标签边框颜色 - type: variable-themed-color - format: hex - opacity: false - default-light: '#' - default-dark: '#' - - - id: canvas - title: canvas - title.zh: 画布 canvas - type: heading - collapsed: true - level: 2 - - - id: canvas-group-hide - title: hide left canvas control buttons - description: show on hover - title.zh: 隐藏左侧的控制按钮 - description.zh: 鼠标移入时显示 - type: class-toggle - - - id: canvas-center - title: center text in card when blur focus - title.zh: 卡片失去焦点时居中文本 - type: class-toggle - - - id: pdf - title: pdf - type: heading - collapsed: true - level: 2 - - - id: pdf-dark-hover - title: decrease brightness in dark mode - description: hover will increase brightness - title.zh: 黑暗模式下降低图片亮度 - description.zh: 鼠标经过时会增加亮度 - type: class-toggle - default: true - - - id: prop - title: property - title.zh: 属性 property - type: heading - collapsed: true - level: 2 - - - id: prop-outline - title: add outlint for property panel - title.zh: 属性面板添加边框 - type: class-toggle - default: true -*/ -/* @settings - -name: 🔌 Maple Plugin -id: maple-plugin -settings: - - - id: calendar - title: calendar - title.zh: 日历 - type: heading - collapsed: true - level: 2 - - - id: calendar-weekend - title: highlight weekend - title.zh: 突显周末 - type: class-toggle - default: true - - - id: calendar-swap-year-month - title: swap year & month - title.zh: 交换年和月的位置 - type: class-toggle - - - id: setting-calendar-year-suffix - title: year suffix - title.zh: 年份后缀 - type: variable-text - default: "'年'" - - - id: setting-calendar-max-width - title: max width - description: support any css max-width property - title.zh: 最大宽度 - description.zh: 支持任何 css 的 max-width 属性值 - type: variable-text - default: "500px" - - - id: kanban - title: kanban - type: heading - collapsed: true - level: 2 - - - id: setting-kanban-item-color - title: kanban item font color - title.zh: kanban 项 文字颜色 - type: variable-themed-color - format: hex - opacity: true - default-light: '#' - default-dark: '#' - - - id: setting-kanban-item-bg - title: kanban item background color - title.zh: kanban 项 背景色 - type: variable-themed-color - format: hex - opacity: true - default-light: '#' - default-dark: '#' - - - id: setting-kanban-board-bg - title: kanban board backgound color - title.zh: kanban 版面 背景色 - type: variable-themed-color - format: hex - opacity: true - default-light: '#' - default-dark: '#' - - - id: dv - title: DataView(WIP) - title.zh: DataView(待完工) - type: heading - collapsed: true - level: 2 - - - id: dv-enable - title: enable dataview style - description: need install version >= 1.1.9 - title.zh: 启用 dataview 样式 - description.zh: 需要安装程序版本 >= 1.1.9 - type: class-toggle -*/ -.mod-settings .vertical-tab-content > .setting-item:nth-child(2) > .setting-item-control > input[type=color] { - position: relative; -} -.mod-settings .vertical-tab-content > .setting-item:nth-child(2) > .setting-item-control > input[type=color]::before { - content: "only change Hue!"; - font-family: var(--font-interface); - position: absolute; - width: auto; - left: calc((var(--swatch-width) + var(--size-4-12) * 2 + 120%) * -1); - top: 50%; - transform: translateY(-50%); -} - -:is(.style-settings-import, .style-settings-export, .style-settings-copy, .style-settings-download, .style-settings-import-label) { - transition: var(--animation); - text-decoration: none !important; - height: var(--input-height); - font-size: var(--font-ui-small); - font-family: inherit; - font-weight: var(--input-font-weight); - color: var(--text-normal) !important; - line-height: var(--line-height-normal); - padding: 0 0.8em; - max-width: 100%; - box-sizing: border-box; - margin: 0; - border: 0; - box-shadow: var(--input-shadow); - border-radius: var(--input-radius); - background-color: var(--interactive-normal); -} -:is(.style-settings-import, .style-settings-export, .style-settings-copy, .style-settings-download, .style-settings-import-label):hover { - box-shadow: var(--input-shadow-hover); - background-color: var(--interactive-hover); -} - -.themed-color-wrapper > .theme-light { - background-color: #eee; -} -.themed-color-wrapper > .theme-dark { - background-color: #111; -} -.themed-color-wrapper .pickr-reset > button { - padding: var(--size-2-3); -} - -.pickr .pcr-button::before, .pickr .pcr-button::after { - border-radius: var(--radius-s); -} - -.style-settings-container .setting-item:is([data-id^=setting-accent-h]) input.slider { - height: 0.8em; - --hue-slider-sat: 70%; - --hue-slider-br: 60%; - background: linear-gradient(to right, hsl(0, var(--hue-slider-sat), var(--hue-slider-br)), hsl(30, var(--hue-slider-sat), var(--hue-slider-br)), hsl(60, var(--hue-slider-sat), var(--hue-slider-br)), hsl(90, var(--hue-slider-sat), var(--hue-slider-br)), hsl(120, var(--hue-slider-sat), var(--hue-slider-br)), hsl(150, var(--hue-slider-sat), var(--hue-slider-br)), hsl(180, var(--hue-slider-sat), var(--hue-slider-br)), hsl(210, var(--hue-slider-sat), var(--hue-slider-br)), hsl(240, var(--hue-slider-sat), var(--hue-slider-br)), hsl(270, var(--hue-slider-sat), var(--hue-slider-br)), hsl(300, var(--hue-slider-sat), var(--hue-slider-br)), hsl(330, var(--hue-slider-sat), var(--hue-slider-br)), hsl(360, var(--hue-slider-sat), var(--hue-slider-br))); - border-radius: var(--size-2-1); -} -.style-settings-container .setting-item:is([data-id^=setting-accent-h]) .setting-item-control::before { - content: " "; - font-size: 0.7em; - text-align: center; - white-space: pre-wrap; - height: 1.6em; - width: 1.6em; - color: var(--text-normal); - background-color: hsl(var(--setting-accent-h-light, 116), 32%, 58%); - position: relative; - right: 1em; - border-radius: var(--radius-s); -} -.style-settings-container .setting-item[data-id=setting-accent-h-dark] .setting-item-control::before { - background-color: hsl(var(--setting-accent-h-dark, 207), 32%, 58%); -} - -/* hide option */ -body:not(.line-active-enable) .setting-item[data-id=setting-line-active-color], -body:not(.calendar-swap-year-month) .setting-item[data-id=setting-calendar-year-suffix], -body:not(.quote-theme) .setting-item:is([data-id=quote-mark], [data-id=quote-shadow]), -body:not(.scrollbar-smooth) .setting-item[data-id=scrollbar-smooth-editor], -body.bg-default .setting-item[data-id=setting-bg-color], -body.scrollbar-hide .setting-item:is([data-id*=scrollbar-hover], [data-id=scrollbar-movein-animation], [data-id=scrollbar-gutter]), -body:not(.status-bar-enable) .setting-item[data-id*=status-bar-style], -:is(body.status-bar-scroll, body:not(.status-bar-style-float)) .setting-item[data-id=status-bar-style-center], -body:not(.tab-title-bar-round) .setting-item[data-id=tab-title-bar-shadow], -body:not(.loading-text) .setting-item[data-id=loading-text-content], -body:not(.explorer-icon) .setting-item[data-id=setting-color-dirs], -body:not(.search-internal-enable) .setting-item:is([data-id=search-internal-expand-on-focus], [data-id=search-internal-disable-select-all]), -body:not(.color-use-custom) .setting-item[data-id*=color-accent-], -body:not(.list-enable) .setting-item:is([data-id*=setting-list-], [data-id=list-checkbox]), -body:not(.code-language) .setting-item[data-id=setting-code-language-color], -body:not(.code-preview-bg) .setting-item[data-id=setting-code-bg-outer], -body:not(.modal-header) .setting-item[data-id=setting-modal-header-title], -body:not(.color-use-custom) .setting-item[data-id^=accent-hue], -body:not(.color-active-custom-light) .setting-item[data-id=setting-color-active-custom-light], -body:not(.color-active-custom-dark) .setting-item[data-id=setting-color-active-custom-dark], -body:not(.message-modify) .setting-item[data-id^=setting-message], -body:not(.heading-level-enable) .setting-item[data-id^=heading-level-fix], -body:not(.heading-color-colorful) .setting-item[data-id=heading-color-custom], -body:not(.table-colorful) .setting-item[data-id^=setting-table], -body:not(.embed-enable) .setting-item[data-id^=embed-title], -body:not(.hr-enable) .setting-item[data-id^=setting-hr-icon], -body:not(.tag-outline) .setting-item[data-id=tag-outline-setting], -body:not(.tag-colored) .setting-item[data-id=setting-tag-bg] { - display: none; -} -body:not(.line-active-enable) .setting-item[data-id=setting-line-active-color] + .style-settings-container, -body:not(.calendar-swap-year-month) .setting-item[data-id=setting-calendar-year-suffix] + .style-settings-container, -body:not(.quote-theme) .setting-item:is([data-id=quote-mark], [data-id=quote-shadow]) + .style-settings-container, -body:not(.scrollbar-smooth) .setting-item[data-id=scrollbar-smooth-editor] + .style-settings-container, -body.bg-default .setting-item[data-id=setting-bg-color] + .style-settings-container, -body.scrollbar-hide .setting-item:is([data-id*=scrollbar-hover], [data-id=scrollbar-movein-animation], [data-id=scrollbar-gutter]) + .style-settings-container, -body:not(.status-bar-enable) .setting-item[data-id*=status-bar-style] + .style-settings-container, -:is(body.status-bar-scroll, body:not(.status-bar-style-float)) .setting-item[data-id=status-bar-style-center] + .style-settings-container, -body:not(.tab-title-bar-round) .setting-item[data-id=tab-title-bar-shadow] + .style-settings-container, -body:not(.loading-text) .setting-item[data-id=loading-text-content] + .style-settings-container, -body:not(.explorer-icon) .setting-item[data-id=setting-color-dirs] + .style-settings-container, -body:not(.search-internal-enable) .setting-item:is([data-id=search-internal-expand-on-focus], [data-id=search-internal-disable-select-all]) + .style-settings-container, -body:not(.color-use-custom) .setting-item[data-id*=color-accent-] + .style-settings-container, -body:not(.list-enable) .setting-item:is([data-id*=setting-list-], [data-id=list-checkbox]) + .style-settings-container, -body:not(.code-language) .setting-item[data-id=setting-code-language-color] + .style-settings-container, -body:not(.code-preview-bg) .setting-item[data-id=setting-code-bg-outer] + .style-settings-container, -body:not(.modal-header) .setting-item[data-id=setting-modal-header-title] + .style-settings-container, -body:not(.color-use-custom) .setting-item[data-id^=accent-hue] + .style-settings-container, -body:not(.color-active-custom-light) .setting-item[data-id=setting-color-active-custom-light] + .style-settings-container, -body:not(.color-active-custom-dark) .setting-item[data-id=setting-color-active-custom-dark] + .style-settings-container, -body:not(.message-modify) .setting-item[data-id^=setting-message] + .style-settings-container, -body:not(.heading-level-enable) .setting-item[data-id^=heading-level-fix] + .style-settings-container, -body:not(.heading-color-colorful) .setting-item[data-id=heading-color-custom] + .style-settings-container, -body:not(.table-colorful) .setting-item[data-id^=setting-table] + .style-settings-container, -body:not(.embed-enable) .setting-item[data-id^=embed-title] + .style-settings-container, -body:not(.hr-enable) .setting-item[data-id^=setting-hr-icon] + .style-settings-container, -body:not(.tag-outline) .setting-item[data-id=tag-outline-setting] + .style-settings-container, -body:not(.tag-colored) .setting-item[data-id=setting-tag-bg] + .style-settings-container { - display: none; -} - -/* 参考 https://github.com/damiankorcz/Prism-Theme */ -div.workspace-leaf-content[data-type=style-settings] div.view-content { - padding: var(--file-margins); -} -body.is-mobile div.workspace-leaf-content[data-type=style-settings] div.view-content { - padding: var(--size-4-8) var(--size-4-4); -} -body:not(.is-mobile) div.workspace-leaf-content[data-type=style-settings] .view-content .style-settings-container .setting-item:not(.setting-item-heading) { - flex-direction: row; -} - -.setting-item.setting-item-heading.style-settings-heading { - padding: var(--size-4-2); - margin: var(--size-4-1) 0; - border-radius: var(--radius-m); - padding-left: var(--size-4-3); -} -.setting-item.setting-item-heading.style-settings-heading:hover { - color: var(--highlight-text-normal); - background-color: var(--background-modifier-hover); -} - -.style-settings-container { - padding-bottom: unset; -} -.style-settings-container .setting-item { - padding: var(--size-4-2); - padding-left: var(--size-4-6); -} -.is-phone .style-settings-container .setting-item { - margin-top: unset; -} - -.style-settings-heading[data-level="0"] { - background-color: var(--md-container-bg); - border: 1px solid hsla(var(--accent-h), var(--accent-s), calc(var(--accent-l) + 4%), 16%) !important; -} -.style-settings-heading[data-level="0"] + .style-settings-container .style-settings-collapse-indicator { - margin-left: unset; -} - -:is(.setting-item.setting-item-heading.style-settings-heading, .style-settings-container .style-settings-heading) { - border-bottom: unset; -} - -.setting-item-heading .setting-item-description { - padding-left: var(--size-4-4); -} - -.setting-item.setting-item-heading.is-collapsed { - margin-bottom: unset; -} - -.style-settings-container > .setting-item:last-of-type { - padding-bottom: unset; - margin-bottom: var(--size-4-4); -} - -:is(.style-settings-heading[data-level="0"] + .style-settings-container, .style-settings-container) { - padding-left: var(--size-2-1); - margin-left: var(--size-4-4); - border-left: var(--nav-indentation-guide-width) solid var(--nav-indentation-guide-color); - transition: var(--animation); -} -:is(.style-settings-heading[data-level="0"] + .style-settings-container, .style-settings-container):hover { - border-left-color: var(--accent-active); -} - -body.modal-item-animation .style-settings-heading { - transition: var(--animation); -} -body.modal-item-animation .style-settings-heading:hover { - transition: none; -} - -/* #endregion [style settings] */ -/* #region [global] */ -/* #region built-in fonts */ -@font-face { - font-family: "EMBED-TEX-I"; - font-display: swap; - font-style: normal; - src: url("data:application/font-woff;base64,d09GRk9UVE8AAEugAAsAAAAAZxQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABDRkYgAAABCAAARLIAAFuCYyw4wkZGVE0AAEW8AAAAHAAAABxdKvr6R0RFRgAARdgAAAAdAAAAIACRAARPUy8yAABF+AAAAFIAAABgQXBYWGNtYXAAAEZMAAAA4QAAAdLri2x0aGVhZAAARzAAAAAzAAAANg3QmDhoaGVhAABHZAAAACAAAAAkBBUDV2htdHgAAEeEAAABTAAAAZDkBQz2bWF4cAAASNAAAAAGAAAABgBkUABuYW1lAABI2AAAArIAAAZOdv3Pk3Bvc3QAAEuMAAAAEwAAACD/hgAyeJysvAdgHOW1NryLWPFeAiJYWXLTZCCQBAihEwjVFAMGYxvbsnGXbVm9S1u1vc3MmZmd7UUradWrVS3bcgc3iunNgAk9IYRcUnnXjO///WdWgmsIyb35vssaZCTtzLynPOd5znveVavOPFOlVqu/s7CosXRBkWG98vXKBxqLKss2qdRnqNSqKzLfVmXuU2fuPyPzQE5mwZmb5erPR08WaX6ofu28H6pU3/7hGW3n/1B1xQ9XzZ+julp5A1Gdq5qj+q7qR6q5qotUP1FdqbpadZ3qJtVtqnmq+aoHVY+oClWPqtapNqpKVFWqGlWdyqAyqSwql4pRgSqoiqjiqhZVWtWrGlSNqXao9qkOq46pXlL9H/UcdYH6kqbqsquvnnf1fUVVVUX3FFc2Fi0rLW4seqioauPmopVli8uWlpVUFS2vbSirrKleXFq2uKFsUVVxSVFRZW1p0Ub8zRLljZuVNxbP/JIJv4l/GpXLlNU0FlUU1dYWVWavV91kKKupKttUX1NdW1ZfWtOgXPua7H8bi5qaZt5fW1q2qbQM/16j3Cd7mWvwe9dk//ca5XGvmz/75Qb8cu/8+ffMfLl35sv8u2tqjfVlJaWNF/5s02UXXnv11Tdfee3V11x94T3FeKfqC5duKiuu3lT88wsfqN70i29w0+nferimvqqoUoX/qFXfVl2s+rHqEtWl6IOfqn6mukx1ueoK1c/RH79QXYU+uUZ1LfrletUNqhtVv0T/3Kz6leoW1V2qu1X3qO5FT92nul/1gGoBeuwh1ULVw6pFqsWqJei9paplquXowxWqlejHVarVap+aUbNqTg1qXi2oRbVfLakD6qA6pA6rI+qoOqaOqxPqpLpFnVK3quLqNnW7Oq3uUHequ9Td6h51r7pP3a8eUA+qh9TD6q3qEfWoekw9rp5QbVYC6kIMo9XqW89YnnNhzqeaS3M3nNVIPv+36bOXf+vFc7rP/XPe78578NuLznfOOfmds7TnaP/zgtf+/dLvRb4f/8HCH175o3N/tKOgZe6WC3910XkX51587Mf8JYcuXfqTvT996qe/uYxctv/yiisW/vy8K7975ftXnXX196554Nrl1xZed+l18esNN8y/8dAvj980fPPELefcGrjttdsfu2PXnQ3zlt514d0X3v0f94zee/P8n88fuc93v/aB+x7YtODHC/Y9WP9Q3kORhdUPFy1avJhfEn3k6aWfLp+z/E+FycJthc8UnoC9mXv3qvfiPzl7L6CXZwbky3P3ntJr8bun7j0rL496T27Qq+l1coU2ADz4xYCY2fj5BRCEiDNiBze4fayXYU4t+U/q0Ps8nA98xBb2RAvyaDlM01t2Zdbo1VMXhHLbha0whq8JdiskgPf7W4UAL4EIIa9ggQahKQytBPy8JAZ4f6q/bYhsPUydEJMv1zia67gajujBx2hYhmMYh1cvQNBNYrn9wi7YBbthkh2HJIBy1RDvBwEiHjBAA2wRfGHikwpPajkR/D6RFYkptxFYcNucVvmjU285HE0VFebVLLHMXN3dCB7w+hmRIZlqGtdya2BpwSX8h/TnmhO0IJwEhue65XEwkzzagAvcPk5bpudkfvtZ4Wf5f6TbThItNMoFp8YYn8/tZRysnatlm4B4cvXAcx4d6wYfMODjWXwUNgh0OdBvw5sQ5J8LPDOwZxeZmuzaCzvh1Yf33RAjEVHzQvKlXQOPkfyPYulgF3TCtuau+q667tKWNUE3L1/By2fBPbAEOM7HcoyvmTDNAAIjeHhuGMgA18uDk9D//KUWGtz1lvra1YVbljttrBfuAPIrGKRzNN2fBPsFUfT7hSgvwjZ+Gt7meAiyE47uUlhH8v+4XH5OC5feeM+vnG6uBh6Gq3gOQAL+eTrISzz/FDwO22AUAhzZ5R7dBIvQMPc1TZ88b+ecvX/LOLZvpOr8j07OzTRp8/944dn5H/XSM6V2kIjkFtwFHmhu1rhcRkOzRd/k9bHoGHOXJ1DbU57aGPTwOmiGDVDhKncQWV1yzZ1Lrlk1r+4mfPYmoUnSdclnf3I1vQjQLGJngJ7b99e/DdGz8Yl5fzYEgl7eDCYA8Joarr/nltsqqu11nhpYDZtjlR1kxdaGPXACIhDlQ6HX+n43fHjyxSOPvTAwlpyKjAL5zd775DPm5tGdsCvz3rT65NJPc+jkP/BunXIPHevC4McV8BzPEsHr5D4BQnOAFvIJQfNO4vWpZ58/dGTbC22vhUfFLhgH+u/3fnBJV20wyckVvHwzVADLEfSi12dhrMDxjJh14qwPM9fL12lhi6fYsqzu4polq1dv2LC89iGHg3PC3XAD3hdd4qcXZ54SJCJKkhjB3BrhRwBfXAB+4zz0CPwEPbMOQ3Zs+h0dLcQ1PfxMzsmHM4Va8Agg+TCbEph/mJViDy3FBJd8IiOSU/ty3T6e85m9xmzODeb2cmlWYkXgMY7Bg+bYybi/MEcd2zhrDnK6PURPA9CngPZCGERBkv5Kg/hLIhNgBOITdOBjGVyBo+lR+dySdQ/oNlmaODkPrpmJNPFJKgR7yP7cY5DiWtxJj+QAHdg4u6fJZwKfhLnKQwziyhVFIgq8f4hqyTD9d403KIgmaAQ/4zN6TV6z19G4YhN3JxBnbn0jD3NBOEpdgl+QRFESJD4Mr/J/hg6uz7PX1lIFj4DZUwR6kvcZGq1r+g+K0eZktozSByY2P5N/ii4UtI/BQdjGklRuIMAxUouUZjl3kNTnboQyweVXshwwEhOHW18gQzT/cdA8ASEu6W31Bp34WDbW7NV7DTwX8nxpfEF6Cm3jR6zyo21sucrDew2OYqfebLHbLZ5Gn5Ozw1qOLANcpab1xeQRnscFCDMLeIGnZ+IK+m1D1kQ9FIKJMzBNhLNxHsVXX3Ezyf/8a54e/V/wtIBXiAGZgin+AGDAiU3TPh01TGcuOA0PdtFXm7RvwPG+Hdv8ol8ELmjtqYq5Sb5JYAVOwCDx97e/mTwY241rC/jROUG+VWjBTPf5pVbCB/gAFg4MHjuUQwW3GnN6BWwSENo9HuB9Fm+TIOACxnKf5KIsOMDdcBXjJPm7GlfdX36PAsa/lB4ZqTps7XX3wQ5I8kk+3EnvfZ3OpT88PJP/v4G994F8Bsnfg5i1638Ds4h8Oz37x/QXWBh3YzxNTNPYTvVJ+eTt2i1Qyi6GRVAibAILIjmL2eAzgAscAmxV8l8AOwGnu0Z3g+kByzJgCcfIl4JGLnCDMJfn44+ljvXSM8SIIIYTMW4X34JLwlItCKI/KWJVxKLHShxvg02wEevZGjTXRjQd+ozzMXi75pmiQYTTAOefV7EZh7v8XByxfxu/GyvwHhhjSRITATh/AhOB9YRIZW4VrxN8AkaGoCRC8sm2VzExf0Dx6T/ZDdxcYBbIMZ/r9Jj68iacG8sUAx4/+9/dpAZv4hUYUEo8iPRHmX1S6O8tQYSQ8gwQYoVmjMwrYDrz/rR6O6+dgp38HtiLL7x4y1cvXpFbyZt5l+BVUlkCoD/MHAiGpYBfiGC97Be6oF2BHYGIIi+ICYxTfILZfHLkOtkKhHWyLHcFLOFLeAv+KsMyaHLG4jXxLKZ9e+4oDDASPjvP8hhK5geXy5V3yEcCaYen2V2tvNuTqwPha0YneW1NYyfPmFYfoufnZJae1GjBIZ99qsJr0T20bMVKqIaqqLnVGQEuIg4He3phkunTt9QCWV1btH7BoXUn5lI1fPBSz3HB30fP3Eq/N0y/30fP4MVAPM13AgnntiPZk9KzZErg0IGcn+MdUAol3KPwKCzDEPqvfNNnMaw7d8cesGHRfEax7U41Hf8XCibiRhzp4Qh/BJ6AUXZSwXPkJYIfMy+gWBSj+OvxFNke3086P3rugGasf6CLB3JYLtDsvDBRgRzObHRWYOqjxZmsxe2znDGS2yq+B0PIWIa4XpZEv+pvHQaTVXQEHUHRdxt9aPPH5a8Dz/N0Lb1WxK9ITv3bBneldoskAehxjKxAJ8ZF1ANGzsFVcuWwDkqFUrBibrE+wjKeRoxhd9AXhgQX9YIdPD63w+HxnFLLE1jd4DX6tBQkSrTu5tMQ5rF68UiOW2bJccAnWGfTlszkrQ2vl81b3zfyhDzMrWxgZ+hozj90wD/goyGgGOIC2lsUBIRewU/CvSdoHa5wxgHWXIxhjlHW5vSYaubVPrKkfHlFOVwLC7BGKKxwiH5nnF5FXqdPuhsjgXCgVXiMJ+O5Ev7IH5fakXgHsap5uGLYxNVDHVcLa2EdX4IcQASP7pvYa15m/syKaPsFLegqf1Jq4wRXAPOrDMolbx9I/vanqEieo50T8lFNl7y4RT4HK5HXzyqsAH0W4IUP6EWf0dsJLaRPaoCT55465HX+fSljLBwn+jDClBo2Clv5Q3AERtgJpBf8Pw1GKYs7e2dwZzc/jEEjIiEL4K+jqOFwTfiCXwC5AjyshkWI51iOu0XOv0K+Ev/cKp8PPCmhQ5oaWu16Ap9BEuEi+LniHNbHePQYyXYBydwAl+BCLBE5QQAvGOXvnkr63NaaUsdG1gQY5t7ZiGNEr8gRfExI8yl+FKN9D/SzQ0pFbp+x5jSvHcYFjsMEctFBlsS/SIR2js8atxQqFOMGxOSTlCHHaJzmy/s1f5J93UsEjBUeTZvMEgkMmZ9mTgiBRN9wZEpIZfOCzCZGyIeFpgqq2TWIGZViOSaG4PMaMHBnCo7ItUIvO+aDerA5i9fLd5PlcpmGicmlGTfSDnyki2Eesj12Vt/MBoibx8cm/VwXwhK5T+7WLJWbbGsYr7WhxrqGNWYtwXHuerQf4mVUWba+advJ70+o936WafxzTmb9yWXai86mN8gGLax1LDMsLJH/bdF1t62s1K83rkPRYBbN0vzOzS/Cx0DP309/cPgVEk/29Seio/3b28eDMTHOxyAKUS7MvmlGqnApyfsbVvXQNrobifX3/vaviYV/GfskEOKPp54hA/RbH4PmLT6ByPFS7Gj/9M6RremR0ASWujjGbAQiXMD8wuJtd8aJVWBBXszLi74hpmZU4ufztKBnba5y60p7vU7XUF9mXud2cFaYz92GIQWCIByjbVJyVl/4s9FzFK0b5nY7x0ywDK0ckgvpmUcnPx3LBNHWf/71OP3OFF32l5zMj2/R3p9ac6wgBSl/S3B/z9ixjmOBdsQ4Pyd5/V4EbDSTw7ZxfXEhkA1gabPvZYNckBMISKmQhl58jP6I3gJ0EdCfXf8nWdvqQKZlAixBt7hvKbl7UbO1osLa/NC8jdfZruEc+BMjXN27eM/qXeueaHweSC/0+fuDJOkHnwbMTAXoyApq065ctGYhK3jYuSwY487QllHTLngFwzrJR9vprW/Rq+h5R7emhkODGG699m4D2VneWQi/AtSVnEMvX7VQ/v7FdxOrU+N+unx0NZBy+UfaWmusYy4Mdnd1hwKCmOUDAoeZABIX4DpdUYO4mfAOTb2txFmtBGaDbsw8TQfG6ACqCzM968aPW6m6dnt+4z8MoX/Aw6Z4pROyCwPon/IwROLkE60voSC54HnQvM6xfLuj29LaBMWg81ocxSR/GlOJhVLeKDiD1vaNu5uehValUSP0BLvb2/qirfEBCJOwV2wuMCNf9RgcFbq6RqcPi4kbCQLTAVOQhoi0m+TrxEEBARqm6yeLurwiIyAbg+FYXHpj5MC+5GFkURijBIasgw09FcPr2h8OWwQfyLfycgGUfS3ryde6Gm/WaaM2yQJNsNm8pKmyqaqkqchd5/HBPG4V6AEJjHiMxhCLvtDDPXwvencXM1hB8o43TZ+cMzVn/4cVY/3v0fXv53+S2ZtJacHKNIFD6WIpdpW45KyslKTHqQ59GPTgEolPARiw2datYKFm+7r0XUDsuRzGsI9b7d6gr6hZUbzuFrgP7plcccgkMfSCsgA3aEljrSPIAGysy3Lf0iULLW7OhfL9Clgw6f2A5J+ANj7mb/e3ocsCWGmbsyhG8j9hXUtlBdO9ASaoZH62OCeSyRTpG4zYNSOle/QvQAISKIs+bHvm4PhrkbZAi79dahPb0G8HdLs29xFnwBB1iB5BnjPkFcsjjYMwRd5779jzBe9PF147Nw8VSebErjnp6cyRidqn8j/KXHdBAEsYkiwFzFvEOIabiHfHYl3E63ib6OY9SHMJBOiFmf08HwiF+Cfh1+x2Dm4HA9PgKSH5f2StnA3YgIdhUwiVgoIfSClAIPkf8fwILUdzIrEEnpVaePlnQE6VIp1EK+p9dtMq86ON8916NDZqeyw3CD/IesVcVDN8uD/9RNtkWzrR0hXvDaQDYTgMKFb7ULrOBbZSnrNZvvJ2+YlQjx1zxsNaOAtbzGGq1XzJVrNEMJk7IjwFzwB5Fp5mDyqZ+NOm6czJafXR3+bQn9MLtRDlo3xQ2vHXzBX/O8qqn+tTlJXh8lPneOs5J2dCqegEF+9JXPbmfVQFhBYAzaHfGqUqIdj5YfefRulFsV2CdHphnamrRKmrBUpdXY11tUIs+0pdPb2sYsA5y4rlq8hKea2m8qobr5UJFtQNU/AKydt18vxp9ZGT52sV/2g6oZOTHIIvsGxQTnbKa5Ly2YoiURS5yArQAqQV+a8mIGbOzPxOqQaiX/BjZgT8/o72nsi4EFcyThTEYKdCemY0kDvXyJZDCb42CWWKuvX5jKyHU4SdS2IT0M52u8BIQGkie3xOeepUKWoNfknGhzcIxAKtyKIS6AaS/iqFdOTqmJsQazZDMV8jYPb5fE495tZM5zYv83NlaYdxaV2527gAK9h4dsd/nour8fgxp1tAEqSQID5NNcdRjWqpPtoKPgLc0Cmb3yv6RG6G20gBgafvZ97HTEBpJErp/oHWaSCB7EJFIdiRRQS/CwxsJT5MGWzkS8EAosdnJpxXWSVx+5lI96ijsQCzOftafPE98vk/k++qXIEp0VWRmQddHDpWEILhtLQVF6q4WRIEqRtzPeDjrWi7UrYQI6yYN/H1SLOZbJvQ5zN/4W2B64FuLsZJTIBBIr+JCFtk26lrNWy0IrMFgrwYkkIiUhah8xvs6EXNUsY1QROngy0I+jVK1wmtaQCbor0Va9Kd/E6FMk5d0CGMYaGZhG3cOKTw5qhTgnwAIT3IiE5FrOPjEaPfHsGACkhhFMUiXUQ3ojLbJZ+t6X4wXcijfnAh9bb5rIyVM3McePVfsG6FBZExGOUfh4MwyI0gg0HE8KPpMaLQ0Hw1GtgmuILEGZa/TV9Eyvze7zW7D0zumIEW5Y8k+f3DvROJxwSU8n5/qB2fZCYUXbk2ZgEWi3q4hW9WFjmDBj4TsH78BZ4LIxdBwgFxX9glOHk7462uJHZr+ZaqClK4+HZaKPCacKgz0C7Esqkoiv52DIAQgz7aCEXcBlgPG6BMIBa8NC96zbNA05c7xSWYoEvyUrU8iADGyVtks81WUbHBuIjVccB7DVjJlWhxSUy0IG/W3CcvPXmrdh2y5grECcDE4WYTR+mIpFnUnHZwsozbgTJz5cMP33PT5TUVeHH+p3QEQiTc7+8tiH1J6me9bWCuwzBVsqZCcH6hJFmfeZZJOAIwAGSak7iYjdDz5D/VX6IxzHNVsSgynEwhhgqraAzWW4/qw+OfZa0Iv6iSuEllX0eBKNHfpjwAwzeWVEC0AMLBrvY3SM9fMNGu0Lzy3pHng8HBweHkAX9LNtZ5PtiNIRRiBAey40ZmfRaLYU/mHVSxr+3JORzSKrsuCERsB9AKoM1ZgRryv0FbsJpEXLy1wJdrA461l3tNbr3PWXz5yo2X2+ycAe7iyLWYqxpeyHRnfou290utSneVwasR2Zwr63AhDItaDDUZxzSvNC4mFbJKIzqFbO1HfePHN0XEyMDv9h3+ayLKJ+El/teYuhxLOO5U36mPlY6dVw9ekud2jGbOG1UPv0P/sD0HqdyVWh9WcYWoWZbba83Nbq+XcXGN4G2FLtj6KkWMhpQpagaiA7PVadL11HVuwCKyyVha+/Dawpsc13EecOFrdbg8XUm6KgcbHkNOH4YAPxQcahvsDypFGjFa9AreZPWgfgpIErEpJMSksBSNdnSkRpFjKT0ckYR90FxwSrNGCyEeUUsa7fgwMd66d9uTh9Hl7aZ4nd8VNGE5sj8qr2O8xOso3WyyN5l1LgMUgWErTJO8C+1jmfPG6IrpqH7O5Cu0/t38Tz44eYeWVYKCZZCpMXafGXxKugESwH6uXWQagfvJqcuBJd5GZANNcFd/4Z6mVmfK1w70XKDfoRcCvQLeX3vwvhYP7+QdQBzgxECv91Rbmow+BDq0NZ96uu31AXq2X2nC5p8IeERPAaqZi+ws1kyQP9dCra/RsrTxF+YtZZVNuga70oS1SPaosdXTito3zYelHiK2DNPvKltWImLEwORI93AQOQwaZye0lMMakncJri9vXL31vZzM5fRcLSIt43FvXldYvdDp4mycHTARQ80txhZXGoag3d8dHCDpD1q3jYwkEvFISzAdjYudQHakLMxcjtMgtGFVa3JYGqGR1Lc0d0/09W8rgCFdf2nSEGz0KzuNbvBwP7Nfcfvmn1rLPUq7rzzQEK8n3Sv2lbysCGwsfU+EH+ucGo9G2tuVTr2p1YPpYVYibdYTw+8gX1tw8h5tMVuBtN0FrJuxzXbA07kdXIwNsBLD+xSzrpCLWS+6i/dJpu7ylEIbLKzFR1Za15RvWlW+vvR+uGsm2v4+2MjfR9vfBxvJRpufBL28peCfRL+EhpeEBP1J5hWIkfzjAbfgLWCgnNnCkBvk/0978dl599rH6KNj9NIx9cS7lN99uk/Wr3yg7E5YDPXb4Qh0+nuCg7zSLsMCwKO3yTP8sH8kfDAx1tNyQAjiEsJouSDnt00V9S4FwuS60O4cJ59vueqm2p94G5kaaIDV8dL2qrA1ZUy4eg0DLrzMq/Bc394dXzF8OW1GicC5PNb64nLrbR4LV8MphdKlqA0h2O6Ptkx19m9tJx2xnpCyyddj8peSvLVy0Vhm7zR1jKkf/4xu/SyHni3fqA1LmrZwSxv0kD5jom5LXeWmdWM1uwq6oSvalZ4c7z3a9Vloa/RgL72IdNK8g6B5EhFaDMyUQ2SAsHgFA0KBKLbR/NSzUnu8tR1XGmPCDHF6NQan2QB1pKbV0jPaOzheANObetaJW6DJ2qCvrDVtab7P12y6Gq+IC6iGQnx+xoOIxrpYt8/MMxKjNI92YOFmkA3ceWph40POJqveCA5w+J0CyVssF43TW8YzOWNzIm82YAzSp7cjTjNmxxZ3pauGY+wVVeVVzXq7g6tC81bzbiT+f+RyQehpgRHSZWhpLK4rLy9A/uv0u1ETJKp3Nh+H/4D3D3S/JPjpWZml0AktppgZ1bbR4bIiwrAApKmnsaMIyqHeVW1ZWrN2ddVD+k3OIixp1+29+0Mgu2HnUCxKXqbj2kJ5i8uhaagoKl4P68C0FfO8398W39/2amywo7+9t7etJzADAGQPJMsSG0jeJOZV3vhMXu1+g6467ntzZCr/rcy1Du026G5t7053to9HRoWgoDRnwx7OAkbUh75mw32l67cAaQZfAKl3qxhLbut/s+1IcJzkvylEeKWUvPjoiLJTv7mhvMqLJTQLa8+l3xqi3/Z3IKxlQS3/97Ow9k+ymMyT92gelr221cinTWkHkmhIxYJJQQoP9fyVbKU/CMY1IwdHB3ZFQkIAOdQYxHQo7q1cM+twFTXcWXM3yX/LY/JZwEoeHS/bV5AnL80iHz3rL3PSk/FXu44/8Lf8z+lDmU+0da2mruHB4f5uQ6qhoLyqqnJu4ymqfQF2HU8/LQSyzY2IF8E2awWzeXnDlmqL22dnUSRbfZHkXAgLETHOix9QB+8n+afErOCHA5uGVkAjGF0ma0VTzVrzCtbNZfvQSmEmidw2/Ls/HJlMDbenky2JYAqIkBv3O5vnoji3+qyc7xoZGQurlEcnrBgp34+gKH9b3jCaeWFMWYbtM1r4+r1/y/8r3Zv5SCs0tDZ3IjL0DsAo22FqaQRSWl1VOtcp12rzM3z2zlB14amfA2cu2rRiFXICH3j5VCSJJZr0mJL1FeU1xWvHdXsK0sin09JTqYN70odQin3QTzVkD10NLRrYrWutarUEbKKRx6fiGKQy9TadqaqheqNhnccicAEPLi2NFw8mOg+ObhuNhcUgH0QiHbaBieQ1I+Al/5yYhfXdJ+jPjt/zVj9Vrx/L/0xFf/TfVloC8k9PvdJoTDsTc9PQlgykIv3hfUP0W2i7IPS6Y75OZysWMJL/B5XfJeAzkvz/uBPMHh26b+HE5iehA+KhRKQv3bUjddif4JR5GYFFeCNm5cZuy1JLpcnkcNi8dkBp3godyqUgFZ1ERG9hw+6EvUOXqoibAlVBk7+jLeCfnMBb2EdGwqFEdKAjHetXKJUXQ9rNaqp8tfVQRhrazN1TnSPT2+sHNhU0Qp2z1qizWqyrVlVWOV3NdofToGziiMGh7fT2HXR+oEfJFaVafEEA8mTnyQV69fgb72/PoT+yawNKaeEHgp1dbTvC6cRuCJMIw5m/rEbmBy21ersHxZNXsAXZCKZPAL0gScP0x5ld0D5zdQ7kHzu8bLb/ZP5in0XgOqEva2uOqZFJmfwjskCOajilfemBRZMlRxTq+nEWROa8clw8Tr/1Ol2NIILZpLKjzG6NhFJiINjVR3PIMP1+MKbZenh88JsSlZTIP9HUXuyuRZKvNO4YyRp1t8C/cglXkfGRqlsx6WwVyKIaoSnWGLO0WNKOPkB+zreEdnYPTaeOzoAZUcCs4HQw+xLL4snJL7Ds89OxrAl0Pr27wlqjr6skLgcnaqyPFfc9AA/AptrSLcRuRwbE83NBdLf6gs29la1FSpffZTYbTdY6a7HH7KpUdir8vtNSvvX5WF9rIuAPikFohWAz6MDFOVkHeI136W4ilfJ57iqwE2PKkSrIezrLguakJxLHhdfpt/6v7Px/YaTZZFhRcf+jiMBMWHFK1kjH247+nZEehE01pSVfN0ZPddvGLPfzcavsNQubFzMOXCP3pTGSCpdBnS6i8Ah0hXsDsWhHNNmOJgmY0O4uREEv8ZTeLaeRWs4YY6VCzkeRvNL293PoZGah9sdny/fLr2gvOTuvXC6cpgWKsdSZq97N6aeD2q8ZXAoiUUqD34gmQOjjvIxJPutUkc9FfE4vW/Xl8N1p43Gh3DZhKyhbS+Ps8MxIXxJ1JucJkfrcGt7EovLmt9E7BAGgq7rbnvAGuDY0apRvlY53vfji8PskNhLcCsPw3n+x/xnyX4wgUFNHHE6Nbay8d+UXYWO01Fk3eYzuui/DJjNn1yz3tyxx1ljqGtduKV2Pv96UtPT4gu40GwRRSqffJckj8T1o039I/a/5wkKKfMuhSXmZ9uv7YjOt9PrcWt7IKWNMHR/soSufpHxwUNmjcYtKDamxWBzNTqfN5SKGvqqufyzmZug1meHX3YG+REerJKKlWJ+vQr7e6vT4mpgq9DSAt4lwblZpSHv8bBRm9uzIh5mkwpFvzFw2pn7lOL2DqnK+Evnd/fTsCXo1Y4+n2wY6Ojui8WBCjCvx44m5SbWrVg8lWeid6B6e2l02sKrAmo3HCne1saHO6UA2GPZFrUlb2BzTBWtnPUC+wQVfD6QABhIiqhkDqfQWeQJqQIlPxMX7HWO09d3esTkHPqt+mX7r5dq9WJ3Pptdrt9RUFs0FM+8JWFPFexqeh4/g6Pjg09GuQBKGuAT42ZBjUNddkSCWoFPYEioJeXlHmOR/7Ah7w5Agu6aG9m0b1Hk5ABZx24egbXTaDKAnuqQ1vTXdO1qg8H9Wsu7c2PkQPAIb9DUVjfXGMhS2m1L1XaaO5jCMuchWd4CLeEj+X9uciWakrM0es7NZV15uLkRdVi8ZIh7RHuIETmkG8kSEgCgJaNguLINd5pY6pFF3YwWXp9WHXt/9ek5PRqvdl7tbBBa1oPlBw+2kVL4QjBowASu4Ypu31uxFEdkTS7cMdY3vTu4QJEFhU0E3b1XqLccxLp/DZfI46taVV1d4vFl+1ATeNuicUU+EDyYOdX5ERumln4HG7w+3IbTNtLpW5q5BZTAXJujPkIK1NkdNfCOYbW4z4/EazAuJ4ZZC0CzJUn4MapRkmNLZTt+ofTxz7jiSwKk3nMfz/5jZlLlbawWrx+F0OHhpo3yT/mbTfUhBvM0Gl0vXpLeUIrO2D8E0UTqhfCgwER0fehfJfMuUEEJc3FMyshSqQGfVGeobGjZa138jz4tOpYbT6WQyHmgBIuXGBLdxLug4r25p9W32Mk9pdi8BE0CPPMXDu4OlqYZec9o+4O6FaRjo6OkKBAISSoNkeX/jLkQiAUXpeLx3Kv3WTO8DlN4HzMA2sRe5m1wme4PV1sx+KUZRPRJ4jR5KzG0zR0xfgOmcP73pfI1efxi1jceufQb2bp96N70tPpo4FN8fRDZJxponSquqqisLFE0UdvXVRxuhEhW13aOrvaz0wY21ZpvNp0cD1Le4eokvwUWhTZiMjI99GmoPtqNMzj+OJDqKILC7eGgl1GYJcWlt/XrLmmxD7uuGajnav2MoGsgS7zgEnLgmB2vz2Tivq8mtI1W32bd4KtD6nItDr5HrD278dUEevV8h91gmJ7e/aT/+wQlaejj/s8xy9KxJ0VUml3mpbAGWVYqKmUCj16lp2tikrwCyqn54/9z4WeJEdGzrb5DIzTp1V/noUmXfAjzsZkdFZcMqp9Fn8xhnXEv+x76tucO2xYtP+xnrxDJqheuf3PQuHICe3q6hti17mo5gzgbQMc/EJ5/sOUZig/Gp+N74oUArTMJkc29tkAFlYqoaKuowPW2SPeokXfpYI2xRwhkLmNH0kL265uYtm1ajmax+W0if9LTAOFFAUIhK4wfpo9BN0N/GgrzRLGVT79+WIYdyDs+WR44Xo8kDO544BoPQqseb2FkbytvKEvluXYmpusmMMsINNsEtegWHsiegFBj8NyBI4hfC3pSo21xfVlwAFtEStCUaekxK10RAWdQf6Um39beXDtccgO3Ql+zrIIO9veOx7UheRQUIvDzKO+QEPqtl5eqHFmFg6dthiECYj6KmatlL1/qj0cHOno5wAAtHFAMixIW8gewwGalzNhiglDSkzD2I8JM7SsaWFlRCVXNDrcuFIOA2jRT1rVam9zk3t869oapqnVVvLmUtBDxiFgnWKvL+6lk0MH62BvGA3nY8/8PMxi8Dh/G46yrk8/U3Ge8DtrGqesuqWTCYwQISGEcweA8jvU2J9L8gvIX4MDxeMrQUvdZk1Rvq/l8g4cPTISG+aLr8ObRAQoiJA9F0Cs3GuaoZJ2m489Elj1qcWD8RVV25NnAKdr9LtCGOQ3aDc8ZdJP93Mx4DpRWD8dLsttosFq9SxYyiLehIVU0ap5XNif7wSOrJob2HO54Jtv8hcwHKhVaTghj32N+i7WPNb83JT2+za+MKgwMplOzp2zqKYRxF7R7yBbwpU7sh4I17It4wG8OFZSP85eTjT7Y9y/vR7YhcbsEKCvx7bbbNa6uWK7XA4C8N1wZtghFIMx+LadKdw4OP73n12ZGRofFUe7o/0hKIispErKgINmLNNeDfXTZDpdVsw3p2QOk2uNFQTqmum+SndenmFmVCzotMa7Vr/UbTitkdObfEtUALxr0fndfen5jAUG1hhlx4iQFXiglgRgJnadY1VdUUrr5jfll5ebGhUVdja/J52NNSPy/vDX5n5rqZGfPLjubs4bXjMMo/Dc/ANg4J1+wmQaBTeWIMV2VUCx1JNp0+NC3SuZn9/zWaHYIn+Zehk2tnyCFHqglptYHVMcrgFn/a8PTX5plDXx0H/u/nmb9hsCKhKLq98O7Js/XqzIsn12uxMLMM5/GeivznQ3gVZW6TE9geoL8BklGDX9lrEEQkbn755pML8GYC2oRHpoQlSGG3qFi7T2m0W+WLemXCc4S1geyW58oa4AuAz3w7E8NvKuNKE3TkXToypt77acb66ZcTSzfJTi00c2bO6bi++priBYXX3rrwJgxwGygvO7iEm1pWPQf0DIKGbuEj4Zc73xx44hDV/O7V30eUDAxme6ESfGTdczvIOUS+QF6qdQa4REEoNwogpZ6P7/G3YSiFeN6EWZMdoFQ6DjbCWOTvgubuxYA6hs/uo4Q9vGX2dzy+SvmHwPpdHJc6bRZfFGNETFB830tHlIFfzmsEH67vWpg+eS2a1Lsvh7ovmD26c9qBoEahIStIQNlkDtJQZjUPBLigrA7J3ydJ2auxWxu9KOLA95UdqRiWh+38FEzBthn2PkuMAj4BQ6I+t563Cl6RA1bkBCa85eQFrOAJCGDAFyaJGzj5k1OfMT6ir6o0rsOs8Sn7QqwHiZfSKuU50c1DBx/jB7AokO14i0ElQDbCm9TyBt34xpwDR2pG3p+QRunBnd6RnRP5v7mT1p+8Wuu1bpYvyKIcpijGqzLJHkiH+iKdkl+Shni6HugvYTvXxioHI3ik+54VjIOAS+T8/zWyD3xwa2gysl9MInAIyl4fKyV4+ftATt2WizbA6xPp1OXaxMy+miBGhBgJpOlR8Oo1uAZWSYyZsxJ4OYnk//ZOwT+BvhBnzxuYc5sxxd21xNso/wI0F6/Oujo8+uUvWHO/jAif/jbLImXYcGbCg8i3yEkt7culacR/MTs+ygtY3g+IoR30Z19ewZZrR0syrMdnXWap8+IC5YuAXALyZaC5nuGDc5WeVEjs9LcJyvyFqOyv+vz4NuQo4HMrF+R8VfLlikyd2exX5umVvcLdvPZ/PIyuHJb5XmYgMk7opbm0IIgsnWHk75/a62r+3xxGD9CCzE4x6A9KojIv3iN0AgnktmMgBdKCcsxD/GI41AHyW2jD3/wvQJYyHk4ZOJh5HfH31un4szkn9ZnVWoefbSmIY2SICL49tAJCyswvJoU8liv3I51jlA67z9eMWIKPEDDRq+WXGYbIV8kXam68/e4HWcbn47gv7U5Hc+kRrCqIz/53qBH4mZ1YBiOE41wN9YsaNxeV1+mLHQ967Zycw90MK2ETYj+hv6BzNW+/9sJTWbYkKKcK5QK6nRMIvSCXXsCFYcC3z9PraC0OmEU91IHJ16Acw9mFbn7p7Tl905R86nyCPrE3/5OdmSFtAJMDpXwivm33wF50Tr8+uSXSiNhVDOWcRaEKf3Wvul3eCZzP6/F5OZuvjN2EXJsF1jN70MKlbPaSPbCXPwSH4PA3HunZBKWnHel5lqZDgx3vjJ7Yt6erazS9DcZhTA+bMWGzJ23cItuK6ItxFvQHxG4EskMV4xtiDqwCJiC4IqbeWagrXFl0F8n/pHG9tRKrAn8WCss+JHIn9I9vGjQlK8NVcC+sWFO1ym5o3gJO4hQhgXT+u2iG5eN/mVZ3/Y3qXqKqv+XQzMkzteBlbO5qYl+nAaVlxsnnNcuXzzPIaqzyStvBxbt5T3jljg3P1XW4ejx9PtLC2jdo3NU+K8f8Y8uISgXEWM/OZBz6Hxx2ajkmtaE8wb+SvSENPbPz4ye2vhhpl9LQBr+56OAVUQ/vVc518VKb1BnbCUJYIv9oTNzBlkApkIdzF8P9/GaeNH/1vEFX7p5JsM6dL49odb80zUfa68qt9tdGDPG6VkcHjMK2xHTXaOfIZM++eMLfKUpo5NyPeO2z9n2NMB/WGJZVldSUrWpY7CIOVpP3Gkz/dYK+NPab6Tm7P7zrd1t/l/85raRXaMHX+Mt/Fjz/AxN9JXikjrd5ns8GvgS9Ulyk5w6c+HCInkOi2yKdqfZ4SyqSVIbjRH+cD2RZIa/MyTEBjreDciRFGXTiyt21VYaVnmbG6Wk03FW3avOmuvpaU7nDg0/GATlASzWHqdVnDgfCgTbhwN+Z1541bwmQhWjeBfymbzBvHwyzcS6CAKRoKtuqjfJN1fK36i/HBOcMQadU3GYYZw8S6BV7QiOIzKEBIQFtJHoWjNu6qwM+3ggNyOtyvV6PE9mJW2LCXAcT0kMN2FiLr5nkf+4qYYxQRkA+47nCT5sRuOzwWuaD0TlvbR+jqtqpzA+3KQfG3jt5c6ZDC4vqF9StMle6zEX3Fi+0NlqqTGW2aleNR589S/NB7tvKHD7WnA9E4WV6jTKlhfRSmDlgiOKfYdz2BsMWj8ttY7h6lnigidMj8zTwSs2NtoVi6YF0z77Dh4519KSHSf6fxw62PQa74FjpocKRVQNr47dBEWx2ldlXNT9as7lidfG6hbaHiE/HOaCW14NbsAUqQnWdizofDtdI1ajDBZtgAC9hV51Vy9cDw9uV4oNYDm2cMiPLe0Ufr+MZ1s3wIjOPcMVcCXgI2EWslO+D5g9odTEg+AMDQovQJrRCBwwwY959+GTu5zGQpmAAIigIPh5/9eldO4f3t+4G8sHh5dfOzftLdlJDaQYPv/3q9pzMG5kfabMnYQ2mRbWLK9eQ/rO4YTbha9e9veSxa5QgRtiSz7NeKJ+pl8/G0oIKKIsZHhK/6dDCPwDNgU9OoKoCwccz8U09FfuBBHNRDvXGe/xKV90PQQ/Stmzjyuk2Gi1GLJgcYMF3hD2D7OOE64omNNNPjL3S9nJ2eByljgdvQk4VyT1a6A0MJ/bFpuMDqe6hndN92+G3IF4iyOfwxXylQruarRYHKandYixx6r06xgRLoXIMDpG8AXmejj40St95mdrH53ROZOa+VvVC/ql+uTArwhQeRJ6mAY3f33YrVSkSESICPaeNfuv3QC+Fg7qdVQPEGtfkf/7U1LZnUKKcWPzYTVmDeKHUW9pcWWdxNNbbLRWb6laaConXJF/7n/+GPlWGxlDr0OMnNdqlUOdy6Fll4M8HNTuYEZiANqk3TPJPdTbG6mA98Zzlkb/zoPwtOR/uh6JpeFWZG+MlIf40DQbaR+gZT77xfFs0e6iAbIMeQ7hCOZ3pBScoeWNjnc4lukeLa4jHq2kIGf0VWOGNlL6rpn8cy6F//FSrjPJzDsIZPQZN47z6n3tL0Z+YsmDy2+OKzOJFIRmM9rW9Ht8X2intJHyIDwRaRv6448+PU1W0M6g0zTDqsurRqXBdZR7KZa4qubuhsOZuYqvVcCAIc6HFPeEeqKJnF+9/MOnhm5W9QVvu7fa7H6i+ASmJUvqcYSxhishA+geCn5fSh46OPw2Ent8r58vfmZt3lWMs89brhuk5o6/9evLEO/knMitOXq6FuDtiR0a6p1m6qr0he8rJxa6xbimBRxSpynv9pYkN3YUBi98jukiprdRc2bCyaO2D1nt9es4GOmH+yIo9DZ22Vs+IEpkdEPenI9s6hic7d/TsSz0Gx+HN2m2b9s5/u2ovMvewIAVCJJKIBzsUiYEkLOkL+Qbq4/aoK+oj+Sf8iNQhIAOtvZ1z5d+e6scIDY7Hd6RfnTzyTCeJ+DV9i9pK4G64q/K28nKLxeWug4ehcjscJXn3Nj1Bb3mJ5h5V924LTeY8R7E2j3aNTfaSSFDT42hhJrAyxflkKB4IJZCLD1TwxchVDEyD3eYDsMWILeaNYJymY6l0fDC9L7YfxqDD3asPegO+MMq6dApBFhIuqTlS1lkXWgaI3He67ysrXWNrdjZBI+hChqSZhJwOt8bmMJmdNl21vRqqYfnQlkljj6XbMwnvwTNj/Yf9IaVNQSDiDTh5D3jQ6Q0b1ppuR+LxUAKOkLzL5A2jJ9c981v9nB0v0AWTlmfzM3TPye9qQcdbJYsyZ3LFI7JKvqhSznds9pVCJdwwsuxo9Zj+k7qYC5lXuyNlxnJZo9MZ2S1gCVa1KQTcm/3cCJ+XQWoieonf3W9u97S5I1w7rk7p3g5FujtSQ+G2QAK6IYIVKETsw/qO8jh5oFNTHq2M+oTVHXWTcAyGAhOx8YE/vfrZK3uRRmhSpgg3AVN8mxSPBQNikA+ToY385gJ3rgmz04Wl0YO1C5UcQhnJz0CAVeaDEkJKTGa7biJEPAEM6gZgqrkKkrd5ZoNFPP7c69Nv5vzLm7gLZVGzTK5GnuDhTXGrsv3VGg21iIHo9t10+TD9Ti/N4QMz+4VE2S8s+Ob9wtM3T/+ftmBG6b5ddO+YeuR12vlGDn3p5DLtRs+G2s0b5t1cKOc2yN91b2FqkBTckVowWtxqSNu2KtnUhtnUETnS//Sr0x+PvtL9YegdxI9WSMFzlsfrx3WDTYmNfjIz80Celgu0UOEtdq5hTJZFHEdgFbd69SoeCoBPPBZo63qz99DW7Z19nckOJM3J9bCErJZj2tofNywse7R6Q3VTHVhQxbhDlqRjBHbAjugT7W8SPkhXgCZPXoDgcZ1evfv19OvHpnLoM/RKLSoP8JjcOpvBbKys2GTYomgiCxdsnwud/kiwfeCN9uf7aW6wVwiham6zxHVY8s1WtwW1jsXTRGrknIab6x+cGYiBxmhj3NJqTrq2KkqtBzoDvfGR1GBvejiaig8oHxfBYHHMTgrRlSMv/CWqn7PnON30+t2/zv+Y/pb+RJv/CZhRahvh4bHNT8AQJCKpVFdX+2Ri/2xjN7sZQWYGZqyPIocxOZw2r/KRBt4E9EJSSPrbSf7HYkyI4u1CXIgNmg4ubL0r5OAdPOoEL8TDT+7RTAx3tKSjJCJpOF/2U1ca2kzdYz1DQz3GRG1BI1Q7q83rGhY9srbc6qo2o7hqeVYT3+NPAZalN07fE/I5rzylAcNMjHwR3VJb+gTp/g8NVg5/wVZ6tn3B3LxdJy8dU9NfnbxR6wy4ogVpSDXHq0TXH+VhpTUid8txe7PHybqxGOkS9g5EsLAUDBJRePzpY68ee/XAk0jQd8rna7rndywSmKAl4Yi7yXO5guDPCgcOtagz4olbx1lJ3pB5mpXMg8WpRQIx5Dp9Lg84SN6zSGuu18/JnP0KHM9/PmM7vRVdXyWfQ0rkH3vdmsaSmoZqBFMba4fVYOiH/bM9/5EjtAw6odUcMfNkdvVu+SenXgMLb0zalD5RTIqEo1GO7aUq0vWJptsy6BxDpHjn1QNPs3OBE7yi5x/NPp4+aPtNo48k//lGb2vX3K/vNxkL8ooyWmXmJ9/+Ci7pyykf9rQJsC+Gaa+X/6S0kZROrwgxRjlXFhZaJbphD/0lvWo/vYtg4IQhSPLvbDPFTAXVYDG4qjfLl8hEvlD+QaGbcbOYlAzspo9oJukvA9ljBm7BC+TLgZrL5KJjmeteoqtfeF+vTj8b/f3L2/wv5NAeuUg7BJ3Kaltb+pQj1M3tdXGPKD/8skesj+nSrjSr1JMY1iYhHGxr3TU6taObxBlNjyuEub4XtovCKAxuFoqV+T1Pk08ZFvCG3UkGaxqBYztf3Nvdbg74pr4C4Ji0PCO5krrASiAouDgjMnd/LudXHhziCN2JGegmCnTXchsrC8DGewUXsXk1V1fMnwc3QVmivKsh4A14BI6IKJg0dca6Bn1tfZm+yFOaHd9xg5W3CK7opv7y7XqRpQ/MV/punoAdKY7Z0Wz3etCDzUKdqAvUJn2Cl/cBsTvdtrq39cNz/+nwxVb6+cvqTE5PTubuMS0EWb83rtvjQFUBo9K24BQRU0+D5ojSLBJaAwks7ZB0hu0oFu+AX8IlIJ8FbnaJc63C2l1Wpc8OzgAXB2WPIxgNx9vb46HBjhhalwyBq0FTf2PZTY9eTKw1YNcge2QFb8Ae9yhb/62xYEvrwKv0IPgJ7/8DaIBjnYzNdK9zlXc1cigjvlYHyuNVQSRZaeiHdDd0kDyDY2Zw5NZ3cw7LldovUoT1DdFvk156pqarur1pH5BoLvI+vsVPzxn8kP4A6FnwwerD81tcgoW3ZWcLvPCI85GSdcuIrqZhnaOM8fzk1CVK4iVs7UAyZ2RGtLBGv8C+sXmlqbK2vrGx3orUGaoGHNMk9Zwm/a6UivX2Pbl/+zTshI5SWE3y5HkXjmaW7NOPzRl8lt78Yv5O2niPFj3mt/u9My5y2p12wy5Xem5cUSjCjtjUThTpHa725hbG75EY0SvIl7/NiLVt5i6YINmddX/8hbdf+hTXn3SlUaIej7p5CHAtEIkp4sETNIdI/s7GWINUhqjp4MzMJcbL7m66hHViYVCmKNy8L7Suu2S8ifhZ+v07/GzMGbCChTSYTY0FeSP2MRQr6sFXaej1HPqQXZvAGE6I05FdPaOjjz8+8AK8BMOeXls38UaOgubxbGC0SMkEqr9Wl2QLErkg9w54CCmMkdV5mz331i5aXDbPtNml9EquPTr/I+Ta99IpLRh8De4q8wOm0qrKmuotxjJYAVWj8Di0iu1SZ/KF1HhfP+nuGUrtxO8N1EIhyfuZEqr0yjfTO3Mm6Bg+GY8h1jk82rVVkvgOLE4T2S0gjmuaV3MNeVS+ERyappg9XdAG6Xiw3R8/Ql8WRRAkeAdfmJ5Cyp/EOoHkPmoViVfQg3whyN9HRuJhm5gmm85c37Rhha0WEQ+vC64gq+y3+JXd2OyG9QnbcVpxOP+vmWsy39Eih/KKiL88ixFjiNQjr1S22vU1ly+77ZFGq9fCYF19pHz4yFwYjU6OfvLFzuMnszuPB8qGl0EdGF1mW3ljzXpz4b+481gzz17sRVn/VxaRALIxzfuitzxZ9iHguxMY/AnpUNtjByffSo2EuqLb4/sCI9BDJsxjZQXVlTWVc/Po2Y6X6NGX1XunMrodORku87B2I1RaqhtKqstWVt7TXGKraLyLWDdqFBsXuKA6bAptaK0asI/4YlwEWvkWPhTqaX2mY8fwhBQQlYk0yS1aCqy5RUXlDxhuZEyssmd86SsLTzSEWR4vol9YKp8BdjDEba0swbrAh6VEIBwTk8G+LlrA88D70bN9EOa7pCPxQ8O7psnefUNPRJ9FhqeI5Tc3H70dyEvyTVmNybpdW/QllZXNzQ6X0bqqcr3pHvw2w7t5Et6piR71t8YHx373xKFjcABGypHa5X2IAsKry/x+bM7uiczyyXzDc/Qv2jhmGR8ItsdSyaCEOjGIVQy4gC/miplaS3uXty/pvZwEq+Vz5X/X3HHT2pXZLTfFVa6QM6L0zHnl+A+tpV7RT8LlmrYHu2/r2YhZ2V41ZcpCURxjLxboiXb3B3uEEIei0ccbwItUCTjG6WrQG43Kzqq5rWF3zSHjnrpPiHNII4jURWP+kJDdgISoK+BQODbHcDaPXC77PBiim+gNRUeIrmdzy6OwDirrzWVeO4MClTiDXLwgj56VHbagAT2G784TluOmCfrQ6NuH8/9mpzdgWfh/CL/aebZibz3Jl+2ccs7aDZc/V/wbm7KZh1SSc2y0rrSudBQpncmsKPii+wG8Eomk86MIaI7Cc0MHH5+aGtrTekCKR3dJnVK3iPlJJprHS+rK68oLvpZjjZipVsbia667/ldXXVdnZwysE4iPzW4LjdGf7aT3v0QnwhPKPrayFWhTWj4sy3rqbpcPkZvltznQ+MDod/qNki1kjZpSrna2nxsMD499StAmMxMlZLpsbFlB3rv29+Ykp8ef+Ojx9W/TVUrWu5SsN0lM3NpujNdCBRg4r0dvWVW9urquvqnRWafwiIS5i/gCbgWseDEohmLd8dFAr5L2ykGnAKQdSR248MHcjNFpM7qrMIM9db5aroaAweXSNNZUGKq9Hk4Z4V0ONTvg2ez8QiB0ML1r/0vJNI/xSfiIN+SUXKIbnF6Xj2Gs+rKV9YssD7jKmFqoggbeJhpJpKi1asSc8CaYpMIkhZg4Gtra1T8iBXieZ1PrR8oPI1IgOYpLR9v2Pj36aXKq9RVpkg/zyiH4KetYySxOPI41YucO63jrGNWNzfn0zbo3hibo9S/nv2mnFvqJ9ujG8SXI8JvdJtO/pgZL1smXe0tJ/lt21sIq3vrVgdL3YQC6Qn1tL+1+j/6gj+aTKKNJIdwImKMBVAsQ8bJGySG4BEwd4INiS2SH2A9TBH7X8N59abdg5x1KhwZ8XJm7ylBXVVuuL4JCWNG7eaiOpI0jxhELyd9rD7ASqxz+ND/srjU9YlxrLDNXmRubm/U6s0uHqdTUCzsJHNxNfyg9RqiZ1mphgfXR5oWEy2XBK7iF+/o2j7umuQCnzCHs6Ni7tT+VaAunYBtE1iufOngUpeG5Suapt7/x7Cg9bzI9sf+NnMyVJ+/RAmdZZlpgXqB8eBbmnPLJKVDsqnHeVHPPkpL5xlJ3tdKCNoBbMqXuPfLoCUuIDXN+jkgicHMbr9IY5/nM+Ca3BIpjeeUAviCEO94jXR/7QROBtJgQ6cX9VEP/DejZkOKivoR1f/nEyu4lPZVehBJUvi3PkNQz8ceVc/AzfTaMSY0bn4fxEnnyFJKfHmkgMhjpDbcl0iMHDo48E/Erh9WA/OLUuW7Q3Btctx1eJpk8+u9a5dAWYzZdteaBeeVGZ427Ufn0PE7xj5IEPJ9+p+dPZJouEkEjIHUJck84tm+E+cpJXixAe16cQ3N3UmlnwyT1TmKapRzarNQUegLd0a62I7unXk2/E+gU4tANSS7FJPEKAQCC6RQpUKblw1IsGElhdZhlqnJ+tq7fAfIj/4ysJtq7O9KRtnBCGACSBo9TU7a2YZV1nbPMW4pJtKBz0y6LxKGggSiaOSy8nDh0aPQICYQxbuzkzq3LXi2ghfSIFu6vKazaWLJmQ90GeAR0u+AJ6JO2hkYx5/kwAgo/a2JLdhDG52y6fsXtD29psjY4q2EtmEZgF6RRubXH9vQfnNhDpGBmDWj8JrERmpDuyrc9+9ss4312JzXtGH83hxbJd2knYKuEQjCSG0PAZa2zY1JxzDWsoEleOUEQhVYm4ApZkqXSNXAHNPrNKVeYCyrSJiW0+nvFVHAMlD1PlA8dRSMVT0H2mDRPv5f+hF4C9BzyjxjzDGE2LNkoL4IF5Nb9hncLaE3G/RW+3NDYYK1Fvlw7jnK3WxqM7oxOBNKRTvI1ynwBYsvyaXrOtHoSpUoBrdIKdMFZMSkUUT4wxuN3S0S+F/wxTfrJneNPBf28MnXergyt8RExHEGoinskp58U5+qUmQnuevc9a4uWVWxs3gz3wQ27Fj1T3+ns9PYhfe4N9MdJa6grIUqiyAm+OBPl/AoQexiPr9bY5GjyOVnlAywJXkkyRyvamwdgH/T6ewPtGKo3wadq+DTDfJoDZ3766U9zM5/8VKt8zZPt2Z98+sUP6JrZH5y6P/uD2W/n0f9/fSI/1oiWLvzh2/u9cTHb78Qedjku5mn2PJzdPFx7ufZyy3Gx/ecRkmHQFmZgBR3pK8eQyjCR4RQjc3d1V2VXY3t5b+/EVo7ZoLPQenon9fTNPjXvKgc3/vNmdsafKr7QzXGv+9KqIxv2r9mza8OBwzdXPe9+iHZuDXfo79zmBtainMSkeOgGW8yNudu756VPT+DgjmkLL0nMikiIdat3RZ6cAc3NvO5+3v3x9N43HAs2T10GDL43YcctZzX3VHbXAi2BzKvMOjRr9eIVK9dvW7gR2PlZmtodACz667pam+Oq/etzOUpCkpNja+rb6zobuiO7M9Z3H+XgBgCxMsvwAAAAAAABAAAAAMw9os8AAAAAxvkyTwAAAADJ9CXbeJxjYGRgYOADYgkGEGBiYATCZCBmAfMYAAiLAJYAAAB4nGNgYfJmnMDAysDA1MW0h4GBoQdCMz5gMGRkYkACDQwM7wUY3ryF8QPSXFMYGhkU3v9nkPv/CCggxyCnwMDQH8cM1L2TaQWDAhAyAgARohFTAAB4nGNgYGBmgGAZBkYGEDgD5DGC+SwMG4C0BoMCkMUBJPUZohiqGBYwT2GewTybeR7zAubFzMuYVzKfZL7IfI35I/PX9////wfqAKl0ZEgEqpyMpHIp8wrmjUCVV8Eq/wKVPvx/+f+h/3v+T/+z9M+iPwv+zPsz98/sP7P+zPwz6U/3n44/eX+yBVKgriIKMLIxEFSOJs+EoYCZhZWNnYOTi5uHl49fQFBIWERUTFxCUkpaBiIvKyevoKikrKKqpq6hqaWto6unb2BoZGxiaka8Q7GBICB2QhYwJ8sYAOWLRCEAAAB4nGNgZGBgAOLFD6TnxfPbfGXgZn4BFGG4GrtqA4z+f/O/Gos001kGJgYOIAYCAIEvDeMAeJxjYGRgYJD7/4iBgfnU/5v/3VikGUAiyCAFAJlCBm94nB2QTSvtYRTFf3s/yFsJ/TveusfxF/ISDq64p5DEDGVAZjqSlIFPIIbK0IQvICkGZCCTO8OEMjC4k1v3DgyUUqcYsM4ZPO2113722mtvPkjzAaGcPX8l9pzeHemQIeV/SfouyVCjfIykXdHgXYyEefHHNIdb4hALf5L2HVIhoZhT3yqDPkPkJ2R8msFwxoD0GnyKH+JGvZqUndJh57R4qfAj7fbCsP2h3MfpsyUiO/p69zLhTtrCprQWxf2jxXJfz3ajnt/KnxiydWo9U6hFfq+XIZZWZA/E+b18Tf4n6Ct4vNRu/xnK7xIq5WOaJj+kzrNEoYg535afnyS8hAq7plW+Gu2SbnsrzIptRTrj9Kuv15dJ2Cs9qhd8+ah8FIvb0D1+6VYX1HiT/Oxr7hb1vie8SZXPKi7QpXvk/0/aAR1+DdYNZOEbPU5EqQAAUAAAZAAAeJylVM9rE0EU/rZNAm5/UBGkeJABQVpMNj/w0lAKpSWQkra0KSpeynYzzU5NdsPuNGnPHjz6N/gPePHgQW8e/Uu8ePXqt5OpbaAVa7Psvm/evPneN+/NBMBDZx4Oxr8iXlvsYBYfLJ5CAV8tnsYTZ8biHB44Ly3OY8Z5a3GB/s8Wz+HX9BeL5/Eo98PiBczmH1t8H4X8Cpmd3D2OXpksGXawiHcWT1HPR4un0cA3i3N46pQtznMvbywu0P/e4jnnp/Pd4nk8z32yeAGL+ZzF96nnGTYQY4BzJFDoIoSGwBICLNPWUOGzgpJBVb4Cm5BITWzEUZuRip6IVrKWAk2DPWAjHpwnqhtqsRQsi1qlslKqVaoVsSlT1Y1EO1AyCmRRNKOA0dvwmTrEFu0ZDv+Mse3rcMs/O8wsyK450WPOgAPt9xRtg1uIOJHZhMKkke4ZuXW+N3GXJukacaQbcdKVouZVRF1czVy6yPWPXNeufUFliSlebIpXpcYq3TJJVRyJqle9G//tWlm8RTMznlWMzOOhbzWdGI2erfoa8xThMkKZWYF9w57techvh56LTgnscG3fdOqmHXvkcnFApMhydW2b6JhoxMjEcIwjxrXJ9Kc23ylxxygQhlOa1U20aHdZK2n2fcncmmDIKnB9z7wJZZN5BVUN+Sr6fRzxm/kuq+KbjOvYM1jzhLqmV5p66ijzScmW9XBAX8pcqeG6qHOZyhtUetMFK157w8TS6mg08vo8Lyf+mcdjvrZcdEdKh2JfpjIZyo7ILoDY8fty4uh7rnsQqnQ8246P9chPpKCDZ05GKdedRh2ZCB1K0W62xO5ARuPg1jigKK6ccG9MZtcKf+irnn/Uk8JI8UVjfU/4uu6GWg/q5XIaJGqgUy9VvUxzebfBjf9Xtf5GeIc/n98PWzkQAAB4nGNgZgCD/80MRgxYAAAoRAG4AA==") format("woff"); -} -@font-face { - font-family: "maplemono"; - font-display: swap; - font-style: normal; - src: local("Maple Mono NF CN Regular"), local("Maple Mono CN Regular"), local("Maple Mono NF Regular"), local("Maple Mono Regular"), url("data:font/woff2;base64,d09GMgABAAAAANMIAA0AAAACdwgAANKvAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGoIeGxAcgdcQBmAAmn4Khs58hZcpATYCJAOVCguVCgAEIAWJEwfzaFvDD5IL5Yl3Cd + YFdOx2TW8qytkH6RtABdwc2cYRtk5GijW6 + Ir6ACes5AfdCeilIV6v172 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") format("woff2"); -} -@font-face { - font-family: "maplemono"; - font-display: swap; - font-style: italic; - src: local("Maple Mono NF CN Italic"), local("Maple Mono CN Italic"), local("Maple Mono NF Italic"), local("Maple Mono Italic"), url("data:font/woff2;base64,d09GMgABAAAAANMIAA0AAAACdwgAANKvAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGoIeGxAcgdcQBmAAmn4Khs58hZcpATYCJAOVCguVCgAEIAWJEwfzaFvDD5IL5Yl3Cd + YFdOx2TW8qytkH6RtABdwc2cYRtk5GijW6 + Ir6ACes5AfdCeilIV6v172 ////////vyiZyJglaXtJSluAAajo1Klu//snCFAzB8/WUfHK3Kn1NJD7KE0qTpBd+rB+IrC5uDvD4t5AhZkOHcjJF1Ku1CtX1ilvZrRuvhyOfIhU02ksR9J0SqMTRnYcP0Azy2oQ6m7GlOxcLtJRVQQCPwtrw05XpxF8gAgIG2mXJVWVNpo1sFU6gXCFaACBxosxIyMzll3dlbmTuzPjIADkcOeDfA483Ppy/9qFkkRjj9aXsswJPre7tOnc7jQ1qnJHq4R4GuElrvO2LDfexdtDD70KONMk4UBKx5QsZEy28TsHvSFBBqSJf4PPW6x3xwoHzYhgYGsBqlziVH4D7koqPFUlQAYkV5UAAaDLSTm+yDMEb/j5M7HMLA/MTFhJjaxTZlmd8Jfl8N+HdNabLeyTruk9aKJd2aXWinejLALB91GEjMCO//I+bo7/7HvplWQO6WM8THwFIE4v5xxjCYCM8H/iNAxDrVSpJFvKu1C3sv/xSgIu76ukqsnpt2iQVDU5lY8qKWkibwGmXF8HIBKawSRZ6EYP0tzymk/4+v/f3nZVX554zElG1IyVr3F14PQQP7e/V4M3trGNSZSw0Y+PGMOmSgUbEBhhoBKRBrSijcjAIAwQwQBUwP5IxUAsUMEABelthNVEdavzxzEgYSGsU8RKECzxgyG/Ax5/jpLWUrup2IKlW5PD82vzAQccd1z8u3/BcVkcl9QdcNHAccSRcYSARIuoKChWIaKNTpk6N3XWtGf0nDVjc+kSdc65mRHA878fwLz3/XMN2o2GbIyiIAjC0spYKGElW8J+1tTn76zJUrY8hiZpK0aSHo7XP7HmhvbC0brom+tEW2TZHPDJzVKwmHaX/52mYWGwBajvechz3NiyrbO/h+Qh3ZgJQIXlvIDmcG2JvYCndDKNHupnRGyc2zxOlCqjEomqYevZT1FTHoUxD7jkkiJLJA5hKIxGSbLH6CypOkRsbUmVVAf0eKia3hGkmNwB4rsse9asmUtFISnHkp7SM7Hc6aIXF2IFV0kutQ6Lh83JNgS+7/fcKrLQhVZpStWyaObTJIn37+7Z2fNc3x+XZ6dZK99KkyQr+XaevFnPs75nrfXtrLG+ZK3n3S9Ze5MkSZIvSdIkSZokSZovaZKkSZomSdKkadIk+Zo0TdKk+dI0yZ/mT74mndW0zP4Upf/TuYqfWQzVlcdYGRlZcz8VkRgABcY2hlivopYgnVDJ8L/MVbt3uaDu5yfGECQjMSI4LNLsiHV9zpXeoc5t3ykh0bHZq2pS/DZIwP34tTYf0xIgtMsVSHgMZ6azy745S7Qz8Xmd2keOy619S+tI1Cp1sPPAzrJMN+iWJWto+6MiNZdIH15cV26Zfq070Dp6hwy4aSVrOz4QO9Fc+nkxG8VsWWCF6f/BE0cs0jaKRhpzAgPTLeSOr2SzbfcdIInBxroRYdoLhUCHgJSYHNSl+Vo+6FMJVuAHwoAkU4iKlCy5VV6F9h3bHCglXMIJk2w//zlX/+/xZ7h9SfLBI1265sc9nJMGGiohD7JDxzRr7RWu2haTaopYfVRuM/ft1+b1Y0JGdc9DxXQf9QazxWwxsR8qJrvgySS0a0iRIZ8Na4bnc6EoSXZKk90peJ65NfbGoXdIXTB8DNEgiAKo4sZNIK0daPhuf3Y/k4UBZQFgmGjzXzrzOoNGu7LX71lbC6l4tx9OpdZjSjvlvT+fwfO/5gtGBXsEAquZRZSNZAlTXYWIJcQGhHArW1odAfYTLPsicKWFsqSUVo6bW445HXOu/XzJMcdD7jP1tZ29oDf3oVWI/A4hFV1I5FNRqnJTzS1mube4AzHALg4HJpGKVAiBWof/BTqlUs+l3RTOv3JqCle9K4EP/P+fWtL/xqNzpO3e7SwCTquAlFIPDwFfT1/7dfUlz8p29sijmW3eNulOd+rU7Q2xsHH67KZVlrAGcC2o8wDYcXAobYQEQJL/31R72xkC0FKrb1v8IYTu/6KTtFqH1KXWTffmvvtwZ957MwBnQBIEwAiKoihtEEitJUqrMwnUDDiMyvwhZ0nOuXTponTnKqTc9H+3+8eVe5edj3n4Gmt133B/bj+mWbQ0rWHBTxTohVY1ZGLM/J9qaSvgz799e7xVSKkoVWGoGIpKajrczMd9ggNsInGJS4UYZwYKGID3HqmKu5VCsnNp9+5c+qnp1BROr3epojR8fXu/+e0tchAWo7jkcd/pod+pDW/IHmU3Mw1Z4jASnn9+mbNZ/j2KfY5xCCW2t0m6RJUmJMLFYSFsGhXVDXKiDYwZLn4eQv0+d2O3cYEEdRUW92UZK0T5Lvw33/x65xZotgQmVC9foiaYYIQQwgQRhMeY9GrN9/vPLWnjyWNMjhkG52CE0QohGtE0jWiErnHM5G3u52Z/7f3vJkRQW6sYFRWQf7t7Zz+7OcZmf4C6LhyIiGgv+WrjWK40ze3VJOKEIDbgm9qrh0y14shu0jWctA8xhG3YRiChdQfI9P8fm//Hjfc750sbMSZOMBAs7tU+BAzTPT1Eb31+OX2fdJYlEyNtgahVfGL0cEF2CKBv4bb/bGwVYssOZEv/cLSDPZzHFSDuQE42SpXNY4A8A/IKyCCQP8jspkIN6uWgWQE6lbCmOsxrjk3t2Nu9z9CmByk+BaqnJm+ZjDP87kREFDXJQIbJqB4TrRPGggKlwjBoKF+YfGcyzuQXU+emGGSVxw6HAq3RGWRjpsdW2kH+Uk0fRgL/NsqVU7P/Va63a28CWoiLzEf+7MHCJKZmYOdVqVGXeXJtELba3MamaMuUzWbmVnRrfEcq0IU9P/Xjz33HyhZ+fT+NLeqG/28ybBilaIm2rGx3cBQquBQSWKXI1KDTTBnOLPY2QyKDjEdJz8LDp0S9DjPMkW+9w9BRCUjFS+SSo9QU7boNOfWBJefKL8MWRccmTZ5iVVr0mC2T3kEYaISixUjmkK2C31S9BuV8dA/BRMGhomHklqtMnVbTDMj7yEJejzUtgUYJi0Qc08AtrUCNZv1mOa3eoaQoE5HRMkuVr1CtNn3myvr47ACMSgGfXKwkTlmKVGsy3bBsZ5H4g7fPSvqc8GNfOXlqvD08vE/k+wVP7jOn4tOFY+fLtWNndOtYKO4/BPwcpYWP2/nN2g0m98rSjOMwM9eBvx7dgTAPEaG/jgHJ95G/mxfp1LUvyMKd91BAoZWzAfxPE1/8noocPV/oScKRSaGgopFGByEggpGQUVBFoIlEx8DEwsbBxcMnICQiJiElIxdFIZqSipqGlk6MWHHiJdAzSJQkmZGJmYWVjZ1jt6PdzlRpPIa99q/6TFmy+eTIlSdfgUJFipUoVUYilskViKNSBdQarQ7F9AajCSecnBXx5t2HT1++/fj1BwCCwBAoDI5AotAYLA5PIJLIFCrNJv0ouQkQLrjoEoCUAUg5gFQAyC2AUKzENQC5AiAFAFIIIJcB7LobAFIEIFcBhA8gpdngzqg/R7veHgP8qrv2se0RBJm/L5fmXBa4Xpf1VZFb7C28j4HB/8PHjx8p0Pzj5CQl1M504qWLiEQm7bi+YBO5T2yUMTVR+8wcMeBC2roGFxmk79DPCj5jQvKZQ0rI2q6l7Jqhc/bYXe4Fp+YT+Zu8WjAEoXA+LINWVIwk8Zw4TwZJL8PS235PtmUgybvlk5s2anrXKsaP3ei1j82HRln4JKqqVD11IjWvFcvfL5J8yvyQyjACj+Ahh79vFXxhsaT8LVYRRKEa+9H78b6xi/ut5IdkO+1EknL36tQ/tgaC1CIdjMyfvD/1OV3mlnUF++8Z8SDF8oTcqODnps6aCGCDp/hldldhW1SCf8Spi9Qnx6BlaW/chRF+8/wWuJ5+Y9ayK1s+kW7gFT/4d+fvOeD1X+vDOMY5hnji6FPMp+xP/k8pFlhjlyPOuBY38A1JhlSD2RA0xJVVVVd60Kvj59Fnswn/+Xvb5b+ffZ/j3vTqQPZ9Hlh4CEthA+yGDbAV9sH5qEUrZkNzPXEd7arjusF1t+sh1wLXl0n//v+01bXuOnFduR3dxrutcdvpFuV22s3pVnebuJMSWwTqrpwG6eTu7O7nnpNm0nq6T9++Pe8z/807xIvhZXnRX/nEvwG4AhlYj70eQR5pIMIUjjAmxhyZrWaD2WvOZCPHua74j7g/Kv4IVbUmjbXUlhxLqMu9+jt/vvun4U8HwkUMiBfp3vxAACIJVqRO+7Y0j6vFTcQv+/573htvtda9vHrU0x9/TZn2z4xZc+YtDcFQTAKjYdIYfdAIg0caZdRFjD7GmONw2MrBdjvttpezfdy0WCQawBojYTgmhVEBZBvOvNHqTxqBO2FgghOFmyYvfts5OSpYBH6plVN+Ba3tkfrWr/4NbFBDG9bwRjSyUY1uTGMb1/gmNLFJTW5K03qsx5vNzjaOdthlDycuXLn73wIh8WIYJomRMQpANtAT6p3Rsffg9/QYIkqSLBfUeqadwGfj/vK/YIgMMUsrtzFNal6T2tT2o0C9HernLhwJpsDMox77Ys54W4MsFxk9mA/sR1TRcINEezqSwFmOH2TNxl1ysJgxH5dcQ7AYWmmVoRsKLfes/b1SxTnmoSeMzLDemAIvg9alEyXbGIncoDM21gzMu86gPXw97GwJ0h8Sm22e+DFhcUz8lPDsSPx8vXYlfrk+exJHrp9T4ugNcEn8egKunft2g9yDhydDyLhW8eCpkEKQ+ET32lBynfH4ddMmWZoDkkTbQG95ZFZntTApIrCQLJElWyZvXmrV2WSFi5SilmmiJOBOJ47WGpcEy7PfITUeaBApxynnXeGr3lNNXjhhhUb/GWYZUkwdHNcmfGqBlxu/z+uguloilcfOuJ2Zt3HGWWzzkmbadFza8nbiEDxkWOw6Kk7nopuQVA0nJeRU0p5xQQIFWG2feOFB80xLxzocLEc0fq5OvVWB8z/1WkB0IJDg+7P/iW1EvdcmH9WpTH7nzOoRMqgYuQtYAg72/sMCcJN6Uy9b5Xt91e2x/0m84JLLClxR6KoiTZ576bW3WrRq16lbr34CQ4Z99NmIr74b99Nvk/6aNmPOIqHLdm12w3R5fEKqoR4ZG8WzNMvLerneNu3hdLkpmmHF6Xy53u7x33//+x8nSJphuUw2ly8US2VeECVZUTW9Uq3Vz495UVZ103b9ME7zsm77cV738/UutfUx1z7X/byfeA2h1uX4ycu67UcKRGeyuXyhxMzCytrWHpYjSqDRYQYT4ezq7untGwSBIVAYHIFEoTFYHJ5AJJEpVBqdwbQv+3+0VoaHb7DyXzdd1xuAAgv4Q1/nOQnEpZYFr9b+e4U5H1+bbo+UFhqo4sw71pwUJ7DV93auMrdm1rs1Sg7sHaJVQuE1Q2su/6lnwIOGa1JPXMar8XISiBkuBiFNNIU5EAmG3EL+UyIWEQ2rADTQF4sQCAH1Z+AiIV8AlYs647iPlgzq9VRUXFkGSOKmzh3T7wUg69pKrM8q8AW/7o4HbUgjnpyfly3dzAHqfG1Q8aI7lgdpaKLahecxtoVIQrRnzqwi/OrcKt1YbgMEzwHx+Mt3WHi20hMUc9mST3W5tG1vDS41We7rcnXsR/fYkD/r5WJqW/TB2dVDwmIWUL+mimHmkDVSC5R2WD2YKe/SaomrzHrIwZVXM+UDOg1mYceVEEEM4xHPzc88BQ5U3BVxpPhyWRQAvF4mhWMydN5dhkRLmB7hUr5heMUlK8PiMjg232kohouvGHLnf3eNHWxCCgY2PlGXC+sC3p8XZXFwyHlSl4thfDWfUG3ORuKVnzicuWmCytRR/OuszZYwTkzhnPcvdHbcXMno82HKI6gpAX21D5OXa6GgAk0+S664qYL5EZwReLkLqDjJBGT2jhL8OAdG/uBf/Ku+HOLVtO0WdC+E4nL1cPhwGhkOXO1uCndwPTPMPOU/k4FPwRhcSeD4yuiCWQoxLD9kUD/iFUm4aORd4/Sd2Okeie+PDAbQyASROg50CRImPjkdhLdewrP8COQUjhhfdfWVRAA599VGECx3gGOfitqDCbdBgr1kAKTUXo819y77vwIZm4iKiUvEparaE8/stlIFINBapOWfHF3pmgjCztCB3BjQ5YbMYVvVKcmgrsArkmpD5K+juoTGWV8GQIFVK1kAsodlG47f03ZFa/JoNszNUlv1V25Z9bwkzm4vZ1wAmf51UjTfulvQBkB7pjEV9ED96+xy1+SYBHMjUJsVmh6NSSxpy4g2jSyEbTqYghuKMJoEoXB0+8pXMvDIaCG9KRo3XM2USQpXe4jAKC5Xnps9yhdTVVF/FwEgdVr//QAU6bDdAyCKk6JNaDDSdNWUuCyKTS3oZzcUMdQzQuGYmK7REGw2PyM0QOZWGWzgcnbl/G3ucik5M1a66RbUFUJxucod5k5uw3qtdbyIB+03w9dNBG0AoNqsUO+3+l9G6vwlWvPbZB0Va+luVKRQ4wiFY7JWUHMD/bEFqhGRYyVWDRfRx2yeAgqq2rbjIaocvXh04163v8QmoWUTlPoIR6XO0Gbi1uHylyeaiDoRDLy46ey28YojHWDMqbtifN1HV8fQ7zvd2QBVMXVuC26uKv2nUJUHoIwbQC6+jj8FSM2XqDEeeDHJTQlz0cG904DzEREnCUsqEqIdJ8tMqke8o5jtJJMGA4De8gAjdVa42y2oOMTULDv3yktd617P19Vsm7DDy9IOgGy3lF++BdC2HgoONn+cN63BFkLmTBwsrr1TXDYREpg4GF+XrsD6PsoPodmmoKk0HBTkpg9LhWxHwJKurbDIhsk/azmkD7Jh0vsZ+kuigLIrnGT3fu3+soRZFB3MLLTKclJUps5d1yPABmGRfsrpAUx13Z0/BUi5BXoamgzm7SeD27mjbTEepMG2ellYiNHmzxf06dzFU9Ki8/hKjcoBIuri53KlaxrXnixg/PNUqTzwtEolDxQtwdeQcpsV2o0oMzqsrTyUh7RdtIU6yuFFRTdObGi7oljfmFlxJ385i8A+PSttlL2s86XSgkkMzitZmvhx7Qx2AKG4XMF3wvJDpZwq99M1Kuvb7llqWqJje83G8iYEixVAtVmhWdGYxJLMi2gzzSqYWYLpu6GoojknFI5ueL+USUjJxO32xscs2jpW+rKyf7D5sN5T1b4GwHkishq5jKSPiNbarIrpBIVnu5YA/33CvL+b6NjtaA9BsqlBvfm4LKuV2kpDaeg6ldUwdaCMFKqooe7eJF0/c0y/skHnfT8kSLtCHYtiAbNItyFajLOaJCt1bjtuLKtjcouiQijuTgt2s320SIvlmnn0yIwET8HQ4nyAhDNut4IXEUZR/ogkAUQLZduoqGytwI3KJrRFMGqje6XHB6WJjqhyvuKbShBf8OXFhef5AcQn8m0Expslv6o7bS16Q+7OU3JyLPnUu8z6SrH8AHfqfwrvAPfVllfZ0la0K37c6UNycAIP+gCJXnaF3LEQDRiJZYgWxayNMTeIpBuKDnKeiMByZMlP+Jx7TsCNA9Rb9KiRiFDDkuhaTcnLuhg1q3GY04quGulFsR2/x1mFoR/H9PX8Lo6HivyaOW9r6/3KS4qqrHs1w1Ev/Piyqsar9rukMKJpHip685FJ5wzf88l8xeVuQc4nFJcr5p3MH2FFOiRJL+tWvWiCMda8lki7EvellpMZTBW6p8M2y37bkWHjYETCeCxwbVY4JmhMYklIQfQYaLmOwrY2Nyo0HHWEYmP6LBJHrs26fRJHmnS6ulzhvfy2VMPmVr5sa40K4meK+daa82GSp8R0/uQ3HpMrfOMk7eK4Gr4Wb5n0RLcJR2qvTusL37sx8Mk0az7cBU9mtgmAdJud6ovemLtoShxD4sDzVZvvCxjSJsogq+k2WOoe5M6R3m7QvtLEKSihEfuRL2nq2HblXiW6iAizRseTIChBqP4XzIqbQnKofiCbhhDPkT1Js9i7PH1lkG52oDTs1Zrizo3b0T64n0EA0E/Eltg3Li1TAC3FmpJQ0o2k/Qtdahtiw7naOsMCXmx25J77lPWG4sDtcFvarg/qx9jz9TrrZ7I6bW7H9fVIHlFf4oKKN2diF14jFO8YoOpjnDLWKP8ldUf+AABh1ZkWQHWwHJOvXei5/gTUJDsm2FNPmqCEWEb8PKI7kAH9GDaGn2kXtbCb3s1G/sM4DG4nnj4s1WBu8OhYNdxbF1erBRSs59sGEQ6s99bDgbUnm253g0OY/TgRy4kvK++Jf83g0JO6yq1PR3dsMYGDN3We6+jPS6Mq5VIP2lkarvYuL80/o7Wic11e9J7c4ZObOtz5gYG9jT2NM5fr9EdqIoX5tDZXRz7CEy6uLlAIxQpwutwuhqF4luHq0fh9poaFVywUAw1KR2ztNfktKat2A4+tfi/lI/S2mK8UTWLZ3zEmfySN4rUnXif9oWOk10un6EC9uynj5lrymRFY17UxfdQN9doHVXBYp2+/1JdVq2GOawDKUgnoWLWgzWmGTDAvcH4Y1Ugp4JJ59I3J9dmIxjM7iw/KKy/iXA23r8ZUwipbfuNOZx3P4/s1r94LxSgW1UuhiN1k+z7te/RqpaaHsp3kW69yOsF5ecP7DOeJvEufy9VVk75j1srMPXXIzfKiL+fOk9467F+16GqOODfysCJ+T6KIrUesm6kS2sSMA9SE4gQSmpiABFNaz9zSWiqGK/3drHnD0M6m3uRyhefKAYUrn9Z8zGU1baZjt9MXkuo3/XHfjRmaKJ6RC6rclE1fPewnMNud3WefhYr4jBTPYqknPYqN6QEMT6UNPkOHdTqvwlNWwsY5rgHFbGB0WBL9t6Yk5qmswB9NmyKr6cHTb8PGfSzH6SJMr1/b5NOF7zUMp4lMpTIYNnpKF2c+nWsXCanvBXVZrSq3GMSk0mqByk4VDzY9vyYb7vY91hlVHU4EXx3Aktq9FlDsVOseky9YKL8qU7flsAwIxeWqc9gp8fIIM11Oiwrl2AwbelP6Upcrpoq+OBh1VKbKVuE8vPHud6GYHazVCouaxiSWgAjRRdy+OorVst2oGCwkQuGYrBXGpoFpd4VjmcaIJf4S0WMmG/SNMEbcUHwcXYTCMflE4qiytzyB0SiedXLFOTyd2lZ5dVFwFfw2XfKS7Cd8zf0JxakLgF+jk2Isxg/2MvK4RnRqyGb4OMVEMErlxRyj3AMJ48NeTNZqfQ7QiicDrMT80pKlOaw5mVnlc3BjJN0ebQOH3vK7Nem3HiHGCtCUnp8VRk80NLgcshaPBIhO3NlcHl7Um75XXWFspHqYDafw+3nJfu9NoMyS7t0cbAW0rj9ajwM05U//SbpusABoVu/XzQ0agCbvZwlIE43LAwAVDxprFy0oo98tulayqwYygF58X1biNYzhSn0cBcOZxL4y+IDVsW26XPSd3OmTs7e+HQjhsUNI+BBXcogjppZu1L7cV9TFld2ya9R9xrxVrq7VGrQAer/sd7lrywXQ8u45TorSUCzfzWhEyHY2ABYGq22shcEdvcjKJF/FGDTlw9o+rirN+rpc5ab3I7xG3bV0OrpMVxfvn103pMt3Bq0YA1B8kBG/m4DQs24BeCf6BGRN79Jn9BV7cguyKaFwwcUt2C5jbkl1bu/cktRsd/YXa8UKduXmiPyVYipGDkG8OUHWpQ0hnldj/EyEfbe8WZQyamltLwfnVXg3ieNaUQEfGIzSlY5yo+Ac3ridQiGM+2AmjBsc8C8YC0ZuXtWUpHbXvpp7QA6KPYZSoYu10U2hc8cfvC4LvUCPsgwI5+D2VGCa3QaQHtMYWTVeRNNEfvCW1PrdqDgitRIKx8RLv6IhsyB1kdpaUFDhftcMQOrUZv4juYWBcgRQbVZIKTQmseS6ri66LV1SHl4fR3/l5HpF0L8jFI7JlyP6Tes/BaBfkU9WXa5yh+S3d8JrIX5SQbHnKzzgB4W+ZmKD4g32VcwVA6XEeBkU9zvFALDvWrTvqcwBYkKxgtRON05LkWHjry0Pw7NAbVY43NOYxBIhRvQwzH6jYIeh7YbiDw4VQuGYaD6GqPU5BgafZH8ZbAc626d/Fr0+d4aUfIqrR8st+KgSin3h1aDNi8uDc4dHIjwCGC7w99QR0rUGfnZYp70/0pdVyw/EClNZfAsd1n4LJt7pMlyCv9gs5j5DF0ksTC7xkW+sjf+eU7jRfe18pVZ4w0s+R4clTfLWlK/ZP2wCVU7l8/IfDCWHvjEXWHQchqoPjjfLOs0RHs4q1/TGDQtEJdbRsQ3cvB25XXqzJfJ1FRO5pVyCWqJ/xrzT6ucDzLGr/bbQsnyIqM1SRj1VLl7Y2Hpi0Ui2lyHbeLh/RRt/ivTv4Yf2eYDW/fS2kXYV1zaabXhQdZdp3B5oT8ID8mKuy5Y7O0ERhjfmvM7/nNPBulZvbyZXgwynAr2Y3YSQBhyymadHb5BIIySFihxFsrqX9W6EuCvnyindRzDA9ETKDEtYDbk+EwOs66nck3ygtIkeFP2ILvmd9LMN8OKD1A3rNBZpIat5czq7QhguUh7bQLOL6BTPN0Cuki/3FVuErCQEx+RAhyT1QfAe9wIBVwBBhyX0/NaU1GyHtFSBJN8qdhhXArvfmK+7D/HaQQ9YMLaI+FVsrUaJaD/N9yDAmBn5frmHCL1f1p/TmgFXIjJKPahFmDJCbpBt8FSRC2Bvh1tFupMkvJQ6ksWw9B6KYLgVSNXlqt9EPodq3ewR90xVUC0BaWN6WPS53mlDssMQ/L4W9swKg02Ahg5L8OqaWW6VHRHfoX+OQRbtqgl3ytI3to2niR8jyftwAkaMhExdZb+Kh1F4MMQ+HXzT06IfzM4avpdNnMnUkqv8hIczYBCKExBp6GcrKqiEinOARxk2XzZRiZSo6R+HYjdNdFhb1/K1rAGXXfCaDpDGUFwQlgLhY2O6w9h5fArPHuEMOvN1nFc+r3Rum7GT3wwZGFdV1Gm0jel10TNG5w3JDkMHnDS67lK55UQGI5eumnIvw9Wl1lLdUJDK1ZuttTE954LF+2A/XdaWOzs30LyKv7YLmvnCN7ENNBJE+3JO/W5q025UMDRV8eFyTHYcvMmf0G1z26BXndhnWy0j5z6ibS5jeD6f28G8KloLPfEDtmU9SYVuoceYHa6HU9s5tbO6OcZyxWB3caKfLPvaBhqFmpKcc+BX+iqHCo5d/AF9ZpYx1XEwl/4knXKmDYazEx12qjJyGnsXGieqVZ26YNzmWJUJ3qrgEb9+o2CAP2iKdgmKE3NkJyyNDdH2Mm9Ah8Yxso2yAfwHjIFbSL6HCe7QBzvKukEGz8Jt4QJY5nZNZ6h/+Tg7zr5qNj9eC7tR0aJji22WY3IWRl3z3mZAfSw2Wper5KGPc6PJsfPSNhWL3tk7fUhuabB8B/ec1aBlEOHMie2nISDauDOBh9eJ8dbETL5ijYlGGRPnhKW50B6bhWmMMJ0AKKhKv7sFSH9cCkmvU+fxlYoDiKhALaDbSTlAdtcU3DFshVYEiO9HC7IgQDugGVE/ajTcSzfOsM3KKPMBTmBLlTlhG72DkX0R0RqbKdwnkY1H6qlQSt/Puuo2JlDaeM8KKC3sqAzuRZqFC610ZK6QIDCNk+vsFZM2cJlqNy+Vha4YLRduNNsRNN2fMG0rMqjxn0OrCsPCyC5ZouVTZnAXQBqN8jYyqIb3Uw/zkgRRnfoDVAt4WBUaWW3zwNKUN7WLPpQ7ekoUixR4L/UgeRS5Xwa3wx2kAEl/JJnpEQkK50+YqJgQKF9OiIjxrIxsA4gWt5nDrQ0JaSQuC4eyfT8Bk+6OCaLMe49vQZkQ3K9tHogat4oOpWOEKxs6RRz3XshAHBDBK4Ob9s8RjGKI4ZEgbPKvo5p+9bQcMFc6KfyNppb7TVuX7GK+WvMAv6wZtQB5pzXRG/LFQJOd0FdrAcB+35r1pRDX3Z3WZI/VC2GKRX1vwC2oR8JHtYB7B36Buq55PbmrdEe+kiYgLFJdB7gfkBJUc/nvhgeSXNBoSU0RNNcHi5fsCjV1IeYwsmogWowywFUhiI4bioBqKqK6HBOKqu09sYOqJgQugysVEuX5cj6RLya8oOPk7M6ZXsb3gVy+XNUjvlkDFbVrhnvReMTJFdKUD8HllKkNDrLnT2hTiwtQNk7a8KJeRpYaRC8KWcClGFvjtkUCZeButQqkPy5Y3ksYXJBFKpfBxb2WosJ9X+f7Ve7Yyf2+357sd9wrqDrqAkFA/5PurwACBl+jAvTsW9uQO0Do/opJAWRooEBZN6Os+TAK/wSN0/iht7xz+v/2qNhENDwogD3Ibg8A1N7SqHo7fnNgUZdeOmf710PMYduuAVCI8575xS776P2Sa2aufAAN1wD5BZ4B2g/8m8wmCDBXRqDr/3meWKP2jf1rr7KNBWMEwv71GdEA/3SXTsfVuPsYPqD26+cc0+mFWJ391B65Eb2LZO/9XgFB1Ec7W/Ye9xxq4Oi9yPRV+fuEAKngetIr0FfeH6Ddamhwh6c8B8zch82o2o2BKmV5/85zGLPcObGqfTgA7P88B5vOPtRYPKvbdZ9negfzL9dnzVOMM8fYQdztONCeqdTDIXrgzWmguVXPUtI+cmCrOr/YPvCc3mEN8IHBXDPQ2Z0ga/i658AE6uWaqxz07MxkX8nWUP/9J5lJbWFKjKVnOUXSjfbbeiM6v7PHuPcheLZmlO7scbGXIFjW7z1TdCR7lE1CsMnmR9Ii+u+uEe4htOY1NVnmp18cxwK2f4Ni3clcbws/xpt7oQ1j9FMrfyM667KnPkvUTEqfsbt/iOaj0Vatd09WgPaRPBdLmvatZsQGOKVLe8nu59TfbDivZcBk4dxA655Td7JudsHg+G1NRpSfU0eiPEsZcyFuZz+VDTeiZ1/+vKcKwePdozHOnzsYngHvPV73uNnzYr5CLpXGe4+VX0j2LIPtS9yZeFvz3hGA/mcUN9VAajQL7x3O9AuKJDEnKZpr7x32nOb0AsxR6zemG9EkmLG4kUMQiRFBMrbY7EIQzvfCU+6MbW0IaAICNq/3qpR3D1FkrddASkRaZJhL3vg1WOhYeWVM+/3n/K9X8r4z8JUyRl5J16O3RNQ+6wcGnI0wx29I9Pau6J+vo0ic1FVrcmNZsCA6I3hoyj85d3eAiEitoD85FD67nNEAvTpEG/EnH8KysSEoJwcnYDwhr9carYLUJw/ZhX4Ztp/yejeiMc+C3qtAEBcjXGVB9JLUQHEzvgXKbuWEpIk7Ig6jEP4IiDrbhfNzPAMqb6UZBlaOe49oHvbEv0dIvIGckoae8QGfIl6XgY2LTyRmyOfv0rclTuljaa/Erkn/Ocq9eNTsDk338L8xPQzyvXBvsfQfilzRFXcEInUrSekyDt3/szXzbQaThTZ0/+8D4ub7FCrIvTrkHvj+G4FR2v3akByIc/eWBAmPka8IchQqRMx9FHJ4HvlK1jAO9uLdb0Q4A9q5XIUmNei35qa7P0rJ0zBdduvT9G192kauTzO0fUaH7X0TT1WzYZhW4+7/FzEwmGN3fzSQH0VTUXWBDO7+ewFqn6e0l6jhCdKASju7VLmOsMDumn0bQrrd7zfrj/VPcUOBwZXc1AD9bXoQMKhCmxRAgLr95YIywWuin+z+dxyqZXcRhSZX2ZQjYaCorb4V7watO+2SbrKzF03cSAc32jkk4/fSpb7ZDqjwFrorcPdc/C1zB9DAuQ7812JopzAoMjpZynkXV6iFuMIGAbgiiKnY5P2LPDRsiPLtjDyc98/OnMXlzA8GQh1wZ+ju/g07NFKJWpK6NwSt8EZZmgSALo+0rIaQ8iPQFUy0wyH3aRr09kBeKu7qo5Z5Gle3g9dfSyzzewbiGL3vc+lHdoVGSpUAEi00nwXz78oXVh+e5i/KnPlZ/wf/mmDKpHroehIrTHj3Xt/138AJbjAwGA0NYARlUPH3n7l79noLkO8PJGEu237PgK7+MX/OQN0ZO/L7huSbEuNUUvolmG/+ghFcszR5TTnqwObKhI/AVtmpF75M2ghk5Sm0fwdZZRmSVjvTTYnyPmlpX8Ctj/U3PP7pdKmw6Jb2/x8IKfPBuqaMiL/HIhEtMluU0CG9LOQS1z+L41gTEYkzmb+kEfl87LU27Tp06tJtgMCgiWlOONHEk0w62eSLmmLRUwYiz5Lf3bD6/tdf/6ZmL7zKlnM73nme9x24Q3f4jp7fBVzQhVT7f2ej5bYevfr0e2/YBx99MrmVUy8hEJqt7rirUpUffpnwhz+09dLu+NaS/NpMpNw1YtRX34wFQuJoiSIANYTO/0sKJDxVWgNBqODhPw35HkRl8Bwu+3iqWyY1kM5k+r5QE4sNegmzOihmftLsLY1IOyrUbiz014XDHR7kFzji2oONmfK4Ph2WG67r6TkM0/INNHGeYDmHyeSnEHY0wW7W8gwFa5LMP78JHLNx/cg0jodKAbPw1QVFTjWHGpa3UzNRGdJ4ySLgdNHaAMbfpGFgi5TlMh8MWhhEq4mBpIjevryOcgo5urKnax1EBE6qvYsOJON+CxSWjhZq3nnrNNMcmWTv5dQBbSrO+OqBoorgHAp6cArnrSbNbjehQfdH+wWRcW+q2+UPhUYPvqXQlGq7h1lTKzWqBeruSyMg6eV1M24HtU2tUsuGuoLd7MEqJnquFcPAOefRdTVno3ZYWarcJdowRW9ONgYov83fam9zdlqUdllW3mUuewO2xG415hYDZhI1BjVPlKQzLFF0FmMwTy5d3pSGYG+DNFLAAlTJWPV2WauaPa6nirf9rJgjBcyTKmAc1vSZTAH7NtXRip4PqEL1KX4Hh/We6tjteFS5GskAKsi2iMUDtiGLe0MeqtWQUB2Aas4AmDxRlwIk9JABu72V0Ajp2fC53Qpun6mg205vVLmJJGSrKRMhsY0t6iptGxX+NhyDSrksB7UufDw8bLATbGWnMeUKZbqZCZxp6Mbh6Zvq8GQVw2jOcQc6dHnMN4ZZP1wsAoJOVL2bYITJuNn3ueyil+TOUgDrZXq5hnVYxww82700win5cnESRo86TOjnvnS2Wri8DoS2LneakZkOoHd5NPyML4ST2v7klhNm6mHo0yxefLqWyzzjtFVIdwx71UsvNCsfch6lmp5tc5uVH88mGoamXq1YaAyoSS6N/CDqplFx+MaY0UmwItM+g6esYr2RjYqHggmJ1L9rGBkHvHb15kub+dk2V+4v8UWIPEEatLhDpdu2crOZi/itJF1hqpCFvRgz3qtBSEwn1mY1ZoL+NE2ic6TimJ8NY8REl/wG7U+dBZZco+2lk4Bz6ILzRC7D6FB/aipM+l0S0WLdynJguopCm9q9lrB3liJ5VV4XGbE8oyw2+sdvOmTKPVJhgSTlt6oK706m5WlIYcQw+jv/81QLC48NGYaJSRJ6h3fYeZHKK+xN2PUPKL5abd1FVup/8ETcBM8f+LE08TpL8o7OLG1wZHQRxU8GRQI+S0T7uctP3wvwi9egZpUJUZsqLxjge84A1lh/2+kEdYwAL2rdHQCgAf68SdzlB6AOwAYHZjs4CWS6dAPxL/myH+AaALzu+wB1oQA1gACYE6ACqodAAPTeEAQCmFMQcuzngXYPBWhNAHRSBOin3/9thy1Pp3VZfFWqVe3qVLd61S+BhvRNP/RPYk/waq+1ix+73q/8xu895dmSeChCQaQR5ot8vCd+ca/jJbyMl/X4r+31oaCO3HjId1mJKg/UGfDBmH8fx78gulDP35oWy8ZKq2xkYzuztV3b1l7smwUVU1zp6RnZuR6aqEk0KSdXmRg5BWUSVYVjJlJqzTbHfqdtOXfxzr32n5144PmZCF+LSCKKKEbUIkqFfLgIk/Df8L9Elrgl0Qxm75BNZ9OPxcaDgzfiY/JYYgnQT01R5erCVJ386G7f4bOvHe90l07+1L945OVC/x5ADvYFL+a1S/t7zit5PSCUhu7Ak+eSYnfUeqzfkBHTD5SE7ygyIsaen7++WH3J+orCJF31aD+Dk8e5clzMuc4pU6Wb/kaCcsE9QaugKZj80i2y90aB6MXWRDR3ArZXZFT+Y6niv3KYTVmdn+VEbs/RnJ5xGZsxGZ1RGZkR6Z++uT/d0ypXpH5KlRupoBg++SQQSyghBBHAITzgsQNZaKJuUZeoU9QhkvDd9KU3Pbmeq7mY3GQmPf7xjU/cf0de3cPgsE7uS4XclOtyTUqkWPhyQc5LvpyWHDko3uIlPNkkSlFIFO6jixLisOEwDsALnvAAD+5wxRaYYSN00ECBKMh1io4b7h7uGq7e//n++/6jvWphmiV3cZ1r7OA43se7+D+mMm6oQ/Bt39WP7sMDpf/+dIjjgt2tyVSyBICv7APvHe24eC6N+l+s7mhRGlWJle1TufKYx2mWcZmVInzW7qpk651W9tFua3TaFt0copdj9NseAjtiyE5ffbPLuB/2mPaPkyXi4pKW7yl9crfKal7WWms/Fy4OeOSxg+rV8/HSK4e98cZR/d7zNWVK8HAWVSEZoIciFAlFFGnSEjExJVGiJBkHRwpNOlIZWeeEMOEyJEiQJU2G7EEWGs7IwXdWiTZleoZ9ragVlBWlNwAaR6N2FLe0Nh4Pq+XJx3XJZesVK7HRHVU2q/WAmcfqWOg3wMqQD2yMGLPFtH9lx1vPuK/elZOTesewW6FC+xSZL66vdQgNNaRIqUVH94AMlodkyXpMHlsdDRpe0qLlFUOGXltljTfW26DFJiZaWbLWKUiQHmFi9IoT570k6Ybdcst3jzw2pkGDH8OnqP65NFWm4RdZsn5jY5tgwMAkU6b+yJDprzwXTbuikGhYhFkAFCsBue4mRJlyJLfdJumJJ3BvvEHWrpuUQYPohn3AMGqUjG++Yw3HUUM2ZwI9PuSUq/DIPS3qtGrTq1uPfl/9IDBhwsfhDGp8WprZv+GzQIG+KMIvI6+zyKDhq2WW+UaOnO+MGBkTINi4M874rUChCS+89NeQIdO++uHfHXqzlMXX2WTRIGLPntiJcrJWYDg7GmAYUkHe5nBGrbD8tNGbDpJb3VPw17I9GhjDRK2Yyyk8V8kQMLfuYAPrNLGhDS3Y2CaWbGoztj0z195Aqp4fXGkP/AftJ/OfLKnAz6pi7f8XmfJdUKhEsWtuuO6mMhXK3XLbXXdUqlKtxn21HnqgXp0GT6pZiCrV6uqFKJsFmVITItQDnOoSwAEAsIsuAEDPAHvqA7jWY8n2awK0DQD2Mr1e8TbgmPNhieRDHnnqWdepz6NOl8Zs8M3+3i39DgA/iq4Gjf1amiypsmX8tC2V85O2zgZcqMAVWz2VWgXSciE9SG8rQEfKVa3uaM/du3H7Ex3xEXDeZ8CE94Bhf/nNIW3wAo3ed6+pAe1dr7nSXmgHi26QBEzQlCodfrtDTD59YSU4GaASEtSt8Z07dIIz8VHr6UvUjSIu+QaO5l6flh6jkY0eUZ9UncLUdSgPVSy0+ZjqYwdKpS2Krv2TR9lF2p+cQ8qkLk+VSLIZTbQjTyJo6kNhyvUaRqKJ/HdBDxtNZHxGpJTyjhChCxPltZtiMetu7ayhEq9cS8HTg4hS+dS8YpaECCma0CdxUXJPnl+mmAaGepjEP72OCPPGb3TwpuiEaDvMwvLgJ7k/osP3vnXrKvv1PMuRzEl8oyJkVXLmfI2w/4G/WmWFhvWd3LZwn9uKjDZ401WHvmNilaai0HmKXhQTZopVlCWMxrgBQWeEfg6a7WqPEQtYJ+wWOqXULj9ESMhcGHM4ekeryOCGF7jYQ6lqJEzFnzfMDZ+Z8EEbD2NUSy8vN9/XYI+5BB89Z9GSKkK7iIXpYEhZJ/n8ks3RYXT8xvm4HSiavk2vJclbCRAQjyTvdllfAvxpOBziLMYsu1uNUg5cKFefsvFe2nEEIG2AGEB2qiPPMHb2vSI553lcqyqTcsjkQOesDUdBlSaxkSZETMTEaydev4yP3rxO93MpJ97Ee3mv5mGVNtkJTynC3fmgkW8hfi20yHKPUqVFzCSs32aklJLS0xhPaxy/hZAd2U/j0NYuGnb/RAy+fYUIkLtgvZ13EFMXa/d6769656aT3BQCzPbbTSm2gn332/7j+WVxHvbL98/V42DG5/v54CUv+iWmiMEMDQAEABYhqhQ40SoUkMGgdj8e8uOHlZpOM/nxJg0f314HvNayasXx8/tl1pyeVmIn8sIytfA+fT9LTZi1yybFIWKBwCF7igv5LBGKdaVP0lqn5eNWDNMMFbvFg4S9c9MSoymMSZJDu9ksNmV5yfZL6UIEbsSuuCQ8bJK/C7hJJEBIlCazTIQA8gWMsWmSxjEAiqD070+vlnBjrGywpFVoI1a6+pQteq2X6kgIhFAuSWZUIKWOa9/3CXMdAniwemSPqK3T6fUQv57enACmMQF2S5bo9SiFQugQShxAIlAFEbDwigAK84XdtQTojpLsqqfM/9+/TQ6xM9HQ4uLWEO311xWEkrjDm2Gng4KErL50Cg40CK8TGT7oMhgRD6iggKYyfu44bcs6hndCAK6+ny072AORy4SskXLefZSh7L5BQdXF6HaE0+bd7wV5n5C1tufka2djupN/OI73u90P+fK+9AteaI54bCH5ypHRQSoltvpLjRr9LxyMoxxqgABVeU2PhKyIyrsIihd8y9/ng+udX3WheUrqEF6aASeZVwS886tudBOgPaJEg9rWd54ZBO8T4qPYdiE5tvo1NhYQIPsBpqP+lrdf6k+vf3itXr7I8EOB506qQrKukXsA72xTEPAPftBJgyQeztAIwpkkNIFJzCg2AslWqrEEqxiHlDhsfK8wjI3OCoucaRACzlXJVIaElJStsjRK8zSRUoWo8j0QojALpHQsKgBn/6bK14nqSu8K3Nug1FmIgmOpKKMNApnSpV1Z0oRe6dWEjIJqVEECiKUML+W56wG6wAi1TSLjrmljRbAGPRtNIyRelivGchVAz/5IGNHjd/KpztuZZqa4ll+HvlpqaGjSt0PoL7tNXVnjy8sgleKpCieOXkCXRVcAhbPL4/cYKQ/nexeJKS8Q2b/jddvVNJlEmS1ytBPP9RD6wLgY373MtADEOzil1hD6AQo9kL4skginomphYeGNj2NAeBTExUXoKXacS0R/+odj3PHL0L1BLWLY1Vygz2322WZF6ibbXZRtB4UlCEOgsCJhASRbPBX6IIokRxMypY83saHgx5NWt8Qsb8kZxjERBZIusjkAGpbGBMJE4+mvJJAjojrfaeYpNlfSQd9kqWcsxGTQkQWRHIGAtYCl0MUqxAPoJ4OpiNthh3BTU+HeKViELNMCxMaRYUdKJ6+HyoHqHT0bfoRGwEKrJhEp49jcQXJYza9C85K61VVl9JQFRM2zOc+VZasqZvV04c5eyplD4oZ3iiusLTnYXyDroB/NSga1Dpw2fqODgsWdkg/f3KtbUaRfz5A0SU9B4UkUdIZYWcAxNWi7QzohUJo2FoKw2BjeiBhEZgDDWIYG12neCLY0Clf3cOvFGlRenCGKXnN3X+xfQr8OBVqyD02egNTVxgt9A+NOUEXeXngXCOp/ikLlQvFm2mIonus/IFLsWTfoSGeu7JfCtAKUKhqEZ6l1bOK467DzBqaDjIVUmfuQDOiUnQBaP3Z4/iBfCt6gcLVTBzlvvw7Yni8npjaVR/7i8+PMc8EyQVCz2zt2TpNI6kzaoPNalPIS+0XxWBil1vPIyAcTZ9FyuIGbhYLkK0tkANKc8qN3uFh9zfUT2u2LjsnudKYwgcHXn9qGHFk+AOrbf9AFo+Wa3j3XpWAZuLAKwbm7YwEqv1u713jqVUB0pWPaUH8L0ZCud5qW11uI119/w/iKxvkowXFQrHNee9fx1+8G0O9RSJFox1dy8Dh70pFLfrjk+XLFmXtWs4wLhAifVoQybgREGztbSLHlUhI19YBJFyxo2D6syb/ho9C4KLxC+JLha/mQz/kz6+roCVzNdhsVMgqOFyy1t90x5+pSqytCc05GFhWsDhlVcNPSSMh4VtdrgnhnM0oAozATVM+Keij8FOOVZk0oC3LnsOMGo4dU94yONmM0JGF0+Lo/3qu+hhVsadEMfugduqTz7BAuWQ6TT4rYJW9K2uLyWfmxIdZ2cabzsI1pIokcDjchDYbNOmGNiBUnai+igARarUJwVXrJjyIJRF+1SMakjIJIaw/P9pupBU+1hOpRDo5RUkkYQ9QgVfxZl67AQcVOcR4mT2DDcSLOd1cRvKZUPJt51wpy6smQ0dTHd77AathgZryRWV/QJTplTpdSg6F4P6GBzlHGgjCSlzrVb3UaqJjWF2XDRilXiQdeI+kS46Zj7gvyREOy8kCowBXahtxmTNV1uvK0TT+Me3oLgIZHwkPUOkXBgbWwVpQtCS+A10bzZTWKPnSjfHMPHC0q+Z4CsqbgESlITYSn/ca1Z7ymT3SbEJLyRNxxD0ITh+XZbegIqhEZBAuQ2LydnH3HQy32q+BCIGsXxz9hTFI0SMhL6I6bkSdq3IPNu6M2t99yq8R4OydtRmxRjcUsac+mBDPhe1enGBs3FdnRAihdadf1+1rBhYGgtC/1xcwvrKQQY2kTqF6zPBDZRM9OikV0JSBsm46UyhtYMyBPiC+CGQrr0z2E4MsxYpWKmKwuDLTaVNJy0KPx/WudZr2PBhOQdyudZVNLXCIfn11GNioCwZsi/fHqDcY4QhFDMckSWLgJY5l9kYJOnDWsESteEBBJ62pNnISfe9TagMcvbeVb8JzbOXP2Fsy+OgqtRiArnWxZ7rH/w/7S+vJO6wDQVdqvg5+5eSRhGAenLtzZDCIv5RMu9Ppl3c0h484IAWQpYi32a/ln+4ug4S8XEC0t2p5FBQerndZ0Rw86AwrbwECocLrYw237XU/ZtfkkHWUhMIli2woE2uG6aluA710v5Tn8UGiwWHe8Zcjlns5z0FTqp/CxtJs1iJdlws9p1osGtojEQgNO42+YSOeumc2XjqF5esggF7Dh1lva6gt7t5J6KLsMJlCan2MkboD8NDA2i9X6Sdz68gllhj4vvCpUVQpsV7RXV5MCM7NJhV2VG+i1G2MtpzuFl7p/YUi9XJEHz23t7A6q22rNc3jN+KLCtjL1CjmXUdcbuO1wUnFlH7zuibxZlVI/kNiN1QHTIzzTaXi2y29OyTZb2iMl8xwH+82Mtcr6zEo02+dl726OhnwjCKAfOuEOzJdHw3o8p19EY6cAoqjQm+2eg/RM/4UR1UAHJQmMHS75GYC4gSv3ohBP4OXOxSj5QSerDMYjWo71yMQ3EpdQRsMlesWyYepl1YRl09Qg72GAWdGi4QF4+Y0IfLsq8pfNXVe2GdfyeZ7TTlAjh1d6AoTIK9zqIk3UD1pKeJVotRomYX7oVFYixwRvBFvfhWrELuGES10dk3uNlxMPpEdAZw+A0g244CCTyklVBKi8BZhCIwjvcpk/4CT1IXZxRQO545X1YhjmASz8StET0zml4S3M96qlDMqTw7As7rZzoL0Y5gFwqSaVp+bkAAIh3lydohB4IUGHzy5C/Dj22TRwO3W5bJqZ57XaekqqkrvyajVYgz6AoEuSrr3eH7sFyVarkmRg2wkvNyL9WNcpjAlKm9wrFMbZDbs7M4Q12xfQX4abGFeE/wIbgwnXj7KaOUYojRtkEaQuAufBEGt2wA4HOOewNZKqNEmzSs7uNX7Qdb3AQZoL136io93SGIpvLUFsFU64VI9euVBo99ulHiYoXQyLWRD+cSU5q6IYe+pAv+9Gk+tfdnSDHt8Q0bmMY+RxUGTkjxqDXru8jnceVCO/UVgB6T/Afp67jAzUg8TNeV6QVoR7K94ix4vuFtK/eOj6eeIC3LcQsMIShX26jfD6getXguCfTVJbfXVdFLAkK4HGw+2LPSLv7HD8rfJTx0mgj+v6tChsrpIMAFbekbERS9rPM85Bb1pA0F2Y7ML1tHUZrT+5VWAIZQWmSkm0ekxoliPdvzGchgOIGYmxk7o1taCkrzU6U2qAgitqDcek7OEPjeAXM+ZbEPhb1luv2n/ro38c/hU9zLfN83N3gbNAHxAUUmDNpfP/4cQ1nOGG55/tPQDsbQHsjbTVgJ8Pu1KIbbJ7e77Dv25ALlkI7nO3iiTpQgF7SnGVhp57aRF824rvcfkx4nifUh4hwEPFMsRw/PeLwSoqZWIYJaKW6l7K55XP5jD5y8vSvteuiY1gC/pyrRkL4fcMK920sxkz+dTLgQ2b5ESGE57CciRw9H9tkIIBcQUTGiC8ywrQ4VK/8DEIExdKYchsdw2A9R7xyu2iPZ2UFoe0g816pQ448dKkjJppALYtOU6n3lPgAe4I16SOsd8iM/thbq5Zr4Le0I6RHdYvouyq2nMq6EUXYpVXXiKIAMaqlrsJTjHB1UNoPPLKvGzKvHaaJ3w+ohBU3l42boviRjGiPAQKKLstCOi6Uqa7n1yPGYzc92zoMU7urcGrSZb0Wb7Lh15o97ZIS3F4bgVq+TaBFEbQWdUa1RBYCME8yQLMtlCLwlh4r3LwawzafzLyzHo3VKETr1Jwn/hmTVPDp2+UMNvM69hQ7NwufmY6zt6x49q4Ozo146v6KCcG0cdpHHS5NfIeaUEkEWiOxCso7nz+oAsCs5zhJwViCgYdccSP8bIUt+DUyudsB4QqXt8+f2iTufpiQRcxSmgyEJ9S5ua25OUVuNjYnRlCB0jQWE/SU/olm4Bu8WEGzfbe4RTdG3O8Xm6RwPxAyFr+zmk5cu66cDV215rmbpFk2MU36rsP3BF1grVaAagHpdj1JGvYeZHJwey3tsbe0sEv+b0/E9+o6Xu1Q59mRq9XZfD6vxvzvEZBjwqkr4if+Hud/qCGJn+00Ibjx/Qgmw2kOmFUTD5FcBzDf//p5GUGIW/ZExEudF7GEIvb8fUfZaYzX3sokFk/rec9ePdD94FIzWcDE+BtRTGK4VFL6FHDEgSpyifrLshkpoCQUxKJVdWFiWjHW1I2YWwuQtCT/9waopmZNF5nkdw0+F2TflI/q9HayibyHjgyi7nhE1ODuJqYURSnqyWQPIdVooAdkghJ27BIyooKNNtXmvr/+xVvnW7NdvDCKCySDBR+w+mXGCSxCKGO9EV/dhEHQXn2P1zHC4+4bM/BFFwcvQ11eZuKcZ8BPd9w9xWhXKoNIFJFSaOxZxBsRMLJWBjNG0560kl4C/nQIxKLKOO7X7tcM81Rwo7V4gWvzpirRe79/j1nA17/rBgjq67feltKANce8j7wCKT2gU0bducBjxz5WJJzx34lln1aQ0YylzP+Lt8uHfxSVlZtoI4Ml6ooWL0VeKho22ooVxm3xUIei59w6/ltk8kX0GS83w157oX2n4bcVuneK/TY0/fHIBZOptE7U+qAzYk2mIQOijLSkIdKEeEACdeO8AHXipFcSNrCaLjmNUiXk7f34T0cTvL3TC+2v4Yc720NWzIMBokSejUFkJO8CCiD+T8MHMghmzx41FobI2psrhRqbMHp71GQFKwpufgsdiZx31580e6GS75sCJlbKvXTnN3pWiCH/6oSyXjPzPSyy6dOje8EW0b6Hk+WqUPugQcRS0LwMc0yDSi5ddPJE4cJPrShF2/HR6c1mQBuT9qo2EXwjSRA1o9x8ObNdikCPIpdXzjgqUjQ7sFPP7r3FAgnJNBdoDZA18b2NTuYikk2Fj6D6OuG/aS/tcmJB/xEL3s234EXpxrJPVUgqUlJApWIpfaMWgLE1mvgE3EjYOBDzijCZI3I5rLazcu8CYVrtBZUOywjs+PcKTDPXyqWxlVHVYO/AhCMiUWI/qDq3eKC3QDAitWXW7nXKck49EEHn2mSNpuNER2sEmcwG1bNOAOAx2/mGqB46yy6l6F4N1MJTS64NcyakU0to/AamiXAr4fSIHV8XmKtBQ12jl3l1GGfROaXy3H2ocKtr8V/z4bZ+H9HIihLfZszk1kLATL1INQ06Kapcctl+bfHjjckjzyX+pZA9lCM7btoNpBGaVWLNsXcTCM1apM89HSP4eq3yUHKG+ejZXA51ZC3bHZS2XyyVIZpqEan003+9Fj63kvmQVz61o8y25mu0vozsTYxzPTZji1naqK4e8el9eYA4QNNniRxOtfGLFcdUz7VqY4o/1RX26NcPnh0UUcyVC0bcDIb2FMw+hwBtSxzgsBEZxkZJvMhrDnSKukFuc1GF9xuZ/lxMyQ/4Tk6WuqxBi3OUnsB8jXQD8YJjIohgEnigtvtJJ0EvN+yX+Vpi7S36lNDiax74FcSU9QTpuRneGh0jvoX/32Bgn3GBR8X6q0LRfGzrEv1YCgt/fvcvkAyLz4Q3/79rNjP8myG/szuF7zUwjUa+h+LJI1Jg449zKCRF6YXF3pnu9cpWE5s4uoZs+M1fy4PvpABfKu9KXGWzcLa8Ht4ncqHldG3lK50ckJKE36Ue11BKzw8cysHNmYisbD15PdKbYSXA8Op4RSN/fqONKhl2q2l+K6ApYXT431uLfAoPb+D/3gGgppZzSTguaCLYmxqcZ1PcPFAjeCp7Unfxk2DJyGspmqc4Avgn3cicGIHkhH3C35wy0OIfkPVpLD9mMrB/azNL5OV2qF5w6uzWgeRkSiLmcOwI8W8QlKEmD3OO1zYqntxo+LJFPQN5YvMzIb++F0fnLA3N77aXdnAyT2ChHBOjm8ER7CX3LLWei8Hz+dK+g9UP5WNQmD/vJEka6IfD5Mi3Pu2j8+yrCCjjHyOA85b0x3vlQD61K0XLCQMd92Lqii9Pgb3p7/0pGV2kpaQgSWRVWOWWavxfGEbhgPbGysVFK1utlE1qzyrTji1mOuqelDApV2UY21dLHhC9VhFTSTljiQlVEDj6SYTq5Bqql6fSDtXamgMn7zkSefcKeXZh5uSzKZXxCauMYIjWdQrF4217a6+zjvdUCmD9r0rRsHDFaGvDaxrgYcbDb0sl8tRnxXF7i6zS0XqINXA4WH+Ibb/VuEtxBjg4ZQFCsOnuCzdVAWPyMfsrHOwET7tKyRJWRPIGIOMRN9N+VgeFYsNQmWDUzMstj2u8HUca2VhJIH/SBhz0ne/WAoADLoJzW+ROwkGS0g+9IFxat4MuA55Y6tS845WaAvMSlP2Yj2orWe4WXZPAjFcJBIW7adwKUGPy/y97oCDyCWniwd4Uyx5+1BSXoNdJum6ArlEtO6BmSowzgIoJGZIdyVLocTNU8CYCbElLBQ5VTSqXTJoFfpYijmJciC1kVniDaNFHUdKotu1QGnRameD3rDHiy+ME3DJ53OEGg2dRqEJFUfng2mxHrXEmsbtS+JprlBpKZa5OOR3bV20l2ekNHX26BdiSQkObNAEoaN41bV1P++oq6qFjqDU2GxpI7WqnXqglYF449pjSah5MbTU2IbdGBuPuhOQuh2cawcPa3K7hfC8CADWZbGGjJSfqnTEGdl8FR4sTA/AUuVyCQCmaI88b9ftZXPwPK8jw6pB7mq/hIeK+EhuOKtle2Z8es3tboooOwyk/NEBl5b+NnniusmVAICe82vkATT1ImL4dsJQaFbaU+tpFMZ0rVCc3kMGR2ht/1SbmqIRuy0aDzQ5o3k7t3lgLLFOQU6VndjCgtbcOotA+Df9ZcqRq0wCS6LW+HTEMV+e6GfvfWcZ37ppS2KrjR1auwNZIq/vXLaGBt9hXe1ZZEK7R+tTPNbsbmF8KEpUBU89gI/E8JLRriYZ4mIqBd76eHs9wMa0wHoQtmIhm9o9aiABr7KCDAeRRfBhAUt8jQfXdnpAtp3Klyc2EgBsb4SzPhRMBLUclB+iPKOKfqJ6cxXiPiKoRKpACAUiQj0KCFwkB5EA8V3meNDDMTIx0O7aYuMW6+/8ytX4oSW2ZMjnzJr2wHNBNUOx28EEw2LFeM7iXoxoFiRGxYjmPCl4k0p8iAkdM0I+S9lQm8SxmTF+Gg5tQ/nwIgZD2FaHYgPVn15hN0ugxAyv9lwb9FXyTJW3k2pAMUysAriLObIlvCEykh+5GNcAGByoMT/AgARHVT7aFWvDgVs5cNlwb7vqlEXFsijLmWYsGxu0qh08lMuKBYSbnMTrpjrQwfSYxNMDCppI6KChpc2PxxYB9I+iRUVYvhnNFQrL22w74JnnSXJjbRJ2o1ifwANSw/IvnnmCjDX59K5ofd10b+jBmreBS9qitku7p8+Z28d0R+FriTrfell66UZaGRLelDVlzdkyaJvpS8IqJ+nkY3dgwbw9uPDuDFw7hbaR2zlnwBiiDa5p63gFNaUQVwXMTomqHJV6dXSKF9FV6Tfs3833N3TGKoMkXFJOQrsbPKDYjXCE7q48/0kec0m5D3aZpGoVHOMpu4BUxTQDPOqQxBKpVs1yiA8M1EIqiiuKvShIqMQiwvGjAX2YPu18hAfyBg9aq4a1qz4VRMMzDcd1+VgdaF5RgLa3l/rTa5HqSc1NSnBsK2iQdZpfbGunXQO6Ihq5n63doQRheS6GJDcnjmsSSVGb7A+8hmbWQXszKDnCoPVIuJJQc6q9BHfPcBJZGasePYXFS/h5ixdAxHp6rcPvFH/0E6LYT/Vble60nLsaL4HmvwiefGUtDIknshIs9s9ecMn+YBe8fYfTcouKGOu/TCAA4UKK/foHMDMmRjOACutwYfRWwqgYmlJxvPZk+1IHaWg+0iid1pde98XslNOmq4SFaP7lUUeAF7DehfLx04J9e7NpPP9EF1g/IcBAFgoHj3Itqi7KsLtP8wj+R2oDcLpbPHycZ/36hVzK0DtPMcj6IbOip8WIW06SQAJvI7Vgj3YqxqZFgrxuMXyyLq7Nhy/tn8xf8hwt9DqWWdvObPHK5XsuwJLbdhqVDZTpsQ+ChLzv/R5KgT/5GGF299lxhz3bEQEWczn7+c9ZyGbTy8s74xfHFpRrBamcFV5trN90K289A4RSYNj7as9Mpe8in2Y4O7Yrh9O+VyXdur8OZb/L1YqHH6nvLYbpOm59Iasu7qqPY+8HJudsYYBiC7fSSacMFP18uUEWtDCow3rsGE559Ys3FTseo62DDRAQWu7xNvQQkGD0z4QTXHgcYBuJd4HQ1r8S6Yy25NcW6I2EtMxvrlMvbi8eMR1udINdb1qDib0XCyYsDIZKhDXKremGLnJqdlZHq8mQJU3jB2dXaDOJ9iOkIT02sqmdqaUcZYQ2Xio9+fBe9S3z5bK5SCOtdZGy4SSiF/5BbzLvR+tTi+0aJ9KyOPhK9xKzRSvrJsLCMG89MyOfQNZSYlZTheE1rn3iciixv2/oldgofDVO2XwwcfUHGwdPnhZup+7V3hdVgkhIcjJeryZsQHcCVpmTDsTvN3dk/nupbgMpK+T4nXKf61qngEuEMnj+/i+c/B4+0guI+Ig+T9bTOwTcmxXetThd6z6zodSjF9rHaBUrkBoPb/SD+zM7G9d0XXEtr/+1/Kbhdjy411cp6M7lLJCIx2Ai2+Cdg+7HqSGkitYWDzAYWGNUfdyl22u3NIAFACJ+6CrT+dr9dXmKmGh9B1d4TtRNXVhRouME7ZZbJz4cpvAgpZm2ElNOunNFTy5YXcLwjgwnzEvjYo8fudNhEO3laQUVvIK/Ula4VRtn+0x/tBMSRyUqkEWuypztBFU7vGvaXHZV5vY4uHoz4crJi775fJWsF3AjwUWsB6SNsrpEkH31BAsDGPNVewpYhmILzuWwMXlBf2joqxY/PmO7VakiL2nMUX4R3F81XslaxhqrilwqUpOS6s+yXJxCDa1kxfiOMG2GG4UYKkfc05lY5v7nnAWatE41qGmIcqD9txoWRoYWnf+2t8kCrVhIpyItfJ7N/qjXDcGqvkn2/pxvc1CYyCkthYu6DK5/n11qW+3jSNOuVrdRiXtNNgCvpR8vUXCCIJDBz6svsAqlI03cBlNt2xIVl2EddNlUVl+RprSEUqMLlEQWGp1t2oiLbcHAhBDOW0jgyIJ5d1ELfiKBTEc+2cziLx7X0kYhFTtLxRD+ZelOxp8CfyVey9iRRcd68mvdL4vr7WpCRCcydU+90kI0pdSAnWZE5KYOmoYdD6PkOda5hL3cuxpdJXfI2fOKlgYO9Qq6Fkx1woDj5GXfGktIAsHxPWtCRnKGgGHOHpZS9d43ToBzSf2HLkYkJhdJYPQ1s9DOKar94hQUVDE9HHEzw3/KX8hYgLMgoaUDhMJRYBYBmo6gtTXEDLG83zKEdhtCnpAZsO9bkOBvgJAqikmUZbFXnlUi5Gz4PSn8s3NKFcj3Prokkaj20UMamXK8O5bZqXcyCSrM5ciYllY/oVxeyVo5cefx7wkDcdroarAcRIcoiHneLM+dDCTFOChXQeEcclE4Buyfxqi4D5ohpVZiQZTdiNhYTavJQgUQYK01bRAXnKh4XTwCOYqYSRUyiaqJeTDlZ1kS6dw/bfJWtVx11VObEsDebmRxc4lmc2Cq4mnEir6H5T5Zz0FVxdMcsGymahmqU+aDYnwCA9g7g33YdFVIRoQk7Bn5I5Z0YFbtpY5wMhL+PfaPbA2RuIVUZ3+BjJy/3jkVWapbDTGL60yO8DwTfNUWOtpMRivwShBxd6moJnHklJSdQC2xiDgrcfW0/mc5eK4Pwhk/Hg5vOfxbb5CIoOBokOsPPzghmD96ATc2LmwZTtAKeb/X6z1fW4wYZnOg0u6nakq5wZzHhtgFuAnrTyjo+0cPqBkm2RmsWRFmUknNb0vtC+eyVarQG+Gcifl2xJF78t/r9iDq230bQofbJgkAF2Auy9B3EdXpm9kmHYP+xRma5zn4C7T5erGb5HbAWaAfOKudG3FmqH2OHhVwls/DFjyzipfewxMujHKRbbfCcDSkc2aadQxSslbF71LkkMY9uiSL5RmXZk3kl1lmSGQLT40oc8c7HilRSaEWaWDMWPxMIf+NEYcBzc3pZLaJqtFx64n4AVxzXBzmd6gu/n1sLFOMalnUefmzcRfjs4+xeCoqMamjXTZYnhAPXWq9v8FuM9urX3a+cY6ttXXTbeNqMqTPq4JbhXqumQkLJBpX/rMkmUoccQE5f0cunISaslfjB9OkLgLFyPM4T8v5PP9k49XPV/rYzplfRbu8/bN75cvxQ8OBcMt2BstQfXX7yGe+MbHLw05o6TvcRZs/WuLQzK7o83g/eTA5FHwx0iY/BTv7MsvJn8ksSCZPmeYePi3YTowrZfwTUrxJ9BA8zr0U0aVlh/Uij4NZMjwRSVE7+O/mb7NcfyYe/llnn5hkwfN1yaETUdVRK3/5PZermzfGXv186iZ+ScOn5+eCkvIvYCVHfGvDkmXtkBXFfOk+UJzChwgPoTvE4PRQl2UyGNDn+XJQqIRGZ9I6mNHfHYgS1TMjpNFCy50bqUiFJuwHTSpqhmojgA3/6yYyTAGKHlMyN3oBFdrqR/7r82pHT8ptIImK5OoUU2WUqSzgO5sS93Fgp2EKL7Wd0b14VErQIHcJfxu0zeKXtzCZu8H25c+WWamIYMRbyKwTxNqynN/+XKLaB4D9SQCOhePofj6mNjh6/J+1ZbTg0tzRp2JkV9fWlEIy0P+tWXj/7xA7i2I5RV5OhdVypjRbSBdNTMLUU4LSQExUOltcd3fqw02nOBrzrL6CHsIlBrQrnfrzPoVuUM60t2/Elstu2Ap4WROwBBdVamPNs69H1swqpN1rqw41nAQGQ3ZTpiZD4qmhQr2PKrjqSDK3BXwxHouBv0KRjzS+7lEutQUFegOpjKixeu8jOOLMOZ/hpzL6vQiM+t8a8wb9i/rMkmNUFwwd66wd/DfBZZQMpr6u/GrRX/+xAGLdpuUeU5e2zA+kDSy5Ecop/d6KdCGVDdYiHkHAocs32OmRq80KOA1+KDEUN1wYtNaIra3T8K9tYbiFxfAKW9+O2mDfy51G0e+I22r3Z0HSNwzr1WiFwrBshN7VxrNwJdEG0XGPbWcCsWl8Mj2HGwPWvXqCrrL+bHPjOKmv4QQ69fyCv11ADm0fyJ4/pR5d14Lq7EJvF9RPQde2DfwUzqsv+ln9l2TBg6AH91HozG8CB+4FzX6CQUejFv7Sgpp/P2j2AzQ6417gwDflMImstHxEWrB2g2g6XPjx0aceluSfU0DN23EoB8EABdRYDmhYfMrLPTPNho887jCYWQrv3+HX1yFwI39VXawe+kNrh8Zzw73q3pOGQFJ4mDIugz2VoSw+cBmbwTkD6xFCPQwGSmpCpDAFQVQ3XoDFPGs5C7OaPIEq427USU2dIIRWRa7NHI/dafFyUPutDMY5dQLkHR8MLmUjAJTvqXFRk2kFgHxKQyOMCfqGq/dwox6MTs/+G6P3QYgKcsa/IWAWK/vfbSUY1Nnpcic5G305lc6UtNo70bh/7x+bcZxVGIdTjTfb63xA0xaMkI+jqSJBLEfWur3dCSniv+KEOGhLaHenIEjIUlv/UeyGLLBnWANAjebhqNGIlf24ObS7XQg0hesp5yEtoG51LFh7Ng/x40s2oK2p9F2r0t/NRpS6n5oO5Sz6RueRcazZk4UEgMC1J5vCe9Pb+D+o5XSS/hHF9hzTjQp9hdgvV2+IhNtgJeWEjHXk5sDkxihY/+FXRC2CRMe1AqoGZKhpoahv3NYrF+XEVxXCM9XlUlUxJT4E2+8g5lwWJupkBIcA+IDFXfyWicj3X4W9ZO7jHN3LcLybwGQPJaIByzvGAcchKfwNQlHGTPnnd1zGyiKL7RayoZ/iiCWOoEYReTs3eeT0owloUsnR9VtC5dUDtHk/9UXZlR+VtACJG1qYYQhEwYyUaCoPNfPvW6EYCb+zk981+JCFmb66OHRp0EbFK5WDPYzYia6Wdi4z1CmuCxBmTkZxDmAzr+2v98hY693fW2VAv95f7U41N7ofT7SyqtiDbBjXNOyzU7j4vxPS0nZAnPEm+vHngC+gQhaL0Noem/1iZr0vNkhJO/iRsN7ZP+NuWP6jpZ6lQnxFx2t9PqL3B0LyWXX3jSv3Xrfwgde862okz8EOrz7P23On5Cyf/AbPkMbsWSIvKj0urPZ6EhzHnaD3B4jW5/Nu69HWuvwFPrp7tlx2jEssjjz1qampJ8va51mfYHOkX+VQ6n0s0o0Mf7i5JpwUi0P4iqzHn/c5ReCLdNtXnF0FkjUG3CJu0SkQwl9CftBLGxhrlAcLtdYTskLmWD8j9w5/zBPO4fSw2mWBbKBUZHvSKyxAJ5pOJNxKohX71fgf6ODxHzr+Q0cejJYjBJndGCNh65EJbjAebzrhsQ9iohNQYeT3gfH4awJXCkv+YgCl2D6O0L2MxLsJQ66mDsm1gkvE/ZMd0+gfsNYN7Hewats/bMwFCfTD+KjS4cLTVBCG4evLwBvXnTrof99vqFCn4mLotwPoPwko8oEPyii2xYC6LNq79c3qlphMpL36sRnPneOs6jgo9Q1KHpDziiWF3MwtKvjrL8UpoxjkpHa7BndraCapcBvQDyNYs4FYKoOO097/h13noNqv0nkc2L+w7+OawdkOubGr7xbCnQN2O1+4il4DhC82fZpO5QMPuCq3x7skeYpPpBeS5CEsAwt0iYorlCdipjw87ow8hJ3AhFe8jdONvS/eo2bgEG5Fdy2sopsgo6jD4Y2khp8s/ju0iROOp510REzjoK4/oYxlla4Z5H2tRLJRI1mb4XcRCJaW3h10j/Naly9vkjjVSWHcwxk5zbm6cqIcask+F5xsiODQekK0YFiG0R7PdVGhE4OO+qsRfhKTbFOCjG60yweg7YqUVbi4oZUTrXm6otXTSSQwExE5xSYHZ0WMoNGuaD3ahZTRbHBozBBrSoS7uokiQzo/MKRO8k7OBjVUXbWwpdXWrSBkaeiGaurpogtHdcDgDZ9grSRhrNjfv5uXrsqu1Wcw5PQYL7oiUHmQiYZwjKCbC7KVGEvmoLMS8o4ZC7HhZeC/hKIRkTu4jF9t98hhDQuT7RqEnvP2q+Hh9aoqd9y3J1uICIi5pDfsJaWe9peJQP2mBCarlFDyxQEbE+lGCTB0ubjagMWPkXNOhutbG0gfvMlGzYww5M7xg+z8X5uuY1xHzzzqOv2JeWk9kzl65hnf0T35lsvjdqE/JEfyivSo+u1HXigl5v5YPtrwpJtZUbheiTVepDTo7ya6PZ5KmLGMNf5yhwf37Hz4i0YtVMMEUqDeLE8c+P4vSAMwARWzpOAA9+iV873c0Lsy0ttpDC2jEYgKZTFMKjWYv2RR9fsdKtf4eNCSLE5ODmexjWm994IBe2HULlbl27tGIjJm4spLQ+eWZ3zpZRQT2mC/Elz1VbGHZXvGxjgO0cWvFjTYf85upVqf4E6PRC9W2bO+ZwEN0mXdBAMAS9WM5qswTPAocxQXmsUqWARO+Mh880AM2tr+eYhJu02xjGQRL4xjNLiUsLnxACqO0qIfj30s69QAMW4SFdL9HwdyXRBlNjBRHPm8bEZ9sFtOAUnlL7m0jbCmu4HV+gFtpOkyEtQGJfwL00WmE/FNOhNiCJcxg5sy81ZhxSQP+oUQxFfef5P3wbEKGWhfEKD8nfF14aSX5Eed+Cgs44rSoYlN44eCybg+ksq3cSgvLs43VpI+b5j0DBkD/cxe+zh2WBNYT7qUmTmuGc8CRHc3+GcIrmYS3vKdD95HWTUjybM/ApLwaIRPOBL1HYHwGdwq7aEtQOji/lj2JYvYLG8P6R9f7Ri+2sbeFCT6Gn52yo84leXis/wiH1h9RkPW98eOBAe6H695YA9++8Bui/JXcYMFfn2r9UA2jiQKGGxQvDZZarBtthGxFd1PMsAj0ettKKPRzUEgJ0grdDck8nPfV7YfqhB5UyGUuITR2jtz+o19Kf6CJ7I+hFzkfx49tYUqGN7x+vk4gHE6aLzj9ecHy+m7gMdiX4NJxlKnkyJ0V5L3gfMeXLyIkeMr7qgJJ9sLChWNaulj+/XW461q8pbSC/w6re4htas//UzMlNHRRtcb+BZKRx20pe/tFQ/b39v8SRkLHwZQkkbnd49h50DPLQxVvi0+DLI9iLAiBVLhyD0HjQFap2Etn2zyBbmuJ+gtdCDu7YUPkzJsxZ0dpy4ht7yEsR5hszilPQwiyZs3ik7uOky4tyLfTzLEWNThbcPpSHEZK7kM67lQn8iXzHtBD4WB8/CcwSEZs6XS9rYygtZZFOv31IfFMx88Bj4+PA76WZAYLshwZZxk9bf9TWalwsr2Lv/KAnXL/Cw6lyl4gtd161oBfx1WRvuRTs09/jD35nYP287hdt0M1sCD1IPdG9aRqx3g9UPbdCn6jR+WkvPdlydEiGUiCqF62ZXBeuiYZou2lfqpAd+iwYEbybq/gREnokC7QLQIAl9BWdRE4UIkqHY2CaDZhuvxjU/lKkqpdQf5MEUN2PjDE/NfV/p9Uo8GApdRyUHpFRRPp32q5aZIefItDPjY20hleq3exJAQkQ+C8BzZ7fKsbJgOqjNoVh/Zfey1hbSkawIunhZ3iMQQJBN3c3GKskNCxLrVwTXh5/g2sZDJG1y696+yFkvvnOLB1AEmTRFX8UFBXP/2FTesB6+mqJLi3+vEekS7VW9k3HZcTWt6HkqdgW1ybtEr0cy0q4bWJycNCLTpM1KbBkulM+vjzhzVqAIajeQArTq28QLFb8t+yEbp15rAHVhFiP/89rIZ4hJRIzg1bNUpkzdD58cWjKxsU3XhbUUll6eQhWdXpidI/JJnSWexns2fazv+lg+7vhXia8wwbO81zNSPd4Ol97it+A8c9Q94jBJSTaFUYw5EcCPeIo0zlOIA759uUnwU4FZ1z5MP5YApuwyziqxTdJAhbaDbhJHiU/goTty+POKnt3QIM4BPugHAfqsgm6d67heMcP9fRokQ/VVly6cWmOlRdJNC4kl8s7qq8q/9DXBE4HYGIp961MU10a3noZzUSFPzPw2JfN//S04WjEQND0RSWyCsK2416ZsW/x+2vgjKTAhf3Czo2321HZTggoZMglkoJFgyFgpANEJAiVrP7OPns4USkZDNJotFlBscCdoyzGxav8FISDBvQRZJyLExW6e9QSNl/9gYFrLJ3n18GtpZT+uPDarjsTxX0cPI/kABpHzLekpDCRCEcY8hGLcPdF1D/qjgCRc9MJIlvIzFb+8LZMFhV34nIdEmK7a38sUMHvz/8U8ft4Vvyg37m0U72FscwTXLYy3ijLYGGzGEZCcKyekSd5zFokpjiKUWVkiEW5ZAL3gD3p+/+MALS6Si8TwqpHPcHFlUGdtHXeRwMDDAAn8Ax2+GoF41KpDQVy/bbd6oenKvwUDuiPLbMu7d/QBSltCHu9+tGVF+ckcK9ZYasXofv+yAkIrpB3Ud1hJZCKxggXgfTFcAworiowx3WivPhISNHa9Aop9+7gAl9/kJNNL7+G9hIc2Vf3g473/XBAieMi5bJutz3WMw+HZ/bIq7ffymd7Pxq6ovX6qJ/hBGkCwLyJlZrSCSPiS1JAbotSdc8/9JIPzpv0aALuov6q/XFXiqYV6WpwmGS/AhUSJHDhB4SpFT3QTN7lxFTdOIUt3Bcaga8bMSEqFBzdRCpztfuYGZF1bBp7FRvweAn4U7rwQELq4vY3iV8SLZ4ESknR1EjaL+xRSGINKyy9PuFyAxtRTyoR2NPkwCWeKXCAva8tQNDf/oqpehYWMnypFUphkyheJd9WptcUJCXIvVsWO3Lw8RfD/8ldxvpQLmQwY0OvHoZ7suWx6barUw3wEIh54F/fbryk+whEIyrvV00FkBb/nKar4o3E5JDaaHvbg4FUPZzKQ9aEjnM7cPIckU/4stPCScB+O2bD/vzGKjpJmQSSq2aRhfX1yy45d0b6lQyUn7r4AJfN5HoqVBgZGONe91EgTyBWbtg4FfuXg2Nisfd7CvjxB5lbnTkKp0w4DB6LkOWbrnP1Qw39SbFcIS9LiIkULWES8qGpb4pfclfglO1vkI1sBd/KKgrsR45eocd2NXTxveGeBGj4Ktk8wbN4N4rGiVhseTxJNZ3LC3vwUh5fwUir98TrHAahCnJ91w0DTlVW21amqhzp4pSTDnybRZpF5vjmCVr3F+EuhZ9VAEUxGoflxkZI+rQr6aE64WTRaU9MOkEnxIMniZ6Nr/Wh+ryylTJhtLlbqcWP3r/a6FK55wUxXJCWW1OrutTmdiJ0XzU5/MXsg1ptvj9ek2oxFFfbx9t5ZcEGcxaFSWxLhYa6JKYzWAs8NpHuFNVLXXHFmRzibz8GDMWH0mjZZZL+TMdin29IH/+qgE6qldf4MHTmOldhA5Ttl1a5665x8U/pey9sRK1v+ncn/8rray0tIp1TlWa0Xmqk9gKSJ/iEKrpdDdjaRHc+ONKvVJrXrF7929qyi0OvAahwlkeejCgwFloVnzeKRv4gcZELPr33PjzXM7KjDQ2Z5xDYrcfh+yKGxwndRu4iniW0mewGIpbuq6rZYyZ3lAJ93MOYL658hUtCDQhXLAFuZpH19L7YO2zeuqRuPi2YFBJEpIzckmrpVtxn8X/aGBakM7AjIT0N6jL8FnFZJDqIeoQxLpUvMsMrySHKqgnGhYOMUwZeGpBooilLwSJs8yF71AdoQgIGiPhlKNCD5IydEEBKKktBBwPrEcUf7fLArDqEjSVJcqLUukVlmCzCqdYS2Rq7P1gg1+6x8WzFHMHhKXlJXstCQk2dTm3tbg2bjQtkinM2n1aWQCCWw84mHPc/nb9T6CRVqlCgwiUW+Mq7yI4FOqkZHI+EyNLpPqVyugSnlmujYRt3Sg40z5TWQw3zR+JjyE0C2ZRcXD3qmJNj9rEOyavePKdzSptH6cqSXUwReGutswppgaaL/DMwvWwCJ7hhtnbEVaOFykqfVDhtsuSpjAaOJeaiXmKOYXeB7c419u/PnT+j/shFEry5XI3CbAG5ZERSHaD6nw/wbGZpGQAr1BBRWOh5NduEU8izQZNSWVarOxSJVYen1BaBrYikyrRxkTa4tU5rhK9YZ7CxcsYmHp6SdvxkhjUpwjvUhPWqhn/pWUBI02JT4JpOMUH2VlXs53qFHUaSbv3CkBShJFMoJz9cDZiN8zyXaqlwesIFhxTZBDIVXlzsxKemy0J1mGYA28Or87uiDxSw75uztq6448BK7cQu6soNBg7VeU3ccgpPAYYveRV7k45+3SxeQ9Dixhw+LDEic6tzk3A3U3ohfo1PVLatIU6mAN/PKKRiX2pawMQhp9ceZlMLzMbBxGJCQLkm2Q9fB49dMcBEu45SNOq3dWqEcGHFeJ/CIact7pyEBCYCAziBOv+raALEA4ihaJF1ZmDOuVnm3KePyw8owN0fkzEzW10JCAH1AfgZgAmqU3QHOc2MCVWyPxS8asldoYn9kUkwMe1m7MUQwiZ13+9rmRbr09SauzJ+rraChiAs+NF3V8VQLLiNxviAAaKsky4jEIbmNfFIKAQ0iwjNFYJGp222FJBnCZqVyry4ozhP608dZYSBDGHAh3eUIxm2B4Uf9CtluKcWCOYrByNviceQaeGmcxqNQWfVwZrIHBlrW6HApc1bWorfxZksuRIFcYjzYxrUSP356gyS1WJiaVRH/8a5PVQYUr1nSwWEadKUkt3lHfwnISvU2pxpjiKo3VXqO+xgDE5wIXahQ19zaSpWc8N0CupBm47Or6pTwwJNgSDXqb4YH3hb6ivqfGP6W3HPzU3DVs+Y4BbzYOhOYQcgZCjZthxneWXcM1d2kRTwBPndaj76WRTAR9FLKZaup1bKdStztMPRQkcqOcYCLRevWe3kQMixWVFl9CQVHiiz1RLBYDoGUfqT+z9ZOPx6Chpv6lyKXI/iYIHXOc1P+ZbYdmepClsX/opRb7G4EScvV4UtzG5LoPDcdD618hiYXbluvdKPdy/bZCIvLVeo7r0LA7F3Ob4gMX2RAXbckXvi1wY/5prKTg4p+MlQlyB6NnJX6JlvX7ibzCjTgAa+AbQAbcJcCMWhQVgi+x927ywLys+QDBqyKT/VnFBMdMUMGXiYULkMs2w/DmZeYNW0gcC0Ytu7Itb9fy8OV5u7ZdEWZuwOf9h8Sr/uD64dmOlmACl70dgdM1XuZAUlGxKkmDtGabRi4o4Ji1yNbAdnwvzmJ7qThga0gBYKkgRpbPThGYSOl8qvg5ns2vFFqJ5UnGcHAcp+RQVvToC8IWl9KQmKKTZuIqoxW4KkmWO8ZA+1j31ZdySs6mbP6hvlAnmxVq2QHLIq9jKdQmaqNPCBxJKaJ6m6WYFUuLO0XzEiOCMfe+xHuDg09XMWbJGec5rFRtfkl5CvXwf7R5OG5PnW51c8wS4TURLbaYY7UJG8CLCsSSf/mV4GOawR0jycJVKaIlmIqm6BINTuWWAYdWiBeaq9mRZF8jtYlKeX89UgbvCLWw2KHOvkNgzATZhY+gB95icBKEUTBmTuiwKz5fmOTk1JriabVxnjxFUkKGROum1CQR1pEkqO5wyvSVq3mk3LdLhiyzkcT5UNiMiQ9DdigYjT2Qr6d1PL8d7hZ3w+1V9rL8NB+8RrwG9vHf0KoO+D3HA34/M+IDQ85H4Udx3HPdTKno+JPoG92NYchde2lo9Pec4fOwhwjvllZT53z2ofoBLd6hEqfjypVKXJUkw61NoL32X5+FFxzsC7WzGCHGjjMCttwgjKyklmRTwA7efAffrFTsi4+UmWlfUWyydL7bFO3q5tkMrj/HRBed5gQN7LljYKeEtvtu3prowWKVWnXDgwu7sM5xUj1p8X9h0L/7F//t3NS1q8uLAtUn3LAVXp/l+yR+yQS9PaeLg25/opqNJNYQyYen74M0lsi5eK92GawBPvA+8nfwciLMwbOunOEIM4qxjyWMbdtPM7vJW2F4K3lqZAObNSWyA24mEJrhdloxm9VLbyavABncxxWquaAe8RB4QpY0NoVWm5QUURPrzpYm6FmMcVvgg1CMSYFY8fk8eSDOVibD2gPlfL5QYW1UOIcZHF8xhBJ0CTo4hDlndy7qGiPcA2z9N1aMBTgUobM3dZoCDgRruzOqjcLeXPR3fe7FUrxJLBsn08Ij8P0hx8iM89QX5CUGGODJFdzpa8ew5BlYtNxOxWMtvCKxjswpu7gy2l75TMERI7PseKFpinS03hSKF2Gx5ya6UhXkzm/JOFKhcKX6EDUriy9L2J+GA8MM2Cl2wofu0dvtXSzo5fhKQgixhkCmvSP2oeG3jrcNHQOUfU4GQCjcK/tbQY/1U3PLbQlnAzWcsMzbneUZwdYl7zJCOHUDR7Lldtd5WsRdwFPHf6mfTyeqCKIeTq+erBnadKjG9Fcj2t0EFZE+X59w7t1m7/vib6731fT3SadeLL+3/rf1rrEowoYNfYd0ifUbCajY4+T1CZC0bKAct0vLxvXNH4ln0Q17COiY4yHA8RA5NwKPevBAeG/MCyODSfqkbafEyaGEMgpESxiaQtIFBnJJc6Yk0CBKOSFUIf74z6o5t6LkZSciaO3gnOojBn54LNRicyJCajAPxoBGHqCevzZ8ey5EcE34P2Zw1kQebDY4VqEb1wldqUI9k5mvKjO6QLZW9uj+XPI4Yh9p7kOGUXZaVhAdgvRNzQnd2is6RSwQuf0H7pwBGk1yEq9oS9M67LdvIIbx4VzSPsQ4ee79R7K1zrou3bgQXJX2gZCnpHYSR++wJwgioO3fwBQZmRPAp1ET7A69ACYPJ+szwZIQ5UoNQb0McPNXgfbh7QkcScn0UrXFLh6px00yJ3FVIXxcQJF5ooZC+bcBURV9SOrX2CVqG73s5OQKQ6HbGpP3HDz14gI2/cjlv75q+QGH1aUZ23BIeCuqhMfoUoZ1hidC5Wt0Yy323Ah45c6rSyX6X3W0J77B7ctiNTktAoFercy4+JcE5l7kAVrrB+YcWMbfWMJkNTX6PGCQ0c4g2Wxk6KEPWBhSQ9zVWMxkz2jyTbImJ3GTmievlrNDn3wM03/kKemMZN6PdPoLTTKDrtS8kBfa8G0gEohEDnG9LgSFFnyan2mb89QHELX2ESFig9c6BIrE3fDgvcFH8QHnyZubwoYDMz0DAy4Fbdp4am/EyZtOISfxZRc5Zkajk8lg/j3Q8njAOlfoqcsuDM4NsC2oRKYvCjk5D8L+uWwrzDkZsZcwX8wniAqxpJlN+cyEeJd91bzx7+gpVd5cBLV7n09c00c+UQth6DtGUsKz0jb8Eck7IHBda7LuN5pwBMj84/O5xiRBrk2XovUJ8t7nc+LjGb2HXJ82RWdLgTQouc0qqK4Nze7KIn1VNQX51TXILyDorL/25rpPb8viv81KNidnfRsvu/1pZQwFtUOfcQuOvCEdnrGlNyLhWxn6HShKDAh7ZUD0/0dgOizT4Ii3sIaHufCR9CUKN4nBGoTg1UGl/VpZCG5jOKY0PtZZgEa7sL6Wpnnw1CIqbhVrJR5Fan0IVmnXnHh6/Gntmb9Ez+v+UPVtgKkfSFYSKZukhDXwH3RxLlAlfkmz0sGxegTNr6FzoQo3iVs7/5rH5cljflUy6hIHDXHiotmnyeiLLml13D0UlnwRtSxWWbm0hzR4pEQIAkQjp73ax2b7qts5f/4qCRU+Fou/Fwq/F4sfA+p+QdaWYIRXJSFblxCMhy/fCue3NKcz2HzL/SnVRChgMwEH4XGEbymVJFRz1+LB99Fk9o888lzAqMHd2P4tFh9EQD2btfkzitQhIt39+G8IW0SA5ARCZ3QtEf9i7B9cuMWy8uXBRAIet5TCRjHqD+/EBD2NbRlXv5hyhsgq3/oZ8Ozz/i6zUeh7hF7hHrqNIvOiti72LvaC5joCDg/hCD4EN1ASEEBXcf4cehUSXgyjlnTYVB+NYANUL0aaArlBSSV8XABiHio5mIbDbTtUAuE8F4pxOPfzHqyJe//IARrtwJH7XP7vE6totG0T90GMqO7Es5OTwvZ019OaA1XzeATGKudDrkqUIRfxf2Fwv/DuIG5gEATowNzfcS4ElQeFTa+6NOILD1AapFICCUExeL8P80vatALsL+KFFeazvv1508lWOESmXfPY8QQNcwi36Pi/cNhfeHoi9h0W/w7bORQcANF56dN4AYGQafDVnnQWmXkAEbTDbCHw4xCYyoIsFGMSHaJAu5eZn02AAgZxD7GY97hDBCUU1ujrnLrjPCGykUEkA+O0fB41mlfqb6DKdJhm27pwbDs+7EbzrFYS/yaXsNK9HBeuh8e9xuN0D2Pw2K/y92HQzFneAQT0lF585zEy4n/f7EhQgXlmB+6N2wNFJniMyScaP4t8XsBZjWylCOxdJV0/S4iTzF0H96JGUV8wKXfT5fjsTfyOZiUcwD5bqEYdjqAN21elSyJ6ULnyum/GPsJil6JQoTWkVYjFBcuCgh9l0bgmZUw89iH9EVZK3o4Bt75mqltPu0X6rx82uvWHxaOnKaah4/+AjwyHs1KWzAIvMj6wpNvaF/awfkjcfrMg4tTAIovwkkUAECh4/W5VZa9b3IRDSeSQZ0R5hcIR1OB1+3FkFLNkBj6MsoGyWOwICDgBIUx86f7Dwfp516CDHKN2eCumUM4om/LNTK31OmpOZgqQ1nyoUdSguUylyzcUdjRUAumoLaInUd6XSTAZY+PMyfGOGdToR+75bwpmSnUaIzo6lTaDYZEwg//Ys+rnZFMSP4rl3uZlqCD5xiWUxTUlM2oc0N8MiLXmh8SYjDE/B9tsjQd/LahRVCzU9Go9MQJZmXY5nD7WddGoUZPmk8qEAuO/9SReXoqEY5T4JZQySDmcF4KI0ErPQwxz/bxv7CoNqfCJV6ubRRoj8aekRXG4+oYevneAtKgnbn5TjifMol2HhQRu+qknrhCvSnH4/le7CYTdr/rxpmVNUWT+oeeiIWPfW17x2PR8RhEEzJHmSg2XeNDx9adzb83JEPROj8R+tv/dnIRcc9l1zSKjlu27ms3WarJZR9iZGjXD25PKUpLd1zV5WNeLbVp37k9zyuQJ5D49sD7ImOoxc7Q2EpNTTmRmG/ipNaBSZELEAVWh3Nfjwgtc7gXh79qClS5o+KzCqtD74wum4MKwzMAFSmvy6Nd9JlCZ8XOHLi6chkMFXqHakbHrTJ8x1HpOZVLaWbhz5WJf0SmCJWu9Uy/yzGmTAZeAA/J+qN87MCyCn6boRH4CzE1drG5ZffoXEvlBBFMRfFVTxpq1YoactqFGDjvX0cyJ5nylDwCC/6mApGYxsMYEURHEHZEPi4oA8+0nuXDXw4yzsa7yodWr+YZdFkTMKygwcNBAHjRRYFBYoDQtX9pkdhWLopIyOjuSs1MeEiECsgrOJpFgfngVwQSu5BLVlDVl6bMpQ1kpfNuvVP50D5EghIg9yi4rq5QTOUIuUR7hgVmumxCofbkN5pTi6FhnRl6uqwSVDhQTJKZ5hKBGW27cfwn3oGoYoS4oaa1L98w25fLT2IaDtrZEFhOWdA0t4XBJw++Keq2jKE0v/f0ZJNSQkED/Pi00nUUiZ7k0WSh1oJhgMfm6DKGjrqVAEqtWXAvPaYGyvlCIvNgWSfySlEJvcAjjqezqP+dZv8PkdWH4WBeGjzAkG3iVIOSjJic/sydbruDlkyYmCQf8kQvnINyA0+slfsl7/Nx4pppzek1PsloS79NThfvlXS3V2x5f8XDn11HayslgMDM5nEwmIyPsUzKW3uT3JnmTOxK79aPchNiWNb+env3KvKLyD4Adiyla7rx8PhG7+6Ny0/WIww1bxZCN2xdtaYm9cHQ+h4vmozeBJVC7gCBYQU0EABBpyC8UJFEzuxFU3eRfzM860TFePrA4H7bBZOr8/2gcF1YD3xAe/54WPYizUsF0ZrgjosiwFQzilmxndBN+ducHHOC2W/gXCZRc/pOGxppQk5JZULfyeYxMpKmzZPqnwbLwYW6+BBuZhyzn8RnTXjomzUF2AuF4JlhjN8f0l1doYEWyOpyL34QzGw4dUmfHiSVzlOyVErHFmot09E+fjnRacyyvTVeylXNKpfncnamsdbaoi20dix1uM/8N6LeFHyKiRlFpsAYWCIvYLIMQWZ//oMBl886NXRt8LO4aA5DePpxbHfsMeDgoFDpZombbSfLVwwO8kJxhk2YC9hfERCsmc8K9len2WOOsTihVDDgpxEP4U93wTVXh9O5cRAuRK6T6Wl5XwPB6KkNVTUVkgpif4tSfOe9ahnmLP0e4OBj2EsirGEEURKMgVyF1kzts9SmGIt46l7rA5qJyIGS4F5r/GOXCIWUBCsJPiPyJCXLH3izTgcj896byey7eEc6Trp5Z5vGO8kG5HbIDlUDISSjmC7ZuIPk0qNmhq0cNJQpzEXdegY++yFBZHGs2Farjy2iLiwjrSBmoLnQ0NfX8pICJrzk0lJ3F1HvY5OOc1u8FyG3TrrOx76IX27SayO8YMjqvv/AyWVHUs4SClTGrhcNpmZXBor2t3Z+X/BeWvWfayvNfuoji6FyaWSNO03LoKjXp870Pf6YruPYTaRSZtz0NcDXIcroj0x0ZbWR1FY0xl3Vk1Ciq0o0rb6+9Zq/T1XMVZw/7HfOTkIy/RY23AtrYaXu2H6kgIIL8dNOkquYPNMZYj6Wx8Z6S150JF872hHP43d0rs8Qzq7gCW9Ff7PGswL1n8CPECUJ3QEIiJOQQZbLho/8u6p+7JDcVqjyVNHWB9nZ2MDavcZM55TKVgZxPIMTMyVHwk89BdAUUBAJBZbIYVzPr/OpYpsTE1dj+0cwFKUFBMFKRuVnBKXF/Nq0BW35ck3R8/Qe1SiaK1PFtKwRbmeFs3vaVbcJj7ckd4FhpVnXkVq/o247Ic18Ca+B1wyEkDsOHJX7Jj9HMFJ+TIWVEHcoI9HlCkDtPRIRjVnTF3OSSp/8miADVozLHsJ/oRgVxkYYu2D37iDVu6sjFcwcW13mNAlouwptb829fTeRw+mfoblh+ABVtWIy0rAQvpkGdNBMWfxpHwb3DhTuTEwNdhah66Sa4Tjz5aRPkrEt3HeZCY7tZcYfY+DGgTmMdFCuN6xZC7AvxGuPYNHAljTPin5xUkEhJk4+6RrjQ5aM7HzEfHTlyFMy/g5/EQ0+hsK9kLNtoNSFsW60sBP8tbfEBkrxJI83gxhWFX/2SyPn44BLBq1/K50T0S+uakd6pEsmMnu3dvl/CiQHKeX8edDoP/gmIk5KBpf4kg+NtwmUwuLU5b079AZTTGOPkH25iYLYSegpBk5BL+AuPHdw4vwAQHjGmJI2GtTHPJbMjgbJyQGRkgJQA6PvqDbWdHGMbm4ZnbY+Nt8/vPeXtH6DwBYKOHjnyiPlo59HLEHek69FkEomkmJz0j4C6z8jbGdje+XAjYrez8NPGfrM5HQW6NIla7VlcQMNEhHSpV3WcADdGoA+lS6FoPZF4vAAxChDdjXQl5mNMMVFRrI15/nisoKPItFcMGopCRoGII4s37IZ4f6ReXbgOz74EAi5hH2Kxc9GczvhvZhbD9GJQj+fY2hRNwQ52cqBvxHPOBHMMHWvMLI5O1fps7oIp4K0/flEJ/3xJGh6//llTPMyS/GDR3ZjRHzPxav7t1s3Aun7dGJ59Pv49dALiXnQBq9S1GX1pLFZi32jG6i8l2ZLbiyVffvGytJztw/Y1n7X8ABJMePr/zlpR95zDqOlNECf8z0VEJ8G5Wvo+igf1z1jGct5DmaQGv+By1atrnkTQ7tYssDvA8Ak/h+XOQYjuDVROKee0B4j6I0cjsUO9xyavY65/8UPvENYn/Rx72Ry46dq6gxvQSzZdvN6PtOuJ6s0YjaGGNy03M36kOuTPEFgwlHqmWbyWbyGl1rDDxKkkC3/tYk0wkr/Rj40ZyzcNoxJmMJSSdTx10FDcWEyodXGo1SjwHExnRkczOngho99M8KIAa8i0uO2m+mh4tpBhYkO3lchdofYl1IRimflvGu1v8zKF+xncJS9JC8WqwhogDezCG3euvxwQkM7wbDkZfP+Pyl03cY64w/nz4xIzOWorqdZpZNbFpWZINcJN955vSY2XkYcUMcuTEpKqIPf6bBr1NzXZpdJBzj/20QRNuvPgZG1fcNdEM9L8KUxFlDuihGESxydny4MQQRUks1DFTO9JY0UbUhLa/6L4hitJBPbu/yM077Vao0OvZ2n5CCbjH5jPYvNgBAMicolELvjTZYyq9tkK+FXJAx19FRUNrchKioqij3T98rhiqbDjnFWz8aNxLH2CHjU1QHvUO3DC2skbk3BcsjulaqiCjUm2+Hizt4QunYMHs/emBB+vxQcvH1yb+8mN55WUvT/4ePx8pec2dCpDe1wiOqw+GXkyQ7QttrdzeQi++xqpSF6qsgVFnvX+3kJ2XRIYTO79vERTNG8L10E4vZey90W+BLB8ty7LT89oihab42zEmfx3KCHxwtc7N51DoXw3dTg8oRgYTRVU08vKXZbyhQ2F/pw/DfDLodWMh/mIidsBjnVle293SOKX/EvXkkVMSldb5uxQM8R1/Y9E5YNYDGU/gjXSgIPfyiuUAcI+myH2Nen9IMwUkOVVyQnW5iRrssrT26tkn9xH1kT0tTRDRRG/UHzg0c4vPo2KtZjUaktsLAU9wfyc8rISuqjr08WylLPf3zclbzoYFhazKevuikPzZSWM/GIbJz4t8edVu54E0sUs88x0mjK1JsmS2rGNYd+Cv8O49KeTXCaoxnKpTWQbmewjb5oINW9y6oxFQWN8cSl04yGW2QYyqvs58Uc0PSU7LVJZXtkQVuLIcISVZDdmJXkM1c8ovgWv4rWWGbYU6wytJT7eYDGuTk60gupzJXs66eC7yI6KMEu6Ob2MleZLoas9ddbE3o1s7Lv07YeUBoN5erol3XZod4/ATaZXSSzge1ceWWu2qe3qsOK6trKy2jZUseOBKqltLTvZG+5fL2Is+4oVFcmdEm+Lj2cy5W8maHkA6SbbwZG5ZzweQNk9J5dJOXjb1BGYLIspsgbfQXawbjHcNMDekIImZK4mW2Ph5Fy+PCibgJFTRh4GROmAi86msf67bBQ9KPFLoux0DdOhb/mAR+YUTk0P2TSMaorIwwxPQ48u+0VrtekKdOLXGyzlS9dwGsbAGJg1zJrRwdNxuv1Wy4DqeJssVEQrhGFp8UV69p2fgJ4imL7DTkgoCkv70g+hRklj/qEK6ioI/eVffxFMyRn5Gc4TDPo1SdhCYiAMBxKNm+QanXHCCctkNu++14nZgoGGXpuYd2gKkj8TnWGZN7uNJ0AfuALvAgEBjYOfM3RYxcwA4IalnEN2IPFIae32IAIDkHmD5xzcvGm2mfcjl9tuwmRprGWvRkw8qq3A0XKizG+URhIikHm65vP7NJFfdCIgsKJLsp53TUTJB2HcBnuxwgcN621Q+lsQAnpjMpoCMgPTavN+QZk0fSIGCFobLKOsJf+fLDXHKGzpxj+O/iwAlFe7RVoTM6swMvtbgkUnFincqdEJFqKPh52HkI3Y0D2RlsYnlUMR0HPdSOuGmDBUHrJT0i7xSy6gRlFipzc7xBZliAqxebOdhgSmjIghM76QPZy6Jr5ekxE1+smJGgUUh2Y8hYlqXJMNX7WvA7Sv3b6zDJ/+Pi9/Wo0QaWg6HXR5onQDahSVvMGSTsTrmCS6cU0SJxcFwyEd3IEGCYPlav6ICFdhXO2Vupgyk4mB0du7DbLcjCSbMxFNjqTqaQy4Y31IlGnI+8zjAfL7FxEgQnAWcdbYp5APG+yBlPSdotGh/lDGBEO3wwbWxjwDirLiTpwT9TVqFBXgDlQnbIGDYjW4nE0ZwJeQloRnGdbVx0oIklLa7lQ2PsmTT5FcQIU0CjixqCPiblck+bUkl+KplGWn7i6LlATE18esk/9tmeipUjIipehzADikERztaV5ZGuUE166g//xw7+cktYrO0YrSLJpcWrTYRfzy4Pi0PWzsX8l5+2vf0oze0WZwTPKDlH4eXcb4LlJj0y6OfkcL7zqQsEW9EknpSL/k3k1aZgdsgYPrsMg9DMsiepxo+XESDWR0dpC3kbVrOn2ARGHsxN2yLnFQ3ME7xxM5UEn64mXxIZL+ZekeiJO25+flnhJAyH8hw5PYGdW81JKOqdqb58mxMaXMnMAJLMoJ8NTozkp4qdV2hoRXKnnsV+oWYnn67JJYRvi07om76aeEssTLS24hbgHa/TcTPoMrFUC5Q3vxYW0e0o9kPmKCQqpf1V1SV5r9j+/yP8of45t4YBRPXwtydP2SgFqSjzVLq3C0WLqUmkzJAa4bQhFbGTfjqL1AL7NwSu9ugC2lQQGQNy6V0JNSd1wQ8urLQ/whtC7aTFgDpnf7VF7mCCtdqWR51niZqjaJX4Ivx3qqjht5QHdY9bUr5AaH82foDZ4F2HqbVlhZjcgNjwhHOFVWFaqb4voy4b9qp+LWohDNGLfUiuaOaWio0fISibWsnnqA6+dNjRDbhnlLsZtjMsf4orEVx8qdberu26O3J+q09iR9N+YoIB9xsQZt/qmJXiKbOmuJThYS3jxu2hyM7Cw/0zGwFJeQGq1wE4voLJDrjY0sZGZpTW6ROnJkRLUsGLFdNb4dE4LAK6ukFoKvQ+/0s+eB3iO0DEZKqEXidybGxTsNkhrsUIobP9fPHInNgzxk/JY5NK+apJGW93GkGtQMRiYpI7RarQmtMt1mg9kVVg1ydIKhzQT/4xQbBYupwzgwUvdCdv8iGDZgQh1cA+GE4CDS5Vsbfwo1xOmyyrWmZcPkmd18bgzWwGVxFr1aZTHETcUcBZ8fnxaeEmLNQ3rTTmXHJEXbma8iPckUNQVZXtdWWTWlNbgiaUaSPrJYa0kVWofDy80UimOzOUHvKKaoKcV6R0JCvGO6SC2aHu9YxYVSZEc2Z5W6jNGPeIj9JrfBWZWZN/clN44Ka+B2pV4s0ivbHltNoZRWRvqKz3slBdUTjd5HCBQAw4IN87bt4n3M4I+pOXt7miJte5qgoFQCRtXIlJv+oP5rJ+wsvfRw+t92WI355507mROKE0kexeWeL462Tn9Ydrlyk/qbDxq3xPRXXWHOKM6sQpkTeNzT5Ute7KXsPe0gcLfwmt0ZwSVXCvnvk5EnbUGlKnkR6Vo3PmR5Z2/sNlFGxFt9WCQ5rs2QkFbQo8zn83w/7KXsfX7jk9y1g8uD8bXHg2UAPYVyrBUYePTpMwykpyxgDMQW1CgqAfUqd8bn63dDvPuGOcdyIcf8rw0YHrR7w6xzjv9Q+mK5/RQfSOqh5jBEZqdixiiaoODb2LDdTC8IDgNKbHVEHs8GQC3Qd7KlQlzRctibg6FG3xh7ZD08aHXirVTH3paQlnfBToO9R7Y8lbJlUfvJohP+xPoO4Jiuch+zTzlMDycD0NWvsnynV41wHlqVuUvtrFxOanGyMTmNk5LjYC2d6wssyglwGm5TzEnNtS9npn0Neb+6X2J1WyUzNPvLR9ZQxjUz3HPvV4/zW2afciOzUTmueVk2el7hDF9lfip3da4UpUX1TeS2G91hjt8y+5VLmVXKVczSPf6cOaTcznys/JjZvpvdUZmupSV1RRkZ9UXF07/VlmTDDnSTxs9p6b4yKdqmqKgmbelJxpUnt1PoNKNYzE66nSLXv5jP6dXDCpeWwGkPKJUHtDzfuOA3f/LLoRZ41Eb0isaGi+uLMrxTiovW9VAWdw1qeBwKkDYJHFCEc9gymf1lW8wRu46LfwzhnP/MFj1WTMilzEh9uyTTqY6Ld6qMPLYuLhZfKXE75M1OOeW3ZIdmXGOqil8+li4zMnyhJhY71FHkMDiKQ+1sVqjJlwHiwwQYT+Uyh3TF9bNyg3dKYdGaidH4EtQoKhX1n6Nx58Y97xQbzXSTtbxqk1y2SQVcPz8Y1Aslx6IL16ycrDxMxY0rKXE3Qbu+dZDB/A8ZpPw+k0KJVT5rFLuBYtpuOehrH7t63qb6JeUS7kAVahQldWZmI6woGIWwzMx29iq0EEIYnEcQ4vF016kw6vHirJXMTyFObsQUPlAShbiSd/GYpCGRLKRf2Uu7KuBGjxK4BAJEWFsMHbtBexedySt9q6HEnbKDSPUmPiGc8vDR+0JS9Ff9Cf8Br0DkEql+qtrVd2U6DDP3OccfLQopeyg7JjQPHxiu8wyeLVYNwz/SuBaT4FJ3wGg3r2aoKbjilApGneugRDAfB61rGlhfcwX6MkwvXs4F4KKOBl6Y6b41y3Eoo2RwhP2qvUiGrhQioIiCnB64MArDGY6BY3e05RQEPIs1QQhWkfsVekN2trlpzDynIODZtQ+RZFAoVx8iGlvblw6Ly+73CWR1LeQ3bE1iNgT2YrP7+oqt+4QCazFVjBbbv8udkX7zCpJcwz1BI+fOKQh4btkZGJRgzggyv6jN3ZOxAV4IIG/FnHDXqFtmqZK9cK4mUTA/WGzsimw4mYGF0hedstPx2HW3G3v2ZuJuJ7Gvo2w8CReyzadvffE47kJB7NbH3MrkgQDeIbUn45+q5LYnOsgN3PUF11Y0sGvGiqJ6scgr1+p85SqrpUKl82kVUi+loLZ/+a62ohjug93lLSAysyRviMH+Z4N3wz9s+lCdVNP176IZKR2p9OgdjEcMXM+C7i2flGmRZATeyI/nef/Jpeikxt5rjV+5p1WI+Qr01eWbh2kYf2/fx3v74aL4JHP8dxQfcNlNv9Z4oKnN95x4S6Z3zQBhIbjME1x1XxVEvjo3MmEdCAmursF2T53pjAvM7CE+HNE8fGlcqMapQm3KMtRHn7TOZdXo7Ae52Ru3zWRbwB5smxsQGS+qpybxO8LlA2JaZzbrfjYDxnDK7ghUxG7KU+AKz+4/6hB4Eca/P7FNu2ridz63QXb9hKyPvwlZ0JLJGqUnT0ob80+9zft/IjbPnTH3Q+2MrDXNflZX81/XcJ7zxcziCx4cVHIojZl2sOTzU6+DbyUu4IV23cWn2s1/+S+wKNp11577T2pQOZCly2YcZKWrouiuqpKo5YEu3IfEuKUUyUphCwkKGzxs7nbbTFkkm9Ta8i2TBmkhGpPxWEsA63/Ru4Y7ywE7+dHcRFP4ke4jEkzv+EetuVTUj0eWFm5f+2V9U/2Xa7cXLj3yI4qaa2UsA+r9n+166R1LH+PyjavBWn/v6sYxt/zLXUBeo37AMaM9fB48qbmmPzTq+xwTKo3HR3u55gewc/AZPoEA+WA0es8wg8vJhVHoK/2DHwLQtsglEZ0UpNy2G+RRwykW0t8ca3CJY8eb3zoEFn7uaEggROcXLiIQAwO2B4ObzWd2h+E08KFBpkMWmIzxfYwhuT3BjHDmxcgZkReZeyAcHsJBS8JGwmxha8I45tACOMqS7k6D7IEgPo1DlQrOCoUnBBIt0kZg4SEWRKhcMi9He8l5m2Q225OZodIeUdROLtal1FLz4kyFAiD3hU8IDEJ2hBwo13Prd7QRajAdHi1xo7BMGQbBkoBR/vPN0o14ncdkNKeZdLhPpFu+xz9uOEtiTB1YzuMuH5jKIJ4t/j5/p+glg/NSJPyZw/hZcInbxIiYymUviWAsBg8H3m0htiDtB4ebJXfnHf4Dnv4e/xY/OS75FP/mI7cHcKwjI2hzwKuAMISMs9j8jfo0YLRA0x2+6cbmzHwSiUL54u/Vsav3c5ddG4OPNuGsSTT7sWYA68TziCSDhwPGw3Z0fP7rkghPStlUlfnczvuOFf9hMeWHF9AwsjCPrDiipufiw7bOtkwS4rIqgA68uUNSF7cRbcyI95PwLI750096DrN9Oc/7d6UrYA0cGaOxHHu696/3y79LSI/NZGWFg1f2ycYm8fAfI/a9xHwt8UuWqNLpg0x3tIKZMtg5VIO+42+UOX7+5mC82RL/ExX70/nnBQVV/+0ity37ZjXZm160of+bgTF06qv0qfbDpdQ5x/Wv6t8bPCdlvo/d/ep+7DYEr3bNNue2kTqez+qpt0V4mQ2CeXwS5wF25f+0huPrzqsnqKIvD9cLXPl95o3X5D6ejsux8cAIIfmvtLu9u/Q/iSM/hMUL+6dPhwRYrCZE7ewX4q+oRedENKez5DdBYOC9oKeUYMqa2uazH1JQfMAwMfwIOrw8nIpEyMnWR9xDhfVHYLzUQADoktTwI+Qj4fEkHT8xkTdfEizpwcvJ15HWZVZLwmCrtqCOotAdusgiGgXYEnxXnzD8CJDhMbmCJAu3NOGXBG5pkiVX0JDHT7JwSvU9fUH5nZoHdEOZXqX+7MIOB+mzLdRHBR2aB3EPNB0FQKn6Z/X/K/5fpf5Zkfr/+v9XpB4beTNiejvydtQEagL+jcvBt/14UCL+OGh49CfP0ZW16y+c2P/pBe+Z/bPXrb9Yd58MVsD1+za+K6DUe+vj9A8ObJ4S+D0IjrMnvS5cdfjT/ScGqfYBtYjqMGfd7P2oyOCZnF4C0rIqNKU254E+LiGNEfE4G0sCpeDduQb1oH7A48HBnO2NjfPqp7hNeFpm5iAomI9LiLMGJwsNb3K/0LzMWW3ngMuRDuytp9Mu415Votutl//w23IS9vqN7NKFnqs2213v5tTSjSd5MoyDAj+lgXHerAWzZi4om7sA7UVtYvlMz2VgQenAUvs7UtAQTP9eMqBvQc3Y/rHPak0gSODb91H4Pc67vH7Z7Oqx+fbRYf+ygbrloLAkszZz4Yq32Z/OYgX4TTNOLsq/fON5/XFcXtW3y2K6LDx7rpPH6zx3Vsj0MuNL+JYkQWa0TpBt0Zew4i+3qXrA1rgjBLcO0i1B+g/e1WOMjGuhG9RNLNYm6g3I4Yl13TGw9kNtYxuTv/TOUhJp6blmHgYYVqvf/POX6fQX4E+tivLOH70/KkN523u3irI+a1kPyIGv7Pq6oRbv3qR0Le31ttjT654IQWGqXLRlWD18IJNTLwiKNA+FqcQjBcRfhBlUlxekT8Bhf1JLp2/U7HjS7MhGxpzt9sx1Ft3w3NikuR63C3OKDqxWeFf0r7/646kf1/ffOB9NG3I2jCC+1/LbsEBLfUsnn3pzTZZdVX2d2XL1jB5VG2A2kynKsZ2RQCmFXcvGqvmtx6/JKM3frQO5HiV9/I8EjsGl/hiX1TeeO3LucAN/XYKSd173jlULGg5fMUGLNtxZd6nj9WwCubdF61rWmVvwNZGIvNVU2YvmnkuAPaPk5jYw3VeZJFDTkOs5QYGopvZrrEhQ0cHdiZKpg5IohuIPStfM0j9P/08LGJsceNEdu3TtCfAPNbVKY8XaE+7g3kZPlP+kzBwVctv0f3p2JQxZ2SyCcLVlC43sbJYi8g519rpmK9sDzgTUi5jF9jBB1qFenOikvibCk/ZwG6pIpl4QE9fp0+bEsq7VvSD3VRLCPQTck2gMCORakPe9HgCp9x6DAKFKYx7rw/Y0jP0HRqKJj8+rT7vv6kFMvXvJKiDnVjbrLaM0q4g7VOczzLiHecyTJ+UEcuIbxDAPuDWSmUgocXs3iIlyLRmDKoqxx0oO+xbFbMMmKG1JVTHJYy4qOewbFjEn9A6GkShTqAWCubKKCZC9myNBnR0JzEJJUARUVzwBsneTEtleDYDqGaxDBo531Y301imbkPMye/b8Bhl8YrzGJIulOdbwsPSlYS49nJnxDCzONcFhhOMYnM0wKUKWQ3758zpAwZC9ybeTXwtwv0aKJumcIDfvUu+gt9AD3xJJhj41oNFy7WzH4wos6tNCYKnD/OejLI+I8UAAjOl5YWrj6yGNnEOFOCRe+mAgjxbV2E/2I3ZmZRi94Dso2okD2jX/SEf2FseojEfl2Rt1bpg7WO8lnKDRhGdYn86gzHmS2m2MsLiwEECF94JwhqzQUPe0q0Z9MbdUEJzd3RoppQorNhHH0AJKEQHhwhWG9D0mYsJnVwqDsPBVfplrFEQKthRgaM0wYf8EMatKyIBeVklbE0XEEFEmFiXjUrQ4zNkv5DsuojGD10XE+pCPda/X3Tef7FkS62w73ekzzctGS7H1Eem8Yi4OaMn0Ytser0/65A1y8xVLsXQTXpjkn1oXkWElflT7N0536V5WDmi4qgn0QX7d6vDiskimEOfUTd9p5tXd2xAacHPniP00eRL4IjCwaP4cIc9M6T3gi5lQFlDMYJCRU0wOOGQEz6PzAPPh43x/GsE3StElN/JKztJnqa0JmFhNUmRU8xIqaCQ6L2kCEUT1SyKBIPRfog9OiN5LXoOzBPmSc8CeiGHsOolms1LbfDtgWA5/pzcM6lr8t2wfEwvkiYGb5Dl/wtcmNPRd6ysLjaf74KChW+8rqCcspQ0ZQ1Z6GCGcjYPbZbsMkw4TsTc2sdi97+nhN8hqwvA/bet3x5SO5FTipa1zTQyaAYOwV0rltDxI+AjDQjRMhTFx86TOxKysAE4OLKcIX4pVOGo66fMWxE2B6h94NjjVIUdo/q+6AKuAl75BVw7zLT8cP8durNLBbJHv013jQk25rgF+FFXmuRM/gLNCuW4VuOxDy/IZuz71sdmFeJK1a5HfXKEr12I1m6n64Ti0wSlhiLaQGNqvJgZngdz1jeUxu91Q0W4+8UOUw7pVoNcuKjFUYRqPwP0a3aQWs7GfaEDOePdfwUOfheF0C5lyxEpziyIzU9FiNjMwwAYz0/ImVVyJyGoVlcbGiUoQYEZcbClCJagSlQIs2SRxMK1Mh0TCyPquIJE6GRqGU0p9dhoE9O+zOPZZ+3dbHc9CEbaX/iw/wio/+uclJ6LxwJ8VR1kVR96Nxy8HcB+Sw/JWqSQQxBC9tTiEQ4cwoD1TM0ExH9JMaBbcANn7rmvbSaR27fWgICYhiCFbkyCO7gSxDWvadehHwFSoNWWnJjDflR1ldCUWs/1dfvbCz+iqLEHhEIik+BlwrE0XwMc3DTkO3hXezAg23TUUIuUG4ncS9OIFaVcSXmD6/p9V/HA/58axldJkDgmcQ12VAjWdHv9TUqCuvfBYf/799xWeH63W5J+AkdGE8acCY0BumjTBluX4KNK+Ougny+eNKhvHBcja1sacWilTqc8Nqxc4PzLMdXy4ReXmE50S3QYqnzmGSMzKweeJbctwuFNtzxJXr0JHGggGUjUMV5O6/YbejCSrwsgOK5DhnoL2LeFCgn+2gretd28lmZYset1ijQZ6rE8+6QL13r2jo7dyQGrw1c15N7/6+utRGA3y4CufnavuOOXfyh7dcfwJEw5QJe86wYvSofqhpk1qAPkEJBCoSbmCiaW0+jlNm9QAjhCQ4ERN/jMp2Ob65KtVvprjRw8iVCa0rclE82YgrN1/59QuA+2VFIiCLqvpXp+TheC0QGgai0Jh0UJpyz5F7CBoA3PL0BQWBTu9d/eVXdd6C8E21/HHxwftg8e3FSYGmwYnAOH+h5I9CjRneey8yg4rmzz8q3Zp98VdXEdcH8FgtMaWfirdyVJlKr2akaIM179jpnwx5zaC6CTS7rAYPAZw2B94WFh3aMQQIZLoi5LlnT5c2Yaqm1OVit2JNVoNhL44rmNX98Wl2l+HyWxrRxvXnuUxB8buAg7/LvFl6iYnNO5+ab9bMxE6qZy6gwZ/3CSuWUWNRE+g0RXo+Ug/Ust4vmUDXchGEJhDbj0f4KK/FInUkSrrpeCBAE+4Cgyf8MmGC6awJyzWk7CLpkUbIN6f4d91buJuAmu4P0w1wCka/icP2rDoog9QmbvhEwIfk/sQ67BxMTHsruP/VfW5GMze+v9XO+6GERdvfL2uj9bXvc7OBE8c8Fqv1avrcygnxaqI23D9D1aAs6+79v7de5/B8bHRobBTLdBj72Oo9VRY9fA1UGXP0s3b2hwWPFEJqPXyyXQBCvb1G85re33fxnlu69yTOQ3Obqji2HnMr89pXLcmEKKmp8KNzAPHg4xfnF7469NlHIC5y3nShW42e6ujZyNTUwtSCcxAgEcUUG32rY1nXYYqi9xkVIl1KQhd7ZQCYMlutXGzoAJiVFYPvqmkqfH/kcrOvPxBOa0AJgMVEr+k+H4QNTDg94poDlFxsgHgvZccgVvalDnZqlazWQADbDALLWMuiUrjfMxOVygE+vgKjKLcQEcH8xFzjdcUJct1L50y6wpxDOlH8phzrPX1E/CEslrnMHlB89sEIverta3LtzJCZ0v998vFrjxw9hfrWzZpdtva3YQABATfI0B8iPCCNckiragc2xUETSqkCihAHoSV7A/sH6JYxz4DTUJn8WquGg/GHCO4EZ/xk6KeCPa8NVFFQhPl7XHhExSr8dseiu334mOTHVxxWVRUmZibS14yGeWPWl/JLxeAU03aCjXAdNQgXNb5/bIHq5q/XwFmyNQJduD0DlfosHn2qhoukVvohMKTx6M8e+5yBjifpk42X5nb5eKtwWHvDqc0xRltftY8+VeqyzE2EzgEGAFTtz4mYAQ2GaY9sJiyeCwygY/4OvCrm6OcvnELhdAkEAQIGPPGGQi6+dXXgQgN7n4CNoC2VpiYXjN2Mgx9EY1m6mghkPbhnzGCQH0xRog5isGlCek4BonxL2YX+O7XKG29Sdrufo3DLYQHK5BilvYzxm+KW/WNV9LErW40VlrqODpk3SIHsMx62m3LHLMsLRUiRmGD9cnyrpkPji1RXTcA/R0yrBIm7YK0NAIhqeoehEjaMmvkVjmorx+MtNgx1tpVlWPIYpImJg3bWdWqh2HZ4x/zOINjKb2W0NNnyCPHPpK39FE9OQVGytXqhQPFhIjrCm7Yh9jILGcw+1m38FD7LODwGyaRZhUM5zJHf9gXQvXGJEo1BVM/Cz6jYG6zJnwyfMfRkILN0U+vsY7z4LjnrCtPZ0N+XHasgY+0bjKx3DpBqizhF9/C/lltrsUXTqgXgM+6v8BfLH6mw4P4kJgFN+6vnm2S7XFU7Cx/GfEYfMrOHWD/m6NzdZONAbD+kVVdzpwS3qyxURbHzSisstAK839bj3/5yV4YPZXSWUbpim6zF/10e1r3giwixUdJ8wakRPhyX+N3eOpKXHIqn2ARlbe0/Ou3ugS0dyKYHDzhReuDrz6Z8yPYY8HhTg4ud/J8FS6nRXDGrVJNWTvAulZGsJTSaakN5m2pzO+8PZeNU4sLE0DbYi8O5sU1SPMwa+MCR0E7N4uxAhKpjdPcYgy0cX2CZLO32ZsKEXvDP70ZsQZnXzR5cw+YbgBGu9TyzVwQQPDE/mvokJFy2JNakZEi5sLen27wyWwfG/qxeRQbCeJkD87h8fixiggy5ZeWVUbojpIZOIs2Rtt3ZMR37iEEtLRjNdiaxtYvLIscWMLuY+dv77LuunD72DEI61hkPdrUVoOpOVYTjHonG8dVVHBaxdhw4Nqxmhs184fh4fkwM4CDOvOKOq97badIvvnZd9jai9qDOLaXE9hM2cGRAP0VN1HhM+AsnKylN4iYcM8C09bymyomF/nY5VyB4PuuANh3uFVTiOadXuCwp8/hnCaNjJyFup/yBu+pNSGoAtLVdagQn0v3ju0mYB2LLF988/PawOH7Px+1LnJgod1XQaIUc24vrx6zBuwzjh27kH7q/NSoQ8ClkZ24m7gicTSOTo8bJW5N2m34q7iJwAvuJAIx+J4X6DnVvMtZPph8c6ktowUWcQubk6CaItDrGztytp6CE+GVLFzZACMgtMJlmei8dCqNhix1Rs9lSqkRlGmRodCPvt2hUL3drleEPgULkLTUDYj3Ho7+JnKJIWxy7TlpdN5UKo1GnZoXHT1vhphGi5vRvZEX2v5uDibUIr1CGaUZXAYh6rgl87K6Z8QteDOIK63lEo+RhjGhMtxXdpxnbAJDI5G0iF+4bG0B7Mpf9nWT3M18xLw8jx/30XmcI81Co1mKMebzB7GfsOEwVE04itVdClgUDuTmmCXO/QZB7vO5DlbSfWvq7ib/LIEQa7umeN31pOEcFxwixz00E9xziHPDd9wmYKnwubDyWXTHZM3d+hrH/OzI6yO1M2i0GbVm5S5tZeK+vnV1/X7y/t92MMaPYM/cuon7UhJsDJ5wpKwNHO6j1tzomteFQHWs/gqFGL6q3MhQNZSeDXFazXZxgmiB1RnyZSndCiRElbKFefdj0JuZzQYvlVFY8uWYbPxE42Ow86Q1jpThwLWgZCeqWv4nO3lS+Sd+8jy7WiQUNrDBuL/QUPGcToW3+rS7gLTrCDKev/h3F1B/50MRzVuh7F3QqHEU6rKjbC/1xvbtcqUXoUJ8CsqCIKczEF2yJgSVff0upOj7wZpglHdBBSrY51gNpqapTcGX19hag63JWBPSJ60ZWxs4nLApoiBQz3++kvl/D12vgrx9art609TDN6D+p1JKr1wySuVTEU1I+TYHoKXF6Kqn7ZKDCtvdHctgEqtTehe+c8ue+cdGVRMPa74KX8qsuTncqNxjrnkn6RF0rkbBg3G26oXBRdczBqpChpLqXPOe/Yw6TN5OoyWTtNbsx9BBfrohzwy7Id3TvHdAWuHlNyORr+rbLFyq4LUqDg1+Dt/ijrGaYNRwwbcU5hs2rS7AL80ouIE6oIVdvIums/phnoUqRE70wk/YK+cImDQGThW5hYNf2Y37/2DaC84kZ5aLv2p9iDeBmpqxWaAIcvpz3VNPf1a+q8SIGXy4dsucnNMAJutT/cYmu3wm+Fqzmy3ea/8sxJ/QC/6v66yas5B5nkoyc1ez3+9SioTAf6n7OQCWV/u4KBGRT5fVLDjlENKkBci4EbtxloVym4DMcate37dF93yVKoMgGTaYINsObX9AF3JMwIa8tGvnpqLIeiDr4eU+/fTKyzSzBLIJvc79nzNOPpFWXkt8Mv7lPQZuiOyq9lEv37u6GyKy7qV7h6SIfVllc8TgEZJpz8yqJhZiaOgHwmqhwZTGH0HnJpfO1xe2yLbWFHDX2dsaTCm2EnlCKs2fMF+CyuAa72lkJvoBUqqyLq3eSX6bcSuOh3O4vo5SuHXqosheWzpzlqmwRuWiBNJoWwg6ytmAOjKZMCDfC5Nv4qfRIupZX4EUzFKxCpbBz/c5u36cCX05v3/WmSAvF4xUkjSCjGj0rBZ2b16tnmLYpT7ohUXGWeIyCmZZZm7ThTD+CPzfydd2Av4f1Chqobwyiga/WkClJ06bziIud3eZknAjFhs0sKTP0Tu0PIS99N755THDdHkKPI1pVXoo1ncrF9v0/8UChthMjjwhER1/Y6KIwMHvhk1F74LBt9x53G88YPal9Pq9k2E2eszZ4Rmb7426jA3GTearJgudhc+APsR4fBXXY825cwUG/h++f7M7Bb0BoFDV23V7NbmdsvvXy9uBofZd4ybkjEOr/+xx6ornLTVJMplGzR31MayDRKxUtWXe6j9C/NF4j4TeQuEpKvLl6yv9Usbps8rfuoyrY9N0wH0CmHntFLHf3q94IWffAvYfEmTbbmtOrgWc1owY+tCLi9g7f4cX9zv2fvGQprGffiE3PYrr3veUxvqMvmzdZzAviAGRbCSSjwRx/UMdHD5B2lzfChGXlhT9Dmk8+LmGqWe5u/raTUfg1l2F6cAH2g4B6X/Xtm1IdXK7ZWP9cvLLeFCAJ6ycsxeLNRfP1xZRsKtiA6aRsV9hG+2Vxd5OtVuaP+IomrK9Y6x6M/WTPthaQEZQadUUtoIfmMoO2lPEEu+UU/Gn8+ACBn2Qio9YlLc6lHBq+m+r2KTRf1QRu8InwsMfA64zehqFMg39y68wQIQVflbBAJTL4RquluDjRwFAIWvDJ83sAszAgIIrjF/P2W0YEEyzLXnDnUiMV3sR1sDZsFUMyLlnP6RLLx0FkR06u28HhdoPnqJ47rUf6Iv1+s7f/aBwOmyVbyDcr6AR2MrBVG4zMEEOPDBGX/mdDnYfdmDuSD/cIhExMX9SajyBKAlrm5CY8Mwl13mlXd0nwRh9xU86oO7S4EXVPWRWunY7mGZHg9qmAjAVPYgRJeOJHGICYrMx/Rc6uVEz+vvyAGG1FD82hh0tAuJjuh/epeH7JTrjrnUQ91B+rPHjMTz7oxfzsaRjhE7NYR/M69v1BcQbqVvfGFl01xuXiC4pd6QrTTGaiZr84J/LgY4euYTU/C4ShL/CT3ycZPl4oFAAQR/vMlgcqx2tCYrVc2pfJSe4Xau50NGPn+cMmZ1m+19BxB9/Wh8WTpFmbZt9pUcocnno9oVpvdRki//2QJwRgOxqDr/ySNOFxuME2Ens7FUrjp1BZ77r7PgtJEixMqnKom7bAq5B76GkZYMikqVsc20mxISDXBAo3qtZ5u7vFMC+DQaK+VvIwrLSo51L2YtOr4dwtbza7sEQckxZyeWOZtb6m7uhx7U9y4NWcQY7s/1Vxiq/ZWiIC12+NPQX46+RI5eAfHU2uPdcFEOdd4PTPkyh194KC998Ou+jLTf2fvZR7enEcOIPyVue/Jia+uOrC3rWqpgiXri+7bl9E/MBQ2aK3xPeqpDvawknKGzemTmxDo+PKZx5pFV+AeipKxDE3/R1Z3HzJ/pyt7PxYx8Xxaz6kpoeKyCUzMFv8q1HZhbG4PHrJjJ3NhcKDlDT1BYQzqL/KUjuubkAgx7CRPDDqxNPJmRj5vXqexMOUmsuvxkK+PvvGiSSTIQbNAvtAoX58kWvcy9C+ZyIw+Q7a7hsFYdb41yBwck8V7aNZJpUxsyRSvG78htg66H+YZfeVa58TsQGxvT+TVNRn84fg7HE58rWFcUmlbF4RWRlzWkCEJqVnEwGI5Pz82wBqS4VVPvVwuhikwSku70sXCBqqvRuiRgBMeCoosIMoND1eWPRXGqCbzZz/R8m/SGoeHKyawSQS/Lw27PoqU4u6uo8ZQAx/Bdf9/aeGRLJ1N6RNdaXaOJzQNwvlZjVxg6E920oXYJp1SOuX9jrxEjquwvnZwfdfUheJSufE5H7Rvri1xxhMI/Mi++buw9JDFAWXFgQxWBELbgAbjS1l+SliF8xYF3edoZM/qktwt35D4XychAUWSu6Cu6XGVjZlmcSrGMGfPvABG72390E9CbpBE4uTPThCQwGF58DE3M43BPqyxwTOo3HQ6dxTPfV6kscIyqVy0enc0yXvShsF4R/gc3A/oOHbmHB80/VThr6krzhUy73RqP8EprmrH6aqYqNzVQdh7SGoGoSdFQ2Jejb0DZvIYORV4o26bub4is7oq5ECVlfuwejrd2QNd68dkY9g1HXPBRvt0GwZukXZzgfOPGPThUNWM1EonKImxufnhpwk7jdbAKbjWfvhq5ABSSCWnlV9GY/wyiJN2Q1KFxzdZM6ulAjXJvSrE0qSY7mpL5K6hxAXnAZVXMU0bNVKqKVOIh+hFk65Swhk0dJxHJ5gt/S0Uuf1M6cNXXqzIGaT4RW4Vpuj+K1VPa7Ys/gWUL//TGhzCmJkr2dneUKtnnak7xR4rJ9Y6TppJiqAnfejdaY5OySGGsD2tQd6nSGOOdhjNbK2hinqyXGUGH2GI4a8n4BGIcQ1igfF22te3V4/E3W8r1GcPoAN3DRVg781w3QDNiZFTMReHWugfLivFL5bsg/y4UW4XXMUQyMQdk3/fHRRzz2TyR0T3PN1wRyUMjlzwPn9NgMSWUturQhDV4TI7Q0X6mM6I7gq+qio2pUBszR8BOBZT4281aT0oJ9LBYDs9hqHn+IatcQr89b6YxpJg4mxhNmxTRWOjIyVfKX3ddNwuzYpgon6lILXgiJMz1d7DjInqnr8VLXcZO4S+xH7BVfugtKSGr4bvs+jjdGXUn4O4JUUzDB4iQyUTGG3bEHSGIx6cDuxMQYVOQ3TMZHdYwpHgZuLY5hmF0efigsEIONTlE6goPDKbHGFhT2kJZ71KeYo5giLsTlAnYKsxcuCtDT5KybXJGx+RthQI4FpcxHzDsNuRZwDEeNUG3zG55bE6cfPZwb0qRPolWOHvYXqZvSOF/0HNRqDCYzn8e1c3mnw4MgSC1S+HVqqmEFh40eimnyvcLkpDOcD+YhG2gmaUZSImtLBT3vUOEx3YNDeXQYLRIcWsaegzwkEKFhuuNw+s70nYcdQUCCCR6Kp5rn64TW1J4LNBLBTKKP7VJyISueq8UcxaxlQesB4WHwVgg6eSDrGTBsxWnjQTdIUPjdQtBxo7TH87i89Y24hxQYyA5cvOuzr4Vx/jifBs+Q09ciU29JGC/ZiRmtfbi/+Sf515xztsFsUzAQZ1ldawVmOiuM5f/CHhI1ukoH+XxfM4e3zqy8FMaYFp0G4k717yRjm5zsQbu/JTGDtHnh/VoKPZSIFpk2BaPYy7u2R6iOcRzobJEUm8O3meQa2kjcbCIypLIS9QsByaDUHm0cIOZ06t017GGNcYs4+aoeOFXpct2TSn/N5/xFw9I4z/LuSCQHnUaPncxnXIxgX0PtpWm4Ka8ZjNcpGi5tL4p9jvGOzf1BnfQDqqmzcpqytWfOp8fH6UJwfG+zrNkoF88eaSBwJyA6hYTd4+gXahi9A9oI7adWzkOgGDtjPYAHdCQkUWApvK7cXSjCxsFQExmmoT2Wl8BfHJ2zQ3DYeXs/+LL0/BNDQGkxVjGdkQg/iSdvXMWkq5wH5ZAnXDlUQqqagGqqv6EuMV2Nc4xjXI1z1ZC1Zf0XCvWuYDPMPpvhdmcEz1D0DYMuPBmRyZgXUOJn9yGRJTHoZy6h1JBVjSozYpSOr1IXBFxwkVDqJitRYz9xNUZTL0VmnBKKGsJmhc+wk89H3f0lu3c3eaLFaIwmSwkSZdfOy3ugog1UZHpKMIo0RpOlhCp1wy1p2uNaTIJRpDF6U9luSqqyWtsp/1UN+4dgeGU3CxkvbDP7eKKMpASjRBtR9dffA3SRG6WhkHJ41rTmXIYZa7RBLmt0TQ8+WSu+FEaS0mc/3JHRfPrfvAGPAAhsk8z6I+JVVY2QmjE03qi4ZdyB0WKsvxLsnvVQeREeaqE1025SH3KMIlPxVcdYvoigbtv3SQ04DPnCr8bQKWfydrbUds7ia4xXTqLGxkduQz4zcYxyITVvgKUnykhKMIoMxpGp+JogjQXVgKcU+Thi4pti9dK5PxIeHgZYRuVDVh8rr4PwUaalHYU9zvC2iuVLxCwPw8WH4cOko0qZye0RdVAJucOjzotrRwZ1LXikxti65jjGKnc+0yKho0iBlHPzIOU7sO+fP4l7YG1rRyJBpCjR4hwXIb5LIHUCA5wrmTIe8SSqqVP11B1MAApxZLXcKjnrbhjIApRDG6qheGjwPd1VSeXM03eUcwYM6oEfC/ZD4z0ghsQN2ejZgTF2Ne1ACSqjLoMZ0ECsMcRgMdIbTmdQOQfMcSt7bO9BD/bXsT97smiIZxBPo3FHyBOxjthQkTyRW4fggTuBYcd3zOiBfMiEPFNYik+7dp16isxKOJnZiLbhSOIOpfN0T+OTeUd4iGnInyw5jlpAYe8jWhhmvraMgDglTcxB/DasAZnVgKYQsb4HrJFziW1pA7MqkGXsbyjqKDzRVibb1iQlIQdedESfZPnIj6KVoReKMQ72nhnYLFuPPkLmZeXXQP3DVA5/6necNE5Qmv+4jCKo/knC1eRtweCz85BCQYfpOo45PVOBKaSXWDToYosuUARhiwGKAV/GoK9wLqNXoZQ9KzpXX6l6T4s08ykqRk+8SsYpRTKpg1LrRyV4jSgf4qpwOldKxklnLBFENOhiiy5QBGGLAYoBv4pB+xz+h670wyn1iGtcldtHLw6d02eF+D6ne3taKVSPTPe4M+mItTWVeQgUQWgo8xAAWw+p5ez0Mfgk6z5dgtUGh+Obc7YcoW5YS10d3ILZAUQQ0RkYDlrivpEHa4u8P2Q7ahrZdecR1WF0mC5hGEQYcV4hOYZTNYxEFlWDdVQ0z3nQEwaREvHRLfomuB1QFnTRMNt2Q5xGLrJjiDoEG2ftyS6OkZ/Ok70ldH7wuQ+4A2EhaYgvsWWIXmeCboWd0QDYjQg34xI2iJNlQ1SIKEQZIpYi3IPt9icLTNOejoJ79ek3kCAS0B9m0N3iDEL4syqkj+lTQ4TXXgnloXplwAbiCyMKqHCf6+SEfe4DYcKnxbiKGI8S13EIW9x7VdmcF6SJUy0VAuSYxUNBGNrkYPrrcKTxcvmxuNO9ZyKAqVjhC45fmEdsCUyDhAvjoMoeltg84iyeB7JItoVJbWZnWVzwLJQWuETw6y8BgOP9/MXtPCQ6JthRTYbcpCkGvQ4KmW3tJGieXY63sdWLyyknOIbrxOvmo4ZyHLCjQFFpb+06PnQM4d4RU+hrffpbv4E2QNAEBgeDk4/SvAi3vjPEqXhFzQbOqaDBWJzEKxUkttiTM1TTJLW2oU2i1oY4bODljhSC9hQFwbhULSjDElAac0eAkZcy5Qo3UkZ7HoMBpyJcAFM412NWZiSGWX+KACavCUt4ESPMz0CxUpWjzycDTCVaY25KQ1TFusEmo4C/B1hdZVFE3A4e17kT7HvE4lRmd5J9JTgMHBEF4GrGlwPNgUs6ul2OsKfiZZwleWUr+R1gGldE24rRGoyH7vrKCdh0Iegg4hIocMeV/ugmidQE9yQJG4VsUYD7fD+/+vTPHnSuVZKUjAhRwvGOK00pt5DjE/JoYIve0ubX0NTnF8tOZcF4J7EXnICKytQZlddOdAI6fwQAia4eZMi02/C+suATexFGK/BHThYQGHKEHCPHYSh8SmkGI6XpAzkmjCRoi6rsZrlOinqymtf0uhrcCgbByN7p+K7+yMhOfVYkRC9nHxIzHFECAwKDTyhTBGOtKIE0ZCACzCUYSjvVMmkQG9y+WpCFkvh2NUjR1TRtsYY5WVImt1KI6pogx0bRlMeRbBTPUl0oy5TslWj1ZWF4B1D1gQmn7vI0Mflk4+up8368+4o4cQbxtz+m0rTMH+LvZebFw3wGmCCeuCJYrG+sBaerrfZaSR67Vrx5SZhon6cYD+W16hZCUmJ2bufjJgDu2y/H27/MC1LqlJIXNbplP7HHb/Oo4rsPSYi/a/yo5J2cUbKZfJZKHTMTH8BEyKIW0/UwZJnudA0GDlKkYioUSZYL1eIxTNllOXN57WO6GgyKc6sWrcVdoVCy7nA1uboEDVDFMzaN2nWPqtw/UwWw5KoSUFdRF89UEwwNj9ybMzlIFigwNCQaoiCViKHhQbFgR9jl0lARhkWx8B5L7NxQUFAabwjD5TjIlNBDASklw3GdFJ27IQzIletJJbMUElzrOJ9rDR4L+0skA+QQ3nMnsVW57u5UXxHAdCKwXm1B63rycdUKPNUqKFiV68ZT0AhIctXSkq4lq5Lw0QBdwyNDEO4iWpSQf2qx/wLQWlJnGdZ8SgmLfO2xaa0vGetKoqTxrEyPLKwoFUjPS1R4hCpf+hxrMQCtHZh2iUYD0EJGQbdhwUTASWcoiqKUlbtqWylF0G14xF/XbZgySCSy1u7JJ0XrIKRahUFBxaRJzQVlQV9kATok27ZhCk6IThmnVZJiSZ2iF8iEem9piyvXmT8RHtOSAlif122ZAkawRYhDa4OeVVbXTrU4QnrbASQMZ1WuE08N2hPaAkqzQXssaVlPdnpk1u3jAuANESwFlzxeLNBKSvJZa0G3PRK0HLHuqltAdK+MG6XF+VKfsccwQJe8zB1MqEO+IQmW+JjePrQLRriHSPLis/3Z6QoNHOy3p66FJY9Sp2RQK8qoU8C2EyGU2BlSy2tHxXxWHxkPIhgW6makg9fqGXiUu8KhZFXnCoAlYYFz71U8EjqaELWOFZAuxEatlLV7YBmSDpUCxRWYQgNlYoR4Tj5C4mJKZeW5vexVwmBbWfVG/xRKdrEAFUHLKdZSB5vjCsXfvCpgYFxDfjRo61wrFk9bv/UnmVOcdYj0XWFesyE8D2rrkQAHYFS+hfrnUDpwUVQWvm7caiTEKr9RLt5q/dEaV2lUi9re66eFliCi/NAUUckdSoKSD6a18v1HDzJkDVlNB9Vca8kgucBrDRO7xNi1Kkr2QZgXpLlk/+iQEli4rKWFPhIwFzA1ztBKH5XB6p9Z0IyvsT7qyozW6pZQArQAHthgwkdHEQc6yEblyvhZIlhjHH6qMONJqnmEx9b0oCNoOKFVxUewIByPEtExNMRusx5nbI+lM7wiDU37Mc4iorgUlkZFJTG6gGBonEBM+Fmp8iqURQoX98yCKeiiEKuAku9DIXdDAelIRcOpVhSXorAoqnUAqUXWR3HS3XopYV3lWxu+lSFaJQjbI4pb0DrqVkiStY23cPFDrKiAVNRSoBQKiyLqVAi+I3U25RC7cT1WlRQq0FP/LsmgQK4jkQVkKqvTkYfdp62nIHJSLnfmUwC7cT1W0QqiEEG2gtieC4/MiOgZ3YsqZXUn60Orqky5IsjiVYttb4UgUJkS/Ika3dU3f6MmPSXkAg1GP/2rh80mR6GjDeBSmMR+H2Rr8nZPE7p69qMeoUdkaNiB5OY+vVM4/DysVqfz9BIXKmpCDtRPeW6zAjlPz6mAOm9/KnfqrXzRpgx0RtoeadfTmTzB1InCxRu7gDOZc3bN0mPXya5f/l3QMc20Q/tHT0sYxoUCsuJoZsVN102FJkrHbpNWsqkVIK6VzVrZoYo4JXEl3yMFObG9rNascHZxsHXPaXHEsTYsIQ56pwVyPHutf2prpx0sW84tsYzNJEGtK/BBa4UR6CWdp5fuGuKgJlw46WjyoH7KoX5a6jZrmjy3OWhghJ7TeXpO66iTCqiTlrlvtcCpfb8NVm7rXexKtkOZdYG3ab3qDJ/MbFkJBitRlZoqInGirkaRUFqkLX0Rd5pKeZXinoTF2Pyctn8jIKfZTKOUjuRI76is1Ua71Guz5j8RDU77N6ahZhrFlJLKrb16VHlhXOpxkJ4y1We3/G0jdyuxnZGjR1YyJBvR7zRH8T4+89r2yyp2Fqce1dUw5mDoyStqKZXbWD9kS06K3MS1NimVp/IybFujKs6kpQ4KYaxhn/MaMD1WajCqWBi2aol8XoeerkZtdgoHbKg6Kdjix/wj7rjKFmDJGS0NAxbFwhNLbhvCQJBT8xg0Oimy0rk3JIgrHXc14rWa9DOa4NW0ANtRg1DwGdQJvXKtkzihKWqdMKRKEuFzRSvqVWzbEcInLVGlp2LysSShJRtSYr2ro5FhMfgoVKm4KFdrsY6YddAc7Wh9gbjt4jyg1wqRSDgRXUyt3vgAAOgE4NJXz/97PG76SxJCvgPgs9cnRQLw+QTT2c8nS+coiHFVBqADDAAC4r90Az5e2OKIdwO/rldtShVaf3AZSwLGrH9g056tBZPPbHGXq2QFUqUxMFHPZLb/E++qtkcKn0Z0VMUMilQppVGsTpQiAzbxSlYkWTGnWAX0MEzF8lnN1WpeUmxirYCXjUusNJl81KqYxMqUokC6ZhmiZXLgSOdRoMkHTrID/GC7FAlifUCbTuJzqqqkkFjoHDMjLhBxZ3LXO3z3aQoAAWyA6kpcBlVWXQT4a5TSxCtgKXsWsaPE4uWyfJHdaxi7egosQM5ZVHbWagA+7CIWgLVUcb0uqpHWV9wKeXPfu/Hhlgm8oqmbwy1Z08zV/wP7Qq9MGOxjYbIUHDaIkmLNRu/zFBlInFgYKxqXXCDzsHh8sTyzfAruvs0GZoCla3AOa8Cm6spcWBgneK0LsD7XNFRs76FmMcHYLqev1iw5Rt3H+OF37Gx3X1Q8KGYta5wMzZrE4Ma2FCKkxSIZK4pwvJKREZQJLxOqrxOOhATL3aZlj1u2VZlZvDhgI3wNyeQZ9GCgxJAiUiAMbgy1OiOWQaZesSIzmzptYYrXJinmkJpFKPHA4FC3PIawgAshrO4uh7JdFVRPcbm0W0a3e1woi8iZU5VwI4UcT8dIQnBSPJGBkjiglMzQ/j/9WC6mMmlrkbkUuIQbl1pFlFIs4HU95NI7PI6IYp08OA8AOtdjyzer24oxMIzHbrJBdQMZn8jfTWIXmA72V6pKghQkBPFSa2rTSUJPY9voF0vcZHbobhkONFS9kTtt1OGANRoI/mO0xvV4inhqKQarMQ1Sx9qvzyaAO9hDyicKu4w+aziWq87JlSPPeQVOOS86FnPx174Qe2iyLKswFUuDaktfLBcvmQ542q3mZUT3WQaoOMD5gJipIP/2Ng0Ygt2AkW5eW7TDWPCaJq/TFESYhQmvV74fTqghxx8IS1hLIffeca7J1jnnnEvYEoEJehNbCBhIia/N+OPLtIFB4FlQBjvy74kzsGcuWDFEVPccI1myaNltU5C5X01kGmaU8zpjETBjEVktX4A6KBgyshOioBQ5YrohB8S2sXb0FZcvQPMQ3Kkt7FNHXRp/nrtWOKzCKLjS/qN5BYL8Tv1VFXjHsJ9dGvC8OSCzZVuAvXjt4yhhsQ5U+AMUUX3EZxK/NFNaFnd1+rbn50aHA5xNIsjiDYTAxcEce/MrTwabbc1vYowxxtqPcLfMtp6xFVUkCniNVmV9KlySlum/nlF+TzMXHLkneDfp8462uXZV19b3ys2syZIpV8Emd978Kzi/GiG36Gt+0vQ6WhFepNM2l9BbpfZf53+al1V8vC0zJiZIFtXiRAjGe3L7FVGHhUN4MISv5OC2DlWq9dX+xtXunSl1rffm/JhDtxNvH791/1NlmKZzl4W8z7eUA4zz/rA8VGCRGe4G0MAe4gB29wCTLEX7CniIqKOQp+AQ1It/IBqDB/4TfjOwgjUMDslqvR5ykWcVF4kTjkoueQA94SZMMJ3n4Jy5eQB7xres9PhtUvPGsP9clecvTCYTANS29TBrQyMMQD3AHHe4b0EAFMgEMpMIwYRqbUGlGioOOopMKUidbnfvycx8CcJyvgSjGSwheH4roTTiKGEUM6VEws5gCSefj0pknnlakmJcrBNTStRMc/GT0Rh1ZqxV3txQzV6LNU39v1qj318T9h+C39HabJFuePV/i3+1oqrA8vthST1vT50atdqxiVWSYFNTUtOSY2vToYJfq3KNqsXS0YjJ5AJpaF6bhB8O9Rp10dRmuwqVpm5YdDEka6TlerMGA/uzPlXTROZAzX6xQTlyuLZVm7oE2Ie5gnJp1cviY2Z/1xR6WlcUuvSCWvXsUsXRMGTtTcJ+jLDi8GRnJuwY5NfbNC9MZf2Cn9qTLh3B7jKjw6iK9cxbNbHpZSt3pqF9VI6OIevN2dYUZCvqFgvZ7FyQpfAP0yWJeXJS1WXeaAqmmoniqdhxPVNdeK1LKvbfkXHeANK1U4tJPqjapOJXzGY1RE3NpF6uU02d8qaiKQNUNOU1c5OMTWZKGFQl6aayH2RCu0ExmcgoNEfNyqQbZzUUJIE/JIs7Rb0t+arUtiN/5lED4LMRhBLs43EbnPPdcTnv9CvKXAtKBoFU+f6akh2Mk5oN+6NQuX+mzSh22xuv3OGt0lIHXHbQBW+1afFOqzGHfK1dh7t8PHNKr249DvvDL+mOqjNFowZNNgnUonlC007/xBvCOMQoxia++DC+SYhvQbYnPBsO03JqT7Db460JoH9Xzw9CMIJiOEFSdH8rN6xQJJZIZXKFUqXWaHXtHvllMJrMFqvN7nC63B5vmzF/OD+JTKFCNDqDyWJzqqzKK48vEIrEEqlZi+xtztzC0sra5p/+AWCZXIE4Kn9jR7W0OhH1iemrNYPR1I3/2AnU14HBEUgUGoPF4QWSP+Dr1+dfgyq1Tq6lSP6+ZDSZLVZbO3sHRydnF1c3OXgCkUSmUGl0BpPF5nB5fIFQJJZIZWDJXZ/VXyMLKddVKFV6an0N8AOIMKGMC6m0sWEUJ2mWF2VVN23XD+M0L+u2H+d1P+/nfklWVKTphmnZjuv5QRjFSTqbL0L8TJ6EEUxgBgsgYAUb2MEBTnCBGzzgBR/4IQBBCEEYInAIUYhBHBKQhCNIQRoykIUc5OEYClCEEpxAGSpQhZrw1N0+NAhG0MPBEbEGzbwO/vHwBCKJTKHS6Awmi83h8vgCoUh86f8/oSp1AECbIKBI2kDAyLo8EPJjnz8Ug9EUBtbZYrWFcnc4XW5PL+9SWx9z7XPdz/v9x8NQ0cr/pBumxWqzO5wuN/ADiDChjAuptLFhFCdplhdlVTdt1w/jNC/rth/ndT/v535JVlSk6YZp2Y7r+UEYxUk6my+Wq/Vmu9sfcJYX5FhWUDdtR1k/jBMXp/Plers/nq/3FwBCMIJivwc4QVI0w3K8IEqyomq6YVq243p+EEZxkmZ5UVZ103b9ME7zsm53+8PxdL5cb3gCkUSmUGl0BpPF5nB5fIFQJJZIZXKFUqXWaHV6g9Fktliz/7c7nC63p5d3qa2Pufa57uf9fvMUxAKMzcG5BEnxaD4D/AAiTCjjQiptbBjFSZrlRVnVTdv1wzjNy7rtx3ndz/u5X5IVFWm6YVq243p+EEZxks7mi+Vqvdnu9gec5QU5lhXUTdtR1g/jxMXpfLne7o/n6/0FgBCMoBhOkBRqtJXleEHcQ8uKqumGCSi91nE9uCg/GPhpipM0y4uyqpu264dxmpd1u9sfjqfz5XrjBVGSFVXTDdOyHdeAVgoo28CalVRg4TB6BMLNV3Sc1/10+ev9Bt3sEoYw0koyFhxCTxVWZlCpmuqHh+j/TWM7iaaxkUC7B/6R1Xqz3TX79nAUlP5yl6skKyrSdMO0bMf1/CCM4iSdmdz5p6BzUbxhTXQtX8a/VMJSZyy9Y8aYkpQZfeaI8CQtDJmaik9aiSx6inEDHTIixTkvn7/eVYrzk9aedTbyyeOk5lJdUbylXkpPyceoMSQCAZlzUSUrJG3PuiBIClSbIW/znt6hZJnQV0o96GmJSJfpl1EyUb0WjEweqD4fJJPPW9cTXFVs9h1BmAUsLDQF/EVjWgZqz6o/UVP7FSmd2O9G4cSZOe0+2pKDa574emrdLLksZ9AFGj60rwWnOD9otzF5JZL0AMsmqyAAHXgVSrHF6fXua+otREeLcMX+0JAJH9ijgV/95fS3v/Lvm/xfwLgxRa0mx0qUDqxABMYxxflgmvfiRdN3qhTpDv1MChZ8vMNk5cRcpEJgikKkILYx1XXyNorXxSAdiSQqTldiKbb65Lx5nieXieuYVqOD25y72gxXbkNUH3LxXo796Fq8D9aXX53PgewS0lhQWtVDxK7NQ0RGRcfcadKXJJQUU20SUWvHTwpLaJ2OMMGbPX/a5J3mgvE6n1bgBANT1BohkrBS8q4XMEWXHVcdYdEcWzgLe8MsM07bytfxg1qZz7Zgh0qmqGhv8D8VO1d1MNs5MbGwi8Ma4Av1u2Cf1pitghUKUNGElxSHhFQZA+Vf3S/OjvMNCuhN/khxxrXGBX296eDJNi/VZ2fxUV8abKRvpjbipDLZdOT7yo0mzPtpxoGbHPejv5rMbjuAR0EmqTehjvddOjUN/m5rC1bx3IJjmFTXEG5/Ltr4uoQcvDedGFcYT5gFcOs/wwRgRdWJMYy7WAn+uSdHraBK5goPApea+GqGb/amjDId4o+4eCEs+GTo+8g+GOd/mmdggOMsLg2qnLpichnfIgI8BmigpQ7+jWpDhbkAs7FtWqOg2CcacRpgxFFEfZSf1G8jW+oLPnh9ROlXSE4gVtkKy1rKtsrKozpCPxht1skHEGFCGRdSaZsreAAiTCjjQiptbK7wAYgwoYwLqbSxuaIHIMKEMi6k0sbmih+ACBPKuJBKG5srAYgwoYwLqbTNVTwAkUxVIrK5qgcok6kaF9rYXC0Tyniijpt89etFd+q7ia+76z5vtO990x0+HprvsfJvVs3yslqcDhdfMCdQiDBJ0QzL8YIoySlVABEmKZphOV4QJTmlGiDCJEUzLMcLoiSn1ABEmKRohuV4QZTklFqACJMUzbAcL4iSnFIHryiW2+/2785j9tKhaIZded4J5KphXI5MF5Sb+ic31E9wQHHlAoH+0VC4UHy4u3Jm7++VOtakLyoD10J74lqoEBwzUNm/xB+bgv0+P68Wp9B+qM0VS7TsYUIZFzJd/gBEmFDGL/HD6i5mpK+ANO06BHrQj47IZ86NH8rzz/rMx8f1q/TwbXX18r61mOpCfJYw0Yf4jEzUKb5vstxWl+J9KGVcmGzlg4hQJmRmX3W9dgx6eFmcRnBomdF8GHrT+2WOyf2SmdzP6uinqM3VCuMtO/UegAgTyriQShubK3gAIkwo40IqbWyu8AGIMKGMC6m0sbmiByDChDIupNLG5oofgAgTyriQShubK3kAIkwo40IqbWyu9AGIMKGMC6m0sbmyByDChDIupNLG3t221y37DPOjOzVQ7wqaRug7+7oU8r/6Ph1h7Of7fvDbidvA83Xde32pVs3VLEcfDEIZF1JpY2/30Yr86+L6C/UJkNeqjBnldfu+eX0RMKGM76JsPV7zump1MTbX9yMA7gj9acPvhVDG+xD2ojV39w2bq+GLtPqDX9g82Uzs18CFVLmPp53WyVW+Bp0BIrEh6XzfYJiBmaKCtclWS3Q/efpVMC5kqk5os08OdMg5/5TDvfkHoJrehWPULv8PMiEgWOEBiDCh/YFiu7BkTcul6CnSDH0hPjsasJql3zjBuOtCdhxKetNiGaqjPr2Pr6Cn53r14UTH9osfmQ8PV0nj2OiujkmqPYerQS67E4HFp+iIbscyLKyUncykpPsbJkPd4t4lg0OatNc3yUh94LIbSBqtent/Ztfstg5Karr7MdrXi+6nDN5qCmS0nUp9748F3W6THnSLGzDV9zNdReoi8n19nuCFfNpqVqhmz73pTodvnu7nENAK5qhMo/y0KbCrf7/XZCiUoe/mMDSkXjSLygkv2d3VerpfhO6+P/2XTN8jq3rdtoh3a26Jw248SiJalF9pZ9AbiD3TmTCqaw7DmpqRKy3yayFprJhCqJHf2WezEL1pEjrRKohhTW7U7p5g1GrxrMmWJOxJEFqpoN9ao0bO3NuCi1a6sN6oYd0ioF5Z0fWSTuNv8i+8iOVOwYbCEzVGh5mVqxN3avxcXBEdMg19/eurbKb8YV2n/3pCUwqP4ZRJkayuMya4KJegzRsqWpFPMYZsFQrkUG1nUVgpl3LRoVJpB9/wmX3sLKzwaaOc42crJ0I6BWmgYBUDo1B1V/1B3PatfTF4kuV0jL/pTvm+fniod/S6a9tNh3esb+JaK706phhGTXdmTNgzrIsatyRT1+PKUF96+XIEyxMsXTRU3YPan5Jbr3pczOBqqqRmAsQ1pXiP/2ERuBsAt4dB+8JqMzjVEFaHBYzX24U0yGV4fCID46UIlGcp3Nux1SWBsTlJhH+uU23mkZihOo+mKXTskhueS49yeY63a7ZA3VT5s7oOOU1EtdGt0CcWmEMGMWZdroeLszzPinPrspdZ5qa9FqNaiNbSxXNr0GBSz09bXLnwqGv3iT3ZCYc726n52o6bIyx+51r8+C8e9X/VV5Mq5hnTqBJ+buqy2fIBTodlC5xQbRgGiTJsQydHtwpIta03o5wxKjVN4/fgOgWZSrm3RKgqgrcr0HwT6+l+Bv9MYvfH7REpDwqWh+Cm7zyi67mzzlID7IVL/pO9MTd8JRx1OObTqeegYnzc9pR1uYEaG2ihm0e2DubtPGn4sEWuFoazRmXmp4yV3ffdHsk4YiYXh/ZrRL2ZzuKKJ6wzDJYaoU8yr7+Og9FwOf2UQ9sSnR+lE0zjL0M9K+w+VfZtY1VZ4sB3aDf/4yidfZkgvl0eYeWfjAcLTywOCG/G1F6BG1HzAUeWl8oSVPcJG1QiQnvbDSyxRTk2oKoBW8YDMJ/uYgrFK8ZnOJJPnp6X+I7aVHJ/1jgK5FFhBGqVQJGMFB4nBTscLGjnfKJmWtC9nRrUwRHUdndHYiHNp5kCeXo+rEN7Y/53lLF6Y1qBEvotvkoQHXMSWaR8VEa0O/fbCgEetdEyIGZ/5/cCs6WqtpSsl2pGi0Bhg0q2abaory2VrpYfIRDn2FEJluAiVi8ZhuqhkuXagKjQhjgTYk8JrpfhaWndRLnnf3VHrqdWPRwGhxgBZblrEnzcrgO6CSppf70JeuN6ExXVcepHEBgD3jGrUQyCBJTov9T/5v9fd1I3D7cDkBAqmErf2UnzyO2sodLczhEYI3lyewSmlbbSnhlLuzm7Ep1x4g0tFuxcSvahQBAjsaQkIzkpSAmLJk4bUkklFXTJBAP9j62/zRMR/oKzxTho431fLfdXvpbXBtwf5vt1kh0LS3qAzNgGy0ZH7jf08GA8BKuLoM8Zc/l1qWUp2uh+iGTCYJRZ7C5wwfSyHAqmrAHCmZx5WA+QH/xv3M18wbm7WwEA") format("woff2"); -} -/* #endregion built-in fonts */ -/* #region global variables */ -:is(body, body .print) { - --font-ui-smaller: 13px; - --font-ui-small: 14px; - --font-ui-medium: 16px; - --line-height-normal: 2.1; - --background-modifier-border: var(--accent-inactive); - --background-modifier-border-focus: var(--accent-inactive); - --background-modifier-error: rgba(var(--color-red-rgb), 0.8); - --background-modifier-cover: hsla(var(--background-secondary-hsl), 0.6); - --interactive-accent: var(--accent-active); - --radius-xl: var(--size-4-3); - --animation: var(--setting-animation-time, 200ms) var(--anim-motion-smooth); - --animation-slow: calc(var(--setting-animation-time, 200ms) * 2) var(--anim-motion-smooth); - --animation-delay: calc(4 * var(--setting-animation-time, 150ms)); - --bg-opacity: 1; - --block-outline-width: 3px; - --editor-bg: var(--setting-editor-bg, var(--background-primary-hsl)); - --nav-item-background-hover: var(--background-modifier-hover); - --nav-item-background-active: var(--accent-active); - --nav-item-background-selected: var(--frame-outline-color); -} - -html :is(body.obsidian-app, body.obsidian-app .print) { - --accent-s: 32% !important; - --accent-l: 58% !important; -} - -:is(body.color-use-custom.theme-light.css-settings-manager, body.color-use-custom.theme-light.css-settings-manager .print) { - --accent-h: var(--setting-accent-h-light, 35) !important; - --accent-s: var(--setting-accent-s-light, 32%) !important; - --accent-l: var(--setting-accent-l-light, 58%) !important; -} - -:is(body.color-use-custom.theme-dark.css-settings-manager, body.color-use-custom.theme-dark.css-settings-manager .print) { - --accent-h: var(--setting-accent-h-dark, 207) !important; - --accent-s: var(--setting-accent-s-dark, 32%) !important; - --accent-l: var(--setting-accent-l-dark, 58%) !important; -} - -:is(.theme-light, .theme-light .print) { - --color-red: rgba(var(--color-red-rgb), var(--color-opacity)) !important; - --color-red-rgb: 210, 75, 75 !important; - --color-green: rgba(var(--color-green-rgb), var(--color-opacity)) !important; - --color-green-rgb: 94, 179, 77 !important; - --color-yellow: rgba(var(--color-yellow-rgb), var(--color-opacity)) !important; - --color-yellow-rgb: 222, 170, 0 !important; - --color-orange: rgba(var(--color-orange-rgb), var(--color-opacity)) !important; - --color-orange-rgb: 204, 148, 36 !important; - --color-blue: rgba(var(--color-blue-rgb), var(--color-opacity)) !important; - --color-blue-rgb: 24, 168, 220 !important; - --color-cyan: rgba(var(--color-cyan-rgb), var(--color-opacity)) !important; - --color-cyan-rgb: 54, 181, 134 !important; - --color-purple: rgba(var(--color-purple-rgb), var(--color-opacity)) !important; - --color-purple-rgb: 128, 120, 186 !important; - --background-primary-hsl: var(--accent-h), calc(var(--accent-s) - 12%), 97%; - --background-primary: hsl(var(--background-primary-hsl)); - --background-secondary-hsl: calc(var(--accent-h) - 18), calc(var(--accent-s) - 4%), calc(100% - (100% - var(--accent-l)) / 8); - --background-secondary: hsl(var(--background-secondary-hsl)); - --background-modifier-hover: hsl(var(--accent-h), calc(var(--accent-s) * 1.2), min(var(--accent-l) * 2, 90%)); - --accent-active: hsl(var(--accent-h), - var(--accent-s), - calc(var(--accent-l) + 4%)); - --accent-inactive: hsl(var(--accent-h), - calc(var(--accent-s) - 4%), - calc(var(--accent-l) + 24%)); - --text-on-accent: #fafafa !important; - --frame-background-color: hsl(var(--accent-h), - var(--accent-s), - calc(var(--accent-l) + 32%)); - --frame-outline-color: hsl(var(--accent-h), - var(--accent-s), - calc(var(--accent-l) + 23.5%)); - --frame-muted-color: hsl(var(--accent-h), - calc(var(--accent-s) - 20%), - calc(var(--accent-l) - 10%)); - --md-container-bg: var(--setting-md-container-bg, hsla(calc(var(--accent-h) + 8), - calc(var(--accent-s) / 1.2), - calc(100% - (100% - var(--accent-l)) / 6), - 70%)); - --color-opacity: 1; -} - -:is(.theme-dark, .theme-dark .print) { - --color-red: rgba(var(--color-red-rgb), var(--color-opacity)) !important; - --color-red-rgb: 244, 154, 154 !important; - --color-green: rgba(var(--color-green-rgb), var(--color-opacity)) !important; - --color-green-rgb: 154, 214, 164 !important; - --color-yellow: rgba(var(--color-yellow-rgb), var(--color-opacity)) !important; - --color-yellow-rgb: 244, 208, 154 !important; - --color-orange: rgba(var(--color-orange-rgb), var(--color-opacity)) !important; - --color-orange-rgb: 244, 184, 154 !important; - --color-blue: rgba(var(--color-blue-rgb), var(--color-opacity)) !important; - --color-blue-rgb: 133, 194, 255 !important; - --color-cyan: rgba(var(--color-cyan-rgb), var(--color-opacity)) !important; - --color-cyan-rgb: 168, 240, 240 !important; - --color-purple: rgba(var(--color-purple-rgb), var(--color-opacity)) !important; - --color-purple-rgb: 197, 190, 249 !important; - --background-primary: hsl(var(--background-primary-hsl)); - --background-primary-hsl: var(--accent-h), 4%, calc(var(--accent-l) / 4); - --background-secondary: hsl(calc(var(--accent-h) + 8), - calc(var(--accent-s) / 6), - calc(var(--accent-l) / 4)); - --background-secondary-hsl: calc(var(--accent-h) + 8), - calc(var(--accent-s) / 6), calc(var(--accent-l) / 4); - --background-modifier-hover: hsl(var(--accent-h), - var(--accent-s), - calc(var(--accent-l) / 3)); - --accent-active: hsl(var(--accent-h), - var(--accent-s), - calc(var(--accent-l) - 16%)); - --accent-inactive: hsl(var(--accent-h), - calc(var(--accent-s) + 24%), - calc(var(--accent-l) - 32%)); - --frame-background-color: hsl(var(--accent-h), 12%, 20%); - --frame-outline-color: hsl(calc(var(--accent-h) - 24), - calc(var(--accent-s) + 6%), - 24%); - --frame-muted-color: hsl(var(--accent-h), - calc(var(--accent-s) - 20%), - calc(var(--accent-l) + 10%)); - --text-normal: hsla(var(--accent-h), 50%, 94%, 75%); - --text-on-accent: #eaeaea !important; - --md-container-bg: var(--setting-md-container-bg, hsl(calc(var(--accent-h) - 4), 18%, 9%)); - --color-opacity: 0.85; - --color-red: rgba(var(--color-red-rgb), var(--color-opacity)) !important; - --color-red-rgb: 255, 70, 70 !important; -} - -:is(body.theme-light.color-use-custom:not(.color-active-default-light), body.theme-light.color-use-custom:not(.color-active-default-light) .print) { - --accent-active: var(--setting-color-active-custom-light, - hsl(calc(var(--accent-h) + 60), - calc(var(--accent-s) + -12%), - calc(var(--accent-l) + 4%))); - --accent-inactive: var(--setting-color-active-custom-dark, - hsl(calc(var(--accent-h) + 60), - calc(var(--accent-s) + -12%), - calc(var(--accent-l) + 20%))); -} - -:is(body.theme-light.color-use-custom:not(.color-active-default-dark), body.theme-light.color-use-custom:not(.color-active-default-dark) .print) { - --accent-active: var(--setting-color-active-custom-light, - hsl(calc(var(--accent-h) + 60), - calc(var(--accent-s) + -12%), - calc(var(--accent-l) + -12%))); - --accent-inactive: var(--setting-color-active-custom-dark, - hsl(calc(var(--accent-h) + 60), - calc(var(--accent-s) + -12%), - calc(var(--accent-l) + -28%))); -} - -/* #endregion global variables */ -/* #endregion [global] */ -/* #region [editor] */ -/* #region base */ -/* #region paragraph */ -body { - --p-spacing: var(--setting-editor-p-spacing, var(--size-4-1)) ; -} - -.p-indent :is([class=cm-line], [class="cm-active cm-line"]) { - text-indent: calc(var(--font-text-size) * var(--setting-editor-p-indent, 2)); -} - -/* #endregion paragraph */ -/* #region fix latex */ -body.font-latex-text mjx-container mjx-utext { - font-family: var(--font-text) !important; -} - -body.font-fix-latex mjx-container .TEX-I { - font-family: MJXZERO, EMBED-TEX-I; -} - -mjx-stretchy-h > mjx-ext > mjx-c::before { - transform: scaleX(200) !important; -} - -/* #endregion fix latex */ -/* #region monospace */ -body { - --font-monospace-theme: "Maple Mono SC NF", "Maple Mono", var(--font-text); -} - -body.font-maple { - --font-monospace: var(--monospace-custom, "maplemono"), - var(--font-monospace-override), var(--font-monospace-theme), - var(--font-monospace-default); -} - -code, -code *, -.HyperMD-codeblock *, -.cm-inline-code { - font-family: var(--font-monospace); - font-feature-settings: var(--setting-code-ligature, "calt"); -} - -/* #endregion monospace */ -/* #region editor background */ -body { - --file-line-width: var(--setting-editor-width, 700px); -} - -.workspace-split.mod-root .workspace-leaf-content[data-type=markdown] { - background-color: hsla(var(--editor-bg), var(--bg-opacity)); -} -.workspace-split.mod-root .workspace-leaf-content[data-type=markdown] .view-content { - background-color: transparent; -} - -/* #endregion editor background */ -/* #region text */ -body { - --text-selection: hsla(var(--color-accent-hsl), 0.25); -} - -.markdown-source-view, -.markdown-rendered, -.markdown-preview-view, -.community-modal-readme { - color: var(--setting-text-normal, var(--text-normal)); -} - -.theme-light { - --active-line: var(--setting-line-active-color, hsl(var(--accent-h), 24%, 94%)); -} - -.theme-dark { - --active-line: var(--setting-line-active-color, hsl(var(--accent-h), 18%, 18%)); -} - -body .markdown-source-view .cm-scroller .cm-line:not(.HyperMD-codeblock) { - padding-inline: var(--size-4-1); -} - -/* #endregion text */ -/* #region editor line height */ -.workspace-split.mod-root, -.markdown-rendered { - --line-height-normal: var(--setting-line-height, 2.1) !important; -} - -/* #endregion editor line height */ -/* #region current line highlight */ -body:is(:not(.css-settings-manager), .line-active-enable) .workspace-leaf.mod-active .markdown-source-view .cm-scroller .cm-line.cm-active { - background-color: var(--active-line); - border-radius: var(--size-2-3); -} - -/* #endregion current line highlight */ -/* #region line indicator */ -/* reference from https://github.com/Akifyss/obsidian-border */ -body.line-indicator-enable .markdown-preview-sizer > div:not(.search-highlight) { - position: relative; -} -body.line-indicator-enable :is(.markdown-reading-view .markdown-preview-sizer > div:not(:has(:is(.collapse-indicator, hr, pre, blockquote, table, p img, audio, video))), -.markdown-source-view .cm-line:not(.HyperMD-header, .HyperMD-quote, .HyperMD-list-line-1:has(.collapse-indicator))):hover::after { - content: ""; - width: var(--size-4-1); - position: absolute; - inset-block: var(--size-4-1); - left: calc(var(--size-4-3) * -1); - background-color: var(--accent-active); - border-radius: var(--size-2-1); -} - -/* #endregion line indicator */ -/* #region keyboard */ -.cm-hmd-html-begin, -.cm-hmd-html-begin ~ .cm-tag, -.cm-hmd-html-end, -.cm-line:has(.cm-hmd-html-begin) { - font-family: var(--font-monospace); -} - -kbd { - user-select: none; - text-transform: capitalize; - border: var(--size-2-1) solid var(--accent-inactive); - box-shadow: var(--shadow-s); - border-radius: var(--size-2-3); - transition: var(--animation); - font-family: var(--font-monospace) !important; - color: var(--text-normal) !important; -} -kbd:hover { - border-color: var(--accent-active); -} - -/* #endregion keyboard */ -/* #region highlight */ -mark { - color: var(--text-normal); -} - -.is-flashing { - transition: var(--animation); - border-radius: var(--radius-s); -} - -.theme-dark .is-flashing { - --text-faint: #aaa; -} - -body { - --text-highlight-bg: var(--setting-text-highlight-bg, rgba(255, 208, 0, 0.4)); -} - -.text-highlight-all-round :is(.markdown-source-view .cm-highlight, .markdown-rendered mark) { - -webkit-box-decoration-break: clone; -} - -.markdown-source-view span.cm-highlight, -.markdown-rendered mark { - border-radius: calc(var(--setting-text-highlight-radius, 4) * 1px); - color: var(--setting-text-highlight-color); - background: var(--text-highlight-bg) !important; -} - -body.text-highlight-margin :is(.markdown-source-view span.cm-highlight, .markdown-rendered mark) { - margin: 0 var(--size-2-1); - padding: var(--size-2-1) var(--size-4-1); -} - -.markdown-source-view :is(:not(.cm-highlight) + .cm-formatting-highlight, .cm-formatting-highlight:first-child) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; - margin-right: 0; - padding-right: 0; -} -.markdown-source-view .cm-formatting-highlight + .cm-highlight { - border-radius: 0; - padding-inline: 0; - margin: 0; -} -.markdown-source-view .cm-highlight + .cm-formatting-highlight { - border-top-left-radius: 0; - border-bottom-left-radius: 0; - margin-left: 0; - padding-left: 0; -} - -/* #endregion highlight */ -/* #region bold & italic */ -body { - --bold-color: var(--setting-text-bold-color, var(--color-red)) !important; - --italic-color: var(--setting-text-italic-color, var(--color-red)) !important; -} - -:is(em, .cm-em, strong, .cm-strong) { - text-underline-offset: var(--size-2-1); - transition: var(--animation); -} - -body :is(.cm-highlight.cm-strong, mark > strong) { - color: var(--setting-text-highlight-color, var(--bold-color)); -} -body :is(.cm-highlight.cm-em, mark > em) { - color: var(--setting-text-highlight-color, var(--bold-color)); -} - -em, -.cm-em { - --blockquote-color: var(--italic-color); - text-decoration-style: var(--setting-text-italic-style, underline dotted); - font-family: var(--setting-text-italic-font, var(--font-text)); -} - -strong, -.cm-strong { - --blockquote-color: var(--bold-color); - text-decoration: var(--setting-text-bold-style, underline dotted); - font-family: var(--setting-text-bold-font, var(--font-text)); -} - -a :is(em, strong) { - text-decoration: none; -} -a :is(em, strong):hover { - --bold-color: var(--text-on-accent); - --italic-color: var(--text-on-accent); -} - -/* #endregion bold & italic */ -/* #region others */ -.workspace-leaf-content[data-type=markdown] .view-header .clickable-icon:hover { - background-color: var(--background-modifier-hover); -} - -.cm-hmd-frontmatter { - font-size: var(--font-small); -} - -.view-header-title-container:not(.mod-at-end):after { - content: none; -} - -input[type=checkbox] { - transition: var(--animation); -} -input[type=checkbox]:checked::after { - -webkit-mask-position: 47% 52%; -} - -/* #endregion others */ -/* #endregion base */ -/* #region code */ -:is(body, .print .markdown-rendered) { - --inline-code: var(--setting-code-inline, var(--color-red)); - --code-background: var(--setting-code-bg, var(--md-container-bg)); - --code-function: var(--color-orange); - --code-important: var(--color-purple); - --code-keyword: var(--color-purple); - --code-property: var(--color-orange); - --code-punctuation: var(--color-blue); - --code-string: var(--color-green); - --code-tag: var(--color-red); - --code-value: var(--color-orange); - --code-comment: var(--text-faint); - --code-normal: var(--code-preview-base); - --code-bg-radius: var(--setting-code-bg-radius, var(--radius-l)); - --code-bg-border: var(--size-2-1) solid var(--nav-item-background-hover); -} - -:is(.theme-light, .theme-light .print) { - --code-preview-base: hsl(var(--accent-h), - var(--accent-s), - calc(var(--accent-l) - 30%)); - --code-mac-style-header-bg: #333; -} - -:is(.theme-dark, .theme-dark .print) { - --code-preview-base: hsl(var(--accent-h), - var(--accent-s), - 85%); - --code-mac-style-header-bg: #000; -} - -.cm-hmd-codeblock.cm-formatting, -.markdown-rendered code { - color: var(--inline-code); -} - -.markdown-rendered code { - border: var(--code-bg-border); -} - -.markdown-preview-view pre code { - color: var(--code-preview-base); - border: none; - border-radius: 0; -} - -.cm-inline-code { - color: var(--inline-code) !important; - border-radius: var(--radius-s); - border: var(--code-bg-border); -} -.cm-inline-code:not(.cm-formatting) { - padding-inline: var(--size-2-1); -} -.cm-formatting-code + .cm-inline-code { - padding: 0; -} -.cm-inline-code.cm-header { - color: var(--inline-code) !important; -} - -.cm-formatting-code:has(+ .cm-inline-code) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-right: 0; - padding-left: var(--size-2-1); -} -.cm-formatting-code + .cm-inline-code { - border-radius: 0; - border-inline: 0; -} -.cm-inline-code + .cm-formatting-code { - border-top-left-radius: 0; - border-bottom-left-radius: 0; - border-left: 0; - padding-right: var(--size-2-1); -} - -.cm-s-obsidian .cm-line.HyperMD-codeblock { - line-height: calc(var(--line-height-normal) - 0.2); - color: var(--color-blue) !important; - border-left: var(--code-bg-border); - border-right: var(--code-bg-border); - border-radius: 0 !important; -} -.cm-s-obsidian .cm-line.HyperMD-codeblock .cm-fold-indicator .collapse-indicator { - padding-left: var(--size-4-3); - padding-right: unset !important; - left: calc(var(--size-4-2) * -3); - right: unset !important; - cursor: pointer; -} -.cm-s-obsidian .cm-line.HyperMD-codeblock.HyperMD-codeblock-begin-bg { - border-top: var(--code-bg-border); - border-top-left-radius: var(--code-bg-radius) !important; - border-top-right-radius: var(--code-bg-radius) !important; - margin-top: var(--size-2-1) !important; -} -.cm-s-obsidian .cm-line.HyperMD-codeblock.HyperMD-codeblock-end-bg { - border-bottom: var(--code-bg-border); - border-bottom-left-radius: var(--code-bg-radius) !important; - border-bottom-right-radius: var(--code-bg-radius) !important; - margin-bottom: var(--size-2-1) !important; -} - -.markdown-source-view.mod-cm6 .cm-embed-block:not(.cm-table-widget) { - box-shadow: none !important; - border: var(--block-outline-width) solid transparent; - border-radius: var(--radius-l) !important; - transition: var(--animation); -} -.markdown-source-view.mod-cm6 .cm-embed-block:not(.cm-table-widget):hover { - border-color: var(--accent-active); -} -.markdown-source-view.mod-cm6 .cm-embed-block:not(.cm-table-widget) .edit-block-button { - border-radius: var(--radius-m) !important; - transition: var(--animation); - inset-block: 0.2rem; - height: fit-content; -} - -.cm-hmd-codeblock .cm-indent::before { - transform: unset !important; -} - -.markdown-source-view.mod-cm6 .code-block-flair:has(svg) { - width: calc(var(--size-4-8) - var(--size-4-1)); - height: calc(var(--size-4-8) - var(--size-4-1)); - padding: var(--size-4-1); -} -.markdown-source-view.mod-cm6 .code-block-flair:has(svg) svg { - width: var(--size-4-5); - height: var(--size-4-5); -} - -code[class*=language-], -pre { - line-height: calc(var(--line-height-normal) - 0.2); -} - -body .markdown-rendered pre { - border-radius: var(--code-bg-radius); - border: var(--block-outline-width) solid var(--accent-inactive); - transition: var(--animation); - overflow-x: hidden; -} -body .markdown-rendered pre:hover { - border-color: var(--accent-active); -} -body .markdown-rendered pre:hover button.copy-code-button { - opacity: 1; -} -body .markdown-rendered pre .copy-code-button { - width: 1.5rem; - height: 1.5rem; - line-height: 1.5rem; - opacity: 0; - color: transparent; - background-color: var(--setting-code-language-color, var(--accent-active)); - transition: var(--animation); - margin: 0; - display: block !important; - top: var(--size-4-1); - right: var(--size-4-1); - z-index: 9; -} -body .markdown-rendered pre .copy-code-button:hover { - opacity: 1; - background-color: var(--text-normal); -} - -.code-nowrap.scrollbar-gutter-overlay:not(.code-mac-style-header) .app-container div pre { - padding-bottom: calc(var(--code-size) * var(--line-height-normal) * 0.8) !important; -} -.code-nowrap.scrollbar-gutter-overlay pre code { - padding-bottom: var(--size-2-3); -} -.code-nowrap pre code { - word-break: normal; - word-wrap: break-word; - white-space: pre; -} - -body:is(:not(.css-settings-manager), .code-language) .markdown-rendered pre { - padding: 2rem 1rem; - position: relative; -} -body:is(:not(.css-settings-manager), .code-language) .markdown-rendered pre[class*=language-]::before { - content: "unkown language"; - font-family: var(--font-text); - color: var(--setting-code-language-color, var(--inline-code)); - font-weight: bold; - font-size: 0.9rem; - position: absolute; - letter-spacing: 0.05rem; - text-align: right; - right: calc(1.3rem + 2 * var(--size-4-1)); - top: 0.1333333333rem; - line-height: var(--line-height-normal); - z-index: 9; -} -body:is(:not(.css-settings-manager), .code-language) .markdown-rendered pre[class~=language-c]::before { - content: "C"; -} -body:is(:not(.css-settings-manager), .code-language) .markdown-rendered pre[class~=language-properties]::before { - content: "Properties"; -} -body:is(:not(.css-settings-manager), .code-language) .markdown-rendered pre[class~=language-python]::before { - content: "Python"; -} -body:is(:not(.css-settings-manager), .code-language) .markdown-rendered pre[class~=language-nginx]::before { - content: "Nginx"; -} -body:is(:not(.css-settings-manager), .code-language) .markdown-rendered pre[class~=language-css]::before { - content: "CSS"; -} -body:is(:not(.css-settings-manager), .code-language) .markdown-rendered pre[class~=language-javascript]::before { - content: "Javascript"; -} -body:is(:not(.css-settings-manager), .code-language) .markdown-rendered pre[class~=language-js]::before { - content: "JS"; -} -body:is(:not(.css-settings-manager), .code-language) .markdown-rendered pre[class~=language-typescript]::before { - content: "Typescript"; -} -body:is(:not(.css-settings-manager), .code-language) .markdown-rendered pre[class~=language-ts]::before { - content: "TS"; -} -body:is(:not(.css-settings-manager), .code-language) .markdown-rendered pre[class~=language-jsp]::before { - content: "JSP"; -} -body:is(:not(.css-settings-manager), .code-language) .markdown-rendered pre[class~=language-php]::before { - content: "PHP"; -} -body:is(:not(.css-settings-manager), .code-language) .markdown-rendered pre[class~=language-lua]::before { - content: "Lua"; -} -body:is(:not(.css-settings-manager), .code-language) .markdown-rendered pre[class~=language-shell]::before { - content: "Shell"; -} -body:is(:not(.css-settings-manager), .code-language) .markdown-rendered pre[class~=language-powershell]::before { - content: "PowerShell"; -} -body:is(:not(.css-settings-manager), .code-language) .markdown-rendered pre[class~=language-flow]::before { - content: "Flow"; -} -body:is(:not(.css-settings-manager), .code-language) .markdown-rendered pre[class~=language-sequence]::before { - content: "Sequence"; -} -body:is(:not(.css-settings-manager), .code-language) .markdown-rendered pre[class~=language-sql]::before { - content: "SQL"; -} -body:is(:not(.css-settings-manager), .code-language) .markdown-rendered pre[class~=language-yaml]::before { - content: "YAML"; -} -body:is(:not(.css-settings-manager), .code-language) .markdown-rendered pre[class~=language-yml]::before { - content: "YML"; -} -body:is(:not(.css-settings-manager), .code-language) .markdown-rendered pre[class~=language-ini]::before { - content: "ini"; -} -body:is(:not(.css-settings-manager), .code-language) .markdown-rendered pre[class~=language-xml]::before { - content: "XML"; -} -body:is(:not(.css-settings-manager), .code-language) .markdown-rendered pre[class~=language-cs]::before { - content: "CS"; -} -body:is(:not(.css-settings-manager), .code-language) .markdown-rendered pre[class~=language-cpp]::before { - content: "CPP"; -} -body:is(:not(.css-settings-manager), .code-language) .markdown-rendered pre[class~=language-java]::before { - content: "Java"; -} -body:is(:not(.css-settings-manager), .code-language) .markdown-rendered pre[class~=language-html]::before { - content: "HTML"; -} -body:is(:not(.css-settings-manager), .code-language) .markdown-rendered pre[class~=language-txt]::before { - content: "TXT"; -} -body:is(:not(.css-settings-manager), .code-language) .markdown-rendered pre[class~=language-md]::before { - content: "MD"; -} -body:is(:not(.css-settings-manager), .code-language) .markdown-rendered pre[class~=language-markdown]::before { - content: "Markdown"; -} -body:is(:not(.css-settings-manager), .code-language) .markdown-rendered pre[class~=language-bat]::before { - content: "Bat"; -} -body:is(:not(.css-settings-manager), .code-language) .markdown-rendered pre[class~=language-json]::before { - content: "Json"; -} -body:is(:not(.css-settings-manager), .code-language) .markdown-rendered pre[class~=language-groovy]::before { - content: "Groovy"; -} -body:is(:not(.css-settings-manager), .code-language) .markdown-rendered pre[class~=language-scss]::before { - content: "SCSS"; -} -body:is(:not(.css-settings-manager), .code-language) .markdown-rendered pre[class~=language-bash]::before { - content: "Bash"; -} -body:is(:not(.css-settings-manager), .code-language) .markdown-rendered pre[class~=language-cmd]::before { - content: "Cmd"; -} -body:is(:not(.css-settings-manager), .code-language) .markdown-rendered pre[class~=language-latex]::before { - content: "Latex"; -} -body:is(:not(.css-settings-manager), .code-language) .markdown-rendered pre[class~=language-zig]::before { - content: "Zig"; -} -body:is(:not(.css-settings-manager), .code-language) .markdown-rendered pre[class~=language-ssml]::before { - content: "SSML"; -} -body:is(:not(.css-settings-manager), .code-language) .markdown-rendered pre[class~=language-jsx]::before { - content: "JSX"; -} -body:is(:not(.css-settings-manager), .code-language) .markdown-rendered pre[class~=language-tsx]::before { - content: "TSX"; -} -body:is(:not(.css-settings-manager), .code-language) .markdown-rendered pre[class~=language-tsconfig]::before { - content: "tsconfig"; -} -body:is(:not(.css-settings-manager), .code-language) .markdown-rendered pre[class~=language-git]::before { - content: "Git"; -} -body:is(:not(.css-settings-manager), .code-language) .markdown-rendered pre[class~=language-csharp]::before { - content: "CSharp"; -} -body:is(:not(.css-settings-manager), .code-language) .markdown-rendered pre[class~=language-csv]::before { - content: "CSV"; -} -body:is(:not(.css-settings-manager), .code-language) .markdown-rendered pre[class~=language-cue]::before { - content: "cue"; -} -body:is(:not(.css-settings-manager), .code-language) .markdown-rendered pre[class~=language-toml]::before { - content: "TOML"; -} -body:is(:not(.css-settings-manager), .code-language) .markdown-rendered pre[class~=language-kt]::before { - content: "kt"; -} -body:is(:not(.css-settings-manager), .code-language) .markdown-rendered pre[class~=language-kotlin]::before { - content: "Kotlin"; -} -body:is(:not(.css-settings-manager), .code-language) .markdown-rendered pre[class~=language-go]::before { - content: "Go"; -} -body:is(:not(.css-settings-manager), .code-language) .markdown-rendered pre[class~=language-rust]::before { - content: "Rust"; -} -body:is(:not(.css-settings-manager), .code-language) .markdown-rendered pre[class~=language-regex]::before { - content: "Regex"; -} -body:is(:not(.css-settings-manager), .code-language) .markdown-rendered pre[class~=language-swift]::before { - content: "Swift"; -} -body:is(:not(.css-settings-manager), .code-language) .markdown-rendered pre[class~=language-abap]::before { - content: "ABAP"; -} -body:is(:not(.css-settings-manager), .code-language) .markdown-rendered pre[class~="language-pl/sql"]::before { - content: "PL/SQL"; -} - -.markdown-source-view.mod-cm6 .code-block-flair { - padding-block: 0; - color: var(--color-red); - transition: var(--animation); -} -.markdown-source-view.mod-cm6 .code-block-flair:hover { - background-color: var(--nav-item-background-hover); -} - -.code-theme :is(.markdown-rendered, .markdown-source-view.mod-cm6) :is(.token:is(.comment, .prolog, .doctype, .cdata), .cm-comment) { - color: var(--code-comment); -} -.code-theme :is(.markdown-rendered, .markdown-source-view.mod-cm6) :is(.token:is(.tag, .constant, .symbol, .deleted, .class-name, .maybe-class-name), .cm-tag, .cm-operator) { - color: var(--code-tag); -} -.code-theme :is(.markdown-rendered, .markdown-source-view.mod-cm6) :is(.cm-punctuation, .cm-bracket, .cm-hr, .cm-operator) { - color: var(--code-punctuation); -} -.code-theme :is(.markdown-rendered, .markdown-source-view.mod-cm6) :is(.token:is(.boolean, .number), .cm-number) { - color: var(--code-value); -} -.code-theme :is(.markdown-rendered, .markdown-source-view.mod-cm6) :is(.token:is(.selector, .attr-name, .string, .char, .builtin, .inserted), .cm-qualifier, .cm-string:not(.cm-url), .cm-string-2, .cm-meta:not(.cm-hashtag)) { - color: var(--code-string); -} -.code-theme :is(.markdown-rendered, .markdown-source-view.mod-cm6) :is(.token:is(.entity, .parameter, .property, .property-access, .url, .variable), :is(.language-css, .style) .token.string, .cm-def, .cm-number + .cm-variable) { - color: var(--code-property); -} -.code-theme :is(.markdown-rendered, .markdown-source-view.mod-cm6) :is(.token:is(.attr-value, .function, .class-name), .cm-property, .cm-attribute) { - color: var(--code-function); -} -.code-theme :is(.markdown-rendered, .markdown-source-view.mod-cm6) :is(.token:is(.keyword, .constant, .unit, .builtin, .atrule), .cm-keyword, .cm-builtin, .cm-type, .cm-atom) { - color: var(--code-keyword); -} -.code-theme :is(.markdown-rendered, .markdown-source-view.mod-cm6) :is(.token:is(.regex, .important)) { - color: var(--code-important); -} -.code-theme :is(.markdown-rendered, .markdown-source-view.mod-cm6) :is(.cm-variable, .cm-variable-2, .cm-variable-3) { - color: var(--code-normal); -} -.code-theme :is(.markdown-rendered, .markdown-source-view.mod-cm6) :is(.cm-variable-2, .cm-variable-3) { - opacity: 0.7; -} - -.code-mac-style-header:not(:has(.print)) .markdown-rendered pre { - border: none; - padding-top: calc(var(--code-size) * var(--line-height-normal) * 1.5); - padding-bottom: calc(var(--code-size) * var(--line-height-normal) * 0.5) !important; -} -.code-mac-style-header:not(:has(.print)) .markdown-rendered pre[class*=language-]::before { - color: var(--setting-code-language-color, var(--accent-active)); -} -.code-mac-style-header:not(:has(.print)) .markdown-rendered pre::after { - content: ""; - width: 100%; - height: calc(var(--code-size) * var(--line-height-normal) * 1.1); - background-color: var(--code-mac-style-header-bg); - top: 0; - left: 0; - position: absolute; -} -.code-mac-style-header:not(:has(.print)) .markdown-rendered pre code::before { - content: ""; - width: calc(var(--code-size) - var(--size-2-1)); - height: calc(var(--code-size) - var(--size-2-1)); - position: absolute; - left: var(--size-4-4); - top: calc((var(--code-size) - var(--size-2-1)) * var(--line-height-normal) * 0.7 - var(--code-size) / 3); - border-radius: 50%; - z-index: 9; - background-color: rgba(255, 94, 92, var(--color-opacity)); - box-shadow: var(--size-4-5) 0 0 0 rgba(255, 187, 78, var(--color-opacity)), calc(var(--size-4-5) * 2) 0 0 0 rgba(81, 188, 0, var(--color-opacity)); -} -.code-mac-style-header:not(:has(.print)) .markdown-rendered pre .copy-code-button:hover { - background-color: var(--accent-inactive); -} - -.code-line-number .cm-contentContainer { - counter-reset: code-line; -} -.code-line-number .cm-contentContainer .cm-line.HyperMD-codeblock { - padding-left: var(--size-4-12); -} -.code-line-number .cm-contentContainer .cm-line.HyperMD-codeblock:not(.HyperMD-codeblock-begin):not(.HyperMD-codeblock-end)::before { - counter-increment: code-line; - content: counter(code-line); - position: absolute; - text-align: right; - width: var(--size-4-8); - left: 0; - color: var(--accent-inactive); -} -.code-line-number .cm-contentContainer .cm-line.HyperMD-codeblock:not(.HyperMD-codeblock-begin):not(.HyperMD-codeblock-end).cm-active::before { - color: var(--accent-active); -} -.code-line-number .cm-contentContainer .cm-line.HyperMD-codeblock-end { - counter-reset: code-line; -} - -.code-preview-bg { - --code-bg-s: 50%; - --code-bg-l: 85%; -} -.code-preview-bg .markdown-preview-view .markdown-preview-section div:has(> pre:not([class*=frontmatter])) { - padding: var(--size-4-4) var(--size-4-8); - margin-block: var(--size-4-4); - border-radius: var(--radius-l); - background-image: var(--setting-code-bg-outer, linear-gradient(-30deg, hsl(calc(var(--accent-h) + 145), var(--code-bg-s), var(--code-bg-l)), hsl(calc(var(--accent-h) + 115), var(--code-bg-s), var(--code-bg-l)), hsl(calc(var(--accent-h) + 90), var(--code-bg-s), var(--code-bg-l)), hsl(calc(var(--accent-h) + 65), var(--code-bg-s), var(--code-bg-l)), hsl(calc(var(--accent-h) + 35), var(--code-bg-s), var(--code-bg-l)))); -} -.code-preview-bg .markdown-preview-view .markdown-preview-section pre:not([class*=frontmatter]) { - --code-background: var(--setting-code-bg, hsl(var(--background-secondary-hsl))); - border-width: 0; -} - -.theme-dark .markdown-preview-view .markdown-preview-section div:has(> pre:not([class*=frontmatter])) { - --code-bg-s: 20%; - --code-bg-l: 45%; -} - -/* #endregion code */ -/* #region embed */ -body.embed-enable .internal-embed.is-loaded:not(.image-embed) { - --embed-background: var(--background-primary); - --embed-max-height: initial; - transition: var(--animation); - padding: var(--size-4-1) var(--size-2-1) !important; -} -body.embed-enable .internal-embed.is-loaded:not(.image-embed) :is(.markdown-embed-link, .file-embed-link) { - padding: var(--size-2-3); - border-radius: var(--radius-m); - transition: var(--animation); - color: var(--accent-active); - top: 0.2rem; - right: 0.2rem; -} -body.embed-enable .internal-embed.is-loaded:not(.image-embed) :is(.markdown-embed-link, .file-embed-link):hover { - background-color: var(--nav-item-background-hover); -} -body.embed-enable .internal-embed.is-loaded:not(.image-embed).mod-empty { - border: var(--size-2-1) dotted var(--accent-inactive); -} -body.embed-enable .internal-embed.is-loaded:not(.image-embed) .markdown-embed-title { - text-align: center; - line-height: 2.8; -} -body.embed-enable .internal-embed.is-loaded:not(.image-embed):is(.markdown-embed, .file-embed) { - border-radius: var(--radius-xl); - transition: var(--animation); - margin-block: var(--size-4-1) !important; - padding: 0; - border: var(--block-outline-width) solid var(--accent-inactive); -} -body.embed-enable .internal-embed.is-loaded:not(.image-embed):is(.markdown-embed, .file-embed) .markdown-preview-view { - padding: calc(var(--font-text-size) * 1.2) calc(var(--font-text-size) * 1.5); - position: initial; -} -body.embed-enable .internal-embed.is-loaded:not(.image-embed):is(.markdown-embed, .file-embed) .markdown-preview-view .markdown-preview-section { - min-height: fit-content !important; -} -body.embed-enable .internal-embed.is-loaded:not(.image-embed):is(.markdown-embed, .file-embed):hover { - border-color: var(--accent-active); -} -body.embed-enable .internal-embed.is-loaded:not(.image-embed):is(.markdown-embed, .file-embed) .frontmatter + div { - display: none; -} -body.embed-enable .internal-embed.is-loaded:not(.image-embed) svg.link { - transform: rotate(90deg); -} -body.embed-enable.scrollbar-gutter-reserve.embed-title-right-top .internal-embed.is-loaded:not([alt="#"]) .markdown-embed-heading .markdown-preview-section > div:nth-child(2) { - right: var(--size-4-3); -} -body.embed-enable.embed-title-right-top .internal-embed.is-loaded:not([alt="#"]) .obsidian-metatable { - display: none; -} -body.embed-enable.embed-title-right-top .internal-embed.is-loaded:not([alt="#"]):not([src*="#^"]) .embed-title:empty + .markdown-embed-content .markdown-preview-section > div:nth-child(3) { - position: absolute; - right: var(--size-4-9); - top: var(--size-4-2); - z-index: 99; - opacity: 0; - transition: var(--animation); -} -body.embed-enable.embed-title-right-top .internal-embed.is-loaded:not([alt="#"]):not([src*="#^"]) .embed-title:empty + .markdown-embed-content .markdown-preview-section > div:nth-child(3) * { - font-size: 1rem; - cursor: pointer; - line-height: 1rem; -} -body.embed-enable.embed-title-right-top .internal-embed.is-loaded:not([alt="#"]):not([src*="#^"]) .embed-title:empty + .markdown-embed-content .markdown-preview-section > div:nth-child(3) *::after { - content: none; -} -body.embed-enable.embed-title-right-top .internal-embed.is-loaded:not([alt="#"]) .markdown-embed-title { - opacity: 0; - position: absolute; - z-index: 99; - width: fit-content; - right: 28px; - left: unset; - font-size: 1rem; - top: var(--size-4-1); - line-height: 28px; - height: 28px; - padding: 0 var(--size-4-2); - border-radius: var(--radius-m); - transition: var(--animation); - cursor: pointer; -} -body.embed-enable.embed-title-right-top .internal-embed.is-loaded:not([alt="#"]):hover .embed-title:empty + .markdown-embed-content .markdown-preview-section > div:nth-child(3) { - opacity: 1; -} -body.embed-enable.embed-title-right-top .internal-embed.is-loaded:not([alt="#"]):hover :is(.markdown-embed-title, .markdown-embed-link, .file-embed-link:hover svg) { - opacity: 1; - color: var(--text-normal); -} -body.embed-enable.embed-title-right-top .internal-embed.is-loaded:not([alt="#"]) :is(.markdown-embed, .file-embed) .markdown-preview-view { - padding: calc(var(--font-text-size) * 1.5); - padding-bottom: calc(var(--font-text-size) * 1.2); -} - -/* #endregion embed */ -/* #region hr */ -.markdown-rendered hr { - margin-block-start: 2.4rem !important; - margin-block-end: 2.4rem !important; -} - -body.hr-enable :is(.markdown-source-view.mod-cm6, .markdown-rendered) hr { - overflow: initial; - border: none; - position: relative; - height: var(--size-4-1); - background-image: linear-gradient(to right, transparent 0%, hsla(var(--color-accent-hsl), 40%) 16%, hsla(var(--color-accent-hsl), 90%) 44%, transparent 44%, transparent 56%, hsla(var(--color-accent-hsl), 90%) 56%, hsla(var(--color-accent-hsl), 40%) 84%, transparent 100%); -} -body.hr-enable :is(.markdown-source-view.mod-cm6, .markdown-rendered) hr::after { - content: var(--setting-hr-icon, "⭐"); - display: inline-block; - font-family: var(--font-monospace); - font-size: var(--font-ui-small); - position: absolute; - text-align: center; - width: var(--input-height); - height: var(--input-height); - line-height: var(--input-height); - left: 50%; - top: 50%; - transform: translate(-50%, -50%); - color: var(--accent-active); - background: var(--md-container-bg); - border-radius: 50%; -} - -/* #endregion hr */ -/* #region link */ -:is(body, .print .markdown-rendered) { - --link-color-rgb: var(--setting-link-internal-color, var(--color-blue-rgb)); - --link-external-color-rgb: var(--setting-link-external-color, var(--color-orange-rgb)); - --link-color: rgba(var(--link-color-rgb), var(--color-opacity)); - --link-color-hover: var(--link-color); - --link-color-underline: var(--setting-link-internal-color-underline, var(--link-color)); - --link-external-color: rgba(var(--link-external-color-rgb), var(--color-opacity)); - --link-external-color-hover: var(--link-external-color); - --link-external-color-underline: var(--setting-link-external-color-underline, var(--link-external-color)); - --link-unresolved-decoration-color: var(--link-unresolve-color); - --link-footnote: var(--color-purple); - --link-text-size: var(--font-text-size) ; -} - -.cm-hmd-footnote .cm-underline { - color: var(--link-footnote) !important; - font-size: var(--footnote-size); - text-decoration-color: var(--link-footnote) !important; - pointer-events: none; -} - -.is-unresolved { - transition: var(--animation); -} -.is-unresolved:hover { - --link-color-hover: rgba(var(--link-color-rgb), 0.6) !important; -} - -body .cm-s-obsidian .cm-url { - text-decoration: none; -} - -.cm-s-obsidian .cm-formatting-link-string + span.cm-url { - color: var(--link-color); -} - -body span:is(.cm-formatting-link, .cm-formatting-link-string) { - color: rgba(var(--color-green-rgb), 0.6) !important; -} - -body:not(.link-hover-expand) :is(a.external-link, .cm-link .cm-underline, .cm-url:not(.cm-string) .cm-underline) { - transition: var(--animation); - color: rgba(var(--link-external-color-rgb), var(--color-opacity)); - border-radius: var(--radius-s); - text-underline-offset: var(--size-2-1); - text-decoration-color: var(--link-external-color-underline); -} -body:not(.link-hover-expand) :is(a.external-link, .cm-link .cm-underline, .cm-url:not(.cm-string) .cm-underline):hover { - background-color: rgba(var(--link-external-color-rgb), 0.15); -} -body:not(.link-hover-expand) :is(a.external-link, .cm-link .cm-underline, .cm-url:not(.cm-string) .cm-underline):active { - background-color: rgba(var(--link-external-color-rgb), 0.35); -} -body:not(.link-hover-expand) :is(a.internal-link:not(.is-unresolved), .cm-hmd-internal-link > .cm-underline) { - transition: var(--animation); - color: rgba(var(--link-color-rgb), var(--color-opacity)); - border-radius: var(--radius-s); - text-underline-offset: var(--size-2-1); - text-decoration-color: var(--link-color-underline); -} -body:not(.link-hover-expand) :is(a.internal-link:not(.is-unresolved), .cm-hmd-internal-link > .cm-underline):hover { - background-color: rgba(var(--link-color-rgb), 0.15); -} -body:not(.link-hover-expand) :is(a.internal-link:not(.is-unresolved), .cm-hmd-internal-link > .cm-underline):active { - background-color: rgba(var(--link-color-rgb), 0.35); -} - -span:is(.cm-url, .cm-link, .cm-hmd-internal-link, .cm-formatting-link.cm-url):hover { - text-decoration: none; -} - -body.link-hover-expand .cm-url { - --link-external-decoration: none; - --link-external-decoration-hover: none; -} -body.link-hover-expand .cm-link { - --link-external-decoration-hover: none; -} -body.link-hover-expand .cm-hmd-internal-link > .cm-underline { - --link-decoration-hover: none; -} -body.link-hover-expand :is(a.external-link:not(.is-unresolved), :is(.cm-link, .cm-url) > .cm-underline) { - font-size: var(--link-text-size); - box-shadow: inset 0 -0.1em 0 var(--link-external-color-underline); - text-decoration: none !important; - transition: var(--animation); - color: var(--link-external-color) !important; -} -body.link-hover-expand :is(a.external-link:not(.is-unresolved), :is(.cm-link, .cm-url) > .cm-underline):hover, body.link-hover-expand :is(a.external-link:not(.is-unresolved), :is(.cm-link, .cm-url) > .cm-underline):focus { - box-shadow: inset 0 -1.3em 0 var(--link-external-color-underline); - --link-color: var(--setting-link-internal-color-hover, var(--text-on-accent)); - --link-external-color: var(--setting-link-external-color-hover, var(--text-on-accent)); -} -body.link-hover-expand :is(a.internal-link:not(.is-unresolved), .cm-hmd-internal-link > .cm-underline) { - font-size: var(--link-text-size); - box-shadow: inset 0 -0.1em 0 var(--link-color-underline); - text-decoration: none !important; - transition: var(--animation); - color: var(--link-color) !important; -} -body.link-hover-expand :is(a.internal-link:not(.is-unresolved), .cm-hmd-internal-link > .cm-underline):hover, body.link-hover-expand :is(a.internal-link:not(.is-unresolved), .cm-hmd-internal-link > .cm-underline):focus { - box-shadow: inset 0 -1.3em 0 var(--link-color-underline); - --link-color: var(--setting-link-internal-color-hover, var(--text-on-accent)); - --link-external-color: var(--setting-link-external-color-hover, var(--text-on-accent)); -} -body.link-hover-expand :is(.cm-hmd-internal-link, .cm-link) { - transition: color var(--animation); -} - -body.link-icon :is(:is(.markdown-source-view, .markdown-preview-view) a.internal-link:not(.is-unresolved), .cm-hmd-internal-link > .cm-underline)::before { - content: ""; - display: inline-block; - transition: var(--animation); - transform: translateY(var(--size-2-1)); - width: calc(var(--link-text-size) - var(--size-2-1)); - height: calc(var(--link-text-size) - var(--size-2-1)); - margin-inline: var(--size-2-1); - background-color: var(--link-color); -} -body.link-icon:not(.link-click-to-edit-in-live-preview) :is(:is(.markdown-source-view, .markdown-preview-view) a.external-link:not(.is-resolved), :is(.cm-link:not(.cm-hmd-footnote, .cm-escape), .cm-url) > .cm-underline):not(.cm-escape + .cm-link .cm-underline)::before { - content: ""; - display: inline-block; - transition: var(--animation); - width: calc(var(--link-text-size) - var(--size-4-1)); - height: calc(var(--link-text-size) - var(--size-4-1)); - margin-left: var(--size-2-1); - margin-right: var(--size-2-1); - background-color: var(--link-external-color); -} -body.link-icon:not(.link-click-to-edit-in-live-preview) a.external-link { - background-image: none; - background-size: unset; - padding-right: 0; -} -body.link-icon:not(.link-click-to-edit-in-live-preview) span.external-link { - display: none; -} - -body.link-click-to-edit-in-live-preview :is(.cm-url, .cm-link, .cm-hmd-internal-link) .cm-underline { - pointer-events: none; -} - -/* #endregion link */ -/* #region list */ -.cm-formatting-list-ul, -.cm-formatting-list-ol { - padding-inline-start: 0.4rem; -} - -body.list-enable { - --list-marker-color: var(--setting-list-marker, var(--accent-active)); - --list-marker-color-alt: var(--setting-list-marker-alt, var(--list-marker-color)); - --checkbox-marker-color: var(--text-on-accent); - --checkbox-border-color: var(--setting-list-checkbox-color, var(--accent-inactive)); - --checkbox-border-color-hover: var(--setting-list-checkbox-color-hover, var(--accent-active)); - --list-bullet-size: calc(var(--font-text-size) / 3 + var(--size-2-1)); -} -body.list-enable .cm-formatting-list-ol, -body.list-enable li::marker { - font-family: var(--font-monospace); -} -body.list-enable :is(.markdown-source-view, .markdown-preview-view) .task-list-item-checkbox { - border-width: var(--size-2-1); -} -body.list-enable .markdown-source-view .task-list-item-checkbox { - margin-inline-start: 0.7rem; - margin-inline-end: var(--size-4-1); -} -body.list-enable .markdown-preview-view .task-list-item-checkbox { - margin-inline-start: calc(var(--checkbox-size) * -1.3); -} -body.list-enable .collapse-indicator { - --cursor: pointer; -} -body.list-enable .markdown-source-view.mod-cm6 .cm-indent::before { - transform: translateX(10px); -} -body.list-enable .markdown-source-view.mod-cm6 .HyperMD-task-line .collapse-indicator { - right: 0.1rem !important; -} -body.list-enable li .list-collapse-indicator { - margin-inline-start: 0 !important; - padding-inline-end: 1.2rem !important; - transform: translateX(-2.1rem); -} -body.list-enable ol li .list-collapse-indicator { - transform: translateX(-3rem); -} -body.list-enable .contains-task-list .list-collapse-indicator { - transform: translateX(-2.4rem); -} -body.list-enable .markdown-rendered ul > li { - margin-inline-start: calc(var(--font-text-size) * 2 + 0.25rem); -} -body.list-enable .markdown-rendered div > ul:is(.has-list-bullet, .contains-task-list) { - margin-inline-start: calc(var(--size-4-3) * -1); -} -body.list-enable .markdown-rendered ol { - --list-indent: calc(var(--font-text-size) - 0.25rem); -} -body.list-enable .markdown-rendered ol > li { - margin-inline-start: calc(var(--font-text-size) + 0.25rem); -} -body.list-enable .markdown-rendered ol li > ol { - padding-left: calc(var(--font-text-size)); -} -body.list-enable .markdown-rendered ol li > ol::before { - left: calc(var(--font-text-size) * -1.5); -} -body.list-enable :is(.markdown-rendered, div) > ul { - --list-indent: 0; -} -body.list-enable .HyperMD-list-line-2 .list-bullet { - --list-marker-color: transparent; - --list-bullet-border: var(--setting-list-marker, var(--accent-active)) var(--size-2-1) solid; - --list-bullet-size: calc(calc(var(--font-text-size) / 3 + var(--size-2-1)) - var(--size-2-1)); -} -body.list-enable .HyperMD-list-line-3 .list-bullet { - --list-bullet-radius: 0; - --list-marker-color: var(--list-marker-color-alt); - --list-bullet-size: calc(calc(var(--font-text-size) / 3 + var(--size-2-1)) * 0.95); - transform: rotate(45deg); -} -body.list-enable .HyperMD-list-line-4 .list-bullet { - --list-marker-color: transparent; - --list-bullet-border: var(--list-marker-color-alt) var(--size-2-1) solid; - --list-bullet-size: calc(calc(var(--font-text-size) / 3 + var(--size-2-1)) * 0.9 - var(--size-2-1)); - --list-bullet-radius: 0; - transform: rotate(45deg); -} -body.list-enable ul > li > ul > li { - --list-marker-color: transparent; - --list-bullet-border: var(--setting-list-marker, var(--accent-active)) var(--size-2-1) solid; - --list-bullet-size: calc(calc(var(--font-text-size) / 3 + var(--size-2-1)) - var(--size-2-1)); -} -body.list-enable ul > li > ul > li > ul > li { - --list-bullet-size: calc(calc(var(--font-text-size) / 3 + var(--size-2-1)) * 0.5); - --list-bullet-radius: 0; - --list-marker-color: var(--list-marker-color-alt); - --deg: 45deg; -} -body.list-enable ul > li > ul > li > ul > li .list-bullet { - transform: rotate(var(--deg)); -} -body.list-enable ul > li > ul > li > ul > li > ul > li { - --list-bullet-size: calc(calc(var(--font-text-size) / 3 + var(--size-2-1)) * 0.9 - var(--size-2-1)); - --list-marker-color: transparent; -} -body.list-enable ul > li > ul > li > ul > li > ul > li ul > li { - --list-bullet-radius: var(--radius-s); - --list-marker-color: var(--setting-list-marker, var(--accent-active)); -} -body.list-enable .callout-content ul { - --list-indent: 1.6em; -} -body.list-enable .callout-content ul.contains-task-list { - --list-indent: 0.4em; -} -body.list-enable .callout-content ul::before { - left: -0.7em; -} -body.list-enable .callout-content ul li::marker { - --list-marker-color: transparent !important; -} -body.list-enable .callout-content ul li::before { - content: ""; - position: absolute; - width: var(--list-bullet-size); - height: var(--list-bullet-size); - background-color: var(--list-marker-color); - border-radius: var(--list-bullet-radius); - border: var(--list-bullet-border); - transform: translate(-0.9em, calc(var(--font-text-size) * var(--line-height-normal) / 2.5)) rotate(var(--deg, 0)); -} - -/* #endregion list */ -/* #region checkbox */ -/* https://github.com/Akifyss/obsidian-border/blob/main/theme.css#L7738C1-L7953C2 */ -input[data-task="<"]:checked, -li[data-task="<"] > input:checked, -li[data-task="<"] > p > input:checked, -input[data-task=">"]:checked, -li[data-task=">"] > input:checked, -li[data-task=">"] > p > input:checked, -input[data-task=d]:checked, -li[data-task=d] > input:checked, -li[data-task=d] > p > input:checked, -input[data-task=u]:checked, -li[data-task=u] > input:checked, -li[data-task=u] > p > input:checked, -input[data-task=S]:checked, -li[data-task=S] > input:checked, -li[data-task=S] > p > input:checked, -input[data-task=“]:checked, -li[data-task=“] > input:checked, -li[data-task=“] > p > input:checked, -input[data-task=c]:checked, -li[data-task=c] > input:checked, -li[data-task=c] > p > input:checked, -input[data-task=p]:checked, -li[data-task=p] > input:checked, -li[data-task=p] > p > input:checked, -input[data-task=n]:checked, -li[data-task=n] > input:checked, -li[data-task=n] > p > input:checked, -input[data-task=b]:checked, -li[data-task=b] > input:checked, -li[data-task=b] > p > input:checked, -input[data-task="-"]:checked, -li[data-task="-"] > input:checked, -li[data-task="-"] > p > input:checked, -input[data-task=l]:checked, -li[data-task=l] > input:checked, -li[data-task=l] > p > input:checked, -input[data-task=I]:checked, -li[data-task=I] > input:checked, -li[data-task=I] > p > input:checked, -input[data-task="/"]:checked, -li[data-task="/"] > input:checked, -li[data-task="/"] > p > input:checked, -input[data-task=i]:checked, -li[data-task=i] > input:checked, -li[data-task=i] > p > input:checked, -input[data-task="*"]:checked, -li[data-task="*"] > input:checked, -li[data-task="*"] > p > input:checked, -input[data-task="?"]:checked, -li[data-task="?"] > input:checked, -li[data-task="?"] > p > input:checked, -input[data-task="!"]:checked, -li[data-task="!"] > input:checked, -li[data-task="!"] > p > input:checked { - --checkbox-marker-color: transparent; - border: none; - background-image: none; - background-color: currentColor; - -webkit-mask-size: var(--checkbox-icon); - -webkit-mask-position: 50% 50%; -} - -input[data-task="!"]:checked, -li[data-task="!"] > input:checked, -li[data-task="!"] > p > input:checked { - --checkbox-color-hover: var(--color-orange); - color: var(--color-orange); - -webkit-mask-image: url('data:image/svg+xml;utf8,'); -} - -input[data-task="?"]:checked, -li[data-task="?"] > input:checked, -li[data-task="?"] > p > input:checked { - --checkbox-color-hover: var(--color-pink); - color: var(--color-pink); - -webkit-mask-image: url('data:image/svg+xml;utf8,'); -} - -input[data-task="*"]:checked, -li[data-task="*"] > input:checked, -li[data-task="*"] > p > input:checked { - --checkbox-color-hover: var(--color-yellow); - color: var(--color-yellow); - -webkit-mask-image: url('data:image/svg+xml;utf8,'); -} - -input[data-task=i]:checked, -li[data-task=i] > input:checked, -li[data-task=i] > p > input:checked { - --checkbox-color-hover: var(--color-cyan); - color: var(--color-cyan); - -webkit-mask-image: url('data:image/svg+xml;utf8,'); -} - -input[data-task="/"]:checked, -li[data-task="/"] > input:checked, -li[data-task="/"] > p > input:checked { - --checkbox-color-hover: var(--color-yellow); - color: var(--color-yellow); - -webkit-mask-image: url('data:image/svg+xml;utf8,'); -} - -input[data-task=I]:checked, -li[data-task=I] > input:checked, -li[data-task=I] > p > input:checked { - --checkbox-color-hover: var(--color-orange); - color: var(--color-orange); - -webkit-mask-image: url('data:image/svg+xml;utf8,'); -} - -input[data-task=l]:checked, -li[data-task=l] > input:checked, -li[data-task=l] > p > input:checked { - --checkbox-color-hover: var(--color-red); - color: var(--color-red); - -webkit-mask-image: url('data:image/svg+xml;utf8,'); -} - -input[data-task="-"]:checked, -li[data-task="-"] > input:checked, -li[data-task="-"] > p > input:checked { - --checkbox-color-hover: var(--text-faint); - color: var(--text-faint); - -webkit-mask-image: url('data:image/svg+xml;utf8,'); -} - -body:not(.tasks) .markdown-preview-view ul li[data-task="-"].task-list-item.is-checked, -body:not(.tasks) .markdown-source-view.mod-cm6 .HyperMD-task-line[data-task]:is([data-task="-"]), -body:not(.tasks) li[data-task="-"].task-list-item.is-checked { - color: var(--text-faint); - text-decoration: line-through solid var(--text-faint) 1px; -} - -input[data-task=b]:checked, -li[data-task=b] > input:checked, -li[data-task=b] > p > input:checked { - --checkbox-color-hover: var(--color-blue); - color: var(--color-blue); - -webkit-mask-image: url('data:image/svg+xml;utf8,'); -} - -input[data-task=n]:checked, -li[data-task=n] > input:checked, -li[data-task=n] > p > input:checked { - --checkbox-color-hover: var(--color-cyan); - color: var(--color-cyan); - -webkit-mask-image: url('data:image/svg+xml;utf8,'); -} - -input[data-task=p]:checked, -li[data-task=p] > input:checked, -li[data-task=p] > p > input:checked { - --checkbox-color-hover: var(--color-green); - color: var(--color-green); - -webkit-mask-image: url('data:image/svg+xml;utf8,'); -} - -input[data-task=c]:checked, -li[data-task=c] > input:checked, -li[data-task=c] > p > input:checked { - --checkbox-color-hover: var(--color-red); - color: var(--color-red); - -webkit-mask-image: url('data:image/svg+xml;utf8,'); -} - -input[data-task=“]:checked, -li[data-task=“] > input:checked, -li[data-task=“] > p > input:checked { - --checkbox-color-hover: var(--color-purple); - color: var(--color-purple); - -webkit-mask-image: url('data:image/svg+xml;utf8,'); -} - -input[data-task=S]:checked, -li[data-task=S] > input:checked, -li[data-task=S] > p > input:checked { - --checkbox-color-hover: var(--color-green); - color: var(--color-green); - -webkit-mask-image: url('data:image/svg+xml;utf8,'); -} - -input[data-task=u]:checked, -li[data-task=u] > input:checked, -li[data-task=u] > p > input:checked { - --checkbox-color-hover: var(--color-green); - color: var(--color-green); - -webkit-mask-image: url('data:image/svg+xml;utf8,'); -} - -input[data-task=d]:checked, -li[data-task=d] > input:checked, -li[data-task=d] > p > input:checked { - --checkbox-color-hover: var(--color-red); - color: var(--color-red); - -webkit-mask-image: url('data:image/svg+xml;utf8,'); -} - -input[data-task=">"]:checked, -li[data-task=">"] > input:checked, -li[data-task=">"] > p > input:checked { - --checkbox-color-hover: var(--color-pink); - color: var(--color-pink); - -webkit-mask-image: url('data:image/svg+xml;utf8,'); -} - -input[data-task="<"]:checked, -li[data-task="<"] > input:checked, -li[data-task="<"] > p > input:checked { - --checkbox-color-hover: var(--color-blue); - color: var(--color-blue); - -webkit-mask-image: url('data:image/svg+xml;utf8,'); -} - -/* #endregion checkbox */ -/* #region quote */ -:is(body, .print .markdown-rendered) { - --blockquote-background-color: var(--md-container-bg); - --callout-radius: var(--radius-l); -} - -body.quote-theme { - --blockquote-border-color: var(--accent-active); -} -body.quote-theme :is(.markdown-source-view, .markdown-rendered) { - --blockquote-border-thickness: var(--size-4-1); - --blockquote-radius: var(--size-2-3); -} -body.quote-theme .markdown-source-view.mod-cm6 :is(.HyperMD-quote, .cm-blockquote-border)::before { - width: var(--blockquote-border-thickness); - border-left: none; - background-color: var(--blockquote-border-color); - border-radius: var(--blockquote-radius); - inset-block: var(--blockquote-radius); -} -body.quote-theme .markdown-source-view.mod-cm6 :is(.HyperMD-quote, .cm-blockquote-border) :not(:first-child)::before { - transform: translateX(var(--size-4-1)); -} -body.quote-theme .markdown-source-view.mod-cm6 .HyperMD-quote { - border-radius: 0 !important; -} -body.quote-theme .markdown-source-view.mod-cm6 .HyperMD-quote.cm-active:not(:has(+ .HyperMD-quote:not(.HyperMD-callout))) { - border-bottom-left-radius: var(--blockquote-radius) !important; - border-bottom-right-radius: var(--blockquote-radius) !important; -} -body.quote-theme .markdown-source-view.mod-cm6 .HyperMD-quote.cm-active .cm-blockquote-border::before { - background-color: transparent; -} -body.quote-theme .markdown-source-view.mod-cm6 .HyperMD-quote::before { - left: var(--blockquote-border-thickness); - z-index: 10; -} -body.quote-theme .markdown-source-view.mod-cm6 .HyperMD-quote + .HyperMD-quote::before { - top: calc(var(--blockquote-radius) * -2); -} -body.quote-theme .markdown-source-view.mod-cm6 :is(div:not(.HyperMD-quote) + .HyperMD-quote, .cm-content :first-child:is(.HyperMD-quote)) { - border-top-left-radius: var(--blockquote-radius) !important; - border-top-right-radius: var(--blockquote-radius) !important; -} -body.quote-theme .markdown-source-view.mod-cm6 :is(div:not(.HyperMD-quote) + .HyperMD-quote, .cm-content :first-child:is(.HyperMD-quote))::after, -body.quote-theme .markdown-source-view.mod-cm6 :is(div:not(.HyperMD-quote) + .HyperMD-quote, .cm-content :first-child:is(.HyperMD-quote)) .cm-quote.cm-formatting::after { - content: none !important; -} -body.quote-theme .markdown-rendered blockquote { - --h1-size: var(--font-text-size); - --h2-size: var(--font-text-size); - --h3-size: var(--font-text-size); - --h4-size: var(--font-text-size); - --h5-size: var(--font-text-size); - --h6-size: var(--font-text-size); - --h1-line-height: var(--setting-line-height, var(--line-height-normal)); - --h2-line-height: var(--setting-line-height, var(--line-height-normal)); - --h3-line-height: var(--setting-line-height, var(--line-height-normal)); - --h4-line-height: var(--setting-line-height, var(--line-height-normal)); - --h5-line-height: var(--setting-line-height, var(--line-height-normal)); - --h6-line-height: var(--setting-line-height, var(--line-height-normal)); - border: none; - border-radius: var(--blockquote-radius); - position: relative; - margin-block: var(--size-4-3); -} -body.quote-theme .markdown-rendered blockquote :is(p, h1, h2, h3, h4, h5, h6) { - padding-left: var(--blockquote-border-thickness); - padding-right: var(--size-4-1); -} -body.quote-theme .markdown-rendered blockquote::after { - content: ""; - position: absolute; - left: calc(var(--blockquote-radius) * 4 / 5); - top: var(--blockquote-radius); - border-radius: var(--blockquote-radius); - height: calc(100% - var(--blockquote-radius) * 2); - width: var(--blockquote-border-thickness); - background-color: var(--accent-active); -} -body.quote-theme .markdown-rendered blockquote blockquote { - box-shadow: none; - margin: 0; -} -body.quote-theme.quote-shadow .markdown-rendered blockquote { - box-shadow: var(--shadow-s); -} -body.quote-theme.quote-border .markdown-rendered blockquote { - border: var(--block-outline-width) solid var(--accent-inactive); - transition: var(--animation); - box-shadow: none; -} -body.quote-theme.quote-border .markdown-rendered blockquote:hover { - border-color: var(--accent-active); -} -body.quote-theme.quote-border .markdown-rendered blockquote blockquote { - margin: var(--block-outline-width); -} -body.quote-theme.quote-mark.quote-theme blockquote { - padding-left: 2.28rem; -} -body.quote-theme.quote-mark.quote-theme blockquote::before { - position: absolute; - font-size: 3rem; - font-family: Source Code Pro; - line-height: 1; - content: "“" !important; - background-color: transparent; - color: var(--text-muted); - top: calc(var(--font-text-size) * var(--line-height-normal) - 2.1428571429rem); - transform: translateX(-1.32rem); -} -body.quote-theme :is(.markdown-preview-view, .community-modal-readme.markdown-rendered) blockquote { - padding-left: var(--size-4-8); -} -body.quote-theme :is(.markdown-preview-view, .community-modal-readme.markdown-rendered) blockquote :is(p, h1, h2, h3, h4, h5, h6) { - padding-left: calc(var(--blockquote-border-thickness) * 2); -} - -/* 引导线高度修复 */ -:is(.HyperMD-quote-2:not(.cm-active) + .HyperMD-quote-2 .cm-blockquote-border:nth-of-type(-n + 2), .HyperMD-quote-3:not(.cm-active) + .HyperMD-quote-2 .cm-blockquote-border:nth-of-type(-n + 3), .HyperMD-quote-4:not(.cm-active) + .HyperMD-quote-2 .cm-blockquote-border:nth-of-type(-n + 4), .HyperMD-quote-5:not(.cm-active) + .HyperMD-quote-2 .cm-blockquote-border:nth-of-type(-n + 5), .HyperMD-quote-6:not(.cm-active) + .HyperMD-quote-2 .cm-blockquote-border:nth-of-type(-n + 6), .HyperMD-quote-7:not(.cm-active) + .HyperMD-quote-2 .cm-blockquote-border:nth-of-type(-n + 7), .HyperMD-quote-8:not(.cm-active) + .HyperMD-quote-2 .cm-blockquote-border:nth-of-type(-n + 8), .HyperMD-quote-2:not(.cm-active) + .HyperMD-quote-3 .cm-blockquote-border:nth-of-type(-n + 2), .HyperMD-quote-3:not(.cm-active) + .HyperMD-quote-3 .cm-blockquote-border:nth-of-type(-n + 3), .HyperMD-quote-4:not(.cm-active) + .HyperMD-quote-3 .cm-blockquote-border:nth-of-type(-n + 4), .HyperMD-quote-5:not(.cm-active) + .HyperMD-quote-3 .cm-blockquote-border:nth-of-type(-n + 5), .HyperMD-quote-6:not(.cm-active) + .HyperMD-quote-3 .cm-blockquote-border:nth-of-type(-n + 6), .HyperMD-quote-7:not(.cm-active) + .HyperMD-quote-3 .cm-blockquote-border:nth-of-type(-n + 7), .HyperMD-quote-8:not(.cm-active) + .HyperMD-quote-3 .cm-blockquote-border:nth-of-type(-n + 8), .HyperMD-quote-2:not(.cm-active) + .HyperMD-quote-4 .cm-blockquote-border:nth-of-type(-n + 2), .HyperMD-quote-3:not(.cm-active) + .HyperMD-quote-4 .cm-blockquote-border:nth-of-type(-n + 3), .HyperMD-quote-4:not(.cm-active) + .HyperMD-quote-4 .cm-blockquote-border:nth-of-type(-n + 4), .HyperMD-quote-5:not(.cm-active) + .HyperMD-quote-4 .cm-blockquote-border:nth-of-type(-n + 5), .HyperMD-quote-6:not(.cm-active) + .HyperMD-quote-4 .cm-blockquote-border:nth-of-type(-n + 6), .HyperMD-quote-7:not(.cm-active) + .HyperMD-quote-4 .cm-blockquote-border:nth-of-type(-n + 7), .HyperMD-quote-8:not(.cm-active) + .HyperMD-quote-4 .cm-blockquote-border:nth-of-type(-n + 8), .HyperMD-quote-2:not(.cm-active) + .HyperMD-quote-5 .cm-blockquote-border:nth-of-type(-n + 2), .HyperMD-quote-3:not(.cm-active) + .HyperMD-quote-5 .cm-blockquote-border:nth-of-type(-n + 3), .HyperMD-quote-4:not(.cm-active) + .HyperMD-quote-5 .cm-blockquote-border:nth-of-type(-n + 4), .HyperMD-quote-5:not(.cm-active) + .HyperMD-quote-5 .cm-blockquote-border:nth-of-type(-n + 5), .HyperMD-quote-6:not(.cm-active) + .HyperMD-quote-5 .cm-blockquote-border:nth-of-type(-n + 6), .HyperMD-quote-7:not(.cm-active) + .HyperMD-quote-5 .cm-blockquote-border:nth-of-type(-n + 7), .HyperMD-quote-8:not(.cm-active) + .HyperMD-quote-5 .cm-blockquote-border:nth-of-type(-n + 8), .HyperMD-quote-2:not(.cm-active) + .HyperMD-quote-6 .cm-blockquote-border:nth-of-type(-n + 2), .HyperMD-quote-3:not(.cm-active) + .HyperMD-quote-6 .cm-blockquote-border:nth-of-type(-n + 3), .HyperMD-quote-4:not(.cm-active) + .HyperMD-quote-6 .cm-blockquote-border:nth-of-type(-n + 4), .HyperMD-quote-5:not(.cm-active) + .HyperMD-quote-6 .cm-blockquote-border:nth-of-type(-n + 5), .HyperMD-quote-6:not(.cm-active) + .HyperMD-quote-6 .cm-blockquote-border:nth-of-type(-n + 6), .HyperMD-quote-7:not(.cm-active) + .HyperMD-quote-6 .cm-blockquote-border:nth-of-type(-n + 7), .HyperMD-quote-8:not(.cm-active) + .HyperMD-quote-6 .cm-blockquote-border:nth-of-type(-n + 8), .HyperMD-quote-2:not(.cm-active) + .HyperMD-quote-7 .cm-blockquote-border:nth-of-type(-n + 2), .HyperMD-quote-3:not(.cm-active) + .HyperMD-quote-7 .cm-blockquote-border:nth-of-type(-n + 3), .HyperMD-quote-4:not(.cm-active) + .HyperMD-quote-7 .cm-blockquote-border:nth-of-type(-n + 4), .HyperMD-quote-5:not(.cm-active) + .HyperMD-quote-7 .cm-blockquote-border:nth-of-type(-n + 5), .HyperMD-quote-6:not(.cm-active) + .HyperMD-quote-7 .cm-blockquote-border:nth-of-type(-n + 6), .HyperMD-quote-7:not(.cm-active) + .HyperMD-quote-7 .cm-blockquote-border:nth-of-type(-n + 7), .HyperMD-quote-8:not(.cm-active) + .HyperMD-quote-7 .cm-blockquote-border:nth-of-type(-n + 8), .HyperMD-quote-2:not(.cm-active) + .HyperMD-quote-8 .cm-blockquote-border:nth-of-type(-n + 2), .HyperMD-quote-3:not(.cm-active) + .HyperMD-quote-8 .cm-blockquote-border:nth-of-type(-n + 3), .HyperMD-quote-4:not(.cm-active) + .HyperMD-quote-8 .cm-blockquote-border:nth-of-type(-n + 4), .HyperMD-quote-5:not(.cm-active) + .HyperMD-quote-8 .cm-blockquote-border:nth-of-type(-n + 5), .HyperMD-quote-6:not(.cm-active) + .HyperMD-quote-8 .cm-blockquote-border:nth-of-type(-n + 6), .HyperMD-quote-7:not(.cm-active) + .HyperMD-quote-8 .cm-blockquote-border:nth-of-type(-n + 7), .HyperMD-quote-8:not(.cm-active) + .HyperMD-quote-8 .cm-blockquote-border:nth-of-type(-n + 8))::before { - top: calc(var(--blockquote-radius) * -2); -} - -/* #endregion quote */ -/* #region table */ -body { - --table-radius: var(--size-2-3); - --table-btn-color: var(--text-on-accent); - --table-btn-bg: var(--accent-inactive); - --table-header-bg: var(--setting-table-line-bg, var(--md-container-bg)); - --table-alt-line-bg: var(--setting-table-line-bg, var(--md-container-bg)); - --table-cell-vertical-alignment: middle; -} - -.markdown-rendered table { - border-collapse: initial; - border-spacing: 0; -} - -:is(.markdown-source-view.mod-cm6 .cm-table-widget .table-wrapper, .markdown-rendered table) { - --table-white-space: break-all; - width: 100%; -} -:is(.markdown-source-view.mod-cm6 .cm-table-widget .table-wrapper, .markdown-rendered table) .table-editor { - width: 100%; -} -:is(.markdown-source-view.mod-cm6 .cm-table-widget .table-wrapper, .markdown-rendered table) .table-col-btn { - border-top-right-radius: var(--table-radius); - border-bottom-right-radius: var(--table-radius); - color: var(--table-btn-color); -} -:is(.markdown-source-view.mod-cm6 .cm-table-widget .table-wrapper, .markdown-rendered table) .table-row-btn { - border-bottom-left-radius: var(--table-radius); - border-bottom-right-radius: var(--table-radius); - color: var(--table-btn-color); -} -:is(.markdown-source-view.mod-cm6 .cm-table-widget .table-wrapper, .markdown-rendered table) :is(.table-col-btn, .table-row-btn, .table-col-drag-handle:hover, .table-row-drag-handle:hover) { - transition: var(--animation); - background-color: var(--table-btn-bg); - --table-drag-handle-color: var(--table-btn-color); -} -:is(.markdown-source-view.mod-cm6 .cm-table-widget .table-wrapper, .markdown-rendered table) :is(tr:hover .table-row-drag-handle, th:hover .table-col-drag-handle) { - opacity: 1; -} -:is(.markdown-source-view.mod-cm6 .cm-table-widget .table-wrapper, .markdown-rendered table) th:first-child:not(:has(:is(.table-row-drag-handle, .table-col-drag-handle):hover)) { - border-top-left-radius: var(--table-radius); -} -:is(.markdown-source-view.mod-cm6 .cm-table-widget .table-wrapper, .markdown-rendered table) th:last-child:not(:has(.table-col-drag-handle:hover)) { - border-top-right-radius: var(--table-radius); -} -:is(.markdown-source-view.mod-cm6 .cm-table-widget .table-wrapper, .markdown-rendered table):has(.table-col-btn:hover) th:last-child { - border-top-right-radius: 0; -} -:is(.markdown-source-view.mod-cm6 .cm-table-widget .table-wrapper, .markdown-rendered table) tr:last-child td:first-child { - border-bottom-left-radius: var(--table-radius); -} -:is(.markdown-source-view.mod-cm6 .cm-table-widget .table-wrapper, .markdown-rendered table):has(.table-row-btn:hover) tr:last-child td:first-child { - border-bottom-left-radius: 0; -} -:is(.markdown-source-view.mod-cm6 .cm-table-widget .table-wrapper, .markdown-rendered table) tr:last-child td:last-child { - border-bottom-right-radius: var(--table-radius); -} -:is(.markdown-source-view.mod-cm6 .cm-table-widget .table-wrapper, .markdown-rendered table):has(:is(.table-col-btn, .table-row-btn):hover) tr:last-child td:last-child { - border-bottom-right-radius: 0; -} -:is(.markdown-source-view.mod-cm6 .cm-table-widget .table-wrapper, .markdown-rendered table) :is(th, td):not(:first-child) { - border-left: 0; -} -:is(.markdown-source-view.mod-cm6 .cm-table-widget .table-wrapper, .markdown-rendered table) tbody td { - border-top: 0; -} -:is(.markdown-source-view.mod-cm6 .cm-table-widget .table-wrapper, .markdown-rendered table) thead tr { - background-color: var(--table-header-bg); -} -:is(.markdown-source-view.mod-cm6 .cm-table-widget .table-wrapper, .markdown-rendered table) tbody tr:nth-of-type(2n) { - background-color: var(--table-alt-line-bg); -} -:is(.markdown-source-view.mod-cm6 .cm-table-widget .table-wrapper, .markdown-rendered table) tbody tr:nth-of-type(2n+1) { - background-color: var(--background-primary); -} -:is(.markdown-source-view.mod-cm6 .cm-table-widget .table-wrapper, .markdown-rendered table) .table-cell-wrapper:has(> .cm-s-obsidian):not(:has(.image-embed)) { - padding-inline: var(--size-4-1); -} -:is(.markdown-source-view.mod-cm6 .cm-table-widget .table-wrapper, .markdown-rendered table) .table-cell-wrapper:has(> .image-embed) { - display: table-cell; -} -:is(.markdown-source-view.mod-cm6 .cm-table-widget .table-wrapper, .markdown-rendered table) .table-cell-wrapper .image-embed { - padding-block: 0; -} -:is(.markdown-source-view.mod-cm6 .cm-table-widget .table-wrapper, .markdown-rendered table) .table-cell-wrapper:has(.is-live-preview .image-embed) { - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; -} -:is(.markdown-source-view.mod-cm6 .cm-table-widget .table-wrapper, .markdown-rendered table) .table-cell-wrapper:has(.is-live-preview .image-embed) [class=cm-line] { - display: none; -} -/* #endregion table */ -/* #region tag */ -body { - --tag-color: var(--accent-active); -} - -.HyperMD-header .cm-hashtag { - font-size: var(--tag-size) !important; -} - -:is(body, .print .markdown-rendered) { - --tag-padding-x: 0.4rem; - --tag-padding-y: 0.05rem; -} - -.cm-line span.cm-hashtag { - vertical-align: baseline; -} - -body.tag-click-to-edit .cm-line span.cm-hashtag:not(.cm-formatting) { - pointer-events: none; -} - -body.tag-plain { - --tag-background: transparent; -} - -body.tag-outline { - --tag-border-color: var(--setting-tag-outline, var(--accent-inactive)) !important; - --tag-border-width: var(--size-2-1) !important; - --tag-color: var(--setting-tag-color, var(--accent-active)) !important; -} - -body.tag-colored { - --tag-background: var(--setting-tag-bg, var(--accent-active)) !important; - --tag-background-hover: var(--tag-background); - --tag-color: var(--text-on-accent); - --tag-color-hover: var(--tag-color); -} - -/* #endregion tag */ -/* #region heading */ -body { - --font-bold: bold; - --h1-size: calc(var(--font-text-size) * var(--setting-h1-size, 1.6)); - --h2-size: calc(var(--font-text-size) * var(--setting-h2-size, 1.5)); - --h3-size: calc(var(--font-text-size) * var(--setting-h3-size, 1.4)); - --h4-size: calc(var(--font-text-size) * var(--setting-h4-size, 1.3)); - --h5-size: calc(var(--font-text-size) * var(--setting-h5-size, 1.2)); - --h6-size: calc(var(--font-text-size) * var(--setting-h6-size, 1.1)); - --h1-weight: var(--font-bold); - --h2-weight: var(--font-bold); - --h3-weight: var(--font-bold); - --h4-weight: var(--font-bold); - --h5-weight: var(--font-bold); - --h6-weight: var(--font-bold); - --h1-line-height: calc(var(--setting-line-height, var(--line-height-normal)) * var(--h1-size)); - --h2-line-height: calc(var(--setting-line-height, var(--line-height-normal)) * var(--h2-size)); - --h3-line-height: calc(var(--setting-line-height, var(--line-height-normal)) * var(--h3-size)); - --h4-line-height: calc(var(--setting-line-height, var(--line-height-normal)) * var(--h4-size)); - --h5-line-height: calc(var(--setting-line-height, var(--line-height-normal)) * var(--h5-size)); - --h6-line-height: calc(var(--setting-line-height, var(--line-height-normal)) * var(--h6-size)); - --h1-font: var(--setting-h1-font, var(--font-text)); - --h2-font: var(--setting-h2-font, var(--font-text)); - --h3-font: var(--setting-h3-font, var(--font-text)); - --h4-font: var(--setting-h4-font, var(--font-text)); - --h5-font: var(--setting-h5-font, var(--font-text)); - --h6-font: var(--setting-h6-font, var(--font-text)); -} -body.heading-color-base { - --h1-color: var(--text-normal); - --h2-color: var(--text-normal); - --h3-color: var(--text-normal); - --h4-color: var(--text-normal); - --h5-color: var(--text-normal); - --h6-color: var(--text-normal); -} -body.heading-color-accent { - --h1-color: var(--accent-active); - --h2-color: var(--accent-active); - --h3-color: var(--accent-active); - --h4-color: var(--accent-active); - --h5-color: var(--accent-active); - --h6-color: var(--accent-active); -} -body :is(h1, h2, h3, h4, h5, h6) { - margin: 0 !important; -} - -body:is(:not(.css-settings-manager), .heading-color-colorful) { - --h1-color: var(--setting-h1-color, var(--color-red)); - --h2-color: var(--setting-h2-color, var(--color-yellow)); - --h3-color: var(--setting-h3-color, var(--color-green)); - --h4-color: var(--setting-h4-color, var(--color-blue)); - --h5-color: var(--setting-h5-color, var(--color-purple)); - --h6-color: var(--setting-h6-color, var(--color-cyan)); -} - -.cm-formatting.cm-formatting-header { - filter: grayscale(70%); - font-weight: 400 !important; -} -body:not(.fix-line-number) .cm-formatting.cm-formatting-header { - font-size: 1rem !important; - line-height: 1.2rem; -} - -.cm-s-obsidian .cm-line.HyperMD-header { - padding-block: 0; -} - -body:is(:not(.css-settings-manager), .heading-level-enable) :is(div.markdown-reading-view > div > div > div > :is(h1, h2, h3, h4, h5, h6), .markdown-source-view.mod-cm6.is-live-preview .HyperMD-header) { - position: relative; -} -body:is(:not(.css-settings-manager), .heading-level-enable) :is(div.markdown-reading-view > div > div > div > :is(h1, h2, h3, h4, h5, h6), .markdown-source-view.mod-cm6.is-live-preview .HyperMD-header)::before { - content: ""; - position: absolute; - z-index: 1; - padding: 0.1rem; - background-color: transparent; - font-size: 0.7rem; - line-height: 1; - width: fit-content; - letter-spacing: 0.05rem; - opacity: 0; - transition: var(--animation); - transition-delay: calc(var(--animation-delay) / 2); - pointer-events: none; - top: 50%; - transform: translateY(-50%); - left: calc(var(--size-4-5) * -1); -} -body:is(:not(.css-settings-manager), .heading-level-enable) :is(div.markdown-reading-view > div > div > div > :is(h1, h2, h3, h4, h5, h6), .markdown-source-view.mod-cm6.is-live-preview .HyperMD-header):hover::before { - opacity: 0.9; - transition-delay: 0s; - pointer-events: all; -} -body:is(:not(.css-settings-manager), .heading-level-enable) :is(div.markdown-reading-view > div > div > div.is-collapsed > :is(h1, h2, h3, h4, h5, h6), -.markdown-source-view.mod-cm6.is-live-preview .HyperMD-header:has(> .cm-foldPlaceholder))::before { - opacity: 0.9; - text-decoration: underline 0.1rem; -} -body:is(:not(.css-settings-manager), .heading-level-enable).heading-level-fix :is(div.markdown-reading-view > div > div > div:not(.is-collapsed) > :is(h1, h2, h3, h4, h5, h6), -.markdown-source-view.mod-cm6.is-live-preview .HyperMD-header:not(:has(> .cm-foldPlaceholder)))::before { - opacity: 0.4; -} -body:is(:not(.css-settings-manager), .heading-level-enable).heading-level-fix :is(div.markdown-reading-view > div > div > div:not(.is-collapsed) > :is(h1, h2, h3, h4, h5, h6), -.markdown-source-view.mod-cm6.is-live-preview .HyperMD-header:not(:has(> .cm-foldPlaceholder))):not(:hover)::before { - color: var(--text-muted); -} -body:is(:not(.css-settings-manager), .heading-level-enable).heading-level-fix :is(div.markdown-reading-view > div > div > div:not(.is-collapsed) > :is(h1, h2, h3, h4, h5, h6), -.markdown-source-view.mod-cm6.is-live-preview .HyperMD-header:not(:has(> .cm-foldPlaceholder))):hover::before { - opacity: 1; -} -body:is(:not(.css-settings-manager), .heading-level-enable) div.markdown-reading-view > div > div > div > :is(h1, h2, h3, h4, h5, h6)::before { - left: calc(var(--size-4-6) * -1) !important; -} -body:is(:not(.css-settings-manager), .heading-level-enable).link-heading :is(div.markdown-reading-view > div > div > div > h1, .markdown-source-view.mod-cm6.is-live-preview .HyperMD-header-1) { - --link-color: var(--h1-color); - --link-color-underline: var(--h1-color); - --link-external-color: var(--h1-color); - --link-external-color-underline: var(--h1-color); - --link-text-size: var(--h1-size); -} -body:is(:not(.css-settings-manager), .heading-level-enable) :is(div.markdown-reading-view > div > div > div > h1, .markdown-source-view.mod-cm6.is-live-preview .HyperMD-header-1)::before { - content: "H1"; -} -body:is(:not(.css-settings-manager), .heading-level-enable).link-heading :is(div.markdown-reading-view > div > div > div > h2, .markdown-source-view.mod-cm6.is-live-preview .HyperMD-header-2) { - --link-color: var(--h2-color); - --link-color-underline: var(--h2-color); - --link-external-color: var(--h2-color); - --link-external-color-underline: var(--h2-color); - --link-text-size: var(--h2-size); -} -body:is(:not(.css-settings-manager), .heading-level-enable) :is(div.markdown-reading-view > div > div > div > h2, .markdown-source-view.mod-cm6.is-live-preview .HyperMD-header-2)::before { - content: "H2"; -} -body:is(:not(.css-settings-manager), .heading-level-enable).link-heading :is(div.markdown-reading-view > div > div > div > h3, .markdown-source-view.mod-cm6.is-live-preview .HyperMD-header-3) { - --link-color: var(--h3-color); - --link-color-underline: var(--h3-color); - --link-external-color: var(--h3-color); - --link-external-color-underline: var(--h3-color); - --link-text-size: var(--h3-size); -} -body:is(:not(.css-settings-manager), .heading-level-enable) :is(div.markdown-reading-view > div > div > div > h3, .markdown-source-view.mod-cm6.is-live-preview .HyperMD-header-3)::before { - content: "H3"; -} -body:is(:not(.css-settings-manager), .heading-level-enable).link-heading :is(div.markdown-reading-view > div > div > div > h4, .markdown-source-view.mod-cm6.is-live-preview .HyperMD-header-4) { - --link-color: var(--h4-color); - --link-color-underline: var(--h4-color); - --link-external-color: var(--h4-color); - --link-external-color-underline: var(--h4-color); - --link-text-size: var(--h4-size); -} -body:is(:not(.css-settings-manager), .heading-level-enable) :is(div.markdown-reading-view > div > div > div > h4, .markdown-source-view.mod-cm6.is-live-preview .HyperMD-header-4)::before { - content: "H4"; -} -body:is(:not(.css-settings-manager), .heading-level-enable).link-heading :is(div.markdown-reading-view > div > div > div > h5, .markdown-source-view.mod-cm6.is-live-preview .HyperMD-header-5) { - --link-color: var(--h5-color); - --link-color-underline: var(--h5-color); - --link-external-color: var(--h5-color); - --link-external-color-underline: var(--h5-color); - --link-text-size: var(--h5-size); -} -body:is(:not(.css-settings-manager), .heading-level-enable) :is(div.markdown-reading-view > div > div > div > h5, .markdown-source-view.mod-cm6.is-live-preview .HyperMD-header-5)::before { - content: "H5"; -} -body:is(:not(.css-settings-manager), .heading-level-enable).link-heading :is(div.markdown-reading-view > div > div > div > h6, .markdown-source-view.mod-cm6.is-live-preview .HyperMD-header-6) { - --link-color: var(--h6-color); - --link-color-underline: var(--h6-color); - --link-external-color: var(--h6-color); - --link-external-color-underline: var(--h6-color); - --link-text-size: var(--h6-size); -} -body:is(:not(.css-settings-manager), .heading-level-enable) :is(div.markdown-reading-view > div > div > div > h6, .markdown-source-view.mod-cm6.is-live-preview .HyperMD-header-6)::before { - content: "H6"; -} -body:is(:not(.css-settings-manager), .heading-level-enable) div.markdown-reading-view > div > div > div > :is(h1, h2, h3, h4, h5, h6)::before { - left: calc(-1 * var(--size-4-6)) !important; -} -body:is(:not(.css-settings-manager), .heading-level-enable) .heading-collapse-indicator { - position: absolute; - z-index: 99; - height: var(--size-4-4); - width: var(--size-4-5); - top: 50%; - transform: translateY(-50%); - left: calc(var(--size-2-1) * -1); - padding: 0 !important; - --cursor: pointer; -} -body:is(:not(.css-settings-manager), .heading-level-enable) .heading-collapse-indicator svg { - display: none; -} -body:is(:not(.css-settings-manager), .heading-level-enable) .HyperMD-header { - position: relative; -} -body:is(:not(.css-settings-manager), .heading-level-enable) .HyperMD-header .cm-fold-indicator .collapse-indicator { - --cursor: pointer; - z-index: 99; - opacity: 0 !important; - width: var(--size-4-6); - height: var(--size-4-4) !important; - left: calc(var(--size-2-1) - var(--size-4-8)); - top: 50% !important; - transform: translateY(-50%) !important; -} - -body.heading-h1-center h1 { - text-align: center; -} - -body.heading-h1-underline :is(h1, .HyperMD-header-1) { - position: relative; -} -body.heading-h1-underline :is(h1, .HyperMD-header-1)::after { - content: ""; - position: absolute; - height: var(--size-4-1); - width: 100%; - bottom: calc(var(--h1-size) * var(--line-height-normal) * 0.3 - var(--size-4-3)); - border-radius: var(--size-2-1); - background-image: linear-gradient(to right, var(--h1-color) 30%, transparent 70%); -} -body.heading-h1-underline h1::after { - left: 0; -} -body.heading-h1-underline .HyperMD-header-1::after { - left: var(--size-4-1); -} -body.heading-h1-underline .vertical-tab-content h1 { - font-size: var(--h1-size); - font-weight: var(--h1-weight); -} -body.heading-h1-underline.heading-underline-thin :is(h1, .HyperMD-header-1)::after { - height: var(--size-2-1); -} - -body.heading-h2-underline :is(h2, .HyperMD-header-2) { - position: relative; -} -body.heading-h2-underline :is(h2, .HyperMD-header-2)::after { - content: ""; - position: absolute; - height: var(--size-4-1); - width: 100%; - bottom: calc(var(--h2-size) * var(--line-height-normal) * 0.3 - var(--size-4-3)); - border-radius: var(--size-2-1); - background-image: linear-gradient(to right, var(--h2-color) 30%, transparent 70%); -} -body.heading-h2-underline h2::after { - left: 0; -} -body.heading-h2-underline .HyperMD-header-2::after { - left: var(--size-4-1); -} -body.heading-h2-underline .vertical-tab-content h2 { - font-size: var(--h2-size); - font-weight: var(--h2-weight); -} -body.heading-h2-underline.heading-underline-thin :is(h2, .HyperMD-header-2)::after { - height: var(--size-2-1); -} - -body.heading-h3-underline :is(h3, .HyperMD-header-3) { - position: relative; -} -body.heading-h3-underline :is(h3, .HyperMD-header-3)::after { - content: ""; - position: absolute; - height: var(--size-4-1); - width: 100%; - bottom: calc(var(--h3-size) * var(--line-height-normal) * 0.3 - var(--size-4-3)); - border-radius: var(--size-2-1); - background-image: linear-gradient(to right, var(--h3-color) 30%, transparent 70%); -} -body.heading-h3-underline h3::after { - left: 0; -} -body.heading-h3-underline .HyperMD-header-3::after { - left: var(--size-4-1); -} -body.heading-h3-underline .vertical-tab-content h3 { - font-size: var(--h3-size); - font-weight: var(--h3-weight); -} -body.heading-h3-underline.heading-underline-thin :is(h3, .HyperMD-header-3)::after { - height: var(--size-2-1); -} - -body.heading-h4-underline :is(h4, .HyperMD-header-4) { - position: relative; -} -body.heading-h4-underline :is(h4, .HyperMD-header-4)::after { - content: ""; - position: absolute; - height: var(--size-4-1); - width: 100%; - bottom: calc(var(--h4-size) * var(--line-height-normal) * 0.3 - var(--size-4-3)); - border-radius: var(--size-2-1); - background-image: linear-gradient(to right, var(--h4-color) 30%, transparent 70%); -} -body.heading-h4-underline h4::after { - left: 0; -} -body.heading-h4-underline .HyperMD-header-4::after { - left: var(--size-4-1); -} -body.heading-h4-underline .vertical-tab-content h4 { - font-size: var(--h4-size); - font-weight: var(--h4-weight); -} -body.heading-h4-underline.heading-underline-thin :is(h4, .HyperMD-header-4)::after { - height: var(--size-2-1); -} - -body.heading-h5-underline :is(h5, .HyperMD-header-5) { - position: relative; -} -body.heading-h5-underline :is(h5, .HyperMD-header-5)::after { - content: ""; - position: absolute; - height: var(--size-4-1); - width: 100%; - bottom: calc(var(--h5-size) * var(--line-height-normal) * 0.3 - var(--size-4-3)); - border-radius: var(--size-2-1); - background-image: linear-gradient(to right, var(--h5-color) 30%, transparent 70%); -} -body.heading-h5-underline h5::after { - left: 0; -} -body.heading-h5-underline .HyperMD-header-5::after { - left: var(--size-4-1); -} -body.heading-h5-underline .vertical-tab-content h5 { - font-size: var(--h5-size); - font-weight: var(--h5-weight); -} -body.heading-h5-underline.heading-underline-thin :is(h5, .HyperMD-header-5)::after { - height: var(--size-2-1); -} - -body.heading-h6-underline :is(h6, .HyperMD-header-6) { - position: relative; -} -body.heading-h6-underline :is(h6, .HyperMD-header-6)::after { - content: ""; - position: absolute; - height: var(--size-4-1); - width: 100%; - bottom: calc(var(--h6-size) * var(--line-height-normal) * 0.3 - var(--size-4-3)); - border-radius: var(--size-2-1); - background-image: linear-gradient(to right, var(--h6-color) 30%, transparent 70%); -} -body.heading-h6-underline h6::after { - left: 0; -} -body.heading-h6-underline .HyperMD-header-6::after { - left: var(--size-4-1); -} -body.heading-h6-underline .vertical-tab-content h6 { - font-size: var(--h6-size); - font-weight: var(--h6-weight); -} -body.heading-h6-underline.heading-underline-thin :is(h6, .HyperMD-header-6)::after { - height: var(--size-2-1); -} - -body.heading-h6-variant :is(h6, .cm-header-6) { - font-variant: small-caps; -} - -/* #endregion heading */ -/* #region image */ -body.theme-dark.image-dark-hover img { - filter: brightness(0.7); - transition: var(--animation); -} -body.theme-dark.image-dark-hover img:hover { - filter: brightness(0.85); -} - -img { - border-radius: var(--radius-l); - cursor: pointer; -} - -/* hint text, reference from https://github.com/chrisgrieser/shimmering-focus */ -body.image-alt .image-embed[alt] { - padding: var(--size-4-1) 0; -} -body.image-alt .image-embed[alt]::after { - display: block; - text-align: center; -} -body.image-alt .image-embed[alt]:not([alt$=".png"], [alt$=".jpg"], [alt$=".jpeg"], [alt$=".tiff"], [alt$=".webp"], [alt$=".bmp"])::after { - content: attr(alt); - font-size: var(--font-smaller); - color: var(--text-faint); -} -body.image-alt .view-content img:not(.emoji) { - display: block; - margin-right: auto; - margin-left: auto; -} - -/* scale on click, reference from blue-topaz */ -body.image-zoom :is(.markdown-preview-view, .workspace-leaf-content[data-type=image]) img:not([class*=emoji], .banner-image) { - cursor: zoom-in; -} -body.image-zoom :is(.markdown-preview-view, .workspace-leaf-content[data-type=image]) img:not([class*=emoji], .banner-image):active { - overflow: hidden; - position: fixed; - object-fit: contain; - height: 100%; - width: 100%; - margin: 0; - border-radius: 0; - inset: 0; - z-index: 200; - background-image: linear-gradient(to right, hsl(var(--background-primary-hsl)), hsl(var(--background-secondary-hsl)), hsl(var(--background-primary-hsl))); -} - -/* #endregion image */ -/* #region canvas */ -.canvas-wrapper .canvas-node-container { - border-radius: var(--radius-l); - background-color: hsl(var(--background-primary-hsl)); -} -.canvas-wrapper .canvas-card-menu { - padding: var(--size-2-1); - border-radius: var(--radius-m); - bottom: var(--size-4-6); -} -.canvas-wrapper .canvas-card-menu .canvas-card-menu-button { - --icon-size: var(--icon-l); -} -.canvas-wrapper :is(.canvas-menu, .canvas-controls-group) { - border-radius: var(--radius-m); -} -.canvas-wrapper .canvas-menu { - padding: var(--size-4-1); -} -.canvas-wrapper .canvas-menu .clickable-icon { - padding: var(--size-2-3); -} -.canvas-wrapper .canvas-control-group { - box-shadow: none; - border-radius: var(--radius-m); - background-color: hsl(var(--background-secondary-hsl)); -} -.canvas-wrapper .canvas-control button { - transition: none; - margin: var(--size-2-1); - padding: var(--size-2-3); - border-radius: var(--radius-s); - border-bottom: none; -} -.canvas-wrapper .canvas-control button:not([disabled]):hover { - background-color: var(--background-modifier-hover) !important; -} - -body.canvas-control-hide .canvas-control-group { - opacity: 0; - transition: var(--animation); - transition-delay: var(--animation-delay); -} -body.canvas-control-hide .canvas-control-group:hover { - transition-delay: 0s; - opacity: 1; -} - -body.canvas-center .canvas-node-content.markdown-embed > .markdown-embed-content > .markdown-preview-view > .markdown-preview-sizer { - text-align: center; -} - -/* #endregion canvas */ -/* #region callout */ -body { - --callout-padding: var(--size-4-3) var(--size-4-6); -} - -.callout-icon { - margin-block: auto; -} - -.callout-fold { - margin: auto 0 !important; -} - -/* #endregion callout */ -/* #region pdf */ -body.theme-dark.pdf-dark-hover .pdf-viewer { - opacity: 0.7; - transition: opacity var(--animation); -} -body.theme-dark.pdf-dark-hover .pdf-viewer:hover { - opacity: 0.85; -} - -/* #endregion pdf */ -/* #region property */ -.metadata-container { - margin-block-end: var(--size-4-2); - transition: var(--animation); - --metadata-property-background-hover: var(--md-container-bg); -} -body.prop-outline .metadata-container { - transform: none; - --metadata-border-width: var(--block-outline-width); - --metadata-border-radius: var(--radius-l); - --metadata-border-color: var(--accent-inactive); - --metadata-padding: var(--radius-l); -} -body.prop-outline .metadata-container:hover { - --metadata-border-color: var(--accent-active); -} -.metadata-container .metadata-add-button { - padding: var(--size-4-1); - margin-top: var(--size-4-2); - gap: var(--size-2-3); -} - -.metadata-properties-heading .collapse-indicator { - left: calc(var(--size-4-8) * -1); -} - -.metadata-property-icon, -input.metadata-property-key-input, -.multi-select-pill, -.multi-select-input { - line-height: calc(var(--line-height-normal) / 1.5); - height: calc(var(--line-height-normal) / 1.5); -} - -.metadata-property-key { - padding-block: var(--size-2-1); -} - -.metadata-property:not([data-property-key=tags]) .metadata-property-key-input { - padding-block: var(--size-2-3); -} - -.multi-select-pill { - transition: var(--animation); -} - -.metadata-property[data-property-key=cssclasses] { - --pill-padding-x: 0.4em; -} -.metadata-property[data-property-key=cssclasses] .multi-select-pill { - line-height: 1; -} - -.multi-select-pill-remove-button { - cursor: pointer; -} - -.multi-select-pill-content { - line-height: 1.6; -} - -/* #endregion property */ -/* #endregion [editor] */ -/* #region [plugins] */ -/* #region better-command-palette */ -.better-command-palette p.better-command-palette-title { - margin: var(--size-4-3) var(--size-4-6); -} -.better-command-palette .prompt-input { - font-size: var(--font-ui-large); -} - -/* #endregion better-command-palette */ -/* #region calender */ -body.calendar-swap-year-month #calendar-container .nav { - padding-left: var(--size-4-1); -} -body.calendar-swap-year-month #calendar-container .nav .title { - display: flex; - flex-direction: row-reverse; - font-weight: normal; - font-size: 1.2rem; -} -body.calendar-swap-year-month #calendar-container .nav .title .year { - color: var(--text-normal); - letter-spacing: 0.1rem; - display: flex; - align-items: center; -} -body.calendar-swap-year-month #calendar-container .nav .title .year::after { - content: var(--setting-calendar-year-suffix, "年"); - margin-right: var(--size-2-1); - margin-left: var(--size-2-1); -} -body.calendar-swap-year-month #calendar-container .nav .title .month { - height: var(--size-4-6); - line-height: var(--size-4-6); - letter-spacing: 0.1rem; - font-weight: bold; - color: var(--accent-active); -} - -.theme-light { - --calendar-weekend-bg: hsla(var(--accent-h), - var(--accent-s), - calc(var(--accent-l) + 24%), 24%); -} - -.theme-dark { - --calendar-weekend-bg: hsla(var(--accent-h), - var(--accent-s), - calc(var(--accent-l) - 24%), 24%); -} - -#calendar-container { - --color-text-today: var(--text-on-accent); - --color-text-weeknum: var(--accent-active); -} -#calendar-container thead { - border-bottom: var(--size-2-1) solid var(--accent-active); -} -#calendar-container th { - padding: 2px 0 4px; - font-weight: bold; - letter-spacing: 0.1em; -} -#calendar-container .nav { - padding: 0; - margin-bottom: var(--size-4-3); - padding-left: var(--size-4-1); - justify-content: space-around; -} -#calendar-container .nav .right-nav { - margin-left: unset; -} -#calendar-container .day { - border: 1px solid transparent; -} -#calendar-container .day:hover { - border-color: var(--accent-inactive); -} -#calendar-container .day.today:hover { - border-color: var(--text-on-accent); -} -#calendar-container .day:active { - background-color: var(--accent-inactive); -} -#calendar-container .active { - background-color: var(--accent-inactive); - color: var(--text-normal); -} -#calendar-container .today { - --color-dot: var(--text-on-accent); - color: var(--text-on-accent); - background-color: var(--accent-active); -} -#calendar-container .reset-button { - white-space: nowrap; -} -#calendar-container .title { - line-height: 1; - font-size: 1.4rem; - white-space: nowrap; -} -#calendar-container .dot-container { - translate: 0 calc(-1 * var(--size-2-1)); -} - -body.calendar-weekend #calendar-container tbody tr td:nth-last-child(2), -body.calendar-weekend #calendar-container tbody tr td:nth-last-child(1) { - background-color: var(--calendar-weekend-bg); -} - -.workspace-leaf-content[data-type=calendar] .view-content { - padding-inline: var(--size-4-1); - padding-block: 0; -} - -body #calendar-container { - max-width: var(--setting-calendar-max-width, 500px); - margin-inline: auto; -} -body #calendar-container .day { - padding: var(--size-2-1) var(--size-4-1) !important; - border: none; -} - -/* #endregion calender */ -/* #region excalidraw */ -/* reference from https://github.com/Maldonacho/obsidian-encore-theme */ -.excalidraw-wrapper { - background-color: transparent; -} - -.excalidraw { - border-radius: 8px; - background-color: transparent; - --ui-font: var(--font-interface); - --help-icon: url("data:image/svg+xml,%3Csvg 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' data-darkreader-inline-stroke='' style='--darkreader-inline-stroke:currentColor;'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cpath d='M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3'%3E%3C/path%3E%3Cline x1='12' y1='17' x2='12.01' y2='17'%3E%3C/line%3E%3C/svg%3E"); - --grip-icon: url("data:image/svg+xml,%3Csvg 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' data-darkreader-inline-stroke='' style='--darkreader-inline-stroke:currentColor;'%3E%3Ccircle cx='12' cy='9' r='1'%3E%3C/circle%3E%3Ccircle cx='19' cy='9' r='1'%3E%3C/circle%3E%3Ccircle cx='5' cy='9' r='1'%3E%3C/circle%3E%3Ccircle cx='12' cy='15' r='1'%3E%3C/circle%3E%3Ccircle cx='19' cy='15' r='1'%3E%3C/circle%3E%3Ccircle cx='5' cy='15' r='1'%3E%3C/circle%3E%3C/svg%3E"); -} -.excalidraw .welcome-screen-menu { - display: none; -} -.excalidraw .mobile-misc-tools-container { - right: calc(var(--editor-container-padding) * -0.8); -} -.excalidraw .mobile-misc-tools-container .library-button { - border-radius: 0; - padding: var(--size-4-1); -} -:is(.excalidraw, .excalidraw.theme--dark) { - --color-selection: var(--accent-active); - --color-primary: var(--accent-active); - --color-primary-darker: var(--accent-active); - --color-primary-darkest: var(--text-normal); - --button-gray-2: var(--nav-item-background-hover); - --color-primary-light: var(--nav-item-background-hover); - --border-radius-md: 4px; - --border-radius-lg: 8px; - --input-shadow: none; - --input-shadow-hover: none; -} -:is(.excalidraw, .excalidraw.theme--dark) .color-picker-label-swatch { - border: 1px solid var(--color-base-100); -} -:is(.excalidraw, .excalidraw.theme--dark) .color-picker-hash { - width: 1rem; -} -:is(.excalidraw, .excalidraw.theme--dark) .Island > div:first-child > svg { - -webkit-mask-image: var(--grip-icon); - -webkit-mask-position: center; - -webkit-mask-repeat: no-repeat; - -webkit-mask-size: unset; - background-color: var(--button-gray-1); -} -:is(.excalidraw, .excalidraw.theme--dark) :is(.Island, .mobile-misc-tools-container) { - backdrop-filter: blur(var(--size-2-3)); -} -.excalidraw .popover { - box-shadow: none; - background-color: hsl(var(--background-secondary-hsl)) !important; - animation: op var(--animation) !important; -} -.excalidraw .popover ul { - border-radius: var(--radius-m); - margin-left: 0; - padding: var(--size-2-3); - font-family: var(--font-text); - box-shadow: var(--shadow-s); -} -.excalidraw .popover ul li button { - border-radius: var(--radius-s); - transition: none; -} -.excalidraw .popover ul li button:hover { - background-color: var(--background-modifier-hover); - color: var(--text-normal); -} -.excalidraw .popover ul hr { - margin-block: var(--size-2-3); - border-color: var(--hr-color); - margin-inline: calc(-1 * var(--size-4-1)); -} -.excalidraw .layer-ui__wrapper__footer-right { - transform: translateY(-32px); -} -.excalidraw .layer-ui__wrapper__footer-right .help-icon { - display: none; -} -.excalidraw .layer-ui__wrapper__footer-left { - margin-bottom: 0.3rem; -} - -.theme-light .excalidraw:not(.theme--dark) { - --button-gray-1: var(--color-base-30); - --button-gray-3: var(--color-base-30); - --dialog-border-color: var(--color-base-40); - --island-bg-color: var(--color-base-00); - --input-border-color: var(--color-base-30); - --input-bg-color: var(--color-base-20); -} - -.theme-dark .excalidraw.theme--dark { - --button-gray-1: var(--color-base-30); - --button-gray-3: var(--color-base-30); - --dialog-border-color: var(--color-base-40); - --island-bg-color: var(--color-base-00); - --input-border-color: var(--color-base-30); - --input-bg-color: var(--color-base-20); -} - -.help-icon { - -webkit-mask-image: var(--help-icon); - -webkit-mask-position: center; - -webkit-mask-repeat: no-repeat; - -webkit-mask-size: 18px; - background-color: var(--button-gray-1); - height: 30px; -} -.help-icon :hover { - background-color: var(--button-gray-2); -} -.help-icon > * { - display: none; -} - -.workspace-leaf-content[data-type=excalidraw] .clickable-icon.view-action:is([aria-label="Press ESC to exit fullscreen mode"], [aria-label="Open selected text as link\a(SHIFT+CLICK to open in a new pane)"], [aria-label="Save (will also update transclusions)"], [aria-label="Install or update Excalidraw Scripts"]) > svg { - -webkit-mask-image: unset; - -webkit-mask-position: center; - -webkit-mask-repeat: no-repeat; - -webkit-mask-size: 16px; - background-color: var(--color-base-70); - border-radius: 0; -} -.workspace-leaf-content[data-type=excalidraw] .clickable-icon.view-action[aria-label="Press ESC to exit fullscreen mode"] > svg { - -webkit-mask-image: url("data:image/svg+xml,%3Csvg 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' data-darkreader-inline-stroke='' style='--darkreader-inline-stroke:currentColor;'%3E%3Cpolyline points='15 3 21 3 21 9'%3E%3C/polyline%3E%3Cpolyline points='9 21 3 21 3 15'%3E%3C/polyline%3E%3Cline x1='21' y1='3' x2='14' y2='10'%3E%3C/line%3E%3Cline x1='3' y1='21' x2='10' y2='14'%3E%3C/line%3E%3C/svg%3E"); -} -.workspace-leaf-content[data-type=excalidraw] .clickable-icon.view-action[aria-label="Open selected text as link\a(SHIFT+CLICK to open in a new pane)"] > svg { - -webkit-mask-image: url("data:image/svg+xml,%3Csvg 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' data-darkreader-inline-stroke='' style='--darkreader-inline-stroke:currentColor;'%3E%3Cpath d='M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6'%3E%3C/path%3E%3Cpolyline points='15 3 21 3 21 9'%3E%3C/polyline%3E%3Cline x1='10' y1='14' x2='21' y2='3'%3E%3C/line%3E%3C/svg%3E"); -} -.workspace-leaf-content[data-type=excalidraw] .clickable-icon.view-action[aria-label="Save (will also update transclusions)"] > svg { - -webkit-mask-image: url("data:image/svg+xml,%3Csvg 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' data-darkreader-inline-stroke='' style='--darkreader-inline-stroke:currentColor;'%3E%3Cpath d='M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z'%3E%3C/path%3E%3Cpolyline points='17 21 17 13 7 13 7 21'%3E%3C/polyline%3E%3Cpolyline points='7 3 7 8 15 8'%3E%3C/polyline%3E%3C/svg%3E"); -} -.workspace-leaf-content[data-type=excalidraw] .clickable-icon.view-action[aria-label="Install or update Excalidraw Scripts"] > svg { - -webkit-mask-image: url("data:image/svg+xml,%3Csvg 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' data-darkreader-inline-stroke='' style='--darkreader-inline-stroke:currentColor;'%3E%3Cpath d='M4 22h14a2 2 0 0 0 2-2V7.5L14.5 2H6a2 2 0 0 0-2 2v4'%3E%3C/path%3E%3Cpolyline points='14 2 14 8 20 8'%3E%3C/polyline%3E%3Cpath d='m9 18 3-3-3-3'%3E%3C/path%3E%3Cpath d='m5 12-3 3 3 3'%3E%3C/path%3E%3C/svg%3E"); -} - -.workspace-leaf-content .excalidraw-view { - padding: unset; - padding-right: 4px; - padding-bottom: 4px; -} - -.excalidraw .excalidraw__embeddable__outer .theme-light { - --background-primary: hsla(var(--accent-h), - calc(var(--accent-s) - 12%), - 97%, - var(--bg-opacity)) !important ; -} - -.theme-dark .excalidraw .excalidraw-textEditorContainer * { - color: var(--text-on-accent) !important; - filter: none !important; -} - -/* #endregion excalidraw */ -/* #region dbfolder */ -body.link-icon .database-plugin__embed-link-wrapper a.internal-link[class*=database-plugin]::before { - content: none; -} - -/* #endregion dbfolder */ -/* #region git */ -.workspace-leaf-content[data-type=diff-view] .d2h-diff-table { - font-family: var(--font-monospace); -} - -body.back-blur-title-bar .workspace-leaf-content[data-type=diff-view] .d2h-file-diff { - padding-top: var(--size-4-8); -} - -/* #endregion git */ -/* #region my-snippets */ -.MySnippets-statusbar-menu { - --interactive-normal: var(--accent-inactive); -} - -/* #endregion my-snippets */ -/* #region banners */ -img.banner-image { - border-radius: 0; -} - -.obsidian-banner-spacer { - height: 0; -} - -.markdown-source-view .cm-content:has(.cm-line.has-banner) { - padding-top: calc(var(--banner-height) - var(--size-4-8) + 1.5rem) !important; -} -.markdown-source-view .obsidian-banner-spacer { - margin: 0 !important; -} - -.markdown-preview-sizer > div.obsidian-banner-wrapper { - position: initial !important; - margin-top: var(--banner-height); -} - -/* #endregion banners */ -/* #region kanban */ -body { - --kanban-item-color: var(--setting-kanban-item-color, var(--text-normal)); - --kanban-item-bg: var(--setting-kanban-item-bg, hsl(var(--background-primary-hsl))); - --kanban-board-bg: var(--setting-kanban-board-bg, hsl(var(--background-secondary-hsl))); -} - -:is(.kanban-plugin, .kanban-plugin__item, .kanban-plugin__lane) button { - line-height: normal; - padding-block: 0; -} -:is(.kanban-plugin__item-action-add, .kanban-plugin__lane-action-add) { - color: var(--accent-active); -} -:is(.kanban-plugin__item-action-add, .kanban-plugin__lane-action-add):hover { - background-color: var(--accent-active); - color: var(--text-on-accent); -} -.kanban-plugin__lane { - background: var(--kanban-board-bg); -} -.kanban-plugin__lane-form-wrapper { - background: var(--kanban-board-bg); - border: 1px solid var(--background-modifier-border-hover); - box-shadow: var(--shadow-s); -} -.kanban-plugin__lane-form-wrapper textarea { - padding: var(--size-4-1) var(--size-2-3); -} -.kanban-plugin__grow-wrap > textarea, .kanban-plugin__grow-wrap:after { - border-radius: var(--radius-s); - box-sizing: border-box; - transition: box-shadow var(--animation) !important; -} -.kanban-plugin__new-item-button { - background-color: var(--kanban-item-bg) !important; - transition: var(--animation); -} -.kanban-plugin__new-item-button:hover { - color: var(--accent-active); -} -.kanban-plugin__item-form .kanban-plugin__item-input-wrapper { - padding: 0; - height: 100%; -} -.kanban-plugin__item-form .kanban-plugin__item-input-wrapper * { - height: 100%; -} -.kanban-plugin__item-form .kanban-plugin__item-input-wrapper textarea { - padding: var(--size-2-1) var(--size-2-3); -} -.kanban-plugin__item-title-wrapper { - background: var(--kanban-item-bg); -} -.kanban-plugin__item-title-wrapper p { - color: var(--kanban-item-color); -} -.kanban-plugin__item-title-wrapper:has(.kanban-plugin__item-input-wrapper) { - background: var(--background-modifier-form-field); -} -.kanban-plugin__item-postfix-button { - padding: var(--size-4-1); - margin-left: var(--size-2-3); - margin-right: calc(var(--size-2-1) * -1); -} -.kanban-plugin__lane-title .kanban-plugin__lane-input { - padding-inline: var(--size-2-3); -} -.kanban-plugin__lane a[aria-label=Close] { - padding: var(--size-4-1); - margin-left: var(--size-2-3); - margin-right: calc(var(--size-2-1) * -1); -} -.kanban-plugin__markdown-preview-view :is(ul, ol) { - padding-inline-start: var(--size-4-8); -} -.kanban-plugin__markdown-preview-view :is(ul, ol) li { - margin: 0 !important; - line-height: var(--line-height-tight) !important; -} -.kanban-plugin__markdown-preview-view img { - pointer-events: none !important; -} -.kanban-plugin__autocomplete { - backdrop-filter: blur(var(--size-4-8)); - padding-inline: var(--size-2-2); - animation: op var(--animation); - border-radius: var(--radius-m); - border: 1px solid var(--background-modifier-border); - box-shadow: var(--shadow-s); - z-index: var(--layer-notice); -} -.kanban-plugin__autocomplete-item, .kanban-plugin__autocomplete-item-active { - border: none; - border-radius: var(--radius-s); - margin-block: var(--size-4-1) !important; -} -.kanban-plugin__autocomplete-item *, .kanban-plugin__autocomplete-item-active * { - opacity: 1 !important; - transition: none !important; -} -.kanban-plugin__autocomplete-item-active * { - color: var(--text-on-accent) !important; -} -.kanban-plugin__autocomplete-item:hover { - background-color: var(--background-modifier-hover); - color: var(--text-normal); -} -.kanban-plugin * { - caret-color: var(--accent-active); -} - -.kanban-plugin__board-settings-modal :is(.is-open .choices__list--dropdown, .choices__list--dropdown) { - background-color: var(--interactive-normal); -} -.kanban-plugin__board-settings-modal .choices { - border: none; - box-shadow: var(--input-shadow); - border-radius: var(--input-radius); - background-color: var(--interactive-normal); -} -.kanban-plugin__board-settings-modal .choices__inner { - border-radius: var(--input-radius); -} -.kanban-plugin__board-settings-modal .choices__list { - background-color: var(--interactive-normal); -} -.kanban-plugin__board-settings-modal .choices__list--dropdown { - border-radius: var(--input-radius); -} -.kanban-plugin__board-settings-modal .choices__list--dropdown:focus { - box-shadow: 0 0 0 3px var(--background-modifier-border-focus); -} -.kanban-plugin__board-settings-modal .choices__item--choice { - border-radius: var(--radius-s); -} -.kanban-plugin__board-settings-modal .choices::after { - content: var(--select-bg-img); - width: 1.2rem; - height: 1.2rem; - border: none; - margin-top: 0; - translate: 0 -50%; -} -.kanban-plugin__board-settings-modal .choices[data-type*=select-one].is-open:after { - margin-top: 0; -} - -body.search-internal-enable .kanban-plugin__search-wrapper { - width: fit-content; - padding: var(--size-2-3) var(--size-2-3); - position: absolute; - background-color: var(--kanban-board-bg); - border: 1px solid var(--background-modifier-border-hover); - border-radius: var(--radius-m); - left: unset; - top: var(--size-2-3); - right: var(--size-2-3); -} -body.search-internal-enable .kanban-plugin__search-wrapper a[aria-label=Cancel] { - padding: var(--size-4-1); - margin-left: var(--size-2-2); -} - -/* #endregion kanban */ -/* #region annotator */ -hypothesis-app { - --radius-base: 0.25rem; -} -hypothesis-app textarea { - color: var(--text-normal) !important; - border-bottom-left-radius: calc(var(--radius-base) * 4 / 5) !important; - border-bottom-right-radius: calc(var(--radius-base) * 4 / 5) !important; -} -hypothesis-app .Hyp-Card { - transition: var(--setting-animation-time, 200ms) ease; - border-radius: calc(var(--radius-base) * 2); -} -hypothesis-app :is(.Hyp-LabeledButton, .Hyp-TextInput) { - border-radius: var(--radius-base); -} - -/* #endregion annotator */ -/* #region dataview */ -pre.dataview { - border: 0 !important; - padding-top: calc(var(--code-size) * var(--line-height-normal) * 0.7); -} -pre.dataview-error { - font-family: var(--font-monospace); -} - -body.dv-enable .cm-embed-block:has(.dataview) { - border-color: var(--accent-inactive); -} - -/* #endregion dataview */ -/* #region recent-files */ -.workspace-leaf-content[data-type=recent-files] .nav-file-title { - padding: var(--size-4-1) var(--size-4-2); - border-radius: var(--radius-s); -} -.workspace-leaf-content[data-type=recent-files] .nav-file-title:hover { - background-color: var(--nav-item-background-hover); -} -.workspace-leaf-content[data-type=recent-files] .nav-file-title:hover:not(.is-active) .recent-files-file-delete { - color: var(--accent-active); -} -.workspace-leaf-content[data-type=recent-files] .nav-file-title.is-active { - background-color: var(--accent-active); -} -.workspace-leaf-content[data-type=recent-files] .nav-file-title.is-active::after { - content: none; -} -.workspace-leaf-content[data-type=recent-files] .recent-files-file-delete { - color: var(--text-on-accent); - transform: translateY(var(--size-4-1)); -} - -/* #endregion recent-files */ -/* #endregion [plugins] */ -/* #region [workspace] */ -/* #region document-search */ -.obsidian-search-match-highlight { - background-color: var(--background-secondary); -} - -body.search-internal-enable.back-blur-title-bar .document-search-container { - top: calc(var(--header-height) + var(--size-4-4)); -} - -body.search-internal-enable .document-search-container { - background-color: hsl(var(--background-secondary-hsl)) !important; - position: absolute; - top: var(--size-4-2); - right: var(--size-4-4); - border-radius: var(--size-4-2); - padding: var(--size-2-3); - padding-left: 0; - height: fit-content; - border: var(--size-2-1) solid var(--frame-outline-color); - box-shadow: var(--shadow-s); - margin: 0; -} -body.search-internal-enable .document-search-container :is(.document-search, .document-replace, .document-replace-buttons, .document-search-buttons) { - gap: var(--size-2-3); -} -body.search-internal-enable .document-search-container :is(.document-search, .document-replace) { - align-items: center; - padding: 0; -} -body.search-internal-enable .document-search-container :is(.document-search-input, .document-replace-input) { - margin-left: var(--size-2-3); -} -body.search-internal-enable .document-search-container .document-search-close-button { - position: relative; - top: 0; -} - -body.search-internal-enable.search-internal-disable-select-all .document-search-container .document-search-buttons button:nth-child(3) { - display: none; -} - -body.search-internal-enable.search-internal-expand-on-focus :is(.document-search-input, .document-replace-input) { - margin-left: var(--size-2-3); - width: 100px; - transition: var(--animation); -} -body.search-internal-enable.search-internal-expand-on-focus .document-search-input:focus { - width: 180px; -} -body.search-internal-enable.search-internal-expand-on-focus .document-replace-input:focus { - width: 220px; -} - -.markdown-source-view, -.markdown-reading-view { - container-type: inline-size; -} - -@container (max-width: 390px) { - body.search-internal-enable .document-search-container { - width: calc(100% - 2 * var(--size-4-3)); - } - body.search-internal-enable .document-search-container :is(.document-search-input, .document-replace-input) { - min-width: 0; - } -} -@container (max-width: 320px) { - body.search-internal-enable .document-search-container :is(.document-search-buttons [aria-label="Shift + F3"], .document-replace-buttons [aria-label="Ctrl + Alt + Enter"]) { - display: none; - } -} -/* #endregion document-search */ -/* #region modal */ -body { - --modal-width: min(90vw, var(--modal-max-width)); - --modal-height: min(85vh, var(--modal-max-height)); -} - -:is(.horizontal-tab-nav-item, .vertical-tab-nav-item).is-active { - background-color: var(--nav-item-background-active) !important; -} - -:is(.document-search-close-button, .modal-close-button) { - height: var(--input-height); - width: var(--input-height); - transition: var(--animation); -} -:is(.document-search-close-button, .modal-close-button)::before { - content: ""; - -webkit-mask: url('data:image/svg+xml;utf8,'); - position: absolute; - background-color: var(--text-normal); - width: calc(var(--input-height) * 2 / 3); - height: calc(var(--input-height) * 2 / 3); - top: 50%; - left: 50%; - transform: translate(-50%, -50%); -} -:is(.document-search-close-button, .modal-close-button):hover { - background-color: var(--frame-outline-color); -} - -body.titlebar-colorful .modal-container .mod-settings::before { - --setting-color-logo: var(--text-on-accent); -} - -input { - transition-duration: var(--setting-animation-time, 200ms) !important; -} - -body.modal-slider input[type=range]::-webkit-slider-thumb { - height: 1.6em; - width: var(--size-4-1); - background-color: var(--text-muted); - position: relative; - top: 50%; - transform: translateY(-50%); - border-radius: var(--radius-m); -} -body.modal-slider input[type=range]::-webkit-slider-thumb:hover { - box-shadow: none; -} - -body:is(.modal-toggle-round, .modal-toggle-thin) .checkbox-container { - --toggle-radius: var(--radius-m); - height: 1rem; - transition: var(--animation-slow); - border: var(--size-2-1) solid var(--text-faint); - background-color: var(--color-base-20); - cursor: pointer; -} -body:is(.modal-toggle-round, .modal-toggle-thin) .checkbox-container input[type=checkbox] { - display: none; -} - -body.modal-toggle-round .checkbox-container { - --toggle-shadow: var(--color-base-40); -} -body.modal-toggle-round .checkbox-container::after { - left: 0; - height: calc(var(--toggle-width) / 3); - width: calc(var(--toggle-width) / 3); - bottom: 30%; - border-radius: calc(var(--toggle-width) / 2); - border: var(--toggle-border-width) solid var(--text-faint); - background-color: var(--text-on-accent); - margin: 0; - transition: var(--animation-slow); - box-shadow: 0 4px 2px 0 var(--toggle-shadow); -} -:is(body.modal-toggle-round .checkbox-container:hover, body.modal-toggle-round .checkbox-container:focus)::after { - bottom: 10%; - box-shadow: 0 2px 2px 0 var(--toggle-shadow); -} -body.modal-toggle-round .checkbox-container.is-enabled { - border-color: var(--accent-active); - background-color: var(--accent-inactive); -} -body.modal-toggle-round .checkbox-container.is-enabled::after { - border-color: var(--accent-active); - transform: none; - left: calc(100% - var(--toggle-width) / 3 - 3 * var(--toggle-border-width)); -} - -/* 参考 https://uiverse.io/martinval9/white-lionfish-18 */ -body.modal-toggle-thin .checkbox-container::before { - height: var(--toggle-border-width); - left: calc(var(--toggle-border-width) * 2); - right: calc(var(--toggle-border-width) * 2); - opacity: 1; - top: 50%; - bottom: initial; - transform: translateY(-50%); - background-color: var(--text-faint); -} -body.modal-toggle-thin .checkbox-container::after { - left: var(--toggle-border-width); - height: 0.8rem; - bottom: 50%; - border-radius: var(--radius-m) var(--radius-m) 0 0; - border: var(--toggle-border-width) solid var(--text-faint); - border-bottom-width: calc(var(--toggle-border-width) / 2); - background-color: var(--text-on-accent); - width: 20%; - margin: 0; - transition: var(--animation-slow); -} -body.modal-toggle-thin .checkbox-container:hover::after { - height: 0.6rem; -} -body.modal-toggle-thin .checkbox-container:active::after { - width: calc(100% - var(--toggle-border-width) * 6); -} -body.modal-toggle-thin .checkbox-container.is-enabled { - border-color: var(--accent-active); - background-color: var(--accent-inactive); -} -body.modal-toggle-thin .checkbox-container.is-enabled::before { - background-color: var(--accent-active); -} -body.modal-toggle-thin .checkbox-container.is-enabled::after { - border-color: var(--accent-active); - transform: none; - left: calc(80% - var(--toggle-border-width) * 4); -} -body.modal-toggle-thin .checkbox-container.is-enabled:active::after { - left: calc(2 * var(--toggle-border-width)); -} - -body:is(:not(.css-settings-manager), .modal-header):not(.is-mobile) .modal-container { - --modal-header-height: var(--size-4-12); -} -body:is(:not(.css-settings-manager), .modal-header):not(.is-mobile) .modal-container .mod-settings { - container-type: inline-size; -} -body:is(:not(.css-settings-manager), .modal-header):not(.is-mobile) .modal-container .mod-settings::before { - content: var(--setting-header-title, "maple 0.7.26"); - position: absolute; - left: 50%; - top: var(--size-4-6); - transform: translate(-50%, -50%); - font-size: 1.4rem; - font-weight: bold; - color: var(--setting-color-logo, var(--text-accent)); - transition: var(--animation); -} -@container (max-width:750px) { - body:is(:not(.css-settings-manager), .modal-header):not(.is-mobile) .modal-container .mod-settings::before { - opacity: 0; - } -} -body:is(:not(.css-settings-manager), .modal-header):not(.is-mobile) .modal-container .mod-settings .modal-content { - background-color: var(--frame-background-color); -} -body:is(:not(.css-settings-manager), .modal-header):not(.is-mobile) .modal-container .mod-settings .modal-content .vertical-tab-header { - background-color: hsl(var(--background-secondary-hsl)); - border-top: 1px solid var(--divider-color); - margin-top: var(--modal-header-height); - padding-top: 0; -} -body:is(:not(.css-settings-manager), .modal-header):not(.is-mobile) .modal-container .mod-settings .modal-content .vertical-tab-content-container { - padding-top: var(--modal-header-height); -} -body:is(:not(.css-settings-manager), .modal-header):not(.is-mobile) .modal-container .mod-settings .modal-content .vertical-tab-content-container .vertical-tab-content { - background-color: hsl(var(--background-primary-hsl)); - border-top: 1px solid var(--divider-color); - padding-top: var(--size-4-6); - padding-right: var(--size-4-8); -} -body:is(:not(.css-settings-manager), .modal-header):not(.is-mobile) .modal-container .mod-settings .modal-content .vertical-tab-content-container .vertical-tab-content h2 { - font-size: var(--h2-size); - font-weight: var(--h2-weight); -} -body:is(:not(.css-settings-manager), .modal-header):not(.is-mobile) .modal-container .mod-settings .modal-content .settings-search-container { - padding: 0; -} -body:is(:not(.css-settings-manager), .modal-header):not(.is-mobile) .modal-container .mod-settings .modal-content .settings-search-container .settings-search-input { - position: absolute; - top: calc(var(--size-2-1) * -1); - left: var(--size-4-2); - transform: translateY(calc((var(--modal-header-height) - var(--input-height)) / 2 - var(--size-2-1))); - width: calc(clamp(180px, var(--modal-width) / 4, 250px) - var(--size-4-3) * 1); -} -body:is(:not(.css-settings-manager), .modal-header):not(.is-mobile) .modal-container .mod-settings .modal-content .setting-item:has(.search-input-container.mod-hotkey) .setting-item-info { - display: none; -} -body:is(:not(.css-settings-manager), .modal-header):not(.is-mobile) .modal-container .mod-settings .modal-content .setting-item:has(.search-input-container.mod-hotkey) .setting-item-control { - top: calc(var(--size-2-1) * -1); - transform: translateY(calc((var(--modal-header-height) - var(--input-height)) / 2 + var(--size-2-1))); - right: var(--size-4-16); - position: absolute; -} -body:is(:not(.css-settings-manager), .modal-header):not(.is-mobile) .modal-container .mod-settings .modal-content .setting-item:has(.search-input-container.mod-hotkey) + .setting-filter-container { - display: none; -} -body:is(:not(.css-settings-manager), .modal-header):not(.is-mobile) .modal-container .mod-settings .modal-content .plugin-list-plugins > .setting-item { - padding: 0; -} -body:is(:not(.css-settings-manager), .modal-header):not(.is-mobile) .modal-container .mod-settings .modal-content .plugin-list-plugins > .setting-item .setting-item-info { - display: none; -} -body:is(:not(.css-settings-manager), .modal-header):not(.is-mobile) .modal-container .mod-settings .modal-content .plugin-list-plugins > .setting-item .setting-item-control { - display: block; - position: absolute; - top: calc(var(--size-2-1) * -1); - transform: translateY(calc((var(--modal-header-height) - var(--input-height)) / 2 + var(--size-2-1))); - right: var(--size-4-16); -} -body:is(:not(.css-settings-manager), .modal-header):not(.is-mobile) .modal-container .mod-settings .modal-content .setting-item-name:has(.search-input-container) { - position: absolute; - top: calc(var(--size-2-1) * -1); - transform: translateY(calc((var(--modal-header-height) - var(--input-height)) / 2 + var(--size-2-1))); - right: var(--size-4-16); -} -body:is(:not(.css-settings-manager), .modal-header):not(.is-mobile) .modal-container .mod-settings .modal-content .vertical-tab-content > :nth-child(5):not(.style-settings-container):has(input[type=search]) { - position: absolute; - top: calc(var(--size-2-1) * -1); - transform: translateY(calc(var(--modal-header-height) / 2 - var(--input-height) + var(--size-4-1))); - right: var(--size-4-16); -} -body:is(:not(.css-settings-manager), .modal-header):not(.is-mobile) .modal-container .mod-settings .modal-content .vertical-tab-content > :nth-child(5):not(.style-settings-container):has(input[type=search]) .setting-item-info { - display: none; -} - -select, -.dropdown, -button { - transition: var(--animation); -} - -.theme-light { - --select-bg-img: url('data:image/svg+xml;utf8,'); -} - -.theme-dark { - /* current color seems to be invalid for SVG in background-image */ - --select-bg-img: url('data:image/svg+xml;utf8,'); -} - -:is(select, .dropdown) { - background-size: 1.2rem; - background-position: right 0.4rem top 56%, 0 0; - background-image: var(--select-bg-img) !important; -} - -.modal-container .is-loading { - position: initial; -} -.modal-container .modal-close-button { - top: 9px; - right: 9px !important; -} -.modal-container :is(.mod-community-plugin, .mod-community-theme) .modal-sidebar .setting-item:first-child { - max-width: var(--modal-community-sidebar-width); -} -.modal-container .mod-settings .modal-content .setting-hotkey { - box-shadow: var(--shadow-s); - border: 2px solid var(--accent-inactive); - border-radius: var(--size-2-3); - font-size: var(--font-ui-smaller); - padding: 0.05rem 0.5rem; - transition: var(--animation); -} -.modal-container .mod-settings .modal-content .setting-hotkey .setting-hotkey-icon { - margin-right: -0.25rem; -} -.modal-container .mod-settings .modal-content .setting-hotkey:hover { - border-color: var(--accent-active); -} -.modal-container .mod-settings .modal-content .setting-hotkey.mod-active { - color: var(--text-faint); - background-color: var(--frame-background-color); -} -.modal-container .mod-settings .modal-content .setting-hotkey:not(.has-conflict):not(.mod-active) { - background-color: var(--code-background); -} -.modal-container .mod-settings .modal-content .setting-item-heading .setting-item-name { - font-weight: bold; - font-size: var(--font-ui-medium); -} - -body.setting-group-title.theme-dark .modal-container .mod-settings .modal-content .vertical-tab-header-group-title { - filter: brightness(1.4); -} - -body.setting-group-title .modal-container .mod-settings .modal-content .vertical-tab-header-group { - padding-bottom: 0; -} -body.setting-group-title .modal-container .mod-settings .modal-content .vertical-tab-header-group-title { - color: var(--accent-active); - font-size: var(--font-text-size); - position: relative; -} -body.setting-group-title .modal-container .mod-settings .modal-content .vertical-tab-header-group-title::before { - content: ""; - position: absolute; - height: calc(100% - var(--size-4-4)); - width: var(--size-4-1); - top: var(--size-4-2); - left: calc(var(--size-4-1) * -1); - background-color: var(--accent-active); - border-radius: var(--size-2-1); -} - -:is(.menu, .prompt, :not(.excalidraw) .popover, .modal, .modal-bg, .document-search-container, .suggestion-container) { - animation: op var(--animation); -} - -body.modal-animation :is(.prompt, .popover, .modal) { - animation: op var(--animation), bounce var(--animation); -} - -@keyframes op { - 0% { - opacity: 0; - } - 30% { - opacity: 0.7; - } - 70% { - opacity: 0.95; - } - 100% { - opacity: 1; - } -} -@keyframes bounce { - 0% { - transform: scale(0.99); - } - 70% { - transform: scale(1.01); - } - 100% { - transform: scale(1); - } -} -:is(.menu-normal .menu, .menu-suggestion .suggestion-container, .menu-graph .graph-control-section) { - background-color: hsla(var(--background-secondary-hsl), 0.5) !important; - backdrop-filter: blur(var(--size-4-8)); - will-change: backdrop-filter; -} - -body.modal-blur .modal-bg { - opacity: 1 !important; - background-color: hsla(var(--background-secondary-hsl), 0.5) !important; - backdrop-filter: blur(var(--size-4-1)); - will-change: backdrop-filter; -} - -.mod-search-suggestion .suggestion { - background-color: transparent; -} - -/* #endregion modal */ -/* #region scrollbar */ -@property --scrollbar-color { - syntax: ""; - inherits: true; - initial-value: rgba(0, 0, 0, 0); -} -/* ! `overflow: overlay` is deprecated, Chrome >= 114 (Obsidian 1.4) is equal to `overflow: auto` */ -/* !Chrome >= 121 no longer support `-webkit-scrollbar-*`, no effect currently */ -/* usage of `@property`: https://stackoverflow.com/a/74050413/20058211 */ -/* usage of `-webkit-text-fill-color`: https://stackoverflow.com/a/46304690/20058211 */ -body:not(.is-mobile) .mod-settings :is(.vertical-tab-content, .vertical-tab-header) { - scrollbar-gutter: stable; -} -body:not(.is-mobile).scrollbar-hover-accent { - --setting-scrollbar-hover: hsla(var(--color-accent-hsl), 40%); -} -body:not(.is-mobile).scrollbar-hover-expand ::-webkit-scrollbar-thumb:hover, body:not(.is-mobile).scrollbar-hover-expand ::-webkit-scrollbar-thumb:active { - border-width: var(--size-2-1) !important; -} -body:not(.is-mobile) ::-webkit-scrollbar { - width: var(--size-4-3) !important; - height: var(--size-4-3) !important; - background-color: transparent !important; -} -body:not(.is-mobile) ::-webkit-scrollbar-track { - background-color: transparent !important; - box-shadow: none !important; -} -body:not(.is-mobile) ::-webkit-scrollbar-thumb { - border-radius: var(--size-2-3) !important; - border: 3.6px solid transparent !important; - background-color: var(--scrollbar-color) !important; -} -body:not(.is-mobile) ::-webkit-scrollbar-thumb:hover { - --scrollbar-color: var(--setting-scrollbar-hover); -} -body:not(.is-mobile) ::-webkit-scrollbar-thumb:active { - --scrollbar-color: hsla(var(--color-accent-hsl), 64%); -} -body:not(.is-mobile):not(.scrollbar-movein-animation-enable) { - --scrollbar-color: hsla(var(--color-accent-hsl), 24%); -} -body:not(.is-mobile).scrollbar-movein-animation-enable :is(.vertical-tab-header, .vertical-tab-content, .nav-files-container, .workspace-leaf-content:not([data-type*=graph], [data-type*=pdf]) .view-content, .search-result-container, .git-view-body, .suggestion-container .suggestion, .prompt-results, .community-modal-search-results-wrapper, .community-modal-info, .modal:not(.mod-settings, .mod-community-theme, .mod-community-plugin), .tag-container, .backlink-pane, .markdown-source-view .cm-scroller, .markdown-preview-view, .workspace .mod-root .workspace-tabs.mod-stacked .workspace-tab-container, .markdown-embed-content .markdown-rendered, pre code, .workspace-leaf-content[data-type=calendar] .view-content, .janitor-scan-results, .excalidraw-wrapper :is(.App-menu .Stack .Island.App-menu__left, .scrollbar), .excalidraw-contextMenuContainer .popover, .kanban-plugin__board, .kanban-plugin__lane-items, .kanban-plugin__autocomplete) { - transition: --scrollbar-color var(--animation); -} -body:not(.is-mobile).scrollbar-movein-animation-enable :is(.vertical-tab-header, .vertical-tab-content, .nav-files-container, .workspace-leaf-content:not([data-type*=graph], [data-type*=pdf]) .view-content, .search-result-container, .git-view-body, .suggestion-container .suggestion, .prompt-results, .community-modal-search-results-wrapper, .community-modal-info, .modal:not(.mod-settings, .mod-community-theme, .mod-community-plugin), .tag-container, .backlink-pane, .markdown-source-view .cm-scroller, .markdown-preview-view, .workspace .mod-root .workspace-tabs.mod-stacked .workspace-tab-container, .markdown-embed-content .markdown-rendered, pre code, .workspace-leaf-content[data-type=calendar] .view-content, .janitor-scan-results, .excalidraw-wrapper :is(.App-menu .Stack .Island.App-menu__left, .scrollbar), .excalidraw-contextMenuContainer .popover, .kanban-plugin__board, .kanban-plugin__lane-items, .kanban-plugin__autocomplete):hover { - --scrollbar-color: hsla(var(--color-accent-hsl), 24%); -} -body:not(.is-mobile).scrollbar-movein-animation-enable textarea { - color: transparent; - transition: color var(--animation); - -webkit-text-fill-color: var(--text-normal); -} -body:not(.is-mobile).scrollbar-movein-animation-enable textarea:hover { - color: hsla(var(--color-accent-hsl), 24%); -} -body:not(.is-mobile).scrollbar-movein-animation-enable textarea * { - -webkit-text-fill-color: initial; -} -body:not(.is-mobile).scrollbar-movein-animation-enable textarea::-webkit-scrollbar-thumb { - box-shadow: 0 0 0 10px inset; - border-width: 3.2px; - background-clip: content-box; - background-color: transparent !important; -} - -body.scrollbar-hide :not([style="overflow-x: auto;"])::-webkit-scrollbar { - display: none !important; -} - -/* #endregion scrollbar */ -/* #region tab */ -body.tab-float { - --tab-radius: var(--size-2-3); -} -body.tab-float .workspace-tab-header-container { - --tab-outline-width: 0 !important; -} -body.tab-float .mod-root .workspace-tab-header-container-inner { - margin-top: var(--size-4-1); - padding-bottom: var(--size-4-1); - padding-left: var(--size-4-1); -} -body.tab-float .mod-root .workspace-tab-header { - padding-block: 0 !important; - transition: color var(--animation), width var(--animation); -} -body.tab-float .mod-root .workspace-tab-header.is-active { - --tab-radius-active: var(--size-2-3); - box-shadow: var(--shadow-s); - border: 1px solid var(--color-base-30); -} -body.tab-float .mod-root .workspace-tab-header .workspace-tab-header-inner-close-button { - padding: var(--size-2-1); -} -body.tab-float .mod-root .workspace-tab-header .workspace-tab-header-inner-close-button:hover { - background-color: var(--frame-background-color); -} -body.tab-float .mod-root .workspace-tabs:not(.mod-stacked):not(.mod-active) .workspace-tab-header.is-active { - --tab-background-active: hsla(var(--background-primary-hsl), 0.5); -} -body.tab-float.theme-dark .mod-root .workspace-tab-header.is-active { - box-shadow: none; -} -body.tab-float .workspace-split.mod-root .workspace-tab-header.is-active::before, body.tab-float .workspace-split.mod-root .workspace-tab-header.is-active::after { - box-shadow: none; -} -body.tab-float .workspace-tab-header-new-tab { - padding-top: var(--size-4-1); - margin-left: calc(var(--size-4-3) * -1); -} - -.view-header-title-parent:empty + .view-header-title { - max-width: 70%; - text-align: center; - cursor: text; -} -.view-header-title-parent:not(:empty) + .view-header-title:after { - content: ""; - width: 20%; - inset-block: 0; - position: absolute; - cursor: text; -} - -body.tab-show-close-all .mod-root .workspace-tab-header .workspace-tab-header-inner-close-button, -body.tab-show-close-part .mod-root .workspace-tab-header:not(.is-active) .workspace-tab-header-inner-close-button { - display: none; -} -body.tab-show-close-all .mod-root .workspace-tab-header:hover .workspace-tab-header-inner-close-button, -body.tab-show-close-part .mod-root .workspace-tab-header:not(.is-active):hover .workspace-tab-header-inner-close-button { - display: inherit; -} - -body.tab-title-bar-text-small .view-header { - --file-header-font-size: calc(var(--font-ui-smaller) - var(--size-2-1)); -} - -body.tab-title-bar-text-hidden .workspace-leaf-content:not([data-type=excalidraw]) .view-header-title-container { - opacity: 0; - transition: var(--animation); - transition-delay: var(--animation-delay); -} -body.tab-title-bar-text-hidden .workspace-leaf-content:not([data-type=excalidraw]) .view-header-title-container:hover { - opacity: 1; - transition-delay: 0s; -} - -body.tab-title-bar-round .workspace-leaf-content:not([data-type=excalidraw]) .view-header { - margin: var(--size-4-1); - margin-bottom: 0; - padding: 0 var(--size-2-3) !important; - border: var(--size-2-1) solid var(--background-modifier-hover); - border-radius: var(--radius-m); - transition: var(--animation); - width: calc(100% - var(--size-4-2)) !important; - background-color: hsl(var(--background-secondary-hsl)); -} -body.tab-title-bar-round .workspace-leaf-content:not([data-type=excalidraw]) .view-header .view-header-title-container:after { - content: none; -} -body.tab-title-bar-round .workspace-leaf.mod-active .workspace-leaf-content:not([data-type=excalidraw]) .view-header { - background-color: var(--md-container-bg); -} -body.tab-title-bar-round.tab-title-bar-shadow .workspace-leaf.mod-active .workspace-leaf-content:not([data-type=excalidraw]) .view-header { - box-shadow: 0 0 var(--size-2-1) var(--background-modifier-box-shadow); -} - -/* 切换标签动画,参考 https://github.com/hydescarf/Obsidian-Theme-Mado-Miniflow */ -body .workspace-split .workspace-tabs:not(.mod-stacked) .workspace-leaf-content:not([data-type=pdf]) .view-content, -.workspace-leaf-content:not(:has(.view-content)) { - animation: slide-up var(--animation) forwards; -} - -@keyframes slide-up { - 0% { - transform: translateY(0%); - opacity: 0; - } - 15% { - transform: translateY(0.1rem); - opacity: 0; - } - 25% { - transform: translateY(0.15rem); - } - 45% { - opacity: 0.5; - } - 65% { - opacity: 0.7; - } - 100% { - transform: translateY(0%); - opacity: 1; - } -} -.is-sidedock-collapsed { - opacity: 0; - transition: var(--animation); -} - -.search-result-file-matches { - border-radius: var(--radius-m); -} - -/* #endregion tab */ -/* #region titlebar */ -body.titlebar-button-style.is-hidden-frameless:is(.mod-windows, .mod-linux) .titlebar-button { - padding: 0 14px; -} -body.titlebar-button-style.is-hidden-frameless:is(.mod-windows, .mod-linux) .titlebar-button svg { - width: 100%; - height: 32%; -} -body.titlebar-button-style.is-frameless:not(.is-hidden-frameless):is(.mod-windows, .mod-linux) .titlebar-button svg:not([class*=logo]) { - width: 100%; - height: 42%; -} -body.titlebar-button-style .titlebar-button.mod-close:hover { - color: var(--text-on-accent); -} -body.titlebar-button-style .workspace-tab-header-new-tab { - padding-bottom: var(--size-2-1); -} - -.theme-light { - --ribbon-background: hsla(calc(var(--accent-h) + 16), - calc(var(--accent-s) / 1.2), - calc(100% - (100% - var(--accent-l)) / 4), - 60%); -} - -.theme-dark { - --ribbon-background: hsla(calc(var(--accent-h) + 16), - calc(var(--accent-s) / 1.5), - calc(var(--accent-l) - 40%), - 60%); -} - -.workspace-ribbon.mod-left { - border-right: 0; - --ribbon-background-collapsed: var(--ribbon-background); -} -.workspace-ribbon.mod-left::before { - height: var(--header-height); - border-bottom: 0; -} - -/* 参考 minimal theme */ -:is(body, body.is-focused) :is(.mod-top .workspace-tab-header-container, .sidebar-toggle-button.mod-left, .titlebar), -:is(body, body.is-focused) .workspace-ribbon.mod-left::before { - --titlebar-container: var(--frame-outline-color); - --frame-divider-color: var(--frame-outline-color); - --titlebar-background: var(--frame-background-color); - --titlebar-background-focused: var(--frame-background-color); - --tab-container-background: var(--frame-background-color); - --titlebar-text-color: var(--frame-muted-color); - --tab-outline-color: var(--frame-outline-color); - --tab-divider-color: var(--frame-outline-color); - --background-modifier-hover: var(--frame-outline-color); - --icon-color: var(--frame-muted-color); - --icon-color-hover: var(--frame-muted-color); - --icon-color-focused: var(--color-base-100); - --tab-text-color: var(--frame-muted-color); - --tab-text-color-hover: var(--frame-muted-color); - --tab-text-color-focused: var(--frame-muted-color); -} -:is(body, body.is-focused) .clickable-icon:active { - color: var(--text-normal); -} - -.workspace.is-left-sidedock-open .sidebar-toggle-button.mod-left .clickable-icon, -.workspace.is-right-sidedock-open .sidebar-toggle-button.mod-right .clickable-icon { - color: var(--color-accent); -} - -body.titlebar-colorful.theme-light { - --frame-background-color: hsl(var(--accent-h), - var(--accent-s), - calc(var(--accent-l) + 18%)); - --frame-outline-color: hsl(var(--accent-h), - var(--accent-s), - calc(var(--accent-l) + 23.5%)); - --frame-muted-color: hsl(var(--accent-h), - calc(var(--accent-s) - 20%), - ar(--accent-l)); -} -body.titlebar-colorful.theme-dark { - --frame-background-color: hsl(var(--accent-h), 12%, 38%); - --frame-outline-color: hsl(calc(var(--accent-h) - 6), - calc(var(--accent-s) + 12%), - 40%); - --frame-muted-color: hsl(var(--accent-h), - calc(var(--accent-s) - 20%), - calc(var(--accent-l) + 20%)); -} -body.titlebar-colorful .workspace.is-left-sidedock-open .sidebar-toggle-button.mod-left .clickable-icon, -body.titlebar-colorful .workspace.is-right-sidedock-open .sidebar-toggle-button.mod-right .clickable-icon { - color: var(--text-on-accent); -} -body.titlebar-colorful :is(.document-search-close-button, .modal-close-button)::before { - background-color: var(--text-normal); -} - -/* #endregion titlebar */ -/* #region print */ -.print code { - white-space: pre-wrap !important; -} -.print :is(.markdown-preview-view, .markdown-rendered) { - background-color: var(--background-primary) !important; -} -.print pre::before { - right: var(--size-4-2) !important; -} -.print pre code { - tab-size: 4; -} -.print .markdown-preview-view table { - resize: initial; -} - -/* #endregion print */ -/* #region statusbar */ -body { - --stauts-bar-background-opacity: 1; -} -body.theme-light .status-bar { - --status-bar-background: hsla(var(--accent-h), - var(--accent-s), - calc(100% - (100% - var(--accent-l)) / 8), - var(--stauts-bar-background-opacity)); -} -body.theme-dark .status-bar { - --status-bar-background: hsla(var(--accent-h), - var(--accent-s), - calc(var(--accent-l) / 3), - var(--stauts-bar-background-opacity)); -} - -body.status-bar-enable .status-bar { - padding: var(--size-2-1) var(--size-4-1); - width: fit-content; - transition: var(--animation); -} -body.status-bar-enable.status-bar-hidden .status-bar { - opacity: 0; - transition-delay: var(--animation-delay); -} -body.status-bar-enable.status-bar-hidden .status-bar:hover { - transition-delay: 0s; - opacity: 1; -} -body.status-bar-enable.status-bar-style-float .status-bar { - --status-bar-radius: var(--size-2-3); - --status-bar-border-width: 1px; - bottom: var(--size-4-1); - right: var(--size-4-1); - box-shadow: 0 0 var(--size-2-1) var(--background-modifier-box-shadow); -} -body.status-bar-enable.status-bar-style-float.status-bar-style-center:is(.status-bar-default, .status-bar-hidden) .status-bar { - left: 50%; - transform: translateX(-50%); -} -body.status-bar-enable.status-bar-style-float.status-bar-scroll .status-bar { - transform: translateX(calc(100% - var(--size-4-2))); - transition-delay: var(--animation-delay); - right: 0; - padding: var(--size-4-1); -} -body.status-bar-enable.status-bar-style-float.status-bar-scroll .status-bar:hover { - transform: translateX(0); - transition-delay: 0s; -} - -/* #endregion statusbar */ -/* #region icons */ -.modal svg[class*=lucide-folder] { - --icon-size: 20px; -} - -svg.lucide-layout-dashboard rect { - rx: 1.8; - stroke-width: 2; -} - -svg.excalidraw-icon { - -webkit-mask-image: url('data:image/svg+xml;utf8,'); -} - -svg.spreadsheet { - -webkit-mask-image: url('data:image/svg+xml;utf8,'); -} - -svg[class*=lucide-folder] { - -webkit-mask-image: url('data:image/svg+xml;utf8,'); -} - -svg.lucide-sticky-note { - -webkit-mask-image: url('data:image/svg+xml;utf8,'); -} - -svg.lucide-image { - -webkit-mask-image: url('data:image/svg+xml;utf8,'); -} - -svg.lucide-file { - -webkit-mask-image: url('data:image/svg+xml;utf8,'); -} - -svg.lucide-copy { - -webkit-mask-image: url('data:image/svg+xml;utf8,'); -} - -svg.database-folder-icon { - -webkit-mask-image: url('data:image/svg+xml;utf8,'); -} - -body.titlebar-button-style .mod-maximize svg { - -webkit-mask-image: url('data:image/svg+xml;utf8,'); -} - -body.titlebar-button-style.is-maximized .mod-maximize svg { - -webkit-mask-image: url('data:image/svg+xml;utf8,'); -} - -body:is(:not(.css-settings-manager), .explorer-icon) .workspace-leaf-content:is([data-type=file-explorer]) .nav-folder-collapse-indicator svg { - -webkit-mask-image: url('data:image/svg+xml;utf8,'); -} - -:is(:is(body.titlebar-button-style .mod-maximize, body.titlebar-button-style.is-maximized .mod-maximize, body:is(:not(.css-settings-manager), .explorer-icon) .workspace-leaf-content:is([data-type=file-explorer]) .nav-folder-collapse-indicator) svg, svg:is(.excalidraw-icon, .spreadsheet, [class*=lucide-folder], .lucide-sticky-note, .lucide-image, .lucide-file, .lucide-copy, .database-folder-icon)) { - background-color: currentColor; - -webkit-mask-size: 100% 100%; -} -:is(:is(body.titlebar-button-style .mod-maximize, body.titlebar-button-style.is-maximized .mod-maximize, body:is(:not(.css-settings-manager), .explorer-icon) .workspace-leaf-content:is([data-type=file-explorer]) .nav-folder-collapse-indicator) svg, svg:is(.excalidraw-icon, .spreadsheet, [class*=lucide-folder], .lucide-sticky-note, .lucide-image, .lucide-file, .lucide-copy, .database-folder-icon)) path { - display: none; -} - -.markdown-rendered pre .copy-code-button { - -webkit-mask-image: url('data:image/svg+xml;utf8,'); -} - -:where(body:is(:not(.css-settings-manager), .explorer-icon) .nav-file-title, body.link-icon :is(:is(.markdown-source-view, .markdown-preview-view) a.internal-link:not(.is-unresolved), .cm-hmd-internal-link .cm-underline))::before { - -webkit-mask-image: url('data:image/svg+xml;utf8,'); -} - -body.link-icon:not(.link-click-to-edit-in-live-preview) :is(:is(.markdown-source-view, .markdown-preview-view) a.external-link, :is(.cm-link:not(.cm-hmd-footnote), .cm-url) .cm-underline)::before { - -webkit-mask-image: url('data:image/svg+xml;utf8,'); -} - -.workspace-leaf-content[data-type=tag] .tree-item-self::before { - -webkit-mask-image: url('data:image/svg+xml;utf8,'); -} - -body:is(:not(.css-settings-manager), .explorer-icon) .nav-file-title:is(.is-unsupported)::before { - -webkit-mask-image: url('data:image/svg+xml;utf8,'); -} - -body:is(:not(.css-settings-manager), .explorer-icon) .nav-file-title:is([data-path$=png], [data-path$=svg], [data-path$=jpeg], [data-path$=jpg], [data-path$=bmp], [data-path$=gif], [data-path$=webp], [data-path$=tiff])::before { - -webkit-mask-image: url('data:image/svg+xml;utf8,'); -} - -body:is(:not(.css-settings-manager), .explorer-icon) .nav-file-title:is([data-path$=pdf])::before { - -webkit-mask-image: url('data:image/svg+xml;utf8,'); -} - -body:is(:not(.css-settings-manager), .explorer-icon) .nav-file-title:is([data-path$=mp3], [data-path$=flac], [data-path$=wav], [data-path$=ape], [data-path$=alac], [data-path$=aac])::before { - -webkit-mask-image: url('data:image/svg+xml;utf8,'); -} - -body:is(:not(.css-settings-manager), .explorer-icon) .nav-file-title:is([data-path$=mkv], [data-path$=mp4], [data-path$=flv], [data-path$=webm], [data-path$=avi])::before { - -webkit-mask-image: url('data:image/svg+xml;utf8,'); -} - -body:is(:not(.css-settings-manager), .explorer-icon) .nav-file-title:is([data-path$=ttf], [data-path$=otf], [data-path$=ttc], [data-path$=otc])::before { - -webkit-mask-image: url('data:image/svg+xml;utf8,'); -} - -body:is(:not(.css-settings-manager), .explorer-icon) .nav-file-title:is([data-path$=zip], [data-path$="7z"], [data-path$=tar])::before { - -webkit-mask-image: url('data:image/svg+xml;utf8,'); -} - -body:is(:not(.css-settings-manager), .explorer-icon) .nav-file-title:is([data-path$=js], [data-path$=css], [data-path$=html], [data-path$=py], [data-path$=c], [data-path$=cpp], [data-path$=java], [data-path$=rs], [data-path$=ts], [data-path$=tsx], [data-path$=jsx], [data-path$=json], [data-path$=bash], [data-path$=sh])::before { - -webkit-mask-image: url('data:image/svg+xml;utf8,'); -} - -body:is(:not(.css-settings-manager), .explorer-icon) .nav-file-title:is([data-path$=canvas])::before { - -webkit-mask-image: url('data:image/svg+xml;utf8,'); -} - -/* #endregion icons */ -/* #region notice, tooltips */ -body.message-tooltip-hide .tooltip { - display: none; -} - -body.message-tooltip-hide-arrow .tooltip-arrow { - display: none; -} - -body.message-modify { - --background-modifier-message: hsl(var(--setting-message-bg, - calc(var(--accent-h) - 30) var(--accent-s) calc(var(--accent-l) - 20%))); -} -body.message-modify :is(.tooltip, .notice) { - color: var(--setting-message-fg, var(--text-on-accent)); -} -body.message-modify:not(.color-active-default).theme-light { - --background-modifier-message: hsl(var(--setting-message-bg, - calc(var(--accent-h) + 60) calc(var(--accent-s) - 12%) calc(var(--accent-l) + 4%))); -} -body.message-modify:not(.color-active-default).theme-dark { - --background-modifier-message: hsl(var(--setting-message-bg, - calc(var(--accent-h) + 60) calc(var(--accent-s) - 12%) calc(var(--accent-l) - 12%))); -} - -body.message-tooltip-hide-arrow .tooltip-arrow { - display: none; -} - -/* #endregion message */ -/* #region background image */ -@media screen and (min-width: 768px) { - body:is(.bg-static, .bg-live) { - --bg-opacity: 0.75; - } - body:is(.bg-static, .bg-live) .workspace-split.mod-root, - body:is(.bg-static, .bg-live) .workspace-split.mod-root .workspace-leaf-content { - background-color: hsla(var(--editor-bg), calc(var(--bg-opacity) / 2)); - } - body:is(.bg-static, .bg-live) :not(.mod-root) .workspace-leaf { - background-color: hsla(var(--background-secondary-hsl), var(--bg-opacity)); - } - body:is(.bg-static, .bg-live) .workspace::before { - content: ""; - position: absolute; - width: 100%; - height: 100%; - -webkit-mask-repeat: no-repeat; - background-color: var(--setting-bg-color, var(--text-accent)); - opacity: 0.5; - } - /* 参考 https://github.com/hydescarf/Obsidian-Theme-Mado-Miniflow */ - body { - --setting-bg-static: url('data:image/svg+xml;utf8,'); - --setting-bg-live: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 24 150 28' preserveAspectRatio='none' shape-rendering='auto' style='position:relative;width:100%25;height:15vh;min-height:100px;max-height:150px'%3E%3Cstyle%3E.parallax>use%7Banimation:move-forever 25s cubic-bezier(.55, .5, .45, .5) infinite%7D.parallax>use:nth-child(1)%7Banimation-delay:-33.6s;animation-duration:75.6s%7D.parallax>use:nth-child(2)%7Banimation-delay:2.4s;animation-duration:68.4s%7D.parallax>use:nth-child(3)%7Banimation-delay:-6s;animation-duration:24s%7D.parallax>use:nth-child(4)%7Banimation-delay:19.2s;animation-duration:73.2s%7D@keyframes move-forever%7B0%25%7Btransform:translate3d(-90px, 0, 0)%7D100%25%7Btransform:translate3d(85px, 0, 0)%7D%7D@media (max-width:768px)%7B.waves%7Bheight:40px;min-height:40px%7D%7D%3C/style%3E%3Cdefs%3E%3Cpath id='gentle-wave' d='M-160 44c30 0 58-18 88-18s58 18 88 18 58-18 88-18 58 18 88 18v44h-352z'/%3E%3C/defs%3E%3Cg class='parallax'%3E%3Cuse xlink:href='%23gentle-wave' x='48' opacity='0.3'/%3E%3Cuse xlink:href='%23gentle-wave' x='48' y='3' opacity='0.4'/%3E%3Cuse xlink:href='%23gentle-wave' x='48' y='8' opacity='0.6'/%3E%3Cuse xlink:href='%23gentle-wave' x='48' y='14' opacity='0.5'/%3E%3C/g%3E%3C/svg%3E"); - } - body.bg-static .workspace::before { - -webkit-mask-image: var(--setting-bg-static); - -webkit-mask-size: 300% 300px; - -webkit-mask-position: 88.5% -73px; - transform: rotateZ(180deg); - } - /* 参考 https://www.cssscript.com/animated-waves-svg */ - body.bg-live .workspace::before { - -webkit-mask-image: var(--setting-bg-live); - -webkit-mask-size: 100% 160px; - -webkit-mask-position-y: 100%; - } -} -/* #endregion background */ -/* #region labeled-navigator */ -/* MIT License | Copyright (c) Stephan Ango (@kepano) - -Labeled Nav snippet for Obsidian - -author: @kepano -version: 2.0.0 - -Support my work: -https://github.com/sponsors/kepano - -*/ -.labeled-nav.mod-windows, -.labeled-nav.is-fullscreen:not(.colorful-frame) { - --labeled-nav-top-margin: 0; -} - -.labeled-nav { - --labeled-nav-top-margin: var(--header-height); - /* refactor this using a new variable for border above labeled nav - in different conditions e.g. OSes and colorful frame */ -} -.labeled-nav.is-translucent .mod-left-split .mod-top .workspace-tab-header-container .workspace-tab-header-container-inner { - background-color: transparent; -} -.labeled-nav.is-hidden-frameless:not(.is-fullscreen) .mod-left-split .workspace-tabs.mod-top-left-space .workspace-tab-header-container { - padding-left: 0; -} -.labeled-nav.mod-macos .mod-left-split .mod-top .workspace-tab-header-container:before, .labeled-nav.mod-macos.is-hidden-frameless:not(.is-fullscreen) .mod-left-split .mod-top .workspace-tab-header-container:before { - -webkit-app-region: drag; - position: absolute; - width: calc(100% - var(--divider-width)); - height: calc(var(--header-height) - var(--tab-outline-width)); - border-bottom: 0 solid var(--tab-outline-color); -} -.labeled-nav.mod-macos.is-hidden-frameless:not(.is-fullscreen) .workspace-ribbon.mod-left:not(.is-collapsed) { - border: none; - --tab-outline-width: 0px; -} -.labeled-nav:not(.is-hidden-frameless) .mod-left-split .mod-top .workspace-tab-header-container:before, .labeled-nav.mod-macos:not(.hider-ribbon) .mod-left-split .mod-top .workspace-tab-header-container:before, .labeled-nav.colorful-frame.is-hidden-frameless:not(.is-fullscreen) .mod-left-split .mod-top .workspace-tab-header-container:before { - border-bottom: var(--tab-outline-width) solid var(--tab-outline-color); -} -.labeled-nav:not(.is-hidden-frameless) .workspace-ribbon.mod-left:not(.is-collapsed), .labeled-nav.mod-macos:not(.hider-ribbon) .workspace-ribbon.mod-left:not(.is-collapsed), .labeled-nav.colorful-frame.is-hidden-frameless:not(.is-fullscreen) .workspace-ribbon.mod-left:not(.is-collapsed) { - --tab-outline-width: 1px; -} -.labeled-nav:not(.is-hidden-frameless) .mod-left-split .mod-top .workspace-tab-header-container:before { - position: absolute; - top: 0; - content: " "; -} -.labeled-nav.hider-ribbon.mod-macos.is-hidden-frameless:not(.is-fullscreen):not(.is-popout-window) .mod-left-split:not(.is-sidedock-collapsed) .workspace-tabs.mod-top-left-space .workspace-tab-header-container { - padding-left: 0; -} -.labeled-nav:not(.is-grabbing):not(.is-fullscreen).is-hidden-frameless .mod-top .workspace-tab-header-container { - -webkit-app-region: no-drag; -} -.labeled-nav .mod-left-split .mod-top .workspace-tab-header-spacer { - display: none; -} -.labeled-nav .mod-left-split .mod-top .workspace-tab-header-inner-title { - display: inline-block; - font-weight: 500; - font-size: var(--font-adaptive-smaller); -} -.labeled-nav .mod-left-split .mod-top .workspace-tab-header-container { - position: relative; - flex-direction: column-reverse !important; - height: auto; - width: 100%; -} -.labeled-nav .mod-left-split .mod-top .workspace-tab-header-container .sidebar-toggle-button.mod-left { - position: absolute; - justify-content: flex-end; - padding-right: var(--size-4-2); - top: 0; - right: 0; -} -.labeled-nav .mod-left-split .mod-top .workspace-tab-header-container .workspace-tab-header-container-inner { - padding-top: var(--size-4-2); - margin-top: var(--labeled-nav-top-margin); - flex-direction: column !important; - background-color: var(--background-secondary); -} -.labeled-nav .mod-left-split .mod-top .workspace-tab-header-container .workspace-tab-container-inner { - flex-grow: 1; - gap: 0; - padding: var(--size-4-2) var(--size-4-3); -} -.labeled-nav .mod-left-split .mod-top .workspace-tab-header { - --icon-color: var(--text-muted); - --tab-text-color: var(--text-muted); - --tab-text-color-focused: var(--text-muted); - padding: 0; - margin-bottom: 2px; - border: none; - height: auto; -} -.labeled-nav .mod-left-split .mod-top .workspace-tab-header.is-active:not(:hover) { - background-color: transparent; -} -.labeled-nav .mod-left-split .mod-top .workspace-tab-header.is-active, .labeled-nav .mod-left-split .mod-top .workspace-tab-header:hover { - opacity: 1; - --tab-text-color-active: var(--text-normal); - --tab-text-color-focused: var(--text-normal); - --tab-text-color-focused-active: var(--text-normal); - --tab-text-color-focused-active-current: var(--text-normal); - --icon-color: var(--text-normal); -} -.labeled-nav .mod-left-split .mod-top .workspace-tab-header .workspace-tab-header-inner { - gap: var(--size-2-3); - padding: var(--size-4-1) var(--size-4-2); - box-shadow: none; - border: none; -} -.labeled-nav .mod-left-split .mod-top .workspace-tab-header.has-active-menu:hover, -.labeled-nav .mod-left-split .mod-top .workspace-tab-header.is-active:hover { - background-color: transparent; -} -.labeled-nav .mod-left-split .mod-top .workspace-tab-header.is-active:hover .workspace-tab-header-inner, -.labeled-nav .mod-left-split .mod-top .workspace-tab-header:not(.is-active):hover .workspace-tab-header-inner { - background-color: var(--nav-item-background-hover); -} -.labeled-nav .mod-left-split .mod-top .workspace-tab-header:hover .workspace-tab-header-inner-icon, -.labeled-nav .mod-left-split .mod-top .workspace-tab-header.is-active .workspace-tab-header-inner-icon { - color: var(--icon-color-active); -} -.labeled-nav .mod-left-split .mod-top .workspace-tab-header-container { - border: none; - padding: 0; -} - -.labeled-nav .workspace-tab-header-container-inner { - --background-secondary: hsl(var(--background-secondary-hsl)) ; -} -.labeled-nav .nav-buttons-container { - justify-self: flex-start; -} - -/* #endregion labeled-navigator */ -/* #region [[panel]] */ -/* #region panel-base*/ -.nav-buttons-container { - justify-content: flex-start; - padding-left: var(--size-4-1); -} - -body { - --nav-item-children-padding-left: var(--size-4-2); -} - -/* #endregion panel-base */ -/* #region tag */ -.workspace-leaf-content[data-type=tag] .tree-item-self::before { - background-color: var(--accent-active); - line-height: var(--line-height-tight); - width: 1rem; - height: 1rem; - margin-left: calc(-1 * var(--size-4-5)); - margin-right: var(--size-4-3); - transform: translateY(var(--size-4-1)); -} -.workspace-leaf-content[data-type=tag] .tree-item-self:has(.tree-item-icon)::before { - background-color: var(--folder-color); -} -.workspace-leaf-content[data-type=tag] .tree-item-icon.collapse-icon { - cursor: pointer; -} -.workspace-leaf-content[data-type=tag] .tree-item-icon.collapse-icon svg { - color: transparent; -} - -/* #endregion tag */ -/* #region bookmark */ -.workspace-leaf-content[data-type=bookmarks] { - --nav-item-color-active: var(--text-on-accent); -} -.workspace-leaf-content[data-type=bookmarks] .tree-item-self.mod-collapsible .tree-item-icon { - margin-right: var(--size-4-1); -} -.workspace-leaf-content[data-type=bookmarks] .tree-item-self:not(.mod-collapsible) { - padding-left: var(--size-2-3); -} -.workspace-leaf-content[data-type=bookmarks] .tree-item-self:not(.mod-collapsible) .tree-item-icon { - transform: translateY(var(--size-2-1)); - color: var(--accent-active); - width: 1.3rem; -} -.workspace-leaf-content[data-type=bookmarks] .tree-item-self.is-active .tree-item-icon { - color: var(--nav-item-color-active); -} - -/* #endregion bookmark */ -/* #region graph */ -body { - --graph-node: var(--setting-graph-node, var(--text-muted)); - --graph-node-unresolved: var(--setting-graph-node-unresolved, var(--text-faint)); - --graph-node-focused: var(--setting-graph-node-focus, var(--accent-active)); -} - -.graph-controls { - top: var(--size-4-1); - right: var(--size-4-1); -} - -/* #endregion graph */ -/* #region outline */ -body { - /* 引导线粗细 */ - --outline-guideline-width: var(--size-2-1); - /* 引导线颜色 */ - --outline-guideline-color: var(--accent-inactive); - /* 引导线颜色 */ - --outline-guideline-color-alt: var(--accent-active); - /* 一行高度 */ - --outline-item-height: calc(var(--nav-item-size) * 1.8); -} - -.workspace-leaf-content[data-type=outline] .tree-item-inner { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - height: var(--outline-item-height); - line-height: var(--outline-item-height); -} - -body.outline-item-animation .workspace-leaf-content[data-type=outline] .tree-item-self { - transition: background-color var(--animation); -} -body.outline-item-animation .workspace-leaf-content[data-type=outline] .tree-item-self:hover { - transition: none; -} - -body.outline-enable .workspace-leaf-content[data-type=outline] .tree-item { - position: relative; -} -body.outline-enable .workspace-leaf-content[data-type=outline] .tree-item-self { - position: relative; - margin-bottom: 0; - white-space: nowrap; - margin-top: -1px; -} -body.outline-enable .workspace-leaf-content[data-type=outline] .tree-item-self .tree-item-inner { - padding-left: var(--size-4-1); -} -body.outline-enable .workspace-leaf-content[data-type=outline] .tree-item-self .tree-item-inner::before { - content: ""; - width: calc(var(--size-4-1) * 1.2); - height: calc(var(--size-4-1) * 1.2); - border: var(--size-2-1) solid var(--outline-guideline-color-alt); - border-radius: 50%; - position: absolute; - top: 50%; - transform: translate(calc(-1 * var(--size-4-5)), -50%); -} -body.outline-enable .workspace-leaf-content[data-type=outline] .tree-item-self.is-active .tree-item-inner::before { - border-color: var(--outline-guideline-color); -} -body.outline-enable .workspace-leaf-content[data-type=outline] .tree-item-self .tree-item-icon ~ .tree-item-inner { - padding-left: var(--size-4-1); -} -body.outline-enable .workspace-leaf-content[data-type=outline] .tree-item-self .tree-item-icon ~ .tree-item-inner::before { - content: none; -} -body.outline-enable .workspace-leaf-content[data-type=outline] .tree-item.is-collapsed .tree-item-icon::before { - box-shadow: 0 0 0 var(--size-4-1) var(--background-modifier-hover); -} -body.outline-enable .workspace-leaf-content[data-type=outline] .tree-item::after { - content: ""; - width: var(--outline-guideline-width); - position: absolute; - background-color: transparent; - top: calc(var(--outline-item-height) / 2 * -1); - left: -14px; - height: calc(100% - var(--outline-item-height) + var(--size-4-8)); -} -body.outline-enable .workspace-leaf-content[data-type=outline] .tree-item-icon { - cursor: pointer; - transform: translateY(8px); -} -body.outline-enable .workspace-leaf-content[data-type=outline] .tree-item-icon::before { - width: var(--size-4-2); - height: var(--size-4-2); - background-color: var(--outline-guideline-color-alt); - border-radius: 50%; - position: absolute; - left: 3px; - top: 50%; - transform: translateY(-50%); - z-index: 10; -} -body.outline-enable .workspace-leaf-content[data-type=outline] .tree-item-icon svg path { - display: none; -} -body.outline-enable .workspace-leaf-content[data-type=outline] .tree-item-self.is-active > .tree-item-inner { - color: var(--text-on-accent); -} -body.outline-enable .workspace-leaf-content[data-type=outline] .tree-item-self.is-active .tree-item-icon::before { - background-color: var(--outline-guideline-color); -} -body.outline-enable .workspace-leaf-content[data-type=outline] .tree-item:hover > .tree-item-children > .tree-item::after { - background-color: var(--outline-guideline-color); -} -body.outline-enable .workspace-leaf-content[data-type=outline] .tree-item:hover > .tree-item-self:hover + .tree-item-children .tree-item::after { - background-color: transparent; -} -body.outline-enable .workspace-leaf-content[data-type=outline] .tree-item:hover > .tree-item-children > .tree-item:hover::after, body.outline-enable .workspace-leaf-content[data-type=outline] .tree-item:hover > .tree-item-children > .tree-item:hover ~ .tree-item::after { - background-color: transparent; -} -body.outline-enable .workspace-leaf-content[data-type=outline] .tree-item:hover > .tree-item-children > .tree-item:hover::before { - content: ""; - position: absolute; - top: calc(var(--outline-item-height) / 2 * -1); - left: -14px; - bottom: calc(100% - (var(--outline-item-height) + var(--size-4-2)) / 2 - 1px); - width: var(--size-4-6); - border-bottom-left-radius: var(--radius-m); - border-bottom: var(--outline-guideline-width) solid var(--outline-guideline-color); - border-left: var(--outline-guideline-width) solid var(--outline-guideline-color); - z-index: 9; -} -body.outline-enable .workspace-leaf-content[data-type=outline] :is(.tree-item-children, .tree-item-self) { - padding-left: 28px !important; - margin-left: 0 !important; - border-left: none; -} - -/* #endregion outline */ -/* #region file-explorer */ -body { - --file-folding-offset: 28px; - --folder-color-rgb: 245, 180, 0; - --folder-color: rgb(var(--setting-color-dirs, var(--folder-color-rgb))); - --folder-hover-color: rgba(var(--setting-color-dirs, var(--folder-color-rgb)), - 0.24); - --nav-item-size: 0.9rem; - --line-height-tight: 1.6; - --nav-indentation-guide-color: hsla(var(--accent-h), 20%, 50%, 0.2); - --nav-indentation-guide-width: 1.8px; -} - -.theme-light { - --folder-inactive: 85%; -} - -.theme-dark { - --folder-inactive: 70%; -} - -.nav-file-title.is-active:not(.is-selected) { - color: var(--text-on-accent); -} - -body:not(.is-grabbing) :is(.nav-file-title.is-being-dragged, .nav-folder-title.is-being-dragged), -.nav-file-title.is-being-dragged, -.nav-folder-title.is-being-dragged { - background-color: var(--accent-inactive); - color: var(--text-normal); -} - -.workspace-leaf-content[data-type=file-explorer] { - --line-height-tight: var(--explorer-item-height, 1.6); -} - -body.explorer-vault-name-position .workspace-leaf-content[data-type=file-explorer] .nav-header { - position: absolute; - width: fit-content; - right: 0; - background-color: hsl(var(--background-secondary-hsl)); - z-index: calc(var(--layer-cover) + 1); -} -body.explorer-vault-name-position .workspace-leaf-content[data-type=file-explorer] .nav-buttons-container { - justify-content: flex-end; -} -body.explorer-vault-name-position .workspace-leaf-content[data-type=file-explorer] .nav-files-container .mod-root { - padding-top: var(--size-4-12); -} -body.explorer-vault-name-position .workspace-leaf-content[data-type=file-explorer] .nav-files-container .mod-root > .nav-folder-title { - position: fixed; - height: calc(var(--header-height) + var(--size-2-1)); - line-height: 2; - top: var(--header-height); - left: var(--size-4-3); - right: 0; - transform: translate(calc(-1 * var(--size-4-5)), calc(-1 * var(--size-4-10))); - z-index: var(--layer-cover); - color: var(--color-accent-2); - font-size: 1rem; - font-weight: bold; - background-color: hsl(var(--background-secondary-hsl)); -} -body.explorer-vault-name-position .workspace-leaf-content[data-type=file-explorer] .nav-files-container .mod-root > .nav-folder-title:hover { - background-color: hsl(var(--background-secondary-hsl)) !important; -} -body.explorer-vault-name-position .workspace-leaf-content[data-type=file-explorer] .nav-files-container .mod-root > .nav-folder-title > .tree-item-inner { - padding-left: 0; -} - -body.theme-dark.explorer-icon .is-active .nav-file-tag { - --nav-item-background-active: var(--text-on-accent); -} - -body:is(:not(.css-settings-manager), .explorer-icon) .workspace-leaf-content[data-type=file-explorer] .nav-files-container .mod-root .nav-folder-title:hover { - background-color: var(--folder-hover-color); -} -body:is(:not(.css-settings-manager), .explorer-icon) .workspace-leaf-content[data-type=file-explorer] .nav-files-container .mod-root .nav-folder-title-content { - padding-left: var(--size-2-1); -} -body:is(:not(.css-settings-manager), .explorer-icon) .workspace-leaf-content[data-type=file-explorer] .nav-files-container .mod-root .nav-folder > .nav-folder-children { - transition: var(--animation); -} -body:is(:not(.css-settings-manager), .explorer-icon) .workspace-leaf-content[data-type=file-explorer] .nav-files-container .mod-root .nav-folder > .nav-folder-children:hover { - --nav-indentation-guide-color: var(--accent-inactive); -} -body:is(:not(.css-settings-manager), .explorer-icon) .workspace-leaf-content[data-type=file-explorer] .nav-files-container .mod-root .nav-folder-collapse-indicator { - cursor: pointer; - height: fit-content; -} -body:is(:not(.css-settings-manager), .explorer-icon) .workspace-leaf-content[data-type=file-explorer] .nav-files-container .mod-root .nav-folder-collapse-indicator svg { - line-height: var(--line-height-tight); - width: 1rem; - height: 1rem; - background-color: var(--folder-color); - display: inline-block; - translate: 0 calc(-1 * var(--size-2-1)); -} -body:is(:not(.css-settings-manager), .explorer-icon) .workspace-leaf-content[data-type=file-explorer] .nav-files-container .mod-root .nav-folder.is-collapsed .collapse-icon svg.svg-icon { - transform: none; - filter: brightness(var(--folder-inactive)); - transition: var(--animation); -} -body:is(:not(.css-settings-manager), .explorer-icon) .workspace-leaf-content[data-type=file-explorer] .nav-files-container .mod-root .nav-file { - --nav-item-background-hover: hsl(var(--accent-h), calc(var(--accent-s) * 1.2), min(var(--accent-l) * 1.5, 90%), 50%); -} -body:is(:not(.css-settings-manager), .explorer-icon) .workspace-leaf-content[data-type=file-explorer] .nav-files-container .mod-root .nav-file-title-content { - padding-left: var(--size-2-1); -} -body:is(:not(.css-settings-manager), .explorer-icon) .workspace-leaf-content[data-type=file-explorer] .nav-files-container .mod-root .nav-file-title:not([data-path$="excalidraw.md"]):not([data-path$=excalidraw])::before { - content: " "; - position: absolute; - width: 1rem; - height: 1rem; - opacity: 0.8; - flex-shrink: 0; - translate: calc(1px - var(--size-4-5)) 15%; - background-color: var(--accent-active); -} -body:is(:not(.css-settings-manager), .explorer-icon) .workspace-leaf-content[data-type=file-explorer] .nav-files-container .mod-root .nav-file-title:is([data-path$="excalidraw.md"], [data-path$=excalidraw]) .nav-file-tag { - position: absolute; - translate: calc(-1 * var(--size-4-5)); - top: var(--size-2-3); -} -body:is(:not(.css-settings-manager), .explorer-icon) .workspace-leaf-content[data-type=file-explorer] .nav-files-container .mod-root .nav-file-title.is-active:not(.is-selected) { - color: var(--text-on-accent); -} -body:is(:not(.css-settings-manager), .explorer-icon) .workspace-leaf-content[data-type=file-explorer] .nav-files-container .mod-root .nav-file-title.is-active:not(.is-selected):first-child::before { - background-color: var(--text-on-accent); -} -body:is(:not(.css-settings-manager), .explorer-icon) .workspace-leaf-content[data-type=file-explorer] .nav-files-container .mod-root .nav-file-title.is-active:not(.is-selected) .nav-file-title-content { - color: var(--text-on-accent); -} -body:is(:not(.css-settings-manager), .explorer-icon) .workspace-leaf-content[data-type=file-explorer] .nav-files-container .mod-root .nav-file-tag { - font-size: 0.6rem; - margin-left: 0; - margin-right: var(--size-4-2); - line-height: 2; -} -body:is(:not(.css-settings-manager), .explorer-icon) .workspace-leaf-content[data-type=file-explorer] .nav-files-container .mod-root .nav-file-title .nav-file-tag { - background-color: var(--accent-active); - color: var(--text-on-accent); -} -body:is(:not(.css-settings-manager), .explorer-icon) .workspace-leaf-content[data-type=file-explorer] .nav-files-container .mod-root .nav-file-title.is-active .nav-file-tag { - background-color: hsl(var(--background-secondary-hsl), 0.9); - color: var(--nav-item-background-active); -} -body:is(:not(.css-settings-manager), .explorer-icon) .workspace-leaf-content[data-type=file-explorer] .nav-files-container .mod-root .nav-file-title-content + .nav-file-tag { - margin-left: var(--size-2-3); -} - -/* 参考 https://github.com/Akifyss/obsidian-border */ -:is(body.explorer-nav-decoration .nav-file-title, body.setting-nav-decoration .vertical-tab-nav-item) { - position: relative; -} -:is(body.explorer-nav-decoration .nav-file-title, body.setting-nav-decoration .vertical-tab-nav-item).is-active::after { - height: calc(100% - var(--size-4-2)); - transform: translateY(-50%); -} -:is(body.explorer-nav-decoration .nav-file-title, body.setting-nav-decoration .vertical-tab-nav-item)::after { - content: ""; - position: absolute; - right: 4px; - top: 50%; - width: var(--size-4-1); - height: 0%; - border-radius: var(--radius-s); - background: var(--accent-inactive); -} - -body.explorer-title-wrap :is(.nav-file-title-content, .nav-folder-title-content) { - overflow: visible; - white-space: pre-wrap; -} - -/* #endregion file-explorer */ -/* #endregion [[panel]] */ -/* #endregion [workspace] */ -/* #region [mobile] */ -.is-mobile { - --input-border-width: 1px; - --input-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.12), - 0 2px 3px 0 rgba(0, 0, 0, .05), - 0 1px 1.5px 0 rgba(0, 0, 0, .03), - 0 1px 2px 0 rgba(0, 0, 0, .04), - 0 0 0 0 transparent; -} -.is-mobile:is(.bg-static, .bg-live) { - --background-modifier-form-field: hsl(var(--background-primary-hsl)); - --interactive-normal: hsl(var(--background-primary-hsl)); -} -.is-mobile button:not(.clickable-icon) { - background-color: var(--interactive-normal) !important; - box-shadow: var(--input-shadow); -} -.is-mobile .document-search .document-search-button { - padding: var(--size-4-2); -} - -/* #endregion [mobile] */ diff --git a/.obsidian/types.json b/.obsidian/types.json deleted file mode 100644 index e9a5424..0000000 --- a/.obsidian/types.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "types": { - "aliases": "aliases", - "cssclasses": "multitext", - "tags": "tags", - "created": "date" - } -} \ No newline at end of file diff --git a/.obsidian/workspace-mobile.json b/.obsidian/workspace-mobile.json deleted file mode 100644 index dce8805..0000000 --- a/.obsidian/workspace-mobile.json +++ /dev/null @@ -1,156 +0,0 @@ -{ - "main": { - "id": "8eaf561279c059bf", - "type": "split", - "children": [ - { - "id": "8d3503616d2139f8", - "type": "tabs", - "children": [ - { - "id": "e9fd93c0891fdb65", - "type": "leaf", - "state": { - "type": "markdown", - "state": { - "file": "工具/push.md", - "mode": "source", - "source": false - } - } - } - ] - }, - { - "id": "572bd6ac1b808831", - "type": "tabs", - "children": [ - { - "id": "78cbdaf7a4d89f84", - "type": "leaf", - "state": { - "type": "markdown", - "state": { - "file": "工具/push.md", - "mode": "preview", - "source": false - } - } - } - ] - } - ], - "direction": "vertical" - }, - "left": { - "id": "b347c9caecdce4e2", - "type": "mobile-drawer", - "children": [ - { - "id": "8fe6fecbd8b50dae", - "type": "leaf", - "state": { - "type": "file-explorer", - "state": { - "sortOrder": "alphabetical" - } - } - }, - { - "id": "969a9c46becaafc5", - "type": "leaf", - "state": { - "type": "search", - "state": { - "query": "", - "matchingCase": false, - "explainSearch": false, - "collapseAll": false, - "extraContext": false, - "sortOrder": "alphabetical" - } - } - }, - { - "id": "da240cba1c00f936", - "type": "leaf", - "state": { - "type": "tag", - "state": { - "sortOrder": "frequency", - "useHierarchy": true - } - } - }, - { - "id": "6f031d3105f82af6", - "type": "leaf", - "state": { - "type": "bookmarks", - "state": {} - } - } - ], - "currentTab": 0 - }, - "right": { - "id": "41196cef10c8d6a5", - "type": "mobile-drawer", - "children": [ - { - "id": "3bdde99dbcb62b8f", - "type": "leaf", - "state": { - "type": "backlink", - "state": { - "file": "工具/push.md", - "collapseAll": false, - "extraContext": false, - "sortOrder": "alphabetical", - "showSearch": false, - "searchQuery": "", - "backlinkCollapsed": false, - "unlinkedCollapsed": true - } - } - }, - { - "id": "7a62129a7f057755", - "type": "leaf", - "state": { - "type": "outgoing-link", - "state": { - "file": "工具/push.md", - "linksCollapsed": false, - "unlinkedCollapsed": true - } - } - }, - { - "id": "b4bddd8ba57786ce", - "type": "leaf", - "state": { - "type": "outline", - "state": { - "file": "工具/push.md" - } - } - } - ], - "currentTab": 0 - }, - "left-ribbon": { - "hiddenItems": { - "switcher:Open quick switcher": false, - "graph:Open graph view": false, - "canvas:Create new canvas": false, - "daily-notes:Open today's daily note": false, - "templates:Insert template": false, - "command-palette:Open command palette": false - } - }, - "active": "78cbdaf7a4d89f84", - "lastOpenFiles": [ - "工具/push.md" - ] -} \ No newline at end of file diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json deleted file mode 100644 index ed8ae72..0000000 --- a/.obsidian/workspace.json +++ /dev/null @@ -1,229 +0,0 @@ -{ - "main": { - "id": "3fb1d4fd3756e949", - "type": "split", - "children": [ - { - "id": "7e1026ed62ed3136", - "type": "tabs", - "dimension": 77.27272727272727, - "children": [ - { - "id": "0e00facec86c2b63", - "type": "leaf", - "state": { - "type": "markdown", - "state": { - "file": "工具/rclone.md", - "mode": "source", - "source": false - } - } - }, - { - "id": "77528d40219efb8c", - "type": "leaf", - "state": { - "type": "markdown", - "state": { - "file": "工具/push.md", - "mode": "source", - "source": false - } - } - } - ], - "currentTab": 1 - }, - { - "id": "a8dc984f7c103518", - "type": "tabs", - "dimension": 22.727272727272727, - "children": [ - { - "id": "9a8576cd11827c62", - "type": "leaf", - "state": { - "type": "outline", - "state": { - "file": "工具/push.md" - } - } - } - ] - } - ], - "direction": "vertical" - }, - "left": { - "id": "fe5b2c2a0a030ed9", - "type": "split", - "children": [ - { - "id": "cb4342f6ec9fbf23", - "type": "tabs", - "children": [ - { - "id": "816ff4b32d991cec", - "type": "leaf", - "state": { - "type": "file-explorer", - "state": { - "sortOrder": "alphabetical" - } - } - }, - { - "id": "65be2343a98e8395", - "type": "leaf", - "state": { - "type": "search", - "state": { - "query": "openwrt", - "matchingCase": false, - "explainSearch": false, - "collapseAll": false, - "extraContext": false, - "sortOrder": "alphabetical" - } - } - }, - { - "id": "ad0337a6671dd11a", - "type": "leaf", - "state": { - "type": "bookmarks", - "state": {} - } - } - ] - } - ], - "direction": "horizontal", - "width": 300 - }, - "right": { - "id": "888ce1c35c481708", - "type": "split", - "children": [ - { - "id": "342a0cb519839850", - "type": "tabs", - "children": [ - { - "id": "b31c8da60a02bf0a", - "type": "leaf", - "state": { - "type": "backlink", - "state": { - "file": "工具/push.md", - "collapseAll": false, - "extraContext": false, - "sortOrder": "alphabetical", - "showSearch": false, - "searchQuery": "", - "backlinkCollapsed": false, - "unlinkedCollapsed": true - } - } - }, - { - "id": "2676d3e49acc0639", - "type": "leaf", - "state": { - "type": "outgoing-link", - "state": { - "file": "工具/push.md", - "linksCollapsed": false, - "unlinkedCollapsed": true - } - } - }, - { - "id": "2b32b5eba5d7a138", - "type": "leaf", - "state": { - "type": "tag", - "state": { - "sortOrder": "frequency", - "useHierarchy": true - } - } - }, - { - "id": "ee869e129f0858b2", - "type": "leaf", - "state": { - "type": "outline", - "state": { - "file": "工具/push.md" - } - } - } - ] - } - ], - "direction": "horizontal", - "width": 300, - "collapsed": true - }, - "left-ribbon": { - "hiddenItems": { - "switcher:打开快速切换": false, - "graph:查看关系图谱": false, - "canvas:新建白板": false, - "daily-notes:打开/创建今天的日记": false, - "templates:插入模板": false, - "command-palette:打开命令面板": false - } - }, - "active": "77528d40219efb8c", - "lastOpenFiles": [ - "工具/rclone.md", - "工具/push.md", - "工具/PCB.md", - "系统/703N.md", - "工具/aardio/上位机设想.md", - "工具/aardio/数字华容道.md", - "工具/aardio/fsys.md", - "norflash国产化.md", - "可调电位器(POT).md", - "接口.md", - "封装.md", - "车规.md", - "DAC/DAC主要用途.md", - "DAC/叠加原理.md", - "DAC/国产.md", - "工具/Word.md", - "工具/Markdown/附件更新原理.md", - "工具/Markdown/全局变量用法.md", - "工具/Markdown/语法.md", - "MCU/国产化/华大.md", - "MCU/国产化/MCU选型.md", - "MCU/WCH-南京沁恒/MounRiver配置.md", - "USB.md", - "MCU/选型及学习规划.md", - "MCU/国产化/STM32国产替代总结.md", - "MCU/国产化/MCU型号替代.md", - "DAC/串行", - "AMO_Driver/ADC/型号", - "AMO_Driver/ADC", - "AMO_Driver", - "DIY", - "MCU/逆向", - "DAC", - "_resources/103943tiyeeiep2ce0jicr_5b4e25752a7b4603a91e1dfb1f1.jpg", - "_resources/0a1c2297fbe32233c397a8b26adf7f98.png", - "_resources/171445p91cmsugo12yyckk_0912123467804baba3ac64adf2b.png", - "_resources/171353zbs1gx2c2qn0d01c.png.thumb_683e15f6515f4819b.jpg", - "MCU/国产化", - "MCU/ESP32", - "_resources/171338ato0t0cr844t48ab.png.thumb_81ef812bd9e94c96b.jpg", - "MCU/WCH-南京沁恒", - "_resources/171301hmc4offp63fp23fj.png.thumb_cc894aea75d44f339.jpg", - "_resources/171002g9tt2900zahhhmhj.jpg.thumb_80db50ad28674a9d8.jpg", - "_resources/14_af0a83f95fee4a9685623dd291aa367b.gif", - "_resources/12_38c276c0a87a4b76b4c67b44cb1d0cee.gif", - "_resources/0fef6312297cb3b348befb28f1fc00d1.png" - ] -} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..0ce7a27 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,20 @@ +{ + "MicroPython.executeButton": [ + { + "text": "▶", + "tooltip": "运行", + "alignment": "left", + "command": "extension.executeFile", + "priority": 3.5 + } + ], + "MicroPython.syncButton": [ + { + "text": "$(sync)", + "tooltip": "同步", + "alignment": "left", + "command": "extension.execute", + "priority": 4 + } + ] +} \ No newline at end of file