You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
	
	
		
			66 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			JavaScript
		
	
		
		
			
		
	
	
			66 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			JavaScript
		
	
| 
											9 months ago
										 | "use strict"; | ||
|  | Object.defineProperty(exports, "__esModule", { | ||
|  |     value: true | ||
|  | }); | ||
|  | Object.defineProperty(exports, "default", { | ||
|  |     enumerable: true, | ||
|  |     get: function() { | ||
|  |         return SideEffect; | ||
|  |     } | ||
|  | }); | ||
|  | const _react = require("react"); | ||
|  | const isServer = typeof window === "undefined"; | ||
|  | const useClientOnlyLayoutEffect = isServer ? ()=>{} : _react.useLayoutEffect; | ||
|  | const useClientOnlyEffect = isServer ? ()=>{} : _react.useEffect; | ||
|  | function SideEffect(props) { | ||
|  |     const { headManager, reduceComponentsToState } = props; | ||
|  |     function emitChange() { | ||
|  |         if (headManager && headManager.mountedInstances) { | ||
|  |             const headElements = _react.Children.toArray(Array.from(headManager.mountedInstances).filter(Boolean)); | ||
|  |             headManager.updateHead(reduceComponentsToState(headElements, props)); | ||
|  |         } | ||
|  |     } | ||
|  |     if (isServer) { | ||
|  |         var _headManager_mountedInstances; | ||
|  |         headManager == null ? void 0 : (_headManager_mountedInstances = headManager.mountedInstances) == null ? void 0 : _headManager_mountedInstances.add(props.children); | ||
|  |         emitChange(); | ||
|  |     } | ||
|  |     useClientOnlyLayoutEffect(()=>{ | ||
|  |         var _headManager_mountedInstances; | ||
|  |         headManager == null ? void 0 : (_headManager_mountedInstances = headManager.mountedInstances) == null ? void 0 : _headManager_mountedInstances.add(props.children); | ||
|  |         return ()=>{ | ||
|  |             var _headManager_mountedInstances; | ||
|  |             headManager == null ? void 0 : (_headManager_mountedInstances = headManager.mountedInstances) == null ? void 0 : _headManager_mountedInstances.delete(props.children); | ||
|  |         }; | ||
|  |     }); | ||
|  |     // We need to call `updateHead` method whenever the `SideEffect` is trigger in all
 | ||
|  |     // life-cycles: mount, update, unmount. However, if there are multiple `SideEffect`s
 | ||
|  |     // being rendered, we only trigger the method from the last one.
 | ||
|  |     // This is ensured by keeping the last unflushed `updateHead` in the `_pendingUpdate`
 | ||
|  |     // singleton in the layout effect pass, and actually trigger it in the effect pass.
 | ||
|  |     useClientOnlyLayoutEffect(()=>{ | ||
|  |         if (headManager) { | ||
|  |             headManager._pendingUpdate = emitChange; | ||
|  |         } | ||
|  |         return ()=>{ | ||
|  |             if (headManager) { | ||
|  |                 headManager._pendingUpdate = emitChange; | ||
|  |             } | ||
|  |         }; | ||
|  |     }); | ||
|  |     useClientOnlyEffect(()=>{ | ||
|  |         if (headManager && headManager._pendingUpdate) { | ||
|  |             headManager._pendingUpdate(); | ||
|  |             headManager._pendingUpdate = null; | ||
|  |         } | ||
|  |         return ()=>{ | ||
|  |             if (headManager && headManager._pendingUpdate) { | ||
|  |                 headManager._pendingUpdate(); | ||
|  |                 headManager._pendingUpdate = null; | ||
|  |             } | ||
|  |         }; | ||
|  |     }); | ||
|  |     return null; | ||
|  | } | ||
|  | 
 | ||
|  | //# sourceMappingURL=side-effect.js.map
 |