From 00525f791c0e5cb942ea93166528407e103a0d91 Mon Sep 17 00:00:00 2001 From: mindflowgo Date: Mon, 22 Apr 2024 17:40:58 -0400 Subject: [PATCH] Moved inline DOM functions to delayed calculation upon tns() constructor (for SSR frameworks) --- src/helpers/caf.js | 2 +- src/helpers/classListSupport.js | 4 +++- src/helpers/docElement.js | 3 ++- src/helpers/dom.js | 22 ++++++++++++++++++++++ src/helpers/raf.js | 2 +- src/tiny-slider.js | 8 +++++--- 6 files changed, 34 insertions(+), 7 deletions(-) create mode 100644 src/helpers/dom.js diff --git a/src/helpers/caf.js b/src/helpers/caf.js index 601a7133..9b4be2b9 100644 --- a/src/helpers/caf.js +++ b/src/helpers/caf.js @@ -1,4 +1,4 @@ -var win = window; +import { win } from './dom.js'; export var caf = win.cancelAnimationFrame || win.mozCancelAnimationFrame diff --git a/src/helpers/classListSupport.js b/src/helpers/classListSupport.js index a8b2de06..0c8287d9 100644 --- a/src/helpers/classListSupport.js +++ b/src/helpers/classListSupport.js @@ -1 +1,3 @@ -export var classListSupport = 'classList' in document.createElement('_'); \ No newline at end of file +import { classListSupport } from './dom.js'; + +export { classListSupport }; \ No newline at end of file diff --git a/src/helpers/docElement.js b/src/helpers/docElement.js index 3eaee9c1..35311875 100644 --- a/src/helpers/docElement.js +++ b/src/helpers/docElement.js @@ -1 +1,2 @@ -export var docElement = document.documentElement; \ No newline at end of file +import { docElement } from './dom.js'; +export { docElement } \ No newline at end of file diff --git a/src/helpers/dom.js b/src/helpers/dom.js new file mode 100644 index 00000000..7c086292 --- /dev/null +++ b/src/helpers/dom.js @@ -0,0 +1,22 @@ +var win = {}; +var doc = {}; +var docElement = {}; +var classListSupport = {}; + +function initDOM(){ + win = window; + doc = document; + docElement = document.documentElement; + classListSupport = 'classList' in document.createElement('_'); + + // ChildNode.remove - runs upon DOM initialization function + if(!("remove" in Element.prototype)){ + Element.prototype.remove = function(){ + if(this.parentNode) { + this.parentNode.removeChild(this); + } + }; + } +} + +export { win, doc, docElement, classListSupport, initDOM }; \ No newline at end of file diff --git a/src/helpers/raf.js b/src/helpers/raf.js index 64545b52..e9a12c52 100644 --- a/src/helpers/raf.js +++ b/src/helpers/raf.js @@ -1,4 +1,4 @@ -var win = window; +import { win } from './dom.js'; export var raf = win.requestAnimationFrame || win.webkitRequestAnimationFrame diff --git a/src/tiny-slider.js b/src/tiny-slider.js index 110b2f41..cfe14b53 100644 --- a/src/tiny-slider.js +++ b/src/tiny-slider.js @@ -20,6 +20,7 @@ if(!("remove" in Element.prototype)){ }; } +import { win, doc, initDOM } from './helpers/dom.js'; import { raf } from './helpers/raf.js'; import { caf } from './helpers/caf.js'; import { extend } from './helpers/extend.js'; @@ -111,9 +112,10 @@ export var tns = function(options) { nonce: false }, options || {}); - var doc = document, - win = window, - KEYS = { + // initialize DOM objects - delayed so SSR frameworks can use module + initDOM(); + + var KEYS = { ENTER: 13, SPACE: 32, LEFT: 37,