{"version":3,"sources":["webpack://uhr/webpack/bootstrap","webpack://uhr/external \"Cookies\"","webpack://uhr/external \"jQuery\"","webpack://uhr/./src/domain/globals.ts","webpack://uhr/./src/domain/layout.ts","webpack://uhr/./src/domain/letter.ts","webpack://uhr/./src/renderer.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","Cookies","jQuery","Globals","registerTheme","styleClass","themes","some","console","log","push","hasThemes","length","hasMultipleThemes","getFirstTheme","getTheme","index","getThemes","registerLayout","layout","layouts","element","code","prettyName","error","sort","a","b","localeCompare","hasLayouts","hasMultipleLayouts","getFirstLayout","getLayouts","EMPTY_LAYOUT","hours","letters","minutes","permanent","version","Letter","style","this","addStyle","toString","renderer_UhrRendererV2Delegate","UhrRendererV2Delegate","parse","forEach","lineString","line","parseArrayOrObject","seconds","parseTimeDefinition","parseObject","keys","map","Number","y","x","input","_this","Array","isArray","item","definition","listString","timeValues","split","highlightLetters","timeValue","vorne0","3","4","5","6","7","8","9","hinten0","vorne1","hinten1","vorne2","hinten2","vorne3","hinten3","vorne4","hinten4","vorne5","hinten5","hinten6","hinten7","hinten8","hinten9","0","1","2","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59","UhrRenderer","renderarea","render","beforeshow","undefined","parsed","warn","parsedLayout","writable","configurable","fadeOut","empty","array","letter","append","fadeIn","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 = Cookies;","module.exports = jQuery;","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout} from './layout';\nimport {Theme} from './theme';\n\nexport class Globals {\n private static layouts: Layout[] = [];\n private static themes: Theme[] = [];\n\n static registerTheme(name: string, styleClass: string): void {\n if (Globals.themes.some(value => value.name === name)) {\n console.log(`Theme with name '${name}' already registered; ignoring register request for styleClass '${styleClass}'.`)\n } else {\n Globals.themes.push({\n name,\n styleClass\n });\n }\n }\n\n static hasThemes(): boolean {\n return Globals.themes.length > 0;\n }\n\n static hasMultipleThemes(): boolean {\n return Globals.themes.length > 1;\n }\n\n static getFirstTheme(): Theme {\n return Globals.getTheme(0);\n }\n\n static getTheme(index: number): Theme {\n return Globals.themes[index];\n }\n\n static getThemes(): Theme[] {\n return Globals.themes;\n }\n\n static registerLayout(layout: Layout): void {\n const available = !Globals.layouts.some(element => {\n if (layout.code === element.code) {\n if (layout.prettyName !== element.prettyName) {\n console.error(\n `Error: Language code '${layout.code}' cannot be registered for layout '${layout.prettyName}' because it is already registered for layout '${element.prettyName}'!`\n );\n }\n return true;\n }\n return false;\n }\n );\n if (available) {\n Globals.layouts.push(layout);\n Globals.layouts.sort((a, b) => a.prettyName.localeCompare(b.prettyName));\n }\n }\n\n static hasLayouts(): boolean {\n return Globals.layouts.length > 0;\n }\n\n static hasMultipleLayouts(): boolean {\n return Globals.layouts.length > 1;\n }\n\n static getFirstLayout(): Layout {\n return Globals.layouts[0];\n }\n\n static getLayouts(): Layout[] {\n return Globals.layouts;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Letter} from './letter';\n\nexport interface Layout {\n readonly code: string;\n getCoarseMinute?: (time: Date) => number;\n getDotMinute?: (time: Date) => number;\n getHour?: (time: Date) => number;\n getSeconds?: (time: Date) => number;\n readonly hours: TimeDefinition;\n readonly letters: string[];\n readonly minutes: TimeDefinition;\n parsed?: Letter[][];\n readonly permanent: WordDefinition | WordDefinition[];\n readonly prettyName: string;\n seconds?: TimeDefinition;\n readonly version: number;\n}\n\nexport interface WordDefinition {\n [line: number]: number[];\n}\n\nexport interface TimeDefinition {\n [values: string]: WordDefinition | WordDefinition[];\n}\n\nexport const EMPTY_LAYOUT: Layout = {\n code: null,\n hours: null,\n letters: [],\n minutes: null,\n permanent: [],\n prettyName: null,\n version: 2\n};\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\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 * as Cookies from 'js-cookie';\nimport {EMPTY_LAYOUT, Layout} from './domain/layout';\nimport {Globals} from './domain/globals';\nimport {UhrRenderer} from './renderer';\nimport {WidgetPrototype} from './widget/widget-prototype';\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 {Layout} from './domain/layout';\nimport {Uhr} from './uhr';\nimport {WidgetPrototype} from './widget/widget-prototype';\nimport {autodetectThemes} from './theme-autodetector';\n\n// First things first: discover included themes and register them\nautodetectThemes();\n\n$.widget('fritteli.uhr', {\n options: {\n width: '100%',\n status: 'on',\n language: 'de_CH',\n theme: Globals.getFirstTheme().styleClass,\n force: false,\n controls: true,\n cookiePath: undefined,\n autoresize: true,\n mode: 'normal'\n },\n start: function () {\n this.__fritteli_uhr_instance.start();\n },\n stop: function () {\n this.__fritteli_uhr_instance.stop();\n },\n toggle: function () {\n this.__fritteli_uhr_instance.toggle();\n },\n language: function (key: string) {\n this.__fritteli_uhr_instance.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":""}