Deprecation Guide for 3.13 Modifier Manager Capabilities
Any modifier managers using the 3.13
capabilities should update to the most
recent modifier capabilities, currently 3.22
. In 3.22
, the major changes
are:
- The modifier definition, associated via
setModifierManager
is passed directly tocreate
, rather than a factory wrapper class. Previously, you would access the class via theclass
property on the factory wrapper:
// before
class CustomModifierManager {
capabilities = capabilities('3.13');
createModifier(Definition, args) {
return new Definition.class(args);
}
}
This can be updated to use the definition directly:
// after
class CustomModifierManager {
capabilities = capabilities('3.22');
createModifier(Definition, args) {
return new Definition(args);
}
}
Args are both lazy and autotracked by default. This means that in order to track an argument value, you must actually use it in your modifier. If you do not, the modifier will not update when the value changes.
If you still need the modifier to update whenever a value changes, even if it was not used, you can manually access every value in the modifiers
installModifier
andupdateModifier
lifecycle hooks:
function consumeArgs(args) {
for (let key in args.named) {
// consume value
args.named[key];
}
for (let i = 0; i < args.positional.length; i++) {
// consume value
args.positional[i];
}
}
class CustomModifierManager {
capabilities = capabilities('3.22');
installModifier(bucket, element, args) {
consumeArgs(args);
// ...
}
updateModifier(bucket, args) {
consumeArgs(args);
// ...
}
}
In general this should be avoided, however, and users who are writing modifiers should instead use the value if they want it to be tracked by the modifier.