Add class normaliser

Normalises and prefixes all classes with `da-`
This commit is contained in:
Samuel Elliott 2018-06-12 20:56:07 +01:00
parent 906140686f
commit bbcc36647d
No known key found for this signature in database
GPG Key ID: 8420C7CDE43DC4D6
3 changed files with 54 additions and 3 deletions

View File

@ -10,7 +10,7 @@
import { ClientLogger as Logger } from 'common';
import { Events, SocketProxy, EventHook, CssEditor } from 'modules';
import { ProfileBadges } from 'ui';
import { ProfileBadges, ClassNormaliser } from 'ui';
import Updater from './updater';
/**
@ -24,6 +24,7 @@ export default class {
static get modules() {
return this._modules ? this._modules : (this._modules = [
new ProfileBadges(),
new ClassNormaliser(),
new SocketProxy(),
new EventHook(),
CssEditor,

View File

@ -0,0 +1,47 @@
/**
* BetterDiscord Class Normaliser
* Copyright (c) 2015-present Jiiks/JsSucks - https://github.com/Jiiks / https://github.com/JsSucks
* All rights reserved.
* https://betterdiscord.net
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
import { Module, WebpackModules } from 'modules';
export default class ClassNormaliser extends Module {
init() {
this.patchClassModules(WebpackModules.getModule(this.moduleFilter, false));
}
patchClassModules(modules) {
for (let module of modules) {
this.patchClassModule('da', module);
}
}
moduleFilter(module) {
if (typeof module !== 'object' || Array.isArray(module)) return false;
if (Array.isArray(module)) return false;
if (module.__esModule) return false;
if (!Object.keys(module).length) return false;
for (let baseClassName in module) {
if (typeof module[baseClassName] !== 'string') return false;
if (module[baseClassName].split('-').length === 1) return false;
const alphaNumeric = module[baseClassName].split(/-(.+)/)[1].split(' ')[0];
if (alphaNumeric.length !== 6) return false;
}
return true;
}
patchClassModule(componentName, classNames) {
for (let baseClassName in classNames) {
const normalised = baseClassName.split('-')[0].replace(/[A-Z]/g, m => `-${m}`).toLowerCase();
classNames[baseClassName] += ` ${componentName}-${normalised}`;
}
}
}

View File

@ -1,7 +1,10 @@
export { default as DOM, DOMObserver, DOMManip } from './dom';
export { default as BdUI } from './bdui';
export { default as VueInjector } from './vueinjector';
export { default as BdMenu, BdMenuItems } from './bdmenu';
export { default as Modals } from './modals';
export { default as ProfileBadges } from './profilebadges';
export { default as VueInjector } from './vueinjector';
export { default as Reflection } from './reflection';
export { default as ProfileBadges } from './profilebadges';
export { default as ClassNormaliser } from './classnormaliser';