1000words.js components aren't materially different from HTML components like we'd see in Angular or React apps. Apps are composed with components, both HTML and 1000words.js, but the individual components don't directly control the overall application behavior or user experience. That responsibility belongs to the App.
They conform to the standard "Data in, Events out" component pattern which allows the App to be the single source of truth.
Demo: The top and bottom components are both initialized with the same shape data. Viewport (the portion of the original view that is current visible after any zoom or pan operations) change Events are published and when the parent App gets them, it calls the API of the other view to make equivalent changes. This causes a mirroring effect.
Component ViewportChanged event → App → change data (viewport) of Mirrored Component