viewer/js/app.js is currently acting as a manual dependency composition root. It creates controllers directly, passes large dependency bags into each one, and then re-threads shared services/state/UI references across map, time, dataset, menu, and subsetting logic. This works, but it is getting harder to reason about and maintain as the viewer grows.
viewer/js/app.jsis currently acting as a manual dependency composition root. It creates controllers directly, passes large dependency bags into each one, and then re-threads shared services/state/UI references across map, time, dataset, menu, and subsetting logic. This works, but it is getting harder to reason about and maintain as the viewer grows.