diff --git a/.eslintrc.json b/.eslintrc.json
index 19dd068..8024652 100644
--- a/.eslintrc.json
+++ b/.eslintrc.json
@@ -6,33 +6,21 @@
},
"parser": "@typescript-eslint/parser",
"plugins": [
+ "header",
"@typescript-eslint"
],
"env": {
"browser": true
},
"extends": [
- "plugin:@typescript-eslint/recommended",
- "eslint:recommended"
+ "eslint:recommended",
+ "plugin:@typescript-eslint/recommended"
],
"rules": {
"curly": "error",
- "deprecation": true,
- "eofline": true,
- "file-header": [
- true,
- {
- "match": " This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n",
- "enforce-trailing-newline": true
- }
- ],
- "sort-imports": "warn",
- "member-ordering": [
- true,
- {
- "order": "fields-first",
- "alphabetize": true
- }
+ "eol-last": [
+ "error",
+ "always"
],
"no-console": [
"error",
@@ -44,13 +32,21 @@
}
],
"no-unused-vars": "off",
- "@typescript-eslint/no-unused-vars": [
+ "quotes": [
"error",
- {
- "vars": "all",
- "args": "after-used",
- "ignoreRestSiblings": false
- }
+ "single"
+ ],
+ "semi": [
+ "error",
+ "always"
+ ],
+ "sort-imports": "error",
+ "header/header": [
+ "error",
+ "header.ts"
+ ],
+ "@typescript-eslint/member-ordering": [
+ "error"
],
"@typescript-eslint/no-namespace": [
"error",
@@ -66,30 +62,13 @@
]
}
],
- "prefer-for-of": true,
- "semi": [
+ "@typescript-eslint/no-unused-vars": [
"error",
- "always",
{
- "omitLastInOneLineBlock": false
+ "vars": "all",
+ "args": "after-used",
+ "ignoreRestSiblings": false
}
- ],
- "static-this": true,
- "triple-equals": true,
- "typeof-compare": true,
- "prefer-const": "warn",
- "prefer-readonly": true,
- "array-type": [
- true,
- "array"
- ],
- "arrow-return-shorthand": [
- true,
- "multiline"
- ],
- "quotes": [
- "warn",
- "single"
]
}
}
diff --git a/dist/assets/uhr.css b/dist/assets/uhr.css
index 5e4b4c5..2a02ca8 100644
--- a/dist/assets/uhr.css
+++ b/dist/assets/uhr.css
@@ -1,3 +1 @@
-/*!
- * Copyright (C) Schweizerische Bundesbahnen SBB, 2019.
- */@font-face{font-family:'Uhrenfont';src:url(../assets/uhr.woff) format("woff")}body{font-family:'Uhrenfont', sans-serif}.uhr{position:relative;margin:0;transition:background-color 0.5s}.uhr .reflection{position:absolute;top:0;bottom:0;left:0;right:0;background:radial-gradient(225em 45em at 160% 0, rgba(255,255,255,0.4) 0, rgba(255,255,255,0.05) 40%, rgba(255,255,255,0) 40%) no-repeat scroll;display:block;margin:0.15em}.uhr .letterarea{display:block;position:absolute;top:12%;bottom:12%;left:12%;right:12%;overflow:hidden;font-size:200%}.item{transition:box-shadow 0.5s, text-shadow 0.5s, border-color 0.5s, color 0.5s}.dot{position:absolute;display:block;height:0;width:0;border:0.2em solid;border-radius:1em}.dot.active{border-color:#eee;box-shadow:0 0 0.2em #eee}.dot1{top:3.75%;left:3.75%}.dot2{top:3.75%;right:3.75%}.dot3{bottom:3.75%;right:3.75%}.dot4{bottom:3.75%;left:3.75%}.letter{height:10%;width:9.0909%;padding:0;margin:0;display:inline-block;text-align:center;line-height:160%}.letter.active{color:#eee;text-shadow:0 0 0.2em #eee}.onoffswitch{position:relative;width:86px;margin:1em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.onoffswitch-checkbox{display:none}.onoffswitch-label{display:block;overflow:hidden;cursor:pointer;border:2px solid #999;border-radius:50px}.onoffswitch-inner,.modeswitch-inner{width:200%;margin-left:-100%;-moz-transition:margin 0.3s ease-in 0s;-webkit-transition:margin 0.3s ease-in 0s;-o-transition:margin 0.3s ease-in 0s;transition:margin 0.3s ease-in 0s}.onoffswitch-inner:before,.onoffswitch-inner:after,.modeswitch-inner:before,.modeswitch-inner:after{float:left;width:50%;height:24px;padding:0;line-height:24px;font-size:18px;color:white;font-weight:bold;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.onoffswitch-inner:before{content:"EIN";padding-left:12px;color:#eee;transition:background-color 0.5s}.onoffswitch-inner:after{content:"AUS";padding-right:12px;background-color:#eee;color:#999;text-align:right}.onoffswitch-switch{width:30px;margin:-3px;background:#fff;border:2px solid #999;border-radius:50px;position:absolute;top:0;bottom:0;right:58px;-moz-transition:all 0.3s ease-in 0s;-webkit-transition:all 0.3s ease-in 0s;-o-transition:all 0.3s ease-in 0s;transition:all 0.3s ease-in 0s}.onoffswitch-checkbox:checked+.onoffswitch-label .onoffswitch-inner,.onoffswitch-checkbox:checked+.onoffswitch-label .modeswitch-inner{margin-left:0}.onoffswitch-checkbox:checked+.onoffswitch-label .onoffswitch-switch{right:0}.modeswitch-inner:before{content:"MIN";padding-left:12px;background-color:#fff;color:#000}.modeswitch-inner:after{content:"SEC";padding-right:12px;background-color:#fff;color:#000;text-align:right}a.uhr-configlink{cursor:pointer;background:url(../assets/settings.png) no-repeat;width:24px;height:24px;display:inline-block;margin:2px;vertical-align:top}.uhr-controlpanel{border-radius:0.5em;box-shadow:0 0 1em black;background-color:#fff;display:inline-block;padding:0.5em;position:sticky;bottom:0;margin-left:1em}.uhr-controlpanel .content{position:relative}a.uhr-closecontrolpanel{cursor:pointer;display:inline-block;position:absolute;right:0;top:-1em;width:24px;height:24px;background:url(../assets/close.png) no-repeat}#disclaimer{font-size:0.5em}#disclaimer a{color:#444;text-decoration:underline}
+@font-face{font-family:'Uhrenfont';src:url(../assets/uhr.woff) format("woff")}body{font-family:'Uhrenfont', sans-serif}.uhr{position:relative;margin:0;transition:background-color 0.5s}.uhr .reflection{position:absolute;top:0;bottom:0;left:0;right:0;background:radial-gradient(225em 45em at 160% 0, rgba(255,255,255,0.4) 0, rgba(255,255,255,0.05) 40%, rgba(255,255,255,0) 40%) no-repeat scroll;display:block;margin:0.15em}.uhr .letterarea{display:block;position:absolute;top:12%;bottom:12%;left:12%;right:12%;overflow:hidden;font-size:200%}.item{transition:box-shadow 0.5s, text-shadow 0.5s, border-color 0.5s, color 0.5s}.dot{position:absolute;display:block;height:0;width:0;border:0.2em solid;border-radius:1em}.dot.active{border-color:#eee;box-shadow:0 0 0.2em #eee}.dot1{top:3.75%;left:3.75%}.dot2{top:3.75%;right:3.75%}.dot3{bottom:3.75%;right:3.75%}.dot4{bottom:3.75%;left:3.75%}.letter{height:10%;width:9.0909%;padding:0;margin:0;display:inline-block;text-align:center;line-height:160%}.letter.active{color:#eee;text-shadow:0 0 0.2em #eee}.onoffswitch{position:relative;width:86px;margin:1em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.onoffswitch-checkbox{display:none}.onoffswitch-label{display:block;overflow:hidden;cursor:pointer;border:2px solid #999;border-radius:50px}.onoffswitch-inner,.modeswitch-inner{width:200%;margin-left:-100%;-moz-transition:margin 0.3s ease-in 0s;-webkit-transition:margin 0.3s ease-in 0s;-o-transition:margin 0.3s ease-in 0s;transition:margin 0.3s ease-in 0s}.onoffswitch-inner:before,.onoffswitch-inner:after,.modeswitch-inner:before,.modeswitch-inner:after{float:left;width:50%;height:24px;padding:0;line-height:24px;font-size:18px;color:white;font-weight:bold;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.onoffswitch-inner:before{content:"EIN";padding-left:12px;color:#eee;transition:background-color 0.5s}.onoffswitch-inner:after{content:"AUS";padding-right:12px;background-color:#eee;color:#999;text-align:right}.onoffswitch-switch{width:30px;margin:-3px;background:#fff;border:2px solid #999;border-radius:50px;position:absolute;top:0;bottom:0;right:58px;-moz-transition:all 0.3s ease-in 0s;-webkit-transition:all 0.3s ease-in 0s;-o-transition:all 0.3s ease-in 0s;transition:all 0.3s ease-in 0s}.onoffswitch-checkbox:checked+.onoffswitch-label .onoffswitch-inner,.onoffswitch-checkbox:checked+.onoffswitch-label .modeswitch-inner{margin-left:0}.onoffswitch-checkbox:checked+.onoffswitch-label .onoffswitch-switch{right:0}.modeswitch-inner:before{content:"MIN";padding-left:12px;background-color:#fff;color:#000}.modeswitch-inner:after{content:"SEC";padding-right:12px;background-color:#fff;color:#000;text-align:right}a.uhr-configlink{cursor:pointer;background:url(../assets/settings.png) no-repeat;width:24px;height:24px;display:inline-block;margin:2px;vertical-align:top}.uhr-controlpanel{border-radius:0.5em;box-shadow:0 0 1em black;background-color:#fff;display:inline-block;padding:0.5em;position:sticky;bottom:0;margin-left:1em}.uhr-controlpanel .content{position:relative}a.uhr-closecontrolpanel{cursor:pointer;display:inline-block;position:absolute;right:0;top:-1em;width:24px;height:24px;background:url(../assets/close.png) no-repeat}#disclaimer{font-size:0.5em}#disclaimer a{color:#444;text-decoration:underline}
diff --git a/dist/lib/layout_de.js b/dist/lib/layout_de.js
index 1d21d94..b2dc555 100644
--- a/dist/lib/layout_de.js
+++ b/dist/lib/layout_de.js
@@ -1,2 +1,2 @@
-!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=2)}({2:function(e,t,r){"use strict";r.r(t),r.d(t,"Layout_de",function(){return l});var n={4:[8,9,10,11]},o={4:[1,2,3]},u={5:[1,2,3,4]},i={1:[8,9,10,11]},f={2:[1,2,3,4]},c={2:[5,6,7,8,9,10,11]},l={code:"de",hours:{"0,12":{9:[7,8,9,10,11]},"1,13":{6:[1,2,3,4]},"2,14":{6:[8,9,10,11]},"3,15":{7:[1,2,3,4]},"4,16":{7:[8,9,10,11]},"5,17":{5:[8,9,10,11]},"6,18":{8:[1,2,3,4,5]},"7,19":{9:[1,2,3,4,5,6]},"8,20":{8:[8,9,10,11]},"9,21":{10:[4,5,6,7]},"10,22":{10:[1,2,3,4]},"11,23":{5:[6,7,8]}},letters:["ESKISTAFÜNF","ZEHNZWANZIG","DREIVIERTEL","VORFUNKNACH","HALBAELFÜNF","EINSXAMZWEI","DREIPMJVIER","SECHSNLACHT","SIEBENZWÖLF","ZEHNEUNKUHR"],minutes:{"0,1,2,3,4":{10:[9,10,11]},"5,6,7,8,9":[i,n],"10,11,12,13,14":[f,n],"15,16,17,18,19":[{3:[5,6,7,8,9,10,11]},n],"20,21,22,23,24":[c,n],"25,26,27,28,29":[i,o,u],"30,31,32,33,34":u,"35,36,37,38,39":[i,n,u],"40,41,42,43,44":[c,o],"45,46,47,48,49":{3:[1,2,3,4,5,6,7,8,9,10,11]},"50,51,52,53,54":[f,o],"55,56,57,58,59":[i,o]},permanent:{1:[1,2,4,5,6]},prettyName:"Deutsch",version:2};$.fritteli.uhr.register(l)}});
+!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=2)}({2:function(e,t,r){"use strict";r.r(t),r.d(t,"LayoutDe",function(){return l});var n={4:[8,9,10,11]},o={4:[1,2,3]},u={5:[1,2,3,4]},i={1:[8,9,10,11]},f={2:[1,2,3,4]},c={2:[5,6,7,8,9,10,11]},l={code:"de",hours:{"0,12":{9:[7,8,9,10,11]},"1,13":{6:[1,2,3,4]},"2,14":{6:[8,9,10,11]},"3,15":{7:[1,2,3,4]},"4,16":{7:[8,9,10,11]},"5,17":{5:[8,9,10,11]},"6,18":{8:[1,2,3,4,5]},"7,19":{9:[1,2,3,4,5,6]},"8,20":{8:[8,9,10,11]},"9,21":{10:[4,5,6,7]},"10,22":{10:[1,2,3,4]},"11,23":{5:[6,7,8]}},letters:["ESKISTAFÜNF","ZEHNZWANZIG","DREIVIERTEL","VORFUNKNACH","HALBAELFÜNF","EINSXAMZWEI","DREIPMJVIER","SECHSNLACHT","SIEBENZWÖLF","ZEHNEUNKUHR"],minutes:{"0,1,2,3,4":{10:[9,10,11]},"5,6,7,8,9":[i,n],"10,11,12,13,14":[f,n],"15,16,17,18,19":[{3:[5,6,7,8,9,10,11]},n],"20,21,22,23,24":[c,n],"25,26,27,28,29":[i,o,u],"30,31,32,33,34":u,"35,36,37,38,39":[i,n,u],"40,41,42,43,44":[c,o],"45,46,47,48,49":{3:[1,2,3,4,5,6,7,8,9,10,11]},"50,51,52,53,54":[f,o],"55,56,57,58,59":[i,o]},permanent:{1:[1,2,4,5,6]},prettyName:"Deutsch",version:2};$.fritteli.uhr.register(l)}});
//# sourceMappingURL=layout_de.js.map
\ No newline at end of file
diff --git a/dist/lib/layout_de.js.map b/dist/lib/layout_de.js.map
index 81d365a..8c04dd6 100644
--- a/dist/lib/layout_de.js.map
+++ b/dist/lib/layout_de.js.map
@@ -1 +1 @@
-{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/layout/layout-de.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","Layout_de","nach","4","vor","halb","5","fuenf","1","zehn","2","zwanzig","code","hours","0,12","9","1,13","6","2,14","3,15","7","4,16","5,17","6,18","8","7,19","8,20","9,21","10","10,22","11,23","letters","minutes","0,1,2,3,4","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","3","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","prettyName","version","$","fritteli","uhr","register"],"mappings":"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","file":"lib/layout_de.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 2);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst es_ist: WordDefinition = {1: [1, 2, 4, 5, 6]};\nconst uhr: WordDefinition = {10: [9, 10, 11]};\nconst nach: WordDefinition = {4: [8, 9, 10, 11]};\nconst vor: WordDefinition = {4: [1, 2, 3]};\nconst halb: WordDefinition = {5: [1, 2, 3, 4]};\nconst fuenf: WordDefinition = {1: [8, 9, 10, 11]};\nconst zehn: WordDefinition = {2: [1, 2, 3, 4]};\nconst viertel: WordDefinition = {3: [5, 6, 7, 8, 9, 10, 11]};\nconst zwanzig: WordDefinition = {2: [5, 6, 7, 8, 9, 10, 11]};\nconst dreiviertel: WordDefinition = {3: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]};\n\nexport const Layout_de: Layout = {\n code: 'de',\n hours: {\n '0,12': {9: [7, 8, 9, 10, 11]},\n '1,13': {6: [1, 2, 3, 4]},\n '2,14': {6: [8, 9, 10, 11]},\n '3,15': {7: [1, 2, 3, 4]},\n '4,16': {7: [8, 9, 10, 11]},\n '5,17': {5: [8, 9, 10, 11]},\n '6,18': {8: [1, 2, 3, 4, 5]},\n '7,19': {9: [1, 2, 3, 4, 5, 6]},\n '8,20': {8: [8, 9, 10, 11]},\n '9,21': {10: [4, 5, 6, 7]},\n '10,22': {10: [1, 2, 3, 4]},\n '11,23': {5: [6, 7, 8]}\n },\n letters: [\n 'ESKISTAFÜNF',\n 'ZEHNZWANZIG',\n 'DREIVIERTEL',\n 'VORFUNKNACH',\n 'HALBAELFÜNF',\n 'EINSXAMZWEI',\n 'DREIPMJVIER',\n 'SECHSNLACHT',\n 'SIEBENZWÖLF',\n 'ZEHNEUNKUHR'\n ],\n minutes: {\n '0,1,2,3,4': uhr,\n '5,6,7,8,9': [fuenf, nach],\n '10,11,12,13,14': [zehn, nach],\n '15,16,17,18,19': [viertel, nach],\n '20,21,22,23,24': [zwanzig, nach],\n '25,26,27,28,29': [fuenf, vor, halb],\n '30,31,32,33,34': halb,\n '35,36,37,38,39': [fuenf, nach, halb],\n '40,41,42,43,44': [zwanzig, vor],\n '45,46,47,48,49': dreiviertel,\n '50,51,52,53,54': [zehn, vor],\n '55,56,57,58,59': [fuenf, vor]\n },\n permanent: es_ist,\n prettyName: 'Deutsch',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_de);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/layout/layout-de.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","LayoutDe","nach","4","vor","halb","5","fuenf","1","zehn","2","zwanzig","code","hours","0,12","9","1,13","6","2,14","3,15","7","4,16","5,17","6,18","8","7,19","8,20","9,21","10","10,22","11,23","letters","minutes","0,1,2,3,4","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","3","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","prettyName","version","$","fritteli","uhr","register"],"mappings":"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","file":"lib/layout_de.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 2);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst esIst: WordDefinition = {1: [1, 2, 4, 5, 6]};\nconst uhr: WordDefinition = {10: [9, 10, 11]};\nconst nach: WordDefinition = {4: [8, 9, 10, 11]};\nconst vor: WordDefinition = {4: [1, 2, 3]};\nconst halb: WordDefinition = {5: [1, 2, 3, 4]};\nconst fuenf: WordDefinition = {1: [8, 9, 10, 11]};\nconst zehn: WordDefinition = {2: [1, 2, 3, 4]};\nconst viertel: WordDefinition = {3: [5, 6, 7, 8, 9, 10, 11]};\nconst zwanzig: WordDefinition = {2: [5, 6, 7, 8, 9, 10, 11]};\nconst dreiviertel: WordDefinition = {3: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]};\n\nexport const LayoutDe: Layout = {\n code: 'de',\n hours: {\n '0,12': {9: [7, 8, 9, 10, 11]},\n '1,13': {6: [1, 2, 3, 4]},\n '2,14': {6: [8, 9, 10, 11]},\n '3,15': {7: [1, 2, 3, 4]},\n '4,16': {7: [8, 9, 10, 11]},\n '5,17': {5: [8, 9, 10, 11]},\n '6,18': {8: [1, 2, 3, 4, 5]},\n '7,19': {9: [1, 2, 3, 4, 5, 6]},\n '8,20': {8: [8, 9, 10, 11]},\n '9,21': {10: [4, 5, 6, 7]},\n '10,22': {10: [1, 2, 3, 4]},\n '11,23': {5: [6, 7, 8]}\n },\n letters: [\n 'ESKISTAFÜNF',\n 'ZEHNZWANZIG',\n 'DREIVIERTEL',\n 'VORFUNKNACH',\n 'HALBAELFÜNF',\n 'EINSXAMZWEI',\n 'DREIPMJVIER',\n 'SECHSNLACHT',\n 'SIEBENZWÖLF',\n 'ZEHNEUNKUHR'\n ],\n minutes: {\n '0,1,2,3,4': uhr,\n '5,6,7,8,9': [fuenf, nach],\n '10,11,12,13,14': [zehn, nach],\n '15,16,17,18,19': [viertel, nach],\n '20,21,22,23,24': [zwanzig, nach],\n '25,26,27,28,29': [fuenf, vor, halb],\n '30,31,32,33,34': halb,\n '35,36,37,38,39': [fuenf, nach, halb],\n '40,41,42,43,44': [zwanzig, vor],\n '45,46,47,48,49': dreiviertel,\n '50,51,52,53,54': [zehn, vor],\n '55,56,57,58,59': [fuenf, vor]\n },\n permanent: esIst,\n prettyName: 'Deutsch',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutDe);\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/dist/lib/layout_de_ch.js b/dist/lib/layout_de_ch.js
index 138500c..cdfd9c5 100644
--- a/dist/lib/layout_de_ch.js
+++ b/dist/lib/layout_de_ch.js
@@ -1,2 +1,2 @@
-!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=3)}({3:function(e,t,r){"use strict";r.r(t),r.d(t,"Layout_de_CH",function(){return a});var n={4:[1,2]},o={3:[9,10,11]},u={4:[4,5,6,7,8]},i={1:[9,10,11]},f={2:[9,10,11]},c={2:[1,2,3,4,5,6]},l={3:[1,2,3,4,5,6]},a={code:"de_CH",hours:{"0,12":{10:[1,2,3,4,5,6]},"1,13":{5:[1,2,3]},"2,14":{5:[4,5,6,7]},"3,15":{5:[9,10,11]},"4,16":{6:[1,2,3,4,5]},"5,17":{6:[6,7,8,9]},"6,18":{7:[1,2,3,4,5,6]},"7,19":{7:[7,8,9,10,11]},"8,20":{8:[1,2,3,4,5]},"9,21":{8:[6,7,8,9]},"10,22":{9:[1,2,3,4]},"11,23":{9:[8,9,10,11]}},letters:["ESKISCHAFÜF","VIERTUBFZÄÄ","ZWÄNZGSIVOR","ABOHAUBIEGE","EISZWÖISDRÜ","VIERIFÜFIQT","SÄCHSISIBNI","ACHTINÜNIEL","ZÄNIERBEUFI","ZWÖUFINAUHR"],minutes:{"5,6,7,8,9":[i,n],"10,11,12,13,14":[f,n],"15,16,17,18,19":[c,n],"20,21,22,23,24":[l,n],"25,26,27,28,29":[i,o,u],"30,31,32,33,34":u,"35,36,37,38,39":[i,n,u],"40,41,42,43,44":[l,o],"45,46,47,48,49":[c,o],"50,51,52,53,54":[f,o],"55,56,57,58,59":[i,o]},permanent:{1:[1,2,4,5,6,7]},prettyName:"Bärndütsch",version:2};$.fritteli.uhr.register(a)}});
+!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=3)}({3:function(e,t,r){"use strict";r.r(t),r.d(t,"LayoutDeCh",function(){return a});var n={4:[1,2]},o={3:[9,10,11]},u={4:[4,5,6,7,8]},i={1:[9,10,11]},f={2:[9,10,11]},c={2:[1,2,3,4,5,6]},l={3:[1,2,3,4,5,6]},a={code:"de_CH",hours:{"0,12":{10:[1,2,3,4,5,6]},"1,13":{5:[1,2,3]},"2,14":{5:[4,5,6,7]},"3,15":{5:[9,10,11]},"4,16":{6:[1,2,3,4,5]},"5,17":{6:[6,7,8,9]},"6,18":{7:[1,2,3,4,5,6]},"7,19":{7:[7,8,9,10,11]},"8,20":{8:[1,2,3,4,5]},"9,21":{8:[6,7,8,9]},"10,22":{9:[1,2,3,4]},"11,23":{9:[8,9,10,11]}},letters:["ESKISCHAFÜF","VIERTUBFZÄÄ","ZWÄNZGSIVOR","ABOHAUBIEGE","EISZWÖISDRÜ","VIERIFÜFIQT","SÄCHSISIBNI","ACHTINÜNIEL","ZÄNIERBEUFI","ZWÖUFINAUHR"],minutes:{"5,6,7,8,9":[i,n],"10,11,12,13,14":[f,n],"15,16,17,18,19":[c,n],"20,21,22,23,24":[l,n],"25,26,27,28,29":[i,o,u],"30,31,32,33,34":u,"35,36,37,38,39":[i,n,u],"40,41,42,43,44":[l,o],"45,46,47,48,49":[c,o],"50,51,52,53,54":[f,o],"55,56,57,58,59":[i,o]},permanent:{1:[1,2,4,5,6,7]},prettyName:"Bärndütsch",version:2};$.fritteli.uhr.register(a)}});
//# sourceMappingURL=layout_de_ch.js.map
\ No newline at end of file
diff --git a/dist/lib/layout_de_ch.js.map b/dist/lib/layout_de_ch.js.map
index 1a0393d..777080d 100644
--- a/dist/lib/layout_de_ch.js.map
+++ b/dist/lib/layout_de_ch.js.map
@@ -1 +1 @@
-{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/layout/layout-de_ch.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","Layout_de_CH","ab","4","vor","3","haubi","fuef","1","zae","2","viertu","zwaenzg","code","hours","0,12","10","1,13","5","2,14","3,15","4,16","6","5,17","6,18","7","7,19","8,20","8","9,21","10,22","9","11,23","letters","minutes","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","prettyName","version","$","fritteli","uhr","register"],"mappings":"aACA,IAAAA,EAAA,GAGA,SAAAC,EAAAC,GAGA,GAAAF,EAAAE,GACA,OAAAF,EAAAE,GAAAC,QAGA,IAAAC,EAAAJ,EAAAE,GAAA,CACAG,EAAAH,EACAI,GAAA,EACAH,QAAA,IAUA,OANAI,EAAAL,GAAAM,KAAAJ,EAAAD,QAAAC,IAAAD,QAAAF,GAGAG,EAAAE,GAAA,EAGAF,EAAAD,QAKAF,EAAAQ,EAAAF,EAGAN,EAAAS,EAAAV,EAGAC,EAAAU,EAAA,SAAAR,EAAAS,EAAAC,GACAZ,EAAAa,EAAAX,EAAAS,IACAG,OAAAC,eAAAb,EAAAS,EAAA,CAA0CK,YAAA,EAAAC,IAAAL,KAK1CZ,EAAAkB,EAAA,SAAAhB,GACA,oBAAAiB,eAAAC,aACAN,OAAAC,eAAAb,EAAAiB,OAAAC,YAAA,CAAwDC,MAAA,WAExDP,OAAAC,eAAAb,EAAA,cAAiDmB,OAAA,KAQjDrB,EAAAsB,EAAA,SAAAD,EAAAE,GAEA,GADA,EAAAA,IAAAF,EAAArB,EAAAqB,IACA,EAAAE,EAAA,OAAAF,EACA,KAAAE,GAAA,iBAAAF,QAAAG,WAAA,OAAAH,EACA,IAAAI,EAAAX,OAAAY,OAAA,MAGA,GAFA1B,EAAAkB,EAAAO,GACAX,OAAAC,eAAAU,EAAA,WAAyCT,YAAA,EAAAK,UACzC,EAAAE,GAAA,iBAAAF,EAAA,QAAAM,KAAAN,EAAArB,EAAAU,EAAAe,EAAAE,EAAA,SAAAA,GAAgH,OAAAN,EAAAM,IAAqBC,KAAA,KAAAD,IACrI,OAAAF,GAIAzB,EAAA6B,EAAA,SAAA1B,GACA,IAAAS,EAAAT,KAAAqB,WACA,WAA2B,OAAArB,EAAA,SAC3B,WAAiC,OAAAA,GAEjC,OADAH,EAAAU,EAAAE,EAAA,IAAAA,GACAA,GAIAZ,EAAAa,EAAA,SAAAiB,EAAAC,GAAsD,OAAAjB,OAAAkB,UAAAC,eAAA1B,KAAAuB,EAAAC,IAGtD/B,EAAAkC,EAAA,GAIAlC,IAAAmC,EAAA,oCClFAnC,EAAAkB,EAAAkB,GAAApC,EAAAU,EAAA0B,EAAA,iCAAAC,IAiBA,IACMC,EAAqB,CAACC,EAAG,CAAC,EAAG,IAC7BC,EAAsB,CAACC,EAAG,CAAC,EAAG,GAAI,KAClCC,EAAwB,CAACH,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,IACzCI,EAAuB,CAACC,EAAG,CAAC,EAAG,GAAI,KACnCC,EAAsB,CAACC,EAAG,CAAC,EAAG,GAAI,KAClCC,EAAyB,CAACD,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAC7CE,EAA0B,CAACP,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAEvCJ,EAAuB,CAChCY,KAAM,QACNC,MAAO,CACHC,OAAQ,CAACC,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAC7BC,OAAQ,CAACC,EAAG,CAAC,EAAG,EAAG,IACnBC,OAAQ,CAACD,EAAG,CAAC,EAAG,EAAG,EAAG,IACtBE,OAAQ,CAACF,EAAG,CAAC,EAAG,GAAI,KACpBG,OAAQ,CAACC,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,IACzBC,OAAQ,CAACD,EAAG,CAAC,EAAG,EAAG,EAAG,IACtBE,OAAQ,CAACC,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAC5BC,OAAQ,CAACD,EAAG,CAAC,EAAG,EAAG,EAAG,GAAI,KAC1BE,OAAQ,CAACC,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,IACzBC,OAAQ,CAACD,EAAG,CAAC,EAAG,EAAG,EAAG,IACtBE,QAAS,CAACC,EAAG,CAAC,EAAG,EAAG,EAAG,IACvBC,QAAS,CAACD,EAAG,CAAC,EAAG,EAAG,GAAI,MAE5BE,QAAS,CACL,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,eAEJC,QAAS,CACLC,YAAa,CAAC5B,EAAML,GACpBkC,iBAAkB,CAAC3B,EAAKP,GACxBmC,iBAAkB,CAAC1B,EAAQT,GAC3BoC,iBAAkB,CAAC1B,EAASV,GAC5BqC,iBAAkB,CAAChC,EAAMH,EAAKE,GAC9BkC,iBAAkBlC,EAClBmC,iBAAkB,CAAClC,EAAML,EAAII,GAC7BoC,iBAAkB,CAAC9B,EAASR,GAC5BuC,iBAAkB,CAAChC,EAAQP,GAC3BwC,iBAAkB,CAACnC,EAAKL,GACxByC,iBAAkB,CAACtC,EAAMH,IAE7B0C,UAlD4B,CAACtC,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAmDhDuC,WAAY,aACZC,QAAS,GAGbC,EAAEC,SAASC,IAAIC,SAASnD","file":"lib/layout_de_ch.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 3);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst es_isch: WordDefinition = {1: [1, 2, 4, 5, 6, 7]};\nconst ab: WordDefinition = {4: [1, 2]};\nconst vor: WordDefinition = {3: [9, 10, 11]};\nconst haubi: WordDefinition = {4: [4, 5, 6, 7, 8]};\nconst fuef: WordDefinition = {1: [9, 10, 11]};\nconst zae: WordDefinition = {2: [9, 10, 11]};\nconst viertu: WordDefinition = {2: [1, 2, 3, 4, 5, 6]};\nconst zwaenzg: WordDefinition = {3: [1, 2, 3, 4, 5, 6]};\n\nexport const Layout_de_CH: Layout = {\n code: 'de_CH',\n hours: {\n '0,12': {10: [1, 2, 3, 4, 5, 6]},\n '1,13': {5: [1, 2, 3]},\n '2,14': {5: [4, 5, 6, 7]},\n '3,15': {5: [9, 10, 11]},\n '4,16': {6: [1, 2, 3, 4, 5]},\n '5,17': {6: [6, 7, 8, 9]},\n '6,18': {7: [1, 2, 3, 4, 5, 6]},\n '7,19': {7: [7, 8, 9, 10, 11]},\n '8,20': {8: [1, 2, 3, 4, 5]},\n '9,21': {8: [6, 7, 8, 9]},\n '10,22': {9: [1, 2, 3, 4]},\n '11,23': {9: [8, 9, 10, 11]}\n },\n letters: [\n 'ESKISCHAFÜF',\n 'VIERTUBFZÄÄ',\n 'ZWÄNZGSIVOR',\n 'ABOHAUBIEGE',\n 'EISZWÖISDRÜ',\n 'VIERIFÜFIQT',\n 'SÄCHSISIBNI',\n 'ACHTINÜNIEL',\n 'ZÄNIERBEUFI',\n 'ZWÖUFINAUHR'\n ],\n minutes: {\n '5,6,7,8,9': [fuef, ab],\n '10,11,12,13,14': [zae, ab],\n '15,16,17,18,19': [viertu, ab],\n '20,21,22,23,24': [zwaenzg, ab],\n '25,26,27,28,29': [fuef, vor, haubi],\n '30,31,32,33,34': haubi,\n '35,36,37,38,39': [fuef, ab, haubi],\n '40,41,42,43,44': [zwaenzg, vor],\n '45,46,47,48,49': [viertu, vor],\n '50,51,52,53,54': [zae, vor],\n '55,56,57,58,59': [fuef, vor]\n },\n permanent: es_isch,\n prettyName: 'Bärndütsch',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_de_CH);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/layout/layout-de_ch.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","LayoutDeCh","ab","4","vor","3","haubi","fuef","1","zae","2","viertu","zwaenzg","code","hours","0,12","10","1,13","5","2,14","3,15","4,16","6","5,17","6,18","7","7,19","8,20","8","9,21","10,22","9","11,23","letters","minutes","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","prettyName","version","$","fritteli","uhr","register"],"mappings":"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","file":"lib/layout_de_ch.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 3);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst esIsch: WordDefinition = {1: [1, 2, 4, 5, 6, 7]};\nconst ab: WordDefinition = {4: [1, 2]};\nconst vor: WordDefinition = {3: [9, 10, 11]};\nconst haubi: WordDefinition = {4: [4, 5, 6, 7, 8]};\nconst fuef: WordDefinition = {1: [9, 10, 11]};\nconst zae: WordDefinition = {2: [9, 10, 11]};\nconst viertu: WordDefinition = {2: [1, 2, 3, 4, 5, 6]};\nconst zwaenzg: WordDefinition = {3: [1, 2, 3, 4, 5, 6]};\n\nexport const LayoutDeCh: Layout = {\n code: 'de_CH',\n hours: {\n '0,12': {10: [1, 2, 3, 4, 5, 6]},\n '1,13': {5: [1, 2, 3]},\n '2,14': {5: [4, 5, 6, 7]},\n '3,15': {5: [9, 10, 11]},\n '4,16': {6: [1, 2, 3, 4, 5]},\n '5,17': {6: [6, 7, 8, 9]},\n '6,18': {7: [1, 2, 3, 4, 5, 6]},\n '7,19': {7: [7, 8, 9, 10, 11]},\n '8,20': {8: [1, 2, 3, 4, 5]},\n '9,21': {8: [6, 7, 8, 9]},\n '10,22': {9: [1, 2, 3, 4]},\n '11,23': {9: [8, 9, 10, 11]}\n },\n letters: [\n 'ESKISCHAFÜF',\n 'VIERTUBFZÄÄ',\n 'ZWÄNZGSIVOR',\n 'ABOHAUBIEGE',\n 'EISZWÖISDRÜ',\n 'VIERIFÜFIQT',\n 'SÄCHSISIBNI',\n 'ACHTINÜNIEL',\n 'ZÄNIERBEUFI',\n 'ZWÖUFINAUHR'\n ],\n minutes: {\n '5,6,7,8,9': [fuef, ab],\n '10,11,12,13,14': [zae, ab],\n '15,16,17,18,19': [viertu, ab],\n '20,21,22,23,24': [zwaenzg, ab],\n '25,26,27,28,29': [fuef, vor, haubi],\n '30,31,32,33,34': haubi,\n '35,36,37,38,39': [fuef, ab, haubi],\n '40,41,42,43,44': [zwaenzg, vor],\n '45,46,47,48,49': [viertu, vor],\n '50,51,52,53,54': [zae, vor],\n '55,56,57,58,59': [fuef, vor]\n },\n permanent: esIsch,\n prettyName: 'Bärndütsch',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutDeCh);\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/dist/lib/layout_de_ch_genau.js b/dist/lib/layout_de_ch_genau.js
index 225719b..2dd4d6d 100644
--- a/dist/lib/layout_de_ch_genau.js
+++ b/dist/lib/layout_de_ch_genau.js
@@ -1,2 +1,2 @@
-!function(e){var t={};function r(n){if(t[n])return t[n].exports;var u=t[n]={i:n,l:!1,exports:{}};return e[n].call(u.exports,u,u.exports,r),u.l=!0,u.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var u in e)r.d(n,u,function(t){return e[t]}.bind(null,u));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=4)}({4:function(e,t,r){"use strict";r.r(t),r.d(t,"Layout_de_CH_genau",function(){return l});var n={4:[4,5]},u={4:[1,2,3]},o={4:[7,8,9,10,11]},i={1:[9,10,11]},f={2:[9,10,11]},a={2:[1,2,3,4,5,6]},c={3:[1,2,3,4,5,6]},l={code:"de_CH_genau",hours:{"0,12":{10:[1,2,3,4,5,6]},"1,13":{5:[1,2,3]},"2,14":{5:[4,5,6,7]},"3,15":{5:[9,10,11]},"4,16":{6:[1,2,3,4,5]},"5,17":{6:[6,7,8,9]},"6,18":{7:[1,2,3,4,5,6]},"7,19":{7:[7,8,9,10,11]},"8,20":{8:[1,2,3,4,5]},"9,21":{8:[6,7,8,9]},"10,22":{9:[1,2,3,4]},"11,23":{9:[8,9,10,11]}},letters:["ESKISCHAFÜF","VIERTUBFZÄÄ","ZWÄNZGGENAU","VORABOHAUBI","EISZWÖISDRÜ","VIERIFÜFIQT","SÄCHSISIBNI","ACHTINÜNIEL","ZÄNIERBEUFI","ZWÖUFINAUHR"],minutes:{0:{3:[7,8,9,10,11]},"5,6,7,8,9":[i,n],"10,11,12,13,14":[f,n],"15,16,17,18,19":[a,n],"20,21,22,23,24":[c,n],"25,26,27,28,29":[i,u,o],"30,31,32,33,34":o,"35,36,37,38,39":[i,n,o],"40,41,42,43,44":[c,u],"45,46,47,48,49":[a,u],"50,51,52,53,54":[f,u],"55,56,57,58,59":[i,u]},permanent:{1:[1,2,4,5,6,7]},prettyName:"Bärndütsch (genau)",version:2};$.fritteli.uhr.register(l)}});
+!function(e){var t={};function r(n){if(t[n])return t[n].exports;var u=t[n]={i:n,l:!1,exports:{}};return e[n].call(u.exports,u,u.exports,r),u.l=!0,u.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var u in e)r.d(n,u,function(t){return e[t]}.bind(null,u));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=4)}({4:function(e,t,r){"use strict";r.r(t),r.d(t,"LayoutDeChGenau",function(){return l});var n={4:[4,5]},u={4:[1,2,3]},o={4:[7,8,9,10,11]},i={1:[9,10,11]},f={2:[9,10,11]},a={2:[1,2,3,4,5,6]},c={3:[1,2,3,4,5,6]},l={code:"de_CH_genau",hours:{"0,12":{10:[1,2,3,4,5,6]},"1,13":{5:[1,2,3]},"2,14":{5:[4,5,6,7]},"3,15":{5:[9,10,11]},"4,16":{6:[1,2,3,4,5]},"5,17":{6:[6,7,8,9]},"6,18":{7:[1,2,3,4,5,6]},"7,19":{7:[7,8,9,10,11]},"8,20":{8:[1,2,3,4,5]},"9,21":{8:[6,7,8,9]},"10,22":{9:[1,2,3,4]},"11,23":{9:[8,9,10,11]}},letters:["ESKISCHAFÜF","VIERTUBFZÄÄ","ZWÄNZGGENAU","VORABOHAUBI","EISZWÖISDRÜ","VIERIFÜFIQT","SÄCHSISIBNI","ACHTINÜNIEL","ZÄNIERBEUFI","ZWÖUFINAUHR"],minutes:{0:{3:[7,8,9,10,11]},"5,6,7,8,9":[i,n],"10,11,12,13,14":[f,n],"15,16,17,18,19":[a,n],"20,21,22,23,24":[c,n],"25,26,27,28,29":[i,u,o],"30,31,32,33,34":o,"35,36,37,38,39":[i,n,o],"40,41,42,43,44":[c,u],"45,46,47,48,49":[a,u],"50,51,52,53,54":[f,u],"55,56,57,58,59":[i,u]},permanent:{1:[1,2,4,5,6,7]},prettyName:"Bärndütsch (genau)",version:2};$.fritteli.uhr.register(l)}});
//# sourceMappingURL=layout_de_ch_genau.js.map
\ No newline at end of file
diff --git a/dist/lib/layout_de_ch_genau.js.map b/dist/lib/layout_de_ch_genau.js.map
index abe95a4..ba431c6 100644
--- a/dist/lib/layout_de_ch_genau.js.map
+++ b/dist/lib/layout_de_ch_genau.js.map
@@ -1 +1 @@
-{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/layout/layout-de_ch_genau.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","Layout_de_CH_genau","ab","4","vor","haubi","fuef","1","zae","2","viertu","zwaenzg","3","code","hours","0,12","10","1,13","5","2,14","3,15","4,16","6","5,17","6,18","7","7,19","8,20","8","9,21","10,22","9","11,23","letters","minutes","0","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","prettyName","version","$","fritteli","uhr","register"],"mappings":"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","file":"lib/layout_de_ch_genau.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 4);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst es_isch: WordDefinition = {1: [1, 2, 4, 5, 6, 7]};\nconst genau: WordDefinition = {3: [7, 8, 9, 10, 11]};\nconst ab: WordDefinition = {4: [4, 5]};\nconst vor: WordDefinition = {4: [1, 2, 3]};\nconst haubi: WordDefinition = {4: [7, 8, 9, 10, 11]};\nconst fuef: WordDefinition = {1: [9, 10, 11]};\nconst zae: WordDefinition = {2: [9, 10, 11]};\nconst viertu: WordDefinition = {2: [1, 2, 3, 4, 5, 6]};\nconst zwaenzg: WordDefinition = {3: [1, 2, 3, 4, 5, 6]};\n\nexport const Layout_de_CH_genau: Layout = {\n code: 'de_CH_genau',\n hours: {\n '0,12': {10: [1, 2, 3, 4, 5, 6]},\n '1,13': {5: [1, 2, 3]},\n '2,14': {5: [4, 5, 6, 7]},\n '3,15': {5: [9, 10, 11]},\n '4,16': {6: [1, 2, 3, 4, 5]},\n '5,17': {6: [6, 7, 8, 9]},\n '6,18': {7: [1, 2, 3, 4, 5, 6]},\n '7,19': {7: [7, 8, 9, 10, 11]},\n '8,20': {8: [1, 2, 3, 4, 5]},\n '9,21': {8: [6, 7, 8, 9]},\n '10,22': {9: [1, 2, 3, 4]},\n '11,23': {9: [8, 9, 10, 11]}\n },\n letters: [\n 'ESKISCHAFÜF',\n 'VIERTUBFZÄÄ',\n 'ZWÄNZGGENAU',\n 'VORABOHAUBI',\n 'EISZWÖISDRÜ',\n 'VIERIFÜFIQT',\n 'SÄCHSISIBNI',\n 'ACHTINÜNIEL',\n 'ZÄNIERBEUFI',\n 'ZWÖUFINAUHR'\n ],\n minutes: {\n '0': genau,\n '5,6,7,8,9': [fuef, ab],\n '10,11,12,13,14': [zae, ab],\n '15,16,17,18,19': [viertu, ab],\n '20,21,22,23,24': [zwaenzg, ab],\n '25,26,27,28,29': [fuef, vor, haubi],\n '30,31,32,33,34': haubi,\n '35,36,37,38,39': [fuef, ab, haubi],\n '40,41,42,43,44': [zwaenzg, vor],\n '45,46,47,48,49': [viertu, vor],\n '50,51,52,53,54': [zae, vor],\n '55,56,57,58,59': [fuef, vor]\n },\n permanent: es_isch,\n prettyName: 'Bärndütsch (genau)',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_de_CH_genau);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/layout/layout-de_ch_genau.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","LayoutDeChGenau","ab","4","vor","haubi","fuef","1","zae","2","viertu","zwaenzg","3","code","hours","0,12","10","1,13","5","2,14","3,15","4,16","6","5,17","6,18","7","7,19","8,20","8","9,21","10,22","9","11,23","letters","minutes","0","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","prettyName","version","$","fritteli","uhr","register"],"mappings":"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","file":"lib/layout_de_ch_genau.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 4);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst esIsch: WordDefinition = {1: [1, 2, 4, 5, 6, 7]};\nconst genau: WordDefinition = {3: [7, 8, 9, 10, 11]};\nconst ab: WordDefinition = {4: [4, 5]};\nconst vor: WordDefinition = {4: [1, 2, 3]};\nconst haubi: WordDefinition = {4: [7, 8, 9, 10, 11]};\nconst fuef: WordDefinition = {1: [9, 10, 11]};\nconst zae: WordDefinition = {2: [9, 10, 11]};\nconst viertu: WordDefinition = {2: [1, 2, 3, 4, 5, 6]};\nconst zwaenzg: WordDefinition = {3: [1, 2, 3, 4, 5, 6]};\n\nexport const LayoutDeChGenau: Layout = {\n code: 'de_CH_genau',\n hours: {\n '0,12': {10: [1, 2, 3, 4, 5, 6]},\n '1,13': {5: [1, 2, 3]},\n '2,14': {5: [4, 5, 6, 7]},\n '3,15': {5: [9, 10, 11]},\n '4,16': {6: [1, 2, 3, 4, 5]},\n '5,17': {6: [6, 7, 8, 9]},\n '6,18': {7: [1, 2, 3, 4, 5, 6]},\n '7,19': {7: [7, 8, 9, 10, 11]},\n '8,20': {8: [1, 2, 3, 4, 5]},\n '9,21': {8: [6, 7, 8, 9]},\n '10,22': {9: [1, 2, 3, 4]},\n '11,23': {9: [8, 9, 10, 11]}\n },\n letters: [\n 'ESKISCHAFÜF',\n 'VIERTUBFZÄÄ',\n 'ZWÄNZGGENAU',\n 'VORABOHAUBI',\n 'EISZWÖISDRÜ',\n 'VIERIFÜFIQT',\n 'SÄCHSISIBNI',\n 'ACHTINÜNIEL',\n 'ZÄNIERBEUFI',\n 'ZWÖUFINAUHR'\n ],\n minutes: {\n '0': genau,\n '5,6,7,8,9': [fuef, ab],\n '10,11,12,13,14': [zae, ab],\n '15,16,17,18,19': [viertu, ab],\n '20,21,22,23,24': [zwaenzg, ab],\n '25,26,27,28,29': [fuef, vor, haubi],\n '30,31,32,33,34': haubi,\n '35,36,37,38,39': [fuef, ab, haubi],\n '40,41,42,43,44': [zwaenzg, vor],\n '45,46,47,48,49': [viertu, vor],\n '50,51,52,53,54': [zae, vor],\n '55,56,57,58,59': [fuef, vor]\n },\n permanent: esIsch,\n prettyName: 'Bärndütsch (genau)',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutDeChGenau);\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/dist/lib/layout_dk.js b/dist/lib/layout_dk.js
index b2cfb5e..069e9a6 100644
--- a/dist/lib/layout_dk.js
+++ b/dist/lib/layout_dk.js
@@ -1,2 +1,2 @@
-!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=5)}({5:function(e,t,r){"use strict";r.r(t),r.d(t,"Layout_dk",function(){return d});var n={4:[4,5,6,7,8,9,10,11]},o={5:[8]},u={5:[4,5,6,7]},i={2:[1,2,3]},f={4:[1,2]},l={3:[4,5,6,7,8]},c={2:[4,5,6,7]},a={6:[8,9,10,11]},d={code:"dk",hours:{"0,12":{10:[8,9,10,11]},"1,13":{7:[1,2]},"2,14":{7:[3,4]},"3,15":{7:[5,6,7]},"4,16":{7:[8,9,10,11]},"5,17":{8:[1,2,3]},"6,18":{8:[4,5,6,7]},"7,19":{8:[9,10,11]},"8,20":{9:[1,2,3,4]},"9,21":{9:[6,7]},"10,22":{9:[10,11]},"11,23":{10:[1,2,3,4,5,6]}},letters:["KLOKKENVERO","FEMTYVESKLA","OJEKVARTVAT","TIAMINUTTER","VEMOVERILMF","MONALISHALV","ETTOTREFIRE","FEMSEKSRSYV","OTTERNIMETI","ELLEVEATOLV"],minutes:{"5,6,7,8,9":[i,n,u],"10,11,12,13,14":[f,n,u],"15,16,17,18,19":[l,u],"20,21,22,23,24":[c,n,u],"25,26,27,28,29":[i,n,o,a],"30,31,32,33,34":[a],"35,36,37,38,39":[i,n,u,a],"40,41,42,43,44":[c,n,o],"45,46,47,48,49":[l,o],"50,51,52,53,54":[f,n,o],"55,56,57,58,59":[i,n,o]},permanent:{1:[1,2,3,4,5,6,7,9,10]},prettyName:"Dansk",version:2};$.fritteli.uhr.register(d)}});
+!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=5)}({5:function(e,t,r){"use strict";r.r(t),r.d(t,"LayoutDk",function(){return d});var n={4:[4,5,6,7,8,9,10,11]},o={5:[8]},u={5:[4,5,6,7]},i={2:[1,2,3]},f={4:[1,2]},l={3:[4,5,6,7,8]},c={2:[4,5,6,7]},a={6:[8,9,10,11]},d={code:"dk",hours:{"0,12":{10:[8,9,10,11]},"1,13":{7:[1,2]},"2,14":{7:[3,4]},"3,15":{7:[5,6,7]},"4,16":{7:[8,9,10,11]},"5,17":{8:[1,2,3]},"6,18":{8:[4,5,6,7]},"7,19":{8:[9,10,11]},"8,20":{9:[1,2,3,4]},"9,21":{9:[6,7]},"10,22":{9:[10,11]},"11,23":{10:[1,2,3,4,5,6]}},letters:["KLOKKENVERO","FEMTYVESKLA","OJEKVARTVAT","TIAMINUTTER","VEMOVERILMF","MONALISHALV","ETTOTREFIRE","FEMSEKSRSYV","OTTERNIMETI","ELLEVEATOLV"],minutes:{"5,6,7,8,9":[i,n,u],"10,11,12,13,14":[f,n,u],"15,16,17,18,19":[l,u],"20,21,22,23,24":[c,n,u],"25,26,27,28,29":[i,n,o,a],"30,31,32,33,34":[a],"35,36,37,38,39":[i,n,u,a],"40,41,42,43,44":[c,n,o],"45,46,47,48,49":[l,o],"50,51,52,53,54":[f,n,o],"55,56,57,58,59":[i,n,o]},permanent:{1:[1,2,3,4,5,6,7,9,10]},prettyName:"Dansk",version:2};$.fritteli.uhr.register(d)}});
//# sourceMappingURL=layout_dk.js.map
\ No newline at end of file
diff --git a/dist/lib/layout_dk.js.map b/dist/lib/layout_dk.js.map
index 6684368..7ca0e6e 100644
--- a/dist/lib/layout_dk.js.map
+++ b/dist/lib/layout_dk.js.map
@@ -1 +1 @@
-{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/layout/layout-dk.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","Layout_dk","minutter","4","5","over","fem","2","ti","kvart","3","tyve","halv","6","code","hours","0,12","10","1,13","7","2,14","3,15","4,16","5,17","8","6,18","7,19","8,20","9","9,21","10,22","11,23","letters","minutes","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","1","prettyName","version","$","fritteli","uhr","register"],"mappings":"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","file":"lib/layout_dk.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 5);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst klokken_er: WordDefinition = {1: [1, 2, 3, 4, 5, 6, 7, 9, 10]};\nconst minutter: WordDefinition = {4: [4, 5, 6, 7, 8, 9, 10, 11]};\nconst i: WordDefinition = {5: [8]};\nconst over: WordDefinition = {5: [4, 5, 6, 7]};\nconst fem: WordDefinition = {2: [1, 2, 3]};\nconst ti: WordDefinition = {4: [1, 2]};\nconst kvart: WordDefinition = {3: [4, 5, 6, 7, 8]};\nconst tyve: WordDefinition = {2: [4, 5, 6, 7]};\nconst halv: WordDefinition = {6: [8, 9, 10, 11]};\n\nexport const Layout_dk: Layout = {\n code: 'dk',\n hours: {\n '0,12': {10: [8, 9, 10, 11]},\n '1,13': {7: [1, 2]},\n '2,14': {7: [3, 4]},\n '3,15': {7: [5, 6, 7]},\n '4,16': {7: [8, 9, 10, 11]},\n '5,17': {8: [1, 2, 3]},\n '6,18': {8: [4, 5, 6, 7]},\n '7,19': {8: [9, 10, 11]},\n '8,20': {9: [1, 2, 3, 4]},\n '9,21': {9: [6, 7]},\n '10,22': {9: [10, 11]},\n '11,23': {10: [1, 2, 3, 4, 5, 6]}\n },\n letters: [\n 'KLOKKENVERO',\n 'FEMTYVESKLA',\n 'OJEKVARTVAT',\n 'TIAMINUTTER',\n 'VEMOVERILMF',\n 'MONALISHALV',\n 'ETTOTREFIRE',\n 'FEMSEKSRSYV',\n 'OTTERNIMETI',\n 'ELLEVEATOLV'\n ],\n minutes: {\n '5,6,7,8,9': [fem, minutter, over],\n '10,11,12,13,14': [ti, minutter, over],\n '15,16,17,18,19': [kvart, over],\n '20,21,22,23,24': [tyve, minutter, over],\n '25,26,27,28,29': [fem, minutter, i, halv],\n '30,31,32,33,34': [halv],\n '35,36,37,38,39': [fem, minutter, over, halv],\n '40,41,42,43,44': [tyve, minutter, i],\n '45,46,47,48,49': [kvart, i],\n '50,51,52,53,54': [ti, minutter, i],\n '55,56,57,58,59': [fem, minutter, i]\n },\n permanent: klokken_er,\n prettyName: 'Dansk',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_dk);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/layout/layout-dk.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","LayoutDk","minutter","4","5","over","fem","2","ti","kvart","3","tyve","halv","6","code","hours","0,12","10","1,13","7","2,14","3,15","4,16","5,17","8","6,18","7,19","8,20","9","9,21","10,22","11,23","letters","minutes","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","1","prettyName","version","$","fritteli","uhr","register"],"mappings":"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","file":"lib/layout_dk.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 5);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst klokkenEr: WordDefinition = {1: [1, 2, 3, 4, 5, 6, 7, 9, 10]};\nconst minutter: WordDefinition = {4: [4, 5, 6, 7, 8, 9, 10, 11]};\nconst i: WordDefinition = {5: [8]};\nconst over: WordDefinition = {5: [4, 5, 6, 7]};\nconst fem: WordDefinition = {2: [1, 2, 3]};\nconst ti: WordDefinition = {4: [1, 2]};\nconst kvart: WordDefinition = {3: [4, 5, 6, 7, 8]};\nconst tyve: WordDefinition = {2: [4, 5, 6, 7]};\nconst halv: WordDefinition = {6: [8, 9, 10, 11]};\n\nexport const LayoutDk: Layout = {\n code: 'dk',\n hours: {\n '0,12': {10: [8, 9, 10, 11]},\n '1,13': {7: [1, 2]},\n '2,14': {7: [3, 4]},\n '3,15': {7: [5, 6, 7]},\n '4,16': {7: [8, 9, 10, 11]},\n '5,17': {8: [1, 2, 3]},\n '6,18': {8: [4, 5, 6, 7]},\n '7,19': {8: [9, 10, 11]},\n '8,20': {9: [1, 2, 3, 4]},\n '9,21': {9: [6, 7]},\n '10,22': {9: [10, 11]},\n '11,23': {10: [1, 2, 3, 4, 5, 6]}\n },\n letters: [\n 'KLOKKENVERO',\n 'FEMTYVESKLA',\n 'OJEKVARTVAT',\n 'TIAMINUTTER',\n 'VEMOVERILMF',\n 'MONALISHALV',\n 'ETTOTREFIRE',\n 'FEMSEKSRSYV',\n 'OTTERNIMETI',\n 'ELLEVEATOLV'\n ],\n minutes: {\n '5,6,7,8,9': [fem, minutter, over],\n '10,11,12,13,14': [ti, minutter, over],\n '15,16,17,18,19': [kvart, over],\n '20,21,22,23,24': [tyve, minutter, over],\n '25,26,27,28,29': [fem, minutter, i, halv],\n '30,31,32,33,34': [halv],\n '35,36,37,38,39': [fem, minutter, over, halv],\n '40,41,42,43,44': [tyve, minutter, i],\n '45,46,47,48,49': [kvart, i],\n '50,51,52,53,54': [ti, minutter, i],\n '55,56,57,58,59': [fem, minutter, i]\n },\n permanent: klokkenEr,\n prettyName: 'Dansk',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutDk);\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/dist/lib/layout_en.js b/dist/lib/layout_en.js
index 0b25cb4..4eac348 100644
--- a/dist/lib/layout_en.js
+++ b/dist/lib/layout_en.js
@@ -1,2 +1,2 @@
-!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=6)}({6:function(e,t,r){"use strict";r.r(t),r.d(t,"Layout_en",function(){return a});var n={4:[10,11]},o={5:[1,2,3,4]},u={3:[7,8,9,10]},i={4:[6,7,8]},f={2:[1,3,4,5,6,7,8,9]},l={3:[1,2,3,4,5,6]},c={3:[1,2,3,4,5,6,7,8,9,10]},a={code:"en",getHour:function(e){var t=e.getHours();return e.getMinutes()>=35?(t+1)%24:t},hours:{"0,12":{9:[6,7,8,9,10,11]},"1,13":{6:[1,2,3]},"2,14":{7:[9,10,11]},"3,15":{6:[7,8,9,10,11]},"4,16":{7:[1,2,3,4]},"5,17":{7:[5,6,7,8]},"6,18":{6:[4,5,6]},"7,19":{9:[1,2,3,4,5]},"8,20":{8:[1,2,3,4,5]},"9,21":{5:[8,9,10,11]},"10,22":{10:[1,2,3]},"11,23":{8:[6,7,8,9,10,11]}},letters:["ITLISBFAMPM","ACQUARTERDC","TWENTYFIVEX","HALFBTENFTO","PASTERUNINE","ONESIXTHREE","FOURFIVETWO","EIGHTELEVEN","SEVENTWELVE","TENSO'CLOCK"],minutes:{"0,1,2,3,4":{10:[5,6,7,8,9,10,11]},"5,6,7,8,9":[u,o],"10,11,12,13,14":[i,o],"15,16,17,18,19":[f,o],"20,21,22,23,24":[l,o],"25,26,27,28,29":[c,o],"30,31,32,33,34":[{4:[1,2,3,4]},o],"35,36,37,38,39":[c,n],"40,41,42,43,44":[l,n],"45,46,47,48,49":[f,n],"50,51,52,53,54":[i,n],"55,56,57,58,59":[u,n]},permanent:{1:[1,2,4,5]},prettyName:"English",version:2};$.fritteli.uhr.register(a)}});
+!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=6)}({6:function(e,t,r){"use strict";r.r(t),r.d(t,"LayoutEn",function(){return a});var n={4:[10,11]},o={5:[1,2,3,4]},u={3:[7,8,9,10]},i={4:[6,7,8]},f={2:[1,3,4,5,6,7,8,9]},l={3:[1,2,3,4,5,6]},c={3:[1,2,3,4,5,6,7,8,9,10]},a={code:"en",getHour:function(e){var t=e.getHours();return e.getMinutes()>=35?(t+1)%24:t},hours:{"0,12":{9:[6,7,8,9,10,11]},"1,13":{6:[1,2,3]},"2,14":{7:[9,10,11]},"3,15":{6:[7,8,9,10,11]},"4,16":{7:[1,2,3,4]},"5,17":{7:[5,6,7,8]},"6,18":{6:[4,5,6]},"7,19":{9:[1,2,3,4,5]},"8,20":{8:[1,2,3,4,5]},"9,21":{5:[8,9,10,11]},"10,22":{10:[1,2,3]},"11,23":{8:[6,7,8,9,10,11]}},letters:["ITLISBFAMPM","ACQUARTERDC","TWENTYFIVEX","HALFBTENFTO","PASTERUNINE","ONESIXTHREE","FOURFIVETWO","EIGHTELEVEN","SEVENTWELVE","TENSO'CLOCK"],minutes:{"0,1,2,3,4":{10:[5,6,7,8,9,10,11]},"5,6,7,8,9":[u,o],"10,11,12,13,14":[i,o],"15,16,17,18,19":[f,o],"20,21,22,23,24":[l,o],"25,26,27,28,29":[c,o],"30,31,32,33,34":[{4:[1,2,3,4]},o],"35,36,37,38,39":[c,n],"40,41,42,43,44":[l,n],"45,46,47,48,49":[f,n],"50,51,52,53,54":[i,n],"55,56,57,58,59":[u,n]},permanent:{1:[1,2,4,5]},prettyName:"English",version:2};$.fritteli.uhr.register(a)}});
//# sourceMappingURL=layout_en.js.map
\ No newline at end of file
diff --git a/dist/lib/layout_en.js.map b/dist/lib/layout_en.js.map
index 62f819e..8337aa4 100644
--- a/dist/lib/layout_en.js.map
+++ b/dist/lib/layout_en.js.map
@@ -1 +1 @@
-{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/layout/layout-en.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","Layout_en","to","4","past","5","five","3","ten","a_quarter","2","twenty","twentyfive","code","getHour","time","hour","getHours","getMinutes","hours","0,12","9","1,13","6","2,14","7","3,15","4,16","5,17","6,18","7,19","8,20","8","9,21","10,22","10","11,23","letters","minutes","0,1,2,3,4","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","1","prettyName","version","$","fritteli","uhr","register"],"mappings":"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","file":"lib/layout_en.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 6);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst it_is: WordDefinition = {1: [1, 2, 4, 5]};\nconst half: WordDefinition = {4: [1, 2, 3, 4]};\nconst to: WordDefinition = {4: [10, 11]};\nconst past: WordDefinition = {5: [1, 2, 3, 4]};\nconst o_clock: WordDefinition = {10: [5, 6, 7, 8, 9, 10, 11]};\nconst five: WordDefinition = {3: [7, 8, 9, 10]};\nconst ten: WordDefinition = {4: [6, 7, 8]};\nconst a_quarter: WordDefinition = {2: [1, 3, 4, 5, 6, 7, 8, 9]};\nconst twenty: WordDefinition = {3: [1, 2, 3, 4, 5, 6]};\nconst twentyfive: WordDefinition = {3: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]};\n\nexport const Layout_en: Layout = {\n code: 'en',\n getHour: (time: Date) => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n\n hours: {\n '0,12': {9: [6, 7, 8, 9, 10, 11]},\n '1,13': {6: [1, 2, 3]},\n '2,14': {7: [9, 10, 11]},\n '3,15': {6: [7, 8, 9, 10, 11]},\n '4,16': {7: [1, 2, 3, 4]},\n '5,17': {7: [5, 6, 7, 8]},\n '6,18': {6: [4, 5, 6]},\n '7,19': {9: [1, 2, 3, 4, 5]},\n '8,20': {8: [1, 2, 3, 4, 5]},\n '9,21': {5: [8, 9, 10, 11]},\n '10,22': {10: [1, 2, 3]},\n '11,23': {8: [6, 7, 8, 9, 10, 11]}\n },\n letters: [\n 'ITLISBFAMPM',\n 'ACQUARTERDC',\n 'TWENTYFIVEX',\n 'HALFBTENFTO',\n 'PASTERUNINE',\n 'ONESIXTHREE',\n 'FOURFIVETWO',\n 'EIGHTELEVEN',\n 'SEVENTWELVE',\n 'TENSO\\'CLOCK'\n ],\n minutes: {\n '0,1,2,3,4': o_clock,\n '5,6,7,8,9': [five, past],\n '10,11,12,13,14': [ten, past],\n '15,16,17,18,19': [a_quarter, past],\n '20,21,22,23,24': [twenty, past],\n '25,26,27,28,29': [twentyfive, past],\n '30,31,32,33,34': [half, past],\n '35,36,37,38,39': [twentyfive, to],\n '40,41,42,43,44': [twenty, to],\n '45,46,47,48,49': [a_quarter, to],\n '50,51,52,53,54': [ten, to],\n '55,56,57,58,59': [five, to]\n },\n permanent: it_is,\n prettyName: 'English',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_en);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/layout/layout-en.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","LayoutEn","to","4","past","5","five","3","ten","aQuarter","2","twenty","twentyfive","code","getHour","time","hour","getHours","getMinutes","hours","0,12","9","1,13","6","2,14","7","3,15","4,16","5,17","6,18","7,19","8,20","8","9,21","10,22","10","11,23","letters","minutes","0,1,2,3,4","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","1","prettyName","version","$","fritteli","uhr","register"],"mappings":"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","file":"lib/layout_en.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 6);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst itIs: WordDefinition = {1: [1, 2, 4, 5]};\nconst half: WordDefinition = {4: [1, 2, 3, 4]};\nconst to: WordDefinition = {4: [10, 11]};\nconst past: WordDefinition = {5: [1, 2, 3, 4]};\nconst oClock: WordDefinition = {10: [5, 6, 7, 8, 9, 10, 11]};\nconst five: WordDefinition = {3: [7, 8, 9, 10]};\nconst ten: WordDefinition = {4: [6, 7, 8]};\nconst aQuarter: WordDefinition = {2: [1, 3, 4, 5, 6, 7, 8, 9]};\nconst twenty: WordDefinition = {3: [1, 2, 3, 4, 5, 6]};\nconst twentyfive: WordDefinition = {3: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]};\n\nexport const LayoutEn: Layout = {\n code: 'en',\n getHour: (time: Date): number => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n\n hours: {\n '0,12': {9: [6, 7, 8, 9, 10, 11]},\n '1,13': {6: [1, 2, 3]},\n '2,14': {7: [9, 10, 11]},\n '3,15': {6: [7, 8, 9, 10, 11]},\n '4,16': {7: [1, 2, 3, 4]},\n '5,17': {7: [5, 6, 7, 8]},\n '6,18': {6: [4, 5, 6]},\n '7,19': {9: [1, 2, 3, 4, 5]},\n '8,20': {8: [1, 2, 3, 4, 5]},\n '9,21': {5: [8, 9, 10, 11]},\n '10,22': {10: [1, 2, 3]},\n '11,23': {8: [6, 7, 8, 9, 10, 11]}\n },\n letters: [\n 'ITLISBFAMPM',\n 'ACQUARTERDC',\n 'TWENTYFIVEX',\n 'HALFBTENFTO',\n 'PASTERUNINE',\n 'ONESIXTHREE',\n 'FOURFIVETWO',\n 'EIGHTELEVEN',\n 'SEVENTWELVE',\n 'TENSO\\'CLOCK'\n ],\n minutes: {\n '0,1,2,3,4': oClock,\n '5,6,7,8,9': [five, past],\n '10,11,12,13,14': [ten, past],\n '15,16,17,18,19': [aQuarter, past],\n '20,21,22,23,24': [twenty, past],\n '25,26,27,28,29': [twentyfive, past],\n '30,31,32,33,34': [half, past],\n '35,36,37,38,39': [twentyfive, to],\n '40,41,42,43,44': [twenty, to],\n '45,46,47,48,49': [aQuarter, to],\n '50,51,52,53,54': [ten, to],\n '55,56,57,58,59': [five, to]\n },\n permanent: itIs,\n prettyName: 'English',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutEn);\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/dist/lib/layout_es.js b/dist/lib/layout_es.js
index 582b55b..2f207c7 100644
--- a/dist/lib/layout_es.js
+++ b/dist/lib/layout_es.js
@@ -1,2 +1,2 @@
-!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=7)}({7:function(e,t,r){"use strict";r.r(t),r.d(t,"Layout_es",function(){return s});var n={1:[2,3,4,6,7,8]},o={7:[6]},u={7:[7,8,9,10,11]},i={9:[7,8,9,10,11]},f={8:[8,9,10,11]},l={10:[6,7,8,9,10,11]},c={8:[2,3,4,5,6,7]},a={9:[1,2,3,4,5,6,7,8,9,10,11]},s={code:"es",getHour:function(e){var t=e.getHours();return e.getMinutes()>=35?(t+1)%24:t},hours:{"0,12":[n,{7:[1,2,3,4]}],"1,13":[{1:[1,2,6,7]},{1:[9,10,11]}],"2,14":[n,{2:[1,2,3]}],"3,15":[n,{2:[5,6,7,8]}],"4,16":[n,{3:[1,2,3,4,5,6]}],"5,17":[n,{3:[7,8,9,10,11]}],"6,18":[n,{4:[1,2,3,4]}],"7,19":[n,{4:[6,7,8,9,10]}],"8,20":[n,{5:[1,2,3,4]}],"9,21":[n,{5:[5,6,7,8,9]}],"10,22":[n,{6:[3,4,5,6]}],"11,23":[n,{6:[8,9,10,11]}]},letters:["ESONELASUNA","DOSITRESORE","CUATROCINCO","SEISASIETEN","OCHONUEVEYO","LADIEZSONCE","DOCELYMENOS","OVEINTEDIEZ","VEINTICINCO","MEDIACUARTO"],minutes:{"5,6,7,8,9":[o,i],"10,11,12,13,14":[o,f],"15,16,17,18,19":[o,l],"20,21,22,23,24":[o,c],"25,26,27,28,29":[o,a],"30,31,32,33,34":[o,{10:[1,2,3,4,5]}],"35,36,37,38,39":[u,a],"40,41,42,43,44":[u,c],"45,46,47,48,49":[u,l],"50,51,52,53,54":[u,f],"55,56,57,58,59":[u,i]},permanent:null,prettyName:"Español",version:2};$.fritteli.uhr.register(s)}});
+!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=7)}({7:function(e,t,r){"use strict";r.r(t),r.d(t,"LayoutEs",function(){return s});var n={1:[2,3,4,6,7,8]},o={7:[6]},u={7:[7,8,9,10,11]},i={9:[7,8,9,10,11]},f={8:[8,9,10,11]},l={10:[6,7,8,9,10,11]},c={8:[2,3,4,5,6,7]},a={9:[1,2,3,4,5,6,7,8,9,10,11]},s={code:"es",getHour:function(e){var t=e.getHours();return e.getMinutes()>=35?(t+1)%24:t},hours:{"0,12":[n,{7:[1,2,3,4]}],"1,13":[{1:[1,2,6,7]},{1:[9,10,11]}],"2,14":[n,{2:[1,2,3]}],"3,15":[n,{2:[5,6,7,8]}],"4,16":[n,{3:[1,2,3,4,5,6]}],"5,17":[n,{3:[7,8,9,10,11]}],"6,18":[n,{4:[1,2,3,4]}],"7,19":[n,{4:[6,7,8,9,10]}],"8,20":[n,{5:[1,2,3,4]}],"9,21":[n,{5:[5,6,7,8,9]}],"10,22":[n,{6:[3,4,5,6]}],"11,23":[n,{6:[8,9,10,11]}]},letters:["ESONELASUNA","DOSITRESORE","CUATROCINCO","SEISASIETEN","OCHONUEVEYO","LADIEZSONCE","DOCELYMENOS","OVEINTEDIEZ","VEINTICINCO","MEDIACUARTO"],minutes:{"5,6,7,8,9":[o,i],"10,11,12,13,14":[o,f],"15,16,17,18,19":[o,l],"20,21,22,23,24":[o,c],"25,26,27,28,29":[o,a],"30,31,32,33,34":[o,{10:[1,2,3,4,5]}],"35,36,37,38,39":[u,a],"40,41,42,43,44":[u,c],"45,46,47,48,49":[u,l],"50,51,52,53,54":[u,f],"55,56,57,58,59":[u,i]},permanent:null,prettyName:"Español",version:2};$.fritteli.uhr.register(s)}});
//# sourceMappingURL=layout_es.js.map
\ No newline at end of file
diff --git a/dist/lib/layout_es.js.map b/dist/lib/layout_es.js.map
index ee42ef7..cc53168 100644
--- a/dist/lib/layout_es.js.map
+++ b/dist/lib/layout_es.js.map
@@ -1 +1 @@
-{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/layout/layout-es.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","Layout_es","son_las","1","y","7","menos","cinco","9","diez","8","cuarto","10","veinte","veinticinco","code","getHour","time","hour","getHours","getMinutes","hours","0,12","1,13","2,14","2","3,15","4,16","3","5,17","6,18","4","7,19","8,20","5","9,21","10,22","6","11,23","letters","minutes","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","prettyName","version","$","fritteli","uhr","register"],"mappings":"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","file":"lib/layout_es.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 7);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst es_la: WordDefinition = {1: [1, 2, 6, 7]};\nconst son_las: WordDefinition = {1: [2, 3, 4, 6, 7, 8]};\nconst y: WordDefinition = {7: [6]};\nconst menos: WordDefinition = {7: [7, 8, 9, 10, 11]};\nconst media: WordDefinition = {10: [1, 2, 3, 4, 5]};\nconst cinco: WordDefinition = {9: [7, 8, 9, 10, 11]};\nconst diez: WordDefinition = {8: [8, 9, 10, 11]};\nconst cuarto: WordDefinition = {10: [6, 7, 8, 9, 10, 11]};\nconst veinte: WordDefinition = {8: [2, 3, 4, 5, 6, 7]};\nconst veinticinco: WordDefinition = {9: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]};\n\nexport const Layout_es: Layout = {\n code: 'es',\n getHour: (time: Date) => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n\n hours: {\n '0,12': [son_las, {7: [1, 2, 3, 4]}],\n '1,13': [es_la, {1: [9, 10, 11]}],\n '2,14': [son_las, {2: [1, 2, 3]}],\n '3,15': [son_las, {2: [5, 6, 7, 8]}],\n '4,16': [son_las, {3: [1, 2, 3, 4, 5, 6]}],\n '5,17': [son_las, {3: [7, 8, 9, 10, 11]}],\n '6,18': [son_las, {4: [1, 2, 3, 4]}],\n '7,19': [son_las, {4: [6, 7, 8, 9, 10]}],\n '8,20': [son_las, {5: [1, 2, 3, 4]}],\n '9,21': [son_las, {5: [5, 6, 7, 8, 9]}],\n '10,22': [son_las, {6: [3, 4, 5, 6]}],\n '11,23': [son_las, {6: [8, 9, 10, 11]}]\n },\n letters: [\n 'ESONELASUNA',\n 'DOSITRESORE',\n 'CUATROCINCO',\n 'SEISASIETEN',\n 'OCHONUEVEYO',\n 'LADIEZSONCE',\n 'DOCELYMENOS',\n 'OVEINTEDIEZ',\n 'VEINTICINCO',\n 'MEDIACUARTO'\n ],\n minutes: {\n '5,6,7,8,9': [y, cinco],\n '10,11,12,13,14': [y, diez],\n '15,16,17,18,19': [y, cuarto],\n '20,21,22,23,24': [y, veinte],\n '25,26,27,28,29': [y, veinticinco],\n '30,31,32,33,34': [y, media],\n '35,36,37,38,39': [menos, veinticinco],\n '40,41,42,43,44': [menos, veinte],\n '45,46,47,48,49': [menos, cuarto],\n '50,51,52,53,54': [menos, diez],\n '55,56,57,58,59': [menos, cinco]\n },\n permanent: null,\n prettyName: 'Español',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_es);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/layout/layout-es.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","LayoutEs","sonLas","1","y","7","menos","cinco","9","diez","8","cuarto","10","veinte","veinticinco","code","getHour","time","hour","getHours","getMinutes","hours","0,12","1,13","2,14","2","3,15","4,16","3","5,17","6,18","4","7,19","8,20","5","9,21","10,22","6","11,23","letters","minutes","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","prettyName","version","$","fritteli","uhr","register"],"mappings":"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","file":"lib/layout_es.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 7);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst esLa: WordDefinition = {1: [1, 2, 6, 7]};\nconst sonLas: WordDefinition = {1: [2, 3, 4, 6, 7, 8]};\nconst y: WordDefinition = {7: [6]};\nconst menos: WordDefinition = {7: [7, 8, 9, 10, 11]};\nconst media: WordDefinition = {10: [1, 2, 3, 4, 5]};\nconst cinco: WordDefinition = {9: [7, 8, 9, 10, 11]};\nconst diez: WordDefinition = {8: [8, 9, 10, 11]};\nconst cuarto: WordDefinition = {10: [6, 7, 8, 9, 10, 11]};\nconst veinte: WordDefinition = {8: [2, 3, 4, 5, 6, 7]};\nconst veinticinco: WordDefinition = {9: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]};\n\nexport const LayoutEs: Layout = {\n code: 'es',\n getHour: (time: Date): number => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n\n hours: {\n '0,12': [sonLas, {7: [1, 2, 3, 4]}],\n '1,13': [esLa, {1: [9, 10, 11]}],\n '2,14': [sonLas, {2: [1, 2, 3]}],\n '3,15': [sonLas, {2: [5, 6, 7, 8]}],\n '4,16': [sonLas, {3: [1, 2, 3, 4, 5, 6]}],\n '5,17': [sonLas, {3: [7, 8, 9, 10, 11]}],\n '6,18': [sonLas, {4: [1, 2, 3, 4]}],\n '7,19': [sonLas, {4: [6, 7, 8, 9, 10]}],\n '8,20': [sonLas, {5: [1, 2, 3, 4]}],\n '9,21': [sonLas, {5: [5, 6, 7, 8, 9]}],\n '10,22': [sonLas, {6: [3, 4, 5, 6]}],\n '11,23': [sonLas, {6: [8, 9, 10, 11]}]\n },\n letters: [\n 'ESONELASUNA',\n 'DOSITRESORE',\n 'CUATROCINCO',\n 'SEISASIETEN',\n 'OCHONUEVEYO',\n 'LADIEZSONCE',\n 'DOCELYMENOS',\n 'OVEINTEDIEZ',\n 'VEINTICINCO',\n 'MEDIACUARTO'\n ],\n minutes: {\n '5,6,7,8,9': [y, cinco],\n '10,11,12,13,14': [y, diez],\n '15,16,17,18,19': [y, cuarto],\n '20,21,22,23,24': [y, veinte],\n '25,26,27,28,29': [y, veinticinco],\n '30,31,32,33,34': [y, media],\n '35,36,37,38,39': [menos, veinticinco],\n '40,41,42,43,44': [menos, veinte],\n '45,46,47,48,49': [menos, cuarto],\n '50,51,52,53,54': [menos, diez],\n '55,56,57,58,59': [menos, cinco]\n },\n permanent: null,\n prettyName: 'Español',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutEs);\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/dist/lib/layout_fr.js b/dist/lib/layout_fr.js
index ed3938d..ba01b9f 100644
--- a/dist/lib/layout_fr.js
+++ b/dist/lib/layout_fr.js
@@ -1,2 +1,2 @@
-!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=8)}({8:function(e,t,r){"use strict";r.r(t),r.d(t,"Layout_fr",function(){return s});var n={8:[1,2]},o={7:[1,2,3,4,5]},u={6:[6,7,8,9,10,11]},i={9:[7,8,9,10]},f={7:[9,10,11]},a={8:[4,5,6,7,8]},c={9:[1,2,3,4,5]},l={9:[1,2,3,4,5,6,7,8,9,10]},s={code:"fr",getHour:function(e){var t=e.getHours();return e.getMinutes()>=35?(t+1)%24:t},hours:{0:{5:[6,7,8,9,10,11]},"1,13":[{3:[5,6,7]},u],"2,14":[{1:[8,9,10,11]},u],"3,15":[{2:[7,8,9,10,11]},u],"4,16":[{2:[1,2,3,4,5,6]},u],"5,17":[{4:[8,9,10,11]},u],"6,18":[{4:[5,6,7]},u],"7,19":[{3:[8,9,10,11]},u],"8,20":[{4:[1,2,3,4]},u],"9,21":[{3:[1,2,3,4]},u],"10,22":[{5:[3,4,5]},u],"11,23":[{6:[1,2,3,4]},u],12:{5:[1,2,3,4]}},letters:["ILNESTODEUX","QUATRETROIS","NEUFUNESEPT","HUITSIXCINQ","MIDIXMINUIT","ONZERHEURES","MOINSOLEDIX","ETRQUARTPMD","VINGT-CINQU","ETSDEMIEPAM"],minutes:{"5,6,7,8,9":i,"10,11,12,13,14":f,"15,16,17,18,19":[n,a],"20,21,22,23,24":c,"25,26,27,28,29":l,"30,31,32,33,34":[n,{10:[4,5,6,7,8]}],"35,36,37,38,39":[o,l],"40,41,42,43,44":[o,c],"45,46,47,48,49":[o,{7:[7,8]},a],"50,51,52,53,54":[o,f],"55,56,57,58,59":[o,i]},permanent:{1:[1,2,4,5,6]},prettyName:"Français",version:2};$.fritteli.uhr.register(s)}});
+!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=8)}({8:function(e,t,r){"use strict";r.r(t),r.d(t,"LayoutFr",function(){return s});var n={8:[1,2]},o={7:[1,2,3,4,5]},u={6:[6,7,8,9,10,11]},i={9:[7,8,9,10]},f={7:[9,10,11]},a={8:[4,5,6,7,8]},c={9:[1,2,3,4,5]},l={9:[1,2,3,4,5,6,7,8,9,10]},s={code:"fr",getHour:function(e){var t=e.getHours();return e.getMinutes()>=35?(t+1)%24:t},hours:{0:{5:[6,7,8,9,10,11]},"1,13":[{3:[5,6,7]},u],"2,14":[{1:[8,9,10,11]},u],"3,15":[{2:[7,8,9,10,11]},u],"4,16":[{2:[1,2,3,4,5,6]},u],"5,17":[{4:[8,9,10,11]},u],"6,18":[{4:[5,6,7]},u],"7,19":[{3:[8,9,10,11]},u],"8,20":[{4:[1,2,3,4]},u],"9,21":[{3:[1,2,3,4]},u],"10,22":[{5:[3,4,5]},u],"11,23":[{6:[1,2,3,4]},u],12:{5:[1,2,3,4]}},letters:["ILNESTODEUX","QUATRETROIS","NEUFUNESEPT","HUITSIXCINQ","MIDIXMINUIT","ONZERHEURES","MOINSOLEDIX","ETRQUARTPMD","VINGT-CINQU","ETSDEMIEPAM"],minutes:{"5,6,7,8,9":i,"10,11,12,13,14":f,"15,16,17,18,19":[n,a],"20,21,22,23,24":c,"25,26,27,28,29":l,"30,31,32,33,34":[n,{10:[4,5,6,7,8]}],"35,36,37,38,39":[o,l],"40,41,42,43,44":[o,c],"45,46,47,48,49":[o,{7:[7,8]},a],"50,51,52,53,54":[o,f],"55,56,57,58,59":[o,i]},permanent:{1:[1,2,4,5,6]},prettyName:"Français",version:2};$.fritteli.uhr.register(s)}});
//# sourceMappingURL=layout_fr.js.map
\ No newline at end of file
diff --git a/dist/lib/layout_fr.js.map b/dist/lib/layout_fr.js.map
index 038b5e0..015316b 100644
--- a/dist/lib/layout_fr.js.map
+++ b/dist/lib/layout_fr.js.map
@@ -1 +1 @@
-{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/layout/layout-fr.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","Layout_fr","et","8","moins","7","heures","6","cinq","9","dix","quart","vingt","vingtcinq","code","getHour","time","hour","getHours","getMinutes","hours","0","5","1,13","3","2,14","1","3,15","2","4,16","5,17","4","6,18","7,19","8,20","9,21","10,22","11,23","12","letters","minutes","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","10","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","prettyName","version","$","fritteli","uhr","register"],"mappings":"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","file":"lib/layout_fr.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 8);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst il_est: WordDefinition = {1: [1, 2, 4, 5, 6]};\nconst et: WordDefinition = {8: [1, 2]};\nconst moins: WordDefinition = {7: [1, 2, 3, 4, 5]};\nconst demie: WordDefinition = {10: [4, 5, 6, 7, 8]};\nconst heures: WordDefinition = {6: [6, 7, 8, 9, 10, 11]};\nconst le: WordDefinition = {7: [7, 8]};\nconst cinq: WordDefinition = {9: [7, 8, 9, 10]};\nconst dix: WordDefinition = {7: [9, 10, 11]};\nconst quart: WordDefinition = {8: [4, 5, 6, 7, 8]};\nconst vingt: WordDefinition = {9: [1, 2, 3, 4, 5]};\nconst vingtcinq: WordDefinition = {9: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]};\n\nexport const Layout_fr: Layout = {\n code: 'fr',\n getHour: (time: Date) => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n hours: {\n '0': {5: [6, 7, 8, 9, 10, 11]},\n '1,13': [\n {3: [5, 6, 7]},\n heures\n ],\n '2,14': [\n {1: [8, 9, 10, 11]},\n heures\n ],\n '3,15': [\n {2: [7, 8, 9, 10, 11]},\n heures\n ],\n '4,16': [\n {2: [1, 2, 3, 4, 5, 6]},\n heures\n ],\n '5,17': [\n {4: [8, 9, 10, 11]},\n heures\n ],\n '6,18': [\n {4: [5, 6, 7]},\n heures\n ],\n '7,19': [\n {3: [8, 9, 10, 11]},\n heures\n ],\n '8,20': [\n {4: [1, 2, 3, 4]},\n heures\n ],\n '9,21': [\n {3: [1, 2, 3, 4]},\n heures\n ],\n '10,22': [\n {5: [3, 4, 5]},\n heures\n ],\n '11,23': [\n {6: [1, 2, 3, 4]},\n heures\n ],\n '12': {5: [1, 2, 3, 4]}\n },\n letters: [\n 'ILNESTODEUX',\n 'QUATRETROIS',\n 'NEUFUNESEPT',\n 'HUITSIXCINQ',\n 'MIDIXMINUIT',\n 'ONZERHEURES',\n 'MOINSOLEDIX',\n 'ETRQUARTPMD',\n 'VINGT-CINQU',\n 'ETSDEMIEPAM'\n ],\n minutes: {\n '5,6,7,8,9': cinq,\n '10,11,12,13,14': dix,\n '15,16,17,18,19': [et, quart],\n '20,21,22,23,24': vingt,\n '25,26,27,28,29': vingtcinq,\n '30,31,32,33,34': [et, demie],\n '35,36,37,38,39': [moins, vingtcinq],\n '40,41,42,43,44': [moins, vingt],\n '45,46,47,48,49': [moins, le, quart],\n '50,51,52,53,54': [moins, dix],\n '55,56,57,58,59': [moins, cinq]\n },\n permanent: il_est,\n prettyName: 'Français',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_fr);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/layout/layout-fr.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","LayoutFr","et","8","moins","7","heures","6","cinq","9","dix","quart","vingt","vingtcinq","code","getHour","time","hour","getHours","getMinutes","hours","0","5","1,13","3","2,14","1","3,15","2","4,16","5,17","4","6,18","7,19","8,20","9,21","10,22","11,23","12","letters","minutes","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","10","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","prettyName","version","$","fritteli","uhr","register"],"mappings":"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","file":"lib/layout_fr.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 8);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst ilEst: WordDefinition = {1: [1, 2, 4, 5, 6]};\nconst et: WordDefinition = {8: [1, 2]};\nconst moins: WordDefinition = {7: [1, 2, 3, 4, 5]};\nconst demie: WordDefinition = {10: [4, 5, 6, 7, 8]};\nconst heures: WordDefinition = {6: [6, 7, 8, 9, 10, 11]};\nconst le: WordDefinition = {7: [7, 8]};\nconst cinq: WordDefinition = {9: [7, 8, 9, 10]};\nconst dix: WordDefinition = {7: [9, 10, 11]};\nconst quart: WordDefinition = {8: [4, 5, 6, 7, 8]};\nconst vingt: WordDefinition = {9: [1, 2, 3, 4, 5]};\nconst vingtcinq: WordDefinition = {9: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]};\n\nexport const LayoutFr: Layout = {\n code: 'fr',\n getHour: (time: Date): number => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n hours: {\n '0': {5: [6, 7, 8, 9, 10, 11]},\n '1,13': [\n {3: [5, 6, 7]},\n heures\n ],\n '2,14': [\n {1: [8, 9, 10, 11]},\n heures\n ],\n '3,15': [\n {2: [7, 8, 9, 10, 11]},\n heures\n ],\n '4,16': [\n {2: [1, 2, 3, 4, 5, 6]},\n heures\n ],\n '5,17': [\n {4: [8, 9, 10, 11]},\n heures\n ],\n '6,18': [\n {4: [5, 6, 7]},\n heures\n ],\n '7,19': [\n {3: [8, 9, 10, 11]},\n heures\n ],\n '8,20': [\n {4: [1, 2, 3, 4]},\n heures\n ],\n '9,21': [\n {3: [1, 2, 3, 4]},\n heures\n ],\n '10,22': [\n {5: [3, 4, 5]},\n heures\n ],\n '11,23': [\n {6: [1, 2, 3, 4]},\n heures\n ],\n '12': {5: [1, 2, 3, 4]}\n },\n letters: [\n 'ILNESTODEUX',\n 'QUATRETROIS',\n 'NEUFUNESEPT',\n 'HUITSIXCINQ',\n 'MIDIXMINUIT',\n 'ONZERHEURES',\n 'MOINSOLEDIX',\n 'ETRQUARTPMD',\n 'VINGT-CINQU',\n 'ETSDEMIEPAM'\n ],\n minutes: {\n '5,6,7,8,9': cinq,\n '10,11,12,13,14': dix,\n '15,16,17,18,19': [et, quart],\n '20,21,22,23,24': vingt,\n '25,26,27,28,29': vingtcinq,\n '30,31,32,33,34': [et, demie],\n '35,36,37,38,39': [moins, vingtcinq],\n '40,41,42,43,44': [moins, vingt],\n '45,46,47,48,49': [moins, le, quart],\n '50,51,52,53,54': [moins, dix],\n '55,56,57,58,59': [moins, cinq]\n },\n permanent: ilEst,\n prettyName: 'Français',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutFr);\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/dist/lib/layout_it.js b/dist/lib/layout_it.js
index 2cade10..92172b9 100644
--- a/dist/lib/layout_it.js
+++ b/dist/lib/layout_it.js
@@ -1,2 +1,2 @@
-!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=9)}({9:function(e,t,r){"use strict";r.r(t),r.d(t,"Layout_it",function(){return s});var n={1:[1,2,3,4,6,7]},o={8:[1]},u={7:[8,9,10,11]},i={9:[6,7,8,9,10,11]},f={10:[1,2,3,4,5]},l={8:[3,4,6,7,8,9,10,11]},a={9:[1,2,3,4,5]},c={9:[1,2,3,4,5,6,7,8,9,10,11]},s={code:"it",getHour:function(e){var t=e.getHours();return e.getMinutes()>=35?(t+1)%24:t},hours:{"0,12":[n,{5:[1,2,3,4,5,6]}],"1,13":[{2:[1,3,4]},{2:[5,6,7]}],"2,14":[n,{2:[9,10,11]}],"3,15":[n,{3:[1,2,3]}],"4,16":[n,{6:[1,2,3,4,5,6,7]}],"5,17":[n,{7:[1,2,3,4,5,6]}],"6,18":[n,{6:[9,10,11]}],"7,19":[n,{5:[7,8,9,10,11]}],"8,20":[n,{3:[4,5,6,7]}],"9,21":[n,{3:[8,9,10,11]}],"10,22":[n,{4:[1,2,3,4,5]}],"11,23":[n,{4:[6,7,8,9,10,11]}]},letters:["SONORLEBORE","ÈRL'UNASDUE","TREOTTONOVE","DIECIUNDICI","DODICISETTE","QUATTROCSEI","CINQUEAMENO","ECUNOQUARTO","VENTICINQUE","DIECIPMEZZA"],minutes:{"5,6,7,8,9":[o,i],"10,11,12,13,14":[o,f],"15,16,17,18,19":[o,l],"20,21,22,23,24":[o,a],"25,26,27,28,29":[o,c],"30,31,32,33,34":[o,{10:[7,8,9,10,11]}],"35,36,37,38,39":[u,c],"40,41,42,43,44":[u,a],"45,46,47,48,49":[u,l],"50,51,52,53,54":[u,f],"55,56,57,58,59":[u,i]},permanent:null,prettyName:"Italiano",version:2};$.fritteli.uhr.register(s)}});
+!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=9)}({9:function(e,t,r){"use strict";r.r(t),r.d(t,"LayoutIt",function(){return s});var n={1:[1,2,3,4,6,7]},o={8:[1]},u={7:[8,9,10,11]},i={9:[6,7,8,9,10,11]},f={10:[1,2,3,4,5]},l={8:[3,4,6,7,8,9,10,11]},a={9:[1,2,3,4,5]},c={9:[1,2,3,4,5,6,7,8,9,10,11]},s={code:"it",getHour:function(e){var t=e.getHours();return e.getMinutes()>=35?(t+1)%24:t},hours:{"0,12":[n,{5:[1,2,3,4,5,6]}],"1,13":[{2:[1,3,4]},{2:[5,6,7]}],"2,14":[n,{2:[9,10,11]}],"3,15":[n,{3:[1,2,3]}],"4,16":[n,{6:[1,2,3,4,5,6,7]}],"5,17":[n,{7:[1,2,3,4,5,6]}],"6,18":[n,{6:[9,10,11]}],"7,19":[n,{5:[7,8,9,10,11]}],"8,20":[n,{3:[4,5,6,7]}],"9,21":[n,{3:[8,9,10,11]}],"10,22":[n,{4:[1,2,3,4,5]}],"11,23":[n,{4:[6,7,8,9,10,11]}]},letters:["SONORLEBORE","ÈRL'UNASDUE","TREOTTONOVE","DIECIUNDICI","DODICISETTE","QUATTROCSEI","CINQUEAMENO","ECUNOQUARTO","VENTICINQUE","DIECIPMEZZA"],minutes:{"5,6,7,8,9":[o,i],"10,11,12,13,14":[o,f],"15,16,17,18,19":[o,l],"20,21,22,23,24":[o,a],"25,26,27,28,29":[o,c],"30,31,32,33,34":[o,{10:[7,8,9,10,11]}],"35,36,37,38,39":[u,c],"40,41,42,43,44":[u,a],"45,46,47,48,49":[u,l],"50,51,52,53,54":[u,f],"55,56,57,58,59":[u,i]},permanent:null,prettyName:"Italiano",version:2};$.fritteli.uhr.register(s)}});
//# sourceMappingURL=layout_it.js.map
\ No newline at end of file
diff --git a/dist/lib/layout_it.js.map b/dist/lib/layout_it.js.map
index e76c011..880c746 100644
--- a/dist/lib/layout_it.js.map
+++ b/dist/lib/layout_it.js.map
@@ -1 +1 @@
-{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/layout/layout-it.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","Layout_it","sono_le","1","e","8","meno","7","cinque","9","dieci","10","un_quarto","venti","venticinque","code","getHour","time","hour","getHours","getMinutes","hours","0,12","5","1,13","2","2,14","3,15","3","4,16","6","5,17","6,18","7,19","8,20","9,21","10,22","4","11,23","letters","minutes","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","prettyName","version","$","fritteli","uhr","register"],"mappings":"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","file":"lib/layout_it.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 9);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst sono_le: WordDefinition = {1: [1, 2, 3, 4, 6, 7]};\nconst e_l: WordDefinition = {2: [1, 3, 4]};\nconst e: WordDefinition = {8: [1]};\nconst meno: WordDefinition = {7: [8, 9, 10, 11]};\nconst mezza: WordDefinition = {10: [7, 8, 9, 10, 11]};\nconst cinque: WordDefinition = {9: [6, 7, 8, 9, 10, 11]};\nconst dieci: WordDefinition = {10: [1, 2, 3, 4, 5]};\nconst un_quarto: WordDefinition = {8: [3, 4, 6, 7, 8, 9, 10, 11]};\nconst venti: WordDefinition = {9: [1, 2, 3, 4, 5]};\nconst venticinque: WordDefinition = {9: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]};\n\nexport const Layout_it: Layout = {\n code: 'it',\n getHour: (time: Date) => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n hours: {\n '0,12': [sono_le, {5: [1, 2, 3, 4, 5, 6]}],\n '1,13': [e_l, {2: [5, 6, 7]}],\n '2,14': [sono_le, {2: [9, 10, 11]}],\n '3,15': [sono_le, {3: [1, 2, 3]}],\n '4,16': [sono_le, {6: [1, 2, 3, 4, 5, 6, 7]}],\n '5,17': [sono_le, {7: [1, 2, 3, 4, 5, 6]}],\n '6,18': [sono_le, {6: [9, 10, 11]}],\n '7,19': [sono_le, {5: [7, 8, 9, 10, 11]}],\n '8,20': [sono_le, {3: [4, 5, 6, 7]}],\n '9,21': [sono_le, {3: [8, 9, 10, 11]}],\n '10,22': [sono_le, {4: [1, 2, 3, 4, 5]}],\n '11,23': [sono_le, {4: [6, 7, 8, 9, 10, 11]}]\n },\n letters: [\n 'SONORLEBORE',\n 'ÈRL\\'UNASDUE',\n 'TREOTTONOVE',\n 'DIECIUNDICI',\n 'DODICISETTE',\n 'QUATTROCSEI',\n 'CINQUEAMENO',\n 'ECUNOQUARTO',\n 'VENTICINQUE',\n 'DIECIPMEZZA'\n ],\n minutes: {\n '5,6,7,8,9': [e, cinque],\n '10,11,12,13,14': [e, dieci],\n '15,16,17,18,19': [e, un_quarto],\n '20,21,22,23,24': [e, venti],\n '25,26,27,28,29': [e, venticinque],\n '30,31,32,33,34': [e, mezza],\n '35,36,37,38,39': [meno, venticinque],\n '40,41,42,43,44': [meno, venti],\n '45,46,47,48,49': [meno, un_quarto],\n '50,51,52,53,54': [meno, dieci],\n '55,56,57,58,59': [meno, cinque]\n },\n permanent: null,\n prettyName: 'Italiano',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_it);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/layout/layout-it.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","LayoutIt","sonoLe","1","e","8","meno","7","cinque","9","dieci","10","unQuarto","venti","venticinque","code","getHour","time","hour","getHours","getMinutes","hours","0,12","5","1,13","2","2,14","3,15","3","4,16","6","5,17","6,18","7,19","8,20","9,21","10,22","4","11,23","letters","minutes","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","prettyName","version","$","fritteli","uhr","register"],"mappings":"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","file":"lib/layout_it.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 9);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst sonoLe: WordDefinition = {1: [1, 2, 3, 4, 6, 7]};\nconst eL: WordDefinition = {2: [1, 3, 4]};\nconst e: WordDefinition = {8: [1]};\nconst meno: WordDefinition = {7: [8, 9, 10, 11]};\nconst mezza: WordDefinition = {10: [7, 8, 9, 10, 11]};\nconst cinque: WordDefinition = {9: [6, 7, 8, 9, 10, 11]};\nconst dieci: WordDefinition = {10: [1, 2, 3, 4, 5]};\nconst unQuarto: WordDefinition = {8: [3, 4, 6, 7, 8, 9, 10, 11]};\nconst venti: WordDefinition = {9: [1, 2, 3, 4, 5]};\nconst venticinque: WordDefinition = {9: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]};\n\nexport const LayoutIt: Layout = {\n code: 'it',\n getHour: (time: Date): number => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n hours: {\n '0,12': [sonoLe, {5: [1, 2, 3, 4, 5, 6]}],\n '1,13': [eL, {2: [5, 6, 7]}],\n '2,14': [sonoLe, {2: [9, 10, 11]}],\n '3,15': [sonoLe, {3: [1, 2, 3]}],\n '4,16': [sonoLe, {6: [1, 2, 3, 4, 5, 6, 7]}],\n '5,17': [sonoLe, {7: [1, 2, 3, 4, 5, 6]}],\n '6,18': [sonoLe, {6: [9, 10, 11]}],\n '7,19': [sonoLe, {5: [7, 8, 9, 10, 11]}],\n '8,20': [sonoLe, {3: [4, 5, 6, 7]}],\n '9,21': [sonoLe, {3: [8, 9, 10, 11]}],\n '10,22': [sonoLe, {4: [1, 2, 3, 4, 5]}],\n '11,23': [sonoLe, {4: [6, 7, 8, 9, 10, 11]}]\n },\n letters: [\n 'SONORLEBORE',\n 'ÈRL\\'UNASDUE',\n 'TREOTTONOVE',\n 'DIECIUNDICI',\n 'DODICISETTE',\n 'QUATTROCSEI',\n 'CINQUEAMENO',\n 'ECUNOQUARTO',\n 'VENTICINQUE',\n 'DIECIPMEZZA'\n ],\n minutes: {\n '5,6,7,8,9': [e, cinque],\n '10,11,12,13,14': [e, dieci],\n '15,16,17,18,19': [e, unQuarto],\n '20,21,22,23,24': [e, venti],\n '25,26,27,28,29': [e, venticinque],\n '30,31,32,33,34': [e, mezza],\n '35,36,37,38,39': [meno, venticinque],\n '40,41,42,43,44': [meno, venti],\n '45,46,47,48,49': [meno, unQuarto],\n '50,51,52,53,54': [meno, dieci],\n '55,56,57,58,59': [meno, cinque]\n },\n permanent: null,\n prettyName: 'Italiano',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutIt);\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/dist/lib/layout_nl.js b/dist/lib/layout_nl.js
index 5b53b76..4aa6061 100644
--- a/dist/lib/layout_nl.js
+++ b/dist/lib/layout_nl.js
@@ -1,2 +1,2 @@
-!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=10)}({10:function(e,t,r){"use strict";r.r(t),r.d(t,"Layout_nl",function(){return c});var n={3:[1,2,3,4]},o={2:[8,9,10,11]},u={4:[1,2,3,4]},i={1:[8,9,10,11]},f={2:[1,2,3,4]},l={3:[7,8,9,10,11]},c={code:"nl",getHour:function(e){var t=e.getHours();return e.getMinutes()>=20?(t+1)%24:t},hours:{"0,12":{10:[1,2,3,4,5,6]},"1,13":{5:[8,9,10]},"2,14":{6:[1,2,3,4]},"3,15":{6:[8,9,10,11]},"4,16":{7:[1,2,3,4]},"5,17":{7:[5,6,7,8]},"6,18":{7:[9,10,11]},"7,19":{8:[1,2,3,4,5]},"8,20":{9:[1,2,3,4]},"9,21":{8:[7,8,9,10,11]},"10,22":{9:[5,6,7,8]},"11,23":{9:[9,10,11]}},letters:["HETKISAVIJF","TIENBTZVOOR","OVERMEKWART","HALFSPWOVER","VOORTHGEENS","TWEEPVCDRIE","VIERVIJFZES","ZEVENONEGEN","ACHTTIENELF","TWAALFBFUUR"],minutes:{"0,1,2,3,4":{10:[9,10,11]},"5,6,7,8,9":[i,n],"10,11,12,13,14":[f,n],"15,16,17,18,19":[l,{4:[8,9,10,11]}],"20,21,22,23,24":[f,o,u],"25,26,27,28,29":[i,o,u],"30,31,32,33,34":u,"35,36,37,38,39":[i,n,u],"40,41,42,43,44":[f,n,u],"45,46,47,48,49":[l,{5:[1,2,3,4]}],"50,51,52,53,54":[f,o],"55,56,57,58,59":[i,o]},permanent:{1:[1,2,3,5,6]},prettyName:"Nederlands",version:2};$.fritteli.uhr.register(c)}});
+!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=10)}({10:function(e,t,r){"use strict";r.r(t),r.d(t,"LayoutNl",function(){return c});var n={3:[1,2,3,4]},o={2:[8,9,10,11]},u={4:[1,2,3,4]},i={1:[8,9,10,11]},f={2:[1,2,3,4]},l={3:[7,8,9,10,11]},c={code:"nl",getHour:function(e){var t=e.getHours();return e.getMinutes()>=20?(t+1)%24:t},hours:{"0,12":{10:[1,2,3,4,5,6]},"1,13":{5:[8,9,10]},"2,14":{6:[1,2,3,4]},"3,15":{6:[8,9,10,11]},"4,16":{7:[1,2,3,4]},"5,17":{7:[5,6,7,8]},"6,18":{7:[9,10,11]},"7,19":{8:[1,2,3,4,5]},"8,20":{9:[1,2,3,4]},"9,21":{8:[7,8,9,10,11]},"10,22":{9:[5,6,7,8]},"11,23":{9:[9,10,11]}},letters:["HETKISAVIJF","TIENBTZVOOR","OVERMEKWART","HALFSPWOVER","VOORTHGEENS","TWEEPVCDRIE","VIERVIJFZES","ZEVENONEGEN","ACHTTIENELF","TWAALFBFUUR"],minutes:{"0,1,2,3,4":{10:[9,10,11]},"5,6,7,8,9":[i,n],"10,11,12,13,14":[f,n],"15,16,17,18,19":[l,{4:[8,9,10,11]}],"20,21,22,23,24":[f,o,u],"25,26,27,28,29":[i,o,u],"30,31,32,33,34":u,"35,36,37,38,39":[i,n,u],"40,41,42,43,44":[f,n,u],"45,46,47,48,49":[l,{5:[1,2,3,4]}],"50,51,52,53,54":[f,o],"55,56,57,58,59":[i,o]},permanent:{1:[1,2,3,5,6]},prettyName:"Nederlands",version:2};$.fritteli.uhr.register(c)}});
//# sourceMappingURL=layout_nl.js.map
\ No newline at end of file
diff --git a/dist/lib/layout_nl.js.map b/dist/lib/layout_nl.js.map
index 78aa07e..96d477e 100644
--- a/dist/lib/layout_nl.js.map
+++ b/dist/lib/layout_nl.js.map
@@ -1 +1 @@
-{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/layout/layout-nl.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","Layout_nl","over1","3","voor1","2","half","4","vijf","1","tien","kwart","code","getHour","time","hour","getHours","getMinutes","hours","0,12","10","1,13","5","2,14","6","3,15","4,16","7","5,17","6,18","7,19","8","8,20","9","9,21","10,22","11,23","letters","minutes","0,1,2,3,4","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","prettyName","version","$","fritteli","uhr","register"],"mappings":"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","file":"lib/layout_nl.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 10);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst het_is: WordDefinition = {1: [1, 2, 3, 5, 6]};\nconst over1: WordDefinition = {3: [1, 2, 3, 4]};\nconst voor1: WordDefinition = {2: [8, 9, 10, 11]};\nconst over2: WordDefinition = {4: [8, 9, 10, 11]};\nconst voor2: WordDefinition = {5: [1, 2, 3, 4]};\nconst half: WordDefinition = {4: [1, 2, 3, 4]};\nconst vijf: WordDefinition = {1: [8, 9, 10, 11]};\nconst tien: WordDefinition = {2: [1, 2, 3, 4]};\nconst kwart: WordDefinition = {3: [7, 8, 9, 10, 11]};\nconst uur: WordDefinition = {10: [9, 10, 11]};\n\nexport const Layout_nl: Layout = {\n code: 'nl',\n getHour: (time: Date) => {\n const hour = time.getHours();\n if (time.getMinutes() >= 20) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n hours: {\n '0,12': {10: [1, 2, 3, 4, 5, 6]},\n '1,13': {5: [8, 9, 10]},\n '2,14': {6: [1, 2, 3, 4]},\n '3,15': {6: [8, 9, 10, 11]},\n '4,16': {7: [1, 2, 3, 4]},\n '5,17': {7: [5, 6, 7, 8]},\n '6,18': {7: [9, 10, 11]},\n '7,19': {8: [1, 2, 3, 4, 5]},\n '8,20': {9: [1, 2, 3, 4]},\n '9,21': {8: [7, 8, 9, 10, 11]},\n '10,22': {9: [5, 6, 7, 8]},\n '11,23': {9: [9, 10, 11]}\n },\n letters: [\n 'HETKISAVIJF',\n 'TIENBTZVOOR',\n 'OVERMEKWART',\n 'HALFSPWOVER',\n 'VOORTHGEENS',\n 'TWEEPVCDRIE',\n 'VIERVIJFZES',\n 'ZEVENONEGEN',\n 'ACHTTIENELF',\n 'TWAALFBFUUR'\n ],\n minutes: {\n '0,1,2,3,4': uur,\n '5,6,7,8,9': [vijf, over1],\n '10,11,12,13,14': [tien, over1],\n '15,16,17,18,19': [kwart, over2],\n '20,21,22,23,24': [tien, voor1, half],\n '25,26,27,28,29': [vijf, voor1, half],\n '30,31,32,33,34': half,\n '35,36,37,38,39': [vijf, over1, half],\n '40,41,42,43,44': [tien, over1, half],\n '45,46,47,48,49': [kwart, voor2],\n '50,51,52,53,54': [tien, voor1],\n '55,56,57,58,59': [vijf, voor1]\n },\n permanent: het_is,\n prettyName: 'Nederlands',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_nl);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/layout/layout-nl.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","LayoutNl","over1","3","voor1","2","half","4","vijf","1","tien","kwart","code","getHour","time","hour","getHours","getMinutes","hours","0,12","10","1,13","5","2,14","6","3,15","4,16","7","5,17","6,18","7,19","8","8,20","9","9,21","10,22","11,23","letters","minutes","0,1,2,3,4","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","prettyName","version","$","fritteli","uhr","register"],"mappings":"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","file":"lib/layout_nl.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 10);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst hetIs: WordDefinition = {1: [1, 2, 3, 5, 6]};\nconst over1: WordDefinition = {3: [1, 2, 3, 4]};\nconst voor1: WordDefinition = {2: [8, 9, 10, 11]};\nconst over2: WordDefinition = {4: [8, 9, 10, 11]};\nconst voor2: WordDefinition = {5: [1, 2, 3, 4]};\nconst half: WordDefinition = {4: [1, 2, 3, 4]};\nconst vijf: WordDefinition = {1: [8, 9, 10, 11]};\nconst tien: WordDefinition = {2: [1, 2, 3, 4]};\nconst kwart: WordDefinition = {3: [7, 8, 9, 10, 11]};\nconst uur: WordDefinition = {10: [9, 10, 11]};\n\nexport const LayoutNl: Layout = {\n code: 'nl',\n getHour: (time: Date): number => {\n const hour = time.getHours();\n if (time.getMinutes() >= 20) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n hours: {\n '0,12': {10: [1, 2, 3, 4, 5, 6]},\n '1,13': {5: [8, 9, 10]},\n '2,14': {6: [1, 2, 3, 4]},\n '3,15': {6: [8, 9, 10, 11]},\n '4,16': {7: [1, 2, 3, 4]},\n '5,17': {7: [5, 6, 7, 8]},\n '6,18': {7: [9, 10, 11]},\n '7,19': {8: [1, 2, 3, 4, 5]},\n '8,20': {9: [1, 2, 3, 4]},\n '9,21': {8: [7, 8, 9, 10, 11]},\n '10,22': {9: [5, 6, 7, 8]},\n '11,23': {9: [9, 10, 11]}\n },\n letters: [\n 'HETKISAVIJF',\n 'TIENBTZVOOR',\n 'OVERMEKWART',\n 'HALFSPWOVER',\n 'VOORTHGEENS',\n 'TWEEPVCDRIE',\n 'VIERVIJFZES',\n 'ZEVENONEGEN',\n 'ACHTTIENELF',\n 'TWAALFBFUUR'\n ],\n minutes: {\n '0,1,2,3,4': uur,\n '5,6,7,8,9': [vijf, over1],\n '10,11,12,13,14': [tien, over1],\n '15,16,17,18,19': [kwart, over2],\n '20,21,22,23,24': [tien, voor1, half],\n '25,26,27,28,29': [vijf, voor1, half],\n '30,31,32,33,34': half,\n '35,36,37,38,39': [vijf, over1, half],\n '40,41,42,43,44': [tien, over1, half],\n '45,46,47,48,49': [kwart, voor2],\n '50,51,52,53,54': [tien, voor1],\n '55,56,57,58,59': [vijf, voor1]\n },\n permanent: hetIs,\n prettyName: 'Nederlands',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutNl);\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/dist/lib/layout_pt.js b/dist/lib/layout_pt.js
index 2caaa16..94e4c85 100644
--- a/dist/lib/layout_pt.js
+++ b/dist/lib/layout_pt.js
@@ -1,2 +1,2 @@
-!function(e){var t={};function r(n){if(t[n])return t[n].exports;var u=t[n]={i:n,l:!1,exports:{}};return e[n].call(u.exports,u,u.exports,r),u.l=!0,u.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var u in e)r.d(n,u,function(t){return e[t]}.bind(null,u));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=11)}({11:function(e,t,r){"use strict";r.r(t),r.d(t,"Layout_pt",function(){return p});var n={1:[1]},u={1:[2,3,4]},o={7:[8]},i={10:[5]},f={7:[7,8,9,10,11]},l={10:[7,8,9,10,11]},c={10:[1,2,3]},a={9:[1,2,4,5,6,7,8,9]},s={8:[1,2,3,4,5]},p={code:"pt",getHour:function(e){var t=e.getHours();return e.getMinutes()>=35?(t+1)%24:t},hours:{0:[n,{6:[2,3,4,5,7,8,9,10,11]}],12:[n,{2:[1,2,3,4,6,7,8]}],"1,13":[n,{1:[5,6,7]}],"2,14":[u,{3:[1,2,3,4]}],"3,15":[u,{1:[8,9,10,11]}],"4,16":[u,{4:[1,2,3,4,5,6]}],"5,17":[u,{5:[1,2,3,4,5]}],"6,18":[u,{3:[4,5,6,7]}],"7,19":[u,{3:[7,8,9,10]}],"8,20":[u,{5:[5,6,7,8]}],"9,21":[u,{4:[8,9,10,11]}],"10,22":[u,{2:[9,10,11]}],"11,23":[u,{5:[8,9,10,11]}]},letters:["ÉSÃOUMATRÊS","MEIOLDIADEZ","DUASEISETEY","QUATROHNOVE","CINCOITONZE","ZMEIALNOITE","HORASYMENOS","VINTECAMEIA","UMVQUARTOPM","DEZOEYCINCO"],minutes:{"5,6,7,8,9":[o,l],"10,11,12,13,14":[o,c],"15,16,17,18,19":[o,a],"20,21,22,23,24":[o,s],"25,26,27,28,29":[o,s,i,l],"30,31,32,33,34":[o,{8:[8,9,10,11]}],"35,36,37,38,39":[f,s,i,l],"40,41,42,43,44":[f,s],"45,46,47,48,49":[f,a],"50,51,52,53,54":[f,c],"55,56,57,58,59":[f,l]},permanent:null,prettyName:"Português",version:2};$.fritteli.uhr.register(p)}});
+!function(e){var t={};function r(n){if(t[n])return t[n].exports;var u=t[n]={i:n,l:!1,exports:{}};return e[n].call(u.exports,u,u.exports,r),u.l=!0,u.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var u in e)r.d(n,u,function(t){return e[t]}.bind(null,u));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=11)}({11:function(e,t,r){"use strict";r.r(t),r.d(t,"LayoutPt",function(){return p});var n={1:[1]},u={1:[2,3,4]},o={7:[8]},i={10:[5]},f={7:[7,8,9,10,11]},l={10:[7,8,9,10,11]},c={10:[1,2,3]},a={9:[1,2,4,5,6,7,8,9]},s={8:[1,2,3,4,5]},p={code:"pt",getHour:function(e){var t=e.getHours();return e.getMinutes()>=35?(t+1)%24:t},hours:{0:[n,{6:[2,3,4,5,7,8,9,10,11]}],12:[n,{2:[1,2,3,4,6,7,8]}],"1,13":[n,{1:[5,6,7]}],"2,14":[u,{3:[1,2,3,4]}],"3,15":[u,{1:[8,9,10,11]}],"4,16":[u,{4:[1,2,3,4,5,6]}],"5,17":[u,{5:[1,2,3,4,5]}],"6,18":[u,{3:[4,5,6,7]}],"7,19":[u,{3:[7,8,9,10]}],"8,20":[u,{5:[5,6,7,8]}],"9,21":[u,{4:[8,9,10,11]}],"10,22":[u,{2:[9,10,11]}],"11,23":[u,{5:[8,9,10,11]}]},letters:["ÉSÃOUMATRÊS","MEIOLDIADEZ","DUASEISETEY","QUATROHNOVE","CINCOITONZE","ZMEIALNOITE","HORASYMENOS","VINTECAMEIA","UMVQUARTOPM","DEZOEYCINCO"],minutes:{"5,6,7,8,9":[o,l],"10,11,12,13,14":[o,c],"15,16,17,18,19":[o,a],"20,21,22,23,24":[o,s],"25,26,27,28,29":[o,s,i,l],"30,31,32,33,34":[o,{8:[8,9,10,11]}],"35,36,37,38,39":[f,s,i,l],"40,41,42,43,44":[f,s],"45,46,47,48,49":[f,a],"50,51,52,53,54":[f,c],"55,56,57,58,59":[f,l]},permanent:null,prettyName:"Português",version:2};$.fritteli.uhr.register(p)}});
//# sourceMappingURL=layout_pt.js.map
\ No newline at end of file
diff --git a/dist/lib/layout_pt.js.map b/dist/lib/layout_pt.js.map
index 5d953e6..dc9464a 100644
--- a/dist/lib/layout_pt.js.map
+++ b/dist/lib/layout_pt.js.map
@@ -1 +1 @@
-{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/layout/layout-pt.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","Layout_pt","e_","1","sao","e1","7","e2","10","menos","cinco","dez","um_quarto","9","vinte","8","code","getHour","time","hour","getHours","getMinutes","hours","0","6","12","2","1,13","2,14","3","3,15","4,16","4","5,17","5","6,18","7,19","8,20","9,21","10,22","11,23","letters","minutes","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","prettyName","version","$","fritteli","uhr","register"],"mappings":"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","file":"lib/layout_pt.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 11);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst e_: WordDefinition = {1: [1]};\nconst sao: WordDefinition = {1: [2, 3, 4]};\nconst e1: WordDefinition = {7: [8]};\nconst e2: WordDefinition = {10: [5]};\nconst menos: WordDefinition = {7: [7, 8, 9, 10, 11]};\nconst meia: WordDefinition = {8: [8, 9, 10, 11]};\nconst cinco: WordDefinition = {10: [7, 8, 9, 10, 11]};\nconst dez: WordDefinition = {10: [1, 2, 3]};\nconst um_quarto: WordDefinition = {9: [1, 2, 4, 5, 6, 7, 8, 9]};\nconst vinte: WordDefinition = {8: [1, 2, 3, 4, 5]};\n\nexport const Layout_pt: Layout = {\n code: 'pt',\n getHour: (time: Date) => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n hours: {\n '0': [e_, {'6': [2, 3, 4, 5, 7, 8, 9, 10, 11]}],\n '12': [e_, {'2': [1, 2, 3, 4, 6, 7, 8]}],\n '1,13': [e_, {'1': [5, 6, 7]}],\n '2,14': [sao, {'3': [1, 2, 3, 4]}],\n '3,15': [sao, {'1': [8, 9, 10, 11]}],\n '4,16': [sao, {'4': [1, 2, 3, 4, 5, 6]}],\n '5,17': [sao, {'5': [1, 2, 3, 4, 5]}],\n '6,18': [sao, {'3': [4, 5, 6, 7]}],\n '7,19': [sao, {'3': [7, 8, 9, 10]}],\n '8,20': [sao, {'5': [5, 6, 7, 8]}],\n '9,21': [sao, {'4': [8, 9, 10, 11]}],\n '10,22': [sao, {'2': [9, 10, 11]}],\n '11,23': [sao, {'5': [8, 9, 10, 11]}]\n },\n letters: [\n 'ÉSÃOUMATRÊS',\n 'MEIOLDIADEZ',\n 'DUASEISETEY',\n 'QUATROHNOVE',\n 'CINCOITONZE',\n 'ZMEIALNOITE',\n 'HORASYMENOS',\n 'VINTECAMEIA',\n 'UMVQUARTOPM',\n 'DEZOEYCINCO'\n ],\n minutes: {\n '5,6,7,8,9': [e1, cinco],\n '10,11,12,13,14': [e1, dez],\n '15,16,17,18,19': [e1, um_quarto],\n '20,21,22,23,24': [e1, vinte],\n '25,26,27,28,29': [e1, vinte, e2, cinco],\n '30,31,32,33,34': [e1, meia],\n '35,36,37,38,39': [menos, vinte, e2, cinco],\n '40,41,42,43,44': [menos, vinte],\n '45,46,47,48,49': [menos, um_quarto],\n '50,51,52,53,54': [menos, dez],\n '55,56,57,58,59': [menos, cinco]\n },\n permanent: null,\n prettyName: 'Português',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_pt);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/layout/layout-pt.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","LayoutPt","e","1","sao","e1","7","e2","10","menos","cinco","dez","umQuarto","9","vinte","8","code","getHour","time","hour","getHours","getMinutes","hours","0","6","12","2","1,13","2,14","3","3,15","4,16","4","5,17","5","6,18","7,19","8,20","9,21","10,22","11,23","letters","minutes","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","prettyName","version","$","fritteli","uhr","register"],"mappings":"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","file":"lib/layout_pt.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 11);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst e: WordDefinition = {1: [1]};\nconst sao: WordDefinition = {1: [2, 3, 4]};\nconst e1: WordDefinition = {7: [8]};\nconst e2: WordDefinition = {10: [5]};\nconst menos: WordDefinition = {7: [7, 8, 9, 10, 11]};\nconst meia: WordDefinition = {8: [8, 9, 10, 11]};\nconst cinco: WordDefinition = {10: [7, 8, 9, 10, 11]};\nconst dez: WordDefinition = {10: [1, 2, 3]};\nconst umQuarto: WordDefinition = {9: [1, 2, 4, 5, 6, 7, 8, 9]};\nconst vinte: WordDefinition = {8: [1, 2, 3, 4, 5]};\n\nexport const LayoutPt: Layout = {\n code: 'pt',\n getHour: (time: Date): number => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n hours: {\n '0': [e, {'6': [2, 3, 4, 5, 7, 8, 9, 10, 11]}],\n '12': [e, {'2': [1, 2, 3, 4, 6, 7, 8]}],\n '1,13': [e, {'1': [5, 6, 7]}],\n '2,14': [sao, {'3': [1, 2, 3, 4]}],\n '3,15': [sao, {'1': [8, 9, 10, 11]}],\n '4,16': [sao, {'4': [1, 2, 3, 4, 5, 6]}],\n '5,17': [sao, {'5': [1, 2, 3, 4, 5]}],\n '6,18': [sao, {'3': [4, 5, 6, 7]}],\n '7,19': [sao, {'3': [7, 8, 9, 10]}],\n '8,20': [sao, {'5': [5, 6, 7, 8]}],\n '9,21': [sao, {'4': [8, 9, 10, 11]}],\n '10,22': [sao, {'2': [9, 10, 11]}],\n '11,23': [sao, {'5': [8, 9, 10, 11]}]\n },\n letters: [\n 'ÉSÃOUMATRÊS',\n 'MEIOLDIADEZ',\n 'DUASEISETEY',\n 'QUATROHNOVE',\n 'CINCOITONZE',\n 'ZMEIALNOITE',\n 'HORASYMENOS',\n 'VINTECAMEIA',\n 'UMVQUARTOPM',\n 'DEZOEYCINCO'\n ],\n minutes: {\n '5,6,7,8,9': [e1, cinco],\n '10,11,12,13,14': [e1, dez],\n '15,16,17,18,19': [e1, umQuarto],\n '20,21,22,23,24': [e1, vinte],\n '25,26,27,28,29': [e1, vinte, e2, cinco],\n '30,31,32,33,34': [e1, meia],\n '35,36,37,38,39': [menos, vinte, e2, cinco],\n '40,41,42,43,44': [menos, vinte],\n '45,46,47,48,49': [menos, umQuarto],\n '50,51,52,53,54': [menos, dez],\n '55,56,57,58,59': [menos, cinco]\n },\n permanent: null,\n prettyName: 'Português',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutPt);\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/dist/lib/uhr.bundle.js b/dist/lib/uhr.bundle.js
index 604481b..2008eee 100644
--- a/dist/lib/uhr.bundle.js
+++ b/dist/lib/uhr.bundle.js
@@ -1,2 +1,2 @@
-!function(t){var e={};function n(i){if(e[i])return e[i].exports;var o=e[i]={i:i,l:!1,exports:{}};return t[i].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(i,o,function(e){return t[e]}.bind(null,o));return i},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=13)}([function(t,e){t.exports=Cookies},function(t,e){t.exports=jQuery},function(t,e,n){"use strict";n.r(e),n.d(e,"Layout_de",function(){return h});var i={4:[8,9,10,11]},o={4:[1,2,3]},r={5:[1,2,3,4]},s={1:[8,9,10,11]},u={2:[1,2,3,4]},a={2:[5,6,7,8,9,10,11]},h={code:"de",hours:{"0,12":{9:[7,8,9,10,11]},"1,13":{6:[1,2,3,4]},"2,14":{6:[8,9,10,11]},"3,15":{7:[1,2,3,4]},"4,16":{7:[8,9,10,11]},"5,17":{5:[8,9,10,11]},"6,18":{8:[1,2,3,4,5]},"7,19":{9:[1,2,3,4,5,6]},"8,20":{8:[8,9,10,11]},"9,21":{10:[4,5,6,7]},"10,22":{10:[1,2,3,4]},"11,23":{5:[6,7,8]}},letters:["ESKISTAFÜNF","ZEHNZWANZIG","DREIVIERTEL","VORFUNKNACH","HALBAELFÜNF","EINSXAMZWEI","DREIPMJVIER","SECHSNLACHT","SIEBENZWÖLF","ZEHNEUNKUHR"],minutes:{"0,1,2,3,4":{10:[9,10,11]},"5,6,7,8,9":[s,i],"10,11,12,13,14":[u,i],"15,16,17,18,19":[{3:[5,6,7,8,9,10,11]},i],"20,21,22,23,24":[a,i],"25,26,27,28,29":[s,o,r],"30,31,32,33,34":r,"35,36,37,38,39":[s,i,r],"40,41,42,43,44":[a,o],"45,46,47,48,49":{3:[1,2,3,4,5,6,7,8,9,10,11]},"50,51,52,53,54":[u,o],"55,56,57,58,59":[s,o]},permanent:{1:[1,2,4,5,6]},prettyName:"Deutsch",version:2};$.fritteli.uhr.register(h)},function(t,e,n){"use strict";n.r(e),n.d(e,"Layout_de_CH",function(){return c});var i={4:[1,2]},o={3:[9,10,11]},r={4:[4,5,6,7,8]},s={1:[9,10,11]},u={2:[9,10,11]},a={2:[1,2,3,4,5,6]},h={3:[1,2,3,4,5,6]},c={code:"de_CH",hours:{"0,12":{10:[1,2,3,4,5,6]},"1,13":{5:[1,2,3]},"2,14":{5:[4,5,6,7]},"3,15":{5:[9,10,11]},"4,16":{6:[1,2,3,4,5]},"5,17":{6:[6,7,8,9]},"6,18":{7:[1,2,3,4,5,6]},"7,19":{7:[7,8,9,10,11]},"8,20":{8:[1,2,3,4,5]},"9,21":{8:[6,7,8,9]},"10,22":{9:[1,2,3,4]},"11,23":{9:[8,9,10,11]}},letters:["ESKISCHAFÜF","VIERTUBFZÄÄ","ZWÄNZGSIVOR","ABOHAUBIEGE","EISZWÖISDRÜ","VIERIFÜFIQT","SÄCHSISIBNI","ACHTINÜNIEL","ZÄNIERBEUFI","ZWÖUFINAUHR"],minutes:{"5,6,7,8,9":[s,i],"10,11,12,13,14":[u,i],"15,16,17,18,19":[a,i],"20,21,22,23,24":[h,i],"25,26,27,28,29":[s,o,r],"30,31,32,33,34":r,"35,36,37,38,39":[s,i,r],"40,41,42,43,44":[h,o],"45,46,47,48,49":[a,o],"50,51,52,53,54":[u,o],"55,56,57,58,59":[s,o]},permanent:{1:[1,2,4,5,6,7]},prettyName:"Bärndütsch",version:2};$.fritteli.uhr.register(c)},function(t,e,n){"use strict";n.r(e),n.d(e,"Layout_de_CH_genau",function(){return c});var i={4:[4,5]},o={4:[1,2,3]},r={4:[7,8,9,10,11]},s={1:[9,10,11]},u={2:[9,10,11]},a={2:[1,2,3,4,5,6]},h={3:[1,2,3,4,5,6]},c={code:"de_CH_genau",hours:{"0,12":{10:[1,2,3,4,5,6]},"1,13":{5:[1,2,3]},"2,14":{5:[4,5,6,7]},"3,15":{5:[9,10,11]},"4,16":{6:[1,2,3,4,5]},"5,17":{6:[6,7,8,9]},"6,18":{7:[1,2,3,4,5,6]},"7,19":{7:[7,8,9,10,11]},"8,20":{8:[1,2,3,4,5]},"9,21":{8:[6,7,8,9]},"10,22":{9:[1,2,3,4]},"11,23":{9:[8,9,10,11]}},letters:["ESKISCHAFÜF","VIERTUBFZÄÄ","ZWÄNZGGENAU","VORABOHAUBI","EISZWÖISDRÜ","VIERIFÜFIQT","SÄCHSISIBNI","ACHTINÜNIEL","ZÄNIERBEUFI","ZWÖUFINAUHR"],minutes:{0:{3:[7,8,9,10,11]},"5,6,7,8,9":[s,i],"10,11,12,13,14":[u,i],"15,16,17,18,19":[a,i],"20,21,22,23,24":[h,i],"25,26,27,28,29":[s,o,r],"30,31,32,33,34":r,"35,36,37,38,39":[s,i,r],"40,41,42,43,44":[h,o],"45,46,47,48,49":[a,o],"50,51,52,53,54":[u,o],"55,56,57,58,59":[s,o]},permanent:{1:[1,2,4,5,6,7]},prettyName:"Bärndütsch (genau)",version:2};$.fritteli.uhr.register(c)},function(t,e,n){"use strict";n.r(e),n.d(e,"Layout_dk",function(){return d});var i={4:[4,5,6,7,8,9,10,11]},o={5:[8]},r={5:[4,5,6,7]},s={2:[1,2,3]},u={4:[1,2]},a={3:[4,5,6,7,8]},h={2:[4,5,6,7]},c={6:[8,9,10,11]},d={code:"dk",hours:{"0,12":{10:[8,9,10,11]},"1,13":{7:[1,2]},"2,14":{7:[3,4]},"3,15":{7:[5,6,7]},"4,16":{7:[8,9,10,11]},"5,17":{8:[1,2,3]},"6,18":{8:[4,5,6,7]},"7,19":{8:[9,10,11]},"8,20":{9:[1,2,3,4]},"9,21":{9:[6,7]},"10,22":{9:[10,11]},"11,23":{10:[1,2,3,4,5,6]}},letters:["KLOKKENVERO","FEMTYVESKLA","OJEKVARTVAT","TIAMINUTTER","VEMOVERILMF","MONALISHALV","ETTOTREFIRE","FEMSEKSRSYV","OTTERNIMETI","ELLEVEATOLV"],minutes:{"5,6,7,8,9":[s,i,r],"10,11,12,13,14":[u,i,r],"15,16,17,18,19":[a,r],"20,21,22,23,24":[h,i,r],"25,26,27,28,29":[s,i,o,c],"30,31,32,33,34":[c],"35,36,37,38,39":[s,i,r,c],"40,41,42,43,44":[h,i,o],"45,46,47,48,49":[a,o],"50,51,52,53,54":[u,i,o],"55,56,57,58,59":[s,i,o]},permanent:{1:[1,2,3,4,5,6,7,9,10]},prettyName:"Dansk",version:2};$.fritteli.uhr.register(d)},function(t,e,n){"use strict";n.r(e),n.d(e,"Layout_en",function(){return c});var i={4:[10,11]},o={5:[1,2,3,4]},r={3:[7,8,9,10]},s={4:[6,7,8]},u={2:[1,3,4,5,6,7,8,9]},a={3:[1,2,3,4,5,6]},h={3:[1,2,3,4,5,6,7,8,9,10]},c={code:"en",getHour:function(t){var e=t.getHours();return t.getMinutes()>=35?(e+1)%24:e},hours:{"0,12":{9:[6,7,8,9,10,11]},"1,13":{6:[1,2,3]},"2,14":{7:[9,10,11]},"3,15":{6:[7,8,9,10,11]},"4,16":{7:[1,2,3,4]},"5,17":{7:[5,6,7,8]},"6,18":{6:[4,5,6]},"7,19":{9:[1,2,3,4,5]},"8,20":{8:[1,2,3,4,5]},"9,21":{5:[8,9,10,11]},"10,22":{10:[1,2,3]},"11,23":{8:[6,7,8,9,10,11]}},letters:["ITLISBFAMPM","ACQUARTERDC","TWENTYFIVEX","HALFBTENFTO","PASTERUNINE","ONESIXTHREE","FOURFIVETWO","EIGHTELEVEN","SEVENTWELVE","TENSO'CLOCK"],minutes:{"0,1,2,3,4":{10:[5,6,7,8,9,10,11]},"5,6,7,8,9":[r,o],"10,11,12,13,14":[s,o],"15,16,17,18,19":[u,o],"20,21,22,23,24":[a,o],"25,26,27,28,29":[h,o],"30,31,32,33,34":[{4:[1,2,3,4]},o],"35,36,37,38,39":[h,i],"40,41,42,43,44":[a,i],"45,46,47,48,49":[u,i],"50,51,52,53,54":[s,i],"55,56,57,58,59":[r,i]},permanent:{1:[1,2,4,5]},prettyName:"English",version:2};$.fritteli.uhr.register(c)},function(t,e,n){"use strict";n.r(e),n.d(e,"Layout_es",function(){return d});var i={1:[2,3,4,6,7,8]},o={7:[6]},r={7:[7,8,9,10,11]},s={9:[7,8,9,10,11]},u={8:[8,9,10,11]},a={10:[6,7,8,9,10,11]},h={8:[2,3,4,5,6,7]},c={9:[1,2,3,4,5,6,7,8,9,10,11]},d={code:"es",getHour:function(t){var e=t.getHours();return t.getMinutes()>=35?(e+1)%24:e},hours:{"0,12":[i,{7:[1,2,3,4]}],"1,13":[{1:[1,2,6,7]},{1:[9,10,11]}],"2,14":[i,{2:[1,2,3]}],"3,15":[i,{2:[5,6,7,8]}],"4,16":[i,{3:[1,2,3,4,5,6]}],"5,17":[i,{3:[7,8,9,10,11]}],"6,18":[i,{4:[1,2,3,4]}],"7,19":[i,{4:[6,7,8,9,10]}],"8,20":[i,{5:[1,2,3,4]}],"9,21":[i,{5:[5,6,7,8,9]}],"10,22":[i,{6:[3,4,5,6]}],"11,23":[i,{6:[8,9,10,11]}]},letters:["ESONELASUNA","DOSITRESORE","CUATROCINCO","SEISASIETEN","OCHONUEVEYO","LADIEZSONCE","DOCELYMENOS","OVEINTEDIEZ","VEINTICINCO","MEDIACUARTO"],minutes:{"5,6,7,8,9":[o,s],"10,11,12,13,14":[o,u],"15,16,17,18,19":[o,a],"20,21,22,23,24":[o,h],"25,26,27,28,29":[o,c],"30,31,32,33,34":[o,{10:[1,2,3,4,5]}],"35,36,37,38,39":[r,c],"40,41,42,43,44":[r,h],"45,46,47,48,49":[r,a],"50,51,52,53,54":[r,u],"55,56,57,58,59":[r,s]},permanent:null,prettyName:"Español",version:2};$.fritteli.uhr.register(d)},function(t,e,n){"use strict";n.r(e),n.d(e,"Layout_fr",function(){return d});var i={8:[1,2]},o={7:[1,2,3,4,5]},r={6:[6,7,8,9,10,11]},s={9:[7,8,9,10]},u={7:[9,10,11]},a={8:[4,5,6,7,8]},h={9:[1,2,3,4,5]},c={9:[1,2,3,4,5,6,7,8,9,10]},d={code:"fr",getHour:function(t){var e=t.getHours();return t.getMinutes()>=35?(e+1)%24:e},hours:{0:{5:[6,7,8,9,10,11]},"1,13":[{3:[5,6,7]},r],"2,14":[{1:[8,9,10,11]},r],"3,15":[{2:[7,8,9,10,11]},r],"4,16":[{2:[1,2,3,4,5,6]},r],"5,17":[{4:[8,9,10,11]},r],"6,18":[{4:[5,6,7]},r],"7,19":[{3:[8,9,10,11]},r],"8,20":[{4:[1,2,3,4]},r],"9,21":[{3:[1,2,3,4]},r],"10,22":[{5:[3,4,5]},r],"11,23":[{6:[1,2,3,4]},r],12:{5:[1,2,3,4]}},letters:["ILNESTODEUX","QUATRETROIS","NEUFUNESEPT","HUITSIXCINQ","MIDIXMINUIT","ONZERHEURES","MOINSOLEDIX","ETRQUARTPMD","VINGT-CINQU","ETSDEMIEPAM"],minutes:{"5,6,7,8,9":s,"10,11,12,13,14":u,"15,16,17,18,19":[i,a],"20,21,22,23,24":h,"25,26,27,28,29":c,"30,31,32,33,34":[i,{10:[4,5,6,7,8]}],"35,36,37,38,39":[o,c],"40,41,42,43,44":[o,h],"45,46,47,48,49":[o,{7:[7,8]},a],"50,51,52,53,54":[o,u],"55,56,57,58,59":[o,s]},permanent:{1:[1,2,4,5,6]},prettyName:"Français",version:2};$.fritteli.uhr.register(d)},function(t,e,n){"use strict";n.r(e),n.d(e,"Layout_it",function(){return d});var i={1:[1,2,3,4,6,7]},o={8:[1]},r={7:[8,9,10,11]},s={9:[6,7,8,9,10,11]},u={10:[1,2,3,4,5]},a={8:[3,4,6,7,8,9,10,11]},h={9:[1,2,3,4,5]},c={9:[1,2,3,4,5,6,7,8,9,10,11]},d={code:"it",getHour:function(t){var e=t.getHours();return t.getMinutes()>=35?(e+1)%24:e},hours:{"0,12":[i,{5:[1,2,3,4,5,6]}],"1,13":[{2:[1,3,4]},{2:[5,6,7]}],"2,14":[i,{2:[9,10,11]}],"3,15":[i,{3:[1,2,3]}],"4,16":[i,{6:[1,2,3,4,5,6,7]}],"5,17":[i,{7:[1,2,3,4,5,6]}],"6,18":[i,{6:[9,10,11]}],"7,19":[i,{5:[7,8,9,10,11]}],"8,20":[i,{3:[4,5,6,7]}],"9,21":[i,{3:[8,9,10,11]}],"10,22":[i,{4:[1,2,3,4,5]}],"11,23":[i,{4:[6,7,8,9,10,11]}]},letters:["SONORLEBORE","ÈRL'UNASDUE","TREOTTONOVE","DIECIUNDICI","DODICISETTE","QUATTROCSEI","CINQUEAMENO","ECUNOQUARTO","VENTICINQUE","DIECIPMEZZA"],minutes:{"5,6,7,8,9":[o,s],"10,11,12,13,14":[o,u],"15,16,17,18,19":[o,a],"20,21,22,23,24":[o,h],"25,26,27,28,29":[o,c],"30,31,32,33,34":[o,{10:[7,8,9,10,11]}],"35,36,37,38,39":[r,c],"40,41,42,43,44":[r,h],"45,46,47,48,49":[r,a],"50,51,52,53,54":[r,u],"55,56,57,58,59":[r,s]},permanent:null,prettyName:"Italiano",version:2};$.fritteli.uhr.register(d)},function(t,e,n){"use strict";n.r(e),n.d(e,"Layout_nl",function(){return h});var i={3:[1,2,3,4]},o={2:[8,9,10,11]},r={4:[1,2,3,4]},s={1:[8,9,10,11]},u={2:[1,2,3,4]},a={3:[7,8,9,10,11]},h={code:"nl",getHour:function(t){var e=t.getHours();return t.getMinutes()>=20?(e+1)%24:e},hours:{"0,12":{10:[1,2,3,4,5,6]},"1,13":{5:[8,9,10]},"2,14":{6:[1,2,3,4]},"3,15":{6:[8,9,10,11]},"4,16":{7:[1,2,3,4]},"5,17":{7:[5,6,7,8]},"6,18":{7:[9,10,11]},"7,19":{8:[1,2,3,4,5]},"8,20":{9:[1,2,3,4]},"9,21":{8:[7,8,9,10,11]},"10,22":{9:[5,6,7,8]},"11,23":{9:[9,10,11]}},letters:["HETKISAVIJF","TIENBTZVOOR","OVERMEKWART","HALFSPWOVER","VOORTHGEENS","TWEEPVCDRIE","VIERVIJFZES","ZEVENONEGEN","ACHTTIENELF","TWAALFBFUUR"],minutes:{"0,1,2,3,4":{10:[9,10,11]},"5,6,7,8,9":[s,i],"10,11,12,13,14":[u,i],"15,16,17,18,19":[a,{4:[8,9,10,11]}],"20,21,22,23,24":[u,o,r],"25,26,27,28,29":[s,o,r],"30,31,32,33,34":r,"35,36,37,38,39":[s,i,r],"40,41,42,43,44":[u,i,r],"45,46,47,48,49":[a,{5:[1,2,3,4]}],"50,51,52,53,54":[u,o],"55,56,57,58,59":[s,o]},permanent:{1:[1,2,3,5,6]},prettyName:"Nederlands",version:2};$.fritteli.uhr.register(h)},function(t,e,n){"use strict";n.r(e),n.d(e,"Layout_pt",function(){return l});var i={1:[1]},o={1:[2,3,4]},r={7:[8]},s={10:[5]},u={7:[7,8,9,10,11]},a={10:[7,8,9,10,11]},h={10:[1,2,3]},c={9:[1,2,4,5,6,7,8,9]},d={8:[1,2,3,4,5]},l={code:"pt",getHour:function(t){var e=t.getHours();return t.getMinutes()>=35?(e+1)%24:e},hours:{0:[i,{6:[2,3,4,5,7,8,9,10,11]}],12:[i,{2:[1,2,3,4,6,7,8]}],"1,13":[i,{1:[5,6,7]}],"2,14":[o,{3:[1,2,3,4]}],"3,15":[o,{1:[8,9,10,11]}],"4,16":[o,{4:[1,2,3,4,5,6]}],"5,17":[o,{5:[1,2,3,4,5]}],"6,18":[o,{3:[4,5,6,7]}],"7,19":[o,{3:[7,8,9,10]}],"8,20":[o,{5:[5,6,7,8]}],"9,21":[o,{4:[8,9,10,11]}],"10,22":[o,{2:[9,10,11]}],"11,23":[o,{5:[8,9,10,11]}]},letters:["ÉSÃOUMATRÊS","MEIOLDIADEZ","DUASEISETEY","QUATROHNOVE","CINCOITONZE","ZMEIALNOITE","HORASYMENOS","VINTECAMEIA","UMVQUARTOPM","DEZOEYCINCO"],minutes:{"5,6,7,8,9":[r,a],"10,11,12,13,14":[r,h],"15,16,17,18,19":[r,c],"20,21,22,23,24":[r,d],"25,26,27,28,29":[r,d,s,a],"30,31,32,33,34":[r,{8:[8,9,10,11]}],"35,36,37,38,39":[u,d,s,a],"40,41,42,43,44":[u,d],"45,46,47,48,49":[u,c],"50,51,52,53,54":[u,h],"55,56,57,58,59":[u,a]},permanent:null,prettyName:"Português",version:2};$.fritteli.uhr.register(l)},function(t,e,n){"use strict";n.r(e);var i=function(){function t(){}return t.registerTheme=function(e,n){t.themes.some(function(t){return t.name===e})?console.log("Theme with name '"+e+"' already registered; ignoring register request for styleClass '"+n+"'."):t.themes.push({name:e,styleClass:n})},t.hasThemes=function(){return t.themes.length>0},t.hasMultipleThemes=function(){return t.themes.length>1},t.getFirstTheme=function(){return t.getTheme(0)},t.getTheme=function(e){return t.themes[e]},t.getThemes=function(){return t.themes},t.registerLayout=function(e){!t.layouts.some(function(t){return e.code===t.code&&(e.prettyName!==t.prettyName&&console.error("Error: Language code '"+e.code+"' cannot be registered for layout '"+e.prettyName+"' because it is already registered for layout '"+t.prettyName+"'!"),!0)})&&(t.layouts.push(e),t.layouts.sort(function(t,e){return t.prettyName.localeCompare(e.prettyName)}))},t.hasLayouts=function(){return t.layouts.length>0},t.hasMultipleLayouts=function(){return t.layouts.length>1},t.getFirstLayout=function(){return t.layouts[0]},t.getLayouts=function(){return t.layouts},t.layouts=[],t.themes=[],t}(),o={code:null,hours:null,letters:[],minutes:null,permanent:[],prettyName:null,version:2},r=n(0),s=function(){function t(t,e){this.widgetId=t,this.cookiePath=e}return t.prototype.getLayout=function(){var t=this.getCookie("uhr-language");return t&&(this.removeCookie("uhr-language"),this.setLayout(t)),this.getCookie("uhr-layout")},t.prototype.setLayout=function(t){this.setCookie("uhr-layout",t)},t.prototype.getMode=function(){return this.getCookie("uhr-mode")},t.prototype.setMode=function(t){this.setCookie("uhr-mode",t)},t.prototype.getStatus=function(){return this.getCookie("uhr-status")},t.prototype.setStatus=function(t){this.setCookie("uhr-status",t)},t.prototype.getTheme=function(){return this.getCookie("uhr-theme")},t.prototype.setTheme=function(t){this.setCookie("uhr-theme",t)},t.prototype.getCookie=function(t){return r.get(t+this.widgetId)},t.prototype.setCookie=function(t,e){var n;n=this.cookiePath?{expires:365,path:this.cookiePath}:{expires:365},r.set(t+this.widgetId,e,n)},t.prototype.removeCookie=function(t){this.cookiePath?r.remove(t+this.widgetId,{path:this.cookiePath}):r.remove(t+this.widgetId)},t}(),u=function(){function t(t,e){this.style="",this.value=t,e&&(this.style=e)}return t.prototype.addStyle=function(t){""===this.style?this.style=t:this.style+=" "+t},t.prototype.toString=function(){return''+this.value+""},t}(),a=function(){function t(t){this.layout=t}return t.prototype.parse=function(){var e=[];return this.layout.letters.forEach(function(t){for(var n=[],i=0;i")}),t&&t(),e.renderarea.fadeIn("fast")})},t}(),c=function(){function t(t,e,n,i){this.uhr=t,this.$element=e,this.options=n,this.id=i,this.cookieHandler=new s(i,n.cookiePath)}return t.prototype.render=function(){this.setupHTML(),this.wireFunctionality()},t.prototype.setWidth=function(t){this.$element.css("width",t);var e=this.$element.width();this.$element.width(e),this.$element.height(e),this.$element.css("font-size",e/40+"px")},t.prototype.setupHTML=function(){var t=this;if(this.$element.addClass("uhr").empty().append('').append('').append('').append('').append('
').append(''),this.setWidth(this.options.width),this.options.controls){var e=$(''),n=$('');e.append(n);var o=$('');o.append(''),o.append(''),n.append(o);var r=$('');if(r.append(''),r.append(''),n.append(r),i.hasMultipleLayouts()){var s=$('');i.getLayouts().forEach(function(t){s.append('")}),n.append(s)}if(i.hasMultipleThemes()){var u=$('');i.getThemes().forEach(function(t){u.append('")}),n.append(u)}var a=$('');a.on({click:function(){return $("#uhr-controlpanel"+t.id).hide("fast")}}),n.append(a),this.$element.after(e),e.hide();var h=$('');h.on({click:function(){return t.toggleConfigScreen()}}),this.$element.after(h)}},t.prototype.wireFunctionality=function(){var t=this,e=$("#uhr-onoffswitch-checkbox"+this.id);e.on({click:function(){return t.uhr.toggle()}});var n=this.cookieHandler.getStatus();(void 0===n||this.options.force)&&(n=this.options.status),e.prop("checked","on"===n),"on"===n?this.uhr.start():this.uhr.stop();var o=$("#uhr-modeswitch-checkbox"+this.id);o.on({click:function(){"seconds"===t.options.mode?t.uhr.setMode("normal"):t.uhr.setMode("seconds")}});var r=this.cookieHandler.getMode();(void 0===r||this.options.force)&&(r=this.options.mode),o.prop("checked","seconds"!==r),"seconds"===r?this.uhr.setMode("seconds"):this.uhr.setMode("normal");var s=$("#uhr-languagechooser"+this.id);s.on({change:function(){var e=$("#uhr-languagechooser"+t.id).val();t.uhr.setLayout(e)}});var u=this.cookieHandler.getLayout();(void 0===u||this.options.force)&&(u=this.options.language);var a=i.getLayouts().some(function(t){return u===t.code});if(!a){var h=void 0;h=i.hasLayouts()?i.getFirstLayout().code:"",console.warn("Language '"+u+"' not found! Using fallback '"+h+"'."),u=h}s.val(u),this.options.language="",this.uhr.setLayout(u);var c=$("#uhr-themechooser"+this.id);c.on({change:function(){var e=$("#uhr-themechooser"+t.id).val();t.uhr.setTheme(e)}});var d=this.cookieHandler.getTheme();if((void 0===d||this.options.force)&&(d=this.options.theme),!(a=i.getThemes().some(function(t){return d===t.styleClass}))){var l=i.getFirstTheme().styleClass;console.warn("Theme '"+d+"' not found! Using fallback '"+l+"'."),d=l}c.val(d),this.options.theme="",this.uhr.setTheme(d),this.options.autoresize&&$(window).on({resize:function(){var e=t.$element.parent(),n=$(window),i=e.width(),o=e.height(),r=n.width(),s=n.height(),u=Math.min(i,o,r,s)+"px";t.setWidth(u)}})},t.prototype.toggleConfigScreen=function(){$("#uhr-controlpanel"+this.id).toggle("fast")},t}(),d=function(){function t(t){this.widgetInstance=t,this.timer=null,this.currentMinute=null;var e=this.widgetInstance.options.time;void 0===this.widgetInstance.options.time&&(this.widgetInstance.options.time=new Date),this.cookieHandler=new s(this.widgetInstance.uuid,this.widgetInstance.options.cookiePath),this.parseHash(),this.renderer=new c(this,this.widgetInstance.element,this.widgetInstance.options,this.widgetInstance.uuid),this.renderer.render(),void 0!==e&&this.setTime(e)}return t.prototype.destroy=function(){this.timer&&(window.clearInterval(this.timer),this.timer=null),this.widgetInstance.element.removeAttr("style").removeAttr("class").empty(),$("#uhr-configlink"+this.widgetInstance.uuid).remove(),$("#uhr-controlpanel"+this.widgetInstance.uuid).remove()},t.prototype.start=function(){var t=this;this.isOn()||(this.timer=window.setInterval(function(){t.widgetInstance.options.time=new Date,t.update()},1e3),this.update(),this.cookieHandler.setStatus("on"))},t.prototype.stop=function(){this.isOn()&&(window.clearInterval(this.timer),this.timer=null,this.update(),this.cookieHandler.setStatus("off"))},t.prototype.toggle=function(){this.isOn()?this.stop():this.start()},t.prototype.setLayout=function(t){var e=this;t!==this.widgetInstance.options.language&&(this.widgetInstance.options.language=t,new h(this.getCurrentLayout(),this.widgetInstance.element.find(".letterarea")).render(function(){e.currentMinute=-1,e.update()}),this.cookieHandler.setLayout(t),this.update())},t.prototype.setTheme=function(t){t!==this.widgetInstance.options.theme&&(this.widgetInstance.element.removeClass(this.widgetInstance.options.theme).addClass(t),$("#uhr-onoffswitch"+this.widgetInstance.uuid).removeClass(this.widgetInstance.options.theme).addClass(t),this.widgetInstance.options.theme=t,this.cookieHandler.setTheme(t))},t.prototype.setTime=function(t){this.currentMinute=null,null===t?this.widgetInstance.options.time=new Date:(null!==this.timer&&window.clearInterval(this.timer),this.widgetInstance.options.time=t),this.update()},t.prototype.setMode=function(t){this.widgetInstance.options.mode=t,this.currentMinute=null,this.update(),this.cookieHandler.setMode(t)},t.prototype.setWidth=function(t){this.renderer.setWidth(t)},t.prototype.isOn=function(){return null!==this.timer},t.prototype.update=function(){if(this.isOn()){var t=this.widgetInstance.options.time;if(!this.getCurrentLayout().hasOwnProperty("seconds")&&"seconds"!==this.widgetInstance.options.mode){if(t.getMinutes()===this.currentMinute)return;this.currentMinute=t.getMinutes()}this.show(t)}else this.clear(),this.currentMinute=-1},t.prototype.show=function(t){var e=this.getSecond(t),n=this.getDotMinute(t),i=this.getHour(t),o=this.getCoarseMinute(t);if(this.clear(),"seconds"===this.widgetInstance.options.mode)this.highlight("second"+e);else{this.highlight("on");for(var r=1;r<=n;r++)this.highlight("dot"+r);this.highlight("minute"+o),this.highlight("hour"+i)}},t.prototype.clear=function(){this.widgetInstance.element.find(".item").removeClass("active")},t.prototype.highlight=function(t){this.widgetInstance.element.find(".item."+t).addClass("active")},t.prototype.getSecond=function(t){return"function"==typeof this.getCurrentLayout().getSeconds?this.getCurrentLayout().getSeconds(t):t.getSeconds()},t.prototype.getDotMinute=function(t){return"function"==typeof this.getCurrentLayout().getDotMinute?this.getCurrentLayout().getDotMinute(t):t.getMinutes()%5},t.prototype.getCoarseMinute=function(t){return"function"==typeof this.getCurrentLayout().getCoarseMinute?this.getCurrentLayout().getCoarseMinute(t):t.getMinutes()},t.prototype.getHour=function(t){if("function"==typeof this.getCurrentLayout().getHour)return this.getCurrentLayout().getHour(t);var e=t.getHours();return t.getMinutes()>=25?(e+1)%24:e},t.prototype.parseHash=function(){var t=this,e=window.location.hash;void 0!==e&&"#"===e.charAt(0)&&(e=e.substring(1),(e=decodeURIComponent(e)).split("&").forEach(function(e){var n=e.split("="),i=n[0],o=n[1];switch(i){case"l":case"language":t.widgetInstance.options.language=o,t.widgetInstance.options.force=!0;break;case"t":case"theme":t.widgetInstance.options.theme=o,t.widgetInstance.options.force=!0;break;case"m":case"mode":t.widgetInstance.options.mode=o,t.widgetInstance.options.force=!0;break;case"s":case"status":t.widgetInstance.options.status=o,t.widgetInstance.options.force=!0}}))},t.prototype.getCurrentLayout=function(){var t=this,e=i.getLayouts().filter(function(e){return e.code===t.widgetInstance.options.language},this);return e.length>0?e[0]:o},t}(),l=n(1);l("link[rel=stylesheet]").each(function(t,e){var n=l(e),o=n.attr("data-class");if(void 0!==o){var r=n.attr("data-name");void 0===r&&(r=o),i.registerTheme(r,o)}}),i.hasThemes()||i.registerTheme("",""),$.widget("fritteli.uhr",{options:{width:"100%",status:"on",language:"de_CH",theme:i.getFirstTheme().styleClass,force:!1,controls:!0,cookiePath:void 0,autoresize:!0,mode:"normal"},start:function(){this.__fritteli_uhr_instance.start()},stop:function(){this.__fritteli_uhr_instance.stop()},toggle:function(){this.__fritteli_uhr_instance.toggle()},language:function(t){this.__fritteli_uhr_instance.setLayout(t)},theme:function(t){this.__fritteli_uhr_instance.setTheme(t)},time:function(t){this.__fritteli_uhr_instance.setTime(t)},mode:function(t){this.__fritteli_uhr_instance.setMode(t)},width:function(t){this.__fritteli_uhr_instance.setWidth(t)},_create:function(){this.__fritteli_uhr_instance=new d(this)},_destroy:function(){this.__fritteli_uhr_instance.destroy()},__fritteli_uhr_instance:null}),$.fritteli.uhr.register=i.registerLayout},function(t,e,n){"use strict";n.r(e);n(12);var i=n(2),o=n(3),r=n(4),s=n(5),u=n(6),a=n(7),h=n(8),c=n(9),d=n(10),l=n(11);o.Layout_de_CH,r.Layout_de_CH_genau,i.Layout_de,s.Layout_dk,u.Layout_en,a.Layout_es,h.Layout_fr,c.Layout_it,d.Layout_nl,l.Layout_pt}]);
+!function(t){var e={};function n(i){if(e[i])return e[i].exports;var o=e[i]={i:i,l:!1,exports:{}};return t[i].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(i,o,function(e){return t[e]}.bind(null,o));return i},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=13)}([function(t,e){t.exports=Cookies},function(t,e){t.exports=jQuery},function(t,e,n){"use strict";n.r(e),n.d(e,"LayoutDe",function(){return h});var i={4:[8,9,10,11]},o={4:[1,2,3]},r={5:[1,2,3,4]},s={1:[8,9,10,11]},u={2:[1,2,3,4]},a={2:[5,6,7,8,9,10,11]},h={code:"de",hours:{"0,12":{9:[7,8,9,10,11]},"1,13":{6:[1,2,3,4]},"2,14":{6:[8,9,10,11]},"3,15":{7:[1,2,3,4]},"4,16":{7:[8,9,10,11]},"5,17":{5:[8,9,10,11]},"6,18":{8:[1,2,3,4,5]},"7,19":{9:[1,2,3,4,5,6]},"8,20":{8:[8,9,10,11]},"9,21":{10:[4,5,6,7]},"10,22":{10:[1,2,3,4]},"11,23":{5:[6,7,8]}},letters:["ESKISTAFÜNF","ZEHNZWANZIG","DREIVIERTEL","VORFUNKNACH","HALBAELFÜNF","EINSXAMZWEI","DREIPMJVIER","SECHSNLACHT","SIEBENZWÖLF","ZEHNEUNKUHR"],minutes:{"0,1,2,3,4":{10:[9,10,11]},"5,6,7,8,9":[s,i],"10,11,12,13,14":[u,i],"15,16,17,18,19":[{3:[5,6,7,8,9,10,11]},i],"20,21,22,23,24":[a,i],"25,26,27,28,29":[s,o,r],"30,31,32,33,34":r,"35,36,37,38,39":[s,i,r],"40,41,42,43,44":[a,o],"45,46,47,48,49":{3:[1,2,3,4,5,6,7,8,9,10,11]},"50,51,52,53,54":[u,o],"55,56,57,58,59":[s,o]},permanent:{1:[1,2,4,5,6]},prettyName:"Deutsch",version:2};$.fritteli.uhr.register(h)},function(t,e,n){"use strict";n.r(e),n.d(e,"LayoutDeCh",function(){return c});var i={4:[1,2]},o={3:[9,10,11]},r={4:[4,5,6,7,8]},s={1:[9,10,11]},u={2:[9,10,11]},a={2:[1,2,3,4,5,6]},h={3:[1,2,3,4,5,6]},c={code:"de_CH",hours:{"0,12":{10:[1,2,3,4,5,6]},"1,13":{5:[1,2,3]},"2,14":{5:[4,5,6,7]},"3,15":{5:[9,10,11]},"4,16":{6:[1,2,3,4,5]},"5,17":{6:[6,7,8,9]},"6,18":{7:[1,2,3,4,5,6]},"7,19":{7:[7,8,9,10,11]},"8,20":{8:[1,2,3,4,5]},"9,21":{8:[6,7,8,9]},"10,22":{9:[1,2,3,4]},"11,23":{9:[8,9,10,11]}},letters:["ESKISCHAFÜF","VIERTUBFZÄÄ","ZWÄNZGSIVOR","ABOHAUBIEGE","EISZWÖISDRÜ","VIERIFÜFIQT","SÄCHSISIBNI","ACHTINÜNIEL","ZÄNIERBEUFI","ZWÖUFINAUHR"],minutes:{"5,6,7,8,9":[s,i],"10,11,12,13,14":[u,i],"15,16,17,18,19":[a,i],"20,21,22,23,24":[h,i],"25,26,27,28,29":[s,o,r],"30,31,32,33,34":r,"35,36,37,38,39":[s,i,r],"40,41,42,43,44":[h,o],"45,46,47,48,49":[a,o],"50,51,52,53,54":[u,o],"55,56,57,58,59":[s,o]},permanent:{1:[1,2,4,5,6,7]},prettyName:"Bärndütsch",version:2};$.fritteli.uhr.register(c)},function(t,e,n){"use strict";n.r(e),n.d(e,"LayoutDeChGenau",function(){return c});var i={4:[4,5]},o={4:[1,2,3]},r={4:[7,8,9,10,11]},s={1:[9,10,11]},u={2:[9,10,11]},a={2:[1,2,3,4,5,6]},h={3:[1,2,3,4,5,6]},c={code:"de_CH_genau",hours:{"0,12":{10:[1,2,3,4,5,6]},"1,13":{5:[1,2,3]},"2,14":{5:[4,5,6,7]},"3,15":{5:[9,10,11]},"4,16":{6:[1,2,3,4,5]},"5,17":{6:[6,7,8,9]},"6,18":{7:[1,2,3,4,5,6]},"7,19":{7:[7,8,9,10,11]},"8,20":{8:[1,2,3,4,5]},"9,21":{8:[6,7,8,9]},"10,22":{9:[1,2,3,4]},"11,23":{9:[8,9,10,11]}},letters:["ESKISCHAFÜF","VIERTUBFZÄÄ","ZWÄNZGGENAU","VORABOHAUBI","EISZWÖISDRÜ","VIERIFÜFIQT","SÄCHSISIBNI","ACHTINÜNIEL","ZÄNIERBEUFI","ZWÖUFINAUHR"],minutes:{0:{3:[7,8,9,10,11]},"5,6,7,8,9":[s,i],"10,11,12,13,14":[u,i],"15,16,17,18,19":[a,i],"20,21,22,23,24":[h,i],"25,26,27,28,29":[s,o,r],"30,31,32,33,34":r,"35,36,37,38,39":[s,i,r],"40,41,42,43,44":[h,o],"45,46,47,48,49":[a,o],"50,51,52,53,54":[u,o],"55,56,57,58,59":[s,o]},permanent:{1:[1,2,4,5,6,7]},prettyName:"Bärndütsch (genau)",version:2};$.fritteli.uhr.register(c)},function(t,e,n){"use strict";n.r(e),n.d(e,"LayoutDk",function(){return l});var i={4:[4,5,6,7,8,9,10,11]},o={5:[8]},r={5:[4,5,6,7]},s={2:[1,2,3]},u={4:[1,2]},a={3:[4,5,6,7,8]},h={2:[4,5,6,7]},c={6:[8,9,10,11]},l={code:"dk",hours:{"0,12":{10:[8,9,10,11]},"1,13":{7:[1,2]},"2,14":{7:[3,4]},"3,15":{7:[5,6,7]},"4,16":{7:[8,9,10,11]},"5,17":{8:[1,2,3]},"6,18":{8:[4,5,6,7]},"7,19":{8:[9,10,11]},"8,20":{9:[1,2,3,4]},"9,21":{9:[6,7]},"10,22":{9:[10,11]},"11,23":{10:[1,2,3,4,5,6]}},letters:["KLOKKENVERO","FEMTYVESKLA","OJEKVARTVAT","TIAMINUTTER","VEMOVERILMF","MONALISHALV","ETTOTREFIRE","FEMSEKSRSYV","OTTERNIMETI","ELLEVEATOLV"],minutes:{"5,6,7,8,9":[s,i,r],"10,11,12,13,14":[u,i,r],"15,16,17,18,19":[a,r],"20,21,22,23,24":[h,i,r],"25,26,27,28,29":[s,i,o,c],"30,31,32,33,34":[c],"35,36,37,38,39":[s,i,r,c],"40,41,42,43,44":[h,i,o],"45,46,47,48,49":[a,o],"50,51,52,53,54":[u,i,o],"55,56,57,58,59":[s,i,o]},permanent:{1:[1,2,3,4,5,6,7,9,10]},prettyName:"Dansk",version:2};$.fritteli.uhr.register(l)},function(t,e,n){"use strict";n.r(e),n.d(e,"LayoutEn",function(){return c});var i={4:[10,11]},o={5:[1,2,3,4]},r={3:[7,8,9,10]},s={4:[6,7,8]},u={2:[1,3,4,5,6,7,8,9]},a={3:[1,2,3,4,5,6]},h={3:[1,2,3,4,5,6,7,8,9,10]},c={code:"en",getHour:function(t){var e=t.getHours();return t.getMinutes()>=35?(e+1)%24:e},hours:{"0,12":{9:[6,7,8,9,10,11]},"1,13":{6:[1,2,3]},"2,14":{7:[9,10,11]},"3,15":{6:[7,8,9,10,11]},"4,16":{7:[1,2,3,4]},"5,17":{7:[5,6,7,8]},"6,18":{6:[4,5,6]},"7,19":{9:[1,2,3,4,5]},"8,20":{8:[1,2,3,4,5]},"9,21":{5:[8,9,10,11]},"10,22":{10:[1,2,3]},"11,23":{8:[6,7,8,9,10,11]}},letters:["ITLISBFAMPM","ACQUARTERDC","TWENTYFIVEX","HALFBTENFTO","PASTERUNINE","ONESIXTHREE","FOURFIVETWO","EIGHTELEVEN","SEVENTWELVE","TENSO'CLOCK"],minutes:{"0,1,2,3,4":{10:[5,6,7,8,9,10,11]},"5,6,7,8,9":[r,o],"10,11,12,13,14":[s,o],"15,16,17,18,19":[u,o],"20,21,22,23,24":[a,o],"25,26,27,28,29":[h,o],"30,31,32,33,34":[{4:[1,2,3,4]},o],"35,36,37,38,39":[h,i],"40,41,42,43,44":[a,i],"45,46,47,48,49":[u,i],"50,51,52,53,54":[s,i],"55,56,57,58,59":[r,i]},permanent:{1:[1,2,4,5]},prettyName:"English",version:2};$.fritteli.uhr.register(c)},function(t,e,n){"use strict";n.r(e),n.d(e,"LayoutEs",function(){return l});var i={1:[2,3,4,6,7,8]},o={7:[6]},r={7:[7,8,9,10,11]},s={9:[7,8,9,10,11]},u={8:[8,9,10,11]},a={10:[6,7,8,9,10,11]},h={8:[2,3,4,5,6,7]},c={9:[1,2,3,4,5,6,7,8,9,10,11]},l={code:"es",getHour:function(t){var e=t.getHours();return t.getMinutes()>=35?(e+1)%24:e},hours:{"0,12":[i,{7:[1,2,3,4]}],"1,13":[{1:[1,2,6,7]},{1:[9,10,11]}],"2,14":[i,{2:[1,2,3]}],"3,15":[i,{2:[5,6,7,8]}],"4,16":[i,{3:[1,2,3,4,5,6]}],"5,17":[i,{3:[7,8,9,10,11]}],"6,18":[i,{4:[1,2,3,4]}],"7,19":[i,{4:[6,7,8,9,10]}],"8,20":[i,{5:[1,2,3,4]}],"9,21":[i,{5:[5,6,7,8,9]}],"10,22":[i,{6:[3,4,5,6]}],"11,23":[i,{6:[8,9,10,11]}]},letters:["ESONELASUNA","DOSITRESORE","CUATROCINCO","SEISASIETEN","OCHONUEVEYO","LADIEZSONCE","DOCELYMENOS","OVEINTEDIEZ","VEINTICINCO","MEDIACUARTO"],minutes:{"5,6,7,8,9":[o,s],"10,11,12,13,14":[o,u],"15,16,17,18,19":[o,a],"20,21,22,23,24":[o,h],"25,26,27,28,29":[o,c],"30,31,32,33,34":[o,{10:[1,2,3,4,5]}],"35,36,37,38,39":[r,c],"40,41,42,43,44":[r,h],"45,46,47,48,49":[r,a],"50,51,52,53,54":[r,u],"55,56,57,58,59":[r,s]},permanent:null,prettyName:"Español",version:2};$.fritteli.uhr.register(l)},function(t,e,n){"use strict";n.r(e),n.d(e,"LayoutFr",function(){return l});var i={8:[1,2]},o={7:[1,2,3,4,5]},r={6:[6,7,8,9,10,11]},s={9:[7,8,9,10]},u={7:[9,10,11]},a={8:[4,5,6,7,8]},h={9:[1,2,3,4,5]},c={9:[1,2,3,4,5,6,7,8,9,10]},l={code:"fr",getHour:function(t){var e=t.getHours();return t.getMinutes()>=35?(e+1)%24:e},hours:{0:{5:[6,7,8,9,10,11]},"1,13":[{3:[5,6,7]},r],"2,14":[{1:[8,9,10,11]},r],"3,15":[{2:[7,8,9,10,11]},r],"4,16":[{2:[1,2,3,4,5,6]},r],"5,17":[{4:[8,9,10,11]},r],"6,18":[{4:[5,6,7]},r],"7,19":[{3:[8,9,10,11]},r],"8,20":[{4:[1,2,3,4]},r],"9,21":[{3:[1,2,3,4]},r],"10,22":[{5:[3,4,5]},r],"11,23":[{6:[1,2,3,4]},r],12:{5:[1,2,3,4]}},letters:["ILNESTODEUX","QUATRETROIS","NEUFUNESEPT","HUITSIXCINQ","MIDIXMINUIT","ONZERHEURES","MOINSOLEDIX","ETRQUARTPMD","VINGT-CINQU","ETSDEMIEPAM"],minutes:{"5,6,7,8,9":s,"10,11,12,13,14":u,"15,16,17,18,19":[i,a],"20,21,22,23,24":h,"25,26,27,28,29":c,"30,31,32,33,34":[i,{10:[4,5,6,7,8]}],"35,36,37,38,39":[o,c],"40,41,42,43,44":[o,h],"45,46,47,48,49":[o,{7:[7,8]},a],"50,51,52,53,54":[o,u],"55,56,57,58,59":[o,s]},permanent:{1:[1,2,4,5,6]},prettyName:"Français",version:2};$.fritteli.uhr.register(l)},function(t,e,n){"use strict";n.r(e),n.d(e,"LayoutIt",function(){return l});var i={1:[1,2,3,4,6,7]},o={8:[1]},r={7:[8,9,10,11]},s={9:[6,7,8,9,10,11]},u={10:[1,2,3,4,5]},a={8:[3,4,6,7,8,9,10,11]},h={9:[1,2,3,4,5]},c={9:[1,2,3,4,5,6,7,8,9,10,11]},l={code:"it",getHour:function(t){var e=t.getHours();return t.getMinutes()>=35?(e+1)%24:e},hours:{"0,12":[i,{5:[1,2,3,4,5,6]}],"1,13":[{2:[1,3,4]},{2:[5,6,7]}],"2,14":[i,{2:[9,10,11]}],"3,15":[i,{3:[1,2,3]}],"4,16":[i,{6:[1,2,3,4,5,6,7]}],"5,17":[i,{7:[1,2,3,4,5,6]}],"6,18":[i,{6:[9,10,11]}],"7,19":[i,{5:[7,8,9,10,11]}],"8,20":[i,{3:[4,5,6,7]}],"9,21":[i,{3:[8,9,10,11]}],"10,22":[i,{4:[1,2,3,4,5]}],"11,23":[i,{4:[6,7,8,9,10,11]}]},letters:["SONORLEBORE","ÈRL'UNASDUE","TREOTTONOVE","DIECIUNDICI","DODICISETTE","QUATTROCSEI","CINQUEAMENO","ECUNOQUARTO","VENTICINQUE","DIECIPMEZZA"],minutes:{"5,6,7,8,9":[o,s],"10,11,12,13,14":[o,u],"15,16,17,18,19":[o,a],"20,21,22,23,24":[o,h],"25,26,27,28,29":[o,c],"30,31,32,33,34":[o,{10:[7,8,9,10,11]}],"35,36,37,38,39":[r,c],"40,41,42,43,44":[r,h],"45,46,47,48,49":[r,a],"50,51,52,53,54":[r,u],"55,56,57,58,59":[r,s]},permanent:null,prettyName:"Italiano",version:2};$.fritteli.uhr.register(l)},function(t,e,n){"use strict";n.r(e),n.d(e,"LayoutNl",function(){return h});var i={3:[1,2,3,4]},o={2:[8,9,10,11]},r={4:[1,2,3,4]},s={1:[8,9,10,11]},u={2:[1,2,3,4]},a={3:[7,8,9,10,11]},h={code:"nl",getHour:function(t){var e=t.getHours();return t.getMinutes()>=20?(e+1)%24:e},hours:{"0,12":{10:[1,2,3,4,5,6]},"1,13":{5:[8,9,10]},"2,14":{6:[1,2,3,4]},"3,15":{6:[8,9,10,11]},"4,16":{7:[1,2,3,4]},"5,17":{7:[5,6,7,8]},"6,18":{7:[9,10,11]},"7,19":{8:[1,2,3,4,5]},"8,20":{9:[1,2,3,4]},"9,21":{8:[7,8,9,10,11]},"10,22":{9:[5,6,7,8]},"11,23":{9:[9,10,11]}},letters:["HETKISAVIJF","TIENBTZVOOR","OVERMEKWART","HALFSPWOVER","VOORTHGEENS","TWEEPVCDRIE","VIERVIJFZES","ZEVENONEGEN","ACHTTIENELF","TWAALFBFUUR"],minutes:{"0,1,2,3,4":{10:[9,10,11]},"5,6,7,8,9":[s,i],"10,11,12,13,14":[u,i],"15,16,17,18,19":[a,{4:[8,9,10,11]}],"20,21,22,23,24":[u,o,r],"25,26,27,28,29":[s,o,r],"30,31,32,33,34":r,"35,36,37,38,39":[s,i,r],"40,41,42,43,44":[u,i,r],"45,46,47,48,49":[a,{5:[1,2,3,4]}],"50,51,52,53,54":[u,o],"55,56,57,58,59":[s,o]},permanent:{1:[1,2,3,5,6]},prettyName:"Nederlands",version:2};$.fritteli.uhr.register(h)},function(t,e,n){"use strict";n.r(e),n.d(e,"LayoutPt",function(){return d});var i={1:[1]},o={1:[2,3,4]},r={7:[8]},s={10:[5]},u={7:[7,8,9,10,11]},a={10:[7,8,9,10,11]},h={10:[1,2,3]},c={9:[1,2,4,5,6,7,8,9]},l={8:[1,2,3,4,5]},d={code:"pt",getHour:function(t){var e=t.getHours();return t.getMinutes()>=35?(e+1)%24:e},hours:{0:[i,{6:[2,3,4,5,7,8,9,10,11]}],12:[i,{2:[1,2,3,4,6,7,8]}],"1,13":[i,{1:[5,6,7]}],"2,14":[o,{3:[1,2,3,4]}],"3,15":[o,{1:[8,9,10,11]}],"4,16":[o,{4:[1,2,3,4,5,6]}],"5,17":[o,{5:[1,2,3,4,5]}],"6,18":[o,{3:[4,5,6,7]}],"7,19":[o,{3:[7,8,9,10]}],"8,20":[o,{5:[5,6,7,8]}],"9,21":[o,{4:[8,9,10,11]}],"10,22":[o,{2:[9,10,11]}],"11,23":[o,{5:[8,9,10,11]}]},letters:["ÉSÃOUMATRÊS","MEIOLDIADEZ","DUASEISETEY","QUATROHNOVE","CINCOITONZE","ZMEIALNOITE","HORASYMENOS","VINTECAMEIA","UMVQUARTOPM","DEZOEYCINCO"],minutes:{"5,6,7,8,9":[r,a],"10,11,12,13,14":[r,h],"15,16,17,18,19":[r,c],"20,21,22,23,24":[r,l],"25,26,27,28,29":[r,l,s,a],"30,31,32,33,34":[r,{8:[8,9,10,11]}],"35,36,37,38,39":[u,l,s,a],"40,41,42,43,44":[u,l],"45,46,47,48,49":[u,c],"50,51,52,53,54":[u,h],"55,56,57,58,59":[u,a]},permanent:null,prettyName:"Português",version:2};$.fritteli.uhr.register(d)},function(t,e,n){"use strict";n.r(e);var i=function(){function t(){}return t.registerTheme=function(e,n){t.themes.some(function(t){return t.name===e})?console.warn("Theme with name '"+e+"' already registered; ignoring register request for styleClass '"+n+"'."):t.themes.push({name:e,styleClass:n})},t.hasThemes=function(){return t.themes.length>0},t.hasMultipleThemes=function(){return t.themes.length>1},t.getFirstTheme=function(){return t.getTheme(0)},t.getTheme=function(e){return t.themes[e]},t.getThemes=function(){return t.themes},t.registerLayout=function(e){!t.layouts.some(function(t){return e.code===t.code&&(e.prettyName!==t.prettyName&&console.error("Error: Language code '"+e.code+"' cannot be registered for layout '"+e.prettyName+"' because it is already registered for layout '"+t.prettyName+"'!"),!0)})&&(t.layouts.push(e),t.layouts.sort(function(t,e){return t.prettyName.localeCompare(e.prettyName)}))},t.hasLayouts=function(){return t.layouts.length>0},t.hasMultipleLayouts=function(){return t.layouts.length>1},t.getFirstLayout=function(){return t.layouts[0]},t.getLayouts=function(){return t.layouts},t.layouts=[],t.themes=[],t}(),o={code:null,hours:null,letters:[],minutes:null,permanent:[],prettyName:null,version:2},r=n(0),s=function(){function t(t,e){this.widgetId=t,this.cookiePath=e}return t.prototype.getLayout=function(){var t=this.getCookie("uhr-language");return t&&(this.removeCookie("uhr-language"),this.setLayout(t)),this.getCookie("uhr-layout")},t.prototype.setLayout=function(t){this.setCookie("uhr-layout",t)},t.prototype.getMode=function(){return this.getCookie("uhr-mode")},t.prototype.setMode=function(t){this.setCookie("uhr-mode",t)},t.prototype.getStatus=function(){return this.getCookie("uhr-status")},t.prototype.setStatus=function(t){this.setCookie("uhr-status",t)},t.prototype.getTheme=function(){return this.getCookie("uhr-theme")},t.prototype.setTheme=function(t){this.setCookie("uhr-theme",t)},t.prototype.getCookie=function(t){return r.get(t+this.widgetId)},t.prototype.setCookie=function(t,e){var n;n=this.cookiePath?{expires:365,path:this.cookiePath}:{expires:365},r.set(t+this.widgetId,e,n)},t.prototype.removeCookie=function(t){this.cookiePath?r.remove(t+this.widgetId,{path:this.cookiePath}):r.remove(t+this.widgetId)},t}(),u=function(){function t(t,e){void 0===e&&(e=""),this.value=t,this.value=t,this.style=e}return t.prototype.addStyle=function(t){""===this.style?this.style=t:this.style+=" "+t},t.prototype.toString=function(){return''+this.value+""},t}(),a=function(){function t(t){this.layout=t}return t.prototype.parse=function(){var e=[];return this.layout.letters.forEach(function(t){for(var n=[],i=0;i")}),t&&t(),e.renderarea.fadeIn("fast")})},t}(),c=function(){function t(t,e,n,i){this.uhr=t,this.$element=e,this.options=n,this.id=i,this.cookieHandler=new s(i,n.cookiePath)}return t.prototype.render=function(){this.setupHTML(),this.wireFunctionality()},t.prototype.setWidth=function(t){this.$element.css("width",t);var e=this.$element.width();this.$element.width(e),this.$element.height(e),this.$element.css("font-size",e/40+"px")},t.prototype.setupHTML=function(){var t=this;if(this.$element.addClass("uhr").empty().append('').append('').append('').append('').append('').append(''),this.setWidth(this.options.width),this.options.controls){var e=$(''),n=$('');e.append(n);var o=$('');o.append(''),o.append(''),n.append(o);var r=$('');if(r.append(''),r.append(''),n.append(r),i.hasMultipleLayouts()){var s=$('');i.getLayouts().forEach(function(t){s.append('")}),n.append(s)}if(i.hasMultipleThemes()){var u=$('');i.getThemes().forEach(function(t){u.append('")}),n.append(u)}var a=$('');a.on({click:function(){return $("#uhr-controlpanel"+t.id).hide("fast")}}),n.append(a),this.$element.after(e),e.hide();var h=$('');h.on({click:function(){return t.toggleConfigScreen()}}),this.$element.after(h)}},t.prototype.wireFunctionality=function(){var t=this,e=$("#uhr-onoffswitch-checkbox"+this.id);e.on({click:function(){return t.uhr.toggle()}});var n=this.cookieHandler.getStatus();(void 0===n||this.options.force)&&(n=this.options.status),e.prop("checked","on"===n),"on"===n?this.uhr.start():this.uhr.stop();var o=$("#uhr-modeswitch-checkbox"+this.id);o.on({click:function(){"seconds"===t.options.mode?t.uhr.setMode("normal"):t.uhr.setMode("seconds")}});var r=this.cookieHandler.getMode();(void 0===r||this.options.force)&&(r=this.options.mode),o.prop("checked","seconds"!==r),"seconds"===r?this.uhr.setMode("seconds"):this.uhr.setMode("normal");var s=$("#uhr-languagechooser"+this.id);s.on({change:function(){var e=$("#uhr-languagechooser"+t.id).val();t.uhr.setLayout(e)}});var u=this.cookieHandler.getLayout();(void 0===u||this.options.force)&&(u=this.options.language);var a=i.getLayouts().some(function(t){return u===t.code});if(!a){var h=void 0;h=i.hasLayouts()?i.getFirstLayout().code:"",console.warn("Language '"+u+"' not found! Using fallback '"+h+"'."),u=h}s.val(u),this.options.language="",this.uhr.setLayout(u);var c=$("#uhr-themechooser"+this.id);c.on({change:function(){var e=$("#uhr-themechooser"+t.id).val();t.uhr.setTheme(e)}});var l=this.cookieHandler.getTheme();if((void 0===l||this.options.force)&&(l=this.options.theme),!(a=i.getThemes().some(function(t){return l===t.styleClass}))){var d=i.getFirstTheme().styleClass;console.warn("Theme '"+l+"' not found! Using fallback '"+d+"'."),l=d}c.val(l),this.options.theme="",this.uhr.setTheme(l),this.options.autoresize&&$(window).on({resize:function(){var e=t.$element.parent(),n=$(window),i=e.width(),o=e.height(),r=n.width(),s=n.height(),u=Math.min(i,o,r,s)+"px";t.setWidth(u)}})},t.prototype.toggleConfigScreen=function(){$("#uhr-controlpanel"+this.id).toggle("fast")},t}(),l=function(){function t(t){this.widgetInstance=t,this.timer=null,this.currentMinute=null;var e=this.widgetInstance.options.time;void 0===this.widgetInstance.options.time&&(this.widgetInstance.options.time=new Date),this.cookieHandler=new s(this.widgetInstance.uuid,this.widgetInstance.options.cookiePath),this.parseHash(),this.renderer=new c(this,this.widgetInstance.element,this.widgetInstance.options,this.widgetInstance.uuid),this.renderer.render(),void 0!==e&&this.setTime(e)}return t.prototype.destroy=function(){this.timer&&(window.clearInterval(this.timer),this.timer=null),this.widgetInstance.element.removeAttr("style").removeAttr("class").empty(),$("#uhr-configlink"+this.widgetInstance.uuid).remove(),$("#uhr-controlpanel"+this.widgetInstance.uuid).remove()},t.prototype.start=function(){var t=this;this.isOn()||(this.timer=window.setInterval(function(){t.widgetInstance.options.time=new Date,t.update()},1e3),this.update(),this.cookieHandler.setStatus("on"))},t.prototype.stop=function(){this.isOn()&&(window.clearInterval(this.timer),this.timer=null,this.update(),this.cookieHandler.setStatus("off"))},t.prototype.toggle=function(){this.isOn()?this.stop():this.start()},t.prototype.setLayout=function(t){var e=this;t!==this.widgetInstance.options.language&&(this.widgetInstance.options.language=t,new h(this.getCurrentLayout(),this.widgetInstance.element.find(".letterarea")).render(function(){e.currentMinute=-1,e.update()}),this.cookieHandler.setLayout(t),this.update())},t.prototype.setTheme=function(t){t!==this.widgetInstance.options.theme&&(this.widgetInstance.element.removeClass(this.widgetInstance.options.theme).addClass(t),$("#uhr-onoffswitch"+this.widgetInstance.uuid).removeClass(this.widgetInstance.options.theme).addClass(t),this.widgetInstance.options.theme=t,this.cookieHandler.setTheme(t))},t.prototype.setTime=function(t){this.currentMinute=null,null===t?this.widgetInstance.options.time=new Date:(null!==this.timer&&window.clearInterval(this.timer),this.widgetInstance.options.time=t),this.update()},t.prototype.setMode=function(t){this.widgetInstance.options.mode=t,this.currentMinute=null,this.update(),this.cookieHandler.setMode(t)},t.prototype.setWidth=function(t){this.renderer.setWidth(t)},t.prototype.isOn=function(){return null!==this.timer},t.prototype.update=function(){if(this.isOn()){var t=this.widgetInstance.options.time;if(!this.getCurrentLayout().hasOwnProperty("seconds")&&"seconds"!==this.widgetInstance.options.mode){if(t.getMinutes()===this.currentMinute)return;this.currentMinute=t.getMinutes()}this.show(t)}else this.clear(),this.currentMinute=-1},t.prototype.show=function(t){var e=this.getSecond(t),n=this.getDotMinute(t),i=this.getHour(t),o=this.getCoarseMinute(t);if(this.clear(),"seconds"===this.widgetInstance.options.mode)this.highlight("second"+e);else{this.highlight("on");for(var r=1;r<=n;r++)this.highlight("dot"+r);this.highlight("minute"+o),this.highlight("hour"+i)}},t.prototype.clear=function(){this.widgetInstance.element.find(".item").removeClass("active")},t.prototype.highlight=function(t){this.widgetInstance.element.find(".item."+t).addClass("active")},t.prototype.getSecond=function(t){return"function"==typeof this.getCurrentLayout().getSeconds?this.getCurrentLayout().getSeconds(t):t.getSeconds()},t.prototype.getDotMinute=function(t){return"function"==typeof this.getCurrentLayout().getDotMinute?this.getCurrentLayout().getDotMinute(t):t.getMinutes()%5},t.prototype.getCoarseMinute=function(t){return"function"==typeof this.getCurrentLayout().getCoarseMinute?this.getCurrentLayout().getCoarseMinute(t):t.getMinutes()},t.prototype.getHour=function(t){if("function"==typeof this.getCurrentLayout().getHour)return this.getCurrentLayout().getHour(t);var e=t.getHours();return t.getMinutes()>=25?(e+1)%24:e},t.prototype.parseHash=function(){var t=this,e=window.location.hash;void 0!==e&&"#"===e.charAt(0)&&(e=e.substring(1),(e=decodeURIComponent(e)).split("&").forEach(function(e){var n=e.split("="),i=n[0],o=n[1];switch(i){case"l":case"language":t.widgetInstance.options.language=o,t.widgetInstance.options.force=!0;break;case"t":case"theme":t.widgetInstance.options.theme=o,t.widgetInstance.options.force=!0;break;case"m":case"mode":t.widgetInstance.options.mode=o,t.widgetInstance.options.force=!0;break;case"s":case"status":t.widgetInstance.options.status=o,t.widgetInstance.options.force=!0}}))},t.prototype.getCurrentLayout=function(){var t=this,e=i.getLayouts().filter(function(e){return e.code===t.widgetInstance.options.language},this);return e.length>0?e[0]:o},t}(),d=n(1);d("link[rel=stylesheet]").each(function(t,e){var n=d(e),o=n.attr("data-class");if(void 0!==o){var r=n.attr("data-name");void 0===r&&(r=o),i.registerTheme(r,o)}}),i.hasThemes()||i.registerTheme("","");var p={options:{width:"100%",status:"on",language:"de_CH",theme:i.getFirstTheme().styleClass,force:!1,controls:!0,cookiePath:void 0,autoresize:!0,mode:"normal"},start:function(){this._fritteliUhrInstance.start()},stop:function(){this._fritteliUhrInstance.stop()},toggle:function(){this._fritteliUhrInstance.toggle()},language:function(t){this._fritteliUhrInstance.setLayout(t)},theme:function(t){this._fritteliUhrInstance.setTheme(t)},time:function(t){this._fritteliUhrInstance.setTime(t)},mode:function(t){this._fritteliUhrInstance.setMode(t)},width:function(t){this._fritteliUhrInstance.setWidth(t)},_create:function(){this._fritteliUhrInstance=new l(this)},_destroy:function(){this._fritteliUhrInstance.destroy()},_fritteliUhrInstance:null};$.widget("fritteli.uhr",p),$.fritteli.uhr.register=i.registerLayout},function(t,e,n){"use strict";n.r(e);n(12);var i=n(2),o=n(3),r=n(4),s=n(5),u=n(6),a=n(7),h=n(8),c=n(9),l=n(10),d=n(11);o.LayoutDeCh,r.LayoutDeChGenau,i.LayoutDe,s.LayoutDk,u.LayoutEn,a.LayoutEs,h.LayoutFr,c.LayoutIt,l.LayoutNl,d.LayoutPt}]);
//# sourceMappingURL=uhr.bundle.js.map
\ No newline at end of file
diff --git a/dist/lib/uhr.bundle.js.map b/dist/lib/uhr.bundle.js.map
index aa52d0a..7606952 100644
--- a/dist/lib/uhr.bundle.js.map
+++ b/dist/lib/uhr.bundle.js.map
@@ -1 +1 @@
-{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///external \"Cookies\"","webpack:///external \"jQuery\"","webpack:///./src/layout/layout-de.ts","webpack:///./src/layout/layout-de_ch.ts","webpack:///./src/layout/layout-de_ch_genau.ts","webpack:///./src/layout/layout-dk.ts","webpack:///./src/layout/layout-en.ts","webpack:///./src/layout/layout-es.ts","webpack:///./src/layout/layout-fr.ts","webpack:///./src/layout/layout-it.ts","webpack:///./src/layout/layout-nl.ts","webpack:///./src/layout/layout-pt.ts","webpack:///./src/domain/globals.ts","webpack:///./src/domain/layout.ts","webpack:///./src/cookie-handler.ts","webpack:///./src/domain/letter.ts","webpack:///./src/layout-renderer.ts","webpack:///./src/uhr-renderer.ts","webpack:///./src/uhr.ts","webpack:///./src/theme-autodetector.ts","webpack:///./src/index.ts","webpack:///./src/bundle.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","Cookies","jQuery","__webpack_exports__","Layout_de","nach","4","vor","halb","5","fuenf","1","zehn","2","zwanzig","code","hours","0,12","9","1,13","6","2,14","3,15","7","4,16","5,17","6,18","8","7,19","8,20","9,21","10","10,22","11,23","letters","minutes","0,1,2,3,4","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","3","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","prettyName","version","$","fritteli","uhr","register","Layout_de_CH","ab","haubi","fuef","zae","viertu","zwaenzg","Layout_de_CH_genau","0","Layout_dk","minutter","over","fem","ti","kvart","tyve","halv","Layout_en","to","past","five","ten","a_quarter","twenty","twentyfive","getHour","time","hour","getHours","getMinutes","Layout_es","son_las","y","menos","cinco","diez","cuarto","veinte","veinticinco","Layout_fr","et","moins","heures","cinq","dix","quart","vingt","vingtcinq","12","Layout_it","sono_le","e","meno","cinque","dieci","un_quarto","venti","venticinque","Layout_nl","over1","voor1","half","vijf","tien","kwart","Layout_pt","e_","sao","e1","e2","dez","um_quarto","vinte","Globals","registerTheme","styleClass","themes","some","console","log","push","hasThemes","length","hasMultipleThemes","getFirstTheme","getTheme","index","getThemes","registerLayout","layout","layouts","element","error","sort","a","b","localeCompare","hasLayouts","hasMultipleLayouts","getFirstLayout","getLayouts","EMPTY_LAYOUT","cookie_handler_CookieHandler","CookieHandler","widgetId","cookiePath","this","getLayout","oldCookie","getCookie","removeCookie","setLayout","setCookie","getMode","setMode","getStatus","setStatus","status","setTheme","theme","cookieName","external_Cookies_","cookieValue","options","expires","path","Letter","style","addStyle","toString","layout_renderer_LayoutRendererV2Delegate","LayoutRendererV2Delegate","parse","forEach","lineString","line","parseArrayOrObject","seconds","parseTimeDefinition","parseObject","keys","map","Number","x","input","_this","Array","isArray","item","definition","listString","timeValues","split","highlightLetters","timeValue","vorne0","hinten0","vorne1","hinten1","vorne2","hinten2","vorne3","hinten3","vorne4","hinten4","vorne5","hinten5","hinten6","hinten7","hinten8","hinten9","11","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59","LayoutRenderer","renderarea","render","beforeshow","undefined","parsed","warn","parsedLayout","writable","configurable","fadeOut","empty","array","letter","append","fadeIn","uhr_renderer_UhrRenderer","UhrRenderer","$element","id","cookieHandler","setupHTML","wireFunctionality","setWidth","width","css","realWidth","height","addClass","controls","controlpanel","content","toggleSwitch","modeSwitch","languageChooser_1","themeChooser_1","closebutton","on","click","hide","after","configlink","toggleConfigScreen","toggle","force","prop","start","stop","languageChooser","change","languageKey","val","selectedLayout","language","found","fallbackLanguage","themeChooser","themeKey","selectedTheme","fallbackTheme","autoresize","window","resize","$parent","parent","$window","parentWidth","parentHeight","windowWidth","windowHeight","size","Math","min","uhr_Uhr","Uhr","widgetInstance","timer","currentMinute","userTime","Date","uuid","parseHash","renderer","setTime","destroy","clearInterval","removeAttr","remove","isOn","setInterval","update","getCurrentLayout","find","removeClass","show","clear","second","getSecond","dotMinute","getDotMinute","coarseMinute","getCoarseMinute","highlight","itemClass","getSeconds","date","hash","location","charAt","substring","decodeURIComponent","pair","matchingLanguages","filter","external_jQuery_","each","styleSheet","attr","name_1","widget","__fritteli_uhr_instance","_create","_destroy","_layout_layout_de__WEBPACK_IMPORTED_MODULE_1__","_layout_layout_de_ch__WEBPACK_IMPORTED_MODULE_2__","_layout_layout_de_ch_genau__WEBPACK_IMPORTED_MODULE_3__","_layout_layout_dk__WEBPACK_IMPORTED_MODULE_4__","_layout_layout_en__WEBPACK_IMPORTED_MODULE_5__","_layout_layout_es__WEBPACK_IMPORTED_MODULE_6__","_layout_layout_fr__WEBPACK_IMPORTED_MODULE_7__","_layout_layout_it__WEBPACK_IMPORTED_MODULE_8__","_layout_layout_nl__WEBPACK_IMPORTED_MODULE_9__","_layout_layout_pt__WEBPACK_IMPORTED_MODULE_10__"],"mappings":"aACA,IAAAA,EAAA,GAGA,SAAAC,EAAAC,GAGA,GAAAF,EAAAE,GACA,OAAAF,EAAAE,GAAAC,QAGA,IAAAC,EAAAJ,EAAAE,GAAA,CACAG,EAAAH,EACAI,GAAA,EACAH,QAAA,IAUA,OANAI,EAAAL,GAAAM,KAAAJ,EAAAD,QAAAC,IAAAD,QAAAF,GAGAG,EAAAE,GAAA,EAGAF,EAAAD,QAKAF,EAAAQ,EAAAF,EAGAN,EAAAS,EAAAV,EAGAC,EAAAU,EAAA,SAAAR,EAAAS,EAAAC,GACAZ,EAAAa,EAAAX,EAAAS,IACAG,OAAAC,eAAAb,EAAAS,EAAA,CAA0CK,YAAA,EAAAC,IAAAL,KAK1CZ,EAAAkB,EAAA,SAAAhB,GACA,oBAAAiB,eAAAC,aACAN,OAAAC,eAAAb,EAAAiB,OAAAC,YAAA,CAAwDC,MAAA,WAExDP,OAAAC,eAAAb,EAAA,cAAiDmB,OAAA,KAQjDrB,EAAAsB,EAAA,SAAAD,EAAAE,GAEA,GADA,EAAAA,IAAAF,EAAArB,EAAAqB,IACA,EAAAE,EAAA,OAAAF,EACA,KAAAE,GAAA,iBAAAF,QAAAG,WAAA,OAAAH,EACA,IAAAI,EAAAX,OAAAY,OAAA,MAGA,GAFA1B,EAAAkB,EAAAO,GACAX,OAAAC,eAAAU,EAAA,WAAyCT,YAAA,EAAAK,UACzC,EAAAE,GAAA,iBAAAF,EAAA,QAAAM,KAAAN,EAAArB,EAAAU,EAAAe,EAAAE,EAAA,SAAAA,GAAgH,OAAAN,EAAAM,IAAqBC,KAAA,KAAAD,IACrI,OAAAF,GAIAzB,EAAA6B,EAAA,SAAA1B,GACA,IAAAS,EAAAT,KAAAqB,WACA,WAA2B,OAAArB,EAAA,SAC3B,WAAiC,OAAAA,GAEjC,OADAH,EAAAU,EAAAE,EAAA,IAAAA,GACAA,GAIAZ,EAAAa,EAAA,SAAAiB,EAAAC,GAAsD,OAAAjB,OAAAkB,UAAAC,eAAA1B,KAAAuB,EAAAC,IAGtD/B,EAAAkC,EAAA,GAIAlC,IAAAmC,EAAA,oBClFAhC,EAAAD,QAAAkC,uBCAAjC,EAAAD,QAAAmC,qCCAArC,EAAAkB,EAAAoB,GAAAtC,EAAAU,EAAA4B,EAAA,8BAAAC,IAiBA,IAEMC,EAAuB,CAACC,EAAG,CAAC,EAAG,EAAG,GAAI,KACtCC,EAAsB,CAACD,EAAG,CAAC,EAAG,EAAG,IACjCE,EAAuB,CAACC,EAAG,CAAC,EAAG,EAAG,EAAG,IACrCC,EAAwB,CAACC,EAAG,CAAC,EAAG,EAAG,GAAI,KACvCC,EAAuB,CAACC,EAAG,CAAC,EAAG,EAAG,EAAG,IAErCC,EAA0B,CAACD,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,KAG3CT,EAAoB,CAC7BW,KAAM,KACNC,MAAO,CACHC,OAAQ,CAACC,EAAG,CAAC,EAAG,EAAG,EAAG,GAAI,KAC1BC,OAAQ,CAACC,EAAG,CAAC,EAAG,EAAG,EAAG,IACtBC,OAAQ,CAACD,EAAG,CAAC,EAAG,EAAG,GAAI,KACvBE,OAAQ,CAACC,EAAG,CAAC,EAAG,EAAG,EAAG,IACtBC,OAAQ,CAACD,EAAG,CAAC,EAAG,EAAG,GAAI,KACvBE,OAAQ,CAAChB,EAAG,CAAC,EAAG,EAAG,GAAI,KACvBiB,OAAQ,CAACC,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,IACzBC,OAAQ,CAACV,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAC5BW,OAAQ,CAACF,EAAG,CAAC,EAAG,EAAG,GAAI,KACvBG,OAAQ,CAACC,GAAI,CAAC,EAAG,EAAG,EAAG,IACvBC,QAAS,CAACD,GAAI,CAAC,EAAG,EAAG,EAAG,IACxBE,QAAS,CAACxB,EAAG,CAAC,EAAG,EAAG,KAExByB,QAAS,CACL,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,eAEJC,QAAS,CACLC,YAvCoB,CAACL,GAAI,CAAC,EAAG,GAAI,KAwCjCM,YAAa,CAAC3B,EAAOL,GACrBiC,iBAAkB,CAAC1B,EAAMP,GACzBkC,iBAAkB,CApCM,CAACC,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,KAoCpBnC,GAC5BoC,iBAAkB,CAAC3B,EAAST,GAC5BqC,iBAAkB,CAAChC,EAAOH,EAAKC,GAC/BmC,iBAAkBnC,EAClBoC,iBAAkB,CAAClC,EAAOL,EAAMG,GAChCqC,iBAAkB,CAAC/B,EAASP,GAC5BuC,iBAxC4B,CAACN,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,KAyChEO,iBAAkB,CAACnC,EAAML,GACzByC,iBAAkB,CAACtC,EAAOH,IAE9B0C,UArD2B,CAACtC,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,IAsD5CuC,WAAY,UACZC,QAAS,GAGbC,EAAEC,SAASC,IAAIC,SAASnD,iCC3ExBvC,EAAAkB,EAAAoB,GAAAtC,EAAAU,EAAA4B,EAAA,iCAAAqD,IAiBA,IACMC,EAAqB,CAACnD,EAAG,CAAC,EAAG,IAC7BC,EAAsB,CAACiC,EAAG,CAAC,EAAG,GAAI,KAClCkB,EAAwB,CAACpD,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,IACzCqD,EAAuB,CAAChD,EAAG,CAAC,EAAG,GAAI,KACnCiD,EAAsB,CAAC/C,EAAG,CAAC,EAAG,GAAI,KAClCgD,EAAyB,CAAChD,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAC7CiD,EAA0B,CAACtB,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAEvCgB,EAAuB,CAChCzC,KAAM,QACNC,MAAO,CACHC,OAAQ,CAACc,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAC7BZ,OAAQ,CAACV,EAAG,CAAC,EAAG,EAAG,IACnBY,OAAQ,CAACZ,EAAG,CAAC,EAAG,EAAG,EAAG,IACtBa,OAAQ,CAACb,EAAG,CAAC,EAAG,GAAI,KACpBe,OAAQ,CAACJ,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,IACzBK,OAAQ,CAACL,EAAG,CAAC,EAAG,EAAG,EAAG,IACtBM,OAAQ,CAACH,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAC5BK,OAAQ,CAACL,EAAG,CAAC,EAAG,EAAG,EAAG,GAAI,KAC1BM,OAAQ,CAACF,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,IACzBG,OAAQ,CAACH,EAAG,CAAC,EAAG,EAAG,EAAG,IACtBK,QAAS,CAACd,EAAG,CAAC,EAAG,EAAG,EAAG,IACvBe,QAAS,CAACf,EAAG,CAAC,EAAG,EAAG,GAAI,MAE5BgB,QAAS,CACL,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,eAEJC,QAAS,CACLE,YAAa,CAACsB,EAAMF,GACpBnB,iBAAkB,CAACsB,EAAKH,GACxBlB,iBAAkB,CAACsB,EAAQJ,GAC3BhB,iBAAkB,CAACqB,EAASL,GAC5Bf,iBAAkB,CAACiB,EAAMpD,EAAKmD,GAC9Bf,iBAAkBe,EAClBd,iBAAkB,CAACe,EAAMF,EAAIC,GAC7Bb,iBAAkB,CAACiB,EAASvD,GAC5BuC,iBAAkB,CAACe,EAAQtD,GAC3BwC,iBAAkB,CAACa,EAAKrD,GACxByC,iBAAkB,CAACW,EAAMpD,IAE7B0C,UAlD4B,CAACtC,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAmDhDuC,WAAY,aACZC,QAAS,GAGbC,EAAEC,SAASC,IAAIC,SAASC,iCCxExB3F,EAAAkB,EAAAoB,GAAAtC,EAAAU,EAAA4B,EAAA,uCAAA4D,IAiBA,IAEMN,EAAqB,CAACnD,EAAG,CAAC,EAAG,IAC7BC,EAAsB,CAACD,EAAG,CAAC,EAAG,EAAG,IACjCoD,EAAwB,CAACpD,EAAG,CAAC,EAAG,EAAG,EAAG,GAAI,KAC1CqD,EAAuB,CAAChD,EAAG,CAAC,EAAG,GAAI,KACnCiD,EAAsB,CAAC/C,EAAG,CAAC,EAAG,GAAI,KAClCgD,EAAyB,CAAChD,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAC7CiD,EAA0B,CAACtB,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAEvCuB,EAA6B,CACtChD,KAAM,cACNC,MAAO,CACHC,OAAQ,CAACc,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAC7BZ,OAAQ,CAACV,EAAG,CAAC,EAAG,EAAG,IACnBY,OAAQ,CAACZ,EAAG,CAAC,EAAG,EAAG,EAAG,IACtBa,OAAQ,CAACb,EAAG,CAAC,EAAG,GAAI,KACpBe,OAAQ,CAACJ,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,IACzBK,OAAQ,CAACL,EAAG,CAAC,EAAG,EAAG,EAAG,IACtBM,OAAQ,CAACH,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAC5BK,OAAQ,CAACL,EAAG,CAAC,EAAG,EAAG,EAAG,GAAI,KAC1BM,OAAQ,CAACF,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,IACzBG,OAAQ,CAACH,EAAG,CAAC,EAAG,EAAG,EAAG,IACtBK,QAAS,CAACd,EAAG,CAAC,EAAG,EAAG,EAAG,IACvBe,QAAS,CAACf,EAAG,CAAC,EAAG,EAAG,GAAI,MAE5BgB,QAAS,CACL,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,eAEJC,QAAS,CACL6B,EAtCsB,CAACxB,EAAG,CAAC,EAAG,EAAG,EAAG,GAAI,KAuCxCH,YAAa,CAACsB,EAAMF,GACpBnB,iBAAkB,CAACsB,EAAKH,GACxBlB,iBAAkB,CAACsB,EAAQJ,GAC3BhB,iBAAkB,CAACqB,EAASL,GAC5Bf,iBAAkB,CAACiB,EAAMpD,EAAKmD,GAC9Bf,iBAAkBe,EAClBd,iBAAkB,CAACe,EAAMF,EAAIC,GAC7Bb,iBAAkB,CAACiB,EAASvD,GAC5BuC,iBAAkB,CAACe,EAAQtD,GAC3BwC,iBAAkB,CAACa,EAAKrD,GACxByC,iBAAkB,CAACW,EAAMpD,IAE7B0C,UApD4B,CAACtC,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAqDhDuC,WAAY,qBACZC,QAAS,GAGbC,EAAEC,SAASC,IAAIC,SAASQ,iCC1ExBlG,EAAAkB,EAAAoB,GAAAtC,EAAAU,EAAA4B,EAAA,8BAAA8D,IAiBA,IACMC,EAA2B,CAAC5D,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,KACtDrC,EAAoB,CAACwC,EAAG,CAAC,IACzB0D,EAAuB,CAAC1D,EAAG,CAAC,EAAG,EAAG,EAAG,IACrC2D,EAAsB,CAACvD,EAAG,CAAC,EAAG,EAAG,IACjCwD,EAAqB,CAAC/D,EAAG,CAAC,EAAG,IAC7BgE,EAAwB,CAAC9B,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,IACzC+B,EAAuB,CAAC1D,EAAG,CAAC,EAAG,EAAG,EAAG,IACrC2D,EAAuB,CAACpD,EAAG,CAAC,EAAG,EAAG,GAAI,KAE/B6C,EAAoB,CAC7BlD,KAAM,KACNC,MAAO,CACHC,OAAQ,CAACc,GAAI,CAAC,EAAG,EAAG,GAAI,KACxBZ,OAAQ,CAACI,EAAG,CAAC,EAAG,IAChBF,OAAQ,CAACE,EAAG,CAAC,EAAG,IAChBD,OAAQ,CAACC,EAAG,CAAC,EAAG,EAAG,IACnBC,OAAQ,CAACD,EAAG,CAAC,EAAG,EAAG,GAAI,KACvBE,OAAQ,CAACE,EAAG,CAAC,EAAG,EAAG,IACnBD,OAAQ,CAACC,EAAG,CAAC,EAAG,EAAG,EAAG,IACtBC,OAAQ,CAACD,EAAG,CAAC,EAAG,GAAI,KACpBE,OAAQ,CAACX,EAAG,CAAC,EAAG,EAAG,EAAG,IACtBY,OAAQ,CAACZ,EAAG,CAAC,EAAG,IAChBc,QAAS,CAACd,EAAG,CAAC,GAAI,KAClBe,QAAS,CAACF,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,KAElCG,QAAS,CACL,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,eAEJC,QAAS,CACLE,YAAa,CAAC+B,EAAKF,EAAUC,GAC7B7B,iBAAkB,CAAC+B,EAAIH,EAAUC,GACjC5B,iBAAkB,CAAC+B,EAAOH,GAC1B1B,iBAAkB,CAAC8B,EAAML,EAAUC,GACnCzB,iBAAkB,CAAC0B,EAAKF,EAAUjG,EAAGuG,GACrC7B,iBAAkB,CAAC6B,GACnB5B,iBAAkB,CAACwB,EAAKF,EAAUC,EAAMK,GACxC3B,iBAAkB,CAAC0B,EAAML,EAAUjG,GACnC6E,iBAAkB,CAACwB,EAAOrG,GAC1B8E,iBAAkB,CAACsB,EAAIH,EAAUjG,GACjC+E,iBAAkB,CAACoB,EAAKF,EAAUjG,IAEtCgF,UAnD+B,CAACtC,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,KAoD5DuC,WAAY,QACZC,QAAS,GAGbC,EAAEC,SAASC,IAAIC,SAASU,iCCzExBpG,EAAAkB,EAAAoB,GAAAtC,EAAAU,EAAA4B,EAAA,8BAAAsE,IAiBA,IAEMC,EAAqB,CAACpE,EAAG,CAAC,GAAI,KAC9BqE,EAAuB,CAAClE,EAAG,CAAC,EAAG,EAAG,EAAG,IAErCmE,EAAuB,CAACpC,EAAG,CAAC,EAAG,EAAG,EAAG,KACrCqC,EAAsB,CAACvE,EAAG,CAAC,EAAG,EAAG,IACjCwE,EAA4B,CAACjE,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IACtDkE,EAAyB,CAACvC,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAC7CwC,EAA6B,CAACxC,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,KAEtDiC,EAAoB,CAC7B1D,KAAM,KACNkE,QAAS,SAACC,GACN,IAAMC,EAAOD,EAAKE,WAClB,OAAIF,EAAKG,cAAgB,IACbF,EAAO,GAAK,GAEjBA,GAGXnE,MAAO,CACHC,OAAQ,CAACC,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,KAC7BC,OAAQ,CAACC,EAAG,CAAC,EAAG,EAAG,IACnBC,OAAQ,CAACE,EAAG,CAAC,EAAG,GAAI,KACpBD,OAAQ,CAACF,EAAG,CAAC,EAAG,EAAG,EAAG,GAAI,KAC1BI,OAAQ,CAACD,EAAG,CAAC,EAAG,EAAG,EAAG,IACtBE,OAAQ,CAACF,EAAG,CAAC,EAAG,EAAG,EAAG,IACtBG,OAAQ,CAACN,EAAG,CAAC,EAAG,EAAG,IACnBQ,OAAQ,CAACV,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,IACzBW,OAAQ,CAACF,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,IACzBG,OAAQ,CAACrB,EAAG,CAAC,EAAG,EAAG,GAAI,KACvBuB,QAAS,CAACD,GAAI,CAAC,EAAG,EAAG,IACrBE,QAAS,CAACN,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,MAElCO,QAAS,CACL,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,eAEJC,QAAS,CACLC,YA5CwB,CAACL,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,KA6CjDM,YAAa,CAACuC,EAAMD,GACpBrC,iBAAkB,CAACuC,EAAKF,GACxBpC,iBAAkB,CAACuC,EAAWH,GAC9BlC,iBAAkB,CAACsC,EAAQJ,GAC3BjC,iBAAkB,CAACsC,EAAYL,GAC/BhC,iBAAkB,CArDG,CAACrC,EAAG,CAAC,EAAG,EAAG,EAAG,IAqDVqE,GACzB/B,iBAAkB,CAACoC,EAAYN,GAC/B7B,iBAAkB,CAACkC,EAAQL,GAC3B5B,iBAAkB,CAACgC,EAAWJ,GAC9B3B,iBAAkB,CAAC8B,EAAKH,GACxB1B,iBAAkB,CAAC4B,EAAMF,IAE7BzB,UA7D0B,CAACtC,EAAG,CAAC,EAAG,EAAG,EAAG,IA8DxCuC,WAAY,UACZC,QAAS,GAGbC,EAAEC,SAASC,IAAIC,SAASkB,iCCnFxB5G,EAAAkB,EAAAoB,GAAAtC,EAAAU,EAAA4B,EAAA,8BAAAmF,IAiBA,IACMC,EAA0B,CAAC5E,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAC9C6E,EAAoB,CAACjE,EAAG,CAAC,IACzBkE,EAAwB,CAAClE,EAAG,CAAC,EAAG,EAAG,EAAG,GAAI,KAE1CmE,EAAwB,CAACxE,EAAG,CAAC,EAAG,EAAG,EAAG,GAAI,KAC1CyE,EAAuB,CAAChE,EAAG,CAAC,EAAG,EAAG,GAAI,KACtCiE,EAAyB,CAAC7D,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,KAC/C8D,EAAyB,CAAClE,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAC7CmE,EAA8B,CAAC5E,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,KAE3DoE,EAAoB,CAC7BvE,KAAM,KACNkE,QAAS,SAACC,GACN,IAAMC,EAAOD,EAAKE,WAClB,OAAIF,EAAKG,cAAgB,IACbF,EAAO,GAAK,GAEjBA,GAGXnE,MAAO,CACHC,OAAQ,CAACsE,EAAS,CAAChE,EAAG,CAAC,EAAG,EAAG,EAAG,KAChCJ,OAAQ,CAvBc,CAACR,EAAG,CAAC,EAAG,EAAG,EAAG,IAuBpB,CAACA,EAAG,CAAC,EAAG,GAAI,MAC5BU,OAAQ,CAACkE,EAAS,CAAC1E,EAAG,CAAC,EAAG,EAAG,KAC7BS,OAAQ,CAACiE,EAAS,CAAC1E,EAAG,CAAC,EAAG,EAAG,EAAG,KAChCW,OAAQ,CAAC+D,EAAS,CAAC/C,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,KACtCf,OAAQ,CAAC8D,EAAS,CAAC/C,EAAG,CAAC,EAAG,EAAG,EAAG,GAAI,MACpCd,OAAQ,CAAC6D,EAAS,CAACjF,EAAG,CAAC,EAAG,EAAG,EAAG,KAChCsB,OAAQ,CAAC2D,EAAS,CAACjF,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,MACnCuB,OAAQ,CAAC0D,EAAS,CAAC9E,EAAG,CAAC,EAAG,EAAG,EAAG,KAChCqB,OAAQ,CAACyD,EAAS,CAAC9E,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,KACnCuB,QAAS,CAACuD,EAAS,CAACnE,EAAG,CAAC,EAAG,EAAG,EAAG,KACjCa,QAAS,CAACsD,EAAS,CAACnE,EAAG,CAAC,EAAG,EAAG,GAAI,OAEtCc,QAAS,CACL,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,eAEJC,QAAS,CACLE,YAAa,CAACmD,EAAGE,GACjBpD,iBAAkB,CAACkD,EAAGG,GACtBpD,iBAAkB,CAACiD,EAAGI,GACtBnD,iBAAkB,CAAC+C,EAAGK,GACtBnD,iBAAkB,CAAC8C,EAAGM,GACtBnD,iBAAkB,CAAC6C,EAjDG,CAACzD,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,KAkDxCa,iBAAkB,CAAC6C,EAAOK,GAC1BjD,iBAAkB,CAAC4C,EAAOI,GAC1B/C,iBAAkB,CAAC2C,EAAOG,GAC1B7C,iBAAkB,CAAC0C,EAAOE,GAC1B3C,iBAAkB,CAACyC,EAAOC,IAE9BzC,UAAW,KACXC,WAAY,UACZC,QAAS,GAGbC,EAAEC,SAASC,IAAIC,SAAS+B,iCClFxBzH,EAAAkB,EAAAoB,GAAAtC,EAAAU,EAAA4B,EAAA,8BAAA4F,IAiBA,IACMC,EAAqB,CAACrE,EAAG,CAAC,EAAG,IAC7BsE,EAAwB,CAAC1E,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,IAEzC2E,EAAyB,CAAC9E,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,KAE9C+E,EAAuB,CAACjF,EAAG,CAAC,EAAG,EAAG,EAAG,KACrCkF,EAAsB,CAAC7E,EAAG,CAAC,EAAG,GAAI,KAClC8E,EAAwB,CAAC1E,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,IACzC2E,EAAwB,CAACpF,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,IACzCqF,EAA4B,CAACrF,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,KAErD6E,EAAoB,CAC7BhF,KAAM,KACNkE,QAAS,SAACC,GACN,IAAMC,EAAOD,EAAKE,WAClB,OAAIF,EAAKG,cAAgB,IACbF,EAAO,GAAK,GAEjBA,GAEXnE,MAAO,CACHgD,EAAK,CAACvD,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,KAC1BU,OAAQ,CACJ,CAACqB,EAAG,CAAC,EAAG,EAAG,IACX0D,GAEJ7E,OAAQ,CACJ,CAACV,EAAG,CAAC,EAAG,EAAG,GAAI,KACfuF,GAEJ5E,OAAQ,CACJ,CAACT,EAAG,CAAC,EAAG,EAAG,EAAG,GAAI,KAClBqF,GAEJ1E,OAAQ,CACJ,CAACX,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IACpBqF,GAEJzE,OAAQ,CACJ,CAACnB,EAAG,CAAC,EAAG,EAAG,GAAI,KACf4F,GAEJxE,OAAQ,CACJ,CAACpB,EAAG,CAAC,EAAG,EAAG,IACX4F,GAEJtE,OAAQ,CACJ,CAACY,EAAG,CAAC,EAAG,EAAG,GAAI,KACf0D,GAEJrE,OAAQ,CACJ,CAACvB,EAAG,CAAC,EAAG,EAAG,EAAG,IACd4F,GAEJpE,OAAQ,CACJ,CAACU,EAAG,CAAC,EAAG,EAAG,EAAG,IACd0D,GAEJlE,QAAS,CACL,CAACvB,EAAG,CAAC,EAAG,EAAG,IACXyF,GAEJjE,QAAS,CACL,CAACb,EAAG,CAAC,EAAG,EAAG,EAAG,IACd8E,GAEJM,GAAM,CAAC/F,EAAG,CAAC,EAAG,EAAG,EAAG,KAExByB,QAAS,CACL,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,eAEJC,QAAS,CACLE,YAAa8D,EACb7D,iBAAkB8D,EAClB7D,iBAAkB,CAACyD,EAAIK,GACvB5D,iBAAkB6D,EAClB5D,iBAAkB6D,EAClB5D,iBAAkB,CAACqD,EApFG,CAACjE,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,KAqFxCa,iBAAkB,CAACqD,EAAOM,GAC1B1D,iBAAkB,CAACoD,EAAOK,GAC1BxD,iBAAkB,CAACmD,EArFA,CAAC1E,EAAG,CAAC,EAAG,IAqFG8E,GAC9BtD,iBAAkB,CAACkD,EAAOG,GAC1BpD,iBAAkB,CAACiD,EAAOE,IAE9BlD,UA9F2B,CAACtC,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,IA+F5CuC,WAAY,WACZC,QAAS,GAGbC,EAAEC,SAASC,IAAIC,SAASwC,iCCpHxBlI,EAAAkB,EAAAoB,GAAAtC,EAAAU,EAAA4B,EAAA,8BAAAsG,IAiBA,IAAMC,EAA0B,CAAC/F,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAE9CgG,EAAoB,CAAChF,EAAG,CAAC,IACzBiF,EAAuB,CAACrF,EAAG,CAAC,EAAG,EAAG,GAAI,KAEtCsF,EAAyB,CAAC3F,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,KAC9C4F,EAAwB,CAAC/E,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAC1CgF,EAA4B,CAACpF,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,KACvDqF,EAAwB,CAAC9F,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,IACzC+F,EAA8B,CAAC/F,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,KAE3DuF,EAAoB,CAC7B1F,KAAM,KACNkE,QAAS,SAACC,GACN,IAAMC,EAAOD,EAAKE,WAClB,OAAIF,EAAKG,cAAgB,IACbF,EAAO,GAAK,GAEjBA,GAEXnE,MAAO,CACHC,OAAQ,CAACyF,EAAS,CAACjG,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,KACtCU,OAAQ,CArBY,CAACN,EAAG,CAAC,EAAG,EAAG,IAqBjB,CAACA,EAAG,CAAC,EAAG,EAAG,KACzBQ,OAAQ,CAACqF,EAAS,CAAC7F,EAAG,CAAC,EAAG,GAAI,MAC9BS,OAAQ,CAACoF,EAAS,CAAClE,EAAG,CAAC,EAAG,EAAG,KAC7BhB,OAAQ,CAACkF,EAAS,CAACtF,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,KACzCK,OAAQ,CAACiF,EAAS,CAACnF,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,KACtCG,OAAQ,CAACgF,EAAS,CAACtF,EAAG,CAAC,EAAG,GAAI,MAC9BQ,OAAQ,CAAC8E,EAAS,CAACjG,EAAG,CAAC,EAAG,EAAG,EAAG,GAAI,MACpCoB,OAAQ,CAAC6E,EAAS,CAAClE,EAAG,CAAC,EAAG,EAAG,EAAG,KAChCV,OAAQ,CAAC4E,EAAS,CAAClE,EAAG,CAAC,EAAG,EAAG,GAAI,MACjCR,QAAS,CAAC0E,EAAS,CAACpG,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,KACpC2B,QAAS,CAACyE,EAAS,CAACpG,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,OAE5C4B,QAAS,CACL,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,eAEJC,QAAS,CACLE,YAAa,CAACsE,EAAGE,GACjBvE,iBAAkB,CAACqE,EAAGG,GACtBvE,iBAAkB,CAACoE,EAAGI,GACtBtE,iBAAkB,CAACkE,EAAGK,GACtBtE,iBAAkB,CAACiE,EAAGM,GACtBtE,iBAAkB,CAACgE,EAhDG,CAAC5E,GAAI,CAAC,EAAG,EAAG,EAAG,GAAI,MAiDzCa,iBAAkB,CAACgE,EAAMK,GACzBpE,iBAAkB,CAAC+D,EAAMI,GACzBlE,iBAAkB,CAAC8D,EAAMG,GACzBhE,iBAAkB,CAAC6D,EAAME,GACzB9D,iBAAkB,CAAC4D,EAAMC,IAE7B5D,UAAW,KACXC,WAAY,WACZC,QAAS,GAGbC,EAAEC,SAASC,IAAIC,SAASkD,iCCjFxB5I,EAAAkB,EAAAoB,GAAAtC,EAAAU,EAAA4B,EAAA,8BAAA+G,IAiBA,IACMC,EAAwB,CAAC3E,EAAG,CAAC,EAAG,EAAG,EAAG,IACtC4E,EAAwB,CAACvG,EAAG,CAAC,EAAG,EAAG,GAAI,KAGvCwG,EAAuB,CAAC/G,EAAG,CAAC,EAAG,EAAG,EAAG,IACrCgH,EAAuB,CAAC3G,EAAG,CAAC,EAAG,EAAG,GAAI,KACtC4G,EAAuB,CAAC1G,EAAG,CAAC,EAAG,EAAG,EAAG,IACrC2G,EAAwB,CAAChF,EAAG,CAAC,EAAG,EAAG,EAAG,GAAI,KAGnC0E,EAAoB,CAC7BnG,KAAM,KACNkE,QAAS,SAACC,GACN,IAAMC,EAAOD,EAAKE,WAClB,OAAIF,EAAKG,cAAgB,IACbF,EAAO,GAAK,GAEjBA,GAEXnE,MAAO,CACHC,OAAQ,CAACc,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAC7BZ,OAAQ,CAACV,EAAG,CAAC,EAAG,EAAG,KACnBY,OAAQ,CAACD,EAAG,CAAC,EAAG,EAAG,EAAG,IACtBE,OAAQ,CAACF,EAAG,CAAC,EAAG,EAAG,GAAI,KACvBI,OAAQ,CAACD,EAAG,CAAC,EAAG,EAAG,EAAG,IACtBE,OAAQ,CAACF,EAAG,CAAC,EAAG,EAAG,EAAG,IACtBG,OAAQ,CAACH,EAAG,CAAC,EAAG,GAAI,KACpBK,OAAQ,CAACD,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,IACzBE,OAAQ,CAACX,EAAG,CAAC,EAAG,EAAG,EAAG,IACtBY,OAAQ,CAACH,EAAG,CAAC,EAAG,EAAG,EAAG,GAAI,KAC1BK,QAAS,CAACd,EAAG,CAAC,EAAG,EAAG,EAAG,IACvBe,QAAS,CAACf,EAAG,CAAC,EAAG,GAAI,MAEzBgB,QAAS,CACL,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,eAEJC,QAAS,CACLC,YAtCoB,CAACL,GAAI,CAAC,EAAG,GAAI,KAuCjCM,YAAa,CAACiF,EAAMH,GACpB7E,iBAAkB,CAACiF,EAAMJ,GACzB5E,iBAAkB,CAACiF,EA/CG,CAAClH,EAAG,CAAC,EAAG,EAAG,GAAI,MAgDrCmC,iBAAkB,CAAC8E,EAAMH,EAAOC,GAChC3E,iBAAkB,CAAC4E,EAAMF,EAAOC,GAChC1E,iBAAkB0E,EAClBzE,iBAAkB,CAAC0E,EAAMH,EAAOE,GAChCxE,iBAAkB,CAAC0E,EAAMJ,EAAOE,GAChCvE,iBAAkB,CAAC0E,EApDG,CAAC/G,EAAG,CAAC,EAAG,EAAG,EAAG,KAqDpCsC,iBAAkB,CAACwE,EAAMH,GACzBpE,iBAAkB,CAACsE,EAAMF,IAE7BnE,UA5D2B,CAACtC,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,IA6D5CuC,WAAY,aACZC,QAAS,GAGbC,EAAEC,SAASC,IAAIC,SAAS2D,iCClFxBrJ,EAAAkB,EAAAoB,GAAAtC,EAAAU,EAAA4B,EAAA,8BAAAsH,IAiBA,IAAMC,EAAqB,CAAC/G,EAAG,CAAC,IAC1BgH,EAAsB,CAAChH,EAAG,CAAC,EAAG,EAAG,IACjCiH,EAAqB,CAACrG,EAAG,CAAC,IAC1BsG,EAAqB,CAAC9F,GAAI,CAAC,IAC3B0D,EAAwB,CAAClE,EAAG,CAAC,EAAG,EAAG,EAAG,GAAI,KAE1CmE,EAAwB,CAAC3D,GAAI,CAAC,EAAG,EAAG,EAAG,GAAI,KAC3C+F,EAAsB,CAAC/F,GAAI,CAAC,EAAG,EAAG,IAClCgG,EAA4B,CAAC7G,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IACtD8G,EAAwB,CAACrG,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,IAElC8F,EAAoB,CAC7B1G,KAAM,KACNkE,QAAS,SAACC,GACN,IAAMC,EAAOD,EAAKE,WAClB,OAAIF,EAAKG,cAAgB,IACbF,EAAO,GAAK,GAEjBA,GAEXnE,MAAO,CACHgD,EAAK,CAAC0D,EAAI,CAACtG,EAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,MAC1CoF,GAAM,CAACkB,EAAI,CAAC7G,EAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,KACpCM,OAAQ,CAACuG,EAAI,CAAC/G,EAAK,CAAC,EAAG,EAAG,KAC1BU,OAAQ,CAACsG,EAAK,CAACnF,EAAK,CAAC,EAAG,EAAG,EAAG,KAC9BlB,OAAQ,CAACqG,EAAK,CAAChH,EAAK,CAAC,EAAG,EAAG,GAAI,MAC/Ba,OAAQ,CAACmG,EAAK,CAACrH,EAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,KACpCmB,OAAQ,CAACkG,EAAK,CAAClH,EAAK,CAAC,EAAG,EAAG,EAAG,EAAG,KACjCiB,OAAQ,CAACiG,EAAK,CAACnF,EAAK,CAAC,EAAG,EAAG,EAAG,KAC9BZ,OAAQ,CAAC+F,EAAK,CAACnF,EAAK,CAAC,EAAG,EAAG,EAAG,MAC9BX,OAAQ,CAAC8F,EAAK,CAAClH,EAAK,CAAC,EAAG,EAAG,EAAG,KAC9BqB,OAAQ,CAAC6F,EAAK,CAACrH,EAAK,CAAC,EAAG,EAAG,GAAI,MAC/B0B,QAAS,CAAC2F,EAAK,CAAC9G,EAAK,CAAC,EAAG,GAAI,MAC7BoB,QAAS,CAAC0F,EAAK,CAAClH,EAAK,CAAC,EAAG,EAAG,GAAI,OAEpCyB,QAAS,CACL,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,eAEJC,QAAS,CACLE,YAAa,CAACuF,EAAIlC,GAClBpD,iBAAkB,CAACsF,EAAIE,GACvBvF,iBAAkB,CAACqF,EAAIG,GACvBtF,iBAAkB,CAACmF,EAAII,GACvBtF,iBAAkB,CAACkF,EAAII,EAAOH,EAAInC,GAClC/C,iBAAkB,CAACiF,EAhDE,CAACjG,EAAG,CAAC,EAAG,EAAG,GAAI,MAiDpCiB,iBAAkB,CAAC6C,EAAOuC,EAAOH,EAAInC,GACrC7C,iBAAkB,CAAC4C,EAAOuC,GAC1BlF,iBAAkB,CAAC2C,EAAOsC,GAC1BhF,iBAAkB,CAAC0C,EAAOqC,GAC1B9E,iBAAkB,CAACyC,EAAOC,IAE9BzC,UAAW,KACXC,WAAY,YACZC,QAAS,GAGbC,EAAEC,SAASC,IAAIC,SAASkE,wCChExB,IAAAQ,EAAA,oBAAAA,KAqEA,OAjEWA,EAAAC,cAAP,SAAqB1J,EAAc2J,GAC3BF,EAAQG,OAAOC,KAAK,SAAAnJ,GAAS,OAAAA,EAAMV,OAASA,IAC5C8J,QAAQC,IAAI,oBAAoB/J,EAAI,mEAAmE2J,EAAU,MAEjHF,EAAQG,OAAOI,KAAK,CAChBhK,KAAIA,EACJ2J,WAAUA,KAKfF,EAAAQ,UAAP,WACI,OAAOR,EAAQG,OAAOM,OAAS,GAG5BT,EAAAU,kBAAP,WACI,OAAOV,EAAQG,OAAOM,OAAS,GAG5BT,EAAAW,cAAP,WACI,OAAOX,EAAQY,SAAS,IAGrBZ,EAAAY,SAAP,SAAgBC,GACZ,OAAOb,EAAQG,OAAOU,IAGnBb,EAAAc,UAAP,WACI,OAAOd,EAAQG,QAGZH,EAAAe,eAAP,SAAsBC,IACChB,EAAQiB,QAAQb,KAAK,SAAAc,GAChC,OAAIF,EAAOlI,OAASoI,EAAQpI,OACpBkI,EAAO/F,aAAeiG,EAAQjG,YAC9BoF,QAAQc,MACJ,yBAAyBH,EAAOlI,KAAI,sCAAsCkI,EAAO/F,WAAU,kDAAkDiG,EAAQjG,WAAU,OAGhK,OAMf+E,EAAQiB,QAAQV,KAAKS,GACrBhB,EAAQiB,QAAQG,KAAK,SAACC,EAAGC,GAAM,OAAAD,EAAEpG,WAAWsG,cAAcD,EAAErG,gBAI7D+E,EAAAwB,WAAP,WACI,OAAOxB,EAAQiB,QAAQR,OAAS,GAG7BT,EAAAyB,mBAAP,WACI,OAAOzB,EAAQiB,QAAQR,OAAS,GAG7BT,EAAA0B,eAAP,WACI,OAAO1B,EAAQiB,QAAQ,IAGpBjB,EAAA2B,WAAP,WACI,OAAO3B,EAAQiB,SAlEJjB,EAAAiB,QAAoB,GACpBjB,EAAAG,OAAkB,GAmErCH,EArEA,GCuBa4B,EAAuB,CAChC9I,KAAM,KACNC,MAAO,KACPkB,QAAS,GACTC,QAAS,KACTc,UAAW,GACXC,WAAY,KACZC,QAAS,UC/Bb2G,EAAA,WACI,SAAAC,EAAoBC,EAA0BC,GAA1BC,KAAAF,WAA0BE,KAAAD,aA+DlD,OA5DIF,EAAAlK,UAAAsK,UAAA,WACI,IAAMC,EAAYF,KAAKG,UAAU,gBAMjC,OALMD,IAEFF,KAAKI,aAAa,gBAClBJ,KAAKK,UAAUH,IAEZF,KAAKG,UAAU,eAG1BN,EAAAlK,UAAA0K,UAAA,SAAUtB,GACNiB,KAAKM,UAAU,aAAcvB,IAGjCc,EAAAlK,UAAA4K,QAAA,WACI,OAAOP,KAAKG,UAAU,aAG1BN,EAAAlK,UAAA6K,QAAA,SAAQtL,GACJ8K,KAAKM,UAAU,WAAYpL,IAI/B2K,EAAAlK,UAAA8K,UAAA,WACI,OAAOT,KAAKG,UAAU,eAG1BN,EAAAlK,UAAA+K,UAAA,SAAUC,GACNX,KAAKM,UAAU,aAAcK,IAGjCd,EAAAlK,UAAAgJ,SAAA,WACI,OAAOqB,KAAKG,UAAU,cAG1BN,EAAAlK,UAAAiL,SAAA,SAASC,GACLb,KAAKM,UAAU,YAAaO,IAGxBhB,EAAAlK,UAAAwK,UAAR,SAAkBW,GACd,OAAOC,EAAA,IAAYD,EAAad,KAAKF,WAGjCD,EAAAlK,UAAA2K,UAAR,SAAkBQ,EAAoBE,GAClC,IAAIC,EAEAA,EADEjB,KAAKD,WACG,CAACmB,QAAS,IAAKC,KAAMnB,KAAKD,YAE1B,CAACmB,QAAS,KAExBH,EAAA,IAAYD,EAAad,KAAKF,SAAUkB,EAAaC,IAGjDpB,EAAAlK,UAAAyK,aAAR,SAAqBU,GACXd,KAAKD,WACPgB,EAAA,OAAeD,EAAad,KAAKF,SAAU,CAACqB,KAAMnB,KAAKD,aAEvDgB,EAAA,OAAeD,EAAad,KAAKF,WAG7CD,EAhEA,GCGAuB,EAAA,WAII,SAAAA,EAAYpM,EAAeqM,GAFnBrB,KAAAqB,MAAgB,GAGpBrB,KAAKhL,MAAQA,EACPqM,IACFrB,KAAKqB,MAAQA,GAezB,OAXID,EAAAzL,UAAA2L,SAAA,SAASD,GACc,KAAfrB,KAAKqB,MACLrB,KAAKqB,MAAQA,EAEbrB,KAAKqB,OAAS,IAAIA,GAI1BD,EAAAzL,UAAA4L,SAAA,WACI,MAAO,4BAA4BvB,KAAKqB,MAAK,KAAKrB,KAAKhL,MAAK,WAEpEoM,EAtBA,GCFAI,EAAA,WAgNI,SAAAC,EAAoB1C,GAAAiB,KAAAjB,SAsDxB,OAnDW0C,EAAA9L,UAAA+L,MAAP,WACI,IAAM1J,EAAsB,GAgB5B,OAfAgI,KAAKjB,OAAO/G,QAAQ2J,QAAQ,SAAAC,GAExB,IADA,IAAMC,EAAiB,GACdzN,EAAI,EAAGA,EAAIwN,EAAWpD,OAAQpK,IACnCyN,EAAKvD,KAAK,IAAI8C,EAAOQ,EAAWxN,KAEpC4D,EAAQsG,KAAKuD,KAEjB7B,KAAK8B,mBAAmB9J,EAAS,KAAMgI,KAAKjB,OAAOhG,gBAChB,IAAxBiH,KAAKjB,OAAOgD,SAAmD,OAAxB/B,KAAKjB,OAAOgD,QAC1D/B,KAAKgC,oBAAoBhK,EAAS,SAAUgI,KAAKjB,OAAOgD,SAExD/B,KAAKgC,oBAAoBhK,EAAS,SAAUyJ,EAAyBM,SAEzE/B,KAAKgC,oBAAoBhK,EAAS,SAAUgI,KAAKjB,OAAO9G,SACxD+H,KAAKgC,oBAAoBhK,EAAS,OAAQgI,KAAKjB,OAAOjI,OAC/CkB,GAGHyJ,EAAA9L,UAAAsM,YAAR,SAAoBjK,EAAqBiG,EAAoBxI,GACrD,MAAOA,GACPhB,OAAOyN,KAAKzM,GACP0M,IAAI,SAAA7M,GAAO,OAAA8M,OAAO9M,KAClBqM,QACG,SAAArG,GAAK,OAAA7F,EAAO6F,GAAGqG,QACX,SAAAU,GAAK,OAAArK,EAAQsD,EAAI,GAAG+G,EAAI,GAAGf,SAASrD,QAMhDwD,EAAA9L,UAAAmM,mBAAR,SAA2B9J,EAAqBiG,EAAoBqE,GAApE,IAAAC,EAAAvC,KACQ,MAAOsC,IACHE,MAAMC,QAAQH,GACdA,EAAMX,QAAQ,SAAAe,GAAQ,OAAAH,EAAKN,YAAYjK,EAASiG,EAAYyE,KAE5D1C,KAAKiC,YAAYjK,EAASiG,EAAYqE,KAK1Cb,EAAA9L,UAAAqM,oBAAR,SAA4BhK,EAAqBiG,EAAoB0E,GAArE,IAAAJ,EAAAvC,KACQ,MAAO2C,GACPlO,OAAOyN,KAAKS,GAAYhB,QAAQ,SAAAiB,GAC5B,IAAMC,EAAuBD,EAAWE,MAAM,KACxCC,EAAsDJ,EAAWC,GACvEC,EAAWlB,QAAQ,SAAAqB,GAAa,OAAAT,EAAKT,mBAAmB9J,EAASiG,EAAa+E,EAAWD,QAjQ7EtB,EAAAwB,OAAyB,CAC7C3K,EAAG,CAAC,EAAG,EAAG,GACVlC,EAAG,CAAC,EAAG,GACPG,EAAG,CAAC,EAAG,EAAG,GACVW,EAAG,CAAC,EAAG,EAAG,GACVG,EAAG,CAAC,EAAG,EAAG,GACVI,EAAG,CAAC,EAAG,GACPT,EAAG,CAAC,EAAG,EAAG,IAEUyK,EAAAyB,QAA0B,CAC9C5K,EAAG,CAAC,EAAG,EAAG,IACVlC,EAAG,CAAC,EAAG,IACPG,EAAG,CAAC,EAAG,GAAI,IACXW,EAAG,CAAC,EAAG,EAAG,IACVG,EAAG,CAAC,EAAG,EAAG,IACVI,EAAG,CAAC,EAAG,IACPT,EAAG,CAAC,EAAG,EAAG,KAEUyK,EAAA0B,OAAyB,CAC7C7K,EAAG,CAAC,GACJlC,EAAG,CAAC,EAAG,GACPG,EAAG,CAAC,GACJW,EAAG,CAAC,GACJG,EAAG,CAAC,GACJI,EAAG,CAAC,GACJT,EAAG,CAAC,EAAG,EAAG,IAEUyK,EAAA2B,QAA0B,CAC9C9K,EAAG,CAAC,GACJlC,EAAG,CAAC,EAAG,GACPG,EAAG,CAAC,GACJW,EAAG,CAAC,GACJG,EAAG,CAAC,GACJI,EAAG,CAAC,GACJT,EAAG,CAAC,EAAG,EAAG,KAEUyK,EAAA4B,OAAyB,CAC7C/K,EAAG,CAAC,EAAG,EAAG,GACVlC,EAAG,CAAC,EAAG,GACPG,EAAG,CAAC,GACJW,EAAG,CAAC,GACJG,EAAG,CAAC,GACJI,EAAG,CAAC,GACJT,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,IAEIyK,EAAA6B,QAA0B,CAC9ChL,EAAG,CAAC,EAAG,EAAG,IACVlC,EAAG,CAAC,EAAG,IACPG,EAAG,CAAC,IACJW,EAAG,CAAC,IACJG,EAAG,CAAC,GACJI,EAAG,CAAC,GACJT,EAAG,CAAC,EAAG,EAAG,EAAG,GAAI,KAEGyK,EAAA8B,OAAyB,CAC7CjL,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,GAChBlC,EAAG,CAAC,GACJG,EAAG,CAAC,GACJW,EAAG,CAAC,GACJG,EAAG,CAAC,GACJI,EAAG,CAAC,EAAG,GACPT,EAAG,CAAC,EAAG,EAAG,IAEUyK,EAAA+B,QAA0B,CAC9ClL,EAAG,CAAC,EAAG,EAAG,EAAG,GAAI,IACjBlC,EAAG,CAAC,IACJG,EAAG,CAAC,GACJW,EAAG,CAAC,IACJG,EAAG,CAAC,IACJI,EAAG,CAAC,EAAG,IACPT,EAAG,CAAC,EAAG,EAAG,KAEUyK,EAAAgC,OAAyB,CAC7CnL,EAAG,CAAC,GACJlC,EAAG,CAAC,EAAG,GACPG,EAAG,CAAC,EAAG,GACPW,EAAG,CAAC,EAAG,GACPG,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,GAChBI,EAAG,CAAC,GACJT,EAAG,CAAC,IAEgByK,EAAAiC,QAA0B,CAC9CpL,EAAG,CAAC,IACJlC,EAAG,CAAC,EAAG,IACPG,EAAG,CAAC,EAAG,IACPW,EAAG,CAAC,EAAG,IACPG,EAAG,CAAC,EAAG,EAAG,EAAG,GAAI,IACjBI,EAAG,CAAC,IACJT,EAAG,CAAC,KAEgByK,EAAAkC,OAAyB,CAC7CrL,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,GAChBlC,EAAG,CAAC,GACJG,EAAG,CAAC,EAAG,EAAG,EAAG,GACbW,EAAG,CAAC,GACJG,EAAG,CAAC,GACJI,EAAG,CAAC,EAAG,GACPT,EAAG,CAAC,EAAG,EAAG,IAEUyK,EAAAmC,QAA0B,CAC9CtL,EAAG,CAAC,EAAG,EAAG,EAAG,GAAI,IACjBlC,EAAG,CAAC,GACJG,EAAG,CAAC,EAAG,EAAG,EAAG,IACbW,EAAG,CAAC,IACJG,EAAG,CAAC,IACJI,EAAG,CAAC,EAAG,IACPT,EAAG,CAAC,EAAG,EAAG,KAEUyK,EAAAoC,QAA0B,CAC9CvL,EAAG,CAAC,EAAG,IACPlC,EAAG,CAAC,GACJG,EAAG,CAAC,GACJW,EAAG,CAAC,EAAG,EAAG,EAAG,IACbG,EAAG,CAAC,EAAG,IACPI,EAAG,CAAC,EAAG,IACPT,EAAG,CAAC,EAAG,EAAG,KAEUyK,EAAAqC,QAA0B,CAC9CxL,EAAG,CAAC,EAAG,EAAG,EAAG,GAAI,IACjBlC,EAAG,CAAC,IACJG,EAAG,CAAC,IACJW,EAAG,CAAC,GACJG,EAAG,CAAC,GACJI,EAAG,CAAC,GACJT,EAAG,CAAC,IAEgByK,EAAAsC,QAA0B,CAC9CzL,EAAG,CAAC,EAAG,EAAG,IACVlC,EAAG,CAAC,EAAG,IACPG,EAAG,CAAC,EAAG,IACPW,EAAG,CAAC,EAAG,EAAG,IACVG,EAAG,CAAC,EAAG,IACPI,EAAG,CAAC,EAAG,IACPT,EAAG,CAAC,EAAG,EAAG,KAEUyK,EAAAuC,QAA0B,CAC9C1L,EAAG,CAAC,EAAG,EAAG,IACVlC,EAAG,CAAC,EAAG,IACPG,EAAG,CAAC,EAAG,IACPW,EAAG,CAAC,EAAG,EAAG,GAAI,IACdG,EAAG,CAAC,IACJI,EAAG,CAAC,IACJT,EAAG,CAAC,EAAG,IAEayK,EAAAM,QAA0B,CAC9CjI,EAAK,CAAC2H,EAAyBwB,OAAQxB,EAAyByB,SAChEzM,EAAK,CAACgL,EAAyBwB,OAAQxB,EAAyB2B,SAChEzM,EAAK,CAAC8K,EAAyBwB,OAAQxB,EAAyB6B,SAChEhL,EAAK,CAACmJ,EAAyBwB,OAAQxB,EAAyB+B,SAChEpN,EAAK,CAACqL,EAAyBwB,OAAQxB,EAAyBiC,SAChEnN,EAAK,CAACkL,EAAyBwB,OAAQxB,EAAyBmC,SAChE1M,EAAK,CAACuK,EAAyBwB,OAAQxB,EAAyBoC,SAChExM,EAAK,CAACoK,EAAyBwB,OAAQxB,EAAyBqC,SAChErM,EAAK,CAACgK,EAAyBwB,OAAQxB,EAAyBsC,SAChE/M,EAAK,CAACyK,EAAyBwB,OAAQxB,EAAyBuC,SAChEnM,GAAM,CAAC4J,EAAyB0B,OAAQ1B,EAAyByB,SACjEe,GAAM,CAACxC,EAAyB0B,OAAQ1B,EAAyB2B,SACjE9G,GAAM,CAACmF,EAAyB0B,OAAQ1B,EAAyB6B,SACjEY,GAAM,CAACzC,EAAyB0B,OAAQ1B,EAAyB+B,SACjEW,GAAM,CAAC1C,EAAyB0B,OAAQ1B,EAAyBiC,SACjEU,GAAM,CAAC3C,EAAyB0B,OAAQ1B,EAAyBmC,SACjES,GAAM,CAAC5C,EAAyB0B,OAAQ1B,EAAyBoC,SACjES,GAAM,CAAC7C,EAAyB0B,OAAQ1B,EAAyBqC,SACjES,GAAM,CAAC9C,EAAyB0B,OAAQ1B,EAAyBsC,SACjES,GAAM,CAAC/C,EAAyB0B,OAAQ1B,EAAyBuC,SACjES,GAAM,CAAChD,EAAyB4B,OAAQ5B,EAAyByB,SACjEwB,GAAM,CAACjD,EAAyB4B,OAAQ5B,EAAyB2B,SACjEuB,GAAM,CAAClD,EAAyB4B,OAAQ5B,EAAyB6B,SACjEsB,GAAM,CAACnD,EAAyB4B,OAAQ5B,EAAyB+B,SACjEqB,GAAM,CAACpD,EAAyB4B,OAAQ5B,EAAyBiC,SACjEoB,GAAM,CAACrD,EAAyB4B,OAAQ5B,EAAyBmC,SACjEmB,GAAM,CAACtD,EAAyB4B,OAAQ5B,EAAyBoC,SACjEmB,GAAM,CAACvD,EAAyB4B,OAAQ5B,EAAyBqC,SACjEmB,GAAM,CAACxD,EAAyB4B,OAAQ5B,EAAyBsC,SACjEmB,GAAM,CAACzD,EAAyB4B,OAAQ5B,EAAyBuC,SACjEmB,GAAM,CAAC1D,EAAyB8B,OAAQ9B,EAAyByB,SACjEkC,GAAM,CAAC3D,EAAyB8B,OAAQ9B,EAAyB2B,SACjEiC,GAAM,CAAC5D,EAAyB8B,OAAQ9B,EAAyB6B,SACjEgC,GAAM,CAAC7D,EAAyB8B,OAAQ9B,EAAyB+B,SACjE+B,GAAM,CAAC9D,EAAyB8B,OAAQ9B,EAAyBiC,SACjE8B,GAAM,CAAC/D,EAAyB8B,OAAQ9B,EAAyBmC,SACjE6B,GAAM,CAAChE,EAAyB8B,OAAQ9B,EAAyBoC,SACjE6B,GAAM,CAACjE,EAAyB8B,OAAQ9B,EAAyBqC,SACjE6B,GAAM,CAAClE,EAAyB8B,OAAQ9B,EAAyBsC,SACjE6B,GAAM,CAACnE,EAAyB8B,OAAQ9B,EAAyBuC,SACjE6B,GAAM,CAACpE,EAAyBgC,OAAQhC,EAAyByB,SACjE4C,GAAM,CAACrE,EAAyBgC,OAAQhC,EAAyB2B,SACjE2C,GAAM,CAACtE,EAAyBgC,OAAQhC,EAAyB6B,SACjE0C,GAAM,CAACvE,EAAyBgC,OAAQhC,EAAyB+B,SACjEyC,GAAM,CAACxE,EAAyBgC,OAAQhC,EAAyBiC,SACjEwC,GAAM,CAACzE,EAAyBgC,OAAQhC,EAAyBmC,SACjEuC,GAAM,CAAC1E,EAAyBgC,OAAQhC,EAAyBoC,SACjEuC,GAAM,CAAC3E,EAAyBgC,OAAQhC,EAAyBqC,SACjEuC,GAAM,CAAC5E,EAAyBgC,OAAQhC,EAAyBsC,SACjEuC,GAAM,CAAC7E,EAAyBgC,OAAQhC,EAAyBuC,SACjEuC,GAAM,CAAC9E,EAAyBkC,OAAQlC,EAAyByB,SACjEsD,GAAM,CAAC/E,EAAyBkC,OAAQlC,EAAyB2B,SACjEqD,GAAM,CAAChF,EAAyBkC,OAAQlC,EAAyB6B,SACjEoD,GAAM,CAACjF,EAAyBkC,OAAQlC,EAAyB+B,SACjEmD,GAAM,CAAClF,EAAyBkC,OAAQlC,EAAyBiC,SACjEkD,GAAM,CAACnF,EAAyBkC,OAAQlC,EAAyBmC,SACjEiD,GAAM,CAACpF,EAAyBkC,OAAQlC,EAAyBoC,SACjEiD,GAAM,CAACrF,EAAyBkC,OAAQlC,EAAyBqC,SACjEiD,GAAM,CAACtF,EAAyBkC,OAAQlC,EAAyBsC,SACjEiD,GAAM,CAACvF,EAAyBkC,OAAQlC,EAAyBuC,UAyDzEvC,EAtQA,GA6QAwF,EAAA,WACI,SAAAA,EAAoBlI,EAAwBmI,GAAxBlH,KAAAjB,SAAwBiB,KAAAkH,aAiChD,OA9BID,EAAAtR,UAAAwR,OAAA,SAAOC,GAAP,IAAA7E,EAAAvC,KACI,QAA2BqH,IAAvBrH,KAAKjB,OAAOuI,OAAsB,CAClC,GAA4B,IAAxBtH,KAAKjB,OAAO9F,QAUZ,YADAmF,QAAQmJ,KAAK,4BAA4BvH,KAAKjB,OAAO9F,QAAO,oBAR5D,IACMuO,EADqC,IAAIhG,EAAyBxB,KAAKjB,QACnC2C,QAC1CjN,OAAOC,eAAesL,KAAKjB,OAAQ,SAAU,CACzC/J,MAAOwS,EACPC,UAAU,EACVC,cAAc,IAO1B,IAAM1P,EAAsBgI,KAAKjB,OAAOuI,OACxCtH,KAAKkH,WAAWS,QAAQ,OAAQ,WAC5BpF,EAAK2E,WAAWU,QAChB5P,EAAQ2J,QAAQ,SAACE,EAAMjD,EAAOiJ,GAC1BhG,EAAKF,QAAQ,SAAAmG,GAAU,OAAAvF,EAAK2E,WAAWa,OAAOD,EAAOvG,cACjD3C,EAAQiJ,EAAMrJ,OAAS,GACvB+D,EAAK2E,WAAWa,OAAO,WAGzBX,GACFA,IAEJ7E,EAAK2E,WAAWc,OAAO,WAGnCf,EAlCA,GC3QAgB,EAAA,WAGI,SAAAC,EACY9O,EACA+O,EACAlH,EACAmH,GAHApI,KAAA5G,MACA4G,KAAAmI,WACAnI,KAAAiB,UACAjB,KAAAoI,KAERpI,KAAKqI,cAAgB,IAAIzI,EAAcwI,EAAInH,EAAQlB,YAiL3D,OA9KWmI,EAAAvS,UAAAwR,OAAP,WACInH,KAAKsI,YACLtI,KAAKuI,qBAGFL,EAAAvS,UAAA6S,SAAP,SAAgBC,GACZzI,KAAKmI,SAASO,IAAI,QAASD,GAC3B,IAAME,EAAoB3I,KAAKmI,SAASM,QACxCzI,KAAKmI,SAASM,MAAME,GACpB3I,KAAKmI,SAASS,OAAOD,GACrB3I,KAAKmI,SAASO,IAAI,YAAcC,EAAY,GAAM,OAG9CT,EAAAvS,UAAA2S,UAAR,eAAA/F,EAAAvC,KAaI,GAXAA,KAAKmI,SAASU,SAAS,OAClBjB,QACAG,OAAO,uCACPA,OAAO,uCACPA,OAAO,uCACPA,OAAO,uCACPA,OAAO,kCACPA,OAAO,kCAEZ/H,KAAKwI,SAASxI,KAAKiB,QAAQwH,OAEvBzI,KAAKiB,QAAQ6H,SAAU,CACvB,IAAMC,EAAe7P,EAAE,qDAAqD8G,KAAKoI,GAAE,YAC7EY,EAAU9P,EAAE,+BAClB6P,EAAahB,OAAOiB,GAEpB,IAAMC,EAAe/P,EAAE,+CAA+C8G,KAAKoI,GAAE,YAC7Ea,EAAalB,OAAO,mFAAmF/H,KAAKoI,GAAE,0BAC9Ga,EAAalB,OAAO,iEAAiE/H,KAAKoI,GAAE,yFAC5FY,EAAQjB,OAAOkB,GAGf,IAAMC,EAAahQ,EAAE,8CAA8C8G,KAAKoI,GAAE,YAK1E,GAJAc,EAAWnB,OAAO,kFAAkF/H,KAAKoI,GAAE,0BAC3Gc,EAAWnB,OAAO,gEAAgE/H,KAAKoI,GAAE,wFACzFY,EAAQjB,OAAOmB,GAEXnL,EAAQyB,qBAAsB,CAC9B,IAAM2J,EAAkBjQ,EAAE,kCAAkC8G,KAAKoI,GAAE,eACnErK,EAAQ2B,aAAaiC,QAAQ,SAAA5C,GACzBoK,EAAgBpB,OAAO,kBAAkBhJ,EAAOlI,KAAI,KAAKkI,EAAO/F,WAAU,eAE9EgQ,EAAQjB,OAAOoB,GAInB,GAAIpL,EAAQU,oBAAqB,CAC7B,IAAM2K,EAAelQ,EAAE,+BAA+B8G,KAAKoI,GAAE,eAC7DrK,EAAQc,YAAY8C,QAAQ,SAAAd,GACxBuI,EAAarB,OAAO,kBAAkBlH,EAAM5C,WAAU,KAAK4C,EAAMvM,KAAI,eAEzE0U,EAAQjB,OAAOqB,GAEnB,IAAMC,EAAmCnQ,EAAE,6DAA6D8G,KAAKoI,GAAE,UAC/GiB,EAAYC,GAAG,CAACC,MAAO,WAAM,OAAArQ,EAAE,oBAAoBqJ,EAAK6F,IAAMoB,KAAK,WACnER,EAAQjB,OAAOsB,GACfrJ,KAAKmI,SAASsB,MAAMV,GACpBA,EAAaS,OACb,IAAME,EAAkCxQ,EAAE,+CAA+C8G,KAAKoI,GAAE,UAChGsB,EAAWJ,GAAG,CAACC,MAAO,WAAM,OAAAhH,EAAKoH,wBACjC3J,KAAKmI,SAASsB,MAAMC,KAIpBxB,EAAAvS,UAAA4S,kBAAR,eAAAhG,EAAAvC,KAEUiJ,EAAoC/P,EAAE,4BAA4B8G,KAAKoI,IAC7Ea,EAAaK,GAAG,CAACC,MAAO,WAAM,OAAAhH,EAAKnJ,IAAIwQ,YACvC,IAAIjJ,EAASX,KAAKqI,cAAc5H,kBACjB4G,IAAX1G,GAAwBX,KAAKiB,QAAQ4I,SACrClJ,EAASX,KAAKiB,QAAQN,QAE1BsI,EAAaa,KAAK,UAAsB,OAAXnJ,GACd,OAAXA,EACAX,KAAK5G,IAAI2Q,QAET/J,KAAK5G,IAAI4Q,OAIb,IAAMd,EAAkChQ,EAAE,2BAA2B8G,KAAKoI,IAC1Ec,EAAWI,GAAG,CACVC,MAAO,WACuB,YAAtBhH,EAAKtB,QAAQ/L,KACbqN,EAAKnJ,IAAIoH,QAAQ,UAEjB+B,EAAKnJ,IAAIoH,QAAQ,cAK7B,IAAItL,EAAO8K,KAAKqI,cAAc9H,gBACjB8G,IAATnS,GAAsB8K,KAAKiB,QAAQ4I,SACnC3U,EAAO8K,KAAKiB,QAAQ/L,MAExBgU,EAAWY,KAAK,UAAoB,YAAT5U,GACd,YAATA,EACA8K,KAAK5G,IAAIoH,QAAQ,WAEjBR,KAAK5G,IAAIoH,QAAQ,UAIrB,IAAMyJ,EAAuC/Q,EAAE,uBAAuB8G,KAAKoI,IAC3E6B,EAAgBX,GAAG,CACfY,OAAQ,WACJ,IAAMC,EAAcjR,EAAE,uBAAuBqJ,EAAK6F,IAAMgC,MACxD7H,EAAKnJ,IAAIiH,UAAU8J,MAG3B,IAAIE,EAAiBrK,KAAKqI,cAAcpI,kBACjBoH,IAAnBgD,GAAgCrK,KAAKiB,QAAQ4I,SAC7CQ,EAAiBrK,KAAKiB,QAAQqJ,UAElC,IAAIC,EAAQxM,EAAQ2B,aAAavB,KAAK,SAAAuE,GAAQ,OAAA2H,IAAmB3H,EAAK7L,OACtE,IAAK0T,EAAO,CACR,IAAIC,OAAgB,EAEhBA,EADAzM,EAAQwB,aACWxB,EAAQ0B,iBAAiB5I,KAEzB,GAEvBuH,QAAQmJ,KAAK,aAAa8C,EAAc,gCAAgCG,EAAgB,MACxFH,EAAiBG,EAErBP,EAAgBG,IAAIC,GACpBrK,KAAKiB,QAAQqJ,SAAW,GACxBtK,KAAK5G,IAAIiH,UAAUgK,GAGnB,IAAMI,EAAoCvR,EAAE,oBAAoB8G,KAAKoI,IACrEqC,EAAanB,GAAG,CACZY,OAAQ,WACJ,IAAMQ,EAAWxR,EAAE,oBAAoBqJ,EAAK6F,IAAMgC,MAClD7H,EAAKnJ,IAAIwH,SAAS8J,MAG1B,IAAIC,EAAgB3K,KAAKqI,cAAc1J,WAKvC,SAJsB0I,IAAlBsD,GAA+B3K,KAAKiB,QAAQ4I,SAC5Cc,EAAgB3K,KAAKiB,QAAQJ,SAEjC0J,EAAQxM,EAAQc,YAAYV,KAAK,SAAAuE,GAAQ,OAAAiI,IAAkBjI,EAAKzE,cACpD,CACR,IAAM2M,EAAgB7M,EAAQW,gBAAgBT,WAC9CG,QAAQmJ,KAAK,UAAUoD,EAAa,gCAAgCC,EAAa,MACjFD,EAAgBC,EAEpBH,EAAaL,IAAIO,GACjB3K,KAAKiB,QAAQJ,MAAQ,GACrBb,KAAK5G,IAAIwH,SAAS+J,GACd3K,KAAKiB,QAAQ4J,YACb3R,EAAE4R,QAAQxB,GAAG,CACTyB,OAAQ,WACJ,IAAMC,EAA+BzI,EAAK4F,SAAS8C,SAC7CC,EAA0BhS,EAAE4R,QAC5BK,EAAsBH,EAAQvC,QAC9B2C,EAAuBJ,EAAQpC,SAC/ByC,EAAsBH,EAAQzC,QAC9B6C,EAAuBJ,EAAQtC,SAC/B2C,EAAkBC,KAAKC,IAAIN,EAAaC,EAAcC,EAAaC,GAAa,KACtF/I,EAAKiG,SAAS+C,OAMtBrD,EAAAvS,UAAAgU,mBAAR,WACIzQ,EAAE,oBAAoB8G,KAAKoI,IAAMwB,OAAO,SAEhD1B,EA1LA,GCEAwD,EAAA,WAOI,SAAAC,EAAoBC,GAAA5L,KAAA4L,iBALZ5L,KAAA6L,MAAgB,KAChB7L,KAAA8L,cAAwB,KAK5B,IAAMC,EAAW/L,KAAK4L,eAAe3K,QAAQjG,UACJqM,IAArCrH,KAAK4L,eAAe3K,QAAQjG,OAC5BgF,KAAK4L,eAAe3K,QAAQjG,KAAO,IAAIgR,MAE3ChM,KAAKqI,cAAgB,IAAIzI,EAAcI,KAAK4L,eAAeK,KAAMjM,KAAK4L,eAAe3K,QAAQlB,YAC7FC,KAAKkM,YACLlM,KAAKmM,SAAW,IAAIlE,EAAYjI,KAAMA,KAAK4L,eAAe3M,QAASe,KAAK4L,eAAe3K,QAASjB,KAAK4L,eAAeK,MACpHjM,KAAKmM,SAAShF,cACGE,IAAb0E,GACA/L,KAAKoM,QAAQL,GAqNzB,OAjNIJ,EAAAhW,UAAA0W,QAAA,WACUrM,KAAK6L,QACPf,OAAOwB,cAActM,KAAK6L,OAC1B7L,KAAK6L,MAAQ,MAEjB7L,KAAK4L,eAAe3M,QACfsN,WAAW,SACXA,WAAW,SACX3E,QACL1O,EAAE,kBAAkB8G,KAAK4L,eAAeK,MAAQO,SAChDtT,EAAE,oBAAoB8G,KAAK4L,eAAeK,MAAQO,UAGtDb,EAAAhW,UAAAoU,MAAA,eAAAxH,EAAAvC,KACSA,KAAKyM,SACNzM,KAAK6L,MAAQf,OAAO4B,YAAY,WAC5BnK,EAAKqJ,eAAe3K,QAAQjG,KAAO,IAAIgR,KACvCzJ,EAAKoK,UACN,KACH3M,KAAK2M,SACL3M,KAAKqI,cAAc3H,UAAU,QAIrCiL,EAAAhW,UAAAqU,KAAA,WACQhK,KAAKyM,SACL3B,OAAOwB,cAActM,KAAK6L,OAC1B7L,KAAK6L,MAAQ,KACb7L,KAAK2M,SACL3M,KAAKqI,cAAc3H,UAAU,SAIrCiL,EAAAhW,UAAAiU,OAAA,WACQ5J,KAAKyM,OACLzM,KAAKgK,OAELhK,KAAK+J,SAIb4B,EAAAhW,UAAA0K,UAAA,SAAU/K,GAAV,IAAAiN,EAAAvC,KACQ1K,IAAQ0K,KAAK4L,eAAe3K,QAAQqJ,WACpCtK,KAAK4L,eAAe3K,QAAQqJ,SAAWhV,EACtB,IAAI2R,EAAejH,KAAK4M,mBAAoB5M,KAAK4L,eAAe3M,QAAQ4N,KAAK,gBACrF1F,OAAO,WACZ5E,EAAKuJ,eAAiB,EACtBvJ,EAAKoK,WAET3M,KAAKqI,cAAchI,UAAU/K,GAC7B0K,KAAK2M,WAIbhB,EAAAhW,UAAAiL,SAAA,SAAS3C,GACDA,IAAe+B,KAAK4L,eAAe3K,QAAQJ,QAC3Cb,KAAK4L,eAAe3M,QAAQ6N,YAAY9M,KAAK4L,eAAe3K,QAAQJ,OAAOgI,SAAS5K,GACpF/E,EAAE,mBAAmB8G,KAAK4L,eAAeK,MAAQa,YAAY9M,KAAK4L,eAAe3K,QAAQJ,OAAOgI,SAAS5K,GACzG+B,KAAK4L,eAAe3K,QAAQJ,MAAQ5C,EACpC+B,KAAKqI,cAAczH,SAAS3C,KAIpC0N,EAAAhW,UAAAyW,QAAA,SAAQpR,GACJgF,KAAK8L,cAAgB,KACR,OAAT9Q,EACAgF,KAAK4L,eAAe3K,QAAQjG,KAAO,IAAIgR,MAEpB,OAAfhM,KAAK6L,OACLf,OAAOwB,cAActM,KAAK6L,OAE9B7L,KAAK4L,eAAe3K,QAAQjG,KAAOA,GAEvCgF,KAAK2M,UAGThB,EAAAhW,UAAA6K,QAAA,SAAQtL,GACJ8K,KAAK4L,eAAe3K,QAAQ/L,KAAOA,EACnC8K,KAAK8L,cAAgB,KACrB9L,KAAK2M,SACL3M,KAAKqI,cAAc7H,QAAQtL,IAG/ByW,EAAAhW,UAAA6S,SAAA,SAASC,GACLzI,KAAKmM,SAAS3D,SAASC,IAGnBkD,EAAAhW,UAAA8W,KAAR,WACI,OAAsB,OAAfzM,KAAK6L,OAGRF,EAAAhW,UAAAgX,OAAR,WACI,GAAI3M,KAAKyM,OAAQ,CACb,IAAMzR,EAAOgF,KAAK4L,eAAe3K,QAAQjG,KACzC,IAAKgF,KAAK4M,mBAAmBhX,eAAe,YAAmD,YAArCoK,KAAK4L,eAAe3K,QAAQ/L,KAAoB,CACtG,GAAI8F,EAAKG,eAAiB6E,KAAK8L,cAC3B,OAEJ9L,KAAK8L,cAAgB9Q,EAAKG,aAE9B6E,KAAK+M,KAAK/R,QAEVgF,KAAKgN,QACLhN,KAAK8L,eAAiB,GAItBH,EAAAhW,UAAAoX,KAAR,SAAa/R,GACT,IAAMiS,EAASjN,KAAKkN,UAAUlS,GACxBmS,EAAYnN,KAAKoN,aAAapS,GAC9BC,EAAO+E,KAAKjF,QAAQC,GACpBqS,EAAerN,KAAKsN,gBAAgBtS,GAE1C,GADAgF,KAAKgN,QACoC,YAArChN,KAAK4L,eAAe3K,QAAQ/L,KAC5B8K,KAAKuN,UAAU,SAASN,OACrB,CACHjN,KAAKuN,UAAU,MACf,IAAK,IAAIxZ,EAAI,EAAGA,GAAKoZ,EAAWpZ,IAC5BiM,KAAKuN,UAAU,MAAMxZ,GAEzBiM,KAAKuN,UAAU,SAASF,GACxBrN,KAAKuN,UAAU,OAAOtS,KAItB0Q,EAAAhW,UAAAqX,MAAR,WACIhN,KAAK4L,eAAe3M,QAAQ4N,KAAK,SAASC,YAAY,WAGlDnB,EAAAhW,UAAA4X,UAAR,SAAkBC,GACdxN,KAAK4L,eAAe3M,QAAQ4N,KAAK,SAASW,GAAa3E,SAAS,WAG5D8C,EAAAhW,UAAAuX,UAAR,SAAkBlS,GACd,MAAkD,mBAAvCgF,KAAK4M,mBAAmBa,WACxBzN,KAAK4M,mBAAmBa,WAAWzS,GAEvCA,EAAKyS,cAGR9B,EAAAhW,UAAAyX,aAAR,SAAqBM,GACjB,MAAoD,mBAAzC1N,KAAK4M,mBAAmBQ,aACxBpN,KAAK4M,mBAAmBQ,aAAaM,GAEzCA,EAAKvS,aAAe,GAGvBwQ,EAAAhW,UAAA2X,gBAAR,SAAwBI,GACpB,MAAuD,mBAA5C1N,KAAK4M,mBAAmBU,gBACxBtN,KAAK4M,mBAAmBU,gBAAgBI,GAE5CA,EAAKvS,cAGRwQ,EAAAhW,UAAAoF,QAAR,SAAgB2S,GACZ,GAA+C,mBAApC1N,KAAK4M,mBAAmB7R,QAC/B,OAAOiF,KAAK4M,mBAAmB7R,QAAQ2S,GAE3C,IAAMzS,EAAOyS,EAAKxS,WAClB,OAAIwS,EAAKvS,cAAgB,IACbF,EAAO,GAAK,GAEjBA,GAGH0Q,EAAAhW,UAAAuW,UAAR,eAAA3J,EAAAvC,KACQ2N,EAAe7C,OAAO8C,SAASD,UACtBtG,IAATsG,GAAyC,MAAnBA,EAAKE,OAAO,KAClCF,EAAOA,EAAKG,UAAU,IACtBH,EAAOI,mBAAmBJ,IACI7K,MAAM,KAC7BnB,QAAQ,SAAA1C,GACX,IAAM+O,EAAiB/O,EAAQ6D,MAAM,KAC/BxN,EAAM0Y,EAAK,GACXhZ,EAAQgZ,EAAK,GACnB,OAAQ1Y,GACJ,IAAK,IACL,IAAK,WACDiN,EAAKqJ,eAAe3K,QAAQqJ,SAAWtV,EACvCuN,EAAKqJ,eAAe3K,QAAQ4I,OAAQ,EACpC,MACJ,IAAK,IACL,IAAK,QACDtH,EAAKqJ,eAAe3K,QAAQJ,MAAQ7L,EACpCuN,EAAKqJ,eAAe3K,QAAQ4I,OAAQ,EACpC,MACJ,IAAK,IACL,IAAK,OACDtH,EAAKqJ,eAAe3K,QAAQ/L,KAAOF,EACnCuN,EAAKqJ,eAAe3K,QAAQ4I,OAAQ,EACpC,MACJ,IAAK,IACL,IAAK,SACDtH,EAAKqJ,eAAe3K,QAAQN,OAAS3L,EACrCuN,EAAKqJ,eAAe3K,QAAQ4I,OAAQ,OAOhD8B,EAAAhW,UAAAiX,iBAAR,eAAArK,EAAAvC,KACUiO,EAA8BlQ,EAAQ2B,aAAawO,OAAO,SAAAjP,GAAW,OAAAA,EAAQpI,OAAS0L,EAAKqJ,eAAe3K,QAAQqJ,UAAUtK,MAClI,OAAIiO,EAAkBzP,OAAS,EACpByP,EAAkB,GAGtBtO,GAEfgM,EAtOA,UCHIwC,EAAE,wBAAwBC,KAAK,SAACxP,EAAO8D,GACnC,IAAM2L,EAAaF,EAAEzL,GACfzE,EAAqBoQ,EAAWC,KAAK,cAC3C,QAAmBjH,IAAfpJ,EAA0B,CAC1B,IAAIsQ,EAAeF,EAAWC,KAAK,kBACtBjH,IAATkH,IACAA,EAAOtQ,GAEXF,EAAQC,cAAcuQ,EAAMtQ,MAK/BF,EAAQQ,aACTR,EAAQC,cAAc,GAAI,ICTlC9E,EAAEsV,OAAO,eAAgB,CACrBvN,QAAS,CACLwH,MAAO,OACP9H,OAAQ,KACR2J,SAAU,QACVzJ,MAAO9C,EAAQW,gBAAgBT,WAC/B4L,OAAO,EACPf,UAAU,EACV/I,gBAAYsH,EACZwD,YAAY,EACZ3V,KAAM,UAEV6U,MAAO,WACH/J,KAAKyO,wBAAwB1E,SAEjCC,KAAM,WACFhK,KAAKyO,wBAAwBzE,QAEjCJ,OAAQ,WACJ5J,KAAKyO,wBAAwB7E,UAEjCU,SAAU,SAAUhV,GAChB0K,KAAKyO,wBAAwBpO,UAAU/K,IAE3CuL,MAAO,SAAU5C,GACb+B,KAAKyO,wBAAwB7N,SAAS3C,IAE1CjD,KAAM,SAAUA,GACZgF,KAAKyO,wBAAwBrC,QAAQpR,IAEzC9F,KAAM,SAAUA,GACZ8K,KAAKyO,wBAAwBjO,QAAQtL,IAEzCuT,MAAO,SAAUA,GACbzI,KAAKyO,wBAAwBjG,SAASC,IAG1CiG,QAAS,WACL1O,KAAKyO,wBAA0B,IAAI/C,EAAI1L,OAG3C2O,SAAU,WACN3O,KAAKyO,wBAAwBpC,WAEjCoC,wBAAyB,OAG7BvV,EAAEC,SAASC,IAAIC,SAAW0E,EAAQe,6CCvElCnL,EAAAkB,EAAAoB,GAAAtC,EAAA,QAAAib,EAAAjb,EAAA,GAAAkb,EAAAlb,EAAA,GAAAmb,EAAAnb,EAAA,GAAAob,EAAApb,EAAA,GAAAqb,EAAArb,EAAA,GAAAsb,EAAAtb,EAAA,GAAAub,EAAAvb,EAAA,GAAAwb,EAAAxb,EAAA,GAAAyb,EAAAzb,EAAA,IAAA0b,EAAA1b,EAAA,IA8BIkb,EAAA,aACAC,EAAA,mBACAF,EAAA,UACAG,EAAA,UACAC,EAAA,UACAC,EAAA,UACAC,EAAA,UACAC,EAAA,UACAC,EAAA,UACAC,EAAA","file":"lib/uhr.bundle.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 13);\n","module.exports = Cookies;","module.exports = jQuery;","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst es_ist: WordDefinition = {1: [1, 2, 4, 5, 6]};\nconst uhr: WordDefinition = {10: [9, 10, 11]};\nconst nach: WordDefinition = {4: [8, 9, 10, 11]};\nconst vor: WordDefinition = {4: [1, 2, 3]};\nconst halb: WordDefinition = {5: [1, 2, 3, 4]};\nconst fuenf: WordDefinition = {1: [8, 9, 10, 11]};\nconst zehn: WordDefinition = {2: [1, 2, 3, 4]};\nconst viertel: WordDefinition = {3: [5, 6, 7, 8, 9, 10, 11]};\nconst zwanzig: WordDefinition = {2: [5, 6, 7, 8, 9, 10, 11]};\nconst dreiviertel: WordDefinition = {3: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]};\n\nexport const Layout_de: Layout = {\n code: 'de',\n hours: {\n '0,12': {9: [7, 8, 9, 10, 11]},\n '1,13': {6: [1, 2, 3, 4]},\n '2,14': {6: [8, 9, 10, 11]},\n '3,15': {7: [1, 2, 3, 4]},\n '4,16': {7: [8, 9, 10, 11]},\n '5,17': {5: [8, 9, 10, 11]},\n '6,18': {8: [1, 2, 3, 4, 5]},\n '7,19': {9: [1, 2, 3, 4, 5, 6]},\n '8,20': {8: [8, 9, 10, 11]},\n '9,21': {10: [4, 5, 6, 7]},\n '10,22': {10: [1, 2, 3, 4]},\n '11,23': {5: [6, 7, 8]}\n },\n letters: [\n 'ESKISTAFÜNF',\n 'ZEHNZWANZIG',\n 'DREIVIERTEL',\n 'VORFUNKNACH',\n 'HALBAELFÜNF',\n 'EINSXAMZWEI',\n 'DREIPMJVIER',\n 'SECHSNLACHT',\n 'SIEBENZWÖLF',\n 'ZEHNEUNKUHR'\n ],\n minutes: {\n '0,1,2,3,4': uhr,\n '5,6,7,8,9': [fuenf, nach],\n '10,11,12,13,14': [zehn, nach],\n '15,16,17,18,19': [viertel, nach],\n '20,21,22,23,24': [zwanzig, nach],\n '25,26,27,28,29': [fuenf, vor, halb],\n '30,31,32,33,34': halb,\n '35,36,37,38,39': [fuenf, nach, halb],\n '40,41,42,43,44': [zwanzig, vor],\n '45,46,47,48,49': dreiviertel,\n '50,51,52,53,54': [zehn, vor],\n '55,56,57,58,59': [fuenf, vor]\n },\n permanent: es_ist,\n prettyName: 'Deutsch',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_de);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst es_isch: WordDefinition = {1: [1, 2, 4, 5, 6, 7]};\nconst ab: WordDefinition = {4: [1, 2]};\nconst vor: WordDefinition = {3: [9, 10, 11]};\nconst haubi: WordDefinition = {4: [4, 5, 6, 7, 8]};\nconst fuef: WordDefinition = {1: [9, 10, 11]};\nconst zae: WordDefinition = {2: [9, 10, 11]};\nconst viertu: WordDefinition = {2: [1, 2, 3, 4, 5, 6]};\nconst zwaenzg: WordDefinition = {3: [1, 2, 3, 4, 5, 6]};\n\nexport const Layout_de_CH: Layout = {\n code: 'de_CH',\n hours: {\n '0,12': {10: [1, 2, 3, 4, 5, 6]},\n '1,13': {5: [1, 2, 3]},\n '2,14': {5: [4, 5, 6, 7]},\n '3,15': {5: [9, 10, 11]},\n '4,16': {6: [1, 2, 3, 4, 5]},\n '5,17': {6: [6, 7, 8, 9]},\n '6,18': {7: [1, 2, 3, 4, 5, 6]},\n '7,19': {7: [7, 8, 9, 10, 11]},\n '8,20': {8: [1, 2, 3, 4, 5]},\n '9,21': {8: [6, 7, 8, 9]},\n '10,22': {9: [1, 2, 3, 4]},\n '11,23': {9: [8, 9, 10, 11]}\n },\n letters: [\n 'ESKISCHAFÜF',\n 'VIERTUBFZÄÄ',\n 'ZWÄNZGSIVOR',\n 'ABOHAUBIEGE',\n 'EISZWÖISDRÜ',\n 'VIERIFÜFIQT',\n 'SÄCHSISIBNI',\n 'ACHTINÜNIEL',\n 'ZÄNIERBEUFI',\n 'ZWÖUFINAUHR'\n ],\n minutes: {\n '5,6,7,8,9': [fuef, ab],\n '10,11,12,13,14': [zae, ab],\n '15,16,17,18,19': [viertu, ab],\n '20,21,22,23,24': [zwaenzg, ab],\n '25,26,27,28,29': [fuef, vor, haubi],\n '30,31,32,33,34': haubi,\n '35,36,37,38,39': [fuef, ab, haubi],\n '40,41,42,43,44': [zwaenzg, vor],\n '45,46,47,48,49': [viertu, vor],\n '50,51,52,53,54': [zae, vor],\n '55,56,57,58,59': [fuef, vor]\n },\n permanent: es_isch,\n prettyName: 'Bärndütsch',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_de_CH);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst es_isch: WordDefinition = {1: [1, 2, 4, 5, 6, 7]};\nconst genau: WordDefinition = {3: [7, 8, 9, 10, 11]};\nconst ab: WordDefinition = {4: [4, 5]};\nconst vor: WordDefinition = {4: [1, 2, 3]};\nconst haubi: WordDefinition = {4: [7, 8, 9, 10, 11]};\nconst fuef: WordDefinition = {1: [9, 10, 11]};\nconst zae: WordDefinition = {2: [9, 10, 11]};\nconst viertu: WordDefinition = {2: [1, 2, 3, 4, 5, 6]};\nconst zwaenzg: WordDefinition = {3: [1, 2, 3, 4, 5, 6]};\n\nexport const Layout_de_CH_genau: Layout = {\n code: 'de_CH_genau',\n hours: {\n '0,12': {10: [1, 2, 3, 4, 5, 6]},\n '1,13': {5: [1, 2, 3]},\n '2,14': {5: [4, 5, 6, 7]},\n '3,15': {5: [9, 10, 11]},\n '4,16': {6: [1, 2, 3, 4, 5]},\n '5,17': {6: [6, 7, 8, 9]},\n '6,18': {7: [1, 2, 3, 4, 5, 6]},\n '7,19': {7: [7, 8, 9, 10, 11]},\n '8,20': {8: [1, 2, 3, 4, 5]},\n '9,21': {8: [6, 7, 8, 9]},\n '10,22': {9: [1, 2, 3, 4]},\n '11,23': {9: [8, 9, 10, 11]}\n },\n letters: [\n 'ESKISCHAFÜF',\n 'VIERTUBFZÄÄ',\n 'ZWÄNZGGENAU',\n 'VORABOHAUBI',\n 'EISZWÖISDRÜ',\n 'VIERIFÜFIQT',\n 'SÄCHSISIBNI',\n 'ACHTINÜNIEL',\n 'ZÄNIERBEUFI',\n 'ZWÖUFINAUHR'\n ],\n minutes: {\n '0': genau,\n '5,6,7,8,9': [fuef, ab],\n '10,11,12,13,14': [zae, ab],\n '15,16,17,18,19': [viertu, ab],\n '20,21,22,23,24': [zwaenzg, ab],\n '25,26,27,28,29': [fuef, vor, haubi],\n '30,31,32,33,34': haubi,\n '35,36,37,38,39': [fuef, ab, haubi],\n '40,41,42,43,44': [zwaenzg, vor],\n '45,46,47,48,49': [viertu, vor],\n '50,51,52,53,54': [zae, vor],\n '55,56,57,58,59': [fuef, vor]\n },\n permanent: es_isch,\n prettyName: 'Bärndütsch (genau)',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_de_CH_genau);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst klokken_er: WordDefinition = {1: [1, 2, 3, 4, 5, 6, 7, 9, 10]};\nconst minutter: WordDefinition = {4: [4, 5, 6, 7, 8, 9, 10, 11]};\nconst i: WordDefinition = {5: [8]};\nconst over: WordDefinition = {5: [4, 5, 6, 7]};\nconst fem: WordDefinition = {2: [1, 2, 3]};\nconst ti: WordDefinition = {4: [1, 2]};\nconst kvart: WordDefinition = {3: [4, 5, 6, 7, 8]};\nconst tyve: WordDefinition = {2: [4, 5, 6, 7]};\nconst halv: WordDefinition = {6: [8, 9, 10, 11]};\n\nexport const Layout_dk: Layout = {\n code: 'dk',\n hours: {\n '0,12': {10: [8, 9, 10, 11]},\n '1,13': {7: [1, 2]},\n '2,14': {7: [3, 4]},\n '3,15': {7: [5, 6, 7]},\n '4,16': {7: [8, 9, 10, 11]},\n '5,17': {8: [1, 2, 3]},\n '6,18': {8: [4, 5, 6, 7]},\n '7,19': {8: [9, 10, 11]},\n '8,20': {9: [1, 2, 3, 4]},\n '9,21': {9: [6, 7]},\n '10,22': {9: [10, 11]},\n '11,23': {10: [1, 2, 3, 4, 5, 6]}\n },\n letters: [\n 'KLOKKENVERO',\n 'FEMTYVESKLA',\n 'OJEKVARTVAT',\n 'TIAMINUTTER',\n 'VEMOVERILMF',\n 'MONALISHALV',\n 'ETTOTREFIRE',\n 'FEMSEKSRSYV',\n 'OTTERNIMETI',\n 'ELLEVEATOLV'\n ],\n minutes: {\n '5,6,7,8,9': [fem, minutter, over],\n '10,11,12,13,14': [ti, minutter, over],\n '15,16,17,18,19': [kvart, over],\n '20,21,22,23,24': [tyve, minutter, over],\n '25,26,27,28,29': [fem, minutter, i, halv],\n '30,31,32,33,34': [halv],\n '35,36,37,38,39': [fem, minutter, over, halv],\n '40,41,42,43,44': [tyve, minutter, i],\n '45,46,47,48,49': [kvart, i],\n '50,51,52,53,54': [ti, minutter, i],\n '55,56,57,58,59': [fem, minutter, i]\n },\n permanent: klokken_er,\n prettyName: 'Dansk',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_dk);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst it_is: WordDefinition = {1: [1, 2, 4, 5]};\nconst half: WordDefinition = {4: [1, 2, 3, 4]};\nconst to: WordDefinition = {4: [10, 11]};\nconst past: WordDefinition = {5: [1, 2, 3, 4]};\nconst o_clock: WordDefinition = {10: [5, 6, 7, 8, 9, 10, 11]};\nconst five: WordDefinition = {3: [7, 8, 9, 10]};\nconst ten: WordDefinition = {4: [6, 7, 8]};\nconst a_quarter: WordDefinition = {2: [1, 3, 4, 5, 6, 7, 8, 9]};\nconst twenty: WordDefinition = {3: [1, 2, 3, 4, 5, 6]};\nconst twentyfive: WordDefinition = {3: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]};\n\nexport const Layout_en: Layout = {\n code: 'en',\n getHour: (time: Date) => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n\n hours: {\n '0,12': {9: [6, 7, 8, 9, 10, 11]},\n '1,13': {6: [1, 2, 3]},\n '2,14': {7: [9, 10, 11]},\n '3,15': {6: [7, 8, 9, 10, 11]},\n '4,16': {7: [1, 2, 3, 4]},\n '5,17': {7: [5, 6, 7, 8]},\n '6,18': {6: [4, 5, 6]},\n '7,19': {9: [1, 2, 3, 4, 5]},\n '8,20': {8: [1, 2, 3, 4, 5]},\n '9,21': {5: [8, 9, 10, 11]},\n '10,22': {10: [1, 2, 3]},\n '11,23': {8: [6, 7, 8, 9, 10, 11]}\n },\n letters: [\n 'ITLISBFAMPM',\n 'ACQUARTERDC',\n 'TWENTYFIVEX',\n 'HALFBTENFTO',\n 'PASTERUNINE',\n 'ONESIXTHREE',\n 'FOURFIVETWO',\n 'EIGHTELEVEN',\n 'SEVENTWELVE',\n 'TENSO\\'CLOCK'\n ],\n minutes: {\n '0,1,2,3,4': o_clock,\n '5,6,7,8,9': [five, past],\n '10,11,12,13,14': [ten, past],\n '15,16,17,18,19': [a_quarter, past],\n '20,21,22,23,24': [twenty, past],\n '25,26,27,28,29': [twentyfive, past],\n '30,31,32,33,34': [half, past],\n '35,36,37,38,39': [twentyfive, to],\n '40,41,42,43,44': [twenty, to],\n '45,46,47,48,49': [a_quarter, to],\n '50,51,52,53,54': [ten, to],\n '55,56,57,58,59': [five, to]\n },\n permanent: it_is,\n prettyName: 'English',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_en);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst es_la: WordDefinition = {1: [1, 2, 6, 7]};\nconst son_las: WordDefinition = {1: [2, 3, 4, 6, 7, 8]};\nconst y: WordDefinition = {7: [6]};\nconst menos: WordDefinition = {7: [7, 8, 9, 10, 11]};\nconst media: WordDefinition = {10: [1, 2, 3, 4, 5]};\nconst cinco: WordDefinition = {9: [7, 8, 9, 10, 11]};\nconst diez: WordDefinition = {8: [8, 9, 10, 11]};\nconst cuarto: WordDefinition = {10: [6, 7, 8, 9, 10, 11]};\nconst veinte: WordDefinition = {8: [2, 3, 4, 5, 6, 7]};\nconst veinticinco: WordDefinition = {9: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]};\n\nexport const Layout_es: Layout = {\n code: 'es',\n getHour: (time: Date) => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n\n hours: {\n '0,12': [son_las, {7: [1, 2, 3, 4]}],\n '1,13': [es_la, {1: [9, 10, 11]}],\n '2,14': [son_las, {2: [1, 2, 3]}],\n '3,15': [son_las, {2: [5, 6, 7, 8]}],\n '4,16': [son_las, {3: [1, 2, 3, 4, 5, 6]}],\n '5,17': [son_las, {3: [7, 8, 9, 10, 11]}],\n '6,18': [son_las, {4: [1, 2, 3, 4]}],\n '7,19': [son_las, {4: [6, 7, 8, 9, 10]}],\n '8,20': [son_las, {5: [1, 2, 3, 4]}],\n '9,21': [son_las, {5: [5, 6, 7, 8, 9]}],\n '10,22': [son_las, {6: [3, 4, 5, 6]}],\n '11,23': [son_las, {6: [8, 9, 10, 11]}]\n },\n letters: [\n 'ESONELASUNA',\n 'DOSITRESORE',\n 'CUATROCINCO',\n 'SEISASIETEN',\n 'OCHONUEVEYO',\n 'LADIEZSONCE',\n 'DOCELYMENOS',\n 'OVEINTEDIEZ',\n 'VEINTICINCO',\n 'MEDIACUARTO'\n ],\n minutes: {\n '5,6,7,8,9': [y, cinco],\n '10,11,12,13,14': [y, diez],\n '15,16,17,18,19': [y, cuarto],\n '20,21,22,23,24': [y, veinte],\n '25,26,27,28,29': [y, veinticinco],\n '30,31,32,33,34': [y, media],\n '35,36,37,38,39': [menos, veinticinco],\n '40,41,42,43,44': [menos, veinte],\n '45,46,47,48,49': [menos, cuarto],\n '50,51,52,53,54': [menos, diez],\n '55,56,57,58,59': [menos, cinco]\n },\n permanent: null,\n prettyName: 'Español',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_es);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst il_est: WordDefinition = {1: [1, 2, 4, 5, 6]};\nconst et: WordDefinition = {8: [1, 2]};\nconst moins: WordDefinition = {7: [1, 2, 3, 4, 5]};\nconst demie: WordDefinition = {10: [4, 5, 6, 7, 8]};\nconst heures: WordDefinition = {6: [6, 7, 8, 9, 10, 11]};\nconst le: WordDefinition = {7: [7, 8]};\nconst cinq: WordDefinition = {9: [7, 8, 9, 10]};\nconst dix: WordDefinition = {7: [9, 10, 11]};\nconst quart: WordDefinition = {8: [4, 5, 6, 7, 8]};\nconst vingt: WordDefinition = {9: [1, 2, 3, 4, 5]};\nconst vingtcinq: WordDefinition = {9: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]};\n\nexport const Layout_fr: Layout = {\n code: 'fr',\n getHour: (time: Date) => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n hours: {\n '0': {5: [6, 7, 8, 9, 10, 11]},\n '1,13': [\n {3: [5, 6, 7]},\n heures\n ],\n '2,14': [\n {1: [8, 9, 10, 11]},\n heures\n ],\n '3,15': [\n {2: [7, 8, 9, 10, 11]},\n heures\n ],\n '4,16': [\n {2: [1, 2, 3, 4, 5, 6]},\n heures\n ],\n '5,17': [\n {4: [8, 9, 10, 11]},\n heures\n ],\n '6,18': [\n {4: [5, 6, 7]},\n heures\n ],\n '7,19': [\n {3: [8, 9, 10, 11]},\n heures\n ],\n '8,20': [\n {4: [1, 2, 3, 4]},\n heures\n ],\n '9,21': [\n {3: [1, 2, 3, 4]},\n heures\n ],\n '10,22': [\n {5: [3, 4, 5]},\n heures\n ],\n '11,23': [\n {6: [1, 2, 3, 4]},\n heures\n ],\n '12': {5: [1, 2, 3, 4]}\n },\n letters: [\n 'ILNESTODEUX',\n 'QUATRETROIS',\n 'NEUFUNESEPT',\n 'HUITSIXCINQ',\n 'MIDIXMINUIT',\n 'ONZERHEURES',\n 'MOINSOLEDIX',\n 'ETRQUARTPMD',\n 'VINGT-CINQU',\n 'ETSDEMIEPAM'\n ],\n minutes: {\n '5,6,7,8,9': cinq,\n '10,11,12,13,14': dix,\n '15,16,17,18,19': [et, quart],\n '20,21,22,23,24': vingt,\n '25,26,27,28,29': vingtcinq,\n '30,31,32,33,34': [et, demie],\n '35,36,37,38,39': [moins, vingtcinq],\n '40,41,42,43,44': [moins, vingt],\n '45,46,47,48,49': [moins, le, quart],\n '50,51,52,53,54': [moins, dix],\n '55,56,57,58,59': [moins, cinq]\n },\n permanent: il_est,\n prettyName: 'Français',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_fr);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst sono_le: WordDefinition = {1: [1, 2, 3, 4, 6, 7]};\nconst e_l: WordDefinition = {2: [1, 3, 4]};\nconst e: WordDefinition = {8: [1]};\nconst meno: WordDefinition = {7: [8, 9, 10, 11]};\nconst mezza: WordDefinition = {10: [7, 8, 9, 10, 11]};\nconst cinque: WordDefinition = {9: [6, 7, 8, 9, 10, 11]};\nconst dieci: WordDefinition = {10: [1, 2, 3, 4, 5]};\nconst un_quarto: WordDefinition = {8: [3, 4, 6, 7, 8, 9, 10, 11]};\nconst venti: WordDefinition = {9: [1, 2, 3, 4, 5]};\nconst venticinque: WordDefinition = {9: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]};\n\nexport const Layout_it: Layout = {\n code: 'it',\n getHour: (time: Date) => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n hours: {\n '0,12': [sono_le, {5: [1, 2, 3, 4, 5, 6]}],\n '1,13': [e_l, {2: [5, 6, 7]}],\n '2,14': [sono_le, {2: [9, 10, 11]}],\n '3,15': [sono_le, {3: [1, 2, 3]}],\n '4,16': [sono_le, {6: [1, 2, 3, 4, 5, 6, 7]}],\n '5,17': [sono_le, {7: [1, 2, 3, 4, 5, 6]}],\n '6,18': [sono_le, {6: [9, 10, 11]}],\n '7,19': [sono_le, {5: [7, 8, 9, 10, 11]}],\n '8,20': [sono_le, {3: [4, 5, 6, 7]}],\n '9,21': [sono_le, {3: [8, 9, 10, 11]}],\n '10,22': [sono_le, {4: [1, 2, 3, 4, 5]}],\n '11,23': [sono_le, {4: [6, 7, 8, 9, 10, 11]}]\n },\n letters: [\n 'SONORLEBORE',\n 'ÈRL\\'UNASDUE',\n 'TREOTTONOVE',\n 'DIECIUNDICI',\n 'DODICISETTE',\n 'QUATTROCSEI',\n 'CINQUEAMENO',\n 'ECUNOQUARTO',\n 'VENTICINQUE',\n 'DIECIPMEZZA'\n ],\n minutes: {\n '5,6,7,8,9': [e, cinque],\n '10,11,12,13,14': [e, dieci],\n '15,16,17,18,19': [e, un_quarto],\n '20,21,22,23,24': [e, venti],\n '25,26,27,28,29': [e, venticinque],\n '30,31,32,33,34': [e, mezza],\n '35,36,37,38,39': [meno, venticinque],\n '40,41,42,43,44': [meno, venti],\n '45,46,47,48,49': [meno, un_quarto],\n '50,51,52,53,54': [meno, dieci],\n '55,56,57,58,59': [meno, cinque]\n },\n permanent: null,\n prettyName: 'Italiano',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_it);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst het_is: WordDefinition = {1: [1, 2, 3, 5, 6]};\nconst over1: WordDefinition = {3: [1, 2, 3, 4]};\nconst voor1: WordDefinition = {2: [8, 9, 10, 11]};\nconst over2: WordDefinition = {4: [8, 9, 10, 11]};\nconst voor2: WordDefinition = {5: [1, 2, 3, 4]};\nconst half: WordDefinition = {4: [1, 2, 3, 4]};\nconst vijf: WordDefinition = {1: [8, 9, 10, 11]};\nconst tien: WordDefinition = {2: [1, 2, 3, 4]};\nconst kwart: WordDefinition = {3: [7, 8, 9, 10, 11]};\nconst uur: WordDefinition = {10: [9, 10, 11]};\n\nexport const Layout_nl: Layout = {\n code: 'nl',\n getHour: (time: Date) => {\n const hour = time.getHours();\n if (time.getMinutes() >= 20) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n hours: {\n '0,12': {10: [1, 2, 3, 4, 5, 6]},\n '1,13': {5: [8, 9, 10]},\n '2,14': {6: [1, 2, 3, 4]},\n '3,15': {6: [8, 9, 10, 11]},\n '4,16': {7: [1, 2, 3, 4]},\n '5,17': {7: [5, 6, 7, 8]},\n '6,18': {7: [9, 10, 11]},\n '7,19': {8: [1, 2, 3, 4, 5]},\n '8,20': {9: [1, 2, 3, 4]},\n '9,21': {8: [7, 8, 9, 10, 11]},\n '10,22': {9: [5, 6, 7, 8]},\n '11,23': {9: [9, 10, 11]}\n },\n letters: [\n 'HETKISAVIJF',\n 'TIENBTZVOOR',\n 'OVERMEKWART',\n 'HALFSPWOVER',\n 'VOORTHGEENS',\n 'TWEEPVCDRIE',\n 'VIERVIJFZES',\n 'ZEVENONEGEN',\n 'ACHTTIENELF',\n 'TWAALFBFUUR'\n ],\n minutes: {\n '0,1,2,3,4': uur,\n '5,6,7,8,9': [vijf, over1],\n '10,11,12,13,14': [tien, over1],\n '15,16,17,18,19': [kwart, over2],\n '20,21,22,23,24': [tien, voor1, half],\n '25,26,27,28,29': [vijf, voor1, half],\n '30,31,32,33,34': half,\n '35,36,37,38,39': [vijf, over1, half],\n '40,41,42,43,44': [tien, over1, half],\n '45,46,47,48,49': [kwart, voor2],\n '50,51,52,53,54': [tien, voor1],\n '55,56,57,58,59': [vijf, voor1]\n },\n permanent: het_is,\n prettyName: 'Nederlands',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_nl);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst e_: WordDefinition = {1: [1]};\nconst sao: WordDefinition = {1: [2, 3, 4]};\nconst e1: WordDefinition = {7: [8]};\nconst e2: WordDefinition = {10: [5]};\nconst menos: WordDefinition = {7: [7, 8, 9, 10, 11]};\nconst meia: WordDefinition = {8: [8, 9, 10, 11]};\nconst cinco: WordDefinition = {10: [7, 8, 9, 10, 11]};\nconst dez: WordDefinition = {10: [1, 2, 3]};\nconst um_quarto: WordDefinition = {9: [1, 2, 4, 5, 6, 7, 8, 9]};\nconst vinte: WordDefinition = {8: [1, 2, 3, 4, 5]};\n\nexport const Layout_pt: Layout = {\n code: 'pt',\n getHour: (time: Date) => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n hours: {\n '0': [e_, {'6': [2, 3, 4, 5, 7, 8, 9, 10, 11]}],\n '12': [e_, {'2': [1, 2, 3, 4, 6, 7, 8]}],\n '1,13': [e_, {'1': [5, 6, 7]}],\n '2,14': [sao, {'3': [1, 2, 3, 4]}],\n '3,15': [sao, {'1': [8, 9, 10, 11]}],\n '4,16': [sao, {'4': [1, 2, 3, 4, 5, 6]}],\n '5,17': [sao, {'5': [1, 2, 3, 4, 5]}],\n '6,18': [sao, {'3': [4, 5, 6, 7]}],\n '7,19': [sao, {'3': [7, 8, 9, 10]}],\n '8,20': [sao, {'5': [5, 6, 7, 8]}],\n '9,21': [sao, {'4': [8, 9, 10, 11]}],\n '10,22': [sao, {'2': [9, 10, 11]}],\n '11,23': [sao, {'5': [8, 9, 10, 11]}]\n },\n letters: [\n 'ÉSÃOUMATRÊS',\n 'MEIOLDIADEZ',\n 'DUASEISETEY',\n 'QUATROHNOVE',\n 'CINCOITONZE',\n 'ZMEIALNOITE',\n 'HORASYMENOS',\n 'VINTECAMEIA',\n 'UMVQUARTOPM',\n 'DEZOEYCINCO'\n ],\n minutes: {\n '5,6,7,8,9': [e1, cinco],\n '10,11,12,13,14': [e1, dez],\n '15,16,17,18,19': [e1, um_quarto],\n '20,21,22,23,24': [e1, vinte],\n '25,26,27,28,29': [e1, vinte, e2, cinco],\n '30,31,32,33,34': [e1, meia],\n '35,36,37,38,39': [menos, vinte, e2, cinco],\n '40,41,42,43,44': [menos, vinte],\n '45,46,47,48,49': [menos, um_quarto],\n '50,51,52,53,54': [menos, dez],\n '55,56,57,58,59': [menos, cinco]\n },\n permanent: null,\n prettyName: 'Português',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_pt);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout} from './layout';\nimport {Theme} from './theme';\n\nexport class Globals {\n private static layouts: Layout[] = [];\n private static themes: Theme[] = [];\n\n static registerTheme(name: string, styleClass: string): void {\n if (Globals.themes.some(value => value.name === name)) {\n console.log(`Theme with name '${name}' already registered; ignoring register request for styleClass '${styleClass}'.`)\n } else {\n Globals.themes.push({\n name,\n styleClass\n });\n }\n }\n\n static hasThemes(): boolean {\n return Globals.themes.length > 0;\n }\n\n static hasMultipleThemes(): boolean {\n return Globals.themes.length > 1;\n }\n\n static getFirstTheme(): Theme {\n return Globals.getTheme(0);\n }\n\n static getTheme(index: number): Theme {\n return Globals.themes[index];\n }\n\n static getThemes(): Theme[] {\n return Globals.themes;\n }\n\n static registerLayout(layout: Layout): void {\n const available = !Globals.layouts.some(element => {\n if (layout.code === element.code) {\n if (layout.prettyName !== element.prettyName) {\n console.error(\n `Error: Language code '${layout.code}' cannot be registered for layout '${layout.prettyName}' because it is already registered for layout '${element.prettyName}'!`\n );\n }\n return true;\n }\n return false;\n }\n );\n if (available) {\n Globals.layouts.push(layout);\n Globals.layouts.sort((a, b) => a.prettyName.localeCompare(b.prettyName));\n }\n }\n\n static hasLayouts(): boolean {\n return Globals.layouts.length > 0;\n }\n\n static hasMultipleLayouts(): boolean {\n return Globals.layouts.length > 1;\n }\n\n static getFirstLayout(): Layout {\n return Globals.layouts[0];\n }\n\n static getLayouts(): Layout[] {\n return Globals.layouts;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Letter} from './letter';\n\nexport interface Layout {\n readonly code: string;\n getCoarseMinute?: (time: Date) => number;\n getDotMinute?: (time: Date) => number;\n getHour?: (time: Date) => number;\n getSeconds?: (time: Date) => number;\n readonly hours: TimeDefinition;\n readonly letters: string[];\n readonly minutes: TimeDefinition;\n parsed?: Letter[][];\n readonly permanent: WordDefinition | WordDefinition[];\n readonly prettyName: string;\n seconds?: TimeDefinition;\n readonly version: number;\n}\n\nexport interface WordDefinition {\n [line: number]: number[];\n}\n\nexport interface TimeDefinition {\n [values: string]: WordDefinition | WordDefinition[];\n}\n\nexport const EMPTY_LAYOUT: Layout = {\n code: null,\n hours: null,\n letters: [],\n minutes: null,\n permanent: [],\n prettyName: null,\n version: 2\n};\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport * as Cookies from 'js-cookie';\n\nexport class CookieHandler {\n constructor(private widgetId: string, private cookiePath?: string) {\n }\n\n getLayout(): string {\n const oldCookie = this.getCookie('uhr-language');\n if (!!oldCookie) {\n // aha, old cookie is set. migrate to new one!\n this.removeCookie('uhr-language');\n this.setLayout(oldCookie);\n }\n return this.getCookie('uhr-layout');\n }\n\n setLayout(layout: string): void {\n this.setCookie('uhr-layout', layout);\n }\n\n getMode(): string {\n return this.getCookie('uhr-mode');\n }\n\n setMode(mode: string): void {\n this.setCookie('uhr-mode', mode);\n }\n\n\n getStatus(): string {\n return this.getCookie('uhr-status');\n }\n\n setStatus(status: string): void {\n this.setCookie('uhr-status', status);\n }\n\n getTheme(): string {\n return this.getCookie('uhr-theme');\n }\n\n setTheme(theme: string): void {\n this.setCookie('uhr-theme', theme);\n }\n\n private getCookie(cookieName: string): string {\n return Cookies.get(cookieName + this.widgetId);\n }\n\n private setCookie(cookieName: string, cookieValue: string): void {\n let options;\n if (!!this.cookiePath) {\n options = {expires: 365, path: this.cookiePath};\n } else {\n options = {expires: 365};\n }\n Cookies.set(cookieName + this.widgetId, cookieValue, options);\n }\n\n private removeCookie(cookieName: string): void {\n if (!!this.cookiePath) {\n Cookies.remove(cookieName + this.widgetId, {path: this.cookiePath});\n } else {\n Cookies.remove(cookieName + this.widgetId);\n }\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\n/**\n * Ein Buchstabe. Hilfsklasse für den Renderer und Inhalt der Layout-Arrays.\n * @param value Der Buchstabe, der Dargestellt werden soll.\n * @param style Die CSS-Styleklassen des Buchstabens.\n */\nexport class Letter {\n private readonly value: string;\n private style: string = '';\n\n constructor(value: string, style?: string) {\n this.value = value;\n if (!!style) {\n this.style = style;\n }\n }\n\n addStyle(style: string): void {\n if (this.style === '') {\n this.style = style;\n } else {\n this.style += ` ${style}`;\n }\n };\n\n toString(): string {\n return `${this.value}`;\n };\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, TimeDefinition, WordDefinition} from './domain/layout';\nimport {Letter} from './domain/letter';\n\nclass LayoutRendererV2Delegate {\n private static readonly vorne0: WordDefinition = {\n 3: [2, 3, 4],\n 4: [1, 5],\n 5: [1, 4, 5],\n 6: [1, 3, 5],\n 7: [1, 2, 5],\n 8: [1, 5],\n 9: [2, 3, 4]\n };\n private static readonly hinten0: WordDefinition = {\n 3: [8, 9, 10],\n 4: [7, 11],\n 5: [7, 10, 11],\n 6: [7, 9, 11],\n 7: [7, 8, 11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly vorne1: WordDefinition = {\n 3: [3],\n 4: [2, 3],\n 5: [3],\n 6: [3],\n 7: [3],\n 8: [3],\n 9: [2, 3, 4]\n };\n private static readonly hinten1: WordDefinition = {\n 3: [9],\n 4: [8, 9],\n 5: [9],\n 6: [9],\n 7: [9],\n 8: [9],\n 9: [8, 9, 10]\n };\n private static readonly vorne2: WordDefinition = {\n 3: [2, 3, 4],\n 4: [1, 5],\n 5: [5],\n 6: [4],\n 7: [3],\n 8: [2],\n 9: [1, 2, 3, 4, 5]\n };\n private static readonly hinten2: WordDefinition = {\n 3: [8, 9, 10],\n 4: [7, 11],\n 5: [11],\n 6: [10],\n 7: [9],\n 8: [8],\n 9: [7, 8, 9, 10, 11]\n };\n private static readonly vorne3: WordDefinition = {\n 3: [1, 2, 3, 4, 5],\n 4: [4],\n 5: [3],\n 6: [4],\n 7: [5],\n 8: [1, 5],\n 9: [2, 3, 4]\n };\n private static readonly hinten3: WordDefinition = {\n 3: [7, 8, 9, 10, 11],\n 4: [10],\n 5: [9],\n 6: [10],\n 7: [11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly vorne4: WordDefinition = {\n 3: [4],\n 4: [3, 4],\n 5: [2, 4],\n 6: [1, 4],\n 7: [1, 2, 3, 4, 5],\n 8: [4],\n 9: [4]\n };\n private static readonly hinten4: WordDefinition = {\n 3: [10],\n 4: [9, 10],\n 5: [8, 10],\n 6: [7, 10],\n 7: [7, 8, 9, 10, 11],\n 8: [10],\n 9: [10]\n };\n private static readonly vorne5: WordDefinition = {\n 3: [1, 2, 3, 4, 5],\n 4: [1],\n 5: [1, 2, 3, 4],\n 6: [5],\n 7: [5],\n 8: [1, 5],\n 9: [2, 3, 4]\n };\n private static readonly hinten5: WordDefinition = {\n 3: [7, 8, 9, 10, 11],\n 4: [7],\n 5: [7, 8, 9, 10],\n 6: [11],\n 7: [11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly hinten6: WordDefinition = {\n 3: [9, 10],\n 4: [8],\n 5: [7],\n 6: [7, 8, 9, 10],\n 7: [7, 11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly hinten7: WordDefinition = {\n 3: [7, 8, 9, 10, 11],\n 4: [11],\n 5: [10],\n 6: [9],\n 7: [8],\n 8: [8],\n 9: [8]\n };\n private static readonly hinten8: WordDefinition = {\n 3: [8, 9, 10],\n 4: [7, 11],\n 5: [7, 11],\n 6: [8, 9, 10],\n 7: [7, 11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly hinten9: WordDefinition = {\n 3: [8, 9, 10],\n 4: [7, 11],\n 5: [7, 11],\n 6: [8, 9, 10, 11],\n 7: [11],\n 8: [10],\n 9: [8, 9]\n };\n private static readonly seconds: TimeDefinition = {\n '0': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten0],\n '1': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten1],\n '2': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten2],\n '3': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten3],\n '4': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten4],\n '5': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten5],\n '6': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten6],\n '7': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten7],\n '8': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten8],\n '9': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten9],\n '10': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten0],\n '11': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten1],\n '12': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten2],\n '13': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten3],\n '14': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten4],\n '15': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten5],\n '16': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten6],\n '17': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten7],\n '18': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten8],\n '19': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten9],\n '20': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten0],\n '21': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten1],\n '22': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten2],\n '23': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten3],\n '24': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten4],\n '25': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten5],\n '26': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten6],\n '27': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten7],\n '28': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten8],\n '29': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten9],\n '30': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten0],\n '31': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten1],\n '32': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten2],\n '33': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten3],\n '34': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten4],\n '35': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten5],\n '36': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten6],\n '37': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten7],\n '38': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten8],\n '39': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten9],\n '40': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten0],\n '41': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten1],\n '42': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten2],\n '43': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten3],\n '44': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten4],\n '45': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten5],\n '46': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten6],\n '47': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten7],\n '48': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten8],\n '49': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten9],\n '50': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten0],\n '51': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten1],\n '52': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten2],\n '53': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten3],\n '54': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten4],\n '55': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten5],\n '56': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten6],\n '57': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten7],\n '58': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten8],\n '59': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten9]\n };\n\n constructor(private layout: Layout) {\n }\n\n public parse(): Letter[][] {\n const letters: Letter[][] = [];\n this.layout.letters.forEach(lineString => {\n const line: Letter[] = [];\n for (let c = 0; c < lineString.length; c++) {\n line.push(new Letter(lineString[c]));\n }\n letters.push(line);\n });\n this.parseArrayOrObject(letters, 'on', this.layout.permanent);\n if (typeof this.layout.seconds !== 'undefined' && this.layout.seconds !== null) {\n this.parseTimeDefinition(letters, 'second', this.layout.seconds);\n } else {\n this.parseTimeDefinition(letters, 'second', LayoutRendererV2Delegate.seconds);\n }\n this.parseTimeDefinition(letters, 'minute', this.layout.minutes);\n this.parseTimeDefinition(letters, 'hour', this.layout.hours);\n return letters;\n };\n\n private parseObject(letters: Letter[][], styleClass: string, object: WordDefinition): void {\n if (typeof object !== 'undefined' && object !== null) {\n Object.keys(object)\n .map(key => Number(key))\n .forEach(\n y => object[y].forEach(\n x => letters[y - 1][x - 1].addStyle(styleClass)\n )\n );\n }\n }\n\n private parseArrayOrObject(letters: Letter[][], styleClass: string, input: WordDefinition | WordDefinition[]): void {\n if (typeof input !== 'undefined' && input !== null) {\n if (Array.isArray(input)) {\n input.forEach(item => this.parseObject(letters, styleClass, item));\n } else {\n this.parseObject(letters, styleClass, input);\n }\n }\n }\n\n private parseTimeDefinition(letters: Letter[][], styleClass: string, definition: TimeDefinition): void {\n if (typeof definition !== 'undefined' && definition !== null) {\n Object.keys(definition).forEach(listString => {\n const timeValues: string[] = listString.split(',');\n const highlightLetters: WordDefinition | WordDefinition[] = definition[listString];\n timeValues.forEach(timeValue => this.parseArrayOrObject(letters, styleClass + timeValue, highlightLetters));\n });\n }\n }\n}\n\n/**\n * Hilfsklasse zum Rendern der Buchstaben der Uhr.\n * @param layout Layout-Objekt, das gerendert werden soll.\n * @param renderarea Das jQuery-gewrappte HTML-Element, auf dem gerendert werden soll.\n */\nexport class LayoutRenderer {\n constructor(private layout: Layout, private renderarea: JQuery) {\n }\n\n render(beforeshow?: () => void): void {\n if (this.layout.parsed === undefined) {\n if (this.layout.version === 2) {\n const delegate: LayoutRendererV2Delegate = new LayoutRendererV2Delegate(this.layout);\n const parsedLayout: Letter[][] = delegate.parse();\n Object.defineProperty(this.layout, 'parsed', {\n value: parsedLayout,\n writable: false,\n configurable: false\n });\n } else {\n console.warn(`Unknown layout version: '${this.layout.version}', expecting '2'`);\n return;\n }\n }\n const letters: Letter[][] = this.layout.parsed;\n this.renderarea.fadeOut('fast', () => {\n this.renderarea.empty();\n letters.forEach((line, index, array) => {\n line.forEach(letter => this.renderarea.append(letter.toString()));\n if (index < array.length - 1) {\n this.renderarea.append(' ');\n }\n });\n if (!!beforeshow) {\n beforeshow();\n }\n this.renderarea.fadeIn('fast');\n });\n };\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {CookieHandler} from './cookie-handler';\nimport {Globals} from './domain/globals';\nimport {Options} from './widget/options';\nimport {Uhr} from './uhr';\n\nexport class UhrRenderer {\n private cookieHandler: CookieHandler;\n\n constructor(\n private uhr: Uhr,\n private $element: JQuery,\n private options: Options,\n private id: string\n ) {\n this.cookieHandler = new CookieHandler(id, options.cookiePath);\n }\n\n public render(): void {\n this.setupHTML();\n this.wireFunctionality();\n }\n\n public setWidth(width: string): void {\n this.$element.css('width', width);\n const realWidth: number = this.$element.width();\n this.$element.width(realWidth);\n this.$element.height(realWidth);\n this.$element.css('font-size', (realWidth / 40) + 'px');\n }\n\n private setupHTML(): void {\n // Base clock area\n this.$element.addClass('uhr')\n .empty()\n .append('')\n .append('')\n .append('')\n .append('')\n .append('')\n .append('');\n\n this.setWidth(this.options.width);\n\n if (this.options.controls) {\n const controlpanel = $(``);\n const content = $('');\n controlpanel.append(content);\n // on/off switch\n const toggleSwitch = $(``);\n toggleSwitch.append(``);\n toggleSwitch.append(``);\n content.append(toggleSwitch);\n\n // time mode switch\n const modeSwitch = $(``);\n modeSwitch.append(``);\n modeSwitch.append(``);\n content.append(modeSwitch);\n // language chooser\n if (Globals.hasMultipleLayouts()) {\n const languageChooser = $(``);\n Globals.getLayouts().forEach(layout => {\n languageChooser.append(``);\n });\n content.append(languageChooser);\n }\n\n // theme chooser\n if (Globals.hasMultipleThemes()) {\n const themeChooser = $(``);\n Globals.getThemes().forEach(theme => {\n themeChooser.append(``);\n });\n content.append(themeChooser);\n }\n const closebutton: JQuery = $(``);\n closebutton.on({click: () => $(`#uhr-controlpanel${this.id}`).hide('fast')});\n content.append(closebutton);\n this.$element.after(controlpanel);\n controlpanel.hide();\n const configlink: JQuery = $(``);\n configlink.on({click: () => this.toggleConfigScreen()});\n this.$element.after(configlink);\n }\n };\n\n private wireFunctionality(): void {\n // on/off switch\n const toggleSwitch: JQuery = $(`#uhr-onoffswitch-checkbox${this.id}`);\n toggleSwitch.on({click: () => this.uhr.toggle()});\n let status = this.cookieHandler.getStatus();\n if (status === undefined || this.options.force) {\n status = this.options.status;\n }\n toggleSwitch.prop('checked', status === 'on');\n if (status === 'on') {\n this.uhr.start();\n } else {\n this.uhr.stop();\n }\n\n // time mode switch\n const modeSwitch: JQuery = $(`#uhr-modeswitch-checkbox${this.id}`);\n modeSwitch.on({\n click: () => {\n if (this.options.mode === 'seconds') {\n this.uhr.setMode('normal');\n } else {\n this.uhr.setMode('seconds');\n }\n }\n });\n\n let mode = this.cookieHandler.getMode();\n if (mode === undefined || this.options.force) {\n mode = this.options.mode;\n }\n modeSwitch.prop('checked', mode !== 'seconds');\n if (mode === 'seconds') {\n this.uhr.setMode('seconds');\n } else {\n this.uhr.setMode('normal');\n }\n\n // language chooser\n const languageChooser: JQuery = $(`#uhr-languagechooser${this.id}`);\n languageChooser.on({\n change: () => {\n const languageKey = $(`#uhr-languagechooser${this.id}`).val() as string;\n this.uhr.setLayout(languageKey);\n }\n });\n let selectedLayout = this.cookieHandler.getLayout();\n if (selectedLayout === undefined || this.options.force) {\n selectedLayout = this.options.language;\n }\n let found = Globals.getLayouts().some(item => selectedLayout === item.code);\n if (!found) {\n let fallbackLanguage;\n if (Globals.hasLayouts()) {\n fallbackLanguage = Globals.getFirstLayout().code;\n } else {\n fallbackLanguage = '';\n }\n console.warn(`Language '${selectedLayout}' not found! Using fallback '${fallbackLanguage}'.`);\n selectedLayout = fallbackLanguage;\n }\n languageChooser.val(selectedLayout);\n this.options.language = '';\n this.uhr.setLayout(selectedLayout);\n\n // theme chooser\n const themeChooser: JQuery = $(`#uhr-themechooser${this.id}`);\n themeChooser.on({\n change: () => {\n const themeKey = $(`#uhr-themechooser${this.id}`).val() as string;\n this.uhr.setTheme(themeKey);\n }\n });\n let selectedTheme = this.cookieHandler.getTheme();\n if (selectedTheme === undefined || this.options.force) {\n selectedTheme = this.options.theme;\n }\n found = Globals.getThemes().some(item => selectedTheme === item.styleClass);\n if (!found) {\n const fallbackTheme = Globals.getFirstTheme().styleClass;\n console.warn(`Theme '${selectedTheme}' not found! Using fallback '${fallbackTheme}'.`);\n selectedTheme = fallbackTheme;\n }\n themeChooser.val(selectedTheme);\n this.options.theme = '';\n this.uhr.setTheme(selectedTheme);\n if (this.options.autoresize) {\n $(window).on({\n resize: () => {\n const $parent: JQuery = this.$element.parent();\n const $window: JQuery = $(window);\n const parentWidth: number = $parent.width();\n const parentHeight: number = $parent.height();\n const windowWidth: number = $window.width();\n const windowHeight: number = $window.height();\n const size: string = `${Math.min(parentWidth, parentHeight, windowWidth, windowHeight)}px`;\n this.setWidth(size);\n }\n });\n }\n }\n\n private toggleConfigScreen() {\n $(`#uhr-controlpanel${this.id}`).toggle('fast');\n };\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {EMPTY_LAYOUT, Layout} from './domain/layout';\nimport {CookieHandler} from './cookie-handler';\nimport {Globals} from './domain/globals';\nimport {LayoutRenderer} from './layout-renderer';\nimport {UhrRenderer} from './uhr-renderer';\nimport {WidgetPrototype} from './widget/widget-prototype';\n\nexport class Uhr {\n\n private timer: number = null;\n private currentMinute: number = null;\n private renderer: UhrRenderer;\n private cookieHandler: CookieHandler;\n\n constructor(private widgetInstance: WidgetPrototype) {\n const userTime = this.widgetInstance.options.time;\n if (this.widgetInstance.options.time === undefined) {\n this.widgetInstance.options.time = new Date();\n }\n this.cookieHandler = new CookieHandler(this.widgetInstance.uuid, this.widgetInstance.options.cookiePath);\n this.parseHash();\n this.renderer = new UhrRenderer(this, this.widgetInstance.element, this.widgetInstance.options, this.widgetInstance.uuid);\n this.renderer.render();\n if (userTime !== undefined) {\n this.setTime(userTime);\n }\n }\n\n destroy(): void {\n if (!!this.timer) {\n window.clearInterval(this.timer);\n this.timer = null;\n }\n this.widgetInstance.element\n .removeAttr('style')\n .removeAttr('class')\n .empty();\n $(`#uhr-configlink${this.widgetInstance.uuid}`).remove();\n $(`#uhr-controlpanel${this.widgetInstance.uuid}`).remove();\n }\n\n start(): void {\n if (!this.isOn()) {\n this.timer = window.setInterval(() => {\n this.widgetInstance.options.time = new Date();\n this.update();\n }, 1000);\n this.update();\n this.cookieHandler.setStatus('on')\n }\n }\n\n stop(): void {\n if (this.isOn()) {\n window.clearInterval(this.timer);\n this.timer = null;\n this.update();\n this.cookieHandler.setStatus('off');\n }\n }\n\n toggle(): void {\n if (this.isOn()) {\n this.stop();\n } else {\n this.start();\n }\n }\n\n setLayout(key: string): void {\n if (key !== this.widgetInstance.options.language) {\n this.widgetInstance.options.language = key;\n const renderer = new LayoutRenderer(this.getCurrentLayout(), this.widgetInstance.element.find('.letterarea'));\n renderer.render(() => {\n this.currentMinute = -1;\n this.update();\n });\n this.cookieHandler.setLayout(key);\n this.update();\n }\n }\n\n setTheme(styleClass: string): void {\n if (styleClass !== this.widgetInstance.options.theme) {\n this.widgetInstance.element.removeClass(this.widgetInstance.options.theme).addClass(styleClass);\n $(`#uhr-onoffswitch${this.widgetInstance.uuid}`).removeClass(this.widgetInstance.options.theme).addClass(styleClass);\n this.widgetInstance.options.theme = styleClass;\n this.cookieHandler.setTheme(styleClass);\n }\n }\n\n setTime(time: Date): void {\n this.currentMinute = null;\n if (time === null) {\n this.widgetInstance.options.time = new Date();\n } else {\n if (this.timer !== null) {\n window.clearInterval(this.timer);\n }\n this.widgetInstance.options.time = time;\n }\n this.update();\n }\n\n setMode(mode: string): void {\n this.widgetInstance.options.mode = mode;\n this.currentMinute = null;\n this.update();\n this.cookieHandler.setMode(mode);\n }\n\n setWidth(width: string): void {\n this.renderer.setWidth(width);\n }\n\n private isOn(): boolean {\n return this.timer !== null;\n }\n\n private update(): void {\n if (this.isOn()) {\n const time = this.widgetInstance.options.time;\n if (!this.getCurrentLayout().hasOwnProperty('seconds') && this.widgetInstance.options.mode !== 'seconds') {\n if (time.getMinutes() === this.currentMinute) {\n return;\n }\n this.currentMinute = time.getMinutes();\n }\n this.show(time);\n } else {\n this.clear();\n this.currentMinute = -1;\n }\n }\n\n private show(time: Date): void {\n const second = this.getSecond(time);\n const dotMinute = this.getDotMinute(time);\n const hour = this.getHour(time);\n const coarseMinute = this.getCoarseMinute(time);\n this.clear();\n if (this.widgetInstance.options.mode === 'seconds') {\n this.highlight(`second${second}`);\n } else {\n this.highlight('on');\n for (let i = 1; i <= dotMinute; i++) {\n this.highlight(`dot${i}`);\n }\n this.highlight(`minute${coarseMinute}`);\n this.highlight(`hour${hour}`);\n }\n }\n\n private clear(): void {\n this.widgetInstance.element.find('.item').removeClass('active');\n }\n\n private highlight(itemClass: string): void {\n this.widgetInstance.element.find(`.item.${itemClass}`).addClass('active');\n }\n\n private getSecond(time: Date): number {\n if (typeof this.getCurrentLayout().getSeconds === 'function') {\n return this.getCurrentLayout().getSeconds(time);\n }\n return time.getSeconds();\n };\n\n private getDotMinute(date: Date): number {\n if (typeof this.getCurrentLayout().getDotMinute === 'function') {\n return this.getCurrentLayout().getDotMinute(date);\n }\n return date.getMinutes() % 5;\n };\n\n private getCoarseMinute(date: Date): number {\n if (typeof this.getCurrentLayout().getCoarseMinute === 'function') {\n return this.getCurrentLayout().getCoarseMinute(date);\n }\n return date.getMinutes();\n };\n\n private getHour(date: Date): number {\n if (typeof this.getCurrentLayout().getHour === 'function') {\n return this.getCurrentLayout().getHour(date);\n }\n const hour = date.getHours();\n if (date.getMinutes() >= 25) {\n return (hour + 1) % 24;\n }\n return hour;\n };\n\n private parseHash(): void {\n let hash: string = window.location.hash;\n if (hash !== undefined && hash.charAt(0) === '#') {\n hash = hash.substring(1);\n hash = decodeURIComponent(hash);\n const params: string[] = hash.split('&');\n params.forEach(element => {\n const pair: string[] = element.split('=');\n const key = pair[0];\n const value = pair[1];\n switch (key) {\n case 'l':\n case 'language':\n this.widgetInstance.options.language = value;\n this.widgetInstance.options.force = true;\n break;\n case 't':\n case 'theme':\n this.widgetInstance.options.theme = value;\n this.widgetInstance.options.force = true;\n break;\n case 'm':\n case 'mode':\n this.widgetInstance.options.mode = value;\n this.widgetInstance.options.force = true;\n break;\n case 's':\n case 'status':\n this.widgetInstance.options.status = value;\n this.widgetInstance.options.force = true;\n break;\n }\n });\n }\n }\n\n private getCurrentLayout(): Layout {\n const matchingLanguages: Layout[] = Globals.getLayouts().filter(element => element.code === this.widgetInstance.options.language, this);\n if (matchingLanguages.length > 0) {\n return matchingLanguages[0];\n }\n // fallback: return empty object\n return EMPTY_LAYOUT;\n };\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport * as $ from 'jquery';\nimport {Globals} from './domain/globals';\n\nexport function autodetectThemes() {\n $('link[rel=stylesheet]').each((index, item) => {\n const styleSheet = $(item);\n const styleClass: string = styleSheet.attr('data-class');\n if (styleClass !== undefined) {\n let name: string = styleSheet.attr('data-name');\n if (name === undefined) {\n name = styleClass;\n }\n Globals.registerTheme(name, styleClass);\n }\n });\n\n // fall-back if no theme was included\n if (!Globals.hasThemes()) {\n Globals.registerTheme('', '');\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Globals} from './domain/globals';\nimport {Layout} from './domain/layout';\nimport {Uhr} from './uhr';\nimport {WidgetPrototype} from './widget/widget-prototype';\nimport {autodetectThemes} from './theme-autodetector';\n\n// First things first: discover included themes and register them\nautodetectThemes();\n\n$.widget('fritteli.uhr', {\n options: {\n width: '100%',\n status: 'on',\n language: 'de_CH',\n theme: Globals.getFirstTheme().styleClass,\n force: false,\n controls: true,\n cookiePath: undefined,\n autoresize: true,\n mode: 'normal'\n },\n start: function () {\n this.__fritteli_uhr_instance.start();\n },\n stop: function () {\n this.__fritteli_uhr_instance.stop();\n },\n toggle: function () {\n this.__fritteli_uhr_instance.toggle();\n },\n language: function (key: string) {\n this.__fritteli_uhr_instance.setLayout(key);\n },\n theme: function (styleClass: string) {\n this.__fritteli_uhr_instance.setTheme(styleClass);\n },\n time: function (time: Date) {\n this.__fritteli_uhr_instance.setTime(time);\n },\n mode: function (mode: string) {\n this.__fritteli_uhr_instance.setMode(mode);\n },\n width: function (width: string) {\n this.__fritteli_uhr_instance.setWidth(width);\n },\n // constructor method\n _create: function () {\n this.__fritteli_uhr_instance = new Uhr(this);\n },\n // destructor method\n _destroy: function () {\n this.__fritteli_uhr_instance.destroy();\n },\n __fritteli_uhr_instance: null\n} as WidgetPrototype);\n\n$.fritteli.uhr.register = Globals.registerLayout;\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n const widget: JQueryUI.Widget;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport * as uhr from './index';\nimport {Layout_de} from './layout/layout-de';\nimport {Layout_de_CH} from './layout/layout-de_ch';\nimport {Layout_de_CH_genau} from './layout/layout-de_ch_genau';\nimport {Layout_dk} from './layout/layout-dk';\nimport {Layout_en} from './layout/layout-en';\nimport {Layout_es} from './layout/layout-es';\nimport {Layout_fr} from './layout/layout-fr';\nimport {Layout_it} from './layout/layout-it';\nimport {Layout_nl} from './layout/layout-nl';\nimport {Layout_pt} from './layout/layout-pt';\n\n// We just need to reference all required files at least once, so that the tree-shaker won't remove them from\n// the bundle.\nlet a = uhr;\na = Layout_de_CH;\na = Layout_de_CH_genau;\na = Layout_de;\na = Layout_dk;\na = Layout_en;\na = Layout_es;\na = Layout_fr;\na = Layout_it;\na = Layout_nl;\na = Layout_pt;\n"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///external \"Cookies\"","webpack:///external \"jQuery\"","webpack:///./src/layout/layout-de.ts","webpack:///./src/layout/layout-de_ch.ts","webpack:///./src/layout/layout-de_ch_genau.ts","webpack:///./src/layout/layout-dk.ts","webpack:///./src/layout/layout-en.ts","webpack:///./src/layout/layout-es.ts","webpack:///./src/layout/layout-fr.ts","webpack:///./src/layout/layout-it.ts","webpack:///./src/layout/layout-nl.ts","webpack:///./src/layout/layout-pt.ts","webpack:///./src/domain/globals.ts","webpack:///./src/domain/layout.ts","webpack:///./src/cookie-handler.ts","webpack:///./src/domain/letter.ts","webpack:///./src/layout-renderer.ts","webpack:///./src/uhr-renderer.ts","webpack:///./src/uhr.ts","webpack:///./src/theme-autodetector.ts","webpack:///./src/index.ts","webpack:///./src/bundle.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","Cookies","jQuery","__webpack_exports__","LayoutDe","nach","4","vor","halb","5","fuenf","1","zehn","2","zwanzig","code","hours","0,12","9","1,13","6","2,14","3,15","7","4,16","5,17","6,18","8","7,19","8,20","9,21","10","10,22","11,23","letters","minutes","0,1,2,3,4","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","3","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","prettyName","version","$","fritteli","uhr","register","LayoutDeCh","ab","haubi","fuef","zae","viertu","zwaenzg","LayoutDeChGenau","0","LayoutDk","minutter","over","fem","ti","kvart","tyve","halv","LayoutEn","to","past","five","ten","aQuarter","twenty","twentyfive","getHour","time","hour","getHours","getMinutes","LayoutEs","sonLas","y","menos","cinco","diez","cuarto","veinte","veinticinco","LayoutFr","et","moins","heures","cinq","dix","quart","vingt","vingtcinq","12","LayoutIt","sonoLe","e","meno","cinque","dieci","unQuarto","venti","venticinque","LayoutNl","over1","voor1","half","vijf","tien","kwart","LayoutPt","sao","e1","e2","dez","umQuarto","vinte","Globals","registerTheme","styleClass","themes","some","console","warn","push","hasThemes","length","hasMultipleThemes","getFirstTheme","getTheme","index","getThemes","registerLayout","layout","layouts","element","error","sort","a","b","localeCompare","hasLayouts","hasMultipleLayouts","getFirstLayout","getLayouts","EMPTY_LAYOUT","cookie_handler_CookieHandler","CookieHandler","widgetId","cookiePath","this","getLayout","oldCookie","getCookie","removeCookie","setLayout","setCookie","getMode","setMode","getStatus","setStatus","status","setTheme","theme","cookieName","external_Cookies_","cookieValue","options","expires","path","Letter","style","addStyle","toString","layout_renderer_LayoutRendererV2Delegate","LayoutRendererV2Delegate","parse","forEach","lineString","line","parseArrayOrObject","seconds","parseTimeDefinition","parseObject","keys","map","Number","x","input","_this","Array","isArray","item","definition","listString","timeValues","split","highlightLetters","timeValue","vorne0","hinten0","vorne1","hinten1","vorne2","hinten2","vorne3","hinten3","vorne4","hinten4","vorne5","hinten5","hinten6","hinten7","hinten8","hinten9","11","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59","LayoutRenderer","renderarea","render","beforeshow","undefined","parsed","parsedLayout","writable","configurable","fadeOut","empty","array","letter","append","fadeIn","uhr_renderer_UhrRenderer","UhrRenderer","$element","id","cookieHandler","setupHTML","wireFunctionality","setWidth","width","css","realWidth","height","addClass","controls","controlpanel","content","toggleSwitch","modeSwitch","languageChooser_1","themeChooser_1","closebutton","on","click","hide","after","configlink","toggleConfigScreen","toggle","force","prop","start","stop","languageChooser","change","languageKey","val","selectedLayout","language","found","fallbackLanguage","themeChooser","themeKey","selectedTheme","fallbackTheme","autoresize","window","resize","$parent","parent","$window","parentWidth","parentHeight","windowWidth","windowHeight","size","Math","min","uhr_Uhr","Uhr","widgetInstance","timer","currentMinute","userTime","Date","uuid","parseHash","renderer","setTime","destroy","clearInterval","removeAttr","remove","isOn","setInterval","update","getCurrentLayout","find","removeClass","show","clear","second","getSecond","dotMinute","getDotMinute","coarseMinute","getCoarseMinute","highlight","itemClass","getSeconds","date","hash","location","charAt","substring","decodeURIComponent","pair","matchingLanguages","filter","external_jQuery_","each","styleSheet","attr","name_1","widgetPrototype","_fritteliUhrInstance","_create","_destroy","widget","_layout_layout_de__WEBPACK_IMPORTED_MODULE_1__","_layout_layout_de_ch__WEBPACK_IMPORTED_MODULE_2__","_layout_layout_de_ch_genau__WEBPACK_IMPORTED_MODULE_3__","_layout_layout_dk__WEBPACK_IMPORTED_MODULE_4__","_layout_layout_en__WEBPACK_IMPORTED_MODULE_5__","_layout_layout_es__WEBPACK_IMPORTED_MODULE_6__","_layout_layout_fr__WEBPACK_IMPORTED_MODULE_7__","_layout_layout_it__WEBPACK_IMPORTED_MODULE_8__","_layout_layout_nl__WEBPACK_IMPORTED_MODULE_9__","_layout_layout_pt__WEBPACK_IMPORTED_MODULE_10__"],"mappings":"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","file":"lib/uhr.bundle.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 13);\n","module.exports = Cookies;","module.exports = jQuery;","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst esIst: WordDefinition = {1: [1, 2, 4, 5, 6]};\nconst uhr: WordDefinition = {10: [9, 10, 11]};\nconst nach: WordDefinition = {4: [8, 9, 10, 11]};\nconst vor: WordDefinition = {4: [1, 2, 3]};\nconst halb: WordDefinition = {5: [1, 2, 3, 4]};\nconst fuenf: WordDefinition = {1: [8, 9, 10, 11]};\nconst zehn: WordDefinition = {2: [1, 2, 3, 4]};\nconst viertel: WordDefinition = {3: [5, 6, 7, 8, 9, 10, 11]};\nconst zwanzig: WordDefinition = {2: [5, 6, 7, 8, 9, 10, 11]};\nconst dreiviertel: WordDefinition = {3: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]};\n\nexport const LayoutDe: Layout = {\n code: 'de',\n hours: {\n '0,12': {9: [7, 8, 9, 10, 11]},\n '1,13': {6: [1, 2, 3, 4]},\n '2,14': {6: [8, 9, 10, 11]},\n '3,15': {7: [1, 2, 3, 4]},\n '4,16': {7: [8, 9, 10, 11]},\n '5,17': {5: [8, 9, 10, 11]},\n '6,18': {8: [1, 2, 3, 4, 5]},\n '7,19': {9: [1, 2, 3, 4, 5, 6]},\n '8,20': {8: [8, 9, 10, 11]},\n '9,21': {10: [4, 5, 6, 7]},\n '10,22': {10: [1, 2, 3, 4]},\n '11,23': {5: [6, 7, 8]}\n },\n letters: [\n 'ESKISTAFÜNF',\n 'ZEHNZWANZIG',\n 'DREIVIERTEL',\n 'VORFUNKNACH',\n 'HALBAELFÜNF',\n 'EINSXAMZWEI',\n 'DREIPMJVIER',\n 'SECHSNLACHT',\n 'SIEBENZWÖLF',\n 'ZEHNEUNKUHR'\n ],\n minutes: {\n '0,1,2,3,4': uhr,\n '5,6,7,8,9': [fuenf, nach],\n '10,11,12,13,14': [zehn, nach],\n '15,16,17,18,19': [viertel, nach],\n '20,21,22,23,24': [zwanzig, nach],\n '25,26,27,28,29': [fuenf, vor, halb],\n '30,31,32,33,34': halb,\n '35,36,37,38,39': [fuenf, nach, halb],\n '40,41,42,43,44': [zwanzig, vor],\n '45,46,47,48,49': dreiviertel,\n '50,51,52,53,54': [zehn, vor],\n '55,56,57,58,59': [fuenf, vor]\n },\n permanent: esIst,\n prettyName: 'Deutsch',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutDe);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst esIsch: WordDefinition = {1: [1, 2, 4, 5, 6, 7]};\nconst ab: WordDefinition = {4: [1, 2]};\nconst vor: WordDefinition = {3: [9, 10, 11]};\nconst haubi: WordDefinition = {4: [4, 5, 6, 7, 8]};\nconst fuef: WordDefinition = {1: [9, 10, 11]};\nconst zae: WordDefinition = {2: [9, 10, 11]};\nconst viertu: WordDefinition = {2: [1, 2, 3, 4, 5, 6]};\nconst zwaenzg: WordDefinition = {3: [1, 2, 3, 4, 5, 6]};\n\nexport const LayoutDeCh: Layout = {\n code: 'de_CH',\n hours: {\n '0,12': {10: [1, 2, 3, 4, 5, 6]},\n '1,13': {5: [1, 2, 3]},\n '2,14': {5: [4, 5, 6, 7]},\n '3,15': {5: [9, 10, 11]},\n '4,16': {6: [1, 2, 3, 4, 5]},\n '5,17': {6: [6, 7, 8, 9]},\n '6,18': {7: [1, 2, 3, 4, 5, 6]},\n '7,19': {7: [7, 8, 9, 10, 11]},\n '8,20': {8: [1, 2, 3, 4, 5]},\n '9,21': {8: [6, 7, 8, 9]},\n '10,22': {9: [1, 2, 3, 4]},\n '11,23': {9: [8, 9, 10, 11]}\n },\n letters: [\n 'ESKISCHAFÜF',\n 'VIERTUBFZÄÄ',\n 'ZWÄNZGSIVOR',\n 'ABOHAUBIEGE',\n 'EISZWÖISDRÜ',\n 'VIERIFÜFIQT',\n 'SÄCHSISIBNI',\n 'ACHTINÜNIEL',\n 'ZÄNIERBEUFI',\n 'ZWÖUFINAUHR'\n ],\n minutes: {\n '5,6,7,8,9': [fuef, ab],\n '10,11,12,13,14': [zae, ab],\n '15,16,17,18,19': [viertu, ab],\n '20,21,22,23,24': [zwaenzg, ab],\n '25,26,27,28,29': [fuef, vor, haubi],\n '30,31,32,33,34': haubi,\n '35,36,37,38,39': [fuef, ab, haubi],\n '40,41,42,43,44': [zwaenzg, vor],\n '45,46,47,48,49': [viertu, vor],\n '50,51,52,53,54': [zae, vor],\n '55,56,57,58,59': [fuef, vor]\n },\n permanent: esIsch,\n prettyName: 'Bärndütsch',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutDeCh);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst esIsch: WordDefinition = {1: [1, 2, 4, 5, 6, 7]};\nconst genau: WordDefinition = {3: [7, 8, 9, 10, 11]};\nconst ab: WordDefinition = {4: [4, 5]};\nconst vor: WordDefinition = {4: [1, 2, 3]};\nconst haubi: WordDefinition = {4: [7, 8, 9, 10, 11]};\nconst fuef: WordDefinition = {1: [9, 10, 11]};\nconst zae: WordDefinition = {2: [9, 10, 11]};\nconst viertu: WordDefinition = {2: [1, 2, 3, 4, 5, 6]};\nconst zwaenzg: WordDefinition = {3: [1, 2, 3, 4, 5, 6]};\n\nexport const LayoutDeChGenau: Layout = {\n code: 'de_CH_genau',\n hours: {\n '0,12': {10: [1, 2, 3, 4, 5, 6]},\n '1,13': {5: [1, 2, 3]},\n '2,14': {5: [4, 5, 6, 7]},\n '3,15': {5: [9, 10, 11]},\n '4,16': {6: [1, 2, 3, 4, 5]},\n '5,17': {6: [6, 7, 8, 9]},\n '6,18': {7: [1, 2, 3, 4, 5, 6]},\n '7,19': {7: [7, 8, 9, 10, 11]},\n '8,20': {8: [1, 2, 3, 4, 5]},\n '9,21': {8: [6, 7, 8, 9]},\n '10,22': {9: [1, 2, 3, 4]},\n '11,23': {9: [8, 9, 10, 11]}\n },\n letters: [\n 'ESKISCHAFÜF',\n 'VIERTUBFZÄÄ',\n 'ZWÄNZGGENAU',\n 'VORABOHAUBI',\n 'EISZWÖISDRÜ',\n 'VIERIFÜFIQT',\n 'SÄCHSISIBNI',\n 'ACHTINÜNIEL',\n 'ZÄNIERBEUFI',\n 'ZWÖUFINAUHR'\n ],\n minutes: {\n '0': genau,\n '5,6,7,8,9': [fuef, ab],\n '10,11,12,13,14': [zae, ab],\n '15,16,17,18,19': [viertu, ab],\n '20,21,22,23,24': [zwaenzg, ab],\n '25,26,27,28,29': [fuef, vor, haubi],\n '30,31,32,33,34': haubi,\n '35,36,37,38,39': [fuef, ab, haubi],\n '40,41,42,43,44': [zwaenzg, vor],\n '45,46,47,48,49': [viertu, vor],\n '50,51,52,53,54': [zae, vor],\n '55,56,57,58,59': [fuef, vor]\n },\n permanent: esIsch,\n prettyName: 'Bärndütsch (genau)',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutDeChGenau);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst klokkenEr: WordDefinition = {1: [1, 2, 3, 4, 5, 6, 7, 9, 10]};\nconst minutter: WordDefinition = {4: [4, 5, 6, 7, 8, 9, 10, 11]};\nconst i: WordDefinition = {5: [8]};\nconst over: WordDefinition = {5: [4, 5, 6, 7]};\nconst fem: WordDefinition = {2: [1, 2, 3]};\nconst ti: WordDefinition = {4: [1, 2]};\nconst kvart: WordDefinition = {3: [4, 5, 6, 7, 8]};\nconst tyve: WordDefinition = {2: [4, 5, 6, 7]};\nconst halv: WordDefinition = {6: [8, 9, 10, 11]};\n\nexport const LayoutDk: Layout = {\n code: 'dk',\n hours: {\n '0,12': {10: [8, 9, 10, 11]},\n '1,13': {7: [1, 2]},\n '2,14': {7: [3, 4]},\n '3,15': {7: [5, 6, 7]},\n '4,16': {7: [8, 9, 10, 11]},\n '5,17': {8: [1, 2, 3]},\n '6,18': {8: [4, 5, 6, 7]},\n '7,19': {8: [9, 10, 11]},\n '8,20': {9: [1, 2, 3, 4]},\n '9,21': {9: [6, 7]},\n '10,22': {9: [10, 11]},\n '11,23': {10: [1, 2, 3, 4, 5, 6]}\n },\n letters: [\n 'KLOKKENVERO',\n 'FEMTYVESKLA',\n 'OJEKVARTVAT',\n 'TIAMINUTTER',\n 'VEMOVERILMF',\n 'MONALISHALV',\n 'ETTOTREFIRE',\n 'FEMSEKSRSYV',\n 'OTTERNIMETI',\n 'ELLEVEATOLV'\n ],\n minutes: {\n '5,6,7,8,9': [fem, minutter, over],\n '10,11,12,13,14': [ti, minutter, over],\n '15,16,17,18,19': [kvart, over],\n '20,21,22,23,24': [tyve, minutter, over],\n '25,26,27,28,29': [fem, minutter, i, halv],\n '30,31,32,33,34': [halv],\n '35,36,37,38,39': [fem, minutter, over, halv],\n '40,41,42,43,44': [tyve, minutter, i],\n '45,46,47,48,49': [kvart, i],\n '50,51,52,53,54': [ti, minutter, i],\n '55,56,57,58,59': [fem, minutter, i]\n },\n permanent: klokkenEr,\n prettyName: 'Dansk',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutDk);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst itIs: WordDefinition = {1: [1, 2, 4, 5]};\nconst half: WordDefinition = {4: [1, 2, 3, 4]};\nconst to: WordDefinition = {4: [10, 11]};\nconst past: WordDefinition = {5: [1, 2, 3, 4]};\nconst oClock: WordDefinition = {10: [5, 6, 7, 8, 9, 10, 11]};\nconst five: WordDefinition = {3: [7, 8, 9, 10]};\nconst ten: WordDefinition = {4: [6, 7, 8]};\nconst aQuarter: WordDefinition = {2: [1, 3, 4, 5, 6, 7, 8, 9]};\nconst twenty: WordDefinition = {3: [1, 2, 3, 4, 5, 6]};\nconst twentyfive: WordDefinition = {3: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]};\n\nexport const LayoutEn: Layout = {\n code: 'en',\n getHour: (time: Date): number => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n\n hours: {\n '0,12': {9: [6, 7, 8, 9, 10, 11]},\n '1,13': {6: [1, 2, 3]},\n '2,14': {7: [9, 10, 11]},\n '3,15': {6: [7, 8, 9, 10, 11]},\n '4,16': {7: [1, 2, 3, 4]},\n '5,17': {7: [5, 6, 7, 8]},\n '6,18': {6: [4, 5, 6]},\n '7,19': {9: [1, 2, 3, 4, 5]},\n '8,20': {8: [1, 2, 3, 4, 5]},\n '9,21': {5: [8, 9, 10, 11]},\n '10,22': {10: [1, 2, 3]},\n '11,23': {8: [6, 7, 8, 9, 10, 11]}\n },\n letters: [\n 'ITLISBFAMPM',\n 'ACQUARTERDC',\n 'TWENTYFIVEX',\n 'HALFBTENFTO',\n 'PASTERUNINE',\n 'ONESIXTHREE',\n 'FOURFIVETWO',\n 'EIGHTELEVEN',\n 'SEVENTWELVE',\n 'TENSO\\'CLOCK'\n ],\n minutes: {\n '0,1,2,3,4': oClock,\n '5,6,7,8,9': [five, past],\n '10,11,12,13,14': [ten, past],\n '15,16,17,18,19': [aQuarter, past],\n '20,21,22,23,24': [twenty, past],\n '25,26,27,28,29': [twentyfive, past],\n '30,31,32,33,34': [half, past],\n '35,36,37,38,39': [twentyfive, to],\n '40,41,42,43,44': [twenty, to],\n '45,46,47,48,49': [aQuarter, to],\n '50,51,52,53,54': [ten, to],\n '55,56,57,58,59': [five, to]\n },\n permanent: itIs,\n prettyName: 'English',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutEn);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst esLa: WordDefinition = {1: [1, 2, 6, 7]};\nconst sonLas: WordDefinition = {1: [2, 3, 4, 6, 7, 8]};\nconst y: WordDefinition = {7: [6]};\nconst menos: WordDefinition = {7: [7, 8, 9, 10, 11]};\nconst media: WordDefinition = {10: [1, 2, 3, 4, 5]};\nconst cinco: WordDefinition = {9: [7, 8, 9, 10, 11]};\nconst diez: WordDefinition = {8: [8, 9, 10, 11]};\nconst cuarto: WordDefinition = {10: [6, 7, 8, 9, 10, 11]};\nconst veinte: WordDefinition = {8: [2, 3, 4, 5, 6, 7]};\nconst veinticinco: WordDefinition = {9: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]};\n\nexport const LayoutEs: Layout = {\n code: 'es',\n getHour: (time: Date): number => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n\n hours: {\n '0,12': [sonLas, {7: [1, 2, 3, 4]}],\n '1,13': [esLa, {1: [9, 10, 11]}],\n '2,14': [sonLas, {2: [1, 2, 3]}],\n '3,15': [sonLas, {2: [5, 6, 7, 8]}],\n '4,16': [sonLas, {3: [1, 2, 3, 4, 5, 6]}],\n '5,17': [sonLas, {3: [7, 8, 9, 10, 11]}],\n '6,18': [sonLas, {4: [1, 2, 3, 4]}],\n '7,19': [sonLas, {4: [6, 7, 8, 9, 10]}],\n '8,20': [sonLas, {5: [1, 2, 3, 4]}],\n '9,21': [sonLas, {5: [5, 6, 7, 8, 9]}],\n '10,22': [sonLas, {6: [3, 4, 5, 6]}],\n '11,23': [sonLas, {6: [8, 9, 10, 11]}]\n },\n letters: [\n 'ESONELASUNA',\n 'DOSITRESORE',\n 'CUATROCINCO',\n 'SEISASIETEN',\n 'OCHONUEVEYO',\n 'LADIEZSONCE',\n 'DOCELYMENOS',\n 'OVEINTEDIEZ',\n 'VEINTICINCO',\n 'MEDIACUARTO'\n ],\n minutes: {\n '5,6,7,8,9': [y, cinco],\n '10,11,12,13,14': [y, diez],\n '15,16,17,18,19': [y, cuarto],\n '20,21,22,23,24': [y, veinte],\n '25,26,27,28,29': [y, veinticinco],\n '30,31,32,33,34': [y, media],\n '35,36,37,38,39': [menos, veinticinco],\n '40,41,42,43,44': [menos, veinte],\n '45,46,47,48,49': [menos, cuarto],\n '50,51,52,53,54': [menos, diez],\n '55,56,57,58,59': [menos, cinco]\n },\n permanent: null,\n prettyName: 'Español',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutEs);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst ilEst: WordDefinition = {1: [1, 2, 4, 5, 6]};\nconst et: WordDefinition = {8: [1, 2]};\nconst moins: WordDefinition = {7: [1, 2, 3, 4, 5]};\nconst demie: WordDefinition = {10: [4, 5, 6, 7, 8]};\nconst heures: WordDefinition = {6: [6, 7, 8, 9, 10, 11]};\nconst le: WordDefinition = {7: [7, 8]};\nconst cinq: WordDefinition = {9: [7, 8, 9, 10]};\nconst dix: WordDefinition = {7: [9, 10, 11]};\nconst quart: WordDefinition = {8: [4, 5, 6, 7, 8]};\nconst vingt: WordDefinition = {9: [1, 2, 3, 4, 5]};\nconst vingtcinq: WordDefinition = {9: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]};\n\nexport const LayoutFr: Layout = {\n code: 'fr',\n getHour: (time: Date): number => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n hours: {\n '0': {5: [6, 7, 8, 9, 10, 11]},\n '1,13': [\n {3: [5, 6, 7]},\n heures\n ],\n '2,14': [\n {1: [8, 9, 10, 11]},\n heures\n ],\n '3,15': [\n {2: [7, 8, 9, 10, 11]},\n heures\n ],\n '4,16': [\n {2: [1, 2, 3, 4, 5, 6]},\n heures\n ],\n '5,17': [\n {4: [8, 9, 10, 11]},\n heures\n ],\n '6,18': [\n {4: [5, 6, 7]},\n heures\n ],\n '7,19': [\n {3: [8, 9, 10, 11]},\n heures\n ],\n '8,20': [\n {4: [1, 2, 3, 4]},\n heures\n ],\n '9,21': [\n {3: [1, 2, 3, 4]},\n heures\n ],\n '10,22': [\n {5: [3, 4, 5]},\n heures\n ],\n '11,23': [\n {6: [1, 2, 3, 4]},\n heures\n ],\n '12': {5: [1, 2, 3, 4]}\n },\n letters: [\n 'ILNESTODEUX',\n 'QUATRETROIS',\n 'NEUFUNESEPT',\n 'HUITSIXCINQ',\n 'MIDIXMINUIT',\n 'ONZERHEURES',\n 'MOINSOLEDIX',\n 'ETRQUARTPMD',\n 'VINGT-CINQU',\n 'ETSDEMIEPAM'\n ],\n minutes: {\n '5,6,7,8,9': cinq,\n '10,11,12,13,14': dix,\n '15,16,17,18,19': [et, quart],\n '20,21,22,23,24': vingt,\n '25,26,27,28,29': vingtcinq,\n '30,31,32,33,34': [et, demie],\n '35,36,37,38,39': [moins, vingtcinq],\n '40,41,42,43,44': [moins, vingt],\n '45,46,47,48,49': [moins, le, quart],\n '50,51,52,53,54': [moins, dix],\n '55,56,57,58,59': [moins, cinq]\n },\n permanent: ilEst,\n prettyName: 'Français',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutFr);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst sonoLe: WordDefinition = {1: [1, 2, 3, 4, 6, 7]};\nconst eL: WordDefinition = {2: [1, 3, 4]};\nconst e: WordDefinition = {8: [1]};\nconst meno: WordDefinition = {7: [8, 9, 10, 11]};\nconst mezza: WordDefinition = {10: [7, 8, 9, 10, 11]};\nconst cinque: WordDefinition = {9: [6, 7, 8, 9, 10, 11]};\nconst dieci: WordDefinition = {10: [1, 2, 3, 4, 5]};\nconst unQuarto: WordDefinition = {8: [3, 4, 6, 7, 8, 9, 10, 11]};\nconst venti: WordDefinition = {9: [1, 2, 3, 4, 5]};\nconst venticinque: WordDefinition = {9: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]};\n\nexport const LayoutIt: Layout = {\n code: 'it',\n getHour: (time: Date): number => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n hours: {\n '0,12': [sonoLe, {5: [1, 2, 3, 4, 5, 6]}],\n '1,13': [eL, {2: [5, 6, 7]}],\n '2,14': [sonoLe, {2: [9, 10, 11]}],\n '3,15': [sonoLe, {3: [1, 2, 3]}],\n '4,16': [sonoLe, {6: [1, 2, 3, 4, 5, 6, 7]}],\n '5,17': [sonoLe, {7: [1, 2, 3, 4, 5, 6]}],\n '6,18': [sonoLe, {6: [9, 10, 11]}],\n '7,19': [sonoLe, {5: [7, 8, 9, 10, 11]}],\n '8,20': [sonoLe, {3: [4, 5, 6, 7]}],\n '9,21': [sonoLe, {3: [8, 9, 10, 11]}],\n '10,22': [sonoLe, {4: [1, 2, 3, 4, 5]}],\n '11,23': [sonoLe, {4: [6, 7, 8, 9, 10, 11]}]\n },\n letters: [\n 'SONORLEBORE',\n 'ÈRL\\'UNASDUE',\n 'TREOTTONOVE',\n 'DIECIUNDICI',\n 'DODICISETTE',\n 'QUATTROCSEI',\n 'CINQUEAMENO',\n 'ECUNOQUARTO',\n 'VENTICINQUE',\n 'DIECIPMEZZA'\n ],\n minutes: {\n '5,6,7,8,9': [e, cinque],\n '10,11,12,13,14': [e, dieci],\n '15,16,17,18,19': [e, unQuarto],\n '20,21,22,23,24': [e, venti],\n '25,26,27,28,29': [e, venticinque],\n '30,31,32,33,34': [e, mezza],\n '35,36,37,38,39': [meno, venticinque],\n '40,41,42,43,44': [meno, venti],\n '45,46,47,48,49': [meno, unQuarto],\n '50,51,52,53,54': [meno, dieci],\n '55,56,57,58,59': [meno, cinque]\n },\n permanent: null,\n prettyName: 'Italiano',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutIt);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst hetIs: WordDefinition = {1: [1, 2, 3, 5, 6]};\nconst over1: WordDefinition = {3: [1, 2, 3, 4]};\nconst voor1: WordDefinition = {2: [8, 9, 10, 11]};\nconst over2: WordDefinition = {4: [8, 9, 10, 11]};\nconst voor2: WordDefinition = {5: [1, 2, 3, 4]};\nconst half: WordDefinition = {4: [1, 2, 3, 4]};\nconst vijf: WordDefinition = {1: [8, 9, 10, 11]};\nconst tien: WordDefinition = {2: [1, 2, 3, 4]};\nconst kwart: WordDefinition = {3: [7, 8, 9, 10, 11]};\nconst uur: WordDefinition = {10: [9, 10, 11]};\n\nexport const LayoutNl: Layout = {\n code: 'nl',\n getHour: (time: Date): number => {\n const hour = time.getHours();\n if (time.getMinutes() >= 20) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n hours: {\n '0,12': {10: [1, 2, 3, 4, 5, 6]},\n '1,13': {5: [8, 9, 10]},\n '2,14': {6: [1, 2, 3, 4]},\n '3,15': {6: [8, 9, 10, 11]},\n '4,16': {7: [1, 2, 3, 4]},\n '5,17': {7: [5, 6, 7, 8]},\n '6,18': {7: [9, 10, 11]},\n '7,19': {8: [1, 2, 3, 4, 5]},\n '8,20': {9: [1, 2, 3, 4]},\n '9,21': {8: [7, 8, 9, 10, 11]},\n '10,22': {9: [5, 6, 7, 8]},\n '11,23': {9: [9, 10, 11]}\n },\n letters: [\n 'HETKISAVIJF',\n 'TIENBTZVOOR',\n 'OVERMEKWART',\n 'HALFSPWOVER',\n 'VOORTHGEENS',\n 'TWEEPVCDRIE',\n 'VIERVIJFZES',\n 'ZEVENONEGEN',\n 'ACHTTIENELF',\n 'TWAALFBFUUR'\n ],\n minutes: {\n '0,1,2,3,4': uur,\n '5,6,7,8,9': [vijf, over1],\n '10,11,12,13,14': [tien, over1],\n '15,16,17,18,19': [kwart, over2],\n '20,21,22,23,24': [tien, voor1, half],\n '25,26,27,28,29': [vijf, voor1, half],\n '30,31,32,33,34': half,\n '35,36,37,38,39': [vijf, over1, half],\n '40,41,42,43,44': [tien, over1, half],\n '45,46,47,48,49': [kwart, voor2],\n '50,51,52,53,54': [tien, voor1],\n '55,56,57,58,59': [vijf, voor1]\n },\n permanent: hetIs,\n prettyName: 'Nederlands',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutNl);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst e: WordDefinition = {1: [1]};\nconst sao: WordDefinition = {1: [2, 3, 4]};\nconst e1: WordDefinition = {7: [8]};\nconst e2: WordDefinition = {10: [5]};\nconst menos: WordDefinition = {7: [7, 8, 9, 10, 11]};\nconst meia: WordDefinition = {8: [8, 9, 10, 11]};\nconst cinco: WordDefinition = {10: [7, 8, 9, 10, 11]};\nconst dez: WordDefinition = {10: [1, 2, 3]};\nconst umQuarto: WordDefinition = {9: [1, 2, 4, 5, 6, 7, 8, 9]};\nconst vinte: WordDefinition = {8: [1, 2, 3, 4, 5]};\n\nexport const LayoutPt: Layout = {\n code: 'pt',\n getHour: (time: Date): number => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n hours: {\n '0': [e, {'6': [2, 3, 4, 5, 7, 8, 9, 10, 11]}],\n '12': [e, {'2': [1, 2, 3, 4, 6, 7, 8]}],\n '1,13': [e, {'1': [5, 6, 7]}],\n '2,14': [sao, {'3': [1, 2, 3, 4]}],\n '3,15': [sao, {'1': [8, 9, 10, 11]}],\n '4,16': [sao, {'4': [1, 2, 3, 4, 5, 6]}],\n '5,17': [sao, {'5': [1, 2, 3, 4, 5]}],\n '6,18': [sao, {'3': [4, 5, 6, 7]}],\n '7,19': [sao, {'3': [7, 8, 9, 10]}],\n '8,20': [sao, {'5': [5, 6, 7, 8]}],\n '9,21': [sao, {'4': [8, 9, 10, 11]}],\n '10,22': [sao, {'2': [9, 10, 11]}],\n '11,23': [sao, {'5': [8, 9, 10, 11]}]\n },\n letters: [\n 'ÉSÃOUMATRÊS',\n 'MEIOLDIADEZ',\n 'DUASEISETEY',\n 'QUATROHNOVE',\n 'CINCOITONZE',\n 'ZMEIALNOITE',\n 'HORASYMENOS',\n 'VINTECAMEIA',\n 'UMVQUARTOPM',\n 'DEZOEYCINCO'\n ],\n minutes: {\n '5,6,7,8,9': [e1, cinco],\n '10,11,12,13,14': [e1, dez],\n '15,16,17,18,19': [e1, umQuarto],\n '20,21,22,23,24': [e1, vinte],\n '25,26,27,28,29': [e1, vinte, e2, cinco],\n '30,31,32,33,34': [e1, meia],\n '35,36,37,38,39': [menos, vinte, e2, cinco],\n '40,41,42,43,44': [menos, vinte],\n '45,46,47,48,49': [menos, umQuarto],\n '50,51,52,53,54': [menos, dez],\n '55,56,57,58,59': [menos, cinco]\n },\n permanent: null,\n prettyName: 'Português',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutPt);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout} from './layout';\nimport {Theme} from './theme';\n\nexport class Globals {\n private static layouts: Layout[] = [];\n private static themes: Theme[] = [];\n\n public static registerTheme(name: string, styleClass: string): void {\n if (Globals.themes.some((value): boolean => value.name === name)) {\n console.warn(`Theme with name '${name}' already registered; ignoring register request for styleClass '${styleClass}'.`);\n } else {\n Globals.themes.push({\n name,\n styleClass\n });\n }\n }\n\n public static hasThemes(): boolean {\n return Globals.themes.length > 0;\n }\n\n public static hasMultipleThemes(): boolean {\n return Globals.themes.length > 1;\n }\n\n public static getFirstTheme(): Theme {\n return Globals.getTheme(0);\n }\n\n public static getTheme(index: number): Theme {\n return Globals.themes[index];\n }\n\n public static getThemes(): Theme[] {\n return Globals.themes;\n }\n\n public static registerLayout(layout: Layout): void {\n const available = !Globals.layouts.some((element): boolean => {\n if (layout.code === element.code) {\n if (layout.prettyName !== element.prettyName) {\n console.error(\n `Error: Language code '${layout.code}' cannot be registered for layout '${layout.prettyName}' because it is already registered for layout '${element.prettyName}'!`\n );\n }\n return true;\n }\n return false;\n });\n if (available) {\n Globals.layouts.push(layout);\n Globals.layouts.sort((a, b): number => a.prettyName.localeCompare(b.prettyName));\n }\n }\n\n public static hasLayouts(): boolean {\n return Globals.layouts.length > 0;\n }\n\n public static hasMultipleLayouts(): boolean {\n return Globals.layouts.length > 1;\n }\n\n public static getFirstLayout(): Layout {\n return Globals.layouts[0];\n }\n\n public static getLayouts(): Layout[] {\n return Globals.layouts;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Letter} from './letter';\n\nexport interface Layout {\n readonly code: string;\n getCoarseMinute?: (time: Date) => number;\n getDotMinute?: (time: Date) => number;\n getHour?: (time: Date) => number;\n getSeconds?: (time: Date) => number;\n readonly hours: TimeDefinition;\n readonly letters: string[];\n readonly minutes: TimeDefinition;\n parsed?: Letter[][];\n readonly permanent: WordDefinition | WordDefinition[];\n readonly prettyName: string;\n seconds?: TimeDefinition;\n readonly version: number;\n}\n\nexport interface WordDefinition {\n [line: number]: number[];\n}\n\nexport interface TimeDefinition {\n [values: string]: WordDefinition | WordDefinition[];\n}\n\nexport const EMPTY_LAYOUT: Layout = {\n code: null,\n hours: null,\n letters: [],\n minutes: null,\n permanent: [],\n prettyName: null,\n version: 2\n};\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport * as Cookies from 'js-cookie';\n\nexport class CookieHandler {\n public constructor(private readonly widgetId: string, private readonly cookiePath?: string) {\n }\n\n public getLayout(): string {\n const oldCookie = this.getCookie('uhr-language');\n if (oldCookie) {\n // aha, old cookie is set. migrate to new one!\n this.removeCookie('uhr-language');\n this.setLayout(oldCookie);\n }\n return this.getCookie('uhr-layout');\n }\n\n public setLayout(layout: string): void {\n this.setCookie('uhr-layout', layout);\n }\n\n public getMode(): string {\n return this.getCookie('uhr-mode');\n }\n\n public setMode(mode: string): void {\n this.setCookie('uhr-mode', mode);\n }\n\n public getStatus(): string {\n return this.getCookie('uhr-status');\n }\n\n public setStatus(status: string): void {\n this.setCookie('uhr-status', status);\n }\n\n public getTheme(): string {\n return this.getCookie('uhr-theme');\n }\n\n public setTheme(theme: string): void {\n this.setCookie('uhr-theme', theme);\n }\n\n private getCookie(cookieName: string): string {\n return Cookies.get(cookieName + this.widgetId);\n }\n\n private setCookie(cookieName: string, cookieValue: string): void {\n let options;\n if (this.cookiePath) {\n options = {expires: 365, path: this.cookiePath};\n } else {\n options = {expires: 365};\n }\n Cookies.set(cookieName + this.widgetId, cookieValue, options);\n }\n\n private removeCookie(cookieName: string): void {\n if (this.cookiePath) {\n Cookies.remove(cookieName + this.widgetId, {path: this.cookiePath});\n } else {\n Cookies.remove(cookieName + this.widgetId);\n }\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\n/**\n * Ein Buchstabe. Hilfsklasse für den Renderer und Inhalt der Layout-Arrays.\n * @param value Der Buchstabe, der Dargestellt werden soll.\n * @param style Die CSS-Styleklassen des Buchstabens.\n */\nexport class Letter {\n // private readonly value: string;\n private style: string;\n\n public constructor(private readonly value: string, style: string = '') {\n this.value = value;\n this.style = style;\n // if (style) {\n // this.style = style;\n // }\n }\n\n public addStyle(style: string): void {\n if (this.style === '') {\n this.style = style;\n } else {\n this.style += ` ${style}`;\n }\n }\n\n public toString(): string {\n return `${this.value}`;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, TimeDefinition, WordDefinition} from './domain/layout';\nimport {Letter} from './domain/letter';\n\nclass LayoutRendererV2Delegate {\n private static readonly vorne0: WordDefinition = {\n 3: [2, 3, 4],\n 4: [1, 5],\n 5: [1, 4, 5],\n 6: [1, 3, 5],\n 7: [1, 2, 5],\n 8: [1, 5],\n 9: [2, 3, 4]\n };\n private static readonly hinten0: WordDefinition = {\n 3: [8, 9, 10],\n 4: [7, 11],\n 5: [7, 10, 11],\n 6: [7, 9, 11],\n 7: [7, 8, 11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly vorne1: WordDefinition = {\n 3: [3],\n 4: [2, 3],\n 5: [3],\n 6: [3],\n 7: [3],\n 8: [3],\n 9: [2, 3, 4]\n };\n private static readonly hinten1: WordDefinition = {\n 3: [9],\n 4: [8, 9],\n 5: [9],\n 6: [9],\n 7: [9],\n 8: [9],\n 9: [8, 9, 10]\n };\n private static readonly vorne2: WordDefinition = {\n 3: [2, 3, 4],\n 4: [1, 5],\n 5: [5],\n 6: [4],\n 7: [3],\n 8: [2],\n 9: [1, 2, 3, 4, 5]\n };\n private static readonly hinten2: WordDefinition = {\n 3: [8, 9, 10],\n 4: [7, 11],\n 5: [11],\n 6: [10],\n 7: [9],\n 8: [8],\n 9: [7, 8, 9, 10, 11]\n };\n private static readonly vorne3: WordDefinition = {\n 3: [1, 2, 3, 4, 5],\n 4: [4],\n 5: [3],\n 6: [4],\n 7: [5],\n 8: [1, 5],\n 9: [2, 3, 4]\n };\n private static readonly hinten3: WordDefinition = {\n 3: [7, 8, 9, 10, 11],\n 4: [10],\n 5: [9],\n 6: [10],\n 7: [11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly vorne4: WordDefinition = {\n 3: [4],\n 4: [3, 4],\n 5: [2, 4],\n 6: [1, 4],\n 7: [1, 2, 3, 4, 5],\n 8: [4],\n 9: [4]\n };\n private static readonly hinten4: WordDefinition = {\n 3: [10],\n 4: [9, 10],\n 5: [8, 10],\n 6: [7, 10],\n 7: [7, 8, 9, 10, 11],\n 8: [10],\n 9: [10]\n };\n private static readonly vorne5: WordDefinition = {\n 3: [1, 2, 3, 4, 5],\n 4: [1],\n 5: [1, 2, 3, 4],\n 6: [5],\n 7: [5],\n 8: [1, 5],\n 9: [2, 3, 4]\n };\n private static readonly hinten5: WordDefinition = {\n 3: [7, 8, 9, 10, 11],\n 4: [7],\n 5: [7, 8, 9, 10],\n 6: [11],\n 7: [11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly hinten6: WordDefinition = {\n 3: [9, 10],\n 4: [8],\n 5: [7],\n 6: [7, 8, 9, 10],\n 7: [7, 11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly hinten7: WordDefinition = {\n 3: [7, 8, 9, 10, 11],\n 4: [11],\n 5: [10],\n 6: [9],\n 7: [8],\n 8: [8],\n 9: [8]\n };\n private static readonly hinten8: WordDefinition = {\n 3: [8, 9, 10],\n 4: [7, 11],\n 5: [7, 11],\n 6: [8, 9, 10],\n 7: [7, 11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly hinten9: WordDefinition = {\n 3: [8, 9, 10],\n 4: [7, 11],\n 5: [7, 11],\n 6: [8, 9, 10, 11],\n 7: [11],\n 8: [10],\n 9: [8, 9]\n };\n private static readonly seconds: TimeDefinition = {\n '0': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten0],\n '1': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten1],\n '2': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten2],\n '3': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten3],\n '4': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten4],\n '5': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten5],\n '6': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten6],\n '7': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten7],\n '8': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten8],\n '9': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten9],\n '10': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten0],\n '11': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten1],\n '12': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten2],\n '13': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten3],\n '14': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten4],\n '15': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten5],\n '16': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten6],\n '17': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten7],\n '18': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten8],\n '19': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten9],\n '20': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten0],\n '21': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten1],\n '22': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten2],\n '23': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten3],\n '24': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten4],\n '25': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten5],\n '26': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten6],\n '27': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten7],\n '28': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten8],\n '29': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten9],\n '30': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten0],\n '31': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten1],\n '32': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten2],\n '33': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten3],\n '34': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten4],\n '35': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten5],\n '36': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten6],\n '37': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten7],\n '38': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten8],\n '39': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten9],\n '40': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten0],\n '41': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten1],\n '42': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten2],\n '43': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten3],\n '44': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten4],\n '45': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten5],\n '46': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten6],\n '47': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten7],\n '48': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten8],\n '49': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten9],\n '50': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten0],\n '51': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten1],\n '52': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten2],\n '53': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten3],\n '54': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten4],\n '55': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten5],\n '56': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten6],\n '57': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten7],\n '58': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten8],\n '59': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten9]\n };\n\n public constructor(private readonly layout: Layout) {\n }\n\n public parse(): Letter[][] {\n const letters: Letter[][] = [];\n this.layout.letters.forEach((lineString: string): void => {\n const line: Letter[] = [];\n for (let c = 0; c < lineString.length; c++) {\n line.push(new Letter(lineString[c]));\n }\n letters.push(line);\n });\n this.parseArrayOrObject(letters, 'on', this.layout.permanent);\n if (typeof this.layout.seconds !== 'undefined' && this.layout.seconds !== null) {\n this.parseTimeDefinition(letters, 'second', this.layout.seconds);\n } else {\n this.parseTimeDefinition(letters, 'second', LayoutRendererV2Delegate.seconds);\n }\n this.parseTimeDefinition(letters, 'minute', this.layout.minutes);\n this.parseTimeDefinition(letters, 'hour', this.layout.hours);\n return letters;\n }\n\n private parseObject(letters: Letter[][], styleClass: string, object: WordDefinition): void {\n if (typeof object !== 'undefined' && object !== null) {\n Object.keys(object)\n .map((key: string): number => Number(key))\n .forEach(\n (y: number): void => object[y].forEach(\n (x: number): void => letters[y - 1][x - 1].addStyle(styleClass)\n )\n );\n }\n }\n\n private parseArrayOrObject(letters: Letter[][], styleClass: string, input: WordDefinition | WordDefinition[]): void {\n if (typeof input !== 'undefined' && input !== null) {\n if (Array.isArray(input)) {\n input.forEach((item: WordDefinition): void => this.parseObject(letters, styleClass, item));\n } else {\n this.parseObject(letters, styleClass, input);\n }\n }\n }\n\n private parseTimeDefinition(letters: Letter[][], styleClass: string, definition: TimeDefinition): void {\n if (typeof definition !== 'undefined' && definition !== null) {\n Object.keys(definition).forEach((listString: string): void => {\n const timeValues: string[] = listString.split(',');\n const highlightLetters: WordDefinition | WordDefinition[] = definition[listString];\n timeValues.forEach((timeValue: string): void => this.parseArrayOrObject(letters, styleClass + timeValue, highlightLetters));\n });\n }\n }\n}\n\n/**\n * Hilfsklasse zum Rendern der Buchstaben der Uhr.\n * @param layout Layout-Objekt, das gerendert werden soll.\n * @param renderarea Das jQuery-gewrappte HTML-Element, auf dem gerendert werden soll.\n */\nexport class LayoutRenderer {\n public constructor(private readonly layout: Layout, private readonly renderarea: JQuery) {\n }\n\n public render(beforeshow?: () => void): void {\n if (this.layout.parsed === undefined) {\n if (this.layout.version === 2) {\n const delegate: LayoutRendererV2Delegate = new LayoutRendererV2Delegate(this.layout);\n const parsedLayout: Letter[][] = delegate.parse();\n Object.defineProperty(this.layout, 'parsed', {\n value: parsedLayout,\n writable: false,\n configurable: false\n });\n } else {\n console.warn(`Unknown layout version: '${this.layout.version}', expecting '2'`);\n return;\n }\n }\n const letters: Letter[][] = this.layout.parsed;\n this.renderarea.fadeOut('fast', (): void => {\n this.renderarea.empty();\n letters.forEach((line, index, array): void => {\n line.forEach((letter): JQuery => this.renderarea.append(letter.toString()));\n if (index < array.length - 1) {\n this.renderarea.append(' ');\n }\n });\n if (beforeshow) {\n beforeshow();\n }\n this.renderarea.fadeIn('fast');\n });\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {CookieHandler} from './cookie-handler';\nimport {Globals} from './domain/globals';\nimport {Layout} from './domain/layout';\nimport {Options} from './widget/options';\nimport {Theme} from './domain/theme';\nimport {Uhr} from './uhr';\n\ndeclare var $: JQueryStatic;\n\nexport class UhrRenderer {\n private cookieHandler: CookieHandler;\n\n public constructor(\n private readonly uhr: Uhr,\n private readonly $element: JQuery,\n private readonly options: Options,\n private readonly id: string\n ) {\n this.cookieHandler = new CookieHandler(id, options.cookiePath);\n }\n\n public render(): void {\n this.setupHTML();\n this.wireFunctionality();\n }\n\n public setWidth(width: string): void {\n this.$element.css('width', width);\n const realWidth: number = this.$element.width();\n this.$element.width(realWidth);\n this.$element.height(realWidth);\n this.$element.css('font-size', (realWidth / 40) + 'px');\n }\n\n private setupHTML(): void {\n // Base clock area\n this.$element.addClass('uhr')\n .empty()\n .append('')\n .append('')\n .append('')\n .append('')\n .append('')\n .append('');\n\n this.setWidth(this.options.width);\n\n if (this.options.controls) {\n const controlpanel = $(``);\n const content = $('');\n controlpanel.append(content);\n // on/off switch\n const toggleSwitch = $(``);\n toggleSwitch.append(``);\n toggleSwitch.append(``);\n content.append(toggleSwitch);\n\n // time mode switch\n const modeSwitch = $(``);\n modeSwitch.append(``);\n modeSwitch.append(``);\n content.append(modeSwitch);\n // language chooser\n if (Globals.hasMultipleLayouts()) {\n const languageChooser = $(``);\n Globals.getLayouts().forEach((layout: Layout): void => {\n languageChooser.append(``);\n });\n content.append(languageChooser);\n }\n\n // theme chooser\n if (Globals.hasMultipleThemes()) {\n const themeChooser = $(``);\n Globals.getThemes().forEach((theme: Theme): void => {\n themeChooser.append(``);\n });\n content.append(themeChooser);\n }\n const closebutton: JQuery = $(``);\n closebutton.on({click: (): JQuery => $(`#uhr-controlpanel${this.id}`).hide('fast')});\n content.append(closebutton);\n this.$element.after(controlpanel);\n controlpanel.hide();\n const configlink: JQuery = $(``);\n configlink.on({click: (): void => this.toggleConfigScreen()});\n this.$element.after(configlink);\n }\n }\n\n private wireFunctionality(): void {\n // on/off switch\n const toggleSwitch: JQuery = $(`#uhr-onoffswitch-checkbox${this.id}`);\n toggleSwitch.on({click: (): void => this.uhr.toggle()});\n let status = this.cookieHandler.getStatus();\n if (status === undefined || this.options.force) {\n status = this.options.status;\n }\n toggleSwitch.prop('checked', status === 'on');\n if (status === 'on') {\n this.uhr.start();\n } else {\n this.uhr.stop();\n }\n\n // time mode switch\n const modeSwitch: JQuery = $(`#uhr-modeswitch-checkbox${this.id}`);\n modeSwitch.on({\n click: (): void => {\n if (this.options.mode === 'seconds') {\n this.uhr.setMode('normal');\n } else {\n this.uhr.setMode('seconds');\n }\n }\n });\n\n let mode = this.cookieHandler.getMode();\n if (mode === undefined || this.options.force) {\n mode = this.options.mode;\n }\n modeSwitch.prop('checked', mode !== 'seconds');\n if (mode === 'seconds') {\n this.uhr.setMode('seconds');\n } else {\n this.uhr.setMode('normal');\n }\n\n // language chooser\n const languageChooser: JQuery = $(`#uhr-languagechooser${this.id}`);\n languageChooser.on({\n change: (): void => {\n const languageKey = $(`#uhr-languagechooser${this.id}`).val() as string;\n this.uhr.setLayout(languageKey);\n }\n });\n let selectedLayout = this.cookieHandler.getLayout();\n if (selectedLayout === undefined || this.options.force) {\n selectedLayout = this.options.language;\n }\n let found = Globals.getLayouts().some((item: Layout): boolean => selectedLayout === item.code);\n if (!found) {\n let fallbackLanguage;\n if (Globals.hasLayouts()) {\n fallbackLanguage = Globals.getFirstLayout().code;\n } else {\n fallbackLanguage = '';\n }\n console.warn(`Language '${selectedLayout}' not found! Using fallback '${fallbackLanguage}'.`);\n selectedLayout = fallbackLanguage;\n }\n languageChooser.val(selectedLayout);\n this.options.language = '';\n this.uhr.setLayout(selectedLayout);\n\n // theme chooser\n const themeChooser: JQuery = $(`#uhr-themechooser${this.id}`);\n themeChooser.on({\n change: (): void => {\n const themeKey = $(`#uhr-themechooser${this.id}`).val() as string;\n this.uhr.setTheme(themeKey);\n }\n });\n let selectedTheme = this.cookieHandler.getTheme();\n if (selectedTheme === undefined || this.options.force) {\n selectedTheme = this.options.theme;\n }\n found = Globals.getThemes().some((item: Theme): boolean => selectedTheme === item.styleClass);\n if (!found) {\n const fallbackTheme = Globals.getFirstTheme().styleClass;\n console.warn(`Theme '${selectedTheme}' not found! Using fallback '${fallbackTheme}'.`);\n selectedTheme = fallbackTheme;\n }\n themeChooser.val(selectedTheme);\n this.options.theme = '';\n this.uhr.setTheme(selectedTheme);\n if (this.options.autoresize) {\n $(window).on({\n resize: (): void => {\n const $parent: JQuery = this.$element.parent();\n const $window: JQuery = $(window);\n const parentWidth: number = $parent.width();\n const parentHeight: number = $parent.height();\n const windowWidth: number = $window.width();\n const windowHeight: number = $window.height();\n const size: string = `${Math.min(parentWidth, parentHeight, windowWidth, windowHeight)}px`;\n this.setWidth(size);\n }\n });\n }\n }\n\n private toggleConfigScreen(): void {\n $(`#uhr-controlpanel${this.id}`).toggle('fast');\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\n/*eslint no-undef: \"warn\"*/\nimport WidgetCommonProperties = JQueryUI.WidgetCommonProperties;\nimport {EMPTY_LAYOUT, Layout} from './domain/layout';\nimport {CookieHandler} from './cookie-handler';\nimport {Globals} from './domain/globals';\nimport {LayoutRenderer} from './layout-renderer';\nimport {UhrRenderer} from './uhr-renderer';\nimport {WidgetPrototype} from './widget/widget-prototype';\n\ndeclare var $: JQueryStatic;\n\nexport class Uhr {\n\n private timer: number = null;\n private currentMinute: number = null;\n private renderer: UhrRenderer;\n private cookieHandler: CookieHandler;\n\n public constructor(private readonly widgetInstance: WidgetPrototype & WidgetCommonProperties) {\n const userTime = this.widgetInstance.options.time;\n if (this.widgetInstance.options.time === undefined) {\n this.widgetInstance.options.time = new Date();\n }\n this.cookieHandler = new CookieHandler(this.widgetInstance.uuid, this.widgetInstance.options.cookiePath);\n this.parseHash();\n this.renderer = new UhrRenderer(this, this.widgetInstance.element, this.widgetInstance.options, this.widgetInstance.uuid);\n this.renderer.render();\n if (userTime !== undefined) {\n this.setTime(userTime);\n }\n }\n\n public destroy(): void {\n if (this.timer) {\n window.clearInterval(this.timer);\n this.timer = null;\n }\n this.widgetInstance.element\n .removeAttr('style')\n .removeAttr('class')\n .empty();\n $(`#uhr-configlink${this.widgetInstance.uuid}`).remove();\n $(`#uhr-controlpanel${this.widgetInstance.uuid}`).remove();\n }\n\n public start(): void {\n if (!this.isOn()) {\n this.timer = window.setInterval((): void => {\n this.widgetInstance.options.time = new Date();\n this.update();\n }, 1000);\n this.update();\n this.cookieHandler.setStatus('on');\n }\n }\n\n public stop(): void {\n if (this.isOn()) {\n window.clearInterval(this.timer);\n this.timer = null;\n this.update();\n this.cookieHandler.setStatus('off');\n }\n }\n\n public toggle(): void {\n if (this.isOn()) {\n this.stop();\n } else {\n this.start();\n }\n }\n\n public setLayout(key: string): void {\n if (key !== this.widgetInstance.options.language) {\n this.widgetInstance.options.language = key;\n const renderer = new LayoutRenderer(this.getCurrentLayout(), this.widgetInstance.element.find('.letterarea'));\n renderer.render((): void => {\n this.currentMinute = -1;\n this.update();\n });\n this.cookieHandler.setLayout(key);\n this.update();\n }\n }\n\n public setTheme(styleClass: string): void {\n if (styleClass !== this.widgetInstance.options.theme) {\n this.widgetInstance.element.removeClass(this.widgetInstance.options.theme).addClass(styleClass);\n $(`#uhr-onoffswitch${this.widgetInstance.uuid}`).removeClass(this.widgetInstance.options.theme).addClass(styleClass);\n this.widgetInstance.options.theme = styleClass;\n this.cookieHandler.setTheme(styleClass);\n }\n }\n\n public setTime(time: Date): void {\n this.currentMinute = null;\n if (time === null) {\n this.widgetInstance.options.time = new Date();\n } else {\n if (this.timer !== null) {\n window.clearInterval(this.timer);\n }\n this.widgetInstance.options.time = time;\n }\n this.update();\n }\n\n public setMode(mode: string): void {\n this.widgetInstance.options.mode = mode;\n this.currentMinute = null;\n this.update();\n this.cookieHandler.setMode(mode);\n }\n\n public setWidth(width: string): void {\n this.renderer.setWidth(width);\n }\n\n private isOn(): boolean {\n return this.timer !== null;\n }\n\n private update(): void {\n if (this.isOn()) {\n const time = this.widgetInstance.options.time;\n if (!this.getCurrentLayout().hasOwnProperty('seconds') && this.widgetInstance.options.mode !== 'seconds') {\n if (time.getMinutes() === this.currentMinute) {\n return;\n }\n this.currentMinute = time.getMinutes();\n }\n this.show(time);\n } else {\n this.clear();\n this.currentMinute = -1;\n }\n }\n\n private show(time: Date): void {\n const second = this.getSecond(time);\n const dotMinute = this.getDotMinute(time);\n const hour = this.getHour(time);\n const coarseMinute = this.getCoarseMinute(time);\n this.clear();\n if (this.widgetInstance.options.mode === 'seconds') {\n this.highlight(`second${second}`);\n } else {\n this.highlight('on');\n for (let i = 1; i <= dotMinute; i++) {\n this.highlight(`dot${i}`);\n }\n this.highlight(`minute${coarseMinute}`);\n this.highlight(`hour${hour}`);\n }\n }\n\n private clear(): void {\n this.widgetInstance.element.find('.item').removeClass('active');\n }\n\n private highlight(itemClass: string): void {\n this.widgetInstance.element.find(`.item.${itemClass}`).addClass('active');\n }\n\n private getSecond(time: Date): number {\n if (typeof this.getCurrentLayout().getSeconds === 'function') {\n return this.getCurrentLayout().getSeconds(time);\n }\n return time.getSeconds();\n }\n\n private getDotMinute(date: Date): number {\n if (typeof this.getCurrentLayout().getDotMinute === 'function') {\n return this.getCurrentLayout().getDotMinute(date);\n }\n return date.getMinutes() % 5;\n }\n\n private getCoarseMinute(date: Date): number {\n if (typeof this.getCurrentLayout().getCoarseMinute === 'function') {\n return this.getCurrentLayout().getCoarseMinute(date);\n }\n return date.getMinutes();\n }\n\n private getHour(date: Date): number {\n if (typeof this.getCurrentLayout().getHour === 'function') {\n return this.getCurrentLayout().getHour(date);\n }\n const hour = date.getHours();\n if (date.getMinutes() >= 25) {\n return (hour + 1) % 24;\n }\n return hour;\n }\n\n private parseHash(): void {\n let hash: string = window.location.hash;\n if (hash !== undefined && hash.charAt(0) === '#') {\n hash = hash.substring(1);\n hash = decodeURIComponent(hash);\n const params: string[] = hash.split('&');\n params.forEach((element: string): void => {\n const pair: string[] = element.split('=');\n const key = pair[0];\n const value = pair[1];\n switch (key) {\n case 'l':\n case 'language':\n this.widgetInstance.options.language = value;\n this.widgetInstance.options.force = true;\n break;\n case 't':\n case 'theme':\n this.widgetInstance.options.theme = value;\n this.widgetInstance.options.force = true;\n break;\n case 'm':\n case 'mode':\n this.widgetInstance.options.mode = value;\n this.widgetInstance.options.force = true;\n break;\n case 's':\n case 'status':\n this.widgetInstance.options.status = value;\n this.widgetInstance.options.force = true;\n break;\n }\n });\n }\n }\n\n private getCurrentLayout(): Layout {\n const matchingLanguages: Layout[] = Globals.getLayouts().filter((element: Layout): boolean => element.code === this.widgetInstance.options.language, this);\n if (matchingLanguages.length > 0) {\n return matchingLanguages[0];\n }\n // fallback: return empty object\n return EMPTY_LAYOUT;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport * as $ from 'jquery';\nimport {Globals} from './domain/globals';\n\nexport function autodetectThemes(): void {\n $('link[rel=stylesheet]').each((index, item): void => {\n const styleSheet = $(item);\n const styleClass: string = styleSheet.attr('data-class');\n if (styleClass !== undefined) {\n let name: string = styleSheet.attr('data-name');\n if (name === undefined) {\n name = styleClass;\n }\n Globals.registerTheme(name, styleClass);\n }\n });\n\n // fall-back if no theme was included\n if (!Globals.hasThemes()) {\n Globals.registerTheme('', '');\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Globals} from './domain/globals';\nimport {Layout} from './domain/layout';\nimport {Uhr} from './uhr';\nimport {WidgetPrototype} from './widget/widget-prototype';\nimport {autodetectThemes} from './theme-autodetector';\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n const widget: JQueryUI.Widget;\n}\n\n// First things first: discover included themes and register them\nautodetectThemes();\n\nconst widgetPrototype: WidgetPrototype = {\n options: {\n width: '100%',\n status: 'on',\n language: 'de_CH',\n theme: Globals.getFirstTheme().styleClass,\n force: false,\n controls: true,\n cookiePath: undefined,\n autoresize: true,\n mode: 'normal'\n },\n start: function (): void {\n this._fritteliUhrInstance.start();\n },\n stop: function (): void {\n this._fritteliUhrInstance.stop();\n },\n toggle: function (): void {\n this._fritteliUhrInstance.toggle();\n },\n language: function (key: string): void {\n this._fritteliUhrInstance.setLayout(key);\n },\n theme: function (styleClass: string): void {\n this._fritteliUhrInstance.setTheme(styleClass);\n },\n time: function (time: Date): void {\n this._fritteliUhrInstance.setTime(time);\n },\n mode: function (mode: string): void {\n this._fritteliUhrInstance.setMode(mode);\n },\n width: function (width: string): void {\n this._fritteliUhrInstance.setWidth(width);\n },\n // constructor method\n _create: function (): void {\n this._fritteliUhrInstance = new Uhr(this);\n },\n // destructor method\n _destroy: function (): void {\n this._fritteliUhrInstance.destroy();\n },\n _fritteliUhrInstance: null\n};\n$.widget('fritteli.uhr', widgetPrototype);\n\n$.fritteli.uhr.register = Globals.registerLayout;\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\n\n// We just need to reference all required files at least once, so that the tree-shaker won't remove them from\n// the bundle.\nimport * as uhr from './index';\nimport {LayoutDe} from './layout/layout-de';\nimport {LayoutDeCh} from './layout/layout-de_ch';\nimport {LayoutDeChGenau} from './layout/layout-de_ch_genau';\nimport {LayoutDk} from './layout/layout-dk';\nimport {LayoutEn} from './layout/layout-en';\nimport {LayoutEs} from './layout/layout-es';\nimport {LayoutFr} from './layout/layout-fr';\nimport {LayoutIt} from './layout/layout-it';\nimport {LayoutNl} from './layout/layout-nl';\nimport {LayoutPt} from './layout/layout-pt';\n\n/*eslint no-unused-vars: \"warn\"*/\n/*eslint @typescript-eslint/no-unused-vars: \"warn\"*/\n\nlet a = uhr;\na = LayoutDeCh;\na = LayoutDeChGenau;\na = LayoutDe;\na = LayoutDk;\na = LayoutEn;\na = LayoutEs;\na = LayoutFr;\na = LayoutIt;\na = LayoutNl;\na = LayoutPt;\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/dist/lib/uhr.js b/dist/lib/uhr.js
index a5bfe82..084560f 100644
--- a/dist/lib/uhr.js
+++ b/dist/lib/uhr.js
@@ -1,2 +1,2 @@
-!function(t){var e={};function n(i){if(e[i])return e[i].exports;var o=e[i]={i:i,l:!1,exports:{}};return t[i].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(i,o,function(e){return t[e]}.bind(null,o));return i},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=12)}({0:function(t,e){t.exports=Cookies},1:function(t,e){t.exports=jQuery},12:function(t,e,n){"use strict";n.r(e);var i=function(){function t(){}return t.registerTheme=function(e,n){t.themes.some(function(t){return t.name===e})?console.log("Theme with name '"+e+"' already registered; ignoring register request for styleClass '"+n+"'."):t.themes.push({name:e,styleClass:n})},t.hasThemes=function(){return t.themes.length>0},t.hasMultipleThemes=function(){return t.themes.length>1},t.getFirstTheme=function(){return t.getTheme(0)},t.getTheme=function(e){return t.themes[e]},t.getThemes=function(){return t.themes},t.registerLayout=function(e){!t.layouts.some(function(t){return e.code===t.code&&(e.prettyName!==t.prettyName&&console.error("Error: Language code '"+e.code+"' cannot be registered for layout '"+e.prettyName+"' because it is already registered for layout '"+t.prettyName+"'!"),!0)})&&(t.layouts.push(e),t.layouts.sort(function(t,e){return t.prettyName.localeCompare(e.prettyName)}))},t.hasLayouts=function(){return t.layouts.length>0},t.hasMultipleLayouts=function(){return t.layouts.length>1},t.getFirstLayout=function(){return t.layouts[0]},t.getLayouts=function(){return t.layouts},t.layouts=[],t.themes=[],t}(),o={code:null,hours:null,letters:[],minutes:null,permanent:[],prettyName:null,version:2},s=n(0),r=function(){function t(t,e){this.widgetId=t,this.cookiePath=e}return t.prototype.getLayout=function(){var t=this.getCookie("uhr-language");return t&&(this.removeCookie("uhr-language"),this.setLayout(t)),this.getCookie("uhr-layout")},t.prototype.setLayout=function(t){this.setCookie("uhr-layout",t)},t.prototype.getMode=function(){return this.getCookie("uhr-mode")},t.prototype.setMode=function(t){this.setCookie("uhr-mode",t)},t.prototype.getStatus=function(){return this.getCookie("uhr-status")},t.prototype.setStatus=function(t){this.setCookie("uhr-status",t)},t.prototype.getTheme=function(){return this.getCookie("uhr-theme")},t.prototype.setTheme=function(t){this.setCookie("uhr-theme",t)},t.prototype.getCookie=function(t){return s.get(t+this.widgetId)},t.prototype.setCookie=function(t,e){var n;n=this.cookiePath?{expires:365,path:this.cookiePath}:{expires:365},s.set(t+this.widgetId,e,n)},t.prototype.removeCookie=function(t){this.cookiePath?s.remove(t+this.widgetId,{path:this.cookiePath}):s.remove(t+this.widgetId)},t}(),h=function(){function t(t,e){this.style="",this.value=t,e&&(this.style=e)}return t.prototype.addStyle=function(t){""===this.style?this.style=t:this.style+=" "+t},t.prototype.toString=function(){return''+this.value+""},t}(),a=function(){function t(t){this.layout=t}return t.prototype.parse=function(){var e=[];return this.layout.letters.forEach(function(t){for(var n=[],i=0;i")}),t&&t(),e.renderarea.fadeIn("fast")})},t}(),c=function(){function t(t,e,n,i){this.uhr=t,this.$element=e,this.options=n,this.id=i,this.cookieHandler=new r(i,n.cookiePath)}return t.prototype.render=function(){this.setupHTML(),this.wireFunctionality()},t.prototype.setWidth=function(t){this.$element.css("width",t);var e=this.$element.width();this.$element.width(e),this.$element.height(e),this.$element.css("font-size",e/40+"px")},t.prototype.setupHTML=function(){var t=this;if(this.$element.addClass("uhr").empty().append('').append('').append('').append('').append('').append(''),this.setWidth(this.options.width),this.options.controls){var e=$(''),n=$('');e.append(n);var o=$('');o.append(''),o.append(''),n.append(o);var s=$('');if(s.append(''),s.append(''),n.append(s),i.hasMultipleLayouts()){var r=$('');i.getLayouts().forEach(function(t){r.append('")}),n.append(r)}if(i.hasMultipleThemes()){var h=$('');i.getThemes().forEach(function(t){h.append('")}),n.append(h)}var a=$('');a.on({click:function(){return $("#uhr-controlpanel"+t.id).hide("fast")}}),n.append(a),this.$element.after(e),e.hide();var u=$('');u.on({click:function(){return t.toggleConfigScreen()}}),this.$element.after(u)}},t.prototype.wireFunctionality=function(){var t=this,e=$("#uhr-onoffswitch-checkbox"+this.id);e.on({click:function(){return t.uhr.toggle()}});var n=this.cookieHandler.getStatus();(void 0===n||this.options.force)&&(n=this.options.status),e.prop("checked","on"===n),"on"===n?this.uhr.start():this.uhr.stop();var o=$("#uhr-modeswitch-checkbox"+this.id);o.on({click:function(){"seconds"===t.options.mode?t.uhr.setMode("normal"):t.uhr.setMode("seconds")}});var s=this.cookieHandler.getMode();(void 0===s||this.options.force)&&(s=this.options.mode),o.prop("checked","seconds"!==s),"seconds"===s?this.uhr.setMode("seconds"):this.uhr.setMode("normal");var r=$("#uhr-languagechooser"+this.id);r.on({change:function(){var e=$("#uhr-languagechooser"+t.id).val();t.uhr.setLayout(e)}});var h=this.cookieHandler.getLayout();(void 0===h||this.options.force)&&(h=this.options.language);var a=i.getLayouts().some(function(t){return h===t.code});if(!a){var u=void 0;u=i.hasLayouts()?i.getFirstLayout().code:"",console.warn("Language '"+h+"' not found! Using fallback '"+u+"'."),h=u}r.val(h),this.options.language="",this.uhr.setLayout(h);var c=$("#uhr-themechooser"+this.id);c.on({change:function(){var e=$("#uhr-themechooser"+t.id).val();t.uhr.setTheme(e)}});var l=this.cookieHandler.getTheme();if((void 0===l||this.options.force)&&(l=this.options.theme),!(a=i.getThemes().some(function(t){return l===t.styleClass}))){var d=i.getFirstTheme().styleClass;console.warn("Theme '"+l+"' not found! Using fallback '"+d+"'."),l=d}c.val(l),this.options.theme="",this.uhr.setTheme(l),this.options.autoresize&&$(window).on({resize:function(){var e=t.$element.parent(),n=$(window),i=e.width(),o=e.height(),s=n.width(),r=n.height(),h=Math.min(i,o,s,r)+"px";t.setWidth(h)}})},t.prototype.toggleConfigScreen=function(){$("#uhr-controlpanel"+this.id).toggle("fast")},t}(),l=function(){function t(t){this.widgetInstance=t,this.timer=null,this.currentMinute=null;var e=this.widgetInstance.options.time;void 0===this.widgetInstance.options.time&&(this.widgetInstance.options.time=new Date),this.cookieHandler=new r(this.widgetInstance.uuid,this.widgetInstance.options.cookiePath),this.parseHash(),this.renderer=new c(this,this.widgetInstance.element,this.widgetInstance.options,this.widgetInstance.uuid),this.renderer.render(),void 0!==e&&this.setTime(e)}return t.prototype.destroy=function(){this.timer&&(window.clearInterval(this.timer),this.timer=null),this.widgetInstance.element.removeAttr("style").removeAttr("class").empty(),$("#uhr-configlink"+this.widgetInstance.uuid).remove(),$("#uhr-controlpanel"+this.widgetInstance.uuid).remove()},t.prototype.start=function(){var t=this;this.isOn()||(this.timer=window.setInterval(function(){t.widgetInstance.options.time=new Date,t.update()},1e3),this.update(),this.cookieHandler.setStatus("on"))},t.prototype.stop=function(){this.isOn()&&(window.clearInterval(this.timer),this.timer=null,this.update(),this.cookieHandler.setStatus("off"))},t.prototype.toggle=function(){this.isOn()?this.stop():this.start()},t.prototype.setLayout=function(t){var e=this;t!==this.widgetInstance.options.language&&(this.widgetInstance.options.language=t,new u(this.getCurrentLayout(),this.widgetInstance.element.find(".letterarea")).render(function(){e.currentMinute=-1,e.update()}),this.cookieHandler.setLayout(t),this.update())},t.prototype.setTheme=function(t){t!==this.widgetInstance.options.theme&&(this.widgetInstance.element.removeClass(this.widgetInstance.options.theme).addClass(t),$("#uhr-onoffswitch"+this.widgetInstance.uuid).removeClass(this.widgetInstance.options.theme).addClass(t),this.widgetInstance.options.theme=t,this.cookieHandler.setTheme(t))},t.prototype.setTime=function(t){this.currentMinute=null,null===t?this.widgetInstance.options.time=new Date:(null!==this.timer&&window.clearInterval(this.timer),this.widgetInstance.options.time=t),this.update()},t.prototype.setMode=function(t){this.widgetInstance.options.mode=t,this.currentMinute=null,this.update(),this.cookieHandler.setMode(t)},t.prototype.setWidth=function(t){this.renderer.setWidth(t)},t.prototype.isOn=function(){return null!==this.timer},t.prototype.update=function(){if(this.isOn()){var t=this.widgetInstance.options.time;if(!this.getCurrentLayout().hasOwnProperty("seconds")&&"seconds"!==this.widgetInstance.options.mode){if(t.getMinutes()===this.currentMinute)return;this.currentMinute=t.getMinutes()}this.show(t)}else this.clear(),this.currentMinute=-1},t.prototype.show=function(t){var e=this.getSecond(t),n=this.getDotMinute(t),i=this.getHour(t),o=this.getCoarseMinute(t);if(this.clear(),"seconds"===this.widgetInstance.options.mode)this.highlight("second"+e);else{this.highlight("on");for(var s=1;s<=n;s++)this.highlight("dot"+s);this.highlight("minute"+o),this.highlight("hour"+i)}},t.prototype.clear=function(){this.widgetInstance.element.find(".item").removeClass("active")},t.prototype.highlight=function(t){this.widgetInstance.element.find(".item."+t).addClass("active")},t.prototype.getSecond=function(t){return"function"==typeof this.getCurrentLayout().getSeconds?this.getCurrentLayout().getSeconds(t):t.getSeconds()},t.prototype.getDotMinute=function(t){return"function"==typeof this.getCurrentLayout().getDotMinute?this.getCurrentLayout().getDotMinute(t):t.getMinutes()%5},t.prototype.getCoarseMinute=function(t){return"function"==typeof this.getCurrentLayout().getCoarseMinute?this.getCurrentLayout().getCoarseMinute(t):t.getMinutes()},t.prototype.getHour=function(t){if("function"==typeof this.getCurrentLayout().getHour)return this.getCurrentLayout().getHour(t);var e=t.getHours();return t.getMinutes()>=25?(e+1)%24:e},t.prototype.parseHash=function(){var t=this,e=window.location.hash;void 0!==e&&"#"===e.charAt(0)&&(e=e.substring(1),(e=decodeURIComponent(e)).split("&").forEach(function(e){var n=e.split("="),i=n[0],o=n[1];switch(i){case"l":case"language":t.widgetInstance.options.language=o,t.widgetInstance.options.force=!0;break;case"t":case"theme":t.widgetInstance.options.theme=o,t.widgetInstance.options.force=!0;break;case"m":case"mode":t.widgetInstance.options.mode=o,t.widgetInstance.options.force=!0;break;case"s":case"status":t.widgetInstance.options.status=o,t.widgetInstance.options.force=!0}}))},t.prototype.getCurrentLayout=function(){var t=this,e=i.getLayouts().filter(function(e){return e.code===t.widgetInstance.options.language},this);return e.length>0?e[0]:o},t}(),d=n(1);d("link[rel=stylesheet]").each(function(t,e){var n=d(e),o=n.attr("data-class");if(void 0!==o){var s=n.attr("data-name");void 0===s&&(s=o),i.registerTheme(s,o)}}),i.hasThemes()||i.registerTheme("",""),$.widget("fritteli.uhr",{options:{width:"100%",status:"on",language:"de_CH",theme:i.getFirstTheme().styleClass,force:!1,controls:!0,cookiePath:void 0,autoresize:!0,mode:"normal"},start:function(){this.__fritteli_uhr_instance.start()},stop:function(){this.__fritteli_uhr_instance.stop()},toggle:function(){this.__fritteli_uhr_instance.toggle()},language:function(t){this.__fritteli_uhr_instance.setLayout(t)},theme:function(t){this.__fritteli_uhr_instance.setTheme(t)},time:function(t){this.__fritteli_uhr_instance.setTime(t)},mode:function(t){this.__fritteli_uhr_instance.setMode(t)},width:function(t){this.__fritteli_uhr_instance.setWidth(t)},_create:function(){this.__fritteli_uhr_instance=new l(this)},_destroy:function(){this.__fritteli_uhr_instance.destroy()},__fritteli_uhr_instance:null}),$.fritteli.uhr.register=i.registerLayout}});
+!function(t){var e={};function n(i){if(e[i])return e[i].exports;var o=e[i]={i:i,l:!1,exports:{}};return t[i].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(i,o,function(e){return t[e]}.bind(null,o));return i},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=12)}({0:function(t,e){t.exports=Cookies},1:function(t,e){t.exports=jQuery},12:function(t,e,n){"use strict";n.r(e);var i=function(){function t(){}return t.registerTheme=function(e,n){t.themes.some(function(t){return t.name===e})?console.warn("Theme with name '"+e+"' already registered; ignoring register request for styleClass '"+n+"'."):t.themes.push({name:e,styleClass:n})},t.hasThemes=function(){return t.themes.length>0},t.hasMultipleThemes=function(){return t.themes.length>1},t.getFirstTheme=function(){return t.getTheme(0)},t.getTheme=function(e){return t.themes[e]},t.getThemes=function(){return t.themes},t.registerLayout=function(e){!t.layouts.some(function(t){return e.code===t.code&&(e.prettyName!==t.prettyName&&console.error("Error: Language code '"+e.code+"' cannot be registered for layout '"+e.prettyName+"' because it is already registered for layout '"+t.prettyName+"'!"),!0)})&&(t.layouts.push(e),t.layouts.sort(function(t,e){return t.prettyName.localeCompare(e.prettyName)}))},t.hasLayouts=function(){return t.layouts.length>0},t.hasMultipleLayouts=function(){return t.layouts.length>1},t.getFirstLayout=function(){return t.layouts[0]},t.getLayouts=function(){return t.layouts},t.layouts=[],t.themes=[],t}(),o={code:null,hours:null,letters:[],minutes:null,permanent:[],prettyName:null,version:2},s=n(0),r=function(){function t(t,e){this.widgetId=t,this.cookiePath=e}return t.prototype.getLayout=function(){var t=this.getCookie("uhr-language");return t&&(this.removeCookie("uhr-language"),this.setLayout(t)),this.getCookie("uhr-layout")},t.prototype.setLayout=function(t){this.setCookie("uhr-layout",t)},t.prototype.getMode=function(){return this.getCookie("uhr-mode")},t.prototype.setMode=function(t){this.setCookie("uhr-mode",t)},t.prototype.getStatus=function(){return this.getCookie("uhr-status")},t.prototype.setStatus=function(t){this.setCookie("uhr-status",t)},t.prototype.getTheme=function(){return this.getCookie("uhr-theme")},t.prototype.setTheme=function(t){this.setCookie("uhr-theme",t)},t.prototype.getCookie=function(t){return s.get(t+this.widgetId)},t.prototype.setCookie=function(t,e){var n;n=this.cookiePath?{expires:365,path:this.cookiePath}:{expires:365},s.set(t+this.widgetId,e,n)},t.prototype.removeCookie=function(t){this.cookiePath?s.remove(t+this.widgetId,{path:this.cookiePath}):s.remove(t+this.widgetId)},t}(),h=function(){function t(t,e){void 0===e&&(e=""),this.value=t,this.value=t,this.style=e}return t.prototype.addStyle=function(t){""===this.style?this.style=t:this.style+=" "+t},t.prototype.toString=function(){return''+this.value+""},t}(),a=function(){function t(t){this.layout=t}return t.prototype.parse=function(){var e=[];return this.layout.letters.forEach(function(t){for(var n=[],i=0;i")}),t&&t(),e.renderarea.fadeIn("fast")})},t}(),c=function(){function t(t,e,n,i){this.uhr=t,this.$element=e,this.options=n,this.id=i,this.cookieHandler=new r(i,n.cookiePath)}return t.prototype.render=function(){this.setupHTML(),this.wireFunctionality()},t.prototype.setWidth=function(t){this.$element.css("width",t);var e=this.$element.width();this.$element.width(e),this.$element.height(e),this.$element.css("font-size",e/40+"px")},t.prototype.setupHTML=function(){var t=this;if(this.$element.addClass("uhr").empty().append('').append('').append('').append('').append('').append(''),this.setWidth(this.options.width),this.options.controls){var e=$(''),n=$('');e.append(n);var o=$('');o.append(''),o.append(''),n.append(o);var s=$('');if(s.append(''),s.append(''),n.append(s),i.hasMultipleLayouts()){var r=$('');i.getLayouts().forEach(function(t){r.append('")}),n.append(r)}if(i.hasMultipleThemes()){var h=$('');i.getThemes().forEach(function(t){h.append('")}),n.append(h)}var a=$('');a.on({click:function(){return $("#uhr-controlpanel"+t.id).hide("fast")}}),n.append(a),this.$element.after(e),e.hide();var u=$('');u.on({click:function(){return t.toggleConfigScreen()}}),this.$element.after(u)}},t.prototype.wireFunctionality=function(){var t=this,e=$("#uhr-onoffswitch-checkbox"+this.id);e.on({click:function(){return t.uhr.toggle()}});var n=this.cookieHandler.getStatus();(void 0===n||this.options.force)&&(n=this.options.status),e.prop("checked","on"===n),"on"===n?this.uhr.start():this.uhr.stop();var o=$("#uhr-modeswitch-checkbox"+this.id);o.on({click:function(){"seconds"===t.options.mode?t.uhr.setMode("normal"):t.uhr.setMode("seconds")}});var s=this.cookieHandler.getMode();(void 0===s||this.options.force)&&(s=this.options.mode),o.prop("checked","seconds"!==s),"seconds"===s?this.uhr.setMode("seconds"):this.uhr.setMode("normal");var r=$("#uhr-languagechooser"+this.id);r.on({change:function(){var e=$("#uhr-languagechooser"+t.id).val();t.uhr.setLayout(e)}});var h=this.cookieHandler.getLayout();(void 0===h||this.options.force)&&(h=this.options.language);var a=i.getLayouts().some(function(t){return h===t.code});if(!a){var u=void 0;u=i.hasLayouts()?i.getFirstLayout().code:"",console.warn("Language '"+h+"' not found! Using fallback '"+u+"'."),h=u}r.val(h),this.options.language="",this.uhr.setLayout(h);var c=$("#uhr-themechooser"+this.id);c.on({change:function(){var e=$("#uhr-themechooser"+t.id).val();t.uhr.setTheme(e)}});var l=this.cookieHandler.getTheme();if((void 0===l||this.options.force)&&(l=this.options.theme),!(a=i.getThemes().some(function(t){return l===t.styleClass}))){var d=i.getFirstTheme().styleClass;console.warn("Theme '"+l+"' not found! Using fallback '"+d+"'."),l=d}c.val(l),this.options.theme="",this.uhr.setTheme(l),this.options.autoresize&&$(window).on({resize:function(){var e=t.$element.parent(),n=$(window),i=e.width(),o=e.height(),s=n.width(),r=n.height(),h=Math.min(i,o,s,r)+"px";t.setWidth(h)}})},t.prototype.toggleConfigScreen=function(){$("#uhr-controlpanel"+this.id).toggle("fast")},t}(),l=function(){function t(t){this.widgetInstance=t,this.timer=null,this.currentMinute=null;var e=this.widgetInstance.options.time;void 0===this.widgetInstance.options.time&&(this.widgetInstance.options.time=new Date),this.cookieHandler=new r(this.widgetInstance.uuid,this.widgetInstance.options.cookiePath),this.parseHash(),this.renderer=new c(this,this.widgetInstance.element,this.widgetInstance.options,this.widgetInstance.uuid),this.renderer.render(),void 0!==e&&this.setTime(e)}return t.prototype.destroy=function(){this.timer&&(window.clearInterval(this.timer),this.timer=null),this.widgetInstance.element.removeAttr("style").removeAttr("class").empty(),$("#uhr-configlink"+this.widgetInstance.uuid).remove(),$("#uhr-controlpanel"+this.widgetInstance.uuid).remove()},t.prototype.start=function(){var t=this;this.isOn()||(this.timer=window.setInterval(function(){t.widgetInstance.options.time=new Date,t.update()},1e3),this.update(),this.cookieHandler.setStatus("on"))},t.prototype.stop=function(){this.isOn()&&(window.clearInterval(this.timer),this.timer=null,this.update(),this.cookieHandler.setStatus("off"))},t.prototype.toggle=function(){this.isOn()?this.stop():this.start()},t.prototype.setLayout=function(t){var e=this;t!==this.widgetInstance.options.language&&(this.widgetInstance.options.language=t,new u(this.getCurrentLayout(),this.widgetInstance.element.find(".letterarea")).render(function(){e.currentMinute=-1,e.update()}),this.cookieHandler.setLayout(t),this.update())},t.prototype.setTheme=function(t){t!==this.widgetInstance.options.theme&&(this.widgetInstance.element.removeClass(this.widgetInstance.options.theme).addClass(t),$("#uhr-onoffswitch"+this.widgetInstance.uuid).removeClass(this.widgetInstance.options.theme).addClass(t),this.widgetInstance.options.theme=t,this.cookieHandler.setTheme(t))},t.prototype.setTime=function(t){this.currentMinute=null,null===t?this.widgetInstance.options.time=new Date:(null!==this.timer&&window.clearInterval(this.timer),this.widgetInstance.options.time=t),this.update()},t.prototype.setMode=function(t){this.widgetInstance.options.mode=t,this.currentMinute=null,this.update(),this.cookieHandler.setMode(t)},t.prototype.setWidth=function(t){this.renderer.setWidth(t)},t.prototype.isOn=function(){return null!==this.timer},t.prototype.update=function(){if(this.isOn()){var t=this.widgetInstance.options.time;if(!this.getCurrentLayout().hasOwnProperty("seconds")&&"seconds"!==this.widgetInstance.options.mode){if(t.getMinutes()===this.currentMinute)return;this.currentMinute=t.getMinutes()}this.show(t)}else this.clear(),this.currentMinute=-1},t.prototype.show=function(t){var e=this.getSecond(t),n=this.getDotMinute(t),i=this.getHour(t),o=this.getCoarseMinute(t);if(this.clear(),"seconds"===this.widgetInstance.options.mode)this.highlight("second"+e);else{this.highlight("on");for(var s=1;s<=n;s++)this.highlight("dot"+s);this.highlight("minute"+o),this.highlight("hour"+i)}},t.prototype.clear=function(){this.widgetInstance.element.find(".item").removeClass("active")},t.prototype.highlight=function(t){this.widgetInstance.element.find(".item."+t).addClass("active")},t.prototype.getSecond=function(t){return"function"==typeof this.getCurrentLayout().getSeconds?this.getCurrentLayout().getSeconds(t):t.getSeconds()},t.prototype.getDotMinute=function(t){return"function"==typeof this.getCurrentLayout().getDotMinute?this.getCurrentLayout().getDotMinute(t):t.getMinutes()%5},t.prototype.getCoarseMinute=function(t){return"function"==typeof this.getCurrentLayout().getCoarseMinute?this.getCurrentLayout().getCoarseMinute(t):t.getMinutes()},t.prototype.getHour=function(t){if("function"==typeof this.getCurrentLayout().getHour)return this.getCurrentLayout().getHour(t);var e=t.getHours();return t.getMinutes()>=25?(e+1)%24:e},t.prototype.parseHash=function(){var t=this,e=window.location.hash;void 0!==e&&"#"===e.charAt(0)&&(e=e.substring(1),(e=decodeURIComponent(e)).split("&").forEach(function(e){var n=e.split("="),i=n[0],o=n[1];switch(i){case"l":case"language":t.widgetInstance.options.language=o,t.widgetInstance.options.force=!0;break;case"t":case"theme":t.widgetInstance.options.theme=o,t.widgetInstance.options.force=!0;break;case"m":case"mode":t.widgetInstance.options.mode=o,t.widgetInstance.options.force=!0;break;case"s":case"status":t.widgetInstance.options.status=o,t.widgetInstance.options.force=!0}}))},t.prototype.getCurrentLayout=function(){var t=this,e=i.getLayouts().filter(function(e){return e.code===t.widgetInstance.options.language},this);return e.length>0?e[0]:o},t}(),d=n(1);d("link[rel=stylesheet]").each(function(t,e){var n=d(e),o=n.attr("data-class");if(void 0!==o){var s=n.attr("data-name");void 0===s&&(s=o),i.registerTheme(s,o)}}),i.hasThemes()||i.registerTheme("","");var p={options:{width:"100%",status:"on",language:"de_CH",theme:i.getFirstTheme().styleClass,force:!1,controls:!0,cookiePath:void 0,autoresize:!0,mode:"normal"},start:function(){this._fritteliUhrInstance.start()},stop:function(){this._fritteliUhrInstance.stop()},toggle:function(){this._fritteliUhrInstance.toggle()},language:function(t){this._fritteliUhrInstance.setLayout(t)},theme:function(t){this._fritteliUhrInstance.setTheme(t)},time:function(t){this._fritteliUhrInstance.setTime(t)},mode:function(t){this._fritteliUhrInstance.setMode(t)},width:function(t){this._fritteliUhrInstance.setWidth(t)},_create:function(){this._fritteliUhrInstance=new l(this)},_destroy:function(){this._fritteliUhrInstance.destroy()},_fritteliUhrInstance:null};$.widget("fritteli.uhr",p),$.fritteli.uhr.register=i.registerLayout}});
//# sourceMappingURL=uhr.js.map
\ No newline at end of file
diff --git a/dist/lib/uhr.js.map b/dist/lib/uhr.js.map
index 6806391..c47a6eb 100644
--- a/dist/lib/uhr.js.map
+++ b/dist/lib/uhr.js.map
@@ -1 +1 @@
-{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///external \"Cookies\"","webpack:///external \"jQuery\"","webpack:///./src/domain/globals.ts","webpack:///./src/domain/layout.ts","webpack:///./src/cookie-handler.ts","webpack:///./src/domain/letter.ts","webpack:///./src/layout-renderer.ts","webpack:///./src/uhr-renderer.ts","webpack:///./src/uhr.ts","webpack:///./src/theme-autodetector.ts","webpack:///./src/index.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","Cookies","jQuery","Globals","registerTheme","styleClass","themes","some","console","log","push","hasThemes","length","hasMultipleThemes","getFirstTheme","getTheme","index","getThemes","registerLayout","layout","layouts","element","code","prettyName","error","sort","a","b","localeCompare","hasLayouts","hasMultipleLayouts","getFirstLayout","getLayouts","EMPTY_LAYOUT","hours","letters","minutes","permanent","version","cookie_handler_CookieHandler","CookieHandler","widgetId","cookiePath","this","getLayout","oldCookie","getCookie","removeCookie","setLayout","setCookie","getMode","setMode","getStatus","setStatus","status","setTheme","theme","cookieName","external_Cookies_","cookieValue","options","expires","path","Letter","style","addStyle","toString","layout_renderer_LayoutRendererV2Delegate","LayoutRendererV2Delegate","parse","forEach","lineString","line","parseArrayOrObject","seconds","parseTimeDefinition","parseObject","keys","map","Number","y","x","input","_this","Array","isArray","item","definition","listString","timeValues","split","highlightLetters","timeValue","vorne0","3","4","5","6","7","8","9","hinten0","vorne1","hinten1","vorne2","hinten2","vorne3","hinten3","vorne4","hinten4","vorne5","hinten5","hinten6","hinten7","hinten8","hinten9","0","1","2","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59","LayoutRenderer","renderarea","render","beforeshow","undefined","parsed","warn","parsedLayout","writable","configurable","fadeOut","empty","array","letter","append","fadeIn","uhr_renderer_UhrRenderer","UhrRenderer","uhr","$element","id","cookieHandler","setupHTML","wireFunctionality","setWidth","width","css","realWidth","height","addClass","controls","controlpanel","$","content","toggleSwitch","modeSwitch","languageChooser_1","themeChooser_1","closebutton","on","click","hide","after","configlink","toggleConfigScreen","toggle","force","prop","start","stop","languageChooser","change","languageKey","val","selectedLayout","language","found","fallbackLanguage","themeChooser","themeKey","selectedTheme","fallbackTheme","autoresize","window","resize","$parent","parent","$window","parentWidth","parentHeight","windowWidth","windowHeight","size","Math","min","uhr_Uhr","Uhr","widgetInstance","timer","currentMinute","userTime","time","Date","uuid","parseHash","renderer","setTime","destroy","clearInterval","removeAttr","remove","isOn","setInterval","update","getCurrentLayout","find","removeClass","getMinutes","show","clear","second","getSecond","dotMinute","getDotMinute","hour","getHour","coarseMinute","getCoarseMinute","highlight","itemClass","getSeconds","date","getHours","hash","location","charAt","substring","decodeURIComponent","pair","matchingLanguages","filter","external_jQuery_","each","styleSheet","attr","name_1","widget","__fritteli_uhr_instance","_create","_destroy","fritteli","register"],"mappings":"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","file":"lib/uhr.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 12);\n","module.exports = Cookies;","module.exports = jQuery;","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout} from './layout';\nimport {Theme} from './theme';\n\nexport class Globals {\n private static layouts: Layout[] = [];\n private static themes: Theme[] = [];\n\n static registerTheme(name: string, styleClass: string): void {\n if (Globals.themes.some(value => value.name === name)) {\n console.log(`Theme with name '${name}' already registered; ignoring register request for styleClass '${styleClass}'.`)\n } else {\n Globals.themes.push({\n name,\n styleClass\n });\n }\n }\n\n static hasThemes(): boolean {\n return Globals.themes.length > 0;\n }\n\n static hasMultipleThemes(): boolean {\n return Globals.themes.length > 1;\n }\n\n static getFirstTheme(): Theme {\n return Globals.getTheme(0);\n }\n\n static getTheme(index: number): Theme {\n return Globals.themes[index];\n }\n\n static getThemes(): Theme[] {\n return Globals.themes;\n }\n\n static registerLayout(layout: Layout): void {\n const available = !Globals.layouts.some(element => {\n if (layout.code === element.code) {\n if (layout.prettyName !== element.prettyName) {\n console.error(\n `Error: Language code '${layout.code}' cannot be registered for layout '${layout.prettyName}' because it is already registered for layout '${element.prettyName}'!`\n );\n }\n return true;\n }\n return false;\n }\n );\n if (available) {\n Globals.layouts.push(layout);\n Globals.layouts.sort((a, b) => a.prettyName.localeCompare(b.prettyName));\n }\n }\n\n static hasLayouts(): boolean {\n return Globals.layouts.length > 0;\n }\n\n static hasMultipleLayouts(): boolean {\n return Globals.layouts.length > 1;\n }\n\n static getFirstLayout(): Layout {\n return Globals.layouts[0];\n }\n\n static getLayouts(): Layout[] {\n return Globals.layouts;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Letter} from './letter';\n\nexport interface Layout {\n readonly code: string;\n getCoarseMinute?: (time: Date) => number;\n getDotMinute?: (time: Date) => number;\n getHour?: (time: Date) => number;\n getSeconds?: (time: Date) => number;\n readonly hours: TimeDefinition;\n readonly letters: string[];\n readonly minutes: TimeDefinition;\n parsed?: Letter[][];\n readonly permanent: WordDefinition | WordDefinition[];\n readonly prettyName: string;\n seconds?: TimeDefinition;\n readonly version: number;\n}\n\nexport interface WordDefinition {\n [line: number]: number[];\n}\n\nexport interface TimeDefinition {\n [values: string]: WordDefinition | WordDefinition[];\n}\n\nexport const EMPTY_LAYOUT: Layout = {\n code: null,\n hours: null,\n letters: [],\n minutes: null,\n permanent: [],\n prettyName: null,\n version: 2\n};\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport * as Cookies from 'js-cookie';\n\nexport class CookieHandler {\n constructor(private widgetId: string, private cookiePath?: string) {\n }\n\n getLayout(): string {\n const oldCookie = this.getCookie('uhr-language');\n if (!!oldCookie) {\n // aha, old cookie is set. migrate to new one!\n this.removeCookie('uhr-language');\n this.setLayout(oldCookie);\n }\n return this.getCookie('uhr-layout');\n }\n\n setLayout(layout: string): void {\n this.setCookie('uhr-layout', layout);\n }\n\n getMode(): string {\n return this.getCookie('uhr-mode');\n }\n\n setMode(mode: string): void {\n this.setCookie('uhr-mode', mode);\n }\n\n\n getStatus(): string {\n return this.getCookie('uhr-status');\n }\n\n setStatus(status: string): void {\n this.setCookie('uhr-status', status);\n }\n\n getTheme(): string {\n return this.getCookie('uhr-theme');\n }\n\n setTheme(theme: string): void {\n this.setCookie('uhr-theme', theme);\n }\n\n private getCookie(cookieName: string): string {\n return Cookies.get(cookieName + this.widgetId);\n }\n\n private setCookie(cookieName: string, cookieValue: string): void {\n let options;\n if (!!this.cookiePath) {\n options = {expires: 365, path: this.cookiePath};\n } else {\n options = {expires: 365};\n }\n Cookies.set(cookieName + this.widgetId, cookieValue, options);\n }\n\n private removeCookie(cookieName: string): void {\n if (!!this.cookiePath) {\n Cookies.remove(cookieName + this.widgetId, {path: this.cookiePath});\n } else {\n Cookies.remove(cookieName + this.widgetId);\n }\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\n/**\n * Ein Buchstabe. Hilfsklasse für den Renderer und Inhalt der Layout-Arrays.\n * @param value Der Buchstabe, der Dargestellt werden soll.\n * @param style Die CSS-Styleklassen des Buchstabens.\n */\nexport class Letter {\n private readonly value: string;\n private style: string = '';\n\n constructor(value: string, style?: string) {\n this.value = value;\n if (!!style) {\n this.style = style;\n }\n }\n\n addStyle(style: string): void {\n if (this.style === '') {\n this.style = style;\n } else {\n this.style += ` ${style}`;\n }\n };\n\n toString(): string {\n return `${this.value}`;\n };\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, TimeDefinition, WordDefinition} from './domain/layout';\nimport {Letter} from './domain/letter';\n\nclass LayoutRendererV2Delegate {\n private static readonly vorne0: WordDefinition = {\n 3: [2, 3, 4],\n 4: [1, 5],\n 5: [1, 4, 5],\n 6: [1, 3, 5],\n 7: [1, 2, 5],\n 8: [1, 5],\n 9: [2, 3, 4]\n };\n private static readonly hinten0: WordDefinition = {\n 3: [8, 9, 10],\n 4: [7, 11],\n 5: [7, 10, 11],\n 6: [7, 9, 11],\n 7: [7, 8, 11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly vorne1: WordDefinition = {\n 3: [3],\n 4: [2, 3],\n 5: [3],\n 6: [3],\n 7: [3],\n 8: [3],\n 9: [2, 3, 4]\n };\n private static readonly hinten1: WordDefinition = {\n 3: [9],\n 4: [8, 9],\n 5: [9],\n 6: [9],\n 7: [9],\n 8: [9],\n 9: [8, 9, 10]\n };\n private static readonly vorne2: WordDefinition = {\n 3: [2, 3, 4],\n 4: [1, 5],\n 5: [5],\n 6: [4],\n 7: [3],\n 8: [2],\n 9: [1, 2, 3, 4, 5]\n };\n private static readonly hinten2: WordDefinition = {\n 3: [8, 9, 10],\n 4: [7, 11],\n 5: [11],\n 6: [10],\n 7: [9],\n 8: [8],\n 9: [7, 8, 9, 10, 11]\n };\n private static readonly vorne3: WordDefinition = {\n 3: [1, 2, 3, 4, 5],\n 4: [4],\n 5: [3],\n 6: [4],\n 7: [5],\n 8: [1, 5],\n 9: [2, 3, 4]\n };\n private static readonly hinten3: WordDefinition = {\n 3: [7, 8, 9, 10, 11],\n 4: [10],\n 5: [9],\n 6: [10],\n 7: [11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly vorne4: WordDefinition = {\n 3: [4],\n 4: [3, 4],\n 5: [2, 4],\n 6: [1, 4],\n 7: [1, 2, 3, 4, 5],\n 8: [4],\n 9: [4]\n };\n private static readonly hinten4: WordDefinition = {\n 3: [10],\n 4: [9, 10],\n 5: [8, 10],\n 6: [7, 10],\n 7: [7, 8, 9, 10, 11],\n 8: [10],\n 9: [10]\n };\n private static readonly vorne5: WordDefinition = {\n 3: [1, 2, 3, 4, 5],\n 4: [1],\n 5: [1, 2, 3, 4],\n 6: [5],\n 7: [5],\n 8: [1, 5],\n 9: [2, 3, 4]\n };\n private static readonly hinten5: WordDefinition = {\n 3: [7, 8, 9, 10, 11],\n 4: [7],\n 5: [7, 8, 9, 10],\n 6: [11],\n 7: [11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly hinten6: WordDefinition = {\n 3: [9, 10],\n 4: [8],\n 5: [7],\n 6: [7, 8, 9, 10],\n 7: [7, 11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly hinten7: WordDefinition = {\n 3: [7, 8, 9, 10, 11],\n 4: [11],\n 5: [10],\n 6: [9],\n 7: [8],\n 8: [8],\n 9: [8]\n };\n private static readonly hinten8: WordDefinition = {\n 3: [8, 9, 10],\n 4: [7, 11],\n 5: [7, 11],\n 6: [8, 9, 10],\n 7: [7, 11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly hinten9: WordDefinition = {\n 3: [8, 9, 10],\n 4: [7, 11],\n 5: [7, 11],\n 6: [8, 9, 10, 11],\n 7: [11],\n 8: [10],\n 9: [8, 9]\n };\n private static readonly seconds: TimeDefinition = {\n '0': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten0],\n '1': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten1],\n '2': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten2],\n '3': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten3],\n '4': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten4],\n '5': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten5],\n '6': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten6],\n '7': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten7],\n '8': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten8],\n '9': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten9],\n '10': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten0],\n '11': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten1],\n '12': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten2],\n '13': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten3],\n '14': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten4],\n '15': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten5],\n '16': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten6],\n '17': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten7],\n '18': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten8],\n '19': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten9],\n '20': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten0],\n '21': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten1],\n '22': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten2],\n '23': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten3],\n '24': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten4],\n '25': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten5],\n '26': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten6],\n '27': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten7],\n '28': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten8],\n '29': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten9],\n '30': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten0],\n '31': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten1],\n '32': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten2],\n '33': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten3],\n '34': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten4],\n '35': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten5],\n '36': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten6],\n '37': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten7],\n '38': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten8],\n '39': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten9],\n '40': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten0],\n '41': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten1],\n '42': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten2],\n '43': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten3],\n '44': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten4],\n '45': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten5],\n '46': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten6],\n '47': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten7],\n '48': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten8],\n '49': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten9],\n '50': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten0],\n '51': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten1],\n '52': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten2],\n '53': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten3],\n '54': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten4],\n '55': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten5],\n '56': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten6],\n '57': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten7],\n '58': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten8],\n '59': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten9]\n };\n\n constructor(private layout: Layout) {\n }\n\n public parse(): Letter[][] {\n const letters: Letter[][] = [];\n this.layout.letters.forEach(lineString => {\n const line: Letter[] = [];\n for (let c = 0; c < lineString.length; c++) {\n line.push(new Letter(lineString[c]));\n }\n letters.push(line);\n });\n this.parseArrayOrObject(letters, 'on', this.layout.permanent);\n if (typeof this.layout.seconds !== 'undefined' && this.layout.seconds !== null) {\n this.parseTimeDefinition(letters, 'second', this.layout.seconds);\n } else {\n this.parseTimeDefinition(letters, 'second', LayoutRendererV2Delegate.seconds);\n }\n this.parseTimeDefinition(letters, 'minute', this.layout.minutes);\n this.parseTimeDefinition(letters, 'hour', this.layout.hours);\n return letters;\n };\n\n private parseObject(letters: Letter[][], styleClass: string, object: WordDefinition): void {\n if (typeof object !== 'undefined' && object !== null) {\n Object.keys(object)\n .map(key => Number(key))\n .forEach(\n y => object[y].forEach(\n x => letters[y - 1][x - 1].addStyle(styleClass)\n )\n );\n }\n }\n\n private parseArrayOrObject(letters: Letter[][], styleClass: string, input: WordDefinition | WordDefinition[]): void {\n if (typeof input !== 'undefined' && input !== null) {\n if (Array.isArray(input)) {\n input.forEach(item => this.parseObject(letters, styleClass, item));\n } else {\n this.parseObject(letters, styleClass, input);\n }\n }\n }\n\n private parseTimeDefinition(letters: Letter[][], styleClass: string, definition: TimeDefinition): void {\n if (typeof definition !== 'undefined' && definition !== null) {\n Object.keys(definition).forEach(listString => {\n const timeValues: string[] = listString.split(',');\n const highlightLetters: WordDefinition | WordDefinition[] = definition[listString];\n timeValues.forEach(timeValue => this.parseArrayOrObject(letters, styleClass + timeValue, highlightLetters));\n });\n }\n }\n}\n\n/**\n * Hilfsklasse zum Rendern der Buchstaben der Uhr.\n * @param layout Layout-Objekt, das gerendert werden soll.\n * @param renderarea Das jQuery-gewrappte HTML-Element, auf dem gerendert werden soll.\n */\nexport class LayoutRenderer {\n constructor(private layout: Layout, private renderarea: JQuery) {\n }\n\n render(beforeshow?: () => void): void {\n if (this.layout.parsed === undefined) {\n if (this.layout.version === 2) {\n const delegate: LayoutRendererV2Delegate = new LayoutRendererV2Delegate(this.layout);\n const parsedLayout: Letter[][] = delegate.parse();\n Object.defineProperty(this.layout, 'parsed', {\n value: parsedLayout,\n writable: false,\n configurable: false\n });\n } else {\n console.warn(`Unknown layout version: '${this.layout.version}', expecting '2'`);\n return;\n }\n }\n const letters: Letter[][] = this.layout.parsed;\n this.renderarea.fadeOut('fast', () => {\n this.renderarea.empty();\n letters.forEach((line, index, array) => {\n line.forEach(letter => this.renderarea.append(letter.toString()));\n if (index < array.length - 1) {\n this.renderarea.append(' ');\n }\n });\n if (!!beforeshow) {\n beforeshow();\n }\n this.renderarea.fadeIn('fast');\n });\n };\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {CookieHandler} from './cookie-handler';\nimport {Globals} from './domain/globals';\nimport {Options} from './widget/options';\nimport {Uhr} from './uhr';\n\nexport class UhrRenderer {\n private cookieHandler: CookieHandler;\n\n constructor(\n private uhr: Uhr,\n private $element: JQuery,\n private options: Options,\n private id: string\n ) {\n this.cookieHandler = new CookieHandler(id, options.cookiePath);\n }\n\n public render(): void {\n this.setupHTML();\n this.wireFunctionality();\n }\n\n public setWidth(width: string): void {\n this.$element.css('width', width);\n const realWidth: number = this.$element.width();\n this.$element.width(realWidth);\n this.$element.height(realWidth);\n this.$element.css('font-size', (realWidth / 40) + 'px');\n }\n\n private setupHTML(): void {\n // Base clock area\n this.$element.addClass('uhr')\n .empty()\n .append('')\n .append('')\n .append('')\n .append('')\n .append('')\n .append('');\n\n this.setWidth(this.options.width);\n\n if (this.options.controls) {\n const controlpanel = $(``);\n const content = $('');\n controlpanel.append(content);\n // on/off switch\n const toggleSwitch = $(``);\n toggleSwitch.append(``);\n toggleSwitch.append(``);\n content.append(toggleSwitch);\n\n // time mode switch\n const modeSwitch = $(``);\n modeSwitch.append(``);\n modeSwitch.append(``);\n content.append(modeSwitch);\n // language chooser\n if (Globals.hasMultipleLayouts()) {\n const languageChooser = $(``);\n Globals.getLayouts().forEach(layout => {\n languageChooser.append(``);\n });\n content.append(languageChooser);\n }\n\n // theme chooser\n if (Globals.hasMultipleThemes()) {\n const themeChooser = $(``);\n Globals.getThemes().forEach(theme => {\n themeChooser.append(``);\n });\n content.append(themeChooser);\n }\n const closebutton: JQuery = $(``);\n closebutton.on({click: () => $(`#uhr-controlpanel${this.id}`).hide('fast')});\n content.append(closebutton);\n this.$element.after(controlpanel);\n controlpanel.hide();\n const configlink: JQuery = $(``);\n configlink.on({click: () => this.toggleConfigScreen()});\n this.$element.after(configlink);\n }\n };\n\n private wireFunctionality(): void {\n // on/off switch\n const toggleSwitch: JQuery = $(`#uhr-onoffswitch-checkbox${this.id}`);\n toggleSwitch.on({click: () => this.uhr.toggle()});\n let status = this.cookieHandler.getStatus();\n if (status === undefined || this.options.force) {\n status = this.options.status;\n }\n toggleSwitch.prop('checked', status === 'on');\n if (status === 'on') {\n this.uhr.start();\n } else {\n this.uhr.stop();\n }\n\n // time mode switch\n const modeSwitch: JQuery = $(`#uhr-modeswitch-checkbox${this.id}`);\n modeSwitch.on({\n click: () => {\n if (this.options.mode === 'seconds') {\n this.uhr.setMode('normal');\n } else {\n this.uhr.setMode('seconds');\n }\n }\n });\n\n let mode = this.cookieHandler.getMode();\n if (mode === undefined || this.options.force) {\n mode = this.options.mode;\n }\n modeSwitch.prop('checked', mode !== 'seconds');\n if (mode === 'seconds') {\n this.uhr.setMode('seconds');\n } else {\n this.uhr.setMode('normal');\n }\n\n // language chooser\n const languageChooser: JQuery = $(`#uhr-languagechooser${this.id}`);\n languageChooser.on({\n change: () => {\n const languageKey = $(`#uhr-languagechooser${this.id}`).val() as string;\n this.uhr.setLayout(languageKey);\n }\n });\n let selectedLayout = this.cookieHandler.getLayout();\n if (selectedLayout === undefined || this.options.force) {\n selectedLayout = this.options.language;\n }\n let found = Globals.getLayouts().some(item => selectedLayout === item.code);\n if (!found) {\n let fallbackLanguage;\n if (Globals.hasLayouts()) {\n fallbackLanguage = Globals.getFirstLayout().code;\n } else {\n fallbackLanguage = '';\n }\n console.warn(`Language '${selectedLayout}' not found! Using fallback '${fallbackLanguage}'.`);\n selectedLayout = fallbackLanguage;\n }\n languageChooser.val(selectedLayout);\n this.options.language = '';\n this.uhr.setLayout(selectedLayout);\n\n // theme chooser\n const themeChooser: JQuery = $(`#uhr-themechooser${this.id}`);\n themeChooser.on({\n change: () => {\n const themeKey = $(`#uhr-themechooser${this.id}`).val() as string;\n this.uhr.setTheme(themeKey);\n }\n });\n let selectedTheme = this.cookieHandler.getTheme();\n if (selectedTheme === undefined || this.options.force) {\n selectedTheme = this.options.theme;\n }\n found = Globals.getThemes().some(item => selectedTheme === item.styleClass);\n if (!found) {\n const fallbackTheme = Globals.getFirstTheme().styleClass;\n console.warn(`Theme '${selectedTheme}' not found! Using fallback '${fallbackTheme}'.`);\n selectedTheme = fallbackTheme;\n }\n themeChooser.val(selectedTheme);\n this.options.theme = '';\n this.uhr.setTheme(selectedTheme);\n if (this.options.autoresize) {\n $(window).on({\n resize: () => {\n const $parent: JQuery = this.$element.parent();\n const $window: JQuery = $(window);\n const parentWidth: number = $parent.width();\n const parentHeight: number = $parent.height();\n const windowWidth: number = $window.width();\n const windowHeight: number = $window.height();\n const size: string = `${Math.min(parentWidth, parentHeight, windowWidth, windowHeight)}px`;\n this.setWidth(size);\n }\n });\n }\n }\n\n private toggleConfigScreen() {\n $(`#uhr-controlpanel${this.id}`).toggle('fast');\n };\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {EMPTY_LAYOUT, Layout} from './domain/layout';\nimport {CookieHandler} from './cookie-handler';\nimport {Globals} from './domain/globals';\nimport {LayoutRenderer} from './layout-renderer';\nimport {UhrRenderer} from './uhr-renderer';\nimport {WidgetPrototype} from './widget/widget-prototype';\n\nexport class Uhr {\n\n private timer: number = null;\n private currentMinute: number = null;\n private renderer: UhrRenderer;\n private cookieHandler: CookieHandler;\n\n constructor(private widgetInstance: WidgetPrototype) {\n const userTime = this.widgetInstance.options.time;\n if (this.widgetInstance.options.time === undefined) {\n this.widgetInstance.options.time = new Date();\n }\n this.cookieHandler = new CookieHandler(this.widgetInstance.uuid, this.widgetInstance.options.cookiePath);\n this.parseHash();\n this.renderer = new UhrRenderer(this, this.widgetInstance.element, this.widgetInstance.options, this.widgetInstance.uuid);\n this.renderer.render();\n if (userTime !== undefined) {\n this.setTime(userTime);\n }\n }\n\n destroy(): void {\n if (!!this.timer) {\n window.clearInterval(this.timer);\n this.timer = null;\n }\n this.widgetInstance.element\n .removeAttr('style')\n .removeAttr('class')\n .empty();\n $(`#uhr-configlink${this.widgetInstance.uuid}`).remove();\n $(`#uhr-controlpanel${this.widgetInstance.uuid}`).remove();\n }\n\n start(): void {\n if (!this.isOn()) {\n this.timer = window.setInterval(() => {\n this.widgetInstance.options.time = new Date();\n this.update();\n }, 1000);\n this.update();\n this.cookieHandler.setStatus('on')\n }\n }\n\n stop(): void {\n if (this.isOn()) {\n window.clearInterval(this.timer);\n this.timer = null;\n this.update();\n this.cookieHandler.setStatus('off');\n }\n }\n\n toggle(): void {\n if (this.isOn()) {\n this.stop();\n } else {\n this.start();\n }\n }\n\n setLayout(key: string): void {\n if (key !== this.widgetInstance.options.language) {\n this.widgetInstance.options.language = key;\n const renderer = new LayoutRenderer(this.getCurrentLayout(), this.widgetInstance.element.find('.letterarea'));\n renderer.render(() => {\n this.currentMinute = -1;\n this.update();\n });\n this.cookieHandler.setLayout(key);\n this.update();\n }\n }\n\n setTheme(styleClass: string): void {\n if (styleClass !== this.widgetInstance.options.theme) {\n this.widgetInstance.element.removeClass(this.widgetInstance.options.theme).addClass(styleClass);\n $(`#uhr-onoffswitch${this.widgetInstance.uuid}`).removeClass(this.widgetInstance.options.theme).addClass(styleClass);\n this.widgetInstance.options.theme = styleClass;\n this.cookieHandler.setTheme(styleClass);\n }\n }\n\n setTime(time: Date): void {\n this.currentMinute = null;\n if (time === null) {\n this.widgetInstance.options.time = new Date();\n } else {\n if (this.timer !== null) {\n window.clearInterval(this.timer);\n }\n this.widgetInstance.options.time = time;\n }\n this.update();\n }\n\n setMode(mode: string): void {\n this.widgetInstance.options.mode = mode;\n this.currentMinute = null;\n this.update();\n this.cookieHandler.setMode(mode);\n }\n\n setWidth(width: string): void {\n this.renderer.setWidth(width);\n }\n\n private isOn(): boolean {\n return this.timer !== null;\n }\n\n private update(): void {\n if (this.isOn()) {\n const time = this.widgetInstance.options.time;\n if (!this.getCurrentLayout().hasOwnProperty('seconds') && this.widgetInstance.options.mode !== 'seconds') {\n if (time.getMinutes() === this.currentMinute) {\n return;\n }\n this.currentMinute = time.getMinutes();\n }\n this.show(time);\n } else {\n this.clear();\n this.currentMinute = -1;\n }\n }\n\n private show(time: Date): void {\n const second = this.getSecond(time);\n const dotMinute = this.getDotMinute(time);\n const hour = this.getHour(time);\n const coarseMinute = this.getCoarseMinute(time);\n this.clear();\n if (this.widgetInstance.options.mode === 'seconds') {\n this.highlight(`second${second}`);\n } else {\n this.highlight('on');\n for (let i = 1; i <= dotMinute; i++) {\n this.highlight(`dot${i}`);\n }\n this.highlight(`minute${coarseMinute}`);\n this.highlight(`hour${hour}`);\n }\n }\n\n private clear(): void {\n this.widgetInstance.element.find('.item').removeClass('active');\n }\n\n private highlight(itemClass: string): void {\n this.widgetInstance.element.find(`.item.${itemClass}`).addClass('active');\n }\n\n private getSecond(time: Date): number {\n if (typeof this.getCurrentLayout().getSeconds === 'function') {\n return this.getCurrentLayout().getSeconds(time);\n }\n return time.getSeconds();\n };\n\n private getDotMinute(date: Date): number {\n if (typeof this.getCurrentLayout().getDotMinute === 'function') {\n return this.getCurrentLayout().getDotMinute(date);\n }\n return date.getMinutes() % 5;\n };\n\n private getCoarseMinute(date: Date): number {\n if (typeof this.getCurrentLayout().getCoarseMinute === 'function') {\n return this.getCurrentLayout().getCoarseMinute(date);\n }\n return date.getMinutes();\n };\n\n private getHour(date: Date): number {\n if (typeof this.getCurrentLayout().getHour === 'function') {\n return this.getCurrentLayout().getHour(date);\n }\n const hour = date.getHours();\n if (date.getMinutes() >= 25) {\n return (hour + 1) % 24;\n }\n return hour;\n };\n\n private parseHash(): void {\n let hash: string = window.location.hash;\n if (hash !== undefined && hash.charAt(0) === '#') {\n hash = hash.substring(1);\n hash = decodeURIComponent(hash);\n const params: string[] = hash.split('&');\n params.forEach(element => {\n const pair: string[] = element.split('=');\n const key = pair[0];\n const value = pair[1];\n switch (key) {\n case 'l':\n case 'language':\n this.widgetInstance.options.language = value;\n this.widgetInstance.options.force = true;\n break;\n case 't':\n case 'theme':\n this.widgetInstance.options.theme = value;\n this.widgetInstance.options.force = true;\n break;\n case 'm':\n case 'mode':\n this.widgetInstance.options.mode = value;\n this.widgetInstance.options.force = true;\n break;\n case 's':\n case 'status':\n this.widgetInstance.options.status = value;\n this.widgetInstance.options.force = true;\n break;\n }\n });\n }\n }\n\n private getCurrentLayout(): Layout {\n const matchingLanguages: Layout[] = Globals.getLayouts().filter(element => element.code === this.widgetInstance.options.language, this);\n if (matchingLanguages.length > 0) {\n return matchingLanguages[0];\n }\n // fallback: return empty object\n return EMPTY_LAYOUT;\n };\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport * as $ from 'jquery';\nimport {Globals} from './domain/globals';\n\nexport function autodetectThemes() {\n $('link[rel=stylesheet]').each((index, item) => {\n const styleSheet = $(item);\n const styleClass: string = styleSheet.attr('data-class');\n if (styleClass !== undefined) {\n let name: string = styleSheet.attr('data-name');\n if (name === undefined) {\n name = styleClass;\n }\n Globals.registerTheme(name, styleClass);\n }\n });\n\n // fall-back if no theme was included\n if (!Globals.hasThemes()) {\n Globals.registerTheme('', '');\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Globals} from './domain/globals';\nimport {Layout} from './domain/layout';\nimport {Uhr} from './uhr';\nimport {WidgetPrototype} from './widget/widget-prototype';\nimport {autodetectThemes} from './theme-autodetector';\n\n// First things first: discover included themes and register them\nautodetectThemes();\n\n$.widget('fritteli.uhr', {\n options: {\n width: '100%',\n status: 'on',\n language: 'de_CH',\n theme: Globals.getFirstTheme().styleClass,\n force: false,\n controls: true,\n cookiePath: undefined,\n autoresize: true,\n mode: 'normal'\n },\n start: function () {\n this.__fritteli_uhr_instance.start();\n },\n stop: function () {\n this.__fritteli_uhr_instance.stop();\n },\n toggle: function () {\n this.__fritteli_uhr_instance.toggle();\n },\n language: function (key: string) {\n this.__fritteli_uhr_instance.setLayout(key);\n },\n theme: function (styleClass: string) {\n this.__fritteli_uhr_instance.setTheme(styleClass);\n },\n time: function (time: Date) {\n this.__fritteli_uhr_instance.setTime(time);\n },\n mode: function (mode: string) {\n this.__fritteli_uhr_instance.setMode(mode);\n },\n width: function (width: string) {\n this.__fritteli_uhr_instance.setWidth(width);\n },\n // constructor method\n _create: function () {\n this.__fritteli_uhr_instance = new Uhr(this);\n },\n // destructor method\n _destroy: function () {\n this.__fritteli_uhr_instance.destroy();\n },\n __fritteli_uhr_instance: null\n} as WidgetPrototype);\n\n$.fritteli.uhr.register = Globals.registerLayout;\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n const widget: JQueryUI.Widget;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///external \"Cookies\"","webpack:///external \"jQuery\"","webpack:///./src/domain/globals.ts","webpack:///./src/domain/layout.ts","webpack:///./src/cookie-handler.ts","webpack:///./src/domain/letter.ts","webpack:///./src/layout-renderer.ts","webpack:///./src/uhr-renderer.ts","webpack:///./src/uhr.ts","webpack:///./src/theme-autodetector.ts","webpack:///./src/index.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","Cookies","jQuery","Globals","registerTheme","styleClass","themes","some","console","warn","push","hasThemes","length","hasMultipleThemes","getFirstTheme","getTheme","index","getThemes","registerLayout","layout","layouts","element","code","prettyName","error","sort","a","b","localeCompare","hasLayouts","hasMultipleLayouts","getFirstLayout","getLayouts","EMPTY_LAYOUT","hours","letters","minutes","permanent","version","cookie_handler_CookieHandler","CookieHandler","widgetId","cookiePath","this","getLayout","oldCookie","getCookie","removeCookie","setLayout","setCookie","getMode","setMode","getStatus","setStatus","status","setTheme","theme","cookieName","external_Cookies_","cookieValue","options","expires","path","Letter","style","addStyle","toString","layout_renderer_LayoutRendererV2Delegate","LayoutRendererV2Delegate","parse","forEach","lineString","line","parseArrayOrObject","seconds","parseTimeDefinition","parseObject","keys","map","Number","y","x","input","_this","Array","isArray","item","definition","listString","timeValues","split","highlightLetters","timeValue","vorne0","3","4","5","6","7","8","9","hinten0","vorne1","hinten1","vorne2","hinten2","vorne3","hinten3","vorne4","hinten4","vorne5","hinten5","hinten6","hinten7","hinten8","hinten9","0","1","2","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59","LayoutRenderer","renderarea","render","beforeshow","undefined","parsed","parsedLayout","writable","configurable","fadeOut","empty","array","letter","append","fadeIn","uhr_renderer_UhrRenderer","UhrRenderer","uhr","$element","id","cookieHandler","setupHTML","wireFunctionality","setWidth","width","css","realWidth","height","addClass","controls","controlpanel","$","content","toggleSwitch","modeSwitch","languageChooser_1","themeChooser_1","closebutton","on","click","hide","after","configlink","toggleConfigScreen","toggle","force","prop","start","stop","languageChooser","change","languageKey","val","selectedLayout","language","found","fallbackLanguage","themeChooser","themeKey","selectedTheme","fallbackTheme","autoresize","window","resize","$parent","parent","$window","parentWidth","parentHeight","windowWidth","windowHeight","size","Math","min","uhr_Uhr","Uhr","widgetInstance","timer","currentMinute","userTime","time","Date","uuid","parseHash","renderer","setTime","destroy","clearInterval","removeAttr","remove","isOn","setInterval","update","getCurrentLayout","find","removeClass","getMinutes","show","clear","second","getSecond","dotMinute","getDotMinute","hour","getHour","coarseMinute","getCoarseMinute","highlight","itemClass","getSeconds","date","getHours","hash","location","charAt","substring","decodeURIComponent","pair","matchingLanguages","filter","external_jQuery_","each","styleSheet","attr","name_1","widgetPrototype","_fritteliUhrInstance","_create","_destroy","widget","fritteli","register"],"mappings":"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","file":"lib/uhr.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 12);\n","module.exports = Cookies;","module.exports = jQuery;","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout} from './layout';\nimport {Theme} from './theme';\n\nexport class Globals {\n private static layouts: Layout[] = [];\n private static themes: Theme[] = [];\n\n public static registerTheme(name: string, styleClass: string): void {\n if (Globals.themes.some((value): boolean => value.name === name)) {\n console.warn(`Theme with name '${name}' already registered; ignoring register request for styleClass '${styleClass}'.`);\n } else {\n Globals.themes.push({\n name,\n styleClass\n });\n }\n }\n\n public static hasThemes(): boolean {\n return Globals.themes.length > 0;\n }\n\n public static hasMultipleThemes(): boolean {\n return Globals.themes.length > 1;\n }\n\n public static getFirstTheme(): Theme {\n return Globals.getTheme(0);\n }\n\n public static getTheme(index: number): Theme {\n return Globals.themes[index];\n }\n\n public static getThemes(): Theme[] {\n return Globals.themes;\n }\n\n public static registerLayout(layout: Layout): void {\n const available = !Globals.layouts.some((element): boolean => {\n if (layout.code === element.code) {\n if (layout.prettyName !== element.prettyName) {\n console.error(\n `Error: Language code '${layout.code}' cannot be registered for layout '${layout.prettyName}' because it is already registered for layout '${element.prettyName}'!`\n );\n }\n return true;\n }\n return false;\n });\n if (available) {\n Globals.layouts.push(layout);\n Globals.layouts.sort((a, b): number => a.prettyName.localeCompare(b.prettyName));\n }\n }\n\n public static hasLayouts(): boolean {\n return Globals.layouts.length > 0;\n }\n\n public static hasMultipleLayouts(): boolean {\n return Globals.layouts.length > 1;\n }\n\n public static getFirstLayout(): Layout {\n return Globals.layouts[0];\n }\n\n public static getLayouts(): Layout[] {\n return Globals.layouts;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Letter} from './letter';\n\nexport interface Layout {\n readonly code: string;\n getCoarseMinute?: (time: Date) => number;\n getDotMinute?: (time: Date) => number;\n getHour?: (time: Date) => number;\n getSeconds?: (time: Date) => number;\n readonly hours: TimeDefinition;\n readonly letters: string[];\n readonly minutes: TimeDefinition;\n parsed?: Letter[][];\n readonly permanent: WordDefinition | WordDefinition[];\n readonly prettyName: string;\n seconds?: TimeDefinition;\n readonly version: number;\n}\n\nexport interface WordDefinition {\n [line: number]: number[];\n}\n\nexport interface TimeDefinition {\n [values: string]: WordDefinition | WordDefinition[];\n}\n\nexport const EMPTY_LAYOUT: Layout = {\n code: null,\n hours: null,\n letters: [],\n minutes: null,\n permanent: [],\n prettyName: null,\n version: 2\n};\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport * as Cookies from 'js-cookie';\n\nexport class CookieHandler {\n public constructor(private readonly widgetId: string, private readonly cookiePath?: string) {\n }\n\n public getLayout(): string {\n const oldCookie = this.getCookie('uhr-language');\n if (oldCookie) {\n // aha, old cookie is set. migrate to new one!\n this.removeCookie('uhr-language');\n this.setLayout(oldCookie);\n }\n return this.getCookie('uhr-layout');\n }\n\n public setLayout(layout: string): void {\n this.setCookie('uhr-layout', layout);\n }\n\n public getMode(): string {\n return this.getCookie('uhr-mode');\n }\n\n public setMode(mode: string): void {\n this.setCookie('uhr-mode', mode);\n }\n\n public getStatus(): string {\n return this.getCookie('uhr-status');\n }\n\n public setStatus(status: string): void {\n this.setCookie('uhr-status', status);\n }\n\n public getTheme(): string {\n return this.getCookie('uhr-theme');\n }\n\n public setTheme(theme: string): void {\n this.setCookie('uhr-theme', theme);\n }\n\n private getCookie(cookieName: string): string {\n return Cookies.get(cookieName + this.widgetId);\n }\n\n private setCookie(cookieName: string, cookieValue: string): void {\n let options;\n if (this.cookiePath) {\n options = {expires: 365, path: this.cookiePath};\n } else {\n options = {expires: 365};\n }\n Cookies.set(cookieName + this.widgetId, cookieValue, options);\n }\n\n private removeCookie(cookieName: string): void {\n if (this.cookiePath) {\n Cookies.remove(cookieName + this.widgetId, {path: this.cookiePath});\n } else {\n Cookies.remove(cookieName + this.widgetId);\n }\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\n/**\n * Ein Buchstabe. Hilfsklasse für den Renderer und Inhalt der Layout-Arrays.\n * @param value Der Buchstabe, der Dargestellt werden soll.\n * @param style Die CSS-Styleklassen des Buchstabens.\n */\nexport class Letter {\n // private readonly value: string;\n private style: string;\n\n public constructor(private readonly value: string, style: string = '') {\n this.value = value;\n this.style = style;\n // if (style) {\n // this.style = style;\n // }\n }\n\n public addStyle(style: string): void {\n if (this.style === '') {\n this.style = style;\n } else {\n this.style += ` ${style}`;\n }\n }\n\n public toString(): string {\n return `${this.value}`;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, TimeDefinition, WordDefinition} from './domain/layout';\nimport {Letter} from './domain/letter';\n\nclass LayoutRendererV2Delegate {\n private static readonly vorne0: WordDefinition = {\n 3: [2, 3, 4],\n 4: [1, 5],\n 5: [1, 4, 5],\n 6: [1, 3, 5],\n 7: [1, 2, 5],\n 8: [1, 5],\n 9: [2, 3, 4]\n };\n private static readonly hinten0: WordDefinition = {\n 3: [8, 9, 10],\n 4: [7, 11],\n 5: [7, 10, 11],\n 6: [7, 9, 11],\n 7: [7, 8, 11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly vorne1: WordDefinition = {\n 3: [3],\n 4: [2, 3],\n 5: [3],\n 6: [3],\n 7: [3],\n 8: [3],\n 9: [2, 3, 4]\n };\n private static readonly hinten1: WordDefinition = {\n 3: [9],\n 4: [8, 9],\n 5: [9],\n 6: [9],\n 7: [9],\n 8: [9],\n 9: [8, 9, 10]\n };\n private static readonly vorne2: WordDefinition = {\n 3: [2, 3, 4],\n 4: [1, 5],\n 5: [5],\n 6: [4],\n 7: [3],\n 8: [2],\n 9: [1, 2, 3, 4, 5]\n };\n private static readonly hinten2: WordDefinition = {\n 3: [8, 9, 10],\n 4: [7, 11],\n 5: [11],\n 6: [10],\n 7: [9],\n 8: [8],\n 9: [7, 8, 9, 10, 11]\n };\n private static readonly vorne3: WordDefinition = {\n 3: [1, 2, 3, 4, 5],\n 4: [4],\n 5: [3],\n 6: [4],\n 7: [5],\n 8: [1, 5],\n 9: [2, 3, 4]\n };\n private static readonly hinten3: WordDefinition = {\n 3: [7, 8, 9, 10, 11],\n 4: [10],\n 5: [9],\n 6: [10],\n 7: [11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly vorne4: WordDefinition = {\n 3: [4],\n 4: [3, 4],\n 5: [2, 4],\n 6: [1, 4],\n 7: [1, 2, 3, 4, 5],\n 8: [4],\n 9: [4]\n };\n private static readonly hinten4: WordDefinition = {\n 3: [10],\n 4: [9, 10],\n 5: [8, 10],\n 6: [7, 10],\n 7: [7, 8, 9, 10, 11],\n 8: [10],\n 9: [10]\n };\n private static readonly vorne5: WordDefinition = {\n 3: [1, 2, 3, 4, 5],\n 4: [1],\n 5: [1, 2, 3, 4],\n 6: [5],\n 7: [5],\n 8: [1, 5],\n 9: [2, 3, 4]\n };\n private static readonly hinten5: WordDefinition = {\n 3: [7, 8, 9, 10, 11],\n 4: [7],\n 5: [7, 8, 9, 10],\n 6: [11],\n 7: [11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly hinten6: WordDefinition = {\n 3: [9, 10],\n 4: [8],\n 5: [7],\n 6: [7, 8, 9, 10],\n 7: [7, 11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly hinten7: WordDefinition = {\n 3: [7, 8, 9, 10, 11],\n 4: [11],\n 5: [10],\n 6: [9],\n 7: [8],\n 8: [8],\n 9: [8]\n };\n private static readonly hinten8: WordDefinition = {\n 3: [8, 9, 10],\n 4: [7, 11],\n 5: [7, 11],\n 6: [8, 9, 10],\n 7: [7, 11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly hinten9: WordDefinition = {\n 3: [8, 9, 10],\n 4: [7, 11],\n 5: [7, 11],\n 6: [8, 9, 10, 11],\n 7: [11],\n 8: [10],\n 9: [8, 9]\n };\n private static readonly seconds: TimeDefinition = {\n '0': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten0],\n '1': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten1],\n '2': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten2],\n '3': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten3],\n '4': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten4],\n '5': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten5],\n '6': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten6],\n '7': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten7],\n '8': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten8],\n '9': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten9],\n '10': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten0],\n '11': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten1],\n '12': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten2],\n '13': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten3],\n '14': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten4],\n '15': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten5],\n '16': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten6],\n '17': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten7],\n '18': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten8],\n '19': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten9],\n '20': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten0],\n '21': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten1],\n '22': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten2],\n '23': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten3],\n '24': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten4],\n '25': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten5],\n '26': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten6],\n '27': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten7],\n '28': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten8],\n '29': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten9],\n '30': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten0],\n '31': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten1],\n '32': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten2],\n '33': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten3],\n '34': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten4],\n '35': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten5],\n '36': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten6],\n '37': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten7],\n '38': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten8],\n '39': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten9],\n '40': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten0],\n '41': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten1],\n '42': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten2],\n '43': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten3],\n '44': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten4],\n '45': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten5],\n '46': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten6],\n '47': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten7],\n '48': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten8],\n '49': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten9],\n '50': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten0],\n '51': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten1],\n '52': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten2],\n '53': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten3],\n '54': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten4],\n '55': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten5],\n '56': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten6],\n '57': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten7],\n '58': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten8],\n '59': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten9]\n };\n\n public constructor(private readonly layout: Layout) {\n }\n\n public parse(): Letter[][] {\n const letters: Letter[][] = [];\n this.layout.letters.forEach((lineString: string): void => {\n const line: Letter[] = [];\n for (let c = 0; c < lineString.length; c++) {\n line.push(new Letter(lineString[c]));\n }\n letters.push(line);\n });\n this.parseArrayOrObject(letters, 'on', this.layout.permanent);\n if (typeof this.layout.seconds !== 'undefined' && this.layout.seconds !== null) {\n this.parseTimeDefinition(letters, 'second', this.layout.seconds);\n } else {\n this.parseTimeDefinition(letters, 'second', LayoutRendererV2Delegate.seconds);\n }\n this.parseTimeDefinition(letters, 'minute', this.layout.minutes);\n this.parseTimeDefinition(letters, 'hour', this.layout.hours);\n return letters;\n }\n\n private parseObject(letters: Letter[][], styleClass: string, object: WordDefinition): void {\n if (typeof object !== 'undefined' && object !== null) {\n Object.keys(object)\n .map((key: string): number => Number(key))\n .forEach(\n (y: number): void => object[y].forEach(\n (x: number): void => letters[y - 1][x - 1].addStyle(styleClass)\n )\n );\n }\n }\n\n private parseArrayOrObject(letters: Letter[][], styleClass: string, input: WordDefinition | WordDefinition[]): void {\n if (typeof input !== 'undefined' && input !== null) {\n if (Array.isArray(input)) {\n input.forEach((item: WordDefinition): void => this.parseObject(letters, styleClass, item));\n } else {\n this.parseObject(letters, styleClass, input);\n }\n }\n }\n\n private parseTimeDefinition(letters: Letter[][], styleClass: string, definition: TimeDefinition): void {\n if (typeof definition !== 'undefined' && definition !== null) {\n Object.keys(definition).forEach((listString: string): void => {\n const timeValues: string[] = listString.split(',');\n const highlightLetters: WordDefinition | WordDefinition[] = definition[listString];\n timeValues.forEach((timeValue: string): void => this.parseArrayOrObject(letters, styleClass + timeValue, highlightLetters));\n });\n }\n }\n}\n\n/**\n * Hilfsklasse zum Rendern der Buchstaben der Uhr.\n * @param layout Layout-Objekt, das gerendert werden soll.\n * @param renderarea Das jQuery-gewrappte HTML-Element, auf dem gerendert werden soll.\n */\nexport class LayoutRenderer {\n public constructor(private readonly layout: Layout, private readonly renderarea: JQuery) {\n }\n\n public render(beforeshow?: () => void): void {\n if (this.layout.parsed === undefined) {\n if (this.layout.version === 2) {\n const delegate: LayoutRendererV2Delegate = new LayoutRendererV2Delegate(this.layout);\n const parsedLayout: Letter[][] = delegate.parse();\n Object.defineProperty(this.layout, 'parsed', {\n value: parsedLayout,\n writable: false,\n configurable: false\n });\n } else {\n console.warn(`Unknown layout version: '${this.layout.version}', expecting '2'`);\n return;\n }\n }\n const letters: Letter[][] = this.layout.parsed;\n this.renderarea.fadeOut('fast', (): void => {\n this.renderarea.empty();\n letters.forEach((line, index, array): void => {\n line.forEach((letter): JQuery => this.renderarea.append(letter.toString()));\n if (index < array.length - 1) {\n this.renderarea.append(' ');\n }\n });\n if (beforeshow) {\n beforeshow();\n }\n this.renderarea.fadeIn('fast');\n });\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {CookieHandler} from './cookie-handler';\nimport {Globals} from './domain/globals';\nimport {Layout} from './domain/layout';\nimport {Options} from './widget/options';\nimport {Theme} from './domain/theme';\nimport {Uhr} from './uhr';\n\ndeclare var $: JQueryStatic;\n\nexport class UhrRenderer {\n private cookieHandler: CookieHandler;\n\n public constructor(\n private readonly uhr: Uhr,\n private readonly $element: JQuery,\n private readonly options: Options,\n private readonly id: string\n ) {\n this.cookieHandler = new CookieHandler(id, options.cookiePath);\n }\n\n public render(): void {\n this.setupHTML();\n this.wireFunctionality();\n }\n\n public setWidth(width: string): void {\n this.$element.css('width', width);\n const realWidth: number = this.$element.width();\n this.$element.width(realWidth);\n this.$element.height(realWidth);\n this.$element.css('font-size', (realWidth / 40) + 'px');\n }\n\n private setupHTML(): void {\n // Base clock area\n this.$element.addClass('uhr')\n .empty()\n .append('')\n .append('')\n .append('')\n .append('')\n .append('')\n .append('');\n\n this.setWidth(this.options.width);\n\n if (this.options.controls) {\n const controlpanel = $(``);\n const content = $('');\n controlpanel.append(content);\n // on/off switch\n const toggleSwitch = $(``);\n toggleSwitch.append(``);\n toggleSwitch.append(``);\n content.append(toggleSwitch);\n\n // time mode switch\n const modeSwitch = $(``);\n modeSwitch.append(``);\n modeSwitch.append(``);\n content.append(modeSwitch);\n // language chooser\n if (Globals.hasMultipleLayouts()) {\n const languageChooser = $(``);\n Globals.getLayouts().forEach((layout: Layout): void => {\n languageChooser.append(``);\n });\n content.append(languageChooser);\n }\n\n // theme chooser\n if (Globals.hasMultipleThemes()) {\n const themeChooser = $(``);\n Globals.getThemes().forEach((theme: Theme): void => {\n themeChooser.append(``);\n });\n content.append(themeChooser);\n }\n const closebutton: JQuery = $(``);\n closebutton.on({click: (): JQuery => $(`#uhr-controlpanel${this.id}`).hide('fast')});\n content.append(closebutton);\n this.$element.after(controlpanel);\n controlpanel.hide();\n const configlink: JQuery = $(``);\n configlink.on({click: (): void => this.toggleConfigScreen()});\n this.$element.after(configlink);\n }\n }\n\n private wireFunctionality(): void {\n // on/off switch\n const toggleSwitch: JQuery = $(`#uhr-onoffswitch-checkbox${this.id}`);\n toggleSwitch.on({click: (): void => this.uhr.toggle()});\n let status = this.cookieHandler.getStatus();\n if (status === undefined || this.options.force) {\n status = this.options.status;\n }\n toggleSwitch.prop('checked', status === 'on');\n if (status === 'on') {\n this.uhr.start();\n } else {\n this.uhr.stop();\n }\n\n // time mode switch\n const modeSwitch: JQuery = $(`#uhr-modeswitch-checkbox${this.id}`);\n modeSwitch.on({\n click: (): void => {\n if (this.options.mode === 'seconds') {\n this.uhr.setMode('normal');\n } else {\n this.uhr.setMode('seconds');\n }\n }\n });\n\n let mode = this.cookieHandler.getMode();\n if (mode === undefined || this.options.force) {\n mode = this.options.mode;\n }\n modeSwitch.prop('checked', mode !== 'seconds');\n if (mode === 'seconds') {\n this.uhr.setMode('seconds');\n } else {\n this.uhr.setMode('normal');\n }\n\n // language chooser\n const languageChooser: JQuery = $(`#uhr-languagechooser${this.id}`);\n languageChooser.on({\n change: (): void => {\n const languageKey = $(`#uhr-languagechooser${this.id}`).val() as string;\n this.uhr.setLayout(languageKey);\n }\n });\n let selectedLayout = this.cookieHandler.getLayout();\n if (selectedLayout === undefined || this.options.force) {\n selectedLayout = this.options.language;\n }\n let found = Globals.getLayouts().some((item: Layout): boolean => selectedLayout === item.code);\n if (!found) {\n let fallbackLanguage;\n if (Globals.hasLayouts()) {\n fallbackLanguage = Globals.getFirstLayout().code;\n } else {\n fallbackLanguage = '';\n }\n console.warn(`Language '${selectedLayout}' not found! Using fallback '${fallbackLanguage}'.`);\n selectedLayout = fallbackLanguage;\n }\n languageChooser.val(selectedLayout);\n this.options.language = '';\n this.uhr.setLayout(selectedLayout);\n\n // theme chooser\n const themeChooser: JQuery = $(`#uhr-themechooser${this.id}`);\n themeChooser.on({\n change: (): void => {\n const themeKey = $(`#uhr-themechooser${this.id}`).val() as string;\n this.uhr.setTheme(themeKey);\n }\n });\n let selectedTheme = this.cookieHandler.getTheme();\n if (selectedTheme === undefined || this.options.force) {\n selectedTheme = this.options.theme;\n }\n found = Globals.getThemes().some((item: Theme): boolean => selectedTheme === item.styleClass);\n if (!found) {\n const fallbackTheme = Globals.getFirstTheme().styleClass;\n console.warn(`Theme '${selectedTheme}' not found! Using fallback '${fallbackTheme}'.`);\n selectedTheme = fallbackTheme;\n }\n themeChooser.val(selectedTheme);\n this.options.theme = '';\n this.uhr.setTheme(selectedTheme);\n if (this.options.autoresize) {\n $(window).on({\n resize: (): void => {\n const $parent: JQuery = this.$element.parent();\n const $window: JQuery = $(window);\n const parentWidth: number = $parent.width();\n const parentHeight: number = $parent.height();\n const windowWidth: number = $window.width();\n const windowHeight: number = $window.height();\n const size: string = `${Math.min(parentWidth, parentHeight, windowWidth, windowHeight)}px`;\n this.setWidth(size);\n }\n });\n }\n }\n\n private toggleConfigScreen(): void {\n $(`#uhr-controlpanel${this.id}`).toggle('fast');\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\n/*eslint no-undef: \"warn\"*/\nimport WidgetCommonProperties = JQueryUI.WidgetCommonProperties;\nimport {EMPTY_LAYOUT, Layout} from './domain/layout';\nimport {CookieHandler} from './cookie-handler';\nimport {Globals} from './domain/globals';\nimport {LayoutRenderer} from './layout-renderer';\nimport {UhrRenderer} from './uhr-renderer';\nimport {WidgetPrototype} from './widget/widget-prototype';\n\ndeclare var $: JQueryStatic;\n\nexport class Uhr {\n\n private timer: number = null;\n private currentMinute: number = null;\n private renderer: UhrRenderer;\n private cookieHandler: CookieHandler;\n\n public constructor(private readonly widgetInstance: WidgetPrototype & WidgetCommonProperties) {\n const userTime = this.widgetInstance.options.time;\n if (this.widgetInstance.options.time === undefined) {\n this.widgetInstance.options.time = new Date();\n }\n this.cookieHandler = new CookieHandler(this.widgetInstance.uuid, this.widgetInstance.options.cookiePath);\n this.parseHash();\n this.renderer = new UhrRenderer(this, this.widgetInstance.element, this.widgetInstance.options, this.widgetInstance.uuid);\n this.renderer.render();\n if (userTime !== undefined) {\n this.setTime(userTime);\n }\n }\n\n public destroy(): void {\n if (this.timer) {\n window.clearInterval(this.timer);\n this.timer = null;\n }\n this.widgetInstance.element\n .removeAttr('style')\n .removeAttr('class')\n .empty();\n $(`#uhr-configlink${this.widgetInstance.uuid}`).remove();\n $(`#uhr-controlpanel${this.widgetInstance.uuid}`).remove();\n }\n\n public start(): void {\n if (!this.isOn()) {\n this.timer = window.setInterval((): void => {\n this.widgetInstance.options.time = new Date();\n this.update();\n }, 1000);\n this.update();\n this.cookieHandler.setStatus('on');\n }\n }\n\n public stop(): void {\n if (this.isOn()) {\n window.clearInterval(this.timer);\n this.timer = null;\n this.update();\n this.cookieHandler.setStatus('off');\n }\n }\n\n public toggle(): void {\n if (this.isOn()) {\n this.stop();\n } else {\n this.start();\n }\n }\n\n public setLayout(key: string): void {\n if (key !== this.widgetInstance.options.language) {\n this.widgetInstance.options.language = key;\n const renderer = new LayoutRenderer(this.getCurrentLayout(), this.widgetInstance.element.find('.letterarea'));\n renderer.render((): void => {\n this.currentMinute = -1;\n this.update();\n });\n this.cookieHandler.setLayout(key);\n this.update();\n }\n }\n\n public setTheme(styleClass: string): void {\n if (styleClass !== this.widgetInstance.options.theme) {\n this.widgetInstance.element.removeClass(this.widgetInstance.options.theme).addClass(styleClass);\n $(`#uhr-onoffswitch${this.widgetInstance.uuid}`).removeClass(this.widgetInstance.options.theme).addClass(styleClass);\n this.widgetInstance.options.theme = styleClass;\n this.cookieHandler.setTheme(styleClass);\n }\n }\n\n public setTime(time: Date): void {\n this.currentMinute = null;\n if (time === null) {\n this.widgetInstance.options.time = new Date();\n } else {\n if (this.timer !== null) {\n window.clearInterval(this.timer);\n }\n this.widgetInstance.options.time = time;\n }\n this.update();\n }\n\n public setMode(mode: string): void {\n this.widgetInstance.options.mode = mode;\n this.currentMinute = null;\n this.update();\n this.cookieHandler.setMode(mode);\n }\n\n public setWidth(width: string): void {\n this.renderer.setWidth(width);\n }\n\n private isOn(): boolean {\n return this.timer !== null;\n }\n\n private update(): void {\n if (this.isOn()) {\n const time = this.widgetInstance.options.time;\n if (!this.getCurrentLayout().hasOwnProperty('seconds') && this.widgetInstance.options.mode !== 'seconds') {\n if (time.getMinutes() === this.currentMinute) {\n return;\n }\n this.currentMinute = time.getMinutes();\n }\n this.show(time);\n } else {\n this.clear();\n this.currentMinute = -1;\n }\n }\n\n private show(time: Date): void {\n const second = this.getSecond(time);\n const dotMinute = this.getDotMinute(time);\n const hour = this.getHour(time);\n const coarseMinute = this.getCoarseMinute(time);\n this.clear();\n if (this.widgetInstance.options.mode === 'seconds') {\n this.highlight(`second${second}`);\n } else {\n this.highlight('on');\n for (let i = 1; i <= dotMinute; i++) {\n this.highlight(`dot${i}`);\n }\n this.highlight(`minute${coarseMinute}`);\n this.highlight(`hour${hour}`);\n }\n }\n\n private clear(): void {\n this.widgetInstance.element.find('.item').removeClass('active');\n }\n\n private highlight(itemClass: string): void {\n this.widgetInstance.element.find(`.item.${itemClass}`).addClass('active');\n }\n\n private getSecond(time: Date): number {\n if (typeof this.getCurrentLayout().getSeconds === 'function') {\n return this.getCurrentLayout().getSeconds(time);\n }\n return time.getSeconds();\n }\n\n private getDotMinute(date: Date): number {\n if (typeof this.getCurrentLayout().getDotMinute === 'function') {\n return this.getCurrentLayout().getDotMinute(date);\n }\n return date.getMinutes() % 5;\n }\n\n private getCoarseMinute(date: Date): number {\n if (typeof this.getCurrentLayout().getCoarseMinute === 'function') {\n return this.getCurrentLayout().getCoarseMinute(date);\n }\n return date.getMinutes();\n }\n\n private getHour(date: Date): number {\n if (typeof this.getCurrentLayout().getHour === 'function') {\n return this.getCurrentLayout().getHour(date);\n }\n const hour = date.getHours();\n if (date.getMinutes() >= 25) {\n return (hour + 1) % 24;\n }\n return hour;\n }\n\n private parseHash(): void {\n let hash: string = window.location.hash;\n if (hash !== undefined && hash.charAt(0) === '#') {\n hash = hash.substring(1);\n hash = decodeURIComponent(hash);\n const params: string[] = hash.split('&');\n params.forEach((element: string): void => {\n const pair: string[] = element.split('=');\n const key = pair[0];\n const value = pair[1];\n switch (key) {\n case 'l':\n case 'language':\n this.widgetInstance.options.language = value;\n this.widgetInstance.options.force = true;\n break;\n case 't':\n case 'theme':\n this.widgetInstance.options.theme = value;\n this.widgetInstance.options.force = true;\n break;\n case 'm':\n case 'mode':\n this.widgetInstance.options.mode = value;\n this.widgetInstance.options.force = true;\n break;\n case 's':\n case 'status':\n this.widgetInstance.options.status = value;\n this.widgetInstance.options.force = true;\n break;\n }\n });\n }\n }\n\n private getCurrentLayout(): Layout {\n const matchingLanguages: Layout[] = Globals.getLayouts().filter((element: Layout): boolean => element.code === this.widgetInstance.options.language, this);\n if (matchingLanguages.length > 0) {\n return matchingLanguages[0];\n }\n // fallback: return empty object\n return EMPTY_LAYOUT;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport * as $ from 'jquery';\nimport {Globals} from './domain/globals';\n\nexport function autodetectThemes(): void {\n $('link[rel=stylesheet]').each((index, item): void => {\n const styleSheet = $(item);\n const styleClass: string = styleSheet.attr('data-class');\n if (styleClass !== undefined) {\n let name: string = styleSheet.attr('data-name');\n if (name === undefined) {\n name = styleClass;\n }\n Globals.registerTheme(name, styleClass);\n }\n });\n\n // fall-back if no theme was included\n if (!Globals.hasThemes()) {\n Globals.registerTheme('', '');\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Globals} from './domain/globals';\nimport {Layout} from './domain/layout';\nimport {Uhr} from './uhr';\nimport {WidgetPrototype} from './widget/widget-prototype';\nimport {autodetectThemes} from './theme-autodetector';\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n const widget: JQueryUI.Widget;\n}\n\n// First things first: discover included themes and register them\nautodetectThemes();\n\nconst widgetPrototype: WidgetPrototype = {\n options: {\n width: '100%',\n status: 'on',\n language: 'de_CH',\n theme: Globals.getFirstTheme().styleClass,\n force: false,\n controls: true,\n cookiePath: undefined,\n autoresize: true,\n mode: 'normal'\n },\n start: function (): void {\n this._fritteliUhrInstance.start();\n },\n stop: function (): void {\n this._fritteliUhrInstance.stop();\n },\n toggle: function (): void {\n this._fritteliUhrInstance.toggle();\n },\n language: function (key: string): void {\n this._fritteliUhrInstance.setLayout(key);\n },\n theme: function (styleClass: string): void {\n this._fritteliUhrInstance.setTheme(styleClass);\n },\n time: function (time: Date): void {\n this._fritteliUhrInstance.setTime(time);\n },\n mode: function (mode: string): void {\n this._fritteliUhrInstance.setMode(mode);\n },\n width: function (width: string): void {\n this._fritteliUhrInstance.setWidth(width);\n },\n // constructor method\n _create: function (): void {\n this._fritteliUhrInstance = new Uhr(this);\n },\n // destructor method\n _destroy: function (): void {\n this._fritteliUhrInstance.destroy();\n },\n _fritteliUhrInstance: null\n};\n$.widget('fritteli.uhr', widgetPrototype);\n\n$.fritteli.uhr.register = Globals.registerLayout;\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/header.ts b/header.ts
new file mode 100644
index 0000000..dd9e597
--- /dev/null
+++ b/header.ts
@@ -0,0 +1,14 @@
+/*
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+ */
diff --git a/package-lock.json b/package-lock.json
index bb57b81..8573d84 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1970,6 +1970,12 @@
"rimraf": "^2.6.1"
}
},
+ "eslint-plugin-header": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-header/-/eslint-plugin-header-3.0.0.tgz",
+ "integrity": "sha512-OIu2ciVW8jK4Ove4JHm1I7X0C98PZuLCyCsoUhAm2HpyGS+zr34qLM6iV06unnDvssvvEh5BkOfaLRF+N7cGoQ==",
+ "dev": true
+ },
"eslint-scope": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz",
diff --git a/package.json b/package.json
index e4d59a8..707109c 100644
--- a/package.json
+++ b/package.json
@@ -44,6 +44,7 @@
"css-loader": "2.1.1",
"eslint": "5.16.0",
"eslint-loader": "2.1.2",
+ "eslint-plugin-header": "^3.0.0",
"extract-loader": "3.1.0",
"file-loader": "3.0.1",
"mini-css-extract-plugin": "0.6.0",
diff --git a/src/bundle.ts b/src/bundle.ts
index 6b81707..c5aa678 100644
--- a/src/bundle.ts
+++ b/src/bundle.ts
@@ -13,6 +13,9 @@
along with this program. If not, see .
*/
+
+// We just need to reference all required files at least once, so that the tree-shaker won't remove them from
+// the bundle.
import * as uhr from './index';
import {LayoutDe} from './layout/layout-de';
import {LayoutDeCh} from './layout/layout-de_ch';
@@ -25,8 +28,8 @@ import {LayoutIt} from './layout/layout-it';
import {LayoutNl} from './layout/layout-nl';
import {LayoutPt} from './layout/layout-pt';
-// We just need to reference all required files at least once, so that the tree-shaker won't remove them from
-// the bundle.
+/*eslint @typescript-eslint/no-unused-vars: "warn"*/
+
let a = uhr;
a = LayoutDeCh;
a = LayoutDeChGenau;
diff --git a/src/uhr.ts b/src/uhr.ts
index 43ab4af..5ff9c46 100644
--- a/src/uhr.ts
+++ b/src/uhr.ts
@@ -13,6 +13,7 @@
along with this program. If not, see .
*/
+/*eslint no-undef: "warn"*/
import WidgetCommonProperties = JQueryUI.WidgetCommonProperties;
import {EMPTY_LAYOUT, Layout} from './domain/layout';
import {CookieHandler} from './cookie-handler';
@@ -24,7 +25,6 @@ import {WidgetPrototype} from './widget/widget-prototype';
declare var $: JQueryStatic;
export class Uhr {
-
private timer: number = null;
private currentMinute: number = null;
private renderer: UhrRenderer;