mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-11-02 20:51:23 -07:00 
			
		
		
		
	
		
			
				
	
	
		
			148 lines
		
	
	
	
		
			3.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			148 lines
		
	
	
	
		
			3.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/**
 | 
						|
 * SSR Window 4.0.1
 | 
						|
 * Better handling for window object in SSR environment
 | 
						|
 * https://github.com/nolimits4web/ssr-window
 | 
						|
 *
 | 
						|
 * Copyright 2021, Vladimir Kharlampidi
 | 
						|
 *
 | 
						|
 * Licensed under MIT
 | 
						|
 *
 | 
						|
 * Released on: October 27, 2021
 | 
						|
 */
 | 
						|
/* eslint-disable no-param-reassign */
 | 
						|
function isObject(obj) {
 | 
						|
    return (obj !== null &&
 | 
						|
        typeof obj === 'object' &&
 | 
						|
        'constructor' in obj &&
 | 
						|
        obj.constructor === Object);
 | 
						|
}
 | 
						|
function extend(target = {}, src = {}) {
 | 
						|
    Object.keys(src).forEach((key) => {
 | 
						|
        if (typeof target[key] === 'undefined')
 | 
						|
            target[key] = src[key];
 | 
						|
        else if (isObject(src[key]) &&
 | 
						|
            isObject(target[key]) &&
 | 
						|
            Object.keys(src[key]).length > 0) {
 | 
						|
            extend(target[key], src[key]);
 | 
						|
        }
 | 
						|
    });
 | 
						|
}
 | 
						|
 | 
						|
const ssrDocument = {
 | 
						|
    body: {},
 | 
						|
    addEventListener() { },
 | 
						|
    removeEventListener() { },
 | 
						|
    activeElement: {
 | 
						|
        blur() { },
 | 
						|
        nodeName: '',
 | 
						|
    },
 | 
						|
    querySelector() {
 | 
						|
        return null;
 | 
						|
    },
 | 
						|
    querySelectorAll() {
 | 
						|
        return [];
 | 
						|
    },
 | 
						|
    getElementById() {
 | 
						|
        return null;
 | 
						|
    },
 | 
						|
    createEvent() {
 | 
						|
        return {
 | 
						|
            initEvent() { },
 | 
						|
        };
 | 
						|
    },
 | 
						|
    createElement() {
 | 
						|
        return {
 | 
						|
            children: [],
 | 
						|
            childNodes: [],
 | 
						|
            style: {},
 | 
						|
            setAttribute() { },
 | 
						|
            getElementsByTagName() {
 | 
						|
                return [];
 | 
						|
            },
 | 
						|
        };
 | 
						|
    },
 | 
						|
    createElementNS() {
 | 
						|
        return {};
 | 
						|
    },
 | 
						|
    importNode() {
 | 
						|
        return null;
 | 
						|
    },
 | 
						|
    location: {
 | 
						|
        hash: '',
 | 
						|
        host: '',
 | 
						|
        hostname: '',
 | 
						|
        href: '',
 | 
						|
        origin: '',
 | 
						|
        pathname: '',
 | 
						|
        protocol: '',
 | 
						|
        search: '',
 | 
						|
    },
 | 
						|
};
 | 
						|
function getDocument() {
 | 
						|
    const doc = typeof document !== 'undefined' ? document : {};
 | 
						|
    extend(doc, ssrDocument);
 | 
						|
    return doc;
 | 
						|
}
 | 
						|
 | 
						|
const ssrWindow = {
 | 
						|
    document: ssrDocument,
 | 
						|
    navigator: {
 | 
						|
        userAgent: '',
 | 
						|
    },
 | 
						|
    location: {
 | 
						|
        hash: '',
 | 
						|
        host: '',
 | 
						|
        hostname: '',
 | 
						|
        href: '',
 | 
						|
        origin: '',
 | 
						|
        pathname: '',
 | 
						|
        protocol: '',
 | 
						|
        search: '',
 | 
						|
    },
 | 
						|
    history: {
 | 
						|
        replaceState() { },
 | 
						|
        pushState() { },
 | 
						|
        go() { },
 | 
						|
        back() { },
 | 
						|
    },
 | 
						|
    CustomEvent: function CustomEvent() {
 | 
						|
        return this;
 | 
						|
    },
 | 
						|
    addEventListener() { },
 | 
						|
    removeEventListener() { },
 | 
						|
    getComputedStyle() {
 | 
						|
        return {
 | 
						|
            getPropertyValue() {
 | 
						|
                return '';
 | 
						|
            },
 | 
						|
        };
 | 
						|
    },
 | 
						|
    Image() { },
 | 
						|
    Date() { },
 | 
						|
    screen: {},
 | 
						|
    setTimeout() { },
 | 
						|
    clearTimeout() { },
 | 
						|
    matchMedia() {
 | 
						|
        return {};
 | 
						|
    },
 | 
						|
    requestAnimationFrame(callback) {
 | 
						|
        if (typeof setTimeout === 'undefined') {
 | 
						|
            callback();
 | 
						|
            return null;
 | 
						|
        }
 | 
						|
        return setTimeout(callback, 0);
 | 
						|
    },
 | 
						|
    cancelAnimationFrame(id) {
 | 
						|
        if (typeof setTimeout === 'undefined') {
 | 
						|
            return;
 | 
						|
        }
 | 
						|
        clearTimeout(id);
 | 
						|
    },
 | 
						|
};
 | 
						|
function getWindow() {
 | 
						|
    const win = typeof window !== 'undefined' ? window : {};
 | 
						|
    extend(win, ssrWindow);
 | 
						|
    return win;
 | 
						|
}
 | 
						|
 | 
						|
export { extend, getDocument, getWindow, ssrDocument, ssrWindow };
 |