diff --git a/.gitignore b/.gitignore index c5efdf10..28806e8a 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ tarpaulin-report.html cobertura.xml prod/ node_modules/ +static/bundle diff --git a/static/bundle/main.css b/static/bundle/main.css index 31ca5b0d..7d3b0532 100644 --- a/static/bundle/main.css +++ b/static/bundle/main.css @@ -1 +1 @@ -*{padding:0;margin:0}.form__logo{width:110px;padding-top:50px;display:block;margin:auto;transform:translateY(-40.9%)}.form__brand,.form__logo{position:relative;top:20%}.form__brand{padding:10px 0;text-align:center;transform:translateY(-90.9%)}.form-container{max-width:40%;min-width:20%;position:absolute;top:50%;left:50%;transform:translate(-50%,-49.9%);box-sizing:border-box;margin:auto;padding:20px 0}.form__box{border:1px solid #eaecef;background-color:#f6f8fa;border-radius:5px;padding:20px 0}.form__in-group{display:block;position:relative;margin:auto;max-width:80%;padding:10px 0;box-sizing:content-box;align-items:center;align-content:center}.form__in-field{display:block;box-sizing:border-box;margin:10px 0;padding:10px 0;width:100%}.form__in-field--warn{border:1px solid red}.form__in-field--success{border:1px solid #2ea44f}.form__pw-recovery{text-decoration:none;color:#0366d6;font-size:.8rem}.form__submit-button{display:block;border:1px solid #87ceeb;background:#2ea44f;color:#fff;height:40px;border-radius:5px;width:80%;margin:auto}.form__secondary-action{display:block;margin-top:10px}.form__secondary-action__banner{display:block;margin:auto;max-width:80%;text-align:center}.form__secondary-action__link{text-decoration:none;color:#0366d6} \ No newline at end of file +.form__logo{width:110px;padding-top:50px;display:block;margin:auto;transform:translateY(-40.9%)}.form__brand,.form__logo{position:relative;top:20%}.form__brand{padding:10px 0;text-align:center;transform:translateY(-90.9%)}.form-container{max-width:40%;min-width:20%;position:absolute;top:50%;left:50%;transform:translate(-50%,-49.9%);box-sizing:border-box;margin:auto;padding:20px 0}.form__box{border:1px solid #eaecef;background-color:#f6f8fa;border-radius:5px;padding:20px 0}.form__in-group{display:block;position:relative;margin:auto;max-width:80%;padding:10px 0;box-sizing:content-box;align-items:center;align-content:center}.form__in-field{display:block;box-sizing:border-box;margin:10px 0;padding:10px 0;width:100%}.form__in-field--warn{border:1px solid red}.form__in-field--success{border:1px solid #2ea44f}.form__pw-recovery{text-decoration:none;color:#0366d6;font-size:.8rem}.form__submit-button{display:block;border:1px solid #87ceeb;background:#2ea44f;color:#fff;height:40px;border-radius:5px;width:80%;margin:auto}.form__secondary-action{display:block;margin-top:10px}.form__secondary-action__banner{display:block;margin:auto;max-width:80%;text-align:center}.form__secondary-action__link{text-decoration:none;color:#0366d6}:root{--green:#5cad66;--violet:purple;--backdrop:#f0f0f0;--light-text:hsla(0,0%,100%,0.87);--secondary-backdrop:#2b2c30;--light-grey:rgba(0,0,0,0.125)}*{margin:0;padding:0}a{text-decoration:none}li{list-style:none}.secondary-menu{position:fixed;width:14%;left:0;bottom:0;top:0;right:0;height:100%;overflow:auto;background-color:var(--secondary-backdrop);color:var(--light-text)}.secondary-menu__heading{margin:auto;padding:20px 5px;display:flex}.secondary-menu__heading:hover{color:var(--green);cursor:grab}.secondary-menu__logo{width:70px;display:inline-block}.secondary-menu__brand-name{display:inline-block;margin:auto;font-size:1.5rem}.secondary-menu__item{margin:auto;padding:20px 25px;display:flex}.secondary-menu__icon{filter:invert(100%) sepia(0) saturate(0) hue-rotate(93deg) brightness(103%) contrast(103%);opacity:.8;width:1rem;margin:auto 10px auto auto}.secondary-menu__item-name{display:inline-block;margin:auto;font-size:1rem}.secondary-menu__item-link:hover{color:var(--green);cursor:grab;filter:invert(58%) sepia(60%) saturate(331%) hue-rotate(76deg) brightness(91%) contrast(92%)}.secondary-menu__item-link{color:inherit;width:100%;height:100%}main{position:fixed;top:0;right:0;left:14%;bottom:0;background-color:var(--backdrop)}.task-bar{display:flex;padding:0;margin:0;background-color:#fff}.task-bar__action{display:inline-block;padding:10px 0;margin:auto}.task-bar__spacer{min-width:250px;flex:6}.task-bar__icon{opacity:.8;width:1.5rem;margin:auto 20px}.task-bar__icon:hover{cursor:grab}.main-menu{display:flex;flex-grow:0;padding-top:20px;padding-left:10px}.main-menu__item{list-style:none;background-color:#c3c3c3;flex:2;text-align:center;vertical-align:middle;margin:auto 20px;padding:10px 0}.main-menu__item--spacer{list-style:none;flex:3;text-align:center}.main-menu__item:hover{background-color:grey;cursor:grab}.main-menu__item:last-child{padding:0;display:flex;flex:2;border:none;background-color:unset}.main-menu__item:last-child:hover{cursor:unset;background-color:unset}.main-menu__add-site{display:inline-block;background-color:var(--violet);color:#fff;font-weight:500;font-size:16px;padding:10px 15px;border-radius:5px;border:1px solid grey;min-height:45px;margin:auto}.main-menu__add-site:hover{background-color:var(--violet);cursor:grab;transform:translateY(-5px)}.help-text{border-radius:4px;box-shadow:var(--secondary-backdrop) 0 2px 6px 0;min-width:70%;max-width:80%;min-height:70px;display:flex;margin-left:15px;margin-top:40px}.help-text__serial-num{display:inline-flex;background-color:var(--violet);color:var(--light-text);width:30px;height:30px;border-radius:50%;align-items:center;justify-content:center}.help-text__instructions{display:inline-block;list-style:none;font-size:19px;font-weight:500;padding:10px;margin:auto}.inner-container{box-sizing:border-box;max-width:50%;margin:50px auto;border-radius:5px;display:flex}.sitekey-form{display:flex;flex-direction:column;width:90%;justify-content:center;align-items:center;box-sizing:content-box;background-color:#fff;margin:auto;padding-bottom:30px}.sitekey-form__title-flex-container{display:flex;width:100%;border-bottom:.1px solid var(--light-grey)}.sitekey-form__title{font-size:1rem;padding:.75rem 1.25rem}.sitekey-form__label{display:block;margin:10px 0;box-sizing:inherit;justify-self:left}.sitekey-form__input{position:relative;margin-top:5px;box-sizing:border-box;height:40px;width:90%}.sitekey-form__input--add-level{position:relative;margin-top:5px;box-sizing:inherit;flex:3;height:40px;margin-right:20px}.sitekey-form__add-level-flex-container{display:flex;box-sizing:border-box;width:90%;margin-top:10px}.sitekey-form__add-level-spacer{flex:3}.sitekey-form__add-level{font-size:16px;height:40px;min-width:125px;margin:auto}.sitekey-form__add-level,.sitekey-form__submit{background-color:var(--violet);color:#fff;padding:5px;border-radius:5px;border:1px solid var(--light-grey)}.sitekey-form__submit{margin-top:50px;display:block;font-size:20px;min-height:45px;width:125px;width:90%} \ No newline at end of file diff --git a/static/bundle/main.js b/static/bundle/main.js index fed3d5a6..cf68e081 100644 --- a/static/bundle/main.js +++ b/static/bundle/main.js @@ -86,62 +86,6 @@ /************************************************************************/ /******/ ({ -/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./templates/auth/forms.scss": -/*!****************************************************************************************************************!*\ - !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./templates/auth/forms.scss ***! - \****************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("exports = module.exports = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.i, \"* {\\n padding: 0;\\n margin: 0; }\\n\\n.form__logo {\\n width: 110px;\\n padding-top: 50px;\\n display: block;\\n margin: auto;\\n position: relative;\\n top: 20%;\\n transform: translate(0%, -40.9%); }\\n\\n.form__brand {\\n padding: 10px 0;\\n text-align: center;\\n position: relative;\\n top: 20%;\\n transform: translate(0%, -90.9%); }\\n\\n.form-container {\\n max-width: 40%;\\n min-width: 20%;\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n transform: translate(-50%, -49.9%);\\n box-sizing: border-box;\\n margin: auto;\\n padding: 20px 0; }\\n\\n.form__box {\\n border: 1px solid #eaecef;\\n background-color: #f6f8fa;\\n border-radius: 5px;\\n padding: 20px 0; }\\n\\n.form__in-group {\\n display: block;\\n position: relative;\\n margin: auto;\\n max-width: 80%;\\n padding: 10px 0px;\\n box-sizing: content-box;\\n align-items: center;\\n align-content: center; }\\n\\n.form__in-field {\\n display: block;\\n box-sizing: border-box;\\n margin: 10px 0;\\n padding: 10px 0;\\n width: 100%; }\\n\\n.form__in-field--warn {\\n border: solid 1px red; }\\n\\n.form__in-field--success {\\n border: solid 1px #2ea44f; }\\n\\n.form__pw-recovery {\\n text-decoration: none;\\n color: #0366d6;\\n font-size: 0.8rem; }\\n\\n.form__submit-button {\\n display: block;\\n border: 1px solid skyblue;\\n background: #2ea44f;\\n color: white;\\n height: 40px;\\n border-radius: 5px;\\n width: 80%;\\n margin: auto; }\\n\\n.form__secondary-action {\\n display: block;\\n margin-top: 10px; }\\n\\n.form__secondary-action__banner {\\n display: block;\\n margin: auto;\\n max-width: 80%;\\n text-align: center; }\\n\\n.form__secondary-action__link {\\n text-decoration: none;\\n color: #0366d6; }\\n\", \"\"]);\n\n\n\n//# sourceURL=webpack:///./templates/auth/forms.scss?./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js"); - -/***/ }), - -/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./templates/panel/main.scss": -/*!****************************************************************************************************************!*\ - !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./templates/panel/main.scss ***! - \****************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("exports = module.exports = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.i, \"* {\\n margin: 0;\\n padding: 0; }\\n\\na {\\n text-decoration: none; }\\n\\nli {\\n list-style: none; }\\n\\n:root {\\n --green: #5cad66;\\n --violet: #800080;\\n --backdrop: #f0f0f0;\\n --light-text: rgba(255, 255, 255, 0.87);\\n --secondary-backdrop: #2b2c30;\\n --light-grey: rgba(0, 0, 0, 0.125); }\\n\\n.secondary-menu {\\n position: fixed;\\n width: 14%;\\n left: 0;\\n bottom: 0;\\n top: 0;\\n right: 0;\\n height: 100%;\\n overflow: auto;\\n background-color: var(--secondary-backdrop);\\n color: var(--light-text); }\\n\\n.secondary-menu__heading {\\n margin: auto;\\n padding: 20px 5px;\\n display: flex; }\\n\\n.secondary-menu__heading:hover {\\n color: var(--green);\\n cursor: grab; }\\n\\n.secondary-menu__logo {\\n width: 70px;\\n display: inline-block; }\\n\\n.secondary-menu__brand-name {\\n display: inline-block;\\n margin: auto;\\n font-size: 1.5rem; }\\n\\n.secondary-menu__item {\\n margin: auto;\\n padding: 20px 25px;\\n display: flex; }\\n\\n.secondary-menu__icon {\\n filter: invert(100%) sepia(0%) saturate(0%) hue-rotate(93deg) brightness(103%) contrast(103%);\\n opacity: 0.8;\\n width: 1rem;\\n margin: auto;\\n margin-right: 10px; }\\n\\n.secondary-menu__item-name {\\n display: inline-block;\\n margin: auto;\\n font-size: 1rem; }\\n\\n/*\\n .secondary-menu__section-partition {\\n border-bottom: 1px solid var(--light-text);\\n margin: auto;\\n max-width: 70%;\\n list-style: none;\\n margin: 20px;\\n }\\n */\\n.secondary-menu__item-link:hover {\\n color: var(--green);\\n cursor: grab;\\n filter: invert(58%) sepia(60%) saturate(331%) hue-rotate(76deg) brightness(91%) contrast(92%); }\\n\\n.secondary-menu__item-link {\\n color: inherit;\\n width: 100%;\\n height: 100%; }\\n\\nmain {\\n position: fixed;\\n top: 0;\\n right: 0;\\n left: 14%;\\n bottom: 0;\\n background-color: var(--backdrop); }\\n\\n.task-bar {\\n display: flex;\\n padding: 0px;\\n margin: 0px;\\n background-color: #fff; }\\n\\n.task-bar__action {\\n display: inline-block;\\n padding: 10px 0px;\\n margin: auto; }\\n\\n.task-bar__spacer {\\n min-width: 250px;\\n flex: 6; }\\n\\n.task-bar__icon {\\n opacity: 0.8;\\n width: 1.5rem;\\n margin: auto 20px; }\\n\\n.task-bar__icon:hover {\\n cursor: grab; }\\n\\n.main-menu {\\n display: flex;\\n flex-grow: 0;\\n padding-top: 20px;\\n padding-left: 10px; }\\n\\n.main-menu__item {\\n list-style: none;\\n background-color: #c3c3c3;\\n flex: 2;\\n text-align: center;\\n vertical-align: middle;\\n margin: auto 20px;\\n padding: 10px 0; }\\n\\n.main-menu__item--spacer {\\n list-style: none;\\n flex: 3;\\n text-align: center; }\\n\\n.main-menu__item:hover {\\n background-color: grey;\\n cursor: grab; }\\n\\n.main-menu__item:last-child {\\n padding: 0;\\n display: flex;\\n flex: 2;\\n border: none;\\n background-color: unset; }\\n\\n.main-menu__item:last-child:hover {\\n cursor: unset;\\n background-color: unset; }\\n\\n.main-menu__add-site {\\n display: inline-block;\\n background-color: var(--violet);\\n color: white;\\n font-weight: 500;\\n font-size: 16px;\\n padding: 10px 15px;\\n border-radius: 5px;\\n border: 1px grey solid;\\n min-height: 45px;\\n margin: auto; }\\n\\n.main-menu__add-site:hover {\\n background-color: var(--violet);\\n cursor: grab;\\n transform: translateY(-5px); }\\n\\n.help-text {\\n border-radius: 4px;\\n box-shadow: var(--secondary-backdrop) 0px 2px 6px 0px;\\n min-width: 70%;\\n max-width: 80%;\\n min-height: 70px;\\n display: flex;\\n margin-left: 15px;\\n margin-top: 40px; }\\n\\n.help-text__serial-num {\\n display: inline-flex;\\n background-color: var(--violet);\\n color: var(--light-text);\\n width: 30px;\\n height: 30px;\\n border-radius: 50%;\\n align-items: center;\\n justify-content: center; }\\n\\n.help-text__instructions {\\n display: inline-block;\\n list-style: none;\\n font-size: 19px;\\n font-weight: 500;\\n padding: 10px;\\n margin: auto; }\\n\\n.inner-container {\\n display: flex;\\n box-sizing: border-box;\\n max-width: 50%;\\n margin: 50px auto;\\n border-radius: 5px;\\n display: flex; }\\n\\n.sitekey-form {\\n display: flex;\\n flex-direction: column;\\n width: 90%;\\n justify-content: center;\\n align-items: center;\\n box-sizing: content-box;\\n background-color: #fff;\\n margin: auto;\\n padding-bottom: 30px; }\\n\\n.sitekey-form__title-flex-container {\\n display: flex;\\n width: 100%;\\n border-bottom: 0.1px solid var(--light-grey); }\\n\\n.sitekey-form__title {\\n padding-left: 10px;\\n font-size: 1rem;\\n padding: 0.75rem 1.25rem; }\\n\\n.sitekey-form__label {\\n display: block;\\n margin: 10px 0;\\n box-sizing: inherit;\\n justify-self: left; }\\n\\n.sitekey-form__input {\\n position: relative;\\n margin-top: 5px;\\n box-sizing: border-box;\\n height: 40px;\\n width: 90%; }\\n\\n.sitekey-form__input--add-level {\\n position: relative;\\n margin-top: 5px;\\n box-sizing: inherit;\\n flex: 3;\\n height: 40px;\\n margin-right: 20px; }\\n\\n.sitekey-form__add-level-flex-container {\\n display: flex;\\n box-sizing: border-box;\\n width: 90%;\\n margin-top: 10px; }\\n\\n.sitekey-form__add-level-spacer {\\n flex: 3; }\\n\\n.sitekey-form__add-level {\\n background-color: var(--violet);\\n color: white;\\n padding: 5px;\\n font-size: 16px;\\n border-radius: 5px;\\n border: 1px var(--light-grey) solid;\\n height: 40px;\\n min-width: 125px;\\n margin: auto; }\\n\\n.sitekey-form__submit {\\n margin-top: 50px;\\n display: block;\\n background-color: var(--violet);\\n color: white;\\n padding: 5px;\\n font-size: 20px;\\n border-radius: 5px;\\n border: 1px var(--light-grey) solid;\\n min-height: 45px;\\n width: 125px;\\n width: 90%; }\\n\", \"\"]);\n\n\n\n//# sourceURL=webpack:///./templates/panel/main.scss?./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js"); - -/***/ }), - -/***/ "./node_modules/css-loader/dist/runtime/api.js": -/*!*****************************************************!*\ - !*** ./node_modules/css-loader/dist/runtime/api.js ***! - \*****************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function (useSourceMap) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item, useSourceMap);\n\n if (item[2]) {\n return '@media ' + item[2] + '{' + content + '}';\n } else {\n return content;\n }\n }).join('');\n }; // import a list of modules into the list\n\n\n list.i = function (modules, mediaQuery) {\n if (typeof modules === 'string') {\n modules = [[null, modules, '']];\n }\n\n var alreadyImportedModules = {};\n\n for (var i = 0; i < this.length; i++) {\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n\n for (i = 0; i < modules.length; i++) {\n var item = modules[i]; // skip already imported module\n // this implementation is not 100% perfect for weird media query combinations\n // when a module is imported multiple times with different media queries.\n // I hope this will never occur (Hey this way we have smaller bundles)\n\n if (item[0] == null || !alreadyImportedModules[item[0]]) {\n if (mediaQuery && !item[2]) {\n item[2] = mediaQuery;\n } else if (mediaQuery) {\n item[2] = '(' + item[2] + ') and (' + mediaQuery + ')';\n }\n\n list.push(item);\n }\n }\n };\n\n return list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n var content = item[1] || '';\n var cssMapping = item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (useSourceMap && typeof btoa === 'function') {\n var sourceMapping = toComment(cssMapping);\n var sourceURLs = cssMapping.sources.map(function (source) {\n return '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */';\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n }\n\n return [content].join('\\n');\n} // Adapted from convert-source-map (MIT)\n\n\nfunction toComment(sourceMap) {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n var data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n return '/*# ' + data + ' */';\n}\n\n//# sourceURL=webpack:///./node_modules/css-loader/dist/runtime/api.js?"); - -/***/ }), - -/***/ "./node_modules/style-loader/lib/addStyles.js": -/*!****************************************************!*\ - !*** ./node_modules/style-loader/lib/addStyles.js ***! - \****************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\nvar stylesInDom = {};\n\nvar\tmemoize = function (fn) {\n\tvar memo;\n\n\treturn function () {\n\t\tif (typeof memo === \"undefined\") memo = fn.apply(this, arguments);\n\t\treturn memo;\n\t};\n};\n\nvar isOldIE = memoize(function () {\n\t// Test for IE <= 9 as proposed by Browserhacks\n\t// @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n\t// Tests for existence of standard globals is to allow style-loader\n\t// to operate correctly into non-standard environments\n\t// @see https://github.com/webpack-contrib/style-loader/issues/177\n\treturn window && document && document.all && !window.atob;\n});\n\nvar getTarget = function (target, parent) {\n if (parent){\n return parent.querySelector(target);\n }\n return document.querySelector(target);\n};\n\nvar getElement = (function (fn) {\n\tvar memo = {};\n\n\treturn function(target, parent) {\n // If passing function in options, then use it for resolve \"head\" element.\n // Useful for Shadow Root style i.e\n // {\n // insertInto: function () { return document.querySelector(\"#foo\").shadowRoot }\n // }\n if (typeof target === 'function') {\n return target();\n }\n if (typeof memo[target] === \"undefined\") {\n\t\t\tvar styleTarget = getTarget.call(this, target, parent);\n\t\t\t// Special case to return head of iframe instead of iframe itself\n\t\t\tif (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n\t\t\t\ttry {\n\t\t\t\t\t// This will throw an exception if access to iframe is blocked\n\t\t\t\t\t// due to cross-origin restrictions\n\t\t\t\t\tstyleTarget = styleTarget.contentDocument.head;\n\t\t\t\t} catch(e) {\n\t\t\t\t\tstyleTarget = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\tmemo[target] = styleTarget;\n\t\t}\n\t\treturn memo[target]\n\t};\n})();\n\nvar singleton = null;\nvar\tsingletonCounter = 0;\nvar\tstylesInsertedAtTop = [];\n\nvar\tfixUrls = __webpack_require__(/*! ./urls */ \"./node_modules/style-loader/lib/urls.js\");\n\nmodule.exports = function(list, options) {\n\tif (typeof DEBUG !== \"undefined\" && DEBUG) {\n\t\tif (typeof document !== \"object\") throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n\t}\n\n\toptions = options || {};\n\n\toptions.attrs = typeof options.attrs === \"object\" ? options.attrs : {};\n\n\t// Force single-tag solution on IE6-9, which has a hard limit on the # of