// ==UserScript== // @name Kbin Subscriptions Panel // @namespace https://perry.dev // @license MIT // @version 2.4 // @description Adds a side panel with all magazine subscriptions. // @author Daniel Pervan // @match https://kbin.social/* // @icon https://www.google.com/s2/favicons?sz=64&domain=kbin.social // @downloadURL none // ==/UserScript== (function () { 'use strict'; (()=>{var f=(c,e)=>()=>(c&&(e=c(c=0)),e);var ie=(c,e)=>()=>(e||c((e={exports:{}}).exports,e),e.exports);function R(c){if(typeof document<"u"){var e=document.createElement("style"),t=document.createTextNode(c);e.appendChild(t),document.head.appendChild(e)}}var Y=f(()=>{});var U=f(()=>{Y();R('body.extend-width:not(.subscription-panel-force-mobile,.subscription-panel-open) .kbin-container{max-width:1620px}.subscription-panel-modal{position:fixed;top:0;left:0;width:100%;height:100%;z-index:99;background-color:#00000080;display:flex;align-items:center;justify-content:center;backdrop-filter:blur(2px)}.subscription-panel-modal-content{background-color:var(--kbin-section-bg);border:var(--kbin-options-border);color:var(--kbin-section-text-color);padding:2rem 1rem;height:fit-content;font-size:.8em;position:relative;max-width:600px;min-width:400px;width:100%;animation:modalopen .2s ease-in-out}.subscription-panel-modal-content h1,.subscription-panel-modal-content h2{margin-top:0;text-align:center}.subscription-panel-modal-content .close{color:#aaa;font-size:28px;cursor:pointer;position:absolute;top:.5rem;right:1rem}.subscription-panel-modal-content .close:hover{color:var(--kbin-sidebar-header-text-color)}body.rounded-edges .subscription-panel-modal-content{border-radius:.5rem}body.rounded-edges #subscription-panel-content{border-radius:0 0 .5rem .5rem}body.rounded-edges .subscription-panel-modal .danger{border-radius:.5rem}body.subscription-panel-sticky:not(.subscription-panel-open).fixed-navbar.topbar #subscription-panel-content{top:calc(50.5px + 1.1rem);max-height:calc(100vh - 50px - 1.1rem - 1em)}body.subscription-panel-sticky:not(.subscription-panel-open).fixed-navbar #subscription-panel-content{top:50px;max-height:calc(100vh - 50px - 1em)}body.subscription-panel-sticky:not(.subscription-panel-open).topbar #subscription-panel-content{top:1.1rem;max-height:calc(100vh - 1.1rem - 1em)}body.subscription-panel-sticky:not(.subscription-panel-open) #subscription-panel-content{position:sticky;overflow:auto;max-height:calc(100vh - 1em);top:0}body.subscription-panel-sticky:not(.subscription-panel-open) #subscription-panel-content>h3{position:sticky;top:-2.5em;background:var(--kbin-section-bg);z-index:3;margin-bottom:0}body.subscription-panel-sticky:not(.subscription-panel-open) #subscription-panel-content .search-box-container{position:sticky;top:1.25em;z-index:3;padding:1em 0;background:var(--kbin-section-bg)}body.subscription-panel-sticky:not(.subscription-panel-open) #subscription-panel-content .search-box-container .search-box-clear{top:1.2em}body.subscription-panel-sticky:not(.subscription-panel-open) #subscription-panel-content .last-clicked-container h3{position:sticky;top:7em;margin-top:0;z-index:2;background:var(--kbin-section-bg)}body.subscription-panel-sticky:not(.subscription-panel-open).subscription-panel-collapsed #subscription-panel-content .last-clicked-container h3{top:-1em;padding-top:1em}body.subscription-panel-sticky:not(.subscription-panel-open) #subscription-panel.edit-mode #subscription-panel-content{padding-top:0}body.subscription-panel-sticky:not(.subscription-panel-open) #subscription-panel.edit-mode .search-box-container{top:3.5em;margin-top:1em;padding:0 0 1em}body.subscription-panel-sticky:not(.subscription-panel-open) #subscription-panel.edit-mode #subscription-panel-edit-button{position:sticky;top:-.5em;margin:0;padding-top:1em;z-index:5;background:var(--kbin-section-bg)}#subscription-panel .search-box-container{position:relative}#subscription-panel .search-box-clear{position:absolute;top:.6em;right:1em;font-size:1.5em;display:none;cursor:pointer;transition:color .2s ease-in-out;animation:searchBoxClearShow .25s ease-in-out}@keyframes searchBoxClearShow{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}#subscription-panel .search-box-clear:hover{color:var(--kbin-sidebar-header-text-color)}#subscription-panel .search-box-clear.active{display:block}#subscription-panel-edit-button{position:absolute;top:0;left:0;margin:.5rem;padding:.5rem;z-index:5;color:var(--kbin-section-text-color);font-size:.8em;cursor:pointer;transition:font-size .2s ease-in-out}#subscription-panel-edit-button i{transition:transform .2s ease-in-out}#subscription-panel-edit-button:not(.active):hover i{color:var(--kbin-sidebar-header-text-color);transform:rotate(-25deg)}#subscription-panel-edit-button.active{font-size:1.5em}#subscription-panel-edit-button.active:hover{color:var(--kbin-link-hover-color)}#subscription-panel-edit-button.active:hover i{transform:scale(1.2)}#subscription-panel-settings-button{position:absolute;top:0;right:0;margin:.5rem;padding:.5rem;color:var(--kbin-section-text-color);font-size:.8em;cursor:pointer;transition:transform .2s ease-in-out;z-index:3}#subscription-panel-settings-button:hover{color:var(--kbin-sidebar-header-text-color);transform:rotate(25deg)}#subscription-panel-settings-button:active{animation:settingsbuttonclick .5s ease-in-out}@keyframes settingsbuttonclick{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.subscription-panel-settings-modal-content{max-width:600px;min-width:400px}.subscription-panel-settings-modal-content ul{list-style:none;padding-inline:0}.subscription-panel-settings-modal-content ul li{margin-bottom:1rem}.subscription-panel-settings-modal-content ul li label{display:block;margin-bottom:.5rem}.subscription-panel-settings-modal-content ul li label.danger{background-color:RGBA(255,0,0,.1);border:1px solid RGBA(255,0,0,.5);padding:.5rem;color:var(--kbin-section-text-color);margin:2em 0}.subscription-panel-settings-modal-content ul li .description{font-size:.8em;font-weight:100;font-style:italic;opacity:.8}.subscription-panel-settings-modal-content ul li input[type=checkbox]{margin-right:.5rem}.subscription-panel-settings-modal-content ul li input[type=button]{margin-right:.5rem;padding:.5rem}.subscription-panel-settings-modal-content ul li input[type=button]:active{opacity:.8}.subscription-panel-settings-modal-content h2{margin-top:0}@keyframes modalopen{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}#subscription-panel-collapse-button{position:relative;display:inline-block;right:0;margin:.5rem;padding:.5rem;color:var(--kbin-section-text-color);font-size:.8em;cursor:pointer;transition:transform .2s ease-in-out}body.subscription-panel-collapsed #subscription-panel h3:hover #subscription-panel-collapse-button{transform:translate(2px)}#subscription-panel h3:hover #subscription-panel-collapse-button{color:var(--kbin-sidebar-header-text-color);transform:translate(-2px)}body:not(.subscription-panel-force-mobile,.subscription-panel-open,.sidebar-left) #middle>.kbin-container{grid-template-areas:"subscription-panel main sidebar";grid-template-columns:minmax(200px,1fr) 3fr 1fr}body.sidebar-left:not(.subscription-panel-force-mobile,.subscription-panel-open) #middle>.kbin-container{grid-template-areas:"sidebar main subscription-panel";grid-template-columns:1fr 3fr minmax(200px,1fr)}body.subscription-panel-collapsed:not(.subscription-panel-force-mobile,.subscription-panel-open) #middle>.kbin-container{grid-template-columns:minmax(100px,120px) 3fr 1fr}body.subscription-panel-collapsed.sidebar-left:not(.subscription-panel-force-mobile,.subscription-panel-open) #middle>.kbin-container{grid-template-columns:1fr 3fr minmax(100px,120px)}body.subscription-panel-collapsed #middle>.kbin-container #subscription-panel #subscription-panel-edit-button{display:none}body.subscription-panel-collapsed #middle>.kbin-container #subscription-panel #subscription-panel-collapse-button{margin:0;padding:0 .5em}body.subscription-panel-collapsed #middle>.kbin-container #subscription-panel li{font-size:.8em}body.subscription-panel-collapsed #middle>.kbin-container #subscription-panel .search-box-container{display:none}body.subscription-panel-collapsed.subscription-panel-hide-on-collapse #middle>.kbin-container #subscription-panel ul{display:none}body.subscription-panel-collapsed.subscription-panel-hide-on-collapse #middle>.kbin-container .last-clicked-container{display:none}body:not(.subscription-panel-force-mobile,.subscription-panel-open) .sidebar-left #middle>.kbin-container{grid-template-areas:"sidebar main subscription-panel";grid-template-columns:1fr 3fr minmax(200px,1fr)}body.subscription-panel-collapsed:not(.subscription-panel-force-mobile,.subscription-panel-open) .sidebar-left #middle>.kbin-container{grid-template-columns:1fr 3fr minmax(100px,120px)}#subscription-panel-content{background-color:var(--kbin-section-bg);border:var(--kbin-options-border);color:var(--kbin-section-text-color);margin-bottom:.5rem;padding:2rem 1rem;height:fit-content;font-size:.8em;margin-right:.5rem;position:relative}#subscription-panel.edit-mode h3,#subscription-panel.edit-mode .last-clicked-container,#subscription-panel.edit-mode #subscription-panel-settings-button{display:none}#subscription-panel.edit-mode .search-box-container{margin-top:2em}#subscription-panel.edit-mode .group.open>ul{width:auto}#subscription-panel h3{border-bottom:var(--kbin-sidebar-header-border);color:var(--kbin-sidebar-header-text-color);font-size:.8rem;margin:0 0 1em;text-transform:uppercase;width:100%}#subscription-panel .last-clicked-container{border-bottom:var(--kbin-sidebar-header-border)}#subscription-panel .last-clicked-container.hideItem{display:none}#subscription-panel .last-clicked-container h3{margin-top:1em}#subscription-panel ul{list-style:none;line-height:2.5em;padding-inline:0}#subscription-panel ul.fade-in,#subscription-panel ul li.fade-in{animation:showItem .5s ease-in-out}#subscription-panel ul li{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}#subscription-panel ul li.ignore:not(.edit-mode){display:none}#subscription-panel ul li.hideItem{animation:hideItem .25s ease-in-out;animation-fill-mode:forwards}#subscription-panel ul li .magazine{transition:transform .2s ease-in-out;display:inline-block}#subscription-panel ul li .tools .toolItem{display:inline-block;margin-right:.5rem;cursor:pointer;color:var(--kbin-link-color)}#subscription-panel ul li .tools .toolItem:hover{color:var(--kbin-link-hover-color)}#subscription-panel ul li.starred .toolItem.star{color:RGBA(255,215,0,1)}#subscription-panel ul li.starred .toolItem.star:hover{color:RGBA(255,215,0,.8)}#subscription-panel ul li.ignore .toolItem.ignore{color:var(--kbin-link-hover-color)}#subscription-panel ul li.ignore .toolItem.ignore:hover{opacity:.8}#subscription-panel ul li.edit-mode .magazine{transform:translate(3.5em)}#subscription-panel ul li.edit-mode.group .count{display:none}#subscription-panel ul li.edit-mode .tools{display:inline-block;animation:showTools .5s ease-in-out;position:absolute}@keyframes showTools{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}#subscription-panel ul li .tools{display:none}#subscription-panel ul li a img{height:1.4em;margin-right:.5em;border-radius:50%;vertical-align:middle}#subscription-panel ul li.no-image a.magazine{padding-left:1.9em}#subscription-panel ul li.group{font-weight:700}#subscription-panel ul li.group a.group-name .name{margin-left:.5em}#subscription-panel ul li.group a.group-name .count{margin-left:.25em;font-weight:400;opacity:.8}#subscription-panel ul li.group a.group-name .image{font-size:1.2em;vertical-align:middle;width:1.2em}#subscription-panel ul li.group ul{margin-left:.75em;padding-left:.75em;padding-right:.75em;border-left:var(--kbin-sidebar-header-border);border-bottom:var(--kbin-sidebar-header-border);width:fit-content;border-bottom-left-radius:.5rem;display:none}#subscription-panel ul li.group ul li{font-weight:400}#subscription-panel ul li.group.open ul{animation:openGroup .25s ease-in-out;display:block}#subscription-panel .instance-name{opacity:.8;font-weight:100}@keyframes openGroup{0%{transform:translateY(-.5em);opacity:0}to{transform:translateY(0);opacity:1}}#subscription-panel-spinner{text-align:center;font-size:2em}@keyframes showItem{0%{opacity:0}to{opacity:1}}@keyframes hideItem{0%{opacity:1;max-height:2.5em}to{opacity:0;max-height:0}}#header menu li a.subscription-panel-mobile-button{display:none}@keyframes showMobileSubscriptionPanelUL{0%{transform:translateY(-2em)}to{transform:translateY(0)}}@keyframes showMobileSubscriptionPanel{0%{opacity:0}to{opacity:1}}body.subscription-panel-open{overflow:hidden}body.subscription-panel-open #scroll-top{display:none!important}body.subscription-panel-open #subscription-panel{z-index:5;top:0;height:100%;width:100%;left:0;position:fixed;margin:0}body.subscription-panel-open.subscription-panel-force-mobile #middle>.kbin-container #subscription-panel,body.subscription-panel-open.subscription-panel-open #middle>.kbin-container #subscription-panel{overflow:hidden;border-radius:0!important;border:none;background:RGBA(0,0,0,.5);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center}body.subscription-panel-open.subscription-panel-force-mobile #middle>.kbin-container #subscription-panel #subscription-panel-content,body.subscription-panel-open.subscription-panel-open #middle>.kbin-container #subscription-panel #subscription-panel-content{height:100%;overflow:auto;padding:1em 10em;padding-bottom:100px!important;position:fixed;top:49px;width:fit-content;margin:2em 0 0;animation:showMobileSubscriptionPanel .2s ease-out}body.subscription-panel-open.subscription-panel-force-mobile #middle>.kbin-container #subscription-panel ul,body.subscription-panel-open.subscription-panel-open #middle>.kbin-container #subscription-panel ul{animation:showMobileSubscriptionPanelUL .2s ease-out}body.subscription-panel-open.rounded-edges #middle>.kbin-container #subscription-panel-content{border-radius:.5rem}body.subscription-panel-open #header menu li a.subscription-panel-mobile-button{border-bottom:var(--kbin-header-hover-border)}body.subscription-panel-force-mobile:not(.subscription-panel-open) #middle>.kbin-container #subscription-panel{display:none}#header menu li a.subscription-panel-mobile-button{font-size:0;cursor:pointer;transition:border-bottom .2s ease-in-out}body.subscription-panel-force-mobile #header menu li a.subscription-panel-mobile-button,body.subscription-panel-open #header menu li a.subscription-panel-mobile-button{display:block}body.subscription-panel-force-mobile #subscription-panel-collapse-button,body.subscription-panel-open #subscription-panel-collapse-button{display:none}a.subscription-panel-mobile-button i{font-size:.85rem}@media (max-width: 991.98px){#header menu li a.subscription-panel-mobile-button{display:block}body #middle>.kbin-container,body.subscription-panel-collapsed #middle>.kbin-container{grid-template-areas:"main main" "subscription-panel subscription-panel" "sidebar sidebar"!important;grid-template-columns:1fr!important}body.subscription-panel-open #middle>.kbin-container #subscription-panel{animation:showMobileSubscriptionPanel .2s ease-out}body.subscription-panel-open #middle>.kbin-container #subscription-panel #subscription-panel-content{height:100%;left:0;padding:2em 2em 100px!important;width:100%!important;border-radius:0!important;border:none;top:49px!important;margin:0!important;overflow:auto}body.subscription-panel-open #middle>.kbin-container #subscription-panel ul{animation:showMobileSubscriptionPanelUL .2s ease-out}#subscription-panel-collapse-button{display:none}#subscription-panel-settings-button{right:1em}#subscription-panel-edit-button{right:4em;left:unset}#subscription-panel.edit-mode #subscription-panel-edit-button{right:1em}}@media (hover: none){#header menu li a.subscription-panel-mobile-button:hover{border-bottom:3px solid transparent}#subscription-panel-settings-button:hover i,#subscription-panel-edit-button:hover i{transform:none!important}}@media (pointer: coarse){#subscription-panel-settings-button,#subscription-panel-edit-button{font-size:1.2em}}.subscription-panel-onboarding .subscription-panel-onboarding-content{max-width:800px}.subscription-panel-onboarding-next{margin-top:1em;font-size:2em;text-align:center;display:block}')});function d(){let c=localStorage.getItem("subscription-panel-settings"),e={};return c&&(e=JSON.parse(c)),e.useCache===void 0&&(e.useCache=!0),e.useGroups===void 0&&(e.useGroups=!0),e.showLastClicked===void 0&&(e.showLastClicked=!0),e}function h(c){localStorage.setItem("subscription-panel-settings",JSON.stringify(c))}function J(){localStorage.removeItem("subscription-panel-settings"),localStorage.removeItem("subscription-panel-magazine-data")}var E=f(()=>{});var z,m,S=f(()=>{z=class c{#e;type;fullName;editMode;hidden=!1;element;static get TYPE(){return{MAGAZINE:"magazine",GROUP:"group"}}constructor(e,t){this.fullName=e,this.name=e,this.type=t,this.#e=null,this.editMode=!1}get icon(){return this.#e}getElement(){let e=document.createElement("li");return e.classList.add("item"),e.setAttribute("data-type",this.type),e.setAttribute("data-name",this.fullName),e}enableEditMode(){this.editMode=!0}disableEditMode(){this.editMode=!1}toggleEditMode(){this.editMode?this.disableEditMode():this.enableEditMode()}isStarred(){return!1}isHidden(){return this.hidden}hide(e=!1){this.hidden=!0,this.element&&this.element.classList.add("hideItem")}show(e=!1){this.hidden&&(this.hidden=!1,this.element&&(e&&this.element.classList.contains("hideItem")&&(this.element.addEventListener("animationend",()=>{this.element.classList.remove("fade-in")}),this.element.classList.add("fade-in")),this.element.classList.remove("hideItem")))}toggleHidden(){this.isHidden()?this.hide():this.show()}isIgnored(){return!1}search(e,t=!1){return!t&&this.isIgnored()?!1:this.fullName.toLowerCase().includes(e.toLowerCase())}copy(){return new c(this.fullName,this.type)}},m=z});var P,g,x=f(()=>{S();P=class c extends m{icon;element;starred;constructor(e,t,i=null){super(e,m.TYPE.MAGAZINE),this.icon=i,this.url=t,this.name=e.replace(/@.*/,"");let n=e.match(/@(.*)/);this.instanceName=n?n[1]:null}registerClickTime(){this.appendMagazineData({clickTime:Date.now()})}getMagazineData(){let e=localStorage.getItem("subscription-panel-magazine-data");return e?(e=JSON.parse(e),e=e[this.fullName]||{}):e={},e}getClickTime(){return this.getMagazineData().clickTime||0}appendMagazineData(e){let t=localStorage.getItem("subscription-panel-magazine-data");t?t=JSON.parse(t):t={},t[this.fullName]?t[this.fullName]={...t[this.fullName],...e}:t[this.fullName]=e,localStorage.setItem("subscription-panel-magazine-data",JSON.stringify(t))}static fromElement(e){let t=e.querySelector("a");return new c(t.innerText,t.href,e.querySelector("figure img")?.src)}enableEditMode(){super.enableEditMode(),this.element&&this.element.classList.add("edit-mode")}disableEditMode(){super.disableEditMode(),this.element&&this.element.classList.remove("edit-mode")}toggleStar(){this.getMagazineData()?.starred?this.unstar():this.star()}star(){this.appendMagazineData({starred:!0}),this.element.classList.add("starred"),this.starred=!0}unstar(){this.appendMagazineData({starred:!1}),this.element.classList.remove("starred"),this.starred=!1}isStarred(){return this.starred===void 0&&(this.starred=this.getMagazineData()?.starred===!0),this.starred}ignore(){this.element.classList.add("ignore"),this.ignored=!0,this.appendMagazineData({ignored:!0}),this.element.querySelector(".toolItem.ignore").innerHTML=''}unignore(){this.element.classList.remove("ignore"),this.ignored=!1,this.appendMagazineData({ignored:!1}),this.element.querySelector(".toolItem.ignore").innerHTML=''}toggleIgnored(){this.isIgnored()?this.unignore():this.ignore()}isIgnored(){return this.ignored===void 0&&(this.ignored=this.getMagazineData()?.ignored===!0),this.ignored}getElement(){if(this.element)return this.element;let e=this.getMagazineData(),t=document.createElement("li");e?.starred&&t.classList.add("starred"),this.isIgnored()&&t.classList.add("ignore");let i=Object.assign(document.createElement("span"),{className:"tools"}),n=Object.assign(document.createElement("span"),{className:"star toolItem",title:"Star",innerHTML:'',onclick:()=>{this.toggleStar()}}),s=Object.assign(document.createElement("span"),{className:"ignore toolItem",title:"Ignore",innerHTML:this.isIgnored()?'':'',onclick:()=>{this.toggleIgnored()}});i.appendChild(n),i.appendChild(s),t.appendChild(i),this.element=t;let a=document.createElement("a");if(a.href=this.url,a.className="magazine",a.addEventListener("click",()=>{this.registerClickTime()}),a.title=this.fullName,this.icon){let o=document.createElement("img");o.src=this.icon,a.appendChild(o)}else t.classList.add("no-image");let r=document.createElement("span");if(r.className="name",r.appendChild(document.createTextNode(this.name)),a.appendChild(r),this.instanceName){let o=document.createElement("span");o.className="instance-name",o.appendChild(document.createTextNode("@"+this.instanceName)),a.appendChild(o)}return t.appendChild(a),t}static fromJSON(e){return new c(e.fullName,e.url,e.icon)}toJSON(){return{fullName:this.fullName,icon:this.icon,url:this.url,type:this.type}}copy(){return new c(this.fullName,this.url,this.icon)}},g=P});var N,L,T=f(()=>{S();x();N=class c extends m{#e=!1;element;magazines=[];countElement;constructor(e,t){super(e,m.TYPE.GROUP),this.magazines=t,this.name=e}set isOpen(e){this.#e=!!e}get isOpen(){return!!this.#e}get icon(){return this.isOpen?'':''}getClickTime(){let e=0;return this.magazines.forEach(t=>{t.getClickTime()>e&&(e=t.getClickTime())}),e||0}static fromElement(e){let t=e.querySelector("a");return new c(t.innerText,e.querySelector("figure img")?.src,t.href)}toggle(){this.isOpen?this.close():this.open()}open(){this.isOpen=!0,this.element.classList.add("open");let e=this.element.querySelector("a"),t=e.querySelector("i");e.setAttribute("aria-expanded","true"),t.classList.remove("fa-box"),t.classList.add("fa-box-open")}close(){this.isOpen=!1,this.element.classList.remove("open");let e=this.element.querySelector("a"),t=e.querySelector("i");e.setAttribute("aria-expanded","false"),t.classList.remove("fa-box-open"),t.classList.add("fa-box")}getElement(){if(this.element)return this.element;let e=this.magazineCount(),t=document.createElement("li");this.element=t,t.classList.add("group"),(this.isIgnored()||e===0)&&t.classList.add("ignore");let i=document.createElement("a");i.className="group-name",i.href="#",i.title=this.fullName,i.ariaLabel=this.fullName,i.addEventListener("click",a=>{a.preventDefault(),a.stopPropagation(),this.toggle()});let n=Object.assign(document.createElement("span"),{className:"count",innerHTML:"("+e+")"});this.countElement=n,i.innerHTML=this.icon+''+this.fullName+"",i.appendChild(n),t.appendChild(i);let s=document.createElement("ul");return this.magazines.forEach(a=>{let r=a.getElement();s.appendChild(r)}),t.appendChild(s),t}static fromJSON(e){return new c(e.fullName,e.magazines.map(t=>g.fromJSON(t)))}toJSON(){return{fullName:this.fullName,magazines:this.magazines.map(e=>e.toJSON()),type:this.type}}copy(){return new c(this.fullName,this.magazines.map(e=>e.copy()))}enableEditMode(){super.enableEditMode(),this.element&&(this.magazines.forEach(e=>{e.enableEditMode()}),this.open(),this.element.classList.add("edit-mode"))}disableEditMode(){super.disableEditMode(),this.element&&(this.magazines.forEach(e=>{e.disableEditMode()}),this.close(),this.element.classList.remove("edit-mode"),this.isIgnored()?this.element.classList.add("ignore"):this.element.classList.remove("ignore"),this.countElement.innerHTML="("+this.magazineCount()+")")}isStarred(){return this.magazines.some(e=>e.isStarred())}isIgnored(){return this.magazineCount()===0}hide(e=!1){super.hide(),this.element&&(this.magazines.forEach(t=>{t.hide(e)}),this.element.classList.add("hideItem"))}show(e=!1){super.show(e)}showAll(e=!1){super.show(e),this.element&&this.magazines.forEach(t=>{t.show()})}magazineCount(){let e=0;return this.magazines.forEach(t=>{t.isIgnored()||e++}),e}search(e,t=!1){let i=super.search(e,t);return!i&&!t&&this.isIgnored()?!1:(this.magazines.forEach(n=>{n.search(e,t)&&(i=!0)}),i)}},L=N});var I,v,M=f(()=>{E();T();x();S();I=class{constructor(){localStorage.removeItem("subscription-panel-cache")}save(e){let t=d(),i={cache:e,timestamp:Date.now(),version:1};t?.useCache&&localStorage.setItem("subscription-panel-item-cache",JSON.stringify(i))}remove(){localStorage.removeItem("subscription-panel-item-cache")}parseItem(e){if(e.type===m.TYPE.MAGAZINE)return new g(e.fullName,e.url,e.icon);if(e.type===m.TYPE.GROUP){let t=[];return e.magazines.forEach(i=>{t.push(this.parseItem(i))}),new L(e.fullName,t)}}get(){if(d()?.useCache){let t=localStorage.getItem("subscription-panel-item-cache");if(t){let i=JSON.parse(t);if(i.version===1){let n=[];return i.cache.forEach(s=>{n.push(this.parseItem(s))}),n}else return this.remove(),[]}}return[]}},v=I});var q,j,W=f(()=>{E();M();q=class{subscriptionsPanel;modalElement;constructor(e){this.subscriptionsPanel=e}getSettingsButtonElement(){let e=document.createElement("div");return e.id="subscription-panel-settings-button",e.title="Settings",e.ariaLabel="Settings",e.innerHTML='',e.addEventListener("click",()=>{this.show()}),e}init(){let e=this.getSettingsButtonElement();this.subscriptionsPanel.contentElement.appendChild(e),this.applySettings(),window.addEventListener("open-subscriptions-panel-settings",()=>{this.show()})}close(){this.modalElement&&(this.modalElement.remove(),this.modalElement=null)}registerCheckbox(e,t,i=!1,n=null){let s=document.getElementById(e);d()?.[t]===!0&&(s.checked=!i),s.addEventListener("change",r=>{let o=d();o[t]=!!r.target.checked,h(o),n&&n(s.checked)})}show(){let e=d(),t=document.createElement("div");this.modalElement=t,t.className="subscription-panel-settings-modal subscription-panel-modal",t.innerHTML=`

Subscriptions Panel Settings

`,document.body.appendChild(t);let i=t.querySelector("#subscription-panel-extend-width");e?.extendWidth&&(i.checked=!0);let n=t.querySelector("#subscription-panel-hide-on-collapse");e?.hideOnCollapse&&(n.checked=!0);let s=t.querySelector("#subscription-panel-use-cache");e?.useCache&&(s.checked=!0);let a=t.querySelector("#subscription-panel-show-onboarding");e?.onboardingDone&&(a.checked=!1);let r=t.querySelector("#subscription-panel-force-mobile");e?.forceMobile&&(r.checked=!0);let o=t.querySelector("#subscription-panel-use-groups");e?.useGroups&&(o.checked=!0);let u=t.querySelector("#subscription-panel-show-last-clicked");e?.showLastClicked&&(u.checked=!0),this.registerCheckbox("subscription-panel-sticky","sticky",!1,()=>{this.applySettings()}),t.querySelector("#subscription-panel-reset").addEventListener("click",()=>{new v().remove(),J(),window.location.reload()}),t.querySelector(".subscription-panel-settings-modal .close").addEventListener("click",()=>{this.close()}),t.addEventListener("click",p=>{p.target===t&&this.close()}),t.querySelector("#subscription-panel-extend-width").addEventListener("change",p=>{let l=d();l.extendWidth=!!p.target.checked,h(l),this.applySettings()}),t.querySelector("#subscription-panel-use-cache").addEventListener("change",p=>{let l=d();p.target.checked?l.useCache=!0:(l.useCache=!1,new v().remove()),h(l),this.applySettings()}),t.querySelector("#subscription-panel-hide-on-collapse").addEventListener("change",p=>{let l=d();l.hideOnCollapse=!!p.target.checked,h(l),this.applySettings()}),t.querySelector("#subscription-panel-show-onboarding").addEventListener("change",p=>{let l=d();l.onboardingDone=!p.target.checked,h(l)}),t.querySelector("#subscription-panel-use-groups").addEventListener("change",p=>{let l=d();l.useGroups=!!p.target.checked;let k=this.subscriptionsPanel.subscriptionsHandler;k.reload().then(()=>{this.subscriptionsPanel.addMagazinesToDOM(k.subscriptions,!0)}),h(l),this.applySettings()}),t.querySelector("#subscription-panel-force-mobile").addEventListener("change",p=>{let l=d();l.forceMobile=!!p.target.checked,h(l),this.applySettings()}),t.querySelector("#subscription-panel-show-last-clicked").addEventListener("change",p=>{let l=d();l.showLastClicked=!!p.target.checked;let k=this.subscriptionsPanel.subscriptionsHandler;k.reload().then(()=>{this.subscriptionsPanel.addMagazinesToDOM(k.subscriptions,!0)}),h(l),this.applySettings()})}applySettings(){let e=d();e?.extendWidth?document.body.classList.add("extend-width"):document.body.classList.remove("extend-width"),e?.collapsed?this.subscriptionsPanel.collapsePanel():this.subscriptionsPanel.expandPanel(),e?.hideOnCollapse?document.body.classList.add("subscription-panel-hide-on-collapse"):document.body.classList.remove("subscription-panel-hide-on-collapse"),e?.forceMobile?document.body.classList.add("subscription-panel-force-mobile"):(document.body.classList.remove("subscription-panel-force-mobile"),this.subscriptionsPanel.closeMobilePanel()),e?.sticky?document.body.classList.add("subscription-panel-sticky"):document.body.classList.remove("subscription-panel-sticky")}},j=q});var O,F,Z=f(()=>{E();M();x();S();T();O=class{subscriptions;constructor(){this.subscriptions=[]}reload(){return this.subscriptions=[],this.load(1)}sort(){let e=(t,i)=>t.isStarred()&&!i.isStarred()?-1:!t.isStarred()&&i.isStarred()?1:t.fullName.localeCompare(i.fullName);this.subscriptions.sort((t,i)=>e(t,i)),this.subscriptions.forEach(t=>{t.type===m.TYPE.GROUP&&t.magazines.sort((i,n)=>e(i,n))})}append(e){let i=d()?.useGroups;e.forEach(s=>{let a=!1;this.subscriptions.some((r,o)=>(r.type===m.TYPE.MAGAZINE&&s.type===m.TYPE.MAGAZINE&&r.url===s.url?a=!0:i&&r.name.toLowerCase()===s.name.toLowerCase()&&(r.type===m.TYPE.GROUP?r.magazines.push(s):this.subscriptions[o]=new L(r.name,[r,s]),a=!0),a)),a||this.subscriptions.push(s)}),this.sort(),new v().save(this.subscriptions)}load(e){e=e||1;let t="https://kbin.social/settings/subscriptions/magazines?p="+e;return fetch(t).then(n=>{let s=document.querySelector("#subscription-panel-spinner");return s&&s.remove(),n.text()}).then(n=>{let s=new DOMParser().parseFromString(n,"text/html"),a=s.querySelectorAll(".section.magazines.magazines-columns ul>li"),r=[];a.forEach(u=>{let b=g.fromElement(u);r.push(b);let p=window.location.pathname.match(/\/m\/(.+?)(\/|$)/);p&&p[1]===b.fullName&&b.registerClickTime()}),this.append(r);let o=s.querySelector("a.pagination__item.pagination__item--next-page")?.href;return o=o?o.match(/p=(\d+)/)[1]:void 0,o=o?parseInt(o):1,e(console.error(n),document.querySelector("#subscription-panel-content").appendChild(document.createTextNode("Failed to load subscriptions")),Promise.reject(n)))}loadSubscriptions(e,t){e=e||1;let i=new XMLHttpRequest;i.onreadystatechange=()=>{if(i.readyState===4){let n=document.querySelector("#subscription-panel-spinner");if(n&&n.remove(),i.status===200){let s=new DOMParser().parseFromString(i.responseText,"text/html"),a=s.querySelectorAll(".section.magazines.magazines-columns ul>li"),r=[];a.forEach(u=>{let b=g.fromElement(u);r.push(b),window.location&&window.location.pathname===b.url&&b.registerClickTime()}),this.append(r);let o=s.querySelector("a.pagination__item.pagination__item--next-page")?.href;o=o?o.match(/p=(\d+)/)[1]:void 0,o=o?parseInt(o):1,e0)this.#t.querySelector(".search-box-clear")?.classList.add("active");else{this.#t.querySelector(".search-box-clear")?.classList.remove("active"),t.classList.remove("hideItem"),this.subscriptionsHandler.subscriptions.forEach(i=>{i.type===g.TYPE.GROUP?(i.showAll(),this.editMode?i.open():i.close()):i.show()});return}e=e.toLowerCase(),t.classList.add("hideItem"),this.subscriptionsHandler.subscriptions.forEach(i=>{if(i.type===g.TYPE.GROUP){i.open();let n=!1;i.magazines.forEach(s=>{s.search(e,this.editMode)?(n=!0,s.show(!0)):s.hide(!0)}),n?i.show(!0):i.hide(!0)}else i.type===g.TYPE.MAGAZINE&&(i.search(e,this.editMode)?i.show(!0):i.hide(!0))})}getElement(){if(this.#e)return this.#e;let e=document.createElement("input");this.#e=e,e.type="text",e.id="subscription-panel-search",e.placeholder="Filter",e.addEventListener("input",n=>{this.doSearch(n.target.value)});let t=document.createElement("span");t.className="search-box-clear",t.innerHTML='',t.addEventListener("click",()=>{this.clear()}),e.addEventListener("keydown",n=>{n.key==="Escape"&&(this.clear(),e.blur())});let i=document.createElement("div");return this.#t=i,i.className="search-box-container",i.appendChild(e),i.appendChild(t),i}},Q=H});var D,V,X=f(()=>{M();E();Z();_();x();D=class{subscriptionsHandler;containerElement;contentElement;editMode=!1;constructor(){this.subscriptionsHandler=new F}init(){if(document.querySelector(".login").href.endsWith("/login"))return;let t=document.querySelector("#middle > .kbin-container"),i=document.createElement("div");this.containerElement=i,i.id="subscription-panel";let n=document.createElement("aside");this.contentElement=n;let s=document.createElement("ul");s.className="fade-in subscription-list",s.addEventListener("animationend",()=>{s.classList.remove("fade-in")});let a=document.createElement("h3");n.id="subscription-panel-content",a.innerHTML='Subscriptions',n.appendChild(a);let r=Object.assign(document.createElement("div"),{id:"subscription-panel-edit-button",title:"Edit subscriptions",ariaLabel:"Edit subscriptions",innerHTML:''});r.addEventListener("click",()=>{this.toggleEditMode()}),n.appendChild(r),i.appendChild(n),t.appendChild(i);let o=new Q(this.subscriptionsHandler,i);this.searchBox=o,n.appendChild(o.getElement());let u=document.createElement("span");u.id="subscription-panel-collapse-button",u.title="Hide Subscriptions",u.ariaLabel="Hide Subscriptions",u.innerHTML='',a.addEventListener("click",()=>{this.toggleCollapsePanel()}),a.appendChild(u);let b=document.querySelector(".kbin-container > menu"),p=document.createElement("li"),l=document.createElement("a");l.className="subscription-panel-mobile-button",l.title="Subscriptions",l.ariaLabel="Subscriptions",l.href="#",l.innerHTML='',l.addEventListener("click",y=>{this.toggleOpenMobilePanel(),y.preventDefault()}),p.appendChild(l),b.insertBefore(p,b.firstChild),i.addEventListener("click",y=>{y.target===i&&document.body.classList.contains("subscription-panel-open")&&this.closeMobilePanel()}),new MutationObserver(y=>{y.forEach(C=>{C.attributeName==="class"&&C.target.getAttribute(C.attributeName).includes("open")&&this.closeMobilePanel()})}).observe(document.getElementById("sidebar"),{attributes:!0});let w=document.createElement("div");w.className="last-clicked-container",w.appendChild(Object.assign(document.createElement("h3"),{innerText:"Recently viewed"}));let A=document.createElement("ul");A.className="fade-in last-clicked-list",d()?.showLastClicked!==!0&&w.classList.add("hideItem"),w.appendChild(A),n.appendChild(w),n.appendChild(s);let B=new v().get();if(B.length>0)this.addMagazinesToDOM(B,!1);else{let y=document.createElement("div");y.id="subscription-panel-spinner",y.innerHTML='',n.appendChild(y)}this.subscriptionsHandler.load().then(()=>{this.addMagazinesToDOM(this.subscriptionsHandler.subscriptions,!0)})}enableEditMode(){this.editMode=!0,this.containerElement.classList.add("edit-mode"),this.expandPanel(),this.subscriptionsHandler.subscriptions.forEach(t=>{t.enableEditMode()}),this.searchBox.editMode=!0;let e=document.getElementById("subscription-panel-edit-button");e.innerHTML=' Done',e.classList.add("active")}disableEditMode(){this.editMode=!1,this.containerElement.classList.remove("edit-mode"),this.subscriptionsHandler.subscriptions.forEach(t=>{t.disableEditMode()}),this.subscriptionsHandler.sort(),this.addMagazinesToDOM(this.subscriptionsHandler.subscriptions);let e=document.getElementById("subscription-panel-edit-button");e.innerHTML='',e.classList.remove("active"),this.searchBox.editMode=!1,this.searchBox.clear()}toggleEditMode(){this.editMode?this.disableEditMode():this.enableEditMode()}toggleCollapsePanel(){let e=d();document.body.classList.contains("subscription-panel-collapsed")?(this.expandPanel(),e.collapsed=!1):this.collapsePanel()&&(e.collapsed=!0),h(e)}collapsePanel(){if(window.innerWidth<=991.98||document.body.classList.contains("subscription-panel-force-mobile")||this.editMode)return!1;let e=document.querySelector(".last-clicked-container h3");e&&(e.innerHTML=' Recent'),document.body.classList.contains("sidebar-left")?document.querySelector("#subscription-panel-collapse-button i").className="fa-solid fa-chevron-left":document.querySelector("#subscription-panel-collapse-button i").className="fa-solid fa-chevron-right";let t=document.querySelector("#subscription-panel-collapse-button");return t.title="Show subscriptions",t.ariaLabel="Show subscriptions",document.querySelector(".subscription-panel-header").innerHTML=' Subs',document.body.classList.add("subscription-panel-collapsed"),!0}expandPanel(){document.body.classList.contains("sidebar-left")?document.querySelector("#subscription-panel-collapse-button i").className="fa-solid fa-chevron-right":document.querySelector("#subscription-panel-collapse-button i").className="fa-solid fa-chevron-left";let e=document.querySelector(".last-clicked-container h3");e&&(e.innerText="Recently viewed");let t=document.querySelector("#subscription-panel-collapse-button");return t.title="Hide subscriptions",t.ariaLabel="Hide subscriptions",document.querySelector(".subscription-panel-header").innerText="Subscriptions",document.body.classList.remove("subscription-panel-collapsed"),!0}toggleOpenMobilePanel(){document.body.classList.contains("subscription-panel-open")?this.closeMobilePanel():this.openMobilePanel()}openMobilePanel(){document.body.classList.add("subscription-panel-open"),document.body.classList.contains("fixed-navbar")||window.scrollTo(0,0),document.getElementById("sidebar")?.classList.remove("open")}closeMobilePanel(){document.body.classList.remove("subscription-panel-open")}addMagazinesToDOM(e){let t=document.querySelector("#subscription-panel ul.subscription-list"),i=document.querySelector("#subscription-panel .last-clicked-container"),n=document.querySelector("#subscription-panel ul.last-clicked-list");if(t.innerHTML="",n.innerHTML="",d()?.showLastClicked===!0){i.classList.remove("hideItem");let a=[...e].sort((r,o)=>o.getClickTime()-r.getClickTime()).slice(0,4);a=a.filter(r=>r.getClickTime()>0),a.length===0?i.classList.add("hideItem"):a.forEach(r=>{let o=r.copy();o.type===g.TYPE.GROUP&&o.magazines.sort((b,p)=>p.getClickTime()-b.getClickTime());let u=o.getElement();u.classList.add("last-clicked"),n.appendChild(u)})}else i.classList.add("hideItem");e.forEach(a=>{let r=a.getElement();t.appendChild(r)})}},V=D});var G,$,K=f(()=>{E();G=class{modalElement;constructor(){}init(){let e=d();e?.onboardingDone||(e.onboardingDone=!0,h(e),this.show())}close(){this.modalElement&&(this.modalElement.remove(),this.modalElement=null)}show(){let e=document.createElement("div");this.modalElement=e,e.className="subscription-panel-onboarding subscription-panel-modal",e.innerHTML=`

Thanks for using Subscriptions Panel!

Click on the icon to collapse the panel.

Click on the icon to open the settings.

Click on the icon to open the panel on mobile.

Magazines that share the same name are grouped together. A group is indicated by a icon.

Please take a few seconds to review the settings in the next step. You can always do this later if you want.

Show settings
`,e.querySelector(".subscription-panel-onboarding-close").addEventListener("click",t=>{this.close(),t.preventDefault()}),e.querySelector(".subscription-panel-onboarding-next").addEventListener("click",t=>{this.close(),window.dispatchEvent(new Event("open-subscriptions-panel-settings")),t.preventDefault()}),e.addEventListener("click",t=>{t.target===e&&(this.close(),window.dispatchEvent(new Event("open-subscriptions-panel-settings")),t.preventDefault())}),document.body.appendChild(e)}},$=G});var se=ie(()=>{U();W();X();K();var ee=new V,te=new j(ee),ne=new $(te);ee.init();te.init();ne.init()});se();})(); })();