Update several Spina-related attributes to be static in prep for Spina 2.

Review Request #12903 — Created March 21, 2023 and submitted — Latest diff uploaded

Information

Review Board
release-6.x

Reviewers

The new Spina-based classes recently introduced made use of a nice
feature we had in Spina 1 where you could reference private methods or
include inline functions in event handlers.

Unfortunately, this was only allowed because these mappings were being
rebuilt for every single instance of every class. Plus, they weren't
accessible outside of those classes, meaning other subclasses couldn't
merge them in.

Spina 2 will be addressing the access/merging limitation by expecting
each of these to be static. Unfortunately, that means we can no longer
specify private methods or inline functions. Instead, we need to revert
back to the earlier approach of passing in strings representing function
names.

This change prepares for that by changing #functions to
private _functions(), and specifying them in the maps. It also
converts some templates that were defined as instance variables to be
static.

The event mappings and some other state will be made static in the
upcoming move to Spina 2.

All unit tests pass.

Also tested along with upcoming changes for Spina 2.

Audited all TypeScript in the codebase, making sure there weren't any
classes remaining that needed to be updated, both for this change and
the final move to static.

Commits

Files

    Loading...