minor string and styling changes

This commit is contained in:
Egor 2017-04-02 12:28:29 -07:00
parent 1c91d410d4
commit d0793f3fe2
21 changed files with 50 additions and 60 deletions

View file

@ -53,7 +53,7 @@
{{else}} {{else}}
{{#if bridgeFindFail}} {{#if bridgeFindFail}}
<p> <p>
A hue bridge could not be automatically found on your network. <br> Enter one manually? <br><br> ( or type <strong>offline</strong> to look around ) A hue bridge could not be automatically found on your network. <br> Enter one manually? <br><br> (or type <strong>offline</strong> to look around)
</p> </p>
<span id="bridge-input"> <span id="bridge-input">

View file

@ -54,7 +54,7 @@ export default Component.extend({
return lightsData[light].state.effect === 'colorloop'; return lightsData[light].state.effect === 'colorloop';
}); });
// if the internal lights state is different than the one from lightsData ( user manually toggled the switch ), send the request to change the bulbs state // if the internal lights state is different than the one from lightsData (user manually toggled the switch), send the request to change the bulbs state
if (colorLoopsOn !== colorLoopsOnSystem) { if (colorLoopsOn !== colorLoopsOnSystem) {
activeLights.forEach((light) => { activeLights.forEach((light) => {
if (this.get('lightsData')[light].state.effect !== effect) { if (this.get('lightsData')[light].state.effect !== effect) {
@ -106,7 +106,7 @@ export default Component.extend({
return lightsData[light].state.on === true; return lightsData[light].state.on === true;
}); });
// if the internal lights state is different than the one from lightsData ( user manually toggled the switch ), send the request to change the bulbs state // if the internal lights state is different than the one from lightsData (user manually toggled the switch), send the request to change the bulbs state
if (lightsOn !== lightsOnSystem) { if (lightsOn !== lightsOnSystem) {
activeLights.forEach((light) => { activeLights.forEach((light) => {
$.ajax(this.get('apiURL') + '/lights/' + light + '/state', { $.ajax(this.get('apiURL') + '/lights/' + light + '/state', {
@ -131,7 +131,7 @@ export default Component.extend({
lightsBrightnessSystem /= activeLights.length; lightsBrightnessSystem /= activeLights.length;
// if the internal lights state is different than the one from lightsData ( user manually toggled the switch ), send the request to change the bulbs state // if the internal lights state is different than the one from lightsData (user manually toggled the switch), send the request to change the bulbs state
if (lightsBrightness !== lightsBrightnessSystem) { if (lightsBrightness !== lightsBrightnessSystem) {
activeLights.forEach((light) => { activeLights.forEach((light) => {
$.ajax(this.get('apiURL') + '/lights/' + light + '/state', { $.ajax(this.get('apiURL') + '/lights/' + light + '/state', {

View file

@ -12,7 +12,7 @@
<div id="beat-area" class="col-sm-7 col-xs-12"> <div id="beat-area" class="col-sm-7 col-xs-12">
<div class="row" id="beat-option-row"> <div class="row" id="beat-option-row">
<div class="beat-option col-xs-4"> <div class="beat-option col-xs-4">
<span data-toggle="tooltip" data-placement="top" data-title="The range of hues ( colors ) that the lights may change to on beat." <span data-toggle="tooltip" data-placement="top" data-title="The range of hues (colors) that the lights may change to on beat."
class="option-description bootstrap-tooltip"> class="option-description bootstrap-tooltip">
Hue Range Hue Range
</span> </span>
@ -22,7 +22,7 @@
</div> </div>
<div class="beat-option col-xs-4"> <div class="beat-option col-xs-4">
<span data-toggle="tooltip" data-placement="top" data-title="The minimum ( off-beat ) and maximum ( on-beat ) brightness of the lights" <span data-toggle="tooltip" data-placement="top" data-title="The minimum (off-beat) and maximum (on-beat) brightness of the lights"
class="option-description bootstrap-tooltip"> class="option-description bootstrap-tooltip">
Brightness Range Brightness Range
</span> </span>
@ -32,7 +32,7 @@
</div> </div>
<div id="sensitivity-settings" class="beat-option col-xs-4"> <div id="sensitivity-settings" class="beat-option col-xs-4">
<span data-toggle="tooltip" data-placement="top" data-title="The sensitivity of the beat detector ( more sensitivity results in more registered beats )" <span data-toggle="tooltip" data-placement="top" data-title="The sensitivity of the beat detector (more sensitivity results in more registered beats)"
class="option-description bootstrap-tooltip"> class="option-description bootstrap-tooltip">
Sensitivity Sensitivity
</span> </span>

View file

@ -62,16 +62,13 @@
} }
.light-text { .light-text {
width: 60px;
word-wrap: break-word;
padding: 0 7px; padding: 0 7px;
} }
.light-text-content { .light-text-content {
display: block; /* Fallback for non-webkit */ display: block;
display: -webkit-box;
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
-webkit-line-clamp: 3; white-space: nowrap;
-webkit-box-orient: vertical; max-width: 100px;
} }

View file

@ -178,7 +178,7 @@ chrome.runtime.onMessage.addListener(function (request, sender, sendResponse) {
return true; return true;
}); });
// core function that simulates a random light on kick ( beat ) // core function that simulates a random light on kick (beat)
let simulateKick = (/*mag, ratioKickMag*/) => { let simulateKick = (/*mag, ratioKickMag*/) => {
chrome.runtime.sendMessage({ action: 'button-bump' }); chrome.runtime.sendMessage({ action: 'button-bump' });

View file

@ -52,7 +52,7 @@
</div> </div>
{{else}} {{else}}
{{#if bridgeFindFail}} {{#if bridgeFindFail}}
<p>A hue bridge could not be automatically found on your network. <br> Enter one manually? <br><br> ( or type <b>offline</b> to look around ) <p>A hue bridge could not be automatically found on your network. <br> Enter one manually? <br><br> (or type <b>offline</b> to look around)
</p> </p>
<span id="bridge-input"> <span id="bridge-input">

View file

@ -173,7 +173,7 @@ export default Component.extend({
}, },
{ {
element: '#playlist', element: '#playlist',
intro: 'You can add and select music to play from your playlist here. You may listen to local audio files, stream music from soundcloud or stream directly from a connected microphone.<br><br>' + intro: 'You can add and select music to play from your playlist here. You may listen to local audio files or stream music from Soundcloud.<br><br>' +
'<i><b>TIP</b>: Songs added through Soundcloud will be saved for when you visit this page again.</i>' '<i><b>TIP</b>: Songs added through Soundcloud will be saved for when you visit this page again.</i>'
}, },
{ {
@ -182,14 +182,14 @@ export default Component.extend({
}, },
{ {
element: '#player-area', element: '#player-area',
intro: 'The audio playback may be controlled with the controls here. Basic music visualization effects may be shown here by selecting them from the menu ( eyeball icon in the bottom right ).' intro: 'The audio playback may be controlled with the controls here. Basic music visualization effects may be shown here by selecting them from the menu (eyeball icon in the bottom right).'
}, },
{ {
element: '#beat-option-row', element: '#beat-option-row',
intro: 'These are the settings for the music tab:<br>' + intro: 'These are the settings for the music tab:<br>' +
'<b>Sensitivity</b> - The sensitivity of the beat detector ( more sensitivity results in more registered beats )<br>' + '<b>Sensitivity</b> - The sensitivity of the beat detector (more sensitivity results in more registered beats)<br>' +
'<b>Hue Range</b> - The hue range that the lights may change to on beat.<br>' + '<b>Hue Range</b> - The hue range that the lights may change to on beat.<br>' +
'<b>Brightness Range</b> - The minimum ( off-beat ) and maximum ( on-beat ) brightness of the lights.<br>' + '<b>Brightness Range</b> - The minimum (off-beat) and maximum (on-beat) brightness of the lights.<br>' +
'<b>Flashing Transitions</b> - Quickly flash the lights on beat<br>' + '<b>Flashing Transitions</b> - Quickly flash the lights on beat<br>' +
'<b>Colorloop</b> - Slowly cycle the lights through all the colors while the music is playing<br>' + '<b>Colorloop</b> - Slowly cycle the lights through all the colors while the music is playing<br>' +
'<i><b>TIP</b>: Your sensitivity settings are saved per song as indicated by the red star icon in the top left corner. These settings they will be restored if you ever listen to the same song again.</i>', '<i><b>TIP</b>: Your sensitivity settings are saved per song as indicated by the red star icon in the top left corner. These settings they will be restored if you ever listen to the same song again.</i>',

View file

@ -53,7 +53,7 @@ export default Component.extend({
return lightsData[light].state.effect === 'colorloop'; return lightsData[light].state.effect === 'colorloop';
}); });
// if the internal lights state is different than the one from lightsData ( user manually toggled the switch ), send the request to change the bulbs state // if the internal lights state is different than the one from lightsData (user manually toggled the switch), send the request to change the bulbs state
if (colorLoopsOn !== colorLoopsOnSystem) { if (colorLoopsOn !== colorLoopsOnSystem) {
activeLights.forEach((light) => { activeLights.forEach((light) => {
if (this.get('lightsData')[light].state.effect !== effect) { if (this.get('lightsData')[light].state.effect !== effect) {
@ -105,7 +105,7 @@ export default Component.extend({
return lightsData[light].state.on === true; return lightsData[light].state.on === true;
}); });
// if the internal lights state is different than the one from lightsData ( user manually toggled the switch ), send the request to change the bulbs state // if the internal lights state is different than the one from lightsData (user manually toggled the switch), send the request to change the bulbs state
if (lightsOn !== lightsOnSystem) { if (lightsOn !== lightsOnSystem) {
activeLights.forEach((light) => { activeLights.forEach((light) => {
$.ajax(this.get('apiURL') + '/lights/' + light + '/state', { $.ajax(this.get('apiURL') + '/lights/' + light + '/state', {
@ -130,7 +130,7 @@ export default Component.extend({
lightsBrightnessSystem /= activeLights.length; lightsBrightnessSystem /= activeLights.length;
// if the internal lights state is different than the one from lightsData ( user manually toggled the switch ), send the request to change the bulbs state // if the internal lights state is different than the one from lightsData (user manually toggled the switch), send the request to change the bulbs state
if (lightsBrightness !== lightsBrightnessSystem) { if (lightsBrightness !== lightsBrightnessSystem) {
activeLights.forEach((light) => { activeLights.forEach((light) => {
$.ajax(this.get('apiURL') + '/lights/' + light + '/state', { $.ajax(this.get('apiURL') + '/lights/' + light + '/state', {

View file

@ -2,7 +2,7 @@
{{#modal-dialog close="close" alignment="center" translucentOverlay=true attachment="center" targetAttachment="center"}} {{#modal-dialog close="close" alignment="center" translucentOverlay=true attachment="center" targetAttachment="center"}}
<p>Enter a <a href="#" onclick="window.open('https://soundcloud.com', '_blank');">SoundCloud</a> track or playlist/set URL</p> <p>Enter a <a href="#" onclick="window.open('https://soundcloud.com', '_blank');">SoundCloud</a> track or playlist/set URL</p>
<p>( ex. https://soundcloud.com/mrsuicidesheep/tracks )</p> <p>(ex. https://soundcloud.com/mrsuicidesheep/tracks)</p>
{{paper-input label="SoundCloud URL" icon="search" value=url onChange=(action (mut url))}} {{paper-input label="SoundCloud URL" icon="search" value=url onChange=(action (mut url))}}

View file

@ -149,13 +149,13 @@ export default Mixin.create({
return html; return html;
}, },
urlNotFoundHtml(url) { urlNotFoundHtml(url) {
return '<div class="alert alert-danger" role="alert">The URL ( ' + url + ' ) could not be resolved.</div>'; return '<div class="alert alert-danger" role="alert">The URL (' + url + ') could not be resolved.</div>';
}, },
failedToPlayFileHtml(fileName) { failedToPlayFileHtml(fileName) {
return '<div class="alert alert-danger" role="alert">Failed to play file ( ' + fileName + ' ).</div>'; return '<div class="alert alert-danger" role="alert">Failed to play file (' + fileName + ').</div>';
}, },
failedToDecodeFileHtml(fileName) { failedToDecodeFileHtml(fileName) {
return '<div class="alert alert-danger" role="alert">Failed to decode file ( ' + fileName + ' ).</div>'; return '<div class="alert alert-danger" role="alert">Failed to decode file (' + fileName + ').</div>';
}, },
scUrl: computed('playQueuePointer', 'playQueue.[]', function () { scUrl: computed('playQueuePointer', 'playQueue.[]', function () {

View file

@ -136,7 +136,7 @@
</div> </div>
<div class="beat-option col-xs-4"> <div class="beat-option col-xs-4">
<span data-toggle="tooltip" data-placement="top" data-title="The minimum ( off-beat ) and maximum ( on-beat ) brightness of the lights" class="option-description bootstrap-tooltip"> <span data-toggle="tooltip" data-placement="top" data-title="The minimum (off-beat) and maximum (on-beat) brightness of the lights" class="option-description bootstrap-tooltip">
Brightness Range Brightness Range
</span> </span>

View file

@ -55,8 +55,6 @@
} }
.light-text { .light-text {
width: 60px;
word-wrap: break-word;
padding: 0 7px; padding: 0 7px;
&.light-inactive::before { &.light-inactive::before {
left: 10px; left: 10px;
@ -65,9 +63,8 @@
.light-text-content { .light-text-content {
display: block; display: block;
display: -webkit-box;
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
-webkit-line-clamp: 3; white-space: nowrap;
-webkit-box-orient: vertical; max-width: 100px;
} }

View file

@ -53,7 +53,7 @@
</div> </div>
{{else}} {{else}}
{{#if bridgeFindFail}} {{#if bridgeFindFail}}
<p>A hue bridge could not be automatically found on your network. <br> Enter one manually? <br><br> ( or type <b>offline</b> to look around ) <p>A hue bridge could not be automatically found on your network. <br> Enter one manually? <br><br> (or type <b>offline</b> to look around)
</p> </p>
<span id="bridge-input"> <span id="bridge-input">

View file

@ -158,7 +158,7 @@ export default Component.extend({
}, },
{ {
element: '#playlist', element: '#playlist',
intro: 'You can add and select music to play from your playlist here. You may listen to local audio files, stream music from soundcloud or stream directly from a connected microphone.<br><br>' + intro: 'You can add and select music to play from your playlist here. You may listen to local audio files or stream music from Soundcloud.<br><br>' +
'<i><b>TIP</b>: Songs added through Soundcloud will be saved for when you visit this page again.</i>' '<i><b>TIP</b>: Songs added through Soundcloud will be saved for when you visit this page again.</i>'
}, },
{ {
@ -167,14 +167,14 @@ export default Component.extend({
}, },
{ {
element: '#player-area', element: '#player-area',
intro: 'The audio playback may be controlled with the controls here. Basic music visualization effects may be shown here by selecting them from the menu ( eyeball icon in the bottom right ).' intro: 'The audio playback may be controlled with the controls here. Basic music visualization effects may be shown here by selecting them from the menu (eyeball icon in the bottom right).'
}, },
{ {
element: '#beat-option-row', element: '#beat-option-row',
intro: 'These are the settings for the music tab:<br>' + intro: 'These are the settings for the music tab:<br>' +
'<b>Sensitivity</b> - The sensitivity of the beat detector ( more sensitivity results in more registered beats )<br>' + '<b>Sensitivity</b> - The sensitivity of the beat detector (more sensitivity results in more registered beats)<br>' +
'<b>Hue Range</b> - The hue range that the lights may change to on beat.<br>' + '<b>Hue Range</b> - The hue range that the lights may change to on beat.<br>' +
'<b>Brightness Range</b> - The minimum ( off-beat ) and maximum ( on-beat ) brightness of the lights.<br>' + '<b>Brightness Range</b> - The minimum (off-beat) and maximum (on-beat) brightness of the lights.<br>' +
'<b>Flashing Transitions</b> - Quickly flash the lights on beat<br>' + '<b>Flashing Transitions</b> - Quickly flash the lights on beat<br>' +
'<b>Colorloop</b> - Slowly cycle the lights through all the colors while the music is playing<br>' + '<b>Colorloop</b> - Slowly cycle the lights through all the colors while the music is playing<br>' +
'<i><b>TIP</b>: Your sensitivity settings are saved per song as indicated by the red star icon in the top left corner. These settings they will be restored if you ever listen to the same song again.</i>', '<i><b>TIP</b>: Your sensitivity settings are saved per song as indicated by the red star icon in the top left corner. These settings they will be restored if you ever listen to the same song again.</i>',

View file

@ -54,7 +54,7 @@ export default Component.extend({
return lightsData[light].state.effect === 'colorloop'; return lightsData[light].state.effect === 'colorloop';
}); });
// if the internal lights state is different than the one from lightsData ( user manually toggled the switch ), send the request to change the bulbs state // if the internal lights state is different than the one from lightsData (user manually toggled the switch), send the request to change the bulbs state
if (colorLoopsOn !== colorLoopsOnSystem) { if (colorLoopsOn !== colorLoopsOnSystem) {
activeLights.forEach((light) => { activeLights.forEach((light) => {
if (this.get('lightsData')[light].state.effect !== effect) { if (this.get('lightsData')[light].state.effect !== effect) {
@ -106,7 +106,7 @@ export default Component.extend({
return lightsData[light].state.on === true; return lightsData[light].state.on === true;
}); });
// if the internal lights state is different than the one from lightsData ( user manually toggled the switch ), send the request to change the bulbs state // if the internal lights state is different than the one from lightsData (user manually toggled the switch), send the request to change the bulbs state
if (lightsOn !== lightsOnSystem) { if (lightsOn !== lightsOnSystem) {
activeLights.forEach((light) => { activeLights.forEach((light) => {
$.ajax(this.get('apiURL') + '/lights/' + light + '/state', { $.ajax(this.get('apiURL') + '/lights/' + light + '/state', {
@ -131,7 +131,7 @@ export default Component.extend({
lightsBrightnessSystem /= activeLights.length; lightsBrightnessSystem /= activeLights.length;
// if the internal lights state is different than the one from lightsData ( user manually toggled the switch ), send the request to change the bulbs state // if the internal lights state is different than the one from lightsData (user manually toggled the switch), send the request to change the bulbs state
if (lightsBrightness !== lightsBrightnessSystem) { if (lightsBrightness !== lightsBrightnessSystem) {
activeLights.forEach((light) => { activeLights.forEach((light) => {
$.ajax(this.get('apiURL') + '/lights/' + light + '/state', { $.ajax(this.get('apiURL') + '/lights/' + light + '/state', {

View file

@ -2,7 +2,7 @@
{{#modal-dialog close="close" alignment="center" translucentOverlay=true attachment="center" targetAttachment="center"}} {{#modal-dialog close="close" alignment="center" translucentOverlay=true attachment="center" targetAttachment="center"}}
<p>Enter a <a href="https://soundcloud.com" target="_blank" rel="noopener noreferrer">SoundCloud</a> track or playlist/set URL</p> <p>Enter a <a href="https://soundcloud.com" target="_blank" rel="noopener noreferrer">SoundCloud</a> track or playlist/set URL</p>
<p>( ex. https://soundcloud.com/mrsuicidesheep/tracks )</p> <p>(ex. https://soundcloud.com/mrsuicidesheep/tracks)</p>
{{paper-input label="SoundCloud URL" icon="search" value=url onChange=(action (mut url))}} {{paper-input label="SoundCloud URL" icon="search" value=url onChange=(action (mut url))}}

View file

@ -111,7 +111,7 @@ export default Component.extend(helperMixin, visualizerMixin, {
}, },
dragLeave() { dragLeave() {
// need to delay the dragLeave notification to avoid flickering ( hovering over some page elements causes this event to be sent ) // need to delay the dragLeave notification to avoid flickering (hovering over some page elements causes this event to be sent)
this.set('dragLeaveTimeoutHandle', setTimeout(() => { this.set('dragging', false); }, 500)); this.set('dragLeaveTimeoutHandle', setTimeout(() => { this.set('dragging', false); }, 500));
}, },

View file

@ -152,13 +152,13 @@ export default Mixin.create({
return html; return html;
}, },
urlNotFoundHtml(url) { urlNotFoundHtml(url) {
return '<div class="alert alert-danger" role="alert">The URL ( ' + url + ' ) could not be resolved.</div>'; return '<div class="alert alert-danger" role="alert">The URL (' + url + ') could not be resolved.</div>';
}, },
failedToPlayFileHtml(fileName) { failedToPlayFileHtml(fileName) {
return '<div class="alert alert-danger" role="alert">Failed to play file ( ' + fileName + ' ).</div>'; return '<div class="alert alert-danger" role="alert">Failed to play file (' + fileName + ').</div>';
}, },
failedToDecodeFileHtml(fileName) { failedToDecodeFileHtml(fileName) {
return '<div class="alert alert-danger" role="alert">Failed to decode file ( ' + fileName + ' ).</div>'; return '<div class="alert alert-danger" role="alert">Failed to decode file (' + fileName + ').</div>';
}, },
scUrl: computed('playQueuePointer', 'playQueue.[]', function () { scUrl: computed('playQueuePointer', 'playQueue.[]', function () {

View file

@ -142,7 +142,7 @@
<div class="row" id="beat-option-row"> <div class="row" id="beat-option-row">
<div class="beat-option col-xs-4"> <div class="beat-option col-xs-4">
<span data-toggle="tooltip" data-placement="top" data-title="The range of hues ( colors ) that the lights may change to on beat." <span data-toggle="tooltip" data-placement="top" data-title="The range of hues (colors) that the lights may change to on beat."
class="option-description bootstrap-tooltip"> class="option-description bootstrap-tooltip">
Hue Range Hue Range
</span> </span>
@ -152,7 +152,7 @@
</div> </div>
<div class="beat-option col-xs-4"> <div class="beat-option col-xs-4">
<span data-toggle="tooltip" data-placement="top" data-title="The minimum ( off-beat ) and maximum ( on-beat ) brightness of the lights" <span data-toggle="tooltip" data-placement="top" data-title="The minimum (off-beat) and maximum (on-beat) brightness of the lights"
class="option-description bootstrap-tooltip"> class="option-description bootstrap-tooltip">
Brightness Range Brightness Range
</span> </span>
@ -162,7 +162,7 @@
</div> </div>
<div id="sensitivity-settings" class="beat-option col-xs-4"> <div id="sensitivity-settings" class="beat-option col-xs-4">
<span data-toggle="tooltip" data-placement="top" data-title="The sensitivity of the beat detector ( more sensitivity results in more registered beats )" <span data-toggle="tooltip" data-placement="top" data-title="The sensitivity of the beat detector (more sensitivity results in more registered beats)"
class="option-description bootstrap-tooltip"> class="option-description bootstrap-tooltip">
Sensitivity Sensitivity
</span> </span>

View file

@ -63,16 +63,13 @@
} }
.light-text { .light-text {
width: 60px;
word-wrap: break-word;
padding: 0 7px; padding: 0 7px;
} }
.light-text-content { .light-text-content {
display: block; /* Fallback for non-webkit */ display: block;
display: -webkit-box;
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
-webkit-line-clamp: 3; white-space: nowrap;
-webkit-box-orient: vertical; max-width: 100px;
} }

View file

@ -19,7 +19,7 @@
"devDependencies": { "devDependencies": {
"broccoli-asset-rev": "^2.2.0", "broccoli-asset-rev": "^2.2.0",
"ember-cli": "^2.8.0", "ember-cli": "^2.8.0",
"ember-cli-app-version": "^2.0.0", "ember-cli-app-version": "^3.0.0",
"ember-cli-babel": "^5.1.5", "ember-cli-babel": "^5.1.5",
"ember-cli-dependency-checker": "^1.2.0", "ember-cli-dependency-checker": "^1.2.0",
"ember-cli-htmlbars": "^1.0.1", "ember-cli-htmlbars": "^1.0.1",
@ -30,15 +30,14 @@
"ember-cli-sass": "^6.0.0", "ember-cli-sass": "^6.0.0",
"ember-cli-shims": "^1.0.2", "ember-cli-shims": "^1.0.2",
"ember-cli-sri": "^2.1.0", "ember-cli-sri": "^2.1.0",
"ember-cli-test-loader": "^1.1.0",
"ember-cli-uglify": "^1.2.0", "ember-cli-uglify": "^1.2.0",
"ember-export-application-global": "^1.0.4", "ember-export-application-global": "^2.0.0",
"ember-inline-svg": "^0.1.7", "ember-inline-svg": "^0.1.7",
"ember-load-initializers": "^0.6.3", "ember-load-initializers": "^1.0.0",
"ember-modal-dialog": "^0.9.0", "ember-modal-dialog": "^0.9.0",
"ember-notify": "^5.0.4", "ember-notify": "^5.0.4",
"ember-paper": "git+https://github.com/miguelcobain/ember-paper.git", "ember-paper": "^1.0.0-alpha.19",
"ember-resolver": "^3.0.0", "ember-resolver": "^4.0.0",
"ember-source": "^2.11.0", "ember-source": "^2.11.0",
"ember-truth-helpers": "^1.2.0", "ember-truth-helpers": "^1.2.0",
"loader.js": "^4.0.7" "loader.js": "^4.0.7"