Resizer.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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 );
  9. dom.ownerDocument.addEventListener( 'pointerup', onPointerUp );
  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. // PointerEvent's movementX/movementY are 0 in WebKit
  18. if ( event.isPrimary === false ) return;
  19. const offsetWidth = document.body.offsetWidth;
  20. const clientX = event.clientX;
  21. const cX = clientX < 0 ? 0 : clientX > offsetWidth ? offsetWidth : clientX;
  22. const x = Math.max( 335, offsetWidth - cX ); // .TabbedPanel min-width: 335px
  23. dom.style.right = x + 'px';
  24. document.getElementById( 'sidebar' ).style.width = x + 'px';
  25. document.getElementById( 'player' ).style.right = x + 'px';
  26. document.getElementById( 'script' ).style.right = x + 'px';
  27. document.getElementById( 'viewport' ).style.right = x + 'px';
  28. document.getElementById( 'animation' ).style.right = x + 'px';
  29. document.getElementById( 'animation-resizer' ).style.right = x + 'px';
  30. // Center toolbar in viewport area
  31. const toolbar = document.getElementById( 'toolbar' );
  32. const viewportWidth = offsetWidth - x;
  33. toolbar.style.left = ( viewportWidth / 2 ) + 'px';
  34. signals.windowResize.dispatch();
  35. }
  36. dom.addEventListener( 'pointerdown', onPointerDown );
  37. return new UIElement( dom );
  38. }
  39. export { Resizer };
粤ICP备19079148号