ssr-window.js 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. /**
  2. * SSR Window 1.0.1
  3. * Better handling for window object in SSR environment
  4. * https://github.com/nolimits4web/ssr-window
  5. *
  6. * Copyright 2018, Vladimir Kharlampidi
  7. *
  8. * Licensed under MIT
  9. *
  10. * Released on: July 18, 2018
  11. */
  12. (function (global, factory) {
  13. typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
  14. typeof define === 'function' && define.amd ? define(['exports'], factory) :
  15. (factory((global.ssrWindow = {})));
  16. }(this, (function (exports) { 'use strict';
  17. var doc = (typeof document === 'undefined') ? {
  18. body: {},
  19. addEventListener: function addEventListener() {},
  20. removeEventListener: function removeEventListener() {},
  21. activeElement: {
  22. blur: function blur() {},
  23. nodeName: '',
  24. },
  25. querySelector: function querySelector() {
  26. return null;
  27. },
  28. querySelectorAll: function querySelectorAll() {
  29. return [];
  30. },
  31. getElementById: function getElementById() {
  32. return null;
  33. },
  34. createEvent: function createEvent() {
  35. return {
  36. initEvent: function initEvent() {},
  37. };
  38. },
  39. createElement: function createElement() {
  40. return {
  41. children: [],
  42. childNodes: [],
  43. style: {},
  44. setAttribute: function setAttribute() {},
  45. getElementsByTagName: function getElementsByTagName() {
  46. return [];
  47. },
  48. };
  49. },
  50. location: { hash: '' },
  51. } : document; // eslint-disable-line
  52. var win = (typeof window === 'undefined') ? {
  53. document: doc,
  54. navigator: {
  55. userAgent: '',
  56. },
  57. location: {},
  58. history: {},
  59. CustomEvent: function CustomEvent() {
  60. return this;
  61. },
  62. addEventListener: function addEventListener() {},
  63. removeEventListener: function removeEventListener() {},
  64. getComputedStyle: function getComputedStyle() {
  65. return {
  66. getPropertyValue: function getPropertyValue() {
  67. return '';
  68. },
  69. };
  70. },
  71. Image: function Image() {},
  72. Date: function Date() {},
  73. screen: {},
  74. setTimeout: function setTimeout() {},
  75. clearTimeout: function clearTimeout() {},
  76. } : window; // eslint-disable-line
  77. exports.window = win;
  78. exports.document = doc;
  79. Object.defineProperty(exports, '__esModule', { value: true });
  80. })));