33 lines
		
	
	
		
			695 B
		
	
	
	
		
			TypeScript
		
	
	
	
			
		
		
	
	
			33 lines
		
	
	
		
			695 B
		
	
	
	
		
			TypeScript
		
	
	
	
// This hook allows a component to signal that it's done rendering in a way that
 | 
						|
// can be used by e.g. our embed code to determine correct iframe height
 | 
						|
 | 
						|
let renderSignalReceived = false;
 | 
						|
 | 
						|
type Callback = () => void;
 | 
						|
 | 
						|
let onInitialRender: Callback;
 | 
						|
 | 
						|
export const afterInitialRender = (callback: Callback) => {
 | 
						|
  if (renderSignalReceived) {
 | 
						|
    callback();
 | 
						|
  } else {
 | 
						|
    onInitialRender = callback;
 | 
						|
  }
 | 
						|
};
 | 
						|
 | 
						|
export const useRenderSignal = () => {
 | 
						|
  return () => {
 | 
						|
    if (renderSignalReceived) {
 | 
						|
      return;
 | 
						|
    }
 | 
						|
 | 
						|
    renderSignalReceived = true;
 | 
						|
 | 
						|
    if (typeof onInitialRender !== 'undefined') {
 | 
						|
      window.requestAnimationFrame(() => {
 | 
						|
        onInitialRender();
 | 
						|
      });
 | 
						|
    }
 | 
						|
  };
 | 
						|
};
 |