mike-north / ember-orientation

Ember.js device orientation and device motion support
http://mike.works/ember-orientation/
MIT License
16 stars 4 forks source link

Ember-orientation

Greenkeeper badge

Build Status Code Climate npm version Dependency Status devDependency Status Ember Observer Score

Effortlessly respond to device orientation events and changes

Use

Service: DeviceOrientation

Included in this addon is a service that emits events on orientation change...

let MyComponent = Ember.Component.extend({

  didInsertElement() {
    this._super(...arguments);

    this.get('orientation').on('tilt', evt => {
      console.log(`alpha: ${evt.alpha}\tbeta: ${evt.beta}\tgamma: ${evt.gamma}`);
    });
  }

});

...and has properties with the latest orientation values that you can bind to

let MyComponent = Ember.Component.extend({
  alphaTiltAngle: Ember.computed.alias('orientation.alpha')
});

The service also has two methods to make the tilt data more easily consumable

Mixin: DeviceOrientationAware

To make this service even easier to use, a mixin is included

import DeviceOrientationAware from 'ember-orientation/mixins/device-orientation-aware';

let MyComponent = Ember.Component.extend(DeviceOrientationAware, {

  // Fires whenever tilt exceeds "sensitivity"
  didTilt(evt) {
    let {alpha, beta, gamma} = evt;
    ...
  },

  // A debounced version
  debouncedDidTilt(evt) {
    let {alpha, beta, gamma} = evt;
    ...
  },

  // tiltAlpha, tiltBeta, tiltGamma properties are included
  transformStyle: Ember.computed('tiltAlpha', 'tiltBeta', 'tiltGamma', {
    get() {
      return `transform: rotateZ(${(this.get('tiltAlpha') - 180 )}deg) ` +
             `rotateX(${this.get('tiltBeta')}deg) ` +
             `rotateY(${- this.get('tiltGamma')}deg)`;
    }
  })
});

Configuration

in your config/environment.js, you may configure some options

module.exports = function(environment) {
  var ENV = {
    orientationServiceDefaults: {
      debounceTimeout    : 50, // ms
      tiltAngleSensitivity: 1, // degrees
      injectionFactories : [ 'view', 'component']
    }
  }
}

Installation

Running

Running Tests

Building

Credits

For more information on using ember-cli, visit http://www.ember-cli.com/.

Analytics