25 | ├── .eslintignore ├── app ├── .eslintignore ├── client │ ├── about │ │ ├── github.png │ │ ├── about.js │ │ ├── about.css │ │ └── about.html │ ├── .eslintrc │ ├── elements │ │ ├── img │ │ │ ├── button-grey.png │ │ │ └── button-red.png │ │ ├── atem-composition-box.js │ │ ├── atem-size.html │ │ ├── atem-supersource-box.html │ │ ├── atem-status.js │ │ ├── atem-size.js │ │ ├── atem-composition-box.html │ │ ├── atem-app.js │ │ ├── atem-crop.js │ │ ├── atem-anchor-selector.js │ │ ├── atem-status.html │ │ ├── atem-supersource-box.js │ │ ├── atem-usk-selector.html │ │ ├── atem-settings │ │ │ ├── atem-settings.js │ │ │ └── atem-settings.html │ │ ├── atem-crop.html │ │ ├── atem-usk-selector.js │ │ ├── atem-anchor-selector.html │ │ ├── atem-app.html │ │ ├── atem-usk-box.html │ │ ├── atem-usk-box.js │ │ ├── atem-composition-box-properties.html │ │ └── atem-composition-box-properties.js │ ├── main.html │ ├── connection.html │ ├── lib │ │ └── colorize-label.js │ └── style │ │ └── atem-controller-theme.html ├── .npmrc ├── server │ ├── util.js │ ├── updater.js │ ├── main.js │ ├── connection-window.js │ ├── atem.js │ └── menu.js ├── package.json └── package-lock.json ├── .gitignore ├── .bowerrc ├── media ├── full_screenshot.png └── readme_screenshot.png ├── .eslintrc ├── .editorconfig ├── .gitattributes ├── .travis.yml ├── appveyor.yml ├── LICENSE ├── NOTES.md ├── bower.json ├── README.md ├── package.json └── CHANGELOG.md /.eslintignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | bower_components 3 | -------------------------------------------------------------------------------- /app/.eslintignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | bower_components 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | node_modules 3 | bower_components 4 | dist 5 | -------------------------------------------------------------------------------- /.bowerrc: -------------------------------------------------------------------------------- 1 | { 2 | "directory": "app/client/bower_components/" 3 | } 4 | -------------------------------------------------------------------------------- /app/client/about/github.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TipoftheHats/atem-compositor/HEAD/app/client/about/github.png -------------------------------------------------------------------------------- /media/full_screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TipoftheHats/atem-compositor/HEAD/media/full_screenshot.png -------------------------------------------------------------------------------- /media/readme_screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TipoftheHats/atem-compositor/HEAD/media/readme_screenshot.png -------------------------------------------------------------------------------- /app/.npmrc: -------------------------------------------------------------------------------- 1 | target=1.7.5 2 | disturl=https://atom.io/download/atom-shell 3 | runtime=electron 4 | build_from_source=true 5 | -------------------------------------------------------------------------------- /app/client/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true 4 | }, 5 | "globals": { 6 | "Polymer": true 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /app/client/elements/img/button-grey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TipoftheHats/atem-compositor/HEAD/app/client/elements/img/button-grey.png -------------------------------------------------------------------------------- /app/client/elements/img/button-red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TipoftheHats/atem-compositor/HEAD/app/client/elements/img/button-red.png -------------------------------------------------------------------------------- /app/server/util.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const path = require('path'); 4 | const isDev = require('electron-is-dev'); 5 | 6 | module.exports = { 7 | isDev, 8 | version: (function () { 9 | const packagePath = path.resolve(__dirname, '../package.json'); 10 | return require(packagePath).version; 11 | })() 12 | }; 13 | -------------------------------------------------------------------------------- /.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "xo/esnext", 3 | "plugins": [ 4 | "html" 5 | ], 6 | "rules": { 7 | "new-cap": [ 8 | 2, 9 | { 10 | "capIsNewExceptions": [ 11 | "Polymer", 12 | "Polymer.MutableData", 13 | "Polymer.GestureEventListeners" 14 | ] 15 | } 16 | ], 17 | "capitalized-comments": [0] 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | charset = utf-8 4 | 5 | [*] 6 | indent_style = tab 7 | end_of_line = lf 8 | charset = utf-8 9 | trim_trailing_whitespace = true 10 | insert_final_newline = true 11 | indent_size = 4 12 | 13 | [{package.json,*.yml}] 14 | indent_style = space 15 | indent_size = 2 16 | 17 | # Don't remove trailing whitespace from Markdown 18 | [*.md] 19 | trim_trailing_whitespace = false 20 | -------------------------------------------------------------------------------- /app/client/about/about.js: -------------------------------------------------------------------------------- 1 | const {shell} = require('electron'); 2 | 3 | const {version} = require('../../server/util'); 4 | 5 | document.getElementById('header').textContent = `ATEM Compositor v${version}`; 6 | 7 | // Open links externally by default 8 | document.addEventListener('click', e => { 9 | if (e.target.tagName === 'A' && e.target.target === '_blank') { 10 | e.preventDefault(); 11 | shell.openExternal(e.target.href); 12 | } 13 | }); 14 | 15 | -------------------------------------------------------------------------------- /app/client/elements/atem-composition-box.js: -------------------------------------------------------------------------------- 1 | (function () { 2 | 'use strict'; 3 | 4 | /** 5 | * @customElement 6 | * @polymer 7 | */ 8 | class AtemCompositionBox extends Polymer.Element { 9 | static get is() { 10 | return 'atem-composition-box'; 11 | } 12 | 13 | static get properties() { 14 | return { 15 | label: String, 16 | enabled: { 17 | type: Boolean, 18 | notify: true 19 | } 20 | }; 21 | } 22 | } 23 | 24 | customElements.define(AtemCompositionBox.is, AtemCompositionBox); 25 | })(); 26 | -------------------------------------------------------------------------------- /app/client/main.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 | 7 | 8 | 9 |
25 |