Skip to content

Class: CSSTweaks<TPath>

utilities/css-tweaks.CSSTweaks

A Module represents a distinct logical component of FrankerFaceZ. Modules can be loaded or unloaded at runtime, and they have a robust event system. Every add-on consists of one or more Module. There are separate modules for every system in FrankerFaceZ, such as localization, emotes, badges, chat rendering, etc.

If you are creating an add-on, you might use Module directly if you're using more than one module. If your add-on only has one module, then it should use the Addon subclass.

Type parameters

NameTypeDescription
TPathextends string = "site.css_tweaks"The absolute path where this module will be mounted in the module tree. Providing this string allows relative events to be used.

Hierarchy

Constructors

constructor

new CSSTweaks<TPath>(name?, parent?, loader?): CSSTweaks<TPath>

Type parameters

NameType
TPathextends string = "site.css_tweaks"

Parameters

NameType
name?string
parent?GenericModule
loader?RequireContext

Returns

CSSTweaks<TPath>

Overrides

Module.constructor

Defined in

src/utilities/css-tweaks.ts:25

Properties

chunks

chunks: Record<string, string> = {}

Stores CSS chunks loaded by the provided loader, and used with the toggle method.

Defined in

src/utilities/css-tweaks.ts:18


rules

rules: Record<string, string> = {}

Stores CSS rules used with the toggleHide method.

Defined in

src/utilities/css-tweaks.ts:15


should_enable

Optional should_enable: boolean

For use in modules that are direct children of "core" or "site". If this is set to true, the module will be enabled when FrankerFaceZ is initialized.

Inherited from

Module.should_enable

Defined in

src/utilities/module.ts:116

Accessors

addon_id

get addon_id(): undefined | string

If this module is part of an add-on, the add-on's ID.

Returns

undefined | string

Inherited from

Module.addon_id

Defined in

src/utilities/module.ts:209


addon_root

get addon_root(): undefined | GenericModule

If this module is part of an add-on, the add-on's root module.

Returns

undefined | GenericModule

Inherited from

Module.addon_root

Defined in

src/utilities/module.ts:211


chunks_loaded

get chunks_loaded(): boolean

Whether or not chunks have been loaded using the ().

Returns

boolean

Defined in

src/utilities/css-tweaks.ts:35


enabled

get enabled(): boolean

Whether or not the module is State.Enabled.

Returns

boolean

Inherited from

Module.enabled

Defined in

src/utilities/module.ts:204


enabling

get enabling(): boolean

Whether or not the module is State.Enabling.

Returns

boolean

Inherited from

Module.enabling

Defined in

src/utilities/module.ts:206


load_state

get load_state(): LoadState

The current LoadState of this module.

Returns

LoadState

Inherited from

Module.load_state

Defined in

src/utilities/module.ts:196


loaded

get loaded(): boolean

Whether or not the module is LoadState.Loaded.

Returns

boolean

Inherited from

Module.loaded

Defined in

src/utilities/module.ts:199


loader

get loader(): undefined | null | RequireContext

An optional require context that can be used for loading arbitrary, named CSS chunks.

Returns

undefined | null | RequireContext

Defined in

src/utilities/css-tweaks.ts:40

set loader(value): void

Parameters

NameType
valueundefined | null | RequireContext

Returns

void

Defined in

src/utilities/css-tweaks.ts:44


loading

get loading(): boolean

Whether or not the module is LoadState.Loading.

Returns

boolean

Inherited from

Module.loading

Defined in

src/utilities/module.ts:201


log

get log(): Logger

A Logger instance for this module.

Returns

Logger

Inherited from

Module.log

Defined in

src/utilities/module.ts:214

set log(log): void

Parameters

NameType
logLogger

Returns

void

Inherited from

Module.log

Defined in

src/utilities/module.ts:224


path

get path(): TPath

Returns

TPath

Inherited from

Module.path

Defined in

src/utilities/events.ts:507


state

get state(): State

The current State of this module.

Returns

State

Inherited from

Module.state

Defined in

src/utilities/module.ts:193


style

get style(): ManagedStyle

The ManagedStyle instance used internally by this CSSTweaks instance.

Returns

ManagedStyle

Defined in

src/utilities/css-tweaks.ts:53

Methods

_time

_time(event): void

Record a timing event. The timing system is not yet finished.

Parameters

NameTypeDescription
eventanyThe timing event to record.

Returns

void

Inherited from

Module._time

Defined in

src/utilities/module.ts:237


abs_path

abs_path(path): string

Parameters

NameType
pathstring

Returns

string

Inherited from

Module.abs_path

Defined in

src/utilities/events.ts:516


canDisable

canDisable(): boolean

Determine whether or not this module can be disabled. This checks not only this module's state, but the state of all modules that depend on this module.

Returns

boolean

Inherited from

Module.canDisable

Defined in

src/utilities/module.ts:361


canUnload

canUnload(): boolean

Determine whether or not this module can be unloaded. This checks not only this module's state, but the state of all modules that depend on this module.

Returns

boolean

Inherited from

Module.canUnload

Defined in

src/utilities/module.ts:352


delete

delete(key): void

Delete a CSS block from this CSSTweak instance's ManagedStyle instance. This can be used to delete managed blocks including those set by (), (), and setVariable to please use caution.

Parameters

NameTypeDescription
keystringThe key to be deleted.

Returns

void

See

ManagedStyle.delete

Defined in

src/utilities/css-tweaks.ts:157


deleteVariable

deleteVariable(key): void

Delete a CSS variable.

Parameters

NameTypeDescription
keystringThe key for the variable

Returns

void

Defined in

src/utilities/css-tweaks.ts:178


disable

disable(): undefined | null | Promise<void>

Disable this module. If the module has no onDisable method, but it has an onEnable method, then this will throw an error.

As part of disabling this module, all modules that depend on this module will be disabled first. All modules that depend on this module as a load dependency will be unloaded first.

Please note that, if any of those dependencies cannot be unloaded or disabled, this will fail.

Returns

undefined | null | Promise<void>

Inherited from

Module.disable

Defined in

src/utilities/module.ts:336


emit

emit<K>(event, ...args): void

Type parameters

NameType
Kextends string

Parameters

NameType
eventK
...argsModuleEvents[K]

Returns

void

Inherited from

Module.emit

Defined in

src/utilities/events.ts:609


enable

enable(): undefined | null | Promise<void>

Enable this module. If the module has no onEnable method and the module is considered LoadState.Loaded immediately, then the module will be considered State.Enabled immediately.

All of the module's requires dependencies will be enabled before the state updates and this returns.

Modules are automatically loaded before being enabled.

Returns

undefined | null | Promise<void>

Inherited from

Module.enable

Defined in

src/utilities/module.ts:311


events

events(): string[]

Returns

string[]

Inherited from

Module.events

Defined in

src/utilities/events.ts:627


eventsWithChildren

eventsWithChildren(): string[]

Returns

string[]

Inherited from

Module.eventsWithChildren

Defined in

src/utilities/events.ts:616


getAddonProxy

getAddonProxy(addon_id, addon, root, caller): Module<"", ModuleEvents>

Optional. This method is called when a module belonging to an Addon attempts to () or () this module. This can be used to return a Proxy for the purpose of adjusting API responses or record keeping.

Parameters

NameTypeDescription
addon_idstringThe ID of the add-on requesting the module.
addonAddonInfoThe manifest of the add-on requesting the module.
rootGenericModuleThe root Addon module.
callerGenericModuleThe specific Module making the request.

Returns

Module<"", ModuleEvents>

Inherited from

Module.getAddonProxy

Defined in

src/utilities/module.ts:108


hasListeners

hasListeners<K>(event): boolean

Type parameters

NameType
Kextends string

Parameters

NameType
eventK

Returns

boolean

Inherited from

Module.hasListeners

Defined in

src/utilities/events.ts:605


hasModule

hasModule(name): boolean

Parameters

NameType
namestring

Returns

boolean

Inherited from

Module.hasModule

Defined in

src/utilities/module.ts:803


inject

inject(name, module?, require?): null | GenericModule

Parameters

NameTypeDefault value
namenull | string | Module<"", ModuleEvents>undefined
module?null | typeof Module | GenericModuleundefined
requirebooleantrue

Returns

null | GenericModule

Inherited from

Module.inject

Defined in

src/utilities/module.ts:850


injectAs

injectAs(variable, name, module?, require?): null | GenericModule

Parameters

NameTypeDefault value
variablestringundefined
namenull | string | Module<"", ModuleEvents>undefined
module?null | typeof Module | GenericModuleundefined
requirebooleantrue

Returns

null | GenericModule

Inherited from

Module.injectAs

Defined in

src/utilities/module.ts:911


listeners

listeners<K>(event): ListenerInfo<any[]>[]

Type parameters

NameType
Kextends string

Parameters

NameType
eventK

Returns

ListenerInfo<any[]>[]

Inherited from

Module.listeners

Defined in

src/utilities/events.ts:601


load

load(): undefined | null | Promise<void>

Load this module. If the module has no onLoad method and no load_requires modules listed, then it will be considered LoadState.Loaded immediately.

All of the module's load_requires dependencies will be enabled before the load state updates and this returns.

Modules are automatically loaded before being enabled.

Returns

undefined | null | Promise<void>

Inherited from

Module.load

Defined in

src/utilities/module.ts:261


loadFromContext

loadFromContext(ctx, log?): Promise<Record<string, Module<"", ModuleEvents>>>

Attempt to load a set of child modules from a require.context object. This searches the default exports, as well as exports named module specifically. Each discovered module will be registered and injected onto this module.

Parameters

NameTypeDescription
ctxRequireContextThe context to load from.
log?LoggerA logger to use for logging errors. If not provided, this will default to this module's default logger.

Returns

Promise<Record<string, Module<"", ModuleEvents>>>

A map of all loaded modules.

Inherited from

Module.loadFromContext

Defined in

src/utilities/module.ts:1052


makeEvent

makeEvent<TData>(data): TypedFFZEvent<TData>

Create a new FFZEvent instance. This is a convenience method that wraps ()

Type parameters

NameType
TDataextends Record<string, any> = {}

Parameters

NameType
dataTData

Returns

TypedFFZEvent<TData>

Inherited from

Module.makeEvent

Defined in

src/utilities/events.ts:118


makeWaitableEvent

makeWaitableEvent<TData, TReturn>(data): TypedFFZWaitableEvent<TData, TReturn>

Create a new FFZWaitableEvent instance. This is a convenience method that wraps ()

Type parameters

NameType
TDataextends Record<string, any> = {}
TReturnvoid

Parameters

NameType
dataTData

Returns

TypedFFZWaitableEvent<TData, TReturn>

Inherited from

Module.makeWaitableEvent

Defined in

src/utilities/events.ts:128


many

many<K>(event, ttl, fn, ctx?, priority?, prepend?): void

Type parameters

NameType
Kextends string

Parameters

NameTypeDefault value
eventKundefined
ttlnumberundefined
fnEventListener<ModuleEvents[K]>undefined
ctx?anyundefined
priority?numberundefined
prependbooleanfalse

Returns

void

Inherited from

Module.many

Defined in

src/utilities/module.ts:741


off

off<K>(event?, fn?, ctx?): void

Type parameters

NameType
Kextends string

Parameters

NameType
event?K
fn?EventListener
ctx?any

Returns

void

Inherited from

Module.off

Defined in

src/utilities/module.ts:773


offContext

offContext<K>(event, ctx?): void

Type parameters

NameType
Kextends string

Parameters

NameType
eventK
ctx?any

Returns

void

Inherited from

Module.offContext

Defined in

src/utilities/events.ts:274


on

on<K>(event, fn, ctx?, priority?, prepend?): void

Type parameters

NameType
Kextends string

Parameters

NameTypeDefault value
eventKundefined
fnEventListener<ModuleEvents[K]>undefined
ctx?anyundefined
priority?numberundefined
prependbooleanfalse

Returns

void

Inherited from

Module.on

Defined in

src/utilities/module.ts:709


onDisable

onDisable(): void | Promise<void>

Optional. If this method is defined, it will be called when the module is being disabled. The module will not be set to State.Disabled until after this method returns. Promises are supported.

Returns

void | Promise<void>

Inherited from

Module.onDisable

Defined in

src/utilities/module.ts:345


onEnable

onEnable(): void | Promise<void>

Optional. If this method is defined, it will be called when the module is being enabled. The module will not be set to State.Enabled until after this method returns. Promises are supported.

When this is called, all modules that this module requires will already be enabled and injected modules will have been injected.

Returns

void | Promise<void>

Inherited from

Module.onEnable

Defined in

src/utilities/module.ts:323


onLoad

onLoad(): void | Promise<void>

Optional. If this method is defined, it will be called when the module is being loaded. The module will not be set to LoadState.Loaded until after this method returns. Promises are supported.

When this is called, all modules that this module load_requires will already be enabled and injected modules will have been injected.

Returns

void | Promise<void>

Inherited from

Module.onLoad

Defined in

src/utilities/module.ts:273


onUnload

onUnload(): void | Promise<void>

Optional. If this method is defined, it will be called when the module is being unloaded. The module will not be set to LoadState.Unloaded until after this method returns. Promises are supported.

When this is called, all modules that depend on this module will already have been disabled.

Returns

void | Promise<void>

Inherited from

Module.onUnload

Defined in

src/utilities/module.ts:299


once

once<K>(event, fn, ctx?, priority?, prepend?): void

Type parameters

NameType
Kextends string

Parameters

NameTypeDefault value
eventKundefined
fnEventListener<ModuleEvents[K]>undefined
ctx?anyundefined
priority?numberundefined
prependbooleanfalse

Returns

void

Inherited from

Module.once

Defined in

src/utilities/module.ts:725


register

register(name, module, inject_reference?): Module<any, ModuleEvents>

Parameters

NameTypeDefault value
namestringundefined
moduletypeof Moduleundefined
inject_referencebooleanfalse

Returns

Module<any, ModuleEvents>

Inherited from

Module.register

Defined in

src/utilities/module.ts:973


resolve

resolve(name): null | Module<"", ModuleEvents>

Parameters

NameType
namestring | Module<"", ModuleEvents>

Returns

null | Module<"", ModuleEvents>

Inherited from

Module.resolve

Defined in

src/utilities/module.ts:791


set

set(key, value): void

Include an arbitrary string of CSS using this CSSTweak instance's ManagedStyle instance. This will override any existing CSS block using the same key.

Parameters

NameTypeDescription
keystringThe key for the CSS block.
valuestringThe text content of the CSS block.

Returns

void

See

ManagedStyle.set

Defined in

src/utilities/css-tweaks.ts:146


setVariable

setVariable(key, value, scope?): void

Set a CSS variable. The variable's name will be prefixed with ffz- so, for example, if key is "link-color" then the resulting CSS variable will be --ffz-link-color and can be used with var(--ffz-link-color).

Parameters

NameTypeDefault valueDescription
keystringundefinedThe key for the variable.
valuestringundefinedThe value of the variable.
scopestring'body'The scope this variable should be set on. Defaults to "body".

Returns

void

Defined in

src/utilities/css-tweaks.ts:170


toggle

toggle(key, force?): void

If force is not set, this toggles a specific CSS chunk, enabling it if it was not previously enabled and vice versa. If force is provide, it will either enable or disable the specific CSS chunk based on the boolean value of force.

Parameters

NameTypeDescription
keystringThe key for the CSS block in chunks.
force?booleanOptional. The desired state.

Returns

void

Defined in

src/utilities/css-tweaks.ts:99


toggleHide

toggleHide(key, force?): void

If force is not set, this toggles a specific element hiding rule, enabling it if it was not previously enabled and vice versa. If force is provided, it will either enable or disable the specific element hiding rule based on the boolean value of force.

Parameters

NameTypeDescription
keystringThe key for the element hiding rule in rules.
force?booleanOptional. The desired state.

Returns

void

Throws

If the provided key is not within rules.

Defined in

src/utilities/css-tweaks.ts:70


unload

unload(): undefined | null | Promise<void>

Unload this module. If the module has no onUnload method, but it has an onLoad method, then this will throw an error.

When this is called, if this module is currently enabled, it will be disabled first. As part of that, all modules that depend on this module will also be disabled first. All modules that depend on this module as a load dependency will be unloaded first.

Please note that, if any of those dependencies cannot be unloaded or disabled, this will fail.

Returns

undefined | null | Promise<void>

Inherited from

Module.unload

Defined in

src/utilities/module.ts:287


waitFor

waitFor<K>(event, ctx?, priority?, prepend?): Promise<ModuleEvents[K]>

Type parameters

NameType
Kextends string

Parameters

NameTypeDefault value
eventKundefined
ctx?anyundefined
priority?numberundefined
prependbooleanfalse

Returns

Promise<ModuleEvents[K]>

Inherited from

Module.waitFor

Defined in

src/utilities/module.ts:759