diff --git a/.eslintrc.json b/.eslintrc.json
index 0c1e6d1..84a88dd 100644
--- a/.eslintrc.json
+++ b/.eslintrc.json
@@ -18,6 +18,7 @@
"enforce-trailing-newline": true
}
],
+ "sort-imports": "warn",
"member-ordering": [
true,
{
diff --git a/dist/lib/layout_de.js b/dist/lib/layout_de.js
new file mode 100644
index 0000000..45e58c1
--- /dev/null
+++ b/dist/lib/layout_de.js
@@ -0,0 +1,2 @@
+var uhr=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}return 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",function(){return l});var n={4:[8,9,10,11]},u={4:[1,2,3]},o={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,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":{3:[1,2,3,4,5,6,7,8,9,10,11]},"50,51,52,53,54":[f,u],"55,56,57,58,59":[i,u]},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
new file mode 100644
index 0000000..5aa2129
--- /dev/null
+++ b/dist/lib/layout_de.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack://uhr/webpack/bootstrap","webpack://uhr/./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":"oBACA,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,QA0DA,OArDAF,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,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","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 = 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_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
diff --git a/dist/lib/layout_de_ch.js b/dist/lib/layout_de_ch.js
new file mode 100644
index 0000000..3170e97
--- /dev/null
+++ b/dist/lib/layout_de_ch.js
@@ -0,0 +1,2 @@
+var uhr=function(e){var r={};function t(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,t),o.l=!0,o.exports}return t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:n})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,r){if(1&r&&(e=t(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(t.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var o in e)t.d(n,o,function(r){return e[r]}.bind(null,o));return n},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},t.p="",t(t.s=2)}({2:function(e,r,t){"use strict";t.r(r),t.d(r,"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)}});
+//# 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
new file mode 100644
index 0000000..6c17d93
--- /dev/null
+++ b/dist/lib/layout_de_ch.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack://uhr/webpack/bootstrap","webpack://uhr/./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":"oBACA,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,QA0DA,OArDAF,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 = 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_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
diff --git a/dist/lib/layout_de_ch_genau.js b/dist/lib/layout_de_ch_genau.js
new file mode 100644
index 0000000..7a9f0d6
--- /dev/null
+++ b/dist/lib/layout_de_ch_genau.js
@@ -0,0 +1,2 @@
+var uhr=function(e){var r={};function t(n){if(r[n])return r[n].exports;var u=r[n]={i:n,l:!1,exports:{}};return e[n].call(u.exports,u,u.exports,t),u.l=!0,u.exports}return t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:n})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,r){if(1&r&&(e=t(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(t.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var u in e)t.d(n,u,function(r){return e[r]}.bind(null,u));return n},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},t.p="",t(t.s=3)}({3:function(e,r,t){"use strict";t.r(r),t.d(r,"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)}});
+//# 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
new file mode 100644
index 0000000..cfeb775
--- /dev/null
+++ b/dist/lib/layout_de_ch_genau.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack://uhr/webpack/bootstrap","webpack://uhr/./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 = 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 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
diff --git a/dist/lib/layout_dk.js b/dist/lib/layout_dk.js
new file mode 100644
index 0000000..28720a1
--- /dev/null
+++ b/dist/lib/layout_dk.js
@@ -0,0 +1,2 @@
+var uhr=function(e){var r={};function t(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,t),o.l=!0,o.exports}return t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:n})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,r){if(1&r&&(e=t(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(t.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var o in e)t.d(n,o,function(r){return e[r]}.bind(null,o));return n},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},t.p="",t(t.s=5)}({5:function(e,r,t){"use strict";t.r(r),t.d(r,"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]},a={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":[i,n,u],"10,11,12,13,14":[f,n,u],"15,16,17,18,19":[l,u],"20,21,22,23,24":[a,n,u],"25,26,27,28,29":[i,n,o,c],"30,31,32,33,34":[c],"35,36,37,38,39":[i,n,u,c],"40,41,42,43,44":[a,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
new file mode 100644
index 0000000..c250159
--- /dev/null
+++ b/dist/lib/layout_dk.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack://uhr/webpack/bootstrap","webpack://uhr/./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
diff --git a/dist/lib/layout_en.js b/dist/lib/layout_en.js
new file mode 100644
index 0000000..779e545
--- /dev/null
+++ b/dist/lib/layout_en.js
@@ -0,0 +1,2 @@
+var uhr=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}return 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=6)}({6:function(e,t,r){"use strict";r.r(t),r.d(t,"Layout_en",function(){return a});var n={4:[10,11]},u={5:[1,2,3,4]},o={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":[o,u],"10,11,12,13,14":[i,u],"15,16,17,18,19":[f,u],"20,21,22,23,24":[l,u],"25,26,27,28,29":[c,u],"30,31,32,33,34":[{4:[1,2,3,4]},u],"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":[o,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
new file mode 100644
index 0000000..bd3d39d
--- /dev/null
+++ b/dist/lib/layout_en.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack://uhr/webpack/bootstrap","webpack://uhr/./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
diff --git a/dist/lib/layout_es.js b/dist/lib/layout_es.js
new file mode 100644
index 0000000..9be23f2
--- /dev/null
+++ b/dist/lib/layout_es.js
@@ -0,0 +1,2 @@
+var uhr=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}return 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=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]},u={7:[6]},o={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]},a={8:[2,3,4,5,6,7]},c={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":[u,i],"10,11,12,13,14":[u,f],"15,16,17,18,19":[u,l],"20,21,22,23,24":[u,a],"25,26,27,28,29":[u,c],"30,31,32,33,34":[u,{10:[1,2,3,4,5]}],"35,36,37,38,39":[o,c],"40,41,42,43,44":[o,a],"45,46,47,48,49":[o,l],"50,51,52,53,54":[o,f],"55,56,57,58,59":[o,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
new file mode 100644
index 0000000..a0fe28f
--- /dev/null
+++ b/dist/lib/layout_es.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack://uhr/webpack/bootstrap","webpack://uhr/./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
diff --git a/dist/lib/layout_fr.js b/dist/lib/layout_fr.js
new file mode 100644
index 0000000..b14311e
--- /dev/null
+++ b/dist/lib/layout_fr.js
@@ -0,0 +1,2 @@
+var uhr=function(e){var r={};function t(n){if(r[n])return r[n].exports;var u=r[n]={i:n,l:!1,exports:{}};return e[n].call(u.exports,u,u.exports,t),u.l=!0,u.exports}return t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:n})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,r){if(1&r&&(e=t(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(t.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var u in e)t.d(n,u,function(r){return e[r]}.bind(null,u));return n},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},t.p="",t(t.s=8)}({8:function(e,r,t){"use strict";t.r(r),t.d(r,"Layout_fr",function(){return s});var n={8:[1,2]},u={7:[1,2,3,4,5]},o={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 r=e.getHours();return e.getMinutes()>=35?(r+1)%24:r},hours:{0:{5:[6,7,8,9,10,11]},"1,13":[{3:[5,6,7]},o],"2,14":[{1:[8,9,10,11]},o],"3,15":[{2:[7,8,9,10,11]},o],"4,16":[{2:[1,2,3,4,5,6]},o],"5,17":[{4:[8,9,10,11]},o],"6,18":[{4:[5,6,7]},o],"7,19":[{3:[8,9,10,11]},o],"8,20":[{4:[1,2,3,4]},o],"9,21":[{3:[1,2,3,4]},o],"10,22":[{5:[3,4,5]},o],"11,23":[{6:[1,2,3,4]},o],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":[u,l],"40,41,42,43,44":[u,c],"45,46,47,48,49":[u,{7:[7,8]},a],"50,51,52,53,54":[u,f],"55,56,57,58,59":[u,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
new file mode 100644
index 0000000..5017f87
--- /dev/null
+++ b/dist/lib/layout_fr.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack://uhr/webpack/bootstrap","webpack://uhr/./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
diff --git a/dist/lib/layout_it.js b/dist/lib/layout_it.js
new file mode 100644
index 0000000..4caa97e
--- /dev/null
+++ b/dist/lib/layout_it.js
@@ -0,0 +1,2 @@
+var uhr=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}return 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=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]},u={8:[1]},o={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":[u,i],"10,11,12,13,14":[u,f],"15,16,17,18,19":[u,l],"20,21,22,23,24":[u,a],"25,26,27,28,29":[u,c],"30,31,32,33,34":[u,{10:[7,8,9,10,11]}],"35,36,37,38,39":[o,c],"40,41,42,43,44":[o,a],"45,46,47,48,49":[o,l],"50,51,52,53,54":[o,f],"55,56,57,58,59":[o,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
new file mode 100644
index 0000000..ec07da9
--- /dev/null
+++ b/dist/lib/layout_it.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack://uhr/webpack/bootstrap","webpack://uhr/./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
diff --git a/dist/lib/layout_nl.js b/dist/lib/layout_nl.js
new file mode 100644
index 0000000..57e6f44
--- /dev/null
+++ b/dist/lib/layout_nl.js
@@ -0,0 +1,2 @@
+var uhr=function(e){var r={};function t(n){if(r[n])return r[n].exports;var u=r[n]={i:n,l:!1,exports:{}};return e[n].call(u.exports,u,u.exports,t),u.l=!0,u.exports}return t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:n})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,r){if(1&r&&(e=t(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(t.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var u in e)t.d(n,u,function(r){return e[r]}.bind(null,u));return n},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},t.p="",t(t.s=10)}({10:function(e,r,t){"use strict";t.r(r),t.d(r,"Layout_nl",function(){return a});var n={3:[1,2,3,4]},u={2:[8,9,10,11]},o={4:[1,2,3,4]},i={1:[8,9,10,11]},f={2:[1,2,3,4]},l={3:[7,8,9,10,11]},a={code:"nl",getHour:function(e){var r=e.getHours();return e.getMinutes()>=20?(r+1)%24:r},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,u,o],"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":[f,n,o],"45,46,47,48,49":[l,{5:[1,2,3,4]}],"50,51,52,53,54":[f,u],"55,56,57,58,59":[i,u]},permanent:{1:[1,2,3,5,6]},prettyName:"Nederlands",version:2};$.fritteli.uhr.register(a)}});
+//# 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
new file mode 100644
index 0000000..a2a614d
--- /dev/null
+++ b/dist/lib/layout_nl.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack://uhr/webpack/bootstrap","webpack://uhr/./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
diff --git a/dist/lib/layout_pt.js b/dist/lib/layout_pt.js
new file mode 100644
index 0000000..8ecd4f1
--- /dev/null
+++ b/dist/lib/layout_pt.js
@@ -0,0 +1,2 @@
+var uhr=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}return 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)}});
+//# 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
new file mode 100644
index 0000000..c7e6b2a
--- /dev/null
+++ b/dist/lib/layout_pt.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack://uhr/webpack/bootstrap","webpack://uhr/./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
diff --git a/dist/lib/uhr.bundle.js b/dist/lib/uhr.bundle.js
new file mode 100644
index 0000000..e559ef5
--- /dev/null
+++ b/dist/lib/uhr.bundle.js
@@ -0,0 +1,2 @@
+var uhr=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}return 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=jQuery},function(t,e){t.exports=Cookies},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_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_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=n(0);var r=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}(),s=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}(),a={code:null,hours:null,letters:[],minutes:null,permanent:[],prettyName:null,version:2},h=n(1),c=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.parseHash(),this.setupHTML(),this.wireFunctionality(),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.setCookie("uhr-status","on"))},t.prototype.stop=function(){this.isOn()&&(window.clearInterval(this.timer),this.timer=null,this.update(),this.setCookie("uhr-status","off"))},t.prototype.toggle=function(){this.isOn()?this.stop():this.start()},t.prototype.setLanguage=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.setCookie("uhr-language",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.setCookie("uhr-theme",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.setCookie("uhr-mode",t)},t.prototype.setWidth=function(t){var e=this.widgetInstance.element;e.css("width",t);var n=e.width();e.width(n),e.height(n),e.css("font-size",n/40+"px")},t.prototype.setupHTML=function(){var t=this,e=this.widgetInstance.element;if(e.addClass("uhr").empty().append('').append('').append('').append('').append('
').append(''),this.setWidth(this.widgetInstance.options.width),this.widgetInstance.options.controls){var n=$(''),o=$('');n.append(o);var r=$('');r.append(''),r.append(''),o.append(r);var s=$('');if(s.append(''),s.append(''),o.append(s),i.hasMultipleLayouts()){var u=$('');i.getLayouts().forEach(function(t){u.append('")}),o.append(u)}if(i.hasMultipleThemes()){var a=$('');i.getThemes().forEach(function(t){a.append('")}),o.append(a)}var h=$('');h.on("click",function(){return $("#uhr-controlpanel"+t.widgetInstance.uuid).hide("fast")}),o.append(h),e.after(n),n.hide();var c=$('');c.on({click:function(){return t.toggleConfigScreen()}}),e.after(c)}},t.prototype.wireFunctionality=function(){var t=this,e=$("#uhr-onoffswitch-checkbox"+this.widgetInstance.uuid);e.on({click:function(){return t.toggle()}});var n=this.getCookie("uhr-status");(void 0===n||this.widgetInstance.options.force)&&(n=this.widgetInstance.options.status),e.prop("checked","on"===n),"on"===n?this.start():this.stop();var o=$("#uhr-modeswitch-checkbox"+this.widgetInstance.uuid);o.on({click:function(){"seconds"===t.widgetInstance.options.mode?t.setMode("normal"):t.setMode("seconds")}});var r=this.getCookie("uhr-mode");(void 0===r||this.widgetInstance.options.force)&&(r=this.widgetInstance.options.mode),o.prop("checked","seconds"!==r),"seconds"===r?this.setMode("seconds"):this.setMode("normal");var s=$("#uhr-languagechooser"+this.widgetInstance.uuid);s.on({change:function(){var e=$("#uhr-languagechooser"+t.widgetInstance.uuid).val();t.setLanguage(e)}});var u=this.getCookie("uhr-language");(void 0===u||this.widgetInstance.options.force)&&(u=this.widgetInstance.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.widgetInstance.options.language="",this.setLanguage(u);var c=$("#uhr-themechooser"+this.widgetInstance.uuid);c.on({change:function(){var e=$("#uhr-themechooser"+t.widgetInstance.uuid).val();t.setTheme(e)}});var d=this.getCookie("uhr-theme");if((void 0===d||this.widgetInstance.options.force)&&(d=this.widgetInstance.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.widgetInstance.options.theme="",this.setTheme(d),this.widgetInstance.options.autoresize&&$(window).on({resize:function(){var e=t.widgetInstance.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.isOn=function(){return null!==this.timer},t.prototype.getCookie=function(t){return h.get(t+this.widgetInstance.uuid)},t.prototype.setCookie=function(t,e){var n;n=void 0!==this.widgetInstance.options.cookiePath?{expires:365,path:this.widgetInstance.options.cookiePath}:{expires:365},h.set(t+this.widgetInstance.uuid,e,n)},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.toggleConfigScreen=function(){$("#uhr-controlpanel"+this.widgetInstance.uuid).toggle("fast")},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]:a},t}();o("link[rel=stylesheet]").each(function(t,e){var n=o(e),r=n.attr("data-class");if(void 0!==r){var s=n.attr("data-name");void 0===s&&(s=r),i.registerTheme(s,r)}}),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.setLanguage(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 c(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);i.Layout_de_CH,o.Layout_de_CH_genau,r.Layout_de,s.Layout_dk,u.Layout_en,a.Layout_es,h.Layout_fr,c.Layout_it,d.Layout_nl,l.Layout_pt}]);
+//# 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
new file mode 100644
index 0000000..8d6064b
--- /dev/null
+++ b/dist/lib/uhr.bundle.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack://uhr/webpack/bootstrap","webpack://uhr/external \"jQuery\"","webpack://uhr/external \"Cookies\"","webpack://uhr/./src/layout/layout-de_ch.ts","webpack://uhr/./src/layout/layout-de_ch_genau.ts","webpack://uhr/./src/layout/layout-de.ts","webpack://uhr/./src/layout/layout-dk.ts","webpack://uhr/./src/layout/layout-en.ts","webpack://uhr/./src/layout/layout-es.ts","webpack://uhr/./src/layout/layout-fr.ts","webpack://uhr/./src/layout/layout-it.ts","webpack://uhr/./src/layout/layout-nl.ts","webpack://uhr/./src/layout/layout-pt.ts","webpack://uhr/./src/domain/globals.ts","webpack://uhr/./src/domain/letter.ts","webpack://uhr/./src/renderer.ts","webpack://uhr/./src/domain/layout.ts","webpack://uhr/./src/uhr.ts","webpack://uhr/./src/theme-autodetector.ts","webpack://uhr/./src/index.ts","webpack://uhr/./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","jQuery","Cookies","__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","Layout_de_CH_genau","0","Layout_de","nach","halb","fuenf","zehn","zwanzig","0,1,2,3,4","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","Letter","style","this","addStyle","toString","renderer_UhrRendererV2Delegate","UhrRendererV2Delegate","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","UhrRenderer","renderarea","render","beforeshow","undefined","parsed","warn","parsedLayout","writable","configurable","fadeOut","empty","array","letter","append","fadeIn","EMPTY_LAYOUT","uhr_Uhr","Uhr","widgetInstance","timer","currentMinute","userTime","options","Date","parseHash","setupHTML","wireFunctionality","setTime","destroy","window","clearInterval","removeAttr","uuid","remove","start","isOn","setInterval","update","setCookie","stop","toggle","setLanguage","language","getCurrentLayout","find","setTheme","theme","removeClass","addClass","setMode","setWidth","width","css","realWidth","height","controls","controlpanel","content","toggleSwitch","modeSwitch","languageChooser_1","themeChooser_1","closebutton","on","hide","after","configlink","click","toggleConfigScreen","status","getCookie","force","prop","languageChooser","change","languageKey","val","selectedLayout","found","fallbackLanguage","themeChooser","themeKey","selectedTheme","fallbackTheme","autoresize","resize","$parent","parent","$window","parentWidth","parentHeight","windowWidth","windowHeight","size","Math","min","cookieName","external_Cookies_","cookieValue","cookiePath","expires","path","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_ch__WEBPACK_IMPORTED_MODULE_1__","_layout_layout_de_ch_genau__WEBPACK_IMPORTED_MODULE_2__","_layout_layout_de__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 = jQuery;","module.exports = Cookies;","/*\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 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 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\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 UhrRendererV2Delegate {\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': [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten0],\n '1': [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten1],\n '2': [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten2],\n '3': [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten3],\n '4': [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten4],\n '5': [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten5],\n '6': [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten6],\n '7': [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten7],\n '8': [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten8],\n '9': [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten9],\n '10': [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten0],\n '11': [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten1],\n '12': [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten2],\n '13': [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten3],\n '14': [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten4],\n '15': [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten5],\n '16': [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten6],\n '17': [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten7],\n '18': [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten8],\n '19': [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten9],\n '20': [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten0],\n '21': [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten1],\n '22': [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten2],\n '23': [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten3],\n '24': [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten4],\n '25': [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten5],\n '26': [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten6],\n '27': [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten7],\n '28': [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten8],\n '29': [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten9],\n '30': [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten0],\n '31': [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten1],\n '32': [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten2],\n '33': [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten3],\n '34': [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten4],\n '35': [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten5],\n '36': [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten6],\n '37': [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten7],\n '38': [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten8],\n '39': [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten9],\n '40': [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten0],\n '41': [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten1],\n '42': [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten2],\n '43': [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten3],\n '44': [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten4],\n '45': [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten5],\n '46': [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten6],\n '47': [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten7],\n '48': [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten8],\n '49': [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten9],\n '50': [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten0],\n '51': [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten1],\n '52': [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten2],\n '53': [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten3],\n '54': [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten4],\n '55': [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten5],\n '56': [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten6],\n '57': [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten7],\n '58': [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten8],\n '59': [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.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', UhrRendererV2Delegate.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 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 UhrRenderer {\n constructor(private layout: Layout, private renderarea: any/*FIXME any: jQuery-wrapped HTML element*/) {\n }\n\n render(beforeshow?: () => void): void {\n if (this.layout.parsed === undefined) {\n if (this.layout.version === 2) {\n const delegate: UhrRendererV2Delegate = new UhrRendererV2Delegate(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 {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 {WidgetPrototype} from './widget/widget-prototype';\nimport {Globals} from './domain/globals';\nimport {UhrRenderer} from './renderer';\nimport {EMPTY_LAYOUT, Layout} from './domain/layout';\nimport * as Cookies from 'js-cookie';\n\nexport class Uhr {\n\n private timer: number = null;\n private currentMinute: number = null;\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.parseHash();\n this.setupHTML();\n this.wireFunctionality();\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.setCookie('uhr-status', '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.setCookie('uhr-status', 'off');\n }\n }\n\n toggle(): void {\n if (this.isOn()) {\n this.stop();\n } else {\n this.start();\n }\n }\n\n setLanguage(key: string): void {\n if (key !== this.widgetInstance.options.language) {\n this.widgetInstance.options.language = key;\n const renderer = new UhrRenderer(this.getCurrentLayout(), this.widgetInstance.element.find('.letterarea'));\n renderer.render(() => {\n this.currentMinute = -1;\n this.update();\n });\n this.setCookie('uhr-language', 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.setCookie('uhr-theme', 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.setCookie('uhr-mode', mode);\n }\n\n setWidth(width: string): void {\n const e = this.widgetInstance.element;\n e.css('width', width);\n const realWidth = e.width();\n e.width(realWidth);\n e.height(realWidth);\n e.css('font-size', (realWidth / 40) + 'px');\n }\n\n private setupHTML(): void {\n const e: JQuery = this.widgetInstance.element;\n // Base clock area\n e.addClass('uhr')\n .empty()\n .append('')\n .append('')\n .append('')\n .append('')\n .append('')\n .append('');\n\n this.setWidth(this.widgetInstance.options.width);\n\n if (this.widgetInstance.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 = $(``);\n //FIXME deprecated?!\n closebutton.on('click', () => $(`#uhr-controlpanel${this.widgetInstance.uuid}`).hide('fast'));\n content.append(closebutton);\n e.after(controlpanel);\n controlpanel.hide();\n const configlink = $(``);\n configlink.on({click: () => this.toggleConfigScreen()});\n e.after(configlink);\n }\n };\n\n private wireFunctionality(): void {\n // on/off switch\n const toggleSwitch = $(`#uhr-onoffswitch-checkbox${this.widgetInstance.uuid}`);\n toggleSwitch.on({click: () => this.toggle()});\n let status = this.getCookie('uhr-status');\n if (status === undefined || this.widgetInstance.options.force) {\n status = this.widgetInstance.options.status;\n }\n toggleSwitch.prop('checked', status === 'on');\n if (status === 'on') {\n this.start();\n } else {\n this.stop();\n }\n\n // time mode switch\n const modeSwitch = $(`#uhr-modeswitch-checkbox${this.widgetInstance.uuid}`);\n modeSwitch.on({\n click: () => {\n if (this.widgetInstance.options.mode === 'seconds') {\n this.setMode('normal');\n } else {\n this.setMode('seconds');\n }\n }\n });\n\n let mode = this.getCookie('uhr-mode');\n if (mode === undefined || this.widgetInstance.options.force) {\n mode = this.widgetInstance.options.mode;\n }\n modeSwitch.prop('checked', mode !== 'seconds');\n if (mode === 'seconds') {\n this.setMode('seconds');\n } else {\n this.setMode('normal');\n }\n\n // language chooser\n const languageChooser = $(`#uhr-languagechooser${this.widgetInstance.uuid}`);\n languageChooser.on({\n change: () => {\n const languageKey = $(`#uhr-languagechooser${this.widgetInstance.uuid}`).val() as string;\n this.setLanguage(languageKey);\n }\n });\n let selectedLayout = this.getCookie('uhr-language');\n if (selectedLayout === undefined || this.widgetInstance.options.force) {\n selectedLayout = this.widgetInstance.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.widgetInstance.options.language = '';\n this.setLanguage(selectedLayout);\n\n // theme chooser\n const themeChooser = $(`#uhr-themechooser${this.widgetInstance.uuid}`);\n themeChooser.on({\n change: () => {\n const themeKey = $(`#uhr-themechooser${this.widgetInstance.uuid}`).val() as string;\n this.setTheme(themeKey);\n }\n });\n let selectedTheme = this.getCookie('uhr-theme');\n if (selectedTheme === undefined || this.widgetInstance.options.force) {\n selectedTheme = this.widgetInstance.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.widgetInstance.options.theme = '';\n this.setTheme(selectedTheme);\n if (this.widgetInstance.options.autoresize) {\n $(window).on({\n resize: () => {\n const $e: JQuery = this.widgetInstance.element;\n const $parent: JQuery = $e.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 isOn(): boolean {\n return this.timer !== null;\n }\n\n private getCookie(cookieName: string): string {\n return Cookies.get(cookieName + this.widgetInstance.uuid);\n }\n\n private setCookie(cookieName: string, cookieValue: string): void {\n let options;\n if (this.widgetInstance.options.cookiePath !== undefined) {\n options = {expires: 365, path: this.widgetInstance.options.cookiePath};\n } else {\n options = {expires: 365};\n }\n Cookies.set(cookieName + this.widgetInstance.uuid, cookieValue, options);\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 toggleConfigScreen() {\n $(`#uhr-controlpanel${this.widgetInstance.uuid}`).toggle('fast');\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 {autodetectThemes} from './theme-autodetector';\nimport {Uhr} from './uhr';\nimport {WidgetPrototype} from './widget/widget-prototype';\nimport {Layout} from './domain/layout';\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.setLanguage(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_CH} from './layout/layout-de_ch';\nimport {Layout_de_CH_genau} from './layout/layout-de_ch_genau';\nimport {Layout_de} from './layout/layout-de';\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
diff --git a/dist/lib/uhr.js b/dist/lib/uhr.js
new file mode 100644
index 0000000..ebcb5b9
--- /dev/null
+++ b/dist/lib/uhr.js
@@ -0,0 +1,2 @@
+var uhr=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}return 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=jQuery},1:function(t,e){t.exports=Cookies},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=n(0);var s=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}(),r=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}(),h={code:null,hours:null,letters:[],minutes:null,permanent:[],prettyName:null,version:2},u=n(1),c=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.parseHash(),this.setupHTML(),this.wireFunctionality(),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.setCookie("uhr-status","on"))},t.prototype.stop=function(){this.isOn()&&(window.clearInterval(this.timer),this.timer=null,this.update(),this.setCookie("uhr-status","off"))},t.prototype.toggle=function(){this.isOn()?this.stop():this.start()},t.prototype.setLanguage=function(t){var e=this;t!==this.widgetInstance.options.language&&(this.widgetInstance.options.language=t,new a(this.getCurrentLayout(),this.widgetInstance.element.find(".letterarea")).render(function(){e.currentMinute=-1,e.update()}),this.setCookie("uhr-language",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.setCookie("uhr-theme",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.setCookie("uhr-mode",t)},t.prototype.setWidth=function(t){var e=this.widgetInstance.element;e.css("width",t);var n=e.width();e.width(n),e.height(n),e.css("font-size",n/40+"px")},t.prototype.setupHTML=function(){var t=this,e=this.widgetInstance.element;if(e.addClass("uhr").empty().append('').append('').append('').append('').append('').append(''),this.setWidth(this.widgetInstance.options.width),this.widgetInstance.options.controls){var n=$(''),o=$('');n.append(o);var s=$('');s.append(''),s.append(''),o.append(s);var r=$('');if(r.append(''),r.append(''),o.append(r),i.hasMultipleLayouts()){var a=$('');i.getLayouts().forEach(function(t){a.append('")}),o.append(a)}if(i.hasMultipleThemes()){var h=$('');i.getThemes().forEach(function(t){h.append('")}),o.append(h)}var u=$('');u.on("click",function(){return $("#uhr-controlpanel"+t.widgetInstance.uuid).hide("fast")}),o.append(u),e.after(n),n.hide();var c=$('');c.on({click:function(){return t.toggleConfigScreen()}}),e.after(c)}},t.prototype.wireFunctionality=function(){var t=this,e=$("#uhr-onoffswitch-checkbox"+this.widgetInstance.uuid);e.on({click:function(){return t.toggle()}});var n=this.getCookie("uhr-status");(void 0===n||this.widgetInstance.options.force)&&(n=this.widgetInstance.options.status),e.prop("checked","on"===n),"on"===n?this.start():this.stop();var o=$("#uhr-modeswitch-checkbox"+this.widgetInstance.uuid);o.on({click:function(){"seconds"===t.widgetInstance.options.mode?t.setMode("normal"):t.setMode("seconds")}});var s=this.getCookie("uhr-mode");(void 0===s||this.widgetInstance.options.force)&&(s=this.widgetInstance.options.mode),o.prop("checked","seconds"!==s),"seconds"===s?this.setMode("seconds"):this.setMode("normal");var r=$("#uhr-languagechooser"+this.widgetInstance.uuid);r.on({change:function(){var e=$("#uhr-languagechooser"+t.widgetInstance.uuid).val();t.setLanguage(e)}});var a=this.getCookie("uhr-language");(void 0===a||this.widgetInstance.options.force)&&(a=this.widgetInstance.options.language);var h=i.getLayouts().some(function(t){return a===t.code});if(!h){var u=void 0;u=i.hasLayouts()?i.getFirstLayout().code:"",console.warn("Language '"+a+"' not found! Using fallback '"+u+"'."),a=u}r.val(a),this.widgetInstance.options.language="",this.setLanguage(a);var c=$("#uhr-themechooser"+this.widgetInstance.uuid);c.on({change:function(){var e=$("#uhr-themechooser"+t.widgetInstance.uuid).val();t.setTheme(e)}});var d=this.getCookie("uhr-theme");if((void 0===d||this.widgetInstance.options.force)&&(d=this.widgetInstance.options.theme),!(h=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.widgetInstance.options.theme="",this.setTheme(d),this.widgetInstance.options.autoresize&&$(window).on({resize:function(){var e=t.widgetInstance.element.parent(),n=$(window),i=e.width(),o=e.height(),s=n.width(),r=n.height(),a=Math.min(i,o,s,r)+"px";t.setWidth(a)}})},t.prototype.isOn=function(){return null!==this.timer},t.prototype.getCookie=function(t){return u.get(t+this.widgetInstance.uuid)},t.prototype.setCookie=function(t,e){var n;n=void 0!==this.widgetInstance.options.cookiePath?{expires:365,path:this.widgetInstance.options.cookiePath}:{expires:365},u.set(t+this.widgetInstance.uuid,e,n)},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.toggleConfigScreen=function(){$("#uhr-controlpanel"+this.widgetInstance.uuid).toggle("fast")},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]:h},t}();o("link[rel=stylesheet]").each(function(t,e){var n=o(e),s=n.attr("data-class");if(void 0!==s){var r=n.attr("data-name");void 0===r&&(r=s),i.registerTheme(r,s)}}),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.setLanguage(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 c(this)},_destroy:function(){this.__fritteli_uhr_instance.destroy()},__fritteli_uhr_instance:null}),$.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
new file mode 100644
index 0000000..09c7612
--- /dev/null
+++ b/dist/lib/uhr.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack://uhr/webpack/bootstrap","webpack://uhr/external \"jQuery\"","webpack://uhr/external \"Cookies\"","webpack://uhr/./src/domain/globals.ts","webpack://uhr/./src/domain/letter.ts","webpack://uhr/./src/renderer.ts","webpack://uhr/./src/domain/layout.ts","webpack://uhr/./src/uhr.ts","webpack://uhr/./src/theme-autodetector.ts","webpack://uhr/./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","jQuery","Cookies","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","Letter","style","this","addStyle","toString","renderer_UhrRendererV2Delegate","UhrRendererV2Delegate","parse","letters","forEach","lineString","line","parseArrayOrObject","permanent","seconds","parseTimeDefinition","minutes","hours","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","UhrRenderer","renderarea","render","beforeshow","undefined","parsed","version","warn","parsedLayout","writable","configurable","fadeOut","empty","array","letter","append","fadeIn","EMPTY_LAYOUT","uhr_Uhr","Uhr","widgetInstance","timer","currentMinute","userTime","options","time","Date","parseHash","setupHTML","wireFunctionality","setTime","destroy","window","clearInterval","removeAttr","$","uuid","remove","start","isOn","setInterval","update","setCookie","stop","toggle","setLanguage","language","getCurrentLayout","find","setTheme","theme","removeClass","addClass","setMode","setWidth","width","e","css","realWidth","height","controls","controlpanel","content","toggleSwitch","modeSwitch","languageChooser_1","themeChooser_1","closebutton","on","hide","after","configlink","click","toggleConfigScreen","status","getCookie","force","prop","languageChooser","change","languageKey","val","selectedLayout","found","fallbackLanguage","themeChooser","themeKey","selectedTheme","fallbackTheme","autoresize","resize","$parent","parent","$window","parentWidth","parentHeight","windowWidth","windowHeight","size","Math","min","cookieName","external_Cookies_","cookieValue","cookiePath","expires","path","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","uhr","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 = jQuery;","module.exports = Cookies;","/*\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\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 UhrRendererV2Delegate {\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': [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten0],\n '1': [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten1],\n '2': [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten2],\n '3': [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten3],\n '4': [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten4],\n '5': [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten5],\n '6': [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten6],\n '7': [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten7],\n '8': [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten8],\n '9': [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten9],\n '10': [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten0],\n '11': [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten1],\n '12': [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten2],\n '13': [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten3],\n '14': [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten4],\n '15': [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten5],\n '16': [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten6],\n '17': [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten7],\n '18': [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten8],\n '19': [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten9],\n '20': [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten0],\n '21': [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten1],\n '22': [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten2],\n '23': [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten3],\n '24': [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten4],\n '25': [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten5],\n '26': [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten6],\n '27': [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten7],\n '28': [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten8],\n '29': [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten9],\n '30': [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten0],\n '31': [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten1],\n '32': [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten2],\n '33': [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten3],\n '34': [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten4],\n '35': [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten5],\n '36': [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten6],\n '37': [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten7],\n '38': [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten8],\n '39': [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten9],\n '40': [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten0],\n '41': [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten1],\n '42': [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten2],\n '43': [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten3],\n '44': [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten4],\n '45': [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten5],\n '46': [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten6],\n '47': [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten7],\n '48': [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten8],\n '49': [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten9],\n '50': [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten0],\n '51': [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten1],\n '52': [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten2],\n '53': [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten3],\n '54': [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten4],\n '55': [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten5],\n '56': [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten6],\n '57': [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten7],\n '58': [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten8],\n '59': [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.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', UhrRendererV2Delegate.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 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 UhrRenderer {\n constructor(private layout: Layout, private renderarea: any/*FIXME any: jQuery-wrapped HTML element*/) {\n }\n\n render(beforeshow?: () => void): void {\n if (this.layout.parsed === undefined) {\n if (this.layout.version === 2) {\n const delegate: UhrRendererV2Delegate = new UhrRendererV2Delegate(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 {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 {WidgetPrototype} from './widget/widget-prototype';\nimport {Globals} from './domain/globals';\nimport {UhrRenderer} from './renderer';\nimport {EMPTY_LAYOUT, Layout} from './domain/layout';\nimport * as Cookies from 'js-cookie';\n\nexport class Uhr {\n\n private timer: number = null;\n private currentMinute: number = null;\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.parseHash();\n this.setupHTML();\n this.wireFunctionality();\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.setCookie('uhr-status', '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.setCookie('uhr-status', 'off');\n }\n }\n\n toggle(): void {\n if (this.isOn()) {\n this.stop();\n } else {\n this.start();\n }\n }\n\n setLanguage(key: string): void {\n if (key !== this.widgetInstance.options.language) {\n this.widgetInstance.options.language = key;\n const renderer = new UhrRenderer(this.getCurrentLayout(), this.widgetInstance.element.find('.letterarea'));\n renderer.render(() => {\n this.currentMinute = -1;\n this.update();\n });\n this.setCookie('uhr-language', 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.setCookie('uhr-theme', 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.setCookie('uhr-mode', mode);\n }\n\n setWidth(width: string): void {\n const e = this.widgetInstance.element;\n e.css('width', width);\n const realWidth = e.width();\n e.width(realWidth);\n e.height(realWidth);\n e.css('font-size', (realWidth / 40) + 'px');\n }\n\n private setupHTML(): void {\n const e: JQuery = this.widgetInstance.element;\n // Base clock area\n e.addClass('uhr')\n .empty()\n .append('')\n .append('')\n .append('')\n .append('')\n .append('')\n .append('');\n\n this.setWidth(this.widgetInstance.options.width);\n\n if (this.widgetInstance.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 = $(``);\n //FIXME deprecated?!\n closebutton.on('click', () => $(`#uhr-controlpanel${this.widgetInstance.uuid}`).hide('fast'));\n content.append(closebutton);\n e.after(controlpanel);\n controlpanel.hide();\n const configlink = $(``);\n configlink.on({click: () => this.toggleConfigScreen()});\n e.after(configlink);\n }\n };\n\n private wireFunctionality(): void {\n // on/off switch\n const toggleSwitch = $(`#uhr-onoffswitch-checkbox${this.widgetInstance.uuid}`);\n toggleSwitch.on({click: () => this.toggle()});\n let status = this.getCookie('uhr-status');\n if (status === undefined || this.widgetInstance.options.force) {\n status = this.widgetInstance.options.status;\n }\n toggleSwitch.prop('checked', status === 'on');\n if (status === 'on') {\n this.start();\n } else {\n this.stop();\n }\n\n // time mode switch\n const modeSwitch = $(`#uhr-modeswitch-checkbox${this.widgetInstance.uuid}`);\n modeSwitch.on({\n click: () => {\n if (this.widgetInstance.options.mode === 'seconds') {\n this.setMode('normal');\n } else {\n this.setMode('seconds');\n }\n }\n });\n\n let mode = this.getCookie('uhr-mode');\n if (mode === undefined || this.widgetInstance.options.force) {\n mode = this.widgetInstance.options.mode;\n }\n modeSwitch.prop('checked', mode !== 'seconds');\n if (mode === 'seconds') {\n this.setMode('seconds');\n } else {\n this.setMode('normal');\n }\n\n // language chooser\n const languageChooser = $(`#uhr-languagechooser${this.widgetInstance.uuid}`);\n languageChooser.on({\n change: () => {\n const languageKey = $(`#uhr-languagechooser${this.widgetInstance.uuid}`).val() as string;\n this.setLanguage(languageKey);\n }\n });\n let selectedLayout = this.getCookie('uhr-language');\n if (selectedLayout === undefined || this.widgetInstance.options.force) {\n selectedLayout = this.widgetInstance.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.widgetInstance.options.language = '';\n this.setLanguage(selectedLayout);\n\n // theme chooser\n const themeChooser = $(`#uhr-themechooser${this.widgetInstance.uuid}`);\n themeChooser.on({\n change: () => {\n const themeKey = $(`#uhr-themechooser${this.widgetInstance.uuid}`).val() as string;\n this.setTheme(themeKey);\n }\n });\n let selectedTheme = this.getCookie('uhr-theme');\n if (selectedTheme === undefined || this.widgetInstance.options.force) {\n selectedTheme = this.widgetInstance.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.widgetInstance.options.theme = '';\n this.setTheme(selectedTheme);\n if (this.widgetInstance.options.autoresize) {\n $(window).on({\n resize: () => {\n const $e: JQuery = this.widgetInstance.element;\n const $parent: JQuery = $e.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 isOn(): boolean {\n return this.timer !== null;\n }\n\n private getCookie(cookieName: string): string {\n return Cookies.get(cookieName + this.widgetInstance.uuid);\n }\n\n private setCookie(cookieName: string, cookieValue: string): void {\n let options;\n if (this.widgetInstance.options.cookiePath !== undefined) {\n options = {expires: 365, path: this.widgetInstance.options.cookiePath};\n } else {\n options = {expires: 365};\n }\n Cookies.set(cookieName + this.widgetInstance.uuid, cookieValue, options);\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 toggleConfigScreen() {\n $(`#uhr-controlpanel${this.widgetInstance.uuid}`).toggle('fast');\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 {autodetectThemes} from './theme-autodetector';\nimport {Uhr} from './uhr';\nimport {WidgetPrototype} from './widget/widget-prototype';\nimport {Layout} from './domain/layout';\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.setLanguage(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
diff --git a/dist/uhr.js b/dist/uhr.js
deleted file mode 100644
index ec3f793..0000000
--- a/dist/uhr.js
+++ /dev/null
@@ -1,2 +0,0 @@
-var uhr=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}return 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=10)}({0:function(t,e){t.exports=jQuery},1:function(t,e){t.exports=Cookies},10: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&&(console.error("Error: Language code '"+e.code+"' cannot be registered for layout '"+e.prettyName+"' \n 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=n(0);var s=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}(),r=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}(),u={code:null,hours:null,letters:[],minutes:null,permanent:[],prettyName:null,version:2},h=n(1),c=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.parseHash(),this.setupHTML(),this.wireFunctionality(),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.setCookie("uhr-status","on"))},t.prototype.stop=function(){this.isOn()&&(window.clearInterval(this.timer),this.timer=null,this.update(),this.setCookie("uhr-status","off"))},t.prototype.toggle=function(){this.isOn()?this.stop():this.start()},t.prototype.setLanguage=function(t){var e=this;t!==this.widgetInstance.options.language&&(this.widgetInstance.options.language=t,new a(this.getCurrentLayout(),this.widgetInstance.element.find(".letterarea")).render(function(){e.currentMinute=-1,e.update()}),this.setCookie("uhr-language",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.setCookie("uhr-theme",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.setCookie("uhr-mode",t)},t.prototype.setWidth=function(t){var e=this.widgetInstance.element;e.css("width",t);var n=e.width();e.width(n),e.height(n),e.css("font-size",n/40+"px")},t.prototype.setupHTML=function(){var t=this,e=this.widgetInstance.element;if(e.addClass("uhr").empty().append('').append('').append('').append('').append('').append(''),this.setWidth(this.widgetInstance.options.width),this.widgetInstance.options.controls){var n=$(''),o=$('');n.append(o);var s=$('');s.append(''),s.append(''),o.append(s);var r=$('');if(r.append(''),r.append(''),o.append(r),i.hasMultipleLayouts()){var a=$('');i.getLayouts().forEach(function(t){a.append('")}),o.append(a)}if(i.hasMultipleThemes()){var u=$('');i.getThemes().forEach(function(t){u.append('")}),o.append(u)}var h=$('');h.on("click",function(){return $("#uhr-controlpanel"+t.widgetInstance.uuid).hide("fast")}),o.append(h),e.after(n),n.hide();var c=$('');c.on({click:function(){return t.toggleConfigScreen()}}),e.after(c)}},t.prototype.wireFunctionality=function(){var t=this,e=$("#uhr-onoffswitch-checkbox"+this.widgetInstance.uuid);e.on({click:function(){return t.toggle()}});var n=this.getCookie("uhr-status");(void 0===n||this.widgetInstance.options.force)&&(n=this.widgetInstance.options.status),e.prop("checked","on"===n),"on"===n?this.start():this.stop();var o=$("#uhr-modeswitch-checkbox"+this.widgetInstance.uuid);o.on({click:function(){"seconds"===t.widgetInstance.options.mode?t.setMode("normal"):t.setMode("seconds")}});var s=this.getCookie("uhr-mode");(void 0===s||this.widgetInstance.options.force)&&(s=this.widgetInstance.options.mode),o.prop("checked","seconds"!==s),"seconds"===s?this.setMode("seconds"):this.setMode("normal");var r=$("#uhr-languagechooser"+this.widgetInstance.uuid);r.on({change:function(){var e=$("#uhr-languagechooser"+t.widgetInstance.uuid).val();t.setLanguage(e)}});var a=this.getCookie("uhr-language");(void 0===a||this.widgetInstance.options.force)&&(a=this.widgetInstance.options.language);var u=i.getLayouts().some(function(t){return a===t.code});if(!u){var h=void 0;h=i.hasLayouts()?i.getFirstLayout().code:"",console.warn("Language '"+a+"' not found! Using fallback '"+h+"'."),a=h}r.val(a),this.widgetInstance.options.language="",this.setLanguage(a);var c=$("#uhr-themechooser"+this.widgetInstance.uuid);c.on({change:function(){var e=$("#uhr-themechooser"+t.widgetInstance.uuid).val();t.setTheme(e)}});var d=this.getCookie("uhr-theme");if((void 0===d||this.widgetInstance.options.force)&&(d=this.widgetInstance.options.theme),!(u=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.widgetInstance.options.theme="",this.setTheme(d),this.widgetInstance.options.autoresize&&$(window).on({resize:function(){var e=t.widgetInstance.element.parent(),n=$(window),i=e.width(),o=e.height(),s=n.width(),r=n.height(),a=Math.min(i,o,s,r)+"px";t.setWidth(a)}})},t.prototype.isOn=function(){return null!==this.timer},t.prototype.getCookie=function(t){return h.get(t+this.widgetInstance.uuid)},t.prototype.setCookie=function(t,e){var n;n=void 0!==this.widgetInstance.options.cookiePath?{expires:365,path:this.widgetInstance.options.cookiePath}:{expires:365},h.set(t+this.widgetInstance.uuid,e,n)},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.toggleConfigScreen=function(){$("#uhr-controlpanel"+this.widgetInstance.uuid).toggle("fast")},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]:u},t}(),d={4:[1,2]},l={3:[9,10,11]},p={4:[4,5,6,7,8]},g={1:[9,10,11]},f={2:[9,10,11]},v={2:[1,2,3,4,5,6]},I={3:[1,2,3,4,5,6]},m={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":[g,d],"10,11,12,13,14":[f,d],"15,16,17,18,19":[v,d],"20,21,22,23,24":[I,d],"25,26,27,28,29":[g,l,p],"30,31,32,33,34":p,"35,36,37,38,39":[g,d,p],"40,41,42,43,44":[I,l],"45,46,47,48,49":[v,l],"50,51,52,53,54":[f,l],"55,56,57,58,59":[g,l]},permanent:{1:[1,2,4,5,6,7]},prettyName:"Bärndütsch",version:2},E={4:[4,5]},y={4:[1,2,3]},w={4:[7,8,9,10,11]},T={1:[9,10,11]},N={2:[9,10,11]},O={2:[1,2,3,4,5,6]},C={3:[1,2,3,4,5,6]},S={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":[T,E],"10,11,12,13,14":[N,E],"15,16,17,18,19":[O,E],"20,21,22,23,24":[C,E],"25,26,27,28,29":[T,y,w],"30,31,32,33,34":w,"35,36,37,38,39":[T,E,w],"40,41,42,43,44":[C,y],"45,46,47,48,49":[O,y],"50,51,52,53,54":[N,y],"55,56,57,58,59":[T,y]},permanent:{1:[1,2,4,5,6,7]},prettyName:"Bärndütsch (genau)",version:2},L={4:[8,9,10,11]},M={4:[1,2,3]},A={5:[1,2,3,4]},R={1:[8,9,10,11]},_={2:[1,2,3,4]},H={2:[5,6,7,8,9,10,11]},b={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":[R,L],"10,11,12,13,14":[_,L],"15,16,17,18,19":[{3:[5,6,7,8,9,10,11]},L],"20,21,22,23,24":[H,L],"25,26,27,28,29":[R,M,A],"30,31,32,33,34":A,"35,36,37,38,39":[R,L,A],"40,41,42,43,44":[H,M],"45,46,47,48,49":{3:[1,2,3,4,5,6,7,8,9,10,11]},"50,51,52,53,54":[_,M],"55,56,57,58,59":[R,M]},permanent:{1:[1,2,4,5,6]},prettyName:"Deutsch",version:2},U={4:[4,5,6,7,8,9,10,11]},k={5:[8]},F={5:[4,5,6,7]},V={2:[1,2,3]},D={4:[1,2]},Z={3:[4,5,6,7,8]},x={2:[4,5,6,7]},P={6:[8,9,10,11]},W={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":[V,U,F],"10,11,12,13,14":[D,U,F],"15,16,17,18,19":[Z,F],"20,21,22,23,24":[x,U,F],"25,26,27,28,29":[V,U,k,P],"30,31,32,33,34":[P],"35,36,37,38,39":[V,U,F,P],"40,41,42,43,44":[x,U,k],"45,46,47,48,49":[Z,k],"50,51,52,53,54":[D,U,k],"55,56,57,58,59":[V,U,k]},permanent:{1:[1,2,3,4,5,6,7,9,10]},prettyName:"Dansk",version:2},B={4:[10,11]},j={5:[1,2,3,4]},K={3:[7,8,9,10]},Q={4:[6,7,8]},G={2:[1,3,4,5,6,7,8,9]},Y={3:[1,2,3,4,5,6]},X={3:[1,2,3,4,5,6,7,8,9,10]},z={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":[K,j],"10,11,12,13,14":[Q,j],"15,16,17,18,19":[G,j],"20,21,22,23,24":[Y,j],"25,26,27,28,29":[X,j],"30,31,32,33,34":[{4:[1,2,3,4]},j],"35,36,37,38,39":[X,B],"40,41,42,43,44":[Y,B],"45,46,47,48,49":[G,B],"50,51,52,53,54":[Q,B],"55,56,57,58,59":[K,B]},permanent:{1:[1,2,4,5]},prettyName:"English",version:2},J={1:[2,3,4,6,7,8]},q={7:[6]},tt={7:[7,8,9,10,11]},et={9:[7,8,9,10,11]},nt={8:[8,9,10,11]},it={10:[6,7,8,9,10,11]},ot={8:[2,3,4,5,6,7]},st={9:[1,2,3,4,5,6,7,8,9,10,11]},rt={code:"es",getHour:function(t){var e=t.getHours();return t.getMinutes()>=35?(e+1)%24:e},hours:{"0,12":[J,{7:[1,2,3,4]}],"1,13":[{1:[1,2,6,7]},{1:[9,10,11]}],"2,14":[J,{2:[1,2,3]}],"3,15":[J,{2:[5,6,7,8]}],"4,16":[J,{3:[1,2,3,4,5,6]}],"5,17":[J,{3:[7,8,9,10,11]}],"6,18":[J,{4:[1,2,3,4]}],"7,19":[J,{4:[6,7,8,9,10]}],"8,20":[J,{5:[1,2,3,4]}],"9,21":[J,{5:[5,6,7,8,9]}],"10,22":[J,{6:[3,4,5,6]}],"11,23":[J,{6:[8,9,10,11]}]},letters:["ESONELASUNA","DOSITRESORE","CUATROCINCO","SEISASIETEN","OCHONUEVEYO","LADIEZSONCE","DOCELYMENOS","OVEINTEDIEZ","VEINTICINCO","MEDIACUARTO"],minutes:{"5,6,7,8,9":[q,et],"10,11,12,13,14":[q,nt],"15,16,17,18,19":[q,it],"20,21,22,23,24":[q,ot],"25,26,27,28,29":[q,st],"30,31,32,33,34":[q,{10:[1,2,3,4,5]}],"35,36,37,38,39":[tt,st],"40,41,42,43,44":[tt,ot],"45,46,47,48,49":[tt,it],"50,51,52,53,54":[tt,nt],"55,56,57,58,59":[tt,et]},permanent:null,prettyName:"Español",version:2},at={8:[1,2]},ut={7:[1,2,3,4,5]},ht={6:[6,7,8,9,10,11]},ct={9:[7,8,9,10]},dt={7:[9,10,11]},lt={8:[4,5,6,7,8]},pt={9:[1,2,3,4,5]},gt={9:[1,2,3,4,5,6,7,8,9,10]},ft={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]},ht],"2,14":[{1:[8,9,10,11]},ht],"3,15":[{2:[7,8,9,10,11]},ht],"4,16":[{2:[1,2,3,4,5,6]},ht],"5,17":[{4:[8,9,10,11]},ht],"6,18":[{4:[5,6,7]},ht],"7,19":[{3:[8,9,10,11]},ht],"8,20":[{4:[1,2,3,4]},ht],"9,21":[{3:[1,2,3,4]},ht],"10,22":[{5:[3,4,5]},ht],"11,23":[{6:[1,2,3,4]},ht],12:{5:[1,2,3,4]}},letters:["ILNESTODEUX","QUATRETROIS","NEUFUNESEPT","HUITSIXCINQ","MIDIXMINUIT","ONZERHEURES","MOINSOLEDIX","ETRQUARTPMD","VINGT-CINQU","ETSDEMIEPAM"],minutes:{"5,6,7,8,9":ct,"10,11,12,13,14":dt,"15,16,17,18,19":[at,lt],"20,21,22,23,24":pt,"25,26,27,28,29":gt,"30,31,32,33,34":[at,{10:[4,5,6,7,8]}],"35,36,37,38,39":[ut,gt],"40,41,42,43,44":[ut,pt],"45,46,47,48,49":[ut,{7:[7,8]},lt],"50,51,52,53,54":[ut,dt],"55,56,57,58,59":[ut,ct]},permanent:{1:[1,2,4,5,6]},prettyName:"Français",version:2},vt={1:[1,2,3,4,6,7]},It={8:[1]},mt={7:[8,9,10,11]},Et={9:[6,7,8,9,10,11]},yt={10:[1,2,3,4,5]},wt={8:[3,4,6,7,8,9,10,11]},Tt={9:[1,2,3,4,5]},Nt={9:[1,2,3,4,5,6,7,8,9,10,11]},Ot={code:"it",getHour:function(t){var e=t.getHours();return t.getMinutes()>=35?(e+1)%24:e},hours:{"0,12":[vt,{5:[1,2,3,4,5,6]}],"1,13":[{2:[1,3,4]},{2:[5,6,7]}],"2,14":[vt,{2:[9,10,11]}],"3,15":[vt,{3:[1,2,3]}],"4,16":[vt,{6:[1,2,3,4,5,6,7]}],"5,17":[vt,{7:[1,2,3,4,5,6]}],"6,18":[vt,{6:[9,10,11]}],"7,19":[vt,{5:[7,8,9,10,11]}],"8,20":[vt,{3:[4,5,6,7]}],"9,21":[vt,{3:[8,9,10,11]}],"10,22":[vt,{4:[1,2,3,4,5]}],"11,23":[vt,{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":[It,Et],"10,11,12,13,14":[It,yt],"15,16,17,18,19":[It,wt],"20,21,22,23,24":[It,Tt],"25,26,27,28,29":[It,Nt],"30,31,32,33,34":[It,{10:[7,8,9,10,11]}],"35,36,37,38,39":[mt,Nt],"40,41,42,43,44":[mt,Tt],"45,46,47,48,49":[mt,wt],"50,51,52,53,54":[mt,yt],"55,56,57,58,59":[mt,Et]},permanent:null,prettyName:"Italiano",version:2},Ct={3:[1,2,3,4]},St={2:[8,9,10,11]},Lt={4:[1,2,3,4]},Mt={1:[8,9,10,11]},At={2:[1,2,3,4]},Rt={3:[7,8,9,10,11]},_t={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":[Mt,Ct],"10,11,12,13,14":[At,Ct],"15,16,17,18,19":[Rt,{4:[8,9,10,11]}],"20,21,22,23,24":[At,St,Lt],"25,26,27,28,29":[Mt,St,Lt],"30,31,32,33,34":Lt,"35,36,37,38,39":[Mt,Ct,Lt],"40,41,42,43,44":[At,Ct,Lt],"45,46,47,48,49":[Rt,{5:[1,2,3,4]}],"50,51,52,53,54":[At,St],"55,56,57,58,59":[Mt,St]},permanent:{1:[1,2,3,5,6]},prettyName:"Nederlands",version:2},Ht={1:[1]},bt={1:[2,3,4]},Ut={7:[8]},kt={10:[5]},Ft={7:[7,8,9,10,11]},Vt={10:[7,8,9,10,11]},Dt={10:[1,2,3]},Zt={9:[1,2,4,5,6,7,8,9]},$t={8:[1,2,3,4,5]},xt={code:"pt",getHour:function(t){var e=t.getHours();return t.getMinutes()>=35?(e+1)%24:e},hours:{0:[Ht,{6:[2,3,4,5,7,8,9,10,11]}],12:[Ht,{2:[1,2,3,4,6,7,8]}],"1,13":[Ht,{1:[5,6,7]}],"2,14":[bt,{3:[1,2,3,4]}],"3,15":[bt,{1:[8,9,10,11]}],"4,16":[bt,{4:[1,2,3,4,5,6]}],"5,17":[bt,{5:[1,2,3,4,5]}],"6,18":[bt,{3:[4,5,6,7]}],"7,19":[bt,{3:[7,8,9,10]}],"8,20":[bt,{5:[5,6,7,8]}],"9,21":[bt,{4:[8,9,10,11]}],"10,22":[bt,{2:[9,10,11]}],"11,23":[bt,{5:[8,9,10,11]}]},letters:["ÉSÃOUMATRÊS","MEIOLDIADEZ","DUASEISETEY","QUATROHNOVE","CINCOITONZE","ZMEIALNOITE","HORASYMENOS","VINTECAMEIA","UMVQUARTOPM","DEZOEYCINCO"],minutes:{"5,6,7,8,9":[Ut,Vt],"10,11,12,13,14":[Ut,Dt],"15,16,17,18,19":[Ut,Zt],"20,21,22,23,24":[Ut,$t],"25,26,27,28,29":[Ut,$t,kt,Vt],"30,31,32,33,34":[Ut,{8:[8,9,10,11]}],"35,36,37,38,39":[Ft,$t,kt,Vt],"40,41,42,43,44":[Ft,$t],"45,46,47,48,49":[Ft,Zt],"50,51,52,53,54":[Ft,Dt],"55,56,57,58,59":[Ft,Vt]},permanent:null,prettyName:"Português",version:2};o("link[rel=stylesheet]").each(function(t,e){var n=o(e),s=n.attr("data-class");if(void 0!==s){var r=n.attr("data-name");void 0===r&&(r=s),i.registerTheme(r,s)}}),i.hasThemes()||i.registerTheme("",""),i.registerLayout(m),i.registerLayout(S),i.registerLayout(b),i.registerLayout(W),i.registerLayout(z),i.registerLayout(rt),i.registerLayout(ft),i.registerLayout(Ot),i.registerLayout(_t),i.registerLayout(xt),$.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.setLanguage(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 c(this)},_destroy:function(){this.__fritteli_uhr_instance.destroy()},__fritteli_uhr_instance:null}),$.fritteli.uhr.register=i.registerLayout}});
-//# sourceMappingURL=uhr.js.map
\ No newline at end of file
diff --git a/dist/uhr.js.map b/dist/uhr.js.map
deleted file mode 100644
index 17309f2..0000000
--- a/dist/uhr.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["webpack://uhr/webpack/bootstrap","webpack://uhr/external \"jQuery\"","webpack://uhr/external \"Cookies\"","webpack://uhr/./src/domain/globals.ts","webpack://uhr/./src/domain/letter.ts","webpack://uhr/./src/renderer.ts","webpack://uhr/./src/domain/layout.ts","webpack://uhr/./src/uhr.ts","webpack://uhr/./src/layout/layout-de_ch.ts","webpack://uhr/./src/layout/layout-de_ch_genau.ts","webpack://uhr/./src/layout/layout-de.ts","webpack://uhr/./src/layout/layout-dk.ts","webpack://uhr/./src/layout/layout-en.ts","webpack://uhr/./src/layout/layout-es.ts","webpack://uhr/./src/layout/layout-fr.ts","webpack://uhr/./src/layout/layout-it.ts","webpack://uhr/./src/layout/layout-nl.ts","webpack://uhr/./src/layout/layout-pt.ts","webpack://uhr/./src/theme-autodetector.ts","webpack://uhr/./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","jQuery","Cookies","Globals","registerTheme","styleClass","themes","some","console","log","push","hasThemes","length","hasMultipleThemes","getFirstTheme","getTheme","index","getThemes","registerLayout","layout","layouts","element","code","error","prettyName","sort","a","b","localeCompare","hasLayouts","hasMultipleLayouts","getFirstLayout","getLayouts","Letter","style","this","addStyle","toString","renderer_UhrRendererV2Delegate","UhrRendererV2Delegate","parse","letters","forEach","lineString","line","parseArrayOrObject","permanent","seconds","parseTimeDefinition","minutes","hours","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","UhrRenderer","renderarea","render","beforeshow","undefined","parsed","version","warn","parsedLayout","writable","configurable","fadeOut","empty","array","letter","append","fadeIn","EMPTY_LAYOUT","uhr_Uhr","Uhr","widgetInstance","timer","currentMinute","userTime","options","time","Date","parseHash","setupHTML","wireFunctionality","setTime","destroy","window","clearInterval","removeAttr","$","uuid","remove","start","isOn","setInterval","update","setCookie","stop","toggle","setLanguage","language","getCurrentLayout","find","setTheme","theme","removeClass","addClass","setMode","setWidth","width","e","css","realWidth","height","controls","controlpanel","content","toggleSwitch","modeSwitch","languageChooser_1","themeChooser_1","closebutton","on","hide","after","configlink","click","toggleConfigScreen","status","getCookie","force","prop","languageChooser","change","languageKey","val","selectedLayout","found","fallbackLanguage","themeChooser","themeKey","selectedTheme","fallbackTheme","autoresize","resize","$parent","parent","$window","parentWidth","parentHeight","windowWidth","windowHeight","size","Math","min","cookieName","external_Cookies_","cookieValue","cookiePath","expires","path","getMinutes","show","clear","second","getSecond","dotMinute","getDotMinute","hour","getHour","coarseMinute","getCoarseMinute","highlight","itemClass","getSeconds","date","getHours","hash","location","charAt","substring","decodeURIComponent","pair","matchingLanguages","filter","ab","vor","haubi","fuef","zae","viertu","zwaenzg","Layout_de_CH","0,12","1,13","2,14","3,15","4,16","5,17","6,18","7,19","8,20","9,21","10,22","11,23","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","layout_de_ch_genau_ab","layout_de_ch_genau_vor","layout_de_ch_genau_haubi","layout_de_ch_genau_fuef","layout_de_ch_genau_zae","layout_de_ch_genau_viertu","layout_de_ch_genau_zwaenzg","Layout_de_CH_genau","nach","layout_de_vor","halb","fuenf","zehn","zwanzig","Layout_de","0,1,2,3,4","minutter","over","fem","ti","kvart","tyve","halv","Layout_dk","to","past","five","ten","a_quarter","twenty","twentyfive","Layout_en","son_las","menos","cinco","diez","cuarto","veinte","veinticinco","Layout_es","et","moins","heures","cinq","dix","quart","vingt","vingtcinq","Layout_fr","sono_le","layout_it_e","meno","cinque","dieci","un_quarto","venti","venticinque","Layout_it","over1","voor1","layout_nl_half","vijf","tien","kwart","Layout_nl","e_","sao","e1","e2","layout_pt_menos","layout_pt_cinco","dez","um_quarto","vinte","Layout_pt","external_jQuery_","each","styleSheet","attr","name_1","widget","__fritteli_uhr_instance","_create","_destroy","fritteli","uhr","register"],"mappings":"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","file":"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 = 10);\n","module.exports = jQuery;","module.exports = Cookies;","/*\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 console.error(\n `Error: Language code '${layout.code}' cannot be registered for layout '${layout.prettyName}' \n because it is already registered for layout '${element.prettyName}'!`\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\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 UhrRendererV2Delegate {\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': [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten0],\n '1': [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten1],\n '2': [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten2],\n '3': [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten3],\n '4': [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten4],\n '5': [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten5],\n '6': [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten6],\n '7': [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten7],\n '8': [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten8],\n '9': [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten9],\n '10': [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten0],\n '11': [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten1],\n '12': [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten2],\n '13': [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten3],\n '14': [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten4],\n '15': [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten5],\n '16': [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten6],\n '17': [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten7],\n '18': [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten8],\n '19': [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten9],\n '20': [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten0],\n '21': [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten1],\n '22': [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten2],\n '23': [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten3],\n '24': [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten4],\n '25': [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten5],\n '26': [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten6],\n '27': [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten7],\n '28': [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten8],\n '29': [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten9],\n '30': [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten0],\n '31': [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten1],\n '32': [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten2],\n '33': [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten3],\n '34': [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten4],\n '35': [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten5],\n '36': [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten6],\n '37': [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten7],\n '38': [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten8],\n '39': [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten9],\n '40': [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten0],\n '41': [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten1],\n '42': [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten2],\n '43': [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten3],\n '44': [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten4],\n '45': [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten5],\n '46': [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten6],\n '47': [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten7],\n '48': [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten8],\n '49': [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten9],\n '50': [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten0],\n '51': [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten1],\n '52': [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten2],\n '53': [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten3],\n '54': [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten4],\n '55': [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten5],\n '56': [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten6],\n '57': [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten7],\n '58': [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten8],\n '59': [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.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', UhrRendererV2Delegate.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 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 UhrRenderer {\n constructor(private layout: Layout, private renderarea: any/*FIXME any: jQuery-wrapped HTML element*/) {\n }\n\n render(beforeshow?: () => void): void {\n if (this.layout.parsed === undefined) {\n if (this.layout.version === 2) {\n const delegate: UhrRendererV2Delegate = new UhrRendererV2Delegate(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 {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 {WidgetPrototype} from './widget/widget-prototype';\nimport {Globals} from './domain/globals';\nimport {UhrRenderer} from './renderer';\nimport {EMPTY_LAYOUT, Layout} from './domain/layout';\nimport * as Cookies from 'js-cookie';\n\nexport class Uhr {\n\n private timer: number = null;\n private currentMinute: number = null;\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.parseHash();\n this.setupHTML();\n this.wireFunctionality();\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.setCookie('uhr-status', '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.setCookie('uhr-status', 'off');\n }\n }\n\n toggle(): void {\n if (this.isOn()) {\n this.stop();\n } else {\n this.start();\n }\n }\n\n setLanguage(key: string): void {\n if (key !== this.widgetInstance.options.language) {\n this.widgetInstance.options.language = key;\n const renderer = new UhrRenderer(this.getCurrentLayout(), this.widgetInstance.element.find('.letterarea'));\n renderer.render(() => {\n this.currentMinute = -1;\n this.update();\n });\n this.setCookie('uhr-language', 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.setCookie('uhr-theme', 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.setCookie('uhr-mode', mode);\n }\n\n setWidth(width: string): void {\n const e = this.widgetInstance.element;\n e.css('width', width);\n const realWidth = e.width();\n e.width(realWidth);\n e.height(realWidth);\n e.css('font-size', (realWidth / 40) + 'px');\n }\n\n private setupHTML(): void {\n const e: JQuery = this.widgetInstance.element;\n // Base clock area\n e.addClass('uhr')\n .empty()\n .append('')\n .append('')\n .append('')\n .append('')\n .append('')\n .append('');\n\n this.setWidth(this.widgetInstance.options.width);\n\n if (this.widgetInstance.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 = $(``);\n //FIXME deprecated?!\n closebutton.on('click', () => $(`#uhr-controlpanel${this.widgetInstance.uuid}`).hide('fast'));\n content.append(closebutton);\n e.after(controlpanel);\n controlpanel.hide();\n const configlink = $(``);\n configlink.on({click: () => this.toggleConfigScreen()});\n e.after(configlink);\n }\n };\n\n private wireFunctionality(): void {\n // on/off switch\n const toggleSwitch = $(`#uhr-onoffswitch-checkbox${this.widgetInstance.uuid}`);\n toggleSwitch.on({click: () => this.toggle()});\n let status = this.getCookie('uhr-status');\n if (status === undefined || this.widgetInstance.options.force) {\n status = this.widgetInstance.options.status;\n }\n toggleSwitch.prop('checked', status === 'on');\n if (status === 'on') {\n this.start();\n } else {\n this.stop();\n }\n\n // time mode switch\n const modeSwitch = $(`#uhr-modeswitch-checkbox${this.widgetInstance.uuid}`);\n modeSwitch.on({\n click: () => {\n if (this.widgetInstance.options.mode === 'seconds') {\n this.setMode('normal');\n } else {\n this.setMode('seconds');\n }\n }\n });\n\n let mode = this.getCookie('uhr-mode');\n if (mode === undefined || this.widgetInstance.options.force) {\n mode = this.widgetInstance.options.mode;\n }\n modeSwitch.prop('checked', mode !== 'seconds');\n if (mode === 'seconds') {\n this.setMode('seconds');\n } else {\n this.setMode('normal');\n }\n\n // language chooser\n const languageChooser = $(`#uhr-languagechooser${this.widgetInstance.uuid}`);\n languageChooser.on({\n change: () => {\n const languageKey = $(`#uhr-languagechooser${this.widgetInstance.uuid}`).val() as string;\n this.setLanguage(languageKey);\n }\n });\n let selectedLayout = this.getCookie('uhr-language');\n if (selectedLayout === undefined || this.widgetInstance.options.force) {\n selectedLayout = this.widgetInstance.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.widgetInstance.options.language = '';\n this.setLanguage(selectedLayout);\n\n // theme chooser\n const themeChooser = $(`#uhr-themechooser${this.widgetInstance.uuid}`);\n themeChooser.on({\n change: () => {\n const themeKey = $(`#uhr-themechooser${this.widgetInstance.uuid}`).val() as string;\n this.setTheme(themeKey);\n }\n });\n let selectedTheme = this.getCookie('uhr-theme');\n if (selectedTheme === undefined || this.widgetInstance.options.force) {\n selectedTheme = this.widgetInstance.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.widgetInstance.options.theme = '';\n this.setTheme(selectedTheme);\n if (this.widgetInstance.options.autoresize) {\n $(window).on({\n resize: () => {\n const $e: JQuery = this.widgetInstance.element;\n const $parent: JQuery = $e.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 isOn(): boolean {\n return this.timer !== null;\n }\n\n private getCookie(cookieName: string): string {\n return Cookies.get(cookieName + this.widgetInstance.uuid);\n }\n\n private setCookie(cookieName: string, cookieValue: string): void {\n let options;\n if (this.widgetInstance.options.cookiePath !== undefined) {\n options = {expires: 365, path: this.widgetInstance.options.cookiePath};\n } else {\n options = {expires: 365};\n }\n Cookies.set(cookieName + this.widgetInstance.uuid, cookieValue, options);\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 toggleConfigScreen() {\n $(`#uhr-controlpanel${this.widgetInstance.uuid}`).toggle('fast');\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 {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 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 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 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 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 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 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 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 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 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 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 {autodetectThemes} from './theme-autodetector';\nimport {Uhr} from './uhr';\nimport {WidgetPrototype} from './widget/widget-prototype';\nimport {Layout} from './domain/layout';\nimport {Layout_de_CH} from './layout/layout-de_ch';\nimport {Layout_de_CH_genau} from './layout/layout-de_ch_genau';\nimport {Layout_de} from './layout/layout-de';\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// First things first: discover included themes and register them\nautodetectThemes();\n\n// Now register some layouts\nGlobals.registerLayout(Layout_de_CH);\nGlobals.registerLayout(Layout_de_CH_genau);\nGlobals.registerLayout(Layout_de);\nGlobals.registerLayout(Layout_dk);\nGlobals.registerLayout(Layout_en);\nGlobals.registerLayout(Layout_es);\nGlobals.registerLayout(Layout_fr);\nGlobals.registerLayout(Layout_it);\nGlobals.registerLayout(Layout_nl);\nGlobals.registerLayout(Layout_pt);\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.setLanguage(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
diff --git a/index.html b/index.html
index dddcf1d..db81447 100644
--- a/index.html
+++ b/index.html
@@ -46,7 +46,17 @@ along with this program. If not, see .
integrity="sha256-T0Vest3yCU7pafRw9r+settMBX6JkKN06dqBnpQ8d30="
crossorigin="anonymous">
-
+
+
+
+
+
+
+
+
+
+
+
-
+
+