From 0c32ff77e482826e1dc5755db228a17052490638 Mon Sep 17 00:00:00 2001 From: Scott Newcomer Date: Wed, 14 Feb 2018 07:51:29 -0800 Subject: [PATCH] Move viewport config to addon folder close #124 (#125) --- addon/initializers/viewport-config.js | 42 +++++++++++++++++++ app/initializers/viewport-config.js | 42 +------------------ .../unit/initializers/viewport-config-test.js | 8 ++-- 3 files changed, 48 insertions(+), 44 deletions(-) create mode 100644 addon/initializers/viewport-config.js diff --git a/addon/initializers/viewport-config.js b/addon/initializers/viewport-config.js new file mode 100644 index 00000000..683d92dc --- /dev/null +++ b/addon/initializers/viewport-config.js @@ -0,0 +1,42 @@ +import { assign } from '@ember/polyfills'; +import canUseDOM from 'ember-in-viewport/utils/can-use-dom'; + +const defaultConfig = { + viewportEnabled: true, + viewportSpy: false, + viewportScrollSensitivity: 1, + viewportRefreshRate: 100, + viewportListeners: [ + { context: window, event: 'scroll.scrollable' }, + { context: window, event: 'resize.resizable' } + ], + viewportTolerance: { + top: 0, + left: 0, + bottom: 0, + right: 0 + }, + intersectionThreshold: 1.0, + scrollableArea: null // defaults to layout view (document.documentElement) +}; + +if (canUseDOM) { + defaultConfig.viewportListeners.push({ + context: document, + event: 'touchmove.scrollable' + }); +} + +export function initialize() { + const application = arguments[1] || arguments[0]; + const config = application.resolveRegistration('config:environment'); + const { viewportConfig = {} } = config; + const mergedConfig = assign({}, defaultConfig, viewportConfig); + + application.register('config:in-viewport', mergedConfig, { instantiate: false }); +} + +export default { + name: 'viewport-config', + initialize: initialize +}; diff --git a/app/initializers/viewport-config.js b/app/initializers/viewport-config.js index a57abc71..ac689624 100644 --- a/app/initializers/viewport-config.js +++ b/app/initializers/viewport-config.js @@ -1,42 +1,2 @@ -import { assign } from '@ember/polyfills'; -import config from '../config/environment'; -import canUseDOM from 'ember-in-viewport/utils/can-use-dom'; +export { default, initialize } from 'ember-in-viewport/initializers/viewport-config'; -const defaultConfig = { - viewportEnabled: true, - viewportSpy: false, - viewportScrollSensitivity: 1, - viewportRefreshRate: 100, - viewportListeners: [ - { context: window, event: 'scroll.scrollable' }, - { context: window, event: 'resize.resizable' } - ], - viewportTolerance: { - top: 0, - left: 0, - bottom: 0, - right: 0 - }, - intersectionThreshold: 1.0, - scrollableArea: null // defaults to layout view (document.documentElement) -}; - -if (canUseDOM) { - defaultConfig.viewportListeners.push({ - context: document, - event: 'touchmove.scrollable' - }); -} - -export function initialize() { - const application = arguments[1] || arguments[0]; - const { viewportConfig = {} } = config; - const mergedConfig = assign({}, defaultConfig, viewportConfig); - - application.register('config:in-viewport', mergedConfig, { instantiate: false }); -} - -export default { - name: 'viewport-config', - initialize: initialize -}; diff --git a/tests/unit/initializers/viewport-config-test.js b/tests/unit/initializers/viewport-config-test.js index 201158d8..3fe6d723 100644 --- a/tests/unit/initializers/viewport-config-test.js +++ b/tests/unit/initializers/viewport-config-test.js @@ -1,4 +1,5 @@ -import Ember from 'ember'; +import Application from '@ember/application'; +import { run } from '@ember/runloop'; import ViewportConfigInitializer from 'dummy/initializers/viewport-config'; import { module, test } from 'qunit'; @@ -8,9 +9,10 @@ let container, application; module('Unit | Initializer | viewport config', { beforeEach() { - Ember.run(function() { - application = Ember.Application.create(); + run(function() { + application = Application.create(); container = application.__container__; + application.register('config:environment', {}); application.deferReadiness(); }); }