Files
server-configs/siyuan/data/plugins/siyuan_doctree_fake_subfolder/index.js

14 lines
16 KiB
JavaScript
Raw Normal View History

2026-02-13 22:24:27 +08:00
"use strict";var T=Object.defineProperty;var M=(a,e,t)=>e in a?T(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var o=(a,e,t)=>M(a,typeof e!="symbol"?e+"":e,t);const u=require("siyuan");async function U(a,e){let t=await u.fetchSyncPost(a,e);return t.code===0?t.data:null}const V=a=>{let e;switch(a){case"checkbox":e=t=>t.checked;break;case"select":case"slider":case"textinput":case"textarea":e=t=>t.value;break;case"number":e=t=>parseInt(t.value);break;default:e=()=>null;break}return e},C=a=>{let e;switch(a){case"checkbox":e=(t,s)=>{t.checked=s};break;case"select":case"slider":case"textinput":case"textarea":case"number":e=(t,s)=>{t.value=s};break;default:e=()=>{};break}return e};class B{constructor(e){o(this,"plugin");o(this,"name");o(this,"file");o(this,"settings",new Map);o(this,"elements",new Map);this.name=e.name??"settings",this.plugin=e.plugin,this.file=this.name.endsWith(".json")?this.name:`${this.name}.json`,this.plugin.setting=new u.Setting({width:e.width,height:e.height,confirmCallback:()=>{for(let s of this.settings.keys())this.updateValueFromElement(s);let t=this.dump();e.callback!==void 0&&e.callback(t),this.plugin.data[this.name]=t,this.save(t),window.location.reload()},destroyCallback:()=>{for(let t of this.settings.keys())this.updateElementFromValue(t)}})}async load(){let e=await this.plugin.loadData(this.file);if(console.debug("Load config:",e),e)for(let[t,s]of this.settings)s.value=(e==null?void 0:e[t])??s.value;return this.plugin.data[this.name]=this.dump(),e}async save(e){return e=e??this.dump(),await this.plugin.saveData(this.file,this.dump()),console.debug("Save config:",e),e}get(e){var t;return(t=this.settings.get(e))==null?void 0:t.value}set(e,t){let s=this.settings.get(e);s&&(s.value=t,this.updateElementFromValue(e))}async setAndSave(e,t){let s=this.settings.get(e);s&&(s.value=t,this.updateElementFromValue(e),await this.save())}take(e,t=!1){let s=this.settings.get(e),n=this.elements.get(e);if(n)return t&&this.updateValueFromElement(e),s.getEleVal(n)}async takeAndSave(e){let t=this.take(e,!0);return await this.save(),t}disable(e){let t=this.elements.get(e);t&&(t.disabled=!0)}enable(e){let t=this.elements.get(e);t&&(t.disabled=!1)}dump(){let e={};for(let[t,s]of this.settings)s.type!=="button"&&(e[t]=s.value);return e}addItem(e){if(this.settings.set(e.key,e),e.type==="custom"&&(e.createElement===void 0||e.getEleVal===void 0||e.setEleVal===void 0)){console.error("The custom setting item must have createElement, getEleVal and setEleVal methods");return}if(e.getEleVal===void 0&&(e.getEleVal=V(e.type)),e.setEleVal===void 0&&(e.setEleVal=C(e.type)),e.createElement===void 0){let n=this.createDefaultElement(e);this.elements.set(e.key,n),this.plugin.setting.addItem({title:e.title,description:e==null?void 0:e.description,direction:e==null?void 0:e.direction,createActionElement:()=>(this.updateElementFromValue(e.key),this.getElement(e.key))})}else this.plugin.setting.addItem({title:e.title,description:e==null?void 0:e.description,direction:e==null?void 0:e.direction,createActionElement:()=>{let n=this.get(e.key),i=e.createElement(n);return this.elements.set(e.key,i),i}})}createDefaultElement(e){var n,i,l,d,h,f,k,v,y;let t;const s=c=>{c.key==="Enter"&&(c.preventDefault(),c.stopImmediatePropagation())};switch(e.type){case"checkbox":let c=document.createElement("input");c.type="checkbox",c.checked=e.value,c.className="b3-switch fn__flex-center",t=c,c.onchange=((n=e.action)==null?void 0:n.callback)??(()=>{});break;case"select":let b=document.createElement("select");b.className="b3-select fn__flex-center fn__size200";let m=(e==null?void 0:e.options)??{};for(let _ in m){let w=document.createElement("option"),D=m[_];w.value=_,w.text=D,b.appendChild(w)}b.value=e.value,b.onchange=((i=e.action)==null?void 0:i.callback)??(()=>{}),t=b;break;case"slider":let r=document.createElement("input");r.type="range",r.className="b3-slider fn__size200 b3-tooltips b3-tooltips__n",r.ariaLabel=e.value,r.min=((l=e.slider)==null?void 0:l.min.toString())??"0",r.max=((d=e.slider)==null?void 0:d.max.toString())??"100",r.step=(
<symbol id="iconDoctreeFakeSubfolderNormalMode" viewBox="0 0 48 48">
<path d="M26,30H42a2,2,0,0,0,2-2V20a2,2,0,0,0-2-2H26a2,2,0,0,0-2,2v2H16V14h6a2,2,0,0,0,2-2V4a2,2,0,0,0-2-2H6A2,2,0,0,0,4,4v8a2,2,0,0,0,2,2h6V40a2,2,0,0,0,2,2H24v2a2,2,0,0,0,2,2H42a2,2,0,0,0,2-2V36a2,2,0,0,0-2-2H26a2,2,0,0,0-2,2v2H16V26h8v2A2,2,0,0,0,26,30Z"></path>
</symbol>
`),this.addIcons(`
<symbol id="iconDoctreeFakeSubfolderCaptureMode" viewBox="0 0 48 48">
<path d="M42,4H6A2,2,0,0,0,4,6V42a2,2,0,0,0,2,2H42a2,2,0,0,0,2-2V6A2,2,0,0,0,42,4ZM34,26H26v8a2,2,0,0,1-4,0V26H14a2,2,0,0,1,0-4h8V14a2,2,0,0,1,4,0v8h8a2,2,0,0,1,0,4Z"></path>
</symbol>
`),this.addIcons(`
<symbol id="iconDoctreeFakeSubfolderRevealMode" viewBox="0 0 24 24">
<path d="M3 14C3 9.02944 7.02944 5 12 5C16.9706 5 21 9.02944 21 14M17 14C17 16.7614 14.7614 19 12 19C9.23858 19 7 16.7614 7 14C7 11.2386 9.23858 9 12 9C14.7614 9 17 11.2386 17 14Z"></path>
</symbol>
`),this.frontend=u.getFrontend(),this.backend=u.getBackend(),this.isPhone=this.frontend==="mobile"||this.frontend==="browser-mobile",this.isTablet=(this.frontend==="desktop"||this.frontend==="browser-desktop")&&this.backend==="ios"||(this.frontend==="desktop"||this.frontend==="browser-desktop")&&this.backend==="android"||(this.frontend==="desktop"||this.frontend==="browser-desktop")&&this.backend==="harmony"||(this.frontend==="desktop"||this.frontend==="browser-desktop")&&this.backend==="docker",this.isDesktop=(this.frontend==="desktop"||this.frontend==="browser-desktop"||this.frontend==="desktop-window")&&this.backend!="ios"&&this.backend!="android"&&this.backend!="harmony"&&this.backend!="docker"}updateTopBarButtonStyles(t,s){const n=(i,l)=>{i.style.backgroundColor=l?"var(--b3-toolbar-color)":"var(--b3-toolbar-background)",i.style.color=l?"var(--b3-toolbar-background)":"var(--b3-toolbar-color)"};n(s.normal,t==="normal"),n(s.capture,t==="capture"),n(s.reveal,t==="reveal")}switchMode(t,s){this.to_normal_mode_count<2&&this.to_normal_mode_count++,this.mode=t,this.updateTopBarButtonStyles(t,s);const n={normal:{text:this.i18n.enterNormalMode,duration:2e3},capture:{text:this.i18n.enterCaptureMode,duration:8e3},reveal:{text:this.i18n.enterRevealMode,duration:8e3}},{text:i,duration:l}=n[t];this.to_normal_mode_count>=2&&u.showMessage(i,l)}onLayoutReady(){console.log(this.frontend,this.backend),console.log(this.isPhone,this.isTablet,this.isDesktop),this.initListener(),this.settingUtils.load();const t=this.settingUtils.get("emojies_that_should_be_treated_as_subfolder");this.treatAsSubfolderEmojiSet=I(t);const s=this.settingUtils.get("ids_that_should_be_treated_as_subfolder");if(this.treatAsSubfolderIdSet=I(s),this.settingUtils.get("enable_mode_switch_buttons")){const n={normal:this.addTopBar({icon:"iconDoctreeFakeSubfolderNormalMode",title:this.i18n.normalMode,position:"left",callback:()=>this.switchMode("normal",n)}),capture:this.addTopBar({icon:"iconDoctreeFakeSubfolderCaptureMode",title:this.i18n.captureMode,position:"left",callback:()=>this.switchMode("capture",n)}),reveal:this.addTopBar({icon:"iconDoctreeFakeSubfolderRevealMode",title:this.i18n.revealMode,position:"left",callback:()=>this.switchMode("reveal",n)})};this.settingUtils.get("enable_auto_mode")&&!this.settingUtils.get("enable_using_id_as_subfolder_identify")&&(n.capture.style.display="none"),this.switchMode("normal",n)}}async onunload(){this.mutationObserver&&(this.mutationObserver.disconnect(),this.mutationObserver=null,console.log("MutationObserver disconnected"))}uninstall(){}}module.exports=L;