summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--2016_lamp_browser/chrome/icon-16.pngbin0 -> 343 bytes
-rw-r--r--2016_lamp_browser/chrome/icon-32.pngbin0 -> 567 bytes
-rw-r--r--2016_lamp_browser/chrome/icon-64.pngbin0 -> 1036 bytes
-rw-r--r--2016_lamp_browser/chrome/icon.pngbin0 -> 771 bytes
-rw-r--r--2016_lamp_browser/chrome/lamp.css3
-rw-r--r--2016_lamp_browser/chrome/lamp.js22
-rw-r--r--2016_lamp_browser/chrome/manifest.json23
-rw-r--r--2016_lamp_browser/chrome/popup.html52
-rw-r--r--2016_lamp_browser/firefox/README.md2
-rw-r--r--2016_lamp_browser/firefox/data/icon-16.pngbin0 -> 343 bytes
-rw-r--r--2016_lamp_browser/firefox/data/icon-32.pngbin0 -> 567 bytes
-rw-r--r--2016_lamp_browser/firefox/data/icon-64.pngbin0 -> 1036 bytes
-rw-r--r--2016_lamp_browser/firefox/data/icon.pngbin0 -> 771 bytes
-rw-r--r--2016_lamp_browser/firefox/data/onoff.js11
-rw-r--r--2016_lamp_browser/firefox/data/panel.html44
-rw-r--r--2016_lamp_browser/firefox/index.js55
-rw-r--r--2016_lamp_browser/firefox/lamp.xpibin0 -> 6099 bytes
-rw-r--r--2016_lamp_browser/firefox/package.json17
-rw-r--r--2016_mirror_browser/chrome/icon-16.pngbin0 -> 619 bytes
-rw-r--r--2016_mirror_browser/chrome/icon-32.pngbin0 -> 1202 bytes
-rw-r--r--2016_mirror_browser/chrome/icon-64.pngbin0 -> 2663 bytes
-rw-r--r--2016_mirror_browser/chrome/icon.pngbin0 -> 1701 bytes
-rw-r--r--2016_mirror_browser/chrome/manifest.json23
-rw-r--r--2016_mirror_browser/chrome/mirror.css3
-rw-r--r--2016_mirror_browser/chrome/mirror.js39
-rw-r--r--2016_mirror_browser/chrome/popup.html58
-rw-r--r--2016_mirror_browser/firefox/README.md2
-rw-r--r--2016_mirror_browser/firefox/data/icon-16.pngbin0 -> 619 bytes
-rw-r--r--2016_mirror_browser/firefox/data/icon-32.pngbin0 -> 1202 bytes
-rw-r--r--2016_mirror_browser/firefox/data/icon-64.pngbin0 -> 2663 bytes
-rw-r--r--2016_mirror_browser/firefox/data/icon.pngbin0 -> 2663 bytes
-rw-r--r--2016_mirror_browser/firefox/data/onoff.js21
-rw-r--r--2016_mirror_browser/firefox/data/panel.html53
-rw-r--r--2016_mirror_browser/firefox/index.js73
-rw-r--r--2016_mirror_browser/firefox/mirror.xpibin0 -> 10616 bytes
-rw-r--r--2016_mirror_browser/firefox/package.json17
36 files changed, 518 insertions, 0 deletions
diff --git a/2016_lamp_browser/chrome/icon-16.png b/2016_lamp_browser/chrome/icon-16.png
new file mode 100644
index 0000000..698e8bf
--- /dev/null
+++ b/2016_lamp_browser/chrome/icon-16.png
Binary files differ
diff --git a/2016_lamp_browser/chrome/icon-32.png b/2016_lamp_browser/chrome/icon-32.png
new file mode 100644
index 0000000..a629ac6
--- /dev/null
+++ b/2016_lamp_browser/chrome/icon-32.png
Binary files differ
diff --git a/2016_lamp_browser/chrome/icon-64.png b/2016_lamp_browser/chrome/icon-64.png
new file mode 100644
index 0000000..80130ab
--- /dev/null
+++ b/2016_lamp_browser/chrome/icon-64.png
Binary files differ
diff --git a/2016_lamp_browser/chrome/icon.png b/2016_lamp_browser/chrome/icon.png
new file mode 100644
index 0000000..21fd4ae
--- /dev/null
+++ b/2016_lamp_browser/chrome/icon.png
Binary files differ
diff --git a/2016_lamp_browser/chrome/lamp.css b/2016_lamp_browser/chrome/lamp.css
new file mode 100644
index 0000000..78c8a81
--- /dev/null
+++ b/2016_lamp_browser/chrome/lamp.css
@@ -0,0 +1,3 @@
+/*
+empty
+*/
diff --git a/2016_lamp_browser/chrome/lamp.js b/2016_lamp_browser/chrome/lamp.js
new file mode 100644
index 0000000..b732f8d
--- /dev/null
+++ b/2016_lamp_browser/chrome/lamp.js
@@ -0,0 +1,22 @@
+document.addEventListener('DOMContentLoaded', init);
+
+function init(){
+ var elem = document.getElementById('on');
+ elem.addEventListener('click',funcon);
+ var elem2 = document.getElementById('off');
+ elem2.addEventListener('click',funcoff);
+}
+
+function funcon(){
+ chrome.tabs.insertCSS({
+ code: "body{transition: opacity 0.2s ease-in; opacity: 1}"
+ });
+}
+
+function funcoff(){
+ chrome.tabs.insertCSS({
+ code: "body{transition: opacity 0.2s ease-in; opacity: 0}"
+ });
+}
+
+
diff --git a/2016_lamp_browser/chrome/manifest.json b/2016_lamp_browser/chrome/manifest.json
new file mode 100644
index 0000000..64fa4ea
--- /dev/null
+++ b/2016_lamp_browser/chrome/manifest.json
@@ -0,0 +1,23 @@
+{
+ "manifest_version": 2,
+
+ "name": "Lamp",
+ "description": "If you turn off this lamp it will darken your browser!",
+ "version": "1.0",
+ "author": "joak",
+ "permissions": ["activeTab"],
+ "browser_action": {
+ "default_icon": "icon.png",
+ "default_popup": "popup.html",
+ "default_title": "Turns off the light!"
+ },
+ "icons": {
+ "16": "icon-16.png",
+ "32": "icon-32.png",
+ "64": "icon-64.png"
+ },
+ "content_scripts": [{
+ "matches": ["<all_urls>"],
+ "css": ["lamp.css"]
+ }]
+}
diff --git a/2016_lamp_browser/chrome/popup.html b/2016_lamp_browser/chrome/popup.html
new file mode 100644
index 0000000..3aeee38
--- /dev/null
+++ b/2016_lamp_browser/chrome/popup.html
@@ -0,0 +1,52 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Lamp</title>
+ <style>
+ body {
+ font-family: "Segoe UI", "Lucida Grande", Tahoma, sans-serif;
+ font-size: 100%;
+ background: white;
+ width: 400px;
+ height: 105px;
+ }
+ #button {
+ text-align: center;
+ margin-top: 15px;
+ margin-bottom: 5px;
+ }
+ #start {
+ position: absolute:
+ top: 50%;
+ }
+ #wrapper{
+ border: 5px solid black;
+ padding: 10px;
+ }
+ #title{
+ text-align: center;
+ }
+ #title h2{
+ margin-top: 1px;
+ }
+ #settings{
+ text-align: center;
+ }
+ </style>
+ <script src="lamp.js"></script>
+ </head>
+ <body>
+ <div id="wrapper">
+ <div id="title">
+ <h2>Lamp</h2>
+ </div>
+ <div id="settings">
+ <div id="button">
+ <button type="button" id="on">On</button>
+ <button type="button" id="off">Off</button>
+ </div>
+ </div>
+ </div>
+ </body>
+</html>
+
diff --git a/2016_lamp_browser/firefox/README.md b/2016_lamp_browser/firefox/README.md
new file mode 100644
index 0000000..1a34eb0
--- /dev/null
+++ b/2016_lamp_browser/firefox/README.md
@@ -0,0 +1,2 @@
+#lamp
+If you turn off the lamp it will darken your browser!
diff --git a/2016_lamp_browser/firefox/data/icon-16.png b/2016_lamp_browser/firefox/data/icon-16.png
new file mode 100644
index 0000000..698e8bf
--- /dev/null
+++ b/2016_lamp_browser/firefox/data/icon-16.png
Binary files differ
diff --git a/2016_lamp_browser/firefox/data/icon-32.png b/2016_lamp_browser/firefox/data/icon-32.png
new file mode 100644
index 0000000..a629ac6
--- /dev/null
+++ b/2016_lamp_browser/firefox/data/icon-32.png
Binary files differ
diff --git a/2016_lamp_browser/firefox/data/icon-64.png b/2016_lamp_browser/firefox/data/icon-64.png
new file mode 100644
index 0000000..80130ab
--- /dev/null
+++ b/2016_lamp_browser/firefox/data/icon-64.png
Binary files differ
diff --git a/2016_lamp_browser/firefox/data/icon.png b/2016_lamp_browser/firefox/data/icon.png
new file mode 100644
index 0000000..21fd4ae
--- /dev/null
+++ b/2016_lamp_browser/firefox/data/icon.png
Binary files differ
diff --git a/2016_lamp_browser/firefox/data/onoff.js b/2016_lamp_browser/firefox/data/onoff.js
new file mode 100644
index 0000000..378a724
--- /dev/null
+++ b/2016_lamp_browser/firefox/data/onoff.js
@@ -0,0 +1,11 @@
+var on = document.getElementById("on");
+var off = document.getElementById("off");
+
+on.addEventListener('click', function(event) {
+ self.port.emit("lamp", "on");
+}, true);
+
+off.addEventListener('click', function() {
+ self.port.emit("lamp", "off");
+}, true);
+
diff --git a/2016_lamp_browser/firefox/data/panel.html b/2016_lamp_browser/firefox/data/panel.html
new file mode 100644
index 0000000..1f3c13d
--- /dev/null
+++ b/2016_lamp_browser/firefox/data/panel.html
@@ -0,0 +1,44 @@
+<head>
+ <style>
+ body {
+ font-family: "Segoe UI", "Lucida Grande", Tahoma, sans-serif;
+ font-size: 100%;
+ background: white;
+ }
+ #button {
+ text-align: center;
+ margin-top: 15px;
+ margin-bottom: 5px;
+ }
+ #start {
+ position: absolute:
+ top: 50%;
+ }
+ #wrapper{
+ border: 5px solid black;
+ padding: 10px;
+ }
+ #title{
+ text-align: center;
+ }
+ #title h2{
+ margin-top: 1px;
+ }
+ #settings{
+ text-align: center;
+ }
+ </style>
+</head>
+<body>
+ <div id="wrapper">
+ <div id="title">
+ <h2>Lamp</h2>
+ </div>
+ <div id="settings">
+ <div id="button">
+ <button type="button" id="on">On</button>
+ <button type="button" id="off">Off</button>
+ </div>
+ </div>
+ </div>
+</body>
diff --git a/2016_lamp_browser/firefox/index.js b/2016_lamp_browser/firefox/index.js
new file mode 100644
index 0000000..c83160e
--- /dev/null
+++ b/2016_lamp_browser/firefox/index.js
@@ -0,0 +1,55 @@
+var { ToggleButton } = require('sdk/ui/button/toggle');
+var panels = require("sdk/panel");
+var self = require("sdk/self").data;
+var pageMod = require("sdk/page-mod");
+var state = false;
+
+var button = ToggleButton({
+ id: "my-button",
+ label: "lamp",
+ icon: {
+ "16": "./icon-16.png",
+ "32": "./icon-32.png",
+ "64": "./icon-64.png"
+ },
+ onChange: handleChange
+});
+
+var panel = panels.Panel({
+ width: 500,
+ height: 130,
+ contentURL: self.url("panel.html"),
+ contentScriptFile: self.url("onoff.js"),
+ onHide: handleHide
+});
+
+function handleChange(state) {
+ if (state.checked) {
+ panel.show({
+ position: button
+ });
+ }
+}
+
+function handleHide() {
+ button.state('window', {checked: false});
+}
+
+var workers = [];
+panel.port.on("lamp", function (text) {
+ if(text == "on"){
+ state = true;
+ pageMod.PageMod({
+ include: "*",
+ attachTo: ["existing", "top"],
+ contentScript: 'document.getElementsByTagName("body")[0].style = "transition: opacity 0.2s ease-in; opacity: 1"'
+ });
+ } else if (text == "off"){
+ state == false;
+ pageMod.PageMod({
+ include: "*",
+ attachTo: ["existing", "top"],
+ contentScript: 'document.getElementsByTagName("body")[0].style = "transition: opacity 0.2s ease-in; opacity: 0.0"'
+ });
+ }
+});
diff --git a/2016_lamp_browser/firefox/lamp.xpi b/2016_lamp_browser/firefox/lamp.xpi
new file mode 100644
index 0000000..0468d7a
--- /dev/null
+++ b/2016_lamp_browser/firefox/lamp.xpi
Binary files differ
diff --git a/2016_lamp_browser/firefox/package.json b/2016_lamp_browser/firefox/package.json
new file mode 100644
index 0000000..cd27a59
--- /dev/null
+++ b/2016_lamp_browser/firefox/package.json
@@ -0,0 +1,17 @@
+{
+ "title": "lamp",
+ "name": "lamp",
+ "version": "0.0.1",
+ "icon": "resource://lamp/data/icon-32.png",
+ "homepage": "http://joak.nospace.at",
+ "description": "If you turn off this lamp it will darken your browser!",
+ "main": "index.js",
+ "author": "joak",
+ "engines": {
+ "firefox": ">=38.0a1"
+ },
+ "license": "GPL",
+ "keywords": [
+ "jetpack"
+ ]
+}
diff --git a/2016_mirror_browser/chrome/icon-16.png b/2016_mirror_browser/chrome/icon-16.png
new file mode 100644
index 0000000..79df038
--- /dev/null
+++ b/2016_mirror_browser/chrome/icon-16.png
Binary files differ
diff --git a/2016_mirror_browser/chrome/icon-32.png b/2016_mirror_browser/chrome/icon-32.png
new file mode 100644
index 0000000..4e7aa3a
--- /dev/null
+++ b/2016_mirror_browser/chrome/icon-32.png
Binary files differ
diff --git a/2016_mirror_browser/chrome/icon-64.png b/2016_mirror_browser/chrome/icon-64.png
new file mode 100644
index 0000000..32577f2
--- /dev/null
+++ b/2016_mirror_browser/chrome/icon-64.png
Binary files differ
diff --git a/2016_mirror_browser/chrome/icon.png b/2016_mirror_browser/chrome/icon.png
new file mode 100644
index 0000000..413653a
--- /dev/null
+++ b/2016_mirror_browser/chrome/icon.png
Binary files differ
diff --git a/2016_mirror_browser/chrome/manifest.json b/2016_mirror_browser/chrome/manifest.json
new file mode 100644
index 0000000..b296a4e
--- /dev/null
+++ b/2016_mirror_browser/chrome/manifest.json
@@ -0,0 +1,23 @@
+{
+ "manifest_version": 2,
+
+ "name": "Mirror",
+ "description": "This mirror flips your online activity!",
+ "version": "1.0",
+ "author": "joak",
+ "permissions": ["activeTab"],
+ "browser_action": {
+ "default_icon": "icon.png",
+ "default_popup": "popup.html",
+ "default_title": "Flip horizontally page!"
+ },
+ "icons": {
+ "16": "icon-16.png",
+ "32": "icon-32.png",
+ "64": "icon-64.png"
+ },
+ "content_scripts": [{
+ "matches": ["<all_urls>"],
+ "css": ["mirror.css"]
+ }]
+}
diff --git a/2016_mirror_browser/chrome/mirror.css b/2016_mirror_browser/chrome/mirror.css
new file mode 100644
index 0000000..78c8a81
--- /dev/null
+++ b/2016_mirror_browser/chrome/mirror.css
@@ -0,0 +1,3 @@
+/*
+empty
+*/
diff --git a/2016_mirror_browser/chrome/mirror.js b/2016_mirror_browser/chrome/mirror.js
new file mode 100644
index 0000000..558c357
--- /dev/null
+++ b/2016_mirror_browser/chrome/mirror.js
@@ -0,0 +1,39 @@
+document.addEventListener('DOMContentLoaded', init);
+
+function init(){
+ var elem1 = document.getElementById('lron');
+ elem1.addEventListener('click',funclron);
+ var elem2 = document.getElementById('lroff');
+ elem2.addEventListener('click',funclroff);
+ var elem3 = document.getElementById('upon');
+ elem3.addEventListener('click',funcudon);
+ var elem4 = document.getElementById('upoff');
+ elem4.addEventListener('click',funcudoff);
+}
+
+function funclron(){
+ chrome.tabs.insertCSS({
+ code: "body{transform: rotateY(180deg);}"
+ });
+}
+
+function funclroff(){
+ chrome.tabs.insertCSS({
+ code: "body{transform: rotateY(0deg);}"
+ });
+}
+
+
+function funcudon(){
+ chrome.tabs.insertCSS({
+ code: "body{transform: rotateX(180deg);}"
+ });
+}
+
+function funcudoff(){
+ chrome.tabs.insertCSS({
+ code: "body{transform: rotateX(0deg);}"
+ });
+}
+
+
diff --git a/2016_mirror_browser/chrome/popup.html b/2016_mirror_browser/chrome/popup.html
new file mode 100644
index 0000000..17e2c9c
--- /dev/null
+++ b/2016_mirror_browser/chrome/popup.html
@@ -0,0 +1,58 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Mirror</title>
+ <style>
+ body {
+ font-family: "Segoe UI", "Lucida Grande", Tahoma, sans-serif;
+ font-size: 100%;
+ background: white;
+ width: 400px;
+ height: 105px;
+ }
+ #button {
+ text-align: center;
+ margin-top: 15px;
+ margin-bottom: 5px;
+ }
+ #start {
+ position: absolute:
+ top: 50%;
+ }
+ #wrapper{
+ border: 5px solid black;
+ padding: 10px;
+ }
+ #title{
+ text-align: center;
+ }
+ #title h2{
+ margin-top: 1px;
+ }
+ #settings{
+ text-align: center;
+ }
+ </style>
+ <script src="mirror.js"></script>
+ </head>
+ <body>
+ <div id="wrapper">
+ <div id="title">
+ <h2>Mirror</h2>
+ </div>
+ <div id="settings">
+ <div id="button">
+ <p>⬌
+ <button type="button" id="lron">On</button>
+ <button type="button" id="lroff">Off</button>
+ </p>
+ <p>⬍
+ <button type="button" id="upon">O n</button>
+ <button type="button" id="upoff"> Off</button>
+ </p>
+ </div>
+ </div>
+ </div>
+ </body>
+</html>
+
diff --git a/2016_mirror_browser/firefox/README.md b/2016_mirror_browser/firefox/README.md
new file mode 100644
index 0000000..e6c91e3
--- /dev/null
+++ b/2016_mirror_browser/firefox/README.md
@@ -0,0 +1,2 @@
+#mirror
+This mirror flips your online activity!
diff --git a/2016_mirror_browser/firefox/data/icon-16.png b/2016_mirror_browser/firefox/data/icon-16.png
new file mode 100644
index 0000000..79df038
--- /dev/null
+++ b/2016_mirror_browser/firefox/data/icon-16.png
Binary files differ
diff --git a/2016_mirror_browser/firefox/data/icon-32.png b/2016_mirror_browser/firefox/data/icon-32.png
new file mode 100644
index 0000000..4e7aa3a
--- /dev/null
+++ b/2016_mirror_browser/firefox/data/icon-32.png
Binary files differ
diff --git a/2016_mirror_browser/firefox/data/icon-64.png b/2016_mirror_browser/firefox/data/icon-64.png
new file mode 100644
index 0000000..32577f2
--- /dev/null
+++ b/2016_mirror_browser/firefox/data/icon-64.png
Binary files differ
diff --git a/2016_mirror_browser/firefox/data/icon.png b/2016_mirror_browser/firefox/data/icon.png
new file mode 100644
index 0000000..32577f2
--- /dev/null
+++ b/2016_mirror_browser/firefox/data/icon.png
Binary files differ
diff --git a/2016_mirror_browser/firefox/data/onoff.js b/2016_mirror_browser/firefox/data/onoff.js
new file mode 100644
index 0000000..945e090
--- /dev/null
+++ b/2016_mirror_browser/firefox/data/onoff.js
@@ -0,0 +1,21 @@
+var lron = document.getElementById("lron");
+var lroff = document.getElementById("lroff");
+var udon = document.getElementById("udon");
+var udoff = document.getElementById("udoff");
+
+lron.addEventListener('click', function(event) {
+ self.port.emit("lrmirror", "on");
+}, true);
+
+lroff.addEventListener('click', function() {
+ self.port.emit("lrmirror", "off");
+}, true);
+
+udon.addEventListener('click', function(event) {
+ self.port.emit("udmirror", "on");
+}, true);
+
+udoff.addEventListener('click', function() {
+ self.port.emit("udmirror", "off");
+}, true);
+
diff --git a/2016_mirror_browser/firefox/data/panel.html b/2016_mirror_browser/firefox/data/panel.html
new file mode 100644
index 0000000..e904c90
--- /dev/null
+++ b/2016_mirror_browser/firefox/data/panel.html
@@ -0,0 +1,53 @@
+<head>
+ <style>
+ body {
+ font-family: "Segoe UI", "Lucida Grande", Tahoma, sans-serif;
+ font-size: 100%;
+ background: white;
+ }
+ .extra-font{
+ font-family: Times New Roman;
+ }
+ #button {
+ text-align: center;
+ margin-top: 15px;
+ margin-bottom: 5px;
+ }
+ #start {
+ position: absolute:
+ top: 50%;
+ }
+ #wrapper{
+ border: 5px solid black;
+ padding: 10px;
+ }
+ #title{
+ text-align: center;
+ }
+ #title h2{
+ margin-top: 1px;
+ }
+ #settings{
+ text-align: center;
+ }
+ </style>
+</head>
+<body>
+ <div id="wrapper">
+ <div id="title">
+ <h2>Mirror</h2>
+ </div>
+ <div id="settings">
+ <div id="button">
+ <p>&#8596;
+ <button type="button" id="lron">On</button>
+ <button type="button" id="lroff">Off</button>
+ </p>
+ <p>&#8597;
+ <button type="button" id="udon">On</button>
+ <button type="button" id="udoff">Off</button>
+ </p>
+ </div>
+ </div>
+ </div>
+</body>
diff --git a/2016_mirror_browser/firefox/index.js b/2016_mirror_browser/firefox/index.js
new file mode 100644
index 0000000..6c143c7
--- /dev/null
+++ b/2016_mirror_browser/firefox/index.js
@@ -0,0 +1,73 @@
+var { ToggleButton } = require('sdk/ui/button/toggle');
+var panels = require("sdk/panel");
+var self = require("sdk/self").data;
+var pageMod = require("sdk/page-mod");
+var state = false;
+
+var button = ToggleButton({
+ id: "my-button",
+ label: "mirror",
+ icon: {
+ "16": "./icon-16.png",
+ "32": "./icon-32.png",
+ "64": "./icon-64.png"
+ },
+ onChange: handleChange
+});
+
+var panel = panels.Panel({
+ width: 500,
+ height: 180,
+ contentURL: self.url("panel.html"),
+ contentScriptFile: self.url("onoff.js"),
+ onHide: handleHide
+});
+
+function handleChange(state) {
+ if (state.checked) {
+ panel.show({
+ position: button
+ });
+ }
+}
+
+function handleHide() {
+ button.state('window', {checked: false});
+}
+
+panel.port.on("lrmirror", function (text) {
+ if(text == "on"){
+ state = true;
+ pageMod.PageMod({
+ include: "*",
+ attachTo: ["existing", "top"],
+ contentScript: 'document.getElementsByTagName("body")[0].style = "transform: rotateY(180deg)"'
+ });
+ } else if (text == "off"){
+ state == false;
+ pageMod.PageMod({
+ include: "*",
+ attachTo: ["existing", "top"],
+ contentScript: 'document.getElementsByTagName("body")[0].style = "transform: rotateY(0deg)"'
+ });
+ }
+});
+
+panel.port.on("udmirror", function (text) {
+ if(text == "on"){
+ state = true;
+ pageMod.PageMod({
+ include: "*",
+ attachTo: ["existing", "top"],
+ contentScript: 'document.getElementsByTagName("body")[0].style = "transform: rotateX(180deg)"'
+ });
+ } else if (text == "off"){
+ state == false;
+ pageMod.PageMod({
+ include: "*",
+ attachTo: ["existing", "top"],
+ contentScript: 'document.getElementsByTagName("body")[0].style = "transform: rotateX(0deg)"'
+ });
+ }
+});
+
diff --git a/2016_mirror_browser/firefox/mirror.xpi b/2016_mirror_browser/firefox/mirror.xpi
new file mode 100644
index 0000000..3744a35
--- /dev/null
+++ b/2016_mirror_browser/firefox/mirror.xpi
Binary files differ
diff --git a/2016_mirror_browser/firefox/package.json b/2016_mirror_browser/firefox/package.json
new file mode 100644
index 0000000..5cdbbbf
--- /dev/null
+++ b/2016_mirror_browser/firefox/package.json
@@ -0,0 +1,17 @@
+{
+ "title": "mirror",
+ "name": "mirror",
+ "version": "0.0.1",
+ "icon": "resource://mirror/data/icon-32.png",
+ "homepage": "http://joak.nospace.at",
+ "description": "This mirror flips horizontally your online activity!",
+ "main": "index.js",
+ "author": "joak",
+ "engines": {
+ "firefox": ">=38.0a1"
+ },
+ "license": "GPL",
+ "keywords": [
+ "jetpack"
+ ]
+}