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

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

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.

Summary ID
Update several Spina-related attributes to be static in prep for Spina 2.
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.
6de5e9704452ba4b059139b774a7cb851c905c68
Description From Last Updated

I feel like when we have only one argument and no return value that this can all go on one …

daviddavid
david
  1. 
      
  2. Show all issues

    I feel like when we have only one argument and no return value that this can all go on one line.

  3. 
      
chipx86
Review request changed
Status:
Completed
Change Summary:
Pushed to release-6.x (b536931)