├── .bowerrc
├── .editorconfig
├── .ember-cli
├── .gitignore
├── .jshintrc
├── .travis.yml
├── Brocfile.js
├── Procfile
├── README.md
├── app
├── app.js
├── components
│ └── .gitkeep
├── controllers
│ ├── .gitkeep
│ └── application.js
├── helpers
│ └── .gitkeep
├── index.html
├── lib
│ └── ipc-listener.js
├── models
│ └── .gitkeep
├── router.js
├── routes
│ ├── .gitkeep
│ └── application.js
├── styles
│ └── app.css
├── templates
│ ├── application.hbs
│ ├── components
│ │ └── .gitkeep
│ ├── foo.hbs
│ └── index.hbs
└── views
│ └── .gitkeep
├── bower.json
├── config
└── environment.js
├── main.js
├── package.json
├── public
├── crossdomain.xml
└── robots.txt
├── testem.json
├── tests
├── .jshintrc
├── helpers
│ ├── resolver.js
│ └── start-app.js
├── index.html
├── test-helper.js
└── unit
│ └── .gitkeep
└── vendor
└── .gitkeep
/.bowerrc:
--------------------------------------------------------------------------------
1 | {
2 | "directory": "bower_components",
3 | "analytics": false
4 | }
5 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | # EditorConfig helps developers define and maintain consistent
2 | # coding styles between different editors and IDEs
3 | # editorconfig.org
4 |
5 | root = true
6 |
7 |
8 | [*]
9 | end_of_line = lf
10 | charset = utf-8
11 | trim_trailing_whitespace = true
12 | insert_final_newline = true
13 | indent_style = space
14 | indent_size = 2
15 |
16 | [*.js]
17 | indent_style = space
18 | indent_size = 2
19 |
20 | [*.hbs]
21 | insert_final_newline = false
22 | indent_style = space
23 | indent_size = 2
24 |
25 | [*.css]
26 | indent_style = space
27 | indent_size = 2
28 |
29 | [*.html]
30 | indent_style = space
31 | indent_size = 2
32 |
33 | [*.{diff,md}]
34 | trim_trailing_whitespace = false
35 |
--------------------------------------------------------------------------------
/.ember-cli:
--------------------------------------------------------------------------------
1 | {
2 | /**
3 | Ember CLI sends analytics information by default. The data is completely
4 | anonymous, but there are times when you might want to disable this behavior.
5 |
6 | Setting `disableAnalytics` to true will prevent any data from being sent.
7 | */
8 | "disableAnalytics": false
9 | }
10 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # See http://help.github.com/ignore-files/ for more about ignoring files.
2 |
3 | # compiled output
4 | /dist
5 | /tmp
6 |
7 | # dependencies
8 | /node_modules
9 | /bower_components
10 |
11 | # misc
12 | /.sass-cache
13 | /connect.lock
14 | /coverage/*
15 | /libpeerconnection.log
16 | npm-debug.log
17 | testem.log
18 |
--------------------------------------------------------------------------------
/.jshintrc:
--------------------------------------------------------------------------------
1 | {
2 | "predef": [
3 | "document",
4 | "window",
5 | "-Promise"
6 | ],
7 | "browser": true,
8 | "boss": true,
9 | "curly": true,
10 | "debug": false,
11 | "devel": true,
12 | "eqeqeq": true,
13 | "evil": true,
14 | "forin": false,
15 | "immed": false,
16 | "laxbreak": false,
17 | "newcap": true,
18 | "noarg": true,
19 | "noempty": false,
20 | "nonew": false,
21 | "nomen": false,
22 | "onevar": false,
23 | "plusplus": false,
24 | "regexp": false,
25 | "undef": true,
26 | "sub": true,
27 | "strict": false,
28 | "white": false,
29 | "eqnull": true,
30 | "esnext": true,
31 | "unused": true
32 | }
33 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | ---
2 | language: node_js
3 | node_js:
4 | - "0.12"
5 |
6 | sudo: false
7 |
8 | cache:
9 | directories:
10 | - node_modules
11 |
12 | before_install:
13 | - export PATH=/usr/local/phantomjs-2.0.0/bin:$PATH
14 | - "npm config set spin false"
15 | - "npm install -g npm@^2"
16 |
17 | install:
18 | - npm install -g bower
19 | - npm install
20 | - bower install
21 |
22 | script:
23 | - npm test
24 |
--------------------------------------------------------------------------------
/Brocfile.js:
--------------------------------------------------------------------------------
1 | /* global require, module */
2 |
3 | var EmberApp = require('ember-cli/lib/broccoli/ember-app');
4 |
5 | var app = new EmberApp();
6 |
7 | // Use `app.import` to add additional libraries to the generated
8 | // output files.
9 | //
10 | // If you need to use different assets in different
11 | // environments, specify an object as the first parameter. That
12 | // object's keys should be the environment name and the values
13 | // should be the asset to use in that environment.
14 | //
15 | // If the library that you are including contains AMD or ES6
16 | // modules that you would like to import into your application
17 | // please specify an object with the list of modules as keys
18 | // along with the exports of each module as its value.
19 |
20 | module.exports = app.toTree();
21 |
--------------------------------------------------------------------------------
/Procfile:
--------------------------------------------------------------------------------
1 | ember: ELECTRON_ENV=development ember server -p 5000
2 | electron: $(while ! echo exit | nc localhost 5000; do sleep 1; done) && ELECTRON_ENV=development electron .
3 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Hello World
2 |
3 | **Disclaimer** This is just something we were experimenting with. It is in no way maintained.
4 |
5 | ## Run
6 |
7 | ```
8 | npm i
9 | npm run dev
10 | ```
11 |
12 | ## Notes
13 |
14 | - `baseURL` in config must be removed.
15 | - `locationType` in config must be "hash".
16 | - [`require` and `module`][removeRequire] need to be removed from window
17 |
18 | [removeRequire]: https://github.com/usecanvas/ember-electron/blob/7792722761301617a2bc685413e2261b227fc328/app/index.html#L10-L14
19 |
--------------------------------------------------------------------------------
/app/app.js:
--------------------------------------------------------------------------------
1 | import Ember from 'ember';
2 | import Resolver from 'ember/resolver';
3 | import loadInitializers from 'ember/load-initializers';
4 | import config from './config/environment';
5 |
6 | var App;
7 |
8 | Ember.MODEL_FACTORY_INJECTIONS = true;
9 |
10 | App = Ember.Application.extend({
11 | modulePrefix: config.modulePrefix,
12 | Resolver: Resolver
13 | });
14 |
15 | loadInitializers(App, config.modulePrefix);
16 |
17 | export default App;
18 |
--------------------------------------------------------------------------------
/app/components/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/usecanvas/ember-electron/8cf843b73e82378736761d9157ad3bd73af63297/app/components/.gitkeep
--------------------------------------------------------------------------------
/app/controllers/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/usecanvas/ember-electron/8cf843b73e82378736761d9157ad3bd73af63297/app/controllers/.gitkeep
--------------------------------------------------------------------------------
/app/controllers/application.js:
--------------------------------------------------------------------------------
1 | import Ember from 'ember';
2 |
3 | export default Ember.Controller.extend({
4 | files: [],
5 | });
--------------------------------------------------------------------------------
/app/helpers/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/usecanvas/ember-electron/8cf843b73e82378736761d9157ad3bd73af63297/app/helpers/.gitkeep
--------------------------------------------------------------------------------
/app/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | HelloWorld
8 |
9 |
10 |
15 |
16 | {{content-for 'head'}}
17 |
18 |
19 |
20 |
21 | {{content-for 'head-footer'}}
22 |
23 |
24 | {{content-for 'body'}}
25 |
26 |
27 |
28 |
29 | {{content-for 'body-footer'}}
30 |
31 |
32 |
--------------------------------------------------------------------------------
/app/lib/ipc-listener.js:
--------------------------------------------------------------------------------
1 | import Ember from 'ember';
2 |
3 | const ipc = window.requireNode('ipc');
4 |
5 | export default Ember.Object.extend({
6 | addListener: function addListener(event, callback) {
7 | ipc.on(event, function sendEvent(payload) {
8 | try {
9 | payload = JSON.parse(payload);
10 | callback(payload);
11 | } catch(err) {
12 | console.warn(`Error parsing IPC payload: ${payload}.`);
13 | }
14 | });
15 | }
16 | });
17 |
--------------------------------------------------------------------------------
/app/models/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/usecanvas/ember-electron/8cf843b73e82378736761d9157ad3bd73af63297/app/models/.gitkeep
--------------------------------------------------------------------------------
/app/router.js:
--------------------------------------------------------------------------------
1 | import Ember from 'ember';
2 | import config from './config/environment';
3 |
4 | var Router = Ember.Router.extend({
5 | location: config.locationType
6 | });
7 |
8 | Router.map(function() {
9 | this.route('foo');
10 | });
11 |
12 | export default Router;
13 |
--------------------------------------------------------------------------------
/app/routes/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/usecanvas/ember-electron/8cf843b73e82378736761d9157ad3bd73af63297/app/routes/.gitkeep
--------------------------------------------------------------------------------
/app/routes/application.js:
--------------------------------------------------------------------------------
1 | import Ember from 'ember';
2 | import IPCListener from '../lib/ipc-listener';
3 |
4 | export default Ember.Route.extend({
5 | initializeIPCListener: function initializeIPCListener() {
6 | const ipcListener = IPCListener.create();
7 | ipcListener.addListener('filesOpened', this.filesOpened.bind(this));
8 | },
9 |
10 | filesOpened: function filesOpened(files) {
11 | this.get('controller.files').setObjects(files);
12 | },
13 |
14 | actions: {
15 | didTransition: function didTransition() {
16 | this.initializeIPCListener();
17 | },
18 | },
19 | });
--------------------------------------------------------------------------------
/app/styles/app.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/usecanvas/ember-electron/8cf843b73e82378736761d9157ad3bd73af63297/app/styles/app.css
--------------------------------------------------------------------------------
/app/templates/application.hbs:
--------------------------------------------------------------------------------
1 | Welcome to Ember.js
2 |
3 | Recent Files
4 |
5 | {{#each files as |file|}}
6 | - {{file}}
7 | {{/each}}
8 |
9 |
10 | {{outlet}}
11 |
--------------------------------------------------------------------------------
/app/templates/components/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/usecanvas/ember-electron/8cf843b73e82378736761d9157ad3bd73af63297/app/templates/components/.gitkeep
--------------------------------------------------------------------------------
/app/templates/foo.hbs:
--------------------------------------------------------------------------------
1 | {{link-to 'Home' 'index'}}
--------------------------------------------------------------------------------
/app/templates/index.hbs:
--------------------------------------------------------------------------------
1 | {{link-to 'Foo' 'foo'}}
--------------------------------------------------------------------------------
/app/views/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/usecanvas/ember-electron/8cf843b73e82378736761d9157ad3bd73af63297/app/views/.gitkeep
--------------------------------------------------------------------------------
/bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "hello-world",
3 | "dependencies": {
4 | "ember": "1.12.0",
5 | "ember-cli-shims": "ember-cli/ember-cli-shims#0.0.3",
6 | "ember-cli-test-loader": "ember-cli-test-loader#0.1.3",
7 | "ember-data": "1.0.0-beta.17",
8 | "ember-load-initializers": "ember-cli/ember-load-initializers#0.1.4",
9 | "ember-qunit": "0.3.3",
10 | "ember-qunit-notifications": "0.0.7",
11 | "ember-resolver": "~0.1.15",
12 | "jquery": "^1.11.1",
13 | "loader.js": "ember-cli/loader.js#3.2.0",
14 | "qunit": "~1.17.1"
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/config/environment.js:
--------------------------------------------------------------------------------
1 | /* jshint node: true */
2 |
3 | var path = require('path');
4 |
5 | module.exports = function(environment) {
6 | var ENV = {
7 | modulePrefix: 'hello-world',
8 | environment: environment,
9 | locationType: 'hash',
10 | EmberENV: {
11 | FEATURES: {
12 | // Here you can enable experimental features on an ember canary build
13 | // e.g. 'with-controller': true
14 | }
15 | },
16 |
17 | APP: {
18 | // Here you can pass flags/options to your application instance
19 | // when it is created
20 | }
21 | };
22 |
23 | if (environment === 'development') {
24 | // ENV.APP.LOG_RESOLVER = true;
25 | // ENV.APP.LOG_ACTIVE_GENERATION = true;
26 | // ENV.APP.LOG_TRANSITIONS = true;
27 | // ENV.APP.LOG_TRANSITIONS_INTERNAL = true;
28 | // ENV.APP.LOG_VIEW_LOOKUPS = true;
29 | }
30 |
31 | if (environment === 'test') {
32 | // Testem prefers this...
33 | ENV.locationType = 'none';
34 |
35 | // keep test console output quieter
36 | ENV.APP.LOG_ACTIVE_GENERATION = false;
37 | ENV.APP.LOG_VIEW_LOOKUPS = false;
38 |
39 | ENV.APP.rootElement = '#ember-testing';
40 | }
41 |
42 | if (environment === 'production') {
43 |
44 | }
45 |
46 | return ENV;
47 | };
48 |
--------------------------------------------------------------------------------
/main.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | var BrowserWindow = require('browser-window');
4 | var Menu = require('menu');
5 | var app = require('app');
6 | var dialog = require('dialog');
7 | var mainWindow = null;
8 |
9 | var template = [{
10 | label: 'File',
11 | submenu: [{
12 | label: 'Open',
13 | accelerator: 'Command+O',
14 | click: function() {
15 | dialog.showOpenDialog(mainWindow, {
16 | properties: ['openFile', 'multiSelections', 'createDirectory']
17 | }, onFileOpen);
18 | }
19 | }]
20 | }];
21 |
22 | app.on('window-all-closed', function onWindowAllClosed() {
23 | if (process.platform !== 'darwin') {
24 | app.quit();
25 | }
26 | });
27 |
28 | app.on('ready', function onReady() {
29 | mainWindow = new BrowserWindow({ width: 800, height: 600 });
30 |
31 | var menu = Menu.buildFromTemplate(template);
32 | Menu.setApplicationMenu(menu);
33 |
34 | delete mainWindow.module;
35 |
36 | if (process.env.ELECTRON_ENV === 'development') {
37 | mainWindow.openDevTools();
38 | mainWindow.loadUrl('http://localhost:5000');
39 | } else {
40 | mainWindow.loadUrl('file://' + __dirname + '/dist/index.html');
41 | }
42 |
43 | mainWindow.on('closed', function onClosed() {
44 | mainWindow = null;
45 | });
46 | });
47 |
48 | function onFileOpen(files) {
49 | if (files && files.length) {
50 | mainWindow.webContents.send('filesOpened', JSON.stringify(files));
51 | }
52 | }
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "hello-world",
3 | "description": "A basic Ember/Electron app",
4 | "version": "0.0.0",
5 | "devDependencies": {
6 | "broccoli-asset-rev": "^2.0.2",
7 | "electron-prebuilt": "^0.26.1",
8 | "ember-cli": "0.2.5",
9 | "ember-cli-app-version": "0.3.3",
10 | "ember-cli-babel": "^5.0.0",
11 | "ember-cli-dependency-checker": "^1.0.0",
12 | "ember-cli-htmlbars": "0.7.6",
13 | "ember-cli-ic-ajax": "0.1.1",
14 | "ember-cli-inject-live-reload": "^1.3.0",
15 | "ember-cli-qunit": "0.3.13",
16 | "ember-cli-uglify": "^1.0.1",
17 | "ember-data": "1.0.0-beta.17",
18 | "ember-disable-proxy-controllers": "^0.7.0",
19 | "ember-export-application-global": "^1.0.2",
20 | "foreman": "^1.3.0"
21 | },
22 | "directories": {
23 | "doc": "doc",
24 | "test": "tests"
25 | },
26 | "main": "main.js",
27 | "private": true,
28 | "repository": "https://github.com/usecanvas/ember-electron.git",
29 | "scripts": {
30 | "build": "ember build",
31 | "dev": "nf start",
32 | "start": "ember server",
33 | "test": "ember test"
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/public/crossdomain.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
15 |
16 |
--------------------------------------------------------------------------------
/public/robots.txt:
--------------------------------------------------------------------------------
1 | # http://www.robotstxt.org
2 | User-agent: *
3 | Disallow:
4 |
--------------------------------------------------------------------------------
/testem.json:
--------------------------------------------------------------------------------
1 | {
2 | "framework": "qunit",
3 | "test_page": "tests/index.html?hidepassed",
4 | "disable_watching": true,
5 | "launch_in_ci": [
6 | "PhantomJS"
7 | ],
8 | "launch_in_dev": [
9 | "PhantomJS",
10 | "Chrome"
11 | ]
12 | }
13 |
--------------------------------------------------------------------------------
/tests/.jshintrc:
--------------------------------------------------------------------------------
1 | {
2 | "predef": [
3 | "document",
4 | "window",
5 | "location",
6 | "setTimeout",
7 | "$",
8 | "-Promise",
9 | "define",
10 | "console",
11 | "visit",
12 | "exists",
13 | "fillIn",
14 | "click",
15 | "keyEvent",
16 | "triggerEvent",
17 | "find",
18 | "findWithAssert",
19 | "wait",
20 | "DS",
21 | "andThen",
22 | "currentURL",
23 | "currentPath",
24 | "currentRouteName"
25 | ],
26 | "node": false,
27 | "browser": false,
28 | "boss": true,
29 | "curly": false,
30 | "debug": false,
31 | "devel": false,
32 | "eqeqeq": true,
33 | "evil": true,
34 | "forin": false,
35 | "immed": false,
36 | "laxbreak": false,
37 | "newcap": true,
38 | "noarg": true,
39 | "noempty": false,
40 | "nonew": false,
41 | "nomen": false,
42 | "onevar": false,
43 | "plusplus": false,
44 | "regexp": false,
45 | "undef": true,
46 | "sub": true,
47 | "strict": false,
48 | "white": false,
49 | "eqnull": true,
50 | "esnext": true
51 | }
52 |
--------------------------------------------------------------------------------
/tests/helpers/resolver.js:
--------------------------------------------------------------------------------
1 | import Resolver from 'ember/resolver';
2 | import config from '../../config/environment';
3 |
4 | var resolver = Resolver.create();
5 |
6 | resolver.namespace = {
7 | modulePrefix: config.modulePrefix,
8 | podModulePrefix: config.podModulePrefix
9 | };
10 |
11 | export default resolver;
12 |
--------------------------------------------------------------------------------
/tests/helpers/start-app.js:
--------------------------------------------------------------------------------
1 | import Ember from 'ember';
2 | import Application from '../../app';
3 | import Router from '../../router';
4 | import config from '../../config/environment';
5 |
6 | export default function startApp(attrs) {
7 | var application;
8 |
9 | var attributes = Ember.merge({}, config.APP);
10 | attributes = Ember.merge(attributes, attrs); // use defaults, but you can override;
11 |
12 | Ember.run(function() {
13 | application = Application.create(attributes);
14 | application.setupForTesting();
15 | application.injectTestHelpers();
16 | });
17 |
18 | return application;
19 | }
20 |
--------------------------------------------------------------------------------
/tests/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | HelloWorld Tests
7 |
8 |
9 |
10 | {{content-for 'head'}}
11 | {{content-for 'test-head'}}
12 |
13 |
14 |
15 |
16 |
17 | {{content-for 'head-footer'}}
18 | {{content-for 'test-head-footer'}}
19 |
20 |
21 |
22 | {{content-for 'body'}}
23 | {{content-for 'test-body'}}
24 |
25 |
26 |
27 |
28 |
29 |
30 | {{content-for 'body-footer'}}
31 | {{content-for 'test-body-footer'}}
32 |
33 |
34 |
--------------------------------------------------------------------------------
/tests/test-helper.js:
--------------------------------------------------------------------------------
1 | import resolver from './helpers/resolver';
2 | import {
3 | setResolver
4 | } from 'ember-qunit';
5 |
6 | setResolver(resolver);
7 |
--------------------------------------------------------------------------------
/tests/unit/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/usecanvas/ember-electron/8cf843b73e82378736761d9157ad3bd73af63297/tests/unit/.gitkeep
--------------------------------------------------------------------------------
/vendor/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/usecanvas/ember-electron/8cf843b73e82378736761d9157ad3bd73af63297/vendor/.gitkeep
--------------------------------------------------------------------------------