|
2 | 2 | * @name ServerFolders |
3 | 3 | * @author DevilBro |
4 | 4 | * @authorId 278543574059057154 |
5 | | - * @version 7.4.9 |
| 5 | + * @version 7.5.0 |
6 | 6 | * @description Changes Discord's Folders, Servers open in a new Container, also adds extra Features to more easily organize, customize and manage your Folders |
7 | 7 | * @invite Jx3TjNS |
8 | 8 | * @donate https://www.paypal.me/MircoWittrien |
@@ -112,173 +112,170 @@ module.exports = (_ => { |
112 | 112 | tabindex: 0, |
113 | 113 | "data-list-id": "guildfoldersnav", |
114 | 114 | className: BDFDB.disCN.guildstree, |
115 | | - children: BDFDB.ReactUtils.createElement("div", { |
116 | | - className: BDFDB.disCN.guildswrapperitems, |
117 | | - children: BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.Scrollers.None, { |
118 | | - className: BDFDB.disCNS.stack + BDFDB.disCN.guildsscroller, |
119 | | - onScroll: e => scrollPosition = e.target.scrollTop, |
120 | | - children: BDFDB.ReactUtils.createElement("div", { |
121 | | - className: BDFDB.disCN.stack, |
122 | | - "aria-label": BDFDB.LanguageUtils.LanguageStrings.SERVERS, |
123 | | - children: GuildItemComponent && this.props.folders.map(folder => { |
124 | | - let data = _this.getFolderConfig(folder.folderId); |
125 | | - let folderIcon = null; |
126 | | - if (_this.settings.general.addFolderIcon) { |
127 | | - let folderIcons = _this.loadAllIcons(); |
128 | | - folderIcon = folderIcons[data.iconID] ? (!folderIcons[data.iconID].customID ? _this.createBase64SVG(folderIcons[data.iconID].openicon, data.color1, data.color2) : folderIcons[data.iconID].openicon) : null; |
129 | | - folderIcon = folderIcon ? BDFDB.ReactUtils.createElement("div", { |
130 | | - className: BDFDB.disCN.guildfolderbutton, |
131 | | - onClick: _ => BDFDB.LibraryModules.GuildUtils.toggleGuildFolderExpand(folder.folderId), |
| 115 | + children: BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.Scrollers.None, { |
| 116 | + className: BDFDB.disCNS.stack + BDFDB.disCN.guildsscroller, |
| 117 | + onScroll: e => scrollPosition = e.target.scrollTop, |
| 118 | + children: BDFDB.ReactUtils.createElement("div", { |
| 119 | + className: BDFDB.disCN.stack, |
| 120 | + "aria-label": BDFDB.LanguageUtils.LanguageStrings.SERVERS, |
| 121 | + children: GuildItemComponent && this.props.folders.map(folder => { |
| 122 | + let data = _this.getFolderConfig(folder.folderId); |
| 123 | + let folderIcon = null; |
| 124 | + if (_this.settings.general.addFolderIcon) { |
| 125 | + let folderIcons = _this.loadAllIcons(); |
| 126 | + folderIcon = folderIcons[data.iconID] ? (!folderIcons[data.iconID].customID ? _this.createBase64SVG(folderIcons[data.iconID].openicon, data.color1, data.color2) : folderIcons[data.iconID].openicon) : null; |
| 127 | + folderIcon = folderIcon ? BDFDB.ReactUtils.createElement("div", { |
| 128 | + className: BDFDB.disCN.guildfolderbutton, |
| 129 | + onClick: _ => BDFDB.LibraryModules.GuildUtils.toggleGuildFolderExpand(folder.folderId), |
| 130 | + children: BDFDB.ReactUtils.createElement("div", { |
| 131 | + className: BDFDB.disCN.guildfolderbuttoncontent, |
132 | 132 | children: BDFDB.ReactUtils.createElement("div", { |
133 | | - className: BDFDB.disCN.guildfolderbuttoncontent, |
| 133 | + className: BDFDB.disCN.guildfoldericonwrapper, |
134 | 134 | children: BDFDB.ReactUtils.createElement("div", { |
135 | | - className: BDFDB.disCN.guildfoldericonwrapper, |
136 | | - children: BDFDB.ReactUtils.createElement("div", { |
137 | | - className: BDFDB.disCN.guildfoldericon, |
138 | | - style: {background: `url(${folderIcon}) center/cover no-repeat`} |
139 | | - }) |
| 135 | + className: BDFDB.disCN.guildfoldericon, |
| 136 | + style: {background: `url(${folderIcon}) center/cover no-repeat`} |
140 | 137 | }) |
141 | 138 | }) |
142 | | - }) : BDFDB.ReactUtils.createElement("div", { |
143 | | - className: BDFDB.disCN.guildfolderbutton, |
144 | | - onClick: _ => BDFDB.LibraryModules.GuildUtils.toggleGuildFolderExpand(folder.folderId), |
| 139 | + }) |
| 140 | + }) : BDFDB.ReactUtils.createElement("div", { |
| 141 | + className: BDFDB.disCN.guildfolderbutton, |
| 142 | + onClick: _ => BDFDB.LibraryModules.GuildUtils.toggleGuildFolderExpand(folder.folderId), |
| 143 | + children: BDFDB.ReactUtils.createElement("div", { |
| 144 | + className: BDFDB.disCN.guildfolderbuttoncontent, |
145 | 145 | children: BDFDB.ReactUtils.createElement("div", { |
146 | | - className: BDFDB.disCN.guildfolderbuttoncontent, |
| 146 | + className: BDFDB.disCN.guildfoldericonwrapper, |
147 | 147 | children: BDFDB.ReactUtils.createElement("div", { |
148 | | - className: BDFDB.disCN.guildfoldericonwrapper, |
149 | | - children: BDFDB.ReactUtils.createElement("div", { |
150 | | - className: BDFDB.disCN.guildfoldericon, |
151 | | - children: BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SvgIcon, { |
152 | | - name: BDFDB.LibraryComponents.SvgIcon.Names.FOLDER, |
153 | | - style: {color: BDFDB.ColorUtils.convert(folder.folderColor || BDFDB.DiscordConstants.Colors.BRAND, "RGB")} |
154 | | - }) |
| 148 | + className: BDFDB.disCN.guildfoldericon, |
| 149 | + children: BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SvgIcon, { |
| 150 | + name: BDFDB.LibraryComponents.SvgIcon.Names.FOLDER, |
| 151 | + style: {color: BDFDB.ColorUtils.convert(folder.folderColor || BDFDB.DiscordConstants.Colors.BRAND, "RGB")} |
155 | 152 | }) |
156 | 153 | }) |
157 | 154 | }) |
158 | | - }); |
159 | | - } |
160 | | - return BDFDB.ReactUtils.createElement("div", { |
161 | | - className: BDFDB.disCNS.stack + BDFDB.disCNS.guildfolderwrapper + BDFDB.disCN.guildfolderisexpanded, |
162 | | - style: {"--custom-folder-color": folder.folderColor ? BDFDB.ColorUtils.convert(folder.folderColor, "RGB") : null}, |
163 | | - children: [ |
164 | | - _this.settings.general.addFolderBackground && BDFDB.ReactUtils.createElement("span", { |
165 | | - className: BDFDB.disCN.guildfolderexpandedbackground |
166 | | - }), |
167 | | - folderIcon && BDFDB.ReactUtils.createElement("div", { |
168 | | - className: BDFDB.disCN.guildouter, |
169 | | - children: BDFDB.ReactUtils.createElement("div", { |
170 | | - className: BDFDB.disCN.guildfolder, |
171 | | - "data-folder-name": folder.folderName || BDFDB.LanguageUtils.LanguageStrings.FOLDER, |
172 | | - children: folderIcon |
173 | | - }) |
174 | | - }), |
175 | | - BDFDB.ReactUtils.createElement("ul", { |
176 | | - className: BDFDB.disCN.stack, |
177 | | - role: "group", |
178 | | - children: folder.guildIds.map(guildId => { |
179 | | - let guildIstance; |
180 | | - return [ |
181 | | - this.draggedGuild == guildId ? null : BDFDB.ReactUtils.createElement("div", { |
182 | | - ref: instance => guildIstance = instance, |
183 | | - children: BDFDB.ReactUtils.createElement(GuildItemComponent, { |
184 | | - guildNode: { |
185 | | - children: [], |
186 | | - id: guildId, |
187 | | - parentId: folder.folderId, |
188 | | - type: "guild", |
189 | | - unavailable: false |
| 155 | + }) |
| 156 | + }); |
| 157 | + } |
| 158 | + return BDFDB.ReactUtils.createElement("div", { |
| 159 | + className: BDFDB.disCNS.stack + BDFDB.disCNS.guildfolderwrapper + BDFDB.disCN.guildfolderisexpanded, |
| 160 | + style: {"--custom-folder-color": folder.folderColor ? BDFDB.ColorUtils.convert(folder.folderColor, "RGB") : null}, |
| 161 | + children: [ |
| 162 | + _this.settings.general.addFolderBackground && BDFDB.ReactUtils.createElement("span", { |
| 163 | + className: BDFDB.disCN.guildfolderexpandedbackground |
| 164 | + }), |
| 165 | + folderIcon && BDFDB.ReactUtils.createElement("div", { |
| 166 | + className: BDFDB.disCN.guildouter, |
| 167 | + children: BDFDB.ReactUtils.createElement("div", { |
| 168 | + className: BDFDB.disCN.guildfolder, |
| 169 | + "data-folder-name": folder.folderName || BDFDB.LanguageUtils.LanguageStrings.FOLDER, |
| 170 | + children: folderIcon |
| 171 | + }) |
| 172 | + }), |
| 173 | + BDFDB.ReactUtils.createElement("ul", { |
| 174 | + className: BDFDB.disCN.stack, |
| 175 | + role: "group", |
| 176 | + children: folder.guildIds.map(guildId => { |
| 177 | + let guildIstance; |
| 178 | + return [ |
| 179 | + this.draggedGuild == guildId ? null : BDFDB.ReactUtils.createElement("div", { |
| 180 | + ref: instance => guildIstance = instance, |
| 181 | + children: BDFDB.ReactUtils.createElement(GuildItemComponent, { |
| 182 | + guildNode: { |
| 183 | + children: [], |
| 184 | + id: guildId, |
| 185 | + parentId: folder.folderId, |
| 186 | + type: "guild", |
| 187 | + unavailable: false |
| 188 | + } |
| 189 | + }), |
| 190 | + onClick: event => { |
| 191 | + if (BDFDB.ListenerUtils.isPressed(46)) { |
| 192 | + BDFDB.ListenerUtils.stopEvent(event); |
| 193 | + _this.removeGuildFromFolder(folder.folderId, guildId); |
| 194 | + } |
| 195 | + else { |
| 196 | + if (_this.settings.general.closeAllFolders) { |
| 197 | + for (let openFolderId of BDFDB.LibraryStores.ExpandedGuildFolderStore.getExpandedFolders()) if (openFolderId != folder.folderId || !_this.settings.general.forceOpenFolder) BDFDB.LibraryModules.GuildUtils.toggleGuildFolderExpand(openFolderId); |
190 | 198 | } |
191 | | - }), |
192 | | - onClick: event => { |
193 | | - if (BDFDB.ListenerUtils.isPressed(46)) { |
| 199 | + else if (_this.settings.general.closeTheFolder && !_this.settings.general.forceOpenFolder && BDFDB.LibraryStores.ExpandedGuildFolderStore.isFolderExpanded(folder.folderId)) BDFDB.LibraryModules.GuildUtils.toggleGuildFolderExpand(folder.folderId); |
| 200 | + else BDFDB.ReactUtils.forceUpdate(this); |
| 201 | + } |
| 202 | + }, |
| 203 | + onMouseDown: event => { |
| 204 | + event = event.nativeEvent || event; |
| 205 | + let mouseMove = event2 => { |
| 206 | + if (Math.sqrt((event.pageX - event2.pageX)**2) > 20 || Math.sqrt((event.pageY - event2.pageY)**2) > 20) { |
194 | 207 | BDFDB.ListenerUtils.stopEvent(event); |
195 | | - _this.removeGuildFromFolder(folder.folderId, guildId); |
196 | | - } |
197 | | - else { |
198 | | - if (_this.settings.general.closeAllFolders) { |
199 | | - for (let openFolderId of BDFDB.LibraryStores.ExpandedGuildFolderStore.getExpandedFolders()) if (openFolderId != folder.folderId || !_this.settings.general.forceOpenFolder) BDFDB.LibraryModules.GuildUtils.toggleGuildFolderExpand(openFolderId); |
200 | | - } |
201 | | - else if (_this.settings.general.closeTheFolder && !_this.settings.general.forceOpenFolder && BDFDB.LibraryStores.ExpandedGuildFolderStore.isFolderExpanded(folder.folderId)) BDFDB.LibraryModules.GuildUtils.toggleGuildFolderExpand(folder.folderId); |
202 | | - else BDFDB.ReactUtils.forceUpdate(this); |
203 | | - } |
204 | | - }, |
205 | | - onMouseDown: event => { |
206 | | - event = event.nativeEvent || event; |
207 | | - let mouseMove = event2 => { |
208 | | - if (Math.sqrt((event.pageX - event2.pageX)**2) > 20 || Math.sqrt((event.pageY - event2.pageY)**2) > 20) { |
209 | | - BDFDB.ListenerUtils.stopEvent(event); |
210 | | - this.draggedGuild = guildId; |
211 | | - let dragPreview = _this.createDragPreview(BDFDB.ReactUtils.findDOMNode(guildIstance).cloneNode(true), event2); |
212 | | - BDFDB.ReactUtils.forceUpdate(this); |
213 | | - document.removeEventListener("mousemove", mouseMove); |
214 | | - document.removeEventListener("mouseup", mouseUp); |
215 | | - let dragging = event3 => { |
216 | | - _this.updateDragPreview(dragPreview, event3); |
217 | | - let placeholder = BDFDB.DOMUtils.getParent(BDFDB.dotCN._serverfoldersguildplaceholder, event3.target); |
218 | | - let hoveredGuild = (BDFDB.ReactUtils.findValue(BDFDB.DOMUtils.getParent(BDFDB.dotCNS._serverfoldersfoldercontent + BDFDB.dotCN.guildouter, placeholder ? placeholder.previousSibling : event3.target), "guild", {up: true}) || {}).id; |
219 | | - if (hoveredGuild) { |
220 | | - let hoveredGuildFolder = BDFDB.GuildUtils.getFolder(hoveredGuild); |
221 | | - if (!hoveredGuildFolder || hoveredGuildFolder.folderId != folder.folderId) hoveredGuild = null; |
222 | | - } |
223 | | - let update = hoveredGuild != this.hoveredGuild; |
224 | | - if (hoveredGuild) this.hoveredGuild = hoveredGuild; |
225 | | - else delete this.hoveredGuild; |
226 | | - if (update) BDFDB.ReactUtils.forceUpdate(this); |
227 | | - }; |
228 | | - let releasing = event3 => { |
229 | | - BDFDB.ListenerUtils.stopEvent(event3); |
230 | | - BDFDB.DOMUtils.remove(dragPreview); |
231 | | - if (this.hoveredGuild) { |
232 | | - let guildIds = [].concat(folder.guildIds); |
233 | | - BDFDB.ArrayUtils.remove(guildIds, this.draggedGuild, true); |
234 | | - guildIds.splice(guildIds.indexOf(this.hoveredGuild) + 1, 0, this.draggedGuild); |
235 | | - _this.updateFolder(Object.assign({}, folder, {guildIds})); |
236 | | - } |
237 | | - delete this.draggedGuild; |
238 | | - delete this.hoveredGuild; |
239 | | - BDFDB.ReactUtils.forceUpdate(this); |
240 | | - document.removeEventListener("mousemove", dragging); |
241 | | - document.removeEventListener("mouseup", releasing); |
242 | | - }; |
243 | | - document.addEventListener("mousemove", dragging); |
244 | | - document.addEventListener("mouseup", releasing); |
245 | | - } |
246 | | - }; |
247 | | - let mouseUp = _ => { |
| 208 | + this.draggedGuild = guildId; |
| 209 | + let dragPreview = _this.createDragPreview(BDFDB.ReactUtils.findDOMNode(guildIstance).cloneNode(true), event2); |
| 210 | + BDFDB.ReactUtils.forceUpdate(this); |
248 | 211 | document.removeEventListener("mousemove", mouseMove); |
249 | 212 | document.removeEventListener("mouseup", mouseUp); |
250 | | - }; |
251 | | - document.addEventListener("mousemove", mouseMove); |
252 | | - document.addEventListener("mouseup", mouseUp); |
253 | | - } |
254 | | - }), |
255 | | - this.hoveredGuild != guildId ? null : BDFDB.ReactUtils.createElement("div", { |
256 | | - className: BDFDB.disCNS.guildouter + BDFDB.disCN._serverfoldersguildplaceholder, |
257 | | - children: BDFDB.ReactUtils.createElement("div", { |
258 | | - children: BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.Mask, { |
259 | | - mask: BDFDB.LibraryComponents.Mask.Masks.SQUIRCLE, |
260 | | - className: BDFDB.disCN.guildplaceholdermask, |
261 | | - width: 48, |
262 | | - height: 48, |
263 | | - style: {display:"block"}, |
264 | | - children: BDFDB.ReactUtils.createElement("div", { |
265 | | - className: BDFDB.disCN.guildplaceholder |
266 | | - }) |
| 213 | + let dragging = event3 => { |
| 214 | + _this.updateDragPreview(dragPreview, event3); |
| 215 | + let placeholder = BDFDB.DOMUtils.getParent(BDFDB.dotCN._serverfoldersguildplaceholder, event3.target); |
| 216 | + let hoveredGuild = (BDFDB.ReactUtils.findValue(BDFDB.DOMUtils.getParent(BDFDB.dotCNS._serverfoldersfoldercontent + BDFDB.dotCN.guildouter, placeholder ? placeholder.previousSibling : event3.target), "guild", {up: true}) || {}).id; |
| 217 | + if (hoveredGuild) { |
| 218 | + let hoveredGuildFolder = BDFDB.GuildUtils.getFolder(hoveredGuild); |
| 219 | + if (!hoveredGuildFolder || hoveredGuildFolder.folderId != folder.folderId) hoveredGuild = null; |
| 220 | + } |
| 221 | + let update = hoveredGuild != this.hoveredGuild; |
| 222 | + if (hoveredGuild) this.hoveredGuild = hoveredGuild; |
| 223 | + else delete this.hoveredGuild; |
| 224 | + if (update) BDFDB.ReactUtils.forceUpdate(this); |
| 225 | + }; |
| 226 | + let releasing = event3 => { |
| 227 | + BDFDB.ListenerUtils.stopEvent(event3); |
| 228 | + BDFDB.DOMUtils.remove(dragPreview); |
| 229 | + if (this.hoveredGuild) { |
| 230 | + let guildIds = [].concat(folder.guildIds); |
| 231 | + BDFDB.ArrayUtils.remove(guildIds, this.draggedGuild, true); |
| 232 | + guildIds.splice(guildIds.indexOf(this.hoveredGuild) + 1, 0, this.draggedGuild); |
| 233 | + _this.updateFolder(Object.assign({}, folder, {guildIds})); |
| 234 | + } |
| 235 | + delete this.draggedGuild; |
| 236 | + delete this.hoveredGuild; |
| 237 | + BDFDB.ReactUtils.forceUpdate(this); |
| 238 | + document.removeEventListener("mousemove", dragging); |
| 239 | + document.removeEventListener("mouseup", releasing); |
| 240 | + }; |
| 241 | + document.addEventListener("mousemove", dragging); |
| 242 | + document.addEventListener("mouseup", releasing); |
| 243 | + } |
| 244 | + }; |
| 245 | + let mouseUp = _ => { |
| 246 | + document.removeEventListener("mousemove", mouseMove); |
| 247 | + document.removeEventListener("mouseup", mouseUp); |
| 248 | + }; |
| 249 | + document.addEventListener("mousemove", mouseMove); |
| 250 | + document.addEventListener("mouseup", mouseUp); |
| 251 | + } |
| 252 | + }), |
| 253 | + this.hoveredGuild != guildId ? null : BDFDB.ReactUtils.createElement("div", { |
| 254 | + className: BDFDB.disCNS.guildouter + BDFDB.disCN._serverfoldersguildplaceholder, |
| 255 | + children: BDFDB.ReactUtils.createElement("div", { |
| 256 | + children: BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.Mask, { |
| 257 | + mask: BDFDB.LibraryComponents.Mask.Masks.SQUIRCLE, |
| 258 | + className: BDFDB.disCN.guildplaceholdermask, |
| 259 | + width: 48, |
| 260 | + height: 48, |
| 261 | + style: {display:"block"}, |
| 262 | + children: BDFDB.ReactUtils.createElement("div", { |
| 263 | + className: BDFDB.disCN.guildplaceholder |
267 | 264 | }) |
268 | 265 | }) |
269 | 266 | }) |
270 | | - ] |
271 | | - }) |
| 267 | + }) |
| 268 | + ] |
272 | 269 | }) |
273 | | - ] |
274 | | - }) |
275 | | - }).filter(n => n).reduce((r, a) => r.concat(a, _this.settings.general.addSeparators ? BDFDB.ReactUtils.createElement("div", { |
276 | | - className: BDFDB.disCN.guildouter, |
277 | | - children: BDFDB.ReactUtils.createElement("div", { |
278 | | - className: BDFDB.disCN.guildseparator |
279 | | - }) |
280 | | - }) : null), [0]).slice(1, -1).flat(10).filter(n => n) |
281 | | - }) |
| 270 | + }) |
| 271 | + ] |
| 272 | + }) |
| 273 | + }).filter(n => n).reduce((r, a) => r.concat(a, _this.settings.general.addSeparators ? BDFDB.ReactUtils.createElement("div", { |
| 274 | + className: BDFDB.disCN.guildouter, |
| 275 | + children: BDFDB.ReactUtils.createElement("div", { |
| 276 | + className: BDFDB.disCN.guildseparator |
| 277 | + }) |
| 278 | + }) : null), [0]).slice(1, -1).flat(10).filter(n => n) |
282 | 279 | }) |
283 | 280 | }) |
284 | 281 | }) |
|
0 commit comments