Resizer.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import { UIElement } from './libs/ui.js';
  2. function Resizer( editor ) {
  3. const signals = editor.signals;
  4. const dom = document.createElement( 'div' );
  5. dom.id = 'resizer';
  6. function onPointerDown( event ) {
  7. if ( event.isPrimary === false ) return;
  8. dom.ownerDocument.addEventListener( 'pointermove', onPointerMove, false );
  9. dom.ownerDocument.addEventListener( 'pointerup', onPointerUp, false );
  10. }
  11. function onPointerUp( event ) {
  12. if ( event.isPrimary === false ) return;
  13. dom.ownerDocument.removeEventListener( 'pointermove', onPointerMove );
  14. dom.ownerDocument.removeEventListener( 'pointerup', onPointerUp );
  15. }
  16. function onPointerMove( event ) {
  17. if ( event.isPrimary === false ) return;
  18. const rect = dom.getBoundingClientRect();
  19. const x = ( document.body.offsetWidth - rect.right ) - event.movementX;
  20. dom.style.right = x + 'px';
  21. document.getElementById( 'sidebar' ).style.width = ( x + rect.width ) + 'px';
  22. document.getElementById( 'viewport' ).style.right = ( x + rect.width ) + 'px';
  23. signals.windowResize.dispatch();
  24. }
  25. dom.addEventListener( 'pointerdown', onPointerDown, false );
  26. return new UIElement( dom );
  27. }
  28. export { Resizer };