big file storage

This commit is contained in:
Nathan Rashleigh committed 2026-09-18 23:22:55 +10:00
1 parent 91fe0211d4
commit 9b11a4ded6
1265 files changed
+149378 -60

No files matched your search

+4
View File
@@ -0,0 +1,4 @@
[
"obsidian-livesync",
"obsidian-excalidraw-plugin"
]
+4 -2
View File
@@ -26,6 +26,8 @@
"workspaces": false,
"file-recovery": true,
"publish": false,
"sync": true,
"webviewer": false
"sync": false,
"webviewer": false,
"footnotes": false,
"bases": true
}
+1 -1
View File
@@ -17,6 +17,6 @@
"repelStrength": 10,
"linkStrength": 1,
"linkDistance": 250,
"scale": 1,
"scale": 0.7077346155458414,
"close": true
}
+11 -1
View File
@@ -1 +1,11 @@
{}
{
"editor:insert-wikilink": [
{
"modifiers": [
"Mod"
],
"key": "L"
}
],
"editor:toggle-checklist-status": []
}
File diff suppressed because it is too large. Load diff
+10
View File
@@ -0,0 +1,10 @@
"use strict";var obsidian_module=require("obsidian"),view=require("@codemirror/view"),commands=require("@codemirror/commands"),lr=require("@lezer/lr"),language=require("@codemirror/language"),state=require("@codemirror/state");;const INITIAL_TIMESTAMP=Date.now();var LZString=function(){var r=String.fromCharCode,o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",e={};function t(r,o){if(!e[r]){e[r]={};for(var n=0;n<r.length;n++)e[r][r.charAt(n)]=n}return e[r][o]}var i={compressToBase64:function(r){if(null==r)return"";var n=i._compress(r,6,function(r){return o.charAt(r)});switch(n.length%4){default:case 0:return n;case 1:return n+"===";case 2:return n+"==";case 3:return n+"="}},decompressFromBase64:function(r){return null==r?"":""==r?null:i._decompress(r.length,32,function(n){return t(o,r.charAt(n))})},compressToUTF16:function(o){return null==o?"":i._compress(o,15,function(o){return r(o+32)})+" "},decompressFromUTF16:function(r){return null==r?"":""==r?null:i._decompress(r.length,16384,function(o){return r.charCodeAt(o)-32})},compressToUint8Array:function(r){for(var o=i.compress(r),n=new Uint8Array(2*o.length),e=0,t=o.length;e<t;e++){var s=o.charCodeAt(e);n[2*e]=s>>>8,n[2*e+1]=s%256}return n},decompressFromUint8Array:function(o){if(null==o)return i.decompress(o);for(var n=new Array(o.length/2),e=0,t=n.length;e<t;e++)n[e]=256*o[2*e]+o[2*e+1];var s=[];return n.forEach(function(o){s.push(r(o))}),i.decompress(s.join(""))},compressToEncodedURIComponent:function(r){return null==r?"":i._compress(r,6,function(r){return n.charAt(r)})},decompressFromEncodedURIComponent:function(r){return null==r?"":""==r?null:(r=r.replace(/ /g,"+"),i._decompress(r.length,32,function(o){return t(n,r.charAt(o))}))},compress:function(o){return i._compress(o,16,function(o){return r(o)})},_compress:function(r,o,n){if(null==r)return"";var e,t,i,s={},u={},a="",p="",c="",l=2,f=3,h=2,d=[],m=0,v=0;for(i=0;i<r.length;i+=1)if(a=r.charAt(i),Object.prototype.hasOwnProperty.call(s,a)||(s[a]=f++,u[a]=!0),p=c+a,Object.prototype.hasOwnProperty.call(s,p))c=p;else{if(Object.prototype.hasOwnProperty.call(u,c)){if(c.charCodeAt(0)<256){for(e=0;e<h;e++)m<<=1,v==o-1?(v=0,d.push(n(m)),m=0):v++;for(t=c.charCodeAt(0),e=0;e<8;e++)m=m<<1|1&t,v==o-1?(v=0,d.push(n(m)),m=0):v++,t>>=1}else{for(t=1,e=0;e<h;e++)m=m<<1|t,v==o-1?(v=0,d.push(n(m)),m=0):v++,t=0;for(t=c.charCodeAt(0),e=0;e<16;e++)m=m<<1|1&t,v==o-1?(v=0,d.push(n(m)),m=0):v++,t>>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[c]}else for(t=s[c],e=0;e<h;e++)m=m<<1|1&t,v==o-1?(v=0,d.push(n(m)),m=0):v++,t>>=1;0==--l&&(l=Math.pow(2,h),h++),s[p]=f++,c=String(a)}if(""!==c){if(Object.prototype.hasOwnProperty.call(u,c)){if(c.charCodeAt(0)<256){for(e=0;e<h;e++)m<<=1,v==o-1?(v=0,d.push(n(m)),m=0):v++;for(t=c.charCodeAt(0),e=0;e<8;e++)m=m<<1|1&t,v==o-1?(v=0,d.push(n(m)),m=0):v++,t>>=1}else{for(t=1,e=0;e<h;e++)m=m<<1|t,v==o-1?(v=0,d.push(n(m)),m=0):v++,t=0;for(t=c.charCodeAt(0),e=0;e<16;e++)m=m<<1|1&t,v==o-1?(v=0,d.push(n(m)),m=0):v++,t>>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[c]}else for(t=s[c],e=0;e<h;e++)m=m<<1|1&t,v==o-1?(v=0,d.push(n(m)),m=0):v++,t>>=1;0==--l&&(l=Math.pow(2,h),h++)}for(t=2,e=0;e<h;e++)m=m<<1|1&t,v==o-1?(v=0,d.push(n(m)),m=0):v++,t>>=1;for(;;){if(m<<=1,v==o-1){d.push(n(m));break}v++}return d.join("")},decompress:function(r){return null==r?"":""==r?null:i._decompress(r.length,32768,function(o){return r.charCodeAt(o)})},_decompress:function(o,n,e){var t,i,s,u,a,p,c,l=[],f=4,h=4,d=3,m="",v=[],g={val:e(0),position:n,index:1};for(t=0;t<3;t+=1)l[t]=t;for(s=0,a=Math.pow(2,2),p=1;p!=a;)u=g.val&g.position,g.position>>=1,0==g.position&&(g.position=n,g.val=e(g.index++)),s|=(u>0?1:0)*p,p<<=1;switch(s){case 0:for(s=0,a=Math.pow(2,8),p=1;p!=a;)u=g.val&g.position,g.position>>=1,0==g.position&&(g.position=n,g.val=e(g.index++)),s|=(u>0?1:0)*p,p<<=1;c=r(s);break;case 1:for(s=0,a=Math.pow(2,16),p=1;p!=a;)u=g.val&g.position,g.position>>=1,0==g.position&&(g.position=n,g.val=e(g.index++)),s|=(u>0?1:0)*p,p<<=1;c=r(s);break;case 2:return""}for(l[3]=c,i=c,v.push(c);;){if(g.index>o)return"";for(s=0,a=Math.pow(2,d),p=1;p!=a;)u=g.val&g.position,g.position>>=1,0==g.position&&(g.position=n,g.val=e(g.index++)),s|=(u>0?1:0)*p,p<<=1;switch(c=s){case 0:for(s=0,a=Math.pow(2,8),p=1;p!=a;)u=g.val&g.position,g.position>>=1,0==g.position&&(g.position=n,g.val=e(g.index++)),s|=(u>0?1:0)*p,p<<=1;l[h++]=r(s),c=h-1,f--;break;case 1:for(s=0,a=Math.pow(2,16),p=1;p!=a;)u=g.val&g.position,g.position>>=1,0==g.position&&(g.position=n,g.val=e(g.index++)),s|=(u>0?1:0)*p,p<<=1;l[h++]=r(s),c=h-1,f--;break;case 2:return v.join("")}if(0==f&&(f=Math.pow(2,d),d++),l[c])m=l[c];else{if(c!==h)return null;m=i+i.charAt(0)}v.push(m),l[h++]=i+m.charAt(0),i=m,0==--f&&(f=Math.pow(2,d),d++)}}};return i}();"function"==typeof define&&define.amd?define(function(){return LZString}):"undefined"!=typeof module&&null!=module?module.exports=LZString:"undefined"!=typeof angular&&null!=angular&&Line truncated
let REACT_PACKAGES = `!function(){var e,t;e=this,t=function(e){function M(e){return null!==e&&"object"==typeof e&&"function"==typeof(e=te&&e[te]||e["@@iterator"])?e:null}function t(e,t,n){this.props=e,this.context=t,this.refs=oe,this.updater=n||ne}function n(){}function r(e,t,n){this.props=e,this.context=t,this.refs=oe,this.updater=n||ne}function o(e,t,n){var r,o={},u=null,a=null;if(null!=t)for(r in void 0!==t.ref&&(a=t.ref),void 0!==t.key&&(u=""+t.key),t)ae.call(t,r)&&!ie.hasOwnProperty(r)&&(o[r]=t[r]);var i=arguments.length-2;if(1===i)o.children=n;else if(1<i){for(var l=Array(i),c=0;c<i;c++)l[c]=arguments[c+2];o.children=l}if(e&&e.defaultProps)for(r in i=e.defaultProps)void 0===o[r]&&(o[r]=i[r]);return{$$typeof:g,type:e,key:u,ref:a,props:o,_owner:w.current}}function D(e,t){return{$$typeof:g,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}function c(e){return"object"==typeof e&&null!==e&&e.$$typeof===g}function U(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,function(e){return t[e]})}function f(e,t){return"object"==typeof e&&null!==e&&null!=e.key?U(""+e.key):t.toString(36)}function s(e,t,n,r,o){var u=!1;if(null===(e="undefined"!==(i=typeof e)&&"boolean"!==i?e:null))u=!0;else switch(i){case"string":case"number":u=!0;break;case"object":switch(e.$$typeof){case g:case H:u=!0}}if(u)return o=o(u=e),e=""===r?"."+f(u,0):r,ue(o)?(n="",s(o,t,n=null!=e?e.replace(le,"$&/")+"/":n,"",function(e){return e})):null!=o&&(c(o)&&(o=D(o,n+(!o.key||u&&u.key===o.key?"":(""+o.key).replace(le,"$&/")+"/")+e)),t.push(o)),1;if(u=0,r=""===r?".":r+":",ue(e))for(var a=0;a<e.length;a++){var i,l=r+f(i=e[a],a);u+=s(i,t,n,l,o)}else if("function"==typeof(l=M(e)))for(e=l.call(e),a=0;!(i=e.next()).done;)u+=s(i=i.value,t,n,l=r+f(i,a++),o);else if("object"===i)throw t=String(e),Error("Objects are not valid as a React child (found: "+("[object Object]"===t?"object with keys {"+Object.keys(e).join(", ")+"}":t)+"). If you meant to render a collection of children, use an array instead.");return u}function u(e,t,n){var r;return null==e||(r=0,s(e,e=[],"","",function(e){return t.call(n,e,r++)})),e}function V(t){var e;if(-1===t._status&&((e=(e=t._result)()).then(function(e){0!==t._status&&-1!==t._status||(t._status=1,t._result=e)},function(e){0!==t._status&&-1!==t._status||(t._status=2,t._result=e)}),-1===t._status)&&(t._status=0,t._result=e),1===t._status)return t._result.default;throw t._result}function a(e,t){var n=e.length;for(e.push(t);0<n;){var r=n-1>>>1,o=e[r];if(!(0<p(o,t)))break;e[r]=t,e[n]=o,n=r}}function i(e){return 0===e.length?null:e[0]}function l(e){if(0===e.length)return null;var t=e[0],n=e.pop();if(n!==t){e[0]=n;for(var r=0,o=e.length,u=o>>>1;r<u;){var a=2*(r+1)-1,i=e[a],l=a+1,c=e[l];if(p(i,n)<0)r=l<o&&p(c,i)<0?(e[r]=c,e[l]=n,l):(e[r]=i,e[a]=n,a);else{if(!(l<o&&p(c,n)<0))break;e[r]=c,e[l]=n,r=l}}}return t}function p(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}function y(e){for(var t=i(E);null!==t;){if(null===t.callback)l(E);else{if(!(t.startTime<=e))break;l(E),t.sortIndex=t.expirationTime,a(C,t)}t=i(E)}}function d(e){var t;j=!1,y(e),I||(null!==i(C)?(I=!0,m(b)):null!==(t=i(E))&&_(d,t.startTime-e))}function b(e,t){I=!1,j&&(j=!1,se(L),L=-1),$=!0;var n=P;try{for(y(t),R=i(C);null!==R&&(!(R.expirationTime>t)||e&&!q());){var r,o=R.callback;"function"==typeof o?(R.callback=null,P=R.priorityLevel,r=o(R.expirationTime<=t),t=v(),"function"==typeof r?R.callback=r:R===i(C)&&l(C),y(t)):l(C),R=i(C)}var u,a=null!==R||(null!==(u=i(E))&&_(d,u.startTime-t),!1);return a}finally{R=null,P=n,$=!1}}function q(){return!(v()-de<ye)}function m(e){O=e,T||(T=!0,be())}function _(e,t){L=fe(function(){e(v())},t)}function A(e){throw Error("act(...) is not supported in production builds of React.")}var N,h,B,v,z,g=Symbol.for("react.element"),H=Symbol.for("react.portal"),W=Symbol.for("react.fragment"),Y=Symbol.for("react.strict_mode"),G=Symbol.for("react.profiler"),J=Symbol.for("react.provider"),K=Symbol.for("react.context"),Q=Symbol.for("react.forward_ref"),X=Symbol.for("react.suspense"),Z=Symbol.for("react.memo"),ee=Symbol.for("react.lazy"),te=Symbol.iterator,ne={isMounted:function(e){return!1},enqueueForceUpdate:function(e,t,n){},enqueueReplaceState:function(e,t,n,r){},enqueueSetState:function(e,t,n,r){}},re=Object.assign,oe={},k=(t.prototype.isReactComponent={},t.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},t.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},n.prototype=t.prototype,r.prototype=new n),ue=(k.constructor=r,re(k,t.prototype),k.isPureReactComponent=!0,Array.isArray),ae=Object.prototype.hasOwnProperty,w={current:null},ie={key:!0,ref:!0,__self:!0,__source:!0},le=/\\/+/g,S={current:null},x={transition:null},C=(v="object"==typeof performance&&"function"==typeof p Line truncated
const unpackExcalidraw = () => LZString.decompressFromBase64("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 truncated
let {react, reactDOM } = new Function(`${REACT_PACKAGES}; return {react: React, reactDOM: ReactDOM};`)();
let excalidrawLib = {};
const loadMathjaxToSVG = () => new Function(`${LZString.decompressFromBase64("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 truncated
const PLUGIN_LANGUAGES = {"ru": "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 truncated
const PLUGIN_VERSION="2.23.12";function _interopNamespaceDefault(e){var t=Object.create(null);return e&&Object.keys(e).forEach(function(i){if("default"!==i){var n=Object.getOwnPropertyDescriptor(e,i);Object.defineProperty(t,i,n.get?n:{enumerable:!0,get:function(){return e[i]}})}}),t.default=e,Object.freeze(t)}var obsidian_module__namespace=_interopNamespaceDefault(obsidian_module),React__namespace=_interopNamespaceDefault(React);let urlAlphabet="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict",random$3=e=>crypto.getRandomValues(new Uint8Array(e)),customRandom=(e,t,i)=>{let n=256-256%e.length;if(256===n){let n=e.length-1;return(a=t)=>{if(!a)return"";let s="";for(;;){let t=i(a),r=a;for(;r--;)if(s+=e[t[r]&n],s.length>=a)return s}}}let a=Math.ceil(409.6*t/n);return(s=t)=>{if(!s)return"";let r="";for(;;){let t=i(a),o=a;for(;o--;)if(t[o]<n&&(r+=e[t[o]%e.length],r.length>=s))return r}}},customAlphabet=(e,t=21)=>customRandom(e,0|t,random$3),nanoid$1=(e=21)=>{let t="",i=crypto.getRandomValues(new Uint8Array(e|=0));for(;e--;)t+=urlAlphabet[63&i[e]];return t};class ErrorHandler{static instance;errorLog=[];errorNoticeTimeout=1e4;maxLogEntries=100;constructor(){}static getInstance(){return ErrorHandler.instance||(ErrorHandler.instance=new ErrorHandler),ErrorHandler.instance}handleError(e,t,i=!0,n){const a="string"==typeof e?new Error(e):e;if(console.error(`[Excalidraw Error] in ${t}:`,a),this.errorLog.push({error:a,context:t,timestamp:Date.now()}),this.errorLog.length>this.maxLogEntries&&(this.errorLog=this.errorLog.slice(this.errorLog.length-this.maxLogEntries)),i){const e=this.formatErrorForUser(a,t);new obsidian_module.Notice(e,n||this.errorNoticeTimeout)}}safeEval(e,t,i,n){try{return i.eval.call(i,e)}catch(e){if(this.handleError(e,`SafeEval in ${t}`),void 0!==n)return n;throw e}}wrapWithTryCatch(e,t,i){try{return e()}catch(e){if(this.handleError(e,t),void 0!==i)return i;throw e}}formatErrorForUser(e,t){let i=e.message;return i.includes("Cannot read properties of undefined")?i="A required object was not available. This might be due to a plugin loading issue.":i.includes("is not a function")?i="A required function was not available. This might be due to a plugin version mismatch.":i.length>100&&(i=`${i.substring(0,100)}...`),`Excalidraw Error: ${i} (in ${t})`}getErrorLog(){return[...this.errorLog]}clearErrorLog(){this.errorLog=[]}}const errorHandler=ErrorHandler.getInstance(),UrlPurpose={AI_API:"AI API Endpoint (User Opt-in)",TASKBONE:"Taskbone OCR Endpoint",SUPPORT:"Support link, contact, or Ko-Fi button",DOCS:"Background information in Settings or Code Suggester",RELEASE_LOG:"Referencing issues, changes, or contributors in release log",VIDEO:"Supporting video tutorial or thumbnail",APP_LOGIC:"Internal application logic (embeddables, UI renders, asset fetching)",TRANSLATION:"One-time support message translation"},defineUrl=(e,t)=>({url:e,purpose:t}),URL_REGISTRY={RAW_GITHUBUSERCONTENT_COM_ZSVICZIAN_OBSIDIAN_EXCALIDRAW_PLUGIN_MASTER_EA_SCRIPTS_DIRECTORY_INFO_JSON:defineUrl("https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/ea-scripts/directory-info.json",UrlPurpose.APP_LOGIC),API_GITHUB_COM_REPOS_ZSVICZIAN_OBSIDIAN_EXCALIDRAW_PLUGIN_RELEASES:defineUrl("https://api.github.com/repos/zsviczian/obsidian-excalidraw-plugin/releases?per_page=15&page=1",UrlPurpose.APP_LOGIC),GITHUB_COM_ZSVICZIAN_OBSIDIAN_EXCALIDRAW_PLUGIN_ISSUES:defineUrl("https://github.com/zsviczian/obsidian-excalidraw-plugin/issues",UrlPurpose.DOCS),API_OPENAI_COM_V1:defineUrl("https://api.openai.com/v1",UrlPurpose.AI_API),API_ANTHROPIC_COM_V1:defineUrl("https://api.anthropic.com/v1",UrlPurpose.AI_API),GENERATIVELANGUAGE_GOOGLEAPIS_COM_V1BETA:defineUrl("https://generativelanguage.googleapis.com/v1beta",UrlPurpose.AI_API),API_X_AI_V1:defineUrl("https://api.x.ai/v1",UrlPurpose.AI_API),API_OPENAI_COM_V1_CHAT_COMPLETIONS:defineUrl("https://api.openai.com/v1/chat/completions",UrlPurpose.AI_API),API_OPENAI_COM_V1_IMAGES_GENERATIONS:defineUrl("https://api.openai.com/v1/images/generations",UrlPurpose.AI_API),API_OPENAI_COM_V1_IMAGES_EDITS:defineUrl("https://api.openai.com/v1/images/edits",UrlPurpose.AI_API),API_OPENAI_COM_V1_IMAGES_VARIATIONS:defineUrl("https://api.openai.com/v1/images/variations",UrlPurpose.AI_API),NOTEBOOKLM_GOOGLE_COM_NOTEBOOK_42D76A2F_C11D_4002_9286_1683C43D0AB0:defineUrl("https://notebooklm.google.com/notebook/42d76a2f-c11d-4002-9286-1683c43d0ab0",UrlPurpose.DOCS),COMMUNITY_SKETCH_YOUR_MIND_COM_EM:defineUrl("https://community.sketch-your-mind.com/em",UrlPurpose.SUPPORT),KO_FI_COM_ZSOLT:defineUrl("https://ko-fi.com/zsolt",UrlPurpose.SUPPORT),CDN_KO_FI_COM_CDN_KOFI3_PNG:defineUrl("https://cdn.ko-fi.com/cdn/kofi3.png?v=3",UrlPurpose.SUPPORT),COMMUNITY_SKETCH_YOUR_MIND_COM_WIKI:defineUrl("https://community.sketch-your-mind.com/wiki",UrlPurpose.SUPPORT),WWW_YOUTUBE_COM_VISUALPKM:defineUrl("https://www.youtube.com/@visualPKM",UrlPurpose.SUPPORT),COMMUNITY_SKETCH_YOUR_MIND_COM_EE:defineUrl("https://commu Line truncated
/* nosourcemap */
@@ -0,0 +1,12 @@
{
"id": "obsidian-excalidraw-plugin",
"name": "Excalidraw",
"version": "2.23.12",
"minAppVersion": "1.8.7",
"description": "Sketch Your Mind. Edit and view Excalidraw drawings. Enter the world of 4D Visual PKM.",
"author": "Zsolt Viczian",
"authorUrl": "https://excalidraw-obsidian.online",
"fundingUrl": "https://ko-fi.com/zsolt",
"helpUrl": "https://github.com/zsviczian/obsidian-excalidraw-plugin#readme",
"isDesktopOnly": false
}
@@ -0,0 +1 @@
@font-face{font-family:Assistant;font-weight:400;src:url(https://unpkg.com/@zsviczian/excalidraw@0.17.6-2/dist/excalidraw-assets/Assistant-Regular.woff2) format("woff2");style:normal;display:swap}@font-face{font-family:Assistant;font-weight:500;src:url(https://unpkg.com/@zsviczian/excalidraw@0.17.6-2/dist/excalidraw-assets/Assistant-Medium.woff2) format("woff2");style:normal;display:swap}@font-face{font-family:Assistant;font-weight:600;src:url(https://unpkg.com/@zsviczian/excalidraw@0.17.6-2/dist/excalidraw-assets/Assistant-SemiBold.woff2) format("woff2");style:normal;display:swap}@font-face{font-family:Assistant;font-weight:700;src:url(https://unpkg.com/@zsviczian/excalidraw@0.17.6-2/dist/excalidraw-assets/Assistant-Bold.woff2) format("woff2");style:normal;display:swap}.excalidraw .github-corner{display:none}.excalidraw .context-menu-option-separator{margin:4px!important}.excalidraw .context-menu-option{box-shadow:none}.excalidraw .popover{background-color:transparent!important;border:0!important;overflow-y:auto!important;padding:0!important;position:fixed!important}.excalidraw .disable-zen-mode--visible{color:var(--text-primary-color)}.excalidraw .Island .scrollbar{--scrollbar-thumb-bg:silver}.excalidraw .ToolIcon__icon img{height:1rem}.ToolIcon button,.excalidraw button{box-shadow:none;justify-content:normal}.excalidraw{--default-button-size:2rem!important;--default-icon-size:1rem!important;--lg-button-size:1.8rem!important;--lg-icon-size:1rem!important;--editor-container-padding:var(--size-4-2)}.excalidraw .tray-zoom{height:var(--default-button-size);padding-bottom:.05rem;padding-top:.05rem;pointer-events:auto}.excalidraw.excalidraw-container.theme--dark{background-color:#121212;color:#fff}.excalidraw .color-picker-content{max-height:10rem;overflow-y:auto}.excalidraw .ToolIcon__keybinding{font-size:.45rem!important}.excalidraw label.color-input-container>input{max-width:5rem}.excalidraw .App-mobile-menu .panelColumn,.excalidraw .App-toolbar-content .dropdown-menu,.excalidraw .selected-shape-actions .panelColumn{max-height:70vh;overflow-y:auto}.excalidraw .App-mobile-menu{width:12.5rem!important}.excalidraw .panelColumn .buttonList{max-width:13rem}.excalidraw input[type=color]{height:1.65rem;width:1.65rem}.excalidraw input[type=color]::-webkit-color-swatch{height:1.65rem}.excalidraw input[type=color]::-webkit-color-swatch-wrapper{padding:0}.excalidraw :where(.mobile-misc-tools-container,.tray-misc-tools-container) .sidebar-trigger{background-color:unset;border-radius:0;box-shadow:none;--lg-button-size:var(--button-height,var(--default-button-size))}.excalidraw :where(.mobile-misc-tools-container,.tray-misc-tools-container) .sidebar-trigger:hover{background-color:var(--button-hover-bg)}.excalidraw :where(.mobile-misc-tools-container,.tray-misc-tools-container) .sidebar-trigger:active{background-color:var(--button-hover-bg);border:1px solid var(--button-active-border);box-shadow:none}.excalidraw .welcome-screen-center__logo svg{width:5rem!important}.excalidraw .Modal{background-color:initial;border:initial;height:auto;max-height:none;max-width:none;width:auto}.excalidraw .ttd-dialog-content textarea,.excalidraw input,.excalidraw textarea.ttd-dialog-input{caret-color:var(--excalidraw-caret-color)!important}.excalidraw .color-picker-content input[type=color]{filter:var(--theme-filter)}.excalidraw .ExcTextField__input input::placeholder{color:var(--select-highlight-color)}.excalidraw textarea::placeholder{color:var(--color-gray-50)}.excalidraw .ToolIcon_type_button{color:var(--text-primary-color)}.excalidraw .picker-content{grid-gap:.2rem!important}.excalidraw .picker-content button.picker-option{height:1.85rem!important;width:1.85rem!important}.excalidraw .picker{padding:.2rem!important}.excalidraw .context-menu{height:-webkit-fit-content;height:-moz-fit-content;height:fit-content}.excalidraw .App-bottom-bar .App-toolbar{justify-content:start}.excalidraw-left-handed .excalidraw .App-bottom-bar{justify-content:flex-end!important;left:auto!important;right:0!important;transform:none!important}.excalidraw-left-handed .excalidraw .App-bottom-bar .App-toolbar{justify-content:end}.excalidraw .excalidraw-ui-top-right.library-and-pen,.excalidraw.excalidraw--mobile .excalidraw-ui-top-right{align-items:center;flex-direction:row;flex-wrap:wrap;gap:var(--size-4-1);justify-content:center}.excalidraw .excalidraw-ui-top-right.library-and-pen .ToolIcon__penMode{margin:auto}.excalidraw :is(.mobile-misc-tools-container,.tray-misc-tools-container){margin-right:unset}.excalidraw :is(.mobile-misc-tools-container,.tray-misc-tools-container).layer-ui__wrapper__top-right--compact{gap:0}.excalidraw .FixedSideContainer_side_top{padding-top:0!important}.excalidraw .ToolIcon.ToolIcon__penMode{height:-webkit-fit-content;height:-moz-fit-content;height:fit-content}.excalidraw svg.svg-icon{color:var(--icon-fill-color)}.excalidraw input[type=radio]:active,.excalidraw input[type=radio]:checked,.excalidraw input[type=radio]:focus,.excalidraw Line truncated
+164
View File
@@ -0,0 +1,164 @@
{
"remoteType": "",
"useCustomRequestHandler": false,
"couchDB_URI": "",
"couchDB_USER": "",
"couchDB_PASSWORD": "",
"couchDB_DBNAME": "",
"liveSync": false,
"syncOnSave": false,
"syncOnStart": false,
"savingDelay": 200,
"lessInformationInLog": false,
"gcDelay": 0,
"versionUpFlash": "",
"minimumChunkSize": 20,
"longLineThreshold": 250,
"showVerboseLog": false,
"suspendFileWatching": false,
"trashInsteadDelete": true,
"periodicReplication": false,
"periodicReplicationInterval": 60,
"syncOnFileOpen": false,
"encrypt": true,
"passphrase": "",
"usePathObfuscation": true,
"doNotDeleteFolder": false,
"resolveConflictsByNewerFile": false,
"batchSave": false,
"batchSaveMinimumDelay": 5,
"batchSaveMaximumDelay": 60,
"deviceAndVaultName": "",
"usePluginSettings": false,
"showOwnPlugins": false,
"showStatusOnEditor": false,
"showStatusOnStatusbar": true,
"showOnlyIconsOnEditor": false,
"hideFileWarningNotice": 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\\/",
"syncInternalFilesTargetPatterns": "",
"syncInternalFilesInterval": 60,
"additionalSuffixOfDatabaseName": "f1ade7c0d39e389e",
"ignoreVersionCheck": false,
"lastReadUpdates": 25,
"deleteMetadataOfDeletedFiles": false,
"syncIgnoreRegEx": "",
"syncOnlyRegEx": "",
"customChunkSize": 60,
"readChunksOnline": true,
"watchInternalFileChanges": true,
"automaticallyDeleteMetadataOfDeletedFiles": 0,
"disableMarkdownAutoMerge": false,
"writeDocumentsIfConflicted": false,
"useDynamicIterationCount": false,
"syncAfterMerge": false,
"configPassphraseStore": "",
"encryptedPassphrase": "%$0Bn++WIBZ2BOvFO88xcBMWI0lFP8oyUEWm8NmaQcasMPFuFPKjzlKdrygBybfwWNqHRg9ksc2fKwXCtuos+LZKBld2NAaLVDZgQcn43fMazRA4NSQJKLyrdzUdZfbOQE36A64d+GXkgDguJ6tQ==",
"encryptedCouchDBConnection": "%$0Bn++WIBZ2BOvFO88xcBMWI0lFP8oyUEWm8NmaQcasMx5zEn8+oHlz2OSUO1+Fu+m/kVsHFE23tEN9vd+9T9vd4mB1wFxFTHhNY8PGEGZcSwmZR70OkFbaS4/shFa6zDV5GbsoJ2nGsYZx+R9i6V1xxWXNBcwrFGogtsqpccSU7FOKjUGz3bnwLPmgjTUCrkEEC4VU+Z3jauAyqfVsxKIgr/ApltJWz2Re92ATNnt606NACbtuDHe9phriQwg9XchMHAwn2GGJ1hy4uwB6ooqaPXjNkLZP98cO7Wv4pkRo6XDquhNeUZpp6Cl8SwSYBRhxqkAa+cPOF/npT6fw5CfoIF6gHJQdE1LpUOQtg/WoeDIzm8Joh91aiicPI1H4Cg7FTEJNNsUVxHp2v8S3p8DuWrK4amvHKsRR85O/NMu5OMuqOSEgoMnpI2rmUhCqNe4lznk1q2nk9vG44hyw26LK46nn7JM5ZOXgVKIwv4Znaxpde0pSx7t3y69ud9xdFChsRdZv37Twe91MM055/JyIBi1NqSu3UTGeCuG1wh2GUdiRA5/LsnBc3mNCWtFIDP0LYP4wxHHrd7AE2yHqPktFVpX5hNHb+oW5m6nPhPgLNzJkWdR/5OaARbJpJh6ZjedLV4houh3GLIqqnOAVKWTECxH2aBffGGXI/NqXMnmTHteD8=",
"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": false,
"pluginSyncExtendedSetting": {},
"syncMaxSizeInMB": 50,
"settingSyncFile": "",
"writeCredentialsForSettingSync": false,
"notifyAllSettingSyncFile": false,
"isConfigured": true,
"settingVersion": 10,
"enableCompression": false,
"accessKey": "",
"bucket": "",
"endpoint": "",
"region": "",
"secretKey": "",
"useEden": false,
"maxChunksInEden": 10,
"maxTotalLengthInEden": 1024,
"maxAgeInEden": 10,
"disableCheckingConfigMismatch": false,
"displayLanguage": "def",
"enableChunkSplitterV2": false,
"disableWorkerForGeneratingChunks": false,
"processSmallFilesInUIThread": false,
"notifyThresholdOfRemoteStorageSize": 5285,
"usePluginSyncV2": true,
"usePluginEtc": false,
"handleFilenameCaseSensitive": false,
"doNotUseFixedRevisionForChunks": true,
"showLongerLogInsideEditor": false,
"sendChunksBulk": false,
"sendChunksBulkMaxSize": 1,
"useSegmenter": true,
"useAdvancedMode": false,
"usePowerUserMode": false,
"useEdgeCaseMode": false,
"enableDebugTools": false,
"suppressNotifyHiddenFilesChange": false,
"syncMinimumInterval": 2000,
"P2P_Enabled": false,
"P2P_AutoAccepting": 0,
"P2P_AppID": "self-hosted-livesync",
"P2P_roomID": "",
"P2P_passphrase": "",
"P2P_relays": "wss://exp-relay.vrtmrz.net/",
"P2P_AutoBroadcast": false,
"P2P_AutoStart": false,
"P2P_AutoSyncPeers": "",
"P2P_AutoWatchPeers": "",
"P2P_SyncOnReplication": "",
"P2P_RebuildFrom": "",
"P2P_AutoAcceptingPeers": "",
"P2P_AutoDenyingPeers": "",
"P2P_IsHeadless": false,
"P2P_DevicePeerName": "",
"P2P_turnServers": "",
"P2P_turnUsername": "",
"P2P_turnCredential": "",
"doctorProcessedVersion": "0.25.0",
"bucketCustomHeaders": "",
"couchDB_CustomHeaders": "",
"useJWT": false,
"jwtAlgorithm": "",
"jwtKey": "",
"jwtKid": "",
"jwtSub": "",
"jwtExpDuration": 5,
"useRequestAPI": false,
"bucketPrefix": "",
"chunkSplitterVersion": "v3-rabin-karp",
"E2EEAlgorithm": "v2",
"processSizeMismatchedFiles": false,
"forcePathStyle": true,
"syncInternalFileOverwritePatterns": "",
"useOnlyLocalChunk": false,
"configPassphrase": "",
"preset": "",
"syncMode": "ONEVENTS",
"dummy": 0
}
+19
View File
@@ -0,0 +1,19 @@
/*
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";function Logger(message,level,key3){_logger(message,level,key3)}function __logger(message,baseLevel,flagsOrKey,key3){let level=baseLevel;"string"==typeof flagsOrKey?key3=flagsOrKey:void 0!==flagsOrKey&&(level|=flagsOrKey);_logger(message,level,key3)}function info(message,flagsOrKey,key3){__logger(message,LEVEL_INFO,flagsOrKey,key3)}function isMetaEntry(entry){return"children"in entry}function statusDisplay(status){return status?"EXPERIMENTAL"==status?" (Experimental)":"ALPHA"==status?" (Alpha)":"BETA"==status?" (Beta)":` (${status})`:""}function confName(key3,alt=""){var _a8,_b5;return key3 in configurationNames?`${null==(_a8=configurationNames[key3])?void 0:_a8.name}${statusDisplay(null==(_b5=configurationNames[key3])?void 0:_b5.status)}`:`${alt||""}`}function numeric(str){return isNaN(str)?str.charCodeAt(0):parseInt(str,10)}function escapeBraces(str){return str.replace(slashPattern,escSlash).replace(openPattern,escOpen).replace(closePattern,escClose).replace(commaPattern,escComma).replace(periodPattern,escPeriod)}function unescapeBraces(str){return str.replace(escSlashPattern,"\\").replace(escOpenPattern,"{").replace(escClosePattern,"}").replace(escCommaPattern,",").replace(escPeriodPattern,".")}function parseCommaParts(str){if(!str)return[""];const parts=[],m3=balanced("{","}",str);if(!m3)return str.split(",");const{pre,body,post}=m3,p4=pre.split(",");p4[p4.length-1]+="{"+body+"}";const postParts=parseCommaParts(post);if(post.length){p4[p4.length-1]+=postParts.shift();p4.push.apply(p4,postParts)}parts.push.apply(parts,p4);return parts}function expand(str){if(!str)return[];"{}"===str.slice(0,2)&&(str="\\{\\}"+str.slice(2));return expand_(escapeBraces(str),!0).map(unescapeBraces)}function embrace(str){return"{"+str+"}"}function isPadded(el){return/^-?0\d/.test(el)}function lte(i2,y2){return i2<=y2}function gte(i2,y2){return i2>=y2}function expand_(str,isTop){const expansions=[],m3=balanced("{","}",str);if(!m3)return[str];const pre=m3.pre,post=m3.post.length?expand_(m3.post,!1):[""];if(/\$$/.test(m3.pre))for(let k2=0;k2<post.length;k2++){const expansion=pre+"{"+m3.body+"}"+post[k2];expansions.push(expansion)}else{const isNumericSequence=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m3.body),isAlphaSequence=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m3.body),isSequence=isNumericSequence||isAlphaSequence,isOptions=m3.body.indexOf(",")>=0;if(!isSequence&&!isOptions)return m3.post.match(/,(?!,).*\}/)?expand_(str=m3.pre+"{"+m3.body+escClose+m3.post):[str];let n3,N3;if(isSequence)n3=m3.body.split(/\.\./);else{n3=parseCommaParts(m3.body);if(1===n3.length&&void 0!==n3[0]){n3=expand_(n3[0],!1).map(embrace);if(1===n3.length)return post.map((p4=>m3.pre+n3[0]+p4))}}if(isSequence&&void 0!==n3[0]&&void 0!==n3[1]){const x2=numeric(n3[0]),y2=numeric(n3[1]),width=Math.max(n3[0].length,n3[1].length);let incr=3===n3.length&&void 0!==n3[2]?Math.abs(numeric(n3[2])):1,test=lte;if(y2<x2){incr*=-1;test=gte}const pad2=n3.some(isPadded);N3=[];for(let i2=x2;test(i2,y2);i2+=incr){let c3;if(isAlphaSequence){c3=String.fromCharCode(i2);"\\"===c3&&(c3="")}else{c3=String(i2);if(pad2){const need=width-c3.length;if(need>0){const z2=new Array(need+1).join("0");c3=i2<0?"-"+z2+c3.slice(1):z2+c3}}}N3.push(c3)}}else{N3=[];for(let j2=0;j2<n3.length;j2++)N3.push.apply(N3,expand_(n3[j2],!1))}for(let j2=0;j2<N3.length;j2++)for(let k2=0;k2<post.length;k2++){const expansion=pre+N3[j2]+post[k2];(!isTop||isSequence||expansion)&&expansions.push(expansion)}}return expansions}async function getWebCrypto(){if(webcrypto)return webcrypto;if(globalThis.crypto)return webcrypto=globalThis.crypto;{const module2=await import("crypto");return webcrypto=module2.webcrypto}}function base64ToArrayBufferNative(base64){if(0===base64.length)return new ArrayBuffer(0);try{if("string"==typeof base64)return Uint8Array.fromBase64(base64).buffer;const bufItems=base64.map((e3=>Uint8Array.fromBase64(e3).buffer)),len=bufItems.reduce(((p4,c3)=>p4+c3.byteLength),0),joinedArray=new Uint8Array(len);let offset=0;bufItems.forEach((e3=>{joinedArray.set(new Uint8Array(e3),offset);offset+=e3.byteLength}));return joinedArray.buffer}catch(ex){Logger("Base64 Decode error",LOG_LEVEL_VERBOSE);Logger(ex,LOG_LEVEL_VERBOSE);return new ArrayBuffer(0)}}function base64ToArrayBufferInternalBrowser(base64){try{const binary_string=globalThis.atob(base64),len=binary_string.length,bytes=new Uint8Array(len);for(let i2=0;i2<len;i2++)bytes[i2]=binary_string.charCodeAt(i2);return bytes.buffer}catch(ex){Logger("Base64 Decode error",LOG_LEVEL_VERBOSE);Logger(ex,LOG_LEVEL_VERBOSE);return new ArrayBuffer(0)}}function arrayBufferToBase64internalBrowser(buffer){return new Promise(((res2,rej)=>{const blob=new Blob([buffer],{type:"application/octet-binary"}),reader=new FileReader;reader.onload=function(evt){var _a8,_b5;const dataURI=(null==(_b5=null==(_a8=evt.target)?void 0:_a8.result)?void 0:_b5.toString())||"";if(0!=buffer.byteLength&&(""==dataURI||"data:"==dataURI))return rej(new TypeError("Could not parse tLine truncated
/*! Bundled license information:
octagonal-wheels/dist/encoding/encodeobject.js:
(* istanbul ignore if -- @preserve *)
@noble/secp256k1/index.js:
(*! noble-secp256k1 - MIT License (c) 2019 Paul Miller (paulmillr.com) *)
octagonal-wheels/dist/encryption/hkdf.js:
(* istanbul ignore if -- @preserve *)
(* istanbul ignore next -- @preserve *)
*/__export(main_exports,{default:()=>ObsidianLiveSyncPlugin});module.exports=__toCommonJS(main_exports);LOG_LEVEL_DEBUG=-1;LEVEL_INFO=LOG_LEVEL_INFO=32;LEVEL_NOTICE=LOG_LEVEL_NOTICE=64;LOG_LEVEL_VERBOSE=16;defaultLoggerEnv_minLogLevel=LOG_LEVEL_INFO;_logger=function defaultLogger2(message,level=LEVEL_INFO,key3){if(level<defaultLoggerEnv_minLogLevel)return;const newMessage=`${(new Date).toLocaleString()}\t${level}\t${"string"==typeof message?message:message instanceof Error?`${message.name}:${message.message}`:JSON.stringify(message,null,2)}`;1&level?console.debug(newMessage):4&level?console.warn(newMessage):8&level?console.error(newMessage):2&level?console.info(newMessage):console.log(newMessage);message instanceof Error&&console.dir(message.stack)};RESULT_TIMED_OUT=Symbol("timed out");Symbol("NotFound");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");Symbol("infinity");MILESTONE_DOCID="_local/obsydian_livesync_milestone";NODEINFO_DOCID="_local/obsydian_livesync_nodeinfo";MODE_SELECTIVE=0;MODE_AUTOMATIC=1;MODE_PAUSED=2;MODE_SHINY=3;REMOTE_COUCHDB=RemoteTypes_REMOTE_COUCHDB="";REMOTE_MINIO=RemoteTypes_REMOTE_MINIO="MINIO";REMOTE_P2P=RemoteTypes_REMOTE_P2P="ONLY_P2P";AutoAccepting=(AutoAccepting2=>{AutoAccepting2[AutoAccepting2.NONE=0]="NONE";AutoAccepting2[AutoAccepting2.ALL=1]="ALL";return AutoAccepting2})(AutoAccepting||{});P2P_DEFAULT_SETTINGS={P2P_Enabled:!1,P2P_AutoAccepting:0,P2P_AppID:"self-hosted-livesync",P2P_roomID:"",P2P_passphrase:"",P2P_relays:"wss://exp-relay.vrtmrz.net/",P2P_AutoBroadcast:!1,P2P_AutoStart:!1,P2P_AutoSyncPeers:"",P2P_AutoWatchPeers:"",P2P_SyncOnReplication:"",P2P_RebuildFrom:"",P2P_AutoAcceptingPeers:"",P2P_AutoDenyingPeers:"",P2P_IsHeadless:!1,P2P_DevicePeerName:"",P2P_turnServers:"",P2P_turnUsername:"",P2P_turnCredential:""};E2EEAlgorithmNames={"":"V1: Legacy",v2:"V2: AES-256-GCM With HKDF",forceV1:"Force-V1: Force Legacy (Not recommended)"};E2EEAlgorithms={V1:"",V2:"v2",ForceV1:"forceV1"};ChunkAlgorithmNames={v1:"V1: Legacy",v2:"V2: Simple (Default)","v2-segmenter":"V2.5: Lexical chunks","v3-rabin-karp":"V3: Fine deduplication"};DEFAULT_SETTINGS={remoteType:REMOTE_COUCHDB,useCustomRequestHandler:!1,couchDB_URI:"",couchDB_USER:"",couchDB_PASSWORD:"",couchDB_DBNAME:"",liveSync:!1,syncOnSave:!1,syncOnStart:!1,savingDelay:200,lessInformationInLog:!1,gcDelay:300,versionUpFlash:"",minimumChunkSize:20,longLineThreshold:250,showVerboseLog:!1,suspendFileWatching:!1,trashInsteadDelete:!0,periodicReplication:!1,periodicReplicationInterval:60,syncOnFileOpen:!1,encrypt:!1,passphrase:"",usePathObfuscation:!1,doNotDeleteFolder:!1,resolveConflictsByNewerFile:!1,batchSave:!1,batchSaveMinimumDelay:5,batchSaveMaximumDelay:60,deviceAndVaultName:"",usePluginSettings:!1,showOwnPlugins:!1,showStatusOnEditor:!0,showStatusOnStatusbar:!0,showOnlyIconsOnEditor:!1,hideFileWarningNotice:!1,usePluginSync:!1,autoSweepPlugins:!1,autoSweepPluginsPeriodic:!1,notifyPluginOrSettingUpdated:!1,checkIntegrityOnSave:!1,batch_size:25,batches_limit:25,useHistory:!1,disableRequestURI:!1,skipOlderFilesOnSync:!0,checkConflictOnlyOnOpen:!1,showMergeDialogOnlyOnActive:!1,syncInternalFiles:!1,syncInternalFilesBeforeReplication:!1,syncInternalFilesIgnorePatterns:"\\/node_modules\\/, \\/\\.git\\/, \\/obsidian-livesync\\/",syncInternalFilesTargetPatterns:"",syncInternalFilesInterval:60,additionalSuffixOfDatabaseName:"",ignoreVersionCheck:!1,lastReadUpdates:0,deleteMetadataOfDeletedFiles:!1,syncIgnoreRegEx:"",syncOnlyRegEx:"",customChunkSize:0,readChunksOnline:!0,watchInternalFileChanges:!0,automaticallyDeleteMetadataOfDeletedFiles:0,disableMarkdownAutoMerge:!1,writeDocumentsIfConflicted:!1,useDynamicIterationCount:!1,syncAfterMerge:!1,configPassphraseStore:"",encryptedPassphrase:"",encryptedCouchDBConnection:"",permitEmptyPassphrase:!1,useIndexedDBAdapter:!1,useTimeouts:!1,writeLogToTheFile:!1,doNotPaceReplication:!1,hashCacheMaxCount:300,hashCacheMaxAmount:50,concurrencyOfReadChunksOnline:40,minimumIntervalOfReadChunksOnline:50,hashAlg:"xxhash64",suspendParseReplicationResult:!1,doNotSuspendOnFetching:!1,useIgnoreFiles:!1,ignoreFiles:".gitignore",syncOnEditorSave:!1,pluginSyncExtendedSetting:{},syncMaxSizeInMB:50,settingSyncFile:"",writeCredentialsForSettingSync:!1,notifyAllSettingSyncFile:!1,isConfigured:void 0,settingVersion:10,enableCompression:!1,accessKey:"",bucket:"",endpoint:"",region:"auto",secretKey:"",useEden:!1,maxChunksInEden:10,maxTotalLengthInEden:1024,maxAgeInEden:10,disableCheckingConfigMismatch:!1,displayLanguage:"",enableChunkSplitterV2:!1,disableWorkerForGeneratingChunks:!1,processSmallFilesInUIThread:!1,notifyThresholdOfRemoteStorageSize:-1,usePluginSyncV2:!1,usePluginEtc:!1,handleFilenameCaseSensitive:void 0,doNotUseFixedRevisionForChunks:!0,showLongerLogInsideEditor:!1,sendChunksBulk:!1,sendChunksBulkMaxSize:1,useSegmenter:!1,useAdvancedMode:!1,usePLine truncated
/* nosourcemap */
+10
View File
@@ -0,0 +1,10 @@
{
"id": "obsidian-livesync",
"name": "Self-hosted LiveSync",
"version": "0.25.34",
"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
}
+481
View File
@@ -0,0 +1,481 @@
.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);
}
.conflict-dev-name {
display: inline-block;
min-width: 5em;
}
.op-scrollable {
overflow-y: scroll;
/* min-height: 280px; */
max-height: 280px;
user-select: text;
-webkit-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%;
}
.sls-setting-tab {
display: none;
}
div.sls-setting-menu-btn {
color: var(--text-normal);
background-color: var(--background-secondary-alt);
border-radius: 8px;
padding: 6px 10px;
cursor: pointer;
margin-right: 2px;
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-wrapper {
display: flex;
flex-direction: column;
flex-grow: 1;
position: sticky;
top: 0;
backdrop-filter: blur(15px);
padding: 4px;
border-radius: 10px;
z-index: 10;
}
.sls-setting-menu {
display: flex;
flex-direction: row;
overflow-x: auto;
}
body {
--sls-col-transparent: transparent;
--sls-col-warn: rgba(var(--background-modifier-error-rgb), 0.1);
--sls-col-warn-stripe1: var(--sls-col-transparent);
--sls-col-warn-stripe2: var(--sls-col-warn);
}
.sls-setting-menu-buttons {
border: 1px solid var(--sls-col-warn);
padding: 2px;
margin: 1px;
border-radius: 4px;
background-image: linear-gradient(-45deg,
var(--sls-col-warn-stripe1) 25%, var(--sls-col-warn-stripe2) 25%, var(--sls-col-warn-stripe2) 50%,
var(--sls-col-warn-stripe1) 50%, var(--sls-col-warn-stripe1) 75%, var(--sls-col-warn-stripe2) 75%, var(--sls-col-warn-stripe2));
background-size: 30px 30px;
display: flex;
flex-direction: row;
justify-content: flex-end;
padding: 0.5em 0.25em;
justify-content: center;
align-items: center;
/* transition: background-position 1s; */
animation: sls-scroll-warn 1s linear 0s infinite;
}
@keyframes sls-scroll-warn {
0% {
background-position: 0 0;
}
100% {
background-position: 30px 0;
}
}
.sls-setting-menu-buttons label {
margin-right: auto;
flex-grow: 1;
color: var(--text-warning);
}
.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-item-dirty-help::after {
content: " ❓";
}
.sls-item-invalid-value {
background-color: rgba(var(--background-modifier-error-rgb), 0.3) !important;
}
.sls-setting-disabled input[type=text],
.sls-setting-disabled input[type=number],
.sls-setting-disabled input[type=password] {
filter: brightness(80%);
color: var(--text-muted);
}
.sls-setting-hidden {
display: none;
}
.sls-setting-obsolete {
background-image: linear-gradient(-45deg,
var(--sls-col-warn-stripe1) 25%, var(--sls-col-warn-stripe2) 25%, var(--sls-col-warn-stripe2) 50%,
var(--sls-col-warn-stripe1) 50%, var(--sls-col-warn-stripe1) 75%, var(--sls-col-warn-stripe2) 75%, var(--sls-col-warn-stripe2));
background-image: linear-gradient(-45deg,
transparent 25%, rgba(var(--background-secondary), 0.1) 25%, rgba(var(--background-secondary), 0.1) 50%, transparent 50%, transparent 75%, rgba(var(--background-secondary), 0.1) 75%, rgba(var(--background-secondary), 0.1));
background-size: 60px 60px;
}
.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;
}
}
.livesync-status {
user-select: none;
pointer-events: none;
height: auto;
min-height: 1em;
position: absolute;
background-color: transparent;
width: 100%;
padding: 10px;
padding-right: 16px;
top: var(--header-height);
z-index: calc(var(--layer-cover) + 1);
font-variant-numeric: tabular-nums;
tab-size: 4;
text-align: right;
white-space: pre-wrap;
display: inline-block;
color: var(--text-normal);
font-size: 80%;
}
div.workspace-leaf-content[data-type=bases] .livesync-status {
top: calc(var(--bases-header-height) + var(--header-height));
padding: 5px;
padding-right: 18px;
}
.is-mobile div.workspace-leaf-content[data-type=bases] .livesync-status {
top: calc(var(--bases-header-height) + var(--view-header-height));
padding: 6px;
padding-right: 18px;
}
.livesync-status div {
opacity: 0.6;
-webkit-filter: grayscale(100%);
filter: grayscale(100%);
}
.livesync-status .livesync-status-loghistory {
text-align: left;
opacity: 0.4;
}
.livesync-status div.livesync-status-messagearea:empty {
display: none;
}
.livesync-status div.livesync-status-messagearea:not(:empty) {
opacity: 0.6;
color: var(--text-on-accent);
border: 1px solid var(--background-modifier-error);
background-color: rgba(var(--background-modifier-error-rgb), 0.2);
-webkit-filter: unset;
filter: unset;
width: fit-content;
margin-left: auto;
}
.menu-setting-poweruser-disabled .sls-setting-poweruser {
display: none;
}
.menu-setting-advanced-disabled .sls-setting-advanced {
display: none;
}
.menu-setting-edgecase-disabled .sls-setting-edgecase {
display: none;
}
.sls-setting-panel-title {
position: sticky;
font-size: medium;
top: 2.5em;
background-color: var(--background-secondary-alt);
border-radius: 10px;
padding: 0.5em 1.0em;
}
.active-pane .sls-setting-panel-title {
border: 1px solid var(--interactive-accent);
}
.sls-dialogue-note-wrapper {
display: flex;
justify-content: flex-end;
align-items: center;
}
.sls-dialogue-note-countdown {
font-size: 0.8em;
}
.sls-qr {
display: flex;
justify-content: center;
align-items: center;
max-width: max-content;
}
.sls-keypair pre {
max-width: 100%;
overflow-x: auto;
white-space: pre-wrap;
word-break: break-all;
}