From 5420f9c8174f74afafdbdc7fee66ebee26981f60 Mon Sep 17 00:00:00 2001 From: Manuel Friedli Date: Sun, 5 May 2019 01:07:55 +0200 Subject: [PATCH 01/44] Rewrite it in TypeScript; I have no idea if that works. It's still a work-in-progress. --- .editorconfig | 1 + package-lock.json | 2239 ++++++++++++++++++++++++++++++++ package.json | 98 +- src/domain/globals.ts | 87 ++ src/domain/layout.ts | 50 + src/domain/letter.ts | 43 + src/domain/theme.ts | 19 + src/index.d.ts | 11 + src/index.ts | 71 + src/renderer.ts | 322 +++++ src/theme-autodetector.ts | 36 + src/uehrli.ts | 430 ++++++ src/widget/options.ts | 27 + src/widget/widget-prototype.ts | 33 + 14 files changed, 3420 insertions(+), 47 deletions(-) create mode 100644 src/domain/globals.ts create mode 100644 src/domain/layout.ts create mode 100644 src/domain/letter.ts create mode 100644 src/domain/theme.ts create mode 100644 src/index.d.ts create mode 100644 src/index.ts create mode 100644 src/renderer.ts create mode 100644 src/theme-autodetector.ts create mode 100644 src/uehrli.ts create mode 100644 src/widget/options.ts create mode 100644 src/widget/widget-prototype.ts diff --git a/.editorconfig b/.editorconfig index 87a3009..1eaa865 100644 --- a/.editorconfig +++ b/.editorconfig @@ -11,5 +11,6 @@ insert_final_newline = true [*.yml] indent_size = 2 + [*.md] trim_trailing_whitespace = false diff --git a/package-lock.json b/package-lock.json index 7002adf..4ce40ac 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,6 +4,218 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@types/jquery": { + "version": "3.3.29", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/@types/jquery/-/jquery-3.3.29.tgz", + "integrity": "sha1-aAoiGc48klBINyL8z1Vw0eLQir0=", + "dev": true, + "requires": { + "@types/sizzle": "*" + } + }, + "@types/jqueryui": { + "version": "1.12.7", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/@types/jqueryui/-/jqueryui-1.12.7.tgz", + "integrity": "sha1-gVRqc9VGCifZcgCKi9HXOw4nWkg=", + "dev": true, + "requires": { + "@types/jquery": "*" + } + }, + "@types/sizzle": { + "version": "2.3.2", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/@types/sizzle/-/sizzle-2.3.2.tgz", + "integrity": "sha1-qBG4wY4rq6t9VCszZYh64uTZ3kc=", + "dev": true + }, + "@webassemblyjs/ast": { + "version": "1.8.5", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/@webassemblyjs/ast/-/ast-1.8.5.tgz", + "integrity": "sha1-UbHF/mV2o0lTv0slPfnw1JDZ41k=", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.8.5", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz", + "integrity": "sha1-G6kmopI2E+3OSW/VsC6M6KX0lyE=", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.8.5", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz", + "integrity": "sha1-xJ2tIvZFInxe22EL25aX8aq3Ifc=", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.8.5", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz", + "integrity": "sha1-/qk+Qphj3V5DOFVfQikjhaZT8gQ=", + "dev": true + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.8.5", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz", + "integrity": "sha1-mnQP9I4/qjAisd/1RCPfmqKTwl4=", + "dev": true, + "requires": { + "@webassemblyjs/wast-printer": "1.8.5" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.8.5", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz", + "integrity": "sha1-ugt9Oz9+RzPaYFnJMyJ12GBwJFI=", + "dev": true + }, + "@webassemblyjs/helper-module-context": { + "version": "1.8.5", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz", + "integrity": "sha1-3vS5knsBAdyMu9jR7bW3ucguskU=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "mamacro": "^0.0.3" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.8.5", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz", + "integrity": "sha1-U3p1Dt31weky83RCBlUckcG5PmE=", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.8.5", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz", + "integrity": "sha1-dMpqa8vhnlCjtrRihH5pUD5r/L8=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.8.5", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz", + "integrity": "sha1-cSMp2+8kDza/V70ve4+5v0FUQh4=", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.8.5", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/@webassemblyjs/leb128/-/leb128-1.8.5.tgz", + "integrity": "sha1-BE7es06mefPgTNT9mCTV41dnrhA=", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.8.5", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/@webassemblyjs/utf8/-/utf8-1.8.5.tgz", + "integrity": "sha1-qL87XY/+mGx8Hjc8y9wqCRXwztw=", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.8.5", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz", + "integrity": "sha1-li2hKqWswcExyBxCMpkcgs5W4Bo=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/helper-wasm-section": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-opt": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "@webassemblyjs/wast-printer": "1.8.5" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.8.5", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz", + "integrity": "sha1-VIQHZsLBAC62TtGr5yCt7XFPmLw=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.8.5", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz", + "integrity": "sha1-sk2fa6UDlK8TSfUQr6j/y4pj0mQ=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.8.5", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz", + "integrity": "sha1-IVdvDsiLkUJzV7hTY4NmjvfGa40=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.8.5", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz", + "integrity": "sha1-4Q7s1ULQ5705T2gnxJ899tTu+4w=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/floating-point-hex-parser": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-code-frame": "1.8.5", + "@webassemblyjs/helper-fsm": "1.8.5", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.8.5", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz", + "integrity": "sha1-EUu8SB/RDKDiOzVg+oEnSLC65bw=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha1-7vAUoxRa5Hehy8AM0eVSM23Ot5A=", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha1-0pHGpOl5ibXGHZrPOWrk/hM6cY0=", + "dev": true + }, "abbrev": { "version": "1.1.1", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/abbrev/-/abbrev-1.1.1.tgz", @@ -20,6 +232,18 @@ "negotiator": "0.6.2" } }, + "acorn": { + "version": "6.1.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/acorn/-/acorn-6.1.1.tgz", + "integrity": "sha1-fSWuBbuK0fm2mRCOEJTs14hK3B8=", + "dev": true + }, + "acorn-dynamic-import": { + "version": "4.0.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz", + "integrity": "sha1-SCIQFAWCo2uDw+NC4c/ryqkkCUg=", + "dev": true + }, "agent-base": { "version": "4.2.1", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/agent-base/-/agent-base-4.2.1.tgz", @@ -41,6 +265,18 @@ "uri-js": "^4.2.2" } }, + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha1-81mGrOuRr63sQQL72FAUlQzvpk0=", + "dev": true + }, + "ajv-keywords": { + "version": "3.4.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/ajv-keywords/-/ajv-keywords-3.4.0.tgz", + "integrity": "sha1-S4Mee1MUFafMUYzUBOc/YZPGNJ0=", + "dev": true + }, "ansi-colors": { "version": "3.2.3", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/ansi-colors/-/ansi-colors-3.2.3.tgz", @@ -62,6 +298,33 @@ "color-convert": "^1.9.0" } }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha1-vLJLTzeTTZqnrBe0ra+J58du8us=", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha1-aALmJk79GMeQobDVF/DyYnvyyUo=", + "dev": true + }, "argparse": { "version": "1.0.10", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/argparse/-/argparse-1.0.10.tgz", @@ -157,6 +420,17 @@ "safer-buffer": "~2.1.0" } }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha1-ucK/WAXx5kqt7tbfOiv6+1pz9aA=", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, "assert": { "version": "1.4.1", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/assert/-/assert-1.4.1.tgz", @@ -190,6 +464,12 @@ "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", "dev": true }, + "async-each": { + "version": "1.0.3", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha1-tyfb+H12UWAvBvTUrDh/R9kbDL8=", + "dev": true + }, "async-limiter": { "version": "1.0.0", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/async-limiter/-/async-limiter-1.0.0.tgz", @@ -281,6 +561,12 @@ } } }, + "base64-js": { + "version": "1.3.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/base64-js/-/base64-js-1.3.0.tgz", + "integrity": "sha1-yrHmEY8FEJXli1KBrqjBzSK/wOM=", + "dev": true + }, "basic-auth": { "version": "2.0.1", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/basic-auth/-/basic-auth-2.0.1.tgz", @@ -311,6 +597,30 @@ "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=", "dev": true }, + "big.js": { + "version": "5.2.2", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha1-ZfCvOC9Xi83HQr2cKB6cstd2gyg=", + "dev": true + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha1-WYr+VHVbKGilMw0q/51Ou1Mgm2U=", + "dev": true + }, + "bluebird": { + "version": "3.5.4", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/bluebird/-/bluebird-3.5.4.tgz", + "integrity": "sha1-1sxmFZXeMNWzr1/O3TwLPvbsVxQ=", + "dev": true + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha1-LN4J617jQfSEdGuwMJsyU7GxRC8=", + "dev": true + }, "body": { "version": "5.1.0", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/body/-/body-5.1.0.tgz", @@ -362,24 +672,162 @@ } } }, + "brorand": { + "version": "1.1.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, "browser-stdout": { "version": "1.3.1", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/browser-stdout/-/browser-stdout-1.3.1.tgz", "integrity": "sha1-uqVZ7hTO1zRSIputcyZGfGH6vWA=", "dev": true }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha1-Mmc0ZC9APavDADIJhTu3CtQo70g=", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha1-jWR0wbhwv9q807z8wZNKEOlPFfA=", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha1-OvTx9Zg5QDVy8cZiBDdfen9wPpw=", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "dev": true, + "requires": { + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha1-KGlFnZqjviRf6P4sofRuLn9U1z8=", + "dev": true, + "requires": { + "pako": "~1.0.5" + } + }, + "buffer": { + "version": "4.9.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, "buffer-from": { "version": "1.1.1", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/buffer-from/-/buffer-from-1.1.1.tgz", "integrity": "sha1-MnE7wCj3XAL9txDXx7zsHyxgcO8=", "dev": true }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, "bytes": { "version": "1.0.0", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/bytes/-/bytes-1.0.0.tgz", "integrity": "sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g=", "dev": true }, + "cacache": { + "version": "11.3.2", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/cacache/-/cacache-11.3.2.tgz", + "integrity": "sha1-LYHjCOPSWMo4Eltna5iyrJzmm/o=", + "dev": true, + "requires": { + "bluebird": "^3.5.3", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.3", + "graceful-fs": "^4.1.15", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.2", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + }, + "dependencies": { + "glob": { + "version": "7.1.3", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/glob/-/glob-7.1.3.tgz", + "integrity": "sha1-OWCDLT8VdBCDQtr9OmezMsCWnfE=", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, "cache-base": { "version": "1.0.1", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/cache-base/-/cache-base-1.0.1.tgz", @@ -450,6 +898,62 @@ "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", "dev": true }, + "chokidar": { + "version": "2.1.5", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/chokidar/-/chokidar-2.1.5.tgz", + "integrity": "sha1-CuhDTZYigaX1bHKGnnnLbZ2GrU0=", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "dependencies": { + "is-glob": { + "version": "4.0.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha1-dWfb6fL14kZ7x3q4PEopSCQHpdw=", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + } + } + }, + "chownr": { + "version": "1.1.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/chownr/-/chownr-1.1.1.tgz", + "integrity": "sha1-VHJri4//TfBTxCGH6AH7RBLfFJQ=", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz", + "integrity": "sha1-Rakb0sIMlBHwljtarrmhuV4JzEg=", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha1-h2Dk7MJy9MNjUy+SbYdKriwTl94=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, "class-utils": { "version": "0.3.6", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/class-utils/-/class-utils-0.3.6.tgz", @@ -602,6 +1106,12 @@ "integrity": "sha1-1YuytcHuj4ew00ACfp6U4iLFpCI=", "dev": true }, + "commondir": { + "version": "1.0.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, "component-emitter": { "version": "1.3.0", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/component-emitter/-/component-emitter-1.3.0.tgz", @@ -653,12 +1163,32 @@ "date-now": "^0.1.4" } }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, "continuable-cache": { "version": "0.3.1", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/continuable-cache/-/continuable-cache-0.3.1.tgz", "integrity": "sha1-vXJ6f67XfnH/OYWskzUakSczrQ8=", "dev": true }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha1-kilzmMrjSTf8r9bsgTnBgFHwteA=", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, "copy-descriptor": { "version": "0.1.1", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/copy-descriptor/-/copy-descriptor-0.1.1.tgz", @@ -671,6 +1201,43 @@ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha1-yREbbzMEXEaX8UR4f5JUzcd8Rf8=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha1-iJB4rxGmN1a8+1m9IhmWvjqe8ZY=", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha1-aRcMeLOrlXFHsriwRXLkfq0iQ/8=", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, "cross-spawn": { "version": "6.0.5", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/cross-spawn/-/cross-spawn-6.0.5.tgz", @@ -684,6 +1251,25 @@ "which": "^1.2.9" } }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha1-OWz58xN/A+S45TLFj2mCVOAPgOw=", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, "currently-unhandled": { "version": "0.4.1", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/currently-unhandled/-/currently-unhandled-0.4.1.tgz", @@ -693,6 +1279,12 @@ "array-find-index": "^1.0.1" } }, + "cyclist": { + "version": "0.2.2", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/cyclist/-/cyclist-0.2.2.tgz", + "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", + "dev": true + }, "dashdash": { "version": "1.14.1", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/dashdash/-/dashdash-1.14.1.tgz", @@ -819,6 +1411,16 @@ "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", "dev": true }, + "des.js": { + "version": "1.0.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, "destroy": { "version": "1.0.4", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/destroy/-/destroy-1.0.4.tgz", @@ -837,6 +1439,17 @@ "integrity": "sha1-gAwN0eCov7yVg1wgKtIg/jF+WhI=", "dev": true }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha1-QOjumPVaIUlgcUaSHGPhrl89KHU=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, "dom-serializer": { "version": "0.1.1", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/dom-serializer/-/dom-serializer-0.1.1.tgz", @@ -855,6 +1468,12 @@ } } }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha1-PTH1AZGmdJ3RN1p/Ui6CPULlTto=", + "dev": true + }, "domelementtype": { "version": "1.3.1", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/domelementtype/-/domelementtype-1.3.1.tgz", @@ -914,12 +1533,33 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", "dev": true }, + "elliptic": { + "version": "6.4.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/elliptic/-/elliptic-6.4.1.tgz", + "integrity": "sha1-wtC3d2kRuGcixjLDwGxg8vgZk5o=", + "dev": true, + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, "emoji-regex": { "version": "7.0.3", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/emoji-regex/-/emoji-regex-7.0.3.tgz", "integrity": "sha1-kzoEBShgyF6DwSJHnEdIqOTHIVY=", "dev": true }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, "encodeurl": { "version": "1.0.2", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/encodeurl/-/encodeurl-1.0.2.tgz", @@ -935,12 +1575,32 @@ "once": "^1.4.0" } }, + "enhanced-resolve": { + "version": "4.1.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", + "integrity": "sha1-Qcfgv9/nSsH/4eV61qXGyfN0Kn8=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "tapable": "^1.0.0" + } + }, "entities": { "version": "1.0.0", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/entities/-/entities-1.0.0.tgz", "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=", "dev": true }, + "errno": { + "version": "0.1.7", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/errno/-/errno-0.1.7.tgz", + "integrity": "sha1-RoTXF3mtOa8Xfj8AeZb3xnyFJhg=", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, "error": { "version": "7.0.2", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/error/-/error-7.0.2.tgz", @@ -1012,12 +1672,37 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha1-ygODMxD2iJoyZHgaqC5j65z+eEg=", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, "esprima": { "version": "4.0.1", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/esprima/-/esprima-4.0.1.tgz", "integrity": "sha1-E7BM2z5sXRnfkatph6hpVhmwqnE=", "dev": true }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha1-AHo7n9vCs7uH5IeeoZyS/b05Qs8=", + "dev": true, + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, "etag": { "version": "1.8.1", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/etag/-/etag-1.8.1.tgz", @@ -1036,6 +1721,16 @@ "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", "dev": true }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha1-f8vbGY3HGVlDLv4ThCaE4FJaywI=", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, "execa": { "version": "1.0.0", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/execa/-/execa-1.0.0.tgz", @@ -1241,6 +1936,12 @@ "pend": "~1.2.0" } }, + "figgy-pudding": { + "version": "3.5.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/figgy-pudding/-/figgy-pudding-3.5.1.tgz", + "integrity": "sha1-hiRwESkBxyeg5JWoB0S9W6odZ5A=", + "dev": true + }, "figures": { "version": "1.7.0", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/figures/-/figures-1.7.0.tgz", @@ -1289,6 +1990,17 @@ "unpipe": "~1.0.0" } }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha1-jQ+UzRP+Q8bHwmGg2GEVypGMBfc=", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, "find-up": { "version": "1.1.2", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/find-up/-/find-up-1.1.2.tgz", @@ -1359,6 +2071,16 @@ } } }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha1-jdfYc6G6vCB9lOrQwuDkQnbr8ug=", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, "for-in": { "version": "1.0.2", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/for-in/-/for-in-1.0.2.tgz", @@ -1406,6 +2128,16 @@ "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", "dev": true }, + "from2": { + "version": "2.3.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, "fs-extra": { "version": "1.0.0", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/fs-extra/-/fs-extra-1.0.0.tgz", @@ -1417,12 +2149,553 @@ "klaw": "^1.0.0" } }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, + "fsevents": { + "version": "1.2.9", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/fsevents/-/fsevents-1.2.9.tgz", + "integrity": "sha1-P17WZYPM1vQAtaANtvfoYTY+OI8=", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.12.1", + "node-pre-gyp": "^0.12.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "minipass": { + "version": "2.3.5", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.3.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^4.1.0", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "yallist": { + "version": "3.0.3", + "bundled": true, + "dev": true + } + } + }, "function-bind": { "version": "1.1.1", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/function-bind/-/function-bind-1.1.1.tgz", @@ -1500,6 +2773,16 @@ "path-is-absolute": "^1.0.0" } }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, "global-modules": { "version": "1.0.0", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/global-modules/-/global-modules-1.0.0.tgz", @@ -1955,6 +3238,26 @@ } } }, + "hash-base": { + "version": "3.0.4", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha1-C6vKU46NTuSg+JiNaIZlN6ADz0I=", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, "hasha": { "version": "2.2.0", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/hasha/-/hasha-2.2.0.tgz", @@ -1971,6 +3274,17 @@ "integrity": "sha1-hK5l+n6vsWX922FWauFLrwVmTw8=", "dev": true }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, "homedir-polyfill": { "version": "1.0.3", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", @@ -2110,6 +3424,34 @@ "safer-buffer": ">= 2.1.2 < 3" } }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha1-7BaFWOlaoYH9h9N/VcMrvLZwi4Q=", + "dev": true + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha1-VQcL44pZk88Y72236WH1vuXFoJ0=", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, "indent-string": { "version": "2.1.0", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/indent-string/-/indent-string-2.1.0.tgz", @@ -2119,6 +3461,12 @@ "repeating": "^2.0.0" } }, + "indexof": { + "version": "0.0.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, "inflight": { "version": "1.0.6", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/inflight/-/inflight-1.0.6.tgz", @@ -2195,6 +3543,15 @@ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, "is-buffer": { "version": "1.1.6", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/is-buffer/-/is-buffer-1.1.6.tgz", @@ -2504,6 +3861,12 @@ } } }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha1-u4Z8+zRQ5pEHwTHRxRS6s9yLyqk=", + "dev": true + }, "json-schema": { "version": "0.2.3", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/json-schema/-/json-schema-0.2.3.tgz", @@ -2522,6 +3885,15 @@ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", "dev": true }, + "json5": { + "version": "1.0.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/json5/-/json5-1.0.1.tgz", + "integrity": "sha1-d5+wAYYE+oVOrL9iUhgNg1Q+Pb4=", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, "jsonfile": { "version": "2.4.0", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/jsonfile/-/jsonfile-2.4.0.tgz", @@ -2634,6 +4006,23 @@ "strip-bom": "^2.0.0" } }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha1-7UcGa/5TTX6ExMe5mYwqdWB9k1c=", + "dev": true + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha1-H/XcaRHJ8KBiUxpMBLYJQGEIwsc=", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + } + }, "locate-path": { "version": "2.0.0", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/locate-path/-/locate-path-2.0.0.tgz", @@ -2710,6 +4099,33 @@ "signal-exit": "^3.0.0" } }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha1-HaJ+ZxAnGUdpXa9oSOhH8B2EuSA=", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha1-XwMQ4YuL6JjMBwCSlaMK5B6R5vU=", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/pify/-/pify-4.0.1.tgz", + "integrity": "sha1-SyzSXFDVmHNcUCkiJP2MbfQeMjE=", + "dev": true + } + } + }, "make-iterator": { "version": "1.0.1", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/make-iterator/-/make-iterator-1.0.1.tgz", @@ -2719,6 +4135,12 @@ "kind-of": "^6.0.2" } }, + "mamacro": { + "version": "0.0.3", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/mamacro/-/mamacro-0.0.3.tgz", + "integrity": "sha1-rSyVdhl8nxq/MI0Hh4Zb2XWj8+Q=", + "dev": true + }, "map-age-cleaner": { "version": "0.1.3", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", @@ -2788,6 +4210,17 @@ } } }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha1-tdB7jjIW4+J81yjXL3DR5qNCAF8=", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, "mem": { "version": "4.3.0", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/mem/-/mem-4.3.0.tgz", @@ -2799,6 +4232,16 @@ "p-is-promise": "^2.0.0" } }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, "meow": { "version": "3.7.0", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/meow/-/meow-3.7.0.tgz", @@ -2838,6 +4281,16 @@ "to-regex": "^3.0.2" } }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha1-8IA1HIZbDcViqEYpZtqlNUPHik0=", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, "mime": { "version": "1.4.1", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/mime/-/mime-1.4.1.tgz", @@ -2865,6 +4318,18 @@ "integrity": "sha1-ftLCzMyvhNP/y3pptXcR/CCDQBs=", "dev": true }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha1-LhlN4ERibUoQ5/f7wAznPoPk1cc=", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, "minimatch": { "version": "3.0.4", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/minimatch/-/minimatch-3.0.4.tgz", @@ -2880,6 +4345,24 @@ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha1-6goykfl+C16HdrNj1fChLZTGcCI=", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, "mixin-deep": { "version": "1.3.1", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/mixin-deep/-/mixin-deep-1.3.1.tgz", @@ -3072,6 +4555,20 @@ "on-headers": "~1.0.1" } }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, "ms": { "version": "2.0.0", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/ms/-/ms-2.0.0.tgz", @@ -3090,6 +4587,13 @@ "minimatch": "^3.0.0" } }, + "nan": { + "version": "2.13.2", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/nan/-/nan-2.13.2.tgz", + "integrity": "sha1-9R3Hrma6fV1V4ebU2AkugCya7+c=", + "dev": true, + "optional": true + }, "nanomatch": { "version": "1.2.13", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/nanomatch/-/nanomatch-1.2.13.tgz", @@ -3115,6 +4619,12 @@ "integrity": "sha1-/qz3zPUlp3rpY0Q2pkiD/+yjRvs=", "dev": true }, + "neo-async": { + "version": "2.6.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/neo-async/-/neo-async-2.6.0.tgz", + "integrity": "sha1-udFeTXHGdikIZUtRg+04t1M0CDU=", + "dev": true + }, "nice-try": { "version": "1.0.5", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/nice-try/-/nice-try-1.0.5.tgz", @@ -3147,6 +4657,69 @@ "websocket-stream": "^5.0.1" } }, + "node-libs-browser": { + "version": "2.2.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/node-libs-browser/-/node-libs-browser-2.2.0.tgz", + "integrity": "sha1-xy9g2dRt4IqUDe27JfP/ovm7qnc=", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.0", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "0.0.4" + }, + "dependencies": { + "events": { + "version": "3.0.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/events/-/events-3.0.0.tgz", + "integrity": "sha1-mgoN+vYok9krh1uPJpjKQRSXPog=", + "dev": true + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "timers-browserify": { + "version": "2.0.10", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/timers-browserify/-/timers-browserify-2.0.10.tgz", + "integrity": "sha1-HSjj0qrfHVpZlsTp+VYBzQU0gK4=", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "util": { + "version": "0.11.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/util/-/util-0.11.1.tgz", + "integrity": "sha1-MjZzNyDsZLsn9uJvQhqqLhtYjWE=", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + } + } + }, "nopt": { "version": "3.0.6", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/nopt/-/nopt-3.0.6.tgz", @@ -3168,6 +4741,12 @@ "validate-npm-package-license": "^3.0.1" } }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha1-Dc1p/yOhybEf0JeDFmRKA4ghamU=", + "dev": true + }, "npm-run-path": { "version": "2.0.2", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/npm-run-path/-/npm-run-path-2.0.2.tgz", @@ -3327,6 +4906,12 @@ "is-wsl": "^1.1.0" } }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, "os-homedir": { "version": "1.0.2", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/os-homedir/-/os-homedir-1.0.2.tgz", @@ -3417,6 +5002,37 @@ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true }, + "pako": { + "version": "1.0.10", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/pako/-/pako-1.0.10.tgz", + "integrity": "sha1-Qyi621CGpCaqkPVBl31JVdpclzI=", + "dev": true + }, + "parallel-transform": { + "version": "1.1.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/parallel-transform/-/parallel-transform-1.1.0.tgz", + "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", + "dev": true, + "requires": { + "cyclist": "~0.2.2", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "parse-asn1": { + "version": "5.1.4", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/parse-asn1/-/parse-asn1-5.1.4.tgz", + "integrity": "sha1-N/Zij4I/vesic7TVQENKIvPvH8w=", + "dev": true, + "requires": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, "parse-filepath": { "version": "1.0.2", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/parse-filepath/-/parse-filepath-1.0.2.tgz", @@ -3461,6 +5077,18 @@ "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", "dev": true }, + "path-browserify": { + "version": "0.0.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/path-browserify/-/path-browserify-0.0.0.tgz", + "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, "path-exists": { "version": "2.1.0", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/path-exists/-/path-exists-2.1.0.tgz", @@ -3520,6 +5148,19 @@ "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", "dev": true }, + "pbkdf2": { + "version": "3.0.17", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/pbkdf2/-/pbkdf2-3.0.17.tgz", + "integrity": "sha1-l2wgZTBhexTrsyEUI597CTNuk6Y=", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, "pend": { "version": "1.2.0", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/pend/-/pend-1.2.0.tgz", @@ -3578,6 +5219,66 @@ "pinkie": "^2.0.0" } }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha1-J0kCDyOe2ZCIGx9xIQ1R62UjvqM=", + "dev": true, + "requires": { + "find-up": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha1-2+w7OrdZdYBxtY/ln8QYca8hQA4=", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.2.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/p-limit/-/p-limit-2.2.0.tgz", + "integrity": "sha1-QXyZQeYCepq8ulCS3SkE4lW1+8I=", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha1-yyhoVA4xPWHeWPr741zpAE1VQOY=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + } + } + }, "pkg-up": { "version": "2.0.0", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/pkg-up/-/pkg-up-2.0.0.tgz", @@ -3662,6 +5363,12 @@ } } }, + "process": { + "version": "0.11.10", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, "process-nextick-args": { "version": "2.0.0", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/process-nextick-args/-/process-nextick-args-2.0.0.tgz", @@ -3674,18 +5381,44 @@ "integrity": "sha1-foz42PW48jnBvGi+tOt4Vn1XLvg=", "dev": true }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, "proxy-from-env": { "version": "1.0.0", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/proxy-from-env/-/proxy-from-env-1.0.0.tgz", "integrity": "sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4=", "dev": true }, + "prr": { + "version": "1.0.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, "psl": { "version": "1.1.31", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/psl/-/psl-1.1.31.tgz", "integrity": "sha1-6aqG0BAbWxBcvpOsa3hM1UcnYYQ=", "dev": true }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha1-T8ydd6B+SLp1J+fL4N4z0HATMeA=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, "pump": { "version": "3.0.0", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/pump/-/pump-3.0.0.tgz", @@ -3696,6 +5429,29 @@ "once": "^1.3.1" } }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha1-NlE74karJ1cLGjdKXOJ4v9dDcM4=", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/pump/-/pump-2.0.1.tgz", + "integrity": "sha1-Ejma3W5M91Jtlzy8i1zi4pCLOQk=", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, "punycode": { "version": "1.3.2", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/punycode/-/punycode-1.3.2.tgz", @@ -3762,6 +5518,31 @@ "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", "dev": true }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha1-32+ENy8CcNxlzfYpE0mrekc9Tyo=", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha1-ySGW/IarQr6YPxvzF3giSTHWFFg=", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, "range-parser": { "version": "1.2.0", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/range-parser/-/range-parser-1.2.0.tgz", @@ -3822,6 +5603,17 @@ "util-deprecate": "~1.0.1" } }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha1-DodiKjMlqjPokihcr4tOhGUppSU=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, "rechoir": { "version": "0.6.2", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/rechoir/-/rechoir-0.6.2.tgz", @@ -3851,6 +5643,12 @@ "safe-regex": "^1.1.0" } }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, "repeat-element": { "version": "1.1.3", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/repeat-element/-/repeat-element-1.1.3.tgz", @@ -3938,6 +5736,23 @@ "path-parse": "^1.0.6" } }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + } + } + }, "resolve-dir": { "version": "1.0.1", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/resolve-dir/-/resolve-dir-1.0.1.tgz", @@ -4000,6 +5815,25 @@ } } }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha1-ocGm9iR1FXe6XQeRTLyShQWFiQw=", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "^1.1.1" + } + }, "safe-buffer": { "version": "5.1.2", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -4027,6 +5861,17 @@ "integrity": "sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo=", "dev": true }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, "semver": { "version": "5.7.0", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/semver/-/semver-5.7.0.tgz", @@ -4062,6 +5907,12 @@ } } }, + "serialize-javascript": { + "version": "1.7.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/serialize-javascript/-/serialize-javascript-1.7.0.tgz", + "integrity": "sha1-1uDfsqODKoyURo5usduX5VoZKmU=", + "dev": true + }, "serve-index": { "version": "1.9.1", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/serve-index/-/serve-index-1.9.1.tgz", @@ -4130,6 +5981,16 @@ "integrity": "sha1-0L2FU2iHtv58DYGMuWLZ2RxU5lY=", "dev": true }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha1-N6XPC4HsvGlD3hCbopYNGyZYSuc=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, "shebang-command": { "version": "1.2.0", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/shebang-command/-/shebang-command-1.2.0.tgz", @@ -4264,6 +6125,12 @@ } } }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha1-OZO9hzv8SEecyp6jpUeDXHwVSzQ=", + "dev": true + }, "source-map": { "version": "0.5.7", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/source-map/-/source-map-0.5.7.tgz", @@ -4283,6 +6150,24 @@ "urix": "^0.1.0" } }, + "source-map-support": { + "version": "0.5.12", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/source-map-support/-/source-map-support-0.5.12.tgz", + "integrity": "sha1-tPOxDVGFelrwE4086AA7IBYT1Zk=", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, "source-map-url": { "version": "0.4.0", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/source-map-url/-/source-map-url-0.4.0.tgz", @@ -4353,6 +6238,15 @@ "tweetnacl": "~0.14.0" } }, + "ssri": { + "version": "6.0.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha1-KjxBso3UW2K2Nnbst0ABJlrp7dg=", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, "static-extend": { "version": "0.1.2", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/static-extend/-/static-extend-0.1.2.tgz", @@ -4390,6 +6284,29 @@ "readable-stream": "^2.0.2" } }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha1-6+J6DDibBPvMIzZClS4Qcxr6m64=", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha1-stJCRpKIpaJ+xP6JM6z2I95lFPw=", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, "stream-shift": { "version": "1.0.0", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/stream-shift/-/stream-shift-1.0.0.tgz", @@ -4495,6 +6412,55 @@ "has-flag": "^3.0.0" } }, + "tapable": { + "version": "1.1.3", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha1-ofzMBrWNth/XpF2i2kT186Pme6I=", + "dev": true + }, + "terser": { + "version": "3.17.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/terser/-/terser-3.17.0.tgz", + "integrity": "sha1-+I/77aDetWN/nSSw2mb04VqxDLI=", + "dev": true, + "requires": { + "commander": "^2.19.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.10" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "terser-webpack-plugin": { + "version": "1.2.3", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/terser-webpack-plugin/-/terser-webpack-plugin-1.2.3.tgz", + "integrity": "sha1-P5i8kC+sPl0N5zCGn1BmhWEmLsg=", + "dev": true, + "requires": { + "cacache": "^11.0.2", + "find-cache-dir": "^2.0.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^1.4.0", + "source-map": "^0.6.1", + "terser": "^3.16.1", + "webpack-sources": "^1.1.0", + "worker-farm": "^1.5.2" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, "text-table": { "version": "0.2.0", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/text-table/-/text-table-0.2.0.tgz", @@ -4507,6 +6473,16 @@ "integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=", "dev": true }, + "through2": { + "version": "2.0.5", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/through2/-/through2-2.0.5.tgz", + "integrity": "sha1-AcHjnrMdB8t9A6lqcIIyYLIxMs0=", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, "time-grunt": { "version": "2.0.0", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/time-grunt/-/time-grunt-2.0.0.tgz", @@ -4595,6 +6571,12 @@ } } }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, "to-object-path": { "version": "0.3.0", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/to-object-path/-/to-object-path-0.3.0.tgz", @@ -4661,6 +6643,18 @@ "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", "dev": true }, + "tslib": { + "version": "1.9.3", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/tslib/-/tslib-1.9.3.tgz", + "integrity": "sha1-1+TdeSRdhUKMTX5IIqeZF5VMooY=", + "dev": true + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -4763,6 +6757,24 @@ } } }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha1-HWl2k2mtoFgxA6HmrodoG1ZXMjA=", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/unique-slug/-/unique-slug-2.0.1.tgz", + "integrity": "sha1-Xp7cbRzo+yZNsYpQfvm9hURFHKY=", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, "unpipe": { "version": "1.0.0", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/unpipe/-/unpipe-1.0.0.tgz", @@ -4809,6 +6821,12 @@ } } }, + "upath": { + "version": "1.1.2", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/upath/-/upath-1.1.2.tgz", + "integrity": "sha1-PbZYYA7a7sy+bbXmhNZ+6MKs0Gg=", + "dev": true + }, "uri-js": { "version": "4.2.2", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/uri-js/-/uri-js-4.2.2.tgz", @@ -4889,6 +6907,12 @@ "integrity": "sha1-G0r0lV6zB3xQHCOHL8ZROBFYcTE=", "dev": true }, + "v8-compile-cache": { + "version": "2.0.2", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz", + "integrity": "sha1-pCiyi7JnkHNMT8i8n6EG/M6/amw=", + "dev": true + }, "v8flags": { "version": "3.1.2", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/v8flags/-/v8flags-3.1.2.tgz", @@ -4919,6 +6943,206 @@ "extsprintf": "^1.2.0" } }, + "vm-browserify": { + "version": "0.0.4", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/vm-browserify/-/vm-browserify-0.0.4.tgz", + "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "dev": true, + "requires": { + "indexof": "0.0.1" + } + }, + "watchpack": { + "version": "1.6.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/watchpack/-/watchpack-1.6.0.tgz", + "integrity": "sha1-S8EsLr6KonenHx0/FNaFx7RGzQA=", + "dev": true, + "requires": { + "chokidar": "^2.0.2", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + } + }, + "webpack": { + "version": "4.30.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/webpack/-/webpack-4.30.0.tgz", + "integrity": "sha1-rKdu91YwoixJ/MI1s5tMV1kdM6k=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/wasm-edit": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "acorn": "^6.0.5", + "acorn-dynamic-import": "^4.0.0", + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0", + "chrome-trace-event": "^1.0.0", + "enhanced-resolve": "^4.1.0", + "eslint-scope": "^4.0.0", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.3.0", + "loader-utils": "^1.1.0", + "memory-fs": "~0.4.1", + "micromatch": "^3.1.8", + "mkdirp": "~0.5.0", + "neo-async": "^2.5.0", + "node-libs-browser": "^2.0.0", + "schema-utils": "^1.0.0", + "tapable": "^1.1.0", + "terser-webpack-plugin": "^1.1.0", + "watchpack": "^1.5.0", + "webpack-sources": "^1.3.0" + } + }, + "webpack-cli": { + "version": "3.3.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/webpack-cli/-/webpack-cli-3.3.1.tgz", + "integrity": "sha1-mLBJnHE4up7OiJi9mcTwB9tZkJ0=", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "enhanced-resolve": "^4.1.0", + "findup-sync": "^2.0.0", + "global-modules": "^1.0.0", + "import-local": "^2.0.0", + "interpret": "^1.1.0", + "loader-utils": "^1.1.0", + "supports-color": "^5.5.0", + "v8-compile-cache": "^2.0.2", + "yargs": "^12.0.5" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA=", + "dev": true + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "findup-sync": { + "version": "2.0.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/findup-sync/-/findup-sync-2.0.0.tgz", + "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", + "dev": true, + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^3.1.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + } + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha1-+Xj6TJDR3+f/LWvtoqUV5xO9z0o=", + "dev": true + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha1-2+w7OrdZdYBxtY/ln8QYca8hQA4=", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.2.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/p-limit/-/p-limit-2.2.0.tgz", + "integrity": "sha1-QXyZQeYCepq8ulCS3SkE4lW1+8I=", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha1-yyhoVA4xPWHeWPr741zpAE1VQOY=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "yargs": { + "version": "12.0.5", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha1-BfWZe2CWR7ZPZrgeO0sQo2jnrRM=", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + } + }, + "yargs-parser": { + "version": "11.1.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha1-h5oIZZc7yp9rq1y987HGfsfTvPQ=", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "webpack-sources": { + "version": "1.3.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/webpack-sources/-/webpack-sources-1.3.0.tgz", + "integrity": "sha1-KijcufH0X+lg2PFJMlK17mUw+oU=", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, "websocket-driver": { "version": "0.7.0", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/websocket-driver/-/websocket-driver-0.7.0.tgz", @@ -4973,6 +7197,15 @@ "string-width": "^1.0.2 || 2" } }, + "worker-farm": { + "version": "1.7.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha1-JqlMU5G7ypJhUgAvabhKS/dy5ag=", + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, "wrap-ansi": { "version": "2.1.0", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/wrap-ansi/-/wrap-ansi-2.1.0.tgz", @@ -5034,6 +7267,12 @@ "integrity": "sha1-le+U+F7MgdAHwmThkKEg8KPIVms=", "dev": true }, + "yallist": { + "version": "3.0.3", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/yallist/-/yallist-3.0.3.tgz", + "integrity": "sha1-tLBJ4xS+VF486AIjbWzSLNkcPek=", + "dev": true + }, "yargs": { "version": "13.2.2", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/yargs/-/yargs-13.2.2.tgz", diff --git a/package.json b/package.json index 210103f..0fad4f5 100644 --- a/package.json +++ b/package.json @@ -1,50 +1,54 @@ { - "name": "uhr", - "version": "9.0.0-dev.0", - "description": "jQuery QLOCKTWO plugin", - "keywords": [ - "jquery-plugin", - "qlocktwo" - ], - "homepage": "http://bärneruhr.ch/", - "author": { - "name": "Manuel Friedli", - "email": "manuel@fritteli.ch", - "url": "http://www.fritteli.ch/" - }, - "repository": { - "type": "git", - "url": "https://gittr.ch/manuel/uhr" - }, - "licenses": [ - { - "type": "GPL-3.0" + "name": "uhr", + "version": "9.0.0-dev.0", + "description": "jQuery QLOCKTWO plugin", + "keywords": [ + "jquery-plugin", + "qlocktwo" + ], + "homepage": "http://bärneruhr.ch/", + "author": { + "name": "Manuel Friedli", + "email": "manuel@fritteli.ch", + "url": "http://www.fritteli.ch/" + }, + "repository": { + "type": "git", + "url": "https://gittr.ch/manuel/uhr" + }, + "licenses": [ + { + "type": "GPL-3.0" + } + ], + "license": "GPL-3.0", + "dependencies": { + "jquery": "3.4.1", + "jquery-ui": "1.12.1", + "jquery.cookie": "1.4.1" + }, + "devDependencies": { + "@types/jquery": "3.3.29", + "@types/jqueryui": "1.12.7", + "chai": "4.2.0", + "grunt": "1.0.4", + "grunt-cli": "1.3.2", + "grunt-contrib-clean": "2.0.0", + "grunt-contrib-concat": "1.0.1", + "grunt-contrib-connect": "2.0.0", + "grunt-contrib-cssmin": "3.0.0", + "grunt-contrib-jshint": "2.1.0", + "grunt-contrib-qunit": "3.1.0", + "grunt-contrib-uglify": "4.0.1", + "grunt-contrib-watch": "1.1.0", + "grunt-mocha-phantomjs": "4.0.0", + "grunt-version": "1.3.0", + "jshint-stylish": "2.2.1", + "load-grunt-tasks": "4.0.0", + "mocha": "6.1.4", + "phantomjs-prebuilt": "2.1.16", + "time-grunt": "2.0.0", + "webpack": "4.30.0", + "webpack-cli": "3.3.1" } - ], - "license": "GPL-3.0", - "dependencies": { - "jquery": "3.4.1", - "jquery-ui": "1.12.1", - "jquery.cookie": "1.4.1" - }, - "devDependencies": { - "grunt": "1.0.4", - "grunt-cli": "1.3.2", - "grunt-contrib-clean": "2.0.0", - "grunt-contrib-concat": "1.0.1", - "grunt-contrib-connect": "2.0.0", - "grunt-contrib-cssmin": "3.0.0", - "grunt-contrib-jshint": "2.1.0", - "grunt-contrib-qunit": "3.1.0", - "grunt-contrib-uglify": "4.0.1", - "grunt-contrib-watch": "1.1.0", - "grunt-mocha-phantomjs": "4.0.0", - "grunt-version": "1.3.0", - "jshint-stylish": "2.2.1", - "load-grunt-tasks": "4.0.0", - "phantomjs-prebuilt": "2.1.16", - "time-grunt": "2.0.0", - "mocha": "6.1.4", - "chai": "4.2.0" - } } diff --git a/src/domain/globals.ts b/src/domain/globals.ts new file mode 100644 index 0000000..81167f9 --- /dev/null +++ b/src/domain/globals.ts @@ -0,0 +1,87 @@ +/* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ + +import {Layout} from "./layout"; +import {Theme} from "./theme"; + +export class Globals { + private static layouts: Layout[] = []; + private static themes: Theme[] = []; + + static registerTheme(name: string, styleClass: string): void { + if (Globals.themes.some(value => value.name === name)) { + console.log(`Theme with name '${name}' already registered; ignoring register request for styleClass '${styleClass}'.`) + } else { + Globals.themes.push({ + name, + styleClass + }); + } + } + + static hasThemes(): boolean { + return Globals.themes.length > 0; + } + + static hasMultipleThemes(): boolean { + return Globals.themes.length > 1; + } + + static getFirstTheme(): Theme { + return Globals.getTheme(0); + } + + static getTheme(index: number): Theme { + return Globals.themes[index]; + } + + static getThemes(): Theme[] { + return Globals.themes; + } + + static registerLayout(langCode: string, layout: Layout): void { + const available = Globals.layouts.some(element => { + if (langCode === element.code) { + console.error( + `Error: Language code '${langCode}' cannot be registered for layout '${layout.prettyName}' + because it is already registered for layout '${element.prettyName}'!` + ); + return false; + } + return true; + } + ); + if (available) { + layout.code = langCode; + Globals.layouts.push(layout); + } + } + + static hasLayouts(): boolean { + return Globals.layouts.length > 0; + } + + static hasMultipleLayouts(): boolean { + return Globals.layouts.length > 1; + } + + static getFirstLayout(): Layout { + return Globals.layouts[0]; + } + + static getLayouts(): Layout[] { + return Globals.layouts; + } +} diff --git a/src/domain/layout.ts b/src/domain/layout.ts new file mode 100644 index 0000000..9e61746 --- /dev/null +++ b/src/domain/layout.ts @@ -0,0 +1,50 @@ +/* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ + +import {Letter} from "./letter"; + +export interface Layout { + version: number; + code: string; + prettyName: string; + letters: string[]; + permanent: WordDefinition | WordDefinition[]; + hours: TimeDefinition; + minutes: TimeDefinition; + seconds?: TimeDefinition; + getHour?: (Date) => number; + getDotMinute?: (Date) => number; + getCoarseMinute?: (Date) => number; + getSeconds?: (Date) => number; + parsed?: Letter[][]; +} + +export interface WordDefinition { + [line: number]: number[]; +} + +export interface TimeDefinition { + [values: string]: WordDefinition | WordDefinition[]; +} + +export const EMPTY_LAYOUT: Layout = { + version: 2, + code: null, + prettyName: null, + letters: [], + permanent: [], + minutes: null, + hours: null +}; diff --git a/src/domain/letter.ts b/src/domain/letter.ts new file mode 100644 index 0000000..8e31c8e --- /dev/null +++ b/src/domain/letter.ts @@ -0,0 +1,43 @@ +/* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ + +/** + * Ein Buchstabe. Hilfsklasse für den Renderer und Inhalt der Layout-Arrays. + * @param value Der Buchstabe, der Dargestellt werden soll. + * @param style Die CSS-Styleklassen des Buchstabens. + */ +export class Letter { + private readonly value: string; + private style: string = ''; + + constructor(value: string, style?: string) { + this.value = value; + if (!!style) { + this.style = style; + } + } + + addStyle(style: string): void { + if (this.style === '') { + this.style = style; + } else { + this.style += ` ${style}`; + } + }; + + toString(): string { + return `${this.value}`; + }; +} diff --git a/src/domain/theme.ts b/src/domain/theme.ts new file mode 100644 index 0000000..6144b6c --- /dev/null +++ b/src/domain/theme.ts @@ -0,0 +1,19 @@ +/* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ + +export interface Theme { + styleClass: string; + name: string; +} diff --git a/src/index.d.ts b/src/index.d.ts new file mode 100644 index 0000000..3330ed4 --- /dev/null +++ b/src/index.d.ts @@ -0,0 +1,11 @@ +declare namespace Fritteli { + interface Fritteli { + uhr: { + register: (options?: { checkboxSelector: JQuery | string }) => JQuery; + } + } +} + +interface JQueryStatic { + fritteli: Fritteli.Fritteli; +} diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 0000000..854c1d6 --- /dev/null +++ b/src/index.ts @@ -0,0 +1,71 @@ +/* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ + +import {Globals} from "./domain/globals"; +import {autodetectThemes} from "./theme-autodetector"; +import {Uehrli} from "./uehrli"; +import {WidgetPrototype} from "./widget/widget-prototype"; + +// First things first: discover included themes and register them +autodetectThemes(); + +$.widget("fritteli.uhr", { + "options": { + width: '100%', + status: 'on', + language: 'de_CH', + theme: Globals.getFirstTheme().styleClass, + force: false, + controls: true, + cookiePath: undefined, + autoresize: true, + 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 (key: string) { + this.__fritteli_uhr_instance.setLanguage(key); + }, + "theme": function (styleClass: string) { + this.__fritteli_uhr_instance.setTheme(styleClass); + }, + "time": function (time: Date) { + this.__fritteli_uhr_instance.setTime(time); + }, + "mode": function (mode: string) { + this.__fritteli_uhr_instance.setMode(mode); + }, + "width": function (width: string) { + this.__fritteli_uhr_instance.setWidth(width); + }, + // constructor method + "_create": function () { + this.__fritteli_uhr_instance = new Uehrli(this); + }, + // destructor method + "_destroy": function () { + this.__fritteli_uhr_instance.destroy(); + }, + "__fritteli_uhr_instance": null +} as WidgetPrototype); + +$.fritteli.uhr.register = Globals.registerLayout; diff --git a/src/renderer.ts b/src/renderer.ts new file mode 100644 index 0000000..9feed0d --- /dev/null +++ b/src/renderer.ts @@ -0,0 +1,322 @@ +/* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ + +import {Layout, TimeDefinition, WordDefinition} from "./domain/layout"; +import {Letter} from "./domain/letter"; + +class UhrRendererV2Delegate { + private static readonly vorne0: WordDefinition = { + 3: [2, 3, 4], + 4: [1, 5], + 5: [1, 4, 5], + 6: [1, 3, 5], + 7: [1, 2, 5], + 8: [1, 5], + 9: [2, 3, 4] + }; + private static readonly hinten0: WordDefinition = { + 3: [8, 9, 10], + 4: [7, 11], + 5: [7, 10, 11], + 6: [7, 9, 11], + 7: [7, 8, 11], + 8: [7, 11], + 9: [8, 9, 10] + }; + private static readonly vorne1: WordDefinition = { + 3: [3], + 4: [2, 3], + 5: [3], + 6: [3], + 7: [3], + 8: [3], + 9: [2, 3, 4] + }; + private static readonly hinten1: WordDefinition = { + 3: [9], + 4: [8, 9], + 5: [9], + 6: [9], + 7: [9], + 8: [9], + 9: [8, 9, 10] + }; + private static readonly vorne2: WordDefinition = { + 3: [2, 3, 4], + 4: [1, 5], + 5: [5], + 6: [4], + 7: [3], + 8: [2], + 9: [1, 2, 3, 4, 5] + }; + private static readonly hinten2: WordDefinition = { + 3: [8, 9, 10], + 4: [7, 11], + 5: [11], + 6: [10], + 7: [9], + 8: [8], + 9: [7, 8, 9, 10, 11] + }; + private static readonly vorne3: WordDefinition = { + 3: [1, 2, 3, 4, 5], + 4: [4], + 5: [3], + 6: [4], + 7: [5], + 8: [1, 5], + 9: [2, 3, 4] + }; + private static readonly hinten3: WordDefinition = { + 3: [7, 8, 9, 10, 11], + 4: [10], + 5: [9], + 6: [10], + 7: [11], + 8: [7, 11], + 9: [8, 9, 10] + }; + private static readonly vorne4: WordDefinition = { + 3: [4], + 4: [3, 4], + 5: [2, 4], + 6: [1, 4], + 7: [1, 2, 3, 4, 5], + 8: [4], + 9: [4] + }; + private static readonly hinten4: WordDefinition = { + 3: [10], + 4: [9, 10], + 5: [8, 10], + 6: [7, 10], + 7: [7, 8, 9, 10, 11], + 8: [10], + 9: [10] + }; + private static readonly vorne5: WordDefinition = { + 3: [1, 2, 3, 4, 5], + 4: [1], + 5: [1, 2, 3, 4], + 6: [5], + 7: [5], + 8: [1, 5], + 9: [2, 3, 4] + }; + private static readonly hinten5: WordDefinition = { + 3: [7, 8, 9, 10, 11], + 4: [7], + 5: [7, 8, 9, 10], + 6: [11], + 7: [11], + 8: [7, 11], + 9: [8, 9, 10] + }; + private static readonly hinten6: WordDefinition = { + 3: [9, 10], + 4: [8], + 5: [7], + 6: [7, 8, 9, 10], + 7: [7, 11], + 8: [7, 11], + 9: [8, 9, 10] + }; + private static readonly hinten7: WordDefinition = { + 3: [7, 8, 9, 10, 11], + 4: [11], + 5: [10], + 6: [9], + 7: [8], + 8: [8], + 9: [8] + }; + private static readonly hinten8: WordDefinition = { + 3: [8, 9, 10], + 4: [7, 11], + 5: [7, 11], + 6: [8, 9, 10], + 7: [7, 11], + 8: [7, 11], + 9: [8, 9, 10] + }; + private static readonly hinten9: WordDefinition = { + 3: [8, 9, 10], + 4: [7, 11], + 5: [7, 11], + 6: [8, 9, 10, 11], + 7: [11], + 8: [10], + 9: [8, 9] + }; + private static readonly seconds: TimeDefinition = { + "0": [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten0], + "1": [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten1], + "2": [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten2], + "3": [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten3], + "4": [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten4], + "5": [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten5], + "6": [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten6], + "7": [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten7], + "8": [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten8], + "9": [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten9], + "10": [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten0], + "11": [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten1], + "12": [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten2], + "13": [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten3], + "14": [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten4], + "15": [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten5], + "16": [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten6], + "17": [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten7], + "18": [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten8], + "19": [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten9], + "20": [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten0], + "21": [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten1], + "22": [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten2], + "23": [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten3], + "24": [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten4], + "25": [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten5], + "26": [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten6], + "27": [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten7], + "28": [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten8], + "29": [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten9], + "30": [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten0], + "31": [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten1], + "32": [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten2], + "33": [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten3], + "34": [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten4], + "35": [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten5], + "36": [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten6], + "37": [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten7], + "38": [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten8], + "39": [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten9], + "40": [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten0], + "41": [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten1], + "42": [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten2], + "43": [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten3], + "44": [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten4], + "45": [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten5], + "46": [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten6], + "47": [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten7], + "48": [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten8], + "49": [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten9], + "50": [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten0], + "51": [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten1], + "52": [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten2], + "53": [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten3], + "54": [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten4], + "55": [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten5], + "56": [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten6], + "57": [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten7], + "58": [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten8], + "59": [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten9] + }; + + constructor(private layout: Layout) { + } + + public parse(): Letter[][] { + const letters: Letter[][] = []; + this.layout.letters.forEach(lineString => { + const line: Letter[] = []; + for (let c = 0; c < lineString.length; c++) { + line.push(new Letter(lineString[c])); + } + letters.push(line); + }); + this.parseArrayOrObject(letters, 'on', this.layout.permanent); + if (typeof this.layout.seconds !== 'undefined' && this.layout.seconds !== null) { + this.parseTimeDefinition(letters, 'second', this.layout.seconds); + } else { + this.parseTimeDefinition(letters, 'second', UhrRendererV2Delegate.seconds); + } + this.parseTimeDefinition(letters, 'minute', this.layout.minutes); + this.parseTimeDefinition(letters, 'hour', this.layout.hours); + return letters; + }; + + private parseObject(letters: Letter[][], styleClass: string, object: WordDefinition): void { + if (typeof object !== 'undefined' && object !== null) { + Object.keys(object) + .map(key => Number(key)) + .forEach( + y => object[y].forEach( + x => letters[y - 1][x - 1].addStyle(styleClass) + ) + ); + } + } + + private parseArrayOrObject(letters: Letter[][], styleClass: string, input: WordDefinition | WordDefinition[]): void { + if (typeof input !== 'undefined' && input !== null) { + if (Array.isArray(input)) { + input.forEach(item => this.parseObject(letters, styleClass, item)); + } else { + this.parseObject(letters, styleClass, input); + } + } + } + + private parseTimeDefinition(letters: Letter[][], styleClass: string, definition: TimeDefinition): void { + if (typeof definition !== 'undefined' && definition !== null) { + Object.keys(definition).forEach(listString => { + const timeValues: string[] = listString.split(','); + const highlightLetters: WordDefinition | WordDefinition[] = definition[listString]; + timeValues.forEach(timeValue => this.parseArrayOrObject(letters, styleClass + timeValue, highlightLetters)); + }); + } + } +} + +/** + * Hilfsklasse zum Rendern der Uhr. + * @param layout Layout-Objekt, das gerendert werden soll. + * @param renderarea Das jQuery-gewrappte HTML-Element, auf dem gerendert werden soll. + */ +export class UhrRenderer { + constructor(private layout: Layout, private renderarea: any/*FIXME any: jQuery-wrapped HTML element*/) { + } + + render(beforeshow?: () => void): void { + if (this.layout.parsed === undefined) { + if (this.layout.version === 2) { + const delegate: UhrRendererV2Delegate = new UhrRendererV2Delegate(this.layout); + const parsedLayout: Letter[][] = delegate.parse(); + Object.defineProperty(this.layout, "parsed", { + "value": parsedLayout, + "writable": false, + "configurable": false + }); + } else { + console.warn(`Unknown layout version: '${this.layout.version}', expecting '2'`); + return; + } + } + const letters: Letter[][] = this.layout.parsed; + this.renderarea.fadeOut('fast', () => { + this.renderarea.empty(); + letters.forEach((line, index, array) => { + line.forEach(letter => this.renderarea.append(letter.toString())); + if (index < array.length - 1) { + this.renderarea.append('
'); + } + }); + if (typeof beforeshow === 'function') { + beforeshow(); + } + this.renderarea.fadeIn('fast'); + }); + }; +} diff --git a/src/theme-autodetector.ts b/src/theme-autodetector.ts new file mode 100644 index 0000000..13e4c4d --- /dev/null +++ b/src/theme-autodetector.ts @@ -0,0 +1,36 @@ +/* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ + +import * as $ from 'jquery'; +import {Globals} from "./domain/globals"; + +export function autodetectThemes() { + $('link[rel=stylesheet]').each((index, item) => { + const styleSheet = $(item); + const styleClass: string = styleSheet.attr('data-class'); + if (styleClass !== undefined) { + let name: string = styleSheet.attr('data-name'); + if (name === undefined) { + name = styleClass; + } + Globals.registerTheme(name, styleClass); + } + }); + + // fall-back if no theme was included + if (!Globals.hasThemes()) { + Globals.registerTheme('', ''); + } +} diff --git a/src/uehrli.ts b/src/uehrli.ts new file mode 100644 index 0000000..58169cd --- /dev/null +++ b/src/uehrli.ts @@ -0,0 +1,430 @@ +/* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ + +import {WidgetPrototype} from "./widget/widget-prototype"; +import {Globals} from "./domain/globals"; +import {UhrRenderer} from "./renderer"; +import {EMPTY_LAYOUT, Layout} from "./domain/layout"; + +export class Uehrli { + + private timer: number = null; + private currentMinute: number = null; + + constructor(private widgetInstance: WidgetPrototype) { + const userTime = this.widgetInstance.options.time; + if (this.widgetInstance.options.time === undefined) { + this.widgetInstance.options.time = new Date(); + } + this.parseHash(); + this.setupHTML(); + this.wireFunctionality(); + if (userTime !== undefined) { + this.setTime(userTime); + } + } + + destroy(): void { + if (!!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(); + } + + start(): void { + if (!this.isOn()) { + this.timer = window.setInterval(() => { + this.widgetInstance.options.time = new Date(); + this.update(); + }, 1000); + this.update(); + this.setCookie('uhr-status', 'on'); + } + } + + stop(): void { + if (this.isOn()) { + window.clearInterval(this.timer); + this.timer = null; + this.update(); + this.setCookie('uhr-status', 'off'); + } + } + + toggle(): void { + if (this.isOn()) { + this.stop(); + } else { + this.start(); + } + } + + setLanguage(key: string): void { + if (key !== this.widgetInstance.options.language) { + this.widgetInstance.options.language = key; + const renderer = new UhrRenderer(this.getCurrentLayout(), this.widgetInstance.element.find('.letterarea')); + renderer.render(() => { + this.currentMinute = -1; + this.update(); + }); + this.setCookie('uhr-language', key); + this.update(); + } + } + + setTheme(styleClass: string): void { + if (styleClass !== this.widgetInstance.options.theme) { + this.widgetInstance.element.removeClass(this.widgetInstance.options.theme).addClass(styleClass); + $(`#uhr-onoffswitch${this.widgetInstance.uuid}`).removeClass(this.widgetInstance.options.theme).addClass(styleClass); + this.widgetInstance.options.theme = styleClass; + this.setCookie('uhr-theme', styleClass); + } + } + + setTime(time: Date): void { + this.currentMinute = null; + if (time === null) { + this.widgetInstance.options.time = new Date(); + } else { + if (this.timer !== null) { + window.clearInterval(this.timer); + } + this.widgetInstance.options.time = time; + } + this.update(); + } + + setMode(mode: string): void { + this.widgetInstance.options.mode = mode; + this.currentMinute = null; + this.update(); + this.setCookie('uhr-mode', mode); + } + + setWidth(width: string): void { + const e = this.widgetInstance.element; + e.css('width', width); + const realWidth = e.width(); + e.width(realWidth); + e.height(realWidth); + e.css('font-size', (realWidth / 40) + 'px'); + } + + private setupHTML(): void { + const e: JQuery = this.widgetInstance.element; + // Base clock area + e.addClass('uhr') + .empty() + .append('') + .append('') + .append('') + .append('') + .append('
') + .append('
'); + + this.setWidth(this.widgetInstance.options.width); + + if (this.widgetInstance.options.controls) { + const controlpanel = $(`
`); + const content = $('
'); + controlpanel.append(content); + // on/off switch + const toggleSwitch = $(`
`); + toggleSwitch.append(``); + toggleSwitch.append(``); + content.append(toggleSwitch); + + // time mode switch + const modeSwitch = $(`
`); + modeSwitch.append(``); + modeSwitch.append(``); + content.append(modeSwitch); + // language chooser + if (Globals.hasMultipleLayouts()) { + const languageChooser = $(``); + Globals.getLayouts().forEach(layout => { + languageChooser.append(``); + }); + content.append(languageChooser); + } + + // theme chooser + if (Globals.hasMultipleThemes()) { + const themeChooser = $(``); + Globals.getThemes().forEach(theme => { + themeChooser.append(``); + }); + content.append(themeChooser); + } + const closebutton = $(``); + //FIXME deprecated?! + closebutton.on('click', function () { + $(`#uhr-controlpanel${this.uuid}`).hide('fast'); + }.bind(this.widgetInstance)); + content.append(closebutton); + e.after(controlpanel); + controlpanel.hide(); + const configlink = $(``); + // FIXME deprecated!? + configlink.on('click', function () { + this.toggleConfigScreen(); + }.bind(this)); + e.after(configlink); + } + }; + + private wireFunctionality(): void { + // on/off switch + const toggleSwitch = $(`#uhr-onoffswitch-checkbox${this.widgetInstance.uuid}`); + // FIXME deprecated!? + toggleSwitch.on('click', () => this.toggle()); + let status = this.getCookie('uhr-status'); + if (status === undefined || this.widgetInstance.options.force) { + status = this.widgetInstance.options.status; + } + toggleSwitch.prop('checked', status === 'on'); + if (status === 'on') { + this.start(); + } else { + this.stop(); + } + + // time mode switch + const modeSwitch = $(`#uhr-modeswitch-checkbox${this.widgetInstance.uuid}`); + // FIXME deprecated!? + modeSwitch.on('click', () => { + if (this.widgetInstance.options.mode === 'seconds') { + this.setMode('normal'); + } else { + this.setMode('seconds'); + } + }); + + let mode = this.getCookie('uhr-mode'); + if (mode === undefined || this.widgetInstance.options.force) { + mode = this.widgetInstance.options.mode; + } + modeSwitch.prop('checked', mode !== 'seconds'); + if (mode === 'seconds') { + this.setMode('seconds'); + } else { + this.setMode('normal'); + } + + // language chooser + const languageChooser = $(`#uhr-languagechooser${this.widgetInstance.uuid}`); + // FIXME deprecated!? + languageChooser.on('change', () => { + const languageKey = $(`#uhr-languagechooser${this.widgetInstance.uuid}`).val() as string; + this.setLanguage(languageKey); + }); + let selectedLayout = this.getCookie('uhr-language'); + if (selectedLayout === undefined || this.widgetInstance.options.force) { + selectedLayout = this.widgetInstance.options.language; + } + let found = Globals.getLayouts().some(item => selectedLayout === item.code); + if (!found) { + let fallbackLanguage; + if (Globals.hasLayouts()) { + fallbackLanguage = Globals.getFirstLayout().code; + } else { + fallbackLanguage = ''; + } + console.warn(`Language '${selectedLayout}' not found! Using fallback '${fallbackLanguage}'.`); + selectedLayout = fallbackLanguage; + } + languageChooser.val(selectedLayout); + this.widgetInstance.options.language = ""; + this.setLanguage(selectedLayout); + + // theme chooser + const themeChooser = $(`#uhr-themechooser${this.widgetInstance.uuid}`); + // FIXME deprecated!? + themeChooser.on('change', () => { + const themeKey = $(`#uhr-themechooser${this.widgetInstance.uuid}`).val() as string; + this.setTheme(themeKey); + }); + let selectedTheme = this.getCookie('uhr-theme'); + if (selectedTheme === undefined || this.widgetInstance.options.force) { + selectedTheme = this.widgetInstance.options.theme; + } + found = Globals.getThemes().some(item => selectedTheme === item.styleClass); + if (!found) { + const fallbackTheme = Globals.getFirstTheme().styleClass; + console.warn(`Theme '${selectedTheme}' not found! Using fallback '${fallbackTheme}'.`); + selectedTheme = fallbackTheme; + } + themeChooser.val(selectedTheme); + this.widgetInstance.options.theme = ""; + this.setTheme(selectedTheme); + if (this.widgetInstance.options.autoresize) { + // FIXME deprecated!? + $(window).on('resize', () => { + const $e = this.widgetInstance.element; + const $parent = $e.parent(); + const $window = $(window); + const parentWidth = $parent.width(); + const parentHeight = $parent.height(); + const windowWidth = $window.width(); + const windowHeight = $window.height(); + const size = `${Math.min(parentWidth, parentHeight, windowWidth, windowHeight)}px`; + this.setWidth(size); + }); + } + } + + private isOn(): boolean { + return this.timer !== null; + } + + private getCookie(cookieName: string): string { + return $.cookie(cookieName + this.widgetInstance.uuid); + } + + private setCookie(cookieName: string, cookieValue: string): void { + let options; + if (this.widgetInstance.options.cookiePath !== undefined) { + options = {expires: 365, path: this.widgetInstance.options.cookiePath}; + } else { + options = {expires: 365}; + } + $.cookie(cookieName + this.widgetInstance.uuid, cookieValue, options); + } + + private update(): void { + if (this.isOn()) { + const time = this.widgetInstance.options.time; + if (!this.getCurrentLayout().hasOwnProperty('seconds') && this.widgetInstance.options.mode !== 'seconds') { + if (time.getMinutes() === this.currentMinute) { + return; + } + this.currentMinute = time.getMinutes(); + } + this.show(time); + } else { + this.clear(); + this.currentMinute = -1; + } + } + + private show(time: Date): void { + const second = this.getSecond(time); + const dotMinute = this.getDotMinute(time); + const hour = this.getHour(time); + const coarseMinute = this.getCoarseMinute(time); + this.clear(); + if (this.widgetInstance.options.mode === 'seconds') { + this.highlight(`second${second}`); + } else { + this.highlight('on'); + for (let i = 1; i <= dotMinute; i++) { + this.highlight(`dot${i}`); + } + this.highlight(`minute${coarseMinute}`); + this.highlight(`hour${hour}`); + } + } + + private clear(): void { + this.widgetInstance.element.find('.item').removeClass('active'); + } + + private highlight(itemClass: string): void { + this.widgetInstance.element.find(`.item.${itemClass}`).addClass('active'); + } + + private getSecond(time: Date): number { + if (typeof this.getCurrentLayout().getSeconds === 'function') { + return this.getCurrentLayout().getSeconds(time); + } + return time.getSeconds(); + }; + + private getDotMinute(date: Date): number { + if (typeof this.getCurrentLayout().getDotMinute === 'function') { + return this.getCurrentLayout().getDotMinute(date); + } + return date.getMinutes() % 5; + }; + + private getCoarseMinute(date: Date): number { + if (typeof this.getCurrentLayout().getCoarseMinute === 'function') { + return this.getCurrentLayout().getCoarseMinute(date); + } + return date.getMinutes(); + }; + + private getHour(date: Date): number { + if (typeof this.getCurrentLayout().getHour === 'function') { + return this.getCurrentLayout().getHour(date); + } + const hour = date.getHours(); + if (date.getMinutes() >= 25) { + return (hour + 1) % 24; + } + return hour; + }; + + private parseHash(): void { + let hash: string = window.location.hash; + if (hash !== undefined && hash.charAt(0) === '#') { + hash = hash.substring(1); + hash = decodeURIComponent(hash); + const params: string[] = hash.split('&'); + params.forEach(element => { + const pair: string[] = element.split('='); + const key = pair[0]; + const value = pair[1]; + switch (key) { + case 'l': + case 'language': + this.widgetInstance.options.language = value; + this.widgetInstance.options.force = true; + break; + case 't': + case 'theme': + this.widgetInstance.options.theme = value; + this.widgetInstance.options.force = true; + break; + case 'm': + case 'mode': + this.widgetInstance.options.mode = value; + this.widgetInstance.options.force = true; + break; + case 's': + case 'status': + this.widgetInstance.options.status = value; + this.widgetInstance.options.force = true; + break; + } + }); + } + } + + private getCurrentLayout(): Layout { + const matchingLanguages: Layout[] = Globals.getLayouts().filter(element => element.code === this.widgetInstance.options.language, this); + if (matchingLanguages.length > 0) { + return matchingLanguages[0]; + } + // fallback: return empty object + return EMPTY_LAYOUT; + }; +} diff --git a/src/widget/options.ts b/src/widget/options.ts new file mode 100644 index 0000000..7813fab --- /dev/null +++ b/src/widget/options.ts @@ -0,0 +1,27 @@ +/* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ + +export interface Options { + width: string; + status: string; + language: string; + theme: string; + force: boolean; + controls: boolean; + cookiePath?: string; + autoresize: boolean; + mode: string; + time?: Date; +} diff --git a/src/widget/widget-prototype.ts b/src/widget/widget-prototype.ts new file mode 100644 index 0000000..c72a2a2 --- /dev/null +++ b/src/widget/widget-prototype.ts @@ -0,0 +1,33 @@ +/* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ + +import WidgetCommonProperties = JQueryUI.WidgetCommonProperties; +import {Uehrli} from "../uehrli"; +import {Options} from "./options"; + +export interface WidgetPrototype extends WidgetCommonProperties { + options: Options; + start: () => void; + stop: () => void; + toggle: () => void; + language: (key: string) => void; + theme: (id: string) => void; + time: (time: Date) => void; + mode: (mode: string) => void; + width: (width: string) => void; + _create: () => void; + _destroy: () => void; + __fritteli_uhr_instance: Uehrli; +} From 1929209937d68e5abca7690b7c2b037c2a68f084 Mon Sep 17 00:00:00 2001 From: Manuel Friedli Date: Sun, 5 May 2019 01:54:28 +0200 Subject: [PATCH 02/44] Rename uehrli.ts to uhr.ts, reformat the whole code base and fix typings problems. --- package-lock.json | 6 + package.json | 1 + src/index.d.ts | 11 - src/index.ts | 18 +- src/uhr-de.js | 4 +- src/uhr-de_CH.js | 4 +- src/uhr-de_CH_genau.js | 4 +- src/uhr-dk.js | 8 +- src/uhr-en.js | 6 +- src/uhr-es.js | 4 +- src/uhr-fr.js | 6 +- src/uhr-it.js | 6 +- src/uhr-nl.js | 6 +- src/uhr.js | 816 --------------------------------- src/{uehrli.ts => uhr.ts} | 19 +- src/widget/widget-prototype.ts | 4 +- 16 files changed, 65 insertions(+), 858 deletions(-) delete mode 100644 src/index.d.ts delete mode 100644 src/uhr.js rename src/{uehrli.ts => uhr.ts} (97%) diff --git a/package-lock.json b/package-lock.json index 4ce40ac..f03b838 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6682,6 +6682,12 @@ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", "dev": true }, + "typescript": { + "version": "3.4.5", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/typescript/-/typescript-3.4.5.tgz", + "integrity": "sha1-LSYY0Qu1ZlcrjXqtUYDYQlfXCpk=", + "dev": true + }, "uglify-js": { "version": "3.5.10", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/uglify-js/-/uglify-js-3.5.10.tgz", diff --git a/package.json b/package.json index 0fad4f5..1a0be6e 100644 --- a/package.json +++ b/package.json @@ -48,6 +48,7 @@ "mocha": "6.1.4", "phantomjs-prebuilt": "2.1.16", "time-grunt": "2.0.0", + "typescript": "3.4.5", "webpack": "4.30.0", "webpack-cli": "3.3.1" } diff --git a/src/index.d.ts b/src/index.d.ts deleted file mode 100644 index 3330ed4..0000000 --- a/src/index.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -declare namespace Fritteli { - interface Fritteli { - uhr: { - register: (options?: { checkboxSelector: JQuery | string }) => JQuery; - } - } -} - -interface JQueryStatic { - fritteli: Fritteli.Fritteli; -} diff --git a/src/index.ts b/src/index.ts index 854c1d6..92cd47c 100644 --- a/src/index.ts +++ b/src/index.ts @@ -15,8 +15,9 @@ import {Globals} from "./domain/globals"; import {autodetectThemes} from "./theme-autodetector"; -import {Uehrli} from "./uehrli"; +import {Uhr} from "./uhr"; import {WidgetPrototype} from "./widget/widget-prototype"; +import {Layout} from "./domain/layout"; // First things first: discover included themes and register them autodetectThemes(); @@ -59,7 +60,7 @@ $.widget("fritteli.uhr", { }, // constructor method "_create": function () { - this.__fritteli_uhr_instance = new Uehrli(this); + this.__fritteli_uhr_instance = new Uhr(this); }, // destructor method "_destroy": function () { @@ -69,3 +70,16 @@ $.widget("fritteli.uhr", { } as WidgetPrototype); $.fritteli.uhr.register = Globals.registerLayout; + +declare namespace $ { + const fritteli: Fritteli; + const widget: JQueryUI.Widget; + + interface Fritteli { + uhr: Uhr; + } + + interface Uhr { + register: (langCode: string, layout: Layout) => void; + } +} diff --git a/src/uhr-de.js b/src/uhr-de.js index cb8aef7..ebb3b5c 100644 --- a/src/uhr-de.js +++ b/src/uhr-de.js @@ -12,7 +12,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -(function($) { +(function ($) { 'use strict'; var es_ist = {1: [1, 2, 4, 5, 6]}; var uhr = {10: [9, 10, 11]}; @@ -71,4 +71,4 @@ } }; $.fritteli.uhr.register('de', layout); -}(jQuery)); \ No newline at end of file +}(jQuery)); diff --git a/src/uhr-de_CH.js b/src/uhr-de_CH.js index 5cb8899..ba8e498 100644 --- a/src/uhr-de_CH.js +++ b/src/uhr-de_CH.js @@ -12,7 +12,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -(function($) { +(function ($) { 'use strict'; // hilfsvariablen var es_isch = {1: [1, 2, 4, 5, 6, 7]}; @@ -94,4 +94,4 @@ }; // Das Layout bei der Uhr unter dem Code "de_CH" registrieren. $.fritteli.uhr.register('de_CH', layout); -}(jQuery)); \ No newline at end of file +}(jQuery)); diff --git a/src/uhr-de_CH_genau.js b/src/uhr-de_CH_genau.js index b130fa3..be300fc 100644 --- a/src/uhr-de_CH_genau.js +++ b/src/uhr-de_CH_genau.js @@ -12,7 +12,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -(function($) { +(function ($) { 'use strict'; var es_isch = {1: [1, 2, 4, 5, 6, 7]}; var genau = {3: [7, 8, 9, 10, 11]}; @@ -69,4 +69,4 @@ } }; $.fritteli.uhr.register('de_CH_genau', layout); -}(jQuery)); \ No newline at end of file +}(jQuery)); diff --git a/src/uhr-dk.js b/src/uhr-dk.js index 12c700e..d7b0b8e 100644 --- a/src/uhr-dk.js +++ b/src/uhr-dk.js @@ -1,7 +1,3 @@ -/* - * Copyright (C) Schweizerische Bundesbahnen SBB, 2014. - */ - /* This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -16,7 +12,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -(function($) { +(function ($) { 'use strict'; var klokken_er = {1: [1, 2, 3, 4, 5, 6, 7, 9, 10]}; @@ -81,4 +77,4 @@ } }; $.fritteli.uhr.register('dk', layout); -}(jQuery)); \ No newline at end of file +}(jQuery)); diff --git a/src/uhr-en.js b/src/uhr-en.js index a660266..3cd4173 100644 --- a/src/uhr-en.js +++ b/src/uhr-en.js @@ -12,7 +12,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -(function($) { +(function ($) { 'use strict'; var it_is = {1: [1, 2, 4, 5]}; var half = {4: [1, 2, 3, 4]}; @@ -69,7 +69,7 @@ "10,22": {10: [1, 2, 3]}, "11,23": {8: [6, 7, 8, 9, 10, 11]} }, - "getHour": function(date) { + "getHour": function (date) { var hour = date.getHours(); if (date.getMinutes() >= 35) { return (hour + 1) % 24; @@ -78,4 +78,4 @@ } }; $.fritteli.uhr.register('en', layout); -}(jQuery)); \ No newline at end of file +}(jQuery)); diff --git a/src/uhr-es.js b/src/uhr-es.js index 8e5c834..3a16d1e 100644 --- a/src/uhr-es.js +++ b/src/uhr-es.js @@ -12,7 +12,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -(function($) { +(function ($) { 'use strict'; var es_la = {1: [1, 2, 6, 7]}; var son_las = {1: [2, 3, 4, 6, 7, 8]}; @@ -68,7 +68,7 @@ "10,22": [son_las, {6: [3, 4, 5, 6]}], "11,23": [son_las, {6: [8, 9, 10, 11]}] }, - "getHour": function(date) { + "getHour": function (date) { var hour = date.getHours(); if (date.getMinutes() >= 35) { return (hour + 1) % 24; diff --git a/src/uhr-fr.js b/src/uhr-fr.js index 4a8d3d2..d01f2f8 100644 --- a/src/uhr-fr.js +++ b/src/uhr-fr.js @@ -12,7 +12,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -(function($) { +(function ($) { 'use strict'; var il_est = {1: [1, 2, 4, 5, 6]}; var et = {8: [1, 2]}; @@ -103,7 +103,7 @@ ], "12": {5: [1, 2, 3, 4]} }, - "getHour": function(date) { + "getHour": function (date) { var hour = date.getHours(); if (date.getMinutes() >= 35) { return (hour + 1) % 24; @@ -112,4 +112,4 @@ } }; $.fritteli.uhr.register('fr', layout); -}(jQuery)); \ No newline at end of file +}(jQuery)); diff --git a/src/uhr-it.js b/src/uhr-it.js index 0375529..9d79c8a 100644 --- a/src/uhr-it.js +++ b/src/uhr-it.js @@ -12,7 +12,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -(function($) { +(function ($) { 'use strict'; var sono_le = {1: [1, 2, 3, 4, 6, 7]}; var e_l = {2: [1, 3, 4]}; @@ -68,7 +68,7 @@ "10,22": [sono_le, {4: [1, 2, 3, 4, 5]}], "11,23": [sono_le, {4: [6, 7, 8, 9, 10, 11]}] }, - "getHour": function(date) { + "getHour": function (date) { var hour = date.getHours(); if (date.getMinutes() >= 35) { return (hour + 1) % 24; @@ -77,4 +77,4 @@ } }; $.fritteli.uhr.register('it', layout); -}(jQuery)); \ No newline at end of file +}(jQuery)); diff --git a/src/uhr-nl.js b/src/uhr-nl.js index 5ca6082..565d399 100644 --- a/src/uhr-nl.js +++ b/src/uhr-nl.js @@ -12,7 +12,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -(function($) { +(function ($) { 'use strict'; var het_is = {1: [1, 2, 3, 5, 6]}; var over1 = {3: [1, 2, 3, 4]}; @@ -69,7 +69,7 @@ "10,22": {9: [5, 6, 7, 8]}, "11,23": {9: [9, 10, 11]} }, - "getHour": function(date) { + "getHour": function (date) { var hour = date.getHours(); if (date.getMinutes() >= 20) { return (hour + 1) % 24; @@ -78,4 +78,4 @@ } }; $.fritteli.uhr.register('nl', layout); -}(jQuery)); \ No newline at end of file +}(jQuery)); diff --git a/src/uhr.js b/src/uhr.js deleted file mode 100644 index 0e5ce65..0000000 --- a/src/uhr.js +++ /dev/null @@ -1,816 +0,0 @@ -/* - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - */ -(function ($) { - 'use strict'; - var uhrGlobals = { - "id": 0, - "languages": [], - "themes": [], - registerLanguage: function registerLanguage(code, language) { - var alreadyExists = uhrGlobals.languages.some(function (element) { - if (code === element.code) { - console.error("Error: Language code '" + code + "' cannot be registered for language '" + language.language + - "' because it is already registered for language '" + element.language + "'!"); - return true; - } - return false; - }); - if (!alreadyExists) { - language.code = code; - uhrGlobals.languages.push(language); - } - } - }; - - // auto-detect themes - $('link[rel=stylesheet]').each(function (index, item) { - var styleSheet = $(item); - var styleClass = styleSheet.attr('data-class'); - if (styleClass !== undefined) { - var name = styleSheet.attr('data-name'); - if (name === undefined) { - name = styleClass; - } - uhrGlobals.themes.push({'styleClass': styleClass, 'name': name}); - } - }); - // fall-back if no theme was included - if (uhrGlobals.themes.length === 0) { - uhrGlobals.themes.push({}); - } - - // public interface methods (exported later) - var setCookie; - var isOn; - var update; - var start = function start() { - if (!isOn.bind(this)()) { - this.timer = window.setInterval(function () { - this.options.time = new Date(); - update.bind(this)(); - }.bind(this), 1000); - update.bind(this)(); - setCookie.bind(this)('uhr-status', 'on'); - } - }; - var stop = function stop() { - if (isOn.bind(this)()) { - window.clearInterval(this.timer); - this.timer = null; - update.bind(this)(); - setCookie.bind(this)('uhr-status', 'off'); - } - }; - var toggle = function toggle() { - if (isOn.bind(this)()) { - this.stop(); - } else { - this.start(); - } - }; - var language; - - /** - * Ein Buchstabe. Hilfsklasse für den Renderer und Inhalt der Layout-Arrays. - * @param value Der Buchstabe, der Dargestellt werden soll. - * @param style Die CSS-Styleklassen des Buchstabens. - */ - function Letter(value, style) { - var myValue = value; - var myStyle = style || ''; - this.addStyle = function (style) { - if (myStyle === '') { - myStyle = style; - } else { - myStyle += ' ' + style; - } - }; - this.toString = function () { - return '' + myValue + ''; - }; - } - - function UhrRendererV2Delegate(layout) { - var vorne0 = { - 3: [2, 3, 4], - 4: [1, 5], - 5: [1, 4, 5], - 6: [1, 3, 5], - 7: [1, 2, 5], - 8: [1, 5], - 9: [2, 3, 4] - }; - var hinten0 = { - 3: [8, 9, 10], - 4: [7, 11], - 5: [7, 10, 11], - 6: [7, 9, 11], - 7: [7, 8, 11], - 8: [7, 11], - 9: [8, 9, 10] - }; - var vorne1 = { - 3: [3], - 4: [2, 3], - 5: [3], - 6: [3], - 7: [3], - 8: [3], - 9: [2, 3, 4] - }; - var hinten1 = { - 3: [9], - 4: [8, 9], - 5: [9], - 6: [9], - 7: [9], - 8: [9], - 9: [8, 9, 10] - }; - var vorne2 = { - 3: [2, 3, 4], - 4: [1, 5], - 5: [5], - 6: [4], - 7: [3], - 8: [2], - 9: [1, 2, 3, 4, 5] - }; - var hinten2 = { - 3: [8, 9, 10], - 4: [7, 11], - 5: [11], - 6: [10], - 7: [9], - 8: [8], - 9: [7, 8, 9, 10, 11] - }; - var vorne3 = { - 3: [1, 2, 3, 4, 5], - 4: [4], - 5: [3], - 6: [4], - 7: [5], - 8: [1, 5], - 9: [2, 3, 4] - }; - var hinten3 = { - 3: [7, 8, 9, 10, 11], - 4: [10], - 5: [9], - 6: [10], - 7: [11], - 8: [7, 11], - 9: [8, 9, 10] - }; - var vorne4 = { - 3: [4], - 4: [3, 4], - 5: [2, 4], - 6: [1, 4], - 7: [1, 2, 3, 4, 5], - 8: [4], - 9: [4] - }; - var hinten4 = { - 3: [10], - 4: [9, 10], - 5: [8, 10], - 6: [7, 10], - 7: [7, 8, 9, 10, 11], - 8: [10], - 9: [10] - }; - var vorne5 = { - 3: [1, 2, 3, 4, 5], - 4: [1], - 5: [1, 2, 3, 4], - 6: [5], - 7: [5], - 8: [1, 5], - 9: [2, 3, 4] - }; - var hinten5 = { - 3: [7, 8, 9, 10, 11], - 4: [7], - 5: [7, 8, 9, 10], - 6: [11], - 7: [11], - 8: [7, 11], - 9: [8, 9, 10] - }; - var hinten6 = { - 3: [9, 10], - 4: [8], - 5: [7], - 6: [7, 8, 9, 10], - 7: [7, 11], - 8: [7, 11], - 9: [8, 9, 10] - }; - var hinten7 = { - 3: [7, 8, 9, 10, 11], - 4: [11], - 5: [10], - 6: [9], - 7: [8], - 8: [8], - 9: [8] - }; - var hinten8 = { - 3: [8, 9, 10], - 4: [7, 11], - 5: [7, 11], - 6: [8, 9, 10], - 7: [7, 11], - 8: [7, 11], - 9: [8, 9, 10] - }; - var hinten9 = { - 3: [8, 9, 10], - 4: [7, 11], - 5: [7, 11], - 6: [8, 9, 10, 11], - 7: [11], - 8: [10], - 9: [8, 9] - }; - var seconds = { - "0": [vorne0, hinten0], - "1": [vorne0, hinten1], - "2": [vorne0, hinten2], - "3": [vorne0, hinten3], - "4": [vorne0, hinten4], - "5": [vorne0, hinten5], - "6": [vorne0, hinten6], - "7": [vorne0, hinten7], - "8": [vorne0, hinten8], - "9": [vorne0, hinten9], - "10": [vorne1, hinten0], - "11": [vorne1, hinten1], - "12": [vorne1, hinten2], - "13": [vorne1, hinten3], - "14": [vorne1, hinten4], - "15": [vorne1, hinten5], - "16": [vorne1, hinten6], - "17": [vorne1, hinten7], - "18": [vorne1, hinten8], - "19": [vorne1, hinten9], - "20": [vorne2, hinten0], - "21": [vorne2, hinten1], - "22": [vorne2, hinten2], - "23": [vorne2, hinten3], - "24": [vorne2, hinten4], - "25": [vorne2, hinten5], - "26": [vorne2, hinten6], - "27": [vorne2, hinten7], - "28": [vorne2, hinten8], - "29": [vorne2, hinten9], - "30": [vorne3, hinten0], - "31": [vorne3, hinten1], - "32": [vorne3, hinten2], - "33": [vorne3, hinten3], - "34": [vorne3, hinten4], - "35": [vorne3, hinten5], - "36": [vorne3, hinten6], - "37": [vorne3, hinten7], - "38": [vorne3, hinten8], - "39": [vorne3, hinten9], - "40": [vorne4, hinten0], - "41": [vorne4, hinten1], - "42": [vorne4, hinten2], - "43": [vorne4, hinten3], - "44": [vorne4, hinten4], - "45": [vorne4, hinten5], - "46": [vorne4, hinten6], - "47": [vorne4, hinten7], - "48": [vorne4, hinten8], - "49": [vorne4, hinten9], - "50": [vorne5, hinten0], - "51": [vorne5, hinten1], - "52": [vorne5, hinten2], - "53": [vorne5, hinten3], - "54": [vorne5, hinten4], - "55": [vorne5, hinten5], - "56": [vorne5, hinten6], - "57": [vorne5, hinten7], - "58": [vorne5, hinten8], - "59": [vorne5, hinten9] - }; - - function parseObject(letters, styleClass, object) { - if (typeof object !== 'undefined' && object !== null) { - Object.keys(object).forEach(function (y) { - var highlightLetters = object[y]; - highlightLetters.forEach(function (x) { - letters[y - 1][x - 1].addStyle(styleClass); - }); - }); - } - } - - function parseArrayOrObject(letters, styleClass, input) { - if (typeof input !== 'undefined' && input !== null) { - if (Array.isArray(input)) { - input.forEach(function (item) { - parseObject(letters, styleClass, item); - }); - } else { - parseObject(letters, styleClass, input); - } - } - } - - function parseTimeDefinition(letters, styleClass, definition) { - if (typeof definition !== 'undefined' && definition !== null) { - Object.keys(definition).forEach(function (listString) { - var array = listString.split(','); - var highlightLetters = definition[listString]; - array.forEach(function (item) { - parseArrayOrObject(letters, styleClass + item, highlightLetters); - }); - }); - } - } - - this.parse = function parse() { - var letters = []; - layout.letters.forEach(function (string) { - var line = []; - for (var c = 0; c < string.length; c++) { - var character = new Letter(string[c]); - line.push(character); - } - letters.push(line); - }); - parseArrayOrObject(letters, 'on', layout.permanent); - if (typeof layout.seconds !== 'undefined' && layout.seconds !== null) { - parseTimeDefinition(letters, 'second', layout.seconds); - } else { - parseTimeDefinition(letters, 'second', seconds); - } - parseTimeDefinition(letters, 'minute', layout.minutes); - parseTimeDefinition(letters, 'hour', layout.hours); - return letters; - }; - } - - /** - * Hilfsklasse zum Rendern der Uhr. - * @param layout Layout-Objekt, das gerendert werden soll. - * @param renderarea Das jQuery-gewrappte HTML-Element, auf dem gerendert werden soll. - */ - function UhrRenderer(layout, renderarea) { - this.render = function render(beforeshow) { - if (layout.parsed === undefined) { - switch (layout.version) { - case 2: - var delegate = new UhrRendererV2Delegate(layout); - var parsedLayout = delegate.parse(); - Object.defineProperty(layout, "parsed", { - "value": parsedLayout, - "writable": false, - "configurable": false - }); - break; - default: - console.warn("Unknown layout version: '" + layout.version + "'"); - return; - } - } - var letters = layout.parsed; - renderarea.fadeOut('fast', function () { - renderarea.empty(); - letters.forEach(function (line, index, array) { - line.forEach(function (letter) { - renderarea.append(letter.toString()); - }); - if (index < array.length - 1) { - renderarea.append('
'); - } - }); - if (typeof beforeshow === 'function') { - beforeshow(); - } - renderarea.fadeIn('fast'); - }); - }; - } - - var setLanguage = function setLanguage(languageKey) { - if (languageKey !== this.options.language) { - this.options.language = languageKey; - var renderer = new UhrRenderer(language.bind(this)(), this.element.find('.letterarea')); - renderer.render.bind(this)(function () { - this.currentMinute = -1; - update.bind(this)(); - }.bind(this)); - setCookie.bind(this)('uhr-language', languageKey); - update.bind(this)(); - } - }; - var setTheme = function setTheme(theme) { - if (theme !== this.options.theme) { - this.element.removeClass(this.options.theme).addClass(theme); - $('#uhr-onoffswitch' + this.id).removeClass(this.options.theme).addClass(theme); - this.options.theme = theme; - setCookie.bind(this)('uhr-theme', theme); - } - }; - var setTime = function setTime(time) { - this.currentMinute = -1; - if (time === null) { - this.options.time = new Date(); - } else { - if (this.timer !== null) { - window.clearInterval(this.timer); - } - this.options.time = time; - } - update.bind(this)(); - }; - var setMode = function (mode) { - this.options.mode = mode; - this.currentMinute = -1; - update.bind(this)(); - setCookie.bind(this)('uhr-mode', mode); - }; - var setWidth = function setWidth(width) { - var e = this.element; - e.css('width', width); - var realWidth = e.width(); - e.width(realWidth); - e.height(realWidth); - e.css('font-size', (realWidth / 40) + 'px'); - }; - - // private interface methods - var setupHTML; - var wireFunctionality; - var create = function create() { - this.id = uhrGlobals.id++; - this.timer = null; - this.currentMinute = -1; - var userTime = this.options.time; - var hash, params; - if (this.options.time === undefined) { - this.options.time = new Date(); - } - // parse the URL params - hash = window.location.hash; - if (hash !== undefined && typeof hash === 'string' && hash.charAt(0) === '#') { - hash = hash.substring(1); - hash = decodeURIComponent(hash); - params = hash.split('&'); - params.forEach(function (element) { - var pair = element.split('='); - var key = pair[0]; - var value = pair[1]; - switch (key) { - case 'l': - case 'language': - this.options.language = value; - this.options.force = true; - break; - case 't': - case 'theme': - this.options.theme = value; - this.options.force = true; - break; - case 'm': - case 'mode': - this.options.mode = value; - this.options.force = true; - break; - case 's': - case 'status': - this.options.status = value; - this.options.force = true; - break; - } - }.bind(this)); - } - // end parse the URL params - setupHTML.bind(this)(); - wireFunctionality.bind(this)(); - if (userTime !== undefined) { - this.time(userTime); - } - }; - // private helper methods (not exported) - var toggleConfigScreen = function toggleConfigScreen() { - $('#uhr-controlpanel' + this.id).toggle('fast'); - }; - // set up - setupHTML = function setupHTML() { - var e = this.element; - // Base clock area - e.addClass('uhr'); - e.empty(); - e.append(''); - e.append(''); - e.append(''); - e.append(''); - e.append('
'); - e.append('
'); - setWidth.bind(this)(this.options.width); - - if (this.options.controls) { - var controlpanel = $('
'); - var content = $('
'); - controlpanel.append(content); - // on/off switch - var toggleSwitch = $('
'); - toggleSwitch.append(''); - toggleSwitch.append(''); - content.append(toggleSwitch); - - // time mode switch - var modeSwitch = $('
'); - modeSwitch.append(''); - modeSwitch.append(''); - content.append(modeSwitch); - // language chooser - if (uhrGlobals.languages.length > 1) { - var languageChooser = $(''); - uhrGlobals.languages.forEach(function (item) { - languageChooser.append(''); - }); - content.append(languageChooser); - } - - // theme chooser - if (uhrGlobals.themes.length > 1) { - var themeChooser = $(''); - uhrGlobals.themes.forEach(function (item) { - themeChooser.append(''); - }); - content.append(themeChooser); - } - var closebutton = $(''); - closebutton.on('click', function () { - $('#uhr-controlpanel' + this.id).hide('fast'); - }.bind(this)); - content.append(closebutton); - e.after(controlpanel); - controlpanel.hide(); - var configlink = $(''); - configlink.on('click', function () { - toggleConfigScreen.bind(this)(); - }.bind(this)); - e.after(configlink); - } - }; - wireFunctionality = function wireFunctionality() { - // on/off switch - var toggleSwitch = $('#uhr-onoffswitch-checkbox' + this.id); - toggleSwitch.on('click', function () { - this.toggle(); - }.bind(this)); - var status = $.cookie('uhr-status' + this.id); - if (status === undefined || this.options.force) { - status = this.options.status; - } - toggleSwitch.prop('checked', status === 'on'); - if (status === 'on') { - this.start(); - } else { - this.stop(); - } - - // time mode switch - var modeSwitch = $('#uhr-modeswitch-checkbox' + this.id); - modeSwitch.on('click', function () { - if (this.options.mode === 'seconds') { - setMode.bind(this)('normal'); - } else { - setMode.bind(this)('seconds'); - } - }.bind(this)); - - var mode = $.cookie('uhr-mode' + this.id); - if (mode === undefined || this.options.force) { - mode = this.options.mode; - } - modeSwitch.prop('checked', mode !== 'seconds'); - if (mode === 'seconds') { - setMode.bind(this)('seconds'); - } else { - setMode.bind(this)('normal'); - } - - // language chooser - var languageChooser = $('#uhr-languagechooser' + this.id); - languageChooser.on('change', function () { - var languageKey = $('#uhr-languagechooser' + this.id).val(); - this.language(languageKey); - }.bind(this)); - var selectedLanguage = $.cookie('uhr-language' + this.id); - if (selectedLanguage === undefined || this.options.force) { - selectedLanguage = this.options.language; - } - var found = uhrGlobals.languages.some(function (item) { - return selectedLanguage === item.code; - }); - if (!found) { - var fallbackLanguage; - if (uhrGlobals.languages.length > 0) { - fallbackLanguage = uhrGlobals.languages[0].code; - } else { - fallbackLanguage = ''; - } - console.warn("Language '" + selectedLanguage + "' not found! Using fallback '" + fallbackLanguage + "'"); - selectedLanguage = fallbackLanguage; - } - languageChooser.val(selectedLanguage); - this.options.language = ""; - this.language(selectedLanguage); - - // theme chooser - var themeChooser = $('#uhr-themechooser' + this.id); - themeChooser.on('change', function () { - var themeKey = $('#uhr-themechooser' + this.id).val(); - this.theme(themeKey); - }.bind(this)); - var selectedTheme = $.cookie('uhr-theme' + this.id); - if (selectedTheme === undefined || this.options.force) { - selectedTheme = this.options.theme; - } - found = uhrGlobals.themes.some(function (item) { - return selectedTheme === item.styleClass; - }); - if (!found) { - var fallbackTheme = uhrGlobals.themes[0].styleClass; - console.warn("Theme '" + selectedTheme + "' not found! Using fallback '" + fallbackTheme + "'"); - selectedTheme = fallbackTheme; - } - themeChooser.val(selectedTheme); - this.options.theme = ""; - this.theme(selectedTheme); - if (this.options.autoresize) { - $(window).on('resize', function () { - var $e = this.element; - var $parent = $e.parent(); - var $window = $(window); - var parentWidth = $parent.width(); - var parentHeight = $parent.height(); - var windowWidth = $window.width(); - var windowHeight = $window.height(); - var size = Math.min(parentWidth, parentHeight, windowWidth, windowHeight) + 'px'; - setWidth.bind(this)(size); - }.bind(this)); - } - }; - var destroy = function destroy() { - this.timer = null; - $(this.element) - .removeAttr('style') - .removeAttr('class') - .empty(); - $('#uhr-configlink' + this.id).remove(); - $('#uhr-controlpanel' + this.id).remove(); - - }; - setCookie = function setCookie(cookieName, cookieValue) { - var options = {}; - if (this.options.cookiePath !== undefined) { - options = {expires: 365, path: this.options.cookiePath}; - } else { - options = {expires: 365}; - } - $.cookie(cookieName + this.id, cookieValue, options); - }; - - // business logic - isOn = function isOn() { - return this.timer !== null; - }; - var show; - var clear; - update = function update() { - if (isOn.bind(this)()) { - var time = this.options.time; - if (!language.bind(this)().hasOwnProperty('seconds') && this.options.mode !== 'seconds') { - if (time.getMinutes() === this.currentMinute) { - return; - } - this.currentMinute = time.getMinutes(); - } - show.bind(this)(time); - } else { - clear.bind(this)(); - this.currentMinute = -1; - } - }; - var highlight; - var getSecond; - var getDotMinute; - var getCoarseMinute; - var getHour; - show = function show(time) { - var second = getSecond.bind(this)(time); - var dotMinute = getDotMinute.bind(this)(time); - var hour = getHour.bind(this)(time); - var coarseMinute = getCoarseMinute.bind(this)(time); - clear.bind(this)(); - if (this.options.mode === 'seconds') { - highlight.bind(this)('second' + second); - } else { - highlight.bind(this)('on'); - for (var i = 1; i <= dotMinute; i++) { - highlight.bind(this)('dot' + i); - } - highlight.bind(this)('minute' + coarseMinute); - highlight.bind(this)('hour' + hour); - } - }; - highlight = function highlight(itemClass) { - this.element.find('.item.' + itemClass).addClass('active'); - }; - clear = function clear() { - this.element.find('.item').removeClass('active'); - }; - getSecond = function getSecond(date) { - if (typeof language.bind(this)().getSeconds === 'function') { - return language.bind(this)().getSeconds(date); - } - return date.getSeconds(); - }; - getDotMinute = function getDotMinute(date) { - if (typeof language.bind(this)().getDotMinute === 'function') { - return language.bind(this)().getDotMinute(date); - } - var minutes = date.getMinutes(); - return minutes % 5; - }; - getCoarseMinute = function getCoarseMinute(date) { - if (typeof language.bind(this)().getCoarseMinute === 'function') { - return language.bind(this)().getCoarseMinute(date); - } - return date.getMinutes(); - }; - getHour = function getHour(date) { - if (typeof language.bind(this)().getHour === 'function') { - return language.bind(this)().getHour(date); - } - var hour = date.getHours(); - if (date.getMinutes() >= 25) { - return (hour + 1) % 24; - } - return hour; - }; - language = function language() { - var matchingLanguages = uhrGlobals.languages.filter(function (element) { - return (element.code === this.options.language); - }, this); - if (matchingLanguages.length > 0) { - return matchingLanguages[0]; - } - // fallback: return empty object - return {}; - }; - - $.widget("fritteli.uhr", { - "options": { - width: '100%', - status: 'on', - language: 'de_CH', - theme: uhrGlobals.themes[0].styleClass, - force: false, - controls: true, - cookiePath: undefined, - autoresize: true, - mode: 'normal' - }, - "start": start, - "stop": stop, - "toggle": toggle, - "language": setLanguage, - "theme": setTheme, - "time": setTime, - "mode": setMode, - "width": setWidth, - // constructor method - "_create": create, - // destructor method - "_destroy": destroy - }); - $.fritteli.uhr.register = uhrGlobals.registerLanguage; -})(jQuery); diff --git a/src/uehrli.ts b/src/uhr.ts similarity index 97% rename from src/uehrli.ts rename to src/uhr.ts index 58169cd..4a154e3 100644 --- a/src/uehrli.ts +++ b/src/uhr.ts @@ -18,7 +18,7 @@ import {Globals} from "./domain/globals"; import {UhrRenderer} from "./renderer"; import {EMPTY_LAYOUT, Layout} from "./domain/layout"; -export class Uehrli { +export class Uhr { private timer: number = null; private currentMinute: number = null; @@ -428,3 +428,20 @@ export class Uehrli { return EMPTY_LAYOUT; }; } + +declare function $(selector: any): JQuery; + +declare namespace $ { + const cookie: Cookie; + + interface Cookie { + // read all cookies + (): { [name: string]: string } + + // read named cookie + (cookieName: string): string; + + // set cookie with optional options + (cookieName: string, cookieValue: string, cookieOptions?: any): string; + } +} diff --git a/src/widget/widget-prototype.ts b/src/widget/widget-prototype.ts index c72a2a2..8c9785f 100644 --- a/src/widget/widget-prototype.ts +++ b/src/widget/widget-prototype.ts @@ -14,7 +14,7 @@ */ import WidgetCommonProperties = JQueryUI.WidgetCommonProperties; -import {Uehrli} from "../uehrli"; +import {Uhr} from "../uhr"; import {Options} from "./options"; export interface WidgetPrototype extends WidgetCommonProperties { @@ -29,5 +29,5 @@ export interface WidgetPrototype extends WidgetCommonProperties { width: (width: string) => void; _create: () => void; _destroy: () => void; - __fritteli_uhr_instance: Uehrli; + __fritteli_uhr_instance: Uhr; } From 933a3c92f5e13b52fb59af4a923186d6719773ae Mon Sep 17 00:00:00 2001 From: Manuel Friedli Date: Sun, 5 May 2019 02:44:01 +0200 Subject: [PATCH 03/44] Bundle using webpack. --- dist/bundle.js | 208 + dist/jquery.uhr.base.js | 889 --- dist/jquery.uhr.base.min.js | 5 - dist/jquery.uhr.baselangs.js | 717 -- dist/jquery.uhr.baselangs.min.js | 5 - dist/jquery.uhr.complete.js | 1520 ---- dist/jquery.uhr.complete.min.js | 5 - dist/jquery.uhr.langs.js | 717 -- dist/jquery.uhr.langs.min.js | 5 - dist/jquery.uhr.main.js | 805 -- dist/jquery.uhr.main.min.js | 5 - dist/libs.js | 11453 ----------------------------- dist/libs.min.js | 5 - dist/uhr-black.min.css | 1 - dist/uhr-blue.min.css | 1 - dist/uhr-green.min.css | 1 - dist/uhr-pink.min.css | 1 - dist/uhr-red.min.css | 1 - dist/uhr-white.min.css | 1 - dist/uhr-yellow.min.css | 1 - dist/uhr.min.css | 1 - package-lock.json | 13 + package.json | 8 +- src/domain/globals.ts | 7 +- src/domain/layout.ts | 32 +- src/index.ts | 6 +- src/layout/layout-de_ch.ts | 72 + tsconfig.json | 17 + webpack.config.js | 28 + 29 files changed, 368 insertions(+), 16162 deletions(-) create mode 100644 dist/bundle.js delete mode 100644 dist/jquery.uhr.base.js delete mode 100644 dist/jquery.uhr.base.min.js delete mode 100644 dist/jquery.uhr.baselangs.js delete mode 100644 dist/jquery.uhr.baselangs.min.js delete mode 100644 dist/jquery.uhr.complete.js delete mode 100644 dist/jquery.uhr.complete.min.js delete mode 100644 dist/jquery.uhr.langs.js delete mode 100644 dist/jquery.uhr.langs.min.js delete mode 100644 dist/jquery.uhr.main.js delete mode 100644 dist/jquery.uhr.main.min.js delete mode 100644 dist/libs.js delete mode 100644 dist/libs.min.js delete mode 100644 dist/uhr-black.min.css delete mode 100644 dist/uhr-blue.min.css delete mode 100644 dist/uhr-green.min.css delete mode 100644 dist/uhr-pink.min.css delete mode 100644 dist/uhr-red.min.css delete mode 100644 dist/uhr-white.min.css delete mode 100644 dist/uhr-yellow.min.css delete mode 100644 dist/uhr.min.css create mode 100644 src/layout/layout-de_ch.ts create mode 100644 tsconfig.json create mode 100644 webpack.config.js diff --git a/dist/bundle.js b/dist/bundle.js new file mode 100644 index 0000000..a66d2e4 --- /dev/null +++ b/dist/bundle.js @@ -0,0 +1,208 @@ +/******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 0); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ "./node_modules/jquery/dist/jquery.js": +/*!********************************************!*\ + !*** ./node_modules/jquery/dist/jquery.js ***! + \********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\n * jQuery JavaScript Library v3.4.1\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2019-05-01T21:04Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( true && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar document = window.document;\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar concat = arr.concat;\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n // Support: Chrome <=57, Firefox <=52\n // In some browsers, typeof returns \"function\" for HTML elements\n // (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n // We don't want to classify *any* DOM node as a function.\n return typeof obj === \"function\" && typeof obj.nodeType !== \"number\";\n };\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.4.1\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// Support: Android <=4.0 only\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a global context\n\tglobalEval: function( code, options ) {\n\t\tDOMEval( code, { nonce: options && options.nonce } );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Support: Android <=4.0 only\n\ttrim: function( text ) {\n\t\treturn text == null ?\n\t\t\t\"\" :\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\nfunction( i, name ) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.4\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2019-04-08\n */\n(function( window ) {\n\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ({}).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpush_native = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = \"(?:\\\\\\\\.|[\\\\w-]|[^\\0-\\\\xa0])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace +\n\t\t\"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trhtml = /HTML$/i,\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\n\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\tvar high = \"0x\" + escaped - 0x10000;\n\t\t// NaN means non-codepoint\n\t\t// Support: Firefox<24\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\n\t\treturn high !== high || escapedWhitespace ?\n\t\t\tescaped :\n\t\t\thigh < 0 ?\n\t\t\t\t// BMP codepoint\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t(arr = slice.call( preferredDoc.childNodes )),\n\t\tpreferredDoc.childNodes\n\t);\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpush_native.apply( target, slice.call(els) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\n\t\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\t\tsetDocument( context );\n\t\t}\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( (m = match[1]) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( (elem = context.getElementById( m )) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && (elem = newContext.getElementById( m )) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[2] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t(!rbuggyQSA || !rbuggyQSA.test( selector )) &&\n\n\t\t\t\t// Support: IE 8 only\n\t\t\t\t// Exclude object elements\n\t\t\t\t(nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\") ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 && rdescend.test( selector ) ) {\n\n\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\tif ( (nid = context.getAttribute( \"id\" )) ) {\n\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", (nid = expando) );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[i] = \"#\" + nid + \" \" + toSelector( groups[i] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn (cache[ key + \" \" ] = value);\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement(\"fieldset\");\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split(\"|\"),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[i] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( (cur = cur.nextSibling) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\tvar namespace = elem.namespaceURI,\n\t\tdocElem = (elem.ownerDocument || elem).documentElement;\n\n\t// Support: IE <=8\n\t// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n\t// https://bugs.jquery.com/ticket/4833\n\treturn !rhtml.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9-11, Edge\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\tif ( preferredDoc !== document &&\n\t\t(subWindow = document.defaultView) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert(function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute(\"className\");\n\t});\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert(function( el ) {\n\t\tel.appendChild( document.createComment(\"\") );\n\t\treturn !el.getElementsByTagName(\"*\").length;\n\t});\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t});\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode(\"id\");\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode(\"id\");\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( (elem = elems[i++]) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode(\"id\");\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( (elem = results[i++]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = rnative.test( document.querySelectorAll )) ) {\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( el ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll(\"[msallowcapture^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push(\"~=\");\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( el ) {\n\t\t\tel.innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll(\"[name=d]\").length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll(\":enabled\").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll(\":disabled\").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll(\"*,:x\");\n\t\t\trbuggyQSA.push(\",.*:\");\n\t\t});\n\t}\n\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\tassert(function( el ) {\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t});\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t));\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( (b = b.parentNode) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\tif ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\t\t\treturn a === document ? -1 :\n\t\t\t\tb === document ? 1 :\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[i] === bp[i] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\n\tif ( ( context.ownerDocument || context ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn (sel + \"\").replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( (elem = results[i++]) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( (node = elem[i++]) ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[3] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[3] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[6] && match[2];\n\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[4] || match[5] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() { return true; } :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[0] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t\"has\": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t\"contains\": markFunction(function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ?\n\t\t\t\targument + length :\n\t\t\t\targument > length ?\n\t\t\t\t\tlength :\n\t\t\t\t\targument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( (tokens = []) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push({\n\t\t\t\tvalue: matched,\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\n\t\t\t});\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push({\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t});\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[i].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( (oldCache = uniqueCache[ key ]) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context === document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching elements by id\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\tif ( !context && elem.ownerDocument !== document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[0] = match[0].slice( 0 );\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {\n\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[i];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( (seed = find(\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\n\t\t\t\t)) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert(function( el ) {\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement(\"fieldset\") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( el ) {\n\tel.innerHTML = \"\";\n\treturn el.firstChild.getAttribute(\"href\") === \"#\" ;\n}) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert(function( el ) {\n\tel.innerHTML = \"\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n}) ) {\n\taddHandle( \"value\", function( elem, name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert(function( el ) {\n\treturn el.getAttribute(\"disabled\") == null;\n}) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\tnull;\n\t\t}\n\t});\n}\n\nreturn Sizzle;\n\n})( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n};\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( typeof elem.contentDocument !== \"undefined\" ) {\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the master Deferred\n\t\t\tmaster = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tmaster.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( master.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn master.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), master.reject );\n\t\t}\n\n\t\treturn master.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\tvalue :\n\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (#9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\nvar swap = function( elem, options, callback, args ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.apply( elem, args || [] );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// Support: IE <=9 only\n\toption: [ 1, \"\" ],\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting or other required elements.\n\tthead: [ 1, \"\", \"
\" ],\n\tcol: [ 2, \"\", \"
\" ],\n\ttr: [ 2, \"\", \"
\" ],\n\ttd: [ 3, \"\", \"
\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\n// Support: IE <=9 only\nwrapMap.optgroup = wrapMap.option;\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n} )();\n\n\nvar\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 - 11+\n// focus() and blur() are asynchronous, except when they are no-op.\n// So expect focus to be synchronous when the element is already active,\n// and blur to be synchronous when the element is not already active.\n// (focus and blur are always synchronous in other supported browsers,\n// this just defines when we can count on it).\nfunction expectSync( elem, type ) {\n\treturn ( elem === safeActiveElement() ) === ( type === \"focus\" );\n}\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = {};\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tvar event = jQuery.event.fix( nativeEvent );\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\t\t\thandlers = ( dataPriv.get( this, \"events\" ) || {} )[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", returnTrue );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, expectSync ) {\n\n\t// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !expectSync ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar notAsync, result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\t// Saved data should be false in such cases, but might be a leftover capture object\n\t\t\t\t// from an async native handler (gh-4350)\n\t\t\t\tif ( !saved.length ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t// focus() and blur() are asynchronous\n\t\t\t\t\tnotAsync = expectSync( this, type );\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tif ( saved !== result || notAsync ) {\n\t\t\t\t\t\tdataPriv.set( this, type, false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = {};\n\t\t\t\t\t}\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\treturn result.value;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering the\n\t\t\t\t// native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\n\t\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t\t// Extend with the prototype to reset the above stopImmediatePropagation()\n\t\t\t\t\t\tjQuery.extend( saved[ 0 ], jQuery.Event.prototype ),\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\n\twhich: function( event ) {\n\t\tvar button = event.button;\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && rkeyEvent.test( event.type ) ) {\n\t\t\treturn event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\tif ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {\n\t\t\tif ( button & 1 ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\tif ( button & 2 ) {\n\t\t\t\treturn 3;\n\t\t\t}\n\n\t\t\tif ( button & 4 ) {\n\t\t\t\treturn 2;\n\t\t\t}\n\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn event.which;\n\t}\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, expectSync );\n\n\t\t\t// Return false to allow normal processing in the caller\n\t\t\treturn false;\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t/* eslint-disable max-len */\n\n\t// See https://github.com/eslint/eslint/issues/3229\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)[^>]*)\\/>/gi,\n\n\t/* eslint-enable */\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.access( src );\n\t\tpdataCur = dataPriv.set( dest, pdataOld );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdelete pdataCur.handle;\n\t\t\tpdataCur.events = {};\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = concat.apply( [], args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html.replace( rxhtmlTag, \"<$1>\" );\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, #12537)\n\t// .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trcustomProp = /^--/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t// This happens for inline elements with no explicit setting (gh-3571)\n\t// Support: Android <=4.1 - 4.3 only\n\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t// Support: IE 9-11 only\n\t// Also use offsetWidth/offsetHeight for when box sizing is unreliable\n\t// We use getClientRects() to check for hidden/disconnected.\n\t// In those cases, the computed value can be trusted to be border-box\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\t\tval === \"auto\" ||\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"gridArea\": true,\n\t\t\"gridColumn\": true,\n\t\t\"gridColumnEnd\": true,\n\t\t\"gridColumnStart\": true,\n\t\t\"gridRow\": true,\n\t\t\"gridRowEnd\": true,\n\t\t\"gridRowStart\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t\t} ) :\n\t\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\t\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue && type !== false ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = classesToArray( value );\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || {} )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = Date.now();\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {\n\t\txml = undefined;\n\t}\n\n\tif ( !xml || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\tjQuery.error( \"Invalid XML: \" + data );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} )\n\t\t.filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} )\n\t\t.map( function( i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\toriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce++ ) + uncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\n\njQuery._evalUrl = function( url, options ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \" - + + + + + - + + + + - - - + + - - + + - + + + + + + + + + + + - + + - - - - - - - - - - - - + + + + diff --git a/webpack.common.js b/webpack.common.js index 1f7af67..711f0b1 100644 --- a/webpack.common.js +++ b/webpack.common.js @@ -16,7 +16,7 @@ module.exports = (env, argv) => ({ layout_nl: require.resolve('./src/layout/layout-nl.ts'), layout_pt: require.resolve('./src/layout/layout-pt.ts'), style_main: require.resolve('./resources/styles/uhr.scss'), - style_black: require.resolve('./css/uhr-black.css'), + style_black: require.resolve('./css/uhr-black.scss'), style_blue: require.resolve('./css/uhr-blue.css'), style_green: require.resolve('./css/uhr-green.css'), style_pink: require.resolve('./css/uhr-pink.css'), From d00292fbb95a43d862d6802e7755b06d2dd42760 Mon Sep 17 00:00:00 2001 From: Manuel Friedli Date: Thu, 9 May 2019 19:04:17 +0200 Subject: [PATCH 18/44] Migrate from CSS to SCSS. There's still a lot of potential, though. --- css/uhr-black.scss | 26 ++++++++------- css/{uhr-red.css => uhr-blue.scss} | 28 ++++++++-------- css/{uhr-blue.css => uhr-green.scss} | 28 ++++++++-------- css/uhr-pink.css | 41 ----------------------- css/uhr-pink.scss | 43 ++++++++++++++++++++++++ css/{uhr-green.css => uhr-red.scss} | 28 ++++++++-------- css/{uhr-white.css => uhr-white.scss} | 44 +++++++++++++------------ css/{uhr-yellow.css => uhr-yellow.scss} | 44 +++++++++++++------------ dist/assets/uhr-black.css | 2 +- dist/assets/uhr-blue.css | 2 +- dist/assets/uhr-green.css | 2 +- dist/assets/uhr-pink.css | 2 +- dist/assets/uhr-red.css | 2 +- dist/assets/uhr-white.css | 2 +- dist/assets/uhr-yellow.css | 2 +- webpack.common.js | 12 +++---- 16 files changed, 161 insertions(+), 147 deletions(-) rename css/{uhr-red.css => uhr-blue.scss} (59%) rename css/{uhr-blue.css => uhr-green.scss} (60%) delete mode 100644 css/uhr-pink.css create mode 100644 css/uhr-pink.scss rename css/{uhr-green.css => uhr-red.scss} (59%) rename css/{uhr-white.css => uhr-white.scss} (50%) rename css/{uhr-yellow.css => uhr-yellow.scss} (50%) diff --git a/css/uhr-black.scss b/css/uhr-black.scss index bf55a62..764c4be 100644 --- a/css/uhr-black.scss +++ b/css/uhr-black.scss @@ -12,20 +12,22 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ -.uhr.black { - background-color: #111; +.black { + &.uhr { + background-color: #111; - .dot:not(.active) { - border-color: rgba(255, 255, 255, 0.1); - box-shadow: 0 0 0.1em rgba(255, 255, 255, 0.1); + .dot:not(.active) { + border-color: rgba(255, 255, 255, 0.1); + box-shadow: 0 0 0.1em rgba(255, 255, 255, 0.1); + } + + .letter:not(.active) { + color: rgba(255, 255, 255, 0.1); + text-shadow: 0 0 0.1em rgba(255, 255, 255, 0.1); + } } - .letter:not(.active) { - color: rgba(255, 255, 255, 0.1); - text-shadow: 0 0 0.1em rgba(255, 255, 255, 0.1); + .onoffswitch-inner:before { + background-color: #111; } } - -.black .onoffswitch-inner:before { - background-color: #111; -} diff --git a/css/uhr-red.css b/css/uhr-blue.scss similarity index 59% rename from css/uhr-red.css rename to css/uhr-blue.scss index 621517c..613e709 100644 --- a/css/uhr-red.css +++ b/css/uhr-blue.scss @@ -12,20 +12,22 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ -.uhr.red { - background-color: #700; -} +.blue { + &.uhr { + background-color: #00a; -.red .onoffswitch-inner:before { - background-color: #700; -} + .dot:not(.active) { + border-color: rgba(255, 255, 255, 0.1); + box-shadow: 0 0 0.1em rgba(255, 255, 255, 0.1); + } -.uhr.red .dot:not(.active) { - border-color: rgba(255, 255, 255, 0.1); - box-shadow: 0 0 0.1em rgba(255, 255, 255, 0.1); -} + .letter:not(.active) { + color: rgba(255, 255, 255, 0.1); + text-shadow: 0 0 0.1em rgba(255, 255, 255, 0.1); + } + } -.uhr.red .letter:not(.active) { - color: rgba(255, 255, 255, 0.1); - text-shadow: 0 0 0.1em rgba(255, 255, 255, 0.1); + .onoffswitch-inner:before { + background-color: #00a; + } } diff --git a/css/uhr-blue.css b/css/uhr-green.scss similarity index 60% rename from css/uhr-blue.css rename to css/uhr-green.scss index 743fc10..56b9abb 100644 --- a/css/uhr-blue.css +++ b/css/uhr-green.scss @@ -12,20 +12,22 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ -.uhr.blue { - background-color: #00a; -} +.green { + &.uhr { + background-color: #0c0; -.blue .onoffswitch-inner:before { - background-color: #00a; -} + .dot:not(.active) { + border-color: rgba(0, 0, 0, 0.1); + box-shadow: 0 0 0.1em rgba(0, 0, 0, 0.1); + } -.uhr.blue .dot:not(.active) { - border-color: rgba(255, 255, 255, 0.1); - box-shadow: 0 0 0.1em rgba(255, 255, 255, 0.1); -} + .letter:not(.active) { + color: rgba(0, 0, 0, 0.1); + text-shadow: 0 0 0.1em rgba(0, 0, 0, 0.1); + } + } -.uhr.blue .letter:not(.active) { - color: rgba(255, 255, 255, 0.1); - text-shadow: 0 0 0.1em rgba(255, 255, 255, 0.1); + .onoffswitch-inner:before { + background-color: #0c0; + } } diff --git a/css/uhr-pink.css b/css/uhr-pink.css deleted file mode 100644 index 27525f4..0000000 --- a/css/uhr-pink.css +++ /dev/null @@ -1,41 +0,0 @@ -/* -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ -.uhr.pink { - background-color: #f0a; -} - -.uhr.pink .dot.active { - border-color: #fff; - box-shadow: 0 0 0.1em #fff; -} - -.uhr.pink .letter.active { - color: #fff; - text-shadow: 0 0 0.1em #fff; -} - -.pink .onoffswitch-inner:before { - background-color: #f0a; -} - -.uhr.pink .dot:not(.active) { - border-color: rgba(255, 255, 255, 0.1); - box-shadow: 0 0 0.1em rgba(255, 255, 255, 0.1); -} - -.uhr.pink .letter:not(.active) { - color: rgba(255, 255, 255, 0.1); - text-shadow: 0 0 0.1em rgba(255, 255, 255, 0.1); -} diff --git a/css/uhr-pink.scss b/css/uhr-pink.scss new file mode 100644 index 0000000..5c9a3dd --- /dev/null +++ b/css/uhr-pink.scss @@ -0,0 +1,43 @@ +/* +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +.pink { + &.uhr { + background-color: #f0a; + + .dot.active { + border-color: #fff; + box-shadow: 0 0 0.1em #fff; + } + + .letter.active { + color: #fff; + text-shadow: 0 0 0.1em #fff; + } + + .dot:not(.active) { + border-color: rgba(255, 255, 255, 0.1); + box-shadow: 0 0 0.1em rgba(255, 255, 255, 0.1); + } + + .letter:not(.active) { + color: rgba(255, 255, 255, 0.1); + text-shadow: 0 0 0.1em rgba(255, 255, 255, 0.1); + } + } + + .onoffswitch-inner:before { + background-color: #f0a; + } +} diff --git a/css/uhr-green.css b/css/uhr-red.scss similarity index 59% rename from css/uhr-green.css rename to css/uhr-red.scss index bd821a5..428ee49 100644 --- a/css/uhr-green.css +++ b/css/uhr-red.scss @@ -12,20 +12,22 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ -.uhr.green { - background-color: #0c0; -} +.red { + &.uhr { + background-color: #700; -.green .onoffswitch-inner:before { - background-color: #0c0; -} + .dot:not(.active) { + border-color: rgba(255, 255, 255, 0.1); + box-shadow: 0 0 0.1em rgba(255, 255, 255, 0.1); + } -.uhr.green .dot:not(.active) { - border-color: rgba(0, 0, 0, 0.1); - box-shadow: 0 0 0.1em rgba(0, 0, 0, 0.1); -} + .letter:not(.active) { + color: rgba(255, 255, 255, 0.1); + text-shadow: 0 0 0.1em rgba(255, 255, 255, 0.1); + } + } -.uhr.green .letter:not(.active) { - color: rgba(0, 0, 0, 0.1); - text-shadow: 0 0 0.1em rgba(0, 0, 0, 0.1); + .onoffswitch-inner:before { + background-color: #700; + } } diff --git a/css/uhr-white.css b/css/uhr-white.scss similarity index 50% rename from css/uhr-white.css rename to css/uhr-white.scss index 7989be0..969d1a0 100644 --- a/css/uhr-white.css +++ b/css/uhr-white.scss @@ -12,30 +12,32 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ -.uhr.white { - background-color: #ccc; -} +.white { + &.uhr { + background-color: #ccc; -.uhr.white .dot.active { - border-color: #fff; - box-shadow: 0 0 0.1em #fff; -} + .dot.active { + border-color: #fff; + box-shadow: 0 0 0.1em #fff; + } -.uhr.white .letter.active { - color: #fff; - text-shadow: 0 0 0.1em #fff; -} + .letter.active { + color: #fff; + text-shadow: 0 0 0.1em #fff; + } -.white .onoffswitch-inner:before { - background-color: #ccc; -} + .dot:not(.active) { + border-color: rgba(0, 0, 0, 0.1); + box-shadow: 0 0 0.1em rgba(0, 0, 0, 0.1); + } -.uhr.white .dot:not(.active) { - border-color: rgba(0, 0, 0, 0.1); - box-shadow: 0 0 0.1em rgba(0, 0, 0, 0.1); -} + .letter:not(.active) { + color: rgba(0, 0, 0, 0.1); + text-shadow: 0 0 0.1em rgba(0, 0, 0, 0.1); + } + } -.uhr.white .letter:not(.active) { - color: rgba(0, 0, 0, 0.1); - text-shadow: 0 0 0.1em rgba(0, 0, 0, 0.1); + .onoffswitch-inner:before { + background-color: #ccc; + } } diff --git a/css/uhr-yellow.css b/css/uhr-yellow.scss similarity index 50% rename from css/uhr-yellow.css rename to css/uhr-yellow.scss index d109178..9d44d1b 100644 --- a/css/uhr-yellow.css +++ b/css/uhr-yellow.scss @@ -12,30 +12,32 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ -.uhr.yellow { - background-color: #fd0; -} +.yellow { + &.uhr { + background-color: #fd0; -.uhr.yellow .dot.active { - border-color: #fff; - box-shadow: 0 0 0.1em #fff; -} + .dot.active { + border-color: #fff; + box-shadow: 0 0 0.1em #fff; + } -.uhr.yellow .letter.active { - color: #fff; - text-shadow: 0 0 0.1em #fff; -} + .letter.active { + color: #fff; + text-shadow: 0 0 0.1em #fff; + } -.yellow .onoffswitch-inner:before { - background-color: #fd0; -} + .dot:not(.active) { + border-color: rgba(0, 0, 0, 0.05); + box-shadow: 0 0 0.1em rgba(0, 0, 0, 0.05); + } -.uhr.yellow .dot:not(.active) { - border-color: rgba(0, 0, 0, 0.05); - box-shadow: 0 0 0.1em rgba(0, 0, 0, 0.05); -} + .letter:not(.active) { + color: rgba(0, 0, 0, 0.05); + text-shadow: 0 0 0.1em rgba(0, 0, 0, 0.05); + } + } -.uhr.yellow .letter:not(.active) { - color: rgba(0, 0, 0, 0.05); - text-shadow: 0 0 0.1em rgba(0, 0, 0, 0.05); + .onoffswitch-inner:before { + background-color: #fd0; + } } diff --git a/dist/assets/uhr-black.css b/dist/assets/uhr-black.css index 21b75c7..e02e7f2 100644 --- a/dist/assets/uhr-black.css +++ b/dist/assets/uhr-black.css @@ -1 +1 @@ -.uhr.black{background-color:#111}.uhr.black .dot:not(.active){border-color:rgba(255,255,255,0.1);box-shadow:0 0 0.1em rgba(255,255,255,0.1)}.uhr.black .letter:not(.active){color:rgba(255,255,255,0.1);text-shadow:0 0 0.1em rgba(255,255,255,0.1)}.black .onoffswitch-inner:before{background-color:#111} +.black.uhr{background-color:#111}.black.uhr .dot:not(.active){border-color:rgba(255,255,255,0.1);box-shadow:0 0 0.1em rgba(255,255,255,0.1)}.black.uhr .letter:not(.active){color:rgba(255,255,255,0.1);text-shadow:0 0 0.1em rgba(255,255,255,0.1)}.black .onoffswitch-inner:before{background-color:#111} diff --git a/dist/assets/uhr-blue.css b/dist/assets/uhr-blue.css index 85d8597..92e51e6 100644 --- a/dist/assets/uhr-blue.css +++ b/dist/assets/uhr-blue.css @@ -1 +1 @@ -.uhr.blue{background-color:#00a}.blue .onoffswitch-inner:before{background-color:#00a}.uhr.blue .dot:not(.active){border-color:rgba(255,255,255,0.1);box-shadow:0 0 0.1em rgba(255,255,255,0.1)}.uhr.blue .letter:not(.active){color:rgba(255,255,255,0.1);text-shadow:0 0 0.1em rgba(255,255,255,0.1)} +.blue.uhr{background-color:#00a}.blue.uhr .dot:not(.active){border-color:rgba(255,255,255,0.1);box-shadow:0 0 0.1em rgba(255,255,255,0.1)}.blue.uhr .letter:not(.active){color:rgba(255,255,255,0.1);text-shadow:0 0 0.1em rgba(255,255,255,0.1)}.blue .onoffswitch-inner:before{background-color:#00a} diff --git a/dist/assets/uhr-green.css b/dist/assets/uhr-green.css index cdd5d56..77a98dd 100644 --- a/dist/assets/uhr-green.css +++ b/dist/assets/uhr-green.css @@ -1 +1 @@ -.uhr.green{background-color:#0c0}.green .onoffswitch-inner:before{background-color:#0c0}.uhr.green .dot:not(.active){border-color:rgba(0,0,0,0.1);box-shadow:0 0 0.1em rgba(0,0,0,0.1)}.uhr.green .letter:not(.active){color:rgba(0,0,0,0.1);text-shadow:0 0 0.1em rgba(0,0,0,0.1)} +.green.uhr{background-color:#0c0}.green.uhr .dot:not(.active){border-color:rgba(0,0,0,0.1);box-shadow:0 0 0.1em rgba(0,0,0,0.1)}.green.uhr .letter:not(.active){color:rgba(0,0,0,0.1);text-shadow:0 0 0.1em rgba(0,0,0,0.1)}.green .onoffswitch-inner:before{background-color:#0c0} diff --git a/dist/assets/uhr-pink.css b/dist/assets/uhr-pink.css index 657023f..efde2c3 100644 --- a/dist/assets/uhr-pink.css +++ b/dist/assets/uhr-pink.css @@ -1 +1 @@ -.uhr.pink{background-color:#f0a}.uhr.pink .dot.active{border-color:#fff;box-shadow:0 0 0.1em #fff}.uhr.pink .letter.active{color:#fff;text-shadow:0 0 0.1em #fff}.pink .onoffswitch-inner:before{background-color:#f0a}.uhr.pink .dot:not(.active){border-color:rgba(255,255,255,0.1);box-shadow:0 0 0.1em rgba(255,255,255,0.1)}.uhr.pink .letter:not(.active){color:rgba(255,255,255,0.1);text-shadow:0 0 0.1em rgba(255,255,255,0.1)} +.pink.uhr{background-color:#f0a}.pink.uhr .dot.active{border-color:#fff;box-shadow:0 0 0.1em #fff}.pink.uhr .letter.active{color:#fff;text-shadow:0 0 0.1em #fff}.pink.uhr .dot:not(.active){border-color:rgba(255,255,255,0.1);box-shadow:0 0 0.1em rgba(255,255,255,0.1)}.pink.uhr .letter:not(.active){color:rgba(255,255,255,0.1);text-shadow:0 0 0.1em rgba(255,255,255,0.1)}.pink .onoffswitch-inner:before{background-color:#f0a} diff --git a/dist/assets/uhr-red.css b/dist/assets/uhr-red.css index b572799..fd902e7 100644 --- a/dist/assets/uhr-red.css +++ b/dist/assets/uhr-red.css @@ -1 +1 @@ -.uhr.red{background-color:#700}.red .onoffswitch-inner:before{background-color:#700}.uhr.red .dot:not(.active){border-color:rgba(255,255,255,0.1);box-shadow:0 0 0.1em rgba(255,255,255,0.1)}.uhr.red .letter:not(.active){color:rgba(255,255,255,0.1);text-shadow:0 0 0.1em rgba(255,255,255,0.1)} +.red.uhr{background-color:#700}.red.uhr .dot:not(.active){border-color:rgba(255,255,255,0.1);box-shadow:0 0 0.1em rgba(255,255,255,0.1)}.red.uhr .letter:not(.active){color:rgba(255,255,255,0.1);text-shadow:0 0 0.1em rgba(255,255,255,0.1)}.red .onoffswitch-inner:before{background-color:#700} diff --git a/dist/assets/uhr-white.css b/dist/assets/uhr-white.css index 92639d2..c921f95 100644 --- a/dist/assets/uhr-white.css +++ b/dist/assets/uhr-white.css @@ -1 +1 @@ -.uhr.white{background-color:#ccc}.uhr.white .dot.active{border-color:#fff;box-shadow:0 0 0.1em #fff}.uhr.white .letter.active{color:#fff;text-shadow:0 0 0.1em #fff}.white .onoffswitch-inner:before{background-color:#ccc}.uhr.white .dot:not(.active){border-color:rgba(0,0,0,0.1);box-shadow:0 0 0.1em rgba(0,0,0,0.1)}.uhr.white .letter:not(.active){color:rgba(0,0,0,0.1);text-shadow:0 0 0.1em rgba(0,0,0,0.1)} +.white.uhr{background-color:#ccc}.white.uhr .dot.active{border-color:#fff;box-shadow:0 0 0.1em #fff}.white.uhr .letter.active{color:#fff;text-shadow:0 0 0.1em #fff}.white.uhr .dot:not(.active){border-color:rgba(0,0,0,0.1);box-shadow:0 0 0.1em rgba(0,0,0,0.1)}.white.uhr .letter:not(.active){color:rgba(0,0,0,0.1);text-shadow:0 0 0.1em rgba(0,0,0,0.1)}.white .onoffswitch-inner:before{background-color:#ccc} diff --git a/dist/assets/uhr-yellow.css b/dist/assets/uhr-yellow.css index 7292498..60a4638 100644 --- a/dist/assets/uhr-yellow.css +++ b/dist/assets/uhr-yellow.css @@ -1 +1 @@ -.uhr.yellow{background-color:#fd0}.uhr.yellow .dot.active{border-color:#fff;box-shadow:0 0 0.1em #fff}.uhr.yellow .letter.active{color:#fff;text-shadow:0 0 0.1em #fff}.yellow .onoffswitch-inner:before{background-color:#fd0}.uhr.yellow .dot:not(.active){border-color:rgba(0,0,0,0.05);box-shadow:0 0 0.1em rgba(0,0,0,0.05)}.uhr.yellow .letter:not(.active){color:rgba(0,0,0,0.05);text-shadow:0 0 0.1em rgba(0,0,0,0.05)} +.yellow.uhr{background-color:#fd0}.yellow.uhr .dot.active{border-color:#fff;box-shadow:0 0 0.1em #fff}.yellow.uhr .letter.active{color:#fff;text-shadow:0 0 0.1em #fff}.yellow.uhr .dot:not(.active){border-color:rgba(0,0,0,0.05);box-shadow:0 0 0.1em rgba(0,0,0,0.05)}.yellow.uhr .letter:not(.active){color:rgba(0,0,0,0.05);text-shadow:0 0 0.1em rgba(0,0,0,0.05)}.yellow .onoffswitch-inner:before{background-color:#fd0} diff --git a/webpack.common.js b/webpack.common.js index 711f0b1..9109683 100644 --- a/webpack.common.js +++ b/webpack.common.js @@ -17,12 +17,12 @@ module.exports = (env, argv) => ({ layout_pt: require.resolve('./src/layout/layout-pt.ts'), style_main: require.resolve('./resources/styles/uhr.scss'), style_black: require.resolve('./css/uhr-black.scss'), - style_blue: require.resolve('./css/uhr-blue.css'), - style_green: require.resolve('./css/uhr-green.css'), - style_pink: require.resolve('./css/uhr-pink.css'), - style_red: require.resolve('./css/uhr-red.css'), - style_white: require.resolve('./css/uhr-white.css'), - style_yellow: require.resolve('./css/uhr-yellow.css') + style_blue: require.resolve('./css/uhr-blue.scss'), + style_green: require.resolve('./css/uhr-green.scss'), + style_pink: require.resolve('./css/uhr-pink.scss'), + style_red: require.resolve('./css/uhr-red.scss'), + style_white: require.resolve('./css/uhr-white.scss'), + style_yellow: require.resolve('./css/uhr-yellow.scss') }, module: { rules: [ From 2c30a14c03fb217a739e27c9a42d7850eadcf6ca Mon Sep 17 00:00:00 2001 From: Manuel Friedli Date: Thu, 9 May 2019 19:25:52 +0200 Subject: [PATCH 19/44] Sort imports alphabetically. --- dist/lib/layout_de.js | 2 +- dist/lib/layout_de.js.map | 2 +- dist/lib/layout_de_ch.js | 2 +- dist/lib/layout_de_ch.js.map | 2 +- dist/lib/layout_de_ch_genau.js | 2 +- dist/lib/layout_de_ch_genau.js.map | 2 +- dist/lib/uhr.bundle.js | 2 +- dist/lib/uhr.bundle.js.map | 2 +- dist/lib/uhr.js | 2 +- dist/lib/uhr.js.map | 2 +- src/bundle.ts | 2 +- src/index.ts | 4 ++-- src/uhr.ts | 6 +++--- 13 files changed, 16 insertions(+), 16 deletions(-) diff --git a/dist/lib/layout_de.js b/dist/lib/layout_de.js index 45e58c1..ea9ad5b 100644 --- a/dist/lib/layout_de.js +++ b/dist/lib/layout_de.js @@ -1,2 +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)}}); +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=2)}({2:function(e,t,r){"use strict";r.r(t),r.d(t,"Layout_de",function(){return l});var n={4:[8,9,10,11]},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 index 5aa2129..fc55f72 100644 --- a/dist/lib/layout_de.js.map +++ b/dist/lib/layout_de.js.map @@ -1 +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":"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","file":"lib/layout_de.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 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 +{"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":"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","file":"lib/layout_de.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 2);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst es_ist: WordDefinition = {1: [1, 2, 4, 5, 6]};\nconst uhr: WordDefinition = {10: [9, 10, 11]};\nconst nach: WordDefinition = {4: [8, 9, 10, 11]};\nconst vor: WordDefinition = {4: [1, 2, 3]};\nconst halb: WordDefinition = {5: [1, 2, 3, 4]};\nconst fuenf: WordDefinition = {1: [8, 9, 10, 11]};\nconst zehn: WordDefinition = {2: [1, 2, 3, 4]};\nconst viertel: WordDefinition = {3: [5, 6, 7, 8, 9, 10, 11]};\nconst zwanzig: WordDefinition = {2: [5, 6, 7, 8, 9, 10, 11]};\nconst dreiviertel: WordDefinition = {3: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]};\n\nexport const Layout_de: Layout = {\n code: 'de',\n hours: {\n '0,12': {9: [7, 8, 9, 10, 11]},\n '1,13': {6: [1, 2, 3, 4]},\n '2,14': {6: [8, 9, 10, 11]},\n '3,15': {7: [1, 2, 3, 4]},\n '4,16': {7: [8, 9, 10, 11]},\n '5,17': {5: [8, 9, 10, 11]},\n '6,18': {8: [1, 2, 3, 4, 5]},\n '7,19': {9: [1, 2, 3, 4, 5, 6]},\n '8,20': {8: [8, 9, 10, 11]},\n '9,21': {10: [4, 5, 6, 7]},\n '10,22': {10: [1, 2, 3, 4]},\n '11,23': {5: [6, 7, 8]}\n },\n letters: [\n 'ESKISTAFÜNF',\n 'ZEHNZWANZIG',\n 'DREIVIERTEL',\n 'VORFUNKNACH',\n 'HALBAELFÜNF',\n 'EINSXAMZWEI',\n 'DREIPMJVIER',\n 'SECHSNLACHT',\n 'SIEBENZWÖLF',\n 'ZEHNEUNKUHR'\n ],\n minutes: {\n '0,1,2,3,4': uhr,\n '5,6,7,8,9': [fuenf, nach],\n '10,11,12,13,14': [zehn, nach],\n '15,16,17,18,19': [viertel, nach],\n '20,21,22,23,24': [zwanzig, nach],\n '25,26,27,28,29': [fuenf, vor, halb],\n '30,31,32,33,34': halb,\n '35,36,37,38,39': [fuenf, nach, halb],\n '40,41,42,43,44': [zwanzig, vor],\n '45,46,47,48,49': dreiviertel,\n '50,51,52,53,54': [zehn, vor],\n '55,56,57,58,59': [fuenf, vor]\n },\n permanent: es_ist,\n prettyName: 'Deutsch',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_de);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/lib/layout_de_ch.js b/dist/lib/layout_de_ch.js index 3170e97..a3e8ebd 100644 --- a/dist/lib/layout_de_ch.js +++ b/dist/lib/layout_de_ch.js @@ -1,2 +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)}}); +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=3)}({3: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 index 6c17d93..95f47ab 100644 --- a/dist/lib/layout_de_ch.js.map +++ b/dist/lib/layout_de_ch.js.map @@ -1 +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":"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","file":"lib/layout_de_ch.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 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 +{"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":"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","file":"lib/layout_de_ch.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 3);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst 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 index 7a9f0d6..4e394d2 100644 --- a/dist/lib/layout_de_ch_genau.js +++ b/dist/lib/layout_de_ch_genau.js @@ -1,2 +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)}}); +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=4)}({4: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 index cfeb775..a680932 100644 --- a/dist/lib/layout_de_ch_genau.js.map +++ b/dist/lib/layout_de_ch_genau.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://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 +{"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 = 4);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst es_isch: WordDefinition = {1: [1, 2, 4, 5, 6, 7]};\nconst genau: WordDefinition = {3: [7, 8, 9, 10, 11]};\nconst ab: WordDefinition = {4: [4, 5]};\nconst vor: WordDefinition = {4: [1, 2, 3]};\nconst haubi: WordDefinition = {4: [7, 8, 9, 10, 11]};\nconst fuef: WordDefinition = {1: [9, 10, 11]};\nconst zae: WordDefinition = {2: [9, 10, 11]};\nconst viertu: WordDefinition = {2: [1, 2, 3, 4, 5, 6]};\nconst zwaenzg: WordDefinition = {3: [1, 2, 3, 4, 5, 6]};\n\nexport const Layout_de_CH_genau: Layout = {\n code: 'de_CH_genau',\n hours: {\n '0,12': {10: [1, 2, 3, 4, 5, 6]},\n '1,13': {5: [1, 2, 3]},\n '2,14': {5: [4, 5, 6, 7]},\n '3,15': {5: [9, 10, 11]},\n '4,16': {6: [1, 2, 3, 4, 5]},\n '5,17': {6: [6, 7, 8, 9]},\n '6,18': {7: [1, 2, 3, 4, 5, 6]},\n '7,19': {7: [7, 8, 9, 10, 11]},\n '8,20': {8: [1, 2, 3, 4, 5]},\n '9,21': {8: [6, 7, 8, 9]},\n '10,22': {9: [1, 2, 3, 4]},\n '11,23': {9: [8, 9, 10, 11]}\n },\n letters: [\n 'ESKISCHAFÜF',\n 'VIERTUBFZÄÄ',\n 'ZWÄNZGGENAU',\n 'VORABOHAUBI',\n 'EISZWÖISDRÜ',\n 'VIERIFÜFIQT',\n 'SÄCHSISIBNI',\n 'ACHTINÜNIEL',\n 'ZÄNIERBEUFI',\n 'ZWÖUFINAUHR'\n ],\n minutes: {\n '0': genau,\n '5,6,7,8,9': [fuef, ab],\n '10,11,12,13,14': [zae, ab],\n '15,16,17,18,19': [viertu, ab],\n '20,21,22,23,24': [zwaenzg, ab],\n '25,26,27,28,29': [fuef, vor, haubi],\n '30,31,32,33,34': haubi,\n '35,36,37,38,39': [fuef, ab, haubi],\n '40,41,42,43,44': [zwaenzg, vor],\n '45,46,47,48,49': [viertu, vor],\n '50,51,52,53,54': [zae, vor],\n '55,56,57,58,59': [fuef, vor]\n },\n permanent: es_isch,\n prettyName: 'Bärndütsch (genau)',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_de_CH_genau);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/lib/uhr.bundle.js b/dist/lib/uhr.bundle.js index e559ef5..c8fd261 100644 --- a/dist/lib/uhr.bundle.js +++ b/dist/lib/uhr.bundle.js @@ -1,2 +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}]); +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=Cookies},function(t,e){t.exports=jQuery},function(t,e,n){"use strict";n.r(e),n.d(e,"Layout_de",function(){return h});var i={4:[8,9,10,11]},o={4:[1,2,3]},r={5:[1,2,3,4]},s={1:[8,9,10,11]},u={2:[1,2,3,4]},a={2:[5,6,7,8,9,10,11]},h={code:"de",hours:{"0,12":{9:[7,8,9,10,11]},"1,13":{6:[1,2,3,4]},"2,14":{6:[8,9,10,11]},"3,15":{7:[1,2,3,4]},"4,16":{7:[8,9,10,11]},"5,17":{5:[8,9,10,11]},"6,18":{8:[1,2,3,4,5]},"7,19":{9:[1,2,3,4,5,6]},"8,20":{8:[8,9,10,11]},"9,21":{10:[4,5,6,7]},"10,22":{10:[1,2,3,4]},"11,23":{5:[6,7,8]}},letters:["ESKISTAFÜNF","ZEHNZWANZIG","DREIVIERTEL","VORFUNKNACH","HALBAELFÜNF","EINSXAMZWEI","DREIPMJVIER","SECHSNLACHT","SIEBENZWÖLF","ZEHNEUNKUHR"],minutes:{"0,1,2,3,4":{10:[9,10,11]},"5,6,7,8,9":[s,i],"10,11,12,13,14":[u,i],"15,16,17,18,19":[{3:[5,6,7,8,9,10,11]},i],"20,21,22,23,24":[a,i],"25,26,27,28,29":[s,o,r],"30,31,32,33,34":r,"35,36,37,38,39":[s,i,r],"40,41,42,43,44":[a,o],"45,46,47,48,49":{3:[1,2,3,4,5,6,7,8,9,10,11]},"50,51,52,53,54":[u,o],"55,56,57,58,59":[s,o]},permanent:{1:[1,2,4,5,6]},prettyName:"Deutsch",version:2};$.fritteli.uhr.register(h)},function(t,e,n){"use strict";n.r(e),n.d(e,"Layout_de_CH",function(){return c});var i={4:[1,2]},o={3:[9,10,11]},r={4:[4,5,6,7,8]},s={1:[9,10,11]},u={2:[9,10,11]},a={2:[1,2,3,4,5,6]},h={3:[1,2,3,4,5,6]},c={code:"de_CH",hours:{"0,12":{10:[1,2,3,4,5,6]},"1,13":{5:[1,2,3]},"2,14":{5:[4,5,6,7]},"3,15":{5:[9,10,11]},"4,16":{6:[1,2,3,4,5]},"5,17":{6:[6,7,8,9]},"6,18":{7:[1,2,3,4,5,6]},"7,19":{7:[7,8,9,10,11]},"8,20":{8:[1,2,3,4,5]},"9,21":{8:[6,7,8,9]},"10,22":{9:[1,2,3,4]},"11,23":{9:[8,9,10,11]}},letters:["ESKISCHAFÜF","VIERTUBFZÄÄ","ZWÄNZGSIVOR","ABOHAUBIEGE","EISZWÖISDRÜ","VIERIFÜFIQT","SÄCHSISIBNI","ACHTINÜNIEL","ZÄNIERBEUFI","ZWÖUFINAUHR"],minutes:{"5,6,7,8,9":[s,i],"10,11,12,13,14":[u,i],"15,16,17,18,19":[a,i],"20,21,22,23,24":[h,i],"25,26,27,28,29":[s,o,r],"30,31,32,33,34":r,"35,36,37,38,39":[s,i,r],"40,41,42,43,44":[h,o],"45,46,47,48,49":[a,o],"50,51,52,53,54":[u,o],"55,56,57,58,59":[s,o]},permanent:{1:[1,2,4,5,6,7]},prettyName:"Bärndütsch",version:2};$.fritteli.uhr.register(c)},function(t,e,n){"use strict";n.r(e),n.d(e,"Layout_de_CH_genau",function(){return c});var i={4:[4,5]},o={4:[1,2,3]},r={4:[7,8,9,10,11]},s={1:[9,10,11]},u={2:[9,10,11]},a={2:[1,2,3,4,5,6]},h={3:[1,2,3,4,5,6]},c={code:"de_CH_genau",hours:{"0,12":{10:[1,2,3,4,5,6]},"1,13":{5:[1,2,3]},"2,14":{5:[4,5,6,7]},"3,15":{5:[9,10,11]},"4,16":{6:[1,2,3,4,5]},"5,17":{6:[6,7,8,9]},"6,18":{7:[1,2,3,4,5,6]},"7,19":{7:[7,8,9,10,11]},"8,20":{8:[1,2,3,4,5]},"9,21":{8:[6,7,8,9]},"10,22":{9:[1,2,3,4]},"11,23":{9:[8,9,10,11]}},letters:["ESKISCHAFÜF","VIERTUBFZÄÄ","ZWÄNZGGENAU","VORABOHAUBI","EISZWÖISDRÜ","VIERIFÜFIQT","SÄCHSISIBNI","ACHTINÜNIEL","ZÄNIERBEUFI","ZWÖUFINAUHR"],minutes:{0:{3:[7,8,9,10,11]},"5,6,7,8,9":[s,i],"10,11,12,13,14":[u,i],"15,16,17,18,19":[a,i],"20,21,22,23,24":[h,i],"25,26,27,28,29":[s,o,r],"30,31,32,33,34":r,"35,36,37,38,39":[s,i,r],"40,41,42,43,44":[h,o],"45,46,47,48,49":[a,o],"50,51,52,53,54":[u,o],"55,56,57,58,59":[s,o]},permanent:{1:[1,2,4,5,6,7]},prettyName:"Bärndütsch (genau)",version:2};$.fritteli.uhr.register(c)},function(t,e,n){"use strict";n.r(e),n.d(e,"Layout_dk",function(){return d});var i={4:[4,5,6,7,8,9,10,11]},o={5:[8]},r={5:[4,5,6,7]},s={2:[1,2,3]},u={4:[1,2]},a={3:[4,5,6,7,8]},h={2:[4,5,6,7]},c={6:[8,9,10,11]},d={code:"dk",hours:{"0,12":{10:[8,9,10,11]},"1,13":{7:[1,2]},"2,14":{7:[3,4]},"3,15":{7:[5,6,7]},"4,16":{7:[8,9,10,11]},"5,17":{8:[1,2,3]},"6,18":{8:[4,5,6,7]},"7,19":{8:[9,10,11]},"8,20":{9:[1,2,3,4]},"9,21":{9:[6,7]},"10,22":{9:[10,11]},"11,23":{10:[1,2,3,4,5,6]}},letters:["KLOKKENVERO","FEMTYVESKLA","OJEKVARTVAT","TIAMINUTTER","VEMOVERILMF","MONALISHALV","ETTOTREFIRE","FEMSEKSRSYV","OTTERNIMETI","ELLEVEATOLV"],minutes:{"5,6,7,8,9":[s,i,r],"10,11,12,13,14":[u,i,r],"15,16,17,18,19":[a,r],"20,21,22,23,24":[h,i,r],"25,26,27,28,29":[s,i,o,c],"30,31,32,33,34":[c],"35,36,37,38,39":[s,i,r,c],"40,41,42,43,44":[h,i,o],"45,46,47,48,49":[a,o],"50,51,52,53,54":[u,i,o],"55,56,57,58,59":[s,i,o]},permanent:{1:[1,2,3,4,5,6,7,9,10]},prettyName:"Dansk",version:2};$.fritteli.uhr.register(d)},function(t,e,n){"use strict";n.r(e),n.d(e,"Layout_en",function(){return c});var i={4:[10,11]},o={5:[1,2,3,4]},r={3:[7,8,9,10]},s={4:[6,7,8]},u={2:[1,3,4,5,6,7,8,9]},a={3:[1,2,3,4,5,6]},h={3:[1,2,3,4,5,6,7,8,9,10]},c={code:"en",getHour:function(t){var e=t.getHours();return t.getMinutes()>=35?(e+1)%24:e},hours:{"0,12":{9:[6,7,8,9,10,11]},"1,13":{6:[1,2,3]},"2,14":{7:[9,10,11]},"3,15":{6:[7,8,9,10,11]},"4,16":{7:[1,2,3,4]},"5,17":{7:[5,6,7,8]},"6,18":{6:[4,5,6]},"7,19":{9:[1,2,3,4,5]},"8,20":{8:[1,2,3,4,5]},"9,21":{5:[8,9,10,11]},"10,22":{10:[1,2,3]},"11,23":{8:[6,7,8,9,10,11]}},letters:["ITLISBFAMPM","ACQUARTERDC","TWENTYFIVEX","HALFBTENFTO","PASTERUNINE","ONESIXTHREE","FOURFIVETWO","EIGHTELEVEN","SEVENTWELVE","TENSO'CLOCK"],minutes:{"0,1,2,3,4":{10:[5,6,7,8,9,10,11]},"5,6,7,8,9":[r,o],"10,11,12,13,14":[s,o],"15,16,17,18,19":[u,o],"20,21,22,23,24":[a,o],"25,26,27,28,29":[h,o],"30,31,32,33,34":[{4:[1,2,3,4]},o],"35,36,37,38,39":[h,i],"40,41,42,43,44":[a,i],"45,46,47,48,49":[u,i],"50,51,52,53,54":[s,i],"55,56,57,58,59":[r,i]},permanent:{1:[1,2,4,5]},prettyName:"English",version:2};$.fritteli.uhr.register(c)},function(t,e,n){"use strict";n.r(e),n.d(e,"Layout_es",function(){return d});var i={1:[2,3,4,6,7,8]},o={7:[6]},r={7:[7,8,9,10,11]},s={9:[7,8,9,10,11]},u={8:[8,9,10,11]},a={10:[6,7,8,9,10,11]},h={8:[2,3,4,5,6,7]},c={9:[1,2,3,4,5,6,7,8,9,10,11]},d={code:"es",getHour:function(t){var e=t.getHours();return t.getMinutes()>=35?(e+1)%24:e},hours:{"0,12":[i,{7:[1,2,3,4]}],"1,13":[{1:[1,2,6,7]},{1:[9,10,11]}],"2,14":[i,{2:[1,2,3]}],"3,15":[i,{2:[5,6,7,8]}],"4,16":[i,{3:[1,2,3,4,5,6]}],"5,17":[i,{3:[7,8,9,10,11]}],"6,18":[i,{4:[1,2,3,4]}],"7,19":[i,{4:[6,7,8,9,10]}],"8,20":[i,{5:[1,2,3,4]}],"9,21":[i,{5:[5,6,7,8,9]}],"10,22":[i,{6:[3,4,5,6]}],"11,23":[i,{6:[8,9,10,11]}]},letters:["ESONELASUNA","DOSITRESORE","CUATROCINCO","SEISASIETEN","OCHONUEVEYO","LADIEZSONCE","DOCELYMENOS","OVEINTEDIEZ","VEINTICINCO","MEDIACUARTO"],minutes:{"5,6,7,8,9":[o,s],"10,11,12,13,14":[o,u],"15,16,17,18,19":[o,a],"20,21,22,23,24":[o,h],"25,26,27,28,29":[o,c],"30,31,32,33,34":[o,{10:[1,2,3,4,5]}],"35,36,37,38,39":[r,c],"40,41,42,43,44":[r,h],"45,46,47,48,49":[r,a],"50,51,52,53,54":[r,u],"55,56,57,58,59":[r,s]},permanent:null,prettyName:"Español",version:2};$.fritteli.uhr.register(d)},function(t,e,n){"use strict";n.r(e),n.d(e,"Layout_fr",function(){return d});var i={8:[1,2]},o={7:[1,2,3,4,5]},r={6:[6,7,8,9,10,11]},s={9:[7,8,9,10]},u={7:[9,10,11]},a={8:[4,5,6,7,8]},h={9:[1,2,3,4,5]},c={9:[1,2,3,4,5,6,7,8,9,10]},d={code:"fr",getHour:function(t){var e=t.getHours();return t.getMinutes()>=35?(e+1)%24:e},hours:{0:{5:[6,7,8,9,10,11]},"1,13":[{3:[5,6,7]},r],"2,14":[{1:[8,9,10,11]},r],"3,15":[{2:[7,8,9,10,11]},r],"4,16":[{2:[1,2,3,4,5,6]},r],"5,17":[{4:[8,9,10,11]},r],"6,18":[{4:[5,6,7]},r],"7,19":[{3:[8,9,10,11]},r],"8,20":[{4:[1,2,3,4]},r],"9,21":[{3:[1,2,3,4]},r],"10,22":[{5:[3,4,5]},r],"11,23":[{6:[1,2,3,4]},r],12:{5:[1,2,3,4]}},letters:["ILNESTODEUX","QUATRETROIS","NEUFUNESEPT","HUITSIXCINQ","MIDIXMINUIT","ONZERHEURES","MOINSOLEDIX","ETRQUARTPMD","VINGT-CINQU","ETSDEMIEPAM"],minutes:{"5,6,7,8,9":s,"10,11,12,13,14":u,"15,16,17,18,19":[i,a],"20,21,22,23,24":h,"25,26,27,28,29":c,"30,31,32,33,34":[i,{10:[4,5,6,7,8]}],"35,36,37,38,39":[o,c],"40,41,42,43,44":[o,h],"45,46,47,48,49":[o,{7:[7,8]},a],"50,51,52,53,54":[o,u],"55,56,57,58,59":[o,s]},permanent:{1:[1,2,4,5,6]},prettyName:"Français",version:2};$.fritteli.uhr.register(d)},function(t,e,n){"use strict";n.r(e),n.d(e,"Layout_it",function(){return d});var i={1:[1,2,3,4,6,7]},o={8:[1]},r={7:[8,9,10,11]},s={9:[6,7,8,9,10,11]},u={10:[1,2,3,4,5]},a={8:[3,4,6,7,8,9,10,11]},h={9:[1,2,3,4,5]},c={9:[1,2,3,4,5,6,7,8,9,10,11]},d={code:"it",getHour:function(t){var e=t.getHours();return t.getMinutes()>=35?(e+1)%24:e},hours:{"0,12":[i,{5:[1,2,3,4,5,6]}],"1,13":[{2:[1,3,4]},{2:[5,6,7]}],"2,14":[i,{2:[9,10,11]}],"3,15":[i,{3:[1,2,3]}],"4,16":[i,{6:[1,2,3,4,5,6,7]}],"5,17":[i,{7:[1,2,3,4,5,6]}],"6,18":[i,{6:[9,10,11]}],"7,19":[i,{5:[7,8,9,10,11]}],"8,20":[i,{3:[4,5,6,7]}],"9,21":[i,{3:[8,9,10,11]}],"10,22":[i,{4:[1,2,3,4,5]}],"11,23":[i,{4:[6,7,8,9,10,11]}]},letters:["SONORLEBORE","ÈRL'UNASDUE","TREOTTONOVE","DIECIUNDICI","DODICISETTE","QUATTROCSEI","CINQUEAMENO","ECUNOQUARTO","VENTICINQUE","DIECIPMEZZA"],minutes:{"5,6,7,8,9":[o,s],"10,11,12,13,14":[o,u],"15,16,17,18,19":[o,a],"20,21,22,23,24":[o,h],"25,26,27,28,29":[o,c],"30,31,32,33,34":[o,{10:[7,8,9,10,11]}],"35,36,37,38,39":[r,c],"40,41,42,43,44":[r,h],"45,46,47,48,49":[r,a],"50,51,52,53,54":[r,u],"55,56,57,58,59":[r,s]},permanent:null,prettyName:"Italiano",version:2};$.fritteli.uhr.register(d)},function(t,e,n){"use strict";n.r(e),n.d(e,"Layout_nl",function(){return h});var i={3:[1,2,3,4]},o={2:[8,9,10,11]},r={4:[1,2,3,4]},s={1:[8,9,10,11]},u={2:[1,2,3,4]},a={3:[7,8,9,10,11]},h={code:"nl",getHour:function(t){var e=t.getHours();return t.getMinutes()>=20?(e+1)%24:e},hours:{"0,12":{10:[1,2,3,4,5,6]},"1,13":{5:[8,9,10]},"2,14":{6:[1,2,3,4]},"3,15":{6:[8,9,10,11]},"4,16":{7:[1,2,3,4]},"5,17":{7:[5,6,7,8]},"6,18":{7:[9,10,11]},"7,19":{8:[1,2,3,4,5]},"8,20":{9:[1,2,3,4]},"9,21":{8:[7,8,9,10,11]},"10,22":{9:[5,6,7,8]},"11,23":{9:[9,10,11]}},letters:["HETKISAVIJF","TIENBTZVOOR","OVERMEKWART","HALFSPWOVER","VOORTHGEENS","TWEEPVCDRIE","VIERVIJFZES","ZEVENONEGEN","ACHTTIENELF","TWAALFBFUUR"],minutes:{"0,1,2,3,4":{10:[9,10,11]},"5,6,7,8,9":[s,i],"10,11,12,13,14":[u,i],"15,16,17,18,19":[a,{4:[8,9,10,11]}],"20,21,22,23,24":[u,o,r],"25,26,27,28,29":[s,o,r],"30,31,32,33,34":r,"35,36,37,38,39":[s,i,r],"40,41,42,43,44":[u,i,r],"45,46,47,48,49":[a,{5:[1,2,3,4]}],"50,51,52,53,54":[u,o],"55,56,57,58,59":[s,o]},permanent:{1:[1,2,3,5,6]},prettyName:"Nederlands",version:2};$.fritteli.uhr.register(h)},function(t,e,n){"use strict";n.r(e),n.d(e,"Layout_pt",function(){return l});var i={1:[1]},o={1:[2,3,4]},r={7:[8]},s={10:[5]},u={7:[7,8,9,10,11]},a={10:[7,8,9,10,11]},h={10:[1,2,3]},c={9:[1,2,4,5,6,7,8,9]},d={8:[1,2,3,4,5]},l={code:"pt",getHour:function(t){var e=t.getHours();return t.getMinutes()>=35?(e+1)%24:e},hours:{0:[i,{6:[2,3,4,5,7,8,9,10,11]}],12:[i,{2:[1,2,3,4,6,7,8]}],"1,13":[i,{1:[5,6,7]}],"2,14":[o,{3:[1,2,3,4]}],"3,15":[o,{1:[8,9,10,11]}],"4,16":[o,{4:[1,2,3,4,5,6]}],"5,17":[o,{5:[1,2,3,4,5]}],"6,18":[o,{3:[4,5,6,7]}],"7,19":[o,{3:[7,8,9,10]}],"8,20":[o,{5:[5,6,7,8]}],"9,21":[o,{4:[8,9,10,11]}],"10,22":[o,{2:[9,10,11]}],"11,23":[o,{5:[8,9,10,11]}]},letters:["ÉSÃOUMATRÊS","MEIOLDIADEZ","DUASEISETEY","QUATROHNOVE","CINCOITONZE","ZMEIALNOITE","HORASYMENOS","VINTECAMEIA","UMVQUARTOPM","DEZOEYCINCO"],minutes:{"5,6,7,8,9":[r,a],"10,11,12,13,14":[r,h],"15,16,17,18,19":[r,c],"20,21,22,23,24":[r,d],"25,26,27,28,29":[r,d,s,a],"30,31,32,33,34":[r,{8:[8,9,10,11]}],"35,36,37,38,39":[u,d,s,a],"40,41,42,43,44":[u,d],"45,46,47,48,49":[u,c],"50,51,52,53,54":[u,h],"55,56,57,58,59":[u,a]},permanent:null,prettyName:"Português",version:2};$.fritteli.uhr.register(l)},function(t,e,n){"use strict";n.r(e);var i=function(){function t(){}return t.registerTheme=function(e,n){t.themes.some(function(t){return t.name===e})?console.log("Theme with name '"+e+"' already registered; ignoring register request for styleClass '"+n+"'."):t.themes.push({name:e,styleClass:n})},t.hasThemes=function(){return t.themes.length>0},t.hasMultipleThemes=function(){return t.themes.length>1},t.getFirstTheme=function(){return t.getTheme(0)},t.getTheme=function(e){return t.themes[e]},t.getThemes=function(){return t.themes},t.registerLayout=function(e){!t.layouts.some(function(t){return e.code===t.code&&(e.prettyName!==t.prettyName&&console.error("Error: Language code '"+e.code+"' cannot be registered for layout '"+e.prettyName+"' because it is already registered for layout '"+t.prettyName+"'!"),!0)})&&(t.layouts.push(e),t.layouts.sort(function(t,e){return t.prettyName.localeCompare(e.prettyName)}))},t.hasLayouts=function(){return t.layouts.length>0},t.hasMultipleLayouts=function(){return t.layouts.length>1},t.getFirstLayout=function(){return t.layouts[0]},t.getLayouts=function(){return t.layouts},t.layouts=[],t.themes=[],t}(),o=n(0),r={code:null,hours:null,letters:[],minutes:null,permanent:[],prettyName:null,version:2},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}(),u=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=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 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 o.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},o.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]:r},t}(),c=n(1);c("link[rel=stylesheet]").each(function(t,e){var n=c(e),o=n.attr("data-class");if(void 0!==o){var r=n.attr("data-name");void 0===r&&(r=o),i.registerTheme(r,o)}}),i.hasThemes()||i.registerTheme("",""),$.widget("fritteli.uhr",{options:{width:"100%",status:"on",language:"de_CH",theme:i.getFirstTheme().styleClass,force:!1,controls:!0,cookiePath:void 0,autoresize:!0,mode:"normal"},start:function(){this.__fritteli_uhr_instance.start()},stop:function(){this.__fritteli_uhr_instance.stop()},toggle:function(){this.__fritteli_uhr_instance.toggle()},language:function(t){this.__fritteli_uhr_instance.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 h(this)},_destroy:function(){this.__fritteli_uhr_instance.destroy()},__fritteli_uhr_instance:null}),$.fritteli.uhr.register=i.registerLayout},function(t,e,n){"use strict";n.r(e);n(12);var i=n(2),o=n(3),r=n(4),s=n(5),u=n(6),a=n(7),h=n(8),c=n(9),d=n(10),l=n(11);o.Layout_de_CH,r.Layout_de_CH_genau,i.Layout_de,s.Layout_dk,u.Layout_en,a.Layout_es,h.Layout_fr,c.Layout_it,d.Layout_nl,l.Layout_pt}]); //# sourceMappingURL=uhr.bundle.js.map \ No newline at end of file diff --git a/dist/lib/uhr.bundle.js.map b/dist/lib/uhr.bundle.js.map index 8d6064b..92f0796 100644 --- a/dist/lib/uhr.bundle.js.map +++ b/dist/lib/uhr.bundle.js.map @@ -1 +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 +{"version":3,"sources":["webpack://uhr/webpack/bootstrap","webpack://uhr/external \"Cookies\"","webpack://uhr/external \"jQuery\"","webpack://uhr/./src/layout/layout-de.ts","webpack://uhr/./src/layout/layout-de_ch.ts","webpack://uhr/./src/layout/layout-de_ch_genau.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/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","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","Cookies","jQuery","__webpack_exports__","Layout_de","nach","4","vor","halb","5","fuenf","1","zehn","2","zwanzig","code","hours","0,12","9","1,13","6","2,14","3,15","7","4,16","5,17","6,18","8","7,19","8,20","9,21","10","10,22","11,23","letters","minutes","0,1,2,3,4","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","3","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","prettyName","version","$","fritteli","uhr","register","Layout_de_CH","ab","haubi","fuef","zae","viertu","zwaenzg","Layout_de_CH_genau","0","Layout_dk","minutter","over","fem","ti","kvart","tyve","halv","Layout_en","to","past","five","ten","a_quarter","twenty","twentyfive","getHour","time","hour","getHours","getMinutes","Layout_es","son_las","y","menos","cinco","diez","cuarto","veinte","veinticinco","Layout_fr","et","moins","heures","cinq","dix","quart","vingt","vingtcinq","12","Layout_it","sono_le","e","meno","cinque","dieci","un_quarto","venti","venticinque","Layout_nl","over1","voor1","half","vijf","tien","kwart","Layout_pt","e_","sao","e1","e2","dez","um_quarto","vinte","Globals","registerTheme","styleClass","themes","some","console","log","push","hasThemes","length","hasMultipleThemes","getFirstTheme","getTheme","index","getThemes","registerLayout","layout","layouts","element","error","sort","a","b","localeCompare","hasLayouts","hasMultipleLayouts","getFirstLayout","getLayouts","EMPTY_LAYOUT","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","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__WEBPACK_IMPORTED_MODULE_1__","_layout_layout_de_ch__WEBPACK_IMPORTED_MODULE_2__","_layout_layout_de_ch_genau__WEBPACK_IMPORTED_MODULE_3__","_layout_layout_dk__WEBPACK_IMPORTED_MODULE_4__","_layout_layout_en__WEBPACK_IMPORTED_MODULE_5__","_layout_layout_es__WEBPACK_IMPORTED_MODULE_6__","_layout_layout_fr__WEBPACK_IMPORTED_MODULE_7__","_layout_layout_it__WEBPACK_IMPORTED_MODULE_8__","_layout_layout_nl__WEBPACK_IMPORTED_MODULE_9__","_layout_layout_pt__WEBPACK_IMPORTED_MODULE_10__"],"mappings":"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","file":"lib/uhr.bundle.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 13);\n","module.exports = Cookies;","module.exports = jQuery;","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst es_ist: WordDefinition = {1: [1, 2, 4, 5, 6]};\nconst uhr: WordDefinition = {10: [9, 10, 11]};\nconst nach: WordDefinition = {4: [8, 9, 10, 11]};\nconst vor: WordDefinition = {4: [1, 2, 3]};\nconst halb: WordDefinition = {5: [1, 2, 3, 4]};\nconst fuenf: WordDefinition = {1: [8, 9, 10, 11]};\nconst zehn: WordDefinition = {2: [1, 2, 3, 4]};\nconst viertel: WordDefinition = {3: [5, 6, 7, 8, 9, 10, 11]};\nconst zwanzig: WordDefinition = {2: [5, 6, 7, 8, 9, 10, 11]};\nconst dreiviertel: WordDefinition = {3: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]};\n\nexport const Layout_de: Layout = {\n code: 'de',\n hours: {\n '0,12': {9: [7, 8, 9, 10, 11]},\n '1,13': {6: [1, 2, 3, 4]},\n '2,14': {6: [8, 9, 10, 11]},\n '3,15': {7: [1, 2, 3, 4]},\n '4,16': {7: [8, 9, 10, 11]},\n '5,17': {5: [8, 9, 10, 11]},\n '6,18': {8: [1, 2, 3, 4, 5]},\n '7,19': {9: [1, 2, 3, 4, 5, 6]},\n '8,20': {8: [8, 9, 10, 11]},\n '9,21': {10: [4, 5, 6, 7]},\n '10,22': {10: [1, 2, 3, 4]},\n '11,23': {5: [6, 7, 8]}\n },\n letters: [\n 'ESKISTAFÜNF',\n 'ZEHNZWANZIG',\n 'DREIVIERTEL',\n 'VORFUNKNACH',\n 'HALBAELFÜNF',\n 'EINSXAMZWEI',\n 'DREIPMJVIER',\n 'SECHSNLACHT',\n 'SIEBENZWÖLF',\n 'ZEHNEUNKUHR'\n ],\n minutes: {\n '0,1,2,3,4': uhr,\n '5,6,7,8,9': [fuenf, nach],\n '10,11,12,13,14': [zehn, nach],\n '15,16,17,18,19': [viertel, nach],\n '20,21,22,23,24': [zwanzig, nach],\n '25,26,27,28,29': [fuenf, vor, halb],\n '30,31,32,33,34': halb,\n '35,36,37,38,39': [fuenf, nach, halb],\n '40,41,42,43,44': [zwanzig, vor],\n '45,46,47,48,49': dreiviertel,\n '50,51,52,53,54': [zehn, vor],\n '55,56,57,58,59': [fuenf, vor]\n },\n permanent: es_ist,\n prettyName: 'Deutsch',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_de);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst es_isch: WordDefinition = {1: [1, 2, 4, 5, 6, 7]};\nconst ab: WordDefinition = {4: [1, 2]};\nconst vor: WordDefinition = {3: [9, 10, 11]};\nconst haubi: WordDefinition = {4: [4, 5, 6, 7, 8]};\nconst fuef: WordDefinition = {1: [9, 10, 11]};\nconst zae: WordDefinition = {2: [9, 10, 11]};\nconst viertu: WordDefinition = {2: [1, 2, 3, 4, 5, 6]};\nconst zwaenzg: WordDefinition = {3: [1, 2, 3, 4, 5, 6]};\n\nexport const Layout_de_CH: Layout = {\n code: 'de_CH',\n hours: {\n '0,12': {10: [1, 2, 3, 4, 5, 6]},\n '1,13': {5: [1, 2, 3]},\n '2,14': {5: [4, 5, 6, 7]},\n '3,15': {5: [9, 10, 11]},\n '4,16': {6: [1, 2, 3, 4, 5]},\n '5,17': {6: [6, 7, 8, 9]},\n '6,18': {7: [1, 2, 3, 4, 5, 6]},\n '7,19': {7: [7, 8, 9, 10, 11]},\n '8,20': {8: [1, 2, 3, 4, 5]},\n '9,21': {8: [6, 7, 8, 9]},\n '10,22': {9: [1, 2, 3, 4]},\n '11,23': {9: [8, 9, 10, 11]}\n },\n letters: [\n 'ESKISCHAFÜF',\n 'VIERTUBFZÄÄ',\n 'ZWÄNZGSIVOR',\n 'ABOHAUBIEGE',\n 'EISZWÖISDRÜ',\n 'VIERIFÜFIQT',\n 'SÄCHSISIBNI',\n 'ACHTINÜNIEL',\n 'ZÄNIERBEUFI',\n 'ZWÖUFINAUHR'\n ],\n minutes: {\n '5,6,7,8,9': [fuef, ab],\n '10,11,12,13,14': [zae, ab],\n '15,16,17,18,19': [viertu, ab],\n '20,21,22,23,24': [zwaenzg, ab],\n '25,26,27,28,29': [fuef, vor, haubi],\n '30,31,32,33,34': haubi,\n '35,36,37,38,39': [fuef, ab, haubi],\n '40,41,42,43,44': [zwaenzg, vor],\n '45,46,47,48,49': [viertu, vor],\n '50,51,52,53,54': [zae, vor],\n '55,56,57,58,59': [fuef, vor]\n },\n permanent: es_isch,\n prettyName: 'Bärndütsch',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_de_CH);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst es_isch: WordDefinition = {1: [1, 2, 4, 5, 6, 7]};\nconst genau: WordDefinition = {3: [7, 8, 9, 10, 11]};\nconst ab: WordDefinition = {4: [4, 5]};\nconst vor: WordDefinition = {4: [1, 2, 3]};\nconst haubi: WordDefinition = {4: [7, 8, 9, 10, 11]};\nconst fuef: WordDefinition = {1: [9, 10, 11]};\nconst zae: WordDefinition = {2: [9, 10, 11]};\nconst viertu: WordDefinition = {2: [1, 2, 3, 4, 5, 6]};\nconst zwaenzg: WordDefinition = {3: [1, 2, 3, 4, 5, 6]};\n\nexport const Layout_de_CH_genau: Layout = {\n code: 'de_CH_genau',\n hours: {\n '0,12': {10: [1, 2, 3, 4, 5, 6]},\n '1,13': {5: [1, 2, 3]},\n '2,14': {5: [4, 5, 6, 7]},\n '3,15': {5: [9, 10, 11]},\n '4,16': {6: [1, 2, 3, 4, 5]},\n '5,17': {6: [6, 7, 8, 9]},\n '6,18': {7: [1, 2, 3, 4, 5, 6]},\n '7,19': {7: [7, 8, 9, 10, 11]},\n '8,20': {8: [1, 2, 3, 4, 5]},\n '9,21': {8: [6, 7, 8, 9]},\n '10,22': {9: [1, 2, 3, 4]},\n '11,23': {9: [8, 9, 10, 11]}\n },\n letters: [\n 'ESKISCHAFÜF',\n 'VIERTUBFZÄÄ',\n 'ZWÄNZGGENAU',\n 'VORABOHAUBI',\n 'EISZWÖISDRÜ',\n 'VIERIFÜFIQT',\n 'SÄCHSISIBNI',\n 'ACHTINÜNIEL',\n 'ZÄNIERBEUFI',\n 'ZWÖUFINAUHR'\n ],\n minutes: {\n '0': genau,\n '5,6,7,8,9': [fuef, ab],\n '10,11,12,13,14': [zae, ab],\n '15,16,17,18,19': [viertu, ab],\n '20,21,22,23,24': [zwaenzg, ab],\n '25,26,27,28,29': [fuef, vor, haubi],\n '30,31,32,33,34': haubi,\n '35,36,37,38,39': [fuef, ab, haubi],\n '40,41,42,43,44': [zwaenzg, vor],\n '45,46,47,48,49': [viertu, vor],\n '50,51,52,53,54': [zae, vor],\n '55,56,57,58,59': [fuef, vor]\n },\n permanent: es_isch,\n prettyName: 'Bärndütsch (genau)',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_de_CH_genau);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst klokken_er: WordDefinition = {1: [1, 2, 3, 4, 5, 6, 7, 9, 10]};\nconst minutter: WordDefinition = {4: [4, 5, 6, 7, 8, 9, 10, 11]};\nconst i: WordDefinition = {5: [8]};\nconst over: WordDefinition = {5: [4, 5, 6, 7]};\nconst fem: WordDefinition = {2: [1, 2, 3]};\nconst ti: WordDefinition = {4: [1, 2]};\nconst kvart: WordDefinition = {3: [4, 5, 6, 7, 8]};\nconst tyve: WordDefinition = {2: [4, 5, 6, 7]};\nconst halv: WordDefinition = {6: [8, 9, 10, 11]};\n\nexport const Layout_dk: Layout = {\n code: 'dk',\n hours: {\n '0,12': {10: [8, 9, 10, 11]},\n '1,13': {7: [1, 2]},\n '2,14': {7: [3, 4]},\n '3,15': {7: [5, 6, 7]},\n '4,16': {7: [8, 9, 10, 11]},\n '5,17': {8: [1, 2, 3]},\n '6,18': {8: [4, 5, 6, 7]},\n '7,19': {8: [9, 10, 11]},\n '8,20': {9: [1, 2, 3, 4]},\n '9,21': {9: [6, 7]},\n '10,22': {9: [10, 11]},\n '11,23': {10: [1, 2, 3, 4, 5, 6]}\n },\n letters: [\n 'KLOKKENVERO',\n 'FEMTYVESKLA',\n 'OJEKVARTVAT',\n 'TIAMINUTTER',\n 'VEMOVERILMF',\n 'MONALISHALV',\n 'ETTOTREFIRE',\n 'FEMSEKSRSYV',\n 'OTTERNIMETI',\n 'ELLEVEATOLV'\n ],\n minutes: {\n '5,6,7,8,9': [fem, minutter, over],\n '10,11,12,13,14': [ti, minutter, over],\n '15,16,17,18,19': [kvart, over],\n '20,21,22,23,24': [tyve, minutter, over],\n '25,26,27,28,29': [fem, minutter, i, halv],\n '30,31,32,33,34': [halv],\n '35,36,37,38,39': [fem, minutter, over, halv],\n '40,41,42,43,44': [tyve, minutter, i],\n '45,46,47,48,49': [kvart, i],\n '50,51,52,53,54': [ti, minutter, i],\n '55,56,57,58,59': [fem, minutter, i]\n },\n permanent: klokken_er,\n prettyName: 'Dansk',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_dk);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst it_is: WordDefinition = {1: [1, 2, 4, 5]};\nconst half: WordDefinition = {4: [1, 2, 3, 4]};\nconst to: WordDefinition = {4: [10, 11]};\nconst past: WordDefinition = {5: [1, 2, 3, 4]};\nconst o_clock: WordDefinition = {10: [5, 6, 7, 8, 9, 10, 11]};\nconst five: WordDefinition = {3: [7, 8, 9, 10]};\nconst ten: WordDefinition = {4: [6, 7, 8]};\nconst a_quarter: WordDefinition = {2: [1, 3, 4, 5, 6, 7, 8, 9]};\nconst twenty: WordDefinition = {3: [1, 2, 3, 4, 5, 6]};\nconst twentyfive: WordDefinition = {3: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]};\n\nexport const Layout_en: Layout = {\n code: 'en',\n getHour: (time: Date) => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n\n hours: {\n '0,12': {9: [6, 7, 8, 9, 10, 11]},\n '1,13': {6: [1, 2, 3]},\n '2,14': {7: [9, 10, 11]},\n '3,15': {6: [7, 8, 9, 10, 11]},\n '4,16': {7: [1, 2, 3, 4]},\n '5,17': {7: [5, 6, 7, 8]},\n '6,18': {6: [4, 5, 6]},\n '7,19': {9: [1, 2, 3, 4, 5]},\n '8,20': {8: [1, 2, 3, 4, 5]},\n '9,21': {5: [8, 9, 10, 11]},\n '10,22': {10: [1, 2, 3]},\n '11,23': {8: [6, 7, 8, 9, 10, 11]}\n },\n letters: [\n 'ITLISBFAMPM',\n 'ACQUARTERDC',\n 'TWENTYFIVEX',\n 'HALFBTENFTO',\n 'PASTERUNINE',\n 'ONESIXTHREE',\n 'FOURFIVETWO',\n 'EIGHTELEVEN',\n 'SEVENTWELVE',\n 'TENSO\\'CLOCK'\n ],\n minutes: {\n '0,1,2,3,4': o_clock,\n '5,6,7,8,9': [five, past],\n '10,11,12,13,14': [ten, past],\n '15,16,17,18,19': [a_quarter, past],\n '20,21,22,23,24': [twenty, past],\n '25,26,27,28,29': [twentyfive, past],\n '30,31,32,33,34': [half, past],\n '35,36,37,38,39': [twentyfive, to],\n '40,41,42,43,44': [twenty, to],\n '45,46,47,48,49': [a_quarter, to],\n '50,51,52,53,54': [ten, to],\n '55,56,57,58,59': [five, to]\n },\n permanent: it_is,\n prettyName: 'English',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_en);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst es_la: WordDefinition = {1: [1, 2, 6, 7]};\nconst son_las: WordDefinition = {1: [2, 3, 4, 6, 7, 8]};\nconst y: WordDefinition = {7: [6]};\nconst menos: WordDefinition = {7: [7, 8, 9, 10, 11]};\nconst media: WordDefinition = {10: [1, 2, 3, 4, 5]};\nconst cinco: WordDefinition = {9: [7, 8, 9, 10, 11]};\nconst diez: WordDefinition = {8: [8, 9, 10, 11]};\nconst cuarto: WordDefinition = {10: [6, 7, 8, 9, 10, 11]};\nconst veinte: WordDefinition = {8: [2, 3, 4, 5, 6, 7]};\nconst veinticinco: WordDefinition = {9: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]};\n\nexport const Layout_es: Layout = {\n code: 'es',\n getHour: (time: Date) => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n\n hours: {\n '0,12': [son_las, {7: [1, 2, 3, 4]}],\n '1,13': [es_la, {1: [9, 10, 11]}],\n '2,14': [son_las, {2: [1, 2, 3]}],\n '3,15': [son_las, {2: [5, 6, 7, 8]}],\n '4,16': [son_las, {3: [1, 2, 3, 4, 5, 6]}],\n '5,17': [son_las, {3: [7, 8, 9, 10, 11]}],\n '6,18': [son_las, {4: [1, 2, 3, 4]}],\n '7,19': [son_las, {4: [6, 7, 8, 9, 10]}],\n '8,20': [son_las, {5: [1, 2, 3, 4]}],\n '9,21': [son_las, {5: [5, 6, 7, 8, 9]}],\n '10,22': [son_las, {6: [3, 4, 5, 6]}],\n '11,23': [son_las, {6: [8, 9, 10, 11]}]\n },\n letters: [\n 'ESONELASUNA',\n 'DOSITRESORE',\n 'CUATROCINCO',\n 'SEISASIETEN',\n 'OCHONUEVEYO',\n 'LADIEZSONCE',\n 'DOCELYMENOS',\n 'OVEINTEDIEZ',\n 'VEINTICINCO',\n 'MEDIACUARTO'\n ],\n minutes: {\n '5,6,7,8,9': [y, cinco],\n '10,11,12,13,14': [y, diez],\n '15,16,17,18,19': [y, cuarto],\n '20,21,22,23,24': [y, veinte],\n '25,26,27,28,29': [y, veinticinco],\n '30,31,32,33,34': [y, media],\n '35,36,37,38,39': [menos, veinticinco],\n '40,41,42,43,44': [menos, veinte],\n '45,46,47,48,49': [menos, cuarto],\n '50,51,52,53,54': [menos, diez],\n '55,56,57,58,59': [menos, cinco]\n },\n permanent: null,\n prettyName: 'Español',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_es);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst il_est: WordDefinition = {1: [1, 2, 4, 5, 6]};\nconst et: WordDefinition = {8: [1, 2]};\nconst moins: WordDefinition = {7: [1, 2, 3, 4, 5]};\nconst demie: WordDefinition = {10: [4, 5, 6, 7, 8]};\nconst heures: WordDefinition = {6: [6, 7, 8, 9, 10, 11]};\nconst le: WordDefinition = {7: [7, 8]};\nconst cinq: WordDefinition = {9: [7, 8, 9, 10]};\nconst dix: WordDefinition = {7: [9, 10, 11]};\nconst quart: WordDefinition = {8: [4, 5, 6, 7, 8]};\nconst vingt: WordDefinition = {9: [1, 2, 3, 4, 5]};\nconst vingtcinq: WordDefinition = {9: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]};\n\nexport const Layout_fr: Layout = {\n code: 'fr',\n getHour: (time: Date) => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n hours: {\n '0': {5: [6, 7, 8, 9, 10, 11]},\n '1,13': [\n {3: [5, 6, 7]},\n heures\n ],\n '2,14': [\n {1: [8, 9, 10, 11]},\n heures\n ],\n '3,15': [\n {2: [7, 8, 9, 10, 11]},\n heures\n ],\n '4,16': [\n {2: [1, 2, 3, 4, 5, 6]},\n heures\n ],\n '5,17': [\n {4: [8, 9, 10, 11]},\n heures\n ],\n '6,18': [\n {4: [5, 6, 7]},\n heures\n ],\n '7,19': [\n {3: [8, 9, 10, 11]},\n heures\n ],\n '8,20': [\n {4: [1, 2, 3, 4]},\n heures\n ],\n '9,21': [\n {3: [1, 2, 3, 4]},\n heures\n ],\n '10,22': [\n {5: [3, 4, 5]},\n heures\n ],\n '11,23': [\n {6: [1, 2, 3, 4]},\n heures\n ],\n '12': {5: [1, 2, 3, 4]}\n },\n letters: [\n 'ILNESTODEUX',\n 'QUATRETROIS',\n 'NEUFUNESEPT',\n 'HUITSIXCINQ',\n 'MIDIXMINUIT',\n 'ONZERHEURES',\n 'MOINSOLEDIX',\n 'ETRQUARTPMD',\n 'VINGT-CINQU',\n 'ETSDEMIEPAM'\n ],\n minutes: {\n '5,6,7,8,9': cinq,\n '10,11,12,13,14': dix,\n '15,16,17,18,19': [et, quart],\n '20,21,22,23,24': vingt,\n '25,26,27,28,29': vingtcinq,\n '30,31,32,33,34': [et, demie],\n '35,36,37,38,39': [moins, vingtcinq],\n '40,41,42,43,44': [moins, vingt],\n '45,46,47,48,49': [moins, le, quart],\n '50,51,52,53,54': [moins, dix],\n '55,56,57,58,59': [moins, cinq]\n },\n permanent: il_est,\n prettyName: 'Français',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_fr);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst sono_le: WordDefinition = {1: [1, 2, 3, 4, 6, 7]};\nconst e_l: WordDefinition = {2: [1, 3, 4]};\nconst e: WordDefinition = {8: [1]};\nconst meno: WordDefinition = {7: [8, 9, 10, 11]};\nconst mezza: WordDefinition = {10: [7, 8, 9, 10, 11]};\nconst cinque: WordDefinition = {9: [6, 7, 8, 9, 10, 11]};\nconst dieci: WordDefinition = {10: [1, 2, 3, 4, 5]};\nconst un_quarto: WordDefinition = {8: [3, 4, 6, 7, 8, 9, 10, 11]};\nconst venti: WordDefinition = {9: [1, 2, 3, 4, 5]};\nconst venticinque: WordDefinition = {9: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]};\n\nexport const Layout_it: Layout = {\n code: 'it',\n getHour: (time: Date) => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n hours: {\n '0,12': [sono_le, {5: [1, 2, 3, 4, 5, 6]}],\n '1,13': [e_l, {2: [5, 6, 7]}],\n '2,14': [sono_le, {2: [9, 10, 11]}],\n '3,15': [sono_le, {3: [1, 2, 3]}],\n '4,16': [sono_le, {6: [1, 2, 3, 4, 5, 6, 7]}],\n '5,17': [sono_le, {7: [1, 2, 3, 4, 5, 6]}],\n '6,18': [sono_le, {6: [9, 10, 11]}],\n '7,19': [sono_le, {5: [7, 8, 9, 10, 11]}],\n '8,20': [sono_le, {3: [4, 5, 6, 7]}],\n '9,21': [sono_le, {3: [8, 9, 10, 11]}],\n '10,22': [sono_le, {4: [1, 2, 3, 4, 5]}],\n '11,23': [sono_le, {4: [6, 7, 8, 9, 10, 11]}]\n },\n letters: [\n 'SONORLEBORE',\n 'ÈRL\\'UNASDUE',\n 'TREOTTONOVE',\n 'DIECIUNDICI',\n 'DODICISETTE',\n 'QUATTROCSEI',\n 'CINQUEAMENO',\n 'ECUNOQUARTO',\n 'VENTICINQUE',\n 'DIECIPMEZZA'\n ],\n minutes: {\n '5,6,7,8,9': [e, cinque],\n '10,11,12,13,14': [e, dieci],\n '15,16,17,18,19': [e, un_quarto],\n '20,21,22,23,24': [e, venti],\n '25,26,27,28,29': [e, venticinque],\n '30,31,32,33,34': [e, mezza],\n '35,36,37,38,39': [meno, venticinque],\n '40,41,42,43,44': [meno, venti],\n '45,46,47,48,49': [meno, un_quarto],\n '50,51,52,53,54': [meno, dieci],\n '55,56,57,58,59': [meno, cinque]\n },\n permanent: null,\n prettyName: 'Italiano',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_it);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst het_is: WordDefinition = {1: [1, 2, 3, 5, 6]};\nconst over1: WordDefinition = {3: [1, 2, 3, 4]};\nconst voor1: WordDefinition = {2: [8, 9, 10, 11]};\nconst over2: WordDefinition = {4: [8, 9, 10, 11]};\nconst voor2: WordDefinition = {5: [1, 2, 3, 4]};\nconst half: WordDefinition = {4: [1, 2, 3, 4]};\nconst vijf: WordDefinition = {1: [8, 9, 10, 11]};\nconst tien: WordDefinition = {2: [1, 2, 3, 4]};\nconst kwart: WordDefinition = {3: [7, 8, 9, 10, 11]};\nconst uur: WordDefinition = {10: [9, 10, 11]};\n\nexport const Layout_nl: Layout = {\n code: 'nl',\n getHour: (time: Date) => {\n const hour = time.getHours();\n if (time.getMinutes() >= 20) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n hours: {\n '0,12': {10: [1, 2, 3, 4, 5, 6]},\n '1,13': {5: [8, 9, 10]},\n '2,14': {6: [1, 2, 3, 4]},\n '3,15': {6: [8, 9, 10, 11]},\n '4,16': {7: [1, 2, 3, 4]},\n '5,17': {7: [5, 6, 7, 8]},\n '6,18': {7: [9, 10, 11]},\n '7,19': {8: [1, 2, 3, 4, 5]},\n '8,20': {9: [1, 2, 3, 4]},\n '9,21': {8: [7, 8, 9, 10, 11]},\n '10,22': {9: [5, 6, 7, 8]},\n '11,23': {9: [9, 10, 11]}\n },\n letters: [\n 'HETKISAVIJF',\n 'TIENBTZVOOR',\n 'OVERMEKWART',\n 'HALFSPWOVER',\n 'VOORTHGEENS',\n 'TWEEPVCDRIE',\n 'VIERVIJFZES',\n 'ZEVENONEGEN',\n 'ACHTTIENELF',\n 'TWAALFBFUUR'\n ],\n minutes: {\n '0,1,2,3,4': uur,\n '5,6,7,8,9': [vijf, over1],\n '10,11,12,13,14': [tien, over1],\n '15,16,17,18,19': [kwart, over2],\n '20,21,22,23,24': [tien, voor1, half],\n '25,26,27,28,29': [vijf, voor1, half],\n '30,31,32,33,34': half,\n '35,36,37,38,39': [vijf, over1, half],\n '40,41,42,43,44': [tien, over1, half],\n '45,46,47,48,49': [kwart, voor2],\n '50,51,52,53,54': [tien, voor1],\n '55,56,57,58,59': [vijf, voor1]\n },\n permanent: het_is,\n prettyName: 'Nederlands',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_nl);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst e_: WordDefinition = {1: [1]};\nconst sao: WordDefinition = {1: [2, 3, 4]};\nconst e1: WordDefinition = {7: [8]};\nconst e2: WordDefinition = {10: [5]};\nconst menos: WordDefinition = {7: [7, 8, 9, 10, 11]};\nconst meia: WordDefinition = {8: [8, 9, 10, 11]};\nconst cinco: WordDefinition = {10: [7, 8, 9, 10, 11]};\nconst dez: WordDefinition = {10: [1, 2, 3]};\nconst um_quarto: WordDefinition = {9: [1, 2, 4, 5, 6, 7, 8, 9]};\nconst vinte: WordDefinition = {8: [1, 2, 3, 4, 5]};\n\nexport const Layout_pt: Layout = {\n code: 'pt',\n getHour: (time: Date) => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n hours: {\n '0': [e_, {'6': [2, 3, 4, 5, 7, 8, 9, 10, 11]}],\n '12': [e_, {'2': [1, 2, 3, 4, 6, 7, 8]}],\n '1,13': [e_, {'1': [5, 6, 7]}],\n '2,14': [sao, {'3': [1, 2, 3, 4]}],\n '3,15': [sao, {'1': [8, 9, 10, 11]}],\n '4,16': [sao, {'4': [1, 2, 3, 4, 5, 6]}],\n '5,17': [sao, {'5': [1, 2, 3, 4, 5]}],\n '6,18': [sao, {'3': [4, 5, 6, 7]}],\n '7,19': [sao, {'3': [7, 8, 9, 10]}],\n '8,20': [sao, {'5': [5, 6, 7, 8]}],\n '9,21': [sao, {'4': [8, 9, 10, 11]}],\n '10,22': [sao, {'2': [9, 10, 11]}],\n '11,23': [sao, {'5': [8, 9, 10, 11]}]\n },\n letters: [\n 'ÉSÃOUMATRÊS',\n 'MEIOLDIADEZ',\n 'DUASEISETEY',\n 'QUATROHNOVE',\n 'CINCOITONZE',\n 'ZMEIALNOITE',\n 'HORASYMENOS',\n 'VINTECAMEIA',\n 'UMVQUARTOPM',\n 'DEZOEYCINCO'\n ],\n minutes: {\n '5,6,7,8,9': [e1, cinco],\n '10,11,12,13,14': [e1, dez],\n '15,16,17,18,19': [e1, um_quarto],\n '20,21,22,23,24': [e1, vinte],\n '25,26,27,28,29': [e1, vinte, e2, cinco],\n '30,31,32,33,34': [e1, meia],\n '35,36,37,38,39': [menos, vinte, e2, cinco],\n '40,41,42,43,44': [menos, vinte],\n '45,46,47,48,49': [menos, um_quarto],\n '50,51,52,53,54': [menos, dez],\n '55,56,57,58,59': [menos, cinco]\n },\n permanent: null,\n prettyName: 'Português',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_pt);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout} from './layout';\nimport {Theme} from './theme';\n\nexport class Globals {\n private static layouts: Layout[] = [];\n private static themes: Theme[] = [];\n\n static registerTheme(name: string, styleClass: string): void {\n if (Globals.themes.some(value => value.name === name)) {\n console.log(`Theme with name '${name}' already registered; ignoring register request for styleClass '${styleClass}'.`)\n } else {\n Globals.themes.push({\n name,\n styleClass\n });\n }\n }\n\n static hasThemes(): boolean {\n return Globals.themes.length > 0;\n }\n\n static hasMultipleThemes(): boolean {\n return Globals.themes.length > 1;\n }\n\n static getFirstTheme(): Theme {\n return Globals.getTheme(0);\n }\n\n static getTheme(index: number): Theme {\n return Globals.themes[index];\n }\n\n static getThemes(): Theme[] {\n return Globals.themes;\n }\n\n static registerLayout(layout: Layout): void {\n const available = !Globals.layouts.some(element => {\n if (layout.code === element.code) {\n if (layout.prettyName !== element.prettyName) {\n console.error(\n `Error: Language code '${layout.code}' cannot be registered for layout '${layout.prettyName}' because it is already registered for layout '${element.prettyName}'!`\n );\n }\n return true;\n }\n return false;\n }\n );\n if (available) {\n Globals.layouts.push(layout);\n Globals.layouts.sort((a, b) => a.prettyName.localeCompare(b.prettyName));\n }\n }\n\n static hasLayouts(): boolean {\n return Globals.layouts.length > 0;\n }\n\n static hasMultipleLayouts(): boolean {\n return Globals.layouts.length > 1;\n }\n\n static getFirstLayout(): Layout {\n return Globals.layouts[0];\n }\n\n static getLayouts(): Layout[] {\n return Globals.layouts;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Letter} from './letter';\n\nexport interface Layout {\n readonly code: string;\n getCoarseMinute?: (time: Date) => number;\n getDotMinute?: (time: Date) => number;\n getHour?: (time: Date) => number;\n getSeconds?: (time: Date) => number;\n readonly hours: TimeDefinition;\n readonly letters: string[];\n readonly minutes: TimeDefinition;\n parsed?: Letter[][];\n readonly permanent: WordDefinition | WordDefinition[];\n readonly prettyName: string;\n seconds?: TimeDefinition;\n readonly version: number;\n}\n\nexport interface WordDefinition {\n [line: number]: number[];\n}\n\nexport interface TimeDefinition {\n [values: string]: WordDefinition | WordDefinition[];\n}\n\nexport const EMPTY_LAYOUT: Layout = {\n code: null,\n hours: null,\n letters: [],\n minutes: null,\n permanent: [],\n prettyName: null,\n version: 2\n};\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\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","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport * as uhr from './index';\nimport {Layout_de} from './layout/layout-de';\nimport {Layout_de_CH} from './layout/layout-de_ch';\nimport {Layout_de_CH_genau} from './layout/layout-de_ch_genau';\nimport {Layout_dk} from './layout/layout-dk';\nimport {Layout_en} from './layout/layout-en';\nimport {Layout_es} from './layout/layout-es';\nimport {Layout_fr} from './layout/layout-fr';\nimport {Layout_it} from './layout/layout-it';\nimport {Layout_nl} from './layout/layout-nl';\nimport {Layout_pt} from './layout/layout-pt';\n\n// We just need to reference all required files at least once, so that the tree-shaker won't remove them from\n// the bundle.\nlet a = uhr;\na = Layout_de_CH;\na = Layout_de_CH_genau;\na = Layout_de;\na = Layout_dk;\na = Layout_en;\na = Layout_es;\na = Layout_fr;\na = Layout_it;\na = Layout_nl;\na = Layout_pt;\n"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/lib/uhr.js b/dist/lib/uhr.js index ebcb5b9..b8594c6 100644 --- a/dist/lib/uhr.js +++ b/dist/lib/uhr.js @@ -1,2 +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}}); +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=Cookies},1:function(t,e){t.exports=jQuery},12:function(t,e,n){"use strict";n.r(e);var i=function(){function t(){}return t.registerTheme=function(e,n){t.themes.some(function(t){return t.name===e})?console.log("Theme with name '"+e+"' already registered; ignoring register request for styleClass '"+n+"'."):t.themes.push({name:e,styleClass:n})},t.hasThemes=function(){return t.themes.length>0},t.hasMultipleThemes=function(){return t.themes.length>1},t.getFirstTheme=function(){return t.getTheme(0)},t.getTheme=function(e){return t.themes[e]},t.getThemes=function(){return t.themes},t.registerLayout=function(e){!t.layouts.some(function(t){return e.code===t.code&&(e.prettyName!==t.prettyName&&console.error("Error: Language code '"+e.code+"' cannot be registered for layout '"+e.prettyName+"' because it is already registered for layout '"+t.prettyName+"'!"),!0)})&&(t.layouts.push(e),t.layouts.sort(function(t,e){return t.prettyName.localeCompare(e.prettyName)}))},t.hasLayouts=function(){return t.layouts.length>0},t.hasMultipleLayouts=function(){return t.layouts.length>1},t.getFirstLayout=function(){return t.layouts[0]},t.getLayouts=function(){return t.layouts},t.layouts=[],t.themes=[],t}(),o=n(0),s={code:null,hours:null,letters:[],minutes:null,permanent:[],prettyName:null,version:2},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}(),a=function(){function t(t){this.layout=t}return t.prototype.parse=function(){var e=[];return this.layout.letters.forEach(function(t){for(var n=[],i=0;i")}),t&&t(),e.renderarea.fadeIn("fast")})},t}(),u=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 h(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 o.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},o.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]:s},t}(),c=n(1);c("link[rel=stylesheet]").each(function(t,e){var n=c(e),o=n.attr("data-class");if(void 0!==o){var s=n.attr("data-name");void 0===s&&(s=o),i.registerTheme(s,o)}}),i.hasThemes()||i.registerTheme("",""),$.widget("fritteli.uhr",{options:{width:"100%",status:"on",language:"de_CH",theme:i.getFirstTheme().styleClass,force:!1,controls:!0,cookiePath:void 0,autoresize:!0,mode:"normal"},start:function(){this.__fritteli_uhr_instance.start()},stop:function(){this.__fritteli_uhr_instance.stop()},toggle:function(){this.__fritteli_uhr_instance.toggle()},language:function(t){this.__fritteli_uhr_instance.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 u(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 index 09c7612..06e78e9 100644 --- a/dist/lib/uhr.js.map +++ b/dist/lib/uhr.js.map @@ -1 +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 +{"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":""} \ No newline at end of file diff --git a/src/bundle.ts b/src/bundle.ts index c66d1fc..d2c082e 100644 --- a/src/bundle.ts +++ b/src/bundle.ts @@ -14,9 +14,9 @@ */ import * as uhr from './index'; +import {Layout_de} from './layout/layout-de'; import {Layout_de_CH} from './layout/layout-de_ch'; import {Layout_de_CH_genau} from './layout/layout-de_ch_genau'; -import {Layout_de} from './layout/layout-de'; import {Layout_dk} from './layout/layout-dk'; import {Layout_en} from './layout/layout-en'; import {Layout_es} from './layout/layout-es'; diff --git a/src/index.ts b/src/index.ts index 25a9da0..3a110b9 100644 --- a/src/index.ts +++ b/src/index.ts @@ -14,10 +14,10 @@ */ import {Globals} from './domain/globals'; -import {autodetectThemes} from './theme-autodetector'; +import {Layout} from './domain/layout'; import {Uhr} from './uhr'; import {WidgetPrototype} from './widget/widget-prototype'; -import {Layout} from './domain/layout'; +import {autodetectThemes} from './theme-autodetector'; // First things first: discover included themes and register them autodetectThemes(); diff --git a/src/uhr.ts b/src/uhr.ts index 0271e16..d23ed0f 100644 --- a/src/uhr.ts +++ b/src/uhr.ts @@ -13,11 +13,11 @@ along with this program. If not, see . */ -import {WidgetPrototype} from './widget/widget-prototype'; +import * as Cookies from 'js-cookie'; +import {EMPTY_LAYOUT, Layout} from './domain/layout'; import {Globals} from './domain/globals'; import {UhrRenderer} from './renderer'; -import {EMPTY_LAYOUT, Layout} from './domain/layout'; -import * as Cookies from 'js-cookie'; +import {WidgetPrototype} from './widget/widget-prototype'; export class Uhr { From e83a37fd8517e7b26bd9694f91ee5e473af18dae Mon Sep 17 00:00:00 2001 From: Manuel Friedli Date: Thu, 9 May 2019 20:10:58 +0200 Subject: [PATCH 20/44] Fix FIXME --- src/renderer.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/renderer.ts b/src/renderer.ts index 1a993e6..7d3d928 100644 --- a/src/renderer.ts +++ b/src/renderer.ts @@ -286,7 +286,7 @@ class UhrRendererV2Delegate { * @param renderarea Das jQuery-gewrappte HTML-Element, auf dem gerendert werden soll. */ export class UhrRenderer { - constructor(private layout: Layout, private renderarea: any/*FIXME any: jQuery-wrapped HTML element*/) { + constructor(private layout: Layout, private renderarea: JQuery) { } render(beforeshow?: () => void): void { From 7a16ac2c0a8ac39a5205adee7620b14433ee4be5 Mon Sep 17 00:00:00 2001 From: Manuel Friedli Date: Thu, 9 May 2019 20:14:57 +0200 Subject: [PATCH 21/44] Rename renderer.ts to layout-renderer.ts and also rename the class accordingly. This is more precise. --- src/{renderer.ts => layout-renderer.ts} | 130 ++++++++++++------------ src/uhr.ts | 4 +- 2 files changed, 67 insertions(+), 67 deletions(-) rename src/{renderer.ts => layout-renderer.ts} (59%) diff --git a/src/renderer.ts b/src/layout-renderer.ts similarity index 59% rename from src/renderer.ts rename to src/layout-renderer.ts index 7d3d928..28a409f 100644 --- a/src/renderer.ts +++ b/src/layout-renderer.ts @@ -16,7 +16,7 @@ import {Layout, TimeDefinition, WordDefinition} from './domain/layout'; import {Letter} from './domain/letter'; -class UhrRendererV2Delegate { +class LayoutRendererV2Delegate { private static readonly vorne0: WordDefinition = { 3: [2, 3, 4], 4: [1, 5], @@ -162,66 +162,66 @@ class UhrRendererV2Delegate { 9: [8, 9] }; private static readonly seconds: TimeDefinition = { - '0': [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten0], - '1': [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten1], - '2': [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten2], - '3': [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten3], - '4': [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten4], - '5': [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten5], - '6': [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten6], - '7': [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten7], - '8': [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten8], - '9': [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten9], - '10': [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten0], - '11': [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten1], - '12': [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten2], - '13': [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten3], - '14': [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten4], - '15': [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten5], - '16': [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten6], - '17': [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten7], - '18': [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten8], - '19': [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten9], - '20': [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten0], - '21': [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten1], - '22': [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten2], - '23': [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten3], - '24': [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten4], - '25': [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten5], - '26': [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten6], - '27': [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten7], - '28': [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten8], - '29': [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten9], - '30': [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten0], - '31': [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten1], - '32': [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten2], - '33': [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten3], - '34': [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten4], - '35': [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten5], - '36': [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten6], - '37': [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten7], - '38': [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten8], - '39': [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten9], - '40': [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten0], - '41': [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten1], - '42': [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten2], - '43': [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten3], - '44': [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten4], - '45': [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten5], - '46': [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten6], - '47': [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten7], - '48': [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten8], - '49': [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten9], - '50': [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten0], - '51': [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten1], - '52': [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten2], - '53': [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten3], - '54': [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten4], - '55': [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten5], - '56': [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten6], - '57': [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten7], - '58': [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten8], - '59': [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten9] + '0': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten0], + '1': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten1], + '2': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten2], + '3': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten3], + '4': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten4], + '5': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten5], + '6': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten6], + '7': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten7], + '8': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten8], + '9': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten9], + '10': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten0], + '11': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten1], + '12': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten2], + '13': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten3], + '14': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten4], + '15': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten5], + '16': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten6], + '17': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten7], + '18': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten8], + '19': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten9], + '20': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten0], + '21': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten1], + '22': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten2], + '23': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten3], + '24': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten4], + '25': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten5], + '26': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten6], + '27': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten7], + '28': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten8], + '29': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten9], + '30': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten0], + '31': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten1], + '32': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten2], + '33': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten3], + '34': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten4], + '35': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten5], + '36': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten6], + '37': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten7], + '38': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten8], + '39': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten9], + '40': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten0], + '41': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten1], + '42': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten2], + '43': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten3], + '44': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten4], + '45': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten5], + '46': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten6], + '47': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten7], + '48': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten8], + '49': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten9], + '50': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten0], + '51': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten1], + '52': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten2], + '53': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten3], + '54': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten4], + '55': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten5], + '56': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten6], + '57': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten7], + '58': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten8], + '59': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten9] }; constructor(private layout: Layout) { @@ -240,7 +240,7 @@ class UhrRendererV2Delegate { if (typeof this.layout.seconds !== 'undefined' && this.layout.seconds !== null) { this.parseTimeDefinition(letters, 'second', this.layout.seconds); } else { - this.parseTimeDefinition(letters, 'second', UhrRendererV2Delegate.seconds); + this.parseTimeDefinition(letters, 'second', LayoutRendererV2Delegate.seconds); } this.parseTimeDefinition(letters, 'minute', this.layout.minutes); this.parseTimeDefinition(letters, 'hour', this.layout.hours); @@ -281,18 +281,18 @@ class UhrRendererV2Delegate { } /** - * Hilfsklasse zum Rendern der Uhr. + * Hilfsklasse zum Rendern der Buchstaben der Uhr. * @param layout Layout-Objekt, das gerendert werden soll. * @param renderarea Das jQuery-gewrappte HTML-Element, auf dem gerendert werden soll. */ -export class UhrRenderer { +export class LayoutRenderer { constructor(private layout: Layout, private renderarea: JQuery) { } render(beforeshow?: () => void): void { if (this.layout.parsed === undefined) { if (this.layout.version === 2) { - const delegate: UhrRendererV2Delegate = new UhrRendererV2Delegate(this.layout); + const delegate: LayoutRendererV2Delegate = new LayoutRendererV2Delegate(this.layout); const parsedLayout: Letter[][] = delegate.parse(); Object.defineProperty(this.layout, 'parsed', { value: parsedLayout, diff --git a/src/uhr.ts b/src/uhr.ts index d23ed0f..b485926 100644 --- a/src/uhr.ts +++ b/src/uhr.ts @@ -16,7 +16,7 @@ import * as Cookies from 'js-cookie'; import {EMPTY_LAYOUT, Layout} from './domain/layout'; import {Globals} from './domain/globals'; -import {UhrRenderer} from './renderer'; +import {LayoutRenderer} from './layout-renderer'; import {WidgetPrototype} from './widget/widget-prototype'; export class Uhr { @@ -81,7 +81,7 @@ export class Uhr { setLanguage(key: string): void { if (key !== this.widgetInstance.options.language) { this.widgetInstance.options.language = key; - const renderer = new UhrRenderer(this.getCurrentLayout(), this.widgetInstance.element.find('.letterarea')); + const renderer = new LayoutRenderer(this.getCurrentLayout(), this.widgetInstance.element.find('.letterarea')); renderer.render(() => { this.currentMinute = -1; this.update(); From 133287988e7a2aaea13b491cba3e20e47a499a28 Mon Sep 17 00:00:00 2001 From: Manuel Friedli Date: Fri, 10 May 2019 00:19:58 +0200 Subject: [PATCH 22/44] Refactor, and stricter linting (with failures now). --- .eslintrc.json | 20 +++ dist/lib/layout_de.js | 2 +- dist/lib/layout_de.js.map | 2 +- dist/lib/layout_de_ch.js | 2 +- dist/lib/layout_de_ch.js.map | 2 +- dist/lib/layout_de_ch_genau.js | 2 +- dist/lib/layout_de_ch_genau.js.map | 2 +- dist/lib/layout_dk.js | 2 +- dist/lib/layout_dk.js.map | 2 +- dist/lib/layout_en.js | 2 +- dist/lib/layout_en.js.map | 2 +- dist/lib/layout_es.js | 2 +- dist/lib/layout_es.js.map | 2 +- dist/lib/layout_fr.js | 2 +- dist/lib/layout_fr.js.map | 2 +- dist/lib/layout_it.js | 2 +- dist/lib/layout_it.js.map | 2 +- dist/lib/layout_nl.js | 2 +- dist/lib/layout_nl.js.map | 2 +- dist/lib/layout_pt.js | 2 +- dist/lib/layout_pt.js.map | 2 +- dist/lib/uhr.bundle.js | 2 +- dist/lib/uhr.bundle.js.map | 2 +- dist/lib/uhr.js | 2 +- dist/lib/uhr.js.map | 2 +- package-lock.json | 29 ++++ package.json | 2 + resources/styles/uhr.scss | 4 - src/cookie-handler.ts | 82 +++++++++++ src/domain/globals.ts | 2 +- src/index.ts | 2 +- src/uhr-renderer.ts | 207 +++++++++++++++++++++++++++ src/uhr.ts | 218 +++-------------------------- src/widget/widget-prototype.ts | 4 +- webpack.common.js | 1 - 35 files changed, 387 insertions(+), 232 deletions(-) create mode 100644 src/cookie-handler.ts create mode 100644 src/uhr-renderer.ts diff --git a/.eslintrc.json b/.eslintrc.json index 84a88dd..109e8a2 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -4,9 +4,13 @@ "sourceType": "module" }, "parser": "@typescript-eslint/parser", + "plugins": [ + "@typescript-eslint" + ], "env": { "browser": true }, + "extends": "eslint:recommended", "rules": { "curly": "error", "deprecation": true, @@ -26,7 +30,23 @@ "alphabetize": true } ], + "no-unused-vars": "off", + "@typescript-eslint/no-unused-vars": [ + "error", + { + "vars": "all", + "args": "after-used", + "ignoreRestSiblings": false + } + ], "prefer-for-of": true, + "semi": [ + "error", + "always", + { + "omitLastInOneLineBlock": false + } + ], "static-this": true, "triple-equals": true, "typeof-compare": true, diff --git a/dist/lib/layout_de.js b/dist/lib/layout_de.js index ea9ad5b..1d21d94 100644 --- a/dist/lib/layout_de.js +++ b/dist/lib/layout_de.js @@ -1,2 +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=2)}({2:function(e,t,r){"use strict";r.r(t),r.d(t,"Layout_de",function(){return l});var n={4:[8,9,10,11]},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)}}); +!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=2)}({2:function(e,t,r){"use strict";r.r(t),r.d(t,"Layout_de",function(){return l});var n={4:[8,9,10,11]},o={4:[1,2,3]},u={5:[1,2,3,4]},i={1:[8,9,10,11]},f={2:[1,2,3,4]},c={2:[5,6,7,8,9,10,11]},l={code:"de",hours:{"0,12":{9:[7,8,9,10,11]},"1,13":{6:[1,2,3,4]},"2,14":{6:[8,9,10,11]},"3,15":{7:[1,2,3,4]},"4,16":{7:[8,9,10,11]},"5,17":{5:[8,9,10,11]},"6,18":{8:[1,2,3,4,5]},"7,19":{9:[1,2,3,4,5,6]},"8,20":{8:[8,9,10,11]},"9,21":{10:[4,5,6,7]},"10,22":{10:[1,2,3,4]},"11,23":{5:[6,7,8]}},letters:["ESKISTAFÜNF","ZEHNZWANZIG","DREIVIERTEL","VORFUNKNACH","HALBAELFÜNF","EINSXAMZWEI","DREIPMJVIER","SECHSNLACHT","SIEBENZWÖLF","ZEHNEUNKUHR"],minutes:{"0,1,2,3,4":{10:[9,10,11]},"5,6,7,8,9":[i,n],"10,11,12,13,14":[f,n],"15,16,17,18,19":[{3:[5,6,7,8,9,10,11]},n],"20,21,22,23,24":[c,n],"25,26,27,28,29":[i,o,u],"30,31,32,33,34":u,"35,36,37,38,39":[i,n,u],"40,41,42,43,44":[c,o],"45,46,47,48,49":{3:[1,2,3,4,5,6,7,8,9,10,11]},"50,51,52,53,54":[f,o],"55,56,57,58,59":[i,o]},permanent:{1:[1,2,4,5,6]},prettyName:"Deutsch",version:2};$.fritteli.uhr.register(l)}}); //# sourceMappingURL=layout_de.js.map \ No newline at end of file diff --git a/dist/lib/layout_de.js.map b/dist/lib/layout_de.js.map index fc55f72..81d365a 100644 --- a/dist/lib/layout_de.js.map +++ b/dist/lib/layout_de.js.map @@ -1 +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":"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","file":"lib/layout_de.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 2);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst es_ist: WordDefinition = {1: [1, 2, 4, 5, 6]};\nconst uhr: WordDefinition = {10: [9, 10, 11]};\nconst nach: WordDefinition = {4: [8, 9, 10, 11]};\nconst vor: WordDefinition = {4: [1, 2, 3]};\nconst halb: WordDefinition = {5: [1, 2, 3, 4]};\nconst fuenf: WordDefinition = {1: [8, 9, 10, 11]};\nconst zehn: WordDefinition = {2: [1, 2, 3, 4]};\nconst viertel: WordDefinition = {3: [5, 6, 7, 8, 9, 10, 11]};\nconst zwanzig: WordDefinition = {2: [5, 6, 7, 8, 9, 10, 11]};\nconst dreiviertel: WordDefinition = {3: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]};\n\nexport const Layout_de: Layout = {\n code: 'de',\n hours: {\n '0,12': {9: [7, 8, 9, 10, 11]},\n '1,13': {6: [1, 2, 3, 4]},\n '2,14': {6: [8, 9, 10, 11]},\n '3,15': {7: [1, 2, 3, 4]},\n '4,16': {7: [8, 9, 10, 11]},\n '5,17': {5: [8, 9, 10, 11]},\n '6,18': {8: [1, 2, 3, 4, 5]},\n '7,19': {9: [1, 2, 3, 4, 5, 6]},\n '8,20': {8: [8, 9, 10, 11]},\n '9,21': {10: [4, 5, 6, 7]},\n '10,22': {10: [1, 2, 3, 4]},\n '11,23': {5: [6, 7, 8]}\n },\n letters: [\n 'ESKISTAFÜNF',\n 'ZEHNZWANZIG',\n 'DREIVIERTEL',\n 'VORFUNKNACH',\n 'HALBAELFÜNF',\n 'EINSXAMZWEI',\n 'DREIPMJVIER',\n 'SECHSNLACHT',\n 'SIEBENZWÖLF',\n 'ZEHNEUNKUHR'\n ],\n minutes: {\n '0,1,2,3,4': uhr,\n '5,6,7,8,9': [fuenf, nach],\n '10,11,12,13,14': [zehn, nach],\n '15,16,17,18,19': [viertel, nach],\n '20,21,22,23,24': [zwanzig, nach],\n '25,26,27,28,29': [fuenf, vor, halb],\n '30,31,32,33,34': halb,\n '35,36,37,38,39': [fuenf, nach, halb],\n '40,41,42,43,44': [zwanzig, vor],\n '45,46,47,48,49': dreiviertel,\n '50,51,52,53,54': [zehn, vor],\n '55,56,57,58,59': [fuenf, vor]\n },\n permanent: es_ist,\n prettyName: 'Deutsch',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_de);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/layout/layout-de.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","Layout_de","nach","4","vor","halb","5","fuenf","1","zehn","2","zwanzig","code","hours","0,12","9","1,13","6","2,14","3,15","7","4,16","5,17","6,18","8","7,19","8,20","9,21","10","10,22","11,23","letters","minutes","0,1,2,3,4","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","3","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","prettyName","version","$","fritteli","uhr","register"],"mappings":"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","file":"lib/layout_de.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 2);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst es_ist: WordDefinition = {1: [1, 2, 4, 5, 6]};\nconst uhr: WordDefinition = {10: [9, 10, 11]};\nconst nach: WordDefinition = {4: [8, 9, 10, 11]};\nconst vor: WordDefinition = {4: [1, 2, 3]};\nconst halb: WordDefinition = {5: [1, 2, 3, 4]};\nconst fuenf: WordDefinition = {1: [8, 9, 10, 11]};\nconst zehn: WordDefinition = {2: [1, 2, 3, 4]};\nconst viertel: WordDefinition = {3: [5, 6, 7, 8, 9, 10, 11]};\nconst zwanzig: WordDefinition = {2: [5, 6, 7, 8, 9, 10, 11]};\nconst dreiviertel: WordDefinition = {3: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]};\n\nexport const Layout_de: Layout = {\n code: 'de',\n hours: {\n '0,12': {9: [7, 8, 9, 10, 11]},\n '1,13': {6: [1, 2, 3, 4]},\n '2,14': {6: [8, 9, 10, 11]},\n '3,15': {7: [1, 2, 3, 4]},\n '4,16': {7: [8, 9, 10, 11]},\n '5,17': {5: [8, 9, 10, 11]},\n '6,18': {8: [1, 2, 3, 4, 5]},\n '7,19': {9: [1, 2, 3, 4, 5, 6]},\n '8,20': {8: [8, 9, 10, 11]},\n '9,21': {10: [4, 5, 6, 7]},\n '10,22': {10: [1, 2, 3, 4]},\n '11,23': {5: [6, 7, 8]}\n },\n letters: [\n 'ESKISTAFÜNF',\n 'ZEHNZWANZIG',\n 'DREIVIERTEL',\n 'VORFUNKNACH',\n 'HALBAELFÜNF',\n 'EINSXAMZWEI',\n 'DREIPMJVIER',\n 'SECHSNLACHT',\n 'SIEBENZWÖLF',\n 'ZEHNEUNKUHR'\n ],\n minutes: {\n '0,1,2,3,4': uhr,\n '5,6,7,8,9': [fuenf, nach],\n '10,11,12,13,14': [zehn, nach],\n '15,16,17,18,19': [viertel, nach],\n '20,21,22,23,24': [zwanzig, nach],\n '25,26,27,28,29': [fuenf, vor, halb],\n '30,31,32,33,34': halb,\n '35,36,37,38,39': [fuenf, nach, halb],\n '40,41,42,43,44': [zwanzig, vor],\n '45,46,47,48,49': dreiviertel,\n '50,51,52,53,54': [zehn, vor],\n '55,56,57,58,59': [fuenf, vor]\n },\n permanent: es_ist,\n prettyName: 'Deutsch',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_de);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/lib/layout_de_ch.js b/dist/lib/layout_de_ch.js index a3e8ebd..138500c 100644 --- a/dist/lib/layout_de_ch.js +++ b/dist/lib/layout_de_ch.js @@ -1,2 +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=3)}({3: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)}}); +!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=3)}({3:function(e,t,r){"use strict";r.r(t),r.d(t,"Layout_de_CH",function(){return a});var n={4:[1,2]},o={3:[9,10,11]},u={4:[4,5,6,7,8]},i={1:[9,10,11]},f={2:[9,10,11]},c={2:[1,2,3,4,5,6]},l={3:[1,2,3,4,5,6]},a={code:"de_CH",hours:{"0,12":{10:[1,2,3,4,5,6]},"1,13":{5:[1,2,3]},"2,14":{5:[4,5,6,7]},"3,15":{5:[9,10,11]},"4,16":{6:[1,2,3,4,5]},"5,17":{6:[6,7,8,9]},"6,18":{7:[1,2,3,4,5,6]},"7,19":{7:[7,8,9,10,11]},"8,20":{8:[1,2,3,4,5]},"9,21":{8:[6,7,8,9]},"10,22":{9:[1,2,3,4]},"11,23":{9:[8,9,10,11]}},letters:["ESKISCHAFÜF","VIERTUBFZÄÄ","ZWÄNZGSIVOR","ABOHAUBIEGE","EISZWÖISDRÜ","VIERIFÜFIQT","SÄCHSISIBNI","ACHTINÜNIEL","ZÄNIERBEUFI","ZWÖUFINAUHR"],minutes:{"5,6,7,8,9":[i,n],"10,11,12,13,14":[f,n],"15,16,17,18,19":[c,n],"20,21,22,23,24":[l,n],"25,26,27,28,29":[i,o,u],"30,31,32,33,34":u,"35,36,37,38,39":[i,n,u],"40,41,42,43,44":[l,o],"45,46,47,48,49":[c,o],"50,51,52,53,54":[f,o],"55,56,57,58,59":[i,o]},permanent:{1:[1,2,4,5,6,7]},prettyName:"Bärndütsch",version:2};$.fritteli.uhr.register(a)}}); //# sourceMappingURL=layout_de_ch.js.map \ No newline at end of file diff --git a/dist/lib/layout_de_ch.js.map b/dist/lib/layout_de_ch.js.map index 95f47ab..1a0393d 100644 --- a/dist/lib/layout_de_ch.js.map +++ b/dist/lib/layout_de_ch.js.map @@ -1 +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":"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","file":"lib/layout_de_ch.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 3);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst es_isch: WordDefinition = {1: [1, 2, 4, 5, 6, 7]};\nconst ab: WordDefinition = {4: [1, 2]};\nconst vor: WordDefinition = {3: [9, 10, 11]};\nconst haubi: WordDefinition = {4: [4, 5, 6, 7, 8]};\nconst fuef: WordDefinition = {1: [9, 10, 11]};\nconst zae: WordDefinition = {2: [9, 10, 11]};\nconst viertu: WordDefinition = {2: [1, 2, 3, 4, 5, 6]};\nconst zwaenzg: WordDefinition = {3: [1, 2, 3, 4, 5, 6]};\n\nexport const Layout_de_CH: Layout = {\n code: 'de_CH',\n hours: {\n '0,12': {10: [1, 2, 3, 4, 5, 6]},\n '1,13': {5: [1, 2, 3]},\n '2,14': {5: [4, 5, 6, 7]},\n '3,15': {5: [9, 10, 11]},\n '4,16': {6: [1, 2, 3, 4, 5]},\n '5,17': {6: [6, 7, 8, 9]},\n '6,18': {7: [1, 2, 3, 4, 5, 6]},\n '7,19': {7: [7, 8, 9, 10, 11]},\n '8,20': {8: [1, 2, 3, 4, 5]},\n '9,21': {8: [6, 7, 8, 9]},\n '10,22': {9: [1, 2, 3, 4]},\n '11,23': {9: [8, 9, 10, 11]}\n },\n letters: [\n 'ESKISCHAFÜF',\n 'VIERTUBFZÄÄ',\n 'ZWÄNZGSIVOR',\n 'ABOHAUBIEGE',\n 'EISZWÖISDRÜ',\n 'VIERIFÜFIQT',\n 'SÄCHSISIBNI',\n 'ACHTINÜNIEL',\n 'ZÄNIERBEUFI',\n 'ZWÖUFINAUHR'\n ],\n minutes: {\n '5,6,7,8,9': [fuef, ab],\n '10,11,12,13,14': [zae, ab],\n '15,16,17,18,19': [viertu, ab],\n '20,21,22,23,24': [zwaenzg, ab],\n '25,26,27,28,29': [fuef, vor, haubi],\n '30,31,32,33,34': haubi,\n '35,36,37,38,39': [fuef, ab, haubi],\n '40,41,42,43,44': [zwaenzg, vor],\n '45,46,47,48,49': [viertu, vor],\n '50,51,52,53,54': [zae, vor],\n '55,56,57,58,59': [fuef, vor]\n },\n permanent: es_isch,\n prettyName: 'Bärndütsch',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_de_CH);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/layout/layout-de_ch.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","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":"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","file":"lib/layout_de_ch.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 3);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst 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 index 4e394d2..225719b 100644 --- a/dist/lib/layout_de_ch_genau.js +++ b/dist/lib/layout_de_ch_genau.js @@ -1,2 +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=4)}({4: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)}}); +!function(e){var t={};function r(n){if(t[n])return t[n].exports;var u=t[n]={i:n,l:!1,exports:{}};return e[n].call(u.exports,u,u.exports,r),u.l=!0,u.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var u in e)r.d(n,u,function(t){return e[t]}.bind(null,u));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=4)}({4:function(e,t,r){"use strict";r.r(t),r.d(t,"Layout_de_CH_genau",function(){return l});var n={4:[4,5]},u={4:[1,2,3]},o={4:[7,8,9,10,11]},i={1:[9,10,11]},f={2:[9,10,11]},a={2:[1,2,3,4,5,6]},c={3:[1,2,3,4,5,6]},l={code:"de_CH_genau",hours:{"0,12":{10:[1,2,3,4,5,6]},"1,13":{5:[1,2,3]},"2,14":{5:[4,5,6,7]},"3,15":{5:[9,10,11]},"4,16":{6:[1,2,3,4,5]},"5,17":{6:[6,7,8,9]},"6,18":{7:[1,2,3,4,5,6]},"7,19":{7:[7,8,9,10,11]},"8,20":{8:[1,2,3,4,5]},"9,21":{8:[6,7,8,9]},"10,22":{9:[1,2,3,4]},"11,23":{9:[8,9,10,11]}},letters:["ESKISCHAFÜF","VIERTUBFZÄÄ","ZWÄNZGGENAU","VORABOHAUBI","EISZWÖISDRÜ","VIERIFÜFIQT","SÄCHSISIBNI","ACHTINÜNIEL","ZÄNIERBEUFI","ZWÖUFINAUHR"],minutes:{0:{3:[7,8,9,10,11]},"5,6,7,8,9":[i,n],"10,11,12,13,14":[f,n],"15,16,17,18,19":[a,n],"20,21,22,23,24":[c,n],"25,26,27,28,29":[i,u,o],"30,31,32,33,34":o,"35,36,37,38,39":[i,n,o],"40,41,42,43,44":[c,u],"45,46,47,48,49":[a,u],"50,51,52,53,54":[f,u],"55,56,57,58,59":[i,u]},permanent:{1:[1,2,4,5,6,7]},prettyName:"Bärndütsch (genau)",version:2};$.fritteli.uhr.register(l)}}); //# sourceMappingURL=layout_de_ch_genau.js.map \ No newline at end of file diff --git a/dist/lib/layout_de_ch_genau.js.map b/dist/lib/layout_de_ch_genau.js.map index a680932..abe95a4 100644 --- a/dist/lib/layout_de_ch_genau.js.map +++ b/dist/lib/layout_de_ch_genau.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://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 = 4);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst es_isch: WordDefinition = {1: [1, 2, 4, 5, 6, 7]};\nconst genau: WordDefinition = {3: [7, 8, 9, 10, 11]};\nconst ab: WordDefinition = {4: [4, 5]};\nconst vor: WordDefinition = {4: [1, 2, 3]};\nconst haubi: WordDefinition = {4: [7, 8, 9, 10, 11]};\nconst fuef: WordDefinition = {1: [9, 10, 11]};\nconst zae: WordDefinition = {2: [9, 10, 11]};\nconst viertu: WordDefinition = {2: [1, 2, 3, 4, 5, 6]};\nconst zwaenzg: WordDefinition = {3: [1, 2, 3, 4, 5, 6]};\n\nexport const Layout_de_CH_genau: Layout = {\n code: 'de_CH_genau',\n hours: {\n '0,12': {10: [1, 2, 3, 4, 5, 6]},\n '1,13': {5: [1, 2, 3]},\n '2,14': {5: [4, 5, 6, 7]},\n '3,15': {5: [9, 10, 11]},\n '4,16': {6: [1, 2, 3, 4, 5]},\n '5,17': {6: [6, 7, 8, 9]},\n '6,18': {7: [1, 2, 3, 4, 5, 6]},\n '7,19': {7: [7, 8, 9, 10, 11]},\n '8,20': {8: [1, 2, 3, 4, 5]},\n '9,21': {8: [6, 7, 8, 9]},\n '10,22': {9: [1, 2, 3, 4]},\n '11,23': {9: [8, 9, 10, 11]}\n },\n letters: [\n 'ESKISCHAFÜF',\n 'VIERTUBFZÄÄ',\n 'ZWÄNZGGENAU',\n 'VORABOHAUBI',\n 'EISZWÖISDRÜ',\n 'VIERIFÜFIQT',\n 'SÄCHSISIBNI',\n 'ACHTINÜNIEL',\n 'ZÄNIERBEUFI',\n 'ZWÖUFINAUHR'\n ],\n minutes: {\n '0': genau,\n '5,6,7,8,9': [fuef, ab],\n '10,11,12,13,14': [zae, ab],\n '15,16,17,18,19': [viertu, ab],\n '20,21,22,23,24': [zwaenzg, ab],\n '25,26,27,28,29': [fuef, vor, haubi],\n '30,31,32,33,34': haubi,\n '35,36,37,38,39': [fuef, ab, haubi],\n '40,41,42,43,44': [zwaenzg, vor],\n '45,46,47,48,49': [viertu, vor],\n '50,51,52,53,54': [zae, vor],\n '55,56,57,58,59': [fuef, vor]\n },\n permanent: es_isch,\n prettyName: 'Bärndütsch (genau)',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_de_CH_genau);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/layout/layout-de_ch_genau.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","Layout_de_CH_genau","ab","4","vor","haubi","fuef","1","zae","2","viertu","zwaenzg","3","code","hours","0,12","10","1,13","5","2,14","3,15","4,16","6","5,17","6,18","7","7,19","8,20","8","9,21","10,22","9","11,23","letters","minutes","0","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","prettyName","version","$","fritteli","uhr","register"],"mappings":"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","file":"lib/layout_de_ch_genau.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 4);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst es_isch: WordDefinition = {1: [1, 2, 4, 5, 6, 7]};\nconst genau: WordDefinition = {3: [7, 8, 9, 10, 11]};\nconst ab: WordDefinition = {4: [4, 5]};\nconst vor: WordDefinition = {4: [1, 2, 3]};\nconst haubi: WordDefinition = {4: [7, 8, 9, 10, 11]};\nconst fuef: WordDefinition = {1: [9, 10, 11]};\nconst zae: WordDefinition = {2: [9, 10, 11]};\nconst viertu: WordDefinition = {2: [1, 2, 3, 4, 5, 6]};\nconst zwaenzg: WordDefinition = {3: [1, 2, 3, 4, 5, 6]};\n\nexport const Layout_de_CH_genau: Layout = {\n code: 'de_CH_genau',\n hours: {\n '0,12': {10: [1, 2, 3, 4, 5, 6]},\n '1,13': {5: [1, 2, 3]},\n '2,14': {5: [4, 5, 6, 7]},\n '3,15': {5: [9, 10, 11]},\n '4,16': {6: [1, 2, 3, 4, 5]},\n '5,17': {6: [6, 7, 8, 9]},\n '6,18': {7: [1, 2, 3, 4, 5, 6]},\n '7,19': {7: [7, 8, 9, 10, 11]},\n '8,20': {8: [1, 2, 3, 4, 5]},\n '9,21': {8: [6, 7, 8, 9]},\n '10,22': {9: [1, 2, 3, 4]},\n '11,23': {9: [8, 9, 10, 11]}\n },\n letters: [\n 'ESKISCHAFÜF',\n 'VIERTUBFZÄÄ',\n 'ZWÄNZGGENAU',\n 'VORABOHAUBI',\n 'EISZWÖISDRÜ',\n 'VIERIFÜFIQT',\n 'SÄCHSISIBNI',\n 'ACHTINÜNIEL',\n 'ZÄNIERBEUFI',\n 'ZWÖUFINAUHR'\n ],\n minutes: {\n '0': genau,\n '5,6,7,8,9': [fuef, ab],\n '10,11,12,13,14': [zae, ab],\n '15,16,17,18,19': [viertu, ab],\n '20,21,22,23,24': [zwaenzg, ab],\n '25,26,27,28,29': [fuef, vor, haubi],\n '30,31,32,33,34': haubi,\n '35,36,37,38,39': [fuef, ab, haubi],\n '40,41,42,43,44': [zwaenzg, vor],\n '45,46,47,48,49': [viertu, vor],\n '50,51,52,53,54': [zae, vor],\n '55,56,57,58,59': [fuef, vor]\n },\n permanent: es_isch,\n prettyName: 'Bärndütsch (genau)',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_de_CH_genau);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/lib/layout_dk.js b/dist/lib/layout_dk.js index 28720a1..b2cfb5e 100644 --- a/dist/lib/layout_dk.js +++ b/dist/lib/layout_dk.js @@ -1,2 +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)}}); +!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=5)}({5:function(e,t,r){"use strict";r.r(t),r.d(t,"Layout_dk",function(){return d});var n={4:[4,5,6,7,8,9,10,11]},o={5:[8]},u={5:[4,5,6,7]},i={2:[1,2,3]},f={4:[1,2]},l={3:[4,5,6,7,8]},c={2:[4,5,6,7]},a={6:[8,9,10,11]},d={code:"dk",hours:{"0,12":{10:[8,9,10,11]},"1,13":{7:[1,2]},"2,14":{7:[3,4]},"3,15":{7:[5,6,7]},"4,16":{7:[8,9,10,11]},"5,17":{8:[1,2,3]},"6,18":{8:[4,5,6,7]},"7,19":{8:[9,10,11]},"8,20":{9:[1,2,3,4]},"9,21":{9:[6,7]},"10,22":{9:[10,11]},"11,23":{10:[1,2,3,4,5,6]}},letters:["KLOKKENVERO","FEMTYVESKLA","OJEKVARTVAT","TIAMINUTTER","VEMOVERILMF","MONALISHALV","ETTOTREFIRE","FEMSEKSRSYV","OTTERNIMETI","ELLEVEATOLV"],minutes:{"5,6,7,8,9":[i,n,u],"10,11,12,13,14":[f,n,u],"15,16,17,18,19":[l,u],"20,21,22,23,24":[c,n,u],"25,26,27,28,29":[i,n,o,a],"30,31,32,33,34":[a],"35,36,37,38,39":[i,n,u,a],"40,41,42,43,44":[c,n,o],"45,46,47,48,49":[l,o],"50,51,52,53,54":[f,n,o],"55,56,57,58,59":[i,n,o]},permanent:{1:[1,2,3,4,5,6,7,9,10]},prettyName:"Dansk",version:2};$.fritteli.uhr.register(d)}}); //# sourceMappingURL=layout_dk.js.map \ No newline at end of file diff --git a/dist/lib/layout_dk.js.map b/dist/lib/layout_dk.js.map index c250159..6684368 100644 --- a/dist/lib/layout_dk.js.map +++ b/dist/lib/layout_dk.js.map @@ -1 +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":"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,IACMC,EAA2B,CAACC,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,KACtDnC,EAAoB,CAACoC,EAAG,CAAC,IACzBC,EAAuB,CAACD,EAAG,CAAC,EAAG,EAAG,EAAG,IACrCE,EAAsB,CAACC,EAAG,CAAC,EAAG,EAAG,IACjCC,EAAqB,CAACL,EAAG,CAAC,EAAG,IAC7BM,EAAwB,CAACC,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,IACzCC,EAAuB,CAACJ,EAAG,CAAC,EAAG,EAAG,EAAG,IACrCK,EAAuB,CAACC,EAAG,CAAC,EAAG,EAAG,GAAI,KAE/BZ,EAAoB,CAC7Ba,KAAM,KACNC,MAAO,CACHC,OAAQ,CAACC,GAAI,CAAC,EAAG,EAAG,GAAI,KACxBC,OAAQ,CAACC,EAAG,CAAC,EAAG,IAChBC,OAAQ,CAACD,EAAG,CAAC,EAAG,IAChBE,OAAQ,CAACF,EAAG,CAAC,EAAG,EAAG,IACnBG,OAAQ,CAACH,EAAG,CAAC,EAAG,EAAG,GAAI,KACvBI,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,IACtBC,OAAQ,CAACD,EAAG,CAAC,EAAG,IAChBE,QAAS,CAACF,EAAG,CAAC,GAAI,KAClBG,QAAS,CAACd,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,KAElCe,QAAS,CACL,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,eAEJC,QAAS,CACLC,YAAa,CAAC5B,EAAKJ,EAAUG,GAC7B8B,iBAAkB,CAAC3B,EAAIN,EAAUG,GACjC+B,iBAAkB,CAAC3B,EAAOJ,GAC1BgC,iBAAkB,CAAC1B,EAAMT,EAAUG,GACnCiC,iBAAkB,CAAChC,EAAKJ,EAAUlC,EAAG4C,GACrC2B,iBAAkB,CAAC3B,GACnB4B,iBAAkB,CAAClC,EAAKJ,EAAUG,EAAMO,GACxC6B,iBAAkB,CAAC9B,EAAMT,EAAUlC,GACnC0E,iBAAkB,CAACjC,EAAOzC,GAC1B2E,iBAAkB,CAACnC,EAAIN,EAAUlC,GACjC4E,iBAAkB,CAACtC,EAAKJ,EAAUlC,IAEtC6E,UAnD+B,CAACC,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,KAoD5DC,WAAY,QACZC,QAAS,GAGbC,EAAEC,SAASC,IAAIC,SAASnD","file":"lib/layout_dk.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 5);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst klokken_er: WordDefinition = {1: [1, 2, 3, 4, 5, 6, 7, 9, 10]};\nconst minutter: WordDefinition = {4: [4, 5, 6, 7, 8, 9, 10, 11]};\nconst i: WordDefinition = {5: [8]};\nconst over: WordDefinition = {5: [4, 5, 6, 7]};\nconst fem: WordDefinition = {2: [1, 2, 3]};\nconst ti: WordDefinition = {4: [1, 2]};\nconst kvart: WordDefinition = {3: [4, 5, 6, 7, 8]};\nconst tyve: WordDefinition = {2: [4, 5, 6, 7]};\nconst halv: WordDefinition = {6: [8, 9, 10, 11]};\n\nexport const Layout_dk: Layout = {\n code: 'dk',\n hours: {\n '0,12': {10: [8, 9, 10, 11]},\n '1,13': {7: [1, 2]},\n '2,14': {7: [3, 4]},\n '3,15': {7: [5, 6, 7]},\n '4,16': {7: [8, 9, 10, 11]},\n '5,17': {8: [1, 2, 3]},\n '6,18': {8: [4, 5, 6, 7]},\n '7,19': {8: [9, 10, 11]},\n '8,20': {9: [1, 2, 3, 4]},\n '9,21': {9: [6, 7]},\n '10,22': {9: [10, 11]},\n '11,23': {10: [1, 2, 3, 4, 5, 6]}\n },\n letters: [\n 'KLOKKENVERO',\n 'FEMTYVESKLA',\n 'OJEKVARTVAT',\n 'TIAMINUTTER',\n 'VEMOVERILMF',\n 'MONALISHALV',\n 'ETTOTREFIRE',\n 'FEMSEKSRSYV',\n 'OTTERNIMETI',\n 'ELLEVEATOLV'\n ],\n minutes: {\n '5,6,7,8,9': [fem, minutter, over],\n '10,11,12,13,14': [ti, minutter, over],\n '15,16,17,18,19': [kvart, over],\n '20,21,22,23,24': [tyve, minutter, over],\n '25,26,27,28,29': [fem, minutter, i, halv],\n '30,31,32,33,34': [halv],\n '35,36,37,38,39': [fem, minutter, over, halv],\n '40,41,42,43,44': [tyve, minutter, i],\n '45,46,47,48,49': [kvart, i],\n '50,51,52,53,54': [ti, minutter, i],\n '55,56,57,58,59': [fem, minutter, i]\n },\n permanent: klokken_er,\n prettyName: 'Dansk',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_dk);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/layout/layout-dk.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","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 index 779e545..0b25cb4 100644 --- a/dist/lib/layout_en.js +++ b/dist/lib/layout_en.js @@ -1,2 +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)}}); +!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=6)}({6:function(e,t,r){"use strict";r.r(t),r.d(t,"Layout_en",function(){return a});var n={4:[10,11]},o={5:[1,2,3,4]},u={3:[7,8,9,10]},i={4:[6,7,8]},f={2:[1,3,4,5,6,7,8,9]},l={3:[1,2,3,4,5,6]},c={3:[1,2,3,4,5,6,7,8,9,10]},a={code:"en",getHour:function(e){var t=e.getHours();return e.getMinutes()>=35?(t+1)%24:t},hours:{"0,12":{9:[6,7,8,9,10,11]},"1,13":{6:[1,2,3]},"2,14":{7:[9,10,11]},"3,15":{6:[7,8,9,10,11]},"4,16":{7:[1,2,3,4]},"5,17":{7:[5,6,7,8]},"6,18":{6:[4,5,6]},"7,19":{9:[1,2,3,4,5]},"8,20":{8:[1,2,3,4,5]},"9,21":{5:[8,9,10,11]},"10,22":{10:[1,2,3]},"11,23":{8:[6,7,8,9,10,11]}},letters:["ITLISBFAMPM","ACQUARTERDC","TWENTYFIVEX","HALFBTENFTO","PASTERUNINE","ONESIXTHREE","FOURFIVETWO","EIGHTELEVEN","SEVENTWELVE","TENSO'CLOCK"],minutes:{"0,1,2,3,4":{10:[5,6,7,8,9,10,11]},"5,6,7,8,9":[u,o],"10,11,12,13,14":[i,o],"15,16,17,18,19":[f,o],"20,21,22,23,24":[l,o],"25,26,27,28,29":[c,o],"30,31,32,33,34":[{4:[1,2,3,4]},o],"35,36,37,38,39":[c,n],"40,41,42,43,44":[l,n],"45,46,47,48,49":[f,n],"50,51,52,53,54":[i,n],"55,56,57,58,59":[u,n]},permanent:{1:[1,2,4,5]},prettyName:"English",version:2};$.fritteli.uhr.register(a)}}); //# sourceMappingURL=layout_en.js.map \ No newline at end of file diff --git a/dist/lib/layout_en.js.map b/dist/lib/layout_en.js.map index bd3d39d..62f819e 100644 --- a/dist/lib/layout_en.js.map +++ b/dist/lib/layout_en.js.map @@ -1 +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 +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/layout/layout-en.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","Layout_en","to","4","past","5","five","3","ten","a_quarter","2","twenty","twentyfive","code","getHour","time","hour","getHours","getMinutes","hours","0,12","9","1,13","6","2,14","7","3,15","4,16","5,17","6,18","7,19","8,20","8","9,21","10,22","10","11,23","letters","minutes","0,1,2,3,4","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","1","prettyName","version","$","fritteli","uhr","register"],"mappings":"aACA,IAAAA,EAAA,GAGA,SAAAC,EAAAC,GAGA,GAAAF,EAAAE,GACA,OAAAF,EAAAE,GAAAC,QAGA,IAAAC,EAAAJ,EAAAE,GAAA,CACAG,EAAAH,EACAI,GAAA,EACAH,QAAA,IAUA,OANAI,EAAAL,GAAAM,KAAAJ,EAAAD,QAAAC,IAAAD,QAAAF,GAGAG,EAAAE,GAAA,EAGAF,EAAAD,QAKAF,EAAAQ,EAAAF,EAGAN,EAAAS,EAAAV,EAGAC,EAAAU,EAAA,SAAAR,EAAAS,EAAAC,GACAZ,EAAAa,EAAAX,EAAAS,IACAG,OAAAC,eAAAb,EAAAS,EAAA,CAA0CK,YAAA,EAAAC,IAAAL,KAK1CZ,EAAAkB,EAAA,SAAAhB,GACA,oBAAAiB,eAAAC,aACAN,OAAAC,eAAAb,EAAAiB,OAAAC,YAAA,CAAwDC,MAAA,WAExDP,OAAAC,eAAAb,EAAA,cAAiDmB,OAAA,KAQjDrB,EAAAsB,EAAA,SAAAD,EAAAE,GAEA,GADA,EAAAA,IAAAF,EAAArB,EAAAqB,IACA,EAAAE,EAAA,OAAAF,EACA,KAAAE,GAAA,iBAAAF,QAAAG,WAAA,OAAAH,EACA,IAAAI,EAAAX,OAAAY,OAAA,MAGA,GAFA1B,EAAAkB,EAAAO,GACAX,OAAAC,eAAAU,EAAA,WAAyCT,YAAA,EAAAK,UACzC,EAAAE,GAAA,iBAAAF,EAAA,QAAAM,KAAAN,EAAArB,EAAAU,EAAAe,EAAAE,EAAA,SAAAA,GAAgH,OAAAN,EAAAM,IAAqBC,KAAA,KAAAD,IACrI,OAAAF,GAIAzB,EAAA6B,EAAA,SAAA1B,GACA,IAAAS,EAAAT,KAAAqB,WACA,WAA2B,OAAArB,EAAA,SAC3B,WAAiC,OAAAA,GAEjC,OADAH,EAAAU,EAAAE,EAAA,IAAAA,GACAA,GAIAZ,EAAAa,EAAA,SAAAiB,EAAAC,GAAsD,OAAAjB,OAAAkB,UAAAC,eAAA1B,KAAAuB,EAAAC,IAGtD/B,EAAAkC,EAAA,GAIAlC,IAAAmC,EAAA,oCClFAnC,EAAAkB,EAAAkB,GAAApC,EAAAU,EAAA0B,EAAA,8BAAAC,IAiBA,IAEMC,EAAqB,CAACC,EAAG,CAAC,GAAI,KAC9BC,EAAuB,CAACC,EAAG,CAAC,EAAG,EAAG,EAAG,IAErCC,EAAuB,CAACC,EAAG,CAAC,EAAG,EAAG,EAAG,KACrCC,EAAsB,CAACL,EAAG,CAAC,EAAG,EAAG,IACjCM,EAA4B,CAACC,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IACtDC,EAAyB,CAACJ,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAC7CK,EAA6B,CAACL,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,KAEtDN,EAAoB,CAC7BY,KAAM,KACNC,QAAS,SAACC,GACN,IAAMC,EAAOD,EAAKE,WAClB,OAAIF,EAAKG,cAAgB,IACbF,EAAO,GAAK,GAEjBA,GAGXG,MAAO,CACHC,OAAQ,CAACC,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,KAC7BC,OAAQ,CAACC,EAAG,CAAC,EAAG,EAAG,IACnBC,OAAQ,CAACC,EAAG,CAAC,EAAG,GAAI,KACpBC,OAAQ,CAACH,EAAG,CAAC,EAAG,EAAG,EAAG,GAAI,KAC1BI,OAAQ,CAACF,EAAG,CAAC,EAAG,EAAG,EAAG,IACtBG,OAAQ,CAACH,EAAG,CAAC,EAAG,EAAG,EAAG,IACtBI,OAAQ,CAACN,EAAG,CAAC,EAAG,EAAG,IACnBO,OAAQ,CAACT,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,IACzBU,OAAQ,CAACC,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,IACzBC,OAAQ,CAAC5B,EAAG,CAAC,EAAG,EAAG,GAAI,KACvB6B,QAAS,CAACC,GAAI,CAAC,EAAG,EAAG,IACrBC,QAAS,CAACJ,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,MAElCK,QAAS,CACL,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,eAEJC,QAAS,CACLC,YA5CwB,CAACJ,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,KA6CjDK,YAAa,CAAClC,EAAMF,GACpBqC,iBAAkB,CAACjC,EAAKJ,GACxBsC,iBAAkB,CAACjC,EAAWL,GAC9BuC,iBAAkB,CAAChC,EAAQP,GAC3BwC,iBAAkB,CAAChC,EAAYR,GAC/ByC,iBAAkB,CArDG,CAAC1C,EAAG,CAAC,EAAG,EAAG,EAAG,IAqDVC,GACzB0C,iBAAkB,CAAClC,EAAYV,GAC/B6C,iBAAkB,CAACpC,EAAQT,GAC3B8C,iBAAkB,CAACvC,EAAWP,GAC9B+C,iBAAkB,CAACzC,EAAKN,GACxBgD,iBAAkB,CAAC5C,EAAMJ,IAE7BiD,UA7D0B,CAACC,EAAG,CAAC,EAAG,EAAG,EAAG,IA8DxCC,WAAY,UACZC,QAAS,GAGbC,EAAEC,SAASC,IAAIC,SAASzD","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 index 9be23f2..582b55b 100644 --- a/dist/lib/layout_es.js +++ b/dist/lib/layout_es.js @@ -1,2 +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)}}); +!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=7)}({7:function(e,t,r){"use strict";r.r(t),r.d(t,"Layout_es",function(){return s});var n={1:[2,3,4,6,7,8]},o={7:[6]},u={7:[7,8,9,10,11]},i={9:[7,8,9,10,11]},f={8:[8,9,10,11]},l={10:[6,7,8,9,10,11]},c={8:[2,3,4,5,6,7]},a={9:[1,2,3,4,5,6,7,8,9,10,11]},s={code:"es",getHour:function(e){var t=e.getHours();return e.getMinutes()>=35?(t+1)%24:t},hours:{"0,12":[n,{7:[1,2,3,4]}],"1,13":[{1:[1,2,6,7]},{1:[9,10,11]}],"2,14":[n,{2:[1,2,3]}],"3,15":[n,{2:[5,6,7,8]}],"4,16":[n,{3:[1,2,3,4,5,6]}],"5,17":[n,{3:[7,8,9,10,11]}],"6,18":[n,{4:[1,2,3,4]}],"7,19":[n,{4:[6,7,8,9,10]}],"8,20":[n,{5:[1,2,3,4]}],"9,21":[n,{5:[5,6,7,8,9]}],"10,22":[n,{6:[3,4,5,6]}],"11,23":[n,{6:[8,9,10,11]}]},letters:["ESONELASUNA","DOSITRESORE","CUATROCINCO","SEISASIETEN","OCHONUEVEYO","LADIEZSONCE","DOCELYMENOS","OVEINTEDIEZ","VEINTICINCO","MEDIACUARTO"],minutes:{"5,6,7,8,9":[o,i],"10,11,12,13,14":[o,f],"15,16,17,18,19":[o,l],"20,21,22,23,24":[o,c],"25,26,27,28,29":[o,a],"30,31,32,33,34":[o,{10:[1,2,3,4,5]}],"35,36,37,38,39":[u,a],"40,41,42,43,44":[u,c],"45,46,47,48,49":[u,l],"50,51,52,53,54":[u,f],"55,56,57,58,59":[u,i]},permanent:null,prettyName:"Español",version:2};$.fritteli.uhr.register(s)}}); //# sourceMappingURL=layout_es.js.map \ No newline at end of file diff --git a/dist/lib/layout_es.js.map b/dist/lib/layout_es.js.map index a0fe28f..ee42ef7 100644 --- a/dist/lib/layout_es.js.map +++ b/dist/lib/layout_es.js.map @@ -1 +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 +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/layout/layout-es.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","Layout_es","son_las","1","y","7","menos","cinco","9","diez","8","cuarto","10","veinte","veinticinco","code","getHour","time","hour","getHours","getMinutes","hours","0,12","1,13","2,14","2","3,15","4,16","3","5,17","6,18","4","7,19","8,20","5","9,21","10,22","6","11,23","letters","minutes","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","prettyName","version","$","fritteli","uhr","register"],"mappings":"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","file":"lib/layout_es.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 7);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst es_la: WordDefinition = {1: [1, 2, 6, 7]};\nconst son_las: WordDefinition = {1: [2, 3, 4, 6, 7, 8]};\nconst y: WordDefinition = {7: [6]};\nconst menos: WordDefinition = {7: [7, 8, 9, 10, 11]};\nconst media: WordDefinition = {10: [1, 2, 3, 4, 5]};\nconst cinco: WordDefinition = {9: [7, 8, 9, 10, 11]};\nconst diez: WordDefinition = {8: [8, 9, 10, 11]};\nconst cuarto: WordDefinition = {10: [6, 7, 8, 9, 10, 11]};\nconst veinte: WordDefinition = {8: [2, 3, 4, 5, 6, 7]};\nconst veinticinco: WordDefinition = {9: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]};\n\nexport const Layout_es: Layout = {\n code: 'es',\n getHour: (time: Date) => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n\n hours: {\n '0,12': [son_las, {7: [1, 2, 3, 4]}],\n '1,13': [es_la, {1: [9, 10, 11]}],\n '2,14': [son_las, {2: [1, 2, 3]}],\n '3,15': [son_las, {2: [5, 6, 7, 8]}],\n '4,16': [son_las, {3: [1, 2, 3, 4, 5, 6]}],\n '5,17': [son_las, {3: [7, 8, 9, 10, 11]}],\n '6,18': [son_las, {4: [1, 2, 3, 4]}],\n '7,19': [son_las, {4: [6, 7, 8, 9, 10]}],\n '8,20': [son_las, {5: [1, 2, 3, 4]}],\n '9,21': [son_las, {5: [5, 6, 7, 8, 9]}],\n '10,22': [son_las, {6: [3, 4, 5, 6]}],\n '11,23': [son_las, {6: [8, 9, 10, 11]}]\n },\n letters: [\n 'ESONELASUNA',\n 'DOSITRESORE',\n 'CUATROCINCO',\n 'SEISASIETEN',\n 'OCHONUEVEYO',\n 'LADIEZSONCE',\n 'DOCELYMENOS',\n 'OVEINTEDIEZ',\n 'VEINTICINCO',\n 'MEDIACUARTO'\n ],\n minutes: {\n '5,6,7,8,9': [y, cinco],\n '10,11,12,13,14': [y, diez],\n '15,16,17,18,19': [y, cuarto],\n '20,21,22,23,24': [y, veinte],\n '25,26,27,28,29': [y, veinticinco],\n '30,31,32,33,34': [y, media],\n '35,36,37,38,39': [menos, veinticinco],\n '40,41,42,43,44': [menos, veinte],\n '45,46,47,48,49': [menos, cuarto],\n '50,51,52,53,54': [menos, diez],\n '55,56,57,58,59': [menos, cinco]\n },\n permanent: null,\n prettyName: 'Español',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_es);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/lib/layout_fr.js b/dist/lib/layout_fr.js index b14311e..ed3938d 100644 --- a/dist/lib/layout_fr.js +++ b/dist/lib/layout_fr.js @@ -1,2 +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)}}); +!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=8)}({8:function(e,t,r){"use strict";r.r(t),r.d(t,"Layout_fr",function(){return s});var n={8:[1,2]},o={7:[1,2,3,4,5]},u={6:[6,7,8,9,10,11]},i={9:[7,8,9,10]},f={7:[9,10,11]},a={8:[4,5,6,7,8]},c={9:[1,2,3,4,5]},l={9:[1,2,3,4,5,6,7,8,9,10]},s={code:"fr",getHour:function(e){var t=e.getHours();return e.getMinutes()>=35?(t+1)%24:t},hours:{0:{5:[6,7,8,9,10,11]},"1,13":[{3:[5,6,7]},u],"2,14":[{1:[8,9,10,11]},u],"3,15":[{2:[7,8,9,10,11]},u],"4,16":[{2:[1,2,3,4,5,6]},u],"5,17":[{4:[8,9,10,11]},u],"6,18":[{4:[5,6,7]},u],"7,19":[{3:[8,9,10,11]},u],"8,20":[{4:[1,2,3,4]},u],"9,21":[{3:[1,2,3,4]},u],"10,22":[{5:[3,4,5]},u],"11,23":[{6:[1,2,3,4]},u],12:{5:[1,2,3,4]}},letters:["ILNESTODEUX","QUATRETROIS","NEUFUNESEPT","HUITSIXCINQ","MIDIXMINUIT","ONZERHEURES","MOINSOLEDIX","ETRQUARTPMD","VINGT-CINQU","ETSDEMIEPAM"],minutes:{"5,6,7,8,9":i,"10,11,12,13,14":f,"15,16,17,18,19":[n,a],"20,21,22,23,24":c,"25,26,27,28,29":l,"30,31,32,33,34":[n,{10:[4,5,6,7,8]}],"35,36,37,38,39":[o,l],"40,41,42,43,44":[o,c],"45,46,47,48,49":[o,{7:[7,8]},a],"50,51,52,53,54":[o,f],"55,56,57,58,59":[o,i]},permanent:{1:[1,2,4,5,6]},prettyName:"Français",version:2};$.fritteli.uhr.register(s)}}); //# sourceMappingURL=layout_fr.js.map \ No newline at end of file diff --git a/dist/lib/layout_fr.js.map b/dist/lib/layout_fr.js.map index 5017f87..038b5e0 100644 --- a/dist/lib/layout_fr.js.map +++ b/dist/lib/layout_fr.js.map @@ -1 +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 +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/layout/layout-fr.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","Layout_fr","et","8","moins","7","heures","6","cinq","9","dix","quart","vingt","vingtcinq","code","getHour","time","hour","getHours","getMinutes","hours","0","5","1,13","3","2,14","1","3,15","2","4,16","5,17","4","6,18","7,19","8,20","9,21","10,22","11,23","12","letters","minutes","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","10","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","prettyName","version","$","fritteli","uhr","register"],"mappings":"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","file":"lib/layout_fr.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 8);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst il_est: WordDefinition = {1: [1, 2, 4, 5, 6]};\nconst et: WordDefinition = {8: [1, 2]};\nconst moins: WordDefinition = {7: [1, 2, 3, 4, 5]};\nconst demie: WordDefinition = {10: [4, 5, 6, 7, 8]};\nconst heures: WordDefinition = {6: [6, 7, 8, 9, 10, 11]};\nconst le: WordDefinition = {7: [7, 8]};\nconst cinq: WordDefinition = {9: [7, 8, 9, 10]};\nconst dix: WordDefinition = {7: [9, 10, 11]};\nconst quart: WordDefinition = {8: [4, 5, 6, 7, 8]};\nconst vingt: WordDefinition = {9: [1, 2, 3, 4, 5]};\nconst vingtcinq: WordDefinition = {9: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]};\n\nexport const Layout_fr: Layout = {\n code: 'fr',\n getHour: (time: Date) => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n hours: {\n '0': {5: [6, 7, 8, 9, 10, 11]},\n '1,13': [\n {3: [5, 6, 7]},\n heures\n ],\n '2,14': [\n {1: [8, 9, 10, 11]},\n heures\n ],\n '3,15': [\n {2: [7, 8, 9, 10, 11]},\n heures\n ],\n '4,16': [\n {2: [1, 2, 3, 4, 5, 6]},\n heures\n ],\n '5,17': [\n {4: [8, 9, 10, 11]},\n heures\n ],\n '6,18': [\n {4: [5, 6, 7]},\n heures\n ],\n '7,19': [\n {3: [8, 9, 10, 11]},\n heures\n ],\n '8,20': [\n {4: [1, 2, 3, 4]},\n heures\n ],\n '9,21': [\n {3: [1, 2, 3, 4]},\n heures\n ],\n '10,22': [\n {5: [3, 4, 5]},\n heures\n ],\n '11,23': [\n {6: [1, 2, 3, 4]},\n heures\n ],\n '12': {5: [1, 2, 3, 4]}\n },\n letters: [\n 'ILNESTODEUX',\n 'QUATRETROIS',\n 'NEUFUNESEPT',\n 'HUITSIXCINQ',\n 'MIDIXMINUIT',\n 'ONZERHEURES',\n 'MOINSOLEDIX',\n 'ETRQUARTPMD',\n 'VINGT-CINQU',\n 'ETSDEMIEPAM'\n ],\n minutes: {\n '5,6,7,8,9': cinq,\n '10,11,12,13,14': dix,\n '15,16,17,18,19': [et, quart],\n '20,21,22,23,24': vingt,\n '25,26,27,28,29': vingtcinq,\n '30,31,32,33,34': [et, demie],\n '35,36,37,38,39': [moins, vingtcinq],\n '40,41,42,43,44': [moins, vingt],\n '45,46,47,48,49': [moins, le, quart],\n '50,51,52,53,54': [moins, dix],\n '55,56,57,58,59': [moins, cinq]\n },\n permanent: il_est,\n prettyName: 'Français',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_fr);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/lib/layout_it.js b/dist/lib/layout_it.js index 4caa97e..2cade10 100644 --- a/dist/lib/layout_it.js +++ b/dist/lib/layout_it.js @@ -1,2 +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)}}); +!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=9)}({9:function(e,t,r){"use strict";r.r(t),r.d(t,"Layout_it",function(){return s});var n={1:[1,2,3,4,6,7]},o={8:[1]},u={7:[8,9,10,11]},i={9:[6,7,8,9,10,11]},f={10:[1,2,3,4,5]},l={8:[3,4,6,7,8,9,10,11]},a={9:[1,2,3,4,5]},c={9:[1,2,3,4,5,6,7,8,9,10,11]},s={code:"it",getHour:function(e){var t=e.getHours();return e.getMinutes()>=35?(t+1)%24:t},hours:{"0,12":[n,{5:[1,2,3,4,5,6]}],"1,13":[{2:[1,3,4]},{2:[5,6,7]}],"2,14":[n,{2:[9,10,11]}],"3,15":[n,{3:[1,2,3]}],"4,16":[n,{6:[1,2,3,4,5,6,7]}],"5,17":[n,{7:[1,2,3,4,5,6]}],"6,18":[n,{6:[9,10,11]}],"7,19":[n,{5:[7,8,9,10,11]}],"8,20":[n,{3:[4,5,6,7]}],"9,21":[n,{3:[8,9,10,11]}],"10,22":[n,{4:[1,2,3,4,5]}],"11,23":[n,{4:[6,7,8,9,10,11]}]},letters:["SONORLEBORE","ÈRL'UNASDUE","TREOTTONOVE","DIECIUNDICI","DODICISETTE","QUATTROCSEI","CINQUEAMENO","ECUNOQUARTO","VENTICINQUE","DIECIPMEZZA"],minutes:{"5,6,7,8,9":[o,i],"10,11,12,13,14":[o,f],"15,16,17,18,19":[o,l],"20,21,22,23,24":[o,a],"25,26,27,28,29":[o,c],"30,31,32,33,34":[o,{10:[7,8,9,10,11]}],"35,36,37,38,39":[u,c],"40,41,42,43,44":[u,a],"45,46,47,48,49":[u,l],"50,51,52,53,54":[u,f],"55,56,57,58,59":[u,i]},permanent:null,prettyName:"Italiano",version:2};$.fritteli.uhr.register(s)}}); //# sourceMappingURL=layout_it.js.map \ No newline at end of file diff --git a/dist/lib/layout_it.js.map b/dist/lib/layout_it.js.map index ec07da9..e76c011 100644 --- a/dist/lib/layout_it.js.map +++ b/dist/lib/layout_it.js.map @@ -1 +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 +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/layout/layout-it.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","Layout_it","sono_le","1","e","8","meno","7","cinque","9","dieci","10","un_quarto","venti","venticinque","code","getHour","time","hour","getHours","getMinutes","hours","0,12","5","1,13","2","2,14","3,15","3","4,16","6","5,17","6,18","7,19","8,20","9,21","10,22","4","11,23","letters","minutes","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","prettyName","version","$","fritteli","uhr","register"],"mappings":"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","file":"lib/layout_it.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 9);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst sono_le: WordDefinition = {1: [1, 2, 3, 4, 6, 7]};\nconst e_l: WordDefinition = {2: [1, 3, 4]};\nconst e: WordDefinition = {8: [1]};\nconst meno: WordDefinition = {7: [8, 9, 10, 11]};\nconst mezza: WordDefinition = {10: [7, 8, 9, 10, 11]};\nconst cinque: WordDefinition = {9: [6, 7, 8, 9, 10, 11]};\nconst dieci: WordDefinition = {10: [1, 2, 3, 4, 5]};\nconst un_quarto: WordDefinition = {8: [3, 4, 6, 7, 8, 9, 10, 11]};\nconst venti: WordDefinition = {9: [1, 2, 3, 4, 5]};\nconst venticinque: WordDefinition = {9: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]};\n\nexport const Layout_it: Layout = {\n code: 'it',\n getHour: (time: Date) => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n hours: {\n '0,12': [sono_le, {5: [1, 2, 3, 4, 5, 6]}],\n '1,13': [e_l, {2: [5, 6, 7]}],\n '2,14': [sono_le, {2: [9, 10, 11]}],\n '3,15': [sono_le, {3: [1, 2, 3]}],\n '4,16': [sono_le, {6: [1, 2, 3, 4, 5, 6, 7]}],\n '5,17': [sono_le, {7: [1, 2, 3, 4, 5, 6]}],\n '6,18': [sono_le, {6: [9, 10, 11]}],\n '7,19': [sono_le, {5: [7, 8, 9, 10, 11]}],\n '8,20': [sono_le, {3: [4, 5, 6, 7]}],\n '9,21': [sono_le, {3: [8, 9, 10, 11]}],\n '10,22': [sono_le, {4: [1, 2, 3, 4, 5]}],\n '11,23': [sono_le, {4: [6, 7, 8, 9, 10, 11]}]\n },\n letters: [\n 'SONORLEBORE',\n 'ÈRL\\'UNASDUE',\n 'TREOTTONOVE',\n 'DIECIUNDICI',\n 'DODICISETTE',\n 'QUATTROCSEI',\n 'CINQUEAMENO',\n 'ECUNOQUARTO',\n 'VENTICINQUE',\n 'DIECIPMEZZA'\n ],\n minutes: {\n '5,6,7,8,9': [e, cinque],\n '10,11,12,13,14': [e, dieci],\n '15,16,17,18,19': [e, un_quarto],\n '20,21,22,23,24': [e, venti],\n '25,26,27,28,29': [e, venticinque],\n '30,31,32,33,34': [e, mezza],\n '35,36,37,38,39': [meno, venticinque],\n '40,41,42,43,44': [meno, venti],\n '45,46,47,48,49': [meno, un_quarto],\n '50,51,52,53,54': [meno, dieci],\n '55,56,57,58,59': [meno, cinque]\n },\n permanent: null,\n prettyName: 'Italiano',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_it);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/lib/layout_nl.js b/dist/lib/layout_nl.js index 57e6f44..5b53b76 100644 --- a/dist/lib/layout_nl.js +++ b/dist/lib/layout_nl.js @@ -1,2 +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)}}); +!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=10)}({10:function(e,t,r){"use strict";r.r(t),r.d(t,"Layout_nl",function(){return c});var n={3:[1,2,3,4]},o={2:[8,9,10,11]},u={4:[1,2,3,4]},i={1:[8,9,10,11]},f={2:[1,2,3,4]},l={3:[7,8,9,10,11]},c={code:"nl",getHour:function(e){var t=e.getHours();return e.getMinutes()>=20?(t+1)%24:t},hours:{"0,12":{10:[1,2,3,4,5,6]},"1,13":{5:[8,9,10]},"2,14":{6:[1,2,3,4]},"3,15":{6:[8,9,10,11]},"4,16":{7:[1,2,3,4]},"5,17":{7:[5,6,7,8]},"6,18":{7:[9,10,11]},"7,19":{8:[1,2,3,4,5]},"8,20":{9:[1,2,3,4]},"9,21":{8:[7,8,9,10,11]},"10,22":{9:[5,6,7,8]},"11,23":{9:[9,10,11]}},letters:["HETKISAVIJF","TIENBTZVOOR","OVERMEKWART","HALFSPWOVER","VOORTHGEENS","TWEEPVCDRIE","VIERVIJFZES","ZEVENONEGEN","ACHTTIENELF","TWAALFBFUUR"],minutes:{"0,1,2,3,4":{10:[9,10,11]},"5,6,7,8,9":[i,n],"10,11,12,13,14":[f,n],"15,16,17,18,19":[l,{4:[8,9,10,11]}],"20,21,22,23,24":[f,o,u],"25,26,27,28,29":[i,o,u],"30,31,32,33,34":u,"35,36,37,38,39":[i,n,u],"40,41,42,43,44":[f,n,u],"45,46,47,48,49":[l,{5:[1,2,3,4]}],"50,51,52,53,54":[f,o],"55,56,57,58,59":[i,o]},permanent:{1:[1,2,3,5,6]},prettyName:"Nederlands",version:2};$.fritteli.uhr.register(c)}}); //# sourceMappingURL=layout_nl.js.map \ No newline at end of file diff --git a/dist/lib/layout_nl.js.map b/dist/lib/layout_nl.js.map index a2a614d..78aa07e 100644 --- a/dist/lib/layout_nl.js.map +++ b/dist/lib/layout_nl.js.map @@ -1 +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 +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/layout/layout-nl.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","Layout_nl","over1","3","voor1","2","half","4","vijf","1","tien","kwart","code","getHour","time","hour","getHours","getMinutes","hours","0,12","10","1,13","5","2,14","6","3,15","4,16","7","5,17","6,18","7,19","8","8,20","9","9,21","10,22","11,23","letters","minutes","0,1,2,3,4","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","prettyName","version","$","fritteli","uhr","register"],"mappings":"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","file":"lib/layout_nl.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 10);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst het_is: WordDefinition = {1: [1, 2, 3, 5, 6]};\nconst over1: WordDefinition = {3: [1, 2, 3, 4]};\nconst voor1: WordDefinition = {2: [8, 9, 10, 11]};\nconst over2: WordDefinition = {4: [8, 9, 10, 11]};\nconst voor2: WordDefinition = {5: [1, 2, 3, 4]};\nconst half: WordDefinition = {4: [1, 2, 3, 4]};\nconst vijf: WordDefinition = {1: [8, 9, 10, 11]};\nconst tien: WordDefinition = {2: [1, 2, 3, 4]};\nconst kwart: WordDefinition = {3: [7, 8, 9, 10, 11]};\nconst uur: WordDefinition = {10: [9, 10, 11]};\n\nexport const Layout_nl: Layout = {\n code: 'nl',\n getHour: (time: Date) => {\n const hour = time.getHours();\n if (time.getMinutes() >= 20) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n hours: {\n '0,12': {10: [1, 2, 3, 4, 5, 6]},\n '1,13': {5: [8, 9, 10]},\n '2,14': {6: [1, 2, 3, 4]},\n '3,15': {6: [8, 9, 10, 11]},\n '4,16': {7: [1, 2, 3, 4]},\n '5,17': {7: [5, 6, 7, 8]},\n '6,18': {7: [9, 10, 11]},\n '7,19': {8: [1, 2, 3, 4, 5]},\n '8,20': {9: [1, 2, 3, 4]},\n '9,21': {8: [7, 8, 9, 10, 11]},\n '10,22': {9: [5, 6, 7, 8]},\n '11,23': {9: [9, 10, 11]}\n },\n letters: [\n 'HETKISAVIJF',\n 'TIENBTZVOOR',\n 'OVERMEKWART',\n 'HALFSPWOVER',\n 'VOORTHGEENS',\n 'TWEEPVCDRIE',\n 'VIERVIJFZES',\n 'ZEVENONEGEN',\n 'ACHTTIENELF',\n 'TWAALFBFUUR'\n ],\n minutes: {\n '0,1,2,3,4': uur,\n '5,6,7,8,9': [vijf, over1],\n '10,11,12,13,14': [tien, over1],\n '15,16,17,18,19': [kwart, over2],\n '20,21,22,23,24': [tien, voor1, half],\n '25,26,27,28,29': [vijf, voor1, half],\n '30,31,32,33,34': half,\n '35,36,37,38,39': [vijf, over1, half],\n '40,41,42,43,44': [tien, over1, half],\n '45,46,47,48,49': [kwart, voor2],\n '50,51,52,53,54': [tien, voor1],\n '55,56,57,58,59': [vijf, voor1]\n },\n permanent: het_is,\n prettyName: 'Nederlands',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_nl);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/lib/layout_pt.js b/dist/lib/layout_pt.js index 8ecd4f1..2caaa16 100644 --- a/dist/lib/layout_pt.js +++ b/dist/lib/layout_pt.js @@ -1,2 +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)}}); +!function(e){var t={};function r(n){if(t[n])return t[n].exports;var u=t[n]={i:n,l:!1,exports:{}};return e[n].call(u.exports,u,u.exports,r),u.l=!0,u.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var u in e)r.d(n,u,function(t){return e[t]}.bind(null,u));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=11)}({11:function(e,t,r){"use strict";r.r(t),r.d(t,"Layout_pt",function(){return p});var n={1:[1]},u={1:[2,3,4]},o={7:[8]},i={10:[5]},f={7:[7,8,9,10,11]},l={10:[7,8,9,10,11]},c={10:[1,2,3]},a={9:[1,2,4,5,6,7,8,9]},s={8:[1,2,3,4,5]},p={code:"pt",getHour:function(e){var t=e.getHours();return e.getMinutes()>=35?(t+1)%24:t},hours:{0:[n,{6:[2,3,4,5,7,8,9,10,11]}],12:[n,{2:[1,2,3,4,6,7,8]}],"1,13":[n,{1:[5,6,7]}],"2,14":[u,{3:[1,2,3,4]}],"3,15":[u,{1:[8,9,10,11]}],"4,16":[u,{4:[1,2,3,4,5,6]}],"5,17":[u,{5:[1,2,3,4,5]}],"6,18":[u,{3:[4,5,6,7]}],"7,19":[u,{3:[7,8,9,10]}],"8,20":[u,{5:[5,6,7,8]}],"9,21":[u,{4:[8,9,10,11]}],"10,22":[u,{2:[9,10,11]}],"11,23":[u,{5:[8,9,10,11]}]},letters:["ÉSÃOUMATRÊS","MEIOLDIADEZ","DUASEISETEY","QUATROHNOVE","CINCOITONZE","ZMEIALNOITE","HORASYMENOS","VINTECAMEIA","UMVQUARTOPM","DEZOEYCINCO"],minutes:{"5,6,7,8,9":[o,l],"10,11,12,13,14":[o,c],"15,16,17,18,19":[o,a],"20,21,22,23,24":[o,s],"25,26,27,28,29":[o,s,i,l],"30,31,32,33,34":[o,{8:[8,9,10,11]}],"35,36,37,38,39":[f,s,i,l],"40,41,42,43,44":[f,s],"45,46,47,48,49":[f,a],"50,51,52,53,54":[f,c],"55,56,57,58,59":[f,l]},permanent:null,prettyName:"Português",version:2};$.fritteli.uhr.register(p)}}); //# sourceMappingURL=layout_pt.js.map \ No newline at end of file diff --git a/dist/lib/layout_pt.js.map b/dist/lib/layout_pt.js.map index c7e6b2a..5d953e6 100644 --- a/dist/lib/layout_pt.js.map +++ b/dist/lib/layout_pt.js.map @@ -1 +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 +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/layout/layout-pt.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","Layout_pt","e_","1","sao","e1","7","e2","10","menos","cinco","dez","um_quarto","9","vinte","8","code","getHour","time","hour","getHours","getMinutes","hours","0","6","12","2","1,13","2,14","3","3,15","4,16","4","5,17","5","6,18","7,19","8,20","9,21","10,22","11,23","letters","minutes","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","prettyName","version","$","fritteli","uhr","register"],"mappings":"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","file":"lib/layout_pt.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 11);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst e_: WordDefinition = {1: [1]};\nconst sao: WordDefinition = {1: [2, 3, 4]};\nconst e1: WordDefinition = {7: [8]};\nconst e2: WordDefinition = {10: [5]};\nconst menos: WordDefinition = {7: [7, 8, 9, 10, 11]};\nconst meia: WordDefinition = {8: [8, 9, 10, 11]};\nconst cinco: WordDefinition = {10: [7, 8, 9, 10, 11]};\nconst dez: WordDefinition = {10: [1, 2, 3]};\nconst um_quarto: WordDefinition = {9: [1, 2, 4, 5, 6, 7, 8, 9]};\nconst vinte: WordDefinition = {8: [1, 2, 3, 4, 5]};\n\nexport const Layout_pt: Layout = {\n code: 'pt',\n getHour: (time: Date) => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n hours: {\n '0': [e_, {'6': [2, 3, 4, 5, 7, 8, 9, 10, 11]}],\n '12': [e_, {'2': [1, 2, 3, 4, 6, 7, 8]}],\n '1,13': [e_, {'1': [5, 6, 7]}],\n '2,14': [sao, {'3': [1, 2, 3, 4]}],\n '3,15': [sao, {'1': [8, 9, 10, 11]}],\n '4,16': [sao, {'4': [1, 2, 3, 4, 5, 6]}],\n '5,17': [sao, {'5': [1, 2, 3, 4, 5]}],\n '6,18': [sao, {'3': [4, 5, 6, 7]}],\n '7,19': [sao, {'3': [7, 8, 9, 10]}],\n '8,20': [sao, {'5': [5, 6, 7, 8]}],\n '9,21': [sao, {'4': [8, 9, 10, 11]}],\n '10,22': [sao, {'2': [9, 10, 11]}],\n '11,23': [sao, {'5': [8, 9, 10, 11]}]\n },\n letters: [\n 'ÉSÃOUMATRÊS',\n 'MEIOLDIADEZ',\n 'DUASEISETEY',\n 'QUATROHNOVE',\n 'CINCOITONZE',\n 'ZMEIALNOITE',\n 'HORASYMENOS',\n 'VINTECAMEIA',\n 'UMVQUARTOPM',\n 'DEZOEYCINCO'\n ],\n minutes: {\n '5,6,7,8,9': [e1, cinco],\n '10,11,12,13,14': [e1, dez],\n '15,16,17,18,19': [e1, um_quarto],\n '20,21,22,23,24': [e1, vinte],\n '25,26,27,28,29': [e1, vinte, e2, cinco],\n '30,31,32,33,34': [e1, meia],\n '35,36,37,38,39': [menos, vinte, e2, cinco],\n '40,41,42,43,44': [menos, vinte],\n '45,46,47,48,49': [menos, um_quarto],\n '50,51,52,53,54': [menos, dez],\n '55,56,57,58,59': [menos, cinco]\n },\n permanent: null,\n prettyName: 'Português',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_pt);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/lib/uhr.bundle.js b/dist/lib/uhr.bundle.js index c8fd261..604481b 100644 --- a/dist/lib/uhr.bundle.js +++ b/dist/lib/uhr.bundle.js @@ -1,2 +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=Cookies},function(t,e){t.exports=jQuery},function(t,e,n){"use strict";n.r(e),n.d(e,"Layout_de",function(){return h});var i={4:[8,9,10,11]},o={4:[1,2,3]},r={5:[1,2,3,4]},s={1:[8,9,10,11]},u={2:[1,2,3,4]},a={2:[5,6,7,8,9,10,11]},h={code:"de",hours:{"0,12":{9:[7,8,9,10,11]},"1,13":{6:[1,2,3,4]},"2,14":{6:[8,9,10,11]},"3,15":{7:[1,2,3,4]},"4,16":{7:[8,9,10,11]},"5,17":{5:[8,9,10,11]},"6,18":{8:[1,2,3,4,5]},"7,19":{9:[1,2,3,4,5,6]},"8,20":{8:[8,9,10,11]},"9,21":{10:[4,5,6,7]},"10,22":{10:[1,2,3,4]},"11,23":{5:[6,7,8]}},letters:["ESKISTAFÜNF","ZEHNZWANZIG","DREIVIERTEL","VORFUNKNACH","HALBAELFÜNF","EINSXAMZWEI","DREIPMJVIER","SECHSNLACHT","SIEBENZWÖLF","ZEHNEUNKUHR"],minutes:{"0,1,2,3,4":{10:[9,10,11]},"5,6,7,8,9":[s,i],"10,11,12,13,14":[u,i],"15,16,17,18,19":[{3:[5,6,7,8,9,10,11]},i],"20,21,22,23,24":[a,i],"25,26,27,28,29":[s,o,r],"30,31,32,33,34":r,"35,36,37,38,39":[s,i,r],"40,41,42,43,44":[a,o],"45,46,47,48,49":{3:[1,2,3,4,5,6,7,8,9,10,11]},"50,51,52,53,54":[u,o],"55,56,57,58,59":[s,o]},permanent:{1:[1,2,4,5,6]},prettyName:"Deutsch",version:2};$.fritteli.uhr.register(h)},function(t,e,n){"use strict";n.r(e),n.d(e,"Layout_de_CH",function(){return c});var i={4:[1,2]},o={3:[9,10,11]},r={4:[4,5,6,7,8]},s={1:[9,10,11]},u={2:[9,10,11]},a={2:[1,2,3,4,5,6]},h={3:[1,2,3,4,5,6]},c={code:"de_CH",hours:{"0,12":{10:[1,2,3,4,5,6]},"1,13":{5:[1,2,3]},"2,14":{5:[4,5,6,7]},"3,15":{5:[9,10,11]},"4,16":{6:[1,2,3,4,5]},"5,17":{6:[6,7,8,9]},"6,18":{7:[1,2,3,4,5,6]},"7,19":{7:[7,8,9,10,11]},"8,20":{8:[1,2,3,4,5]},"9,21":{8:[6,7,8,9]},"10,22":{9:[1,2,3,4]},"11,23":{9:[8,9,10,11]}},letters:["ESKISCHAFÜF","VIERTUBFZÄÄ","ZWÄNZGSIVOR","ABOHAUBIEGE","EISZWÖISDRÜ","VIERIFÜFIQT","SÄCHSISIBNI","ACHTINÜNIEL","ZÄNIERBEUFI","ZWÖUFINAUHR"],minutes:{"5,6,7,8,9":[s,i],"10,11,12,13,14":[u,i],"15,16,17,18,19":[a,i],"20,21,22,23,24":[h,i],"25,26,27,28,29":[s,o,r],"30,31,32,33,34":r,"35,36,37,38,39":[s,i,r],"40,41,42,43,44":[h,o],"45,46,47,48,49":[a,o],"50,51,52,53,54":[u,o],"55,56,57,58,59":[s,o]},permanent:{1:[1,2,4,5,6,7]},prettyName:"Bärndütsch",version:2};$.fritteli.uhr.register(c)},function(t,e,n){"use strict";n.r(e),n.d(e,"Layout_de_CH_genau",function(){return c});var i={4:[4,5]},o={4:[1,2,3]},r={4:[7,8,9,10,11]},s={1:[9,10,11]},u={2:[9,10,11]},a={2:[1,2,3,4,5,6]},h={3:[1,2,3,4,5,6]},c={code:"de_CH_genau",hours:{"0,12":{10:[1,2,3,4,5,6]},"1,13":{5:[1,2,3]},"2,14":{5:[4,5,6,7]},"3,15":{5:[9,10,11]},"4,16":{6:[1,2,3,4,5]},"5,17":{6:[6,7,8,9]},"6,18":{7:[1,2,3,4,5,6]},"7,19":{7:[7,8,9,10,11]},"8,20":{8:[1,2,3,4,5]},"9,21":{8:[6,7,8,9]},"10,22":{9:[1,2,3,4]},"11,23":{9:[8,9,10,11]}},letters:["ESKISCHAFÜF","VIERTUBFZÄÄ","ZWÄNZGGENAU","VORABOHAUBI","EISZWÖISDRÜ","VIERIFÜFIQT","SÄCHSISIBNI","ACHTINÜNIEL","ZÄNIERBEUFI","ZWÖUFINAUHR"],minutes:{0:{3:[7,8,9,10,11]},"5,6,7,8,9":[s,i],"10,11,12,13,14":[u,i],"15,16,17,18,19":[a,i],"20,21,22,23,24":[h,i],"25,26,27,28,29":[s,o,r],"30,31,32,33,34":r,"35,36,37,38,39":[s,i,r],"40,41,42,43,44":[h,o],"45,46,47,48,49":[a,o],"50,51,52,53,54":[u,o],"55,56,57,58,59":[s,o]},permanent:{1:[1,2,4,5,6,7]},prettyName:"Bärndütsch (genau)",version:2};$.fritteli.uhr.register(c)},function(t,e,n){"use strict";n.r(e),n.d(e,"Layout_dk",function(){return d});var i={4:[4,5,6,7,8,9,10,11]},o={5:[8]},r={5:[4,5,6,7]},s={2:[1,2,3]},u={4:[1,2]},a={3:[4,5,6,7,8]},h={2:[4,5,6,7]},c={6:[8,9,10,11]},d={code:"dk",hours:{"0,12":{10:[8,9,10,11]},"1,13":{7:[1,2]},"2,14":{7:[3,4]},"3,15":{7:[5,6,7]},"4,16":{7:[8,9,10,11]},"5,17":{8:[1,2,3]},"6,18":{8:[4,5,6,7]},"7,19":{8:[9,10,11]},"8,20":{9:[1,2,3,4]},"9,21":{9:[6,7]},"10,22":{9:[10,11]},"11,23":{10:[1,2,3,4,5,6]}},letters:["KLOKKENVERO","FEMTYVESKLA","OJEKVARTVAT","TIAMINUTTER","VEMOVERILMF","MONALISHALV","ETTOTREFIRE","FEMSEKSRSYV","OTTERNIMETI","ELLEVEATOLV"],minutes:{"5,6,7,8,9":[s,i,r],"10,11,12,13,14":[u,i,r],"15,16,17,18,19":[a,r],"20,21,22,23,24":[h,i,r],"25,26,27,28,29":[s,i,o,c],"30,31,32,33,34":[c],"35,36,37,38,39":[s,i,r,c],"40,41,42,43,44":[h,i,o],"45,46,47,48,49":[a,o],"50,51,52,53,54":[u,i,o],"55,56,57,58,59":[s,i,o]},permanent:{1:[1,2,3,4,5,6,7,9,10]},prettyName:"Dansk",version:2};$.fritteli.uhr.register(d)},function(t,e,n){"use strict";n.r(e),n.d(e,"Layout_en",function(){return c});var i={4:[10,11]},o={5:[1,2,3,4]},r={3:[7,8,9,10]},s={4:[6,7,8]},u={2:[1,3,4,5,6,7,8,9]},a={3:[1,2,3,4,5,6]},h={3:[1,2,3,4,5,6,7,8,9,10]},c={code:"en",getHour:function(t){var e=t.getHours();return t.getMinutes()>=35?(e+1)%24:e},hours:{"0,12":{9:[6,7,8,9,10,11]},"1,13":{6:[1,2,3]},"2,14":{7:[9,10,11]},"3,15":{6:[7,8,9,10,11]},"4,16":{7:[1,2,3,4]},"5,17":{7:[5,6,7,8]},"6,18":{6:[4,5,6]},"7,19":{9:[1,2,3,4,5]},"8,20":{8:[1,2,3,4,5]},"9,21":{5:[8,9,10,11]},"10,22":{10:[1,2,3]},"11,23":{8:[6,7,8,9,10,11]}},letters:["ITLISBFAMPM","ACQUARTERDC","TWENTYFIVEX","HALFBTENFTO","PASTERUNINE","ONESIXTHREE","FOURFIVETWO","EIGHTELEVEN","SEVENTWELVE","TENSO'CLOCK"],minutes:{"0,1,2,3,4":{10:[5,6,7,8,9,10,11]},"5,6,7,8,9":[r,o],"10,11,12,13,14":[s,o],"15,16,17,18,19":[u,o],"20,21,22,23,24":[a,o],"25,26,27,28,29":[h,o],"30,31,32,33,34":[{4:[1,2,3,4]},o],"35,36,37,38,39":[h,i],"40,41,42,43,44":[a,i],"45,46,47,48,49":[u,i],"50,51,52,53,54":[s,i],"55,56,57,58,59":[r,i]},permanent:{1:[1,2,4,5]},prettyName:"English",version:2};$.fritteli.uhr.register(c)},function(t,e,n){"use strict";n.r(e),n.d(e,"Layout_es",function(){return d});var i={1:[2,3,4,6,7,8]},o={7:[6]},r={7:[7,8,9,10,11]},s={9:[7,8,9,10,11]},u={8:[8,9,10,11]},a={10:[6,7,8,9,10,11]},h={8:[2,3,4,5,6,7]},c={9:[1,2,3,4,5,6,7,8,9,10,11]},d={code:"es",getHour:function(t){var e=t.getHours();return t.getMinutes()>=35?(e+1)%24:e},hours:{"0,12":[i,{7:[1,2,3,4]}],"1,13":[{1:[1,2,6,7]},{1:[9,10,11]}],"2,14":[i,{2:[1,2,3]}],"3,15":[i,{2:[5,6,7,8]}],"4,16":[i,{3:[1,2,3,4,5,6]}],"5,17":[i,{3:[7,8,9,10,11]}],"6,18":[i,{4:[1,2,3,4]}],"7,19":[i,{4:[6,7,8,9,10]}],"8,20":[i,{5:[1,2,3,4]}],"9,21":[i,{5:[5,6,7,8,9]}],"10,22":[i,{6:[3,4,5,6]}],"11,23":[i,{6:[8,9,10,11]}]},letters:["ESONELASUNA","DOSITRESORE","CUATROCINCO","SEISASIETEN","OCHONUEVEYO","LADIEZSONCE","DOCELYMENOS","OVEINTEDIEZ","VEINTICINCO","MEDIACUARTO"],minutes:{"5,6,7,8,9":[o,s],"10,11,12,13,14":[o,u],"15,16,17,18,19":[o,a],"20,21,22,23,24":[o,h],"25,26,27,28,29":[o,c],"30,31,32,33,34":[o,{10:[1,2,3,4,5]}],"35,36,37,38,39":[r,c],"40,41,42,43,44":[r,h],"45,46,47,48,49":[r,a],"50,51,52,53,54":[r,u],"55,56,57,58,59":[r,s]},permanent:null,prettyName:"Español",version:2};$.fritteli.uhr.register(d)},function(t,e,n){"use strict";n.r(e),n.d(e,"Layout_fr",function(){return d});var i={8:[1,2]},o={7:[1,2,3,4,5]},r={6:[6,7,8,9,10,11]},s={9:[7,8,9,10]},u={7:[9,10,11]},a={8:[4,5,6,7,8]},h={9:[1,2,3,4,5]},c={9:[1,2,3,4,5,6,7,8,9,10]},d={code:"fr",getHour:function(t){var e=t.getHours();return t.getMinutes()>=35?(e+1)%24:e},hours:{0:{5:[6,7,8,9,10,11]},"1,13":[{3:[5,6,7]},r],"2,14":[{1:[8,9,10,11]},r],"3,15":[{2:[7,8,9,10,11]},r],"4,16":[{2:[1,2,3,4,5,6]},r],"5,17":[{4:[8,9,10,11]},r],"6,18":[{4:[5,6,7]},r],"7,19":[{3:[8,9,10,11]},r],"8,20":[{4:[1,2,3,4]},r],"9,21":[{3:[1,2,3,4]},r],"10,22":[{5:[3,4,5]},r],"11,23":[{6:[1,2,3,4]},r],12:{5:[1,2,3,4]}},letters:["ILNESTODEUX","QUATRETROIS","NEUFUNESEPT","HUITSIXCINQ","MIDIXMINUIT","ONZERHEURES","MOINSOLEDIX","ETRQUARTPMD","VINGT-CINQU","ETSDEMIEPAM"],minutes:{"5,6,7,8,9":s,"10,11,12,13,14":u,"15,16,17,18,19":[i,a],"20,21,22,23,24":h,"25,26,27,28,29":c,"30,31,32,33,34":[i,{10:[4,5,6,7,8]}],"35,36,37,38,39":[o,c],"40,41,42,43,44":[o,h],"45,46,47,48,49":[o,{7:[7,8]},a],"50,51,52,53,54":[o,u],"55,56,57,58,59":[o,s]},permanent:{1:[1,2,4,5,6]},prettyName:"Français",version:2};$.fritteli.uhr.register(d)},function(t,e,n){"use strict";n.r(e),n.d(e,"Layout_it",function(){return d});var i={1:[1,2,3,4,6,7]},o={8:[1]},r={7:[8,9,10,11]},s={9:[6,7,8,9,10,11]},u={10:[1,2,3,4,5]},a={8:[3,4,6,7,8,9,10,11]},h={9:[1,2,3,4,5]},c={9:[1,2,3,4,5,6,7,8,9,10,11]},d={code:"it",getHour:function(t){var e=t.getHours();return t.getMinutes()>=35?(e+1)%24:e},hours:{"0,12":[i,{5:[1,2,3,4,5,6]}],"1,13":[{2:[1,3,4]},{2:[5,6,7]}],"2,14":[i,{2:[9,10,11]}],"3,15":[i,{3:[1,2,3]}],"4,16":[i,{6:[1,2,3,4,5,6,7]}],"5,17":[i,{7:[1,2,3,4,5,6]}],"6,18":[i,{6:[9,10,11]}],"7,19":[i,{5:[7,8,9,10,11]}],"8,20":[i,{3:[4,5,6,7]}],"9,21":[i,{3:[8,9,10,11]}],"10,22":[i,{4:[1,2,3,4,5]}],"11,23":[i,{4:[6,7,8,9,10,11]}]},letters:["SONORLEBORE","ÈRL'UNASDUE","TREOTTONOVE","DIECIUNDICI","DODICISETTE","QUATTROCSEI","CINQUEAMENO","ECUNOQUARTO","VENTICINQUE","DIECIPMEZZA"],minutes:{"5,6,7,8,9":[o,s],"10,11,12,13,14":[o,u],"15,16,17,18,19":[o,a],"20,21,22,23,24":[o,h],"25,26,27,28,29":[o,c],"30,31,32,33,34":[o,{10:[7,8,9,10,11]}],"35,36,37,38,39":[r,c],"40,41,42,43,44":[r,h],"45,46,47,48,49":[r,a],"50,51,52,53,54":[r,u],"55,56,57,58,59":[r,s]},permanent:null,prettyName:"Italiano",version:2};$.fritteli.uhr.register(d)},function(t,e,n){"use strict";n.r(e),n.d(e,"Layout_nl",function(){return h});var i={3:[1,2,3,4]},o={2:[8,9,10,11]},r={4:[1,2,3,4]},s={1:[8,9,10,11]},u={2:[1,2,3,4]},a={3:[7,8,9,10,11]},h={code:"nl",getHour:function(t){var e=t.getHours();return t.getMinutes()>=20?(e+1)%24:e},hours:{"0,12":{10:[1,2,3,4,5,6]},"1,13":{5:[8,9,10]},"2,14":{6:[1,2,3,4]},"3,15":{6:[8,9,10,11]},"4,16":{7:[1,2,3,4]},"5,17":{7:[5,6,7,8]},"6,18":{7:[9,10,11]},"7,19":{8:[1,2,3,4,5]},"8,20":{9:[1,2,3,4]},"9,21":{8:[7,8,9,10,11]},"10,22":{9:[5,6,7,8]},"11,23":{9:[9,10,11]}},letters:["HETKISAVIJF","TIENBTZVOOR","OVERMEKWART","HALFSPWOVER","VOORTHGEENS","TWEEPVCDRIE","VIERVIJFZES","ZEVENONEGEN","ACHTTIENELF","TWAALFBFUUR"],minutes:{"0,1,2,3,4":{10:[9,10,11]},"5,6,7,8,9":[s,i],"10,11,12,13,14":[u,i],"15,16,17,18,19":[a,{4:[8,9,10,11]}],"20,21,22,23,24":[u,o,r],"25,26,27,28,29":[s,o,r],"30,31,32,33,34":r,"35,36,37,38,39":[s,i,r],"40,41,42,43,44":[u,i,r],"45,46,47,48,49":[a,{5:[1,2,3,4]}],"50,51,52,53,54":[u,o],"55,56,57,58,59":[s,o]},permanent:{1:[1,2,3,5,6]},prettyName:"Nederlands",version:2};$.fritteli.uhr.register(h)},function(t,e,n){"use strict";n.r(e),n.d(e,"Layout_pt",function(){return l});var i={1:[1]},o={1:[2,3,4]},r={7:[8]},s={10:[5]},u={7:[7,8,9,10,11]},a={10:[7,8,9,10,11]},h={10:[1,2,3]},c={9:[1,2,4,5,6,7,8,9]},d={8:[1,2,3,4,5]},l={code:"pt",getHour:function(t){var e=t.getHours();return t.getMinutes()>=35?(e+1)%24:e},hours:{0:[i,{6:[2,3,4,5,7,8,9,10,11]}],12:[i,{2:[1,2,3,4,6,7,8]}],"1,13":[i,{1:[5,6,7]}],"2,14":[o,{3:[1,2,3,4]}],"3,15":[o,{1:[8,9,10,11]}],"4,16":[o,{4:[1,2,3,4,5,6]}],"5,17":[o,{5:[1,2,3,4,5]}],"6,18":[o,{3:[4,5,6,7]}],"7,19":[o,{3:[7,8,9,10]}],"8,20":[o,{5:[5,6,7,8]}],"9,21":[o,{4:[8,9,10,11]}],"10,22":[o,{2:[9,10,11]}],"11,23":[o,{5:[8,9,10,11]}]},letters:["ÉSÃOUMATRÊS","MEIOLDIADEZ","DUASEISETEY","QUATROHNOVE","CINCOITONZE","ZMEIALNOITE","HORASYMENOS","VINTECAMEIA","UMVQUARTOPM","DEZOEYCINCO"],minutes:{"5,6,7,8,9":[r,a],"10,11,12,13,14":[r,h],"15,16,17,18,19":[r,c],"20,21,22,23,24":[r,d],"25,26,27,28,29":[r,d,s,a],"30,31,32,33,34":[r,{8:[8,9,10,11]}],"35,36,37,38,39":[u,d,s,a],"40,41,42,43,44":[u,d],"45,46,47,48,49":[u,c],"50,51,52,53,54":[u,h],"55,56,57,58,59":[u,a]},permanent:null,prettyName:"Português",version:2};$.fritteli.uhr.register(l)},function(t,e,n){"use strict";n.r(e);var i=function(){function t(){}return t.registerTheme=function(e,n){t.themes.some(function(t){return t.name===e})?console.log("Theme with name '"+e+"' already registered; ignoring register request for styleClass '"+n+"'."):t.themes.push({name:e,styleClass:n})},t.hasThemes=function(){return t.themes.length>0},t.hasMultipleThemes=function(){return t.themes.length>1},t.getFirstTheme=function(){return t.getTheme(0)},t.getTheme=function(e){return t.themes[e]},t.getThemes=function(){return t.themes},t.registerLayout=function(e){!t.layouts.some(function(t){return e.code===t.code&&(e.prettyName!==t.prettyName&&console.error("Error: Language code '"+e.code+"' cannot be registered for layout '"+e.prettyName+"' because it is already registered for layout '"+t.prettyName+"'!"),!0)})&&(t.layouts.push(e),t.layouts.sort(function(t,e){return t.prettyName.localeCompare(e.prettyName)}))},t.hasLayouts=function(){return t.layouts.length>0},t.hasMultipleLayouts=function(){return t.layouts.length>1},t.getFirstLayout=function(){return t.layouts[0]},t.getLayouts=function(){return t.layouts},t.layouts=[],t.themes=[],t}(),o=n(0),r={code:null,hours:null,letters:[],minutes:null,permanent:[],prettyName:null,version:2},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}(),u=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=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 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 o.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},o.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]:r},t}(),c=n(1);c("link[rel=stylesheet]").each(function(t,e){var n=c(e),o=n.attr("data-class");if(void 0!==o){var r=n.attr("data-name");void 0===r&&(r=o),i.registerTheme(r,o)}}),i.hasThemes()||i.registerTheme("",""),$.widget("fritteli.uhr",{options:{width:"100%",status:"on",language:"de_CH",theme:i.getFirstTheme().styleClass,force:!1,controls:!0,cookiePath:void 0,autoresize:!0,mode:"normal"},start:function(){this.__fritteli_uhr_instance.start()},stop:function(){this.__fritteli_uhr_instance.stop()},toggle:function(){this.__fritteli_uhr_instance.toggle()},language:function(t){this.__fritteli_uhr_instance.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 h(this)},_destroy:function(){this.__fritteli_uhr_instance.destroy()},__fritteli_uhr_instance:null}),$.fritteli.uhr.register=i.registerLayout},function(t,e,n){"use strict";n.r(e);n(12);var i=n(2),o=n(3),r=n(4),s=n(5),u=n(6),a=n(7),h=n(8),c=n(9),d=n(10),l=n(11);o.Layout_de_CH,r.Layout_de_CH_genau,i.Layout_de,s.Layout_dk,u.Layout_en,a.Layout_es,h.Layout_fr,c.Layout_it,d.Layout_nl,l.Layout_pt}]); +!function(t){var e={};function n(i){if(e[i])return e[i].exports;var o=e[i]={i:i,l:!1,exports:{}};return t[i].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(i,o,function(e){return t[e]}.bind(null,o));return i},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=13)}([function(t,e){t.exports=Cookies},function(t,e){t.exports=jQuery},function(t,e,n){"use strict";n.r(e),n.d(e,"Layout_de",function(){return h});var i={4:[8,9,10,11]},o={4:[1,2,3]},r={5:[1,2,3,4]},s={1:[8,9,10,11]},u={2:[1,2,3,4]},a={2:[5,6,7,8,9,10,11]},h={code:"de",hours:{"0,12":{9:[7,8,9,10,11]},"1,13":{6:[1,2,3,4]},"2,14":{6:[8,9,10,11]},"3,15":{7:[1,2,3,4]},"4,16":{7:[8,9,10,11]},"5,17":{5:[8,9,10,11]},"6,18":{8:[1,2,3,4,5]},"7,19":{9:[1,2,3,4,5,6]},"8,20":{8:[8,9,10,11]},"9,21":{10:[4,5,6,7]},"10,22":{10:[1,2,3,4]},"11,23":{5:[6,7,8]}},letters:["ESKISTAFÜNF","ZEHNZWANZIG","DREIVIERTEL","VORFUNKNACH","HALBAELFÜNF","EINSXAMZWEI","DREIPMJVIER","SECHSNLACHT","SIEBENZWÖLF","ZEHNEUNKUHR"],minutes:{"0,1,2,3,4":{10:[9,10,11]},"5,6,7,8,9":[s,i],"10,11,12,13,14":[u,i],"15,16,17,18,19":[{3:[5,6,7,8,9,10,11]},i],"20,21,22,23,24":[a,i],"25,26,27,28,29":[s,o,r],"30,31,32,33,34":r,"35,36,37,38,39":[s,i,r],"40,41,42,43,44":[a,o],"45,46,47,48,49":{3:[1,2,3,4,5,6,7,8,9,10,11]},"50,51,52,53,54":[u,o],"55,56,57,58,59":[s,o]},permanent:{1:[1,2,4,5,6]},prettyName:"Deutsch",version:2};$.fritteli.uhr.register(h)},function(t,e,n){"use strict";n.r(e),n.d(e,"Layout_de_CH",function(){return c});var i={4:[1,2]},o={3:[9,10,11]},r={4:[4,5,6,7,8]},s={1:[9,10,11]},u={2:[9,10,11]},a={2:[1,2,3,4,5,6]},h={3:[1,2,3,4,5,6]},c={code:"de_CH",hours:{"0,12":{10:[1,2,3,4,5,6]},"1,13":{5:[1,2,3]},"2,14":{5:[4,5,6,7]},"3,15":{5:[9,10,11]},"4,16":{6:[1,2,3,4,5]},"5,17":{6:[6,7,8,9]},"6,18":{7:[1,2,3,4,5,6]},"7,19":{7:[7,8,9,10,11]},"8,20":{8:[1,2,3,4,5]},"9,21":{8:[6,7,8,9]},"10,22":{9:[1,2,3,4]},"11,23":{9:[8,9,10,11]}},letters:["ESKISCHAFÜF","VIERTUBFZÄÄ","ZWÄNZGSIVOR","ABOHAUBIEGE","EISZWÖISDRÜ","VIERIFÜFIQT","SÄCHSISIBNI","ACHTINÜNIEL","ZÄNIERBEUFI","ZWÖUFINAUHR"],minutes:{"5,6,7,8,9":[s,i],"10,11,12,13,14":[u,i],"15,16,17,18,19":[a,i],"20,21,22,23,24":[h,i],"25,26,27,28,29":[s,o,r],"30,31,32,33,34":r,"35,36,37,38,39":[s,i,r],"40,41,42,43,44":[h,o],"45,46,47,48,49":[a,o],"50,51,52,53,54":[u,o],"55,56,57,58,59":[s,o]},permanent:{1:[1,2,4,5,6,7]},prettyName:"Bärndütsch",version:2};$.fritteli.uhr.register(c)},function(t,e,n){"use strict";n.r(e),n.d(e,"Layout_de_CH_genau",function(){return c});var i={4:[4,5]},o={4:[1,2,3]},r={4:[7,8,9,10,11]},s={1:[9,10,11]},u={2:[9,10,11]},a={2:[1,2,3,4,5,6]},h={3:[1,2,3,4,5,6]},c={code:"de_CH_genau",hours:{"0,12":{10:[1,2,3,4,5,6]},"1,13":{5:[1,2,3]},"2,14":{5:[4,5,6,7]},"3,15":{5:[9,10,11]},"4,16":{6:[1,2,3,4,5]},"5,17":{6:[6,7,8,9]},"6,18":{7:[1,2,3,4,5,6]},"7,19":{7:[7,8,9,10,11]},"8,20":{8:[1,2,3,4,5]},"9,21":{8:[6,7,8,9]},"10,22":{9:[1,2,3,4]},"11,23":{9:[8,9,10,11]}},letters:["ESKISCHAFÜF","VIERTUBFZÄÄ","ZWÄNZGGENAU","VORABOHAUBI","EISZWÖISDRÜ","VIERIFÜFIQT","SÄCHSISIBNI","ACHTINÜNIEL","ZÄNIERBEUFI","ZWÖUFINAUHR"],minutes:{0:{3:[7,8,9,10,11]},"5,6,7,8,9":[s,i],"10,11,12,13,14":[u,i],"15,16,17,18,19":[a,i],"20,21,22,23,24":[h,i],"25,26,27,28,29":[s,o,r],"30,31,32,33,34":r,"35,36,37,38,39":[s,i,r],"40,41,42,43,44":[h,o],"45,46,47,48,49":[a,o],"50,51,52,53,54":[u,o],"55,56,57,58,59":[s,o]},permanent:{1:[1,2,4,5,6,7]},prettyName:"Bärndütsch (genau)",version:2};$.fritteli.uhr.register(c)},function(t,e,n){"use strict";n.r(e),n.d(e,"Layout_dk",function(){return d});var i={4:[4,5,6,7,8,9,10,11]},o={5:[8]},r={5:[4,5,6,7]},s={2:[1,2,3]},u={4:[1,2]},a={3:[4,5,6,7,8]},h={2:[4,5,6,7]},c={6:[8,9,10,11]},d={code:"dk",hours:{"0,12":{10:[8,9,10,11]},"1,13":{7:[1,2]},"2,14":{7:[3,4]},"3,15":{7:[5,6,7]},"4,16":{7:[8,9,10,11]},"5,17":{8:[1,2,3]},"6,18":{8:[4,5,6,7]},"7,19":{8:[9,10,11]},"8,20":{9:[1,2,3,4]},"9,21":{9:[6,7]},"10,22":{9:[10,11]},"11,23":{10:[1,2,3,4,5,6]}},letters:["KLOKKENVERO","FEMTYVESKLA","OJEKVARTVAT","TIAMINUTTER","VEMOVERILMF","MONALISHALV","ETTOTREFIRE","FEMSEKSRSYV","OTTERNIMETI","ELLEVEATOLV"],minutes:{"5,6,7,8,9":[s,i,r],"10,11,12,13,14":[u,i,r],"15,16,17,18,19":[a,r],"20,21,22,23,24":[h,i,r],"25,26,27,28,29":[s,i,o,c],"30,31,32,33,34":[c],"35,36,37,38,39":[s,i,r,c],"40,41,42,43,44":[h,i,o],"45,46,47,48,49":[a,o],"50,51,52,53,54":[u,i,o],"55,56,57,58,59":[s,i,o]},permanent:{1:[1,2,3,4,5,6,7,9,10]},prettyName:"Dansk",version:2};$.fritteli.uhr.register(d)},function(t,e,n){"use strict";n.r(e),n.d(e,"Layout_en",function(){return c});var i={4:[10,11]},o={5:[1,2,3,4]},r={3:[7,8,9,10]},s={4:[6,7,8]},u={2:[1,3,4,5,6,7,8,9]},a={3:[1,2,3,4,5,6]},h={3:[1,2,3,4,5,6,7,8,9,10]},c={code:"en",getHour:function(t){var e=t.getHours();return t.getMinutes()>=35?(e+1)%24:e},hours:{"0,12":{9:[6,7,8,9,10,11]},"1,13":{6:[1,2,3]},"2,14":{7:[9,10,11]},"3,15":{6:[7,8,9,10,11]},"4,16":{7:[1,2,3,4]},"5,17":{7:[5,6,7,8]},"6,18":{6:[4,5,6]},"7,19":{9:[1,2,3,4,5]},"8,20":{8:[1,2,3,4,5]},"9,21":{5:[8,9,10,11]},"10,22":{10:[1,2,3]},"11,23":{8:[6,7,8,9,10,11]}},letters:["ITLISBFAMPM","ACQUARTERDC","TWENTYFIVEX","HALFBTENFTO","PASTERUNINE","ONESIXTHREE","FOURFIVETWO","EIGHTELEVEN","SEVENTWELVE","TENSO'CLOCK"],minutes:{"0,1,2,3,4":{10:[5,6,7,8,9,10,11]},"5,6,7,8,9":[r,o],"10,11,12,13,14":[s,o],"15,16,17,18,19":[u,o],"20,21,22,23,24":[a,o],"25,26,27,28,29":[h,o],"30,31,32,33,34":[{4:[1,2,3,4]},o],"35,36,37,38,39":[h,i],"40,41,42,43,44":[a,i],"45,46,47,48,49":[u,i],"50,51,52,53,54":[s,i],"55,56,57,58,59":[r,i]},permanent:{1:[1,2,4,5]},prettyName:"English",version:2};$.fritteli.uhr.register(c)},function(t,e,n){"use strict";n.r(e),n.d(e,"Layout_es",function(){return d});var i={1:[2,3,4,6,7,8]},o={7:[6]},r={7:[7,8,9,10,11]},s={9:[7,8,9,10,11]},u={8:[8,9,10,11]},a={10:[6,7,8,9,10,11]},h={8:[2,3,4,5,6,7]},c={9:[1,2,3,4,5,6,7,8,9,10,11]},d={code:"es",getHour:function(t){var e=t.getHours();return t.getMinutes()>=35?(e+1)%24:e},hours:{"0,12":[i,{7:[1,2,3,4]}],"1,13":[{1:[1,2,6,7]},{1:[9,10,11]}],"2,14":[i,{2:[1,2,3]}],"3,15":[i,{2:[5,6,7,8]}],"4,16":[i,{3:[1,2,3,4,5,6]}],"5,17":[i,{3:[7,8,9,10,11]}],"6,18":[i,{4:[1,2,3,4]}],"7,19":[i,{4:[6,7,8,9,10]}],"8,20":[i,{5:[1,2,3,4]}],"9,21":[i,{5:[5,6,7,8,9]}],"10,22":[i,{6:[3,4,5,6]}],"11,23":[i,{6:[8,9,10,11]}]},letters:["ESONELASUNA","DOSITRESORE","CUATROCINCO","SEISASIETEN","OCHONUEVEYO","LADIEZSONCE","DOCELYMENOS","OVEINTEDIEZ","VEINTICINCO","MEDIACUARTO"],minutes:{"5,6,7,8,9":[o,s],"10,11,12,13,14":[o,u],"15,16,17,18,19":[o,a],"20,21,22,23,24":[o,h],"25,26,27,28,29":[o,c],"30,31,32,33,34":[o,{10:[1,2,3,4,5]}],"35,36,37,38,39":[r,c],"40,41,42,43,44":[r,h],"45,46,47,48,49":[r,a],"50,51,52,53,54":[r,u],"55,56,57,58,59":[r,s]},permanent:null,prettyName:"Español",version:2};$.fritteli.uhr.register(d)},function(t,e,n){"use strict";n.r(e),n.d(e,"Layout_fr",function(){return d});var i={8:[1,2]},o={7:[1,2,3,4,5]},r={6:[6,7,8,9,10,11]},s={9:[7,8,9,10]},u={7:[9,10,11]},a={8:[4,5,6,7,8]},h={9:[1,2,3,4,5]},c={9:[1,2,3,4,5,6,7,8,9,10]},d={code:"fr",getHour:function(t){var e=t.getHours();return t.getMinutes()>=35?(e+1)%24:e},hours:{0:{5:[6,7,8,9,10,11]},"1,13":[{3:[5,6,7]},r],"2,14":[{1:[8,9,10,11]},r],"3,15":[{2:[7,8,9,10,11]},r],"4,16":[{2:[1,2,3,4,5,6]},r],"5,17":[{4:[8,9,10,11]},r],"6,18":[{4:[5,6,7]},r],"7,19":[{3:[8,9,10,11]},r],"8,20":[{4:[1,2,3,4]},r],"9,21":[{3:[1,2,3,4]},r],"10,22":[{5:[3,4,5]},r],"11,23":[{6:[1,2,3,4]},r],12:{5:[1,2,3,4]}},letters:["ILNESTODEUX","QUATRETROIS","NEUFUNESEPT","HUITSIXCINQ","MIDIXMINUIT","ONZERHEURES","MOINSOLEDIX","ETRQUARTPMD","VINGT-CINQU","ETSDEMIEPAM"],minutes:{"5,6,7,8,9":s,"10,11,12,13,14":u,"15,16,17,18,19":[i,a],"20,21,22,23,24":h,"25,26,27,28,29":c,"30,31,32,33,34":[i,{10:[4,5,6,7,8]}],"35,36,37,38,39":[o,c],"40,41,42,43,44":[o,h],"45,46,47,48,49":[o,{7:[7,8]},a],"50,51,52,53,54":[o,u],"55,56,57,58,59":[o,s]},permanent:{1:[1,2,4,5,6]},prettyName:"Français",version:2};$.fritteli.uhr.register(d)},function(t,e,n){"use strict";n.r(e),n.d(e,"Layout_it",function(){return d});var i={1:[1,2,3,4,6,7]},o={8:[1]},r={7:[8,9,10,11]},s={9:[6,7,8,9,10,11]},u={10:[1,2,3,4,5]},a={8:[3,4,6,7,8,9,10,11]},h={9:[1,2,3,4,5]},c={9:[1,2,3,4,5,6,7,8,9,10,11]},d={code:"it",getHour:function(t){var e=t.getHours();return t.getMinutes()>=35?(e+1)%24:e},hours:{"0,12":[i,{5:[1,2,3,4,5,6]}],"1,13":[{2:[1,3,4]},{2:[5,6,7]}],"2,14":[i,{2:[9,10,11]}],"3,15":[i,{3:[1,2,3]}],"4,16":[i,{6:[1,2,3,4,5,6,7]}],"5,17":[i,{7:[1,2,3,4,5,6]}],"6,18":[i,{6:[9,10,11]}],"7,19":[i,{5:[7,8,9,10,11]}],"8,20":[i,{3:[4,5,6,7]}],"9,21":[i,{3:[8,9,10,11]}],"10,22":[i,{4:[1,2,3,4,5]}],"11,23":[i,{4:[6,7,8,9,10,11]}]},letters:["SONORLEBORE","ÈRL'UNASDUE","TREOTTONOVE","DIECIUNDICI","DODICISETTE","QUATTROCSEI","CINQUEAMENO","ECUNOQUARTO","VENTICINQUE","DIECIPMEZZA"],minutes:{"5,6,7,8,9":[o,s],"10,11,12,13,14":[o,u],"15,16,17,18,19":[o,a],"20,21,22,23,24":[o,h],"25,26,27,28,29":[o,c],"30,31,32,33,34":[o,{10:[7,8,9,10,11]}],"35,36,37,38,39":[r,c],"40,41,42,43,44":[r,h],"45,46,47,48,49":[r,a],"50,51,52,53,54":[r,u],"55,56,57,58,59":[r,s]},permanent:null,prettyName:"Italiano",version:2};$.fritteli.uhr.register(d)},function(t,e,n){"use strict";n.r(e),n.d(e,"Layout_nl",function(){return h});var i={3:[1,2,3,4]},o={2:[8,9,10,11]},r={4:[1,2,3,4]},s={1:[8,9,10,11]},u={2:[1,2,3,4]},a={3:[7,8,9,10,11]},h={code:"nl",getHour:function(t){var e=t.getHours();return t.getMinutes()>=20?(e+1)%24:e},hours:{"0,12":{10:[1,2,3,4,5,6]},"1,13":{5:[8,9,10]},"2,14":{6:[1,2,3,4]},"3,15":{6:[8,9,10,11]},"4,16":{7:[1,2,3,4]},"5,17":{7:[5,6,7,8]},"6,18":{7:[9,10,11]},"7,19":{8:[1,2,3,4,5]},"8,20":{9:[1,2,3,4]},"9,21":{8:[7,8,9,10,11]},"10,22":{9:[5,6,7,8]},"11,23":{9:[9,10,11]}},letters:["HETKISAVIJF","TIENBTZVOOR","OVERMEKWART","HALFSPWOVER","VOORTHGEENS","TWEEPVCDRIE","VIERVIJFZES","ZEVENONEGEN","ACHTTIENELF","TWAALFBFUUR"],minutes:{"0,1,2,3,4":{10:[9,10,11]},"5,6,7,8,9":[s,i],"10,11,12,13,14":[u,i],"15,16,17,18,19":[a,{4:[8,9,10,11]}],"20,21,22,23,24":[u,o,r],"25,26,27,28,29":[s,o,r],"30,31,32,33,34":r,"35,36,37,38,39":[s,i,r],"40,41,42,43,44":[u,i,r],"45,46,47,48,49":[a,{5:[1,2,3,4]}],"50,51,52,53,54":[u,o],"55,56,57,58,59":[s,o]},permanent:{1:[1,2,3,5,6]},prettyName:"Nederlands",version:2};$.fritteli.uhr.register(h)},function(t,e,n){"use strict";n.r(e),n.d(e,"Layout_pt",function(){return l});var i={1:[1]},o={1:[2,3,4]},r={7:[8]},s={10:[5]},u={7:[7,8,9,10,11]},a={10:[7,8,9,10,11]},h={10:[1,2,3]},c={9:[1,2,4,5,6,7,8,9]},d={8:[1,2,3,4,5]},l={code:"pt",getHour:function(t){var e=t.getHours();return t.getMinutes()>=35?(e+1)%24:e},hours:{0:[i,{6:[2,3,4,5,7,8,9,10,11]}],12:[i,{2:[1,2,3,4,6,7,8]}],"1,13":[i,{1:[5,6,7]}],"2,14":[o,{3:[1,2,3,4]}],"3,15":[o,{1:[8,9,10,11]}],"4,16":[o,{4:[1,2,3,4,5,6]}],"5,17":[o,{5:[1,2,3,4,5]}],"6,18":[o,{3:[4,5,6,7]}],"7,19":[o,{3:[7,8,9,10]}],"8,20":[o,{5:[5,6,7,8]}],"9,21":[o,{4:[8,9,10,11]}],"10,22":[o,{2:[9,10,11]}],"11,23":[o,{5:[8,9,10,11]}]},letters:["ÉSÃOUMATRÊS","MEIOLDIADEZ","DUASEISETEY","QUATROHNOVE","CINCOITONZE","ZMEIALNOITE","HORASYMENOS","VINTECAMEIA","UMVQUARTOPM","DEZOEYCINCO"],minutes:{"5,6,7,8,9":[r,a],"10,11,12,13,14":[r,h],"15,16,17,18,19":[r,c],"20,21,22,23,24":[r,d],"25,26,27,28,29":[r,d,s,a],"30,31,32,33,34":[r,{8:[8,9,10,11]}],"35,36,37,38,39":[u,d,s,a],"40,41,42,43,44":[u,d],"45,46,47,48,49":[u,c],"50,51,52,53,54":[u,h],"55,56,57,58,59":[u,a]},permanent:null,prettyName:"Português",version:2};$.fritteli.uhr.register(l)},function(t,e,n){"use strict";n.r(e);var i=function(){function t(){}return t.registerTheme=function(e,n){t.themes.some(function(t){return t.name===e})?console.log("Theme with name '"+e+"' already registered; ignoring register request for styleClass '"+n+"'."):t.themes.push({name:e,styleClass:n})},t.hasThemes=function(){return t.themes.length>0},t.hasMultipleThemes=function(){return t.themes.length>1},t.getFirstTheme=function(){return t.getTheme(0)},t.getTheme=function(e){return t.themes[e]},t.getThemes=function(){return t.themes},t.registerLayout=function(e){!t.layouts.some(function(t){return e.code===t.code&&(e.prettyName!==t.prettyName&&console.error("Error: Language code '"+e.code+"' cannot be registered for layout '"+e.prettyName+"' because it is already registered for layout '"+t.prettyName+"'!"),!0)})&&(t.layouts.push(e),t.layouts.sort(function(t,e){return t.prettyName.localeCompare(e.prettyName)}))},t.hasLayouts=function(){return t.layouts.length>0},t.hasMultipleLayouts=function(){return t.layouts.length>1},t.getFirstLayout=function(){return t.layouts[0]},t.getLayouts=function(){return t.layouts},t.layouts=[],t.themes=[],t}(),o={code:null,hours:null,letters:[],minutes:null,permanent:[],prettyName:null,version:2},r=n(0),s=function(){function t(t,e){this.widgetId=t,this.cookiePath=e}return t.prototype.getLayout=function(){var t=this.getCookie("uhr-language");return t&&(this.removeCookie("uhr-language"),this.setLayout(t)),this.getCookie("uhr-layout")},t.prototype.setLayout=function(t){this.setCookie("uhr-layout",t)},t.prototype.getMode=function(){return this.getCookie("uhr-mode")},t.prototype.setMode=function(t){this.setCookie("uhr-mode",t)},t.prototype.getStatus=function(){return this.getCookie("uhr-status")},t.prototype.setStatus=function(t){this.setCookie("uhr-status",t)},t.prototype.getTheme=function(){return this.getCookie("uhr-theme")},t.prototype.setTheme=function(t){this.setCookie("uhr-theme",t)},t.prototype.getCookie=function(t){return r.get(t+this.widgetId)},t.prototype.setCookie=function(t,e){var n;n=this.cookiePath?{expires:365,path:this.cookiePath}:{expires:365},r.set(t+this.widgetId,e,n)},t.prototype.removeCookie=function(t){this.cookiePath?r.remove(t+this.widgetId,{path:this.cookiePath}):r.remove(t+this.widgetId)},t}(),u=function(){function t(t,e){this.style="",this.value=t,e&&(this.style=e)}return t.prototype.addStyle=function(t){""===this.style?this.style=t:this.style+=" "+t},t.prototype.toString=function(){return''+this.value+""},t}(),a=function(){function t(t){this.layout=t}return t.prototype.parse=function(){var e=[];return this.layout.letters.forEach(function(t){for(var n=[],i=0;i")}),t&&t(),e.renderarea.fadeIn("fast")})},t}(),c=function(){function t(t,e,n,i){this.uhr=t,this.$element=e,this.options=n,this.id=i,this.cookieHandler=new s(i,n.cookiePath)}return t.prototype.render=function(){this.setupHTML(),this.wireFunctionality()},t.prototype.setWidth=function(t){this.$element.css("width",t);var e=this.$element.width();this.$element.width(e),this.$element.height(e),this.$element.css("font-size",e/40+"px")},t.prototype.setupHTML=function(){var t=this;if(this.$element.addClass("uhr").empty().append('').append('').append('').append('').append('
').append('
'),this.setWidth(this.options.width),this.options.controls){var e=$('
'),n=$('
');e.append(n);var o=$('
');o.append(''),o.append(''),n.append(o);var r=$('
');if(r.append(''),r.append(''),n.append(r),i.hasMultipleLayouts()){var s=$('');i.getLayouts().forEach(function(t){s.append('")}),n.append(s)}if(i.hasMultipleThemes()){var u=$('');i.getThemes().forEach(function(t){u.append('")}),n.append(u)}var a=$('');a.on({click:function(){return $("#uhr-controlpanel"+t.id).hide("fast")}}),n.append(a),this.$element.after(e),e.hide();var h=$('');h.on({click:function(){return t.toggleConfigScreen()}}),this.$element.after(h)}},t.prototype.wireFunctionality=function(){var t=this,e=$("#uhr-onoffswitch-checkbox"+this.id);e.on({click:function(){return t.uhr.toggle()}});var n=this.cookieHandler.getStatus();(void 0===n||this.options.force)&&(n=this.options.status),e.prop("checked","on"===n),"on"===n?this.uhr.start():this.uhr.stop();var o=$("#uhr-modeswitch-checkbox"+this.id);o.on({click:function(){"seconds"===t.options.mode?t.uhr.setMode("normal"):t.uhr.setMode("seconds")}});var r=this.cookieHandler.getMode();(void 0===r||this.options.force)&&(r=this.options.mode),o.prop("checked","seconds"!==r),"seconds"===r?this.uhr.setMode("seconds"):this.uhr.setMode("normal");var s=$("#uhr-languagechooser"+this.id);s.on({change:function(){var e=$("#uhr-languagechooser"+t.id).val();t.uhr.setLayout(e)}});var u=this.cookieHandler.getLayout();(void 0===u||this.options.force)&&(u=this.options.language);var a=i.getLayouts().some(function(t){return u===t.code});if(!a){var h=void 0;h=i.hasLayouts()?i.getFirstLayout().code:"",console.warn("Language '"+u+"' not found! Using fallback '"+h+"'."),u=h}s.val(u),this.options.language="",this.uhr.setLayout(u);var c=$("#uhr-themechooser"+this.id);c.on({change:function(){var e=$("#uhr-themechooser"+t.id).val();t.uhr.setTheme(e)}});var d=this.cookieHandler.getTheme();if((void 0===d||this.options.force)&&(d=this.options.theme),!(a=i.getThemes().some(function(t){return d===t.styleClass}))){var l=i.getFirstTheme().styleClass;console.warn("Theme '"+d+"' not found! Using fallback '"+l+"'."),d=l}c.val(d),this.options.theme="",this.uhr.setTheme(d),this.options.autoresize&&$(window).on({resize:function(){var e=t.$element.parent(),n=$(window),i=e.width(),o=e.height(),r=n.width(),s=n.height(),u=Math.min(i,o,r,s)+"px";t.setWidth(u)}})},t.prototype.toggleConfigScreen=function(){$("#uhr-controlpanel"+this.id).toggle("fast")},t}(),d=function(){function t(t){this.widgetInstance=t,this.timer=null,this.currentMinute=null;var e=this.widgetInstance.options.time;void 0===this.widgetInstance.options.time&&(this.widgetInstance.options.time=new Date),this.cookieHandler=new s(this.widgetInstance.uuid,this.widgetInstance.options.cookiePath),this.parseHash(),this.renderer=new c(this,this.widgetInstance.element,this.widgetInstance.options,this.widgetInstance.uuid),this.renderer.render(),void 0!==e&&this.setTime(e)}return t.prototype.destroy=function(){this.timer&&(window.clearInterval(this.timer),this.timer=null),this.widgetInstance.element.removeAttr("style").removeAttr("class").empty(),$("#uhr-configlink"+this.widgetInstance.uuid).remove(),$("#uhr-controlpanel"+this.widgetInstance.uuid).remove()},t.prototype.start=function(){var t=this;this.isOn()||(this.timer=window.setInterval(function(){t.widgetInstance.options.time=new Date,t.update()},1e3),this.update(),this.cookieHandler.setStatus("on"))},t.prototype.stop=function(){this.isOn()&&(window.clearInterval(this.timer),this.timer=null,this.update(),this.cookieHandler.setStatus("off"))},t.prototype.toggle=function(){this.isOn()?this.stop():this.start()},t.prototype.setLayout=function(t){var e=this;t!==this.widgetInstance.options.language&&(this.widgetInstance.options.language=t,new h(this.getCurrentLayout(),this.widgetInstance.element.find(".letterarea")).render(function(){e.currentMinute=-1,e.update()}),this.cookieHandler.setLayout(t),this.update())},t.prototype.setTheme=function(t){t!==this.widgetInstance.options.theme&&(this.widgetInstance.element.removeClass(this.widgetInstance.options.theme).addClass(t),$("#uhr-onoffswitch"+this.widgetInstance.uuid).removeClass(this.widgetInstance.options.theme).addClass(t),this.widgetInstance.options.theme=t,this.cookieHandler.setTheme(t))},t.prototype.setTime=function(t){this.currentMinute=null,null===t?this.widgetInstance.options.time=new Date:(null!==this.timer&&window.clearInterval(this.timer),this.widgetInstance.options.time=t),this.update()},t.prototype.setMode=function(t){this.widgetInstance.options.mode=t,this.currentMinute=null,this.update(),this.cookieHandler.setMode(t)},t.prototype.setWidth=function(t){this.renderer.setWidth(t)},t.prototype.isOn=function(){return null!==this.timer},t.prototype.update=function(){if(this.isOn()){var t=this.widgetInstance.options.time;if(!this.getCurrentLayout().hasOwnProperty("seconds")&&"seconds"!==this.widgetInstance.options.mode){if(t.getMinutes()===this.currentMinute)return;this.currentMinute=t.getMinutes()}this.show(t)}else this.clear(),this.currentMinute=-1},t.prototype.show=function(t){var e=this.getSecond(t),n=this.getDotMinute(t),i=this.getHour(t),o=this.getCoarseMinute(t);if(this.clear(),"seconds"===this.widgetInstance.options.mode)this.highlight("second"+e);else{this.highlight("on");for(var r=1;r<=n;r++)this.highlight("dot"+r);this.highlight("minute"+o),this.highlight("hour"+i)}},t.prototype.clear=function(){this.widgetInstance.element.find(".item").removeClass("active")},t.prototype.highlight=function(t){this.widgetInstance.element.find(".item."+t).addClass("active")},t.prototype.getSecond=function(t){return"function"==typeof this.getCurrentLayout().getSeconds?this.getCurrentLayout().getSeconds(t):t.getSeconds()},t.prototype.getDotMinute=function(t){return"function"==typeof this.getCurrentLayout().getDotMinute?this.getCurrentLayout().getDotMinute(t):t.getMinutes()%5},t.prototype.getCoarseMinute=function(t){return"function"==typeof this.getCurrentLayout().getCoarseMinute?this.getCurrentLayout().getCoarseMinute(t):t.getMinutes()},t.prototype.getHour=function(t){if("function"==typeof this.getCurrentLayout().getHour)return this.getCurrentLayout().getHour(t);var e=t.getHours();return t.getMinutes()>=25?(e+1)%24:e},t.prototype.parseHash=function(){var t=this,e=window.location.hash;void 0!==e&&"#"===e.charAt(0)&&(e=e.substring(1),(e=decodeURIComponent(e)).split("&").forEach(function(e){var n=e.split("="),i=n[0],o=n[1];switch(i){case"l":case"language":t.widgetInstance.options.language=o,t.widgetInstance.options.force=!0;break;case"t":case"theme":t.widgetInstance.options.theme=o,t.widgetInstance.options.force=!0;break;case"m":case"mode":t.widgetInstance.options.mode=o,t.widgetInstance.options.force=!0;break;case"s":case"status":t.widgetInstance.options.status=o,t.widgetInstance.options.force=!0}}))},t.prototype.getCurrentLayout=function(){var t=this,e=i.getLayouts().filter(function(e){return e.code===t.widgetInstance.options.language},this);return e.length>0?e[0]:o},t}(),l=n(1);l("link[rel=stylesheet]").each(function(t,e){var n=l(e),o=n.attr("data-class");if(void 0!==o){var r=n.attr("data-name");void 0===r&&(r=o),i.registerTheme(r,o)}}),i.hasThemes()||i.registerTheme("",""),$.widget("fritteli.uhr",{options:{width:"100%",status:"on",language:"de_CH",theme:i.getFirstTheme().styleClass,force:!1,controls:!0,cookiePath:void 0,autoresize:!0,mode:"normal"},start:function(){this.__fritteli_uhr_instance.start()},stop:function(){this.__fritteli_uhr_instance.stop()},toggle:function(){this.__fritteli_uhr_instance.toggle()},language:function(t){this.__fritteli_uhr_instance.setLayout(t)},theme:function(t){this.__fritteli_uhr_instance.setTheme(t)},time:function(t){this.__fritteli_uhr_instance.setTime(t)},mode:function(t){this.__fritteli_uhr_instance.setMode(t)},width:function(t){this.__fritteli_uhr_instance.setWidth(t)},_create:function(){this.__fritteli_uhr_instance=new d(this)},_destroy:function(){this.__fritteli_uhr_instance.destroy()},__fritteli_uhr_instance:null}),$.fritteli.uhr.register=i.registerLayout},function(t,e,n){"use strict";n.r(e);n(12);var i=n(2),o=n(3),r=n(4),s=n(5),u=n(6),a=n(7),h=n(8),c=n(9),d=n(10),l=n(11);o.Layout_de_CH,r.Layout_de_CH_genau,i.Layout_de,s.Layout_dk,u.Layout_en,a.Layout_es,h.Layout_fr,c.Layout_it,d.Layout_nl,l.Layout_pt}]); //# sourceMappingURL=uhr.bundle.js.map \ No newline at end of file diff --git a/dist/lib/uhr.bundle.js.map b/dist/lib/uhr.bundle.js.map index 92f0796..aa52d0a 100644 --- a/dist/lib/uhr.bundle.js.map +++ b/dist/lib/uhr.bundle.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://uhr/webpack/bootstrap","webpack://uhr/external \"Cookies\"","webpack://uhr/external \"jQuery\"","webpack://uhr/./src/layout/layout-de.ts","webpack://uhr/./src/layout/layout-de_ch.ts","webpack://uhr/./src/layout/layout-de_ch_genau.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/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","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","Cookies","jQuery","__webpack_exports__","Layout_de","nach","4","vor","halb","5","fuenf","1","zehn","2","zwanzig","code","hours","0,12","9","1,13","6","2,14","3,15","7","4,16","5,17","6,18","8","7,19","8,20","9,21","10","10,22","11,23","letters","minutes","0,1,2,3,4","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","3","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","prettyName","version","$","fritteli","uhr","register","Layout_de_CH","ab","haubi","fuef","zae","viertu","zwaenzg","Layout_de_CH_genau","0","Layout_dk","minutter","over","fem","ti","kvart","tyve","halv","Layout_en","to","past","five","ten","a_quarter","twenty","twentyfive","getHour","time","hour","getHours","getMinutes","Layout_es","son_las","y","menos","cinco","diez","cuarto","veinte","veinticinco","Layout_fr","et","moins","heures","cinq","dix","quart","vingt","vingtcinq","12","Layout_it","sono_le","e","meno","cinque","dieci","un_quarto","venti","venticinque","Layout_nl","over1","voor1","half","vijf","tien","kwart","Layout_pt","e_","sao","e1","e2","dez","um_quarto","vinte","Globals","registerTheme","styleClass","themes","some","console","log","push","hasThemes","length","hasMultipleThemes","getFirstTheme","getTheme","index","getThemes","registerLayout","layout","layouts","element","error","sort","a","b","localeCompare","hasLayouts","hasMultipleLayouts","getFirstLayout","getLayouts","EMPTY_LAYOUT","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","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__WEBPACK_IMPORTED_MODULE_1__","_layout_layout_de_ch__WEBPACK_IMPORTED_MODULE_2__","_layout_layout_de_ch_genau__WEBPACK_IMPORTED_MODULE_3__","_layout_layout_dk__WEBPACK_IMPORTED_MODULE_4__","_layout_layout_en__WEBPACK_IMPORTED_MODULE_5__","_layout_layout_es__WEBPACK_IMPORTED_MODULE_6__","_layout_layout_fr__WEBPACK_IMPORTED_MODULE_7__","_layout_layout_it__WEBPACK_IMPORTED_MODULE_8__","_layout_layout_nl__WEBPACK_IMPORTED_MODULE_9__","_layout_layout_pt__WEBPACK_IMPORTED_MODULE_10__"],"mappings":"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","file":"lib/uhr.bundle.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 13);\n","module.exports = Cookies;","module.exports = jQuery;","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst es_ist: WordDefinition = {1: [1, 2, 4, 5, 6]};\nconst uhr: WordDefinition = {10: [9, 10, 11]};\nconst nach: WordDefinition = {4: [8, 9, 10, 11]};\nconst vor: WordDefinition = {4: [1, 2, 3]};\nconst halb: WordDefinition = {5: [1, 2, 3, 4]};\nconst fuenf: WordDefinition = {1: [8, 9, 10, 11]};\nconst zehn: WordDefinition = {2: [1, 2, 3, 4]};\nconst viertel: WordDefinition = {3: [5, 6, 7, 8, 9, 10, 11]};\nconst zwanzig: WordDefinition = {2: [5, 6, 7, 8, 9, 10, 11]};\nconst dreiviertel: WordDefinition = {3: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]};\n\nexport const Layout_de: Layout = {\n code: 'de',\n hours: {\n '0,12': {9: [7, 8, 9, 10, 11]},\n '1,13': {6: [1, 2, 3, 4]},\n '2,14': {6: [8, 9, 10, 11]},\n '3,15': {7: [1, 2, 3, 4]},\n '4,16': {7: [8, 9, 10, 11]},\n '5,17': {5: [8, 9, 10, 11]},\n '6,18': {8: [1, 2, 3, 4, 5]},\n '7,19': {9: [1, 2, 3, 4, 5, 6]},\n '8,20': {8: [8, 9, 10, 11]},\n '9,21': {10: [4, 5, 6, 7]},\n '10,22': {10: [1, 2, 3, 4]},\n '11,23': {5: [6, 7, 8]}\n },\n letters: [\n 'ESKISTAFÜNF',\n 'ZEHNZWANZIG',\n 'DREIVIERTEL',\n 'VORFUNKNACH',\n 'HALBAELFÜNF',\n 'EINSXAMZWEI',\n 'DREIPMJVIER',\n 'SECHSNLACHT',\n 'SIEBENZWÖLF',\n 'ZEHNEUNKUHR'\n ],\n minutes: {\n '0,1,2,3,4': uhr,\n '5,6,7,8,9': [fuenf, nach],\n '10,11,12,13,14': [zehn, nach],\n '15,16,17,18,19': [viertel, nach],\n '20,21,22,23,24': [zwanzig, nach],\n '25,26,27,28,29': [fuenf, vor, halb],\n '30,31,32,33,34': halb,\n '35,36,37,38,39': [fuenf, nach, halb],\n '40,41,42,43,44': [zwanzig, vor],\n '45,46,47,48,49': dreiviertel,\n '50,51,52,53,54': [zehn, vor],\n '55,56,57,58,59': [fuenf, vor]\n },\n permanent: es_ist,\n prettyName: 'Deutsch',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_de);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst es_isch: WordDefinition = {1: [1, 2, 4, 5, 6, 7]};\nconst ab: WordDefinition = {4: [1, 2]};\nconst vor: WordDefinition = {3: [9, 10, 11]};\nconst haubi: WordDefinition = {4: [4, 5, 6, 7, 8]};\nconst fuef: WordDefinition = {1: [9, 10, 11]};\nconst zae: WordDefinition = {2: [9, 10, 11]};\nconst viertu: WordDefinition = {2: [1, 2, 3, 4, 5, 6]};\nconst zwaenzg: WordDefinition = {3: [1, 2, 3, 4, 5, 6]};\n\nexport const Layout_de_CH: Layout = {\n code: 'de_CH',\n hours: {\n '0,12': {10: [1, 2, 3, 4, 5, 6]},\n '1,13': {5: [1, 2, 3]},\n '2,14': {5: [4, 5, 6, 7]},\n '3,15': {5: [9, 10, 11]},\n '4,16': {6: [1, 2, 3, 4, 5]},\n '5,17': {6: [6, 7, 8, 9]},\n '6,18': {7: [1, 2, 3, 4, 5, 6]},\n '7,19': {7: [7, 8, 9, 10, 11]},\n '8,20': {8: [1, 2, 3, 4, 5]},\n '9,21': {8: [6, 7, 8, 9]},\n '10,22': {9: [1, 2, 3, 4]},\n '11,23': {9: [8, 9, 10, 11]}\n },\n letters: [\n 'ESKISCHAFÜF',\n 'VIERTUBFZÄÄ',\n 'ZWÄNZGSIVOR',\n 'ABOHAUBIEGE',\n 'EISZWÖISDRÜ',\n 'VIERIFÜFIQT',\n 'SÄCHSISIBNI',\n 'ACHTINÜNIEL',\n 'ZÄNIERBEUFI',\n 'ZWÖUFINAUHR'\n ],\n minutes: {\n '5,6,7,8,9': [fuef, ab],\n '10,11,12,13,14': [zae, ab],\n '15,16,17,18,19': [viertu, ab],\n '20,21,22,23,24': [zwaenzg, ab],\n '25,26,27,28,29': [fuef, vor, haubi],\n '30,31,32,33,34': haubi,\n '35,36,37,38,39': [fuef, ab, haubi],\n '40,41,42,43,44': [zwaenzg, vor],\n '45,46,47,48,49': [viertu, vor],\n '50,51,52,53,54': [zae, vor],\n '55,56,57,58,59': [fuef, vor]\n },\n permanent: es_isch,\n prettyName: 'Bärndütsch',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_de_CH);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst es_isch: WordDefinition = {1: [1, 2, 4, 5, 6, 7]};\nconst genau: WordDefinition = {3: [7, 8, 9, 10, 11]};\nconst ab: WordDefinition = {4: [4, 5]};\nconst vor: WordDefinition = {4: [1, 2, 3]};\nconst haubi: WordDefinition = {4: [7, 8, 9, 10, 11]};\nconst fuef: WordDefinition = {1: [9, 10, 11]};\nconst zae: WordDefinition = {2: [9, 10, 11]};\nconst viertu: WordDefinition = {2: [1, 2, 3, 4, 5, 6]};\nconst zwaenzg: WordDefinition = {3: [1, 2, 3, 4, 5, 6]};\n\nexport const Layout_de_CH_genau: Layout = {\n code: 'de_CH_genau',\n hours: {\n '0,12': {10: [1, 2, 3, 4, 5, 6]},\n '1,13': {5: [1, 2, 3]},\n '2,14': {5: [4, 5, 6, 7]},\n '3,15': {5: [9, 10, 11]},\n '4,16': {6: [1, 2, 3, 4, 5]},\n '5,17': {6: [6, 7, 8, 9]},\n '6,18': {7: [1, 2, 3, 4, 5, 6]},\n '7,19': {7: [7, 8, 9, 10, 11]},\n '8,20': {8: [1, 2, 3, 4, 5]},\n '9,21': {8: [6, 7, 8, 9]},\n '10,22': {9: [1, 2, 3, 4]},\n '11,23': {9: [8, 9, 10, 11]}\n },\n letters: [\n 'ESKISCHAFÜF',\n 'VIERTUBFZÄÄ',\n 'ZWÄNZGGENAU',\n 'VORABOHAUBI',\n 'EISZWÖISDRÜ',\n 'VIERIFÜFIQT',\n 'SÄCHSISIBNI',\n 'ACHTINÜNIEL',\n 'ZÄNIERBEUFI',\n 'ZWÖUFINAUHR'\n ],\n minutes: {\n '0': genau,\n '5,6,7,8,9': [fuef, ab],\n '10,11,12,13,14': [zae, ab],\n '15,16,17,18,19': [viertu, ab],\n '20,21,22,23,24': [zwaenzg, ab],\n '25,26,27,28,29': [fuef, vor, haubi],\n '30,31,32,33,34': haubi,\n '35,36,37,38,39': [fuef, ab, haubi],\n '40,41,42,43,44': [zwaenzg, vor],\n '45,46,47,48,49': [viertu, vor],\n '50,51,52,53,54': [zae, vor],\n '55,56,57,58,59': [fuef, vor]\n },\n permanent: es_isch,\n prettyName: 'Bärndütsch (genau)',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_de_CH_genau);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst klokken_er: WordDefinition = {1: [1, 2, 3, 4, 5, 6, 7, 9, 10]};\nconst minutter: WordDefinition = {4: [4, 5, 6, 7, 8, 9, 10, 11]};\nconst i: WordDefinition = {5: [8]};\nconst over: WordDefinition = {5: [4, 5, 6, 7]};\nconst fem: WordDefinition = {2: [1, 2, 3]};\nconst ti: WordDefinition = {4: [1, 2]};\nconst kvart: WordDefinition = {3: [4, 5, 6, 7, 8]};\nconst tyve: WordDefinition = {2: [4, 5, 6, 7]};\nconst halv: WordDefinition = {6: [8, 9, 10, 11]};\n\nexport const Layout_dk: Layout = {\n code: 'dk',\n hours: {\n '0,12': {10: [8, 9, 10, 11]},\n '1,13': {7: [1, 2]},\n '2,14': {7: [3, 4]},\n '3,15': {7: [5, 6, 7]},\n '4,16': {7: [8, 9, 10, 11]},\n '5,17': {8: [1, 2, 3]},\n '6,18': {8: [4, 5, 6, 7]},\n '7,19': {8: [9, 10, 11]},\n '8,20': {9: [1, 2, 3, 4]},\n '9,21': {9: [6, 7]},\n '10,22': {9: [10, 11]},\n '11,23': {10: [1, 2, 3, 4, 5, 6]}\n },\n letters: [\n 'KLOKKENVERO',\n 'FEMTYVESKLA',\n 'OJEKVARTVAT',\n 'TIAMINUTTER',\n 'VEMOVERILMF',\n 'MONALISHALV',\n 'ETTOTREFIRE',\n 'FEMSEKSRSYV',\n 'OTTERNIMETI',\n 'ELLEVEATOLV'\n ],\n minutes: {\n '5,6,7,8,9': [fem, minutter, over],\n '10,11,12,13,14': [ti, minutter, over],\n '15,16,17,18,19': [kvart, over],\n '20,21,22,23,24': [tyve, minutter, over],\n '25,26,27,28,29': [fem, minutter, i, halv],\n '30,31,32,33,34': [halv],\n '35,36,37,38,39': [fem, minutter, over, halv],\n '40,41,42,43,44': [tyve, minutter, i],\n '45,46,47,48,49': [kvart, i],\n '50,51,52,53,54': [ti, minutter, i],\n '55,56,57,58,59': [fem, minutter, i]\n },\n permanent: klokken_er,\n prettyName: 'Dansk',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_dk);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst it_is: WordDefinition = {1: [1, 2, 4, 5]};\nconst half: WordDefinition = {4: [1, 2, 3, 4]};\nconst to: WordDefinition = {4: [10, 11]};\nconst past: WordDefinition = {5: [1, 2, 3, 4]};\nconst o_clock: WordDefinition = {10: [5, 6, 7, 8, 9, 10, 11]};\nconst five: WordDefinition = {3: [7, 8, 9, 10]};\nconst ten: WordDefinition = {4: [6, 7, 8]};\nconst a_quarter: WordDefinition = {2: [1, 3, 4, 5, 6, 7, 8, 9]};\nconst twenty: WordDefinition = {3: [1, 2, 3, 4, 5, 6]};\nconst twentyfive: WordDefinition = {3: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]};\n\nexport const Layout_en: Layout = {\n code: 'en',\n getHour: (time: Date) => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n\n hours: {\n '0,12': {9: [6, 7, 8, 9, 10, 11]},\n '1,13': {6: [1, 2, 3]},\n '2,14': {7: [9, 10, 11]},\n '3,15': {6: [7, 8, 9, 10, 11]},\n '4,16': {7: [1, 2, 3, 4]},\n '5,17': {7: [5, 6, 7, 8]},\n '6,18': {6: [4, 5, 6]},\n '7,19': {9: [1, 2, 3, 4, 5]},\n '8,20': {8: [1, 2, 3, 4, 5]},\n '9,21': {5: [8, 9, 10, 11]},\n '10,22': {10: [1, 2, 3]},\n '11,23': {8: [6, 7, 8, 9, 10, 11]}\n },\n letters: [\n 'ITLISBFAMPM',\n 'ACQUARTERDC',\n 'TWENTYFIVEX',\n 'HALFBTENFTO',\n 'PASTERUNINE',\n 'ONESIXTHREE',\n 'FOURFIVETWO',\n 'EIGHTELEVEN',\n 'SEVENTWELVE',\n 'TENSO\\'CLOCK'\n ],\n minutes: {\n '0,1,2,3,4': o_clock,\n '5,6,7,8,9': [five, past],\n '10,11,12,13,14': [ten, past],\n '15,16,17,18,19': [a_quarter, past],\n '20,21,22,23,24': [twenty, past],\n '25,26,27,28,29': [twentyfive, past],\n '30,31,32,33,34': [half, past],\n '35,36,37,38,39': [twentyfive, to],\n '40,41,42,43,44': [twenty, to],\n '45,46,47,48,49': [a_quarter, to],\n '50,51,52,53,54': [ten, to],\n '55,56,57,58,59': [five, to]\n },\n permanent: it_is,\n prettyName: 'English',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_en);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst es_la: WordDefinition = {1: [1, 2, 6, 7]};\nconst son_las: WordDefinition = {1: [2, 3, 4, 6, 7, 8]};\nconst y: WordDefinition = {7: [6]};\nconst menos: WordDefinition = {7: [7, 8, 9, 10, 11]};\nconst media: WordDefinition = {10: [1, 2, 3, 4, 5]};\nconst cinco: WordDefinition = {9: [7, 8, 9, 10, 11]};\nconst diez: WordDefinition = {8: [8, 9, 10, 11]};\nconst cuarto: WordDefinition = {10: [6, 7, 8, 9, 10, 11]};\nconst veinte: WordDefinition = {8: [2, 3, 4, 5, 6, 7]};\nconst veinticinco: WordDefinition = {9: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]};\n\nexport const Layout_es: Layout = {\n code: 'es',\n getHour: (time: Date) => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n\n hours: {\n '0,12': [son_las, {7: [1, 2, 3, 4]}],\n '1,13': [es_la, {1: [9, 10, 11]}],\n '2,14': [son_las, {2: [1, 2, 3]}],\n '3,15': [son_las, {2: [5, 6, 7, 8]}],\n '4,16': [son_las, {3: [1, 2, 3, 4, 5, 6]}],\n '5,17': [son_las, {3: [7, 8, 9, 10, 11]}],\n '6,18': [son_las, {4: [1, 2, 3, 4]}],\n '7,19': [son_las, {4: [6, 7, 8, 9, 10]}],\n '8,20': [son_las, {5: [1, 2, 3, 4]}],\n '9,21': [son_las, {5: [5, 6, 7, 8, 9]}],\n '10,22': [son_las, {6: [3, 4, 5, 6]}],\n '11,23': [son_las, {6: [8, 9, 10, 11]}]\n },\n letters: [\n 'ESONELASUNA',\n 'DOSITRESORE',\n 'CUATROCINCO',\n 'SEISASIETEN',\n 'OCHONUEVEYO',\n 'LADIEZSONCE',\n 'DOCELYMENOS',\n 'OVEINTEDIEZ',\n 'VEINTICINCO',\n 'MEDIACUARTO'\n ],\n minutes: {\n '5,6,7,8,9': [y, cinco],\n '10,11,12,13,14': [y, diez],\n '15,16,17,18,19': [y, cuarto],\n '20,21,22,23,24': [y, veinte],\n '25,26,27,28,29': [y, veinticinco],\n '30,31,32,33,34': [y, media],\n '35,36,37,38,39': [menos, veinticinco],\n '40,41,42,43,44': [menos, veinte],\n '45,46,47,48,49': [menos, cuarto],\n '50,51,52,53,54': [menos, diez],\n '55,56,57,58,59': [menos, cinco]\n },\n permanent: null,\n prettyName: 'Español',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_es);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst il_est: WordDefinition = {1: [1, 2, 4, 5, 6]};\nconst et: WordDefinition = {8: [1, 2]};\nconst moins: WordDefinition = {7: [1, 2, 3, 4, 5]};\nconst demie: WordDefinition = {10: [4, 5, 6, 7, 8]};\nconst heures: WordDefinition = {6: [6, 7, 8, 9, 10, 11]};\nconst le: WordDefinition = {7: [7, 8]};\nconst cinq: WordDefinition = {9: [7, 8, 9, 10]};\nconst dix: WordDefinition = {7: [9, 10, 11]};\nconst quart: WordDefinition = {8: [4, 5, 6, 7, 8]};\nconst vingt: WordDefinition = {9: [1, 2, 3, 4, 5]};\nconst vingtcinq: WordDefinition = {9: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]};\n\nexport const Layout_fr: Layout = {\n code: 'fr',\n getHour: (time: Date) => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n hours: {\n '0': {5: [6, 7, 8, 9, 10, 11]},\n '1,13': [\n {3: [5, 6, 7]},\n heures\n ],\n '2,14': [\n {1: [8, 9, 10, 11]},\n heures\n ],\n '3,15': [\n {2: [7, 8, 9, 10, 11]},\n heures\n ],\n '4,16': [\n {2: [1, 2, 3, 4, 5, 6]},\n heures\n ],\n '5,17': [\n {4: [8, 9, 10, 11]},\n heures\n ],\n '6,18': [\n {4: [5, 6, 7]},\n heures\n ],\n '7,19': [\n {3: [8, 9, 10, 11]},\n heures\n ],\n '8,20': [\n {4: [1, 2, 3, 4]},\n heures\n ],\n '9,21': [\n {3: [1, 2, 3, 4]},\n heures\n ],\n '10,22': [\n {5: [3, 4, 5]},\n heures\n ],\n '11,23': [\n {6: [1, 2, 3, 4]},\n heures\n ],\n '12': {5: [1, 2, 3, 4]}\n },\n letters: [\n 'ILNESTODEUX',\n 'QUATRETROIS',\n 'NEUFUNESEPT',\n 'HUITSIXCINQ',\n 'MIDIXMINUIT',\n 'ONZERHEURES',\n 'MOINSOLEDIX',\n 'ETRQUARTPMD',\n 'VINGT-CINQU',\n 'ETSDEMIEPAM'\n ],\n minutes: {\n '5,6,7,8,9': cinq,\n '10,11,12,13,14': dix,\n '15,16,17,18,19': [et, quart],\n '20,21,22,23,24': vingt,\n '25,26,27,28,29': vingtcinq,\n '30,31,32,33,34': [et, demie],\n '35,36,37,38,39': [moins, vingtcinq],\n '40,41,42,43,44': [moins, vingt],\n '45,46,47,48,49': [moins, le, quart],\n '50,51,52,53,54': [moins, dix],\n '55,56,57,58,59': [moins, cinq]\n },\n permanent: il_est,\n prettyName: 'Français',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_fr);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst sono_le: WordDefinition = {1: [1, 2, 3, 4, 6, 7]};\nconst e_l: WordDefinition = {2: [1, 3, 4]};\nconst e: WordDefinition = {8: [1]};\nconst meno: WordDefinition = {7: [8, 9, 10, 11]};\nconst mezza: WordDefinition = {10: [7, 8, 9, 10, 11]};\nconst cinque: WordDefinition = {9: [6, 7, 8, 9, 10, 11]};\nconst dieci: WordDefinition = {10: [1, 2, 3, 4, 5]};\nconst un_quarto: WordDefinition = {8: [3, 4, 6, 7, 8, 9, 10, 11]};\nconst venti: WordDefinition = {9: [1, 2, 3, 4, 5]};\nconst venticinque: WordDefinition = {9: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]};\n\nexport const Layout_it: Layout = {\n code: 'it',\n getHour: (time: Date) => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n hours: {\n '0,12': [sono_le, {5: [1, 2, 3, 4, 5, 6]}],\n '1,13': [e_l, {2: [5, 6, 7]}],\n '2,14': [sono_le, {2: [9, 10, 11]}],\n '3,15': [sono_le, {3: [1, 2, 3]}],\n '4,16': [sono_le, {6: [1, 2, 3, 4, 5, 6, 7]}],\n '5,17': [sono_le, {7: [1, 2, 3, 4, 5, 6]}],\n '6,18': [sono_le, {6: [9, 10, 11]}],\n '7,19': [sono_le, {5: [7, 8, 9, 10, 11]}],\n '8,20': [sono_le, {3: [4, 5, 6, 7]}],\n '9,21': [sono_le, {3: [8, 9, 10, 11]}],\n '10,22': [sono_le, {4: [1, 2, 3, 4, 5]}],\n '11,23': [sono_le, {4: [6, 7, 8, 9, 10, 11]}]\n },\n letters: [\n 'SONORLEBORE',\n 'ÈRL\\'UNASDUE',\n 'TREOTTONOVE',\n 'DIECIUNDICI',\n 'DODICISETTE',\n 'QUATTROCSEI',\n 'CINQUEAMENO',\n 'ECUNOQUARTO',\n 'VENTICINQUE',\n 'DIECIPMEZZA'\n ],\n minutes: {\n '5,6,7,8,9': [e, cinque],\n '10,11,12,13,14': [e, dieci],\n '15,16,17,18,19': [e, un_quarto],\n '20,21,22,23,24': [e, venti],\n '25,26,27,28,29': [e, venticinque],\n '30,31,32,33,34': [e, mezza],\n '35,36,37,38,39': [meno, venticinque],\n '40,41,42,43,44': [meno, venti],\n '45,46,47,48,49': [meno, un_quarto],\n '50,51,52,53,54': [meno, dieci],\n '55,56,57,58,59': [meno, cinque]\n },\n permanent: null,\n prettyName: 'Italiano',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_it);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst het_is: WordDefinition = {1: [1, 2, 3, 5, 6]};\nconst over1: WordDefinition = {3: [1, 2, 3, 4]};\nconst voor1: WordDefinition = {2: [8, 9, 10, 11]};\nconst over2: WordDefinition = {4: [8, 9, 10, 11]};\nconst voor2: WordDefinition = {5: [1, 2, 3, 4]};\nconst half: WordDefinition = {4: [1, 2, 3, 4]};\nconst vijf: WordDefinition = {1: [8, 9, 10, 11]};\nconst tien: WordDefinition = {2: [1, 2, 3, 4]};\nconst kwart: WordDefinition = {3: [7, 8, 9, 10, 11]};\nconst uur: WordDefinition = {10: [9, 10, 11]};\n\nexport const Layout_nl: Layout = {\n code: 'nl',\n getHour: (time: Date) => {\n const hour = time.getHours();\n if (time.getMinutes() >= 20) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n hours: {\n '0,12': {10: [1, 2, 3, 4, 5, 6]},\n '1,13': {5: [8, 9, 10]},\n '2,14': {6: [1, 2, 3, 4]},\n '3,15': {6: [8, 9, 10, 11]},\n '4,16': {7: [1, 2, 3, 4]},\n '5,17': {7: [5, 6, 7, 8]},\n '6,18': {7: [9, 10, 11]},\n '7,19': {8: [1, 2, 3, 4, 5]},\n '8,20': {9: [1, 2, 3, 4]},\n '9,21': {8: [7, 8, 9, 10, 11]},\n '10,22': {9: [5, 6, 7, 8]},\n '11,23': {9: [9, 10, 11]}\n },\n letters: [\n 'HETKISAVIJF',\n 'TIENBTZVOOR',\n 'OVERMEKWART',\n 'HALFSPWOVER',\n 'VOORTHGEENS',\n 'TWEEPVCDRIE',\n 'VIERVIJFZES',\n 'ZEVENONEGEN',\n 'ACHTTIENELF',\n 'TWAALFBFUUR'\n ],\n minutes: {\n '0,1,2,3,4': uur,\n '5,6,7,8,9': [vijf, over1],\n '10,11,12,13,14': [tien, over1],\n '15,16,17,18,19': [kwart, over2],\n '20,21,22,23,24': [tien, voor1, half],\n '25,26,27,28,29': [vijf, voor1, half],\n '30,31,32,33,34': half,\n '35,36,37,38,39': [vijf, over1, half],\n '40,41,42,43,44': [tien, over1, half],\n '45,46,47,48,49': [kwart, voor2],\n '50,51,52,53,54': [tien, voor1],\n '55,56,57,58,59': [vijf, voor1]\n },\n permanent: het_is,\n prettyName: 'Nederlands',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_nl);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst e_: WordDefinition = {1: [1]};\nconst sao: WordDefinition = {1: [2, 3, 4]};\nconst e1: WordDefinition = {7: [8]};\nconst e2: WordDefinition = {10: [5]};\nconst menos: WordDefinition = {7: [7, 8, 9, 10, 11]};\nconst meia: WordDefinition = {8: [8, 9, 10, 11]};\nconst cinco: WordDefinition = {10: [7, 8, 9, 10, 11]};\nconst dez: WordDefinition = {10: [1, 2, 3]};\nconst um_quarto: WordDefinition = {9: [1, 2, 4, 5, 6, 7, 8, 9]};\nconst vinte: WordDefinition = {8: [1, 2, 3, 4, 5]};\n\nexport const Layout_pt: Layout = {\n code: 'pt',\n getHour: (time: Date) => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n hours: {\n '0': [e_, {'6': [2, 3, 4, 5, 7, 8, 9, 10, 11]}],\n '12': [e_, {'2': [1, 2, 3, 4, 6, 7, 8]}],\n '1,13': [e_, {'1': [5, 6, 7]}],\n '2,14': [sao, {'3': [1, 2, 3, 4]}],\n '3,15': [sao, {'1': [8, 9, 10, 11]}],\n '4,16': [sao, {'4': [1, 2, 3, 4, 5, 6]}],\n '5,17': [sao, {'5': [1, 2, 3, 4, 5]}],\n '6,18': [sao, {'3': [4, 5, 6, 7]}],\n '7,19': [sao, {'3': [7, 8, 9, 10]}],\n '8,20': [sao, {'5': [5, 6, 7, 8]}],\n '9,21': [sao, {'4': [8, 9, 10, 11]}],\n '10,22': [sao, {'2': [9, 10, 11]}],\n '11,23': [sao, {'5': [8, 9, 10, 11]}]\n },\n letters: [\n 'ÉSÃOUMATRÊS',\n 'MEIOLDIADEZ',\n 'DUASEISETEY',\n 'QUATROHNOVE',\n 'CINCOITONZE',\n 'ZMEIALNOITE',\n 'HORASYMENOS',\n 'VINTECAMEIA',\n 'UMVQUARTOPM',\n 'DEZOEYCINCO'\n ],\n minutes: {\n '5,6,7,8,9': [e1, cinco],\n '10,11,12,13,14': [e1, dez],\n '15,16,17,18,19': [e1, um_quarto],\n '20,21,22,23,24': [e1, vinte],\n '25,26,27,28,29': [e1, vinte, e2, cinco],\n '30,31,32,33,34': [e1, meia],\n '35,36,37,38,39': [menos, vinte, e2, cinco],\n '40,41,42,43,44': [menos, vinte],\n '45,46,47,48,49': [menos, um_quarto],\n '50,51,52,53,54': [menos, dez],\n '55,56,57,58,59': [menos, cinco]\n },\n permanent: null,\n prettyName: 'Português',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_pt);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout} from './layout';\nimport {Theme} from './theme';\n\nexport class Globals {\n private static layouts: Layout[] = [];\n private static themes: Theme[] = [];\n\n static registerTheme(name: string, styleClass: string): void {\n if (Globals.themes.some(value => value.name === name)) {\n console.log(`Theme with name '${name}' already registered; ignoring register request for styleClass '${styleClass}'.`)\n } else {\n Globals.themes.push({\n name,\n styleClass\n });\n }\n }\n\n static hasThemes(): boolean {\n return Globals.themes.length > 0;\n }\n\n static hasMultipleThemes(): boolean {\n return Globals.themes.length > 1;\n }\n\n static getFirstTheme(): Theme {\n return Globals.getTheme(0);\n }\n\n static getTheme(index: number): Theme {\n return Globals.themes[index];\n }\n\n static getThemes(): Theme[] {\n return Globals.themes;\n }\n\n static registerLayout(layout: Layout): void {\n const available = !Globals.layouts.some(element => {\n if (layout.code === element.code) {\n if (layout.prettyName !== element.prettyName) {\n console.error(\n `Error: Language code '${layout.code}' cannot be registered for layout '${layout.prettyName}' because it is already registered for layout '${element.prettyName}'!`\n );\n }\n return true;\n }\n return false;\n }\n );\n if (available) {\n Globals.layouts.push(layout);\n Globals.layouts.sort((a, b) => a.prettyName.localeCompare(b.prettyName));\n }\n }\n\n static hasLayouts(): boolean {\n return Globals.layouts.length > 0;\n }\n\n static hasMultipleLayouts(): boolean {\n return Globals.layouts.length > 1;\n }\n\n static getFirstLayout(): Layout {\n return Globals.layouts[0];\n }\n\n static getLayouts(): Layout[] {\n return Globals.layouts;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Letter} from './letter';\n\nexport interface Layout {\n readonly code: string;\n getCoarseMinute?: (time: Date) => number;\n getDotMinute?: (time: Date) => number;\n getHour?: (time: Date) => number;\n getSeconds?: (time: Date) => number;\n readonly hours: TimeDefinition;\n readonly letters: string[];\n readonly minutes: TimeDefinition;\n parsed?: Letter[][];\n readonly permanent: WordDefinition | WordDefinition[];\n readonly prettyName: string;\n seconds?: TimeDefinition;\n readonly version: number;\n}\n\nexport interface WordDefinition {\n [line: number]: number[];\n}\n\nexport interface TimeDefinition {\n [values: string]: WordDefinition | WordDefinition[];\n}\n\nexport const EMPTY_LAYOUT: Layout = {\n code: null,\n hours: null,\n letters: [],\n minutes: null,\n permanent: [],\n prettyName: null,\n version: 2\n};\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\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","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport * as uhr from './index';\nimport {Layout_de} from './layout/layout-de';\nimport {Layout_de_CH} from './layout/layout-de_ch';\nimport {Layout_de_CH_genau} from './layout/layout-de_ch_genau';\nimport {Layout_dk} from './layout/layout-dk';\nimport {Layout_en} from './layout/layout-en';\nimport {Layout_es} from './layout/layout-es';\nimport {Layout_fr} from './layout/layout-fr';\nimport {Layout_it} from './layout/layout-it';\nimport {Layout_nl} from './layout/layout-nl';\nimport {Layout_pt} from './layout/layout-pt';\n\n// We just need to reference all required files at least once, so that the tree-shaker won't remove them from\n// the bundle.\nlet a = uhr;\na = Layout_de_CH;\na = Layout_de_CH_genau;\na = Layout_de;\na = Layout_dk;\na = Layout_en;\na = Layout_es;\na = Layout_fr;\na = Layout_it;\na = Layout_nl;\na = Layout_pt;\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///external \"Cookies\"","webpack:///external \"jQuery\"","webpack:///./src/layout/layout-de.ts","webpack:///./src/layout/layout-de_ch.ts","webpack:///./src/layout/layout-de_ch_genau.ts","webpack:///./src/layout/layout-dk.ts","webpack:///./src/layout/layout-en.ts","webpack:///./src/layout/layout-es.ts","webpack:///./src/layout/layout-fr.ts","webpack:///./src/layout/layout-it.ts","webpack:///./src/layout/layout-nl.ts","webpack:///./src/layout/layout-pt.ts","webpack:///./src/domain/globals.ts","webpack:///./src/domain/layout.ts","webpack:///./src/cookie-handler.ts","webpack:///./src/domain/letter.ts","webpack:///./src/layout-renderer.ts","webpack:///./src/uhr-renderer.ts","webpack:///./src/uhr.ts","webpack:///./src/theme-autodetector.ts","webpack:///./src/index.ts","webpack:///./src/bundle.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","Cookies","jQuery","__webpack_exports__","Layout_de","nach","4","vor","halb","5","fuenf","1","zehn","2","zwanzig","code","hours","0,12","9","1,13","6","2,14","3,15","7","4,16","5,17","6,18","8","7,19","8,20","9,21","10","10,22","11,23","letters","minutes","0,1,2,3,4","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","3","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","prettyName","version","$","fritteli","uhr","register","Layout_de_CH","ab","haubi","fuef","zae","viertu","zwaenzg","Layout_de_CH_genau","0","Layout_dk","minutter","over","fem","ti","kvart","tyve","halv","Layout_en","to","past","five","ten","a_quarter","twenty","twentyfive","getHour","time","hour","getHours","getMinutes","Layout_es","son_las","y","menos","cinco","diez","cuarto","veinte","veinticinco","Layout_fr","et","moins","heures","cinq","dix","quart","vingt","vingtcinq","12","Layout_it","sono_le","e","meno","cinque","dieci","un_quarto","venti","venticinque","Layout_nl","over1","voor1","half","vijf","tien","kwart","Layout_pt","e_","sao","e1","e2","dez","um_quarto","vinte","Globals","registerTheme","styleClass","themes","some","console","log","push","hasThemes","length","hasMultipleThemes","getFirstTheme","getTheme","index","getThemes","registerLayout","layout","layouts","element","error","sort","a","b","localeCompare","hasLayouts","hasMultipleLayouts","getFirstLayout","getLayouts","EMPTY_LAYOUT","cookie_handler_CookieHandler","CookieHandler","widgetId","cookiePath","this","getLayout","oldCookie","getCookie","removeCookie","setLayout","setCookie","getMode","setMode","getStatus","setStatus","status","setTheme","theme","cookieName","external_Cookies_","cookieValue","options","expires","path","Letter","style","addStyle","toString","layout_renderer_LayoutRendererV2Delegate","LayoutRendererV2Delegate","parse","forEach","lineString","line","parseArrayOrObject","seconds","parseTimeDefinition","parseObject","keys","map","Number","x","input","_this","Array","isArray","item","definition","listString","timeValues","split","highlightLetters","timeValue","vorne0","hinten0","vorne1","hinten1","vorne2","hinten2","vorne3","hinten3","vorne4","hinten4","vorne5","hinten5","hinten6","hinten7","hinten8","hinten9","11","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59","LayoutRenderer","renderarea","render","beforeshow","undefined","parsed","warn","parsedLayout","writable","configurable","fadeOut","empty","array","letter","append","fadeIn","uhr_renderer_UhrRenderer","UhrRenderer","$element","id","cookieHandler","setupHTML","wireFunctionality","setWidth","width","css","realWidth","height","addClass","controls","controlpanel","content","toggleSwitch","modeSwitch","languageChooser_1","themeChooser_1","closebutton","on","click","hide","after","configlink","toggleConfigScreen","toggle","force","prop","start","stop","languageChooser","change","languageKey","val","selectedLayout","language","found","fallbackLanguage","themeChooser","themeKey","selectedTheme","fallbackTheme","autoresize","window","resize","$parent","parent","$window","parentWidth","parentHeight","windowWidth","windowHeight","size","Math","min","uhr_Uhr","Uhr","widgetInstance","timer","currentMinute","userTime","Date","uuid","parseHash","renderer","setTime","destroy","clearInterval","removeAttr","remove","isOn","setInterval","update","getCurrentLayout","find","removeClass","show","clear","second","getSecond","dotMinute","getDotMinute","coarseMinute","getCoarseMinute","highlight","itemClass","getSeconds","date","hash","location","charAt","substring","decodeURIComponent","pair","matchingLanguages","filter","external_jQuery_","each","styleSheet","attr","name_1","widget","__fritteli_uhr_instance","_create","_destroy","_layout_layout_de__WEBPACK_IMPORTED_MODULE_1__","_layout_layout_de_ch__WEBPACK_IMPORTED_MODULE_2__","_layout_layout_de_ch_genau__WEBPACK_IMPORTED_MODULE_3__","_layout_layout_dk__WEBPACK_IMPORTED_MODULE_4__","_layout_layout_en__WEBPACK_IMPORTED_MODULE_5__","_layout_layout_es__WEBPACK_IMPORTED_MODULE_6__","_layout_layout_fr__WEBPACK_IMPORTED_MODULE_7__","_layout_layout_it__WEBPACK_IMPORTED_MODULE_8__","_layout_layout_nl__WEBPACK_IMPORTED_MODULE_9__","_layout_layout_pt__WEBPACK_IMPORTED_MODULE_10__"],"mappings":"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","file":"lib/uhr.bundle.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 13);\n","module.exports = Cookies;","module.exports = jQuery;","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst es_ist: WordDefinition = {1: [1, 2, 4, 5, 6]};\nconst uhr: WordDefinition = {10: [9, 10, 11]};\nconst nach: WordDefinition = {4: [8, 9, 10, 11]};\nconst vor: WordDefinition = {4: [1, 2, 3]};\nconst halb: WordDefinition = {5: [1, 2, 3, 4]};\nconst fuenf: WordDefinition = {1: [8, 9, 10, 11]};\nconst zehn: WordDefinition = {2: [1, 2, 3, 4]};\nconst viertel: WordDefinition = {3: [5, 6, 7, 8, 9, 10, 11]};\nconst zwanzig: WordDefinition = {2: [5, 6, 7, 8, 9, 10, 11]};\nconst dreiviertel: WordDefinition = {3: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]};\n\nexport const Layout_de: Layout = {\n code: 'de',\n hours: {\n '0,12': {9: [7, 8, 9, 10, 11]},\n '1,13': {6: [1, 2, 3, 4]},\n '2,14': {6: [8, 9, 10, 11]},\n '3,15': {7: [1, 2, 3, 4]},\n '4,16': {7: [8, 9, 10, 11]},\n '5,17': {5: [8, 9, 10, 11]},\n '6,18': {8: [1, 2, 3, 4, 5]},\n '7,19': {9: [1, 2, 3, 4, 5, 6]},\n '8,20': {8: [8, 9, 10, 11]},\n '9,21': {10: [4, 5, 6, 7]},\n '10,22': {10: [1, 2, 3, 4]},\n '11,23': {5: [6, 7, 8]}\n },\n letters: [\n 'ESKISTAFÜNF',\n 'ZEHNZWANZIG',\n 'DREIVIERTEL',\n 'VORFUNKNACH',\n 'HALBAELFÜNF',\n 'EINSXAMZWEI',\n 'DREIPMJVIER',\n 'SECHSNLACHT',\n 'SIEBENZWÖLF',\n 'ZEHNEUNKUHR'\n ],\n minutes: {\n '0,1,2,3,4': uhr,\n '5,6,7,8,9': [fuenf, nach],\n '10,11,12,13,14': [zehn, nach],\n '15,16,17,18,19': [viertel, nach],\n '20,21,22,23,24': [zwanzig, nach],\n '25,26,27,28,29': [fuenf, vor, halb],\n '30,31,32,33,34': halb,\n '35,36,37,38,39': [fuenf, nach, halb],\n '40,41,42,43,44': [zwanzig, vor],\n '45,46,47,48,49': dreiviertel,\n '50,51,52,53,54': [zehn, vor],\n '55,56,57,58,59': [fuenf, vor]\n },\n permanent: es_ist,\n prettyName: 'Deutsch',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_de);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst es_isch: WordDefinition = {1: [1, 2, 4, 5, 6, 7]};\nconst ab: WordDefinition = {4: [1, 2]};\nconst vor: WordDefinition = {3: [9, 10, 11]};\nconst haubi: WordDefinition = {4: [4, 5, 6, 7, 8]};\nconst fuef: WordDefinition = {1: [9, 10, 11]};\nconst zae: WordDefinition = {2: [9, 10, 11]};\nconst viertu: WordDefinition = {2: [1, 2, 3, 4, 5, 6]};\nconst zwaenzg: WordDefinition = {3: [1, 2, 3, 4, 5, 6]};\n\nexport const Layout_de_CH: Layout = {\n code: 'de_CH',\n hours: {\n '0,12': {10: [1, 2, 3, 4, 5, 6]},\n '1,13': {5: [1, 2, 3]},\n '2,14': {5: [4, 5, 6, 7]},\n '3,15': {5: [9, 10, 11]},\n '4,16': {6: [1, 2, 3, 4, 5]},\n '5,17': {6: [6, 7, 8, 9]},\n '6,18': {7: [1, 2, 3, 4, 5, 6]},\n '7,19': {7: [7, 8, 9, 10, 11]},\n '8,20': {8: [1, 2, 3, 4, 5]},\n '9,21': {8: [6, 7, 8, 9]},\n '10,22': {9: [1, 2, 3, 4]},\n '11,23': {9: [8, 9, 10, 11]}\n },\n letters: [\n 'ESKISCHAFÜF',\n 'VIERTUBFZÄÄ',\n 'ZWÄNZGSIVOR',\n 'ABOHAUBIEGE',\n 'EISZWÖISDRÜ',\n 'VIERIFÜFIQT',\n 'SÄCHSISIBNI',\n 'ACHTINÜNIEL',\n 'ZÄNIERBEUFI',\n 'ZWÖUFINAUHR'\n ],\n minutes: {\n '5,6,7,8,9': [fuef, ab],\n '10,11,12,13,14': [zae, ab],\n '15,16,17,18,19': [viertu, ab],\n '20,21,22,23,24': [zwaenzg, ab],\n '25,26,27,28,29': [fuef, vor, haubi],\n '30,31,32,33,34': haubi,\n '35,36,37,38,39': [fuef, ab, haubi],\n '40,41,42,43,44': [zwaenzg, vor],\n '45,46,47,48,49': [viertu, vor],\n '50,51,52,53,54': [zae, vor],\n '55,56,57,58,59': [fuef, vor]\n },\n permanent: es_isch,\n prettyName: 'Bärndütsch',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_de_CH);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst es_isch: WordDefinition = {1: [1, 2, 4, 5, 6, 7]};\nconst genau: WordDefinition = {3: [7, 8, 9, 10, 11]};\nconst ab: WordDefinition = {4: [4, 5]};\nconst vor: WordDefinition = {4: [1, 2, 3]};\nconst haubi: WordDefinition = {4: [7, 8, 9, 10, 11]};\nconst fuef: WordDefinition = {1: [9, 10, 11]};\nconst zae: WordDefinition = {2: [9, 10, 11]};\nconst viertu: WordDefinition = {2: [1, 2, 3, 4, 5, 6]};\nconst zwaenzg: WordDefinition = {3: [1, 2, 3, 4, 5, 6]};\n\nexport const Layout_de_CH_genau: Layout = {\n code: 'de_CH_genau',\n hours: {\n '0,12': {10: [1, 2, 3, 4, 5, 6]},\n '1,13': {5: [1, 2, 3]},\n '2,14': {5: [4, 5, 6, 7]},\n '3,15': {5: [9, 10, 11]},\n '4,16': {6: [1, 2, 3, 4, 5]},\n '5,17': {6: [6, 7, 8, 9]},\n '6,18': {7: [1, 2, 3, 4, 5, 6]},\n '7,19': {7: [7, 8, 9, 10, 11]},\n '8,20': {8: [1, 2, 3, 4, 5]},\n '9,21': {8: [6, 7, 8, 9]},\n '10,22': {9: [1, 2, 3, 4]},\n '11,23': {9: [8, 9, 10, 11]}\n },\n letters: [\n 'ESKISCHAFÜF',\n 'VIERTUBFZÄÄ',\n 'ZWÄNZGGENAU',\n 'VORABOHAUBI',\n 'EISZWÖISDRÜ',\n 'VIERIFÜFIQT',\n 'SÄCHSISIBNI',\n 'ACHTINÜNIEL',\n 'ZÄNIERBEUFI',\n 'ZWÖUFINAUHR'\n ],\n minutes: {\n '0': genau,\n '5,6,7,8,9': [fuef, ab],\n '10,11,12,13,14': [zae, ab],\n '15,16,17,18,19': [viertu, ab],\n '20,21,22,23,24': [zwaenzg, ab],\n '25,26,27,28,29': [fuef, vor, haubi],\n '30,31,32,33,34': haubi,\n '35,36,37,38,39': [fuef, ab, haubi],\n '40,41,42,43,44': [zwaenzg, vor],\n '45,46,47,48,49': [viertu, vor],\n '50,51,52,53,54': [zae, vor],\n '55,56,57,58,59': [fuef, vor]\n },\n permanent: es_isch,\n prettyName: 'Bärndütsch (genau)',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_de_CH_genau);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst klokken_er: WordDefinition = {1: [1, 2, 3, 4, 5, 6, 7, 9, 10]};\nconst minutter: WordDefinition = {4: [4, 5, 6, 7, 8, 9, 10, 11]};\nconst i: WordDefinition = {5: [8]};\nconst over: WordDefinition = {5: [4, 5, 6, 7]};\nconst fem: WordDefinition = {2: [1, 2, 3]};\nconst ti: WordDefinition = {4: [1, 2]};\nconst kvart: WordDefinition = {3: [4, 5, 6, 7, 8]};\nconst tyve: WordDefinition = {2: [4, 5, 6, 7]};\nconst halv: WordDefinition = {6: [8, 9, 10, 11]};\n\nexport const Layout_dk: Layout = {\n code: 'dk',\n hours: {\n '0,12': {10: [8, 9, 10, 11]},\n '1,13': {7: [1, 2]},\n '2,14': {7: [3, 4]},\n '3,15': {7: [5, 6, 7]},\n '4,16': {7: [8, 9, 10, 11]},\n '5,17': {8: [1, 2, 3]},\n '6,18': {8: [4, 5, 6, 7]},\n '7,19': {8: [9, 10, 11]},\n '8,20': {9: [1, 2, 3, 4]},\n '9,21': {9: [6, 7]},\n '10,22': {9: [10, 11]},\n '11,23': {10: [1, 2, 3, 4, 5, 6]}\n },\n letters: [\n 'KLOKKENVERO',\n 'FEMTYVESKLA',\n 'OJEKVARTVAT',\n 'TIAMINUTTER',\n 'VEMOVERILMF',\n 'MONALISHALV',\n 'ETTOTREFIRE',\n 'FEMSEKSRSYV',\n 'OTTERNIMETI',\n 'ELLEVEATOLV'\n ],\n minutes: {\n '5,6,7,8,9': [fem, minutter, over],\n '10,11,12,13,14': [ti, minutter, over],\n '15,16,17,18,19': [kvart, over],\n '20,21,22,23,24': [tyve, minutter, over],\n '25,26,27,28,29': [fem, minutter, i, halv],\n '30,31,32,33,34': [halv],\n '35,36,37,38,39': [fem, minutter, over, halv],\n '40,41,42,43,44': [tyve, minutter, i],\n '45,46,47,48,49': [kvart, i],\n '50,51,52,53,54': [ti, minutter, i],\n '55,56,57,58,59': [fem, minutter, i]\n },\n permanent: klokken_er,\n prettyName: 'Dansk',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_dk);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst it_is: WordDefinition = {1: [1, 2, 4, 5]};\nconst half: WordDefinition = {4: [1, 2, 3, 4]};\nconst to: WordDefinition = {4: [10, 11]};\nconst past: WordDefinition = {5: [1, 2, 3, 4]};\nconst o_clock: WordDefinition = {10: [5, 6, 7, 8, 9, 10, 11]};\nconst five: WordDefinition = {3: [7, 8, 9, 10]};\nconst ten: WordDefinition = {4: [6, 7, 8]};\nconst a_quarter: WordDefinition = {2: [1, 3, 4, 5, 6, 7, 8, 9]};\nconst twenty: WordDefinition = {3: [1, 2, 3, 4, 5, 6]};\nconst twentyfive: WordDefinition = {3: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]};\n\nexport const Layout_en: Layout = {\n code: 'en',\n getHour: (time: Date) => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n\n hours: {\n '0,12': {9: [6, 7, 8, 9, 10, 11]},\n '1,13': {6: [1, 2, 3]},\n '2,14': {7: [9, 10, 11]},\n '3,15': {6: [7, 8, 9, 10, 11]},\n '4,16': {7: [1, 2, 3, 4]},\n '5,17': {7: [5, 6, 7, 8]},\n '6,18': {6: [4, 5, 6]},\n '7,19': {9: [1, 2, 3, 4, 5]},\n '8,20': {8: [1, 2, 3, 4, 5]},\n '9,21': {5: [8, 9, 10, 11]},\n '10,22': {10: [1, 2, 3]},\n '11,23': {8: [6, 7, 8, 9, 10, 11]}\n },\n letters: [\n 'ITLISBFAMPM',\n 'ACQUARTERDC',\n 'TWENTYFIVEX',\n 'HALFBTENFTO',\n 'PASTERUNINE',\n 'ONESIXTHREE',\n 'FOURFIVETWO',\n 'EIGHTELEVEN',\n 'SEVENTWELVE',\n 'TENSO\\'CLOCK'\n ],\n minutes: {\n '0,1,2,3,4': o_clock,\n '5,6,7,8,9': [five, past],\n '10,11,12,13,14': [ten, past],\n '15,16,17,18,19': [a_quarter, past],\n '20,21,22,23,24': [twenty, past],\n '25,26,27,28,29': [twentyfive, past],\n '30,31,32,33,34': [half, past],\n '35,36,37,38,39': [twentyfive, to],\n '40,41,42,43,44': [twenty, to],\n '45,46,47,48,49': [a_quarter, to],\n '50,51,52,53,54': [ten, to],\n '55,56,57,58,59': [five, to]\n },\n permanent: it_is,\n prettyName: 'English',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_en);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst es_la: WordDefinition = {1: [1, 2, 6, 7]};\nconst son_las: WordDefinition = {1: [2, 3, 4, 6, 7, 8]};\nconst y: WordDefinition = {7: [6]};\nconst menos: WordDefinition = {7: [7, 8, 9, 10, 11]};\nconst media: WordDefinition = {10: [1, 2, 3, 4, 5]};\nconst cinco: WordDefinition = {9: [7, 8, 9, 10, 11]};\nconst diez: WordDefinition = {8: [8, 9, 10, 11]};\nconst cuarto: WordDefinition = {10: [6, 7, 8, 9, 10, 11]};\nconst veinte: WordDefinition = {8: [2, 3, 4, 5, 6, 7]};\nconst veinticinco: WordDefinition = {9: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]};\n\nexport const Layout_es: Layout = {\n code: 'es',\n getHour: (time: Date) => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n\n hours: {\n '0,12': [son_las, {7: [1, 2, 3, 4]}],\n '1,13': [es_la, {1: [9, 10, 11]}],\n '2,14': [son_las, {2: [1, 2, 3]}],\n '3,15': [son_las, {2: [5, 6, 7, 8]}],\n '4,16': [son_las, {3: [1, 2, 3, 4, 5, 6]}],\n '5,17': [son_las, {3: [7, 8, 9, 10, 11]}],\n '6,18': [son_las, {4: [1, 2, 3, 4]}],\n '7,19': [son_las, {4: [6, 7, 8, 9, 10]}],\n '8,20': [son_las, {5: [1, 2, 3, 4]}],\n '9,21': [son_las, {5: [5, 6, 7, 8, 9]}],\n '10,22': [son_las, {6: [3, 4, 5, 6]}],\n '11,23': [son_las, {6: [8, 9, 10, 11]}]\n },\n letters: [\n 'ESONELASUNA',\n 'DOSITRESORE',\n 'CUATROCINCO',\n 'SEISASIETEN',\n 'OCHONUEVEYO',\n 'LADIEZSONCE',\n 'DOCELYMENOS',\n 'OVEINTEDIEZ',\n 'VEINTICINCO',\n 'MEDIACUARTO'\n ],\n minutes: {\n '5,6,7,8,9': [y, cinco],\n '10,11,12,13,14': [y, diez],\n '15,16,17,18,19': [y, cuarto],\n '20,21,22,23,24': [y, veinte],\n '25,26,27,28,29': [y, veinticinco],\n '30,31,32,33,34': [y, media],\n '35,36,37,38,39': [menos, veinticinco],\n '40,41,42,43,44': [menos, veinte],\n '45,46,47,48,49': [menos, cuarto],\n '50,51,52,53,54': [menos, diez],\n '55,56,57,58,59': [menos, cinco]\n },\n permanent: null,\n prettyName: 'Español',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_es);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst il_est: WordDefinition = {1: [1, 2, 4, 5, 6]};\nconst et: WordDefinition = {8: [1, 2]};\nconst moins: WordDefinition = {7: [1, 2, 3, 4, 5]};\nconst demie: WordDefinition = {10: [4, 5, 6, 7, 8]};\nconst heures: WordDefinition = {6: [6, 7, 8, 9, 10, 11]};\nconst le: WordDefinition = {7: [7, 8]};\nconst cinq: WordDefinition = {9: [7, 8, 9, 10]};\nconst dix: WordDefinition = {7: [9, 10, 11]};\nconst quart: WordDefinition = {8: [4, 5, 6, 7, 8]};\nconst vingt: WordDefinition = {9: [1, 2, 3, 4, 5]};\nconst vingtcinq: WordDefinition = {9: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]};\n\nexport const Layout_fr: Layout = {\n code: 'fr',\n getHour: (time: Date) => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n hours: {\n '0': {5: [6, 7, 8, 9, 10, 11]},\n '1,13': [\n {3: [5, 6, 7]},\n heures\n ],\n '2,14': [\n {1: [8, 9, 10, 11]},\n heures\n ],\n '3,15': [\n {2: [7, 8, 9, 10, 11]},\n heures\n ],\n '4,16': [\n {2: [1, 2, 3, 4, 5, 6]},\n heures\n ],\n '5,17': [\n {4: [8, 9, 10, 11]},\n heures\n ],\n '6,18': [\n {4: [5, 6, 7]},\n heures\n ],\n '7,19': [\n {3: [8, 9, 10, 11]},\n heures\n ],\n '8,20': [\n {4: [1, 2, 3, 4]},\n heures\n ],\n '9,21': [\n {3: [1, 2, 3, 4]},\n heures\n ],\n '10,22': [\n {5: [3, 4, 5]},\n heures\n ],\n '11,23': [\n {6: [1, 2, 3, 4]},\n heures\n ],\n '12': {5: [1, 2, 3, 4]}\n },\n letters: [\n 'ILNESTODEUX',\n 'QUATRETROIS',\n 'NEUFUNESEPT',\n 'HUITSIXCINQ',\n 'MIDIXMINUIT',\n 'ONZERHEURES',\n 'MOINSOLEDIX',\n 'ETRQUARTPMD',\n 'VINGT-CINQU',\n 'ETSDEMIEPAM'\n ],\n minutes: {\n '5,6,7,8,9': cinq,\n '10,11,12,13,14': dix,\n '15,16,17,18,19': [et, quart],\n '20,21,22,23,24': vingt,\n '25,26,27,28,29': vingtcinq,\n '30,31,32,33,34': [et, demie],\n '35,36,37,38,39': [moins, vingtcinq],\n '40,41,42,43,44': [moins, vingt],\n '45,46,47,48,49': [moins, le, quart],\n '50,51,52,53,54': [moins, dix],\n '55,56,57,58,59': [moins, cinq]\n },\n permanent: il_est,\n prettyName: 'Français',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_fr);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst sono_le: WordDefinition = {1: [1, 2, 3, 4, 6, 7]};\nconst e_l: WordDefinition = {2: [1, 3, 4]};\nconst e: WordDefinition = {8: [1]};\nconst meno: WordDefinition = {7: [8, 9, 10, 11]};\nconst mezza: WordDefinition = {10: [7, 8, 9, 10, 11]};\nconst cinque: WordDefinition = {9: [6, 7, 8, 9, 10, 11]};\nconst dieci: WordDefinition = {10: [1, 2, 3, 4, 5]};\nconst un_quarto: WordDefinition = {8: [3, 4, 6, 7, 8, 9, 10, 11]};\nconst venti: WordDefinition = {9: [1, 2, 3, 4, 5]};\nconst venticinque: WordDefinition = {9: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]};\n\nexport const Layout_it: Layout = {\n code: 'it',\n getHour: (time: Date) => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n hours: {\n '0,12': [sono_le, {5: [1, 2, 3, 4, 5, 6]}],\n '1,13': [e_l, {2: [5, 6, 7]}],\n '2,14': [sono_le, {2: [9, 10, 11]}],\n '3,15': [sono_le, {3: [1, 2, 3]}],\n '4,16': [sono_le, {6: [1, 2, 3, 4, 5, 6, 7]}],\n '5,17': [sono_le, {7: [1, 2, 3, 4, 5, 6]}],\n '6,18': [sono_le, {6: [9, 10, 11]}],\n '7,19': [sono_le, {5: [7, 8, 9, 10, 11]}],\n '8,20': [sono_le, {3: [4, 5, 6, 7]}],\n '9,21': [sono_le, {3: [8, 9, 10, 11]}],\n '10,22': [sono_le, {4: [1, 2, 3, 4, 5]}],\n '11,23': [sono_le, {4: [6, 7, 8, 9, 10, 11]}]\n },\n letters: [\n 'SONORLEBORE',\n 'ÈRL\\'UNASDUE',\n 'TREOTTONOVE',\n 'DIECIUNDICI',\n 'DODICISETTE',\n 'QUATTROCSEI',\n 'CINQUEAMENO',\n 'ECUNOQUARTO',\n 'VENTICINQUE',\n 'DIECIPMEZZA'\n ],\n minutes: {\n '5,6,7,8,9': [e, cinque],\n '10,11,12,13,14': [e, dieci],\n '15,16,17,18,19': [e, un_quarto],\n '20,21,22,23,24': [e, venti],\n '25,26,27,28,29': [e, venticinque],\n '30,31,32,33,34': [e, mezza],\n '35,36,37,38,39': [meno, venticinque],\n '40,41,42,43,44': [meno, venti],\n '45,46,47,48,49': [meno, un_quarto],\n '50,51,52,53,54': [meno, dieci],\n '55,56,57,58,59': [meno, cinque]\n },\n permanent: null,\n prettyName: 'Italiano',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_it);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst het_is: WordDefinition = {1: [1, 2, 3, 5, 6]};\nconst over1: WordDefinition = {3: [1, 2, 3, 4]};\nconst voor1: WordDefinition = {2: [8, 9, 10, 11]};\nconst over2: WordDefinition = {4: [8, 9, 10, 11]};\nconst voor2: WordDefinition = {5: [1, 2, 3, 4]};\nconst half: WordDefinition = {4: [1, 2, 3, 4]};\nconst vijf: WordDefinition = {1: [8, 9, 10, 11]};\nconst tien: WordDefinition = {2: [1, 2, 3, 4]};\nconst kwart: WordDefinition = {3: [7, 8, 9, 10, 11]};\nconst uur: WordDefinition = {10: [9, 10, 11]};\n\nexport const Layout_nl: Layout = {\n code: 'nl',\n getHour: (time: Date) => {\n const hour = time.getHours();\n if (time.getMinutes() >= 20) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n hours: {\n '0,12': {10: [1, 2, 3, 4, 5, 6]},\n '1,13': {5: [8, 9, 10]},\n '2,14': {6: [1, 2, 3, 4]},\n '3,15': {6: [8, 9, 10, 11]},\n '4,16': {7: [1, 2, 3, 4]},\n '5,17': {7: [5, 6, 7, 8]},\n '6,18': {7: [9, 10, 11]},\n '7,19': {8: [1, 2, 3, 4, 5]},\n '8,20': {9: [1, 2, 3, 4]},\n '9,21': {8: [7, 8, 9, 10, 11]},\n '10,22': {9: [5, 6, 7, 8]},\n '11,23': {9: [9, 10, 11]}\n },\n letters: [\n 'HETKISAVIJF',\n 'TIENBTZVOOR',\n 'OVERMEKWART',\n 'HALFSPWOVER',\n 'VOORTHGEENS',\n 'TWEEPVCDRIE',\n 'VIERVIJFZES',\n 'ZEVENONEGEN',\n 'ACHTTIENELF',\n 'TWAALFBFUUR'\n ],\n minutes: {\n '0,1,2,3,4': uur,\n '5,6,7,8,9': [vijf, over1],\n '10,11,12,13,14': [tien, over1],\n '15,16,17,18,19': [kwart, over2],\n '20,21,22,23,24': [tien, voor1, half],\n '25,26,27,28,29': [vijf, voor1, half],\n '30,31,32,33,34': half,\n '35,36,37,38,39': [vijf, over1, half],\n '40,41,42,43,44': [tien, over1, half],\n '45,46,47,48,49': [kwart, voor2],\n '50,51,52,53,54': [tien, voor1],\n '55,56,57,58,59': [vijf, voor1]\n },\n permanent: het_is,\n prettyName: 'Nederlands',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_nl);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst e_: WordDefinition = {1: [1]};\nconst sao: WordDefinition = {1: [2, 3, 4]};\nconst e1: WordDefinition = {7: [8]};\nconst e2: WordDefinition = {10: [5]};\nconst menos: WordDefinition = {7: [7, 8, 9, 10, 11]};\nconst meia: WordDefinition = {8: [8, 9, 10, 11]};\nconst cinco: WordDefinition = {10: [7, 8, 9, 10, 11]};\nconst dez: WordDefinition = {10: [1, 2, 3]};\nconst um_quarto: WordDefinition = {9: [1, 2, 4, 5, 6, 7, 8, 9]};\nconst vinte: WordDefinition = {8: [1, 2, 3, 4, 5]};\n\nexport const Layout_pt: Layout = {\n code: 'pt',\n getHour: (time: Date) => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n hours: {\n '0': [e_, {'6': [2, 3, 4, 5, 7, 8, 9, 10, 11]}],\n '12': [e_, {'2': [1, 2, 3, 4, 6, 7, 8]}],\n '1,13': [e_, {'1': [5, 6, 7]}],\n '2,14': [sao, {'3': [1, 2, 3, 4]}],\n '3,15': [sao, {'1': [8, 9, 10, 11]}],\n '4,16': [sao, {'4': [1, 2, 3, 4, 5, 6]}],\n '5,17': [sao, {'5': [1, 2, 3, 4, 5]}],\n '6,18': [sao, {'3': [4, 5, 6, 7]}],\n '7,19': [sao, {'3': [7, 8, 9, 10]}],\n '8,20': [sao, {'5': [5, 6, 7, 8]}],\n '9,21': [sao, {'4': [8, 9, 10, 11]}],\n '10,22': [sao, {'2': [9, 10, 11]}],\n '11,23': [sao, {'5': [8, 9, 10, 11]}]\n },\n letters: [\n 'ÉSÃOUMATRÊS',\n 'MEIOLDIADEZ',\n 'DUASEISETEY',\n 'QUATROHNOVE',\n 'CINCOITONZE',\n 'ZMEIALNOITE',\n 'HORASYMENOS',\n 'VINTECAMEIA',\n 'UMVQUARTOPM',\n 'DEZOEYCINCO'\n ],\n minutes: {\n '5,6,7,8,9': [e1, cinco],\n '10,11,12,13,14': [e1, dez],\n '15,16,17,18,19': [e1, um_quarto],\n '20,21,22,23,24': [e1, vinte],\n '25,26,27,28,29': [e1, vinte, e2, cinco],\n '30,31,32,33,34': [e1, meia],\n '35,36,37,38,39': [menos, vinte, e2, cinco],\n '40,41,42,43,44': [menos, vinte],\n '45,46,47,48,49': [menos, um_quarto],\n '50,51,52,53,54': [menos, dez],\n '55,56,57,58,59': [menos, cinco]\n },\n permanent: null,\n prettyName: 'Português',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_pt);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout} from './layout';\nimport {Theme} from './theme';\n\nexport class Globals {\n private static layouts: Layout[] = [];\n private static themes: Theme[] = [];\n\n static registerTheme(name: string, styleClass: string): void {\n if (Globals.themes.some(value => value.name === name)) {\n console.log(`Theme with name '${name}' already registered; ignoring register request for styleClass '${styleClass}'.`)\n } else {\n Globals.themes.push({\n name,\n styleClass\n });\n }\n }\n\n static hasThemes(): boolean {\n return Globals.themes.length > 0;\n }\n\n static hasMultipleThemes(): boolean {\n return Globals.themes.length > 1;\n }\n\n static getFirstTheme(): Theme {\n return Globals.getTheme(0);\n }\n\n static getTheme(index: number): Theme {\n return Globals.themes[index];\n }\n\n static getThemes(): Theme[] {\n return Globals.themes;\n }\n\n static registerLayout(layout: Layout): void {\n const available = !Globals.layouts.some(element => {\n if (layout.code === element.code) {\n if (layout.prettyName !== element.prettyName) {\n console.error(\n `Error: Language code '${layout.code}' cannot be registered for layout '${layout.prettyName}' because it is already registered for layout '${element.prettyName}'!`\n );\n }\n return true;\n }\n return false;\n }\n );\n if (available) {\n Globals.layouts.push(layout);\n Globals.layouts.sort((a, b) => a.prettyName.localeCompare(b.prettyName));\n }\n }\n\n static hasLayouts(): boolean {\n return Globals.layouts.length > 0;\n }\n\n static hasMultipleLayouts(): boolean {\n return Globals.layouts.length > 1;\n }\n\n static getFirstLayout(): Layout {\n return Globals.layouts[0];\n }\n\n static getLayouts(): Layout[] {\n return Globals.layouts;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Letter} from './letter';\n\nexport interface Layout {\n readonly code: string;\n getCoarseMinute?: (time: Date) => number;\n getDotMinute?: (time: Date) => number;\n getHour?: (time: Date) => number;\n getSeconds?: (time: Date) => number;\n readonly hours: TimeDefinition;\n readonly letters: string[];\n readonly minutes: TimeDefinition;\n parsed?: Letter[][];\n readonly permanent: WordDefinition | WordDefinition[];\n readonly prettyName: string;\n seconds?: TimeDefinition;\n readonly version: number;\n}\n\nexport interface WordDefinition {\n [line: number]: number[];\n}\n\nexport interface TimeDefinition {\n [values: string]: WordDefinition | WordDefinition[];\n}\n\nexport const EMPTY_LAYOUT: Layout = {\n code: null,\n hours: null,\n letters: [],\n minutes: null,\n permanent: [],\n prettyName: null,\n version: 2\n};\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport * as Cookies from 'js-cookie';\n\nexport class CookieHandler {\n constructor(private widgetId: string, private cookiePath?: string) {\n }\n\n getLayout(): string {\n const oldCookie = this.getCookie('uhr-language');\n if (!!oldCookie) {\n // aha, old cookie is set. migrate to new one!\n this.removeCookie('uhr-language');\n this.setLayout(oldCookie);\n }\n return this.getCookie('uhr-layout');\n }\n\n setLayout(layout: string): void {\n this.setCookie('uhr-layout', layout);\n }\n\n getMode(): string {\n return this.getCookie('uhr-mode');\n }\n\n setMode(mode: string): void {\n this.setCookie('uhr-mode', mode);\n }\n\n\n getStatus(): string {\n return this.getCookie('uhr-status');\n }\n\n setStatus(status: string): void {\n this.setCookie('uhr-status', status);\n }\n\n getTheme(): string {\n return this.getCookie('uhr-theme');\n }\n\n setTheme(theme: string): void {\n this.setCookie('uhr-theme', theme);\n }\n\n private getCookie(cookieName: string): string {\n return Cookies.get(cookieName + this.widgetId);\n }\n\n private setCookie(cookieName: string, cookieValue: string): void {\n let options;\n if (!!this.cookiePath) {\n options = {expires: 365, path: this.cookiePath};\n } else {\n options = {expires: 365};\n }\n Cookies.set(cookieName + this.widgetId, cookieValue, options);\n }\n\n private removeCookie(cookieName: string): void {\n if (!!this.cookiePath) {\n Cookies.remove(cookieName + this.widgetId, {path: this.cookiePath});\n } else {\n Cookies.remove(cookieName + this.widgetId);\n }\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\n/**\n * Ein Buchstabe. Hilfsklasse für den Renderer und Inhalt der Layout-Arrays.\n * @param value Der Buchstabe, der Dargestellt werden soll.\n * @param style Die CSS-Styleklassen des Buchstabens.\n */\nexport class Letter {\n private readonly value: string;\n private style: string = '';\n\n constructor(value: string, style?: string) {\n this.value = value;\n if (!!style) {\n this.style = style;\n }\n }\n\n addStyle(style: string): void {\n if (this.style === '') {\n this.style = style;\n } else {\n this.style += ` ${style}`;\n }\n };\n\n toString(): string {\n return `${this.value}`;\n };\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, TimeDefinition, WordDefinition} from './domain/layout';\nimport {Letter} from './domain/letter';\n\nclass LayoutRendererV2Delegate {\n private static readonly vorne0: WordDefinition = {\n 3: [2, 3, 4],\n 4: [1, 5],\n 5: [1, 4, 5],\n 6: [1, 3, 5],\n 7: [1, 2, 5],\n 8: [1, 5],\n 9: [2, 3, 4]\n };\n private static readonly hinten0: WordDefinition = {\n 3: [8, 9, 10],\n 4: [7, 11],\n 5: [7, 10, 11],\n 6: [7, 9, 11],\n 7: [7, 8, 11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly vorne1: WordDefinition = {\n 3: [3],\n 4: [2, 3],\n 5: [3],\n 6: [3],\n 7: [3],\n 8: [3],\n 9: [2, 3, 4]\n };\n private static readonly hinten1: WordDefinition = {\n 3: [9],\n 4: [8, 9],\n 5: [9],\n 6: [9],\n 7: [9],\n 8: [9],\n 9: [8, 9, 10]\n };\n private static readonly vorne2: WordDefinition = {\n 3: [2, 3, 4],\n 4: [1, 5],\n 5: [5],\n 6: [4],\n 7: [3],\n 8: [2],\n 9: [1, 2, 3, 4, 5]\n };\n private static readonly hinten2: WordDefinition = {\n 3: [8, 9, 10],\n 4: [7, 11],\n 5: [11],\n 6: [10],\n 7: [9],\n 8: [8],\n 9: [7, 8, 9, 10, 11]\n };\n private static readonly vorne3: WordDefinition = {\n 3: [1, 2, 3, 4, 5],\n 4: [4],\n 5: [3],\n 6: [4],\n 7: [5],\n 8: [1, 5],\n 9: [2, 3, 4]\n };\n private static readonly hinten3: WordDefinition = {\n 3: [7, 8, 9, 10, 11],\n 4: [10],\n 5: [9],\n 6: [10],\n 7: [11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly vorne4: WordDefinition = {\n 3: [4],\n 4: [3, 4],\n 5: [2, 4],\n 6: [1, 4],\n 7: [1, 2, 3, 4, 5],\n 8: [4],\n 9: [4]\n };\n private static readonly hinten4: WordDefinition = {\n 3: [10],\n 4: [9, 10],\n 5: [8, 10],\n 6: [7, 10],\n 7: [7, 8, 9, 10, 11],\n 8: [10],\n 9: [10]\n };\n private static readonly vorne5: WordDefinition = {\n 3: [1, 2, 3, 4, 5],\n 4: [1],\n 5: [1, 2, 3, 4],\n 6: [5],\n 7: [5],\n 8: [1, 5],\n 9: [2, 3, 4]\n };\n private static readonly hinten5: WordDefinition = {\n 3: [7, 8, 9, 10, 11],\n 4: [7],\n 5: [7, 8, 9, 10],\n 6: [11],\n 7: [11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly hinten6: WordDefinition = {\n 3: [9, 10],\n 4: [8],\n 5: [7],\n 6: [7, 8, 9, 10],\n 7: [7, 11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly hinten7: WordDefinition = {\n 3: [7, 8, 9, 10, 11],\n 4: [11],\n 5: [10],\n 6: [9],\n 7: [8],\n 8: [8],\n 9: [8]\n };\n private static readonly hinten8: WordDefinition = {\n 3: [8, 9, 10],\n 4: [7, 11],\n 5: [7, 11],\n 6: [8, 9, 10],\n 7: [7, 11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly hinten9: WordDefinition = {\n 3: [8, 9, 10],\n 4: [7, 11],\n 5: [7, 11],\n 6: [8, 9, 10, 11],\n 7: [11],\n 8: [10],\n 9: [8, 9]\n };\n private static readonly seconds: TimeDefinition = {\n '0': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten0],\n '1': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten1],\n '2': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten2],\n '3': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten3],\n '4': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten4],\n '5': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten5],\n '6': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten6],\n '7': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten7],\n '8': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten8],\n '9': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten9],\n '10': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten0],\n '11': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten1],\n '12': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten2],\n '13': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten3],\n '14': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten4],\n '15': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten5],\n '16': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten6],\n '17': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten7],\n '18': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten8],\n '19': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten9],\n '20': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten0],\n '21': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten1],\n '22': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten2],\n '23': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten3],\n '24': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten4],\n '25': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten5],\n '26': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten6],\n '27': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten7],\n '28': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten8],\n '29': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten9],\n '30': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten0],\n '31': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten1],\n '32': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten2],\n '33': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten3],\n '34': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten4],\n '35': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten5],\n '36': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten6],\n '37': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten7],\n '38': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten8],\n '39': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten9],\n '40': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten0],\n '41': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten1],\n '42': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten2],\n '43': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten3],\n '44': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten4],\n '45': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten5],\n '46': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten6],\n '47': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten7],\n '48': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten8],\n '49': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten9],\n '50': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten0],\n '51': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten1],\n '52': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten2],\n '53': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten3],\n '54': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten4],\n '55': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten5],\n '56': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten6],\n '57': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten7],\n '58': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten8],\n '59': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten9]\n };\n\n constructor(private layout: Layout) {\n }\n\n public parse(): Letter[][] {\n const letters: Letter[][] = [];\n this.layout.letters.forEach(lineString => {\n const line: Letter[] = [];\n for (let c = 0; c < lineString.length; c++) {\n line.push(new Letter(lineString[c]));\n }\n letters.push(line);\n });\n this.parseArrayOrObject(letters, 'on', this.layout.permanent);\n if (typeof this.layout.seconds !== 'undefined' && this.layout.seconds !== null) {\n this.parseTimeDefinition(letters, 'second', this.layout.seconds);\n } else {\n this.parseTimeDefinition(letters, 'second', LayoutRendererV2Delegate.seconds);\n }\n this.parseTimeDefinition(letters, 'minute', this.layout.minutes);\n this.parseTimeDefinition(letters, 'hour', this.layout.hours);\n return letters;\n };\n\n private parseObject(letters: Letter[][], styleClass: string, object: WordDefinition): void {\n if (typeof object !== 'undefined' && object !== null) {\n Object.keys(object)\n .map(key => Number(key))\n .forEach(\n y => object[y].forEach(\n x => letters[y - 1][x - 1].addStyle(styleClass)\n )\n );\n }\n }\n\n private parseArrayOrObject(letters: Letter[][], styleClass: string, input: WordDefinition | WordDefinition[]): void {\n if (typeof input !== 'undefined' && input !== null) {\n if (Array.isArray(input)) {\n input.forEach(item => this.parseObject(letters, styleClass, item));\n } else {\n this.parseObject(letters, styleClass, input);\n }\n }\n }\n\n private parseTimeDefinition(letters: Letter[][], styleClass: string, definition: TimeDefinition): void {\n if (typeof definition !== 'undefined' && definition !== null) {\n Object.keys(definition).forEach(listString => {\n const timeValues: string[] = listString.split(',');\n const highlightLetters: WordDefinition | WordDefinition[] = definition[listString];\n timeValues.forEach(timeValue => this.parseArrayOrObject(letters, styleClass + timeValue, highlightLetters));\n });\n }\n }\n}\n\n/**\n * Hilfsklasse zum Rendern der Buchstaben der Uhr.\n * @param layout Layout-Objekt, das gerendert werden soll.\n * @param renderarea Das jQuery-gewrappte HTML-Element, auf dem gerendert werden soll.\n */\nexport class LayoutRenderer {\n constructor(private layout: Layout, private renderarea: JQuery) {\n }\n\n render(beforeshow?: () => void): void {\n if (this.layout.parsed === undefined) {\n if (this.layout.version === 2) {\n const delegate: LayoutRendererV2Delegate = new LayoutRendererV2Delegate(this.layout);\n const parsedLayout: Letter[][] = delegate.parse();\n Object.defineProperty(this.layout, 'parsed', {\n value: parsedLayout,\n writable: false,\n configurable: false\n });\n } else {\n console.warn(`Unknown layout version: '${this.layout.version}', expecting '2'`);\n return;\n }\n }\n const letters: Letter[][] = this.layout.parsed;\n this.renderarea.fadeOut('fast', () => {\n this.renderarea.empty();\n letters.forEach((line, index, array) => {\n line.forEach(letter => this.renderarea.append(letter.toString()));\n if (index < array.length - 1) {\n this.renderarea.append('
');\n }\n });\n if (!!beforeshow) {\n beforeshow();\n }\n this.renderarea.fadeIn('fast');\n });\n };\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {CookieHandler} from './cookie-handler';\nimport {Globals} from './domain/globals';\nimport {Options} from './widget/options';\nimport {Uhr} from './uhr';\n\nexport class UhrRenderer {\n private cookieHandler: CookieHandler;\n\n constructor(\n private uhr: Uhr,\n private $element: JQuery,\n private options: Options,\n private id: string\n ) {\n this.cookieHandler = new CookieHandler(id, options.cookiePath);\n }\n\n public render(): void {\n this.setupHTML();\n this.wireFunctionality();\n }\n\n public setWidth(width: string): void {\n this.$element.css('width', width);\n const realWidth: number = this.$element.width();\n this.$element.width(realWidth);\n this.$element.height(realWidth);\n this.$element.css('font-size', (realWidth / 40) + 'px');\n }\n\n private setupHTML(): void {\n // Base clock area\n this.$element.addClass('uhr')\n .empty()\n .append('')\n .append('')\n .append('')\n .append('')\n .append('
')\n .append('
');\n\n this.setWidth(this.options.width);\n\n if (this.options.controls) {\n const controlpanel = $(`
`);\n const content = $('
');\n controlpanel.append(content);\n // on/off switch\n const toggleSwitch = $(`
`);\n toggleSwitch.append(``);\n toggleSwitch.append(``);\n content.append(toggleSwitch);\n\n // time mode switch\n const modeSwitch = $(`
`);\n modeSwitch.append(``);\n modeSwitch.append(``);\n content.append(modeSwitch);\n // language chooser\n if (Globals.hasMultipleLayouts()) {\n const languageChooser = $(``);\n Globals.getLayouts().forEach(layout => {\n languageChooser.append(``);\n });\n content.append(languageChooser);\n }\n\n // theme chooser\n if (Globals.hasMultipleThemes()) {\n const themeChooser = $(``);\n Globals.getThemes().forEach(theme => {\n themeChooser.append(``);\n });\n content.append(themeChooser);\n }\n const closebutton: JQuery = $(``);\n closebutton.on({click: () => $(`#uhr-controlpanel${this.id}`).hide('fast')});\n content.append(closebutton);\n this.$element.after(controlpanel);\n controlpanel.hide();\n const configlink: JQuery = $(``);\n configlink.on({click: () => this.toggleConfigScreen()});\n this.$element.after(configlink);\n }\n };\n\n private wireFunctionality(): void {\n // on/off switch\n const toggleSwitch: JQuery = $(`#uhr-onoffswitch-checkbox${this.id}`);\n toggleSwitch.on({click: () => this.uhr.toggle()});\n let status = this.cookieHandler.getStatus();\n if (status === undefined || this.options.force) {\n status = this.options.status;\n }\n toggleSwitch.prop('checked', status === 'on');\n if (status === 'on') {\n this.uhr.start();\n } else {\n this.uhr.stop();\n }\n\n // time mode switch\n const modeSwitch: JQuery = $(`#uhr-modeswitch-checkbox${this.id}`);\n modeSwitch.on({\n click: () => {\n if (this.options.mode === 'seconds') {\n this.uhr.setMode('normal');\n } else {\n this.uhr.setMode('seconds');\n }\n }\n });\n\n let mode = this.cookieHandler.getMode();\n if (mode === undefined || this.options.force) {\n mode = this.options.mode;\n }\n modeSwitch.prop('checked', mode !== 'seconds');\n if (mode === 'seconds') {\n this.uhr.setMode('seconds');\n } else {\n this.uhr.setMode('normal');\n }\n\n // language chooser\n const languageChooser: JQuery = $(`#uhr-languagechooser${this.id}`);\n languageChooser.on({\n change: () => {\n const languageKey = $(`#uhr-languagechooser${this.id}`).val() as string;\n this.uhr.setLayout(languageKey);\n }\n });\n let selectedLayout = this.cookieHandler.getLayout();\n if (selectedLayout === undefined || this.options.force) {\n selectedLayout = this.options.language;\n }\n let found = Globals.getLayouts().some(item => selectedLayout === item.code);\n if (!found) {\n let fallbackLanguage;\n if (Globals.hasLayouts()) {\n fallbackLanguage = Globals.getFirstLayout().code;\n } else {\n fallbackLanguage = '';\n }\n console.warn(`Language '${selectedLayout}' not found! Using fallback '${fallbackLanguage}'.`);\n selectedLayout = fallbackLanguage;\n }\n languageChooser.val(selectedLayout);\n this.options.language = '';\n this.uhr.setLayout(selectedLayout);\n\n // theme chooser\n const themeChooser: JQuery = $(`#uhr-themechooser${this.id}`);\n themeChooser.on({\n change: () => {\n const themeKey = $(`#uhr-themechooser${this.id}`).val() as string;\n this.uhr.setTheme(themeKey);\n }\n });\n let selectedTheme = this.cookieHandler.getTheme();\n if (selectedTheme === undefined || this.options.force) {\n selectedTheme = this.options.theme;\n }\n found = Globals.getThemes().some(item => selectedTheme === item.styleClass);\n if (!found) {\n const fallbackTheme = Globals.getFirstTheme().styleClass;\n console.warn(`Theme '${selectedTheme}' not found! Using fallback '${fallbackTheme}'.`);\n selectedTheme = fallbackTheme;\n }\n themeChooser.val(selectedTheme);\n this.options.theme = '';\n this.uhr.setTheme(selectedTheme);\n if (this.options.autoresize) {\n $(window).on({\n resize: () => {\n const $parent: JQuery = this.$element.parent();\n const $window: JQuery = $(window);\n const parentWidth: number = $parent.width();\n const parentHeight: number = $parent.height();\n const windowWidth: number = $window.width();\n const windowHeight: number = $window.height();\n const size: string = `${Math.min(parentWidth, parentHeight, windowWidth, windowHeight)}px`;\n this.setWidth(size);\n }\n });\n }\n }\n\n private toggleConfigScreen() {\n $(`#uhr-controlpanel${this.id}`).toggle('fast');\n };\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {EMPTY_LAYOUT, Layout} from './domain/layout';\nimport {CookieHandler} from './cookie-handler';\nimport {Globals} from './domain/globals';\nimport {LayoutRenderer} from './layout-renderer';\nimport {UhrRenderer} from './uhr-renderer';\nimport {WidgetPrototype} from './widget/widget-prototype';\n\nexport class Uhr {\n\n private timer: number = null;\n private currentMinute: number = null;\n private renderer: UhrRenderer;\n private cookieHandler: CookieHandler;\n\n constructor(private widgetInstance: WidgetPrototype) {\n const userTime = this.widgetInstance.options.time;\n if (this.widgetInstance.options.time === undefined) {\n this.widgetInstance.options.time = new Date();\n }\n this.cookieHandler = new CookieHandler(this.widgetInstance.uuid, this.widgetInstance.options.cookiePath);\n this.parseHash();\n this.renderer = new UhrRenderer(this, this.widgetInstance.element, this.widgetInstance.options, this.widgetInstance.uuid);\n this.renderer.render();\n if (userTime !== undefined) {\n this.setTime(userTime);\n }\n }\n\n destroy(): void {\n if (!!this.timer) {\n window.clearInterval(this.timer);\n this.timer = null;\n }\n this.widgetInstance.element\n .removeAttr('style')\n .removeAttr('class')\n .empty();\n $(`#uhr-configlink${this.widgetInstance.uuid}`).remove();\n $(`#uhr-controlpanel${this.widgetInstance.uuid}`).remove();\n }\n\n start(): void {\n if (!this.isOn()) {\n this.timer = window.setInterval(() => {\n this.widgetInstance.options.time = new Date();\n this.update();\n }, 1000);\n this.update();\n this.cookieHandler.setStatus('on')\n }\n }\n\n stop(): void {\n if (this.isOn()) {\n window.clearInterval(this.timer);\n this.timer = null;\n this.update();\n this.cookieHandler.setStatus('off');\n }\n }\n\n toggle(): void {\n if (this.isOn()) {\n this.stop();\n } else {\n this.start();\n }\n }\n\n setLayout(key: string): void {\n if (key !== this.widgetInstance.options.language) {\n this.widgetInstance.options.language = key;\n const renderer = new LayoutRenderer(this.getCurrentLayout(), this.widgetInstance.element.find('.letterarea'));\n renderer.render(() => {\n this.currentMinute = -1;\n this.update();\n });\n this.cookieHandler.setLayout(key);\n this.update();\n }\n }\n\n setTheme(styleClass: string): void {\n if (styleClass !== this.widgetInstance.options.theme) {\n this.widgetInstance.element.removeClass(this.widgetInstance.options.theme).addClass(styleClass);\n $(`#uhr-onoffswitch${this.widgetInstance.uuid}`).removeClass(this.widgetInstance.options.theme).addClass(styleClass);\n this.widgetInstance.options.theme = styleClass;\n this.cookieHandler.setTheme(styleClass);\n }\n }\n\n setTime(time: Date): void {\n this.currentMinute = null;\n if (time === null) {\n this.widgetInstance.options.time = new Date();\n } else {\n if (this.timer !== null) {\n window.clearInterval(this.timer);\n }\n this.widgetInstance.options.time = time;\n }\n this.update();\n }\n\n setMode(mode: string): void {\n this.widgetInstance.options.mode = mode;\n this.currentMinute = null;\n this.update();\n this.cookieHandler.setMode(mode);\n }\n\n setWidth(width: string): void {\n this.renderer.setWidth(width);\n }\n\n private isOn(): boolean {\n return this.timer !== null;\n }\n\n private update(): void {\n if (this.isOn()) {\n const time = this.widgetInstance.options.time;\n if (!this.getCurrentLayout().hasOwnProperty('seconds') && this.widgetInstance.options.mode !== 'seconds') {\n if (time.getMinutes() === this.currentMinute) {\n return;\n }\n this.currentMinute = time.getMinutes();\n }\n this.show(time);\n } else {\n this.clear();\n this.currentMinute = -1;\n }\n }\n\n private show(time: Date): void {\n const second = this.getSecond(time);\n const dotMinute = this.getDotMinute(time);\n const hour = this.getHour(time);\n const coarseMinute = this.getCoarseMinute(time);\n this.clear();\n if (this.widgetInstance.options.mode === 'seconds') {\n this.highlight(`second${second}`);\n } else {\n this.highlight('on');\n for (let i = 1; i <= dotMinute; i++) {\n this.highlight(`dot${i}`);\n }\n this.highlight(`minute${coarseMinute}`);\n this.highlight(`hour${hour}`);\n }\n }\n\n private clear(): void {\n this.widgetInstance.element.find('.item').removeClass('active');\n }\n\n private highlight(itemClass: string): void {\n this.widgetInstance.element.find(`.item.${itemClass}`).addClass('active');\n }\n\n private getSecond(time: Date): number {\n if (typeof this.getCurrentLayout().getSeconds === 'function') {\n return this.getCurrentLayout().getSeconds(time);\n }\n return time.getSeconds();\n };\n\n private getDotMinute(date: Date): number {\n if (typeof this.getCurrentLayout().getDotMinute === 'function') {\n return this.getCurrentLayout().getDotMinute(date);\n }\n return date.getMinutes() % 5;\n };\n\n private getCoarseMinute(date: Date): number {\n if (typeof this.getCurrentLayout().getCoarseMinute === 'function') {\n return this.getCurrentLayout().getCoarseMinute(date);\n }\n return date.getMinutes();\n };\n\n private getHour(date: Date): number {\n if (typeof this.getCurrentLayout().getHour === 'function') {\n return this.getCurrentLayout().getHour(date);\n }\n const hour = date.getHours();\n if (date.getMinutes() >= 25) {\n return (hour + 1) % 24;\n }\n return hour;\n };\n\n private parseHash(): void {\n let hash: string = window.location.hash;\n if (hash !== undefined && hash.charAt(0) === '#') {\n hash = hash.substring(1);\n hash = decodeURIComponent(hash);\n const params: string[] = hash.split('&');\n params.forEach(element => {\n const pair: string[] = element.split('=');\n const key = pair[0];\n const value = pair[1];\n switch (key) {\n case 'l':\n case 'language':\n this.widgetInstance.options.language = value;\n this.widgetInstance.options.force = true;\n break;\n case 't':\n case 'theme':\n this.widgetInstance.options.theme = value;\n this.widgetInstance.options.force = true;\n break;\n case 'm':\n case 'mode':\n this.widgetInstance.options.mode = value;\n this.widgetInstance.options.force = true;\n break;\n case 's':\n case 'status':\n this.widgetInstance.options.status = value;\n this.widgetInstance.options.force = true;\n break;\n }\n });\n }\n }\n\n private getCurrentLayout(): Layout {\n const matchingLanguages: Layout[] = Globals.getLayouts().filter(element => element.code === this.widgetInstance.options.language, this);\n if (matchingLanguages.length > 0) {\n return matchingLanguages[0];\n }\n // fallback: return empty object\n return EMPTY_LAYOUT;\n };\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport * as $ from 'jquery';\nimport {Globals} from './domain/globals';\n\nexport function autodetectThemes() {\n $('link[rel=stylesheet]').each((index, item) => {\n const styleSheet = $(item);\n const styleClass: string = styleSheet.attr('data-class');\n if (styleClass !== undefined) {\n let name: string = styleSheet.attr('data-name');\n if (name === undefined) {\n name = styleClass;\n }\n Globals.registerTheme(name, styleClass);\n }\n });\n\n // fall-back if no theme was included\n if (!Globals.hasThemes()) {\n Globals.registerTheme('', '');\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Globals} from './domain/globals';\nimport {Layout} from './domain/layout';\nimport {Uhr} from './uhr';\nimport {WidgetPrototype} from './widget/widget-prototype';\nimport {autodetectThemes} from './theme-autodetector';\n\n// First things first: discover included themes and register them\nautodetectThemes();\n\n$.widget('fritteli.uhr', {\n options: {\n width: '100%',\n status: 'on',\n language: 'de_CH',\n theme: Globals.getFirstTheme().styleClass,\n force: false,\n controls: true,\n cookiePath: undefined,\n autoresize: true,\n mode: 'normal'\n },\n start: function () {\n this.__fritteli_uhr_instance.start();\n },\n stop: function () {\n this.__fritteli_uhr_instance.stop();\n },\n toggle: function () {\n this.__fritteli_uhr_instance.toggle();\n },\n language: function (key: string) {\n this.__fritteli_uhr_instance.setLayout(key);\n },\n theme: function (styleClass: string) {\n this.__fritteli_uhr_instance.setTheme(styleClass);\n },\n time: function (time: Date) {\n this.__fritteli_uhr_instance.setTime(time);\n },\n mode: function (mode: string) {\n this.__fritteli_uhr_instance.setMode(mode);\n },\n width: function (width: string) {\n this.__fritteli_uhr_instance.setWidth(width);\n },\n // constructor method\n _create: function () {\n this.__fritteli_uhr_instance = new Uhr(this);\n },\n // destructor method\n _destroy: function () {\n this.__fritteli_uhr_instance.destroy();\n },\n __fritteli_uhr_instance: null\n} as WidgetPrototype);\n\n$.fritteli.uhr.register = Globals.registerLayout;\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n const widget: JQueryUI.Widget;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport * as uhr from './index';\nimport {Layout_de} from './layout/layout-de';\nimport {Layout_de_CH} from './layout/layout-de_ch';\nimport {Layout_de_CH_genau} from './layout/layout-de_ch_genau';\nimport {Layout_dk} from './layout/layout-dk';\nimport {Layout_en} from './layout/layout-en';\nimport {Layout_es} from './layout/layout-es';\nimport {Layout_fr} from './layout/layout-fr';\nimport {Layout_it} from './layout/layout-it';\nimport {Layout_nl} from './layout/layout-nl';\nimport {Layout_pt} from './layout/layout-pt';\n\n// We just need to reference all required files at least once, so that the tree-shaker won't remove them from\n// the bundle.\nlet a = uhr;\na = Layout_de_CH;\na = Layout_de_CH_genau;\na = Layout_de;\na = Layout_dk;\na = Layout_en;\na = Layout_es;\na = Layout_fr;\na = Layout_it;\na = Layout_nl;\na = Layout_pt;\n"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/lib/uhr.js b/dist/lib/uhr.js index b8594c6..a5bfe82 100644 --- a/dist/lib/uhr.js +++ b/dist/lib/uhr.js @@ -1,2 +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=Cookies},1:function(t,e){t.exports=jQuery},12:function(t,e,n){"use strict";n.r(e);var i=function(){function t(){}return t.registerTheme=function(e,n){t.themes.some(function(t){return t.name===e})?console.log("Theme with name '"+e+"' already registered; ignoring register request for styleClass '"+n+"'."):t.themes.push({name:e,styleClass:n})},t.hasThemes=function(){return t.themes.length>0},t.hasMultipleThemes=function(){return t.themes.length>1},t.getFirstTheme=function(){return t.getTheme(0)},t.getTheme=function(e){return t.themes[e]},t.getThemes=function(){return t.themes},t.registerLayout=function(e){!t.layouts.some(function(t){return e.code===t.code&&(e.prettyName!==t.prettyName&&console.error("Error: Language code '"+e.code+"' cannot be registered for layout '"+e.prettyName+"' because it is already registered for layout '"+t.prettyName+"'!"),!0)})&&(t.layouts.push(e),t.layouts.sort(function(t,e){return t.prettyName.localeCompare(e.prettyName)}))},t.hasLayouts=function(){return t.layouts.length>0},t.hasMultipleLayouts=function(){return t.layouts.length>1},t.getFirstLayout=function(){return t.layouts[0]},t.getLayouts=function(){return t.layouts},t.layouts=[],t.themes=[],t}(),o=n(0),s={code:null,hours:null,letters:[],minutes:null,permanent:[],prettyName:null,version:2},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}(),a=function(){function t(t){this.layout=t}return t.prototype.parse=function(){var e=[];return this.layout.letters.forEach(function(t){for(var n=[],i=0;i")}),t&&t(),e.renderarea.fadeIn("fast")})},t}(),u=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 h(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 o.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},o.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]:s},t}(),c=n(1);c("link[rel=stylesheet]").each(function(t,e){var n=c(e),o=n.attr("data-class");if(void 0!==o){var s=n.attr("data-name");void 0===s&&(s=o),i.registerTheme(s,o)}}),i.hasThemes()||i.registerTheme("",""),$.widget("fritteli.uhr",{options:{width:"100%",status:"on",language:"de_CH",theme:i.getFirstTheme().styleClass,force:!1,controls:!0,cookiePath:void 0,autoresize:!0,mode:"normal"},start:function(){this.__fritteli_uhr_instance.start()},stop:function(){this.__fritteli_uhr_instance.stop()},toggle:function(){this.__fritteli_uhr_instance.toggle()},language:function(t){this.__fritteli_uhr_instance.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 u(this)},_destroy:function(){this.__fritteli_uhr_instance.destroy()},__fritteli_uhr_instance:null}),$.fritteli.uhr.register=i.registerLayout}}); +!function(t){var e={};function n(i){if(e[i])return e[i].exports;var o=e[i]={i:i,l:!1,exports:{}};return t[i].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(i,o,function(e){return t[e]}.bind(null,o));return i},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=12)}({0:function(t,e){t.exports=Cookies},1:function(t,e){t.exports=jQuery},12:function(t,e,n){"use strict";n.r(e);var i=function(){function t(){}return t.registerTheme=function(e,n){t.themes.some(function(t){return t.name===e})?console.log("Theme with name '"+e+"' already registered; ignoring register request for styleClass '"+n+"'."):t.themes.push({name:e,styleClass:n})},t.hasThemes=function(){return t.themes.length>0},t.hasMultipleThemes=function(){return t.themes.length>1},t.getFirstTheme=function(){return t.getTheme(0)},t.getTheme=function(e){return t.themes[e]},t.getThemes=function(){return t.themes},t.registerLayout=function(e){!t.layouts.some(function(t){return e.code===t.code&&(e.prettyName!==t.prettyName&&console.error("Error: Language code '"+e.code+"' cannot be registered for layout '"+e.prettyName+"' because it is already registered for layout '"+t.prettyName+"'!"),!0)})&&(t.layouts.push(e),t.layouts.sort(function(t,e){return t.prettyName.localeCompare(e.prettyName)}))},t.hasLayouts=function(){return t.layouts.length>0},t.hasMultipleLayouts=function(){return t.layouts.length>1},t.getFirstLayout=function(){return t.layouts[0]},t.getLayouts=function(){return t.layouts},t.layouts=[],t.themes=[],t}(),o={code:null,hours:null,letters:[],minutes:null,permanent:[],prettyName:null,version:2},s=n(0),r=function(){function t(t,e){this.widgetId=t,this.cookiePath=e}return t.prototype.getLayout=function(){var t=this.getCookie("uhr-language");return t&&(this.removeCookie("uhr-language"),this.setLayout(t)),this.getCookie("uhr-layout")},t.prototype.setLayout=function(t){this.setCookie("uhr-layout",t)},t.prototype.getMode=function(){return this.getCookie("uhr-mode")},t.prototype.setMode=function(t){this.setCookie("uhr-mode",t)},t.prototype.getStatus=function(){return this.getCookie("uhr-status")},t.prototype.setStatus=function(t){this.setCookie("uhr-status",t)},t.prototype.getTheme=function(){return this.getCookie("uhr-theme")},t.prototype.setTheme=function(t){this.setCookie("uhr-theme",t)},t.prototype.getCookie=function(t){return s.get(t+this.widgetId)},t.prototype.setCookie=function(t,e){var n;n=this.cookiePath?{expires:365,path:this.cookiePath}:{expires:365},s.set(t+this.widgetId,e,n)},t.prototype.removeCookie=function(t){this.cookiePath?s.remove(t+this.widgetId,{path:this.cookiePath}):s.remove(t+this.widgetId)},t}(),h=function(){function t(t,e){this.style="",this.value=t,e&&(this.style=e)}return t.prototype.addStyle=function(t){""===this.style?this.style=t:this.style+=" "+t},t.prototype.toString=function(){return''+this.value+""},t}(),a=function(){function t(t){this.layout=t}return t.prototype.parse=function(){var e=[];return this.layout.letters.forEach(function(t){for(var n=[],i=0;i")}),t&&t(),e.renderarea.fadeIn("fast")})},t}(),c=function(){function t(t,e,n,i){this.uhr=t,this.$element=e,this.options=n,this.id=i,this.cookieHandler=new r(i,n.cookiePath)}return t.prototype.render=function(){this.setupHTML(),this.wireFunctionality()},t.prototype.setWidth=function(t){this.$element.css("width",t);var e=this.$element.width();this.$element.width(e),this.$element.height(e),this.$element.css("font-size",e/40+"px")},t.prototype.setupHTML=function(){var t=this;if(this.$element.addClass("uhr").empty().append('').append('').append('').append('').append('
').append('
'),this.setWidth(this.options.width),this.options.controls){var e=$('
'),n=$('
');e.append(n);var o=$('
');o.append(''),o.append(''),n.append(o);var s=$('
');if(s.append(''),s.append(''),n.append(s),i.hasMultipleLayouts()){var r=$('');i.getLayouts().forEach(function(t){r.append('")}),n.append(r)}if(i.hasMultipleThemes()){var h=$('');i.getThemes().forEach(function(t){h.append('")}),n.append(h)}var a=$('');a.on({click:function(){return $("#uhr-controlpanel"+t.id).hide("fast")}}),n.append(a),this.$element.after(e),e.hide();var u=$('');u.on({click:function(){return t.toggleConfigScreen()}}),this.$element.after(u)}},t.prototype.wireFunctionality=function(){var t=this,e=$("#uhr-onoffswitch-checkbox"+this.id);e.on({click:function(){return t.uhr.toggle()}});var n=this.cookieHandler.getStatus();(void 0===n||this.options.force)&&(n=this.options.status),e.prop("checked","on"===n),"on"===n?this.uhr.start():this.uhr.stop();var o=$("#uhr-modeswitch-checkbox"+this.id);o.on({click:function(){"seconds"===t.options.mode?t.uhr.setMode("normal"):t.uhr.setMode("seconds")}});var s=this.cookieHandler.getMode();(void 0===s||this.options.force)&&(s=this.options.mode),o.prop("checked","seconds"!==s),"seconds"===s?this.uhr.setMode("seconds"):this.uhr.setMode("normal");var r=$("#uhr-languagechooser"+this.id);r.on({change:function(){var e=$("#uhr-languagechooser"+t.id).val();t.uhr.setLayout(e)}});var h=this.cookieHandler.getLayout();(void 0===h||this.options.force)&&(h=this.options.language);var a=i.getLayouts().some(function(t){return h===t.code});if(!a){var u=void 0;u=i.hasLayouts()?i.getFirstLayout().code:"",console.warn("Language '"+h+"' not found! Using fallback '"+u+"'."),h=u}r.val(h),this.options.language="",this.uhr.setLayout(h);var c=$("#uhr-themechooser"+this.id);c.on({change:function(){var e=$("#uhr-themechooser"+t.id).val();t.uhr.setTheme(e)}});var l=this.cookieHandler.getTheme();if((void 0===l||this.options.force)&&(l=this.options.theme),!(a=i.getThemes().some(function(t){return l===t.styleClass}))){var d=i.getFirstTheme().styleClass;console.warn("Theme '"+l+"' not found! Using fallback '"+d+"'."),l=d}c.val(l),this.options.theme="",this.uhr.setTheme(l),this.options.autoresize&&$(window).on({resize:function(){var e=t.$element.parent(),n=$(window),i=e.width(),o=e.height(),s=n.width(),r=n.height(),h=Math.min(i,o,s,r)+"px";t.setWidth(h)}})},t.prototype.toggleConfigScreen=function(){$("#uhr-controlpanel"+this.id).toggle("fast")},t}(),l=function(){function t(t){this.widgetInstance=t,this.timer=null,this.currentMinute=null;var e=this.widgetInstance.options.time;void 0===this.widgetInstance.options.time&&(this.widgetInstance.options.time=new Date),this.cookieHandler=new r(this.widgetInstance.uuid,this.widgetInstance.options.cookiePath),this.parseHash(),this.renderer=new c(this,this.widgetInstance.element,this.widgetInstance.options,this.widgetInstance.uuid),this.renderer.render(),void 0!==e&&this.setTime(e)}return t.prototype.destroy=function(){this.timer&&(window.clearInterval(this.timer),this.timer=null),this.widgetInstance.element.removeAttr("style").removeAttr("class").empty(),$("#uhr-configlink"+this.widgetInstance.uuid).remove(),$("#uhr-controlpanel"+this.widgetInstance.uuid).remove()},t.prototype.start=function(){var t=this;this.isOn()||(this.timer=window.setInterval(function(){t.widgetInstance.options.time=new Date,t.update()},1e3),this.update(),this.cookieHandler.setStatus("on"))},t.prototype.stop=function(){this.isOn()&&(window.clearInterval(this.timer),this.timer=null,this.update(),this.cookieHandler.setStatus("off"))},t.prototype.toggle=function(){this.isOn()?this.stop():this.start()},t.prototype.setLayout=function(t){var e=this;t!==this.widgetInstance.options.language&&(this.widgetInstance.options.language=t,new u(this.getCurrentLayout(),this.widgetInstance.element.find(".letterarea")).render(function(){e.currentMinute=-1,e.update()}),this.cookieHandler.setLayout(t),this.update())},t.prototype.setTheme=function(t){t!==this.widgetInstance.options.theme&&(this.widgetInstance.element.removeClass(this.widgetInstance.options.theme).addClass(t),$("#uhr-onoffswitch"+this.widgetInstance.uuid).removeClass(this.widgetInstance.options.theme).addClass(t),this.widgetInstance.options.theme=t,this.cookieHandler.setTheme(t))},t.prototype.setTime=function(t){this.currentMinute=null,null===t?this.widgetInstance.options.time=new Date:(null!==this.timer&&window.clearInterval(this.timer),this.widgetInstance.options.time=t),this.update()},t.prototype.setMode=function(t){this.widgetInstance.options.mode=t,this.currentMinute=null,this.update(),this.cookieHandler.setMode(t)},t.prototype.setWidth=function(t){this.renderer.setWidth(t)},t.prototype.isOn=function(){return null!==this.timer},t.prototype.update=function(){if(this.isOn()){var t=this.widgetInstance.options.time;if(!this.getCurrentLayout().hasOwnProperty("seconds")&&"seconds"!==this.widgetInstance.options.mode){if(t.getMinutes()===this.currentMinute)return;this.currentMinute=t.getMinutes()}this.show(t)}else this.clear(),this.currentMinute=-1},t.prototype.show=function(t){var e=this.getSecond(t),n=this.getDotMinute(t),i=this.getHour(t),o=this.getCoarseMinute(t);if(this.clear(),"seconds"===this.widgetInstance.options.mode)this.highlight("second"+e);else{this.highlight("on");for(var s=1;s<=n;s++)this.highlight("dot"+s);this.highlight("minute"+o),this.highlight("hour"+i)}},t.prototype.clear=function(){this.widgetInstance.element.find(".item").removeClass("active")},t.prototype.highlight=function(t){this.widgetInstance.element.find(".item."+t).addClass("active")},t.prototype.getSecond=function(t){return"function"==typeof this.getCurrentLayout().getSeconds?this.getCurrentLayout().getSeconds(t):t.getSeconds()},t.prototype.getDotMinute=function(t){return"function"==typeof this.getCurrentLayout().getDotMinute?this.getCurrentLayout().getDotMinute(t):t.getMinutes()%5},t.prototype.getCoarseMinute=function(t){return"function"==typeof this.getCurrentLayout().getCoarseMinute?this.getCurrentLayout().getCoarseMinute(t):t.getMinutes()},t.prototype.getHour=function(t){if("function"==typeof this.getCurrentLayout().getHour)return this.getCurrentLayout().getHour(t);var e=t.getHours();return t.getMinutes()>=25?(e+1)%24:e},t.prototype.parseHash=function(){var t=this,e=window.location.hash;void 0!==e&&"#"===e.charAt(0)&&(e=e.substring(1),(e=decodeURIComponent(e)).split("&").forEach(function(e){var n=e.split("="),i=n[0],o=n[1];switch(i){case"l":case"language":t.widgetInstance.options.language=o,t.widgetInstance.options.force=!0;break;case"t":case"theme":t.widgetInstance.options.theme=o,t.widgetInstance.options.force=!0;break;case"m":case"mode":t.widgetInstance.options.mode=o,t.widgetInstance.options.force=!0;break;case"s":case"status":t.widgetInstance.options.status=o,t.widgetInstance.options.force=!0}}))},t.prototype.getCurrentLayout=function(){var t=this,e=i.getLayouts().filter(function(e){return e.code===t.widgetInstance.options.language},this);return e.length>0?e[0]:o},t}(),d=n(1);d("link[rel=stylesheet]").each(function(t,e){var n=d(e),o=n.attr("data-class");if(void 0!==o){var s=n.attr("data-name");void 0===s&&(s=o),i.registerTheme(s,o)}}),i.hasThemes()||i.registerTheme("",""),$.widget("fritteli.uhr",{options:{width:"100%",status:"on",language:"de_CH",theme:i.getFirstTheme().styleClass,force:!1,controls:!0,cookiePath:void 0,autoresize:!0,mode:"normal"},start:function(){this.__fritteli_uhr_instance.start()},stop:function(){this.__fritteli_uhr_instance.stop()},toggle:function(){this.__fritteli_uhr_instance.toggle()},language:function(t){this.__fritteli_uhr_instance.setLayout(t)},theme:function(t){this.__fritteli_uhr_instance.setTheme(t)},time:function(t){this.__fritteli_uhr_instance.setTime(t)},mode:function(t){this.__fritteli_uhr_instance.setMode(t)},width:function(t){this.__fritteli_uhr_instance.setWidth(t)},_create:function(){this.__fritteli_uhr_instance=new l(this)},_destroy:function(){this.__fritteli_uhr_instance.destroy()},__fritteli_uhr_instance:null}),$.fritteli.uhr.register=i.registerLayout}}); //# sourceMappingURL=uhr.js.map \ No newline at end of file diff --git a/dist/lib/uhr.js.map b/dist/lib/uhr.js.map index 06e78e9..6806391 100644 --- a/dist/lib/uhr.js.map +++ b/dist/lib/uhr.js.map @@ -1 +1 @@ -{"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":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///external \"Cookies\"","webpack:///external \"jQuery\"","webpack:///./src/domain/globals.ts","webpack:///./src/domain/layout.ts","webpack:///./src/cookie-handler.ts","webpack:///./src/domain/letter.ts","webpack:///./src/layout-renderer.ts","webpack:///./src/uhr-renderer.ts","webpack:///./src/uhr.ts","webpack:///./src/theme-autodetector.ts","webpack:///./src/index.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","Cookies","jQuery","Globals","registerTheme","styleClass","themes","some","console","log","push","hasThemes","length","hasMultipleThemes","getFirstTheme","getTheme","index","getThemes","registerLayout","layout","layouts","element","code","prettyName","error","sort","a","b","localeCompare","hasLayouts","hasMultipleLayouts","getFirstLayout","getLayouts","EMPTY_LAYOUT","hours","letters","minutes","permanent","version","cookie_handler_CookieHandler","CookieHandler","widgetId","cookiePath","this","getLayout","oldCookie","getCookie","removeCookie","setLayout","setCookie","getMode","setMode","getStatus","setStatus","status","setTheme","theme","cookieName","external_Cookies_","cookieValue","options","expires","path","Letter","style","addStyle","toString","layout_renderer_LayoutRendererV2Delegate","LayoutRendererV2Delegate","parse","forEach","lineString","line","parseArrayOrObject","seconds","parseTimeDefinition","parseObject","keys","map","Number","y","x","input","_this","Array","isArray","item","definition","listString","timeValues","split","highlightLetters","timeValue","vorne0","3","4","5","6","7","8","9","hinten0","vorne1","hinten1","vorne2","hinten2","vorne3","hinten3","vorne4","hinten4","vorne5","hinten5","hinten6","hinten7","hinten8","hinten9","0","1","2","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59","LayoutRenderer","renderarea","render","beforeshow","undefined","parsed","warn","parsedLayout","writable","configurable","fadeOut","empty","array","letter","append","fadeIn","uhr_renderer_UhrRenderer","UhrRenderer","uhr","$element","id","cookieHandler","setupHTML","wireFunctionality","setWidth","width","css","realWidth","height","addClass","controls","controlpanel","$","content","toggleSwitch","modeSwitch","languageChooser_1","themeChooser_1","closebutton","on","click","hide","after","configlink","toggleConfigScreen","toggle","force","prop","start","stop","languageChooser","change","languageKey","val","selectedLayout","language","found","fallbackLanguage","themeChooser","themeKey","selectedTheme","fallbackTheme","autoresize","window","resize","$parent","parent","$window","parentWidth","parentHeight","windowWidth","windowHeight","size","Math","min","uhr_Uhr","Uhr","widgetInstance","timer","currentMinute","userTime","time","Date","uuid","parseHash","renderer","setTime","destroy","clearInterval","removeAttr","remove","isOn","setInterval","update","getCurrentLayout","find","removeClass","getMinutes","show","clear","second","getSecond","dotMinute","getDotMinute","hour","getHour","coarseMinute","getCoarseMinute","highlight","itemClass","getSeconds","date","getHours","hash","location","charAt","substring","decodeURIComponent","pair","matchingLanguages","filter","external_jQuery_","each","styleSheet","attr","name_1","widget","__fritteli_uhr_instance","_create","_destroy","fritteli","register"],"mappings":"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","file":"lib/uhr.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 12);\n","module.exports = Cookies;","module.exports = jQuery;","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout} from './layout';\nimport {Theme} from './theme';\n\nexport class Globals {\n private static layouts: Layout[] = [];\n private static themes: Theme[] = [];\n\n static registerTheme(name: string, styleClass: string): void {\n if (Globals.themes.some(value => value.name === name)) {\n console.log(`Theme with name '${name}' already registered; ignoring register request for styleClass '${styleClass}'.`)\n } else {\n Globals.themes.push({\n name,\n styleClass\n });\n }\n }\n\n static hasThemes(): boolean {\n return Globals.themes.length > 0;\n }\n\n static hasMultipleThemes(): boolean {\n return Globals.themes.length > 1;\n }\n\n static getFirstTheme(): Theme {\n return Globals.getTheme(0);\n }\n\n static getTheme(index: number): Theme {\n return Globals.themes[index];\n }\n\n static getThemes(): Theme[] {\n return Globals.themes;\n }\n\n static registerLayout(layout: Layout): void {\n const available = !Globals.layouts.some(element => {\n if (layout.code === element.code) {\n if (layout.prettyName !== element.prettyName) {\n console.error(\n `Error: Language code '${layout.code}' cannot be registered for layout '${layout.prettyName}' because it is already registered for layout '${element.prettyName}'!`\n );\n }\n return true;\n }\n return false;\n }\n );\n if (available) {\n Globals.layouts.push(layout);\n Globals.layouts.sort((a, b) => a.prettyName.localeCompare(b.prettyName));\n }\n }\n\n static hasLayouts(): boolean {\n return Globals.layouts.length > 0;\n }\n\n static hasMultipleLayouts(): boolean {\n return Globals.layouts.length > 1;\n }\n\n static getFirstLayout(): Layout {\n return Globals.layouts[0];\n }\n\n static getLayouts(): Layout[] {\n return Globals.layouts;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Letter} from './letter';\n\nexport interface Layout {\n readonly code: string;\n getCoarseMinute?: (time: Date) => number;\n getDotMinute?: (time: Date) => number;\n getHour?: (time: Date) => number;\n getSeconds?: (time: Date) => number;\n readonly hours: TimeDefinition;\n readonly letters: string[];\n readonly minutes: TimeDefinition;\n parsed?: Letter[][];\n readonly permanent: WordDefinition | WordDefinition[];\n readonly prettyName: string;\n seconds?: TimeDefinition;\n readonly version: number;\n}\n\nexport interface WordDefinition {\n [line: number]: number[];\n}\n\nexport interface TimeDefinition {\n [values: string]: WordDefinition | WordDefinition[];\n}\n\nexport const EMPTY_LAYOUT: Layout = {\n code: null,\n hours: null,\n letters: [],\n minutes: null,\n permanent: [],\n prettyName: null,\n version: 2\n};\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport * as Cookies from 'js-cookie';\n\nexport class CookieHandler {\n constructor(private widgetId: string, private cookiePath?: string) {\n }\n\n getLayout(): string {\n const oldCookie = this.getCookie('uhr-language');\n if (!!oldCookie) {\n // aha, old cookie is set. migrate to new one!\n this.removeCookie('uhr-language');\n this.setLayout(oldCookie);\n }\n return this.getCookie('uhr-layout');\n }\n\n setLayout(layout: string): void {\n this.setCookie('uhr-layout', layout);\n }\n\n getMode(): string {\n return this.getCookie('uhr-mode');\n }\n\n setMode(mode: string): void {\n this.setCookie('uhr-mode', mode);\n }\n\n\n getStatus(): string {\n return this.getCookie('uhr-status');\n }\n\n setStatus(status: string): void {\n this.setCookie('uhr-status', status);\n }\n\n getTheme(): string {\n return this.getCookie('uhr-theme');\n }\n\n setTheme(theme: string): void {\n this.setCookie('uhr-theme', theme);\n }\n\n private getCookie(cookieName: string): string {\n return Cookies.get(cookieName + this.widgetId);\n }\n\n private setCookie(cookieName: string, cookieValue: string): void {\n let options;\n if (!!this.cookiePath) {\n options = {expires: 365, path: this.cookiePath};\n } else {\n options = {expires: 365};\n }\n Cookies.set(cookieName + this.widgetId, cookieValue, options);\n }\n\n private removeCookie(cookieName: string): void {\n if (!!this.cookiePath) {\n Cookies.remove(cookieName + this.widgetId, {path: this.cookiePath});\n } else {\n Cookies.remove(cookieName + this.widgetId);\n }\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\n/**\n * Ein Buchstabe. Hilfsklasse für den Renderer und Inhalt der Layout-Arrays.\n * @param value Der Buchstabe, der Dargestellt werden soll.\n * @param style Die CSS-Styleklassen des Buchstabens.\n */\nexport class Letter {\n private readonly value: string;\n private style: string = '';\n\n constructor(value: string, style?: string) {\n this.value = value;\n if (!!style) {\n this.style = style;\n }\n }\n\n addStyle(style: string): void {\n if (this.style === '') {\n this.style = style;\n } else {\n this.style += ` ${style}`;\n }\n };\n\n toString(): string {\n return `${this.value}`;\n };\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, TimeDefinition, WordDefinition} from './domain/layout';\nimport {Letter} from './domain/letter';\n\nclass LayoutRendererV2Delegate {\n private static readonly vorne0: WordDefinition = {\n 3: [2, 3, 4],\n 4: [1, 5],\n 5: [1, 4, 5],\n 6: [1, 3, 5],\n 7: [1, 2, 5],\n 8: [1, 5],\n 9: [2, 3, 4]\n };\n private static readonly hinten0: WordDefinition = {\n 3: [8, 9, 10],\n 4: [7, 11],\n 5: [7, 10, 11],\n 6: [7, 9, 11],\n 7: [7, 8, 11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly vorne1: WordDefinition = {\n 3: [3],\n 4: [2, 3],\n 5: [3],\n 6: [3],\n 7: [3],\n 8: [3],\n 9: [2, 3, 4]\n };\n private static readonly hinten1: WordDefinition = {\n 3: [9],\n 4: [8, 9],\n 5: [9],\n 6: [9],\n 7: [9],\n 8: [9],\n 9: [8, 9, 10]\n };\n private static readonly vorne2: WordDefinition = {\n 3: [2, 3, 4],\n 4: [1, 5],\n 5: [5],\n 6: [4],\n 7: [3],\n 8: [2],\n 9: [1, 2, 3, 4, 5]\n };\n private static readonly hinten2: WordDefinition = {\n 3: [8, 9, 10],\n 4: [7, 11],\n 5: [11],\n 6: [10],\n 7: [9],\n 8: [8],\n 9: [7, 8, 9, 10, 11]\n };\n private static readonly vorne3: WordDefinition = {\n 3: [1, 2, 3, 4, 5],\n 4: [4],\n 5: [3],\n 6: [4],\n 7: [5],\n 8: [1, 5],\n 9: [2, 3, 4]\n };\n private static readonly hinten3: WordDefinition = {\n 3: [7, 8, 9, 10, 11],\n 4: [10],\n 5: [9],\n 6: [10],\n 7: [11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly vorne4: WordDefinition = {\n 3: [4],\n 4: [3, 4],\n 5: [2, 4],\n 6: [1, 4],\n 7: [1, 2, 3, 4, 5],\n 8: [4],\n 9: [4]\n };\n private static readonly hinten4: WordDefinition = {\n 3: [10],\n 4: [9, 10],\n 5: [8, 10],\n 6: [7, 10],\n 7: [7, 8, 9, 10, 11],\n 8: [10],\n 9: [10]\n };\n private static readonly vorne5: WordDefinition = {\n 3: [1, 2, 3, 4, 5],\n 4: [1],\n 5: [1, 2, 3, 4],\n 6: [5],\n 7: [5],\n 8: [1, 5],\n 9: [2, 3, 4]\n };\n private static readonly hinten5: WordDefinition = {\n 3: [7, 8, 9, 10, 11],\n 4: [7],\n 5: [7, 8, 9, 10],\n 6: [11],\n 7: [11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly hinten6: WordDefinition = {\n 3: [9, 10],\n 4: [8],\n 5: [7],\n 6: [7, 8, 9, 10],\n 7: [7, 11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly hinten7: WordDefinition = {\n 3: [7, 8, 9, 10, 11],\n 4: [11],\n 5: [10],\n 6: [9],\n 7: [8],\n 8: [8],\n 9: [8]\n };\n private static readonly hinten8: WordDefinition = {\n 3: [8, 9, 10],\n 4: [7, 11],\n 5: [7, 11],\n 6: [8, 9, 10],\n 7: [7, 11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly hinten9: WordDefinition = {\n 3: [8, 9, 10],\n 4: [7, 11],\n 5: [7, 11],\n 6: [8, 9, 10, 11],\n 7: [11],\n 8: [10],\n 9: [8, 9]\n };\n private static readonly seconds: TimeDefinition = {\n '0': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten0],\n '1': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten1],\n '2': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten2],\n '3': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten3],\n '4': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten4],\n '5': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten5],\n '6': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten6],\n '7': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten7],\n '8': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten8],\n '9': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten9],\n '10': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten0],\n '11': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten1],\n '12': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten2],\n '13': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten3],\n '14': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten4],\n '15': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten5],\n '16': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten6],\n '17': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten7],\n '18': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten8],\n '19': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten9],\n '20': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten0],\n '21': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten1],\n '22': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten2],\n '23': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten3],\n '24': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten4],\n '25': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten5],\n '26': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten6],\n '27': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten7],\n '28': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten8],\n '29': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten9],\n '30': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten0],\n '31': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten1],\n '32': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten2],\n '33': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten3],\n '34': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten4],\n '35': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten5],\n '36': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten6],\n '37': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten7],\n '38': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten8],\n '39': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten9],\n '40': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten0],\n '41': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten1],\n '42': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten2],\n '43': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten3],\n '44': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten4],\n '45': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten5],\n '46': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten6],\n '47': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten7],\n '48': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten8],\n '49': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten9],\n '50': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten0],\n '51': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten1],\n '52': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten2],\n '53': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten3],\n '54': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten4],\n '55': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten5],\n '56': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten6],\n '57': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten7],\n '58': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten8],\n '59': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten9]\n };\n\n constructor(private layout: Layout) {\n }\n\n public parse(): Letter[][] {\n const letters: Letter[][] = [];\n this.layout.letters.forEach(lineString => {\n const line: Letter[] = [];\n for (let c = 0; c < lineString.length; c++) {\n line.push(new Letter(lineString[c]));\n }\n letters.push(line);\n });\n this.parseArrayOrObject(letters, 'on', this.layout.permanent);\n if (typeof this.layout.seconds !== 'undefined' && this.layout.seconds !== null) {\n this.parseTimeDefinition(letters, 'second', this.layout.seconds);\n } else {\n this.parseTimeDefinition(letters, 'second', LayoutRendererV2Delegate.seconds);\n }\n this.parseTimeDefinition(letters, 'minute', this.layout.minutes);\n this.parseTimeDefinition(letters, 'hour', this.layout.hours);\n return letters;\n };\n\n private parseObject(letters: Letter[][], styleClass: string, object: WordDefinition): void {\n if (typeof object !== 'undefined' && object !== null) {\n Object.keys(object)\n .map(key => Number(key))\n .forEach(\n y => object[y].forEach(\n x => letters[y - 1][x - 1].addStyle(styleClass)\n )\n );\n }\n }\n\n private parseArrayOrObject(letters: Letter[][], styleClass: string, input: WordDefinition | WordDefinition[]): void {\n if (typeof input !== 'undefined' && input !== null) {\n if (Array.isArray(input)) {\n input.forEach(item => this.parseObject(letters, styleClass, item));\n } else {\n this.parseObject(letters, styleClass, input);\n }\n }\n }\n\n private parseTimeDefinition(letters: Letter[][], styleClass: string, definition: TimeDefinition): void {\n if (typeof definition !== 'undefined' && definition !== null) {\n Object.keys(definition).forEach(listString => {\n const timeValues: string[] = listString.split(',');\n const highlightLetters: WordDefinition | WordDefinition[] = definition[listString];\n timeValues.forEach(timeValue => this.parseArrayOrObject(letters, styleClass + timeValue, highlightLetters));\n });\n }\n }\n}\n\n/**\n * Hilfsklasse zum Rendern der Buchstaben der Uhr.\n * @param layout Layout-Objekt, das gerendert werden soll.\n * @param renderarea Das jQuery-gewrappte HTML-Element, auf dem gerendert werden soll.\n */\nexport class LayoutRenderer {\n constructor(private layout: Layout, private renderarea: JQuery) {\n }\n\n render(beforeshow?: () => void): void {\n if (this.layout.parsed === undefined) {\n if (this.layout.version === 2) {\n const delegate: LayoutRendererV2Delegate = new LayoutRendererV2Delegate(this.layout);\n const parsedLayout: Letter[][] = delegate.parse();\n Object.defineProperty(this.layout, 'parsed', {\n value: parsedLayout,\n writable: false,\n configurable: false\n });\n } else {\n console.warn(`Unknown layout version: '${this.layout.version}', expecting '2'`);\n return;\n }\n }\n const letters: Letter[][] = this.layout.parsed;\n this.renderarea.fadeOut('fast', () => {\n this.renderarea.empty();\n letters.forEach((line, index, array) => {\n line.forEach(letter => this.renderarea.append(letter.toString()));\n if (index < array.length - 1) {\n this.renderarea.append('
');\n }\n });\n if (!!beforeshow) {\n beforeshow();\n }\n this.renderarea.fadeIn('fast');\n });\n };\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {CookieHandler} from './cookie-handler';\nimport {Globals} from './domain/globals';\nimport {Options} from './widget/options';\nimport {Uhr} from './uhr';\n\nexport class UhrRenderer {\n private cookieHandler: CookieHandler;\n\n constructor(\n private uhr: Uhr,\n private $element: JQuery,\n private options: Options,\n private id: string\n ) {\n this.cookieHandler = new CookieHandler(id, options.cookiePath);\n }\n\n public render(): void {\n this.setupHTML();\n this.wireFunctionality();\n }\n\n public setWidth(width: string): void {\n this.$element.css('width', width);\n const realWidth: number = this.$element.width();\n this.$element.width(realWidth);\n this.$element.height(realWidth);\n this.$element.css('font-size', (realWidth / 40) + 'px');\n }\n\n private setupHTML(): void {\n // Base clock area\n this.$element.addClass('uhr')\n .empty()\n .append('')\n .append('')\n .append('')\n .append('')\n .append('
')\n .append('
');\n\n this.setWidth(this.options.width);\n\n if (this.options.controls) {\n const controlpanel = $(`
`);\n const content = $('
');\n controlpanel.append(content);\n // on/off switch\n const toggleSwitch = $(`
`);\n toggleSwitch.append(``);\n toggleSwitch.append(``);\n content.append(toggleSwitch);\n\n // time mode switch\n const modeSwitch = $(`
`);\n modeSwitch.append(``);\n modeSwitch.append(``);\n content.append(modeSwitch);\n // language chooser\n if (Globals.hasMultipleLayouts()) {\n const languageChooser = $(``);\n Globals.getLayouts().forEach(layout => {\n languageChooser.append(``);\n });\n content.append(languageChooser);\n }\n\n // theme chooser\n if (Globals.hasMultipleThemes()) {\n const themeChooser = $(``);\n Globals.getThemes().forEach(theme => {\n themeChooser.append(``);\n });\n content.append(themeChooser);\n }\n const closebutton: JQuery = $(``);\n closebutton.on({click: () => $(`#uhr-controlpanel${this.id}`).hide('fast')});\n content.append(closebutton);\n this.$element.after(controlpanel);\n controlpanel.hide();\n const configlink: JQuery = $(``);\n configlink.on({click: () => this.toggleConfigScreen()});\n this.$element.after(configlink);\n }\n };\n\n private wireFunctionality(): void {\n // on/off switch\n const toggleSwitch: JQuery = $(`#uhr-onoffswitch-checkbox${this.id}`);\n toggleSwitch.on({click: () => this.uhr.toggle()});\n let status = this.cookieHandler.getStatus();\n if (status === undefined || this.options.force) {\n status = this.options.status;\n }\n toggleSwitch.prop('checked', status === 'on');\n if (status === 'on') {\n this.uhr.start();\n } else {\n this.uhr.stop();\n }\n\n // time mode switch\n const modeSwitch: JQuery = $(`#uhr-modeswitch-checkbox${this.id}`);\n modeSwitch.on({\n click: () => {\n if (this.options.mode === 'seconds') {\n this.uhr.setMode('normal');\n } else {\n this.uhr.setMode('seconds');\n }\n }\n });\n\n let mode = this.cookieHandler.getMode();\n if (mode === undefined || this.options.force) {\n mode = this.options.mode;\n }\n modeSwitch.prop('checked', mode !== 'seconds');\n if (mode === 'seconds') {\n this.uhr.setMode('seconds');\n } else {\n this.uhr.setMode('normal');\n }\n\n // language chooser\n const languageChooser: JQuery = $(`#uhr-languagechooser${this.id}`);\n languageChooser.on({\n change: () => {\n const languageKey = $(`#uhr-languagechooser${this.id}`).val() as string;\n this.uhr.setLayout(languageKey);\n }\n });\n let selectedLayout = this.cookieHandler.getLayout();\n if (selectedLayout === undefined || this.options.force) {\n selectedLayout = this.options.language;\n }\n let found = Globals.getLayouts().some(item => selectedLayout === item.code);\n if (!found) {\n let fallbackLanguage;\n if (Globals.hasLayouts()) {\n fallbackLanguage = Globals.getFirstLayout().code;\n } else {\n fallbackLanguage = '';\n }\n console.warn(`Language '${selectedLayout}' not found! Using fallback '${fallbackLanguage}'.`);\n selectedLayout = fallbackLanguage;\n }\n languageChooser.val(selectedLayout);\n this.options.language = '';\n this.uhr.setLayout(selectedLayout);\n\n // theme chooser\n const themeChooser: JQuery = $(`#uhr-themechooser${this.id}`);\n themeChooser.on({\n change: () => {\n const themeKey = $(`#uhr-themechooser${this.id}`).val() as string;\n this.uhr.setTheme(themeKey);\n }\n });\n let selectedTheme = this.cookieHandler.getTheme();\n if (selectedTheme === undefined || this.options.force) {\n selectedTheme = this.options.theme;\n }\n found = Globals.getThemes().some(item => selectedTheme === item.styleClass);\n if (!found) {\n const fallbackTheme = Globals.getFirstTheme().styleClass;\n console.warn(`Theme '${selectedTheme}' not found! Using fallback '${fallbackTheme}'.`);\n selectedTheme = fallbackTheme;\n }\n themeChooser.val(selectedTheme);\n this.options.theme = '';\n this.uhr.setTheme(selectedTheme);\n if (this.options.autoresize) {\n $(window).on({\n resize: () => {\n const $parent: JQuery = this.$element.parent();\n const $window: JQuery = $(window);\n const parentWidth: number = $parent.width();\n const parentHeight: number = $parent.height();\n const windowWidth: number = $window.width();\n const windowHeight: number = $window.height();\n const size: string = `${Math.min(parentWidth, parentHeight, windowWidth, windowHeight)}px`;\n this.setWidth(size);\n }\n });\n }\n }\n\n private toggleConfigScreen() {\n $(`#uhr-controlpanel${this.id}`).toggle('fast');\n };\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {EMPTY_LAYOUT, Layout} from './domain/layout';\nimport {CookieHandler} from './cookie-handler';\nimport {Globals} from './domain/globals';\nimport {LayoutRenderer} from './layout-renderer';\nimport {UhrRenderer} from './uhr-renderer';\nimport {WidgetPrototype} from './widget/widget-prototype';\n\nexport class Uhr {\n\n private timer: number = null;\n private currentMinute: number = null;\n private renderer: UhrRenderer;\n private cookieHandler: CookieHandler;\n\n constructor(private widgetInstance: WidgetPrototype) {\n const userTime = this.widgetInstance.options.time;\n if (this.widgetInstance.options.time === undefined) {\n this.widgetInstance.options.time = new Date();\n }\n this.cookieHandler = new CookieHandler(this.widgetInstance.uuid, this.widgetInstance.options.cookiePath);\n this.parseHash();\n this.renderer = new UhrRenderer(this, this.widgetInstance.element, this.widgetInstance.options, this.widgetInstance.uuid);\n this.renderer.render();\n if (userTime !== undefined) {\n this.setTime(userTime);\n }\n }\n\n destroy(): void {\n if (!!this.timer) {\n window.clearInterval(this.timer);\n this.timer = null;\n }\n this.widgetInstance.element\n .removeAttr('style')\n .removeAttr('class')\n .empty();\n $(`#uhr-configlink${this.widgetInstance.uuid}`).remove();\n $(`#uhr-controlpanel${this.widgetInstance.uuid}`).remove();\n }\n\n start(): void {\n if (!this.isOn()) {\n this.timer = window.setInterval(() => {\n this.widgetInstance.options.time = new Date();\n this.update();\n }, 1000);\n this.update();\n this.cookieHandler.setStatus('on')\n }\n }\n\n stop(): void {\n if (this.isOn()) {\n window.clearInterval(this.timer);\n this.timer = null;\n this.update();\n this.cookieHandler.setStatus('off');\n }\n }\n\n toggle(): void {\n if (this.isOn()) {\n this.stop();\n } else {\n this.start();\n }\n }\n\n setLayout(key: string): void {\n if (key !== this.widgetInstance.options.language) {\n this.widgetInstance.options.language = key;\n const renderer = new LayoutRenderer(this.getCurrentLayout(), this.widgetInstance.element.find('.letterarea'));\n renderer.render(() => {\n this.currentMinute = -1;\n this.update();\n });\n this.cookieHandler.setLayout(key);\n this.update();\n }\n }\n\n setTheme(styleClass: string): void {\n if (styleClass !== this.widgetInstance.options.theme) {\n this.widgetInstance.element.removeClass(this.widgetInstance.options.theme).addClass(styleClass);\n $(`#uhr-onoffswitch${this.widgetInstance.uuid}`).removeClass(this.widgetInstance.options.theme).addClass(styleClass);\n this.widgetInstance.options.theme = styleClass;\n this.cookieHandler.setTheme(styleClass);\n }\n }\n\n setTime(time: Date): void {\n this.currentMinute = null;\n if (time === null) {\n this.widgetInstance.options.time = new Date();\n } else {\n if (this.timer !== null) {\n window.clearInterval(this.timer);\n }\n this.widgetInstance.options.time = time;\n }\n this.update();\n }\n\n setMode(mode: string): void {\n this.widgetInstance.options.mode = mode;\n this.currentMinute = null;\n this.update();\n this.cookieHandler.setMode(mode);\n }\n\n setWidth(width: string): void {\n this.renderer.setWidth(width);\n }\n\n private isOn(): boolean {\n return this.timer !== null;\n }\n\n private update(): void {\n if (this.isOn()) {\n const time = this.widgetInstance.options.time;\n if (!this.getCurrentLayout().hasOwnProperty('seconds') && this.widgetInstance.options.mode !== 'seconds') {\n if (time.getMinutes() === this.currentMinute) {\n return;\n }\n this.currentMinute = time.getMinutes();\n }\n this.show(time);\n } else {\n this.clear();\n this.currentMinute = -1;\n }\n }\n\n private show(time: Date): void {\n const second = this.getSecond(time);\n const dotMinute = this.getDotMinute(time);\n const hour = this.getHour(time);\n const coarseMinute = this.getCoarseMinute(time);\n this.clear();\n if (this.widgetInstance.options.mode === 'seconds') {\n this.highlight(`second${second}`);\n } else {\n this.highlight('on');\n for (let i = 1; i <= dotMinute; i++) {\n this.highlight(`dot${i}`);\n }\n this.highlight(`minute${coarseMinute}`);\n this.highlight(`hour${hour}`);\n }\n }\n\n private clear(): void {\n this.widgetInstance.element.find('.item').removeClass('active');\n }\n\n private highlight(itemClass: string): void {\n this.widgetInstance.element.find(`.item.${itemClass}`).addClass('active');\n }\n\n private getSecond(time: Date): number {\n if (typeof this.getCurrentLayout().getSeconds === 'function') {\n return this.getCurrentLayout().getSeconds(time);\n }\n return time.getSeconds();\n };\n\n private getDotMinute(date: Date): number {\n if (typeof this.getCurrentLayout().getDotMinute === 'function') {\n return this.getCurrentLayout().getDotMinute(date);\n }\n return date.getMinutes() % 5;\n };\n\n private getCoarseMinute(date: Date): number {\n if (typeof this.getCurrentLayout().getCoarseMinute === 'function') {\n return this.getCurrentLayout().getCoarseMinute(date);\n }\n return date.getMinutes();\n };\n\n private getHour(date: Date): number {\n if (typeof this.getCurrentLayout().getHour === 'function') {\n return this.getCurrentLayout().getHour(date);\n }\n const hour = date.getHours();\n if (date.getMinutes() >= 25) {\n return (hour + 1) % 24;\n }\n return hour;\n };\n\n private parseHash(): void {\n let hash: string = window.location.hash;\n if (hash !== undefined && hash.charAt(0) === '#') {\n hash = hash.substring(1);\n hash = decodeURIComponent(hash);\n const params: string[] = hash.split('&');\n params.forEach(element => {\n const pair: string[] = element.split('=');\n const key = pair[0];\n const value = pair[1];\n switch (key) {\n case 'l':\n case 'language':\n this.widgetInstance.options.language = value;\n this.widgetInstance.options.force = true;\n break;\n case 't':\n case 'theme':\n this.widgetInstance.options.theme = value;\n this.widgetInstance.options.force = true;\n break;\n case 'm':\n case 'mode':\n this.widgetInstance.options.mode = value;\n this.widgetInstance.options.force = true;\n break;\n case 's':\n case 'status':\n this.widgetInstance.options.status = value;\n this.widgetInstance.options.force = true;\n break;\n }\n });\n }\n }\n\n private getCurrentLayout(): Layout {\n const matchingLanguages: Layout[] = Globals.getLayouts().filter(element => element.code === this.widgetInstance.options.language, this);\n if (matchingLanguages.length > 0) {\n return matchingLanguages[0];\n }\n // fallback: return empty object\n return EMPTY_LAYOUT;\n };\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport * as $ from 'jquery';\nimport {Globals} from './domain/globals';\n\nexport function autodetectThemes() {\n $('link[rel=stylesheet]').each((index, item) => {\n const styleSheet = $(item);\n const styleClass: string = styleSheet.attr('data-class');\n if (styleClass !== undefined) {\n let name: string = styleSheet.attr('data-name');\n if (name === undefined) {\n name = styleClass;\n }\n Globals.registerTheme(name, styleClass);\n }\n });\n\n // fall-back if no theme was included\n if (!Globals.hasThemes()) {\n Globals.registerTheme('', '');\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Globals} from './domain/globals';\nimport {Layout} from './domain/layout';\nimport {Uhr} from './uhr';\nimport {WidgetPrototype} from './widget/widget-prototype';\nimport {autodetectThemes} from './theme-autodetector';\n\n// First things first: discover included themes and register them\nautodetectThemes();\n\n$.widget('fritteli.uhr', {\n options: {\n width: '100%',\n status: 'on',\n language: 'de_CH',\n theme: Globals.getFirstTheme().styleClass,\n force: false,\n controls: true,\n cookiePath: undefined,\n autoresize: true,\n mode: 'normal'\n },\n start: function () {\n this.__fritteli_uhr_instance.start();\n },\n stop: function () {\n this.__fritteli_uhr_instance.stop();\n },\n toggle: function () {\n this.__fritteli_uhr_instance.toggle();\n },\n language: function (key: string) {\n this.__fritteli_uhr_instance.setLayout(key);\n },\n theme: function (styleClass: string) {\n this.__fritteli_uhr_instance.setTheme(styleClass);\n },\n time: function (time: Date) {\n this.__fritteli_uhr_instance.setTime(time);\n },\n mode: function (mode: string) {\n this.__fritteli_uhr_instance.setMode(mode);\n },\n width: function (width: string) {\n this.__fritteli_uhr_instance.setWidth(width);\n },\n // constructor method\n _create: function () {\n this.__fritteli_uhr_instance = new Uhr(this);\n },\n // destructor method\n _destroy: function () {\n this.__fritteli_uhr_instance.destroy();\n },\n __fritteli_uhr_instance: null\n} as WidgetPrototype);\n\n$.fritteli.uhr.register = Globals.registerLayout;\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n const widget: JQueryUI.Widget;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n"],"sourceRoot":""} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 32a9f11..bb57b81 100644 --- a/package-lock.json +++ b/package-lock.json @@ -83,6 +83,20 @@ "integrity": "sha512-7EJYyKTL7tFR8+gDbB6Wwz/arpGa0Mywk1TJbNzKzHtzbwVmY4HR9WqS5VV7dsBUKQmPNr192jHr/VpBluj/hg==", "dev": true }, + "@typescript-eslint/eslint-plugin": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-1.7.0.tgz", + "integrity": "sha512-NUSz1aTlIzzTjFFVFyzrbo8oFjHg3K/M9MzYByqbMCxeFdErhLAcGITVfXzSz+Yvp5OOpMu3HkIttB0NyKl54Q==", + "dev": true, + "requires": { + "@typescript-eslint/parser": "1.7.0", + "@typescript-eslint/typescript-estree": "1.7.0", + "eslint-utils": "^1.3.1", + "regexpp": "^2.0.1", + "requireindex": "^1.2.0", + "tsutils": "^3.7.0" + } + }, "@typescript-eslint/parser": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-1.7.0.tgz", @@ -6074,6 +6088,12 @@ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, + "requireindex": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", + "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==", + "dev": true + }, "requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", @@ -7392,6 +7412,15 @@ "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", "dev": true }, + "tsutils": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.10.0.tgz", + "integrity": "sha512-q20XSMq7jutbGB8luhKKsQldRKWvyBO2BGqni3p4yq8Ys9bEP/xQw3KepKmMRt9gJ4lvQSScrihJrcKdKoSU7Q==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, "tty-browserify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", diff --git a/package.json b/package.json index 2038021..e4d59a8 100644 --- a/package.json +++ b/package.json @@ -24,6 +24,7 @@ "license": "GPL-3.0", "scripts": { "start": "webpack-dev-server --open --config webpack.dev.js", + "lint": "eslint --ext .ts src/", "build": "webpack --mode development --env development --config webpack.dev.js", "build:prod": "webpack -p --mode production --env production --config webpack.prod.js" }, @@ -36,6 +37,7 @@ "@types/jquery": "3.3.29", "@types/jqueryui": "1.12.7", "@types/js-cookie": "2.2.2", + "@typescript-eslint/eslint-plugin": "1.7.0", "@typescript-eslint/parser": "1.7.0", "chai": "4.2.0", "clean-webpack-plugin": "2.0.2", diff --git a/resources/styles/uhr.scss b/resources/styles/uhr.scss index 7a4a0a4..34f1eb8 100644 --- a/resources/styles/uhr.scss +++ b/resources/styles/uhr.scss @@ -1,7 +1,3 @@ -/*! - * Copyright (C) Schweizerische Bundesbahnen SBB, 2019. - */ - /* This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/src/cookie-handler.ts b/src/cookie-handler.ts new file mode 100644 index 0000000..38f5a45 --- /dev/null +++ b/src/cookie-handler.ts @@ -0,0 +1,82 @@ +/* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ + +import * as Cookies from 'js-cookie'; + +export class CookieHandler { + constructor(private widgetId: string, private cookiePath?: string) { + } + + getLayout(): string { + const oldCookie = this.getCookie('uhr-language'); + if (!!oldCookie) { + // aha, old cookie is set. migrate to new one! + this.removeCookie('uhr-language'); + this.setLayout(oldCookie); + } + return this.getCookie('uhr-layout'); + } + + setLayout(layout: string): void { + this.setCookie('uhr-layout', layout); + } + + getMode(): string { + return this.getCookie('uhr-mode'); + } + + setMode(mode: string): void { + this.setCookie('uhr-mode', mode); + } + + + getStatus(): string { + return this.getCookie('uhr-status'); + } + + setStatus(status: string): void { + this.setCookie('uhr-status', status); + } + + getTheme(): string { + return this.getCookie('uhr-theme'); + } + + setTheme(theme: string): void { + this.setCookie('uhr-theme', theme); + } + + private getCookie(cookieName: string): string { + return Cookies.get(cookieName + this.widgetId); + } + + private setCookie(cookieName: string, cookieValue: string): void { + let options; + if (!!this.cookiePath) { + options = {expires: 365, path: this.cookiePath}; + } else { + options = {expires: 365}; + } + Cookies.set(cookieName + this.widgetId, cookieValue, options); + } + + private removeCookie(cookieName: string): void { + if (!!this.cookiePath) { + Cookies.remove(cookieName + this.widgetId, {path: this.cookiePath}); + } else { + Cookies.remove(cookieName + this.widgetId); + } + } +} diff --git a/src/domain/globals.ts b/src/domain/globals.ts index 13716c8..6198efd 100644 --- a/src/domain/globals.ts +++ b/src/domain/globals.ts @@ -22,7 +22,7 @@ export class Globals { static registerTheme(name: string, styleClass: string): void { if (Globals.themes.some(value => value.name === name)) { - console.log(`Theme with name '${name}' already registered; ignoring register request for styleClass '${styleClass}'.`) + console.log(`Theme with name '${name}' already registered; ignoring register request for styleClass '${styleClass}'.`); } else { Globals.themes.push({ name, diff --git a/src/index.ts b/src/index.ts index 3a110b9..dd481ed 100644 --- a/src/index.ts +++ b/src/index.ts @@ -44,7 +44,7 @@ $.widget('fritteli.uhr', { this.__fritteli_uhr_instance.toggle(); }, language: function (key: string) { - this.__fritteli_uhr_instance.setLanguage(key); + this.__fritteli_uhr_instance.setLayout(key); }, theme: function (styleClass: string) { this.__fritteli_uhr_instance.setTheme(styleClass); diff --git a/src/uhr-renderer.ts b/src/uhr-renderer.ts new file mode 100644 index 0000000..dde6115 --- /dev/null +++ b/src/uhr-renderer.ts @@ -0,0 +1,207 @@ +/* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ + +import {CookieHandler} from './cookie-handler'; +import {Globals} from './domain/globals'; +import {Options} from './widget/options'; +import {Uhr} from './uhr'; + +export class UhrRenderer { + private cookieHandler: CookieHandler; + + constructor( + private uhr: Uhr, + private $element: JQuery, + private options: Options, + private id: string + ) { + this.cookieHandler = new CookieHandler(id, options.cookiePath); + } + + public render(): void { + this.setupHTML(); + this.wireFunctionality(); + } + + public setWidth(width: string): void { + this.$element.css('width', width); + const realWidth: number = this.$element.width(); + this.$element.width(realWidth); + this.$element.height(realWidth); + this.$element.css('font-size', (realWidth / 40) + 'px'); + } + + private setupHTML(): void { + // Base clock area + this.$element.addClass('uhr') + .empty() + .append('') + .append('') + .append('') + .append('') + .append('
') + .append('
'); + + this.setWidth(this.options.width); + + if (this.options.controls) { + const controlpanel = $(`
`); + const content = $('
'); + controlpanel.append(content); + // on/off switch + const toggleSwitch = $(`
`); + toggleSwitch.append(``); + toggleSwitch.append(``); + content.append(toggleSwitch); + + // time mode switch + const modeSwitch = $(`
`); + modeSwitch.append(``); + modeSwitch.append(``); + content.append(modeSwitch); + // language chooser + if (Globals.hasMultipleLayouts()) { + const languageChooser = $(``); + Globals.getLayouts().forEach(layout => { + languageChooser.append(``); + }); + content.append(languageChooser); + } + + // theme chooser + if (Globals.hasMultipleThemes()) { + const themeChooser = $(``); + Globals.getThemes().forEach(theme => { + themeChooser.append(``); + }); + content.append(themeChooser); + } + const closebutton: JQuery = $(``); + closebutton.on({click: () => $(`#uhr-controlpanel${this.id}`).hide('fast')}); + content.append(closebutton); + this.$element.after(controlpanel); + controlpanel.hide(); + const configlink: JQuery = $(``); + configlink.on({click: () => this.toggleConfigScreen()}); + this.$element.after(configlink); + } + }; + + private wireFunctionality(): void { + // on/off switch + const toggleSwitch: JQuery = $(`#uhr-onoffswitch-checkbox${this.id}`); + toggleSwitch.on({click: () => this.uhr.toggle()}); + let status = this.cookieHandler.getStatus(); + if (status === undefined || this.options.force) { + status = this.options.status; + } + toggleSwitch.prop('checked', status === 'on'); + if (status === 'on') { + this.uhr.start(); + } else { + this.uhr.stop(); + } + + // time mode switch + const modeSwitch: JQuery = $(`#uhr-modeswitch-checkbox${this.id}`); + modeSwitch.on({ + click: () => { + if (this.options.mode === 'seconds') { + this.uhr.setMode('normal'); + } else { + this.uhr.setMode('seconds'); + } + } + }); + + let mode = this.cookieHandler.getMode(); + if (mode === undefined || this.options.force) { + mode = this.options.mode; + } + modeSwitch.prop('checked', mode !== 'seconds'); + if (mode === 'seconds') { + this.uhr.setMode('seconds'); + } else { + this.uhr.setMode('normal'); + } + + // language chooser + const languageChooser: JQuery = $(`#uhr-languagechooser${this.id}`); + languageChooser.on({ + change: () => { + const languageKey = $(`#uhr-languagechooser${this.id}`).val() as string; + this.uhr.setLayout(languageKey); + } + }); + let selectedLayout = this.cookieHandler.getLayout(); + if (selectedLayout === undefined || this.options.force) { + selectedLayout = this.options.language; + } + let found = Globals.getLayouts().some(item => selectedLayout === item.code); + if (!found) { + let fallbackLanguage; + if (Globals.hasLayouts()) { + fallbackLanguage = Globals.getFirstLayout().code; + } else { + fallbackLanguage = ''; + } + console.warn(`Language '${selectedLayout}' not found! Using fallback '${fallbackLanguage}'.`); + selectedLayout = fallbackLanguage; + } + languageChooser.val(selectedLayout); + this.options.language = ''; + this.uhr.setLayout(selectedLayout); + + // theme chooser + const themeChooser: JQuery = $(`#uhr-themechooser${this.id}`); + themeChooser.on({ + change: () => { + const themeKey = $(`#uhr-themechooser${this.id}`).val() as string; + this.uhr.setTheme(themeKey); + } + }); + let selectedTheme = this.cookieHandler.getTheme(); + if (selectedTheme === undefined || this.options.force) { + selectedTheme = this.options.theme; + } + found = Globals.getThemes().some(item => selectedTheme === item.styleClass); + if (!found) { + const fallbackTheme = Globals.getFirstTheme().styleClass; + console.warn(`Theme '${selectedTheme}' not found! Using fallback '${fallbackTheme}'.`); + selectedTheme = fallbackTheme; + } + themeChooser.val(selectedTheme); + this.options.theme = ''; + this.uhr.setTheme(selectedTheme); + if (this.options.autoresize) { + $(window).on({ + resize: () => { + const $parent: JQuery = this.$element.parent(); + const $window: JQuery = $(window); + const parentWidth: number = $parent.width(); + const parentHeight: number = $parent.height(); + const windowWidth: number = $window.width(); + const windowHeight: number = $window.height(); + const size: string = `${Math.min(parentWidth, parentHeight, windowWidth, windowHeight)}px`; + this.setWidth(size); + } + }); + } + } + + private toggleConfigScreen() { + $(`#uhr-controlpanel${this.id}`).toggle('fast'); + }; +} diff --git a/src/uhr.ts b/src/uhr.ts index b485926..4994b3e 100644 --- a/src/uhr.ts +++ b/src/uhr.ts @@ -13,25 +13,29 @@ along with this program. If not, see . */ -import * as Cookies from 'js-cookie'; import {EMPTY_LAYOUT, Layout} from './domain/layout'; +import {CookieHandler} from './cookie-handler'; import {Globals} from './domain/globals'; import {LayoutRenderer} from './layout-renderer'; +import {UhrRenderer} from './uhr-renderer'; import {WidgetPrototype} from './widget/widget-prototype'; export class Uhr { private timer: number = null; private currentMinute: number = null; + private renderer: UhrRenderer; + private cookieHandler: CookieHandler; constructor(private widgetInstance: WidgetPrototype) { const userTime = this.widgetInstance.options.time; if (this.widgetInstance.options.time === undefined) { this.widgetInstance.options.time = new Date(); } + this.cookieHandler = new CookieHandler(this.widgetInstance.uuid, this.widgetInstance.options.cookiePath); this.parseHash(); - this.setupHTML(); - this.wireFunctionality(); + this.renderer = new UhrRenderer(this, this.widgetInstance.element, this.widgetInstance.options, this.widgetInstance.uuid); + this.renderer.render(); if (userTime !== undefined) { this.setTime(userTime); } @@ -57,7 +61,7 @@ export class Uhr { this.update(); }, 1000); this.update(); - this.setCookie('uhr-status', 'on'); + this.cookieHandler.setStatus('on'); } } @@ -66,7 +70,7 @@ export class Uhr { window.clearInterval(this.timer); this.timer = null; this.update(); - this.setCookie('uhr-status', 'off'); + this.cookieHandler.setStatus('off'); } } @@ -78,7 +82,7 @@ export class Uhr { } } - setLanguage(key: string): void { + setLayout(key: string): void { if (key !== this.widgetInstance.options.language) { this.widgetInstance.options.language = key; const renderer = new LayoutRenderer(this.getCurrentLayout(), this.widgetInstance.element.find('.letterarea')); @@ -86,7 +90,7 @@ export class Uhr { this.currentMinute = -1; this.update(); }); - this.setCookie('uhr-language', key); + this.cookieHandler.setLayout(key); this.update(); } } @@ -96,7 +100,7 @@ export class Uhr { this.widgetInstance.element.removeClass(this.widgetInstance.options.theme).addClass(styleClass); $(`#uhr-onoffswitch${this.widgetInstance.uuid}`).removeClass(this.widgetInstance.options.theme).addClass(styleClass); this.widgetInstance.options.theme = styleClass; - this.setCookie('uhr-theme', styleClass); + this.cookieHandler.setTheme(styleClass); } } @@ -117,197 +121,17 @@ export class Uhr { this.widgetInstance.options.mode = mode; this.currentMinute = null; this.update(); - this.setCookie('uhr-mode', mode); + this.cookieHandler.setMode(mode); } setWidth(width: string): void { - const e = this.widgetInstance.element; - e.css('width', width); - const realWidth = e.width(); - e.width(realWidth); - e.height(realWidth); - e.css('font-size', (realWidth / 40) + 'px'); - } - - private setupHTML(): void { - const e: JQuery = this.widgetInstance.element; - // Base clock area - e.addClass('uhr') - .empty() - .append('') - .append('') - .append('') - .append('') - .append('
') - .append('
'); - - this.setWidth(this.widgetInstance.options.width); - - if (this.widgetInstance.options.controls) { - const controlpanel = $(`
`); - const content = $('
'); - controlpanel.append(content); - // on/off switch - const toggleSwitch = $(`
`); - toggleSwitch.append(``); - toggleSwitch.append(``); - content.append(toggleSwitch); - - // time mode switch - const modeSwitch = $(`
`); - modeSwitch.append(``); - modeSwitch.append(``); - content.append(modeSwitch); - // language chooser - if (Globals.hasMultipleLayouts()) { - const languageChooser = $(``); - Globals.getLayouts().forEach(layout => { - languageChooser.append(``); - }); - content.append(languageChooser); - } - - // theme chooser - if (Globals.hasMultipleThemes()) { - const themeChooser = $(``); - Globals.getThemes().forEach(theme => { - themeChooser.append(``); - }); - content.append(themeChooser); - } - const closebutton = $(``); - //FIXME deprecated?! - closebutton.on('click', () => $(`#uhr-controlpanel${this.widgetInstance.uuid}`).hide('fast')); - content.append(closebutton); - e.after(controlpanel); - controlpanel.hide(); - const configlink = $(``); - configlink.on({click: () => this.toggleConfigScreen()}); - e.after(configlink); - } - }; - - private wireFunctionality(): void { - // on/off switch - const toggleSwitch = $(`#uhr-onoffswitch-checkbox${this.widgetInstance.uuid}`); - toggleSwitch.on({click: () => this.toggle()}); - let status = this.getCookie('uhr-status'); - if (status === undefined || this.widgetInstance.options.force) { - status = this.widgetInstance.options.status; - } - toggleSwitch.prop('checked', status === 'on'); - if (status === 'on') { - this.start(); - } else { - this.stop(); - } - - // time mode switch - const modeSwitch = $(`#uhr-modeswitch-checkbox${this.widgetInstance.uuid}`); - modeSwitch.on({ - click: () => { - if (this.widgetInstance.options.mode === 'seconds') { - this.setMode('normal'); - } else { - this.setMode('seconds'); - } - } - }); - - let mode = this.getCookie('uhr-mode'); - if (mode === undefined || this.widgetInstance.options.force) { - mode = this.widgetInstance.options.mode; - } - modeSwitch.prop('checked', mode !== 'seconds'); - if (mode === 'seconds') { - this.setMode('seconds'); - } else { - this.setMode('normal'); - } - - // language chooser - const languageChooser = $(`#uhr-languagechooser${this.widgetInstance.uuid}`); - languageChooser.on({ - change: () => { - const languageKey = $(`#uhr-languagechooser${this.widgetInstance.uuid}`).val() as string; - this.setLanguage(languageKey); - } - }); - let selectedLayout = this.getCookie('uhr-language'); - if (selectedLayout === undefined || this.widgetInstance.options.force) { - selectedLayout = this.widgetInstance.options.language; - } - let found = Globals.getLayouts().some(item => selectedLayout === item.code); - if (!found) { - let fallbackLanguage; - if (Globals.hasLayouts()) { - fallbackLanguage = Globals.getFirstLayout().code; - } else { - fallbackLanguage = ''; - } - console.warn(`Language '${selectedLayout}' not found! Using fallback '${fallbackLanguage}'.`); - selectedLayout = fallbackLanguage; - } - languageChooser.val(selectedLayout); - this.widgetInstance.options.language = ''; - this.setLanguage(selectedLayout); - - // theme chooser - const themeChooser = $(`#uhr-themechooser${this.widgetInstance.uuid}`); - themeChooser.on({ - change: () => { - const themeKey = $(`#uhr-themechooser${this.widgetInstance.uuid}`).val() as string; - this.setTheme(themeKey); - } - }); - let selectedTheme = this.getCookie('uhr-theme'); - if (selectedTheme === undefined || this.widgetInstance.options.force) { - selectedTheme = this.widgetInstance.options.theme; - } - found = Globals.getThemes().some(item => selectedTheme === item.styleClass); - if (!found) { - const fallbackTheme = Globals.getFirstTheme().styleClass; - console.warn(`Theme '${selectedTheme}' not found! Using fallback '${fallbackTheme}'.`); - selectedTheme = fallbackTheme; - } - themeChooser.val(selectedTheme); - this.widgetInstance.options.theme = ''; - this.setTheme(selectedTheme); - if (this.widgetInstance.options.autoresize) { - $(window).on({ - resize: () => { - const $e: JQuery = this.widgetInstance.element; - const $parent: JQuery = $e.parent(); - const $window: JQuery = $(window); - const parentWidth: number = $parent.width(); - const parentHeight: number = $parent.height(); - const windowWidth: number = $window.width(); - const windowHeight: number = $window.height(); - const size: string = `${Math.min(parentWidth, parentHeight, windowWidth, windowHeight)}px`; - this.setWidth(size); - } - }); - } + this.renderer.setWidth(width); } private isOn(): boolean { return this.timer !== null; } - private getCookie(cookieName: string): string { - return Cookies.get(cookieName + this.widgetInstance.uuid); - } - - private setCookie(cookieName: string, cookieValue: string): void { - let options; - if (this.widgetInstance.options.cookiePath !== undefined) { - options = {expires: 365, path: this.widgetInstance.options.cookiePath}; - } else { - options = {expires: 365}; - } - Cookies.set(cookieName + this.widgetInstance.uuid, cookieValue, options); - } - private update(): void { if (this.isOn()) { const time = this.widgetInstance.options.time; @@ -355,21 +179,21 @@ export class Uhr { return this.getCurrentLayout().getSeconds(time); } return time.getSeconds(); - }; + } private getDotMinute(date: Date): number { if (typeof this.getCurrentLayout().getDotMinute === 'function') { return this.getCurrentLayout().getDotMinute(date); } return date.getMinutes() % 5; - }; + } private getCoarseMinute(date: Date): number { if (typeof this.getCurrentLayout().getCoarseMinute === 'function') { return this.getCurrentLayout().getCoarseMinute(date); } return date.getMinutes(); - }; + } private getHour(date: Date): number { if (typeof this.getCurrentLayout().getHour === 'function') { @@ -380,11 +204,7 @@ export class Uhr { return (hour + 1) % 24; } return hour; - }; - - private toggleConfigScreen() { - $(`#uhr-controlpanel${this.widgetInstance.uuid}`).toggle('fast'); - }; + } private parseHash(): void { let hash: string = window.location.hash; @@ -429,5 +249,5 @@ export class Uhr { } // fallback: return empty object return EMPTY_LAYOUT; - }; + } } diff --git a/src/widget/widget-prototype.ts b/src/widget/widget-prototype.ts index 8c9785f..3839edc 100644 --- a/src/widget/widget-prototype.ts +++ b/src/widget/widget-prototype.ts @@ -14,8 +14,8 @@ */ import WidgetCommonProperties = JQueryUI.WidgetCommonProperties; -import {Uhr} from "../uhr"; -import {Options} from "./options"; +import {Options} from './options'; +import {Uhr} from '../uhr'; export interface WidgetPrototype extends WidgetCommonProperties { options: Options; diff --git a/webpack.common.js b/webpack.common.js index 9109683..63ca29f 100644 --- a/webpack.common.js +++ b/webpack.common.js @@ -102,7 +102,6 @@ module.exports = (env, argv) => ({ } return 'deleteme/[name]'; }, - library: 'uhr', path: path.resolve(__dirname, 'dist') }, externals: { From 0d33434dbf288eb431501079d58cc8559a54dc83 Mon Sep 17 00:00:00 2001 From: Manuel Friedli Date: Fri, 10 May 2019 00:21:45 +0200 Subject: [PATCH 23/44] Fix some linting errors. --- src/cookie-handler.ts | 6 +++--- src/domain/letter.ts | 6 +++--- src/layout-renderer.ts | 6 +++--- src/uhr-renderer.ts | 4 ++-- src/uhr.ts | 2 +- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/cookie-handler.ts b/src/cookie-handler.ts index 38f5a45..9a16e1b 100644 --- a/src/cookie-handler.ts +++ b/src/cookie-handler.ts @@ -21,7 +21,7 @@ export class CookieHandler { getLayout(): string { const oldCookie = this.getCookie('uhr-language'); - if (!!oldCookie) { + if (oldCookie) { // aha, old cookie is set. migrate to new one! this.removeCookie('uhr-language'); this.setLayout(oldCookie); @@ -64,7 +64,7 @@ export class CookieHandler { private setCookie(cookieName: string, cookieValue: string): void { let options; - if (!!this.cookiePath) { + if (this.cookiePath) { options = {expires: 365, path: this.cookiePath}; } else { options = {expires: 365}; @@ -73,7 +73,7 @@ export class CookieHandler { } private removeCookie(cookieName: string): void { - if (!!this.cookiePath) { + if (this.cookiePath) { Cookies.remove(cookieName + this.widgetId, {path: this.cookiePath}); } else { Cookies.remove(cookieName + this.widgetId); diff --git a/src/domain/letter.ts b/src/domain/letter.ts index 8e31c8e..d39ff90 100644 --- a/src/domain/letter.ts +++ b/src/domain/letter.ts @@ -24,7 +24,7 @@ export class Letter { constructor(value: string, style?: string) { this.value = value; - if (!!style) { + if (style) { this.style = style; } } @@ -35,9 +35,9 @@ export class Letter { } else { this.style += ` ${style}`; } - }; + } toString(): string { return `${this.value}`; - }; + } } diff --git a/src/layout-renderer.ts b/src/layout-renderer.ts index 28a409f..885b03c 100644 --- a/src/layout-renderer.ts +++ b/src/layout-renderer.ts @@ -245,7 +245,7 @@ class LayoutRendererV2Delegate { this.parseTimeDefinition(letters, 'minute', this.layout.minutes); this.parseTimeDefinition(letters, 'hour', this.layout.hours); return letters; - }; + } private parseObject(letters: Letter[][], styleClass: string, object: WordDefinition): void { if (typeof object !== 'undefined' && object !== null) { @@ -313,10 +313,10 @@ export class LayoutRenderer { this.renderarea.append('
'); } }); - if (!!beforeshow) { + if (beforeshow) { beforeshow(); } this.renderarea.fadeIn('fast'); }); - }; + } } diff --git a/src/uhr-renderer.ts b/src/uhr-renderer.ts index dde6115..310dddb 100644 --- a/src/uhr-renderer.ts +++ b/src/uhr-renderer.ts @@ -97,7 +97,7 @@ export class UhrRenderer { configlink.on({click: () => this.toggleConfigScreen()}); this.$element.after(configlink); } - }; + } private wireFunctionality(): void { // on/off switch @@ -203,5 +203,5 @@ export class UhrRenderer { private toggleConfigScreen() { $(`#uhr-controlpanel${this.id}`).toggle('fast'); - }; + } } diff --git a/src/uhr.ts b/src/uhr.ts index 4994b3e..8cab1b7 100644 --- a/src/uhr.ts +++ b/src/uhr.ts @@ -42,7 +42,7 @@ export class Uhr { } destroy(): void { - if (!!this.timer) { + if (this.timer) { window.clearInterval(this.timer); this.timer = null; } From a57c97e1a1ccf7f084661c6fcd72c9dfcf4633bb Mon Sep 17 00:00:00 2001 From: Manuel Friedli Date: Fri, 10 May 2019 01:18:32 +0200 Subject: [PATCH 24/44] Lots of linting. --- .eslintrc.json | 29 ++++++++++++++++- src/cookie-handler.ts | 19 ++++++------ src/domain/globals.ts | 47 ++++++++++++++-------------- src/domain/letter.ts | 17 +++++----- src/index.ts | 53 ++++++++++++++++---------------- src/layout-renderer.ts | 26 ++++++++-------- src/layout/layout-de.ts | 10 +++--- src/layout/layout-de_ch.ts | 10 +++--- src/layout/layout-de_ch_genau.ts | 10 +++--- src/layout/layout-dk.ts | 10 +++--- src/layout/layout-en.ts | 12 ++++---- src/layout/layout-es.ts | 12 ++++---- src/layout/layout-fr.ts | 12 ++++---- src/layout/layout-it.ts | 12 ++++---- src/layout/layout-nl.ts | 12 ++++---- src/layout/layout-pt.ts | 12 ++++---- src/theme-autodetector.ts | 4 +-- src/uhr-renderer.ts | 38 +++++++++++++---------- src/uhr.ts | 31 ++++++++++--------- src/widget/widget-prototype.ts | 3 +- 20 files changed, 206 insertions(+), 173 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index 109e8a2..19dd068 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,6 +1,7 @@ { "parserOptions": { "ecmaVersion": 6, + "project": "./tsconfig.json", "sourceType": "module" }, "parser": "@typescript-eslint/parser", @@ -10,7 +11,10 @@ "env": { "browser": true }, - "extends": "eslint:recommended", + "extends": [ + "plugin:@typescript-eslint/recommended", + "eslint:recommended" + ], "rules": { "curly": "error", "deprecation": true, @@ -30,6 +34,15 @@ "alphabetize": true } ], + "no-console": [ + "error", + { + "allow": [ + "warn", + "error" + ] + } + ], "no-unused-vars": "off", "@typescript-eslint/no-unused-vars": [ "error", @@ -39,6 +52,20 @@ "ignoreRestSiblings": false } ], + "@typescript-eslint/no-namespace": [ + "error", + { + "allowDeclarations": true + } + ], + "@typescript-eslint/no-parameter-properties": [ + "error", + { + "allows": [ + "private readonly" + ] + } + ], "prefer-for-of": true, "semi": [ "error", diff --git a/src/cookie-handler.ts b/src/cookie-handler.ts index 9a16e1b..969b3fc 100644 --- a/src/cookie-handler.ts +++ b/src/cookie-handler.ts @@ -16,10 +16,10 @@ import * as Cookies from 'js-cookie'; export class CookieHandler { - constructor(private widgetId: string, private cookiePath?: string) { + public constructor(private readonly widgetId: string, private readonly cookiePath?: string) { } - getLayout(): string { + public getLayout(): string { const oldCookie = this.getCookie('uhr-language'); if (oldCookie) { // aha, old cookie is set. migrate to new one! @@ -29,32 +29,31 @@ export class CookieHandler { return this.getCookie('uhr-layout'); } - setLayout(layout: string): void { + public setLayout(layout: string): void { this.setCookie('uhr-layout', layout); } - getMode(): string { + public getMode(): string { return this.getCookie('uhr-mode'); } - setMode(mode: string): void { + public setMode(mode: string): void { this.setCookie('uhr-mode', mode); } - - getStatus(): string { + public getStatus(): string { return this.getCookie('uhr-status'); } - setStatus(status: string): void { + public setStatus(status: string): void { this.setCookie('uhr-status', status); } - getTheme(): string { + public getTheme(): string { return this.getCookie('uhr-theme'); } - setTheme(theme: string): void { + public setTheme(theme: string): void { this.setCookie('uhr-theme', theme); } diff --git a/src/domain/globals.ts b/src/domain/globals.ts index 6198efd..fbfef5d 100644 --- a/src/domain/globals.ts +++ b/src/domain/globals.ts @@ -20,9 +20,9 @@ export class Globals { private static layouts: Layout[] = []; private static themes: Theme[] = []; - static registerTheme(name: string, styleClass: string): void { - if (Globals.themes.some(value => value.name === name)) { - console.log(`Theme with name '${name}' already registered; ignoring register request for styleClass '${styleClass}'.`); + public static registerTheme(name: string, styleClass: string): void { + if (Globals.themes.some((value): boolean => value.name === name)) { + console.warn(`Theme with name '${name}' already registered; ignoring register request for styleClass '${styleClass}'.`); } else { Globals.themes.push({ name, @@ -31,58 +31,57 @@ export class Globals { } } - static hasThemes(): boolean { + public static hasThemes(): boolean { return Globals.themes.length > 0; } - static hasMultipleThemes(): boolean { + public static hasMultipleThemes(): boolean { return Globals.themes.length > 1; } - static getFirstTheme(): Theme { + public static getFirstTheme(): Theme { return Globals.getTheme(0); } - static getTheme(index: number): Theme { + public static getTheme(index: number): Theme { return Globals.themes[index]; } - static getThemes(): Theme[] { + public static getThemes(): Theme[] { return Globals.themes; } - static registerLayout(layout: Layout): void { - const available = !Globals.layouts.some(element => { - if (layout.code === element.code) { - if (layout.prettyName !== element.prettyName) { - console.error( - `Error: Language code '${layout.code}' cannot be registered for layout '${layout.prettyName}' because it is already registered for layout '${element.prettyName}'!` - ); - } - return true; + public static registerLayout(layout: Layout): void { + const available = !Globals.layouts.some((element): boolean => { + if (layout.code === element.code) { + if (layout.prettyName !== element.prettyName) { + console.error( + `Error: Language code '${layout.code}' cannot be registered for layout '${layout.prettyName}' because it is already registered for layout '${element.prettyName}'!` + ); } - return false; + return true; } - ); + return false; + }); if (available) { Globals.layouts.push(layout); - Globals.layouts.sort((a, b) => a.prettyName.localeCompare(b.prettyName)); + Globals.layouts.sort((a, b): number => a.prettyName.localeCompare(b.prettyName)); } } - static hasLayouts(): boolean { + public static hasLayouts(): boolean { return Globals.layouts.length > 0; } - static hasMultipleLayouts(): boolean { + public static hasMultipleLayouts(): boolean { return Globals.layouts.length > 1; } - static getFirstLayout(): Layout { + public static getFirstLayout(): Layout { return Globals.layouts[0]; } - static getLayouts(): Layout[] { + public static getLayouts(): Layout[] { return Globals.layouts; } } diff --git a/src/domain/letter.ts b/src/domain/letter.ts index d39ff90..ffe8d4e 100644 --- a/src/domain/letter.ts +++ b/src/domain/letter.ts @@ -19,17 +19,18 @@ * @param style Die CSS-Styleklassen des Buchstabens. */ export class Letter { - private readonly value: string; - private style: string = ''; + // private readonly value: string; + private style: string; - constructor(value: string, style?: string) { + public constructor(private readonly value: string, style: string = '') { this.value = value; - if (style) { - this.style = style; - } + this.style = style; + // if (style) { + // this.style = style; + // } } - addStyle(style: string): void { + public addStyle(style: string): void { if (this.style === '') { this.style = style; } else { @@ -37,7 +38,7 @@ export class Letter { } } - toString(): string { + public toString(): string { return `${this.value}`; } } diff --git a/src/index.ts b/src/index.ts index dd481ed..7a20d7f 100644 --- a/src/index.ts +++ b/src/index.ts @@ -19,10 +19,24 @@ import {Uhr} from './uhr'; import {WidgetPrototype} from './widget/widget-prototype'; import {autodetectThemes} from './theme-autodetector'; +declare namespace Fritteli { + interface Fritteli { + uhr: Uhr; + } + + interface Uhr { + register: (layout: Layout) => void; + } +} +declare namespace $ { + const fritteli: Fritteli.Fritteli; + const widget: JQueryUI.Widget; +} + // First things first: discover included themes and register them autodetectThemes(); -$.widget('fritteli.uhr', { +const widgetPrototype: WidgetPrototype = { options: { width: '100%', status: 'on', @@ -34,53 +48,40 @@ $.widget('fritteli.uhr', { autoresize: true, mode: 'normal' }, - start: function () { + start: function (): void { this.__fritteli_uhr_instance.start(); }, - stop: function () { + stop: function (): void { this.__fritteli_uhr_instance.stop(); }, - toggle: function () { + toggle: function (): void { this.__fritteli_uhr_instance.toggle(); }, - language: function (key: string) { + language: function (key: string): void { this.__fritteli_uhr_instance.setLayout(key); }, - theme: function (styleClass: string) { + theme: function (styleClass: string): void { this.__fritteli_uhr_instance.setTheme(styleClass); }, - time: function (time: Date) { + time: function (time: Date): void { this.__fritteli_uhr_instance.setTime(time); }, - mode: function (mode: string) { + mode: function (mode: string): void { this.__fritteli_uhr_instance.setMode(mode); }, - width: function (width: string) { + width: function (width: string): void { this.__fritteli_uhr_instance.setWidth(width); }, // constructor method - _create: function () { + _create: function (): void { this.__fritteli_uhr_instance = new Uhr(this); }, // destructor method - _destroy: function () { + _destroy: function (): void { this.__fritteli_uhr_instance.destroy(); }, __fritteli_uhr_instance: null -} as WidgetPrototype); +}; +$.widget('fritteli.uhr', widgetPrototype); $.fritteli.uhr.register = Globals.registerLayout; - -declare namespace $ { - const fritteli: Fritteli.Fritteli; - const widget: JQueryUI.Widget; -} -declare namespace Fritteli { - interface Fritteli { - uhr: Uhr; - } - - interface Uhr { - register: (layout: Layout) => void; - } -} diff --git a/src/layout-renderer.ts b/src/layout-renderer.ts index 885b03c..92769a8 100644 --- a/src/layout-renderer.ts +++ b/src/layout-renderer.ts @@ -224,12 +224,12 @@ class LayoutRendererV2Delegate { '59': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten9] }; - constructor(private layout: Layout) { + public constructor(private readonly layout: Layout) { } public parse(): Letter[][] { const letters: Letter[][] = []; - this.layout.letters.forEach(lineString => { + this.layout.letters.forEach((lineString: string): void => { const line: Letter[] = []; for (let c = 0; c < lineString.length; c++) { line.push(new Letter(lineString[c])); @@ -250,10 +250,10 @@ class LayoutRendererV2Delegate { private parseObject(letters: Letter[][], styleClass: string, object: WordDefinition): void { if (typeof object !== 'undefined' && object !== null) { Object.keys(object) - .map(key => Number(key)) + .map((key: string): number => Number(key)) .forEach( - y => object[y].forEach( - x => letters[y - 1][x - 1].addStyle(styleClass) + (y: number): void => object[y].forEach( + (x: number): void => letters[y - 1][x - 1].addStyle(styleClass) ) ); } @@ -262,7 +262,7 @@ class LayoutRendererV2Delegate { private parseArrayOrObject(letters: Letter[][], styleClass: string, input: WordDefinition | WordDefinition[]): void { if (typeof input !== 'undefined' && input !== null) { if (Array.isArray(input)) { - input.forEach(item => this.parseObject(letters, styleClass, item)); + input.forEach((item: WordDefinition): void => this.parseObject(letters, styleClass, item)); } else { this.parseObject(letters, styleClass, input); } @@ -271,10 +271,10 @@ class LayoutRendererV2Delegate { private parseTimeDefinition(letters: Letter[][], styleClass: string, definition: TimeDefinition): void { if (typeof definition !== 'undefined' && definition !== null) { - Object.keys(definition).forEach(listString => { + Object.keys(definition).forEach((listString: string): void => { const timeValues: string[] = listString.split(','); const highlightLetters: WordDefinition | WordDefinition[] = definition[listString]; - timeValues.forEach(timeValue => this.parseArrayOrObject(letters, styleClass + timeValue, highlightLetters)); + timeValues.forEach((timeValue: string): void => this.parseArrayOrObject(letters, styleClass + timeValue, highlightLetters)); }); } } @@ -286,10 +286,10 @@ class LayoutRendererV2Delegate { * @param renderarea Das jQuery-gewrappte HTML-Element, auf dem gerendert werden soll. */ export class LayoutRenderer { - constructor(private layout: Layout, private renderarea: JQuery) { + public constructor(private readonly layout: Layout, private readonly renderarea: JQuery) { } - render(beforeshow?: () => void): void { + public render(beforeshow?: () => void): void { if (this.layout.parsed === undefined) { if (this.layout.version === 2) { const delegate: LayoutRendererV2Delegate = new LayoutRendererV2Delegate(this.layout); @@ -305,10 +305,10 @@ export class LayoutRenderer { } } const letters: Letter[][] = this.layout.parsed; - this.renderarea.fadeOut('fast', () => { + this.renderarea.fadeOut('fast', (): void => { this.renderarea.empty(); - letters.forEach((line, index, array) => { - line.forEach(letter => this.renderarea.append(letter.toString())); + letters.forEach((line, index, array): void => { + line.forEach((letter): JQuery => this.renderarea.append(letter.toString())); if (index < array.length - 1) { this.renderarea.append('
'); } diff --git a/src/layout/layout-de.ts b/src/layout/layout-de.ts index ffb2e30..dd64804 100644 --- a/src/layout/layout-de.ts +++ b/src/layout/layout-de.ts @@ -73,11 +73,6 @@ export const Layout_de: Layout = { version: 2 }; -$.fritteli.uhr.register(Layout_de); - -declare namespace $ { - const fritteli: Fritteli.Fritteli; -} declare namespace Fritteli { interface Fritteli { uhr: Uhr; @@ -87,3 +82,8 @@ declare namespace Fritteli { register: (layout: Layout) => void; } } +declare namespace $ { + const fritteli: Fritteli.Fritteli; +} + +$.fritteli.uhr.register(Layout_de); diff --git a/src/layout/layout-de_ch.ts b/src/layout/layout-de_ch.ts index 175908a..32b1dc8 100644 --- a/src/layout/layout-de_ch.ts +++ b/src/layout/layout-de_ch.ts @@ -70,11 +70,6 @@ export const Layout_de_CH: Layout = { version: 2 }; -$.fritteli.uhr.register(Layout_de_CH); - -declare namespace $ { - const fritteli: Fritteli.Fritteli; -} declare namespace Fritteli { interface Fritteli { uhr: Uhr; @@ -84,3 +79,8 @@ declare namespace Fritteli { register: (layout: Layout) => void; } } +declare namespace $ { + const fritteli: Fritteli.Fritteli; +} + +$.fritteli.uhr.register(Layout_de_CH); diff --git a/src/layout/layout-de_ch_genau.ts b/src/layout/layout-de_ch_genau.ts index ca6f57f..944d5a5 100644 --- a/src/layout/layout-de_ch_genau.ts +++ b/src/layout/layout-de_ch_genau.ts @@ -72,11 +72,6 @@ export const Layout_de_CH_genau: Layout = { version: 2 }; -$.fritteli.uhr.register(Layout_de_CH_genau); - -declare namespace $ { - const fritteli: Fritteli.Fritteli; -} declare namespace Fritteli { interface Fritteli { uhr: Uhr; @@ -86,3 +81,8 @@ declare namespace Fritteli { register: (layout: Layout) => void; } } +declare namespace $ { + const fritteli: Fritteli.Fritteli; +} + +$.fritteli.uhr.register(Layout_de_CH_genau); diff --git a/src/layout/layout-dk.ts b/src/layout/layout-dk.ts index d1087f5..44fbb7f 100644 --- a/src/layout/layout-dk.ts +++ b/src/layout/layout-dk.ts @@ -71,11 +71,6 @@ export const Layout_dk: Layout = { version: 2 }; -$.fritteli.uhr.register(Layout_dk); - -declare namespace $ { - const fritteli: Fritteli.Fritteli; -} declare namespace Fritteli { interface Fritteli { uhr: Uhr; @@ -85,3 +80,8 @@ declare namespace Fritteli { register: (layout: Layout) => void; } } +declare namespace $ { + const fritteli: Fritteli.Fritteli; +} + +$.fritteli.uhr.register(Layout_dk); diff --git a/src/layout/layout-en.ts b/src/layout/layout-en.ts index c66c8a2..3ff0c73 100644 --- a/src/layout/layout-en.ts +++ b/src/layout/layout-en.ts @@ -28,7 +28,7 @@ const twentyfive: WordDefinition = {3: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]}; export const Layout_en: Layout = { code: 'en', - getHour: (time: Date) => { + getHour: (time: Date): number => { const hour = time.getHours(); if (time.getMinutes() >= 35) { return (hour + 1) % 24; @@ -81,11 +81,6 @@ export const Layout_en: Layout = { version: 2 }; -$.fritteli.uhr.register(Layout_en); - -declare namespace $ { - const fritteli: Fritteli.Fritteli; -} declare namespace Fritteli { interface Fritteli { uhr: Uhr; @@ -95,3 +90,8 @@ declare namespace Fritteli { register: (layout: Layout) => void; } } +declare namespace $ { + const fritteli: Fritteli.Fritteli; +} + +$.fritteli.uhr.register(Layout_en); diff --git a/src/layout/layout-es.ts b/src/layout/layout-es.ts index 22fde15..1710e99 100644 --- a/src/layout/layout-es.ts +++ b/src/layout/layout-es.ts @@ -28,7 +28,7 @@ const veinticinco: WordDefinition = {9: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]}; export const Layout_es: Layout = { code: 'es', - getHour: (time: Date) => { + getHour: (time: Date): number => { const hour = time.getHours(); if (time.getMinutes() >= 35) { return (hour + 1) % 24; @@ -80,11 +80,6 @@ export const Layout_es: Layout = { version: 2 }; -$.fritteli.uhr.register(Layout_es); - -declare namespace $ { - const fritteli: Fritteli.Fritteli; -} declare namespace Fritteli { interface Fritteli { uhr: Uhr; @@ -94,3 +89,8 @@ declare namespace Fritteli { register: (layout: Layout) => void; } } +declare namespace $ { + const fritteli: Fritteli.Fritteli; +} + +$.fritteli.uhr.register(Layout_es); diff --git a/src/layout/layout-fr.ts b/src/layout/layout-fr.ts index 69a1b0e..5b964c8 100644 --- a/src/layout/layout-fr.ts +++ b/src/layout/layout-fr.ts @@ -29,7 +29,7 @@ const vingtcinq: WordDefinition = {9: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]}; export const Layout_fr: Layout = { code: 'fr', - getHour: (time: Date) => { + getHour: (time: Date): number => { const hour = time.getHours(); if (time.getMinutes() >= 35) { return (hour + 1) % 24; @@ -114,11 +114,6 @@ export const Layout_fr: Layout = { version: 2 }; -$.fritteli.uhr.register(Layout_fr); - -declare namespace $ { - const fritteli: Fritteli.Fritteli; -} declare namespace Fritteli { interface Fritteli { uhr: Uhr; @@ -128,3 +123,8 @@ declare namespace Fritteli { register: (layout: Layout) => void; } } +declare namespace $ { + const fritteli: Fritteli.Fritteli; +} + +$.fritteli.uhr.register(Layout_fr); diff --git a/src/layout/layout-it.ts b/src/layout/layout-it.ts index 19d24cc..9738a59 100644 --- a/src/layout/layout-it.ts +++ b/src/layout/layout-it.ts @@ -28,7 +28,7 @@ const venticinque: WordDefinition = {9: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]}; export const Layout_it: Layout = { code: 'it', - getHour: (time: Date) => { + getHour: (time: Date): number => { const hour = time.getHours(); if (time.getMinutes() >= 35) { return (hour + 1) % 24; @@ -79,11 +79,6 @@ export const Layout_it: Layout = { version: 2 }; -$.fritteli.uhr.register(Layout_it); - -declare namespace $ { - const fritteli: Fritteli.Fritteli; -} declare namespace Fritteli { interface Fritteli { uhr: Uhr; @@ -93,3 +88,8 @@ declare namespace Fritteli { register: (layout: Layout) => void; } } +declare namespace $ { + const fritteli: Fritteli.Fritteli; +} + +$.fritteli.uhr.register(Layout_it); diff --git a/src/layout/layout-nl.ts b/src/layout/layout-nl.ts index a4fd5f9..0edc005 100644 --- a/src/layout/layout-nl.ts +++ b/src/layout/layout-nl.ts @@ -28,7 +28,7 @@ const uur: WordDefinition = {10: [9, 10, 11]}; export const Layout_nl: Layout = { code: 'nl', - getHour: (time: Date) => { + getHour: (time: Date): number => { const hour = time.getHours(); if (time.getMinutes() >= 20) { return (hour + 1) % 24; @@ -80,11 +80,6 @@ export const Layout_nl: Layout = { version: 2 }; -$.fritteli.uhr.register(Layout_nl); - -declare namespace $ { - const fritteli: Fritteli.Fritteli; -} declare namespace Fritteli { interface Fritteli { uhr: Uhr; @@ -94,3 +89,8 @@ declare namespace Fritteli { register: (layout: Layout) => void; } } +declare namespace $ { + const fritteli: Fritteli.Fritteli; +} + +$.fritteli.uhr.register(Layout_nl); diff --git a/src/layout/layout-pt.ts b/src/layout/layout-pt.ts index a3a267f..73077f2 100644 --- a/src/layout/layout-pt.ts +++ b/src/layout/layout-pt.ts @@ -28,7 +28,7 @@ const vinte: WordDefinition = {8: [1, 2, 3, 4, 5]}; export const Layout_pt: Layout = { code: 'pt', - getHour: (time: Date) => { + getHour: (time: Date): number => { const hour = time.getHours(); if (time.getMinutes() >= 35) { return (hour + 1) % 24; @@ -80,11 +80,6 @@ export const Layout_pt: Layout = { version: 2 }; -$.fritteli.uhr.register(Layout_pt); - -declare namespace $ { - const fritteli: Fritteli.Fritteli; -} declare namespace Fritteli { interface Fritteli { uhr: Uhr; @@ -94,3 +89,8 @@ declare namespace Fritteli { register: (layout: Layout) => void; } } +declare namespace $ { + const fritteli: Fritteli.Fritteli; +} + +$.fritteli.uhr.register(Layout_pt); diff --git a/src/theme-autodetector.ts b/src/theme-autodetector.ts index dc3c187..36aa1cb 100644 --- a/src/theme-autodetector.ts +++ b/src/theme-autodetector.ts @@ -16,8 +16,8 @@ import * as $ from 'jquery'; import {Globals} from './domain/globals'; -export function autodetectThemes() { - $('link[rel=stylesheet]').each((index, item) => { +export function autodetectThemes(): void { + $('link[rel=stylesheet]').each((index, item): void => { const styleSheet = $(item); const styleClass: string = styleSheet.attr('data-class'); if (styleClass !== undefined) { diff --git a/src/uhr-renderer.ts b/src/uhr-renderer.ts index 310dddb..adeee4a 100644 --- a/src/uhr-renderer.ts +++ b/src/uhr-renderer.ts @@ -15,17 +15,21 @@ import {CookieHandler} from './cookie-handler'; import {Globals} from './domain/globals'; +import {Layout} from './domain/layout'; import {Options} from './widget/options'; +import {Theme} from './domain/theme'; import {Uhr} from './uhr'; +declare var $: JQueryStatic; + export class UhrRenderer { private cookieHandler: CookieHandler; - constructor( - private uhr: Uhr, - private $element: JQuery, - private options: Options, - private id: string + public constructor( + private readonly uhr: Uhr, + private readonly $element: JQuery, + private readonly options: Options, + private readonly id: string ) { this.cookieHandler = new CookieHandler(id, options.cookiePath); } @@ -74,7 +78,7 @@ export class UhrRenderer { // language chooser if (Globals.hasMultipleLayouts()) { const languageChooser = $(``); - Globals.getLayouts().forEach(layout => { + Globals.getLayouts().forEach((layout: Layout): void => { languageChooser.append(``); }); content.append(languageChooser); @@ -83,18 +87,18 @@ export class UhrRenderer { // theme chooser if (Globals.hasMultipleThemes()) { const themeChooser = $(``); - Globals.getThemes().forEach(theme => { + Globals.getThemes().forEach((theme: Theme): void => { themeChooser.append(``); }); content.append(themeChooser); } const closebutton: JQuery = $(``); - closebutton.on({click: () => $(`#uhr-controlpanel${this.id}`).hide('fast')}); + closebutton.on({click: (): JQuery => $(`#uhr-controlpanel${this.id}`).hide('fast')}); content.append(closebutton); this.$element.after(controlpanel); controlpanel.hide(); const configlink: JQuery = $(``); - configlink.on({click: () => this.toggleConfigScreen()}); + configlink.on({click: (): void => this.toggleConfigScreen()}); this.$element.after(configlink); } } @@ -102,7 +106,7 @@ export class UhrRenderer { private wireFunctionality(): void { // on/off switch const toggleSwitch: JQuery = $(`#uhr-onoffswitch-checkbox${this.id}`); - toggleSwitch.on({click: () => this.uhr.toggle()}); + toggleSwitch.on({click: (): void => this.uhr.toggle()}); let status = this.cookieHandler.getStatus(); if (status === undefined || this.options.force) { status = this.options.status; @@ -117,7 +121,7 @@ export class UhrRenderer { // time mode switch const modeSwitch: JQuery = $(`#uhr-modeswitch-checkbox${this.id}`); modeSwitch.on({ - click: () => { + click: (): void => { if (this.options.mode === 'seconds') { this.uhr.setMode('normal'); } else { @@ -140,7 +144,7 @@ export class UhrRenderer { // language chooser const languageChooser: JQuery = $(`#uhr-languagechooser${this.id}`); languageChooser.on({ - change: () => { + change: (): void => { const languageKey = $(`#uhr-languagechooser${this.id}`).val() as string; this.uhr.setLayout(languageKey); } @@ -149,7 +153,7 @@ export class UhrRenderer { if (selectedLayout === undefined || this.options.force) { selectedLayout = this.options.language; } - let found = Globals.getLayouts().some(item => selectedLayout === item.code); + let found = Globals.getLayouts().some((item: Layout): boolean => selectedLayout === item.code); if (!found) { let fallbackLanguage; if (Globals.hasLayouts()) { @@ -167,7 +171,7 @@ export class UhrRenderer { // theme chooser const themeChooser: JQuery = $(`#uhr-themechooser${this.id}`); themeChooser.on({ - change: () => { + change: (): void => { const themeKey = $(`#uhr-themechooser${this.id}`).val() as string; this.uhr.setTheme(themeKey); } @@ -176,7 +180,7 @@ export class UhrRenderer { if (selectedTheme === undefined || this.options.force) { selectedTheme = this.options.theme; } - found = Globals.getThemes().some(item => selectedTheme === item.styleClass); + found = Globals.getThemes().some((item: Theme): boolean => selectedTheme === item.styleClass); if (!found) { const fallbackTheme = Globals.getFirstTheme().styleClass; console.warn(`Theme '${selectedTheme}' not found! Using fallback '${fallbackTheme}'.`); @@ -187,7 +191,7 @@ export class UhrRenderer { this.uhr.setTheme(selectedTheme); if (this.options.autoresize) { $(window).on({ - resize: () => { + resize: (): void => { const $parent: JQuery = this.$element.parent(); const $window: JQuery = $(window); const parentWidth: number = $parent.width(); @@ -201,7 +205,7 @@ export class UhrRenderer { } } - private toggleConfigScreen() { + private toggleConfigScreen(): void { $(`#uhr-controlpanel${this.id}`).toggle('fast'); } } diff --git a/src/uhr.ts b/src/uhr.ts index 8cab1b7..43ab4af 100644 --- a/src/uhr.ts +++ b/src/uhr.ts @@ -13,6 +13,7 @@ along with this program. If not, see . */ +import WidgetCommonProperties = JQueryUI.WidgetCommonProperties; import {EMPTY_LAYOUT, Layout} from './domain/layout'; import {CookieHandler} from './cookie-handler'; import {Globals} from './domain/globals'; @@ -20,6 +21,8 @@ import {LayoutRenderer} from './layout-renderer'; import {UhrRenderer} from './uhr-renderer'; import {WidgetPrototype} from './widget/widget-prototype'; +declare var $: JQueryStatic; + export class Uhr { private timer: number = null; @@ -27,7 +30,7 @@ export class Uhr { private renderer: UhrRenderer; private cookieHandler: CookieHandler; - constructor(private widgetInstance: WidgetPrototype) { + public constructor(private readonly widgetInstance: WidgetPrototype & WidgetCommonProperties) { const userTime = this.widgetInstance.options.time; if (this.widgetInstance.options.time === undefined) { this.widgetInstance.options.time = new Date(); @@ -41,7 +44,7 @@ export class Uhr { } } - destroy(): void { + public destroy(): void { if (this.timer) { window.clearInterval(this.timer); this.timer = null; @@ -54,9 +57,9 @@ export class Uhr { $(`#uhr-controlpanel${this.widgetInstance.uuid}`).remove(); } - start(): void { + public start(): void { if (!this.isOn()) { - this.timer = window.setInterval(() => { + this.timer = window.setInterval((): void => { this.widgetInstance.options.time = new Date(); this.update(); }, 1000); @@ -65,7 +68,7 @@ export class Uhr { } } - stop(): void { + public stop(): void { if (this.isOn()) { window.clearInterval(this.timer); this.timer = null; @@ -74,7 +77,7 @@ export class Uhr { } } - toggle(): void { + public toggle(): void { if (this.isOn()) { this.stop(); } else { @@ -82,11 +85,11 @@ export class Uhr { } } - setLayout(key: string): void { + public setLayout(key: string): void { if (key !== this.widgetInstance.options.language) { this.widgetInstance.options.language = key; const renderer = new LayoutRenderer(this.getCurrentLayout(), this.widgetInstance.element.find('.letterarea')); - renderer.render(() => { + renderer.render((): void => { this.currentMinute = -1; this.update(); }); @@ -95,7 +98,7 @@ export class Uhr { } } - setTheme(styleClass: string): void { + public setTheme(styleClass: string): void { if (styleClass !== this.widgetInstance.options.theme) { this.widgetInstance.element.removeClass(this.widgetInstance.options.theme).addClass(styleClass); $(`#uhr-onoffswitch${this.widgetInstance.uuid}`).removeClass(this.widgetInstance.options.theme).addClass(styleClass); @@ -104,7 +107,7 @@ export class Uhr { } } - setTime(time: Date): void { + public setTime(time: Date): void { this.currentMinute = null; if (time === null) { this.widgetInstance.options.time = new Date(); @@ -117,14 +120,14 @@ export class Uhr { this.update(); } - setMode(mode: string): void { + public setMode(mode: string): void { this.widgetInstance.options.mode = mode; this.currentMinute = null; this.update(); this.cookieHandler.setMode(mode); } - setWidth(width: string): void { + public setWidth(width: string): void { this.renderer.setWidth(width); } @@ -212,7 +215,7 @@ export class Uhr { hash = hash.substring(1); hash = decodeURIComponent(hash); const params: string[] = hash.split('&'); - params.forEach(element => { + params.forEach((element: string): void => { const pair: string[] = element.split('='); const key = pair[0]; const value = pair[1]; @@ -243,7 +246,7 @@ export class Uhr { } private getCurrentLayout(): Layout { - const matchingLanguages: Layout[] = Globals.getLayouts().filter(element => element.code === this.widgetInstance.options.language, this); + const matchingLanguages: Layout[] = Globals.getLayouts().filter((element: Layout): boolean => element.code === this.widgetInstance.options.language, this); if (matchingLanguages.length > 0) { return matchingLanguages[0]; } diff --git a/src/widget/widget-prototype.ts b/src/widget/widget-prototype.ts index 3839edc..89c76f9 100644 --- a/src/widget/widget-prototype.ts +++ b/src/widget/widget-prototype.ts @@ -13,11 +13,10 @@ along with this program. If not, see . */ -import WidgetCommonProperties = JQueryUI.WidgetCommonProperties; import {Options} from './options'; import {Uhr} from '../uhr'; -export interface WidgetPrototype extends WidgetCommonProperties { +export interface WidgetPrototype { options: Options; start: () => void; stop: () => void; From 40eef0fa0413ccb80d26d790f1248cb8cd2a97e3 Mon Sep 17 00:00:00 2001 From: Manuel Friedli Date: Fri, 10 May 2019 01:33:53 +0200 Subject: [PATCH 25/44] More linting --- src/bundle.ts | 40 ++++++++++++++++---------------- src/index.ts | 22 +++++++++--------- src/layout/layout-de.ts | 8 +++---- src/layout/layout-de_ch.ts | 8 +++---- src/layout/layout-de_ch_genau.ts | 8 +++---- src/layout/layout-dk.ts | 8 +++---- src/layout/layout-en.ts | 18 +++++++------- src/layout/layout-es.ts | 32 ++++++++++++------------- src/layout/layout-fr.ts | 8 +++---- src/layout/layout-it.ts | 38 +++++++++++++++--------------- src/layout/layout-nl.ts | 8 +++---- src/layout/layout-pt.ts | 18 +++++++------- src/widget/widget-prototype.ts | 2 +- 13 files changed, 109 insertions(+), 109 deletions(-) diff --git a/src/bundle.ts b/src/bundle.ts index d2c082e..6b81707 100644 --- a/src/bundle.ts +++ b/src/bundle.ts @@ -14,27 +14,27 @@ */ import * as uhr from './index'; -import {Layout_de} from './layout/layout-de'; -import {Layout_de_CH} from './layout/layout-de_ch'; -import {Layout_de_CH_genau} from './layout/layout-de_ch_genau'; -import {Layout_dk} from './layout/layout-dk'; -import {Layout_en} from './layout/layout-en'; -import {Layout_es} from './layout/layout-es'; -import {Layout_fr} from './layout/layout-fr'; -import {Layout_it} from './layout/layout-it'; -import {Layout_nl} from './layout/layout-nl'; -import {Layout_pt} from './layout/layout-pt'; +import {LayoutDe} from './layout/layout-de'; +import {LayoutDeCh} from './layout/layout-de_ch'; +import {LayoutDeChGenau} from './layout/layout-de_ch_genau'; +import {LayoutDk} from './layout/layout-dk'; +import {LayoutEn} from './layout/layout-en'; +import {LayoutEs} from './layout/layout-es'; +import {LayoutFr} from './layout/layout-fr'; +import {LayoutIt} from './layout/layout-it'; +import {LayoutNl} from './layout/layout-nl'; +import {LayoutPt} from './layout/layout-pt'; // We just need to reference all required files at least once, so that the tree-shaker won't remove them from // the bundle. let a = uhr; -a = Layout_de_CH; -a = Layout_de_CH_genau; -a = Layout_de; -a = Layout_dk; -a = Layout_en; -a = Layout_es; -a = Layout_fr; -a = Layout_it; -a = Layout_nl; -a = Layout_pt; +a = LayoutDeCh; +a = LayoutDeChGenau; +a = LayoutDe; +a = LayoutDk; +a = LayoutEn; +a = LayoutEs; +a = LayoutFr; +a = LayoutIt; +a = LayoutNl; +a = LayoutPt; diff --git a/src/index.ts b/src/index.ts index 7a20d7f..aa1d100 100644 --- a/src/index.ts +++ b/src/index.ts @@ -49,38 +49,38 @@ const widgetPrototype: WidgetPrototype = { mode: 'normal' }, start: function (): void { - this.__fritteli_uhr_instance.start(); + this._fritteliUhrInstance.start(); }, stop: function (): void { - this.__fritteli_uhr_instance.stop(); + this._fritteliUhrInstance.stop(); }, toggle: function (): void { - this.__fritteli_uhr_instance.toggle(); + this._fritteliUhrInstance.toggle(); }, language: function (key: string): void { - this.__fritteli_uhr_instance.setLayout(key); + this._fritteliUhrInstance.setLayout(key); }, theme: function (styleClass: string): void { - this.__fritteli_uhr_instance.setTheme(styleClass); + this._fritteliUhrInstance.setTheme(styleClass); }, time: function (time: Date): void { - this.__fritteli_uhr_instance.setTime(time); + this._fritteliUhrInstance.setTime(time); }, mode: function (mode: string): void { - this.__fritteli_uhr_instance.setMode(mode); + this._fritteliUhrInstance.setMode(mode); }, width: function (width: string): void { - this.__fritteli_uhr_instance.setWidth(width); + this._fritteliUhrInstance.setWidth(width); }, // constructor method _create: function (): void { - this.__fritteli_uhr_instance = new Uhr(this); + this._fritteliUhrInstance = new Uhr(this); }, // destructor method _destroy: function (): void { - this.__fritteli_uhr_instance.destroy(); + this._fritteliUhrInstance.destroy(); }, - __fritteli_uhr_instance: null + _fritteliUhrInstance: null }; $.widget('fritteli.uhr', widgetPrototype); diff --git a/src/layout/layout-de.ts b/src/layout/layout-de.ts index dd64804..939f1be 100644 --- a/src/layout/layout-de.ts +++ b/src/layout/layout-de.ts @@ -15,7 +15,7 @@ import {Layout, WordDefinition} from '../domain/layout'; -const es_ist: WordDefinition = {1: [1, 2, 4, 5, 6]}; +const esIst: WordDefinition = {1: [1, 2, 4, 5, 6]}; const uhr: WordDefinition = {10: [9, 10, 11]}; const nach: WordDefinition = {4: [8, 9, 10, 11]}; const vor: WordDefinition = {4: [1, 2, 3]}; @@ -26,7 +26,7 @@ const viertel: WordDefinition = {3: [5, 6, 7, 8, 9, 10, 11]}; const zwanzig: WordDefinition = {2: [5, 6, 7, 8, 9, 10, 11]}; const dreiviertel: WordDefinition = {3: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]}; -export const Layout_de: Layout = { +export const LayoutDe: Layout = { code: 'de', hours: { '0,12': {9: [7, 8, 9, 10, 11]}, @@ -68,7 +68,7 @@ export const Layout_de: Layout = { '50,51,52,53,54': [zehn, vor], '55,56,57,58,59': [fuenf, vor] }, - permanent: es_ist, + permanent: esIst, prettyName: 'Deutsch', version: 2 }; @@ -86,4 +86,4 @@ declare namespace $ { const fritteli: Fritteli.Fritteli; } -$.fritteli.uhr.register(Layout_de); +$.fritteli.uhr.register(LayoutDe); diff --git a/src/layout/layout-de_ch.ts b/src/layout/layout-de_ch.ts index 32b1dc8..d1999ee 100644 --- a/src/layout/layout-de_ch.ts +++ b/src/layout/layout-de_ch.ts @@ -15,7 +15,7 @@ import {Layout, WordDefinition} from '../domain/layout'; -const es_isch: WordDefinition = {1: [1, 2, 4, 5, 6, 7]}; +const esIsch: WordDefinition = {1: [1, 2, 4, 5, 6, 7]}; const ab: WordDefinition = {4: [1, 2]}; const vor: WordDefinition = {3: [9, 10, 11]}; const haubi: WordDefinition = {4: [4, 5, 6, 7, 8]}; @@ -24,7 +24,7 @@ const zae: WordDefinition = {2: [9, 10, 11]}; const viertu: WordDefinition = {2: [1, 2, 3, 4, 5, 6]}; const zwaenzg: WordDefinition = {3: [1, 2, 3, 4, 5, 6]}; -export const Layout_de_CH: Layout = { +export const LayoutDeCh: Layout = { code: 'de_CH', hours: { '0,12': {10: [1, 2, 3, 4, 5, 6]}, @@ -65,7 +65,7 @@ export const Layout_de_CH: Layout = { '50,51,52,53,54': [zae, vor], '55,56,57,58,59': [fuef, vor] }, - permanent: es_isch, + permanent: esIsch, prettyName: 'Bärndütsch', version: 2 }; @@ -83,4 +83,4 @@ declare namespace $ { const fritteli: Fritteli.Fritteli; } -$.fritteli.uhr.register(Layout_de_CH); +$.fritteli.uhr.register(LayoutDeCh); diff --git a/src/layout/layout-de_ch_genau.ts b/src/layout/layout-de_ch_genau.ts index 944d5a5..0858ae9 100644 --- a/src/layout/layout-de_ch_genau.ts +++ b/src/layout/layout-de_ch_genau.ts @@ -15,7 +15,7 @@ import {Layout, WordDefinition} from '../domain/layout'; -const es_isch: WordDefinition = {1: [1, 2, 4, 5, 6, 7]}; +const esIsch: WordDefinition = {1: [1, 2, 4, 5, 6, 7]}; const genau: WordDefinition = {3: [7, 8, 9, 10, 11]}; const ab: WordDefinition = {4: [4, 5]}; const vor: WordDefinition = {4: [1, 2, 3]}; @@ -25,7 +25,7 @@ const zae: WordDefinition = {2: [9, 10, 11]}; const viertu: WordDefinition = {2: [1, 2, 3, 4, 5, 6]}; const zwaenzg: WordDefinition = {3: [1, 2, 3, 4, 5, 6]}; -export const Layout_de_CH_genau: Layout = { +export const LayoutDeChGenau: Layout = { code: 'de_CH_genau', hours: { '0,12': {10: [1, 2, 3, 4, 5, 6]}, @@ -67,7 +67,7 @@ export const Layout_de_CH_genau: Layout = { '50,51,52,53,54': [zae, vor], '55,56,57,58,59': [fuef, vor] }, - permanent: es_isch, + permanent: esIsch, prettyName: 'Bärndütsch (genau)', version: 2 }; @@ -85,4 +85,4 @@ declare namespace $ { const fritteli: Fritteli.Fritteli; } -$.fritteli.uhr.register(Layout_de_CH_genau); +$.fritteli.uhr.register(LayoutDeChGenau); diff --git a/src/layout/layout-dk.ts b/src/layout/layout-dk.ts index 44fbb7f..4cc47ac 100644 --- a/src/layout/layout-dk.ts +++ b/src/layout/layout-dk.ts @@ -15,7 +15,7 @@ import {Layout, WordDefinition} from '../domain/layout'; -const klokken_er: WordDefinition = {1: [1, 2, 3, 4, 5, 6, 7, 9, 10]}; +const klokkenEr: WordDefinition = {1: [1, 2, 3, 4, 5, 6, 7, 9, 10]}; const minutter: WordDefinition = {4: [4, 5, 6, 7, 8, 9, 10, 11]}; const i: WordDefinition = {5: [8]}; const over: WordDefinition = {5: [4, 5, 6, 7]}; @@ -25,7 +25,7 @@ const kvart: WordDefinition = {3: [4, 5, 6, 7, 8]}; const tyve: WordDefinition = {2: [4, 5, 6, 7]}; const halv: WordDefinition = {6: [8, 9, 10, 11]}; -export const Layout_dk: Layout = { +export const LayoutDk: Layout = { code: 'dk', hours: { '0,12': {10: [8, 9, 10, 11]}, @@ -66,7 +66,7 @@ export const Layout_dk: Layout = { '50,51,52,53,54': [ti, minutter, i], '55,56,57,58,59': [fem, minutter, i] }, - permanent: klokken_er, + permanent: klokkenEr, prettyName: 'Dansk', version: 2 }; @@ -84,4 +84,4 @@ declare namespace $ { const fritteli: Fritteli.Fritteli; } -$.fritteli.uhr.register(Layout_dk); +$.fritteli.uhr.register(LayoutDk); diff --git a/src/layout/layout-en.ts b/src/layout/layout-en.ts index 3ff0c73..3d8112e 100644 --- a/src/layout/layout-en.ts +++ b/src/layout/layout-en.ts @@ -15,18 +15,18 @@ import {Layout, WordDefinition} from '../domain/layout'; -const it_is: WordDefinition = {1: [1, 2, 4, 5]}; +const itIs: WordDefinition = {1: [1, 2, 4, 5]}; const half: WordDefinition = {4: [1, 2, 3, 4]}; const to: WordDefinition = {4: [10, 11]}; const past: WordDefinition = {5: [1, 2, 3, 4]}; -const o_clock: WordDefinition = {10: [5, 6, 7, 8, 9, 10, 11]}; +const oClock: WordDefinition = {10: [5, 6, 7, 8, 9, 10, 11]}; const five: WordDefinition = {3: [7, 8, 9, 10]}; const ten: WordDefinition = {4: [6, 7, 8]}; -const a_quarter: WordDefinition = {2: [1, 3, 4, 5, 6, 7, 8, 9]}; +const aQuarter: WordDefinition = {2: [1, 3, 4, 5, 6, 7, 8, 9]}; const twenty: WordDefinition = {3: [1, 2, 3, 4, 5, 6]}; const twentyfive: WordDefinition = {3: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]}; -export const Layout_en: Layout = { +export const LayoutEn: Layout = { code: 'en', getHour: (time: Date): number => { const hour = time.getHours(); @@ -63,20 +63,20 @@ export const Layout_en: Layout = { 'TENSO\'CLOCK' ], minutes: { - '0,1,2,3,4': o_clock, + '0,1,2,3,4': oClock, '5,6,7,8,9': [five, past], '10,11,12,13,14': [ten, past], - '15,16,17,18,19': [a_quarter, past], + '15,16,17,18,19': [aQuarter, past], '20,21,22,23,24': [twenty, past], '25,26,27,28,29': [twentyfive, past], '30,31,32,33,34': [half, past], '35,36,37,38,39': [twentyfive, to], '40,41,42,43,44': [twenty, to], - '45,46,47,48,49': [a_quarter, to], + '45,46,47,48,49': [aQuarter, to], '50,51,52,53,54': [ten, to], '55,56,57,58,59': [five, to] }, - permanent: it_is, + permanent: itIs, prettyName: 'English', version: 2 }; @@ -94,4 +94,4 @@ declare namespace $ { const fritteli: Fritteli.Fritteli; } -$.fritteli.uhr.register(Layout_en); +$.fritteli.uhr.register(LayoutEn); diff --git a/src/layout/layout-es.ts b/src/layout/layout-es.ts index 1710e99..3a5b51e 100644 --- a/src/layout/layout-es.ts +++ b/src/layout/layout-es.ts @@ -15,8 +15,8 @@ import {Layout, WordDefinition} from '../domain/layout'; -const es_la: WordDefinition = {1: [1, 2, 6, 7]}; -const son_las: WordDefinition = {1: [2, 3, 4, 6, 7, 8]}; +const esLa: WordDefinition = {1: [1, 2, 6, 7]}; +const sonLas: WordDefinition = {1: [2, 3, 4, 6, 7, 8]}; const y: WordDefinition = {7: [6]}; const menos: WordDefinition = {7: [7, 8, 9, 10, 11]}; const media: WordDefinition = {10: [1, 2, 3, 4, 5]}; @@ -26,7 +26,7 @@ const cuarto: WordDefinition = {10: [6, 7, 8, 9, 10, 11]}; const veinte: WordDefinition = {8: [2, 3, 4, 5, 6, 7]}; const veinticinco: WordDefinition = {9: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]}; -export const Layout_es: Layout = { +export const LayoutEs: Layout = { code: 'es', getHour: (time: Date): number => { const hour = time.getHours(); @@ -37,18 +37,18 @@ export const Layout_es: Layout = { }, hours: { - '0,12': [son_las, {7: [1, 2, 3, 4]}], - '1,13': [es_la, {1: [9, 10, 11]}], - '2,14': [son_las, {2: [1, 2, 3]}], - '3,15': [son_las, {2: [5, 6, 7, 8]}], - '4,16': [son_las, {3: [1, 2, 3, 4, 5, 6]}], - '5,17': [son_las, {3: [7, 8, 9, 10, 11]}], - '6,18': [son_las, {4: [1, 2, 3, 4]}], - '7,19': [son_las, {4: [6, 7, 8, 9, 10]}], - '8,20': [son_las, {5: [1, 2, 3, 4]}], - '9,21': [son_las, {5: [5, 6, 7, 8, 9]}], - '10,22': [son_las, {6: [3, 4, 5, 6]}], - '11,23': [son_las, {6: [8, 9, 10, 11]}] + '0,12': [sonLas, {7: [1, 2, 3, 4]}], + '1,13': [esLa, {1: [9, 10, 11]}], + '2,14': [sonLas, {2: [1, 2, 3]}], + '3,15': [sonLas, {2: [5, 6, 7, 8]}], + '4,16': [sonLas, {3: [1, 2, 3, 4, 5, 6]}], + '5,17': [sonLas, {3: [7, 8, 9, 10, 11]}], + '6,18': [sonLas, {4: [1, 2, 3, 4]}], + '7,19': [sonLas, {4: [6, 7, 8, 9, 10]}], + '8,20': [sonLas, {5: [1, 2, 3, 4]}], + '9,21': [sonLas, {5: [5, 6, 7, 8, 9]}], + '10,22': [sonLas, {6: [3, 4, 5, 6]}], + '11,23': [sonLas, {6: [8, 9, 10, 11]}] }, letters: [ 'ESONELASUNA', @@ -93,4 +93,4 @@ declare namespace $ { const fritteli: Fritteli.Fritteli; } -$.fritteli.uhr.register(Layout_es); +$.fritteli.uhr.register(LayoutEs); diff --git a/src/layout/layout-fr.ts b/src/layout/layout-fr.ts index 5b964c8..1227f7d 100644 --- a/src/layout/layout-fr.ts +++ b/src/layout/layout-fr.ts @@ -15,7 +15,7 @@ import {Layout, WordDefinition} from '../domain/layout'; -const il_est: WordDefinition = {1: [1, 2, 4, 5, 6]}; +const ilEst: WordDefinition = {1: [1, 2, 4, 5, 6]}; const et: WordDefinition = {8: [1, 2]}; const moins: WordDefinition = {7: [1, 2, 3, 4, 5]}; const demie: WordDefinition = {10: [4, 5, 6, 7, 8]}; @@ -27,7 +27,7 @@ const quart: WordDefinition = {8: [4, 5, 6, 7, 8]}; const vingt: WordDefinition = {9: [1, 2, 3, 4, 5]}; const vingtcinq: WordDefinition = {9: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]}; -export const Layout_fr: Layout = { +export const LayoutFr: Layout = { code: 'fr', getHour: (time: Date): number => { const hour = time.getHours(); @@ -109,7 +109,7 @@ export const Layout_fr: Layout = { '50,51,52,53,54': [moins, dix], '55,56,57,58,59': [moins, cinq] }, - permanent: il_est, + permanent: ilEst, prettyName: 'Français', version: 2 }; @@ -127,4 +127,4 @@ declare namespace $ { const fritteli: Fritteli.Fritteli; } -$.fritteli.uhr.register(Layout_fr); +$.fritteli.uhr.register(LayoutFr); diff --git a/src/layout/layout-it.ts b/src/layout/layout-it.ts index 9738a59..5a34190 100644 --- a/src/layout/layout-it.ts +++ b/src/layout/layout-it.ts @@ -15,18 +15,18 @@ import {Layout, WordDefinition} from '../domain/layout'; -const sono_le: WordDefinition = {1: [1, 2, 3, 4, 6, 7]}; -const e_l: WordDefinition = {2: [1, 3, 4]}; +const sonoLe: WordDefinition = {1: [1, 2, 3, 4, 6, 7]}; +const eL: WordDefinition = {2: [1, 3, 4]}; const e: WordDefinition = {8: [1]}; const meno: WordDefinition = {7: [8, 9, 10, 11]}; const mezza: WordDefinition = {10: [7, 8, 9, 10, 11]}; const cinque: WordDefinition = {9: [6, 7, 8, 9, 10, 11]}; const dieci: WordDefinition = {10: [1, 2, 3, 4, 5]}; -const un_quarto: WordDefinition = {8: [3, 4, 6, 7, 8, 9, 10, 11]}; +const unQuarto: WordDefinition = {8: [3, 4, 6, 7, 8, 9, 10, 11]}; const venti: WordDefinition = {9: [1, 2, 3, 4, 5]}; const venticinque: WordDefinition = {9: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]}; -export const Layout_it: Layout = { +export const LayoutIt: Layout = { code: 'it', getHour: (time: Date): number => { const hour = time.getHours(); @@ -36,18 +36,18 @@ export const Layout_it: Layout = { return hour; }, hours: { - '0,12': [sono_le, {5: [1, 2, 3, 4, 5, 6]}], - '1,13': [e_l, {2: [5, 6, 7]}], - '2,14': [sono_le, {2: [9, 10, 11]}], - '3,15': [sono_le, {3: [1, 2, 3]}], - '4,16': [sono_le, {6: [1, 2, 3, 4, 5, 6, 7]}], - '5,17': [sono_le, {7: [1, 2, 3, 4, 5, 6]}], - '6,18': [sono_le, {6: [9, 10, 11]}], - '7,19': [sono_le, {5: [7, 8, 9, 10, 11]}], - '8,20': [sono_le, {3: [4, 5, 6, 7]}], - '9,21': [sono_le, {3: [8, 9, 10, 11]}], - '10,22': [sono_le, {4: [1, 2, 3, 4, 5]}], - '11,23': [sono_le, {4: [6, 7, 8, 9, 10, 11]}] + '0,12': [sonoLe, {5: [1, 2, 3, 4, 5, 6]}], + '1,13': [eL, {2: [5, 6, 7]}], + '2,14': [sonoLe, {2: [9, 10, 11]}], + '3,15': [sonoLe, {3: [1, 2, 3]}], + '4,16': [sonoLe, {6: [1, 2, 3, 4, 5, 6, 7]}], + '5,17': [sonoLe, {7: [1, 2, 3, 4, 5, 6]}], + '6,18': [sonoLe, {6: [9, 10, 11]}], + '7,19': [sonoLe, {5: [7, 8, 9, 10, 11]}], + '8,20': [sonoLe, {3: [4, 5, 6, 7]}], + '9,21': [sonoLe, {3: [8, 9, 10, 11]}], + '10,22': [sonoLe, {4: [1, 2, 3, 4, 5]}], + '11,23': [sonoLe, {4: [6, 7, 8, 9, 10, 11]}] }, letters: [ 'SONORLEBORE', @@ -64,13 +64,13 @@ export const Layout_it: Layout = { minutes: { '5,6,7,8,9': [e, cinque], '10,11,12,13,14': [e, dieci], - '15,16,17,18,19': [e, un_quarto], + '15,16,17,18,19': [e, unQuarto], '20,21,22,23,24': [e, venti], '25,26,27,28,29': [e, venticinque], '30,31,32,33,34': [e, mezza], '35,36,37,38,39': [meno, venticinque], '40,41,42,43,44': [meno, venti], - '45,46,47,48,49': [meno, un_quarto], + '45,46,47,48,49': [meno, unQuarto], '50,51,52,53,54': [meno, dieci], '55,56,57,58,59': [meno, cinque] }, @@ -92,4 +92,4 @@ declare namespace $ { const fritteli: Fritteli.Fritteli; } -$.fritteli.uhr.register(Layout_it); +$.fritteli.uhr.register(LayoutIt); diff --git a/src/layout/layout-nl.ts b/src/layout/layout-nl.ts index 0edc005..5e579c8 100644 --- a/src/layout/layout-nl.ts +++ b/src/layout/layout-nl.ts @@ -15,7 +15,7 @@ import {Layout, WordDefinition} from '../domain/layout'; -const het_is: WordDefinition = {1: [1, 2, 3, 5, 6]}; +const hetIs: WordDefinition = {1: [1, 2, 3, 5, 6]}; const over1: WordDefinition = {3: [1, 2, 3, 4]}; const voor1: WordDefinition = {2: [8, 9, 10, 11]}; const over2: WordDefinition = {4: [8, 9, 10, 11]}; @@ -26,7 +26,7 @@ const tien: WordDefinition = {2: [1, 2, 3, 4]}; const kwart: WordDefinition = {3: [7, 8, 9, 10, 11]}; const uur: WordDefinition = {10: [9, 10, 11]}; -export const Layout_nl: Layout = { +export const LayoutNl: Layout = { code: 'nl', getHour: (time: Date): number => { const hour = time.getHours(); @@ -75,7 +75,7 @@ export const Layout_nl: Layout = { '50,51,52,53,54': [tien, voor1], '55,56,57,58,59': [vijf, voor1] }, - permanent: het_is, + permanent: hetIs, prettyName: 'Nederlands', version: 2 }; @@ -93,4 +93,4 @@ declare namespace $ { const fritteli: Fritteli.Fritteli; } -$.fritteli.uhr.register(Layout_nl); +$.fritteli.uhr.register(LayoutNl); diff --git a/src/layout/layout-pt.ts b/src/layout/layout-pt.ts index 73077f2..fb7c727 100644 --- a/src/layout/layout-pt.ts +++ b/src/layout/layout-pt.ts @@ -15,7 +15,7 @@ import {Layout, WordDefinition} from '../domain/layout'; -const e_: WordDefinition = {1: [1]}; +const e: WordDefinition = {1: [1]}; const sao: WordDefinition = {1: [2, 3, 4]}; const e1: WordDefinition = {7: [8]}; const e2: WordDefinition = {10: [5]}; @@ -23,10 +23,10 @@ const menos: WordDefinition = {7: [7, 8, 9, 10, 11]}; const meia: WordDefinition = {8: [8, 9, 10, 11]}; const cinco: WordDefinition = {10: [7, 8, 9, 10, 11]}; const dez: WordDefinition = {10: [1, 2, 3]}; -const um_quarto: WordDefinition = {9: [1, 2, 4, 5, 6, 7, 8, 9]}; +const umQuarto: WordDefinition = {9: [1, 2, 4, 5, 6, 7, 8, 9]}; const vinte: WordDefinition = {8: [1, 2, 3, 4, 5]}; -export const Layout_pt: Layout = { +export const LayoutPt: Layout = { code: 'pt', getHour: (time: Date): number => { const hour = time.getHours(); @@ -36,9 +36,9 @@ export const Layout_pt: Layout = { return hour; }, hours: { - '0': [e_, {'6': [2, 3, 4, 5, 7, 8, 9, 10, 11]}], - '12': [e_, {'2': [1, 2, 3, 4, 6, 7, 8]}], - '1,13': [e_, {'1': [5, 6, 7]}], + '0': [e, {'6': [2, 3, 4, 5, 7, 8, 9, 10, 11]}], + '12': [e, {'2': [1, 2, 3, 4, 6, 7, 8]}], + '1,13': [e, {'1': [5, 6, 7]}], '2,14': [sao, {'3': [1, 2, 3, 4]}], '3,15': [sao, {'1': [8, 9, 10, 11]}], '4,16': [sao, {'4': [1, 2, 3, 4, 5, 6]}], @@ -65,13 +65,13 @@ export const Layout_pt: Layout = { minutes: { '5,6,7,8,9': [e1, cinco], '10,11,12,13,14': [e1, dez], - '15,16,17,18,19': [e1, um_quarto], + '15,16,17,18,19': [e1, umQuarto], '20,21,22,23,24': [e1, vinte], '25,26,27,28,29': [e1, vinte, e2, cinco], '30,31,32,33,34': [e1, meia], '35,36,37,38,39': [menos, vinte, e2, cinco], '40,41,42,43,44': [menos, vinte], - '45,46,47,48,49': [menos, um_quarto], + '45,46,47,48,49': [menos, umQuarto], '50,51,52,53,54': [menos, dez], '55,56,57,58,59': [menos, cinco] }, @@ -93,4 +93,4 @@ declare namespace $ { const fritteli: Fritteli.Fritteli; } -$.fritteli.uhr.register(Layout_pt); +$.fritteli.uhr.register(LayoutPt); diff --git a/src/widget/widget-prototype.ts b/src/widget/widget-prototype.ts index 89c76f9..e3e2aff 100644 --- a/src/widget/widget-prototype.ts +++ b/src/widget/widget-prototype.ts @@ -28,5 +28,5 @@ export interface WidgetPrototype { width: (width: string) => void; _create: () => void; _destroy: () => void; - __fritteli_uhr_instance: Uhr; + _fritteliUhrInstance: Uhr; } From ac7cb66bd0c738761960109fe3d51965c571020f Mon Sep 17 00:00:00 2001 From: Manuel Friedli Date: Fri, 10 May 2019 14:32:39 +0200 Subject: [PATCH 26/44] Refine linting rules. --- .eslintrc.json | 69 +++++++++++------------------- dist/assets/uhr.css | 4 +- dist/lib/layout_de.js | 2 +- dist/lib/layout_de.js.map | 2 +- dist/lib/layout_de_ch.js | 2 +- dist/lib/layout_de_ch.js.map | 2 +- dist/lib/layout_de_ch_genau.js | 2 +- dist/lib/layout_de_ch_genau.js.map | 2 +- dist/lib/layout_dk.js | 2 +- dist/lib/layout_dk.js.map | 2 +- dist/lib/layout_en.js | 2 +- dist/lib/layout_en.js.map | 2 +- dist/lib/layout_es.js | 2 +- dist/lib/layout_es.js.map | 2 +- dist/lib/layout_fr.js | 2 +- dist/lib/layout_fr.js.map | 2 +- dist/lib/layout_it.js | 2 +- dist/lib/layout_it.js.map | 2 +- dist/lib/layout_nl.js | 2 +- dist/lib/layout_nl.js.map | 2 +- dist/lib/layout_pt.js | 2 +- dist/lib/layout_pt.js.map | 2 +- dist/lib/uhr.bundle.js | 2 +- dist/lib/uhr.bundle.js.map | 2 +- dist/lib/uhr.js | 2 +- dist/lib/uhr.js.map | 2 +- header.ts | 14 ++++++ package-lock.json | 6 +++ package.json | 1 + src/bundle.ts | 7 ++- src/uhr.ts | 2 +- 31 files changed, 76 insertions(+), 75 deletions(-) create mode 100644 header.ts diff --git a/.eslintrc.json b/.eslintrc.json index 19dd068..8024652 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -6,33 +6,21 @@ }, "parser": "@typescript-eslint/parser", "plugins": [ + "header", "@typescript-eslint" ], "env": { "browser": true }, "extends": [ - "plugin:@typescript-eslint/recommended", - "eslint:recommended" + "eslint:recommended", + "plugin:@typescript-eslint/recommended" ], "rules": { "curly": "error", - "deprecation": true, - "eofline": true, - "file-header": [ - true, - { - "match": " This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n", - "enforce-trailing-newline": true - } - ], - "sort-imports": "warn", - "member-ordering": [ - true, - { - "order": "fields-first", - "alphabetize": true - } + "eol-last": [ + "error", + "always" ], "no-console": [ "error", @@ -44,13 +32,21 @@ } ], "no-unused-vars": "off", - "@typescript-eslint/no-unused-vars": [ + "quotes": [ "error", - { - "vars": "all", - "args": "after-used", - "ignoreRestSiblings": false - } + "single" + ], + "semi": [ + "error", + "always" + ], + "sort-imports": "error", + "header/header": [ + "error", + "header.ts" + ], + "@typescript-eslint/member-ordering": [ + "error" ], "@typescript-eslint/no-namespace": [ "error", @@ -66,30 +62,13 @@ ] } ], - "prefer-for-of": true, - "semi": [ + "@typescript-eslint/no-unused-vars": [ "error", - "always", { - "omitLastInOneLineBlock": false + "vars": "all", + "args": "after-used", + "ignoreRestSiblings": false } - ], - "static-this": true, - "triple-equals": true, - "typeof-compare": true, - "prefer-const": "warn", - "prefer-readonly": true, - "array-type": [ - true, - "array" - ], - "arrow-return-shorthand": [ - true, - "multiline" - ], - "quotes": [ - "warn", - "single" ] } } diff --git a/dist/assets/uhr.css b/dist/assets/uhr.css index 5e4b4c5..2a02ca8 100644 --- a/dist/assets/uhr.css +++ b/dist/assets/uhr.css @@ -1,3 +1 @@ -/*! - * Copyright (C) Schweizerische Bundesbahnen SBB, 2019. - */@font-face{font-family:'Uhrenfont';src:url(../assets/uhr.woff) format("woff")}body{font-family:'Uhrenfont', sans-serif}.uhr{position:relative;margin:0;transition:background-color 0.5s}.uhr .reflection{position:absolute;top:0;bottom:0;left:0;right:0;background:radial-gradient(225em 45em at 160% 0, rgba(255,255,255,0.4) 0, rgba(255,255,255,0.05) 40%, rgba(255,255,255,0) 40%) no-repeat scroll;display:block;margin:0.15em}.uhr .letterarea{display:block;position:absolute;top:12%;bottom:12%;left:12%;right:12%;overflow:hidden;font-size:200%}.item{transition:box-shadow 0.5s, text-shadow 0.5s, border-color 0.5s, color 0.5s}.dot{position:absolute;display:block;height:0;width:0;border:0.2em solid;border-radius:1em}.dot.active{border-color:#eee;box-shadow:0 0 0.2em #eee}.dot1{top:3.75%;left:3.75%}.dot2{top:3.75%;right:3.75%}.dot3{bottom:3.75%;right:3.75%}.dot4{bottom:3.75%;left:3.75%}.letter{height:10%;width:9.0909%;padding:0;margin:0;display:inline-block;text-align:center;line-height:160%}.letter.active{color:#eee;text-shadow:0 0 0.2em #eee}.onoffswitch{position:relative;width:86px;margin:1em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.onoffswitch-checkbox{display:none}.onoffswitch-label{display:block;overflow:hidden;cursor:pointer;border:2px solid #999;border-radius:50px}.onoffswitch-inner,.modeswitch-inner{width:200%;margin-left:-100%;-moz-transition:margin 0.3s ease-in 0s;-webkit-transition:margin 0.3s ease-in 0s;-o-transition:margin 0.3s ease-in 0s;transition:margin 0.3s ease-in 0s}.onoffswitch-inner:before,.onoffswitch-inner:after,.modeswitch-inner:before,.modeswitch-inner:after{float:left;width:50%;height:24px;padding:0;line-height:24px;font-size:18px;color:white;font-weight:bold;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.onoffswitch-inner:before{content:"EIN";padding-left:12px;color:#eee;transition:background-color 0.5s}.onoffswitch-inner:after{content:"AUS";padding-right:12px;background-color:#eee;color:#999;text-align:right}.onoffswitch-switch{width:30px;margin:-3px;background:#fff;border:2px solid #999;border-radius:50px;position:absolute;top:0;bottom:0;right:58px;-moz-transition:all 0.3s ease-in 0s;-webkit-transition:all 0.3s ease-in 0s;-o-transition:all 0.3s ease-in 0s;transition:all 0.3s ease-in 0s}.onoffswitch-checkbox:checked+.onoffswitch-label .onoffswitch-inner,.onoffswitch-checkbox:checked+.onoffswitch-label .modeswitch-inner{margin-left:0}.onoffswitch-checkbox:checked+.onoffswitch-label .onoffswitch-switch{right:0}.modeswitch-inner:before{content:"MIN";padding-left:12px;background-color:#fff;color:#000}.modeswitch-inner:after{content:"SEC";padding-right:12px;background-color:#fff;color:#000;text-align:right}a.uhr-configlink{cursor:pointer;background:url(../assets/settings.png) no-repeat;width:24px;height:24px;display:inline-block;margin:2px;vertical-align:top}.uhr-controlpanel{border-radius:0.5em;box-shadow:0 0 1em black;background-color:#fff;display:inline-block;padding:0.5em;position:sticky;bottom:0;margin-left:1em}.uhr-controlpanel .content{position:relative}a.uhr-closecontrolpanel{cursor:pointer;display:inline-block;position:absolute;right:0;top:-1em;width:24px;height:24px;background:url(../assets/close.png) no-repeat}#disclaimer{font-size:0.5em}#disclaimer a{color:#444;text-decoration:underline} +@font-face{font-family:'Uhrenfont';src:url(../assets/uhr.woff) format("woff")}body{font-family:'Uhrenfont', sans-serif}.uhr{position:relative;margin:0;transition:background-color 0.5s}.uhr .reflection{position:absolute;top:0;bottom:0;left:0;right:0;background:radial-gradient(225em 45em at 160% 0, rgba(255,255,255,0.4) 0, rgba(255,255,255,0.05) 40%, rgba(255,255,255,0) 40%) no-repeat scroll;display:block;margin:0.15em}.uhr .letterarea{display:block;position:absolute;top:12%;bottom:12%;left:12%;right:12%;overflow:hidden;font-size:200%}.item{transition:box-shadow 0.5s, text-shadow 0.5s, border-color 0.5s, color 0.5s}.dot{position:absolute;display:block;height:0;width:0;border:0.2em solid;border-radius:1em}.dot.active{border-color:#eee;box-shadow:0 0 0.2em #eee}.dot1{top:3.75%;left:3.75%}.dot2{top:3.75%;right:3.75%}.dot3{bottom:3.75%;right:3.75%}.dot4{bottom:3.75%;left:3.75%}.letter{height:10%;width:9.0909%;padding:0;margin:0;display:inline-block;text-align:center;line-height:160%}.letter.active{color:#eee;text-shadow:0 0 0.2em #eee}.onoffswitch{position:relative;width:86px;margin:1em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.onoffswitch-checkbox{display:none}.onoffswitch-label{display:block;overflow:hidden;cursor:pointer;border:2px solid #999;border-radius:50px}.onoffswitch-inner,.modeswitch-inner{width:200%;margin-left:-100%;-moz-transition:margin 0.3s ease-in 0s;-webkit-transition:margin 0.3s ease-in 0s;-o-transition:margin 0.3s ease-in 0s;transition:margin 0.3s ease-in 0s}.onoffswitch-inner:before,.onoffswitch-inner:after,.modeswitch-inner:before,.modeswitch-inner:after{float:left;width:50%;height:24px;padding:0;line-height:24px;font-size:18px;color:white;font-weight:bold;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.onoffswitch-inner:before{content:"EIN";padding-left:12px;color:#eee;transition:background-color 0.5s}.onoffswitch-inner:after{content:"AUS";padding-right:12px;background-color:#eee;color:#999;text-align:right}.onoffswitch-switch{width:30px;margin:-3px;background:#fff;border:2px solid #999;border-radius:50px;position:absolute;top:0;bottom:0;right:58px;-moz-transition:all 0.3s ease-in 0s;-webkit-transition:all 0.3s ease-in 0s;-o-transition:all 0.3s ease-in 0s;transition:all 0.3s ease-in 0s}.onoffswitch-checkbox:checked+.onoffswitch-label .onoffswitch-inner,.onoffswitch-checkbox:checked+.onoffswitch-label .modeswitch-inner{margin-left:0}.onoffswitch-checkbox:checked+.onoffswitch-label .onoffswitch-switch{right:0}.modeswitch-inner:before{content:"MIN";padding-left:12px;background-color:#fff;color:#000}.modeswitch-inner:after{content:"SEC";padding-right:12px;background-color:#fff;color:#000;text-align:right}a.uhr-configlink{cursor:pointer;background:url(../assets/settings.png) no-repeat;width:24px;height:24px;display:inline-block;margin:2px;vertical-align:top}.uhr-controlpanel{border-radius:0.5em;box-shadow:0 0 1em black;background-color:#fff;display:inline-block;padding:0.5em;position:sticky;bottom:0;margin-left:1em}.uhr-controlpanel .content{position:relative}a.uhr-closecontrolpanel{cursor:pointer;display:inline-block;position:absolute;right:0;top:-1em;width:24px;height:24px;background:url(../assets/close.png) no-repeat}#disclaimer{font-size:0.5em}#disclaimer a{color:#444;text-decoration:underline} diff --git a/dist/lib/layout_de.js b/dist/lib/layout_de.js index 1d21d94..b2dc555 100644 --- a/dist/lib/layout_de.js +++ b/dist/lib/layout_de.js @@ -1,2 +1,2 @@ -!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=2)}({2:function(e,t,r){"use strict";r.r(t),r.d(t,"Layout_de",function(){return l});var n={4:[8,9,10,11]},o={4:[1,2,3]},u={5:[1,2,3,4]},i={1:[8,9,10,11]},f={2:[1,2,3,4]},c={2:[5,6,7,8,9,10,11]},l={code:"de",hours:{"0,12":{9:[7,8,9,10,11]},"1,13":{6:[1,2,3,4]},"2,14":{6:[8,9,10,11]},"3,15":{7:[1,2,3,4]},"4,16":{7:[8,9,10,11]},"5,17":{5:[8,9,10,11]},"6,18":{8:[1,2,3,4,5]},"7,19":{9:[1,2,3,4,5,6]},"8,20":{8:[8,9,10,11]},"9,21":{10:[4,5,6,7]},"10,22":{10:[1,2,3,4]},"11,23":{5:[6,7,8]}},letters:["ESKISTAFÜNF","ZEHNZWANZIG","DREIVIERTEL","VORFUNKNACH","HALBAELFÜNF","EINSXAMZWEI","DREIPMJVIER","SECHSNLACHT","SIEBENZWÖLF","ZEHNEUNKUHR"],minutes:{"0,1,2,3,4":{10:[9,10,11]},"5,6,7,8,9":[i,n],"10,11,12,13,14":[f,n],"15,16,17,18,19":[{3:[5,6,7,8,9,10,11]},n],"20,21,22,23,24":[c,n],"25,26,27,28,29":[i,o,u],"30,31,32,33,34":u,"35,36,37,38,39":[i,n,u],"40,41,42,43,44":[c,o],"45,46,47,48,49":{3:[1,2,3,4,5,6,7,8,9,10,11]},"50,51,52,53,54":[f,o],"55,56,57,58,59":[i,o]},permanent:{1:[1,2,4,5,6]},prettyName:"Deutsch",version:2};$.fritteli.uhr.register(l)}}); +!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=2)}({2:function(e,t,r){"use strict";r.r(t),r.d(t,"LayoutDe",function(){return l});var n={4:[8,9,10,11]},o={4:[1,2,3]},u={5:[1,2,3,4]},i={1:[8,9,10,11]},f={2:[1,2,3,4]},c={2:[5,6,7,8,9,10,11]},l={code:"de",hours:{"0,12":{9:[7,8,9,10,11]},"1,13":{6:[1,2,3,4]},"2,14":{6:[8,9,10,11]},"3,15":{7:[1,2,3,4]},"4,16":{7:[8,9,10,11]},"5,17":{5:[8,9,10,11]},"6,18":{8:[1,2,3,4,5]},"7,19":{9:[1,2,3,4,5,6]},"8,20":{8:[8,9,10,11]},"9,21":{10:[4,5,6,7]},"10,22":{10:[1,2,3,4]},"11,23":{5:[6,7,8]}},letters:["ESKISTAFÜNF","ZEHNZWANZIG","DREIVIERTEL","VORFUNKNACH","HALBAELFÜNF","EINSXAMZWEI","DREIPMJVIER","SECHSNLACHT","SIEBENZWÖLF","ZEHNEUNKUHR"],minutes:{"0,1,2,3,4":{10:[9,10,11]},"5,6,7,8,9":[i,n],"10,11,12,13,14":[f,n],"15,16,17,18,19":[{3:[5,6,7,8,9,10,11]},n],"20,21,22,23,24":[c,n],"25,26,27,28,29":[i,o,u],"30,31,32,33,34":u,"35,36,37,38,39":[i,n,u],"40,41,42,43,44":[c,o],"45,46,47,48,49":{3:[1,2,3,4,5,6,7,8,9,10,11]},"50,51,52,53,54":[f,o],"55,56,57,58,59":[i,o]},permanent:{1:[1,2,4,5,6]},prettyName:"Deutsch",version:2};$.fritteli.uhr.register(l)}}); //# sourceMappingURL=layout_de.js.map \ No newline at end of file diff --git a/dist/lib/layout_de.js.map b/dist/lib/layout_de.js.map index 81d365a..8c04dd6 100644 --- a/dist/lib/layout_de.js.map +++ b/dist/lib/layout_de.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/layout/layout-de.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","Layout_de","nach","4","vor","halb","5","fuenf","1","zehn","2","zwanzig","code","hours","0,12","9","1,13","6","2,14","3,15","7","4,16","5,17","6,18","8","7,19","8,20","9,21","10","10,22","11,23","letters","minutes","0,1,2,3,4","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","3","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","prettyName","version","$","fritteli","uhr","register"],"mappings":"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","file":"lib/layout_de.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 2);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst es_ist: WordDefinition = {1: [1, 2, 4, 5, 6]};\nconst uhr: WordDefinition = {10: [9, 10, 11]};\nconst nach: WordDefinition = {4: [8, 9, 10, 11]};\nconst vor: WordDefinition = {4: [1, 2, 3]};\nconst halb: WordDefinition = {5: [1, 2, 3, 4]};\nconst fuenf: WordDefinition = {1: [8, 9, 10, 11]};\nconst zehn: WordDefinition = {2: [1, 2, 3, 4]};\nconst viertel: WordDefinition = {3: [5, 6, 7, 8, 9, 10, 11]};\nconst zwanzig: WordDefinition = {2: [5, 6, 7, 8, 9, 10, 11]};\nconst dreiviertel: WordDefinition = {3: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]};\n\nexport const Layout_de: Layout = {\n code: 'de',\n hours: {\n '0,12': {9: [7, 8, 9, 10, 11]},\n '1,13': {6: [1, 2, 3, 4]},\n '2,14': {6: [8, 9, 10, 11]},\n '3,15': {7: [1, 2, 3, 4]},\n '4,16': {7: [8, 9, 10, 11]},\n '5,17': {5: [8, 9, 10, 11]},\n '6,18': {8: [1, 2, 3, 4, 5]},\n '7,19': {9: [1, 2, 3, 4, 5, 6]},\n '8,20': {8: [8, 9, 10, 11]},\n '9,21': {10: [4, 5, 6, 7]},\n '10,22': {10: [1, 2, 3, 4]},\n '11,23': {5: [6, 7, 8]}\n },\n letters: [\n 'ESKISTAFÜNF',\n 'ZEHNZWANZIG',\n 'DREIVIERTEL',\n 'VORFUNKNACH',\n 'HALBAELFÜNF',\n 'EINSXAMZWEI',\n 'DREIPMJVIER',\n 'SECHSNLACHT',\n 'SIEBENZWÖLF',\n 'ZEHNEUNKUHR'\n ],\n minutes: {\n '0,1,2,3,4': uhr,\n '5,6,7,8,9': [fuenf, nach],\n '10,11,12,13,14': [zehn, nach],\n '15,16,17,18,19': [viertel, nach],\n '20,21,22,23,24': [zwanzig, nach],\n '25,26,27,28,29': [fuenf, vor, halb],\n '30,31,32,33,34': halb,\n '35,36,37,38,39': [fuenf, nach, halb],\n '40,41,42,43,44': [zwanzig, vor],\n '45,46,47,48,49': dreiviertel,\n '50,51,52,53,54': [zehn, vor],\n '55,56,57,58,59': [fuenf, vor]\n },\n permanent: es_ist,\n prettyName: 'Deutsch',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_de);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/layout/layout-de.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","LayoutDe","nach","4","vor","halb","5","fuenf","1","zehn","2","zwanzig","code","hours","0,12","9","1,13","6","2,14","3,15","7","4,16","5,17","6,18","8","7,19","8,20","9,21","10","10,22","11,23","letters","minutes","0,1,2,3,4","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","3","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","prettyName","version","$","fritteli","uhr","register"],"mappings":"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","file":"lib/layout_de.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 2);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst esIst: WordDefinition = {1: [1, 2, 4, 5, 6]};\nconst uhr: WordDefinition = {10: [9, 10, 11]};\nconst nach: WordDefinition = {4: [8, 9, 10, 11]};\nconst vor: WordDefinition = {4: [1, 2, 3]};\nconst halb: WordDefinition = {5: [1, 2, 3, 4]};\nconst fuenf: WordDefinition = {1: [8, 9, 10, 11]};\nconst zehn: WordDefinition = {2: [1, 2, 3, 4]};\nconst viertel: WordDefinition = {3: [5, 6, 7, 8, 9, 10, 11]};\nconst zwanzig: WordDefinition = {2: [5, 6, 7, 8, 9, 10, 11]};\nconst dreiviertel: WordDefinition = {3: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]};\n\nexport const LayoutDe: Layout = {\n code: 'de',\n hours: {\n '0,12': {9: [7, 8, 9, 10, 11]},\n '1,13': {6: [1, 2, 3, 4]},\n '2,14': {6: [8, 9, 10, 11]},\n '3,15': {7: [1, 2, 3, 4]},\n '4,16': {7: [8, 9, 10, 11]},\n '5,17': {5: [8, 9, 10, 11]},\n '6,18': {8: [1, 2, 3, 4, 5]},\n '7,19': {9: [1, 2, 3, 4, 5, 6]},\n '8,20': {8: [8, 9, 10, 11]},\n '9,21': {10: [4, 5, 6, 7]},\n '10,22': {10: [1, 2, 3, 4]},\n '11,23': {5: [6, 7, 8]}\n },\n letters: [\n 'ESKISTAFÜNF',\n 'ZEHNZWANZIG',\n 'DREIVIERTEL',\n 'VORFUNKNACH',\n 'HALBAELFÜNF',\n 'EINSXAMZWEI',\n 'DREIPMJVIER',\n 'SECHSNLACHT',\n 'SIEBENZWÖLF',\n 'ZEHNEUNKUHR'\n ],\n minutes: {\n '0,1,2,3,4': uhr,\n '5,6,7,8,9': [fuenf, nach],\n '10,11,12,13,14': [zehn, nach],\n '15,16,17,18,19': [viertel, nach],\n '20,21,22,23,24': [zwanzig, nach],\n '25,26,27,28,29': [fuenf, vor, halb],\n '30,31,32,33,34': halb,\n '35,36,37,38,39': [fuenf, nach, halb],\n '40,41,42,43,44': [zwanzig, vor],\n '45,46,47,48,49': dreiviertel,\n '50,51,52,53,54': [zehn, vor],\n '55,56,57,58,59': [fuenf, vor]\n },\n permanent: esIst,\n prettyName: 'Deutsch',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutDe);\n"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/lib/layout_de_ch.js b/dist/lib/layout_de_ch.js index 138500c..cdfd9c5 100644 --- a/dist/lib/layout_de_ch.js +++ b/dist/lib/layout_de_ch.js @@ -1,2 +1,2 @@ -!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=3)}({3:function(e,t,r){"use strict";r.r(t),r.d(t,"Layout_de_CH",function(){return a});var n={4:[1,2]},o={3:[9,10,11]},u={4:[4,5,6,7,8]},i={1:[9,10,11]},f={2:[9,10,11]},c={2:[1,2,3,4,5,6]},l={3:[1,2,3,4,5,6]},a={code:"de_CH",hours:{"0,12":{10:[1,2,3,4,5,6]},"1,13":{5:[1,2,3]},"2,14":{5:[4,5,6,7]},"3,15":{5:[9,10,11]},"4,16":{6:[1,2,3,4,5]},"5,17":{6:[6,7,8,9]},"6,18":{7:[1,2,3,4,5,6]},"7,19":{7:[7,8,9,10,11]},"8,20":{8:[1,2,3,4,5]},"9,21":{8:[6,7,8,9]},"10,22":{9:[1,2,3,4]},"11,23":{9:[8,9,10,11]}},letters:["ESKISCHAFÜF","VIERTUBFZÄÄ","ZWÄNZGSIVOR","ABOHAUBIEGE","EISZWÖISDRÜ","VIERIFÜFIQT","SÄCHSISIBNI","ACHTINÜNIEL","ZÄNIERBEUFI","ZWÖUFINAUHR"],minutes:{"5,6,7,8,9":[i,n],"10,11,12,13,14":[f,n],"15,16,17,18,19":[c,n],"20,21,22,23,24":[l,n],"25,26,27,28,29":[i,o,u],"30,31,32,33,34":u,"35,36,37,38,39":[i,n,u],"40,41,42,43,44":[l,o],"45,46,47,48,49":[c,o],"50,51,52,53,54":[f,o],"55,56,57,58,59":[i,o]},permanent:{1:[1,2,4,5,6,7]},prettyName:"Bärndütsch",version:2};$.fritteli.uhr.register(a)}}); +!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=3)}({3:function(e,t,r){"use strict";r.r(t),r.d(t,"LayoutDeCh",function(){return a});var n={4:[1,2]},o={3:[9,10,11]},u={4:[4,5,6,7,8]},i={1:[9,10,11]},f={2:[9,10,11]},c={2:[1,2,3,4,5,6]},l={3:[1,2,3,4,5,6]},a={code:"de_CH",hours:{"0,12":{10:[1,2,3,4,5,6]},"1,13":{5:[1,2,3]},"2,14":{5:[4,5,6,7]},"3,15":{5:[9,10,11]},"4,16":{6:[1,2,3,4,5]},"5,17":{6:[6,7,8,9]},"6,18":{7:[1,2,3,4,5,6]},"7,19":{7:[7,8,9,10,11]},"8,20":{8:[1,2,3,4,5]},"9,21":{8:[6,7,8,9]},"10,22":{9:[1,2,3,4]},"11,23":{9:[8,9,10,11]}},letters:["ESKISCHAFÜF","VIERTUBFZÄÄ","ZWÄNZGSIVOR","ABOHAUBIEGE","EISZWÖISDRÜ","VIERIFÜFIQT","SÄCHSISIBNI","ACHTINÜNIEL","ZÄNIERBEUFI","ZWÖUFINAUHR"],minutes:{"5,6,7,8,9":[i,n],"10,11,12,13,14":[f,n],"15,16,17,18,19":[c,n],"20,21,22,23,24":[l,n],"25,26,27,28,29":[i,o,u],"30,31,32,33,34":u,"35,36,37,38,39":[i,n,u],"40,41,42,43,44":[l,o],"45,46,47,48,49":[c,o],"50,51,52,53,54":[f,o],"55,56,57,58,59":[i,o]},permanent:{1:[1,2,4,5,6,7]},prettyName:"Bärndütsch",version:2};$.fritteli.uhr.register(a)}}); //# sourceMappingURL=layout_de_ch.js.map \ No newline at end of file diff --git a/dist/lib/layout_de_ch.js.map b/dist/lib/layout_de_ch.js.map index 1a0393d..777080d 100644 --- a/dist/lib/layout_de_ch.js.map +++ b/dist/lib/layout_de_ch.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/layout/layout-de_ch.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","Layout_de_CH","ab","4","vor","3","haubi","fuef","1","zae","2","viertu","zwaenzg","code","hours","0,12","10","1,13","5","2,14","3,15","4,16","6","5,17","6,18","7","7,19","8,20","8","9,21","10,22","9","11,23","letters","minutes","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","prettyName","version","$","fritteli","uhr","register"],"mappings":"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","file":"lib/layout_de_ch.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 3);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst es_isch: WordDefinition = {1: [1, 2, 4, 5, 6, 7]};\nconst ab: WordDefinition = {4: [1, 2]};\nconst vor: WordDefinition = {3: [9, 10, 11]};\nconst haubi: WordDefinition = {4: [4, 5, 6, 7, 8]};\nconst fuef: WordDefinition = {1: [9, 10, 11]};\nconst zae: WordDefinition = {2: [9, 10, 11]};\nconst viertu: WordDefinition = {2: [1, 2, 3, 4, 5, 6]};\nconst zwaenzg: WordDefinition = {3: [1, 2, 3, 4, 5, 6]};\n\nexport const Layout_de_CH: Layout = {\n code: 'de_CH',\n hours: {\n '0,12': {10: [1, 2, 3, 4, 5, 6]},\n '1,13': {5: [1, 2, 3]},\n '2,14': {5: [4, 5, 6, 7]},\n '3,15': {5: [9, 10, 11]},\n '4,16': {6: [1, 2, 3, 4, 5]},\n '5,17': {6: [6, 7, 8, 9]},\n '6,18': {7: [1, 2, 3, 4, 5, 6]},\n '7,19': {7: [7, 8, 9, 10, 11]},\n '8,20': {8: [1, 2, 3, 4, 5]},\n '9,21': {8: [6, 7, 8, 9]},\n '10,22': {9: [1, 2, 3, 4]},\n '11,23': {9: [8, 9, 10, 11]}\n },\n letters: [\n 'ESKISCHAFÜF',\n 'VIERTUBFZÄÄ',\n 'ZWÄNZGSIVOR',\n 'ABOHAUBIEGE',\n 'EISZWÖISDRÜ',\n 'VIERIFÜFIQT',\n 'SÄCHSISIBNI',\n 'ACHTINÜNIEL',\n 'ZÄNIERBEUFI',\n 'ZWÖUFINAUHR'\n ],\n minutes: {\n '5,6,7,8,9': [fuef, ab],\n '10,11,12,13,14': [zae, ab],\n '15,16,17,18,19': [viertu, ab],\n '20,21,22,23,24': [zwaenzg, ab],\n '25,26,27,28,29': [fuef, vor, haubi],\n '30,31,32,33,34': haubi,\n '35,36,37,38,39': [fuef, ab, haubi],\n '40,41,42,43,44': [zwaenzg, vor],\n '45,46,47,48,49': [viertu, vor],\n '50,51,52,53,54': [zae, vor],\n '55,56,57,58,59': [fuef, vor]\n },\n permanent: es_isch,\n prettyName: 'Bärndütsch',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_de_CH);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/layout/layout-de_ch.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","LayoutDeCh","ab","4","vor","3","haubi","fuef","1","zae","2","viertu","zwaenzg","code","hours","0,12","10","1,13","5","2,14","3,15","4,16","6","5,17","6,18","7","7,19","8,20","8","9,21","10,22","9","11,23","letters","minutes","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","prettyName","version","$","fritteli","uhr","register"],"mappings":"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","file":"lib/layout_de_ch.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 3);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst esIsch: WordDefinition = {1: [1, 2, 4, 5, 6, 7]};\nconst ab: WordDefinition = {4: [1, 2]};\nconst vor: WordDefinition = {3: [9, 10, 11]};\nconst haubi: WordDefinition = {4: [4, 5, 6, 7, 8]};\nconst fuef: WordDefinition = {1: [9, 10, 11]};\nconst zae: WordDefinition = {2: [9, 10, 11]};\nconst viertu: WordDefinition = {2: [1, 2, 3, 4, 5, 6]};\nconst zwaenzg: WordDefinition = {3: [1, 2, 3, 4, 5, 6]};\n\nexport const LayoutDeCh: Layout = {\n code: 'de_CH',\n hours: {\n '0,12': {10: [1, 2, 3, 4, 5, 6]},\n '1,13': {5: [1, 2, 3]},\n '2,14': {5: [4, 5, 6, 7]},\n '3,15': {5: [9, 10, 11]},\n '4,16': {6: [1, 2, 3, 4, 5]},\n '5,17': {6: [6, 7, 8, 9]},\n '6,18': {7: [1, 2, 3, 4, 5, 6]},\n '7,19': {7: [7, 8, 9, 10, 11]},\n '8,20': {8: [1, 2, 3, 4, 5]},\n '9,21': {8: [6, 7, 8, 9]},\n '10,22': {9: [1, 2, 3, 4]},\n '11,23': {9: [8, 9, 10, 11]}\n },\n letters: [\n 'ESKISCHAFÜF',\n 'VIERTUBFZÄÄ',\n 'ZWÄNZGSIVOR',\n 'ABOHAUBIEGE',\n 'EISZWÖISDRÜ',\n 'VIERIFÜFIQT',\n 'SÄCHSISIBNI',\n 'ACHTINÜNIEL',\n 'ZÄNIERBEUFI',\n 'ZWÖUFINAUHR'\n ],\n minutes: {\n '5,6,7,8,9': [fuef, ab],\n '10,11,12,13,14': [zae, ab],\n '15,16,17,18,19': [viertu, ab],\n '20,21,22,23,24': [zwaenzg, ab],\n '25,26,27,28,29': [fuef, vor, haubi],\n '30,31,32,33,34': haubi,\n '35,36,37,38,39': [fuef, ab, haubi],\n '40,41,42,43,44': [zwaenzg, vor],\n '45,46,47,48,49': [viertu, vor],\n '50,51,52,53,54': [zae, vor],\n '55,56,57,58,59': [fuef, vor]\n },\n permanent: esIsch,\n prettyName: 'Bärndütsch',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutDeCh);\n"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/lib/layout_de_ch_genau.js b/dist/lib/layout_de_ch_genau.js index 225719b..2dd4d6d 100644 --- a/dist/lib/layout_de_ch_genau.js +++ b/dist/lib/layout_de_ch_genau.js @@ -1,2 +1,2 @@ -!function(e){var t={};function r(n){if(t[n])return t[n].exports;var u=t[n]={i:n,l:!1,exports:{}};return e[n].call(u.exports,u,u.exports,r),u.l=!0,u.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var u in e)r.d(n,u,function(t){return e[t]}.bind(null,u));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=4)}({4:function(e,t,r){"use strict";r.r(t),r.d(t,"Layout_de_CH_genau",function(){return l});var n={4:[4,5]},u={4:[1,2,3]},o={4:[7,8,9,10,11]},i={1:[9,10,11]},f={2:[9,10,11]},a={2:[1,2,3,4,5,6]},c={3:[1,2,3,4,5,6]},l={code:"de_CH_genau",hours:{"0,12":{10:[1,2,3,4,5,6]},"1,13":{5:[1,2,3]},"2,14":{5:[4,5,6,7]},"3,15":{5:[9,10,11]},"4,16":{6:[1,2,3,4,5]},"5,17":{6:[6,7,8,9]},"6,18":{7:[1,2,3,4,5,6]},"7,19":{7:[7,8,9,10,11]},"8,20":{8:[1,2,3,4,5]},"9,21":{8:[6,7,8,9]},"10,22":{9:[1,2,3,4]},"11,23":{9:[8,9,10,11]}},letters:["ESKISCHAFÜF","VIERTUBFZÄÄ","ZWÄNZGGENAU","VORABOHAUBI","EISZWÖISDRÜ","VIERIFÜFIQT","SÄCHSISIBNI","ACHTINÜNIEL","ZÄNIERBEUFI","ZWÖUFINAUHR"],minutes:{0:{3:[7,8,9,10,11]},"5,6,7,8,9":[i,n],"10,11,12,13,14":[f,n],"15,16,17,18,19":[a,n],"20,21,22,23,24":[c,n],"25,26,27,28,29":[i,u,o],"30,31,32,33,34":o,"35,36,37,38,39":[i,n,o],"40,41,42,43,44":[c,u],"45,46,47,48,49":[a,u],"50,51,52,53,54":[f,u],"55,56,57,58,59":[i,u]},permanent:{1:[1,2,4,5,6,7]},prettyName:"Bärndütsch (genau)",version:2};$.fritteli.uhr.register(l)}}); +!function(e){var t={};function r(n){if(t[n])return t[n].exports;var u=t[n]={i:n,l:!1,exports:{}};return e[n].call(u.exports,u,u.exports,r),u.l=!0,u.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var u in e)r.d(n,u,function(t){return e[t]}.bind(null,u));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=4)}({4:function(e,t,r){"use strict";r.r(t),r.d(t,"LayoutDeChGenau",function(){return l});var n={4:[4,5]},u={4:[1,2,3]},o={4:[7,8,9,10,11]},i={1:[9,10,11]},f={2:[9,10,11]},a={2:[1,2,3,4,5,6]},c={3:[1,2,3,4,5,6]},l={code:"de_CH_genau",hours:{"0,12":{10:[1,2,3,4,5,6]},"1,13":{5:[1,2,3]},"2,14":{5:[4,5,6,7]},"3,15":{5:[9,10,11]},"4,16":{6:[1,2,3,4,5]},"5,17":{6:[6,7,8,9]},"6,18":{7:[1,2,3,4,5,6]},"7,19":{7:[7,8,9,10,11]},"8,20":{8:[1,2,3,4,5]},"9,21":{8:[6,7,8,9]},"10,22":{9:[1,2,3,4]},"11,23":{9:[8,9,10,11]}},letters:["ESKISCHAFÜF","VIERTUBFZÄÄ","ZWÄNZGGENAU","VORABOHAUBI","EISZWÖISDRÜ","VIERIFÜFIQT","SÄCHSISIBNI","ACHTINÜNIEL","ZÄNIERBEUFI","ZWÖUFINAUHR"],minutes:{0:{3:[7,8,9,10,11]},"5,6,7,8,9":[i,n],"10,11,12,13,14":[f,n],"15,16,17,18,19":[a,n],"20,21,22,23,24":[c,n],"25,26,27,28,29":[i,u,o],"30,31,32,33,34":o,"35,36,37,38,39":[i,n,o],"40,41,42,43,44":[c,u],"45,46,47,48,49":[a,u],"50,51,52,53,54":[f,u],"55,56,57,58,59":[i,u]},permanent:{1:[1,2,4,5,6,7]},prettyName:"Bärndütsch (genau)",version:2};$.fritteli.uhr.register(l)}}); //# sourceMappingURL=layout_de_ch_genau.js.map \ No newline at end of file diff --git a/dist/lib/layout_de_ch_genau.js.map b/dist/lib/layout_de_ch_genau.js.map index abe95a4..ba431c6 100644 --- a/dist/lib/layout_de_ch_genau.js.map +++ b/dist/lib/layout_de_ch_genau.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/layout/layout-de_ch_genau.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","Layout_de_CH_genau","ab","4","vor","haubi","fuef","1","zae","2","viertu","zwaenzg","3","code","hours","0,12","10","1,13","5","2,14","3,15","4,16","6","5,17","6,18","7","7,19","8,20","8","9,21","10,22","9","11,23","letters","minutes","0","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","prettyName","version","$","fritteli","uhr","register"],"mappings":"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","file":"lib/layout_de_ch_genau.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 4);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst es_isch: WordDefinition = {1: [1, 2, 4, 5, 6, 7]};\nconst genau: WordDefinition = {3: [7, 8, 9, 10, 11]};\nconst ab: WordDefinition = {4: [4, 5]};\nconst vor: WordDefinition = {4: [1, 2, 3]};\nconst haubi: WordDefinition = {4: [7, 8, 9, 10, 11]};\nconst fuef: WordDefinition = {1: [9, 10, 11]};\nconst zae: WordDefinition = {2: [9, 10, 11]};\nconst viertu: WordDefinition = {2: [1, 2, 3, 4, 5, 6]};\nconst zwaenzg: WordDefinition = {3: [1, 2, 3, 4, 5, 6]};\n\nexport const Layout_de_CH_genau: Layout = {\n code: 'de_CH_genau',\n hours: {\n '0,12': {10: [1, 2, 3, 4, 5, 6]},\n '1,13': {5: [1, 2, 3]},\n '2,14': {5: [4, 5, 6, 7]},\n '3,15': {5: [9, 10, 11]},\n '4,16': {6: [1, 2, 3, 4, 5]},\n '5,17': {6: [6, 7, 8, 9]},\n '6,18': {7: [1, 2, 3, 4, 5, 6]},\n '7,19': {7: [7, 8, 9, 10, 11]},\n '8,20': {8: [1, 2, 3, 4, 5]},\n '9,21': {8: [6, 7, 8, 9]},\n '10,22': {9: [1, 2, 3, 4]},\n '11,23': {9: [8, 9, 10, 11]}\n },\n letters: [\n 'ESKISCHAFÜF',\n 'VIERTUBFZÄÄ',\n 'ZWÄNZGGENAU',\n 'VORABOHAUBI',\n 'EISZWÖISDRÜ',\n 'VIERIFÜFIQT',\n 'SÄCHSISIBNI',\n 'ACHTINÜNIEL',\n 'ZÄNIERBEUFI',\n 'ZWÖUFINAUHR'\n ],\n minutes: {\n '0': genau,\n '5,6,7,8,9': [fuef, ab],\n '10,11,12,13,14': [zae, ab],\n '15,16,17,18,19': [viertu, ab],\n '20,21,22,23,24': [zwaenzg, ab],\n '25,26,27,28,29': [fuef, vor, haubi],\n '30,31,32,33,34': haubi,\n '35,36,37,38,39': [fuef, ab, haubi],\n '40,41,42,43,44': [zwaenzg, vor],\n '45,46,47,48,49': [viertu, vor],\n '50,51,52,53,54': [zae, vor],\n '55,56,57,58,59': [fuef, vor]\n },\n permanent: es_isch,\n prettyName: 'Bärndütsch (genau)',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_de_CH_genau);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/layout/layout-de_ch_genau.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","LayoutDeChGenau","ab","4","vor","haubi","fuef","1","zae","2","viertu","zwaenzg","3","code","hours","0,12","10","1,13","5","2,14","3,15","4,16","6","5,17","6,18","7","7,19","8,20","8","9,21","10,22","9","11,23","letters","minutes","0","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","prettyName","version","$","fritteli","uhr","register"],"mappings":"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","file":"lib/layout_de_ch_genau.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 4);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst esIsch: WordDefinition = {1: [1, 2, 4, 5, 6, 7]};\nconst genau: WordDefinition = {3: [7, 8, 9, 10, 11]};\nconst ab: WordDefinition = {4: [4, 5]};\nconst vor: WordDefinition = {4: [1, 2, 3]};\nconst haubi: WordDefinition = {4: [7, 8, 9, 10, 11]};\nconst fuef: WordDefinition = {1: [9, 10, 11]};\nconst zae: WordDefinition = {2: [9, 10, 11]};\nconst viertu: WordDefinition = {2: [1, 2, 3, 4, 5, 6]};\nconst zwaenzg: WordDefinition = {3: [1, 2, 3, 4, 5, 6]};\n\nexport const LayoutDeChGenau: Layout = {\n code: 'de_CH_genau',\n hours: {\n '0,12': {10: [1, 2, 3, 4, 5, 6]},\n '1,13': {5: [1, 2, 3]},\n '2,14': {5: [4, 5, 6, 7]},\n '3,15': {5: [9, 10, 11]},\n '4,16': {6: [1, 2, 3, 4, 5]},\n '5,17': {6: [6, 7, 8, 9]},\n '6,18': {7: [1, 2, 3, 4, 5, 6]},\n '7,19': {7: [7, 8, 9, 10, 11]},\n '8,20': {8: [1, 2, 3, 4, 5]},\n '9,21': {8: [6, 7, 8, 9]},\n '10,22': {9: [1, 2, 3, 4]},\n '11,23': {9: [8, 9, 10, 11]}\n },\n letters: [\n 'ESKISCHAFÜF',\n 'VIERTUBFZÄÄ',\n 'ZWÄNZGGENAU',\n 'VORABOHAUBI',\n 'EISZWÖISDRÜ',\n 'VIERIFÜFIQT',\n 'SÄCHSISIBNI',\n 'ACHTINÜNIEL',\n 'ZÄNIERBEUFI',\n 'ZWÖUFINAUHR'\n ],\n minutes: {\n '0': genau,\n '5,6,7,8,9': [fuef, ab],\n '10,11,12,13,14': [zae, ab],\n '15,16,17,18,19': [viertu, ab],\n '20,21,22,23,24': [zwaenzg, ab],\n '25,26,27,28,29': [fuef, vor, haubi],\n '30,31,32,33,34': haubi,\n '35,36,37,38,39': [fuef, ab, haubi],\n '40,41,42,43,44': [zwaenzg, vor],\n '45,46,47,48,49': [viertu, vor],\n '50,51,52,53,54': [zae, vor],\n '55,56,57,58,59': [fuef, vor]\n },\n permanent: esIsch,\n prettyName: 'Bärndütsch (genau)',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutDeChGenau);\n"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/lib/layout_dk.js b/dist/lib/layout_dk.js index b2cfb5e..069e9a6 100644 --- a/dist/lib/layout_dk.js +++ b/dist/lib/layout_dk.js @@ -1,2 +1,2 @@ -!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=5)}({5:function(e,t,r){"use strict";r.r(t),r.d(t,"Layout_dk",function(){return d});var n={4:[4,5,6,7,8,9,10,11]},o={5:[8]},u={5:[4,5,6,7]},i={2:[1,2,3]},f={4:[1,2]},l={3:[4,5,6,7,8]},c={2:[4,5,6,7]},a={6:[8,9,10,11]},d={code:"dk",hours:{"0,12":{10:[8,9,10,11]},"1,13":{7:[1,2]},"2,14":{7:[3,4]},"3,15":{7:[5,6,7]},"4,16":{7:[8,9,10,11]},"5,17":{8:[1,2,3]},"6,18":{8:[4,5,6,7]},"7,19":{8:[9,10,11]},"8,20":{9:[1,2,3,4]},"9,21":{9:[6,7]},"10,22":{9:[10,11]},"11,23":{10:[1,2,3,4,5,6]}},letters:["KLOKKENVERO","FEMTYVESKLA","OJEKVARTVAT","TIAMINUTTER","VEMOVERILMF","MONALISHALV","ETTOTREFIRE","FEMSEKSRSYV","OTTERNIMETI","ELLEVEATOLV"],minutes:{"5,6,7,8,9":[i,n,u],"10,11,12,13,14":[f,n,u],"15,16,17,18,19":[l,u],"20,21,22,23,24":[c,n,u],"25,26,27,28,29":[i,n,o,a],"30,31,32,33,34":[a],"35,36,37,38,39":[i,n,u,a],"40,41,42,43,44":[c,n,o],"45,46,47,48,49":[l,o],"50,51,52,53,54":[f,n,o],"55,56,57,58,59":[i,n,o]},permanent:{1:[1,2,3,4,5,6,7,9,10]},prettyName:"Dansk",version:2};$.fritteli.uhr.register(d)}}); +!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=5)}({5:function(e,t,r){"use strict";r.r(t),r.d(t,"LayoutDk",function(){return d});var n={4:[4,5,6,7,8,9,10,11]},o={5:[8]},u={5:[4,5,6,7]},i={2:[1,2,3]},f={4:[1,2]},l={3:[4,5,6,7,8]},c={2:[4,5,6,7]},a={6:[8,9,10,11]},d={code:"dk",hours:{"0,12":{10:[8,9,10,11]},"1,13":{7:[1,2]},"2,14":{7:[3,4]},"3,15":{7:[5,6,7]},"4,16":{7:[8,9,10,11]},"5,17":{8:[1,2,3]},"6,18":{8:[4,5,6,7]},"7,19":{8:[9,10,11]},"8,20":{9:[1,2,3,4]},"9,21":{9:[6,7]},"10,22":{9:[10,11]},"11,23":{10:[1,2,3,4,5,6]}},letters:["KLOKKENVERO","FEMTYVESKLA","OJEKVARTVAT","TIAMINUTTER","VEMOVERILMF","MONALISHALV","ETTOTREFIRE","FEMSEKSRSYV","OTTERNIMETI","ELLEVEATOLV"],minutes:{"5,6,7,8,9":[i,n,u],"10,11,12,13,14":[f,n,u],"15,16,17,18,19":[l,u],"20,21,22,23,24":[c,n,u],"25,26,27,28,29":[i,n,o,a],"30,31,32,33,34":[a],"35,36,37,38,39":[i,n,u,a],"40,41,42,43,44":[c,n,o],"45,46,47,48,49":[l,o],"50,51,52,53,54":[f,n,o],"55,56,57,58,59":[i,n,o]},permanent:{1:[1,2,3,4,5,6,7,9,10]},prettyName:"Dansk",version:2};$.fritteli.uhr.register(d)}}); //# sourceMappingURL=layout_dk.js.map \ No newline at end of file diff --git a/dist/lib/layout_dk.js.map b/dist/lib/layout_dk.js.map index 6684368..7ca0e6e 100644 --- a/dist/lib/layout_dk.js.map +++ b/dist/lib/layout_dk.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/layout/layout-dk.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","Layout_dk","minutter","4","5","over","fem","2","ti","kvart","3","tyve","halv","6","code","hours","0,12","10","1,13","7","2,14","3,15","4,16","5,17","8","6,18","7,19","8,20","9","9,21","10,22","11,23","letters","minutes","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","1","prettyName","version","$","fritteli","uhr","register"],"mappings":"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","file":"lib/layout_dk.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 5);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst klokken_er: WordDefinition = {1: [1, 2, 3, 4, 5, 6, 7, 9, 10]};\nconst minutter: WordDefinition = {4: [4, 5, 6, 7, 8, 9, 10, 11]};\nconst i: WordDefinition = {5: [8]};\nconst over: WordDefinition = {5: [4, 5, 6, 7]};\nconst fem: WordDefinition = {2: [1, 2, 3]};\nconst ti: WordDefinition = {4: [1, 2]};\nconst kvart: WordDefinition = {3: [4, 5, 6, 7, 8]};\nconst tyve: WordDefinition = {2: [4, 5, 6, 7]};\nconst halv: WordDefinition = {6: [8, 9, 10, 11]};\n\nexport const Layout_dk: Layout = {\n code: 'dk',\n hours: {\n '0,12': {10: [8, 9, 10, 11]},\n '1,13': {7: [1, 2]},\n '2,14': {7: [3, 4]},\n '3,15': {7: [5, 6, 7]},\n '4,16': {7: [8, 9, 10, 11]},\n '5,17': {8: [1, 2, 3]},\n '6,18': {8: [4, 5, 6, 7]},\n '7,19': {8: [9, 10, 11]},\n '8,20': {9: [1, 2, 3, 4]},\n '9,21': {9: [6, 7]},\n '10,22': {9: [10, 11]},\n '11,23': {10: [1, 2, 3, 4, 5, 6]}\n },\n letters: [\n 'KLOKKENVERO',\n 'FEMTYVESKLA',\n 'OJEKVARTVAT',\n 'TIAMINUTTER',\n 'VEMOVERILMF',\n 'MONALISHALV',\n 'ETTOTREFIRE',\n 'FEMSEKSRSYV',\n 'OTTERNIMETI',\n 'ELLEVEATOLV'\n ],\n minutes: {\n '5,6,7,8,9': [fem, minutter, over],\n '10,11,12,13,14': [ti, minutter, over],\n '15,16,17,18,19': [kvart, over],\n '20,21,22,23,24': [tyve, minutter, over],\n '25,26,27,28,29': [fem, minutter, i, halv],\n '30,31,32,33,34': [halv],\n '35,36,37,38,39': [fem, minutter, over, halv],\n '40,41,42,43,44': [tyve, minutter, i],\n '45,46,47,48,49': [kvart, i],\n '50,51,52,53,54': [ti, minutter, i],\n '55,56,57,58,59': [fem, minutter, i]\n },\n permanent: klokken_er,\n prettyName: 'Dansk',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_dk);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/layout/layout-dk.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","LayoutDk","minutter","4","5","over","fem","2","ti","kvart","3","tyve","halv","6","code","hours","0,12","10","1,13","7","2,14","3,15","4,16","5,17","8","6,18","7,19","8,20","9","9,21","10,22","11,23","letters","minutes","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","1","prettyName","version","$","fritteli","uhr","register"],"mappings":"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","file":"lib/layout_dk.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 5);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst klokkenEr: WordDefinition = {1: [1, 2, 3, 4, 5, 6, 7, 9, 10]};\nconst minutter: WordDefinition = {4: [4, 5, 6, 7, 8, 9, 10, 11]};\nconst i: WordDefinition = {5: [8]};\nconst over: WordDefinition = {5: [4, 5, 6, 7]};\nconst fem: WordDefinition = {2: [1, 2, 3]};\nconst ti: WordDefinition = {4: [1, 2]};\nconst kvart: WordDefinition = {3: [4, 5, 6, 7, 8]};\nconst tyve: WordDefinition = {2: [4, 5, 6, 7]};\nconst halv: WordDefinition = {6: [8, 9, 10, 11]};\n\nexport const LayoutDk: Layout = {\n code: 'dk',\n hours: {\n '0,12': {10: [8, 9, 10, 11]},\n '1,13': {7: [1, 2]},\n '2,14': {7: [3, 4]},\n '3,15': {7: [5, 6, 7]},\n '4,16': {7: [8, 9, 10, 11]},\n '5,17': {8: [1, 2, 3]},\n '6,18': {8: [4, 5, 6, 7]},\n '7,19': {8: [9, 10, 11]},\n '8,20': {9: [1, 2, 3, 4]},\n '9,21': {9: [6, 7]},\n '10,22': {9: [10, 11]},\n '11,23': {10: [1, 2, 3, 4, 5, 6]}\n },\n letters: [\n 'KLOKKENVERO',\n 'FEMTYVESKLA',\n 'OJEKVARTVAT',\n 'TIAMINUTTER',\n 'VEMOVERILMF',\n 'MONALISHALV',\n 'ETTOTREFIRE',\n 'FEMSEKSRSYV',\n 'OTTERNIMETI',\n 'ELLEVEATOLV'\n ],\n minutes: {\n '5,6,7,8,9': [fem, minutter, over],\n '10,11,12,13,14': [ti, minutter, over],\n '15,16,17,18,19': [kvart, over],\n '20,21,22,23,24': [tyve, minutter, over],\n '25,26,27,28,29': [fem, minutter, i, halv],\n '30,31,32,33,34': [halv],\n '35,36,37,38,39': [fem, minutter, over, halv],\n '40,41,42,43,44': [tyve, minutter, i],\n '45,46,47,48,49': [kvart, i],\n '50,51,52,53,54': [ti, minutter, i],\n '55,56,57,58,59': [fem, minutter, i]\n },\n permanent: klokkenEr,\n prettyName: 'Dansk',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutDk);\n"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/lib/layout_en.js b/dist/lib/layout_en.js index 0b25cb4..4eac348 100644 --- a/dist/lib/layout_en.js +++ b/dist/lib/layout_en.js @@ -1,2 +1,2 @@ -!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=6)}({6:function(e,t,r){"use strict";r.r(t),r.d(t,"Layout_en",function(){return a});var n={4:[10,11]},o={5:[1,2,3,4]},u={3:[7,8,9,10]},i={4:[6,7,8]},f={2:[1,3,4,5,6,7,8,9]},l={3:[1,2,3,4,5,6]},c={3:[1,2,3,4,5,6,7,8,9,10]},a={code:"en",getHour:function(e){var t=e.getHours();return e.getMinutes()>=35?(t+1)%24:t},hours:{"0,12":{9:[6,7,8,9,10,11]},"1,13":{6:[1,2,3]},"2,14":{7:[9,10,11]},"3,15":{6:[7,8,9,10,11]},"4,16":{7:[1,2,3,4]},"5,17":{7:[5,6,7,8]},"6,18":{6:[4,5,6]},"7,19":{9:[1,2,3,4,5]},"8,20":{8:[1,2,3,4,5]},"9,21":{5:[8,9,10,11]},"10,22":{10:[1,2,3]},"11,23":{8:[6,7,8,9,10,11]}},letters:["ITLISBFAMPM","ACQUARTERDC","TWENTYFIVEX","HALFBTENFTO","PASTERUNINE","ONESIXTHREE","FOURFIVETWO","EIGHTELEVEN","SEVENTWELVE","TENSO'CLOCK"],minutes:{"0,1,2,3,4":{10:[5,6,7,8,9,10,11]},"5,6,7,8,9":[u,o],"10,11,12,13,14":[i,o],"15,16,17,18,19":[f,o],"20,21,22,23,24":[l,o],"25,26,27,28,29":[c,o],"30,31,32,33,34":[{4:[1,2,3,4]},o],"35,36,37,38,39":[c,n],"40,41,42,43,44":[l,n],"45,46,47,48,49":[f,n],"50,51,52,53,54":[i,n],"55,56,57,58,59":[u,n]},permanent:{1:[1,2,4,5]},prettyName:"English",version:2};$.fritteli.uhr.register(a)}}); +!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=6)}({6:function(e,t,r){"use strict";r.r(t),r.d(t,"LayoutEn",function(){return a});var n={4:[10,11]},o={5:[1,2,3,4]},u={3:[7,8,9,10]},i={4:[6,7,8]},f={2:[1,3,4,5,6,7,8,9]},l={3:[1,2,3,4,5,6]},c={3:[1,2,3,4,5,6,7,8,9,10]},a={code:"en",getHour:function(e){var t=e.getHours();return e.getMinutes()>=35?(t+1)%24:t},hours:{"0,12":{9:[6,7,8,9,10,11]},"1,13":{6:[1,2,3]},"2,14":{7:[9,10,11]},"3,15":{6:[7,8,9,10,11]},"4,16":{7:[1,2,3,4]},"5,17":{7:[5,6,7,8]},"6,18":{6:[4,5,6]},"7,19":{9:[1,2,3,4,5]},"8,20":{8:[1,2,3,4,5]},"9,21":{5:[8,9,10,11]},"10,22":{10:[1,2,3]},"11,23":{8:[6,7,8,9,10,11]}},letters:["ITLISBFAMPM","ACQUARTERDC","TWENTYFIVEX","HALFBTENFTO","PASTERUNINE","ONESIXTHREE","FOURFIVETWO","EIGHTELEVEN","SEVENTWELVE","TENSO'CLOCK"],minutes:{"0,1,2,3,4":{10:[5,6,7,8,9,10,11]},"5,6,7,8,9":[u,o],"10,11,12,13,14":[i,o],"15,16,17,18,19":[f,o],"20,21,22,23,24":[l,o],"25,26,27,28,29":[c,o],"30,31,32,33,34":[{4:[1,2,3,4]},o],"35,36,37,38,39":[c,n],"40,41,42,43,44":[l,n],"45,46,47,48,49":[f,n],"50,51,52,53,54":[i,n],"55,56,57,58,59":[u,n]},permanent:{1:[1,2,4,5]},prettyName:"English",version:2};$.fritteli.uhr.register(a)}}); //# sourceMappingURL=layout_en.js.map \ No newline at end of file diff --git a/dist/lib/layout_en.js.map b/dist/lib/layout_en.js.map index 62f819e..8337aa4 100644 --- a/dist/lib/layout_en.js.map +++ b/dist/lib/layout_en.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/layout/layout-en.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","Layout_en","to","4","past","5","five","3","ten","a_quarter","2","twenty","twentyfive","code","getHour","time","hour","getHours","getMinutes","hours","0,12","9","1,13","6","2,14","7","3,15","4,16","5,17","6,18","7,19","8,20","8","9,21","10,22","10","11,23","letters","minutes","0,1,2,3,4","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","1","prettyName","version","$","fritteli","uhr","register"],"mappings":"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","file":"lib/layout_en.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 6);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst it_is: WordDefinition = {1: [1, 2, 4, 5]};\nconst half: WordDefinition = {4: [1, 2, 3, 4]};\nconst to: WordDefinition = {4: [10, 11]};\nconst past: WordDefinition = {5: [1, 2, 3, 4]};\nconst o_clock: WordDefinition = {10: [5, 6, 7, 8, 9, 10, 11]};\nconst five: WordDefinition = {3: [7, 8, 9, 10]};\nconst ten: WordDefinition = {4: [6, 7, 8]};\nconst a_quarter: WordDefinition = {2: [1, 3, 4, 5, 6, 7, 8, 9]};\nconst twenty: WordDefinition = {3: [1, 2, 3, 4, 5, 6]};\nconst twentyfive: WordDefinition = {3: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]};\n\nexport const Layout_en: Layout = {\n code: 'en',\n getHour: (time: Date) => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n\n hours: {\n '0,12': {9: [6, 7, 8, 9, 10, 11]},\n '1,13': {6: [1, 2, 3]},\n '2,14': {7: [9, 10, 11]},\n '3,15': {6: [7, 8, 9, 10, 11]},\n '4,16': {7: [1, 2, 3, 4]},\n '5,17': {7: [5, 6, 7, 8]},\n '6,18': {6: [4, 5, 6]},\n '7,19': {9: [1, 2, 3, 4, 5]},\n '8,20': {8: [1, 2, 3, 4, 5]},\n '9,21': {5: [8, 9, 10, 11]},\n '10,22': {10: [1, 2, 3]},\n '11,23': {8: [6, 7, 8, 9, 10, 11]}\n },\n letters: [\n 'ITLISBFAMPM',\n 'ACQUARTERDC',\n 'TWENTYFIVEX',\n 'HALFBTENFTO',\n 'PASTERUNINE',\n 'ONESIXTHREE',\n 'FOURFIVETWO',\n 'EIGHTELEVEN',\n 'SEVENTWELVE',\n 'TENSO\\'CLOCK'\n ],\n minutes: {\n '0,1,2,3,4': o_clock,\n '5,6,7,8,9': [five, past],\n '10,11,12,13,14': [ten, past],\n '15,16,17,18,19': [a_quarter, past],\n '20,21,22,23,24': [twenty, past],\n '25,26,27,28,29': [twentyfive, past],\n '30,31,32,33,34': [half, past],\n '35,36,37,38,39': [twentyfive, to],\n '40,41,42,43,44': [twenty, to],\n '45,46,47,48,49': [a_quarter, to],\n '50,51,52,53,54': [ten, to],\n '55,56,57,58,59': [five, to]\n },\n permanent: it_is,\n prettyName: 'English',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_en);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/layout/layout-en.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","LayoutEn","to","4","past","5","five","3","ten","aQuarter","2","twenty","twentyfive","code","getHour","time","hour","getHours","getMinutes","hours","0,12","9","1,13","6","2,14","7","3,15","4,16","5,17","6,18","7,19","8,20","8","9,21","10,22","10","11,23","letters","minutes","0,1,2,3,4","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","1","prettyName","version","$","fritteli","uhr","register"],"mappings":"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","file":"lib/layout_en.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 6);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst itIs: WordDefinition = {1: [1, 2, 4, 5]};\nconst half: WordDefinition = {4: [1, 2, 3, 4]};\nconst to: WordDefinition = {4: [10, 11]};\nconst past: WordDefinition = {5: [1, 2, 3, 4]};\nconst oClock: WordDefinition = {10: [5, 6, 7, 8, 9, 10, 11]};\nconst five: WordDefinition = {3: [7, 8, 9, 10]};\nconst ten: WordDefinition = {4: [6, 7, 8]};\nconst aQuarter: WordDefinition = {2: [1, 3, 4, 5, 6, 7, 8, 9]};\nconst twenty: WordDefinition = {3: [1, 2, 3, 4, 5, 6]};\nconst twentyfive: WordDefinition = {3: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]};\n\nexport const LayoutEn: Layout = {\n code: 'en',\n getHour: (time: Date): number => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n\n hours: {\n '0,12': {9: [6, 7, 8, 9, 10, 11]},\n '1,13': {6: [1, 2, 3]},\n '2,14': {7: [9, 10, 11]},\n '3,15': {6: [7, 8, 9, 10, 11]},\n '4,16': {7: [1, 2, 3, 4]},\n '5,17': {7: [5, 6, 7, 8]},\n '6,18': {6: [4, 5, 6]},\n '7,19': {9: [1, 2, 3, 4, 5]},\n '8,20': {8: [1, 2, 3, 4, 5]},\n '9,21': {5: [8, 9, 10, 11]},\n '10,22': {10: [1, 2, 3]},\n '11,23': {8: [6, 7, 8, 9, 10, 11]}\n },\n letters: [\n 'ITLISBFAMPM',\n 'ACQUARTERDC',\n 'TWENTYFIVEX',\n 'HALFBTENFTO',\n 'PASTERUNINE',\n 'ONESIXTHREE',\n 'FOURFIVETWO',\n 'EIGHTELEVEN',\n 'SEVENTWELVE',\n 'TENSO\\'CLOCK'\n ],\n minutes: {\n '0,1,2,3,4': oClock,\n '5,6,7,8,9': [five, past],\n '10,11,12,13,14': [ten, past],\n '15,16,17,18,19': [aQuarter, past],\n '20,21,22,23,24': [twenty, past],\n '25,26,27,28,29': [twentyfive, past],\n '30,31,32,33,34': [half, past],\n '35,36,37,38,39': [twentyfive, to],\n '40,41,42,43,44': [twenty, to],\n '45,46,47,48,49': [aQuarter, to],\n '50,51,52,53,54': [ten, to],\n '55,56,57,58,59': [five, to]\n },\n permanent: itIs,\n prettyName: 'English',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutEn);\n"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/lib/layout_es.js b/dist/lib/layout_es.js index 582b55b..2f207c7 100644 --- a/dist/lib/layout_es.js +++ b/dist/lib/layout_es.js @@ -1,2 +1,2 @@ -!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=7)}({7:function(e,t,r){"use strict";r.r(t),r.d(t,"Layout_es",function(){return s});var n={1:[2,3,4,6,7,8]},o={7:[6]},u={7:[7,8,9,10,11]},i={9:[7,8,9,10,11]},f={8:[8,9,10,11]},l={10:[6,7,8,9,10,11]},c={8:[2,3,4,5,6,7]},a={9:[1,2,3,4,5,6,7,8,9,10,11]},s={code:"es",getHour:function(e){var t=e.getHours();return e.getMinutes()>=35?(t+1)%24:t},hours:{"0,12":[n,{7:[1,2,3,4]}],"1,13":[{1:[1,2,6,7]},{1:[9,10,11]}],"2,14":[n,{2:[1,2,3]}],"3,15":[n,{2:[5,6,7,8]}],"4,16":[n,{3:[1,2,3,4,5,6]}],"5,17":[n,{3:[7,8,9,10,11]}],"6,18":[n,{4:[1,2,3,4]}],"7,19":[n,{4:[6,7,8,9,10]}],"8,20":[n,{5:[1,2,3,4]}],"9,21":[n,{5:[5,6,7,8,9]}],"10,22":[n,{6:[3,4,5,6]}],"11,23":[n,{6:[8,9,10,11]}]},letters:["ESONELASUNA","DOSITRESORE","CUATROCINCO","SEISASIETEN","OCHONUEVEYO","LADIEZSONCE","DOCELYMENOS","OVEINTEDIEZ","VEINTICINCO","MEDIACUARTO"],minutes:{"5,6,7,8,9":[o,i],"10,11,12,13,14":[o,f],"15,16,17,18,19":[o,l],"20,21,22,23,24":[o,c],"25,26,27,28,29":[o,a],"30,31,32,33,34":[o,{10:[1,2,3,4,5]}],"35,36,37,38,39":[u,a],"40,41,42,43,44":[u,c],"45,46,47,48,49":[u,l],"50,51,52,53,54":[u,f],"55,56,57,58,59":[u,i]},permanent:null,prettyName:"Español",version:2};$.fritteli.uhr.register(s)}}); +!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=7)}({7:function(e,t,r){"use strict";r.r(t),r.d(t,"LayoutEs",function(){return s});var n={1:[2,3,4,6,7,8]},o={7:[6]},u={7:[7,8,9,10,11]},i={9:[7,8,9,10,11]},f={8:[8,9,10,11]},l={10:[6,7,8,9,10,11]},c={8:[2,3,4,5,6,7]},a={9:[1,2,3,4,5,6,7,8,9,10,11]},s={code:"es",getHour:function(e){var t=e.getHours();return e.getMinutes()>=35?(t+1)%24:t},hours:{"0,12":[n,{7:[1,2,3,4]}],"1,13":[{1:[1,2,6,7]},{1:[9,10,11]}],"2,14":[n,{2:[1,2,3]}],"3,15":[n,{2:[5,6,7,8]}],"4,16":[n,{3:[1,2,3,4,5,6]}],"5,17":[n,{3:[7,8,9,10,11]}],"6,18":[n,{4:[1,2,3,4]}],"7,19":[n,{4:[6,7,8,9,10]}],"8,20":[n,{5:[1,2,3,4]}],"9,21":[n,{5:[5,6,7,8,9]}],"10,22":[n,{6:[3,4,5,6]}],"11,23":[n,{6:[8,9,10,11]}]},letters:["ESONELASUNA","DOSITRESORE","CUATROCINCO","SEISASIETEN","OCHONUEVEYO","LADIEZSONCE","DOCELYMENOS","OVEINTEDIEZ","VEINTICINCO","MEDIACUARTO"],minutes:{"5,6,7,8,9":[o,i],"10,11,12,13,14":[o,f],"15,16,17,18,19":[o,l],"20,21,22,23,24":[o,c],"25,26,27,28,29":[o,a],"30,31,32,33,34":[o,{10:[1,2,3,4,5]}],"35,36,37,38,39":[u,a],"40,41,42,43,44":[u,c],"45,46,47,48,49":[u,l],"50,51,52,53,54":[u,f],"55,56,57,58,59":[u,i]},permanent:null,prettyName:"Español",version:2};$.fritteli.uhr.register(s)}}); //# sourceMappingURL=layout_es.js.map \ No newline at end of file diff --git a/dist/lib/layout_es.js.map b/dist/lib/layout_es.js.map index ee42ef7..cc53168 100644 --- a/dist/lib/layout_es.js.map +++ b/dist/lib/layout_es.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/layout/layout-es.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","Layout_es","son_las","1","y","7","menos","cinco","9","diez","8","cuarto","10","veinte","veinticinco","code","getHour","time","hour","getHours","getMinutes","hours","0,12","1,13","2,14","2","3,15","4,16","3","5,17","6,18","4","7,19","8,20","5","9,21","10,22","6","11,23","letters","minutes","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","prettyName","version","$","fritteli","uhr","register"],"mappings":"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","file":"lib/layout_es.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 7);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst es_la: WordDefinition = {1: [1, 2, 6, 7]};\nconst son_las: WordDefinition = {1: [2, 3, 4, 6, 7, 8]};\nconst y: WordDefinition = {7: [6]};\nconst menos: WordDefinition = {7: [7, 8, 9, 10, 11]};\nconst media: WordDefinition = {10: [1, 2, 3, 4, 5]};\nconst cinco: WordDefinition = {9: [7, 8, 9, 10, 11]};\nconst diez: WordDefinition = {8: [8, 9, 10, 11]};\nconst cuarto: WordDefinition = {10: [6, 7, 8, 9, 10, 11]};\nconst veinte: WordDefinition = {8: [2, 3, 4, 5, 6, 7]};\nconst veinticinco: WordDefinition = {9: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]};\n\nexport const Layout_es: Layout = {\n code: 'es',\n getHour: (time: Date) => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n\n hours: {\n '0,12': [son_las, {7: [1, 2, 3, 4]}],\n '1,13': [es_la, {1: [9, 10, 11]}],\n '2,14': [son_las, {2: [1, 2, 3]}],\n '3,15': [son_las, {2: [5, 6, 7, 8]}],\n '4,16': [son_las, {3: [1, 2, 3, 4, 5, 6]}],\n '5,17': [son_las, {3: [7, 8, 9, 10, 11]}],\n '6,18': [son_las, {4: [1, 2, 3, 4]}],\n '7,19': [son_las, {4: [6, 7, 8, 9, 10]}],\n '8,20': [son_las, {5: [1, 2, 3, 4]}],\n '9,21': [son_las, {5: [5, 6, 7, 8, 9]}],\n '10,22': [son_las, {6: [3, 4, 5, 6]}],\n '11,23': [son_las, {6: [8, 9, 10, 11]}]\n },\n letters: [\n 'ESONELASUNA',\n 'DOSITRESORE',\n 'CUATROCINCO',\n 'SEISASIETEN',\n 'OCHONUEVEYO',\n 'LADIEZSONCE',\n 'DOCELYMENOS',\n 'OVEINTEDIEZ',\n 'VEINTICINCO',\n 'MEDIACUARTO'\n ],\n minutes: {\n '5,6,7,8,9': [y, cinco],\n '10,11,12,13,14': [y, diez],\n '15,16,17,18,19': [y, cuarto],\n '20,21,22,23,24': [y, veinte],\n '25,26,27,28,29': [y, veinticinco],\n '30,31,32,33,34': [y, media],\n '35,36,37,38,39': [menos, veinticinco],\n '40,41,42,43,44': [menos, veinte],\n '45,46,47,48,49': [menos, cuarto],\n '50,51,52,53,54': [menos, diez],\n '55,56,57,58,59': [menos, cinco]\n },\n permanent: null,\n prettyName: 'Español',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_es);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/layout/layout-es.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","LayoutEs","sonLas","1","y","7","menos","cinco","9","diez","8","cuarto","10","veinte","veinticinco","code","getHour","time","hour","getHours","getMinutes","hours","0,12","1,13","2,14","2","3,15","4,16","3","5,17","6,18","4","7,19","8,20","5","9,21","10,22","6","11,23","letters","minutes","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","prettyName","version","$","fritteli","uhr","register"],"mappings":"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","file":"lib/layout_es.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 7);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst esLa: WordDefinition = {1: [1, 2, 6, 7]};\nconst sonLas: WordDefinition = {1: [2, 3, 4, 6, 7, 8]};\nconst y: WordDefinition = {7: [6]};\nconst menos: WordDefinition = {7: [7, 8, 9, 10, 11]};\nconst media: WordDefinition = {10: [1, 2, 3, 4, 5]};\nconst cinco: WordDefinition = {9: [7, 8, 9, 10, 11]};\nconst diez: WordDefinition = {8: [8, 9, 10, 11]};\nconst cuarto: WordDefinition = {10: [6, 7, 8, 9, 10, 11]};\nconst veinte: WordDefinition = {8: [2, 3, 4, 5, 6, 7]};\nconst veinticinco: WordDefinition = {9: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]};\n\nexport const LayoutEs: Layout = {\n code: 'es',\n getHour: (time: Date): number => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n\n hours: {\n '0,12': [sonLas, {7: [1, 2, 3, 4]}],\n '1,13': [esLa, {1: [9, 10, 11]}],\n '2,14': [sonLas, {2: [1, 2, 3]}],\n '3,15': [sonLas, {2: [5, 6, 7, 8]}],\n '4,16': [sonLas, {3: [1, 2, 3, 4, 5, 6]}],\n '5,17': [sonLas, {3: [7, 8, 9, 10, 11]}],\n '6,18': [sonLas, {4: [1, 2, 3, 4]}],\n '7,19': [sonLas, {4: [6, 7, 8, 9, 10]}],\n '8,20': [sonLas, {5: [1, 2, 3, 4]}],\n '9,21': [sonLas, {5: [5, 6, 7, 8, 9]}],\n '10,22': [sonLas, {6: [3, 4, 5, 6]}],\n '11,23': [sonLas, {6: [8, 9, 10, 11]}]\n },\n letters: [\n 'ESONELASUNA',\n 'DOSITRESORE',\n 'CUATROCINCO',\n 'SEISASIETEN',\n 'OCHONUEVEYO',\n 'LADIEZSONCE',\n 'DOCELYMENOS',\n 'OVEINTEDIEZ',\n 'VEINTICINCO',\n 'MEDIACUARTO'\n ],\n minutes: {\n '5,6,7,8,9': [y, cinco],\n '10,11,12,13,14': [y, diez],\n '15,16,17,18,19': [y, cuarto],\n '20,21,22,23,24': [y, veinte],\n '25,26,27,28,29': [y, veinticinco],\n '30,31,32,33,34': [y, media],\n '35,36,37,38,39': [menos, veinticinco],\n '40,41,42,43,44': [menos, veinte],\n '45,46,47,48,49': [menos, cuarto],\n '50,51,52,53,54': [menos, diez],\n '55,56,57,58,59': [menos, cinco]\n },\n permanent: null,\n prettyName: 'Español',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutEs);\n"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/lib/layout_fr.js b/dist/lib/layout_fr.js index ed3938d..ba01b9f 100644 --- a/dist/lib/layout_fr.js +++ b/dist/lib/layout_fr.js @@ -1,2 +1,2 @@ -!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=8)}({8:function(e,t,r){"use strict";r.r(t),r.d(t,"Layout_fr",function(){return s});var n={8:[1,2]},o={7:[1,2,3,4,5]},u={6:[6,7,8,9,10,11]},i={9:[7,8,9,10]},f={7:[9,10,11]},a={8:[4,5,6,7,8]},c={9:[1,2,3,4,5]},l={9:[1,2,3,4,5,6,7,8,9,10]},s={code:"fr",getHour:function(e){var t=e.getHours();return e.getMinutes()>=35?(t+1)%24:t},hours:{0:{5:[6,7,8,9,10,11]},"1,13":[{3:[5,6,7]},u],"2,14":[{1:[8,9,10,11]},u],"3,15":[{2:[7,8,9,10,11]},u],"4,16":[{2:[1,2,3,4,5,6]},u],"5,17":[{4:[8,9,10,11]},u],"6,18":[{4:[5,6,7]},u],"7,19":[{3:[8,9,10,11]},u],"8,20":[{4:[1,2,3,4]},u],"9,21":[{3:[1,2,3,4]},u],"10,22":[{5:[3,4,5]},u],"11,23":[{6:[1,2,3,4]},u],12:{5:[1,2,3,4]}},letters:["ILNESTODEUX","QUATRETROIS","NEUFUNESEPT","HUITSIXCINQ","MIDIXMINUIT","ONZERHEURES","MOINSOLEDIX","ETRQUARTPMD","VINGT-CINQU","ETSDEMIEPAM"],minutes:{"5,6,7,8,9":i,"10,11,12,13,14":f,"15,16,17,18,19":[n,a],"20,21,22,23,24":c,"25,26,27,28,29":l,"30,31,32,33,34":[n,{10:[4,5,6,7,8]}],"35,36,37,38,39":[o,l],"40,41,42,43,44":[o,c],"45,46,47,48,49":[o,{7:[7,8]},a],"50,51,52,53,54":[o,f],"55,56,57,58,59":[o,i]},permanent:{1:[1,2,4,5,6]},prettyName:"Français",version:2};$.fritteli.uhr.register(s)}}); +!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=8)}({8:function(e,t,r){"use strict";r.r(t),r.d(t,"LayoutFr",function(){return s});var n={8:[1,2]},o={7:[1,2,3,4,5]},u={6:[6,7,8,9,10,11]},i={9:[7,8,9,10]},f={7:[9,10,11]},a={8:[4,5,6,7,8]},c={9:[1,2,3,4,5]},l={9:[1,2,3,4,5,6,7,8,9,10]},s={code:"fr",getHour:function(e){var t=e.getHours();return e.getMinutes()>=35?(t+1)%24:t},hours:{0:{5:[6,7,8,9,10,11]},"1,13":[{3:[5,6,7]},u],"2,14":[{1:[8,9,10,11]},u],"3,15":[{2:[7,8,9,10,11]},u],"4,16":[{2:[1,2,3,4,5,6]},u],"5,17":[{4:[8,9,10,11]},u],"6,18":[{4:[5,6,7]},u],"7,19":[{3:[8,9,10,11]},u],"8,20":[{4:[1,2,3,4]},u],"9,21":[{3:[1,2,3,4]},u],"10,22":[{5:[3,4,5]},u],"11,23":[{6:[1,2,3,4]},u],12:{5:[1,2,3,4]}},letters:["ILNESTODEUX","QUATRETROIS","NEUFUNESEPT","HUITSIXCINQ","MIDIXMINUIT","ONZERHEURES","MOINSOLEDIX","ETRQUARTPMD","VINGT-CINQU","ETSDEMIEPAM"],minutes:{"5,6,7,8,9":i,"10,11,12,13,14":f,"15,16,17,18,19":[n,a],"20,21,22,23,24":c,"25,26,27,28,29":l,"30,31,32,33,34":[n,{10:[4,5,6,7,8]}],"35,36,37,38,39":[o,l],"40,41,42,43,44":[o,c],"45,46,47,48,49":[o,{7:[7,8]},a],"50,51,52,53,54":[o,f],"55,56,57,58,59":[o,i]},permanent:{1:[1,2,4,5,6]},prettyName:"Français",version:2};$.fritteli.uhr.register(s)}}); //# sourceMappingURL=layout_fr.js.map \ No newline at end of file diff --git a/dist/lib/layout_fr.js.map b/dist/lib/layout_fr.js.map index 038b5e0..015316b 100644 --- a/dist/lib/layout_fr.js.map +++ b/dist/lib/layout_fr.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/layout/layout-fr.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","Layout_fr","et","8","moins","7","heures","6","cinq","9","dix","quart","vingt","vingtcinq","code","getHour","time","hour","getHours","getMinutes","hours","0","5","1,13","3","2,14","1","3,15","2","4,16","5,17","4","6,18","7,19","8,20","9,21","10,22","11,23","12","letters","minutes","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","10","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","prettyName","version","$","fritteli","uhr","register"],"mappings":"aACA,IAAAA,EAAA,GAGA,SAAAC,EAAAC,GAGA,GAAAF,EAAAE,GACA,OAAAF,EAAAE,GAAAC,QAGA,IAAAC,EAAAJ,EAAAE,GAAA,CACAG,EAAAH,EACAI,GAAA,EACAH,QAAA,IAUA,OANAI,EAAAL,GAAAM,KAAAJ,EAAAD,QAAAC,IAAAD,QAAAF,GAGAG,EAAAE,GAAA,EAGAF,EAAAD,QAKAF,EAAAQ,EAAAF,EAGAN,EAAAS,EAAAV,EAGAC,EAAAU,EAAA,SAAAR,EAAAS,EAAAC,GACAZ,EAAAa,EAAAX,EAAAS,IACAG,OAAAC,eAAAb,EAAAS,EAAA,CAA0CK,YAAA,EAAAC,IAAAL,KAK1CZ,EAAAkB,EAAA,SAAAhB,GACA,oBAAAiB,eAAAC,aACAN,OAAAC,eAAAb,EAAAiB,OAAAC,YAAA,CAAwDC,MAAA,WAExDP,OAAAC,eAAAb,EAAA,cAAiDmB,OAAA,KAQjDrB,EAAAsB,EAAA,SAAAD,EAAAE,GAEA,GADA,EAAAA,IAAAF,EAAArB,EAAAqB,IACA,EAAAE,EAAA,OAAAF,EACA,KAAAE,GAAA,iBAAAF,QAAAG,WAAA,OAAAH,EACA,IAAAI,EAAAX,OAAAY,OAAA,MAGA,GAFA1B,EAAAkB,EAAAO,GACAX,OAAAC,eAAAU,EAAA,WAAyCT,YAAA,EAAAK,UACzC,EAAAE,GAAA,iBAAAF,EAAA,QAAAM,KAAAN,EAAArB,EAAAU,EAAAe,EAAAE,EAAA,SAAAA,GAAgH,OAAAN,EAAAM,IAAqBC,KAAA,KAAAD,IACrI,OAAAF,GAIAzB,EAAA6B,EAAA,SAAA1B,GACA,IAAAS,EAAAT,KAAAqB,WACA,WAA2B,OAAArB,EAAA,SAC3B,WAAiC,OAAAA,GAEjC,OADAH,EAAAU,EAAAE,EAAA,IAAAA,GACAA,GAIAZ,EAAAa,EAAA,SAAAiB,EAAAC,GAAsD,OAAAjB,OAAAkB,UAAAC,eAAA1B,KAAAuB,EAAAC,IAGtD/B,EAAAkC,EAAA,GAIAlC,IAAAmC,EAAA,oCClFAnC,EAAAkB,EAAAkB,GAAApC,EAAAU,EAAA0B,EAAA,8BAAAC,IAiBA,IACMC,EAAqB,CAACC,EAAG,CAAC,EAAG,IAC7BC,EAAwB,CAACC,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,IAEzCC,EAAyB,CAACC,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,KAE9CC,EAAuB,CAACC,EAAG,CAAC,EAAG,EAAG,EAAG,KACrCC,EAAsB,CAACL,EAAG,CAAC,EAAG,GAAI,KAClCM,EAAwB,CAACR,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,IACzCS,EAAwB,CAACH,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,IACzCI,EAA4B,CAACJ,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,KAErDR,EAAoB,CAC7Ba,KAAM,KACNC,QAAS,SAACC,GACN,IAAMC,EAAOD,EAAKE,WAClB,OAAIF,EAAKG,cAAgB,IACbF,EAAO,GAAK,GAEjBA,GAEXG,MAAO,CACHC,EAAK,CAACC,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,KAC1BC,OAAQ,CACJ,CAACC,EAAG,CAAC,EAAG,EAAG,IACXlB,GAEJmB,OAAQ,CACJ,CAACC,EAAG,CAAC,EAAG,EAAG,GAAI,KACfpB,GAEJqB,OAAQ,CACJ,CAACC,EAAG,CAAC,EAAG,EAAG,EAAG,GAAI,KAClBtB,GAEJuB,OAAQ,CACJ,CAACD,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IACpBtB,GAEJwB,OAAQ,CACJ,CAACC,EAAG,CAAC,EAAG,EAAG,GAAI,KACfzB,GAEJ0B,OAAQ,CACJ,CAACD,EAAG,CAAC,EAAG,EAAG,IACXzB,GAEJ2B,OAAQ,CACJ,CAACT,EAAG,CAAC,EAAG,EAAG,GAAI,KACflB,GAEJ4B,OAAQ,CACJ,CAACH,EAAG,CAAC,EAAG,EAAG,EAAG,IACdzB,GAEJ6B,OAAQ,CACJ,CAACX,EAAG,CAAC,EAAG,EAAG,EAAG,IACdlB,GAEJ8B,QAAS,CACL,CAACd,EAAG,CAAC,EAAG,EAAG,IACXhB,GAEJ+B,QAAS,CACL,CAAC9B,EAAG,CAAC,EAAG,EAAG,EAAG,IACdD,GAEJgC,GAAM,CAAChB,EAAG,CAAC,EAAG,EAAG,EAAG,KAExBiB,QAAS,CACL,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,eAEJC,QAAS,CACLC,YAAajC,EACbkC,iBAAkBhC,EAClBiC,iBAAkB,CAACzC,EAAIS,GACvBiC,iBAAkBhC,EAClBiC,iBAAkBhC,EAClBiC,iBAAkB,CAAC5C,EApFG,CAAC6C,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,KAqFxCC,iBAAkB,CAAC5C,EAAOS,GAC1BoC,iBAAkB,CAAC7C,EAAOQ,GAC1BsC,iBAAkB,CAAC9C,EArFA,CAACC,EAAG,CAAC,EAAG,IAqFGM,GAC9BwC,iBAAkB,CAAC/C,EAAOM,GAC1B0C,iBAAkB,CAAChD,EAAOI,IAE9B6C,UA9F2B,CAAC3B,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,IA+F5C4B,WAAY,WACZC,QAAS,GAGbC,EAAEC,SAASC,IAAIC,SAAS1D","file":"lib/layout_fr.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 8);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst il_est: WordDefinition = {1: [1, 2, 4, 5, 6]};\nconst et: WordDefinition = {8: [1, 2]};\nconst moins: WordDefinition = {7: [1, 2, 3, 4, 5]};\nconst demie: WordDefinition = {10: [4, 5, 6, 7, 8]};\nconst heures: WordDefinition = {6: [6, 7, 8, 9, 10, 11]};\nconst le: WordDefinition = {7: [7, 8]};\nconst cinq: WordDefinition = {9: [7, 8, 9, 10]};\nconst dix: WordDefinition = {7: [9, 10, 11]};\nconst quart: WordDefinition = {8: [4, 5, 6, 7, 8]};\nconst vingt: WordDefinition = {9: [1, 2, 3, 4, 5]};\nconst vingtcinq: WordDefinition = {9: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]};\n\nexport const Layout_fr: Layout = {\n code: 'fr',\n getHour: (time: Date) => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n hours: {\n '0': {5: [6, 7, 8, 9, 10, 11]},\n '1,13': [\n {3: [5, 6, 7]},\n heures\n ],\n '2,14': [\n {1: [8, 9, 10, 11]},\n heures\n ],\n '3,15': [\n {2: [7, 8, 9, 10, 11]},\n heures\n ],\n '4,16': [\n {2: [1, 2, 3, 4, 5, 6]},\n heures\n ],\n '5,17': [\n {4: [8, 9, 10, 11]},\n heures\n ],\n '6,18': [\n {4: [5, 6, 7]},\n heures\n ],\n '7,19': [\n {3: [8, 9, 10, 11]},\n heures\n ],\n '8,20': [\n {4: [1, 2, 3, 4]},\n heures\n ],\n '9,21': [\n {3: [1, 2, 3, 4]},\n heures\n ],\n '10,22': [\n {5: [3, 4, 5]},\n heures\n ],\n '11,23': [\n {6: [1, 2, 3, 4]},\n heures\n ],\n '12': {5: [1, 2, 3, 4]}\n },\n letters: [\n 'ILNESTODEUX',\n 'QUATRETROIS',\n 'NEUFUNESEPT',\n 'HUITSIXCINQ',\n 'MIDIXMINUIT',\n 'ONZERHEURES',\n 'MOINSOLEDIX',\n 'ETRQUARTPMD',\n 'VINGT-CINQU',\n 'ETSDEMIEPAM'\n ],\n minutes: {\n '5,6,7,8,9': cinq,\n '10,11,12,13,14': dix,\n '15,16,17,18,19': [et, quart],\n '20,21,22,23,24': vingt,\n '25,26,27,28,29': vingtcinq,\n '30,31,32,33,34': [et, demie],\n '35,36,37,38,39': [moins, vingtcinq],\n '40,41,42,43,44': [moins, vingt],\n '45,46,47,48,49': [moins, le, quart],\n '50,51,52,53,54': [moins, dix],\n '55,56,57,58,59': [moins, cinq]\n },\n permanent: il_est,\n prettyName: 'Français',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_fr);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/layout/layout-fr.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","LayoutFr","et","8","moins","7","heures","6","cinq","9","dix","quart","vingt","vingtcinq","code","getHour","time","hour","getHours","getMinutes","hours","0","5","1,13","3","2,14","1","3,15","2","4,16","5,17","4","6,18","7,19","8,20","9,21","10,22","11,23","12","letters","minutes","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","10","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","prettyName","version","$","fritteli","uhr","register"],"mappings":"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","file":"lib/layout_fr.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 8);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst ilEst: WordDefinition = {1: [1, 2, 4, 5, 6]};\nconst et: WordDefinition = {8: [1, 2]};\nconst moins: WordDefinition = {7: [1, 2, 3, 4, 5]};\nconst demie: WordDefinition = {10: [4, 5, 6, 7, 8]};\nconst heures: WordDefinition = {6: [6, 7, 8, 9, 10, 11]};\nconst le: WordDefinition = {7: [7, 8]};\nconst cinq: WordDefinition = {9: [7, 8, 9, 10]};\nconst dix: WordDefinition = {7: [9, 10, 11]};\nconst quart: WordDefinition = {8: [4, 5, 6, 7, 8]};\nconst vingt: WordDefinition = {9: [1, 2, 3, 4, 5]};\nconst vingtcinq: WordDefinition = {9: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]};\n\nexport const LayoutFr: Layout = {\n code: 'fr',\n getHour: (time: Date): number => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n hours: {\n '0': {5: [6, 7, 8, 9, 10, 11]},\n '1,13': [\n {3: [5, 6, 7]},\n heures\n ],\n '2,14': [\n {1: [8, 9, 10, 11]},\n heures\n ],\n '3,15': [\n {2: [7, 8, 9, 10, 11]},\n heures\n ],\n '4,16': [\n {2: [1, 2, 3, 4, 5, 6]},\n heures\n ],\n '5,17': [\n {4: [8, 9, 10, 11]},\n heures\n ],\n '6,18': [\n {4: [5, 6, 7]},\n heures\n ],\n '7,19': [\n {3: [8, 9, 10, 11]},\n heures\n ],\n '8,20': [\n {4: [1, 2, 3, 4]},\n heures\n ],\n '9,21': [\n {3: [1, 2, 3, 4]},\n heures\n ],\n '10,22': [\n {5: [3, 4, 5]},\n heures\n ],\n '11,23': [\n {6: [1, 2, 3, 4]},\n heures\n ],\n '12': {5: [1, 2, 3, 4]}\n },\n letters: [\n 'ILNESTODEUX',\n 'QUATRETROIS',\n 'NEUFUNESEPT',\n 'HUITSIXCINQ',\n 'MIDIXMINUIT',\n 'ONZERHEURES',\n 'MOINSOLEDIX',\n 'ETRQUARTPMD',\n 'VINGT-CINQU',\n 'ETSDEMIEPAM'\n ],\n minutes: {\n '5,6,7,8,9': cinq,\n '10,11,12,13,14': dix,\n '15,16,17,18,19': [et, quart],\n '20,21,22,23,24': vingt,\n '25,26,27,28,29': vingtcinq,\n '30,31,32,33,34': [et, demie],\n '35,36,37,38,39': [moins, vingtcinq],\n '40,41,42,43,44': [moins, vingt],\n '45,46,47,48,49': [moins, le, quart],\n '50,51,52,53,54': [moins, dix],\n '55,56,57,58,59': [moins, cinq]\n },\n permanent: ilEst,\n prettyName: 'Français',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutFr);\n"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/lib/layout_it.js b/dist/lib/layout_it.js index 2cade10..92172b9 100644 --- a/dist/lib/layout_it.js +++ b/dist/lib/layout_it.js @@ -1,2 +1,2 @@ -!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=9)}({9:function(e,t,r){"use strict";r.r(t),r.d(t,"Layout_it",function(){return s});var n={1:[1,2,3,4,6,7]},o={8:[1]},u={7:[8,9,10,11]},i={9:[6,7,8,9,10,11]},f={10:[1,2,3,4,5]},l={8:[3,4,6,7,8,9,10,11]},a={9:[1,2,3,4,5]},c={9:[1,2,3,4,5,6,7,8,9,10,11]},s={code:"it",getHour:function(e){var t=e.getHours();return e.getMinutes()>=35?(t+1)%24:t},hours:{"0,12":[n,{5:[1,2,3,4,5,6]}],"1,13":[{2:[1,3,4]},{2:[5,6,7]}],"2,14":[n,{2:[9,10,11]}],"3,15":[n,{3:[1,2,3]}],"4,16":[n,{6:[1,2,3,4,5,6,7]}],"5,17":[n,{7:[1,2,3,4,5,6]}],"6,18":[n,{6:[9,10,11]}],"7,19":[n,{5:[7,8,9,10,11]}],"8,20":[n,{3:[4,5,6,7]}],"9,21":[n,{3:[8,9,10,11]}],"10,22":[n,{4:[1,2,3,4,5]}],"11,23":[n,{4:[6,7,8,9,10,11]}]},letters:["SONORLEBORE","ÈRL'UNASDUE","TREOTTONOVE","DIECIUNDICI","DODICISETTE","QUATTROCSEI","CINQUEAMENO","ECUNOQUARTO","VENTICINQUE","DIECIPMEZZA"],minutes:{"5,6,7,8,9":[o,i],"10,11,12,13,14":[o,f],"15,16,17,18,19":[o,l],"20,21,22,23,24":[o,a],"25,26,27,28,29":[o,c],"30,31,32,33,34":[o,{10:[7,8,9,10,11]}],"35,36,37,38,39":[u,c],"40,41,42,43,44":[u,a],"45,46,47,48,49":[u,l],"50,51,52,53,54":[u,f],"55,56,57,58,59":[u,i]},permanent:null,prettyName:"Italiano",version:2};$.fritteli.uhr.register(s)}}); +!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=9)}({9:function(e,t,r){"use strict";r.r(t),r.d(t,"LayoutIt",function(){return s});var n={1:[1,2,3,4,6,7]},o={8:[1]},u={7:[8,9,10,11]},i={9:[6,7,8,9,10,11]},f={10:[1,2,3,4,5]},l={8:[3,4,6,7,8,9,10,11]},a={9:[1,2,3,4,5]},c={9:[1,2,3,4,5,6,7,8,9,10,11]},s={code:"it",getHour:function(e){var t=e.getHours();return e.getMinutes()>=35?(t+1)%24:t},hours:{"0,12":[n,{5:[1,2,3,4,5,6]}],"1,13":[{2:[1,3,4]},{2:[5,6,7]}],"2,14":[n,{2:[9,10,11]}],"3,15":[n,{3:[1,2,3]}],"4,16":[n,{6:[1,2,3,4,5,6,7]}],"5,17":[n,{7:[1,2,3,4,5,6]}],"6,18":[n,{6:[9,10,11]}],"7,19":[n,{5:[7,8,9,10,11]}],"8,20":[n,{3:[4,5,6,7]}],"9,21":[n,{3:[8,9,10,11]}],"10,22":[n,{4:[1,2,3,4,5]}],"11,23":[n,{4:[6,7,8,9,10,11]}]},letters:["SONORLEBORE","ÈRL'UNASDUE","TREOTTONOVE","DIECIUNDICI","DODICISETTE","QUATTROCSEI","CINQUEAMENO","ECUNOQUARTO","VENTICINQUE","DIECIPMEZZA"],minutes:{"5,6,7,8,9":[o,i],"10,11,12,13,14":[o,f],"15,16,17,18,19":[o,l],"20,21,22,23,24":[o,a],"25,26,27,28,29":[o,c],"30,31,32,33,34":[o,{10:[7,8,9,10,11]}],"35,36,37,38,39":[u,c],"40,41,42,43,44":[u,a],"45,46,47,48,49":[u,l],"50,51,52,53,54":[u,f],"55,56,57,58,59":[u,i]},permanent:null,prettyName:"Italiano",version:2};$.fritteli.uhr.register(s)}}); //# sourceMappingURL=layout_it.js.map \ No newline at end of file diff --git a/dist/lib/layout_it.js.map b/dist/lib/layout_it.js.map index e76c011..880c746 100644 --- a/dist/lib/layout_it.js.map +++ b/dist/lib/layout_it.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/layout/layout-it.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","Layout_it","sono_le","1","e","8","meno","7","cinque","9","dieci","10","un_quarto","venti","venticinque","code","getHour","time","hour","getHours","getMinutes","hours","0,12","5","1,13","2","2,14","3,15","3","4,16","6","5,17","6,18","7,19","8,20","9,21","10,22","4","11,23","letters","minutes","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","prettyName","version","$","fritteli","uhr","register"],"mappings":"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","file":"lib/layout_it.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 9);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst sono_le: WordDefinition = {1: [1, 2, 3, 4, 6, 7]};\nconst e_l: WordDefinition = {2: [1, 3, 4]};\nconst e: WordDefinition = {8: [1]};\nconst meno: WordDefinition = {7: [8, 9, 10, 11]};\nconst mezza: WordDefinition = {10: [7, 8, 9, 10, 11]};\nconst cinque: WordDefinition = {9: [6, 7, 8, 9, 10, 11]};\nconst dieci: WordDefinition = {10: [1, 2, 3, 4, 5]};\nconst un_quarto: WordDefinition = {8: [3, 4, 6, 7, 8, 9, 10, 11]};\nconst venti: WordDefinition = {9: [1, 2, 3, 4, 5]};\nconst venticinque: WordDefinition = {9: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]};\n\nexport const Layout_it: Layout = {\n code: 'it',\n getHour: (time: Date) => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n hours: {\n '0,12': [sono_le, {5: [1, 2, 3, 4, 5, 6]}],\n '1,13': [e_l, {2: [5, 6, 7]}],\n '2,14': [sono_le, {2: [9, 10, 11]}],\n '3,15': [sono_le, {3: [1, 2, 3]}],\n '4,16': [sono_le, {6: [1, 2, 3, 4, 5, 6, 7]}],\n '5,17': [sono_le, {7: [1, 2, 3, 4, 5, 6]}],\n '6,18': [sono_le, {6: [9, 10, 11]}],\n '7,19': [sono_le, {5: [7, 8, 9, 10, 11]}],\n '8,20': [sono_le, {3: [4, 5, 6, 7]}],\n '9,21': [sono_le, {3: [8, 9, 10, 11]}],\n '10,22': [sono_le, {4: [1, 2, 3, 4, 5]}],\n '11,23': [sono_le, {4: [6, 7, 8, 9, 10, 11]}]\n },\n letters: [\n 'SONORLEBORE',\n 'ÈRL\\'UNASDUE',\n 'TREOTTONOVE',\n 'DIECIUNDICI',\n 'DODICISETTE',\n 'QUATTROCSEI',\n 'CINQUEAMENO',\n 'ECUNOQUARTO',\n 'VENTICINQUE',\n 'DIECIPMEZZA'\n ],\n minutes: {\n '5,6,7,8,9': [e, cinque],\n '10,11,12,13,14': [e, dieci],\n '15,16,17,18,19': [e, un_quarto],\n '20,21,22,23,24': [e, venti],\n '25,26,27,28,29': [e, venticinque],\n '30,31,32,33,34': [e, mezza],\n '35,36,37,38,39': [meno, venticinque],\n '40,41,42,43,44': [meno, venti],\n '45,46,47,48,49': [meno, un_quarto],\n '50,51,52,53,54': [meno, dieci],\n '55,56,57,58,59': [meno, cinque]\n },\n permanent: null,\n prettyName: 'Italiano',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_it);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/layout/layout-it.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","LayoutIt","sonoLe","1","e","8","meno","7","cinque","9","dieci","10","unQuarto","venti","venticinque","code","getHour","time","hour","getHours","getMinutes","hours","0,12","5","1,13","2","2,14","3,15","3","4,16","6","5,17","6,18","7,19","8,20","9,21","10,22","4","11,23","letters","minutes","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","prettyName","version","$","fritteli","uhr","register"],"mappings":"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","file":"lib/layout_it.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 9);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst sonoLe: WordDefinition = {1: [1, 2, 3, 4, 6, 7]};\nconst eL: WordDefinition = {2: [1, 3, 4]};\nconst e: WordDefinition = {8: [1]};\nconst meno: WordDefinition = {7: [8, 9, 10, 11]};\nconst mezza: WordDefinition = {10: [7, 8, 9, 10, 11]};\nconst cinque: WordDefinition = {9: [6, 7, 8, 9, 10, 11]};\nconst dieci: WordDefinition = {10: [1, 2, 3, 4, 5]};\nconst unQuarto: WordDefinition = {8: [3, 4, 6, 7, 8, 9, 10, 11]};\nconst venti: WordDefinition = {9: [1, 2, 3, 4, 5]};\nconst venticinque: WordDefinition = {9: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]};\n\nexport const LayoutIt: Layout = {\n code: 'it',\n getHour: (time: Date): number => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n hours: {\n '0,12': [sonoLe, {5: [1, 2, 3, 4, 5, 6]}],\n '1,13': [eL, {2: [5, 6, 7]}],\n '2,14': [sonoLe, {2: [9, 10, 11]}],\n '3,15': [sonoLe, {3: [1, 2, 3]}],\n '4,16': [sonoLe, {6: [1, 2, 3, 4, 5, 6, 7]}],\n '5,17': [sonoLe, {7: [1, 2, 3, 4, 5, 6]}],\n '6,18': [sonoLe, {6: [9, 10, 11]}],\n '7,19': [sonoLe, {5: [7, 8, 9, 10, 11]}],\n '8,20': [sonoLe, {3: [4, 5, 6, 7]}],\n '9,21': [sonoLe, {3: [8, 9, 10, 11]}],\n '10,22': [sonoLe, {4: [1, 2, 3, 4, 5]}],\n '11,23': [sonoLe, {4: [6, 7, 8, 9, 10, 11]}]\n },\n letters: [\n 'SONORLEBORE',\n 'ÈRL\\'UNASDUE',\n 'TREOTTONOVE',\n 'DIECIUNDICI',\n 'DODICISETTE',\n 'QUATTROCSEI',\n 'CINQUEAMENO',\n 'ECUNOQUARTO',\n 'VENTICINQUE',\n 'DIECIPMEZZA'\n ],\n minutes: {\n '5,6,7,8,9': [e, cinque],\n '10,11,12,13,14': [e, dieci],\n '15,16,17,18,19': [e, unQuarto],\n '20,21,22,23,24': [e, venti],\n '25,26,27,28,29': [e, venticinque],\n '30,31,32,33,34': [e, mezza],\n '35,36,37,38,39': [meno, venticinque],\n '40,41,42,43,44': [meno, venti],\n '45,46,47,48,49': [meno, unQuarto],\n '50,51,52,53,54': [meno, dieci],\n '55,56,57,58,59': [meno, cinque]\n },\n permanent: null,\n prettyName: 'Italiano',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutIt);\n"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/lib/layout_nl.js b/dist/lib/layout_nl.js index 5b53b76..4aa6061 100644 --- a/dist/lib/layout_nl.js +++ b/dist/lib/layout_nl.js @@ -1,2 +1,2 @@ -!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=10)}({10:function(e,t,r){"use strict";r.r(t),r.d(t,"Layout_nl",function(){return c});var n={3:[1,2,3,4]},o={2:[8,9,10,11]},u={4:[1,2,3,4]},i={1:[8,9,10,11]},f={2:[1,2,3,4]},l={3:[7,8,9,10,11]},c={code:"nl",getHour:function(e){var t=e.getHours();return e.getMinutes()>=20?(t+1)%24:t},hours:{"0,12":{10:[1,2,3,4,5,6]},"1,13":{5:[8,9,10]},"2,14":{6:[1,2,3,4]},"3,15":{6:[8,9,10,11]},"4,16":{7:[1,2,3,4]},"5,17":{7:[5,6,7,8]},"6,18":{7:[9,10,11]},"7,19":{8:[1,2,3,4,5]},"8,20":{9:[1,2,3,4]},"9,21":{8:[7,8,9,10,11]},"10,22":{9:[5,6,7,8]},"11,23":{9:[9,10,11]}},letters:["HETKISAVIJF","TIENBTZVOOR","OVERMEKWART","HALFSPWOVER","VOORTHGEENS","TWEEPVCDRIE","VIERVIJFZES","ZEVENONEGEN","ACHTTIENELF","TWAALFBFUUR"],minutes:{"0,1,2,3,4":{10:[9,10,11]},"5,6,7,8,9":[i,n],"10,11,12,13,14":[f,n],"15,16,17,18,19":[l,{4:[8,9,10,11]}],"20,21,22,23,24":[f,o,u],"25,26,27,28,29":[i,o,u],"30,31,32,33,34":u,"35,36,37,38,39":[i,n,u],"40,41,42,43,44":[f,n,u],"45,46,47,48,49":[l,{5:[1,2,3,4]}],"50,51,52,53,54":[f,o],"55,56,57,58,59":[i,o]},permanent:{1:[1,2,3,5,6]},prettyName:"Nederlands",version:2};$.fritteli.uhr.register(c)}}); +!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=10)}({10:function(e,t,r){"use strict";r.r(t),r.d(t,"LayoutNl",function(){return c});var n={3:[1,2,3,4]},o={2:[8,9,10,11]},u={4:[1,2,3,4]},i={1:[8,9,10,11]},f={2:[1,2,3,4]},l={3:[7,8,9,10,11]},c={code:"nl",getHour:function(e){var t=e.getHours();return e.getMinutes()>=20?(t+1)%24:t},hours:{"0,12":{10:[1,2,3,4,5,6]},"1,13":{5:[8,9,10]},"2,14":{6:[1,2,3,4]},"3,15":{6:[8,9,10,11]},"4,16":{7:[1,2,3,4]},"5,17":{7:[5,6,7,8]},"6,18":{7:[9,10,11]},"7,19":{8:[1,2,3,4,5]},"8,20":{9:[1,2,3,4]},"9,21":{8:[7,8,9,10,11]},"10,22":{9:[5,6,7,8]},"11,23":{9:[9,10,11]}},letters:["HETKISAVIJF","TIENBTZVOOR","OVERMEKWART","HALFSPWOVER","VOORTHGEENS","TWEEPVCDRIE","VIERVIJFZES","ZEVENONEGEN","ACHTTIENELF","TWAALFBFUUR"],minutes:{"0,1,2,3,4":{10:[9,10,11]},"5,6,7,8,9":[i,n],"10,11,12,13,14":[f,n],"15,16,17,18,19":[l,{4:[8,9,10,11]}],"20,21,22,23,24":[f,o,u],"25,26,27,28,29":[i,o,u],"30,31,32,33,34":u,"35,36,37,38,39":[i,n,u],"40,41,42,43,44":[f,n,u],"45,46,47,48,49":[l,{5:[1,2,3,4]}],"50,51,52,53,54":[f,o],"55,56,57,58,59":[i,o]},permanent:{1:[1,2,3,5,6]},prettyName:"Nederlands",version:2};$.fritteli.uhr.register(c)}}); //# sourceMappingURL=layout_nl.js.map \ No newline at end of file diff --git a/dist/lib/layout_nl.js.map b/dist/lib/layout_nl.js.map index 78aa07e..96d477e 100644 --- a/dist/lib/layout_nl.js.map +++ b/dist/lib/layout_nl.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/layout/layout-nl.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","Layout_nl","over1","3","voor1","2","half","4","vijf","1","tien","kwart","code","getHour","time","hour","getHours","getMinutes","hours","0,12","10","1,13","5","2,14","6","3,15","4,16","7","5,17","6,18","7,19","8","8,20","9","9,21","10,22","11,23","letters","minutes","0,1,2,3,4","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","prettyName","version","$","fritteli","uhr","register"],"mappings":"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","file":"lib/layout_nl.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 10);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst het_is: WordDefinition = {1: [1, 2, 3, 5, 6]};\nconst over1: WordDefinition = {3: [1, 2, 3, 4]};\nconst voor1: WordDefinition = {2: [8, 9, 10, 11]};\nconst over2: WordDefinition = {4: [8, 9, 10, 11]};\nconst voor2: WordDefinition = {5: [1, 2, 3, 4]};\nconst half: WordDefinition = {4: [1, 2, 3, 4]};\nconst vijf: WordDefinition = {1: [8, 9, 10, 11]};\nconst tien: WordDefinition = {2: [1, 2, 3, 4]};\nconst kwart: WordDefinition = {3: [7, 8, 9, 10, 11]};\nconst uur: WordDefinition = {10: [9, 10, 11]};\n\nexport const Layout_nl: Layout = {\n code: 'nl',\n getHour: (time: Date) => {\n const hour = time.getHours();\n if (time.getMinutes() >= 20) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n hours: {\n '0,12': {10: [1, 2, 3, 4, 5, 6]},\n '1,13': {5: [8, 9, 10]},\n '2,14': {6: [1, 2, 3, 4]},\n '3,15': {6: [8, 9, 10, 11]},\n '4,16': {7: [1, 2, 3, 4]},\n '5,17': {7: [5, 6, 7, 8]},\n '6,18': {7: [9, 10, 11]},\n '7,19': {8: [1, 2, 3, 4, 5]},\n '8,20': {9: [1, 2, 3, 4]},\n '9,21': {8: [7, 8, 9, 10, 11]},\n '10,22': {9: [5, 6, 7, 8]},\n '11,23': {9: [9, 10, 11]}\n },\n letters: [\n 'HETKISAVIJF',\n 'TIENBTZVOOR',\n 'OVERMEKWART',\n 'HALFSPWOVER',\n 'VOORTHGEENS',\n 'TWEEPVCDRIE',\n 'VIERVIJFZES',\n 'ZEVENONEGEN',\n 'ACHTTIENELF',\n 'TWAALFBFUUR'\n ],\n minutes: {\n '0,1,2,3,4': uur,\n '5,6,7,8,9': [vijf, over1],\n '10,11,12,13,14': [tien, over1],\n '15,16,17,18,19': [kwart, over2],\n '20,21,22,23,24': [tien, voor1, half],\n '25,26,27,28,29': [vijf, voor1, half],\n '30,31,32,33,34': half,\n '35,36,37,38,39': [vijf, over1, half],\n '40,41,42,43,44': [tien, over1, half],\n '45,46,47,48,49': [kwart, voor2],\n '50,51,52,53,54': [tien, voor1],\n '55,56,57,58,59': [vijf, voor1]\n },\n permanent: het_is,\n prettyName: 'Nederlands',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_nl);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/layout/layout-nl.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","LayoutNl","over1","3","voor1","2","half","4","vijf","1","tien","kwart","code","getHour","time","hour","getHours","getMinutes","hours","0,12","10","1,13","5","2,14","6","3,15","4,16","7","5,17","6,18","7,19","8","8,20","9","9,21","10,22","11,23","letters","minutes","0,1,2,3,4","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","prettyName","version","$","fritteli","uhr","register"],"mappings":"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","file":"lib/layout_nl.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 10);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst hetIs: WordDefinition = {1: [1, 2, 3, 5, 6]};\nconst over1: WordDefinition = {3: [1, 2, 3, 4]};\nconst voor1: WordDefinition = {2: [8, 9, 10, 11]};\nconst over2: WordDefinition = {4: [8, 9, 10, 11]};\nconst voor2: WordDefinition = {5: [1, 2, 3, 4]};\nconst half: WordDefinition = {4: [1, 2, 3, 4]};\nconst vijf: WordDefinition = {1: [8, 9, 10, 11]};\nconst tien: WordDefinition = {2: [1, 2, 3, 4]};\nconst kwart: WordDefinition = {3: [7, 8, 9, 10, 11]};\nconst uur: WordDefinition = {10: [9, 10, 11]};\n\nexport const LayoutNl: Layout = {\n code: 'nl',\n getHour: (time: Date): number => {\n const hour = time.getHours();\n if (time.getMinutes() >= 20) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n hours: {\n '0,12': {10: [1, 2, 3, 4, 5, 6]},\n '1,13': {5: [8, 9, 10]},\n '2,14': {6: [1, 2, 3, 4]},\n '3,15': {6: [8, 9, 10, 11]},\n '4,16': {7: [1, 2, 3, 4]},\n '5,17': {7: [5, 6, 7, 8]},\n '6,18': {7: [9, 10, 11]},\n '7,19': {8: [1, 2, 3, 4, 5]},\n '8,20': {9: [1, 2, 3, 4]},\n '9,21': {8: [7, 8, 9, 10, 11]},\n '10,22': {9: [5, 6, 7, 8]},\n '11,23': {9: [9, 10, 11]}\n },\n letters: [\n 'HETKISAVIJF',\n 'TIENBTZVOOR',\n 'OVERMEKWART',\n 'HALFSPWOVER',\n 'VOORTHGEENS',\n 'TWEEPVCDRIE',\n 'VIERVIJFZES',\n 'ZEVENONEGEN',\n 'ACHTTIENELF',\n 'TWAALFBFUUR'\n ],\n minutes: {\n '0,1,2,3,4': uur,\n '5,6,7,8,9': [vijf, over1],\n '10,11,12,13,14': [tien, over1],\n '15,16,17,18,19': [kwart, over2],\n '20,21,22,23,24': [tien, voor1, half],\n '25,26,27,28,29': [vijf, voor1, half],\n '30,31,32,33,34': half,\n '35,36,37,38,39': [vijf, over1, half],\n '40,41,42,43,44': [tien, over1, half],\n '45,46,47,48,49': [kwart, voor2],\n '50,51,52,53,54': [tien, voor1],\n '55,56,57,58,59': [vijf, voor1]\n },\n permanent: hetIs,\n prettyName: 'Nederlands',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutNl);\n"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/lib/layout_pt.js b/dist/lib/layout_pt.js index 2caaa16..94e4c85 100644 --- a/dist/lib/layout_pt.js +++ b/dist/lib/layout_pt.js @@ -1,2 +1,2 @@ -!function(e){var t={};function r(n){if(t[n])return t[n].exports;var u=t[n]={i:n,l:!1,exports:{}};return e[n].call(u.exports,u,u.exports,r),u.l=!0,u.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var u in e)r.d(n,u,function(t){return e[t]}.bind(null,u));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=11)}({11:function(e,t,r){"use strict";r.r(t),r.d(t,"Layout_pt",function(){return p});var n={1:[1]},u={1:[2,3,4]},o={7:[8]},i={10:[5]},f={7:[7,8,9,10,11]},l={10:[7,8,9,10,11]},c={10:[1,2,3]},a={9:[1,2,4,5,6,7,8,9]},s={8:[1,2,3,4,5]},p={code:"pt",getHour:function(e){var t=e.getHours();return e.getMinutes()>=35?(t+1)%24:t},hours:{0:[n,{6:[2,3,4,5,7,8,9,10,11]}],12:[n,{2:[1,2,3,4,6,7,8]}],"1,13":[n,{1:[5,6,7]}],"2,14":[u,{3:[1,2,3,4]}],"3,15":[u,{1:[8,9,10,11]}],"4,16":[u,{4:[1,2,3,4,5,6]}],"5,17":[u,{5:[1,2,3,4,5]}],"6,18":[u,{3:[4,5,6,7]}],"7,19":[u,{3:[7,8,9,10]}],"8,20":[u,{5:[5,6,7,8]}],"9,21":[u,{4:[8,9,10,11]}],"10,22":[u,{2:[9,10,11]}],"11,23":[u,{5:[8,9,10,11]}]},letters:["ÉSÃOUMATRÊS","MEIOLDIADEZ","DUASEISETEY","QUATROHNOVE","CINCOITONZE","ZMEIALNOITE","HORASYMENOS","VINTECAMEIA","UMVQUARTOPM","DEZOEYCINCO"],minutes:{"5,6,7,8,9":[o,l],"10,11,12,13,14":[o,c],"15,16,17,18,19":[o,a],"20,21,22,23,24":[o,s],"25,26,27,28,29":[o,s,i,l],"30,31,32,33,34":[o,{8:[8,9,10,11]}],"35,36,37,38,39":[f,s,i,l],"40,41,42,43,44":[f,s],"45,46,47,48,49":[f,a],"50,51,52,53,54":[f,c],"55,56,57,58,59":[f,l]},permanent:null,prettyName:"Português",version:2};$.fritteli.uhr.register(p)}}); +!function(e){var t={};function r(n){if(t[n])return t[n].exports;var u=t[n]={i:n,l:!1,exports:{}};return e[n].call(u.exports,u,u.exports,r),u.l=!0,u.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var u in e)r.d(n,u,function(t){return e[t]}.bind(null,u));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=11)}({11:function(e,t,r){"use strict";r.r(t),r.d(t,"LayoutPt",function(){return p});var n={1:[1]},u={1:[2,3,4]},o={7:[8]},i={10:[5]},f={7:[7,8,9,10,11]},l={10:[7,8,9,10,11]},c={10:[1,2,3]},a={9:[1,2,4,5,6,7,8,9]},s={8:[1,2,3,4,5]},p={code:"pt",getHour:function(e){var t=e.getHours();return e.getMinutes()>=35?(t+1)%24:t},hours:{0:[n,{6:[2,3,4,5,7,8,9,10,11]}],12:[n,{2:[1,2,3,4,6,7,8]}],"1,13":[n,{1:[5,6,7]}],"2,14":[u,{3:[1,2,3,4]}],"3,15":[u,{1:[8,9,10,11]}],"4,16":[u,{4:[1,2,3,4,5,6]}],"5,17":[u,{5:[1,2,3,4,5]}],"6,18":[u,{3:[4,5,6,7]}],"7,19":[u,{3:[7,8,9,10]}],"8,20":[u,{5:[5,6,7,8]}],"9,21":[u,{4:[8,9,10,11]}],"10,22":[u,{2:[9,10,11]}],"11,23":[u,{5:[8,9,10,11]}]},letters:["ÉSÃOUMATRÊS","MEIOLDIADEZ","DUASEISETEY","QUATROHNOVE","CINCOITONZE","ZMEIALNOITE","HORASYMENOS","VINTECAMEIA","UMVQUARTOPM","DEZOEYCINCO"],minutes:{"5,6,7,8,9":[o,l],"10,11,12,13,14":[o,c],"15,16,17,18,19":[o,a],"20,21,22,23,24":[o,s],"25,26,27,28,29":[o,s,i,l],"30,31,32,33,34":[o,{8:[8,9,10,11]}],"35,36,37,38,39":[f,s,i,l],"40,41,42,43,44":[f,s],"45,46,47,48,49":[f,a],"50,51,52,53,54":[f,c],"55,56,57,58,59":[f,l]},permanent:null,prettyName:"Português",version:2};$.fritteli.uhr.register(p)}}); //# sourceMappingURL=layout_pt.js.map \ No newline at end of file diff --git a/dist/lib/layout_pt.js.map b/dist/lib/layout_pt.js.map index 5d953e6..dc9464a 100644 --- a/dist/lib/layout_pt.js.map +++ b/dist/lib/layout_pt.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/layout/layout-pt.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","Layout_pt","e_","1","sao","e1","7","e2","10","menos","cinco","dez","um_quarto","9","vinte","8","code","getHour","time","hour","getHours","getMinutes","hours","0","6","12","2","1,13","2,14","3","3,15","4,16","4","5,17","5","6,18","7,19","8,20","9,21","10,22","11,23","letters","minutes","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","prettyName","version","$","fritteli","uhr","register"],"mappings":"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","file":"lib/layout_pt.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 11);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst e_: WordDefinition = {1: [1]};\nconst sao: WordDefinition = {1: [2, 3, 4]};\nconst e1: WordDefinition = {7: [8]};\nconst e2: WordDefinition = {10: [5]};\nconst menos: WordDefinition = {7: [7, 8, 9, 10, 11]};\nconst meia: WordDefinition = {8: [8, 9, 10, 11]};\nconst cinco: WordDefinition = {10: [7, 8, 9, 10, 11]};\nconst dez: WordDefinition = {10: [1, 2, 3]};\nconst um_quarto: WordDefinition = {9: [1, 2, 4, 5, 6, 7, 8, 9]};\nconst vinte: WordDefinition = {8: [1, 2, 3, 4, 5]};\n\nexport const Layout_pt: Layout = {\n code: 'pt',\n getHour: (time: Date) => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n hours: {\n '0': [e_, {'6': [2, 3, 4, 5, 7, 8, 9, 10, 11]}],\n '12': [e_, {'2': [1, 2, 3, 4, 6, 7, 8]}],\n '1,13': [e_, {'1': [5, 6, 7]}],\n '2,14': [sao, {'3': [1, 2, 3, 4]}],\n '3,15': [sao, {'1': [8, 9, 10, 11]}],\n '4,16': [sao, {'4': [1, 2, 3, 4, 5, 6]}],\n '5,17': [sao, {'5': [1, 2, 3, 4, 5]}],\n '6,18': [sao, {'3': [4, 5, 6, 7]}],\n '7,19': [sao, {'3': [7, 8, 9, 10]}],\n '8,20': [sao, {'5': [5, 6, 7, 8]}],\n '9,21': [sao, {'4': [8, 9, 10, 11]}],\n '10,22': [sao, {'2': [9, 10, 11]}],\n '11,23': [sao, {'5': [8, 9, 10, 11]}]\n },\n letters: [\n 'ÉSÃOUMATRÊS',\n 'MEIOLDIADEZ',\n 'DUASEISETEY',\n 'QUATROHNOVE',\n 'CINCOITONZE',\n 'ZMEIALNOITE',\n 'HORASYMENOS',\n 'VINTECAMEIA',\n 'UMVQUARTOPM',\n 'DEZOEYCINCO'\n ],\n minutes: {\n '5,6,7,8,9': [e1, cinco],\n '10,11,12,13,14': [e1, dez],\n '15,16,17,18,19': [e1, um_quarto],\n '20,21,22,23,24': [e1, vinte],\n '25,26,27,28,29': [e1, vinte, e2, cinco],\n '30,31,32,33,34': [e1, meia],\n '35,36,37,38,39': [menos, vinte, e2, cinco],\n '40,41,42,43,44': [menos, vinte],\n '45,46,47,48,49': [menos, um_quarto],\n '50,51,52,53,54': [menos, dez],\n '55,56,57,58,59': [menos, cinco]\n },\n permanent: null,\n prettyName: 'Português',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_pt);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/layout/layout-pt.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","LayoutPt","e","1","sao","e1","7","e2","10","menos","cinco","dez","umQuarto","9","vinte","8","code","getHour","time","hour","getHours","getMinutes","hours","0","6","12","2","1,13","2,14","3","3,15","4,16","4","5,17","5","6,18","7,19","8,20","9,21","10,22","11,23","letters","minutes","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","prettyName","version","$","fritteli","uhr","register"],"mappings":"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","file":"lib/layout_pt.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 11);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst e: WordDefinition = {1: [1]};\nconst sao: WordDefinition = {1: [2, 3, 4]};\nconst e1: WordDefinition = {7: [8]};\nconst e2: WordDefinition = {10: [5]};\nconst menos: WordDefinition = {7: [7, 8, 9, 10, 11]};\nconst meia: WordDefinition = {8: [8, 9, 10, 11]};\nconst cinco: WordDefinition = {10: [7, 8, 9, 10, 11]};\nconst dez: WordDefinition = {10: [1, 2, 3]};\nconst umQuarto: WordDefinition = {9: [1, 2, 4, 5, 6, 7, 8, 9]};\nconst vinte: WordDefinition = {8: [1, 2, 3, 4, 5]};\n\nexport const LayoutPt: Layout = {\n code: 'pt',\n getHour: (time: Date): number => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n hours: {\n '0': [e, {'6': [2, 3, 4, 5, 7, 8, 9, 10, 11]}],\n '12': [e, {'2': [1, 2, 3, 4, 6, 7, 8]}],\n '1,13': [e, {'1': [5, 6, 7]}],\n '2,14': [sao, {'3': [1, 2, 3, 4]}],\n '3,15': [sao, {'1': [8, 9, 10, 11]}],\n '4,16': [sao, {'4': [1, 2, 3, 4, 5, 6]}],\n '5,17': [sao, {'5': [1, 2, 3, 4, 5]}],\n '6,18': [sao, {'3': [4, 5, 6, 7]}],\n '7,19': [sao, {'3': [7, 8, 9, 10]}],\n '8,20': [sao, {'5': [5, 6, 7, 8]}],\n '9,21': [sao, {'4': [8, 9, 10, 11]}],\n '10,22': [sao, {'2': [9, 10, 11]}],\n '11,23': [sao, {'5': [8, 9, 10, 11]}]\n },\n letters: [\n 'ÉSÃOUMATRÊS',\n 'MEIOLDIADEZ',\n 'DUASEISETEY',\n 'QUATROHNOVE',\n 'CINCOITONZE',\n 'ZMEIALNOITE',\n 'HORASYMENOS',\n 'VINTECAMEIA',\n 'UMVQUARTOPM',\n 'DEZOEYCINCO'\n ],\n minutes: {\n '5,6,7,8,9': [e1, cinco],\n '10,11,12,13,14': [e1, dez],\n '15,16,17,18,19': [e1, umQuarto],\n '20,21,22,23,24': [e1, vinte],\n '25,26,27,28,29': [e1, vinte, e2, cinco],\n '30,31,32,33,34': [e1, meia],\n '35,36,37,38,39': [menos, vinte, e2, cinco],\n '40,41,42,43,44': [menos, vinte],\n '45,46,47,48,49': [menos, umQuarto],\n '50,51,52,53,54': [menos, dez],\n '55,56,57,58,59': [menos, cinco]\n },\n permanent: null,\n prettyName: 'Português',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutPt);\n"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/lib/uhr.bundle.js b/dist/lib/uhr.bundle.js index 604481b..2008eee 100644 --- a/dist/lib/uhr.bundle.js +++ b/dist/lib/uhr.bundle.js @@ -1,2 +1,2 @@ -!function(t){var e={};function n(i){if(e[i])return e[i].exports;var o=e[i]={i:i,l:!1,exports:{}};return t[i].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(i,o,function(e){return t[e]}.bind(null,o));return i},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=13)}([function(t,e){t.exports=Cookies},function(t,e){t.exports=jQuery},function(t,e,n){"use strict";n.r(e),n.d(e,"Layout_de",function(){return h});var i={4:[8,9,10,11]},o={4:[1,2,3]},r={5:[1,2,3,4]},s={1:[8,9,10,11]},u={2:[1,2,3,4]},a={2:[5,6,7,8,9,10,11]},h={code:"de",hours:{"0,12":{9:[7,8,9,10,11]},"1,13":{6:[1,2,3,4]},"2,14":{6:[8,9,10,11]},"3,15":{7:[1,2,3,4]},"4,16":{7:[8,9,10,11]},"5,17":{5:[8,9,10,11]},"6,18":{8:[1,2,3,4,5]},"7,19":{9:[1,2,3,4,5,6]},"8,20":{8:[8,9,10,11]},"9,21":{10:[4,5,6,7]},"10,22":{10:[1,2,3,4]},"11,23":{5:[6,7,8]}},letters:["ESKISTAFÜNF","ZEHNZWANZIG","DREIVIERTEL","VORFUNKNACH","HALBAELFÜNF","EINSXAMZWEI","DREIPMJVIER","SECHSNLACHT","SIEBENZWÖLF","ZEHNEUNKUHR"],minutes:{"0,1,2,3,4":{10:[9,10,11]},"5,6,7,8,9":[s,i],"10,11,12,13,14":[u,i],"15,16,17,18,19":[{3:[5,6,7,8,9,10,11]},i],"20,21,22,23,24":[a,i],"25,26,27,28,29":[s,o,r],"30,31,32,33,34":r,"35,36,37,38,39":[s,i,r],"40,41,42,43,44":[a,o],"45,46,47,48,49":{3:[1,2,3,4,5,6,7,8,9,10,11]},"50,51,52,53,54":[u,o],"55,56,57,58,59":[s,o]},permanent:{1:[1,2,4,5,6]},prettyName:"Deutsch",version:2};$.fritteli.uhr.register(h)},function(t,e,n){"use strict";n.r(e),n.d(e,"Layout_de_CH",function(){return c});var i={4:[1,2]},o={3:[9,10,11]},r={4:[4,5,6,7,8]},s={1:[9,10,11]},u={2:[9,10,11]},a={2:[1,2,3,4,5,6]},h={3:[1,2,3,4,5,6]},c={code:"de_CH",hours:{"0,12":{10:[1,2,3,4,5,6]},"1,13":{5:[1,2,3]},"2,14":{5:[4,5,6,7]},"3,15":{5:[9,10,11]},"4,16":{6:[1,2,3,4,5]},"5,17":{6:[6,7,8,9]},"6,18":{7:[1,2,3,4,5,6]},"7,19":{7:[7,8,9,10,11]},"8,20":{8:[1,2,3,4,5]},"9,21":{8:[6,7,8,9]},"10,22":{9:[1,2,3,4]},"11,23":{9:[8,9,10,11]}},letters:["ESKISCHAFÜF","VIERTUBFZÄÄ","ZWÄNZGSIVOR","ABOHAUBIEGE","EISZWÖISDRÜ","VIERIFÜFIQT","SÄCHSISIBNI","ACHTINÜNIEL","ZÄNIERBEUFI","ZWÖUFINAUHR"],minutes:{"5,6,7,8,9":[s,i],"10,11,12,13,14":[u,i],"15,16,17,18,19":[a,i],"20,21,22,23,24":[h,i],"25,26,27,28,29":[s,o,r],"30,31,32,33,34":r,"35,36,37,38,39":[s,i,r],"40,41,42,43,44":[h,o],"45,46,47,48,49":[a,o],"50,51,52,53,54":[u,o],"55,56,57,58,59":[s,o]},permanent:{1:[1,2,4,5,6,7]},prettyName:"Bärndütsch",version:2};$.fritteli.uhr.register(c)},function(t,e,n){"use strict";n.r(e),n.d(e,"Layout_de_CH_genau",function(){return c});var i={4:[4,5]},o={4:[1,2,3]},r={4:[7,8,9,10,11]},s={1:[9,10,11]},u={2:[9,10,11]},a={2:[1,2,3,4,5,6]},h={3:[1,2,3,4,5,6]},c={code:"de_CH_genau",hours:{"0,12":{10:[1,2,3,4,5,6]},"1,13":{5:[1,2,3]},"2,14":{5:[4,5,6,7]},"3,15":{5:[9,10,11]},"4,16":{6:[1,2,3,4,5]},"5,17":{6:[6,7,8,9]},"6,18":{7:[1,2,3,4,5,6]},"7,19":{7:[7,8,9,10,11]},"8,20":{8:[1,2,3,4,5]},"9,21":{8:[6,7,8,9]},"10,22":{9:[1,2,3,4]},"11,23":{9:[8,9,10,11]}},letters:["ESKISCHAFÜF","VIERTUBFZÄÄ","ZWÄNZGGENAU","VORABOHAUBI","EISZWÖISDRÜ","VIERIFÜFIQT","SÄCHSISIBNI","ACHTINÜNIEL","ZÄNIERBEUFI","ZWÖUFINAUHR"],minutes:{0:{3:[7,8,9,10,11]},"5,6,7,8,9":[s,i],"10,11,12,13,14":[u,i],"15,16,17,18,19":[a,i],"20,21,22,23,24":[h,i],"25,26,27,28,29":[s,o,r],"30,31,32,33,34":r,"35,36,37,38,39":[s,i,r],"40,41,42,43,44":[h,o],"45,46,47,48,49":[a,o],"50,51,52,53,54":[u,o],"55,56,57,58,59":[s,o]},permanent:{1:[1,2,4,5,6,7]},prettyName:"Bärndütsch (genau)",version:2};$.fritteli.uhr.register(c)},function(t,e,n){"use strict";n.r(e),n.d(e,"Layout_dk",function(){return d});var i={4:[4,5,6,7,8,9,10,11]},o={5:[8]},r={5:[4,5,6,7]},s={2:[1,2,3]},u={4:[1,2]},a={3:[4,5,6,7,8]},h={2:[4,5,6,7]},c={6:[8,9,10,11]},d={code:"dk",hours:{"0,12":{10:[8,9,10,11]},"1,13":{7:[1,2]},"2,14":{7:[3,4]},"3,15":{7:[5,6,7]},"4,16":{7:[8,9,10,11]},"5,17":{8:[1,2,3]},"6,18":{8:[4,5,6,7]},"7,19":{8:[9,10,11]},"8,20":{9:[1,2,3,4]},"9,21":{9:[6,7]},"10,22":{9:[10,11]},"11,23":{10:[1,2,3,4,5,6]}},letters:["KLOKKENVERO","FEMTYVESKLA","OJEKVARTVAT","TIAMINUTTER","VEMOVERILMF","MONALISHALV","ETTOTREFIRE","FEMSEKSRSYV","OTTERNIMETI","ELLEVEATOLV"],minutes:{"5,6,7,8,9":[s,i,r],"10,11,12,13,14":[u,i,r],"15,16,17,18,19":[a,r],"20,21,22,23,24":[h,i,r],"25,26,27,28,29":[s,i,o,c],"30,31,32,33,34":[c],"35,36,37,38,39":[s,i,r,c],"40,41,42,43,44":[h,i,o],"45,46,47,48,49":[a,o],"50,51,52,53,54":[u,i,o],"55,56,57,58,59":[s,i,o]},permanent:{1:[1,2,3,4,5,6,7,9,10]},prettyName:"Dansk",version:2};$.fritteli.uhr.register(d)},function(t,e,n){"use strict";n.r(e),n.d(e,"Layout_en",function(){return c});var i={4:[10,11]},o={5:[1,2,3,4]},r={3:[7,8,9,10]},s={4:[6,7,8]},u={2:[1,3,4,5,6,7,8,9]},a={3:[1,2,3,4,5,6]},h={3:[1,2,3,4,5,6,7,8,9,10]},c={code:"en",getHour:function(t){var e=t.getHours();return t.getMinutes()>=35?(e+1)%24:e},hours:{"0,12":{9:[6,7,8,9,10,11]},"1,13":{6:[1,2,3]},"2,14":{7:[9,10,11]},"3,15":{6:[7,8,9,10,11]},"4,16":{7:[1,2,3,4]},"5,17":{7:[5,6,7,8]},"6,18":{6:[4,5,6]},"7,19":{9:[1,2,3,4,5]},"8,20":{8:[1,2,3,4,5]},"9,21":{5:[8,9,10,11]},"10,22":{10:[1,2,3]},"11,23":{8:[6,7,8,9,10,11]}},letters:["ITLISBFAMPM","ACQUARTERDC","TWENTYFIVEX","HALFBTENFTO","PASTERUNINE","ONESIXTHREE","FOURFIVETWO","EIGHTELEVEN","SEVENTWELVE","TENSO'CLOCK"],minutes:{"0,1,2,3,4":{10:[5,6,7,8,9,10,11]},"5,6,7,8,9":[r,o],"10,11,12,13,14":[s,o],"15,16,17,18,19":[u,o],"20,21,22,23,24":[a,o],"25,26,27,28,29":[h,o],"30,31,32,33,34":[{4:[1,2,3,4]},o],"35,36,37,38,39":[h,i],"40,41,42,43,44":[a,i],"45,46,47,48,49":[u,i],"50,51,52,53,54":[s,i],"55,56,57,58,59":[r,i]},permanent:{1:[1,2,4,5]},prettyName:"English",version:2};$.fritteli.uhr.register(c)},function(t,e,n){"use strict";n.r(e),n.d(e,"Layout_es",function(){return d});var i={1:[2,3,4,6,7,8]},o={7:[6]},r={7:[7,8,9,10,11]},s={9:[7,8,9,10,11]},u={8:[8,9,10,11]},a={10:[6,7,8,9,10,11]},h={8:[2,3,4,5,6,7]},c={9:[1,2,3,4,5,6,7,8,9,10,11]},d={code:"es",getHour:function(t){var e=t.getHours();return t.getMinutes()>=35?(e+1)%24:e},hours:{"0,12":[i,{7:[1,2,3,4]}],"1,13":[{1:[1,2,6,7]},{1:[9,10,11]}],"2,14":[i,{2:[1,2,3]}],"3,15":[i,{2:[5,6,7,8]}],"4,16":[i,{3:[1,2,3,4,5,6]}],"5,17":[i,{3:[7,8,9,10,11]}],"6,18":[i,{4:[1,2,3,4]}],"7,19":[i,{4:[6,7,8,9,10]}],"8,20":[i,{5:[1,2,3,4]}],"9,21":[i,{5:[5,6,7,8,9]}],"10,22":[i,{6:[3,4,5,6]}],"11,23":[i,{6:[8,9,10,11]}]},letters:["ESONELASUNA","DOSITRESORE","CUATROCINCO","SEISASIETEN","OCHONUEVEYO","LADIEZSONCE","DOCELYMENOS","OVEINTEDIEZ","VEINTICINCO","MEDIACUARTO"],minutes:{"5,6,7,8,9":[o,s],"10,11,12,13,14":[o,u],"15,16,17,18,19":[o,a],"20,21,22,23,24":[o,h],"25,26,27,28,29":[o,c],"30,31,32,33,34":[o,{10:[1,2,3,4,5]}],"35,36,37,38,39":[r,c],"40,41,42,43,44":[r,h],"45,46,47,48,49":[r,a],"50,51,52,53,54":[r,u],"55,56,57,58,59":[r,s]},permanent:null,prettyName:"Español",version:2};$.fritteli.uhr.register(d)},function(t,e,n){"use strict";n.r(e),n.d(e,"Layout_fr",function(){return d});var i={8:[1,2]},o={7:[1,2,3,4,5]},r={6:[6,7,8,9,10,11]},s={9:[7,8,9,10]},u={7:[9,10,11]},a={8:[4,5,6,7,8]},h={9:[1,2,3,4,5]},c={9:[1,2,3,4,5,6,7,8,9,10]},d={code:"fr",getHour:function(t){var e=t.getHours();return t.getMinutes()>=35?(e+1)%24:e},hours:{0:{5:[6,7,8,9,10,11]},"1,13":[{3:[5,6,7]},r],"2,14":[{1:[8,9,10,11]},r],"3,15":[{2:[7,8,9,10,11]},r],"4,16":[{2:[1,2,3,4,5,6]},r],"5,17":[{4:[8,9,10,11]},r],"6,18":[{4:[5,6,7]},r],"7,19":[{3:[8,9,10,11]},r],"8,20":[{4:[1,2,3,4]},r],"9,21":[{3:[1,2,3,4]},r],"10,22":[{5:[3,4,5]},r],"11,23":[{6:[1,2,3,4]},r],12:{5:[1,2,3,4]}},letters:["ILNESTODEUX","QUATRETROIS","NEUFUNESEPT","HUITSIXCINQ","MIDIXMINUIT","ONZERHEURES","MOINSOLEDIX","ETRQUARTPMD","VINGT-CINQU","ETSDEMIEPAM"],minutes:{"5,6,7,8,9":s,"10,11,12,13,14":u,"15,16,17,18,19":[i,a],"20,21,22,23,24":h,"25,26,27,28,29":c,"30,31,32,33,34":[i,{10:[4,5,6,7,8]}],"35,36,37,38,39":[o,c],"40,41,42,43,44":[o,h],"45,46,47,48,49":[o,{7:[7,8]},a],"50,51,52,53,54":[o,u],"55,56,57,58,59":[o,s]},permanent:{1:[1,2,4,5,6]},prettyName:"Français",version:2};$.fritteli.uhr.register(d)},function(t,e,n){"use strict";n.r(e),n.d(e,"Layout_it",function(){return d});var i={1:[1,2,3,4,6,7]},o={8:[1]},r={7:[8,9,10,11]},s={9:[6,7,8,9,10,11]},u={10:[1,2,3,4,5]},a={8:[3,4,6,7,8,9,10,11]},h={9:[1,2,3,4,5]},c={9:[1,2,3,4,5,6,7,8,9,10,11]},d={code:"it",getHour:function(t){var e=t.getHours();return t.getMinutes()>=35?(e+1)%24:e},hours:{"0,12":[i,{5:[1,2,3,4,5,6]}],"1,13":[{2:[1,3,4]},{2:[5,6,7]}],"2,14":[i,{2:[9,10,11]}],"3,15":[i,{3:[1,2,3]}],"4,16":[i,{6:[1,2,3,4,5,6,7]}],"5,17":[i,{7:[1,2,3,4,5,6]}],"6,18":[i,{6:[9,10,11]}],"7,19":[i,{5:[7,8,9,10,11]}],"8,20":[i,{3:[4,5,6,7]}],"9,21":[i,{3:[8,9,10,11]}],"10,22":[i,{4:[1,2,3,4,5]}],"11,23":[i,{4:[6,7,8,9,10,11]}]},letters:["SONORLEBORE","ÈRL'UNASDUE","TREOTTONOVE","DIECIUNDICI","DODICISETTE","QUATTROCSEI","CINQUEAMENO","ECUNOQUARTO","VENTICINQUE","DIECIPMEZZA"],minutes:{"5,6,7,8,9":[o,s],"10,11,12,13,14":[o,u],"15,16,17,18,19":[o,a],"20,21,22,23,24":[o,h],"25,26,27,28,29":[o,c],"30,31,32,33,34":[o,{10:[7,8,9,10,11]}],"35,36,37,38,39":[r,c],"40,41,42,43,44":[r,h],"45,46,47,48,49":[r,a],"50,51,52,53,54":[r,u],"55,56,57,58,59":[r,s]},permanent:null,prettyName:"Italiano",version:2};$.fritteli.uhr.register(d)},function(t,e,n){"use strict";n.r(e),n.d(e,"Layout_nl",function(){return h});var i={3:[1,2,3,4]},o={2:[8,9,10,11]},r={4:[1,2,3,4]},s={1:[8,9,10,11]},u={2:[1,2,3,4]},a={3:[7,8,9,10,11]},h={code:"nl",getHour:function(t){var e=t.getHours();return t.getMinutes()>=20?(e+1)%24:e},hours:{"0,12":{10:[1,2,3,4,5,6]},"1,13":{5:[8,9,10]},"2,14":{6:[1,2,3,4]},"3,15":{6:[8,9,10,11]},"4,16":{7:[1,2,3,4]},"5,17":{7:[5,6,7,8]},"6,18":{7:[9,10,11]},"7,19":{8:[1,2,3,4,5]},"8,20":{9:[1,2,3,4]},"9,21":{8:[7,8,9,10,11]},"10,22":{9:[5,6,7,8]},"11,23":{9:[9,10,11]}},letters:["HETKISAVIJF","TIENBTZVOOR","OVERMEKWART","HALFSPWOVER","VOORTHGEENS","TWEEPVCDRIE","VIERVIJFZES","ZEVENONEGEN","ACHTTIENELF","TWAALFBFUUR"],minutes:{"0,1,2,3,4":{10:[9,10,11]},"5,6,7,8,9":[s,i],"10,11,12,13,14":[u,i],"15,16,17,18,19":[a,{4:[8,9,10,11]}],"20,21,22,23,24":[u,o,r],"25,26,27,28,29":[s,o,r],"30,31,32,33,34":r,"35,36,37,38,39":[s,i,r],"40,41,42,43,44":[u,i,r],"45,46,47,48,49":[a,{5:[1,2,3,4]}],"50,51,52,53,54":[u,o],"55,56,57,58,59":[s,o]},permanent:{1:[1,2,3,5,6]},prettyName:"Nederlands",version:2};$.fritteli.uhr.register(h)},function(t,e,n){"use strict";n.r(e),n.d(e,"Layout_pt",function(){return l});var i={1:[1]},o={1:[2,3,4]},r={7:[8]},s={10:[5]},u={7:[7,8,9,10,11]},a={10:[7,8,9,10,11]},h={10:[1,2,3]},c={9:[1,2,4,5,6,7,8,9]},d={8:[1,2,3,4,5]},l={code:"pt",getHour:function(t){var e=t.getHours();return t.getMinutes()>=35?(e+1)%24:e},hours:{0:[i,{6:[2,3,4,5,7,8,9,10,11]}],12:[i,{2:[1,2,3,4,6,7,8]}],"1,13":[i,{1:[5,6,7]}],"2,14":[o,{3:[1,2,3,4]}],"3,15":[o,{1:[8,9,10,11]}],"4,16":[o,{4:[1,2,3,4,5,6]}],"5,17":[o,{5:[1,2,3,4,5]}],"6,18":[o,{3:[4,5,6,7]}],"7,19":[o,{3:[7,8,9,10]}],"8,20":[o,{5:[5,6,7,8]}],"9,21":[o,{4:[8,9,10,11]}],"10,22":[o,{2:[9,10,11]}],"11,23":[o,{5:[8,9,10,11]}]},letters:["ÉSÃOUMATRÊS","MEIOLDIADEZ","DUASEISETEY","QUATROHNOVE","CINCOITONZE","ZMEIALNOITE","HORASYMENOS","VINTECAMEIA","UMVQUARTOPM","DEZOEYCINCO"],minutes:{"5,6,7,8,9":[r,a],"10,11,12,13,14":[r,h],"15,16,17,18,19":[r,c],"20,21,22,23,24":[r,d],"25,26,27,28,29":[r,d,s,a],"30,31,32,33,34":[r,{8:[8,9,10,11]}],"35,36,37,38,39":[u,d,s,a],"40,41,42,43,44":[u,d],"45,46,47,48,49":[u,c],"50,51,52,53,54":[u,h],"55,56,57,58,59":[u,a]},permanent:null,prettyName:"Português",version:2};$.fritteli.uhr.register(l)},function(t,e,n){"use strict";n.r(e);var i=function(){function t(){}return t.registerTheme=function(e,n){t.themes.some(function(t){return t.name===e})?console.log("Theme with name '"+e+"' already registered; ignoring register request for styleClass '"+n+"'."):t.themes.push({name:e,styleClass:n})},t.hasThemes=function(){return t.themes.length>0},t.hasMultipleThemes=function(){return t.themes.length>1},t.getFirstTheme=function(){return t.getTheme(0)},t.getTheme=function(e){return t.themes[e]},t.getThemes=function(){return t.themes},t.registerLayout=function(e){!t.layouts.some(function(t){return e.code===t.code&&(e.prettyName!==t.prettyName&&console.error("Error: Language code '"+e.code+"' cannot be registered for layout '"+e.prettyName+"' because it is already registered for layout '"+t.prettyName+"'!"),!0)})&&(t.layouts.push(e),t.layouts.sort(function(t,e){return t.prettyName.localeCompare(e.prettyName)}))},t.hasLayouts=function(){return t.layouts.length>0},t.hasMultipleLayouts=function(){return t.layouts.length>1},t.getFirstLayout=function(){return t.layouts[0]},t.getLayouts=function(){return t.layouts},t.layouts=[],t.themes=[],t}(),o={code:null,hours:null,letters:[],minutes:null,permanent:[],prettyName:null,version:2},r=n(0),s=function(){function t(t,e){this.widgetId=t,this.cookiePath=e}return t.prototype.getLayout=function(){var t=this.getCookie("uhr-language");return t&&(this.removeCookie("uhr-language"),this.setLayout(t)),this.getCookie("uhr-layout")},t.prototype.setLayout=function(t){this.setCookie("uhr-layout",t)},t.prototype.getMode=function(){return this.getCookie("uhr-mode")},t.prototype.setMode=function(t){this.setCookie("uhr-mode",t)},t.prototype.getStatus=function(){return this.getCookie("uhr-status")},t.prototype.setStatus=function(t){this.setCookie("uhr-status",t)},t.prototype.getTheme=function(){return this.getCookie("uhr-theme")},t.prototype.setTheme=function(t){this.setCookie("uhr-theme",t)},t.prototype.getCookie=function(t){return r.get(t+this.widgetId)},t.prototype.setCookie=function(t,e){var n;n=this.cookiePath?{expires:365,path:this.cookiePath}:{expires:365},r.set(t+this.widgetId,e,n)},t.prototype.removeCookie=function(t){this.cookiePath?r.remove(t+this.widgetId,{path:this.cookiePath}):r.remove(t+this.widgetId)},t}(),u=function(){function t(t,e){this.style="",this.value=t,e&&(this.style=e)}return t.prototype.addStyle=function(t){""===this.style?this.style=t:this.style+=" "+t},t.prototype.toString=function(){return''+this.value+""},t}(),a=function(){function t(t){this.layout=t}return t.prototype.parse=function(){var e=[];return this.layout.letters.forEach(function(t){for(var n=[],i=0;i")}),t&&t(),e.renderarea.fadeIn("fast")})},t}(),c=function(){function t(t,e,n,i){this.uhr=t,this.$element=e,this.options=n,this.id=i,this.cookieHandler=new s(i,n.cookiePath)}return t.prototype.render=function(){this.setupHTML(),this.wireFunctionality()},t.prototype.setWidth=function(t){this.$element.css("width",t);var e=this.$element.width();this.$element.width(e),this.$element.height(e),this.$element.css("font-size",e/40+"px")},t.prototype.setupHTML=function(){var t=this;if(this.$element.addClass("uhr").empty().append('').append('').append('').append('').append('
').append('
'),this.setWidth(this.options.width),this.options.controls){var e=$('
'),n=$('
');e.append(n);var o=$('
');o.append(''),o.append(''),n.append(o);var r=$('
');if(r.append(''),r.append(''),n.append(r),i.hasMultipleLayouts()){var s=$('');i.getLayouts().forEach(function(t){s.append('")}),n.append(s)}if(i.hasMultipleThemes()){var u=$('');i.getThemes().forEach(function(t){u.append('")}),n.append(u)}var a=$('');a.on({click:function(){return $("#uhr-controlpanel"+t.id).hide("fast")}}),n.append(a),this.$element.after(e),e.hide();var h=$('');h.on({click:function(){return t.toggleConfigScreen()}}),this.$element.after(h)}},t.prototype.wireFunctionality=function(){var t=this,e=$("#uhr-onoffswitch-checkbox"+this.id);e.on({click:function(){return t.uhr.toggle()}});var n=this.cookieHandler.getStatus();(void 0===n||this.options.force)&&(n=this.options.status),e.prop("checked","on"===n),"on"===n?this.uhr.start():this.uhr.stop();var o=$("#uhr-modeswitch-checkbox"+this.id);o.on({click:function(){"seconds"===t.options.mode?t.uhr.setMode("normal"):t.uhr.setMode("seconds")}});var r=this.cookieHandler.getMode();(void 0===r||this.options.force)&&(r=this.options.mode),o.prop("checked","seconds"!==r),"seconds"===r?this.uhr.setMode("seconds"):this.uhr.setMode("normal");var s=$("#uhr-languagechooser"+this.id);s.on({change:function(){var e=$("#uhr-languagechooser"+t.id).val();t.uhr.setLayout(e)}});var u=this.cookieHandler.getLayout();(void 0===u||this.options.force)&&(u=this.options.language);var a=i.getLayouts().some(function(t){return u===t.code});if(!a){var h=void 0;h=i.hasLayouts()?i.getFirstLayout().code:"",console.warn("Language '"+u+"' not found! Using fallback '"+h+"'."),u=h}s.val(u),this.options.language="",this.uhr.setLayout(u);var c=$("#uhr-themechooser"+this.id);c.on({change:function(){var e=$("#uhr-themechooser"+t.id).val();t.uhr.setTheme(e)}});var d=this.cookieHandler.getTheme();if((void 0===d||this.options.force)&&(d=this.options.theme),!(a=i.getThemes().some(function(t){return d===t.styleClass}))){var l=i.getFirstTheme().styleClass;console.warn("Theme '"+d+"' not found! Using fallback '"+l+"'."),d=l}c.val(d),this.options.theme="",this.uhr.setTheme(d),this.options.autoresize&&$(window).on({resize:function(){var e=t.$element.parent(),n=$(window),i=e.width(),o=e.height(),r=n.width(),s=n.height(),u=Math.min(i,o,r,s)+"px";t.setWidth(u)}})},t.prototype.toggleConfigScreen=function(){$("#uhr-controlpanel"+this.id).toggle("fast")},t}(),d=function(){function t(t){this.widgetInstance=t,this.timer=null,this.currentMinute=null;var e=this.widgetInstance.options.time;void 0===this.widgetInstance.options.time&&(this.widgetInstance.options.time=new Date),this.cookieHandler=new s(this.widgetInstance.uuid,this.widgetInstance.options.cookiePath),this.parseHash(),this.renderer=new c(this,this.widgetInstance.element,this.widgetInstance.options,this.widgetInstance.uuid),this.renderer.render(),void 0!==e&&this.setTime(e)}return t.prototype.destroy=function(){this.timer&&(window.clearInterval(this.timer),this.timer=null),this.widgetInstance.element.removeAttr("style").removeAttr("class").empty(),$("#uhr-configlink"+this.widgetInstance.uuid).remove(),$("#uhr-controlpanel"+this.widgetInstance.uuid).remove()},t.prototype.start=function(){var t=this;this.isOn()||(this.timer=window.setInterval(function(){t.widgetInstance.options.time=new Date,t.update()},1e3),this.update(),this.cookieHandler.setStatus("on"))},t.prototype.stop=function(){this.isOn()&&(window.clearInterval(this.timer),this.timer=null,this.update(),this.cookieHandler.setStatus("off"))},t.prototype.toggle=function(){this.isOn()?this.stop():this.start()},t.prototype.setLayout=function(t){var e=this;t!==this.widgetInstance.options.language&&(this.widgetInstance.options.language=t,new h(this.getCurrentLayout(),this.widgetInstance.element.find(".letterarea")).render(function(){e.currentMinute=-1,e.update()}),this.cookieHandler.setLayout(t),this.update())},t.prototype.setTheme=function(t){t!==this.widgetInstance.options.theme&&(this.widgetInstance.element.removeClass(this.widgetInstance.options.theme).addClass(t),$("#uhr-onoffswitch"+this.widgetInstance.uuid).removeClass(this.widgetInstance.options.theme).addClass(t),this.widgetInstance.options.theme=t,this.cookieHandler.setTheme(t))},t.prototype.setTime=function(t){this.currentMinute=null,null===t?this.widgetInstance.options.time=new Date:(null!==this.timer&&window.clearInterval(this.timer),this.widgetInstance.options.time=t),this.update()},t.prototype.setMode=function(t){this.widgetInstance.options.mode=t,this.currentMinute=null,this.update(),this.cookieHandler.setMode(t)},t.prototype.setWidth=function(t){this.renderer.setWidth(t)},t.prototype.isOn=function(){return null!==this.timer},t.prototype.update=function(){if(this.isOn()){var t=this.widgetInstance.options.time;if(!this.getCurrentLayout().hasOwnProperty("seconds")&&"seconds"!==this.widgetInstance.options.mode){if(t.getMinutes()===this.currentMinute)return;this.currentMinute=t.getMinutes()}this.show(t)}else this.clear(),this.currentMinute=-1},t.prototype.show=function(t){var e=this.getSecond(t),n=this.getDotMinute(t),i=this.getHour(t),o=this.getCoarseMinute(t);if(this.clear(),"seconds"===this.widgetInstance.options.mode)this.highlight("second"+e);else{this.highlight("on");for(var r=1;r<=n;r++)this.highlight("dot"+r);this.highlight("minute"+o),this.highlight("hour"+i)}},t.prototype.clear=function(){this.widgetInstance.element.find(".item").removeClass("active")},t.prototype.highlight=function(t){this.widgetInstance.element.find(".item."+t).addClass("active")},t.prototype.getSecond=function(t){return"function"==typeof this.getCurrentLayout().getSeconds?this.getCurrentLayout().getSeconds(t):t.getSeconds()},t.prototype.getDotMinute=function(t){return"function"==typeof this.getCurrentLayout().getDotMinute?this.getCurrentLayout().getDotMinute(t):t.getMinutes()%5},t.prototype.getCoarseMinute=function(t){return"function"==typeof this.getCurrentLayout().getCoarseMinute?this.getCurrentLayout().getCoarseMinute(t):t.getMinutes()},t.prototype.getHour=function(t){if("function"==typeof this.getCurrentLayout().getHour)return this.getCurrentLayout().getHour(t);var e=t.getHours();return t.getMinutes()>=25?(e+1)%24:e},t.prototype.parseHash=function(){var t=this,e=window.location.hash;void 0!==e&&"#"===e.charAt(0)&&(e=e.substring(1),(e=decodeURIComponent(e)).split("&").forEach(function(e){var n=e.split("="),i=n[0],o=n[1];switch(i){case"l":case"language":t.widgetInstance.options.language=o,t.widgetInstance.options.force=!0;break;case"t":case"theme":t.widgetInstance.options.theme=o,t.widgetInstance.options.force=!0;break;case"m":case"mode":t.widgetInstance.options.mode=o,t.widgetInstance.options.force=!0;break;case"s":case"status":t.widgetInstance.options.status=o,t.widgetInstance.options.force=!0}}))},t.prototype.getCurrentLayout=function(){var t=this,e=i.getLayouts().filter(function(e){return e.code===t.widgetInstance.options.language},this);return e.length>0?e[0]:o},t}(),l=n(1);l("link[rel=stylesheet]").each(function(t,e){var n=l(e),o=n.attr("data-class");if(void 0!==o){var r=n.attr("data-name");void 0===r&&(r=o),i.registerTheme(r,o)}}),i.hasThemes()||i.registerTheme("",""),$.widget("fritteli.uhr",{options:{width:"100%",status:"on",language:"de_CH",theme:i.getFirstTheme().styleClass,force:!1,controls:!0,cookiePath:void 0,autoresize:!0,mode:"normal"},start:function(){this.__fritteli_uhr_instance.start()},stop:function(){this.__fritteli_uhr_instance.stop()},toggle:function(){this.__fritteli_uhr_instance.toggle()},language:function(t){this.__fritteli_uhr_instance.setLayout(t)},theme:function(t){this.__fritteli_uhr_instance.setTheme(t)},time:function(t){this.__fritteli_uhr_instance.setTime(t)},mode:function(t){this.__fritteli_uhr_instance.setMode(t)},width:function(t){this.__fritteli_uhr_instance.setWidth(t)},_create:function(){this.__fritteli_uhr_instance=new d(this)},_destroy:function(){this.__fritteli_uhr_instance.destroy()},__fritteli_uhr_instance:null}),$.fritteli.uhr.register=i.registerLayout},function(t,e,n){"use strict";n.r(e);n(12);var i=n(2),o=n(3),r=n(4),s=n(5),u=n(6),a=n(7),h=n(8),c=n(9),d=n(10),l=n(11);o.Layout_de_CH,r.Layout_de_CH_genau,i.Layout_de,s.Layout_dk,u.Layout_en,a.Layout_es,h.Layout_fr,c.Layout_it,d.Layout_nl,l.Layout_pt}]); +!function(t){var e={};function n(i){if(e[i])return e[i].exports;var o=e[i]={i:i,l:!1,exports:{}};return t[i].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(i,o,function(e){return t[e]}.bind(null,o));return i},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=13)}([function(t,e){t.exports=Cookies},function(t,e){t.exports=jQuery},function(t,e,n){"use strict";n.r(e),n.d(e,"LayoutDe",function(){return h});var i={4:[8,9,10,11]},o={4:[1,2,3]},r={5:[1,2,3,4]},s={1:[8,9,10,11]},u={2:[1,2,3,4]},a={2:[5,6,7,8,9,10,11]},h={code:"de",hours:{"0,12":{9:[7,8,9,10,11]},"1,13":{6:[1,2,3,4]},"2,14":{6:[8,9,10,11]},"3,15":{7:[1,2,3,4]},"4,16":{7:[8,9,10,11]},"5,17":{5:[8,9,10,11]},"6,18":{8:[1,2,3,4,5]},"7,19":{9:[1,2,3,4,5,6]},"8,20":{8:[8,9,10,11]},"9,21":{10:[4,5,6,7]},"10,22":{10:[1,2,3,4]},"11,23":{5:[6,7,8]}},letters:["ESKISTAFÜNF","ZEHNZWANZIG","DREIVIERTEL","VORFUNKNACH","HALBAELFÜNF","EINSXAMZWEI","DREIPMJVIER","SECHSNLACHT","SIEBENZWÖLF","ZEHNEUNKUHR"],minutes:{"0,1,2,3,4":{10:[9,10,11]},"5,6,7,8,9":[s,i],"10,11,12,13,14":[u,i],"15,16,17,18,19":[{3:[5,6,7,8,9,10,11]},i],"20,21,22,23,24":[a,i],"25,26,27,28,29":[s,o,r],"30,31,32,33,34":r,"35,36,37,38,39":[s,i,r],"40,41,42,43,44":[a,o],"45,46,47,48,49":{3:[1,2,3,4,5,6,7,8,9,10,11]},"50,51,52,53,54":[u,o],"55,56,57,58,59":[s,o]},permanent:{1:[1,2,4,5,6]},prettyName:"Deutsch",version:2};$.fritteli.uhr.register(h)},function(t,e,n){"use strict";n.r(e),n.d(e,"LayoutDeCh",function(){return c});var i={4:[1,2]},o={3:[9,10,11]},r={4:[4,5,6,7,8]},s={1:[9,10,11]},u={2:[9,10,11]},a={2:[1,2,3,4,5,6]},h={3:[1,2,3,4,5,6]},c={code:"de_CH",hours:{"0,12":{10:[1,2,3,4,5,6]},"1,13":{5:[1,2,3]},"2,14":{5:[4,5,6,7]},"3,15":{5:[9,10,11]},"4,16":{6:[1,2,3,4,5]},"5,17":{6:[6,7,8,9]},"6,18":{7:[1,2,3,4,5,6]},"7,19":{7:[7,8,9,10,11]},"8,20":{8:[1,2,3,4,5]},"9,21":{8:[6,7,8,9]},"10,22":{9:[1,2,3,4]},"11,23":{9:[8,9,10,11]}},letters:["ESKISCHAFÜF","VIERTUBFZÄÄ","ZWÄNZGSIVOR","ABOHAUBIEGE","EISZWÖISDRÜ","VIERIFÜFIQT","SÄCHSISIBNI","ACHTINÜNIEL","ZÄNIERBEUFI","ZWÖUFINAUHR"],minutes:{"5,6,7,8,9":[s,i],"10,11,12,13,14":[u,i],"15,16,17,18,19":[a,i],"20,21,22,23,24":[h,i],"25,26,27,28,29":[s,o,r],"30,31,32,33,34":r,"35,36,37,38,39":[s,i,r],"40,41,42,43,44":[h,o],"45,46,47,48,49":[a,o],"50,51,52,53,54":[u,o],"55,56,57,58,59":[s,o]},permanent:{1:[1,2,4,5,6,7]},prettyName:"Bärndütsch",version:2};$.fritteli.uhr.register(c)},function(t,e,n){"use strict";n.r(e),n.d(e,"LayoutDeChGenau",function(){return c});var i={4:[4,5]},o={4:[1,2,3]},r={4:[7,8,9,10,11]},s={1:[9,10,11]},u={2:[9,10,11]},a={2:[1,2,3,4,5,6]},h={3:[1,2,3,4,5,6]},c={code:"de_CH_genau",hours:{"0,12":{10:[1,2,3,4,5,6]},"1,13":{5:[1,2,3]},"2,14":{5:[4,5,6,7]},"3,15":{5:[9,10,11]},"4,16":{6:[1,2,3,4,5]},"5,17":{6:[6,7,8,9]},"6,18":{7:[1,2,3,4,5,6]},"7,19":{7:[7,8,9,10,11]},"8,20":{8:[1,2,3,4,5]},"9,21":{8:[6,7,8,9]},"10,22":{9:[1,2,3,4]},"11,23":{9:[8,9,10,11]}},letters:["ESKISCHAFÜF","VIERTUBFZÄÄ","ZWÄNZGGENAU","VORABOHAUBI","EISZWÖISDRÜ","VIERIFÜFIQT","SÄCHSISIBNI","ACHTINÜNIEL","ZÄNIERBEUFI","ZWÖUFINAUHR"],minutes:{0:{3:[7,8,9,10,11]},"5,6,7,8,9":[s,i],"10,11,12,13,14":[u,i],"15,16,17,18,19":[a,i],"20,21,22,23,24":[h,i],"25,26,27,28,29":[s,o,r],"30,31,32,33,34":r,"35,36,37,38,39":[s,i,r],"40,41,42,43,44":[h,o],"45,46,47,48,49":[a,o],"50,51,52,53,54":[u,o],"55,56,57,58,59":[s,o]},permanent:{1:[1,2,4,5,6,7]},prettyName:"Bärndütsch (genau)",version:2};$.fritteli.uhr.register(c)},function(t,e,n){"use strict";n.r(e),n.d(e,"LayoutDk",function(){return l});var i={4:[4,5,6,7,8,9,10,11]},o={5:[8]},r={5:[4,5,6,7]},s={2:[1,2,3]},u={4:[1,2]},a={3:[4,5,6,7,8]},h={2:[4,5,6,7]},c={6:[8,9,10,11]},l={code:"dk",hours:{"0,12":{10:[8,9,10,11]},"1,13":{7:[1,2]},"2,14":{7:[3,4]},"3,15":{7:[5,6,7]},"4,16":{7:[8,9,10,11]},"5,17":{8:[1,2,3]},"6,18":{8:[4,5,6,7]},"7,19":{8:[9,10,11]},"8,20":{9:[1,2,3,4]},"9,21":{9:[6,7]},"10,22":{9:[10,11]},"11,23":{10:[1,2,3,4,5,6]}},letters:["KLOKKENVERO","FEMTYVESKLA","OJEKVARTVAT","TIAMINUTTER","VEMOVERILMF","MONALISHALV","ETTOTREFIRE","FEMSEKSRSYV","OTTERNIMETI","ELLEVEATOLV"],minutes:{"5,6,7,8,9":[s,i,r],"10,11,12,13,14":[u,i,r],"15,16,17,18,19":[a,r],"20,21,22,23,24":[h,i,r],"25,26,27,28,29":[s,i,o,c],"30,31,32,33,34":[c],"35,36,37,38,39":[s,i,r,c],"40,41,42,43,44":[h,i,o],"45,46,47,48,49":[a,o],"50,51,52,53,54":[u,i,o],"55,56,57,58,59":[s,i,o]},permanent:{1:[1,2,3,4,5,6,7,9,10]},prettyName:"Dansk",version:2};$.fritteli.uhr.register(l)},function(t,e,n){"use strict";n.r(e),n.d(e,"LayoutEn",function(){return c});var i={4:[10,11]},o={5:[1,2,3,4]},r={3:[7,8,9,10]},s={4:[6,7,8]},u={2:[1,3,4,5,6,7,8,9]},a={3:[1,2,3,4,5,6]},h={3:[1,2,3,4,5,6,7,8,9,10]},c={code:"en",getHour:function(t){var e=t.getHours();return t.getMinutes()>=35?(e+1)%24:e},hours:{"0,12":{9:[6,7,8,9,10,11]},"1,13":{6:[1,2,3]},"2,14":{7:[9,10,11]},"3,15":{6:[7,8,9,10,11]},"4,16":{7:[1,2,3,4]},"5,17":{7:[5,6,7,8]},"6,18":{6:[4,5,6]},"7,19":{9:[1,2,3,4,5]},"8,20":{8:[1,2,3,4,5]},"9,21":{5:[8,9,10,11]},"10,22":{10:[1,2,3]},"11,23":{8:[6,7,8,9,10,11]}},letters:["ITLISBFAMPM","ACQUARTERDC","TWENTYFIVEX","HALFBTENFTO","PASTERUNINE","ONESIXTHREE","FOURFIVETWO","EIGHTELEVEN","SEVENTWELVE","TENSO'CLOCK"],minutes:{"0,1,2,3,4":{10:[5,6,7,8,9,10,11]},"5,6,7,8,9":[r,o],"10,11,12,13,14":[s,o],"15,16,17,18,19":[u,o],"20,21,22,23,24":[a,o],"25,26,27,28,29":[h,o],"30,31,32,33,34":[{4:[1,2,3,4]},o],"35,36,37,38,39":[h,i],"40,41,42,43,44":[a,i],"45,46,47,48,49":[u,i],"50,51,52,53,54":[s,i],"55,56,57,58,59":[r,i]},permanent:{1:[1,2,4,5]},prettyName:"English",version:2};$.fritteli.uhr.register(c)},function(t,e,n){"use strict";n.r(e),n.d(e,"LayoutEs",function(){return l});var i={1:[2,3,4,6,7,8]},o={7:[6]},r={7:[7,8,9,10,11]},s={9:[7,8,9,10,11]},u={8:[8,9,10,11]},a={10:[6,7,8,9,10,11]},h={8:[2,3,4,5,6,7]},c={9:[1,2,3,4,5,6,7,8,9,10,11]},l={code:"es",getHour:function(t){var e=t.getHours();return t.getMinutes()>=35?(e+1)%24:e},hours:{"0,12":[i,{7:[1,2,3,4]}],"1,13":[{1:[1,2,6,7]},{1:[9,10,11]}],"2,14":[i,{2:[1,2,3]}],"3,15":[i,{2:[5,6,7,8]}],"4,16":[i,{3:[1,2,3,4,5,6]}],"5,17":[i,{3:[7,8,9,10,11]}],"6,18":[i,{4:[1,2,3,4]}],"7,19":[i,{4:[6,7,8,9,10]}],"8,20":[i,{5:[1,2,3,4]}],"9,21":[i,{5:[5,6,7,8,9]}],"10,22":[i,{6:[3,4,5,6]}],"11,23":[i,{6:[8,9,10,11]}]},letters:["ESONELASUNA","DOSITRESORE","CUATROCINCO","SEISASIETEN","OCHONUEVEYO","LADIEZSONCE","DOCELYMENOS","OVEINTEDIEZ","VEINTICINCO","MEDIACUARTO"],minutes:{"5,6,7,8,9":[o,s],"10,11,12,13,14":[o,u],"15,16,17,18,19":[o,a],"20,21,22,23,24":[o,h],"25,26,27,28,29":[o,c],"30,31,32,33,34":[o,{10:[1,2,3,4,5]}],"35,36,37,38,39":[r,c],"40,41,42,43,44":[r,h],"45,46,47,48,49":[r,a],"50,51,52,53,54":[r,u],"55,56,57,58,59":[r,s]},permanent:null,prettyName:"Español",version:2};$.fritteli.uhr.register(l)},function(t,e,n){"use strict";n.r(e),n.d(e,"LayoutFr",function(){return l});var i={8:[1,2]},o={7:[1,2,3,4,5]},r={6:[6,7,8,9,10,11]},s={9:[7,8,9,10]},u={7:[9,10,11]},a={8:[4,5,6,7,8]},h={9:[1,2,3,4,5]},c={9:[1,2,3,4,5,6,7,8,9,10]},l={code:"fr",getHour:function(t){var e=t.getHours();return t.getMinutes()>=35?(e+1)%24:e},hours:{0:{5:[6,7,8,9,10,11]},"1,13":[{3:[5,6,7]},r],"2,14":[{1:[8,9,10,11]},r],"3,15":[{2:[7,8,9,10,11]},r],"4,16":[{2:[1,2,3,4,5,6]},r],"5,17":[{4:[8,9,10,11]},r],"6,18":[{4:[5,6,7]},r],"7,19":[{3:[8,9,10,11]},r],"8,20":[{4:[1,2,3,4]},r],"9,21":[{3:[1,2,3,4]},r],"10,22":[{5:[3,4,5]},r],"11,23":[{6:[1,2,3,4]},r],12:{5:[1,2,3,4]}},letters:["ILNESTODEUX","QUATRETROIS","NEUFUNESEPT","HUITSIXCINQ","MIDIXMINUIT","ONZERHEURES","MOINSOLEDIX","ETRQUARTPMD","VINGT-CINQU","ETSDEMIEPAM"],minutes:{"5,6,7,8,9":s,"10,11,12,13,14":u,"15,16,17,18,19":[i,a],"20,21,22,23,24":h,"25,26,27,28,29":c,"30,31,32,33,34":[i,{10:[4,5,6,7,8]}],"35,36,37,38,39":[o,c],"40,41,42,43,44":[o,h],"45,46,47,48,49":[o,{7:[7,8]},a],"50,51,52,53,54":[o,u],"55,56,57,58,59":[o,s]},permanent:{1:[1,2,4,5,6]},prettyName:"Français",version:2};$.fritteli.uhr.register(l)},function(t,e,n){"use strict";n.r(e),n.d(e,"LayoutIt",function(){return l});var i={1:[1,2,3,4,6,7]},o={8:[1]},r={7:[8,9,10,11]},s={9:[6,7,8,9,10,11]},u={10:[1,2,3,4,5]},a={8:[3,4,6,7,8,9,10,11]},h={9:[1,2,3,4,5]},c={9:[1,2,3,4,5,6,7,8,9,10,11]},l={code:"it",getHour:function(t){var e=t.getHours();return t.getMinutes()>=35?(e+1)%24:e},hours:{"0,12":[i,{5:[1,2,3,4,5,6]}],"1,13":[{2:[1,3,4]},{2:[5,6,7]}],"2,14":[i,{2:[9,10,11]}],"3,15":[i,{3:[1,2,3]}],"4,16":[i,{6:[1,2,3,4,5,6,7]}],"5,17":[i,{7:[1,2,3,4,5,6]}],"6,18":[i,{6:[9,10,11]}],"7,19":[i,{5:[7,8,9,10,11]}],"8,20":[i,{3:[4,5,6,7]}],"9,21":[i,{3:[8,9,10,11]}],"10,22":[i,{4:[1,2,3,4,5]}],"11,23":[i,{4:[6,7,8,9,10,11]}]},letters:["SONORLEBORE","ÈRL'UNASDUE","TREOTTONOVE","DIECIUNDICI","DODICISETTE","QUATTROCSEI","CINQUEAMENO","ECUNOQUARTO","VENTICINQUE","DIECIPMEZZA"],minutes:{"5,6,7,8,9":[o,s],"10,11,12,13,14":[o,u],"15,16,17,18,19":[o,a],"20,21,22,23,24":[o,h],"25,26,27,28,29":[o,c],"30,31,32,33,34":[o,{10:[7,8,9,10,11]}],"35,36,37,38,39":[r,c],"40,41,42,43,44":[r,h],"45,46,47,48,49":[r,a],"50,51,52,53,54":[r,u],"55,56,57,58,59":[r,s]},permanent:null,prettyName:"Italiano",version:2};$.fritteli.uhr.register(l)},function(t,e,n){"use strict";n.r(e),n.d(e,"LayoutNl",function(){return h});var i={3:[1,2,3,4]},o={2:[8,9,10,11]},r={4:[1,2,3,4]},s={1:[8,9,10,11]},u={2:[1,2,3,4]},a={3:[7,8,9,10,11]},h={code:"nl",getHour:function(t){var e=t.getHours();return t.getMinutes()>=20?(e+1)%24:e},hours:{"0,12":{10:[1,2,3,4,5,6]},"1,13":{5:[8,9,10]},"2,14":{6:[1,2,3,4]},"3,15":{6:[8,9,10,11]},"4,16":{7:[1,2,3,4]},"5,17":{7:[5,6,7,8]},"6,18":{7:[9,10,11]},"7,19":{8:[1,2,3,4,5]},"8,20":{9:[1,2,3,4]},"9,21":{8:[7,8,9,10,11]},"10,22":{9:[5,6,7,8]},"11,23":{9:[9,10,11]}},letters:["HETKISAVIJF","TIENBTZVOOR","OVERMEKWART","HALFSPWOVER","VOORTHGEENS","TWEEPVCDRIE","VIERVIJFZES","ZEVENONEGEN","ACHTTIENELF","TWAALFBFUUR"],minutes:{"0,1,2,3,4":{10:[9,10,11]},"5,6,7,8,9":[s,i],"10,11,12,13,14":[u,i],"15,16,17,18,19":[a,{4:[8,9,10,11]}],"20,21,22,23,24":[u,o,r],"25,26,27,28,29":[s,o,r],"30,31,32,33,34":r,"35,36,37,38,39":[s,i,r],"40,41,42,43,44":[u,i,r],"45,46,47,48,49":[a,{5:[1,2,3,4]}],"50,51,52,53,54":[u,o],"55,56,57,58,59":[s,o]},permanent:{1:[1,2,3,5,6]},prettyName:"Nederlands",version:2};$.fritteli.uhr.register(h)},function(t,e,n){"use strict";n.r(e),n.d(e,"LayoutPt",function(){return d});var i={1:[1]},o={1:[2,3,4]},r={7:[8]},s={10:[5]},u={7:[7,8,9,10,11]},a={10:[7,8,9,10,11]},h={10:[1,2,3]},c={9:[1,2,4,5,6,7,8,9]},l={8:[1,2,3,4,5]},d={code:"pt",getHour:function(t){var e=t.getHours();return t.getMinutes()>=35?(e+1)%24:e},hours:{0:[i,{6:[2,3,4,5,7,8,9,10,11]}],12:[i,{2:[1,2,3,4,6,7,8]}],"1,13":[i,{1:[5,6,7]}],"2,14":[o,{3:[1,2,3,4]}],"3,15":[o,{1:[8,9,10,11]}],"4,16":[o,{4:[1,2,3,4,5,6]}],"5,17":[o,{5:[1,2,3,4,5]}],"6,18":[o,{3:[4,5,6,7]}],"7,19":[o,{3:[7,8,9,10]}],"8,20":[o,{5:[5,6,7,8]}],"9,21":[o,{4:[8,9,10,11]}],"10,22":[o,{2:[9,10,11]}],"11,23":[o,{5:[8,9,10,11]}]},letters:["ÉSÃOUMATRÊS","MEIOLDIADEZ","DUASEISETEY","QUATROHNOVE","CINCOITONZE","ZMEIALNOITE","HORASYMENOS","VINTECAMEIA","UMVQUARTOPM","DEZOEYCINCO"],minutes:{"5,6,7,8,9":[r,a],"10,11,12,13,14":[r,h],"15,16,17,18,19":[r,c],"20,21,22,23,24":[r,l],"25,26,27,28,29":[r,l,s,a],"30,31,32,33,34":[r,{8:[8,9,10,11]}],"35,36,37,38,39":[u,l,s,a],"40,41,42,43,44":[u,l],"45,46,47,48,49":[u,c],"50,51,52,53,54":[u,h],"55,56,57,58,59":[u,a]},permanent:null,prettyName:"Português",version:2};$.fritteli.uhr.register(d)},function(t,e,n){"use strict";n.r(e);var i=function(){function t(){}return t.registerTheme=function(e,n){t.themes.some(function(t){return t.name===e})?console.warn("Theme with name '"+e+"' already registered; ignoring register request for styleClass '"+n+"'."):t.themes.push({name:e,styleClass:n})},t.hasThemes=function(){return t.themes.length>0},t.hasMultipleThemes=function(){return t.themes.length>1},t.getFirstTheme=function(){return t.getTheme(0)},t.getTheme=function(e){return t.themes[e]},t.getThemes=function(){return t.themes},t.registerLayout=function(e){!t.layouts.some(function(t){return e.code===t.code&&(e.prettyName!==t.prettyName&&console.error("Error: Language code '"+e.code+"' cannot be registered for layout '"+e.prettyName+"' because it is already registered for layout '"+t.prettyName+"'!"),!0)})&&(t.layouts.push(e),t.layouts.sort(function(t,e){return t.prettyName.localeCompare(e.prettyName)}))},t.hasLayouts=function(){return t.layouts.length>0},t.hasMultipleLayouts=function(){return t.layouts.length>1},t.getFirstLayout=function(){return t.layouts[0]},t.getLayouts=function(){return t.layouts},t.layouts=[],t.themes=[],t}(),o={code:null,hours:null,letters:[],minutes:null,permanent:[],prettyName:null,version:2},r=n(0),s=function(){function t(t,e){this.widgetId=t,this.cookiePath=e}return t.prototype.getLayout=function(){var t=this.getCookie("uhr-language");return t&&(this.removeCookie("uhr-language"),this.setLayout(t)),this.getCookie("uhr-layout")},t.prototype.setLayout=function(t){this.setCookie("uhr-layout",t)},t.prototype.getMode=function(){return this.getCookie("uhr-mode")},t.prototype.setMode=function(t){this.setCookie("uhr-mode",t)},t.prototype.getStatus=function(){return this.getCookie("uhr-status")},t.prototype.setStatus=function(t){this.setCookie("uhr-status",t)},t.prototype.getTheme=function(){return this.getCookie("uhr-theme")},t.prototype.setTheme=function(t){this.setCookie("uhr-theme",t)},t.prototype.getCookie=function(t){return r.get(t+this.widgetId)},t.prototype.setCookie=function(t,e){var n;n=this.cookiePath?{expires:365,path:this.cookiePath}:{expires:365},r.set(t+this.widgetId,e,n)},t.prototype.removeCookie=function(t){this.cookiePath?r.remove(t+this.widgetId,{path:this.cookiePath}):r.remove(t+this.widgetId)},t}(),u=function(){function t(t,e){void 0===e&&(e=""),this.value=t,this.value=t,this.style=e}return t.prototype.addStyle=function(t){""===this.style?this.style=t:this.style+=" "+t},t.prototype.toString=function(){return''+this.value+""},t}(),a=function(){function t(t){this.layout=t}return t.prototype.parse=function(){var e=[];return this.layout.letters.forEach(function(t){for(var n=[],i=0;i")}),t&&t(),e.renderarea.fadeIn("fast")})},t}(),c=function(){function t(t,e,n,i){this.uhr=t,this.$element=e,this.options=n,this.id=i,this.cookieHandler=new s(i,n.cookiePath)}return t.prototype.render=function(){this.setupHTML(),this.wireFunctionality()},t.prototype.setWidth=function(t){this.$element.css("width",t);var e=this.$element.width();this.$element.width(e),this.$element.height(e),this.$element.css("font-size",e/40+"px")},t.prototype.setupHTML=function(){var t=this;if(this.$element.addClass("uhr").empty().append('').append('').append('').append('').append('
').append('
'),this.setWidth(this.options.width),this.options.controls){var e=$('
'),n=$('
');e.append(n);var o=$('
');o.append(''),o.append(''),n.append(o);var r=$('
');if(r.append(''),r.append(''),n.append(r),i.hasMultipleLayouts()){var s=$('');i.getLayouts().forEach(function(t){s.append('")}),n.append(s)}if(i.hasMultipleThemes()){var u=$('');i.getThemes().forEach(function(t){u.append('")}),n.append(u)}var a=$('');a.on({click:function(){return $("#uhr-controlpanel"+t.id).hide("fast")}}),n.append(a),this.$element.after(e),e.hide();var h=$('');h.on({click:function(){return t.toggleConfigScreen()}}),this.$element.after(h)}},t.prototype.wireFunctionality=function(){var t=this,e=$("#uhr-onoffswitch-checkbox"+this.id);e.on({click:function(){return t.uhr.toggle()}});var n=this.cookieHandler.getStatus();(void 0===n||this.options.force)&&(n=this.options.status),e.prop("checked","on"===n),"on"===n?this.uhr.start():this.uhr.stop();var o=$("#uhr-modeswitch-checkbox"+this.id);o.on({click:function(){"seconds"===t.options.mode?t.uhr.setMode("normal"):t.uhr.setMode("seconds")}});var r=this.cookieHandler.getMode();(void 0===r||this.options.force)&&(r=this.options.mode),o.prop("checked","seconds"!==r),"seconds"===r?this.uhr.setMode("seconds"):this.uhr.setMode("normal");var s=$("#uhr-languagechooser"+this.id);s.on({change:function(){var e=$("#uhr-languagechooser"+t.id).val();t.uhr.setLayout(e)}});var u=this.cookieHandler.getLayout();(void 0===u||this.options.force)&&(u=this.options.language);var a=i.getLayouts().some(function(t){return u===t.code});if(!a){var h=void 0;h=i.hasLayouts()?i.getFirstLayout().code:"",console.warn("Language '"+u+"' not found! Using fallback '"+h+"'."),u=h}s.val(u),this.options.language="",this.uhr.setLayout(u);var c=$("#uhr-themechooser"+this.id);c.on({change:function(){var e=$("#uhr-themechooser"+t.id).val();t.uhr.setTheme(e)}});var l=this.cookieHandler.getTheme();if((void 0===l||this.options.force)&&(l=this.options.theme),!(a=i.getThemes().some(function(t){return l===t.styleClass}))){var d=i.getFirstTheme().styleClass;console.warn("Theme '"+l+"' not found! Using fallback '"+d+"'."),l=d}c.val(l),this.options.theme="",this.uhr.setTheme(l),this.options.autoresize&&$(window).on({resize:function(){var e=t.$element.parent(),n=$(window),i=e.width(),o=e.height(),r=n.width(),s=n.height(),u=Math.min(i,o,r,s)+"px";t.setWidth(u)}})},t.prototype.toggleConfigScreen=function(){$("#uhr-controlpanel"+this.id).toggle("fast")},t}(),l=function(){function t(t){this.widgetInstance=t,this.timer=null,this.currentMinute=null;var e=this.widgetInstance.options.time;void 0===this.widgetInstance.options.time&&(this.widgetInstance.options.time=new Date),this.cookieHandler=new s(this.widgetInstance.uuid,this.widgetInstance.options.cookiePath),this.parseHash(),this.renderer=new c(this,this.widgetInstance.element,this.widgetInstance.options,this.widgetInstance.uuid),this.renderer.render(),void 0!==e&&this.setTime(e)}return t.prototype.destroy=function(){this.timer&&(window.clearInterval(this.timer),this.timer=null),this.widgetInstance.element.removeAttr("style").removeAttr("class").empty(),$("#uhr-configlink"+this.widgetInstance.uuid).remove(),$("#uhr-controlpanel"+this.widgetInstance.uuid).remove()},t.prototype.start=function(){var t=this;this.isOn()||(this.timer=window.setInterval(function(){t.widgetInstance.options.time=new Date,t.update()},1e3),this.update(),this.cookieHandler.setStatus("on"))},t.prototype.stop=function(){this.isOn()&&(window.clearInterval(this.timer),this.timer=null,this.update(),this.cookieHandler.setStatus("off"))},t.prototype.toggle=function(){this.isOn()?this.stop():this.start()},t.prototype.setLayout=function(t){var e=this;t!==this.widgetInstance.options.language&&(this.widgetInstance.options.language=t,new h(this.getCurrentLayout(),this.widgetInstance.element.find(".letterarea")).render(function(){e.currentMinute=-1,e.update()}),this.cookieHandler.setLayout(t),this.update())},t.prototype.setTheme=function(t){t!==this.widgetInstance.options.theme&&(this.widgetInstance.element.removeClass(this.widgetInstance.options.theme).addClass(t),$("#uhr-onoffswitch"+this.widgetInstance.uuid).removeClass(this.widgetInstance.options.theme).addClass(t),this.widgetInstance.options.theme=t,this.cookieHandler.setTheme(t))},t.prototype.setTime=function(t){this.currentMinute=null,null===t?this.widgetInstance.options.time=new Date:(null!==this.timer&&window.clearInterval(this.timer),this.widgetInstance.options.time=t),this.update()},t.prototype.setMode=function(t){this.widgetInstance.options.mode=t,this.currentMinute=null,this.update(),this.cookieHandler.setMode(t)},t.prototype.setWidth=function(t){this.renderer.setWidth(t)},t.prototype.isOn=function(){return null!==this.timer},t.prototype.update=function(){if(this.isOn()){var t=this.widgetInstance.options.time;if(!this.getCurrentLayout().hasOwnProperty("seconds")&&"seconds"!==this.widgetInstance.options.mode){if(t.getMinutes()===this.currentMinute)return;this.currentMinute=t.getMinutes()}this.show(t)}else this.clear(),this.currentMinute=-1},t.prototype.show=function(t){var e=this.getSecond(t),n=this.getDotMinute(t),i=this.getHour(t),o=this.getCoarseMinute(t);if(this.clear(),"seconds"===this.widgetInstance.options.mode)this.highlight("second"+e);else{this.highlight("on");for(var r=1;r<=n;r++)this.highlight("dot"+r);this.highlight("minute"+o),this.highlight("hour"+i)}},t.prototype.clear=function(){this.widgetInstance.element.find(".item").removeClass("active")},t.prototype.highlight=function(t){this.widgetInstance.element.find(".item."+t).addClass("active")},t.prototype.getSecond=function(t){return"function"==typeof this.getCurrentLayout().getSeconds?this.getCurrentLayout().getSeconds(t):t.getSeconds()},t.prototype.getDotMinute=function(t){return"function"==typeof this.getCurrentLayout().getDotMinute?this.getCurrentLayout().getDotMinute(t):t.getMinutes()%5},t.prototype.getCoarseMinute=function(t){return"function"==typeof this.getCurrentLayout().getCoarseMinute?this.getCurrentLayout().getCoarseMinute(t):t.getMinutes()},t.prototype.getHour=function(t){if("function"==typeof this.getCurrentLayout().getHour)return this.getCurrentLayout().getHour(t);var e=t.getHours();return t.getMinutes()>=25?(e+1)%24:e},t.prototype.parseHash=function(){var t=this,e=window.location.hash;void 0!==e&&"#"===e.charAt(0)&&(e=e.substring(1),(e=decodeURIComponent(e)).split("&").forEach(function(e){var n=e.split("="),i=n[0],o=n[1];switch(i){case"l":case"language":t.widgetInstance.options.language=o,t.widgetInstance.options.force=!0;break;case"t":case"theme":t.widgetInstance.options.theme=o,t.widgetInstance.options.force=!0;break;case"m":case"mode":t.widgetInstance.options.mode=o,t.widgetInstance.options.force=!0;break;case"s":case"status":t.widgetInstance.options.status=o,t.widgetInstance.options.force=!0}}))},t.prototype.getCurrentLayout=function(){var t=this,e=i.getLayouts().filter(function(e){return e.code===t.widgetInstance.options.language},this);return e.length>0?e[0]:o},t}(),d=n(1);d("link[rel=stylesheet]").each(function(t,e){var n=d(e),o=n.attr("data-class");if(void 0!==o){var r=n.attr("data-name");void 0===r&&(r=o),i.registerTheme(r,o)}}),i.hasThemes()||i.registerTheme("","");var p={options:{width:"100%",status:"on",language:"de_CH",theme:i.getFirstTheme().styleClass,force:!1,controls:!0,cookiePath:void 0,autoresize:!0,mode:"normal"},start:function(){this._fritteliUhrInstance.start()},stop:function(){this._fritteliUhrInstance.stop()},toggle:function(){this._fritteliUhrInstance.toggle()},language:function(t){this._fritteliUhrInstance.setLayout(t)},theme:function(t){this._fritteliUhrInstance.setTheme(t)},time:function(t){this._fritteliUhrInstance.setTime(t)},mode:function(t){this._fritteliUhrInstance.setMode(t)},width:function(t){this._fritteliUhrInstance.setWidth(t)},_create:function(){this._fritteliUhrInstance=new l(this)},_destroy:function(){this._fritteliUhrInstance.destroy()},_fritteliUhrInstance:null};$.widget("fritteli.uhr",p),$.fritteli.uhr.register=i.registerLayout},function(t,e,n){"use strict";n.r(e);n(12);var i=n(2),o=n(3),r=n(4),s=n(5),u=n(6),a=n(7),h=n(8),c=n(9),l=n(10),d=n(11);o.LayoutDeCh,r.LayoutDeChGenau,i.LayoutDe,s.LayoutDk,u.LayoutEn,a.LayoutEs,h.LayoutFr,c.LayoutIt,l.LayoutNl,d.LayoutPt}]); //# sourceMappingURL=uhr.bundle.js.map \ No newline at end of file diff --git a/dist/lib/uhr.bundle.js.map b/dist/lib/uhr.bundle.js.map index aa52d0a..7606952 100644 --- a/dist/lib/uhr.bundle.js.map +++ b/dist/lib/uhr.bundle.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///external \"Cookies\"","webpack:///external \"jQuery\"","webpack:///./src/layout/layout-de.ts","webpack:///./src/layout/layout-de_ch.ts","webpack:///./src/layout/layout-de_ch_genau.ts","webpack:///./src/layout/layout-dk.ts","webpack:///./src/layout/layout-en.ts","webpack:///./src/layout/layout-es.ts","webpack:///./src/layout/layout-fr.ts","webpack:///./src/layout/layout-it.ts","webpack:///./src/layout/layout-nl.ts","webpack:///./src/layout/layout-pt.ts","webpack:///./src/domain/globals.ts","webpack:///./src/domain/layout.ts","webpack:///./src/cookie-handler.ts","webpack:///./src/domain/letter.ts","webpack:///./src/layout-renderer.ts","webpack:///./src/uhr-renderer.ts","webpack:///./src/uhr.ts","webpack:///./src/theme-autodetector.ts","webpack:///./src/index.ts","webpack:///./src/bundle.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","Cookies","jQuery","__webpack_exports__","Layout_de","nach","4","vor","halb","5","fuenf","1","zehn","2","zwanzig","code","hours","0,12","9","1,13","6","2,14","3,15","7","4,16","5,17","6,18","8","7,19","8,20","9,21","10","10,22","11,23","letters","minutes","0,1,2,3,4","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","3","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","prettyName","version","$","fritteli","uhr","register","Layout_de_CH","ab","haubi","fuef","zae","viertu","zwaenzg","Layout_de_CH_genau","0","Layout_dk","minutter","over","fem","ti","kvart","tyve","halv","Layout_en","to","past","five","ten","a_quarter","twenty","twentyfive","getHour","time","hour","getHours","getMinutes","Layout_es","son_las","y","menos","cinco","diez","cuarto","veinte","veinticinco","Layout_fr","et","moins","heures","cinq","dix","quart","vingt","vingtcinq","12","Layout_it","sono_le","e","meno","cinque","dieci","un_quarto","venti","venticinque","Layout_nl","over1","voor1","half","vijf","tien","kwart","Layout_pt","e_","sao","e1","e2","dez","um_quarto","vinte","Globals","registerTheme","styleClass","themes","some","console","log","push","hasThemes","length","hasMultipleThemes","getFirstTheme","getTheme","index","getThemes","registerLayout","layout","layouts","element","error","sort","a","b","localeCompare","hasLayouts","hasMultipleLayouts","getFirstLayout","getLayouts","EMPTY_LAYOUT","cookie_handler_CookieHandler","CookieHandler","widgetId","cookiePath","this","getLayout","oldCookie","getCookie","removeCookie","setLayout","setCookie","getMode","setMode","getStatus","setStatus","status","setTheme","theme","cookieName","external_Cookies_","cookieValue","options","expires","path","Letter","style","addStyle","toString","layout_renderer_LayoutRendererV2Delegate","LayoutRendererV2Delegate","parse","forEach","lineString","line","parseArrayOrObject","seconds","parseTimeDefinition","parseObject","keys","map","Number","x","input","_this","Array","isArray","item","definition","listString","timeValues","split","highlightLetters","timeValue","vorne0","hinten0","vorne1","hinten1","vorne2","hinten2","vorne3","hinten3","vorne4","hinten4","vorne5","hinten5","hinten6","hinten7","hinten8","hinten9","11","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59","LayoutRenderer","renderarea","render","beforeshow","undefined","parsed","warn","parsedLayout","writable","configurable","fadeOut","empty","array","letter","append","fadeIn","uhr_renderer_UhrRenderer","UhrRenderer","$element","id","cookieHandler","setupHTML","wireFunctionality","setWidth","width","css","realWidth","height","addClass","controls","controlpanel","content","toggleSwitch","modeSwitch","languageChooser_1","themeChooser_1","closebutton","on","click","hide","after","configlink","toggleConfigScreen","toggle","force","prop","start","stop","languageChooser","change","languageKey","val","selectedLayout","language","found","fallbackLanguage","themeChooser","themeKey","selectedTheme","fallbackTheme","autoresize","window","resize","$parent","parent","$window","parentWidth","parentHeight","windowWidth","windowHeight","size","Math","min","uhr_Uhr","Uhr","widgetInstance","timer","currentMinute","userTime","Date","uuid","parseHash","renderer","setTime","destroy","clearInterval","removeAttr","remove","isOn","setInterval","update","getCurrentLayout","find","removeClass","show","clear","second","getSecond","dotMinute","getDotMinute","coarseMinute","getCoarseMinute","highlight","itemClass","getSeconds","date","hash","location","charAt","substring","decodeURIComponent","pair","matchingLanguages","filter","external_jQuery_","each","styleSheet","attr","name_1","widget","__fritteli_uhr_instance","_create","_destroy","_layout_layout_de__WEBPACK_IMPORTED_MODULE_1__","_layout_layout_de_ch__WEBPACK_IMPORTED_MODULE_2__","_layout_layout_de_ch_genau__WEBPACK_IMPORTED_MODULE_3__","_layout_layout_dk__WEBPACK_IMPORTED_MODULE_4__","_layout_layout_en__WEBPACK_IMPORTED_MODULE_5__","_layout_layout_es__WEBPACK_IMPORTED_MODULE_6__","_layout_layout_fr__WEBPACK_IMPORTED_MODULE_7__","_layout_layout_it__WEBPACK_IMPORTED_MODULE_8__","_layout_layout_nl__WEBPACK_IMPORTED_MODULE_9__","_layout_layout_pt__WEBPACK_IMPORTED_MODULE_10__"],"mappings":"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","file":"lib/uhr.bundle.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 13);\n","module.exports = Cookies;","module.exports = jQuery;","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst es_ist: WordDefinition = {1: [1, 2, 4, 5, 6]};\nconst uhr: WordDefinition = {10: [9, 10, 11]};\nconst nach: WordDefinition = {4: [8, 9, 10, 11]};\nconst vor: WordDefinition = {4: [1, 2, 3]};\nconst halb: WordDefinition = {5: [1, 2, 3, 4]};\nconst fuenf: WordDefinition = {1: [8, 9, 10, 11]};\nconst zehn: WordDefinition = {2: [1, 2, 3, 4]};\nconst viertel: WordDefinition = {3: [5, 6, 7, 8, 9, 10, 11]};\nconst zwanzig: WordDefinition = {2: [5, 6, 7, 8, 9, 10, 11]};\nconst dreiviertel: WordDefinition = {3: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]};\n\nexport const Layout_de: Layout = {\n code: 'de',\n hours: {\n '0,12': {9: [7, 8, 9, 10, 11]},\n '1,13': {6: [1, 2, 3, 4]},\n '2,14': {6: [8, 9, 10, 11]},\n '3,15': {7: [1, 2, 3, 4]},\n '4,16': {7: [8, 9, 10, 11]},\n '5,17': {5: [8, 9, 10, 11]},\n '6,18': {8: [1, 2, 3, 4, 5]},\n '7,19': {9: [1, 2, 3, 4, 5, 6]},\n '8,20': {8: [8, 9, 10, 11]},\n '9,21': {10: [4, 5, 6, 7]},\n '10,22': {10: [1, 2, 3, 4]},\n '11,23': {5: [6, 7, 8]}\n },\n letters: [\n 'ESKISTAFÜNF',\n 'ZEHNZWANZIG',\n 'DREIVIERTEL',\n 'VORFUNKNACH',\n 'HALBAELFÜNF',\n 'EINSXAMZWEI',\n 'DREIPMJVIER',\n 'SECHSNLACHT',\n 'SIEBENZWÖLF',\n 'ZEHNEUNKUHR'\n ],\n minutes: {\n '0,1,2,3,4': uhr,\n '5,6,7,8,9': [fuenf, nach],\n '10,11,12,13,14': [zehn, nach],\n '15,16,17,18,19': [viertel, nach],\n '20,21,22,23,24': [zwanzig, nach],\n '25,26,27,28,29': [fuenf, vor, halb],\n '30,31,32,33,34': halb,\n '35,36,37,38,39': [fuenf, nach, halb],\n '40,41,42,43,44': [zwanzig, vor],\n '45,46,47,48,49': dreiviertel,\n '50,51,52,53,54': [zehn, vor],\n '55,56,57,58,59': [fuenf, vor]\n },\n permanent: es_ist,\n prettyName: 'Deutsch',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_de);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst es_isch: WordDefinition = {1: [1, 2, 4, 5, 6, 7]};\nconst ab: WordDefinition = {4: [1, 2]};\nconst vor: WordDefinition = {3: [9, 10, 11]};\nconst haubi: WordDefinition = {4: [4, 5, 6, 7, 8]};\nconst fuef: WordDefinition = {1: [9, 10, 11]};\nconst zae: WordDefinition = {2: [9, 10, 11]};\nconst viertu: WordDefinition = {2: [1, 2, 3, 4, 5, 6]};\nconst zwaenzg: WordDefinition = {3: [1, 2, 3, 4, 5, 6]};\n\nexport const Layout_de_CH: Layout = {\n code: 'de_CH',\n hours: {\n '0,12': {10: [1, 2, 3, 4, 5, 6]},\n '1,13': {5: [1, 2, 3]},\n '2,14': {5: [4, 5, 6, 7]},\n '3,15': {5: [9, 10, 11]},\n '4,16': {6: [1, 2, 3, 4, 5]},\n '5,17': {6: [6, 7, 8, 9]},\n '6,18': {7: [1, 2, 3, 4, 5, 6]},\n '7,19': {7: [7, 8, 9, 10, 11]},\n '8,20': {8: [1, 2, 3, 4, 5]},\n '9,21': {8: [6, 7, 8, 9]},\n '10,22': {9: [1, 2, 3, 4]},\n '11,23': {9: [8, 9, 10, 11]}\n },\n letters: [\n 'ESKISCHAFÜF',\n 'VIERTUBFZÄÄ',\n 'ZWÄNZGSIVOR',\n 'ABOHAUBIEGE',\n 'EISZWÖISDRÜ',\n 'VIERIFÜFIQT',\n 'SÄCHSISIBNI',\n 'ACHTINÜNIEL',\n 'ZÄNIERBEUFI',\n 'ZWÖUFINAUHR'\n ],\n minutes: {\n '5,6,7,8,9': [fuef, ab],\n '10,11,12,13,14': [zae, ab],\n '15,16,17,18,19': [viertu, ab],\n '20,21,22,23,24': [zwaenzg, ab],\n '25,26,27,28,29': [fuef, vor, haubi],\n '30,31,32,33,34': haubi,\n '35,36,37,38,39': [fuef, ab, haubi],\n '40,41,42,43,44': [zwaenzg, vor],\n '45,46,47,48,49': [viertu, vor],\n '50,51,52,53,54': [zae, vor],\n '55,56,57,58,59': [fuef, vor]\n },\n permanent: es_isch,\n prettyName: 'Bärndütsch',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_de_CH);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst es_isch: WordDefinition = {1: [1, 2, 4, 5, 6, 7]};\nconst genau: WordDefinition = {3: [7, 8, 9, 10, 11]};\nconst ab: WordDefinition = {4: [4, 5]};\nconst vor: WordDefinition = {4: [1, 2, 3]};\nconst haubi: WordDefinition = {4: [7, 8, 9, 10, 11]};\nconst fuef: WordDefinition = {1: [9, 10, 11]};\nconst zae: WordDefinition = {2: [9, 10, 11]};\nconst viertu: WordDefinition = {2: [1, 2, 3, 4, 5, 6]};\nconst zwaenzg: WordDefinition = {3: [1, 2, 3, 4, 5, 6]};\n\nexport const Layout_de_CH_genau: Layout = {\n code: 'de_CH_genau',\n hours: {\n '0,12': {10: [1, 2, 3, 4, 5, 6]},\n '1,13': {5: [1, 2, 3]},\n '2,14': {5: [4, 5, 6, 7]},\n '3,15': {5: [9, 10, 11]},\n '4,16': {6: [1, 2, 3, 4, 5]},\n '5,17': {6: [6, 7, 8, 9]},\n '6,18': {7: [1, 2, 3, 4, 5, 6]},\n '7,19': {7: [7, 8, 9, 10, 11]},\n '8,20': {8: [1, 2, 3, 4, 5]},\n '9,21': {8: [6, 7, 8, 9]},\n '10,22': {9: [1, 2, 3, 4]},\n '11,23': {9: [8, 9, 10, 11]}\n },\n letters: [\n 'ESKISCHAFÜF',\n 'VIERTUBFZÄÄ',\n 'ZWÄNZGGENAU',\n 'VORABOHAUBI',\n 'EISZWÖISDRÜ',\n 'VIERIFÜFIQT',\n 'SÄCHSISIBNI',\n 'ACHTINÜNIEL',\n 'ZÄNIERBEUFI',\n 'ZWÖUFINAUHR'\n ],\n minutes: {\n '0': genau,\n '5,6,7,8,9': [fuef, ab],\n '10,11,12,13,14': [zae, ab],\n '15,16,17,18,19': [viertu, ab],\n '20,21,22,23,24': [zwaenzg, ab],\n '25,26,27,28,29': [fuef, vor, haubi],\n '30,31,32,33,34': haubi,\n '35,36,37,38,39': [fuef, ab, haubi],\n '40,41,42,43,44': [zwaenzg, vor],\n '45,46,47,48,49': [viertu, vor],\n '50,51,52,53,54': [zae, vor],\n '55,56,57,58,59': [fuef, vor]\n },\n permanent: es_isch,\n prettyName: 'Bärndütsch (genau)',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_de_CH_genau);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst klokken_er: WordDefinition = {1: [1, 2, 3, 4, 5, 6, 7, 9, 10]};\nconst minutter: WordDefinition = {4: [4, 5, 6, 7, 8, 9, 10, 11]};\nconst i: WordDefinition = {5: [8]};\nconst over: WordDefinition = {5: [4, 5, 6, 7]};\nconst fem: WordDefinition = {2: [1, 2, 3]};\nconst ti: WordDefinition = {4: [1, 2]};\nconst kvart: WordDefinition = {3: [4, 5, 6, 7, 8]};\nconst tyve: WordDefinition = {2: [4, 5, 6, 7]};\nconst halv: WordDefinition = {6: [8, 9, 10, 11]};\n\nexport const Layout_dk: Layout = {\n code: 'dk',\n hours: {\n '0,12': {10: [8, 9, 10, 11]},\n '1,13': {7: [1, 2]},\n '2,14': {7: [3, 4]},\n '3,15': {7: [5, 6, 7]},\n '4,16': {7: [8, 9, 10, 11]},\n '5,17': {8: [1, 2, 3]},\n '6,18': {8: [4, 5, 6, 7]},\n '7,19': {8: [9, 10, 11]},\n '8,20': {9: [1, 2, 3, 4]},\n '9,21': {9: [6, 7]},\n '10,22': {9: [10, 11]},\n '11,23': {10: [1, 2, 3, 4, 5, 6]}\n },\n letters: [\n 'KLOKKENVERO',\n 'FEMTYVESKLA',\n 'OJEKVARTVAT',\n 'TIAMINUTTER',\n 'VEMOVERILMF',\n 'MONALISHALV',\n 'ETTOTREFIRE',\n 'FEMSEKSRSYV',\n 'OTTERNIMETI',\n 'ELLEVEATOLV'\n ],\n minutes: {\n '5,6,7,8,9': [fem, minutter, over],\n '10,11,12,13,14': [ti, minutter, over],\n '15,16,17,18,19': [kvart, over],\n '20,21,22,23,24': [tyve, minutter, over],\n '25,26,27,28,29': [fem, minutter, i, halv],\n '30,31,32,33,34': [halv],\n '35,36,37,38,39': [fem, minutter, over, halv],\n '40,41,42,43,44': [tyve, minutter, i],\n '45,46,47,48,49': [kvart, i],\n '50,51,52,53,54': [ti, minutter, i],\n '55,56,57,58,59': [fem, minutter, i]\n },\n permanent: klokken_er,\n prettyName: 'Dansk',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_dk);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst it_is: WordDefinition = {1: [1, 2, 4, 5]};\nconst half: WordDefinition = {4: [1, 2, 3, 4]};\nconst to: WordDefinition = {4: [10, 11]};\nconst past: WordDefinition = {5: [1, 2, 3, 4]};\nconst o_clock: WordDefinition = {10: [5, 6, 7, 8, 9, 10, 11]};\nconst five: WordDefinition = {3: [7, 8, 9, 10]};\nconst ten: WordDefinition = {4: [6, 7, 8]};\nconst a_quarter: WordDefinition = {2: [1, 3, 4, 5, 6, 7, 8, 9]};\nconst twenty: WordDefinition = {3: [1, 2, 3, 4, 5, 6]};\nconst twentyfive: WordDefinition = {3: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]};\n\nexport const Layout_en: Layout = {\n code: 'en',\n getHour: (time: Date) => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n\n hours: {\n '0,12': {9: [6, 7, 8, 9, 10, 11]},\n '1,13': {6: [1, 2, 3]},\n '2,14': {7: [9, 10, 11]},\n '3,15': {6: [7, 8, 9, 10, 11]},\n '4,16': {7: [1, 2, 3, 4]},\n '5,17': {7: [5, 6, 7, 8]},\n '6,18': {6: [4, 5, 6]},\n '7,19': {9: [1, 2, 3, 4, 5]},\n '8,20': {8: [1, 2, 3, 4, 5]},\n '9,21': {5: [8, 9, 10, 11]},\n '10,22': {10: [1, 2, 3]},\n '11,23': {8: [6, 7, 8, 9, 10, 11]}\n },\n letters: [\n 'ITLISBFAMPM',\n 'ACQUARTERDC',\n 'TWENTYFIVEX',\n 'HALFBTENFTO',\n 'PASTERUNINE',\n 'ONESIXTHREE',\n 'FOURFIVETWO',\n 'EIGHTELEVEN',\n 'SEVENTWELVE',\n 'TENSO\\'CLOCK'\n ],\n minutes: {\n '0,1,2,3,4': o_clock,\n '5,6,7,8,9': [five, past],\n '10,11,12,13,14': [ten, past],\n '15,16,17,18,19': [a_quarter, past],\n '20,21,22,23,24': [twenty, past],\n '25,26,27,28,29': [twentyfive, past],\n '30,31,32,33,34': [half, past],\n '35,36,37,38,39': [twentyfive, to],\n '40,41,42,43,44': [twenty, to],\n '45,46,47,48,49': [a_quarter, to],\n '50,51,52,53,54': [ten, to],\n '55,56,57,58,59': [five, to]\n },\n permanent: it_is,\n prettyName: 'English',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_en);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst es_la: WordDefinition = {1: [1, 2, 6, 7]};\nconst son_las: WordDefinition = {1: [2, 3, 4, 6, 7, 8]};\nconst y: WordDefinition = {7: [6]};\nconst menos: WordDefinition = {7: [7, 8, 9, 10, 11]};\nconst media: WordDefinition = {10: [1, 2, 3, 4, 5]};\nconst cinco: WordDefinition = {9: [7, 8, 9, 10, 11]};\nconst diez: WordDefinition = {8: [8, 9, 10, 11]};\nconst cuarto: WordDefinition = {10: [6, 7, 8, 9, 10, 11]};\nconst veinte: WordDefinition = {8: [2, 3, 4, 5, 6, 7]};\nconst veinticinco: WordDefinition = {9: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]};\n\nexport const Layout_es: Layout = {\n code: 'es',\n getHour: (time: Date) => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n\n hours: {\n '0,12': [son_las, {7: [1, 2, 3, 4]}],\n '1,13': [es_la, {1: [9, 10, 11]}],\n '2,14': [son_las, {2: [1, 2, 3]}],\n '3,15': [son_las, {2: [5, 6, 7, 8]}],\n '4,16': [son_las, {3: [1, 2, 3, 4, 5, 6]}],\n '5,17': [son_las, {3: [7, 8, 9, 10, 11]}],\n '6,18': [son_las, {4: [1, 2, 3, 4]}],\n '7,19': [son_las, {4: [6, 7, 8, 9, 10]}],\n '8,20': [son_las, {5: [1, 2, 3, 4]}],\n '9,21': [son_las, {5: [5, 6, 7, 8, 9]}],\n '10,22': [son_las, {6: [3, 4, 5, 6]}],\n '11,23': [son_las, {6: [8, 9, 10, 11]}]\n },\n letters: [\n 'ESONELASUNA',\n 'DOSITRESORE',\n 'CUATROCINCO',\n 'SEISASIETEN',\n 'OCHONUEVEYO',\n 'LADIEZSONCE',\n 'DOCELYMENOS',\n 'OVEINTEDIEZ',\n 'VEINTICINCO',\n 'MEDIACUARTO'\n ],\n minutes: {\n '5,6,7,8,9': [y, cinco],\n '10,11,12,13,14': [y, diez],\n '15,16,17,18,19': [y, cuarto],\n '20,21,22,23,24': [y, veinte],\n '25,26,27,28,29': [y, veinticinco],\n '30,31,32,33,34': [y, media],\n '35,36,37,38,39': [menos, veinticinco],\n '40,41,42,43,44': [menos, veinte],\n '45,46,47,48,49': [menos, cuarto],\n '50,51,52,53,54': [menos, diez],\n '55,56,57,58,59': [menos, cinco]\n },\n permanent: null,\n prettyName: 'Español',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_es);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst il_est: WordDefinition = {1: [1, 2, 4, 5, 6]};\nconst et: WordDefinition = {8: [1, 2]};\nconst moins: WordDefinition = {7: [1, 2, 3, 4, 5]};\nconst demie: WordDefinition = {10: [4, 5, 6, 7, 8]};\nconst heures: WordDefinition = {6: [6, 7, 8, 9, 10, 11]};\nconst le: WordDefinition = {7: [7, 8]};\nconst cinq: WordDefinition = {9: [7, 8, 9, 10]};\nconst dix: WordDefinition = {7: [9, 10, 11]};\nconst quart: WordDefinition = {8: [4, 5, 6, 7, 8]};\nconst vingt: WordDefinition = {9: [1, 2, 3, 4, 5]};\nconst vingtcinq: WordDefinition = {9: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]};\n\nexport const Layout_fr: Layout = {\n code: 'fr',\n getHour: (time: Date) => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n hours: {\n '0': {5: [6, 7, 8, 9, 10, 11]},\n '1,13': [\n {3: [5, 6, 7]},\n heures\n ],\n '2,14': [\n {1: [8, 9, 10, 11]},\n heures\n ],\n '3,15': [\n {2: [7, 8, 9, 10, 11]},\n heures\n ],\n '4,16': [\n {2: [1, 2, 3, 4, 5, 6]},\n heures\n ],\n '5,17': [\n {4: [8, 9, 10, 11]},\n heures\n ],\n '6,18': [\n {4: [5, 6, 7]},\n heures\n ],\n '7,19': [\n {3: [8, 9, 10, 11]},\n heures\n ],\n '8,20': [\n {4: [1, 2, 3, 4]},\n heures\n ],\n '9,21': [\n {3: [1, 2, 3, 4]},\n heures\n ],\n '10,22': [\n {5: [3, 4, 5]},\n heures\n ],\n '11,23': [\n {6: [1, 2, 3, 4]},\n heures\n ],\n '12': {5: [1, 2, 3, 4]}\n },\n letters: [\n 'ILNESTODEUX',\n 'QUATRETROIS',\n 'NEUFUNESEPT',\n 'HUITSIXCINQ',\n 'MIDIXMINUIT',\n 'ONZERHEURES',\n 'MOINSOLEDIX',\n 'ETRQUARTPMD',\n 'VINGT-CINQU',\n 'ETSDEMIEPAM'\n ],\n minutes: {\n '5,6,7,8,9': cinq,\n '10,11,12,13,14': dix,\n '15,16,17,18,19': [et, quart],\n '20,21,22,23,24': vingt,\n '25,26,27,28,29': vingtcinq,\n '30,31,32,33,34': [et, demie],\n '35,36,37,38,39': [moins, vingtcinq],\n '40,41,42,43,44': [moins, vingt],\n '45,46,47,48,49': [moins, le, quart],\n '50,51,52,53,54': [moins, dix],\n '55,56,57,58,59': [moins, cinq]\n },\n permanent: il_est,\n prettyName: 'Français',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_fr);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst sono_le: WordDefinition = {1: [1, 2, 3, 4, 6, 7]};\nconst e_l: WordDefinition = {2: [1, 3, 4]};\nconst e: WordDefinition = {8: [1]};\nconst meno: WordDefinition = {7: [8, 9, 10, 11]};\nconst mezza: WordDefinition = {10: [7, 8, 9, 10, 11]};\nconst cinque: WordDefinition = {9: [6, 7, 8, 9, 10, 11]};\nconst dieci: WordDefinition = {10: [1, 2, 3, 4, 5]};\nconst un_quarto: WordDefinition = {8: [3, 4, 6, 7, 8, 9, 10, 11]};\nconst venti: WordDefinition = {9: [1, 2, 3, 4, 5]};\nconst venticinque: WordDefinition = {9: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]};\n\nexport const Layout_it: Layout = {\n code: 'it',\n getHour: (time: Date) => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n hours: {\n '0,12': [sono_le, {5: [1, 2, 3, 4, 5, 6]}],\n '1,13': [e_l, {2: [5, 6, 7]}],\n '2,14': [sono_le, {2: [9, 10, 11]}],\n '3,15': [sono_le, {3: [1, 2, 3]}],\n '4,16': [sono_le, {6: [1, 2, 3, 4, 5, 6, 7]}],\n '5,17': [sono_le, {7: [1, 2, 3, 4, 5, 6]}],\n '6,18': [sono_le, {6: [9, 10, 11]}],\n '7,19': [sono_le, {5: [7, 8, 9, 10, 11]}],\n '8,20': [sono_le, {3: [4, 5, 6, 7]}],\n '9,21': [sono_le, {3: [8, 9, 10, 11]}],\n '10,22': [sono_le, {4: [1, 2, 3, 4, 5]}],\n '11,23': [sono_le, {4: [6, 7, 8, 9, 10, 11]}]\n },\n letters: [\n 'SONORLEBORE',\n 'ÈRL\\'UNASDUE',\n 'TREOTTONOVE',\n 'DIECIUNDICI',\n 'DODICISETTE',\n 'QUATTROCSEI',\n 'CINQUEAMENO',\n 'ECUNOQUARTO',\n 'VENTICINQUE',\n 'DIECIPMEZZA'\n ],\n minutes: {\n '5,6,7,8,9': [e, cinque],\n '10,11,12,13,14': [e, dieci],\n '15,16,17,18,19': [e, un_quarto],\n '20,21,22,23,24': [e, venti],\n '25,26,27,28,29': [e, venticinque],\n '30,31,32,33,34': [e, mezza],\n '35,36,37,38,39': [meno, venticinque],\n '40,41,42,43,44': [meno, venti],\n '45,46,47,48,49': [meno, un_quarto],\n '50,51,52,53,54': [meno, dieci],\n '55,56,57,58,59': [meno, cinque]\n },\n permanent: null,\n prettyName: 'Italiano',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_it);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst het_is: WordDefinition = {1: [1, 2, 3, 5, 6]};\nconst over1: WordDefinition = {3: [1, 2, 3, 4]};\nconst voor1: WordDefinition = {2: [8, 9, 10, 11]};\nconst over2: WordDefinition = {4: [8, 9, 10, 11]};\nconst voor2: WordDefinition = {5: [1, 2, 3, 4]};\nconst half: WordDefinition = {4: [1, 2, 3, 4]};\nconst vijf: WordDefinition = {1: [8, 9, 10, 11]};\nconst tien: WordDefinition = {2: [1, 2, 3, 4]};\nconst kwart: WordDefinition = {3: [7, 8, 9, 10, 11]};\nconst uur: WordDefinition = {10: [9, 10, 11]};\n\nexport const Layout_nl: Layout = {\n code: 'nl',\n getHour: (time: Date) => {\n const hour = time.getHours();\n if (time.getMinutes() >= 20) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n hours: {\n '0,12': {10: [1, 2, 3, 4, 5, 6]},\n '1,13': {5: [8, 9, 10]},\n '2,14': {6: [1, 2, 3, 4]},\n '3,15': {6: [8, 9, 10, 11]},\n '4,16': {7: [1, 2, 3, 4]},\n '5,17': {7: [5, 6, 7, 8]},\n '6,18': {7: [9, 10, 11]},\n '7,19': {8: [1, 2, 3, 4, 5]},\n '8,20': {9: [1, 2, 3, 4]},\n '9,21': {8: [7, 8, 9, 10, 11]},\n '10,22': {9: [5, 6, 7, 8]},\n '11,23': {9: [9, 10, 11]}\n },\n letters: [\n 'HETKISAVIJF',\n 'TIENBTZVOOR',\n 'OVERMEKWART',\n 'HALFSPWOVER',\n 'VOORTHGEENS',\n 'TWEEPVCDRIE',\n 'VIERVIJFZES',\n 'ZEVENONEGEN',\n 'ACHTTIENELF',\n 'TWAALFBFUUR'\n ],\n minutes: {\n '0,1,2,3,4': uur,\n '5,6,7,8,9': [vijf, over1],\n '10,11,12,13,14': [tien, over1],\n '15,16,17,18,19': [kwart, over2],\n '20,21,22,23,24': [tien, voor1, half],\n '25,26,27,28,29': [vijf, voor1, half],\n '30,31,32,33,34': half,\n '35,36,37,38,39': [vijf, over1, half],\n '40,41,42,43,44': [tien, over1, half],\n '45,46,47,48,49': [kwart, voor2],\n '50,51,52,53,54': [tien, voor1],\n '55,56,57,58,59': [vijf, voor1]\n },\n permanent: het_is,\n prettyName: 'Nederlands',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_nl);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst e_: WordDefinition = {1: [1]};\nconst sao: WordDefinition = {1: [2, 3, 4]};\nconst e1: WordDefinition = {7: [8]};\nconst e2: WordDefinition = {10: [5]};\nconst menos: WordDefinition = {7: [7, 8, 9, 10, 11]};\nconst meia: WordDefinition = {8: [8, 9, 10, 11]};\nconst cinco: WordDefinition = {10: [7, 8, 9, 10, 11]};\nconst dez: WordDefinition = {10: [1, 2, 3]};\nconst um_quarto: WordDefinition = {9: [1, 2, 4, 5, 6, 7, 8, 9]};\nconst vinte: WordDefinition = {8: [1, 2, 3, 4, 5]};\n\nexport const Layout_pt: Layout = {\n code: 'pt',\n getHour: (time: Date) => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n hours: {\n '0': [e_, {'6': [2, 3, 4, 5, 7, 8, 9, 10, 11]}],\n '12': [e_, {'2': [1, 2, 3, 4, 6, 7, 8]}],\n '1,13': [e_, {'1': [5, 6, 7]}],\n '2,14': [sao, {'3': [1, 2, 3, 4]}],\n '3,15': [sao, {'1': [8, 9, 10, 11]}],\n '4,16': [sao, {'4': [1, 2, 3, 4, 5, 6]}],\n '5,17': [sao, {'5': [1, 2, 3, 4, 5]}],\n '6,18': [sao, {'3': [4, 5, 6, 7]}],\n '7,19': [sao, {'3': [7, 8, 9, 10]}],\n '8,20': [sao, {'5': [5, 6, 7, 8]}],\n '9,21': [sao, {'4': [8, 9, 10, 11]}],\n '10,22': [sao, {'2': [9, 10, 11]}],\n '11,23': [sao, {'5': [8, 9, 10, 11]}]\n },\n letters: [\n 'ÉSÃOUMATRÊS',\n 'MEIOLDIADEZ',\n 'DUASEISETEY',\n 'QUATROHNOVE',\n 'CINCOITONZE',\n 'ZMEIALNOITE',\n 'HORASYMENOS',\n 'VINTECAMEIA',\n 'UMVQUARTOPM',\n 'DEZOEYCINCO'\n ],\n minutes: {\n '5,6,7,8,9': [e1, cinco],\n '10,11,12,13,14': [e1, dez],\n '15,16,17,18,19': [e1, um_quarto],\n '20,21,22,23,24': [e1, vinte],\n '25,26,27,28,29': [e1, vinte, e2, cinco],\n '30,31,32,33,34': [e1, meia],\n '35,36,37,38,39': [menos, vinte, e2, cinco],\n '40,41,42,43,44': [menos, vinte],\n '45,46,47,48,49': [menos, um_quarto],\n '50,51,52,53,54': [menos, dez],\n '55,56,57,58,59': [menos, cinco]\n },\n permanent: null,\n prettyName: 'Português',\n version: 2\n};\n\n$.fritteli.uhr.register(Layout_pt);\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout} from './layout';\nimport {Theme} from './theme';\n\nexport class Globals {\n private static layouts: Layout[] = [];\n private static themes: Theme[] = [];\n\n static registerTheme(name: string, styleClass: string): void {\n if (Globals.themes.some(value => value.name === name)) {\n console.log(`Theme with name '${name}' already registered; ignoring register request for styleClass '${styleClass}'.`)\n } else {\n Globals.themes.push({\n name,\n styleClass\n });\n }\n }\n\n static hasThemes(): boolean {\n return Globals.themes.length > 0;\n }\n\n static hasMultipleThemes(): boolean {\n return Globals.themes.length > 1;\n }\n\n static getFirstTheme(): Theme {\n return Globals.getTheme(0);\n }\n\n static getTheme(index: number): Theme {\n return Globals.themes[index];\n }\n\n static getThemes(): Theme[] {\n return Globals.themes;\n }\n\n static registerLayout(layout: Layout): void {\n const available = !Globals.layouts.some(element => {\n if (layout.code === element.code) {\n if (layout.prettyName !== element.prettyName) {\n console.error(\n `Error: Language code '${layout.code}' cannot be registered for layout '${layout.prettyName}' because it is already registered for layout '${element.prettyName}'!`\n );\n }\n return true;\n }\n return false;\n }\n );\n if (available) {\n Globals.layouts.push(layout);\n Globals.layouts.sort((a, b) => a.prettyName.localeCompare(b.prettyName));\n }\n }\n\n static hasLayouts(): boolean {\n return Globals.layouts.length > 0;\n }\n\n static hasMultipleLayouts(): boolean {\n return Globals.layouts.length > 1;\n }\n\n static getFirstLayout(): Layout {\n return Globals.layouts[0];\n }\n\n static getLayouts(): Layout[] {\n return Globals.layouts;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Letter} from './letter';\n\nexport interface Layout {\n readonly code: string;\n getCoarseMinute?: (time: Date) => number;\n getDotMinute?: (time: Date) => number;\n getHour?: (time: Date) => number;\n getSeconds?: (time: Date) => number;\n readonly hours: TimeDefinition;\n readonly letters: string[];\n readonly minutes: TimeDefinition;\n parsed?: Letter[][];\n readonly permanent: WordDefinition | WordDefinition[];\n readonly prettyName: string;\n seconds?: TimeDefinition;\n readonly version: number;\n}\n\nexport interface WordDefinition {\n [line: number]: number[];\n}\n\nexport interface TimeDefinition {\n [values: string]: WordDefinition | WordDefinition[];\n}\n\nexport const EMPTY_LAYOUT: Layout = {\n code: null,\n hours: null,\n letters: [],\n minutes: null,\n permanent: [],\n prettyName: null,\n version: 2\n};\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport * as Cookies from 'js-cookie';\n\nexport class CookieHandler {\n constructor(private widgetId: string, private cookiePath?: string) {\n }\n\n getLayout(): string {\n const oldCookie = this.getCookie('uhr-language');\n if (!!oldCookie) {\n // aha, old cookie is set. migrate to new one!\n this.removeCookie('uhr-language');\n this.setLayout(oldCookie);\n }\n return this.getCookie('uhr-layout');\n }\n\n setLayout(layout: string): void {\n this.setCookie('uhr-layout', layout);\n }\n\n getMode(): string {\n return this.getCookie('uhr-mode');\n }\n\n setMode(mode: string): void {\n this.setCookie('uhr-mode', mode);\n }\n\n\n getStatus(): string {\n return this.getCookie('uhr-status');\n }\n\n setStatus(status: string): void {\n this.setCookie('uhr-status', status);\n }\n\n getTheme(): string {\n return this.getCookie('uhr-theme');\n }\n\n setTheme(theme: string): void {\n this.setCookie('uhr-theme', theme);\n }\n\n private getCookie(cookieName: string): string {\n return Cookies.get(cookieName + this.widgetId);\n }\n\n private setCookie(cookieName: string, cookieValue: string): void {\n let options;\n if (!!this.cookiePath) {\n options = {expires: 365, path: this.cookiePath};\n } else {\n options = {expires: 365};\n }\n Cookies.set(cookieName + this.widgetId, cookieValue, options);\n }\n\n private removeCookie(cookieName: string): void {\n if (!!this.cookiePath) {\n Cookies.remove(cookieName + this.widgetId, {path: this.cookiePath});\n } else {\n Cookies.remove(cookieName + this.widgetId);\n }\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\n/**\n * Ein Buchstabe. Hilfsklasse für den Renderer und Inhalt der Layout-Arrays.\n * @param value Der Buchstabe, der Dargestellt werden soll.\n * @param style Die CSS-Styleklassen des Buchstabens.\n */\nexport class Letter {\n private readonly value: string;\n private style: string = '';\n\n constructor(value: string, style?: string) {\n this.value = value;\n if (!!style) {\n this.style = style;\n }\n }\n\n addStyle(style: string): void {\n if (this.style === '') {\n this.style = style;\n } else {\n this.style += ` ${style}`;\n }\n };\n\n toString(): string {\n return `${this.value}`;\n };\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, TimeDefinition, WordDefinition} from './domain/layout';\nimport {Letter} from './domain/letter';\n\nclass LayoutRendererV2Delegate {\n private static readonly vorne0: WordDefinition = {\n 3: [2, 3, 4],\n 4: [1, 5],\n 5: [1, 4, 5],\n 6: [1, 3, 5],\n 7: [1, 2, 5],\n 8: [1, 5],\n 9: [2, 3, 4]\n };\n private static readonly hinten0: WordDefinition = {\n 3: [8, 9, 10],\n 4: [7, 11],\n 5: [7, 10, 11],\n 6: [7, 9, 11],\n 7: [7, 8, 11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly vorne1: WordDefinition = {\n 3: [3],\n 4: [2, 3],\n 5: [3],\n 6: [3],\n 7: [3],\n 8: [3],\n 9: [2, 3, 4]\n };\n private static readonly hinten1: WordDefinition = {\n 3: [9],\n 4: [8, 9],\n 5: [9],\n 6: [9],\n 7: [9],\n 8: [9],\n 9: [8, 9, 10]\n };\n private static readonly vorne2: WordDefinition = {\n 3: [2, 3, 4],\n 4: [1, 5],\n 5: [5],\n 6: [4],\n 7: [3],\n 8: [2],\n 9: [1, 2, 3, 4, 5]\n };\n private static readonly hinten2: WordDefinition = {\n 3: [8, 9, 10],\n 4: [7, 11],\n 5: [11],\n 6: [10],\n 7: [9],\n 8: [8],\n 9: [7, 8, 9, 10, 11]\n };\n private static readonly vorne3: WordDefinition = {\n 3: [1, 2, 3, 4, 5],\n 4: [4],\n 5: [3],\n 6: [4],\n 7: [5],\n 8: [1, 5],\n 9: [2, 3, 4]\n };\n private static readonly hinten3: WordDefinition = {\n 3: [7, 8, 9, 10, 11],\n 4: [10],\n 5: [9],\n 6: [10],\n 7: [11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly vorne4: WordDefinition = {\n 3: [4],\n 4: [3, 4],\n 5: [2, 4],\n 6: [1, 4],\n 7: [1, 2, 3, 4, 5],\n 8: [4],\n 9: [4]\n };\n private static readonly hinten4: WordDefinition = {\n 3: [10],\n 4: [9, 10],\n 5: [8, 10],\n 6: [7, 10],\n 7: [7, 8, 9, 10, 11],\n 8: [10],\n 9: [10]\n };\n private static readonly vorne5: WordDefinition = {\n 3: [1, 2, 3, 4, 5],\n 4: [1],\n 5: [1, 2, 3, 4],\n 6: [5],\n 7: [5],\n 8: [1, 5],\n 9: [2, 3, 4]\n };\n private static readonly hinten5: WordDefinition = {\n 3: [7, 8, 9, 10, 11],\n 4: [7],\n 5: [7, 8, 9, 10],\n 6: [11],\n 7: [11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly hinten6: WordDefinition = {\n 3: [9, 10],\n 4: [8],\n 5: [7],\n 6: [7, 8, 9, 10],\n 7: [7, 11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly hinten7: WordDefinition = {\n 3: [7, 8, 9, 10, 11],\n 4: [11],\n 5: [10],\n 6: [9],\n 7: [8],\n 8: [8],\n 9: [8]\n };\n private static readonly hinten8: WordDefinition = {\n 3: [8, 9, 10],\n 4: [7, 11],\n 5: [7, 11],\n 6: [8, 9, 10],\n 7: [7, 11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly hinten9: WordDefinition = {\n 3: [8, 9, 10],\n 4: [7, 11],\n 5: [7, 11],\n 6: [8, 9, 10, 11],\n 7: [11],\n 8: [10],\n 9: [8, 9]\n };\n private static readonly seconds: TimeDefinition = {\n '0': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten0],\n '1': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten1],\n '2': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten2],\n '3': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten3],\n '4': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten4],\n '5': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten5],\n '6': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten6],\n '7': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten7],\n '8': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten8],\n '9': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten9],\n '10': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten0],\n '11': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten1],\n '12': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten2],\n '13': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten3],\n '14': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten4],\n '15': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten5],\n '16': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten6],\n '17': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten7],\n '18': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten8],\n '19': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten9],\n '20': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten0],\n '21': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten1],\n '22': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten2],\n '23': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten3],\n '24': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten4],\n '25': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten5],\n '26': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten6],\n '27': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten7],\n '28': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten8],\n '29': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten9],\n '30': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten0],\n '31': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten1],\n '32': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten2],\n '33': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten3],\n '34': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten4],\n '35': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten5],\n '36': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten6],\n '37': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten7],\n '38': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten8],\n '39': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten9],\n '40': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten0],\n '41': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten1],\n '42': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten2],\n '43': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten3],\n '44': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten4],\n '45': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten5],\n '46': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten6],\n '47': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten7],\n '48': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten8],\n '49': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten9],\n '50': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten0],\n '51': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten1],\n '52': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten2],\n '53': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten3],\n '54': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten4],\n '55': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten5],\n '56': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten6],\n '57': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten7],\n '58': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten8],\n '59': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten9]\n };\n\n constructor(private layout: Layout) {\n }\n\n public parse(): Letter[][] {\n const letters: Letter[][] = [];\n this.layout.letters.forEach(lineString => {\n const line: Letter[] = [];\n for (let c = 0; c < lineString.length; c++) {\n line.push(new Letter(lineString[c]));\n }\n letters.push(line);\n });\n this.parseArrayOrObject(letters, 'on', this.layout.permanent);\n if (typeof this.layout.seconds !== 'undefined' && this.layout.seconds !== null) {\n this.parseTimeDefinition(letters, 'second', this.layout.seconds);\n } else {\n this.parseTimeDefinition(letters, 'second', LayoutRendererV2Delegate.seconds);\n }\n this.parseTimeDefinition(letters, 'minute', this.layout.minutes);\n this.parseTimeDefinition(letters, 'hour', this.layout.hours);\n return letters;\n };\n\n private parseObject(letters: Letter[][], styleClass: string, object: WordDefinition): void {\n if (typeof object !== 'undefined' && object !== null) {\n Object.keys(object)\n .map(key => Number(key))\n .forEach(\n y => object[y].forEach(\n x => letters[y - 1][x - 1].addStyle(styleClass)\n )\n );\n }\n }\n\n private parseArrayOrObject(letters: Letter[][], styleClass: string, input: WordDefinition | WordDefinition[]): void {\n if (typeof input !== 'undefined' && input !== null) {\n if (Array.isArray(input)) {\n input.forEach(item => this.parseObject(letters, styleClass, item));\n } else {\n this.parseObject(letters, styleClass, input);\n }\n }\n }\n\n private parseTimeDefinition(letters: Letter[][], styleClass: string, definition: TimeDefinition): void {\n if (typeof definition !== 'undefined' && definition !== null) {\n Object.keys(definition).forEach(listString => {\n const timeValues: string[] = listString.split(',');\n const highlightLetters: WordDefinition | WordDefinition[] = definition[listString];\n timeValues.forEach(timeValue => this.parseArrayOrObject(letters, styleClass + timeValue, highlightLetters));\n });\n }\n }\n}\n\n/**\n * Hilfsklasse zum Rendern der Buchstaben der Uhr.\n * @param layout Layout-Objekt, das gerendert werden soll.\n * @param renderarea Das jQuery-gewrappte HTML-Element, auf dem gerendert werden soll.\n */\nexport class LayoutRenderer {\n constructor(private layout: Layout, private renderarea: JQuery) {\n }\n\n render(beforeshow?: () => void): void {\n if (this.layout.parsed === undefined) {\n if (this.layout.version === 2) {\n const delegate: LayoutRendererV2Delegate = new LayoutRendererV2Delegate(this.layout);\n const parsedLayout: Letter[][] = delegate.parse();\n Object.defineProperty(this.layout, 'parsed', {\n value: parsedLayout,\n writable: false,\n configurable: false\n });\n } else {\n console.warn(`Unknown layout version: '${this.layout.version}', expecting '2'`);\n return;\n }\n }\n const letters: Letter[][] = this.layout.parsed;\n this.renderarea.fadeOut('fast', () => {\n this.renderarea.empty();\n letters.forEach((line, index, array) => {\n line.forEach(letter => this.renderarea.append(letter.toString()));\n if (index < array.length - 1) {\n this.renderarea.append('
');\n }\n });\n if (!!beforeshow) {\n beforeshow();\n }\n this.renderarea.fadeIn('fast');\n });\n };\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {CookieHandler} from './cookie-handler';\nimport {Globals} from './domain/globals';\nimport {Options} from './widget/options';\nimport {Uhr} from './uhr';\n\nexport class UhrRenderer {\n private cookieHandler: CookieHandler;\n\n constructor(\n private uhr: Uhr,\n private $element: JQuery,\n private options: Options,\n private id: string\n ) {\n this.cookieHandler = new CookieHandler(id, options.cookiePath);\n }\n\n public render(): void {\n this.setupHTML();\n this.wireFunctionality();\n }\n\n public setWidth(width: string): void {\n this.$element.css('width', width);\n const realWidth: number = this.$element.width();\n this.$element.width(realWidth);\n this.$element.height(realWidth);\n this.$element.css('font-size', (realWidth / 40) + 'px');\n }\n\n private setupHTML(): void {\n // Base clock area\n this.$element.addClass('uhr')\n .empty()\n .append('')\n .append('')\n .append('')\n .append('')\n .append('
')\n .append('
');\n\n this.setWidth(this.options.width);\n\n if (this.options.controls) {\n const controlpanel = $(`
`);\n const content = $('
');\n controlpanel.append(content);\n // on/off switch\n const toggleSwitch = $(`
`);\n toggleSwitch.append(``);\n toggleSwitch.append(``);\n content.append(toggleSwitch);\n\n // time mode switch\n const modeSwitch = $(`
`);\n modeSwitch.append(``);\n modeSwitch.append(``);\n content.append(modeSwitch);\n // language chooser\n if (Globals.hasMultipleLayouts()) {\n const languageChooser = $(``);\n Globals.getLayouts().forEach(layout => {\n languageChooser.append(``);\n });\n content.append(languageChooser);\n }\n\n // theme chooser\n if (Globals.hasMultipleThemes()) {\n const themeChooser = $(``);\n Globals.getThemes().forEach(theme => {\n themeChooser.append(``);\n });\n content.append(themeChooser);\n }\n const closebutton: JQuery = $(``);\n closebutton.on({click: () => $(`#uhr-controlpanel${this.id}`).hide('fast')});\n content.append(closebutton);\n this.$element.after(controlpanel);\n controlpanel.hide();\n const configlink: JQuery = $(``);\n configlink.on({click: () => this.toggleConfigScreen()});\n this.$element.after(configlink);\n }\n };\n\n private wireFunctionality(): void {\n // on/off switch\n const toggleSwitch: JQuery = $(`#uhr-onoffswitch-checkbox${this.id}`);\n toggleSwitch.on({click: () => this.uhr.toggle()});\n let status = this.cookieHandler.getStatus();\n if (status === undefined || this.options.force) {\n status = this.options.status;\n }\n toggleSwitch.prop('checked', status === 'on');\n if (status === 'on') {\n this.uhr.start();\n } else {\n this.uhr.stop();\n }\n\n // time mode switch\n const modeSwitch: JQuery = $(`#uhr-modeswitch-checkbox${this.id}`);\n modeSwitch.on({\n click: () => {\n if (this.options.mode === 'seconds') {\n this.uhr.setMode('normal');\n } else {\n this.uhr.setMode('seconds');\n }\n }\n });\n\n let mode = this.cookieHandler.getMode();\n if (mode === undefined || this.options.force) {\n mode = this.options.mode;\n }\n modeSwitch.prop('checked', mode !== 'seconds');\n if (mode === 'seconds') {\n this.uhr.setMode('seconds');\n } else {\n this.uhr.setMode('normal');\n }\n\n // language chooser\n const languageChooser: JQuery = $(`#uhr-languagechooser${this.id}`);\n languageChooser.on({\n change: () => {\n const languageKey = $(`#uhr-languagechooser${this.id}`).val() as string;\n this.uhr.setLayout(languageKey);\n }\n });\n let selectedLayout = this.cookieHandler.getLayout();\n if (selectedLayout === undefined || this.options.force) {\n selectedLayout = this.options.language;\n }\n let found = Globals.getLayouts().some(item => selectedLayout === item.code);\n if (!found) {\n let fallbackLanguage;\n if (Globals.hasLayouts()) {\n fallbackLanguage = Globals.getFirstLayout().code;\n } else {\n fallbackLanguage = '';\n }\n console.warn(`Language '${selectedLayout}' not found! Using fallback '${fallbackLanguage}'.`);\n selectedLayout = fallbackLanguage;\n }\n languageChooser.val(selectedLayout);\n this.options.language = '';\n this.uhr.setLayout(selectedLayout);\n\n // theme chooser\n const themeChooser: JQuery = $(`#uhr-themechooser${this.id}`);\n themeChooser.on({\n change: () => {\n const themeKey = $(`#uhr-themechooser${this.id}`).val() as string;\n this.uhr.setTheme(themeKey);\n }\n });\n let selectedTheme = this.cookieHandler.getTheme();\n if (selectedTheme === undefined || this.options.force) {\n selectedTheme = this.options.theme;\n }\n found = Globals.getThemes().some(item => selectedTheme === item.styleClass);\n if (!found) {\n const fallbackTheme = Globals.getFirstTheme().styleClass;\n console.warn(`Theme '${selectedTheme}' not found! Using fallback '${fallbackTheme}'.`);\n selectedTheme = fallbackTheme;\n }\n themeChooser.val(selectedTheme);\n this.options.theme = '';\n this.uhr.setTheme(selectedTheme);\n if (this.options.autoresize) {\n $(window).on({\n resize: () => {\n const $parent: JQuery = this.$element.parent();\n const $window: JQuery = $(window);\n const parentWidth: number = $parent.width();\n const parentHeight: number = $parent.height();\n const windowWidth: number = $window.width();\n const windowHeight: number = $window.height();\n const size: string = `${Math.min(parentWidth, parentHeight, windowWidth, windowHeight)}px`;\n this.setWidth(size);\n }\n });\n }\n }\n\n private toggleConfigScreen() {\n $(`#uhr-controlpanel${this.id}`).toggle('fast');\n };\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {EMPTY_LAYOUT, Layout} from './domain/layout';\nimport {CookieHandler} from './cookie-handler';\nimport {Globals} from './domain/globals';\nimport {LayoutRenderer} from './layout-renderer';\nimport {UhrRenderer} from './uhr-renderer';\nimport {WidgetPrototype} from './widget/widget-prototype';\n\nexport class Uhr {\n\n private timer: number = null;\n private currentMinute: number = null;\n private renderer: UhrRenderer;\n private cookieHandler: CookieHandler;\n\n constructor(private widgetInstance: WidgetPrototype) {\n const userTime = this.widgetInstance.options.time;\n if (this.widgetInstance.options.time === undefined) {\n this.widgetInstance.options.time = new Date();\n }\n this.cookieHandler = new CookieHandler(this.widgetInstance.uuid, this.widgetInstance.options.cookiePath);\n this.parseHash();\n this.renderer = new UhrRenderer(this, this.widgetInstance.element, this.widgetInstance.options, this.widgetInstance.uuid);\n this.renderer.render();\n if (userTime !== undefined) {\n this.setTime(userTime);\n }\n }\n\n destroy(): void {\n if (!!this.timer) {\n window.clearInterval(this.timer);\n this.timer = null;\n }\n this.widgetInstance.element\n .removeAttr('style')\n .removeAttr('class')\n .empty();\n $(`#uhr-configlink${this.widgetInstance.uuid}`).remove();\n $(`#uhr-controlpanel${this.widgetInstance.uuid}`).remove();\n }\n\n start(): void {\n if (!this.isOn()) {\n this.timer = window.setInterval(() => {\n this.widgetInstance.options.time = new Date();\n this.update();\n }, 1000);\n this.update();\n this.cookieHandler.setStatus('on')\n }\n }\n\n stop(): void {\n if (this.isOn()) {\n window.clearInterval(this.timer);\n this.timer = null;\n this.update();\n this.cookieHandler.setStatus('off');\n }\n }\n\n toggle(): void {\n if (this.isOn()) {\n this.stop();\n } else {\n this.start();\n }\n }\n\n setLayout(key: string): void {\n if (key !== this.widgetInstance.options.language) {\n this.widgetInstance.options.language = key;\n const renderer = new LayoutRenderer(this.getCurrentLayout(), this.widgetInstance.element.find('.letterarea'));\n renderer.render(() => {\n this.currentMinute = -1;\n this.update();\n });\n this.cookieHandler.setLayout(key);\n this.update();\n }\n }\n\n setTheme(styleClass: string): void {\n if (styleClass !== this.widgetInstance.options.theme) {\n this.widgetInstance.element.removeClass(this.widgetInstance.options.theme).addClass(styleClass);\n $(`#uhr-onoffswitch${this.widgetInstance.uuid}`).removeClass(this.widgetInstance.options.theme).addClass(styleClass);\n this.widgetInstance.options.theme = styleClass;\n this.cookieHandler.setTheme(styleClass);\n }\n }\n\n setTime(time: Date): void {\n this.currentMinute = null;\n if (time === null) {\n this.widgetInstance.options.time = new Date();\n } else {\n if (this.timer !== null) {\n window.clearInterval(this.timer);\n }\n this.widgetInstance.options.time = time;\n }\n this.update();\n }\n\n setMode(mode: string): void {\n this.widgetInstance.options.mode = mode;\n this.currentMinute = null;\n this.update();\n this.cookieHandler.setMode(mode);\n }\n\n setWidth(width: string): void {\n this.renderer.setWidth(width);\n }\n\n private isOn(): boolean {\n return this.timer !== null;\n }\n\n private update(): void {\n if (this.isOn()) {\n const time = this.widgetInstance.options.time;\n if (!this.getCurrentLayout().hasOwnProperty('seconds') && this.widgetInstance.options.mode !== 'seconds') {\n if (time.getMinutes() === this.currentMinute) {\n return;\n }\n this.currentMinute = time.getMinutes();\n }\n this.show(time);\n } else {\n this.clear();\n this.currentMinute = -1;\n }\n }\n\n private show(time: Date): void {\n const second = this.getSecond(time);\n const dotMinute = this.getDotMinute(time);\n const hour = this.getHour(time);\n const coarseMinute = this.getCoarseMinute(time);\n this.clear();\n if (this.widgetInstance.options.mode === 'seconds') {\n this.highlight(`second${second}`);\n } else {\n this.highlight('on');\n for (let i = 1; i <= dotMinute; i++) {\n this.highlight(`dot${i}`);\n }\n this.highlight(`minute${coarseMinute}`);\n this.highlight(`hour${hour}`);\n }\n }\n\n private clear(): void {\n this.widgetInstance.element.find('.item').removeClass('active');\n }\n\n private highlight(itemClass: string): void {\n this.widgetInstance.element.find(`.item.${itemClass}`).addClass('active');\n }\n\n private getSecond(time: Date): number {\n if (typeof this.getCurrentLayout().getSeconds === 'function') {\n return this.getCurrentLayout().getSeconds(time);\n }\n return time.getSeconds();\n };\n\n private getDotMinute(date: Date): number {\n if (typeof this.getCurrentLayout().getDotMinute === 'function') {\n return this.getCurrentLayout().getDotMinute(date);\n }\n return date.getMinutes() % 5;\n };\n\n private getCoarseMinute(date: Date): number {\n if (typeof this.getCurrentLayout().getCoarseMinute === 'function') {\n return this.getCurrentLayout().getCoarseMinute(date);\n }\n return date.getMinutes();\n };\n\n private getHour(date: Date): number {\n if (typeof this.getCurrentLayout().getHour === 'function') {\n return this.getCurrentLayout().getHour(date);\n }\n const hour = date.getHours();\n if (date.getMinutes() >= 25) {\n return (hour + 1) % 24;\n }\n return hour;\n };\n\n private parseHash(): void {\n let hash: string = window.location.hash;\n if (hash !== undefined && hash.charAt(0) === '#') {\n hash = hash.substring(1);\n hash = decodeURIComponent(hash);\n const params: string[] = hash.split('&');\n params.forEach(element => {\n const pair: string[] = element.split('=');\n const key = pair[0];\n const value = pair[1];\n switch (key) {\n case 'l':\n case 'language':\n this.widgetInstance.options.language = value;\n this.widgetInstance.options.force = true;\n break;\n case 't':\n case 'theme':\n this.widgetInstance.options.theme = value;\n this.widgetInstance.options.force = true;\n break;\n case 'm':\n case 'mode':\n this.widgetInstance.options.mode = value;\n this.widgetInstance.options.force = true;\n break;\n case 's':\n case 'status':\n this.widgetInstance.options.status = value;\n this.widgetInstance.options.force = true;\n break;\n }\n });\n }\n }\n\n private getCurrentLayout(): Layout {\n const matchingLanguages: Layout[] = Globals.getLayouts().filter(element => element.code === this.widgetInstance.options.language, this);\n if (matchingLanguages.length > 0) {\n return matchingLanguages[0];\n }\n // fallback: return empty object\n return EMPTY_LAYOUT;\n };\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport * as $ from 'jquery';\nimport {Globals} from './domain/globals';\n\nexport function autodetectThemes() {\n $('link[rel=stylesheet]').each((index, item) => {\n const styleSheet = $(item);\n const styleClass: string = styleSheet.attr('data-class');\n if (styleClass !== undefined) {\n let name: string = styleSheet.attr('data-name');\n if (name === undefined) {\n name = styleClass;\n }\n Globals.registerTheme(name, styleClass);\n }\n });\n\n // fall-back if no theme was included\n if (!Globals.hasThemes()) {\n Globals.registerTheme('', '');\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Globals} from './domain/globals';\nimport {Layout} from './domain/layout';\nimport {Uhr} from './uhr';\nimport {WidgetPrototype} from './widget/widget-prototype';\nimport {autodetectThemes} from './theme-autodetector';\n\n// First things first: discover included themes and register them\nautodetectThemes();\n\n$.widget('fritteli.uhr', {\n options: {\n width: '100%',\n status: 'on',\n language: 'de_CH',\n theme: Globals.getFirstTheme().styleClass,\n force: false,\n controls: true,\n cookiePath: undefined,\n autoresize: true,\n mode: 'normal'\n },\n start: function () {\n this.__fritteli_uhr_instance.start();\n },\n stop: function () {\n this.__fritteli_uhr_instance.stop();\n },\n toggle: function () {\n this.__fritteli_uhr_instance.toggle();\n },\n language: function (key: string) {\n this.__fritteli_uhr_instance.setLayout(key);\n },\n theme: function (styleClass: string) {\n this.__fritteli_uhr_instance.setTheme(styleClass);\n },\n time: function (time: Date) {\n this.__fritteli_uhr_instance.setTime(time);\n },\n mode: function (mode: string) {\n this.__fritteli_uhr_instance.setMode(mode);\n },\n width: function (width: string) {\n this.__fritteli_uhr_instance.setWidth(width);\n },\n // constructor method\n _create: function () {\n this.__fritteli_uhr_instance = new Uhr(this);\n },\n // destructor method\n _destroy: function () {\n this.__fritteli_uhr_instance.destroy();\n },\n __fritteli_uhr_instance: null\n} as WidgetPrototype);\n\n$.fritteli.uhr.register = Globals.registerLayout;\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n const widget: JQueryUI.Widget;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport * as uhr from './index';\nimport {Layout_de} from './layout/layout-de';\nimport {Layout_de_CH} from './layout/layout-de_ch';\nimport {Layout_de_CH_genau} from './layout/layout-de_ch_genau';\nimport {Layout_dk} from './layout/layout-dk';\nimport {Layout_en} from './layout/layout-en';\nimport {Layout_es} from './layout/layout-es';\nimport {Layout_fr} from './layout/layout-fr';\nimport {Layout_it} from './layout/layout-it';\nimport {Layout_nl} from './layout/layout-nl';\nimport {Layout_pt} from './layout/layout-pt';\n\n// We just need to reference all required files at least once, so that the tree-shaker won't remove them from\n// the bundle.\nlet a = uhr;\na = Layout_de_CH;\na = Layout_de_CH_genau;\na = Layout_de;\na = Layout_dk;\na = Layout_en;\na = Layout_es;\na = Layout_fr;\na = Layout_it;\na = Layout_nl;\na = Layout_pt;\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///external \"Cookies\"","webpack:///external \"jQuery\"","webpack:///./src/layout/layout-de.ts","webpack:///./src/layout/layout-de_ch.ts","webpack:///./src/layout/layout-de_ch_genau.ts","webpack:///./src/layout/layout-dk.ts","webpack:///./src/layout/layout-en.ts","webpack:///./src/layout/layout-es.ts","webpack:///./src/layout/layout-fr.ts","webpack:///./src/layout/layout-it.ts","webpack:///./src/layout/layout-nl.ts","webpack:///./src/layout/layout-pt.ts","webpack:///./src/domain/globals.ts","webpack:///./src/domain/layout.ts","webpack:///./src/cookie-handler.ts","webpack:///./src/domain/letter.ts","webpack:///./src/layout-renderer.ts","webpack:///./src/uhr-renderer.ts","webpack:///./src/uhr.ts","webpack:///./src/theme-autodetector.ts","webpack:///./src/index.ts","webpack:///./src/bundle.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","Cookies","jQuery","__webpack_exports__","LayoutDe","nach","4","vor","halb","5","fuenf","1","zehn","2","zwanzig","code","hours","0,12","9","1,13","6","2,14","3,15","7","4,16","5,17","6,18","8","7,19","8,20","9,21","10","10,22","11,23","letters","minutes","0,1,2,3,4","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","3","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","prettyName","version","$","fritteli","uhr","register","LayoutDeCh","ab","haubi","fuef","zae","viertu","zwaenzg","LayoutDeChGenau","0","LayoutDk","minutter","over","fem","ti","kvart","tyve","halv","LayoutEn","to","past","five","ten","aQuarter","twenty","twentyfive","getHour","time","hour","getHours","getMinutes","LayoutEs","sonLas","y","menos","cinco","diez","cuarto","veinte","veinticinco","LayoutFr","et","moins","heures","cinq","dix","quart","vingt","vingtcinq","12","LayoutIt","sonoLe","e","meno","cinque","dieci","unQuarto","venti","venticinque","LayoutNl","over1","voor1","half","vijf","tien","kwart","LayoutPt","sao","e1","e2","dez","umQuarto","vinte","Globals","registerTheme","styleClass","themes","some","console","warn","push","hasThemes","length","hasMultipleThemes","getFirstTheme","getTheme","index","getThemes","registerLayout","layout","layouts","element","error","sort","a","b","localeCompare","hasLayouts","hasMultipleLayouts","getFirstLayout","getLayouts","EMPTY_LAYOUT","cookie_handler_CookieHandler","CookieHandler","widgetId","cookiePath","this","getLayout","oldCookie","getCookie","removeCookie","setLayout","setCookie","getMode","setMode","getStatus","setStatus","status","setTheme","theme","cookieName","external_Cookies_","cookieValue","options","expires","path","Letter","style","addStyle","toString","layout_renderer_LayoutRendererV2Delegate","LayoutRendererV2Delegate","parse","forEach","lineString","line","parseArrayOrObject","seconds","parseTimeDefinition","parseObject","keys","map","Number","x","input","_this","Array","isArray","item","definition","listString","timeValues","split","highlightLetters","timeValue","vorne0","hinten0","vorne1","hinten1","vorne2","hinten2","vorne3","hinten3","vorne4","hinten4","vorne5","hinten5","hinten6","hinten7","hinten8","hinten9","11","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59","LayoutRenderer","renderarea","render","beforeshow","undefined","parsed","parsedLayout","writable","configurable","fadeOut","empty","array","letter","append","fadeIn","uhr_renderer_UhrRenderer","UhrRenderer","$element","id","cookieHandler","setupHTML","wireFunctionality","setWidth","width","css","realWidth","height","addClass","controls","controlpanel","content","toggleSwitch","modeSwitch","languageChooser_1","themeChooser_1","closebutton","on","click","hide","after","configlink","toggleConfigScreen","toggle","force","prop","start","stop","languageChooser","change","languageKey","val","selectedLayout","language","found","fallbackLanguage","themeChooser","themeKey","selectedTheme","fallbackTheme","autoresize","window","resize","$parent","parent","$window","parentWidth","parentHeight","windowWidth","windowHeight","size","Math","min","uhr_Uhr","Uhr","widgetInstance","timer","currentMinute","userTime","Date","uuid","parseHash","renderer","setTime","destroy","clearInterval","removeAttr","remove","isOn","setInterval","update","getCurrentLayout","find","removeClass","show","clear","second","getSecond","dotMinute","getDotMinute","coarseMinute","getCoarseMinute","highlight","itemClass","getSeconds","date","hash","location","charAt","substring","decodeURIComponent","pair","matchingLanguages","filter","external_jQuery_","each","styleSheet","attr","name_1","widgetPrototype","_fritteliUhrInstance","_create","_destroy","widget","_layout_layout_de__WEBPACK_IMPORTED_MODULE_1__","_layout_layout_de_ch__WEBPACK_IMPORTED_MODULE_2__","_layout_layout_de_ch_genau__WEBPACK_IMPORTED_MODULE_3__","_layout_layout_dk__WEBPACK_IMPORTED_MODULE_4__","_layout_layout_en__WEBPACK_IMPORTED_MODULE_5__","_layout_layout_es__WEBPACK_IMPORTED_MODULE_6__","_layout_layout_fr__WEBPACK_IMPORTED_MODULE_7__","_layout_layout_it__WEBPACK_IMPORTED_MODULE_8__","_layout_layout_nl__WEBPACK_IMPORTED_MODULE_9__","_layout_layout_pt__WEBPACK_IMPORTED_MODULE_10__"],"mappings":"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","file":"lib/uhr.bundle.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 13);\n","module.exports = Cookies;","module.exports = jQuery;","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst esIst: WordDefinition = {1: [1, 2, 4, 5, 6]};\nconst uhr: WordDefinition = {10: [9, 10, 11]};\nconst nach: WordDefinition = {4: [8, 9, 10, 11]};\nconst vor: WordDefinition = {4: [1, 2, 3]};\nconst halb: WordDefinition = {5: [1, 2, 3, 4]};\nconst fuenf: WordDefinition = {1: [8, 9, 10, 11]};\nconst zehn: WordDefinition = {2: [1, 2, 3, 4]};\nconst viertel: WordDefinition = {3: [5, 6, 7, 8, 9, 10, 11]};\nconst zwanzig: WordDefinition = {2: [5, 6, 7, 8, 9, 10, 11]};\nconst dreiviertel: WordDefinition = {3: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]};\n\nexport const LayoutDe: Layout = {\n code: 'de',\n hours: {\n '0,12': {9: [7, 8, 9, 10, 11]},\n '1,13': {6: [1, 2, 3, 4]},\n '2,14': {6: [8, 9, 10, 11]},\n '3,15': {7: [1, 2, 3, 4]},\n '4,16': {7: [8, 9, 10, 11]},\n '5,17': {5: [8, 9, 10, 11]},\n '6,18': {8: [1, 2, 3, 4, 5]},\n '7,19': {9: [1, 2, 3, 4, 5, 6]},\n '8,20': {8: [8, 9, 10, 11]},\n '9,21': {10: [4, 5, 6, 7]},\n '10,22': {10: [1, 2, 3, 4]},\n '11,23': {5: [6, 7, 8]}\n },\n letters: [\n 'ESKISTAFÜNF',\n 'ZEHNZWANZIG',\n 'DREIVIERTEL',\n 'VORFUNKNACH',\n 'HALBAELFÜNF',\n 'EINSXAMZWEI',\n 'DREIPMJVIER',\n 'SECHSNLACHT',\n 'SIEBENZWÖLF',\n 'ZEHNEUNKUHR'\n ],\n minutes: {\n '0,1,2,3,4': uhr,\n '5,6,7,8,9': [fuenf, nach],\n '10,11,12,13,14': [zehn, nach],\n '15,16,17,18,19': [viertel, nach],\n '20,21,22,23,24': [zwanzig, nach],\n '25,26,27,28,29': [fuenf, vor, halb],\n '30,31,32,33,34': halb,\n '35,36,37,38,39': [fuenf, nach, halb],\n '40,41,42,43,44': [zwanzig, vor],\n '45,46,47,48,49': dreiviertel,\n '50,51,52,53,54': [zehn, vor],\n '55,56,57,58,59': [fuenf, vor]\n },\n permanent: esIst,\n prettyName: 'Deutsch',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutDe);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst esIsch: WordDefinition = {1: [1, 2, 4, 5, 6, 7]};\nconst ab: WordDefinition = {4: [1, 2]};\nconst vor: WordDefinition = {3: [9, 10, 11]};\nconst haubi: WordDefinition = {4: [4, 5, 6, 7, 8]};\nconst fuef: WordDefinition = {1: [9, 10, 11]};\nconst zae: WordDefinition = {2: [9, 10, 11]};\nconst viertu: WordDefinition = {2: [1, 2, 3, 4, 5, 6]};\nconst zwaenzg: WordDefinition = {3: [1, 2, 3, 4, 5, 6]};\n\nexport const LayoutDeCh: Layout = {\n code: 'de_CH',\n hours: {\n '0,12': {10: [1, 2, 3, 4, 5, 6]},\n '1,13': {5: [1, 2, 3]},\n '2,14': {5: [4, 5, 6, 7]},\n '3,15': {5: [9, 10, 11]},\n '4,16': {6: [1, 2, 3, 4, 5]},\n '5,17': {6: [6, 7, 8, 9]},\n '6,18': {7: [1, 2, 3, 4, 5, 6]},\n '7,19': {7: [7, 8, 9, 10, 11]},\n '8,20': {8: [1, 2, 3, 4, 5]},\n '9,21': {8: [6, 7, 8, 9]},\n '10,22': {9: [1, 2, 3, 4]},\n '11,23': {9: [8, 9, 10, 11]}\n },\n letters: [\n 'ESKISCHAFÜF',\n 'VIERTUBFZÄÄ',\n 'ZWÄNZGSIVOR',\n 'ABOHAUBIEGE',\n 'EISZWÖISDRÜ',\n 'VIERIFÜFIQT',\n 'SÄCHSISIBNI',\n 'ACHTINÜNIEL',\n 'ZÄNIERBEUFI',\n 'ZWÖUFINAUHR'\n ],\n minutes: {\n '5,6,7,8,9': [fuef, ab],\n '10,11,12,13,14': [zae, ab],\n '15,16,17,18,19': [viertu, ab],\n '20,21,22,23,24': [zwaenzg, ab],\n '25,26,27,28,29': [fuef, vor, haubi],\n '30,31,32,33,34': haubi,\n '35,36,37,38,39': [fuef, ab, haubi],\n '40,41,42,43,44': [zwaenzg, vor],\n '45,46,47,48,49': [viertu, vor],\n '50,51,52,53,54': [zae, vor],\n '55,56,57,58,59': [fuef, vor]\n },\n permanent: esIsch,\n prettyName: 'Bärndütsch',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutDeCh);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst esIsch: WordDefinition = {1: [1, 2, 4, 5, 6, 7]};\nconst genau: WordDefinition = {3: [7, 8, 9, 10, 11]};\nconst ab: WordDefinition = {4: [4, 5]};\nconst vor: WordDefinition = {4: [1, 2, 3]};\nconst haubi: WordDefinition = {4: [7, 8, 9, 10, 11]};\nconst fuef: WordDefinition = {1: [9, 10, 11]};\nconst zae: WordDefinition = {2: [9, 10, 11]};\nconst viertu: WordDefinition = {2: [1, 2, 3, 4, 5, 6]};\nconst zwaenzg: WordDefinition = {3: [1, 2, 3, 4, 5, 6]};\n\nexport const LayoutDeChGenau: Layout = {\n code: 'de_CH_genau',\n hours: {\n '0,12': {10: [1, 2, 3, 4, 5, 6]},\n '1,13': {5: [1, 2, 3]},\n '2,14': {5: [4, 5, 6, 7]},\n '3,15': {5: [9, 10, 11]},\n '4,16': {6: [1, 2, 3, 4, 5]},\n '5,17': {6: [6, 7, 8, 9]},\n '6,18': {7: [1, 2, 3, 4, 5, 6]},\n '7,19': {7: [7, 8, 9, 10, 11]},\n '8,20': {8: [1, 2, 3, 4, 5]},\n '9,21': {8: [6, 7, 8, 9]},\n '10,22': {9: [1, 2, 3, 4]},\n '11,23': {9: [8, 9, 10, 11]}\n },\n letters: [\n 'ESKISCHAFÜF',\n 'VIERTUBFZÄÄ',\n 'ZWÄNZGGENAU',\n 'VORABOHAUBI',\n 'EISZWÖISDRÜ',\n 'VIERIFÜFIQT',\n 'SÄCHSISIBNI',\n 'ACHTINÜNIEL',\n 'ZÄNIERBEUFI',\n 'ZWÖUFINAUHR'\n ],\n minutes: {\n '0': genau,\n '5,6,7,8,9': [fuef, ab],\n '10,11,12,13,14': [zae, ab],\n '15,16,17,18,19': [viertu, ab],\n '20,21,22,23,24': [zwaenzg, ab],\n '25,26,27,28,29': [fuef, vor, haubi],\n '30,31,32,33,34': haubi,\n '35,36,37,38,39': [fuef, ab, haubi],\n '40,41,42,43,44': [zwaenzg, vor],\n '45,46,47,48,49': [viertu, vor],\n '50,51,52,53,54': [zae, vor],\n '55,56,57,58,59': [fuef, vor]\n },\n permanent: esIsch,\n prettyName: 'Bärndütsch (genau)',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutDeChGenau);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst klokkenEr: WordDefinition = {1: [1, 2, 3, 4, 5, 6, 7, 9, 10]};\nconst minutter: WordDefinition = {4: [4, 5, 6, 7, 8, 9, 10, 11]};\nconst i: WordDefinition = {5: [8]};\nconst over: WordDefinition = {5: [4, 5, 6, 7]};\nconst fem: WordDefinition = {2: [1, 2, 3]};\nconst ti: WordDefinition = {4: [1, 2]};\nconst kvart: WordDefinition = {3: [4, 5, 6, 7, 8]};\nconst tyve: WordDefinition = {2: [4, 5, 6, 7]};\nconst halv: WordDefinition = {6: [8, 9, 10, 11]};\n\nexport const LayoutDk: Layout = {\n code: 'dk',\n hours: {\n '0,12': {10: [8, 9, 10, 11]},\n '1,13': {7: [1, 2]},\n '2,14': {7: [3, 4]},\n '3,15': {7: [5, 6, 7]},\n '4,16': {7: [8, 9, 10, 11]},\n '5,17': {8: [1, 2, 3]},\n '6,18': {8: [4, 5, 6, 7]},\n '7,19': {8: [9, 10, 11]},\n '8,20': {9: [1, 2, 3, 4]},\n '9,21': {9: [6, 7]},\n '10,22': {9: [10, 11]},\n '11,23': {10: [1, 2, 3, 4, 5, 6]}\n },\n letters: [\n 'KLOKKENVERO',\n 'FEMTYVESKLA',\n 'OJEKVARTVAT',\n 'TIAMINUTTER',\n 'VEMOVERILMF',\n 'MONALISHALV',\n 'ETTOTREFIRE',\n 'FEMSEKSRSYV',\n 'OTTERNIMETI',\n 'ELLEVEATOLV'\n ],\n minutes: {\n '5,6,7,8,9': [fem, minutter, over],\n '10,11,12,13,14': [ti, minutter, over],\n '15,16,17,18,19': [kvart, over],\n '20,21,22,23,24': [tyve, minutter, over],\n '25,26,27,28,29': [fem, minutter, i, halv],\n '30,31,32,33,34': [halv],\n '35,36,37,38,39': [fem, minutter, over, halv],\n '40,41,42,43,44': [tyve, minutter, i],\n '45,46,47,48,49': [kvart, i],\n '50,51,52,53,54': [ti, minutter, i],\n '55,56,57,58,59': [fem, minutter, i]\n },\n permanent: klokkenEr,\n prettyName: 'Dansk',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutDk);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst itIs: WordDefinition = {1: [1, 2, 4, 5]};\nconst half: WordDefinition = {4: [1, 2, 3, 4]};\nconst to: WordDefinition = {4: [10, 11]};\nconst past: WordDefinition = {5: [1, 2, 3, 4]};\nconst oClock: WordDefinition = {10: [5, 6, 7, 8, 9, 10, 11]};\nconst five: WordDefinition = {3: [7, 8, 9, 10]};\nconst ten: WordDefinition = {4: [6, 7, 8]};\nconst aQuarter: WordDefinition = {2: [1, 3, 4, 5, 6, 7, 8, 9]};\nconst twenty: WordDefinition = {3: [1, 2, 3, 4, 5, 6]};\nconst twentyfive: WordDefinition = {3: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]};\n\nexport const LayoutEn: Layout = {\n code: 'en',\n getHour: (time: Date): number => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n\n hours: {\n '0,12': {9: [6, 7, 8, 9, 10, 11]},\n '1,13': {6: [1, 2, 3]},\n '2,14': {7: [9, 10, 11]},\n '3,15': {6: [7, 8, 9, 10, 11]},\n '4,16': {7: [1, 2, 3, 4]},\n '5,17': {7: [5, 6, 7, 8]},\n '6,18': {6: [4, 5, 6]},\n '7,19': {9: [1, 2, 3, 4, 5]},\n '8,20': {8: [1, 2, 3, 4, 5]},\n '9,21': {5: [8, 9, 10, 11]},\n '10,22': {10: [1, 2, 3]},\n '11,23': {8: [6, 7, 8, 9, 10, 11]}\n },\n letters: [\n 'ITLISBFAMPM',\n 'ACQUARTERDC',\n 'TWENTYFIVEX',\n 'HALFBTENFTO',\n 'PASTERUNINE',\n 'ONESIXTHREE',\n 'FOURFIVETWO',\n 'EIGHTELEVEN',\n 'SEVENTWELVE',\n 'TENSO\\'CLOCK'\n ],\n minutes: {\n '0,1,2,3,4': oClock,\n '5,6,7,8,9': [five, past],\n '10,11,12,13,14': [ten, past],\n '15,16,17,18,19': [aQuarter, past],\n '20,21,22,23,24': [twenty, past],\n '25,26,27,28,29': [twentyfive, past],\n '30,31,32,33,34': [half, past],\n '35,36,37,38,39': [twentyfive, to],\n '40,41,42,43,44': [twenty, to],\n '45,46,47,48,49': [aQuarter, to],\n '50,51,52,53,54': [ten, to],\n '55,56,57,58,59': [five, to]\n },\n permanent: itIs,\n prettyName: 'English',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutEn);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst esLa: WordDefinition = {1: [1, 2, 6, 7]};\nconst sonLas: WordDefinition = {1: [2, 3, 4, 6, 7, 8]};\nconst y: WordDefinition = {7: [6]};\nconst menos: WordDefinition = {7: [7, 8, 9, 10, 11]};\nconst media: WordDefinition = {10: [1, 2, 3, 4, 5]};\nconst cinco: WordDefinition = {9: [7, 8, 9, 10, 11]};\nconst diez: WordDefinition = {8: [8, 9, 10, 11]};\nconst cuarto: WordDefinition = {10: [6, 7, 8, 9, 10, 11]};\nconst veinte: WordDefinition = {8: [2, 3, 4, 5, 6, 7]};\nconst veinticinco: WordDefinition = {9: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]};\n\nexport const LayoutEs: Layout = {\n code: 'es',\n getHour: (time: Date): number => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n\n hours: {\n '0,12': [sonLas, {7: [1, 2, 3, 4]}],\n '1,13': [esLa, {1: [9, 10, 11]}],\n '2,14': [sonLas, {2: [1, 2, 3]}],\n '3,15': [sonLas, {2: [5, 6, 7, 8]}],\n '4,16': [sonLas, {3: [1, 2, 3, 4, 5, 6]}],\n '5,17': [sonLas, {3: [7, 8, 9, 10, 11]}],\n '6,18': [sonLas, {4: [1, 2, 3, 4]}],\n '7,19': [sonLas, {4: [6, 7, 8, 9, 10]}],\n '8,20': [sonLas, {5: [1, 2, 3, 4]}],\n '9,21': [sonLas, {5: [5, 6, 7, 8, 9]}],\n '10,22': [sonLas, {6: [3, 4, 5, 6]}],\n '11,23': [sonLas, {6: [8, 9, 10, 11]}]\n },\n letters: [\n 'ESONELASUNA',\n 'DOSITRESORE',\n 'CUATROCINCO',\n 'SEISASIETEN',\n 'OCHONUEVEYO',\n 'LADIEZSONCE',\n 'DOCELYMENOS',\n 'OVEINTEDIEZ',\n 'VEINTICINCO',\n 'MEDIACUARTO'\n ],\n minutes: {\n '5,6,7,8,9': [y, cinco],\n '10,11,12,13,14': [y, diez],\n '15,16,17,18,19': [y, cuarto],\n '20,21,22,23,24': [y, veinte],\n '25,26,27,28,29': [y, veinticinco],\n '30,31,32,33,34': [y, media],\n '35,36,37,38,39': [menos, veinticinco],\n '40,41,42,43,44': [menos, veinte],\n '45,46,47,48,49': [menos, cuarto],\n '50,51,52,53,54': [menos, diez],\n '55,56,57,58,59': [menos, cinco]\n },\n permanent: null,\n prettyName: 'Español',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutEs);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst ilEst: WordDefinition = {1: [1, 2, 4, 5, 6]};\nconst et: WordDefinition = {8: [1, 2]};\nconst moins: WordDefinition = {7: [1, 2, 3, 4, 5]};\nconst demie: WordDefinition = {10: [4, 5, 6, 7, 8]};\nconst heures: WordDefinition = {6: [6, 7, 8, 9, 10, 11]};\nconst le: WordDefinition = {7: [7, 8]};\nconst cinq: WordDefinition = {9: [7, 8, 9, 10]};\nconst dix: WordDefinition = {7: [9, 10, 11]};\nconst quart: WordDefinition = {8: [4, 5, 6, 7, 8]};\nconst vingt: WordDefinition = {9: [1, 2, 3, 4, 5]};\nconst vingtcinq: WordDefinition = {9: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]};\n\nexport const LayoutFr: Layout = {\n code: 'fr',\n getHour: (time: Date): number => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n hours: {\n '0': {5: [6, 7, 8, 9, 10, 11]},\n '1,13': [\n {3: [5, 6, 7]},\n heures\n ],\n '2,14': [\n {1: [8, 9, 10, 11]},\n heures\n ],\n '3,15': [\n {2: [7, 8, 9, 10, 11]},\n heures\n ],\n '4,16': [\n {2: [1, 2, 3, 4, 5, 6]},\n heures\n ],\n '5,17': [\n {4: [8, 9, 10, 11]},\n heures\n ],\n '6,18': [\n {4: [5, 6, 7]},\n heures\n ],\n '7,19': [\n {3: [8, 9, 10, 11]},\n heures\n ],\n '8,20': [\n {4: [1, 2, 3, 4]},\n heures\n ],\n '9,21': [\n {3: [1, 2, 3, 4]},\n heures\n ],\n '10,22': [\n {5: [3, 4, 5]},\n heures\n ],\n '11,23': [\n {6: [1, 2, 3, 4]},\n heures\n ],\n '12': {5: [1, 2, 3, 4]}\n },\n letters: [\n 'ILNESTODEUX',\n 'QUATRETROIS',\n 'NEUFUNESEPT',\n 'HUITSIXCINQ',\n 'MIDIXMINUIT',\n 'ONZERHEURES',\n 'MOINSOLEDIX',\n 'ETRQUARTPMD',\n 'VINGT-CINQU',\n 'ETSDEMIEPAM'\n ],\n minutes: {\n '5,6,7,8,9': cinq,\n '10,11,12,13,14': dix,\n '15,16,17,18,19': [et, quart],\n '20,21,22,23,24': vingt,\n '25,26,27,28,29': vingtcinq,\n '30,31,32,33,34': [et, demie],\n '35,36,37,38,39': [moins, vingtcinq],\n '40,41,42,43,44': [moins, vingt],\n '45,46,47,48,49': [moins, le, quart],\n '50,51,52,53,54': [moins, dix],\n '55,56,57,58,59': [moins, cinq]\n },\n permanent: ilEst,\n prettyName: 'Français',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutFr);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst sonoLe: WordDefinition = {1: [1, 2, 3, 4, 6, 7]};\nconst eL: WordDefinition = {2: [1, 3, 4]};\nconst e: WordDefinition = {8: [1]};\nconst meno: WordDefinition = {7: [8, 9, 10, 11]};\nconst mezza: WordDefinition = {10: [7, 8, 9, 10, 11]};\nconst cinque: WordDefinition = {9: [6, 7, 8, 9, 10, 11]};\nconst dieci: WordDefinition = {10: [1, 2, 3, 4, 5]};\nconst unQuarto: WordDefinition = {8: [3, 4, 6, 7, 8, 9, 10, 11]};\nconst venti: WordDefinition = {9: [1, 2, 3, 4, 5]};\nconst venticinque: WordDefinition = {9: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]};\n\nexport const LayoutIt: Layout = {\n code: 'it',\n getHour: (time: Date): number => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n hours: {\n '0,12': [sonoLe, {5: [1, 2, 3, 4, 5, 6]}],\n '1,13': [eL, {2: [5, 6, 7]}],\n '2,14': [sonoLe, {2: [9, 10, 11]}],\n '3,15': [sonoLe, {3: [1, 2, 3]}],\n '4,16': [sonoLe, {6: [1, 2, 3, 4, 5, 6, 7]}],\n '5,17': [sonoLe, {7: [1, 2, 3, 4, 5, 6]}],\n '6,18': [sonoLe, {6: [9, 10, 11]}],\n '7,19': [sonoLe, {5: [7, 8, 9, 10, 11]}],\n '8,20': [sonoLe, {3: [4, 5, 6, 7]}],\n '9,21': [sonoLe, {3: [8, 9, 10, 11]}],\n '10,22': [sonoLe, {4: [1, 2, 3, 4, 5]}],\n '11,23': [sonoLe, {4: [6, 7, 8, 9, 10, 11]}]\n },\n letters: [\n 'SONORLEBORE',\n 'ÈRL\\'UNASDUE',\n 'TREOTTONOVE',\n 'DIECIUNDICI',\n 'DODICISETTE',\n 'QUATTROCSEI',\n 'CINQUEAMENO',\n 'ECUNOQUARTO',\n 'VENTICINQUE',\n 'DIECIPMEZZA'\n ],\n minutes: {\n '5,6,7,8,9': [e, cinque],\n '10,11,12,13,14': [e, dieci],\n '15,16,17,18,19': [e, unQuarto],\n '20,21,22,23,24': [e, venti],\n '25,26,27,28,29': [e, venticinque],\n '30,31,32,33,34': [e, mezza],\n '35,36,37,38,39': [meno, venticinque],\n '40,41,42,43,44': [meno, venti],\n '45,46,47,48,49': [meno, unQuarto],\n '50,51,52,53,54': [meno, dieci],\n '55,56,57,58,59': [meno, cinque]\n },\n permanent: null,\n prettyName: 'Italiano',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutIt);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst hetIs: WordDefinition = {1: [1, 2, 3, 5, 6]};\nconst over1: WordDefinition = {3: [1, 2, 3, 4]};\nconst voor1: WordDefinition = {2: [8, 9, 10, 11]};\nconst over2: WordDefinition = {4: [8, 9, 10, 11]};\nconst voor2: WordDefinition = {5: [1, 2, 3, 4]};\nconst half: WordDefinition = {4: [1, 2, 3, 4]};\nconst vijf: WordDefinition = {1: [8, 9, 10, 11]};\nconst tien: WordDefinition = {2: [1, 2, 3, 4]};\nconst kwart: WordDefinition = {3: [7, 8, 9, 10, 11]};\nconst uur: WordDefinition = {10: [9, 10, 11]};\n\nexport const LayoutNl: Layout = {\n code: 'nl',\n getHour: (time: Date): number => {\n const hour = time.getHours();\n if (time.getMinutes() >= 20) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n hours: {\n '0,12': {10: [1, 2, 3, 4, 5, 6]},\n '1,13': {5: [8, 9, 10]},\n '2,14': {6: [1, 2, 3, 4]},\n '3,15': {6: [8, 9, 10, 11]},\n '4,16': {7: [1, 2, 3, 4]},\n '5,17': {7: [5, 6, 7, 8]},\n '6,18': {7: [9, 10, 11]},\n '7,19': {8: [1, 2, 3, 4, 5]},\n '8,20': {9: [1, 2, 3, 4]},\n '9,21': {8: [7, 8, 9, 10, 11]},\n '10,22': {9: [5, 6, 7, 8]},\n '11,23': {9: [9, 10, 11]}\n },\n letters: [\n 'HETKISAVIJF',\n 'TIENBTZVOOR',\n 'OVERMEKWART',\n 'HALFSPWOVER',\n 'VOORTHGEENS',\n 'TWEEPVCDRIE',\n 'VIERVIJFZES',\n 'ZEVENONEGEN',\n 'ACHTTIENELF',\n 'TWAALFBFUUR'\n ],\n minutes: {\n '0,1,2,3,4': uur,\n '5,6,7,8,9': [vijf, over1],\n '10,11,12,13,14': [tien, over1],\n '15,16,17,18,19': [kwart, over2],\n '20,21,22,23,24': [tien, voor1, half],\n '25,26,27,28,29': [vijf, voor1, half],\n '30,31,32,33,34': half,\n '35,36,37,38,39': [vijf, over1, half],\n '40,41,42,43,44': [tien, over1, half],\n '45,46,47,48,49': [kwart, voor2],\n '50,51,52,53,54': [tien, voor1],\n '55,56,57,58,59': [vijf, voor1]\n },\n permanent: hetIs,\n prettyName: 'Nederlands',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutNl);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst e: WordDefinition = {1: [1]};\nconst sao: WordDefinition = {1: [2, 3, 4]};\nconst e1: WordDefinition = {7: [8]};\nconst e2: WordDefinition = {10: [5]};\nconst menos: WordDefinition = {7: [7, 8, 9, 10, 11]};\nconst meia: WordDefinition = {8: [8, 9, 10, 11]};\nconst cinco: WordDefinition = {10: [7, 8, 9, 10, 11]};\nconst dez: WordDefinition = {10: [1, 2, 3]};\nconst umQuarto: WordDefinition = {9: [1, 2, 4, 5, 6, 7, 8, 9]};\nconst vinte: WordDefinition = {8: [1, 2, 3, 4, 5]};\n\nexport const LayoutPt: Layout = {\n code: 'pt',\n getHour: (time: Date): number => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n hours: {\n '0': [e, {'6': [2, 3, 4, 5, 7, 8, 9, 10, 11]}],\n '12': [e, {'2': [1, 2, 3, 4, 6, 7, 8]}],\n '1,13': [e, {'1': [5, 6, 7]}],\n '2,14': [sao, {'3': [1, 2, 3, 4]}],\n '3,15': [sao, {'1': [8, 9, 10, 11]}],\n '4,16': [sao, {'4': [1, 2, 3, 4, 5, 6]}],\n '5,17': [sao, {'5': [1, 2, 3, 4, 5]}],\n '6,18': [sao, {'3': [4, 5, 6, 7]}],\n '7,19': [sao, {'3': [7, 8, 9, 10]}],\n '8,20': [sao, {'5': [5, 6, 7, 8]}],\n '9,21': [sao, {'4': [8, 9, 10, 11]}],\n '10,22': [sao, {'2': [9, 10, 11]}],\n '11,23': [sao, {'5': [8, 9, 10, 11]}]\n },\n letters: [\n 'ÉSÃOUMATRÊS',\n 'MEIOLDIADEZ',\n 'DUASEISETEY',\n 'QUATROHNOVE',\n 'CINCOITONZE',\n 'ZMEIALNOITE',\n 'HORASYMENOS',\n 'VINTECAMEIA',\n 'UMVQUARTOPM',\n 'DEZOEYCINCO'\n ],\n minutes: {\n '5,6,7,8,9': [e1, cinco],\n '10,11,12,13,14': [e1, dez],\n '15,16,17,18,19': [e1, umQuarto],\n '20,21,22,23,24': [e1, vinte],\n '25,26,27,28,29': [e1, vinte, e2, cinco],\n '30,31,32,33,34': [e1, meia],\n '35,36,37,38,39': [menos, vinte, e2, cinco],\n '40,41,42,43,44': [menos, vinte],\n '45,46,47,48,49': [menos, umQuarto],\n '50,51,52,53,54': [menos, dez],\n '55,56,57,58,59': [menos, cinco]\n },\n permanent: null,\n prettyName: 'Português',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutPt);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout} from './layout';\nimport {Theme} from './theme';\n\nexport class Globals {\n private static layouts: Layout[] = [];\n private static themes: Theme[] = [];\n\n public static registerTheme(name: string, styleClass: string): void {\n if (Globals.themes.some((value): boolean => value.name === name)) {\n console.warn(`Theme with name '${name}' already registered; ignoring register request for styleClass '${styleClass}'.`);\n } else {\n Globals.themes.push({\n name,\n styleClass\n });\n }\n }\n\n public static hasThemes(): boolean {\n return Globals.themes.length > 0;\n }\n\n public static hasMultipleThemes(): boolean {\n return Globals.themes.length > 1;\n }\n\n public static getFirstTheme(): Theme {\n return Globals.getTheme(0);\n }\n\n public static getTheme(index: number): Theme {\n return Globals.themes[index];\n }\n\n public static getThemes(): Theme[] {\n return Globals.themes;\n }\n\n public static registerLayout(layout: Layout): void {\n const available = !Globals.layouts.some((element): boolean => {\n if (layout.code === element.code) {\n if (layout.prettyName !== element.prettyName) {\n console.error(\n `Error: Language code '${layout.code}' cannot be registered for layout '${layout.prettyName}' because it is already registered for layout '${element.prettyName}'!`\n );\n }\n return true;\n }\n return false;\n });\n if (available) {\n Globals.layouts.push(layout);\n Globals.layouts.sort((a, b): number => a.prettyName.localeCompare(b.prettyName));\n }\n }\n\n public static hasLayouts(): boolean {\n return Globals.layouts.length > 0;\n }\n\n public static hasMultipleLayouts(): boolean {\n return Globals.layouts.length > 1;\n }\n\n public static getFirstLayout(): Layout {\n return Globals.layouts[0];\n }\n\n public static getLayouts(): Layout[] {\n return Globals.layouts;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Letter} from './letter';\n\nexport interface Layout {\n readonly code: string;\n getCoarseMinute?: (time: Date) => number;\n getDotMinute?: (time: Date) => number;\n getHour?: (time: Date) => number;\n getSeconds?: (time: Date) => number;\n readonly hours: TimeDefinition;\n readonly letters: string[];\n readonly minutes: TimeDefinition;\n parsed?: Letter[][];\n readonly permanent: WordDefinition | WordDefinition[];\n readonly prettyName: string;\n seconds?: TimeDefinition;\n readonly version: number;\n}\n\nexport interface WordDefinition {\n [line: number]: number[];\n}\n\nexport interface TimeDefinition {\n [values: string]: WordDefinition | WordDefinition[];\n}\n\nexport const EMPTY_LAYOUT: Layout = {\n code: null,\n hours: null,\n letters: [],\n minutes: null,\n permanent: [],\n prettyName: null,\n version: 2\n};\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport * as Cookies from 'js-cookie';\n\nexport class CookieHandler {\n public constructor(private readonly widgetId: string, private readonly cookiePath?: string) {\n }\n\n public getLayout(): string {\n const oldCookie = this.getCookie('uhr-language');\n if (oldCookie) {\n // aha, old cookie is set. migrate to new one!\n this.removeCookie('uhr-language');\n this.setLayout(oldCookie);\n }\n return this.getCookie('uhr-layout');\n }\n\n public setLayout(layout: string): void {\n this.setCookie('uhr-layout', layout);\n }\n\n public getMode(): string {\n return this.getCookie('uhr-mode');\n }\n\n public setMode(mode: string): void {\n this.setCookie('uhr-mode', mode);\n }\n\n public getStatus(): string {\n return this.getCookie('uhr-status');\n }\n\n public setStatus(status: string): void {\n this.setCookie('uhr-status', status);\n }\n\n public getTheme(): string {\n return this.getCookie('uhr-theme');\n }\n\n public setTheme(theme: string): void {\n this.setCookie('uhr-theme', theme);\n }\n\n private getCookie(cookieName: string): string {\n return Cookies.get(cookieName + this.widgetId);\n }\n\n private setCookie(cookieName: string, cookieValue: string): void {\n let options;\n if (this.cookiePath) {\n options = {expires: 365, path: this.cookiePath};\n } else {\n options = {expires: 365};\n }\n Cookies.set(cookieName + this.widgetId, cookieValue, options);\n }\n\n private removeCookie(cookieName: string): void {\n if (this.cookiePath) {\n Cookies.remove(cookieName + this.widgetId, {path: this.cookiePath});\n } else {\n Cookies.remove(cookieName + this.widgetId);\n }\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\n/**\n * Ein Buchstabe. Hilfsklasse für den Renderer und Inhalt der Layout-Arrays.\n * @param value Der Buchstabe, der Dargestellt werden soll.\n * @param style Die CSS-Styleklassen des Buchstabens.\n */\nexport class Letter {\n // private readonly value: string;\n private style: string;\n\n public constructor(private readonly value: string, style: string = '') {\n this.value = value;\n this.style = style;\n // if (style) {\n // this.style = style;\n // }\n }\n\n public addStyle(style: string): void {\n if (this.style === '') {\n this.style = style;\n } else {\n this.style += ` ${style}`;\n }\n }\n\n public toString(): string {\n return `${this.value}`;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, TimeDefinition, WordDefinition} from './domain/layout';\nimport {Letter} from './domain/letter';\n\nclass LayoutRendererV2Delegate {\n private static readonly vorne0: WordDefinition = {\n 3: [2, 3, 4],\n 4: [1, 5],\n 5: [1, 4, 5],\n 6: [1, 3, 5],\n 7: [1, 2, 5],\n 8: [1, 5],\n 9: [2, 3, 4]\n };\n private static readonly hinten0: WordDefinition = {\n 3: [8, 9, 10],\n 4: [7, 11],\n 5: [7, 10, 11],\n 6: [7, 9, 11],\n 7: [7, 8, 11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly vorne1: WordDefinition = {\n 3: [3],\n 4: [2, 3],\n 5: [3],\n 6: [3],\n 7: [3],\n 8: [3],\n 9: [2, 3, 4]\n };\n private static readonly hinten1: WordDefinition = {\n 3: [9],\n 4: [8, 9],\n 5: [9],\n 6: [9],\n 7: [9],\n 8: [9],\n 9: [8, 9, 10]\n };\n private static readonly vorne2: WordDefinition = {\n 3: [2, 3, 4],\n 4: [1, 5],\n 5: [5],\n 6: [4],\n 7: [3],\n 8: [2],\n 9: [1, 2, 3, 4, 5]\n };\n private static readonly hinten2: WordDefinition = {\n 3: [8, 9, 10],\n 4: [7, 11],\n 5: [11],\n 6: [10],\n 7: [9],\n 8: [8],\n 9: [7, 8, 9, 10, 11]\n };\n private static readonly vorne3: WordDefinition = {\n 3: [1, 2, 3, 4, 5],\n 4: [4],\n 5: [3],\n 6: [4],\n 7: [5],\n 8: [1, 5],\n 9: [2, 3, 4]\n };\n private static readonly hinten3: WordDefinition = {\n 3: [7, 8, 9, 10, 11],\n 4: [10],\n 5: [9],\n 6: [10],\n 7: [11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly vorne4: WordDefinition = {\n 3: [4],\n 4: [3, 4],\n 5: [2, 4],\n 6: [1, 4],\n 7: [1, 2, 3, 4, 5],\n 8: [4],\n 9: [4]\n };\n private static readonly hinten4: WordDefinition = {\n 3: [10],\n 4: [9, 10],\n 5: [8, 10],\n 6: [7, 10],\n 7: [7, 8, 9, 10, 11],\n 8: [10],\n 9: [10]\n };\n private static readonly vorne5: WordDefinition = {\n 3: [1, 2, 3, 4, 5],\n 4: [1],\n 5: [1, 2, 3, 4],\n 6: [5],\n 7: [5],\n 8: [1, 5],\n 9: [2, 3, 4]\n };\n private static readonly hinten5: WordDefinition = {\n 3: [7, 8, 9, 10, 11],\n 4: [7],\n 5: [7, 8, 9, 10],\n 6: [11],\n 7: [11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly hinten6: WordDefinition = {\n 3: [9, 10],\n 4: [8],\n 5: [7],\n 6: [7, 8, 9, 10],\n 7: [7, 11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly hinten7: WordDefinition = {\n 3: [7, 8, 9, 10, 11],\n 4: [11],\n 5: [10],\n 6: [9],\n 7: [8],\n 8: [8],\n 9: [8]\n };\n private static readonly hinten8: WordDefinition = {\n 3: [8, 9, 10],\n 4: [7, 11],\n 5: [7, 11],\n 6: [8, 9, 10],\n 7: [7, 11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly hinten9: WordDefinition = {\n 3: [8, 9, 10],\n 4: [7, 11],\n 5: [7, 11],\n 6: [8, 9, 10, 11],\n 7: [11],\n 8: [10],\n 9: [8, 9]\n };\n private static readonly seconds: TimeDefinition = {\n '0': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten0],\n '1': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten1],\n '2': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten2],\n '3': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten3],\n '4': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten4],\n '5': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten5],\n '6': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten6],\n '7': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten7],\n '8': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten8],\n '9': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten9],\n '10': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten0],\n '11': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten1],\n '12': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten2],\n '13': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten3],\n '14': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten4],\n '15': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten5],\n '16': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten6],\n '17': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten7],\n '18': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten8],\n '19': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten9],\n '20': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten0],\n '21': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten1],\n '22': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten2],\n '23': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten3],\n '24': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten4],\n '25': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten5],\n '26': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten6],\n '27': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten7],\n '28': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten8],\n '29': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten9],\n '30': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten0],\n '31': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten1],\n '32': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten2],\n '33': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten3],\n '34': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten4],\n '35': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten5],\n '36': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten6],\n '37': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten7],\n '38': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten8],\n '39': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten9],\n '40': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten0],\n '41': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten1],\n '42': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten2],\n '43': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten3],\n '44': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten4],\n '45': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten5],\n '46': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten6],\n '47': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten7],\n '48': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten8],\n '49': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten9],\n '50': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten0],\n '51': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten1],\n '52': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten2],\n '53': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten3],\n '54': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten4],\n '55': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten5],\n '56': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten6],\n '57': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten7],\n '58': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten8],\n '59': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten9]\n };\n\n public constructor(private readonly layout: Layout) {\n }\n\n public parse(): Letter[][] {\n const letters: Letter[][] = [];\n this.layout.letters.forEach((lineString: string): void => {\n const line: Letter[] = [];\n for (let c = 0; c < lineString.length; c++) {\n line.push(new Letter(lineString[c]));\n }\n letters.push(line);\n });\n this.parseArrayOrObject(letters, 'on', this.layout.permanent);\n if (typeof this.layout.seconds !== 'undefined' && this.layout.seconds !== null) {\n this.parseTimeDefinition(letters, 'second', this.layout.seconds);\n } else {\n this.parseTimeDefinition(letters, 'second', LayoutRendererV2Delegate.seconds);\n }\n this.parseTimeDefinition(letters, 'minute', this.layout.minutes);\n this.parseTimeDefinition(letters, 'hour', this.layout.hours);\n return letters;\n }\n\n private parseObject(letters: Letter[][], styleClass: string, object: WordDefinition): void {\n if (typeof object !== 'undefined' && object !== null) {\n Object.keys(object)\n .map((key: string): number => Number(key))\n .forEach(\n (y: number): void => object[y].forEach(\n (x: number): void => letters[y - 1][x - 1].addStyle(styleClass)\n )\n );\n }\n }\n\n private parseArrayOrObject(letters: Letter[][], styleClass: string, input: WordDefinition | WordDefinition[]): void {\n if (typeof input !== 'undefined' && input !== null) {\n if (Array.isArray(input)) {\n input.forEach((item: WordDefinition): void => this.parseObject(letters, styleClass, item));\n } else {\n this.parseObject(letters, styleClass, input);\n }\n }\n }\n\n private parseTimeDefinition(letters: Letter[][], styleClass: string, definition: TimeDefinition): void {\n if (typeof definition !== 'undefined' && definition !== null) {\n Object.keys(definition).forEach((listString: string): void => {\n const timeValues: string[] = listString.split(',');\n const highlightLetters: WordDefinition | WordDefinition[] = definition[listString];\n timeValues.forEach((timeValue: string): void => this.parseArrayOrObject(letters, styleClass + timeValue, highlightLetters));\n });\n }\n }\n}\n\n/**\n * Hilfsklasse zum Rendern der Buchstaben der Uhr.\n * @param layout Layout-Objekt, das gerendert werden soll.\n * @param renderarea Das jQuery-gewrappte HTML-Element, auf dem gerendert werden soll.\n */\nexport class LayoutRenderer {\n public constructor(private readonly layout: Layout, private readonly renderarea: JQuery) {\n }\n\n public render(beforeshow?: () => void): void {\n if (this.layout.parsed === undefined) {\n if (this.layout.version === 2) {\n const delegate: LayoutRendererV2Delegate = new LayoutRendererV2Delegate(this.layout);\n const parsedLayout: Letter[][] = delegate.parse();\n Object.defineProperty(this.layout, 'parsed', {\n value: parsedLayout,\n writable: false,\n configurable: false\n });\n } else {\n console.warn(`Unknown layout version: '${this.layout.version}', expecting '2'`);\n return;\n }\n }\n const letters: Letter[][] = this.layout.parsed;\n this.renderarea.fadeOut('fast', (): void => {\n this.renderarea.empty();\n letters.forEach((line, index, array): void => {\n line.forEach((letter): JQuery => this.renderarea.append(letter.toString()));\n if (index < array.length - 1) {\n this.renderarea.append('
');\n }\n });\n if (beforeshow) {\n beforeshow();\n }\n this.renderarea.fadeIn('fast');\n });\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {CookieHandler} from './cookie-handler';\nimport {Globals} from './domain/globals';\nimport {Layout} from './domain/layout';\nimport {Options} from './widget/options';\nimport {Theme} from './domain/theme';\nimport {Uhr} from './uhr';\n\ndeclare var $: JQueryStatic;\n\nexport class UhrRenderer {\n private cookieHandler: CookieHandler;\n\n public constructor(\n private readonly uhr: Uhr,\n private readonly $element: JQuery,\n private readonly options: Options,\n private readonly id: string\n ) {\n this.cookieHandler = new CookieHandler(id, options.cookiePath);\n }\n\n public render(): void {\n this.setupHTML();\n this.wireFunctionality();\n }\n\n public setWidth(width: string): void {\n this.$element.css('width', width);\n const realWidth: number = this.$element.width();\n this.$element.width(realWidth);\n this.$element.height(realWidth);\n this.$element.css('font-size', (realWidth / 40) + 'px');\n }\n\n private setupHTML(): void {\n // Base clock area\n this.$element.addClass('uhr')\n .empty()\n .append('')\n .append('')\n .append('')\n .append('')\n .append('
')\n .append('
');\n\n this.setWidth(this.options.width);\n\n if (this.options.controls) {\n const controlpanel = $(`
`);\n const content = $('
');\n controlpanel.append(content);\n // on/off switch\n const toggleSwitch = $(`
`);\n toggleSwitch.append(``);\n toggleSwitch.append(``);\n content.append(toggleSwitch);\n\n // time mode switch\n const modeSwitch = $(`
`);\n modeSwitch.append(``);\n modeSwitch.append(``);\n content.append(modeSwitch);\n // language chooser\n if (Globals.hasMultipleLayouts()) {\n const languageChooser = $(``);\n Globals.getLayouts().forEach((layout: Layout): void => {\n languageChooser.append(``);\n });\n content.append(languageChooser);\n }\n\n // theme chooser\n if (Globals.hasMultipleThemes()) {\n const themeChooser = $(``);\n Globals.getThemes().forEach((theme: Theme): void => {\n themeChooser.append(``);\n });\n content.append(themeChooser);\n }\n const closebutton: JQuery = $(``);\n closebutton.on({click: (): JQuery => $(`#uhr-controlpanel${this.id}`).hide('fast')});\n content.append(closebutton);\n this.$element.after(controlpanel);\n controlpanel.hide();\n const configlink: JQuery = $(``);\n configlink.on({click: (): void => this.toggleConfigScreen()});\n this.$element.after(configlink);\n }\n }\n\n private wireFunctionality(): void {\n // on/off switch\n const toggleSwitch: JQuery = $(`#uhr-onoffswitch-checkbox${this.id}`);\n toggleSwitch.on({click: (): void => this.uhr.toggle()});\n let status = this.cookieHandler.getStatus();\n if (status === undefined || this.options.force) {\n status = this.options.status;\n }\n toggleSwitch.prop('checked', status === 'on');\n if (status === 'on') {\n this.uhr.start();\n } else {\n this.uhr.stop();\n }\n\n // time mode switch\n const modeSwitch: JQuery = $(`#uhr-modeswitch-checkbox${this.id}`);\n modeSwitch.on({\n click: (): void => {\n if (this.options.mode === 'seconds') {\n this.uhr.setMode('normal');\n } else {\n this.uhr.setMode('seconds');\n }\n }\n });\n\n let mode = this.cookieHandler.getMode();\n if (mode === undefined || this.options.force) {\n mode = this.options.mode;\n }\n modeSwitch.prop('checked', mode !== 'seconds');\n if (mode === 'seconds') {\n this.uhr.setMode('seconds');\n } else {\n this.uhr.setMode('normal');\n }\n\n // language chooser\n const languageChooser: JQuery = $(`#uhr-languagechooser${this.id}`);\n languageChooser.on({\n change: (): void => {\n const languageKey = $(`#uhr-languagechooser${this.id}`).val() as string;\n this.uhr.setLayout(languageKey);\n }\n });\n let selectedLayout = this.cookieHandler.getLayout();\n if (selectedLayout === undefined || this.options.force) {\n selectedLayout = this.options.language;\n }\n let found = Globals.getLayouts().some((item: Layout): boolean => selectedLayout === item.code);\n if (!found) {\n let fallbackLanguage;\n if (Globals.hasLayouts()) {\n fallbackLanguage = Globals.getFirstLayout().code;\n } else {\n fallbackLanguage = '';\n }\n console.warn(`Language '${selectedLayout}' not found! Using fallback '${fallbackLanguage}'.`);\n selectedLayout = fallbackLanguage;\n }\n languageChooser.val(selectedLayout);\n this.options.language = '';\n this.uhr.setLayout(selectedLayout);\n\n // theme chooser\n const themeChooser: JQuery = $(`#uhr-themechooser${this.id}`);\n themeChooser.on({\n change: (): void => {\n const themeKey = $(`#uhr-themechooser${this.id}`).val() as string;\n this.uhr.setTheme(themeKey);\n }\n });\n let selectedTheme = this.cookieHandler.getTheme();\n if (selectedTheme === undefined || this.options.force) {\n selectedTheme = this.options.theme;\n }\n found = Globals.getThemes().some((item: Theme): boolean => selectedTheme === item.styleClass);\n if (!found) {\n const fallbackTheme = Globals.getFirstTheme().styleClass;\n console.warn(`Theme '${selectedTheme}' not found! Using fallback '${fallbackTheme}'.`);\n selectedTheme = fallbackTheme;\n }\n themeChooser.val(selectedTheme);\n this.options.theme = '';\n this.uhr.setTheme(selectedTheme);\n if (this.options.autoresize) {\n $(window).on({\n resize: (): void => {\n const $parent: JQuery = this.$element.parent();\n const $window: JQuery = $(window);\n const parentWidth: number = $parent.width();\n const parentHeight: number = $parent.height();\n const windowWidth: number = $window.width();\n const windowHeight: number = $window.height();\n const size: string = `${Math.min(parentWidth, parentHeight, windowWidth, windowHeight)}px`;\n this.setWidth(size);\n }\n });\n }\n }\n\n private toggleConfigScreen(): void {\n $(`#uhr-controlpanel${this.id}`).toggle('fast');\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\n/*eslint no-undef: \"warn\"*/\nimport WidgetCommonProperties = JQueryUI.WidgetCommonProperties;\nimport {EMPTY_LAYOUT, Layout} from './domain/layout';\nimport {CookieHandler} from './cookie-handler';\nimport {Globals} from './domain/globals';\nimport {LayoutRenderer} from './layout-renderer';\nimport {UhrRenderer} from './uhr-renderer';\nimport {WidgetPrototype} from './widget/widget-prototype';\n\ndeclare var $: JQueryStatic;\n\nexport class Uhr {\n\n private timer: number = null;\n private currentMinute: number = null;\n private renderer: UhrRenderer;\n private cookieHandler: CookieHandler;\n\n public constructor(private readonly widgetInstance: WidgetPrototype & WidgetCommonProperties) {\n const userTime = this.widgetInstance.options.time;\n if (this.widgetInstance.options.time === undefined) {\n this.widgetInstance.options.time = new Date();\n }\n this.cookieHandler = new CookieHandler(this.widgetInstance.uuid, this.widgetInstance.options.cookiePath);\n this.parseHash();\n this.renderer = new UhrRenderer(this, this.widgetInstance.element, this.widgetInstance.options, this.widgetInstance.uuid);\n this.renderer.render();\n if (userTime !== undefined) {\n this.setTime(userTime);\n }\n }\n\n public destroy(): void {\n if (this.timer) {\n window.clearInterval(this.timer);\n this.timer = null;\n }\n this.widgetInstance.element\n .removeAttr('style')\n .removeAttr('class')\n .empty();\n $(`#uhr-configlink${this.widgetInstance.uuid}`).remove();\n $(`#uhr-controlpanel${this.widgetInstance.uuid}`).remove();\n }\n\n public start(): void {\n if (!this.isOn()) {\n this.timer = window.setInterval((): void => {\n this.widgetInstance.options.time = new Date();\n this.update();\n }, 1000);\n this.update();\n this.cookieHandler.setStatus('on');\n }\n }\n\n public stop(): void {\n if (this.isOn()) {\n window.clearInterval(this.timer);\n this.timer = null;\n this.update();\n this.cookieHandler.setStatus('off');\n }\n }\n\n public toggle(): void {\n if (this.isOn()) {\n this.stop();\n } else {\n this.start();\n }\n }\n\n public setLayout(key: string): void {\n if (key !== this.widgetInstance.options.language) {\n this.widgetInstance.options.language = key;\n const renderer = new LayoutRenderer(this.getCurrentLayout(), this.widgetInstance.element.find('.letterarea'));\n renderer.render((): void => {\n this.currentMinute = -1;\n this.update();\n });\n this.cookieHandler.setLayout(key);\n this.update();\n }\n }\n\n public setTheme(styleClass: string): void {\n if (styleClass !== this.widgetInstance.options.theme) {\n this.widgetInstance.element.removeClass(this.widgetInstance.options.theme).addClass(styleClass);\n $(`#uhr-onoffswitch${this.widgetInstance.uuid}`).removeClass(this.widgetInstance.options.theme).addClass(styleClass);\n this.widgetInstance.options.theme = styleClass;\n this.cookieHandler.setTheme(styleClass);\n }\n }\n\n public setTime(time: Date): void {\n this.currentMinute = null;\n if (time === null) {\n this.widgetInstance.options.time = new Date();\n } else {\n if (this.timer !== null) {\n window.clearInterval(this.timer);\n }\n this.widgetInstance.options.time = time;\n }\n this.update();\n }\n\n public setMode(mode: string): void {\n this.widgetInstance.options.mode = mode;\n this.currentMinute = null;\n this.update();\n this.cookieHandler.setMode(mode);\n }\n\n public setWidth(width: string): void {\n this.renderer.setWidth(width);\n }\n\n private isOn(): boolean {\n return this.timer !== null;\n }\n\n private update(): void {\n if (this.isOn()) {\n const time = this.widgetInstance.options.time;\n if (!this.getCurrentLayout().hasOwnProperty('seconds') && this.widgetInstance.options.mode !== 'seconds') {\n if (time.getMinutes() === this.currentMinute) {\n return;\n }\n this.currentMinute = time.getMinutes();\n }\n this.show(time);\n } else {\n this.clear();\n this.currentMinute = -1;\n }\n }\n\n private show(time: Date): void {\n const second = this.getSecond(time);\n const dotMinute = this.getDotMinute(time);\n const hour = this.getHour(time);\n const coarseMinute = this.getCoarseMinute(time);\n this.clear();\n if (this.widgetInstance.options.mode === 'seconds') {\n this.highlight(`second${second}`);\n } else {\n this.highlight('on');\n for (let i = 1; i <= dotMinute; i++) {\n this.highlight(`dot${i}`);\n }\n this.highlight(`minute${coarseMinute}`);\n this.highlight(`hour${hour}`);\n }\n }\n\n private clear(): void {\n this.widgetInstance.element.find('.item').removeClass('active');\n }\n\n private highlight(itemClass: string): void {\n this.widgetInstance.element.find(`.item.${itemClass}`).addClass('active');\n }\n\n private getSecond(time: Date): number {\n if (typeof this.getCurrentLayout().getSeconds === 'function') {\n return this.getCurrentLayout().getSeconds(time);\n }\n return time.getSeconds();\n }\n\n private getDotMinute(date: Date): number {\n if (typeof this.getCurrentLayout().getDotMinute === 'function') {\n return this.getCurrentLayout().getDotMinute(date);\n }\n return date.getMinutes() % 5;\n }\n\n private getCoarseMinute(date: Date): number {\n if (typeof this.getCurrentLayout().getCoarseMinute === 'function') {\n return this.getCurrentLayout().getCoarseMinute(date);\n }\n return date.getMinutes();\n }\n\n private getHour(date: Date): number {\n if (typeof this.getCurrentLayout().getHour === 'function') {\n return this.getCurrentLayout().getHour(date);\n }\n const hour = date.getHours();\n if (date.getMinutes() >= 25) {\n return (hour + 1) % 24;\n }\n return hour;\n }\n\n private parseHash(): void {\n let hash: string = window.location.hash;\n if (hash !== undefined && hash.charAt(0) === '#') {\n hash = hash.substring(1);\n hash = decodeURIComponent(hash);\n const params: string[] = hash.split('&');\n params.forEach((element: string): void => {\n const pair: string[] = element.split('=');\n const key = pair[0];\n const value = pair[1];\n switch (key) {\n case 'l':\n case 'language':\n this.widgetInstance.options.language = value;\n this.widgetInstance.options.force = true;\n break;\n case 't':\n case 'theme':\n this.widgetInstance.options.theme = value;\n this.widgetInstance.options.force = true;\n break;\n case 'm':\n case 'mode':\n this.widgetInstance.options.mode = value;\n this.widgetInstance.options.force = true;\n break;\n case 's':\n case 'status':\n this.widgetInstance.options.status = value;\n this.widgetInstance.options.force = true;\n break;\n }\n });\n }\n }\n\n private getCurrentLayout(): Layout {\n const matchingLanguages: Layout[] = Globals.getLayouts().filter((element: Layout): boolean => element.code === this.widgetInstance.options.language, this);\n if (matchingLanguages.length > 0) {\n return matchingLanguages[0];\n }\n // fallback: return empty object\n return EMPTY_LAYOUT;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport * as $ from 'jquery';\nimport {Globals} from './domain/globals';\n\nexport function autodetectThemes(): void {\n $('link[rel=stylesheet]').each((index, item): void => {\n const styleSheet = $(item);\n const styleClass: string = styleSheet.attr('data-class');\n if (styleClass !== undefined) {\n let name: string = styleSheet.attr('data-name');\n if (name === undefined) {\n name = styleClass;\n }\n Globals.registerTheme(name, styleClass);\n }\n });\n\n // fall-back if no theme was included\n if (!Globals.hasThemes()) {\n Globals.registerTheme('', '');\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Globals} from './domain/globals';\nimport {Layout} from './domain/layout';\nimport {Uhr} from './uhr';\nimport {WidgetPrototype} from './widget/widget-prototype';\nimport {autodetectThemes} from './theme-autodetector';\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n const widget: JQueryUI.Widget;\n}\n\n// First things first: discover included themes and register them\nautodetectThemes();\n\nconst widgetPrototype: WidgetPrototype = {\n options: {\n width: '100%',\n status: 'on',\n language: 'de_CH',\n theme: Globals.getFirstTheme().styleClass,\n force: false,\n controls: true,\n cookiePath: undefined,\n autoresize: true,\n mode: 'normal'\n },\n start: function (): void {\n this._fritteliUhrInstance.start();\n },\n stop: function (): void {\n this._fritteliUhrInstance.stop();\n },\n toggle: function (): void {\n this._fritteliUhrInstance.toggle();\n },\n language: function (key: string): void {\n this._fritteliUhrInstance.setLayout(key);\n },\n theme: function (styleClass: string): void {\n this._fritteliUhrInstance.setTheme(styleClass);\n },\n time: function (time: Date): void {\n this._fritteliUhrInstance.setTime(time);\n },\n mode: function (mode: string): void {\n this._fritteliUhrInstance.setMode(mode);\n },\n width: function (width: string): void {\n this._fritteliUhrInstance.setWidth(width);\n },\n // constructor method\n _create: function (): void {\n this._fritteliUhrInstance = new Uhr(this);\n },\n // destructor method\n _destroy: function (): void {\n this._fritteliUhrInstance.destroy();\n },\n _fritteliUhrInstance: null\n};\n$.widget('fritteli.uhr', widgetPrototype);\n\n$.fritteli.uhr.register = Globals.registerLayout;\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\n\n// We just need to reference all required files at least once, so that the tree-shaker won't remove them from\n// the bundle.\nimport * as uhr from './index';\nimport {LayoutDe} from './layout/layout-de';\nimport {LayoutDeCh} from './layout/layout-de_ch';\nimport {LayoutDeChGenau} from './layout/layout-de_ch_genau';\nimport {LayoutDk} from './layout/layout-dk';\nimport {LayoutEn} from './layout/layout-en';\nimport {LayoutEs} from './layout/layout-es';\nimport {LayoutFr} from './layout/layout-fr';\nimport {LayoutIt} from './layout/layout-it';\nimport {LayoutNl} from './layout/layout-nl';\nimport {LayoutPt} from './layout/layout-pt';\n\n/*eslint no-unused-vars: \"warn\"*/\n/*eslint @typescript-eslint/no-unused-vars: \"warn\"*/\n\nlet a = uhr;\na = LayoutDeCh;\na = LayoutDeChGenau;\na = LayoutDe;\na = LayoutDk;\na = LayoutEn;\na = LayoutEs;\na = LayoutFr;\na = LayoutIt;\na = LayoutNl;\na = LayoutPt;\n"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/lib/uhr.js b/dist/lib/uhr.js index a5bfe82..084560f 100644 --- a/dist/lib/uhr.js +++ b/dist/lib/uhr.js @@ -1,2 +1,2 @@ -!function(t){var e={};function n(i){if(e[i])return e[i].exports;var o=e[i]={i:i,l:!1,exports:{}};return t[i].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(i,o,function(e){return t[e]}.bind(null,o));return i},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=12)}({0:function(t,e){t.exports=Cookies},1:function(t,e){t.exports=jQuery},12:function(t,e,n){"use strict";n.r(e);var i=function(){function t(){}return t.registerTheme=function(e,n){t.themes.some(function(t){return t.name===e})?console.log("Theme with name '"+e+"' already registered; ignoring register request for styleClass '"+n+"'."):t.themes.push({name:e,styleClass:n})},t.hasThemes=function(){return t.themes.length>0},t.hasMultipleThemes=function(){return t.themes.length>1},t.getFirstTheme=function(){return t.getTheme(0)},t.getTheme=function(e){return t.themes[e]},t.getThemes=function(){return t.themes},t.registerLayout=function(e){!t.layouts.some(function(t){return e.code===t.code&&(e.prettyName!==t.prettyName&&console.error("Error: Language code '"+e.code+"' cannot be registered for layout '"+e.prettyName+"' because it is already registered for layout '"+t.prettyName+"'!"),!0)})&&(t.layouts.push(e),t.layouts.sort(function(t,e){return t.prettyName.localeCompare(e.prettyName)}))},t.hasLayouts=function(){return t.layouts.length>0},t.hasMultipleLayouts=function(){return t.layouts.length>1},t.getFirstLayout=function(){return t.layouts[0]},t.getLayouts=function(){return t.layouts},t.layouts=[],t.themes=[],t}(),o={code:null,hours:null,letters:[],minutes:null,permanent:[],prettyName:null,version:2},s=n(0),r=function(){function t(t,e){this.widgetId=t,this.cookiePath=e}return t.prototype.getLayout=function(){var t=this.getCookie("uhr-language");return t&&(this.removeCookie("uhr-language"),this.setLayout(t)),this.getCookie("uhr-layout")},t.prototype.setLayout=function(t){this.setCookie("uhr-layout",t)},t.prototype.getMode=function(){return this.getCookie("uhr-mode")},t.prototype.setMode=function(t){this.setCookie("uhr-mode",t)},t.prototype.getStatus=function(){return this.getCookie("uhr-status")},t.prototype.setStatus=function(t){this.setCookie("uhr-status",t)},t.prototype.getTheme=function(){return this.getCookie("uhr-theme")},t.prototype.setTheme=function(t){this.setCookie("uhr-theme",t)},t.prototype.getCookie=function(t){return s.get(t+this.widgetId)},t.prototype.setCookie=function(t,e){var n;n=this.cookiePath?{expires:365,path:this.cookiePath}:{expires:365},s.set(t+this.widgetId,e,n)},t.prototype.removeCookie=function(t){this.cookiePath?s.remove(t+this.widgetId,{path:this.cookiePath}):s.remove(t+this.widgetId)},t}(),h=function(){function t(t,e){this.style="",this.value=t,e&&(this.style=e)}return t.prototype.addStyle=function(t){""===this.style?this.style=t:this.style+=" "+t},t.prototype.toString=function(){return''+this.value+""},t}(),a=function(){function t(t){this.layout=t}return t.prototype.parse=function(){var e=[];return this.layout.letters.forEach(function(t){for(var n=[],i=0;i")}),t&&t(),e.renderarea.fadeIn("fast")})},t}(),c=function(){function t(t,e,n,i){this.uhr=t,this.$element=e,this.options=n,this.id=i,this.cookieHandler=new r(i,n.cookiePath)}return t.prototype.render=function(){this.setupHTML(),this.wireFunctionality()},t.prototype.setWidth=function(t){this.$element.css("width",t);var e=this.$element.width();this.$element.width(e),this.$element.height(e),this.$element.css("font-size",e/40+"px")},t.prototype.setupHTML=function(){var t=this;if(this.$element.addClass("uhr").empty().append('').append('').append('').append('').append('
').append('
'),this.setWidth(this.options.width),this.options.controls){var e=$('
'),n=$('
');e.append(n);var o=$('
');o.append(''),o.append(''),n.append(o);var s=$('
');if(s.append(''),s.append(''),n.append(s),i.hasMultipleLayouts()){var r=$('');i.getLayouts().forEach(function(t){r.append('")}),n.append(r)}if(i.hasMultipleThemes()){var h=$('');i.getThemes().forEach(function(t){h.append('")}),n.append(h)}var a=$('');a.on({click:function(){return $("#uhr-controlpanel"+t.id).hide("fast")}}),n.append(a),this.$element.after(e),e.hide();var u=$('');u.on({click:function(){return t.toggleConfigScreen()}}),this.$element.after(u)}},t.prototype.wireFunctionality=function(){var t=this,e=$("#uhr-onoffswitch-checkbox"+this.id);e.on({click:function(){return t.uhr.toggle()}});var n=this.cookieHandler.getStatus();(void 0===n||this.options.force)&&(n=this.options.status),e.prop("checked","on"===n),"on"===n?this.uhr.start():this.uhr.stop();var o=$("#uhr-modeswitch-checkbox"+this.id);o.on({click:function(){"seconds"===t.options.mode?t.uhr.setMode("normal"):t.uhr.setMode("seconds")}});var s=this.cookieHandler.getMode();(void 0===s||this.options.force)&&(s=this.options.mode),o.prop("checked","seconds"!==s),"seconds"===s?this.uhr.setMode("seconds"):this.uhr.setMode("normal");var r=$("#uhr-languagechooser"+this.id);r.on({change:function(){var e=$("#uhr-languagechooser"+t.id).val();t.uhr.setLayout(e)}});var h=this.cookieHandler.getLayout();(void 0===h||this.options.force)&&(h=this.options.language);var a=i.getLayouts().some(function(t){return h===t.code});if(!a){var u=void 0;u=i.hasLayouts()?i.getFirstLayout().code:"",console.warn("Language '"+h+"' not found! Using fallback '"+u+"'."),h=u}r.val(h),this.options.language="",this.uhr.setLayout(h);var c=$("#uhr-themechooser"+this.id);c.on({change:function(){var e=$("#uhr-themechooser"+t.id).val();t.uhr.setTheme(e)}});var l=this.cookieHandler.getTheme();if((void 0===l||this.options.force)&&(l=this.options.theme),!(a=i.getThemes().some(function(t){return l===t.styleClass}))){var d=i.getFirstTheme().styleClass;console.warn("Theme '"+l+"' not found! Using fallback '"+d+"'."),l=d}c.val(l),this.options.theme="",this.uhr.setTheme(l),this.options.autoresize&&$(window).on({resize:function(){var e=t.$element.parent(),n=$(window),i=e.width(),o=e.height(),s=n.width(),r=n.height(),h=Math.min(i,o,s,r)+"px";t.setWidth(h)}})},t.prototype.toggleConfigScreen=function(){$("#uhr-controlpanel"+this.id).toggle("fast")},t}(),l=function(){function t(t){this.widgetInstance=t,this.timer=null,this.currentMinute=null;var e=this.widgetInstance.options.time;void 0===this.widgetInstance.options.time&&(this.widgetInstance.options.time=new Date),this.cookieHandler=new r(this.widgetInstance.uuid,this.widgetInstance.options.cookiePath),this.parseHash(),this.renderer=new c(this,this.widgetInstance.element,this.widgetInstance.options,this.widgetInstance.uuid),this.renderer.render(),void 0!==e&&this.setTime(e)}return t.prototype.destroy=function(){this.timer&&(window.clearInterval(this.timer),this.timer=null),this.widgetInstance.element.removeAttr("style").removeAttr("class").empty(),$("#uhr-configlink"+this.widgetInstance.uuid).remove(),$("#uhr-controlpanel"+this.widgetInstance.uuid).remove()},t.prototype.start=function(){var t=this;this.isOn()||(this.timer=window.setInterval(function(){t.widgetInstance.options.time=new Date,t.update()},1e3),this.update(),this.cookieHandler.setStatus("on"))},t.prototype.stop=function(){this.isOn()&&(window.clearInterval(this.timer),this.timer=null,this.update(),this.cookieHandler.setStatus("off"))},t.prototype.toggle=function(){this.isOn()?this.stop():this.start()},t.prototype.setLayout=function(t){var e=this;t!==this.widgetInstance.options.language&&(this.widgetInstance.options.language=t,new u(this.getCurrentLayout(),this.widgetInstance.element.find(".letterarea")).render(function(){e.currentMinute=-1,e.update()}),this.cookieHandler.setLayout(t),this.update())},t.prototype.setTheme=function(t){t!==this.widgetInstance.options.theme&&(this.widgetInstance.element.removeClass(this.widgetInstance.options.theme).addClass(t),$("#uhr-onoffswitch"+this.widgetInstance.uuid).removeClass(this.widgetInstance.options.theme).addClass(t),this.widgetInstance.options.theme=t,this.cookieHandler.setTheme(t))},t.prototype.setTime=function(t){this.currentMinute=null,null===t?this.widgetInstance.options.time=new Date:(null!==this.timer&&window.clearInterval(this.timer),this.widgetInstance.options.time=t),this.update()},t.prototype.setMode=function(t){this.widgetInstance.options.mode=t,this.currentMinute=null,this.update(),this.cookieHandler.setMode(t)},t.prototype.setWidth=function(t){this.renderer.setWidth(t)},t.prototype.isOn=function(){return null!==this.timer},t.prototype.update=function(){if(this.isOn()){var t=this.widgetInstance.options.time;if(!this.getCurrentLayout().hasOwnProperty("seconds")&&"seconds"!==this.widgetInstance.options.mode){if(t.getMinutes()===this.currentMinute)return;this.currentMinute=t.getMinutes()}this.show(t)}else this.clear(),this.currentMinute=-1},t.prototype.show=function(t){var e=this.getSecond(t),n=this.getDotMinute(t),i=this.getHour(t),o=this.getCoarseMinute(t);if(this.clear(),"seconds"===this.widgetInstance.options.mode)this.highlight("second"+e);else{this.highlight("on");for(var s=1;s<=n;s++)this.highlight("dot"+s);this.highlight("minute"+o),this.highlight("hour"+i)}},t.prototype.clear=function(){this.widgetInstance.element.find(".item").removeClass("active")},t.prototype.highlight=function(t){this.widgetInstance.element.find(".item."+t).addClass("active")},t.prototype.getSecond=function(t){return"function"==typeof this.getCurrentLayout().getSeconds?this.getCurrentLayout().getSeconds(t):t.getSeconds()},t.prototype.getDotMinute=function(t){return"function"==typeof this.getCurrentLayout().getDotMinute?this.getCurrentLayout().getDotMinute(t):t.getMinutes()%5},t.prototype.getCoarseMinute=function(t){return"function"==typeof this.getCurrentLayout().getCoarseMinute?this.getCurrentLayout().getCoarseMinute(t):t.getMinutes()},t.prototype.getHour=function(t){if("function"==typeof this.getCurrentLayout().getHour)return this.getCurrentLayout().getHour(t);var e=t.getHours();return t.getMinutes()>=25?(e+1)%24:e},t.prototype.parseHash=function(){var t=this,e=window.location.hash;void 0!==e&&"#"===e.charAt(0)&&(e=e.substring(1),(e=decodeURIComponent(e)).split("&").forEach(function(e){var n=e.split("="),i=n[0],o=n[1];switch(i){case"l":case"language":t.widgetInstance.options.language=o,t.widgetInstance.options.force=!0;break;case"t":case"theme":t.widgetInstance.options.theme=o,t.widgetInstance.options.force=!0;break;case"m":case"mode":t.widgetInstance.options.mode=o,t.widgetInstance.options.force=!0;break;case"s":case"status":t.widgetInstance.options.status=o,t.widgetInstance.options.force=!0}}))},t.prototype.getCurrentLayout=function(){var t=this,e=i.getLayouts().filter(function(e){return e.code===t.widgetInstance.options.language},this);return e.length>0?e[0]:o},t}(),d=n(1);d("link[rel=stylesheet]").each(function(t,e){var n=d(e),o=n.attr("data-class");if(void 0!==o){var s=n.attr("data-name");void 0===s&&(s=o),i.registerTheme(s,o)}}),i.hasThemes()||i.registerTheme("",""),$.widget("fritteli.uhr",{options:{width:"100%",status:"on",language:"de_CH",theme:i.getFirstTheme().styleClass,force:!1,controls:!0,cookiePath:void 0,autoresize:!0,mode:"normal"},start:function(){this.__fritteli_uhr_instance.start()},stop:function(){this.__fritteli_uhr_instance.stop()},toggle:function(){this.__fritteli_uhr_instance.toggle()},language:function(t){this.__fritteli_uhr_instance.setLayout(t)},theme:function(t){this.__fritteli_uhr_instance.setTheme(t)},time:function(t){this.__fritteli_uhr_instance.setTime(t)},mode:function(t){this.__fritteli_uhr_instance.setMode(t)},width:function(t){this.__fritteli_uhr_instance.setWidth(t)},_create:function(){this.__fritteli_uhr_instance=new l(this)},_destroy:function(){this.__fritteli_uhr_instance.destroy()},__fritteli_uhr_instance:null}),$.fritteli.uhr.register=i.registerLayout}}); +!function(t){var e={};function n(i){if(e[i])return e[i].exports;var o=e[i]={i:i,l:!1,exports:{}};return t[i].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(i,o,function(e){return t[e]}.bind(null,o));return i},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=12)}({0:function(t,e){t.exports=Cookies},1:function(t,e){t.exports=jQuery},12:function(t,e,n){"use strict";n.r(e);var i=function(){function t(){}return t.registerTheme=function(e,n){t.themes.some(function(t){return t.name===e})?console.warn("Theme with name '"+e+"' already registered; ignoring register request for styleClass '"+n+"'."):t.themes.push({name:e,styleClass:n})},t.hasThemes=function(){return t.themes.length>0},t.hasMultipleThemes=function(){return t.themes.length>1},t.getFirstTheme=function(){return t.getTheme(0)},t.getTheme=function(e){return t.themes[e]},t.getThemes=function(){return t.themes},t.registerLayout=function(e){!t.layouts.some(function(t){return e.code===t.code&&(e.prettyName!==t.prettyName&&console.error("Error: Language code '"+e.code+"' cannot be registered for layout '"+e.prettyName+"' because it is already registered for layout '"+t.prettyName+"'!"),!0)})&&(t.layouts.push(e),t.layouts.sort(function(t,e){return t.prettyName.localeCompare(e.prettyName)}))},t.hasLayouts=function(){return t.layouts.length>0},t.hasMultipleLayouts=function(){return t.layouts.length>1},t.getFirstLayout=function(){return t.layouts[0]},t.getLayouts=function(){return t.layouts},t.layouts=[],t.themes=[],t}(),o={code:null,hours:null,letters:[],minutes:null,permanent:[],prettyName:null,version:2},s=n(0),r=function(){function t(t,e){this.widgetId=t,this.cookiePath=e}return t.prototype.getLayout=function(){var t=this.getCookie("uhr-language");return t&&(this.removeCookie("uhr-language"),this.setLayout(t)),this.getCookie("uhr-layout")},t.prototype.setLayout=function(t){this.setCookie("uhr-layout",t)},t.prototype.getMode=function(){return this.getCookie("uhr-mode")},t.prototype.setMode=function(t){this.setCookie("uhr-mode",t)},t.prototype.getStatus=function(){return this.getCookie("uhr-status")},t.prototype.setStatus=function(t){this.setCookie("uhr-status",t)},t.prototype.getTheme=function(){return this.getCookie("uhr-theme")},t.prototype.setTheme=function(t){this.setCookie("uhr-theme",t)},t.prototype.getCookie=function(t){return s.get(t+this.widgetId)},t.prototype.setCookie=function(t,e){var n;n=this.cookiePath?{expires:365,path:this.cookiePath}:{expires:365},s.set(t+this.widgetId,e,n)},t.prototype.removeCookie=function(t){this.cookiePath?s.remove(t+this.widgetId,{path:this.cookiePath}):s.remove(t+this.widgetId)},t}(),h=function(){function t(t,e){void 0===e&&(e=""),this.value=t,this.value=t,this.style=e}return t.prototype.addStyle=function(t){""===this.style?this.style=t:this.style+=" "+t},t.prototype.toString=function(){return''+this.value+""},t}(),a=function(){function t(t){this.layout=t}return t.prototype.parse=function(){var e=[];return this.layout.letters.forEach(function(t){for(var n=[],i=0;i")}),t&&t(),e.renderarea.fadeIn("fast")})},t}(),c=function(){function t(t,e,n,i){this.uhr=t,this.$element=e,this.options=n,this.id=i,this.cookieHandler=new r(i,n.cookiePath)}return t.prototype.render=function(){this.setupHTML(),this.wireFunctionality()},t.prototype.setWidth=function(t){this.$element.css("width",t);var e=this.$element.width();this.$element.width(e),this.$element.height(e),this.$element.css("font-size",e/40+"px")},t.prototype.setupHTML=function(){var t=this;if(this.$element.addClass("uhr").empty().append('').append('').append('').append('').append('
').append('
'),this.setWidth(this.options.width),this.options.controls){var e=$('
'),n=$('
');e.append(n);var o=$('
');o.append(''),o.append(''),n.append(o);var s=$('
');if(s.append(''),s.append(''),n.append(s),i.hasMultipleLayouts()){var r=$('');i.getLayouts().forEach(function(t){r.append('")}),n.append(r)}if(i.hasMultipleThemes()){var h=$('');i.getThemes().forEach(function(t){h.append('")}),n.append(h)}var a=$('');a.on({click:function(){return $("#uhr-controlpanel"+t.id).hide("fast")}}),n.append(a),this.$element.after(e),e.hide();var u=$('');u.on({click:function(){return t.toggleConfigScreen()}}),this.$element.after(u)}},t.prototype.wireFunctionality=function(){var t=this,e=$("#uhr-onoffswitch-checkbox"+this.id);e.on({click:function(){return t.uhr.toggle()}});var n=this.cookieHandler.getStatus();(void 0===n||this.options.force)&&(n=this.options.status),e.prop("checked","on"===n),"on"===n?this.uhr.start():this.uhr.stop();var o=$("#uhr-modeswitch-checkbox"+this.id);o.on({click:function(){"seconds"===t.options.mode?t.uhr.setMode("normal"):t.uhr.setMode("seconds")}});var s=this.cookieHandler.getMode();(void 0===s||this.options.force)&&(s=this.options.mode),o.prop("checked","seconds"!==s),"seconds"===s?this.uhr.setMode("seconds"):this.uhr.setMode("normal");var r=$("#uhr-languagechooser"+this.id);r.on({change:function(){var e=$("#uhr-languagechooser"+t.id).val();t.uhr.setLayout(e)}});var h=this.cookieHandler.getLayout();(void 0===h||this.options.force)&&(h=this.options.language);var a=i.getLayouts().some(function(t){return h===t.code});if(!a){var u=void 0;u=i.hasLayouts()?i.getFirstLayout().code:"",console.warn("Language '"+h+"' not found! Using fallback '"+u+"'."),h=u}r.val(h),this.options.language="",this.uhr.setLayout(h);var c=$("#uhr-themechooser"+this.id);c.on({change:function(){var e=$("#uhr-themechooser"+t.id).val();t.uhr.setTheme(e)}});var l=this.cookieHandler.getTheme();if((void 0===l||this.options.force)&&(l=this.options.theme),!(a=i.getThemes().some(function(t){return l===t.styleClass}))){var d=i.getFirstTheme().styleClass;console.warn("Theme '"+l+"' not found! Using fallback '"+d+"'."),l=d}c.val(l),this.options.theme="",this.uhr.setTheme(l),this.options.autoresize&&$(window).on({resize:function(){var e=t.$element.parent(),n=$(window),i=e.width(),o=e.height(),s=n.width(),r=n.height(),h=Math.min(i,o,s,r)+"px";t.setWidth(h)}})},t.prototype.toggleConfigScreen=function(){$("#uhr-controlpanel"+this.id).toggle("fast")},t}(),l=function(){function t(t){this.widgetInstance=t,this.timer=null,this.currentMinute=null;var e=this.widgetInstance.options.time;void 0===this.widgetInstance.options.time&&(this.widgetInstance.options.time=new Date),this.cookieHandler=new r(this.widgetInstance.uuid,this.widgetInstance.options.cookiePath),this.parseHash(),this.renderer=new c(this,this.widgetInstance.element,this.widgetInstance.options,this.widgetInstance.uuid),this.renderer.render(),void 0!==e&&this.setTime(e)}return t.prototype.destroy=function(){this.timer&&(window.clearInterval(this.timer),this.timer=null),this.widgetInstance.element.removeAttr("style").removeAttr("class").empty(),$("#uhr-configlink"+this.widgetInstance.uuid).remove(),$("#uhr-controlpanel"+this.widgetInstance.uuid).remove()},t.prototype.start=function(){var t=this;this.isOn()||(this.timer=window.setInterval(function(){t.widgetInstance.options.time=new Date,t.update()},1e3),this.update(),this.cookieHandler.setStatus("on"))},t.prototype.stop=function(){this.isOn()&&(window.clearInterval(this.timer),this.timer=null,this.update(),this.cookieHandler.setStatus("off"))},t.prototype.toggle=function(){this.isOn()?this.stop():this.start()},t.prototype.setLayout=function(t){var e=this;t!==this.widgetInstance.options.language&&(this.widgetInstance.options.language=t,new u(this.getCurrentLayout(),this.widgetInstance.element.find(".letterarea")).render(function(){e.currentMinute=-1,e.update()}),this.cookieHandler.setLayout(t),this.update())},t.prototype.setTheme=function(t){t!==this.widgetInstance.options.theme&&(this.widgetInstance.element.removeClass(this.widgetInstance.options.theme).addClass(t),$("#uhr-onoffswitch"+this.widgetInstance.uuid).removeClass(this.widgetInstance.options.theme).addClass(t),this.widgetInstance.options.theme=t,this.cookieHandler.setTheme(t))},t.prototype.setTime=function(t){this.currentMinute=null,null===t?this.widgetInstance.options.time=new Date:(null!==this.timer&&window.clearInterval(this.timer),this.widgetInstance.options.time=t),this.update()},t.prototype.setMode=function(t){this.widgetInstance.options.mode=t,this.currentMinute=null,this.update(),this.cookieHandler.setMode(t)},t.prototype.setWidth=function(t){this.renderer.setWidth(t)},t.prototype.isOn=function(){return null!==this.timer},t.prototype.update=function(){if(this.isOn()){var t=this.widgetInstance.options.time;if(!this.getCurrentLayout().hasOwnProperty("seconds")&&"seconds"!==this.widgetInstance.options.mode){if(t.getMinutes()===this.currentMinute)return;this.currentMinute=t.getMinutes()}this.show(t)}else this.clear(),this.currentMinute=-1},t.prototype.show=function(t){var e=this.getSecond(t),n=this.getDotMinute(t),i=this.getHour(t),o=this.getCoarseMinute(t);if(this.clear(),"seconds"===this.widgetInstance.options.mode)this.highlight("second"+e);else{this.highlight("on");for(var s=1;s<=n;s++)this.highlight("dot"+s);this.highlight("minute"+o),this.highlight("hour"+i)}},t.prototype.clear=function(){this.widgetInstance.element.find(".item").removeClass("active")},t.prototype.highlight=function(t){this.widgetInstance.element.find(".item."+t).addClass("active")},t.prototype.getSecond=function(t){return"function"==typeof this.getCurrentLayout().getSeconds?this.getCurrentLayout().getSeconds(t):t.getSeconds()},t.prototype.getDotMinute=function(t){return"function"==typeof this.getCurrentLayout().getDotMinute?this.getCurrentLayout().getDotMinute(t):t.getMinutes()%5},t.prototype.getCoarseMinute=function(t){return"function"==typeof this.getCurrentLayout().getCoarseMinute?this.getCurrentLayout().getCoarseMinute(t):t.getMinutes()},t.prototype.getHour=function(t){if("function"==typeof this.getCurrentLayout().getHour)return this.getCurrentLayout().getHour(t);var e=t.getHours();return t.getMinutes()>=25?(e+1)%24:e},t.prototype.parseHash=function(){var t=this,e=window.location.hash;void 0!==e&&"#"===e.charAt(0)&&(e=e.substring(1),(e=decodeURIComponent(e)).split("&").forEach(function(e){var n=e.split("="),i=n[0],o=n[1];switch(i){case"l":case"language":t.widgetInstance.options.language=o,t.widgetInstance.options.force=!0;break;case"t":case"theme":t.widgetInstance.options.theme=o,t.widgetInstance.options.force=!0;break;case"m":case"mode":t.widgetInstance.options.mode=o,t.widgetInstance.options.force=!0;break;case"s":case"status":t.widgetInstance.options.status=o,t.widgetInstance.options.force=!0}}))},t.prototype.getCurrentLayout=function(){var t=this,e=i.getLayouts().filter(function(e){return e.code===t.widgetInstance.options.language},this);return e.length>0?e[0]:o},t}(),d=n(1);d("link[rel=stylesheet]").each(function(t,e){var n=d(e),o=n.attr("data-class");if(void 0!==o){var s=n.attr("data-name");void 0===s&&(s=o),i.registerTheme(s,o)}}),i.hasThemes()||i.registerTheme("","");var p={options:{width:"100%",status:"on",language:"de_CH",theme:i.getFirstTheme().styleClass,force:!1,controls:!0,cookiePath:void 0,autoresize:!0,mode:"normal"},start:function(){this._fritteliUhrInstance.start()},stop:function(){this._fritteliUhrInstance.stop()},toggle:function(){this._fritteliUhrInstance.toggle()},language:function(t){this._fritteliUhrInstance.setLayout(t)},theme:function(t){this._fritteliUhrInstance.setTheme(t)},time:function(t){this._fritteliUhrInstance.setTime(t)},mode:function(t){this._fritteliUhrInstance.setMode(t)},width:function(t){this._fritteliUhrInstance.setWidth(t)},_create:function(){this._fritteliUhrInstance=new l(this)},_destroy:function(){this._fritteliUhrInstance.destroy()},_fritteliUhrInstance:null};$.widget("fritteli.uhr",p),$.fritteli.uhr.register=i.registerLayout}}); //# sourceMappingURL=uhr.js.map \ No newline at end of file diff --git a/dist/lib/uhr.js.map b/dist/lib/uhr.js.map index 6806391..c47a6eb 100644 --- a/dist/lib/uhr.js.map +++ b/dist/lib/uhr.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///external \"Cookies\"","webpack:///external \"jQuery\"","webpack:///./src/domain/globals.ts","webpack:///./src/domain/layout.ts","webpack:///./src/cookie-handler.ts","webpack:///./src/domain/letter.ts","webpack:///./src/layout-renderer.ts","webpack:///./src/uhr-renderer.ts","webpack:///./src/uhr.ts","webpack:///./src/theme-autodetector.ts","webpack:///./src/index.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","Cookies","jQuery","Globals","registerTheme","styleClass","themes","some","console","log","push","hasThemes","length","hasMultipleThemes","getFirstTheme","getTheme","index","getThemes","registerLayout","layout","layouts","element","code","prettyName","error","sort","a","b","localeCompare","hasLayouts","hasMultipleLayouts","getFirstLayout","getLayouts","EMPTY_LAYOUT","hours","letters","minutes","permanent","version","cookie_handler_CookieHandler","CookieHandler","widgetId","cookiePath","this","getLayout","oldCookie","getCookie","removeCookie","setLayout","setCookie","getMode","setMode","getStatus","setStatus","status","setTheme","theme","cookieName","external_Cookies_","cookieValue","options","expires","path","Letter","style","addStyle","toString","layout_renderer_LayoutRendererV2Delegate","LayoutRendererV2Delegate","parse","forEach","lineString","line","parseArrayOrObject","seconds","parseTimeDefinition","parseObject","keys","map","Number","y","x","input","_this","Array","isArray","item","definition","listString","timeValues","split","highlightLetters","timeValue","vorne0","3","4","5","6","7","8","9","hinten0","vorne1","hinten1","vorne2","hinten2","vorne3","hinten3","vorne4","hinten4","vorne5","hinten5","hinten6","hinten7","hinten8","hinten9","0","1","2","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59","LayoutRenderer","renderarea","render","beforeshow","undefined","parsed","warn","parsedLayout","writable","configurable","fadeOut","empty","array","letter","append","fadeIn","uhr_renderer_UhrRenderer","UhrRenderer","uhr","$element","id","cookieHandler","setupHTML","wireFunctionality","setWidth","width","css","realWidth","height","addClass","controls","controlpanel","$","content","toggleSwitch","modeSwitch","languageChooser_1","themeChooser_1","closebutton","on","click","hide","after","configlink","toggleConfigScreen","toggle","force","prop","start","stop","languageChooser","change","languageKey","val","selectedLayout","language","found","fallbackLanguage","themeChooser","themeKey","selectedTheme","fallbackTheme","autoresize","window","resize","$parent","parent","$window","parentWidth","parentHeight","windowWidth","windowHeight","size","Math","min","uhr_Uhr","Uhr","widgetInstance","timer","currentMinute","userTime","time","Date","uuid","parseHash","renderer","setTime","destroy","clearInterval","removeAttr","remove","isOn","setInterval","update","getCurrentLayout","find","removeClass","getMinutes","show","clear","second","getSecond","dotMinute","getDotMinute","hour","getHour","coarseMinute","getCoarseMinute","highlight","itemClass","getSeconds","date","getHours","hash","location","charAt","substring","decodeURIComponent","pair","matchingLanguages","filter","external_jQuery_","each","styleSheet","attr","name_1","widget","__fritteli_uhr_instance","_create","_destroy","fritteli","register"],"mappings":"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","file":"lib/uhr.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 12);\n","module.exports = Cookies;","module.exports = jQuery;","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout} from './layout';\nimport {Theme} from './theme';\n\nexport class Globals {\n private static layouts: Layout[] = [];\n private static themes: Theme[] = [];\n\n static registerTheme(name: string, styleClass: string): void {\n if (Globals.themes.some(value => value.name === name)) {\n console.log(`Theme with name '${name}' already registered; ignoring register request for styleClass '${styleClass}'.`)\n } else {\n Globals.themes.push({\n name,\n styleClass\n });\n }\n }\n\n static hasThemes(): boolean {\n return Globals.themes.length > 0;\n }\n\n static hasMultipleThemes(): boolean {\n return Globals.themes.length > 1;\n }\n\n static getFirstTheme(): Theme {\n return Globals.getTheme(0);\n }\n\n static getTheme(index: number): Theme {\n return Globals.themes[index];\n }\n\n static getThemes(): Theme[] {\n return Globals.themes;\n }\n\n static registerLayout(layout: Layout): void {\n const available = !Globals.layouts.some(element => {\n if (layout.code === element.code) {\n if (layout.prettyName !== element.prettyName) {\n console.error(\n `Error: Language code '${layout.code}' cannot be registered for layout '${layout.prettyName}' because it is already registered for layout '${element.prettyName}'!`\n );\n }\n return true;\n }\n return false;\n }\n );\n if (available) {\n Globals.layouts.push(layout);\n Globals.layouts.sort((a, b) => a.prettyName.localeCompare(b.prettyName));\n }\n }\n\n static hasLayouts(): boolean {\n return Globals.layouts.length > 0;\n }\n\n static hasMultipleLayouts(): boolean {\n return Globals.layouts.length > 1;\n }\n\n static getFirstLayout(): Layout {\n return Globals.layouts[0];\n }\n\n static getLayouts(): Layout[] {\n return Globals.layouts;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Letter} from './letter';\n\nexport interface Layout {\n readonly code: string;\n getCoarseMinute?: (time: Date) => number;\n getDotMinute?: (time: Date) => number;\n getHour?: (time: Date) => number;\n getSeconds?: (time: Date) => number;\n readonly hours: TimeDefinition;\n readonly letters: string[];\n readonly minutes: TimeDefinition;\n parsed?: Letter[][];\n readonly permanent: WordDefinition | WordDefinition[];\n readonly prettyName: string;\n seconds?: TimeDefinition;\n readonly version: number;\n}\n\nexport interface WordDefinition {\n [line: number]: number[];\n}\n\nexport interface TimeDefinition {\n [values: string]: WordDefinition | WordDefinition[];\n}\n\nexport const EMPTY_LAYOUT: Layout = {\n code: null,\n hours: null,\n letters: [],\n minutes: null,\n permanent: [],\n prettyName: null,\n version: 2\n};\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport * as Cookies from 'js-cookie';\n\nexport class CookieHandler {\n constructor(private widgetId: string, private cookiePath?: string) {\n }\n\n getLayout(): string {\n const oldCookie = this.getCookie('uhr-language');\n if (!!oldCookie) {\n // aha, old cookie is set. migrate to new one!\n this.removeCookie('uhr-language');\n this.setLayout(oldCookie);\n }\n return this.getCookie('uhr-layout');\n }\n\n setLayout(layout: string): void {\n this.setCookie('uhr-layout', layout);\n }\n\n getMode(): string {\n return this.getCookie('uhr-mode');\n }\n\n setMode(mode: string): void {\n this.setCookie('uhr-mode', mode);\n }\n\n\n getStatus(): string {\n return this.getCookie('uhr-status');\n }\n\n setStatus(status: string): void {\n this.setCookie('uhr-status', status);\n }\n\n getTheme(): string {\n return this.getCookie('uhr-theme');\n }\n\n setTheme(theme: string): void {\n this.setCookie('uhr-theme', theme);\n }\n\n private getCookie(cookieName: string): string {\n return Cookies.get(cookieName + this.widgetId);\n }\n\n private setCookie(cookieName: string, cookieValue: string): void {\n let options;\n if (!!this.cookiePath) {\n options = {expires: 365, path: this.cookiePath};\n } else {\n options = {expires: 365};\n }\n Cookies.set(cookieName + this.widgetId, cookieValue, options);\n }\n\n private removeCookie(cookieName: string): void {\n if (!!this.cookiePath) {\n Cookies.remove(cookieName + this.widgetId, {path: this.cookiePath});\n } else {\n Cookies.remove(cookieName + this.widgetId);\n }\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\n/**\n * Ein Buchstabe. Hilfsklasse für den Renderer und Inhalt der Layout-Arrays.\n * @param value Der Buchstabe, der Dargestellt werden soll.\n * @param style Die CSS-Styleklassen des Buchstabens.\n */\nexport class Letter {\n private readonly value: string;\n private style: string = '';\n\n constructor(value: string, style?: string) {\n this.value = value;\n if (!!style) {\n this.style = style;\n }\n }\n\n addStyle(style: string): void {\n if (this.style === '') {\n this.style = style;\n } else {\n this.style += ` ${style}`;\n }\n };\n\n toString(): string {\n return `${this.value}`;\n };\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, TimeDefinition, WordDefinition} from './domain/layout';\nimport {Letter} from './domain/letter';\n\nclass LayoutRendererV2Delegate {\n private static readonly vorne0: WordDefinition = {\n 3: [2, 3, 4],\n 4: [1, 5],\n 5: [1, 4, 5],\n 6: [1, 3, 5],\n 7: [1, 2, 5],\n 8: [1, 5],\n 9: [2, 3, 4]\n };\n private static readonly hinten0: WordDefinition = {\n 3: [8, 9, 10],\n 4: [7, 11],\n 5: [7, 10, 11],\n 6: [7, 9, 11],\n 7: [7, 8, 11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly vorne1: WordDefinition = {\n 3: [3],\n 4: [2, 3],\n 5: [3],\n 6: [3],\n 7: [3],\n 8: [3],\n 9: [2, 3, 4]\n };\n private static readonly hinten1: WordDefinition = {\n 3: [9],\n 4: [8, 9],\n 5: [9],\n 6: [9],\n 7: [9],\n 8: [9],\n 9: [8, 9, 10]\n };\n private static readonly vorne2: WordDefinition = {\n 3: [2, 3, 4],\n 4: [1, 5],\n 5: [5],\n 6: [4],\n 7: [3],\n 8: [2],\n 9: [1, 2, 3, 4, 5]\n };\n private static readonly hinten2: WordDefinition = {\n 3: [8, 9, 10],\n 4: [7, 11],\n 5: [11],\n 6: [10],\n 7: [9],\n 8: [8],\n 9: [7, 8, 9, 10, 11]\n };\n private static readonly vorne3: WordDefinition = {\n 3: [1, 2, 3, 4, 5],\n 4: [4],\n 5: [3],\n 6: [4],\n 7: [5],\n 8: [1, 5],\n 9: [2, 3, 4]\n };\n private static readonly hinten3: WordDefinition = {\n 3: [7, 8, 9, 10, 11],\n 4: [10],\n 5: [9],\n 6: [10],\n 7: [11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly vorne4: WordDefinition = {\n 3: [4],\n 4: [3, 4],\n 5: [2, 4],\n 6: [1, 4],\n 7: [1, 2, 3, 4, 5],\n 8: [4],\n 9: [4]\n };\n private static readonly hinten4: WordDefinition = {\n 3: [10],\n 4: [9, 10],\n 5: [8, 10],\n 6: [7, 10],\n 7: [7, 8, 9, 10, 11],\n 8: [10],\n 9: [10]\n };\n private static readonly vorne5: WordDefinition = {\n 3: [1, 2, 3, 4, 5],\n 4: [1],\n 5: [1, 2, 3, 4],\n 6: [5],\n 7: [5],\n 8: [1, 5],\n 9: [2, 3, 4]\n };\n private static readonly hinten5: WordDefinition = {\n 3: [7, 8, 9, 10, 11],\n 4: [7],\n 5: [7, 8, 9, 10],\n 6: [11],\n 7: [11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly hinten6: WordDefinition = {\n 3: [9, 10],\n 4: [8],\n 5: [7],\n 6: [7, 8, 9, 10],\n 7: [7, 11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly hinten7: WordDefinition = {\n 3: [7, 8, 9, 10, 11],\n 4: [11],\n 5: [10],\n 6: [9],\n 7: [8],\n 8: [8],\n 9: [8]\n };\n private static readonly hinten8: WordDefinition = {\n 3: [8, 9, 10],\n 4: [7, 11],\n 5: [7, 11],\n 6: [8, 9, 10],\n 7: [7, 11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly hinten9: WordDefinition = {\n 3: [8, 9, 10],\n 4: [7, 11],\n 5: [7, 11],\n 6: [8, 9, 10, 11],\n 7: [11],\n 8: [10],\n 9: [8, 9]\n };\n private static readonly seconds: TimeDefinition = {\n '0': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten0],\n '1': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten1],\n '2': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten2],\n '3': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten3],\n '4': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten4],\n '5': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten5],\n '6': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten6],\n '7': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten7],\n '8': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten8],\n '9': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten9],\n '10': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten0],\n '11': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten1],\n '12': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten2],\n '13': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten3],\n '14': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten4],\n '15': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten5],\n '16': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten6],\n '17': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten7],\n '18': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten8],\n '19': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten9],\n '20': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten0],\n '21': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten1],\n '22': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten2],\n '23': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten3],\n '24': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten4],\n '25': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten5],\n '26': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten6],\n '27': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten7],\n '28': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten8],\n '29': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten9],\n '30': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten0],\n '31': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten1],\n '32': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten2],\n '33': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten3],\n '34': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten4],\n '35': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten5],\n '36': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten6],\n '37': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten7],\n '38': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten8],\n '39': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten9],\n '40': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten0],\n '41': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten1],\n '42': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten2],\n '43': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten3],\n '44': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten4],\n '45': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten5],\n '46': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten6],\n '47': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten7],\n '48': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten8],\n '49': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten9],\n '50': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten0],\n '51': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten1],\n '52': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten2],\n '53': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten3],\n '54': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten4],\n '55': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten5],\n '56': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten6],\n '57': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten7],\n '58': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten8],\n '59': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten9]\n };\n\n constructor(private layout: Layout) {\n }\n\n public parse(): Letter[][] {\n const letters: Letter[][] = [];\n this.layout.letters.forEach(lineString => {\n const line: Letter[] = [];\n for (let c = 0; c < lineString.length; c++) {\n line.push(new Letter(lineString[c]));\n }\n letters.push(line);\n });\n this.parseArrayOrObject(letters, 'on', this.layout.permanent);\n if (typeof this.layout.seconds !== 'undefined' && this.layout.seconds !== null) {\n this.parseTimeDefinition(letters, 'second', this.layout.seconds);\n } else {\n this.parseTimeDefinition(letters, 'second', LayoutRendererV2Delegate.seconds);\n }\n this.parseTimeDefinition(letters, 'minute', this.layout.minutes);\n this.parseTimeDefinition(letters, 'hour', this.layout.hours);\n return letters;\n };\n\n private parseObject(letters: Letter[][], styleClass: string, object: WordDefinition): void {\n if (typeof object !== 'undefined' && object !== null) {\n Object.keys(object)\n .map(key => Number(key))\n .forEach(\n y => object[y].forEach(\n x => letters[y - 1][x - 1].addStyle(styleClass)\n )\n );\n }\n }\n\n private parseArrayOrObject(letters: Letter[][], styleClass: string, input: WordDefinition | WordDefinition[]): void {\n if (typeof input !== 'undefined' && input !== null) {\n if (Array.isArray(input)) {\n input.forEach(item => this.parseObject(letters, styleClass, item));\n } else {\n this.parseObject(letters, styleClass, input);\n }\n }\n }\n\n private parseTimeDefinition(letters: Letter[][], styleClass: string, definition: TimeDefinition): void {\n if (typeof definition !== 'undefined' && definition !== null) {\n Object.keys(definition).forEach(listString => {\n const timeValues: string[] = listString.split(',');\n const highlightLetters: WordDefinition | WordDefinition[] = definition[listString];\n timeValues.forEach(timeValue => this.parseArrayOrObject(letters, styleClass + timeValue, highlightLetters));\n });\n }\n }\n}\n\n/**\n * Hilfsklasse zum Rendern der Buchstaben der Uhr.\n * @param layout Layout-Objekt, das gerendert werden soll.\n * @param renderarea Das jQuery-gewrappte HTML-Element, auf dem gerendert werden soll.\n */\nexport class LayoutRenderer {\n constructor(private layout: Layout, private renderarea: JQuery) {\n }\n\n render(beforeshow?: () => void): void {\n if (this.layout.parsed === undefined) {\n if (this.layout.version === 2) {\n const delegate: LayoutRendererV2Delegate = new LayoutRendererV2Delegate(this.layout);\n const parsedLayout: Letter[][] = delegate.parse();\n Object.defineProperty(this.layout, 'parsed', {\n value: parsedLayout,\n writable: false,\n configurable: false\n });\n } else {\n console.warn(`Unknown layout version: '${this.layout.version}', expecting '2'`);\n return;\n }\n }\n const letters: Letter[][] = this.layout.parsed;\n this.renderarea.fadeOut('fast', () => {\n this.renderarea.empty();\n letters.forEach((line, index, array) => {\n line.forEach(letter => this.renderarea.append(letter.toString()));\n if (index < array.length - 1) {\n this.renderarea.append('
');\n }\n });\n if (!!beforeshow) {\n beforeshow();\n }\n this.renderarea.fadeIn('fast');\n });\n };\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {CookieHandler} from './cookie-handler';\nimport {Globals} from './domain/globals';\nimport {Options} from './widget/options';\nimport {Uhr} from './uhr';\n\nexport class UhrRenderer {\n private cookieHandler: CookieHandler;\n\n constructor(\n private uhr: Uhr,\n private $element: JQuery,\n private options: Options,\n private id: string\n ) {\n this.cookieHandler = new CookieHandler(id, options.cookiePath);\n }\n\n public render(): void {\n this.setupHTML();\n this.wireFunctionality();\n }\n\n public setWidth(width: string): void {\n this.$element.css('width', width);\n const realWidth: number = this.$element.width();\n this.$element.width(realWidth);\n this.$element.height(realWidth);\n this.$element.css('font-size', (realWidth / 40) + 'px');\n }\n\n private setupHTML(): void {\n // Base clock area\n this.$element.addClass('uhr')\n .empty()\n .append('')\n .append('')\n .append('')\n .append('')\n .append('
')\n .append('
');\n\n this.setWidth(this.options.width);\n\n if (this.options.controls) {\n const controlpanel = $(`
`);\n const content = $('
');\n controlpanel.append(content);\n // on/off switch\n const toggleSwitch = $(`
`);\n toggleSwitch.append(``);\n toggleSwitch.append(``);\n content.append(toggleSwitch);\n\n // time mode switch\n const modeSwitch = $(`
`);\n modeSwitch.append(``);\n modeSwitch.append(``);\n content.append(modeSwitch);\n // language chooser\n if (Globals.hasMultipleLayouts()) {\n const languageChooser = $(``);\n Globals.getLayouts().forEach(layout => {\n languageChooser.append(``);\n });\n content.append(languageChooser);\n }\n\n // theme chooser\n if (Globals.hasMultipleThemes()) {\n const themeChooser = $(``);\n Globals.getThemes().forEach(theme => {\n themeChooser.append(``);\n });\n content.append(themeChooser);\n }\n const closebutton: JQuery = $(``);\n closebutton.on({click: () => $(`#uhr-controlpanel${this.id}`).hide('fast')});\n content.append(closebutton);\n this.$element.after(controlpanel);\n controlpanel.hide();\n const configlink: JQuery = $(``);\n configlink.on({click: () => this.toggleConfigScreen()});\n this.$element.after(configlink);\n }\n };\n\n private wireFunctionality(): void {\n // on/off switch\n const toggleSwitch: JQuery = $(`#uhr-onoffswitch-checkbox${this.id}`);\n toggleSwitch.on({click: () => this.uhr.toggle()});\n let status = this.cookieHandler.getStatus();\n if (status === undefined || this.options.force) {\n status = this.options.status;\n }\n toggleSwitch.prop('checked', status === 'on');\n if (status === 'on') {\n this.uhr.start();\n } else {\n this.uhr.stop();\n }\n\n // time mode switch\n const modeSwitch: JQuery = $(`#uhr-modeswitch-checkbox${this.id}`);\n modeSwitch.on({\n click: () => {\n if (this.options.mode === 'seconds') {\n this.uhr.setMode('normal');\n } else {\n this.uhr.setMode('seconds');\n }\n }\n });\n\n let mode = this.cookieHandler.getMode();\n if (mode === undefined || this.options.force) {\n mode = this.options.mode;\n }\n modeSwitch.prop('checked', mode !== 'seconds');\n if (mode === 'seconds') {\n this.uhr.setMode('seconds');\n } else {\n this.uhr.setMode('normal');\n }\n\n // language chooser\n const languageChooser: JQuery = $(`#uhr-languagechooser${this.id}`);\n languageChooser.on({\n change: () => {\n const languageKey = $(`#uhr-languagechooser${this.id}`).val() as string;\n this.uhr.setLayout(languageKey);\n }\n });\n let selectedLayout = this.cookieHandler.getLayout();\n if (selectedLayout === undefined || this.options.force) {\n selectedLayout = this.options.language;\n }\n let found = Globals.getLayouts().some(item => selectedLayout === item.code);\n if (!found) {\n let fallbackLanguage;\n if (Globals.hasLayouts()) {\n fallbackLanguage = Globals.getFirstLayout().code;\n } else {\n fallbackLanguage = '';\n }\n console.warn(`Language '${selectedLayout}' not found! Using fallback '${fallbackLanguage}'.`);\n selectedLayout = fallbackLanguage;\n }\n languageChooser.val(selectedLayout);\n this.options.language = '';\n this.uhr.setLayout(selectedLayout);\n\n // theme chooser\n const themeChooser: JQuery = $(`#uhr-themechooser${this.id}`);\n themeChooser.on({\n change: () => {\n const themeKey = $(`#uhr-themechooser${this.id}`).val() as string;\n this.uhr.setTheme(themeKey);\n }\n });\n let selectedTheme = this.cookieHandler.getTheme();\n if (selectedTheme === undefined || this.options.force) {\n selectedTheme = this.options.theme;\n }\n found = Globals.getThemes().some(item => selectedTheme === item.styleClass);\n if (!found) {\n const fallbackTheme = Globals.getFirstTheme().styleClass;\n console.warn(`Theme '${selectedTheme}' not found! Using fallback '${fallbackTheme}'.`);\n selectedTheme = fallbackTheme;\n }\n themeChooser.val(selectedTheme);\n this.options.theme = '';\n this.uhr.setTheme(selectedTheme);\n if (this.options.autoresize) {\n $(window).on({\n resize: () => {\n const $parent: JQuery = this.$element.parent();\n const $window: JQuery = $(window);\n const parentWidth: number = $parent.width();\n const parentHeight: number = $parent.height();\n const windowWidth: number = $window.width();\n const windowHeight: number = $window.height();\n const size: string = `${Math.min(parentWidth, parentHeight, windowWidth, windowHeight)}px`;\n this.setWidth(size);\n }\n });\n }\n }\n\n private toggleConfigScreen() {\n $(`#uhr-controlpanel${this.id}`).toggle('fast');\n };\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {EMPTY_LAYOUT, Layout} from './domain/layout';\nimport {CookieHandler} from './cookie-handler';\nimport {Globals} from './domain/globals';\nimport {LayoutRenderer} from './layout-renderer';\nimport {UhrRenderer} from './uhr-renderer';\nimport {WidgetPrototype} from './widget/widget-prototype';\n\nexport class Uhr {\n\n private timer: number = null;\n private currentMinute: number = null;\n private renderer: UhrRenderer;\n private cookieHandler: CookieHandler;\n\n constructor(private widgetInstance: WidgetPrototype) {\n const userTime = this.widgetInstance.options.time;\n if (this.widgetInstance.options.time === undefined) {\n this.widgetInstance.options.time = new Date();\n }\n this.cookieHandler = new CookieHandler(this.widgetInstance.uuid, this.widgetInstance.options.cookiePath);\n this.parseHash();\n this.renderer = new UhrRenderer(this, this.widgetInstance.element, this.widgetInstance.options, this.widgetInstance.uuid);\n this.renderer.render();\n if (userTime !== undefined) {\n this.setTime(userTime);\n }\n }\n\n destroy(): void {\n if (!!this.timer) {\n window.clearInterval(this.timer);\n this.timer = null;\n }\n this.widgetInstance.element\n .removeAttr('style')\n .removeAttr('class')\n .empty();\n $(`#uhr-configlink${this.widgetInstance.uuid}`).remove();\n $(`#uhr-controlpanel${this.widgetInstance.uuid}`).remove();\n }\n\n start(): void {\n if (!this.isOn()) {\n this.timer = window.setInterval(() => {\n this.widgetInstance.options.time = new Date();\n this.update();\n }, 1000);\n this.update();\n this.cookieHandler.setStatus('on')\n }\n }\n\n stop(): void {\n if (this.isOn()) {\n window.clearInterval(this.timer);\n this.timer = null;\n this.update();\n this.cookieHandler.setStatus('off');\n }\n }\n\n toggle(): void {\n if (this.isOn()) {\n this.stop();\n } else {\n this.start();\n }\n }\n\n setLayout(key: string): void {\n if (key !== this.widgetInstance.options.language) {\n this.widgetInstance.options.language = key;\n const renderer = new LayoutRenderer(this.getCurrentLayout(), this.widgetInstance.element.find('.letterarea'));\n renderer.render(() => {\n this.currentMinute = -1;\n this.update();\n });\n this.cookieHandler.setLayout(key);\n this.update();\n }\n }\n\n setTheme(styleClass: string): void {\n if (styleClass !== this.widgetInstance.options.theme) {\n this.widgetInstance.element.removeClass(this.widgetInstance.options.theme).addClass(styleClass);\n $(`#uhr-onoffswitch${this.widgetInstance.uuid}`).removeClass(this.widgetInstance.options.theme).addClass(styleClass);\n this.widgetInstance.options.theme = styleClass;\n this.cookieHandler.setTheme(styleClass);\n }\n }\n\n setTime(time: Date): void {\n this.currentMinute = null;\n if (time === null) {\n this.widgetInstance.options.time = new Date();\n } else {\n if (this.timer !== null) {\n window.clearInterval(this.timer);\n }\n this.widgetInstance.options.time = time;\n }\n this.update();\n }\n\n setMode(mode: string): void {\n this.widgetInstance.options.mode = mode;\n this.currentMinute = null;\n this.update();\n this.cookieHandler.setMode(mode);\n }\n\n setWidth(width: string): void {\n this.renderer.setWidth(width);\n }\n\n private isOn(): boolean {\n return this.timer !== null;\n }\n\n private update(): void {\n if (this.isOn()) {\n const time = this.widgetInstance.options.time;\n if (!this.getCurrentLayout().hasOwnProperty('seconds') && this.widgetInstance.options.mode !== 'seconds') {\n if (time.getMinutes() === this.currentMinute) {\n return;\n }\n this.currentMinute = time.getMinutes();\n }\n this.show(time);\n } else {\n this.clear();\n this.currentMinute = -1;\n }\n }\n\n private show(time: Date): void {\n const second = this.getSecond(time);\n const dotMinute = this.getDotMinute(time);\n const hour = this.getHour(time);\n const coarseMinute = this.getCoarseMinute(time);\n this.clear();\n if (this.widgetInstance.options.mode === 'seconds') {\n this.highlight(`second${second}`);\n } else {\n this.highlight('on');\n for (let i = 1; i <= dotMinute; i++) {\n this.highlight(`dot${i}`);\n }\n this.highlight(`minute${coarseMinute}`);\n this.highlight(`hour${hour}`);\n }\n }\n\n private clear(): void {\n this.widgetInstance.element.find('.item').removeClass('active');\n }\n\n private highlight(itemClass: string): void {\n this.widgetInstance.element.find(`.item.${itemClass}`).addClass('active');\n }\n\n private getSecond(time: Date): number {\n if (typeof this.getCurrentLayout().getSeconds === 'function') {\n return this.getCurrentLayout().getSeconds(time);\n }\n return time.getSeconds();\n };\n\n private getDotMinute(date: Date): number {\n if (typeof this.getCurrentLayout().getDotMinute === 'function') {\n return this.getCurrentLayout().getDotMinute(date);\n }\n return date.getMinutes() % 5;\n };\n\n private getCoarseMinute(date: Date): number {\n if (typeof this.getCurrentLayout().getCoarseMinute === 'function') {\n return this.getCurrentLayout().getCoarseMinute(date);\n }\n return date.getMinutes();\n };\n\n private getHour(date: Date): number {\n if (typeof this.getCurrentLayout().getHour === 'function') {\n return this.getCurrentLayout().getHour(date);\n }\n const hour = date.getHours();\n if (date.getMinutes() >= 25) {\n return (hour + 1) % 24;\n }\n return hour;\n };\n\n private parseHash(): void {\n let hash: string = window.location.hash;\n if (hash !== undefined && hash.charAt(0) === '#') {\n hash = hash.substring(1);\n hash = decodeURIComponent(hash);\n const params: string[] = hash.split('&');\n params.forEach(element => {\n const pair: string[] = element.split('=');\n const key = pair[0];\n const value = pair[1];\n switch (key) {\n case 'l':\n case 'language':\n this.widgetInstance.options.language = value;\n this.widgetInstance.options.force = true;\n break;\n case 't':\n case 'theme':\n this.widgetInstance.options.theme = value;\n this.widgetInstance.options.force = true;\n break;\n case 'm':\n case 'mode':\n this.widgetInstance.options.mode = value;\n this.widgetInstance.options.force = true;\n break;\n case 's':\n case 'status':\n this.widgetInstance.options.status = value;\n this.widgetInstance.options.force = true;\n break;\n }\n });\n }\n }\n\n private getCurrentLayout(): Layout {\n const matchingLanguages: Layout[] = Globals.getLayouts().filter(element => element.code === this.widgetInstance.options.language, this);\n if (matchingLanguages.length > 0) {\n return matchingLanguages[0];\n }\n // fallback: return empty object\n return EMPTY_LAYOUT;\n };\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport * as $ from 'jquery';\nimport {Globals} from './domain/globals';\n\nexport function autodetectThemes() {\n $('link[rel=stylesheet]').each((index, item) => {\n const styleSheet = $(item);\n const styleClass: string = styleSheet.attr('data-class');\n if (styleClass !== undefined) {\n let name: string = styleSheet.attr('data-name');\n if (name === undefined) {\n name = styleClass;\n }\n Globals.registerTheme(name, styleClass);\n }\n });\n\n // fall-back if no theme was included\n if (!Globals.hasThemes()) {\n Globals.registerTheme('', '');\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Globals} from './domain/globals';\nimport {Layout} from './domain/layout';\nimport {Uhr} from './uhr';\nimport {WidgetPrototype} from './widget/widget-prototype';\nimport {autodetectThemes} from './theme-autodetector';\n\n// First things first: discover included themes and register them\nautodetectThemes();\n\n$.widget('fritteli.uhr', {\n options: {\n width: '100%',\n status: 'on',\n language: 'de_CH',\n theme: Globals.getFirstTheme().styleClass,\n force: false,\n controls: true,\n cookiePath: undefined,\n autoresize: true,\n mode: 'normal'\n },\n start: function () {\n this.__fritteli_uhr_instance.start();\n },\n stop: function () {\n this.__fritteli_uhr_instance.stop();\n },\n toggle: function () {\n this.__fritteli_uhr_instance.toggle();\n },\n language: function (key: string) {\n this.__fritteli_uhr_instance.setLayout(key);\n },\n theme: function (styleClass: string) {\n this.__fritteli_uhr_instance.setTheme(styleClass);\n },\n time: function (time: Date) {\n this.__fritteli_uhr_instance.setTime(time);\n },\n mode: function (mode: string) {\n this.__fritteli_uhr_instance.setMode(mode);\n },\n width: function (width: string) {\n this.__fritteli_uhr_instance.setWidth(width);\n },\n // constructor method\n _create: function () {\n this.__fritteli_uhr_instance = new Uhr(this);\n },\n // destructor method\n _destroy: function () {\n this.__fritteli_uhr_instance.destroy();\n },\n __fritteli_uhr_instance: null\n} as WidgetPrototype);\n\n$.fritteli.uhr.register = Globals.registerLayout;\n\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n const widget: JQueryUI.Widget;\n}\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///external \"Cookies\"","webpack:///external \"jQuery\"","webpack:///./src/domain/globals.ts","webpack:///./src/domain/layout.ts","webpack:///./src/cookie-handler.ts","webpack:///./src/domain/letter.ts","webpack:///./src/layout-renderer.ts","webpack:///./src/uhr-renderer.ts","webpack:///./src/uhr.ts","webpack:///./src/theme-autodetector.ts","webpack:///./src/index.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","Cookies","jQuery","Globals","registerTheme","styleClass","themes","some","console","warn","push","hasThemes","length","hasMultipleThemes","getFirstTheme","getTheme","index","getThemes","registerLayout","layout","layouts","element","code","prettyName","error","sort","a","b","localeCompare","hasLayouts","hasMultipleLayouts","getFirstLayout","getLayouts","EMPTY_LAYOUT","hours","letters","minutes","permanent","version","cookie_handler_CookieHandler","CookieHandler","widgetId","cookiePath","this","getLayout","oldCookie","getCookie","removeCookie","setLayout","setCookie","getMode","setMode","getStatus","setStatus","status","setTheme","theme","cookieName","external_Cookies_","cookieValue","options","expires","path","Letter","style","addStyle","toString","layout_renderer_LayoutRendererV2Delegate","LayoutRendererV2Delegate","parse","forEach","lineString","line","parseArrayOrObject","seconds","parseTimeDefinition","parseObject","keys","map","Number","y","x","input","_this","Array","isArray","item","definition","listString","timeValues","split","highlightLetters","timeValue","vorne0","3","4","5","6","7","8","9","hinten0","vorne1","hinten1","vorne2","hinten2","vorne3","hinten3","vorne4","hinten4","vorne5","hinten5","hinten6","hinten7","hinten8","hinten9","0","1","2","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59","LayoutRenderer","renderarea","render","beforeshow","undefined","parsed","parsedLayout","writable","configurable","fadeOut","empty","array","letter","append","fadeIn","uhr_renderer_UhrRenderer","UhrRenderer","uhr","$element","id","cookieHandler","setupHTML","wireFunctionality","setWidth","width","css","realWidth","height","addClass","controls","controlpanel","$","content","toggleSwitch","modeSwitch","languageChooser_1","themeChooser_1","closebutton","on","click","hide","after","configlink","toggleConfigScreen","toggle","force","prop","start","stop","languageChooser","change","languageKey","val","selectedLayout","language","found","fallbackLanguage","themeChooser","themeKey","selectedTheme","fallbackTheme","autoresize","window","resize","$parent","parent","$window","parentWidth","parentHeight","windowWidth","windowHeight","size","Math","min","uhr_Uhr","Uhr","widgetInstance","timer","currentMinute","userTime","time","Date","uuid","parseHash","renderer","setTime","destroy","clearInterval","removeAttr","remove","isOn","setInterval","update","getCurrentLayout","find","removeClass","getMinutes","show","clear","second","getSecond","dotMinute","getDotMinute","hour","getHour","coarseMinute","getCoarseMinute","highlight","itemClass","getSeconds","date","getHours","hash","location","charAt","substring","decodeURIComponent","pair","matchingLanguages","filter","external_jQuery_","each","styleSheet","attr","name_1","widgetPrototype","_fritteliUhrInstance","_create","_destroy","widget","fritteli","register"],"mappings":"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","file":"lib/uhr.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 12);\n","module.exports = Cookies;","module.exports = jQuery;","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout} from './layout';\nimport {Theme} from './theme';\n\nexport class Globals {\n private static layouts: Layout[] = [];\n private static themes: Theme[] = [];\n\n public static registerTheme(name: string, styleClass: string): void {\n if (Globals.themes.some((value): boolean => value.name === name)) {\n console.warn(`Theme with name '${name}' already registered; ignoring register request for styleClass '${styleClass}'.`);\n } else {\n Globals.themes.push({\n name,\n styleClass\n });\n }\n }\n\n public static hasThemes(): boolean {\n return Globals.themes.length > 0;\n }\n\n public static hasMultipleThemes(): boolean {\n return Globals.themes.length > 1;\n }\n\n public static getFirstTheme(): Theme {\n return Globals.getTheme(0);\n }\n\n public static getTheme(index: number): Theme {\n return Globals.themes[index];\n }\n\n public static getThemes(): Theme[] {\n return Globals.themes;\n }\n\n public static registerLayout(layout: Layout): void {\n const available = !Globals.layouts.some((element): boolean => {\n if (layout.code === element.code) {\n if (layout.prettyName !== element.prettyName) {\n console.error(\n `Error: Language code '${layout.code}' cannot be registered for layout '${layout.prettyName}' because it is already registered for layout '${element.prettyName}'!`\n );\n }\n return true;\n }\n return false;\n });\n if (available) {\n Globals.layouts.push(layout);\n Globals.layouts.sort((a, b): number => a.prettyName.localeCompare(b.prettyName));\n }\n }\n\n public static hasLayouts(): boolean {\n return Globals.layouts.length > 0;\n }\n\n public static hasMultipleLayouts(): boolean {\n return Globals.layouts.length > 1;\n }\n\n public static getFirstLayout(): Layout {\n return Globals.layouts[0];\n }\n\n public static getLayouts(): Layout[] {\n return Globals.layouts;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Letter} from './letter';\n\nexport interface Layout {\n readonly code: string;\n getCoarseMinute?: (time: Date) => number;\n getDotMinute?: (time: Date) => number;\n getHour?: (time: Date) => number;\n getSeconds?: (time: Date) => number;\n readonly hours: TimeDefinition;\n readonly letters: string[];\n readonly minutes: TimeDefinition;\n parsed?: Letter[][];\n readonly permanent: WordDefinition | WordDefinition[];\n readonly prettyName: string;\n seconds?: TimeDefinition;\n readonly version: number;\n}\n\nexport interface WordDefinition {\n [line: number]: number[];\n}\n\nexport interface TimeDefinition {\n [values: string]: WordDefinition | WordDefinition[];\n}\n\nexport const EMPTY_LAYOUT: Layout = {\n code: null,\n hours: null,\n letters: [],\n minutes: null,\n permanent: [],\n prettyName: null,\n version: 2\n};\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport * as Cookies from 'js-cookie';\n\nexport class CookieHandler {\n public constructor(private readonly widgetId: string, private readonly cookiePath?: string) {\n }\n\n public getLayout(): string {\n const oldCookie = this.getCookie('uhr-language');\n if (oldCookie) {\n // aha, old cookie is set. migrate to new one!\n this.removeCookie('uhr-language');\n this.setLayout(oldCookie);\n }\n return this.getCookie('uhr-layout');\n }\n\n public setLayout(layout: string): void {\n this.setCookie('uhr-layout', layout);\n }\n\n public getMode(): string {\n return this.getCookie('uhr-mode');\n }\n\n public setMode(mode: string): void {\n this.setCookie('uhr-mode', mode);\n }\n\n public getStatus(): string {\n return this.getCookie('uhr-status');\n }\n\n public setStatus(status: string): void {\n this.setCookie('uhr-status', status);\n }\n\n public getTheme(): string {\n return this.getCookie('uhr-theme');\n }\n\n public setTheme(theme: string): void {\n this.setCookie('uhr-theme', theme);\n }\n\n private getCookie(cookieName: string): string {\n return Cookies.get(cookieName + this.widgetId);\n }\n\n private setCookie(cookieName: string, cookieValue: string): void {\n let options;\n if (this.cookiePath) {\n options = {expires: 365, path: this.cookiePath};\n } else {\n options = {expires: 365};\n }\n Cookies.set(cookieName + this.widgetId, cookieValue, options);\n }\n\n private removeCookie(cookieName: string): void {\n if (this.cookiePath) {\n Cookies.remove(cookieName + this.widgetId, {path: this.cookiePath});\n } else {\n Cookies.remove(cookieName + this.widgetId);\n }\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\n/**\n * Ein Buchstabe. Hilfsklasse für den Renderer und Inhalt der Layout-Arrays.\n * @param value Der Buchstabe, der Dargestellt werden soll.\n * @param style Die CSS-Styleklassen des Buchstabens.\n */\nexport class Letter {\n // private readonly value: string;\n private style: string;\n\n public constructor(private readonly value: string, style: string = '') {\n this.value = value;\n this.style = style;\n // if (style) {\n // this.style = style;\n // }\n }\n\n public addStyle(style: string): void {\n if (this.style === '') {\n this.style = style;\n } else {\n this.style += ` ${style}`;\n }\n }\n\n public toString(): string {\n return `${this.value}`;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, TimeDefinition, WordDefinition} from './domain/layout';\nimport {Letter} from './domain/letter';\n\nclass LayoutRendererV2Delegate {\n private static readonly vorne0: WordDefinition = {\n 3: [2, 3, 4],\n 4: [1, 5],\n 5: [1, 4, 5],\n 6: [1, 3, 5],\n 7: [1, 2, 5],\n 8: [1, 5],\n 9: [2, 3, 4]\n };\n private static readonly hinten0: WordDefinition = {\n 3: [8, 9, 10],\n 4: [7, 11],\n 5: [7, 10, 11],\n 6: [7, 9, 11],\n 7: [7, 8, 11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly vorne1: WordDefinition = {\n 3: [3],\n 4: [2, 3],\n 5: [3],\n 6: [3],\n 7: [3],\n 8: [3],\n 9: [2, 3, 4]\n };\n private static readonly hinten1: WordDefinition = {\n 3: [9],\n 4: [8, 9],\n 5: [9],\n 6: [9],\n 7: [9],\n 8: [9],\n 9: [8, 9, 10]\n };\n private static readonly vorne2: WordDefinition = {\n 3: [2, 3, 4],\n 4: [1, 5],\n 5: [5],\n 6: [4],\n 7: [3],\n 8: [2],\n 9: [1, 2, 3, 4, 5]\n };\n private static readonly hinten2: WordDefinition = {\n 3: [8, 9, 10],\n 4: [7, 11],\n 5: [11],\n 6: [10],\n 7: [9],\n 8: [8],\n 9: [7, 8, 9, 10, 11]\n };\n private static readonly vorne3: WordDefinition = {\n 3: [1, 2, 3, 4, 5],\n 4: [4],\n 5: [3],\n 6: [4],\n 7: [5],\n 8: [1, 5],\n 9: [2, 3, 4]\n };\n private static readonly hinten3: WordDefinition = {\n 3: [7, 8, 9, 10, 11],\n 4: [10],\n 5: [9],\n 6: [10],\n 7: [11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly vorne4: WordDefinition = {\n 3: [4],\n 4: [3, 4],\n 5: [2, 4],\n 6: [1, 4],\n 7: [1, 2, 3, 4, 5],\n 8: [4],\n 9: [4]\n };\n private static readonly hinten4: WordDefinition = {\n 3: [10],\n 4: [9, 10],\n 5: [8, 10],\n 6: [7, 10],\n 7: [7, 8, 9, 10, 11],\n 8: [10],\n 9: [10]\n };\n private static readonly vorne5: WordDefinition = {\n 3: [1, 2, 3, 4, 5],\n 4: [1],\n 5: [1, 2, 3, 4],\n 6: [5],\n 7: [5],\n 8: [1, 5],\n 9: [2, 3, 4]\n };\n private static readonly hinten5: WordDefinition = {\n 3: [7, 8, 9, 10, 11],\n 4: [7],\n 5: [7, 8, 9, 10],\n 6: [11],\n 7: [11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly hinten6: WordDefinition = {\n 3: [9, 10],\n 4: [8],\n 5: [7],\n 6: [7, 8, 9, 10],\n 7: [7, 11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly hinten7: WordDefinition = {\n 3: [7, 8, 9, 10, 11],\n 4: [11],\n 5: [10],\n 6: [9],\n 7: [8],\n 8: [8],\n 9: [8]\n };\n private static readonly hinten8: WordDefinition = {\n 3: [8, 9, 10],\n 4: [7, 11],\n 5: [7, 11],\n 6: [8, 9, 10],\n 7: [7, 11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly hinten9: WordDefinition = {\n 3: [8, 9, 10],\n 4: [7, 11],\n 5: [7, 11],\n 6: [8, 9, 10, 11],\n 7: [11],\n 8: [10],\n 9: [8, 9]\n };\n private static readonly seconds: TimeDefinition = {\n '0': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten0],\n '1': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten1],\n '2': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten2],\n '3': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten3],\n '4': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten4],\n '5': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten5],\n '6': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten6],\n '7': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten7],\n '8': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten8],\n '9': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten9],\n '10': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten0],\n '11': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten1],\n '12': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten2],\n '13': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten3],\n '14': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten4],\n '15': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten5],\n '16': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten6],\n '17': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten7],\n '18': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten8],\n '19': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten9],\n '20': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten0],\n '21': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten1],\n '22': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten2],\n '23': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten3],\n '24': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten4],\n '25': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten5],\n '26': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten6],\n '27': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten7],\n '28': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten8],\n '29': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten9],\n '30': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten0],\n '31': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten1],\n '32': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten2],\n '33': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten3],\n '34': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten4],\n '35': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten5],\n '36': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten6],\n '37': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten7],\n '38': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten8],\n '39': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten9],\n '40': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten0],\n '41': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten1],\n '42': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten2],\n '43': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten3],\n '44': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten4],\n '45': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten5],\n '46': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten6],\n '47': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten7],\n '48': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten8],\n '49': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten9],\n '50': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten0],\n '51': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten1],\n '52': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten2],\n '53': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten3],\n '54': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten4],\n '55': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten5],\n '56': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten6],\n '57': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten7],\n '58': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten8],\n '59': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten9]\n };\n\n public constructor(private readonly layout: Layout) {\n }\n\n public parse(): Letter[][] {\n const letters: Letter[][] = [];\n this.layout.letters.forEach((lineString: string): void => {\n const line: Letter[] = [];\n for (let c = 0; c < lineString.length; c++) {\n line.push(new Letter(lineString[c]));\n }\n letters.push(line);\n });\n this.parseArrayOrObject(letters, 'on', this.layout.permanent);\n if (typeof this.layout.seconds !== 'undefined' && this.layout.seconds !== null) {\n this.parseTimeDefinition(letters, 'second', this.layout.seconds);\n } else {\n this.parseTimeDefinition(letters, 'second', LayoutRendererV2Delegate.seconds);\n }\n this.parseTimeDefinition(letters, 'minute', this.layout.minutes);\n this.parseTimeDefinition(letters, 'hour', this.layout.hours);\n return letters;\n }\n\n private parseObject(letters: Letter[][], styleClass: string, object: WordDefinition): void {\n if (typeof object !== 'undefined' && object !== null) {\n Object.keys(object)\n .map((key: string): number => Number(key))\n .forEach(\n (y: number): void => object[y].forEach(\n (x: number): void => letters[y - 1][x - 1].addStyle(styleClass)\n )\n );\n }\n }\n\n private parseArrayOrObject(letters: Letter[][], styleClass: string, input: WordDefinition | WordDefinition[]): void {\n if (typeof input !== 'undefined' && input !== null) {\n if (Array.isArray(input)) {\n input.forEach((item: WordDefinition): void => this.parseObject(letters, styleClass, item));\n } else {\n this.parseObject(letters, styleClass, input);\n }\n }\n }\n\n private parseTimeDefinition(letters: Letter[][], styleClass: string, definition: TimeDefinition): void {\n if (typeof definition !== 'undefined' && definition !== null) {\n Object.keys(definition).forEach((listString: string): void => {\n const timeValues: string[] = listString.split(',');\n const highlightLetters: WordDefinition | WordDefinition[] = definition[listString];\n timeValues.forEach((timeValue: string): void => this.parseArrayOrObject(letters, styleClass + timeValue, highlightLetters));\n });\n }\n }\n}\n\n/**\n * Hilfsklasse zum Rendern der Buchstaben der Uhr.\n * @param layout Layout-Objekt, das gerendert werden soll.\n * @param renderarea Das jQuery-gewrappte HTML-Element, auf dem gerendert werden soll.\n */\nexport class LayoutRenderer {\n public constructor(private readonly layout: Layout, private readonly renderarea: JQuery) {\n }\n\n public render(beforeshow?: () => void): void {\n if (this.layout.parsed === undefined) {\n if (this.layout.version === 2) {\n const delegate: LayoutRendererV2Delegate = new LayoutRendererV2Delegate(this.layout);\n const parsedLayout: Letter[][] = delegate.parse();\n Object.defineProperty(this.layout, 'parsed', {\n value: parsedLayout,\n writable: false,\n configurable: false\n });\n } else {\n console.warn(`Unknown layout version: '${this.layout.version}', expecting '2'`);\n return;\n }\n }\n const letters: Letter[][] = this.layout.parsed;\n this.renderarea.fadeOut('fast', (): void => {\n this.renderarea.empty();\n letters.forEach((line, index, array): void => {\n line.forEach((letter): JQuery => this.renderarea.append(letter.toString()));\n if (index < array.length - 1) {\n this.renderarea.append('
');\n }\n });\n if (beforeshow) {\n beforeshow();\n }\n this.renderarea.fadeIn('fast');\n });\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {CookieHandler} from './cookie-handler';\nimport {Globals} from './domain/globals';\nimport {Layout} from './domain/layout';\nimport {Options} from './widget/options';\nimport {Theme} from './domain/theme';\nimport {Uhr} from './uhr';\n\ndeclare var $: JQueryStatic;\n\nexport class UhrRenderer {\n private cookieHandler: CookieHandler;\n\n public constructor(\n private readonly uhr: Uhr,\n private readonly $element: JQuery,\n private readonly options: Options,\n private readonly id: string\n ) {\n this.cookieHandler = new CookieHandler(id, options.cookiePath);\n }\n\n public render(): void {\n this.setupHTML();\n this.wireFunctionality();\n }\n\n public setWidth(width: string): void {\n this.$element.css('width', width);\n const realWidth: number = this.$element.width();\n this.$element.width(realWidth);\n this.$element.height(realWidth);\n this.$element.css('font-size', (realWidth / 40) + 'px');\n }\n\n private setupHTML(): void {\n // Base clock area\n this.$element.addClass('uhr')\n .empty()\n .append('')\n .append('')\n .append('')\n .append('')\n .append('
')\n .append('
');\n\n this.setWidth(this.options.width);\n\n if (this.options.controls) {\n const controlpanel = $(`
`);\n const content = $('
');\n controlpanel.append(content);\n // on/off switch\n const toggleSwitch = $(`
`);\n toggleSwitch.append(``);\n toggleSwitch.append(``);\n content.append(toggleSwitch);\n\n // time mode switch\n const modeSwitch = $(`
`);\n modeSwitch.append(``);\n modeSwitch.append(``);\n content.append(modeSwitch);\n // language chooser\n if (Globals.hasMultipleLayouts()) {\n const languageChooser = $(``);\n Globals.getLayouts().forEach((layout: Layout): void => {\n languageChooser.append(``);\n });\n content.append(languageChooser);\n }\n\n // theme chooser\n if (Globals.hasMultipleThemes()) {\n const themeChooser = $(``);\n Globals.getThemes().forEach((theme: Theme): void => {\n themeChooser.append(``);\n });\n content.append(themeChooser);\n }\n const closebutton: JQuery = $(``);\n closebutton.on({click: (): JQuery => $(`#uhr-controlpanel${this.id}`).hide('fast')});\n content.append(closebutton);\n this.$element.after(controlpanel);\n controlpanel.hide();\n const configlink: JQuery = $(``);\n configlink.on({click: (): void => this.toggleConfigScreen()});\n this.$element.after(configlink);\n }\n }\n\n private wireFunctionality(): void {\n // on/off switch\n const toggleSwitch: JQuery = $(`#uhr-onoffswitch-checkbox${this.id}`);\n toggleSwitch.on({click: (): void => this.uhr.toggle()});\n let status = this.cookieHandler.getStatus();\n if (status === undefined || this.options.force) {\n status = this.options.status;\n }\n toggleSwitch.prop('checked', status === 'on');\n if (status === 'on') {\n this.uhr.start();\n } else {\n this.uhr.stop();\n }\n\n // time mode switch\n const modeSwitch: JQuery = $(`#uhr-modeswitch-checkbox${this.id}`);\n modeSwitch.on({\n click: (): void => {\n if (this.options.mode === 'seconds') {\n this.uhr.setMode('normal');\n } else {\n this.uhr.setMode('seconds');\n }\n }\n });\n\n let mode = this.cookieHandler.getMode();\n if (mode === undefined || this.options.force) {\n mode = this.options.mode;\n }\n modeSwitch.prop('checked', mode !== 'seconds');\n if (mode === 'seconds') {\n this.uhr.setMode('seconds');\n } else {\n this.uhr.setMode('normal');\n }\n\n // language chooser\n const languageChooser: JQuery = $(`#uhr-languagechooser${this.id}`);\n languageChooser.on({\n change: (): void => {\n const languageKey = $(`#uhr-languagechooser${this.id}`).val() as string;\n this.uhr.setLayout(languageKey);\n }\n });\n let selectedLayout = this.cookieHandler.getLayout();\n if (selectedLayout === undefined || this.options.force) {\n selectedLayout = this.options.language;\n }\n let found = Globals.getLayouts().some((item: Layout): boolean => selectedLayout === item.code);\n if (!found) {\n let fallbackLanguage;\n if (Globals.hasLayouts()) {\n fallbackLanguage = Globals.getFirstLayout().code;\n } else {\n fallbackLanguage = '';\n }\n console.warn(`Language '${selectedLayout}' not found! Using fallback '${fallbackLanguage}'.`);\n selectedLayout = fallbackLanguage;\n }\n languageChooser.val(selectedLayout);\n this.options.language = '';\n this.uhr.setLayout(selectedLayout);\n\n // theme chooser\n const themeChooser: JQuery = $(`#uhr-themechooser${this.id}`);\n themeChooser.on({\n change: (): void => {\n const themeKey = $(`#uhr-themechooser${this.id}`).val() as string;\n this.uhr.setTheme(themeKey);\n }\n });\n let selectedTheme = this.cookieHandler.getTheme();\n if (selectedTheme === undefined || this.options.force) {\n selectedTheme = this.options.theme;\n }\n found = Globals.getThemes().some((item: Theme): boolean => selectedTheme === item.styleClass);\n if (!found) {\n const fallbackTheme = Globals.getFirstTheme().styleClass;\n console.warn(`Theme '${selectedTheme}' not found! Using fallback '${fallbackTheme}'.`);\n selectedTheme = fallbackTheme;\n }\n themeChooser.val(selectedTheme);\n this.options.theme = '';\n this.uhr.setTheme(selectedTheme);\n if (this.options.autoresize) {\n $(window).on({\n resize: (): void => {\n const $parent: JQuery = this.$element.parent();\n const $window: JQuery = $(window);\n const parentWidth: number = $parent.width();\n const parentHeight: number = $parent.height();\n const windowWidth: number = $window.width();\n const windowHeight: number = $window.height();\n const size: string = `${Math.min(parentWidth, parentHeight, windowWidth, windowHeight)}px`;\n this.setWidth(size);\n }\n });\n }\n }\n\n private toggleConfigScreen(): void {\n $(`#uhr-controlpanel${this.id}`).toggle('fast');\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\n/*eslint no-undef: \"warn\"*/\nimport WidgetCommonProperties = JQueryUI.WidgetCommonProperties;\nimport {EMPTY_LAYOUT, Layout} from './domain/layout';\nimport {CookieHandler} from './cookie-handler';\nimport {Globals} from './domain/globals';\nimport {LayoutRenderer} from './layout-renderer';\nimport {UhrRenderer} from './uhr-renderer';\nimport {WidgetPrototype} from './widget/widget-prototype';\n\ndeclare var $: JQueryStatic;\n\nexport class Uhr {\n\n private timer: number = null;\n private currentMinute: number = null;\n private renderer: UhrRenderer;\n private cookieHandler: CookieHandler;\n\n public constructor(private readonly widgetInstance: WidgetPrototype & WidgetCommonProperties) {\n const userTime = this.widgetInstance.options.time;\n if (this.widgetInstance.options.time === undefined) {\n this.widgetInstance.options.time = new Date();\n }\n this.cookieHandler = new CookieHandler(this.widgetInstance.uuid, this.widgetInstance.options.cookiePath);\n this.parseHash();\n this.renderer = new UhrRenderer(this, this.widgetInstance.element, this.widgetInstance.options, this.widgetInstance.uuid);\n this.renderer.render();\n if (userTime !== undefined) {\n this.setTime(userTime);\n }\n }\n\n public destroy(): void {\n if (this.timer) {\n window.clearInterval(this.timer);\n this.timer = null;\n }\n this.widgetInstance.element\n .removeAttr('style')\n .removeAttr('class')\n .empty();\n $(`#uhr-configlink${this.widgetInstance.uuid}`).remove();\n $(`#uhr-controlpanel${this.widgetInstance.uuid}`).remove();\n }\n\n public start(): void {\n if (!this.isOn()) {\n this.timer = window.setInterval((): void => {\n this.widgetInstance.options.time = new Date();\n this.update();\n }, 1000);\n this.update();\n this.cookieHandler.setStatus('on');\n }\n }\n\n public stop(): void {\n if (this.isOn()) {\n window.clearInterval(this.timer);\n this.timer = null;\n this.update();\n this.cookieHandler.setStatus('off');\n }\n }\n\n public toggle(): void {\n if (this.isOn()) {\n this.stop();\n } else {\n this.start();\n }\n }\n\n public setLayout(key: string): void {\n if (key !== this.widgetInstance.options.language) {\n this.widgetInstance.options.language = key;\n const renderer = new LayoutRenderer(this.getCurrentLayout(), this.widgetInstance.element.find('.letterarea'));\n renderer.render((): void => {\n this.currentMinute = -1;\n this.update();\n });\n this.cookieHandler.setLayout(key);\n this.update();\n }\n }\n\n public setTheme(styleClass: string): void {\n if (styleClass !== this.widgetInstance.options.theme) {\n this.widgetInstance.element.removeClass(this.widgetInstance.options.theme).addClass(styleClass);\n $(`#uhr-onoffswitch${this.widgetInstance.uuid}`).removeClass(this.widgetInstance.options.theme).addClass(styleClass);\n this.widgetInstance.options.theme = styleClass;\n this.cookieHandler.setTheme(styleClass);\n }\n }\n\n public setTime(time: Date): void {\n this.currentMinute = null;\n if (time === null) {\n this.widgetInstance.options.time = new Date();\n } else {\n if (this.timer !== null) {\n window.clearInterval(this.timer);\n }\n this.widgetInstance.options.time = time;\n }\n this.update();\n }\n\n public setMode(mode: string): void {\n this.widgetInstance.options.mode = mode;\n this.currentMinute = null;\n this.update();\n this.cookieHandler.setMode(mode);\n }\n\n public setWidth(width: string): void {\n this.renderer.setWidth(width);\n }\n\n private isOn(): boolean {\n return this.timer !== null;\n }\n\n private update(): void {\n if (this.isOn()) {\n const time = this.widgetInstance.options.time;\n if (!this.getCurrentLayout().hasOwnProperty('seconds') && this.widgetInstance.options.mode !== 'seconds') {\n if (time.getMinutes() === this.currentMinute) {\n return;\n }\n this.currentMinute = time.getMinutes();\n }\n this.show(time);\n } else {\n this.clear();\n this.currentMinute = -1;\n }\n }\n\n private show(time: Date): void {\n const second = this.getSecond(time);\n const dotMinute = this.getDotMinute(time);\n const hour = this.getHour(time);\n const coarseMinute = this.getCoarseMinute(time);\n this.clear();\n if (this.widgetInstance.options.mode === 'seconds') {\n this.highlight(`second${second}`);\n } else {\n this.highlight('on');\n for (let i = 1; i <= dotMinute; i++) {\n this.highlight(`dot${i}`);\n }\n this.highlight(`minute${coarseMinute}`);\n this.highlight(`hour${hour}`);\n }\n }\n\n private clear(): void {\n this.widgetInstance.element.find('.item').removeClass('active');\n }\n\n private highlight(itemClass: string): void {\n this.widgetInstance.element.find(`.item.${itemClass}`).addClass('active');\n }\n\n private getSecond(time: Date): number {\n if (typeof this.getCurrentLayout().getSeconds === 'function') {\n return this.getCurrentLayout().getSeconds(time);\n }\n return time.getSeconds();\n }\n\n private getDotMinute(date: Date): number {\n if (typeof this.getCurrentLayout().getDotMinute === 'function') {\n return this.getCurrentLayout().getDotMinute(date);\n }\n return date.getMinutes() % 5;\n }\n\n private getCoarseMinute(date: Date): number {\n if (typeof this.getCurrentLayout().getCoarseMinute === 'function') {\n return this.getCurrentLayout().getCoarseMinute(date);\n }\n return date.getMinutes();\n }\n\n private getHour(date: Date): number {\n if (typeof this.getCurrentLayout().getHour === 'function') {\n return this.getCurrentLayout().getHour(date);\n }\n const hour = date.getHours();\n if (date.getMinutes() >= 25) {\n return (hour + 1) % 24;\n }\n return hour;\n }\n\n private parseHash(): void {\n let hash: string = window.location.hash;\n if (hash !== undefined && hash.charAt(0) === '#') {\n hash = hash.substring(1);\n hash = decodeURIComponent(hash);\n const params: string[] = hash.split('&');\n params.forEach((element: string): void => {\n const pair: string[] = element.split('=');\n const key = pair[0];\n const value = pair[1];\n switch (key) {\n case 'l':\n case 'language':\n this.widgetInstance.options.language = value;\n this.widgetInstance.options.force = true;\n break;\n case 't':\n case 'theme':\n this.widgetInstance.options.theme = value;\n this.widgetInstance.options.force = true;\n break;\n case 'm':\n case 'mode':\n this.widgetInstance.options.mode = value;\n this.widgetInstance.options.force = true;\n break;\n case 's':\n case 'status':\n this.widgetInstance.options.status = value;\n this.widgetInstance.options.force = true;\n break;\n }\n });\n }\n }\n\n private getCurrentLayout(): Layout {\n const matchingLanguages: Layout[] = Globals.getLayouts().filter((element: Layout): boolean => element.code === this.widgetInstance.options.language, this);\n if (matchingLanguages.length > 0) {\n return matchingLanguages[0];\n }\n // fallback: return empty object\n return EMPTY_LAYOUT;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport * as $ from 'jquery';\nimport {Globals} from './domain/globals';\n\nexport function autodetectThemes(): void {\n $('link[rel=stylesheet]').each((index, item): void => {\n const styleSheet = $(item);\n const styleClass: string = styleSheet.attr('data-class');\n if (styleClass !== undefined) {\n let name: string = styleSheet.attr('data-name');\n if (name === undefined) {\n name = styleClass;\n }\n Globals.registerTheme(name, styleClass);\n }\n });\n\n // fall-back if no theme was included\n if (!Globals.hasThemes()) {\n Globals.registerTheme('', '');\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Globals} from './domain/globals';\nimport {Layout} from './domain/layout';\nimport {Uhr} from './uhr';\nimport {WidgetPrototype} from './widget/widget-prototype';\nimport {autodetectThemes} from './theme-autodetector';\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n const widget: JQueryUI.Widget;\n}\n\n// First things first: discover included themes and register them\nautodetectThemes();\n\nconst widgetPrototype: WidgetPrototype = {\n options: {\n width: '100%',\n status: 'on',\n language: 'de_CH',\n theme: Globals.getFirstTheme().styleClass,\n force: false,\n controls: true,\n cookiePath: undefined,\n autoresize: true,\n mode: 'normal'\n },\n start: function (): void {\n this._fritteliUhrInstance.start();\n },\n stop: function (): void {\n this._fritteliUhrInstance.stop();\n },\n toggle: function (): void {\n this._fritteliUhrInstance.toggle();\n },\n language: function (key: string): void {\n this._fritteliUhrInstance.setLayout(key);\n },\n theme: function (styleClass: string): void {\n this._fritteliUhrInstance.setTheme(styleClass);\n },\n time: function (time: Date): void {\n this._fritteliUhrInstance.setTime(time);\n },\n mode: function (mode: string): void {\n this._fritteliUhrInstance.setMode(mode);\n },\n width: function (width: string): void {\n this._fritteliUhrInstance.setWidth(width);\n },\n // constructor method\n _create: function (): void {\n this._fritteliUhrInstance = new Uhr(this);\n },\n // destructor method\n _destroy: function (): void {\n this._fritteliUhrInstance.destroy();\n },\n _fritteliUhrInstance: null\n};\n$.widget('fritteli.uhr', widgetPrototype);\n\n$.fritteli.uhr.register = Globals.registerLayout;\n"],"sourceRoot":""} \ No newline at end of file diff --git a/header.ts b/header.ts new file mode 100644 index 0000000..dd9e597 --- /dev/null +++ b/header.ts @@ -0,0 +1,14 @@ +/* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ diff --git a/package-lock.json b/package-lock.json index bb57b81..8573d84 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1970,6 +1970,12 @@ "rimraf": "^2.6.1" } }, + "eslint-plugin-header": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-header/-/eslint-plugin-header-3.0.0.tgz", + "integrity": "sha512-OIu2ciVW8jK4Ove4JHm1I7X0C98PZuLCyCsoUhAm2HpyGS+zr34qLM6iV06unnDvssvvEh5BkOfaLRF+N7cGoQ==", + "dev": true + }, "eslint-scope": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", diff --git a/package.json b/package.json index e4d59a8..707109c 100644 --- a/package.json +++ b/package.json @@ -44,6 +44,7 @@ "css-loader": "2.1.1", "eslint": "5.16.0", "eslint-loader": "2.1.2", + "eslint-plugin-header": "^3.0.0", "extract-loader": "3.1.0", "file-loader": "3.0.1", "mini-css-extract-plugin": "0.6.0", diff --git a/src/bundle.ts b/src/bundle.ts index 6b81707..c5aa678 100644 --- a/src/bundle.ts +++ b/src/bundle.ts @@ -13,6 +13,9 @@ along with this program. If not, see . */ + +// We just need to reference all required files at least once, so that the tree-shaker won't remove them from +// the bundle. import * as uhr from './index'; import {LayoutDe} from './layout/layout-de'; import {LayoutDeCh} from './layout/layout-de_ch'; @@ -25,8 +28,8 @@ import {LayoutIt} from './layout/layout-it'; import {LayoutNl} from './layout/layout-nl'; import {LayoutPt} from './layout/layout-pt'; -// We just need to reference all required files at least once, so that the tree-shaker won't remove them from -// the bundle. +/*eslint @typescript-eslint/no-unused-vars: "warn"*/ + let a = uhr; a = LayoutDeCh; a = LayoutDeChGenau; diff --git a/src/uhr.ts b/src/uhr.ts index 43ab4af..5ff9c46 100644 --- a/src/uhr.ts +++ b/src/uhr.ts @@ -13,6 +13,7 @@ along with this program. If not, see . */ +/*eslint no-undef: "warn"*/ import WidgetCommonProperties = JQueryUI.WidgetCommonProperties; import {EMPTY_LAYOUT, Layout} from './domain/layout'; import {CookieHandler} from './cookie-handler'; @@ -24,7 +25,6 @@ import {WidgetPrototype} from './widget/widget-prototype'; declare var $: JQueryStatic; export class Uhr { - private timer: number = null; private currentMinute: number = null; private renderer: UhrRenderer; From 214ff6227d5ea48d4fef355846d08fc52523e8a3 Mon Sep 17 00:00:00 2001 From: Manuel Friedli Date: Fri, 10 May 2019 14:43:38 +0200 Subject: [PATCH 27/44] Try and allow auditing to fail. Will this be visible on the build server? --- .drone.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.drone.yml b/.drone.yml index c06b24f..bcba3d7 100644 --- a/.drone.yml +++ b/.drone.yml @@ -6,6 +6,10 @@ steps: image: node:12 commands: - npm install + - name: audit + image: node:12 + errignore: true + commands: - npm audit - name: build image: node:12 From cb92b01fdcb3cf8af7d9e7e2f0e6f437ccbc73ec Mon Sep 17 00:00:00 2001 From: Manuel Friedli Date: Fri, 10 May 2019 14:48:37 +0200 Subject: [PATCH 28/44] Rename parameter to err_ignore --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index bcba3d7..2117e06 100644 --- a/.drone.yml +++ b/.drone.yml @@ -8,7 +8,7 @@ steps: - npm install - name: audit image: node:12 - errignore: true + err_ignore: true commands: - npm audit - name: build From 32a25e27b139b0441075cc43d5c7290fbef7ed7c Mon Sep 17 00:00:00 2001 From: Manuel Friedli Date: Fri, 10 May 2019 15:10:05 +0200 Subject: [PATCH 29/44] This seems to be the option I was looking for. --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index 2117e06..8979770 100644 --- a/.drone.yml +++ b/.drone.yml @@ -8,7 +8,7 @@ steps: - npm install - name: audit image: node:12 - err_ignore: true + failure: ignore commands: - npm audit - name: build From 0957f0f1a4b87c7fe4b06381e35315fb8b8a1903 Mon Sep 17 00:00:00 2001 From: Manuel Friedli Date: Fri, 10 May 2019 15:23:56 +0200 Subject: [PATCH 30/44] Try releasing. --- .drone.yml | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/.drone.yml b/.drone.yml index 8979770..3a39d8c 100644 --- a/.drone.yml +++ b/.drone.yml @@ -15,3 +15,49 @@ steps: image: node:12 commands: - npm run build:prod + - name: pre-release + image: plugins/gitea-release + settings: + api_key: + from_secret: gitea_token + base_url: https://gittr.ch/ + checksum: + - md5 + - sha512 + draft: true + files: dist/* + note: README.md + title: VERSION + when: + branch: develop + - name: test-release + image: plugins/gitea-release + settings: + api_key: + from_secret: gitea_token + base_url: https://gittr.ch/ + checksum: + - md5 + - sha512 + draft: true + files: dist/* + note: README.md + prerelease: true + title: VERSION + when: + branch: feature/* + - name: release + image: plugins/gitea-release + settings: + api_key: + from_secret: gitea_token + base_url: https://gittr.ch/ + checksum: + - md5 + - sha512 + files: dist/* + file_exists: fail + note: README.md + title: VERSION + when: + event: tag From a807440e4dfb811ccb782de6b66bf6b413df6876 Mon Sep 17 00:00:00 2001 From: Manuel Friedli Date: Fri, 10 May 2019 23:29:30 +0200 Subject: [PATCH 31/44] So, the gitea-release-plugin only works for tags. Oh well ... --- .drone.yml | 67 +++++++++++++++++----------------------------------- package.json | 5 +++- 2 files changed, 26 insertions(+), 46 deletions(-) diff --git a/.drone.yml b/.drone.yml index 3a39d8c..bd92dc4 100644 --- a/.drone.yml +++ b/.drone.yml @@ -15,49 +15,26 @@ steps: image: node:12 commands: - npm run build:prod - - name: pre-release - image: plugins/gitea-release - settings: - api_key: - from_secret: gitea_token - base_url: https://gittr.ch/ - checksum: - - md5 - - sha512 - draft: true - files: dist/* - note: README.md - title: VERSION + - name: update version + image: node:12 + commands: + - npm version prerelease when: - branch: develop - - name: test-release - image: plugins/gitea-release - settings: - api_key: - from_secret: gitea_token - base_url: https://gittr.ch/ - checksum: - - md5 - - sha512 - draft: true - files: dist/* - note: README.md - prerelease: true - title: VERSION - when: - branch: feature/* - - name: release - image: plugins/gitea-release - settings: - api_key: - from_secret: gitea_token - base_url: https://gittr.ch/ - checksum: - - md5 - - sha512 - files: dist/* - file_exists: fail - note: README.md - title: VERSION - when: - event: tag + branch: + - develop + - feature/* +# - name: release +# image: plugins/gitea-release +# settings: +# api_key: +# from_secret: gitea_token +# base_url: https://gittr.ch/ +# checksum: +# - md5 +# - sha512 +# files: dist/* +# file_exists: fail +# note: README.md +# title: VERSION +# when: +# event: tag diff --git a/package.json b/package.json index 707109c..ae2537f 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,10 @@ "start": "webpack-dev-server --open --config webpack.dev.js", "lint": "eslint --ext .ts src/", "build": "webpack --mode development --env development --config webpack.dev.js", - "build:prod": "webpack -p --mode production --env production --config webpack.prod.js" + "build:prod": "webpack -p --mode production --env production --config webpack.prod.js", + "preversion": "echo npm test", + "version": "npm run build:prod && echo $npm_package_version > VERSION && git add -A .", + "postversion": "git push && git push --tags" }, "dependencies": { "jquery": "3.4.1", From 46a0c05d6f4e7f23bd062040564213453fed4675 Mon Sep 17 00:00:00 2001 From: Manuel Friedli Date: Fri, 10 May 2019 23:49:22 +0200 Subject: [PATCH 32/44] Try and fix the (pre)-release script. --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index ae2537f..d2ec0af 100644 --- a/package.json +++ b/package.json @@ -27,8 +27,8 @@ "lint": "eslint --ext .ts src/", "build": "webpack --mode development --env development --config webpack.dev.js", "build:prod": "webpack -p --mode production --env production --config webpack.prod.js", - "preversion": "echo npm test", - "version": "npm run build:prod && echo $npm_package_version > VERSION && git add -A .", + "preversion": "git add -A . && echo ACTIVATE NPM TEST PLEASE", + "version": "echo $npm_package_version > VERSION && git add -A .", "postversion": "git push && git push --tags" }, "dependencies": { From b601131dfba932ad789a55ff25b6332595af04c9 Mon Sep 17 00:00:00 2001 From: Manuel Friedli Date: Sat, 11 May 2019 00:01:22 +0200 Subject: [PATCH 33/44] Add files after build. --- dist/lib/uhr.bundle.js.map | 2 +- dist/lib/uhr.js.map | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dist/lib/uhr.bundle.js.map b/dist/lib/uhr.bundle.js.map index 7606952..2836d5a 100644 --- a/dist/lib/uhr.bundle.js.map +++ b/dist/lib/uhr.bundle.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///external \"Cookies\"","webpack:///external \"jQuery\"","webpack:///./src/layout/layout-de.ts","webpack:///./src/layout/layout-de_ch.ts","webpack:///./src/layout/layout-de_ch_genau.ts","webpack:///./src/layout/layout-dk.ts","webpack:///./src/layout/layout-en.ts","webpack:///./src/layout/layout-es.ts","webpack:///./src/layout/layout-fr.ts","webpack:///./src/layout/layout-it.ts","webpack:///./src/layout/layout-nl.ts","webpack:///./src/layout/layout-pt.ts","webpack:///./src/domain/globals.ts","webpack:///./src/domain/layout.ts","webpack:///./src/cookie-handler.ts","webpack:///./src/domain/letter.ts","webpack:///./src/layout-renderer.ts","webpack:///./src/uhr-renderer.ts","webpack:///./src/uhr.ts","webpack:///./src/theme-autodetector.ts","webpack:///./src/index.ts","webpack:///./src/bundle.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","Cookies","jQuery","__webpack_exports__","LayoutDe","nach","4","vor","halb","5","fuenf","1","zehn","2","zwanzig","code","hours","0,12","9","1,13","6","2,14","3,15","7","4,16","5,17","6,18","8","7,19","8,20","9,21","10","10,22","11,23","letters","minutes","0,1,2,3,4","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","3","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","prettyName","version","$","fritteli","uhr","register","LayoutDeCh","ab","haubi","fuef","zae","viertu","zwaenzg","LayoutDeChGenau","0","LayoutDk","minutter","over","fem","ti","kvart","tyve","halv","LayoutEn","to","past","five","ten","aQuarter","twenty","twentyfive","getHour","time","hour","getHours","getMinutes","LayoutEs","sonLas","y","menos","cinco","diez","cuarto","veinte","veinticinco","LayoutFr","et","moins","heures","cinq","dix","quart","vingt","vingtcinq","12","LayoutIt","sonoLe","e","meno","cinque","dieci","unQuarto","venti","venticinque","LayoutNl","over1","voor1","half","vijf","tien","kwart","LayoutPt","sao","e1","e2","dez","umQuarto","vinte","Globals","registerTheme","styleClass","themes","some","console","warn","push","hasThemes","length","hasMultipleThemes","getFirstTheme","getTheme","index","getThemes","registerLayout","layout","layouts","element","error","sort","a","b","localeCompare","hasLayouts","hasMultipleLayouts","getFirstLayout","getLayouts","EMPTY_LAYOUT","cookie_handler_CookieHandler","CookieHandler","widgetId","cookiePath","this","getLayout","oldCookie","getCookie","removeCookie","setLayout","setCookie","getMode","setMode","getStatus","setStatus","status","setTheme","theme","cookieName","external_Cookies_","cookieValue","options","expires","path","Letter","style","addStyle","toString","layout_renderer_LayoutRendererV2Delegate","LayoutRendererV2Delegate","parse","forEach","lineString","line","parseArrayOrObject","seconds","parseTimeDefinition","parseObject","keys","map","Number","x","input","_this","Array","isArray","item","definition","listString","timeValues","split","highlightLetters","timeValue","vorne0","hinten0","vorne1","hinten1","vorne2","hinten2","vorne3","hinten3","vorne4","hinten4","vorne5","hinten5","hinten6","hinten7","hinten8","hinten9","11","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59","LayoutRenderer","renderarea","render","beforeshow","undefined","parsed","parsedLayout","writable","configurable","fadeOut","empty","array","letter","append","fadeIn","uhr_renderer_UhrRenderer","UhrRenderer","$element","id","cookieHandler","setupHTML","wireFunctionality","setWidth","width","css","realWidth","height","addClass","controls","controlpanel","content","toggleSwitch","modeSwitch","languageChooser_1","themeChooser_1","closebutton","on","click","hide","after","configlink","toggleConfigScreen","toggle","force","prop","start","stop","languageChooser","change","languageKey","val","selectedLayout","language","found","fallbackLanguage","themeChooser","themeKey","selectedTheme","fallbackTheme","autoresize","window","resize","$parent","parent","$window","parentWidth","parentHeight","windowWidth","windowHeight","size","Math","min","uhr_Uhr","Uhr","widgetInstance","timer","currentMinute","userTime","Date","uuid","parseHash","renderer","setTime","destroy","clearInterval","removeAttr","remove","isOn","setInterval","update","getCurrentLayout","find","removeClass","show","clear","second","getSecond","dotMinute","getDotMinute","coarseMinute","getCoarseMinute","highlight","itemClass","getSeconds","date","hash","location","charAt","substring","decodeURIComponent","pair","matchingLanguages","filter","external_jQuery_","each","styleSheet","attr","name_1","widgetPrototype","_fritteliUhrInstance","_create","_destroy","widget","_layout_layout_de__WEBPACK_IMPORTED_MODULE_1__","_layout_layout_de_ch__WEBPACK_IMPORTED_MODULE_2__","_layout_layout_de_ch_genau__WEBPACK_IMPORTED_MODULE_3__","_layout_layout_dk__WEBPACK_IMPORTED_MODULE_4__","_layout_layout_en__WEBPACK_IMPORTED_MODULE_5__","_layout_layout_es__WEBPACK_IMPORTED_MODULE_6__","_layout_layout_fr__WEBPACK_IMPORTED_MODULE_7__","_layout_layout_it__WEBPACK_IMPORTED_MODULE_8__","_layout_layout_nl__WEBPACK_IMPORTED_MODULE_9__","_layout_layout_pt__WEBPACK_IMPORTED_MODULE_10__"],"mappings":"aACA,IAAAA,EAAA,GAGA,SAAAC,EAAAC,GAGA,GAAAF,EAAAE,GACA,OAAAF,EAAAE,GAAAC,QAGA,IAAAC,EAAAJ,EAAAE,GAAA,CACAG,EAAAH,EACAI,GAAA,EACAH,QAAA,IAUA,OANAI,EAAAL,GAAAM,KAAAJ,EAAAD,QAAAC,IAAAD,QAAAF,GAGAG,EAAAE,GAAA,EAGAF,EAAAD,QAKAF,EAAAQ,EAAAF,EAGAN,EAAAS,EAAAV,EAGAC,EAAAU,EAAA,SAAAR,EAAAS,EAAAC,GACAZ,EAAAa,EAAAX,EAAAS,IACAG,OAAAC,eAAAb,EAAAS,EAAA,CAA0CK,YAAA,EAAAC,IAAAL,KAK1CZ,EAAAkB,EAAA,SAAAhB,GACA,oBAAAiB,eAAAC,aACAN,OAAAC,eAAAb,EAAAiB,OAAAC,YAAA,CAAwDC,MAAA,WAExDP,OAAAC,eAAAb,EAAA,cAAiDmB,OAAA,KAQjDrB,EAAAsB,EAAA,SAAAD,EAAAE,GAEA,GADA,EAAAA,IAAAF,EAAArB,EAAAqB,IACA,EAAAE,EAAA,OAAAF,EACA,KAAAE,GAAA,iBAAAF,QAAAG,WAAA,OAAAH,EACA,IAAAI,EAAAX,OAAAY,OAAA,MAGA,GAFA1B,EAAAkB,EAAAO,GACAX,OAAAC,eAAAU,EAAA,WAAyCT,YAAA,EAAAK,UACzC,EAAAE,GAAA,iBAAAF,EAAA,QAAAM,KAAAN,EAAArB,EAAAU,EAAAe,EAAAE,EAAA,SAAAA,GAAgH,OAAAN,EAAAM,IAAqBC,KAAA,KAAAD,IACrI,OAAAF,GAIAzB,EAAA6B,EAAA,SAAA1B,GACA,IAAAS,EAAAT,KAAAqB,WACA,WAA2B,OAAArB,EAAA,SAC3B,WAAiC,OAAAA,GAEjC,OADAH,EAAAU,EAAAE,EAAA,IAAAA,GACAA,GAIAZ,EAAAa,EAAA,SAAAiB,EAAAC,GAAsD,OAAAjB,OAAAkB,UAAAC,eAAA1B,KAAAuB,EAAAC,IAGtD/B,EAAAkC,EAAA,GAIAlC,IAAAmC,EAAA,oBClFAhC,EAAAD,QAAAkC,uBCAAjC,EAAAD,QAAAmC,qCCAArC,EAAAkB,EAAAoB,GAAAtC,EAAAU,EAAA4B,EAAA,6BAAAC,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,EAAmB,CAC5BW,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,UArD0B,CAACtC,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,IAsD3CuC,WAAY,UACZC,QAAS,GAgBbC,EAAEC,SAASC,IAAIC,SAASnD,iCCxFxBvC,EAAAkB,EAAAoB,GAAAtC,EAAAU,EAAA4B,EAAA,+BAAAqD,IAiBA,IACMC,EAAqB,CAACnD,EAAG,CAAC,EAAG,IAC7BC,EAAsB,CAACiC,EAAG,CAAC,EAAG,GAAI,KAClCkB,EAAwB,CAACpD,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,IACzCqD,EAAuB,CAAChD,EAAG,CAAC,EAAG,GAAI,KACnCiD,EAAsB,CAAC/C,EAAG,CAAC,EAAG,GAAI,KAClCgD,EAAyB,CAAChD,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAC7CiD,EAA0B,CAACtB,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAEvCgB,EAAqB,CAC9BzC,KAAM,QACNC,MAAO,CACHC,OAAQ,CAACc,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAC7BZ,OAAQ,CAACV,EAAG,CAAC,EAAG,EAAG,IACnBY,OAAQ,CAACZ,EAAG,CAAC,EAAG,EAAG,EAAG,IACtBa,OAAQ,CAACb,EAAG,CAAC,EAAG,GAAI,KACpBe,OAAQ,CAACJ,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,IACzBK,OAAQ,CAACL,EAAG,CAAC,EAAG,EAAG,EAAG,IACtBM,OAAQ,CAACH,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAC5BK,OAAQ,CAACL,EAAG,CAAC,EAAG,EAAG,EAAG,GAAI,KAC1BM,OAAQ,CAACF,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,IACzBG,OAAQ,CAACH,EAAG,CAAC,EAAG,EAAG,EAAG,IACtBK,QAAS,CAACd,EAAG,CAAC,EAAG,EAAG,EAAG,IACvBe,QAAS,CAACf,EAAG,CAAC,EAAG,EAAG,GAAI,MAE5BgB,QAAS,CACL,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,eAEJC,QAAS,CACLE,YAAa,CAACsB,EAAMF,GACpBnB,iBAAkB,CAACsB,EAAKH,GACxBlB,iBAAkB,CAACsB,EAAQJ,GAC3BhB,iBAAkB,CAACqB,EAASL,GAC5Bf,iBAAkB,CAACiB,EAAMpD,EAAKmD,GAC9Bf,iBAAkBe,EAClBd,iBAAkB,CAACe,EAAMF,EAAIC,GAC7Bb,iBAAkB,CAACiB,EAASvD,GAC5BuC,iBAAkB,CAACe,EAAQtD,GAC3BwC,iBAAkB,CAACa,EAAKrD,GACxByC,iBAAkB,CAACW,EAAMpD,IAE7B0C,UAlD2B,CAACtC,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAmD/CuC,WAAY,aACZC,QAAS,GAgBbC,EAAEC,SAASC,IAAIC,SAASC,iCCrFxB3F,EAAAkB,EAAAoB,GAAAtC,EAAAU,EAAA4B,EAAA,oCAAA4D,IAiBA,IAEMN,EAAqB,CAACnD,EAAG,CAAC,EAAG,IAC7BC,EAAsB,CAACD,EAAG,CAAC,EAAG,EAAG,IACjCoD,EAAwB,CAACpD,EAAG,CAAC,EAAG,EAAG,EAAG,GAAI,KAC1CqD,EAAuB,CAAChD,EAAG,CAAC,EAAG,GAAI,KACnCiD,EAAsB,CAAC/C,EAAG,CAAC,EAAG,GAAI,KAClCgD,EAAyB,CAAChD,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAC7CiD,EAA0B,CAACtB,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAEvCuB,EAA0B,CACnChD,KAAM,cACNC,MAAO,CACHC,OAAQ,CAACc,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAC7BZ,OAAQ,CAACV,EAAG,CAAC,EAAG,EAAG,IACnBY,OAAQ,CAACZ,EAAG,CAAC,EAAG,EAAG,EAAG,IACtBa,OAAQ,CAACb,EAAG,CAAC,EAAG,GAAI,KACpBe,OAAQ,CAACJ,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,IACzBK,OAAQ,CAACL,EAAG,CAAC,EAAG,EAAG,EAAG,IACtBM,OAAQ,CAACH,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAC5BK,OAAQ,CAACL,EAAG,CAAC,EAAG,EAAG,EAAG,GAAI,KAC1BM,OAAQ,CAACF,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,IACzBG,OAAQ,CAACH,EAAG,CAAC,EAAG,EAAG,EAAG,IACtBK,QAAS,CAACd,EAAG,CAAC,EAAG,EAAG,EAAG,IACvBe,QAAS,CAACf,EAAG,CAAC,EAAG,EAAG,GAAI,MAE5BgB,QAAS,CACL,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,eAEJC,QAAS,CACL6B,EAtCsB,CAACxB,EAAG,CAAC,EAAG,EAAG,EAAG,GAAI,KAuCxCH,YAAa,CAACsB,EAAMF,GACpBnB,iBAAkB,CAACsB,EAAKH,GACxBlB,iBAAkB,CAACsB,EAAQJ,GAC3BhB,iBAAkB,CAACqB,EAASL,GAC5Bf,iBAAkB,CAACiB,EAAMpD,EAAKmD,GAC9Bf,iBAAkBe,EAClBd,iBAAkB,CAACe,EAAMF,EAAIC,GAC7Bb,iBAAkB,CAACiB,EAASvD,GAC5BuC,iBAAkB,CAACe,EAAQtD,GAC3BwC,iBAAkB,CAACa,EAAKrD,GACxByC,iBAAkB,CAACW,EAAMpD,IAE7B0C,UApD2B,CAACtC,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAqD/CuC,WAAY,qBACZC,QAAS,GAgBbC,EAAEC,SAASC,IAAIC,SAASQ,iCCvFxBlG,EAAAkB,EAAAoB,GAAAtC,EAAAU,EAAA4B,EAAA,6BAAA8D,IAiBA,IACMC,EAA2B,CAAC5D,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,KACtDrC,EAAoB,CAACwC,EAAG,CAAC,IACzB0D,EAAuB,CAAC1D,EAAG,CAAC,EAAG,EAAG,EAAG,IACrC2D,EAAsB,CAACvD,EAAG,CAAC,EAAG,EAAG,IACjCwD,EAAqB,CAAC/D,EAAG,CAAC,EAAG,IAC7BgE,EAAwB,CAAC9B,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,IACzC+B,EAAuB,CAAC1D,EAAG,CAAC,EAAG,EAAG,EAAG,IACrC2D,EAAuB,CAACpD,EAAG,CAAC,EAAG,EAAG,GAAI,KAE/B6C,EAAmB,CAC5BlD,KAAM,KACNC,MAAO,CACHC,OAAQ,CAACc,GAAI,CAAC,EAAG,EAAG,GAAI,KACxBZ,OAAQ,CAACI,EAAG,CAAC,EAAG,IAChBF,OAAQ,CAACE,EAAG,CAAC,EAAG,IAChBD,OAAQ,CAACC,EAAG,CAAC,EAAG,EAAG,IACnBC,OAAQ,CAACD,EAAG,CAAC,EAAG,EAAG,GAAI,KACvBE,OAAQ,CAACE,EAAG,CAAC,EAAG,EAAG,IACnBD,OAAQ,CAACC,EAAG,CAAC,EAAG,EAAG,EAAG,IACtBC,OAAQ,CAACD,EAAG,CAAC,EAAG,GAAI,KACpBE,OAAQ,CAACX,EAAG,CAAC,EAAG,EAAG,EAAG,IACtBY,OAAQ,CAACZ,EAAG,CAAC,EAAG,IAChBc,QAAS,CAACd,EAAG,CAAC,GAAI,KAClBe,QAAS,CAACF,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,KAElCG,QAAS,CACL,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,eAEJC,QAAS,CACLE,YAAa,CAAC+B,EAAKF,EAAUC,GAC7B7B,iBAAkB,CAAC+B,EAAIH,EAAUC,GACjC5B,iBAAkB,CAAC+B,EAAOH,GAC1B1B,iBAAkB,CAAC8B,EAAML,EAAUC,GACnCzB,iBAAkB,CAAC0B,EAAKF,EAAUjG,EAAGuG,GACrC7B,iBAAkB,CAAC6B,GACnB5B,iBAAkB,CAACwB,EAAKF,EAAUC,EAAMK,GACxC3B,iBAAkB,CAAC0B,EAAML,EAAUjG,GACnC6E,iBAAkB,CAACwB,EAAOrG,GAC1B8E,iBAAkB,CAACsB,EAAIH,EAAUjG,GACjC+E,iBAAkB,CAACoB,EAAKF,EAAUjG,IAEtCgF,UAnD8B,CAACtC,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,KAoD3DuC,WAAY,QACZC,QAAS,GAgBbC,EAAEC,SAASC,IAAIC,SAASU,iCCtFxBpG,EAAAkB,EAAAoB,GAAAtC,EAAAU,EAAA4B,EAAA,6BAAAsE,IAiBA,IAEMC,EAAqB,CAACpE,EAAG,CAAC,GAAI,KAC9BqE,EAAuB,CAAClE,EAAG,CAAC,EAAG,EAAG,EAAG,IAErCmE,EAAuB,CAACpC,EAAG,CAAC,EAAG,EAAG,EAAG,KACrCqC,EAAsB,CAACvE,EAAG,CAAC,EAAG,EAAG,IACjCwE,EAA2B,CAACjE,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IACrDkE,EAAyB,CAACvC,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAC7CwC,EAA6B,CAACxC,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,KAEtDiC,EAAmB,CAC5B1D,KAAM,KACNkE,QAAS,SAACC,GACN,IAAMC,EAAOD,EAAKE,WAClB,OAAIF,EAAKG,cAAgB,IACbF,EAAO,GAAK,GAEjBA,GAGXnE,MAAO,CACHC,OAAQ,CAACC,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,KAC7BC,OAAQ,CAACC,EAAG,CAAC,EAAG,EAAG,IACnBC,OAAQ,CAACE,EAAG,CAAC,EAAG,GAAI,KACpBD,OAAQ,CAACF,EAAG,CAAC,EAAG,EAAG,EAAG,GAAI,KAC1BI,OAAQ,CAACD,EAAG,CAAC,EAAG,EAAG,EAAG,IACtBE,OAAQ,CAACF,EAAG,CAAC,EAAG,EAAG,EAAG,IACtBG,OAAQ,CAACN,EAAG,CAAC,EAAG,EAAG,IACnBQ,OAAQ,CAACV,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,IACzBW,OAAQ,CAACF,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,IACzBG,OAAQ,CAACrB,EAAG,CAAC,EAAG,EAAG,GAAI,KACvBuB,QAAS,CAACD,GAAI,CAAC,EAAG,EAAG,IACrBE,QAAS,CAACN,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,MAElCO,QAAS,CACL,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,eAEJC,QAAS,CACLC,YA5CuB,CAACL,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,KA6ChDM,YAAa,CAACuC,EAAMD,GACpBrC,iBAAkB,CAACuC,EAAKF,GACxBpC,iBAAkB,CAACuC,EAAUH,GAC7BlC,iBAAkB,CAACsC,EAAQJ,GAC3BjC,iBAAkB,CAACsC,EAAYL,GAC/BhC,iBAAkB,CArDG,CAACrC,EAAG,CAAC,EAAG,EAAG,EAAG,IAqDVqE,GACzB/B,iBAAkB,CAACoC,EAAYN,GAC/B7B,iBAAkB,CAACkC,EAAQL,GAC3B5B,iBAAkB,CAACgC,EAAUJ,GAC7B3B,iBAAkB,CAAC8B,EAAKH,GACxB1B,iBAAkB,CAAC4B,EAAMF,IAE7BzB,UA7DyB,CAACtC,EAAG,CAAC,EAAG,EAAG,EAAG,IA8DvCuC,WAAY,UACZC,QAAS,GAgBbC,EAAEC,SAASC,IAAIC,SAASkB,iCChGxB5G,EAAAkB,EAAAoB,GAAAtC,EAAAU,EAAA4B,EAAA,6BAAAmF,IAiBA,IACMC,EAAyB,CAAC5E,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAC7C6E,EAAoB,CAACjE,EAAG,CAAC,IACzBkE,EAAwB,CAAClE,EAAG,CAAC,EAAG,EAAG,EAAG,GAAI,KAE1CmE,EAAwB,CAACxE,EAAG,CAAC,EAAG,EAAG,EAAG,GAAI,KAC1CyE,EAAuB,CAAChE,EAAG,CAAC,EAAG,EAAG,GAAI,KACtCiE,EAAyB,CAAC7D,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,KAC/C8D,EAAyB,CAAClE,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAC7CmE,EAA8B,CAAC5E,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,KAE3DoE,EAAmB,CAC5BvE,KAAM,KACNkE,QAAS,SAACC,GACN,IAAMC,EAAOD,EAAKE,WAClB,OAAIF,EAAKG,cAAgB,IACbF,EAAO,GAAK,GAEjBA,GAGXnE,MAAO,CACHC,OAAQ,CAACsE,EAAQ,CAAChE,EAAG,CAAC,EAAG,EAAG,EAAG,KAC/BJ,OAAQ,CAvBa,CAACR,EAAG,CAAC,EAAG,EAAG,EAAG,IAuBpB,CAACA,EAAG,CAAC,EAAG,GAAI,MAC3BU,OAAQ,CAACkE,EAAQ,CAAC1E,EAAG,CAAC,EAAG,EAAG,KAC5BS,OAAQ,CAACiE,EAAQ,CAAC1E,EAAG,CAAC,EAAG,EAAG,EAAG,KAC/BW,OAAQ,CAAC+D,EAAQ,CAAC/C,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,KACrCf,OAAQ,CAAC8D,EAAQ,CAAC/C,EAAG,CAAC,EAAG,EAAG,EAAG,GAAI,MACnCd,OAAQ,CAAC6D,EAAQ,CAACjF,EAAG,CAAC,EAAG,EAAG,EAAG,KAC/BsB,OAAQ,CAAC2D,EAAQ,CAACjF,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,MAClCuB,OAAQ,CAAC0D,EAAQ,CAAC9E,EAAG,CAAC,EAAG,EAAG,EAAG,KAC/BqB,OAAQ,CAACyD,EAAQ,CAAC9E,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,KAClCuB,QAAS,CAACuD,EAAQ,CAACnE,EAAG,CAAC,EAAG,EAAG,EAAG,KAChCa,QAAS,CAACsD,EAAQ,CAACnE,EAAG,CAAC,EAAG,EAAG,GAAI,OAErCc,QAAS,CACL,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,eAEJC,QAAS,CACLE,YAAa,CAACmD,EAAGE,GACjBpD,iBAAkB,CAACkD,EAAGG,GACtBpD,iBAAkB,CAACiD,EAAGI,GACtBnD,iBAAkB,CAAC+C,EAAGK,GACtBnD,iBAAkB,CAAC8C,EAAGM,GACtBnD,iBAAkB,CAAC6C,EAjDG,CAACzD,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,KAkDxCa,iBAAkB,CAAC6C,EAAOK,GAC1BjD,iBAAkB,CAAC4C,EAAOI,GAC1B/C,iBAAkB,CAAC2C,EAAOG,GAC1B7C,iBAAkB,CAAC0C,EAAOE,GAC1B3C,iBAAkB,CAACyC,EAAOC,IAE9BzC,UAAW,KACXC,WAAY,UACZC,QAAS,GAgBbC,EAAEC,SAASC,IAAIC,SAAS+B,iCC/FxBzH,EAAAkB,EAAAoB,GAAAtC,EAAAU,EAAA4B,EAAA,6BAAA4F,IAiBA,IACMC,EAAqB,CAACrE,EAAG,CAAC,EAAG,IAC7BsE,EAAwB,CAAC1E,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,IAEzC2E,EAAyB,CAAC9E,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,KAE9C+E,EAAuB,CAACjF,EAAG,CAAC,EAAG,EAAG,EAAG,KACrCkF,EAAsB,CAAC7E,EAAG,CAAC,EAAG,GAAI,KAClC8E,EAAwB,CAAC1E,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,IACzC2E,EAAwB,CAACpF,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,IACzCqF,EAA4B,CAACrF,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,KAErD6E,EAAmB,CAC5BhF,KAAM,KACNkE,QAAS,SAACC,GACN,IAAMC,EAAOD,EAAKE,WAClB,OAAIF,EAAKG,cAAgB,IACbF,EAAO,GAAK,GAEjBA,GAEXnE,MAAO,CACHgD,EAAK,CAACvD,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,KAC1BU,OAAQ,CACJ,CAACqB,EAAG,CAAC,EAAG,EAAG,IACX0D,GAEJ7E,OAAQ,CACJ,CAACV,EAAG,CAAC,EAAG,EAAG,GAAI,KACfuF,GAEJ5E,OAAQ,CACJ,CAACT,EAAG,CAAC,EAAG,EAAG,EAAG,GAAI,KAClBqF,GAEJ1E,OAAQ,CACJ,CAACX,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IACpBqF,GAEJzE,OAAQ,CACJ,CAACnB,EAAG,CAAC,EAAG,EAAG,GAAI,KACf4F,GAEJxE,OAAQ,CACJ,CAACpB,EAAG,CAAC,EAAG,EAAG,IACX4F,GAEJtE,OAAQ,CACJ,CAACY,EAAG,CAAC,EAAG,EAAG,GAAI,KACf0D,GAEJrE,OAAQ,CACJ,CAACvB,EAAG,CAAC,EAAG,EAAG,EAAG,IACd4F,GAEJpE,OAAQ,CACJ,CAACU,EAAG,CAAC,EAAG,EAAG,EAAG,IACd0D,GAEJlE,QAAS,CACL,CAACvB,EAAG,CAAC,EAAG,EAAG,IACXyF,GAEJjE,QAAS,CACL,CAACb,EAAG,CAAC,EAAG,EAAG,EAAG,IACd8E,GAEJM,GAAM,CAAC/F,EAAG,CAAC,EAAG,EAAG,EAAG,KAExByB,QAAS,CACL,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,eAEJC,QAAS,CACLE,YAAa8D,EACb7D,iBAAkB8D,EAClB7D,iBAAkB,CAACyD,EAAIK,GACvB5D,iBAAkB6D,EAClB5D,iBAAkB6D,EAClB5D,iBAAkB,CAACqD,EApFG,CAACjE,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,KAqFxCa,iBAAkB,CAACqD,EAAOM,GAC1B1D,iBAAkB,CAACoD,EAAOK,GAC1BxD,iBAAkB,CAACmD,EArFA,CAAC1E,EAAG,CAAC,EAAG,IAqFG8E,GAC9BtD,iBAAkB,CAACkD,EAAOG,GAC1BpD,iBAAkB,CAACiD,EAAOE,IAE9BlD,UA9F0B,CAACtC,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,IA+F3CuC,WAAY,WACZC,QAAS,GAgBbC,EAAEC,SAASC,IAAIC,SAASwC,iCCjIxBlI,EAAAkB,EAAAoB,GAAAtC,EAAAU,EAAA4B,EAAA,6BAAAsG,IAiBA,IAAMC,EAAyB,CAAC/F,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAE7CgG,EAAoB,CAAChF,EAAG,CAAC,IACzBiF,EAAuB,CAACrF,EAAG,CAAC,EAAG,EAAG,GAAI,KAEtCsF,EAAyB,CAAC3F,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,KAC9C4F,EAAwB,CAAC/E,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAC1CgF,EAA2B,CAACpF,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,KACtDqF,EAAwB,CAAC9F,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,IACzC+F,EAA8B,CAAC/F,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,KAE3DuF,EAAmB,CAC5B1F,KAAM,KACNkE,QAAS,SAACC,GACN,IAAMC,EAAOD,EAAKE,WAClB,OAAIF,EAAKG,cAAgB,IACbF,EAAO,GAAK,GAEjBA,GAEXnE,MAAO,CACHC,OAAQ,CAACyF,EAAQ,CAACjG,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,KACrCU,OAAQ,CArBW,CAACN,EAAG,CAAC,EAAG,EAAG,IAqBjB,CAACA,EAAG,CAAC,EAAG,EAAG,KACxBQ,OAAQ,CAACqF,EAAQ,CAAC7F,EAAG,CAAC,EAAG,GAAI,MAC7BS,OAAQ,CAACoF,EAAQ,CAAClE,EAAG,CAAC,EAAG,EAAG,KAC5BhB,OAAQ,CAACkF,EAAQ,CAACtF,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,KACxCK,OAAQ,CAACiF,EAAQ,CAACnF,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,KACrCG,OAAQ,CAACgF,EAAQ,CAACtF,EAAG,CAAC,EAAG,GAAI,MAC7BQ,OAAQ,CAAC8E,EAAQ,CAACjG,EAAG,CAAC,EAAG,EAAG,EAAG,GAAI,MACnCoB,OAAQ,CAAC6E,EAAQ,CAAClE,EAAG,CAAC,EAAG,EAAG,EAAG,KAC/BV,OAAQ,CAAC4E,EAAQ,CAAClE,EAAG,CAAC,EAAG,EAAG,GAAI,MAChCR,QAAS,CAAC0E,EAAQ,CAACpG,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,KACnC2B,QAAS,CAACyE,EAAQ,CAACpG,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,OAE3C4B,QAAS,CACL,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,eAEJC,QAAS,CACLE,YAAa,CAACsE,EAAGE,GACjBvE,iBAAkB,CAACqE,EAAGG,GACtBvE,iBAAkB,CAACoE,EAAGI,GACtBtE,iBAAkB,CAACkE,EAAGK,GACtBtE,iBAAkB,CAACiE,EAAGM,GACtBtE,iBAAkB,CAACgE,EAhDG,CAAC5E,GAAI,CAAC,EAAG,EAAG,EAAG,GAAI,MAiDzCa,iBAAkB,CAACgE,EAAMK,GACzBpE,iBAAkB,CAAC+D,EAAMI,GACzBlE,iBAAkB,CAAC8D,EAAMG,GACzBhE,iBAAkB,CAAC6D,EAAME,GACzB9D,iBAAkB,CAAC4D,EAAMC,IAE7B5D,UAAW,KACXC,WAAY,WACZC,QAAS,GAgBbC,EAAEC,SAASC,IAAIC,SAASkD,iCC9FxB5I,EAAAkB,EAAAoB,GAAAtC,EAAAU,EAAA4B,EAAA,6BAAA+G,IAiBA,IACMC,EAAwB,CAAC3E,EAAG,CAAC,EAAG,EAAG,EAAG,IACtC4E,EAAwB,CAACvG,EAAG,CAAC,EAAG,EAAG,GAAI,KAGvCwG,EAAuB,CAAC/G,EAAG,CAAC,EAAG,EAAG,EAAG,IACrCgH,EAAuB,CAAC3G,EAAG,CAAC,EAAG,EAAG,GAAI,KACtC4G,EAAuB,CAAC1G,EAAG,CAAC,EAAG,EAAG,EAAG,IACrC2G,EAAwB,CAAChF,EAAG,CAAC,EAAG,EAAG,EAAG,GAAI,KAGnC0E,EAAmB,CAC5BnG,KAAM,KACNkE,QAAS,SAACC,GACN,IAAMC,EAAOD,EAAKE,WAClB,OAAIF,EAAKG,cAAgB,IACbF,EAAO,GAAK,GAEjBA,GAEXnE,MAAO,CACHC,OAAQ,CAACc,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAC7BZ,OAAQ,CAACV,EAAG,CAAC,EAAG,EAAG,KACnBY,OAAQ,CAACD,EAAG,CAAC,EAAG,EAAG,EAAG,IACtBE,OAAQ,CAACF,EAAG,CAAC,EAAG,EAAG,GAAI,KACvBI,OAAQ,CAACD,EAAG,CAAC,EAAG,EAAG,EAAG,IACtBE,OAAQ,CAACF,EAAG,CAAC,EAAG,EAAG,EAAG,IACtBG,OAAQ,CAACH,EAAG,CAAC,EAAG,GAAI,KACpBK,OAAQ,CAACD,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,IACzBE,OAAQ,CAACX,EAAG,CAAC,EAAG,EAAG,EAAG,IACtBY,OAAQ,CAACH,EAAG,CAAC,EAAG,EAAG,EAAG,GAAI,KAC1BK,QAAS,CAACd,EAAG,CAAC,EAAG,EAAG,EAAG,IACvBe,QAAS,CAACf,EAAG,CAAC,EAAG,GAAI,MAEzBgB,QAAS,CACL,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,eAEJC,QAAS,CACLC,YAtCoB,CAACL,GAAI,CAAC,EAAG,GAAI,KAuCjCM,YAAa,CAACiF,EAAMH,GACpB7E,iBAAkB,CAACiF,EAAMJ,GACzB5E,iBAAkB,CAACiF,EA/CG,CAAClH,EAAG,CAAC,EAAG,EAAG,GAAI,MAgDrCmC,iBAAkB,CAAC8E,EAAMH,EAAOC,GAChC3E,iBAAkB,CAAC4E,EAAMF,EAAOC,GAChC1E,iBAAkB0E,EAClBzE,iBAAkB,CAAC0E,EAAMH,EAAOE,GAChCxE,iBAAkB,CAAC0E,EAAMJ,EAAOE,GAChCvE,iBAAkB,CAAC0E,EApDG,CAAC/G,EAAG,CAAC,EAAG,EAAG,EAAG,KAqDpCsC,iBAAkB,CAACwE,EAAMH,GACzBpE,iBAAkB,CAACsE,EAAMF,IAE7BnE,UA5D0B,CAACtC,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,IA6D3CuC,WAAY,aACZC,QAAS,GAgBbC,EAAEC,SAASC,IAAIC,SAAS2D,iCC/FxBrJ,EAAAkB,EAAAoB,GAAAtC,EAAAU,EAAA4B,EAAA,6BAAAsH,IAiBA,IAAMd,EAAoB,CAAChG,EAAG,CAAC,IACzB+G,EAAsB,CAAC/G,EAAG,CAAC,EAAG,EAAG,IACjCgH,EAAqB,CAACpG,EAAG,CAAC,IAC1BqG,EAAqB,CAAC7F,GAAI,CAAC,IAC3B0D,EAAwB,CAAClE,EAAG,CAAC,EAAG,EAAG,EAAG,GAAI,KAE1CmE,EAAwB,CAAC3D,GAAI,CAAC,EAAG,EAAG,EAAG,GAAI,KAC3C8F,EAAsB,CAAC9F,GAAI,CAAC,EAAG,EAAG,IAClC+F,EAA2B,CAAC5G,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IACrD6G,EAAwB,CAACpG,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,IAElC8F,EAAmB,CAC5B1G,KAAM,KACNkE,QAAS,SAACC,GACN,IAAMC,EAAOD,EAAKE,WAClB,OAAIF,EAAKG,cAAgB,IACbF,EAAO,GAAK,GAEjBA,GAEXnE,MAAO,CACHgD,EAAK,CAAC2C,EAAG,CAACvF,EAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,MACzCoF,GAAM,CAACG,EAAG,CAAC9F,EAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,KACnCM,OAAQ,CAACwF,EAAG,CAAChG,EAAK,CAAC,EAAG,EAAG,KACzBU,OAAQ,CAACqG,EAAK,CAAClF,EAAK,CAAC,EAAG,EAAG,EAAG,KAC9BlB,OAAQ,CAACoG,EAAK,CAAC/G,EAAK,CAAC,EAAG,EAAG,GAAI,MAC/Ba,OAAQ,CAACkG,EAAK,CAACpH,EAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,KACpCmB,OAAQ,CAACiG,EAAK,CAACjH,EAAK,CAAC,EAAG,EAAG,EAAG,EAAG,KACjCiB,OAAQ,CAACgG,EAAK,CAAClF,EAAK,CAAC,EAAG,EAAG,EAAG,KAC9BZ,OAAQ,CAAC8F,EAAK,CAAClF,EAAK,CAAC,EAAG,EAAG,EAAG,MAC9BX,OAAQ,CAAC6F,EAAK,CAACjH,EAAK,CAAC,EAAG,EAAG,EAAG,KAC9BqB,OAAQ,CAAC4F,EAAK,CAACpH,EAAK,CAAC,EAAG,EAAG,GAAI,MAC/B0B,QAAS,CAAC0F,EAAK,CAAC7G,EAAK,CAAC,EAAG,GAAI,MAC7BoB,QAAS,CAACyF,EAAK,CAACjH,EAAK,CAAC,EAAG,EAAG,GAAI,OAEpCyB,QAAS,CACL,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,eAEJC,QAAS,CACLE,YAAa,CAACsF,EAAIjC,GAClBpD,iBAAkB,CAACqF,EAAIE,GACvBtF,iBAAkB,CAACoF,EAAIG,GACvBrF,iBAAkB,CAACkF,EAAII,GACvBrF,iBAAkB,CAACiF,EAAII,EAAOH,EAAIlC,GAClC/C,iBAAkB,CAACgF,EAhDE,CAAChG,EAAG,CAAC,EAAG,EAAG,GAAI,MAiDpCiB,iBAAkB,CAAC6C,EAAOsC,EAAOH,EAAIlC,GACrC7C,iBAAkB,CAAC4C,EAAOsC,GAC1BjF,iBAAkB,CAAC2C,EAAOqC,GAC1B/E,iBAAkB,CAAC0C,EAAOoC,GAC1B7E,iBAAkB,CAACyC,EAAOC,IAE9BzC,UAAW,KACXC,WAAY,YACZC,QAAS,GAgBbC,EAAEC,SAASC,IAAIC,SAASkE,wCC7ExB,IAAAO,EAAA,oBAAAA,KAoEA,OAhEkBA,EAAAC,cAAd,SAA4BzJ,EAAc0J,GAClCF,EAAQG,OAAOC,KAAK,SAAClJ,GAAmB,OAAAA,EAAMV,OAASA,IACvD6J,QAAQC,KAAK,oBAAoB9J,EAAI,mEAAmE0J,EAAU,MAElHF,EAAQG,OAAOI,KAAK,CAChB/J,KAAIA,EACJ0J,WAAUA,KAKRF,EAAAQ,UAAd,WACI,OAAOR,EAAQG,OAAOM,OAAS,GAGrBT,EAAAU,kBAAd,WACI,OAAOV,EAAQG,OAAOM,OAAS,GAGrBT,EAAAW,cAAd,WACI,OAAOX,EAAQY,SAAS,IAGdZ,EAAAY,SAAd,SAAuBC,GACnB,OAAOb,EAAQG,OAAOU,IAGZb,EAAAc,UAAd,WACI,OAAOd,EAAQG,QAGLH,EAAAe,eAAd,SAA6BC,IACNhB,EAAQiB,QAAQb,KAAK,SAACc,GACrC,OAAIF,EAAOjI,OAASmI,EAAQnI,OACpBiI,EAAO9F,aAAegG,EAAQhG,YAC9BmF,QAAQc,MACJ,yBAAyBH,EAAOjI,KAAI,sCAAsCiI,EAAO9F,WAAU,kDAAkDgG,EAAQhG,WAAU,OAGhK,OAKX8E,EAAQiB,QAAQV,KAAKS,GACrBhB,EAAQiB,QAAQG,KAAK,SAACC,EAAGC,GAAc,OAAAD,EAAEnG,WAAWqG,cAAcD,EAAEpG,gBAI9D8E,EAAAwB,WAAd,WACI,OAAOxB,EAAQiB,QAAQR,OAAS,GAGtBT,EAAAyB,mBAAd,WACI,OAAOzB,EAAQiB,QAAQR,OAAS,GAGtBT,EAAA0B,eAAd,WACI,OAAO1B,EAAQiB,QAAQ,IAGbjB,EAAA2B,WAAd,WACI,OAAO3B,EAAQiB,SAjEJjB,EAAAiB,QAAoB,GACpBjB,EAAAG,OAAkB,GAkErCH,EApEA,GCuBa4B,EAAuB,CAChC7I,KAAM,KACNC,MAAO,KACPkB,QAAS,GACTC,QAAS,KACTc,UAAW,GACXC,WAAY,KACZC,QAAS,UC/Bb0G,EAAA,WACI,SAAAC,EAAoCC,EAAmCC,GAAnCC,KAAAF,WAAmCE,KAAAD,aA8D3E,OA3DWF,EAAAjK,UAAAqK,UAAP,WACI,IAAMC,EAAYF,KAAKG,UAAU,gBAMjC,OALID,IAEAF,KAAKI,aAAa,gBAClBJ,KAAKK,UAAUH,IAEZF,KAAKG,UAAU,eAGnBN,EAAAjK,UAAAyK,UAAP,SAAiBtB,GACbiB,KAAKM,UAAU,aAAcvB,IAG1Bc,EAAAjK,UAAA2K,QAAP,WACI,OAAOP,KAAKG,UAAU,aAGnBN,EAAAjK,UAAA4K,QAAP,SAAerL,GACX6K,KAAKM,UAAU,WAAYnL,IAGxB0K,EAAAjK,UAAA6K,UAAP,WACI,OAAOT,KAAKG,UAAU,eAGnBN,EAAAjK,UAAA8K,UAAP,SAAiBC,GACbX,KAAKM,UAAU,aAAcK,IAG1Bd,EAAAjK,UAAA+I,SAAP,WACI,OAAOqB,KAAKG,UAAU,cAGnBN,EAAAjK,UAAAgL,SAAP,SAAgBC,GACZb,KAAKM,UAAU,YAAaO,IAGxBhB,EAAAjK,UAAAuK,UAAR,SAAkBW,GACd,OAAOC,EAAA,IAAYD,EAAad,KAAKF,WAGjCD,EAAAjK,UAAA0K,UAAR,SAAkBQ,EAAoBE,GAClC,IAAIC,EAEAA,EADAjB,KAAKD,WACK,CAACmB,QAAS,IAAKC,KAAMnB,KAAKD,YAE1B,CAACmB,QAAS,KAExBH,EAAA,IAAYD,EAAad,KAAKF,SAAUkB,EAAaC,IAGjDpB,EAAAjK,UAAAwK,aAAR,SAAqBU,GACbd,KAAKD,WACLgB,EAAA,OAAeD,EAAad,KAAKF,SAAU,CAACqB,KAAMnB,KAAKD,aAEvDgB,EAAA,OAAeD,EAAad,KAAKF,WAG7CD,EA/DA,GCGAuB,EAAA,WAII,SAAAA,EAAoCnM,EAAeoM,QAAA,IAAAA,MAAA,IAAfrB,KAAA/K,QAChC+K,KAAK/K,MAAQA,EACb+K,KAAKqB,MAAQA,EAiBrB,OAXWD,EAAAxL,UAAA0L,SAAP,SAAgBD,GACO,KAAfrB,KAAKqB,MACLrB,KAAKqB,MAAQA,EAEbrB,KAAKqB,OAAS,IAAIA,GAInBD,EAAAxL,UAAA2L,SAAP,WACI,MAAO,4BAA4BvB,KAAKqB,MAAK,KAAKrB,KAAK/K,MAAK,WAEpEmM,EAvBA,GCFAI,EAAA,WAgNI,SAAAC,EAAoC1C,GAAAiB,KAAAjB,SAsDxC,OAnDW0C,EAAA7L,UAAA8L,MAAP,WACI,IAAMzJ,EAAsB,GAgB5B,OAfA+H,KAAKjB,OAAO9G,QAAQ0J,QAAQ,SAACC,GAEzB,IADA,IAAMC,EAAiB,GACdxN,EAAI,EAAGA,EAAIuN,EAAWpD,OAAQnK,IACnCwN,EAAKvD,KAAK,IAAI8C,EAAOQ,EAAWvN,KAEpC4D,EAAQqG,KAAKuD,KAEjB7B,KAAK8B,mBAAmB7J,EAAS,KAAM+H,KAAKjB,OAAO/F,gBAChB,IAAxBgH,KAAKjB,OAAOgD,SAAmD,OAAxB/B,KAAKjB,OAAOgD,QAC1D/B,KAAKgC,oBAAoB/J,EAAS,SAAU+H,KAAKjB,OAAOgD,SAExD/B,KAAKgC,oBAAoB/J,EAAS,SAAUwJ,EAAyBM,SAEzE/B,KAAKgC,oBAAoB/J,EAAS,SAAU+H,KAAKjB,OAAO7G,SACxD8H,KAAKgC,oBAAoB/J,EAAS,OAAQ+H,KAAKjB,OAAOhI,OAC/CkB,GAGHwJ,EAAA7L,UAAAqM,YAAR,SAAoBhK,EAAqBgG,EAAoBvI,GACrD,MAAOA,GACPhB,OAAOwN,KAAKxM,GACPyM,IAAI,SAAC5M,GAAwB,OAAA6M,OAAO7M,KACpCoM,QACG,SAACpG,GAAoB,OAAA7F,EAAO6F,GAAGoG,QAC3B,SAACU,GAAoB,OAAApK,EAAQsD,EAAI,GAAG8G,EAAI,GAAGf,SAASrD,QAMhEwD,EAAA7L,UAAAkM,mBAAR,SAA2B7J,EAAqBgG,EAAoBqE,GAApE,IAAAC,EAAAvC,KACQ,MAAOsC,IACHE,MAAMC,QAAQH,GACdA,EAAMX,QAAQ,SAACe,GAA+B,OAAAH,EAAKN,YAAYhK,EAASgG,EAAYyE,KAEpF1C,KAAKiC,YAAYhK,EAASgG,EAAYqE,KAK1Cb,EAAA7L,UAAAoM,oBAAR,SAA4B/J,EAAqBgG,EAAoB0E,GAArE,IAAAJ,EAAAvC,KACQ,MAAO2C,GACPjO,OAAOwN,KAAKS,GAAYhB,QAAQ,SAACiB,GAC7B,IAAMC,EAAuBD,EAAWE,MAAM,KACxCC,EAAsDJ,EAAWC,GACvEC,EAAWlB,QAAQ,SAACqB,GAA4B,OAAAT,EAAKT,mBAAmB7J,EAASgG,EAAa+E,EAAWD,QAjQ7FtB,EAAAwB,OAAyB,CAC7C1K,EAAG,CAAC,EAAG,EAAG,GACVlC,EAAG,CAAC,EAAG,GACPG,EAAG,CAAC,EAAG,EAAG,GACVW,EAAG,CAAC,EAAG,EAAG,GACVG,EAAG,CAAC,EAAG,EAAG,GACVI,EAAG,CAAC,EAAG,GACPT,EAAG,CAAC,EAAG,EAAG,IAEUwK,EAAAyB,QAA0B,CAC9C3K,EAAG,CAAC,EAAG,EAAG,IACVlC,EAAG,CAAC,EAAG,IACPG,EAAG,CAAC,EAAG,GAAI,IACXW,EAAG,CAAC,EAAG,EAAG,IACVG,EAAG,CAAC,EAAG,EAAG,IACVI,EAAG,CAAC,EAAG,IACPT,EAAG,CAAC,EAAG,EAAG,KAEUwK,EAAA0B,OAAyB,CAC7C5K,EAAG,CAAC,GACJlC,EAAG,CAAC,EAAG,GACPG,EAAG,CAAC,GACJW,EAAG,CAAC,GACJG,EAAG,CAAC,GACJI,EAAG,CAAC,GACJT,EAAG,CAAC,EAAG,EAAG,IAEUwK,EAAA2B,QAA0B,CAC9C7K,EAAG,CAAC,GACJlC,EAAG,CAAC,EAAG,GACPG,EAAG,CAAC,GACJW,EAAG,CAAC,GACJG,EAAG,CAAC,GACJI,EAAG,CAAC,GACJT,EAAG,CAAC,EAAG,EAAG,KAEUwK,EAAA4B,OAAyB,CAC7C9K,EAAG,CAAC,EAAG,EAAG,GACVlC,EAAG,CAAC,EAAG,GACPG,EAAG,CAAC,GACJW,EAAG,CAAC,GACJG,EAAG,CAAC,GACJI,EAAG,CAAC,GACJT,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,IAEIwK,EAAA6B,QAA0B,CAC9C/K,EAAG,CAAC,EAAG,EAAG,IACVlC,EAAG,CAAC,EAAG,IACPG,EAAG,CAAC,IACJW,EAAG,CAAC,IACJG,EAAG,CAAC,GACJI,EAAG,CAAC,GACJT,EAAG,CAAC,EAAG,EAAG,EAAG,GAAI,KAEGwK,EAAA8B,OAAyB,CAC7ChL,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,GAChBlC,EAAG,CAAC,GACJG,EAAG,CAAC,GACJW,EAAG,CAAC,GACJG,EAAG,CAAC,GACJI,EAAG,CAAC,EAAG,GACPT,EAAG,CAAC,EAAG,EAAG,IAEUwK,EAAA+B,QAA0B,CAC9CjL,EAAG,CAAC,EAAG,EAAG,EAAG,GAAI,IACjBlC,EAAG,CAAC,IACJG,EAAG,CAAC,GACJW,EAAG,CAAC,IACJG,EAAG,CAAC,IACJI,EAAG,CAAC,EAAG,IACPT,EAAG,CAAC,EAAG,EAAG,KAEUwK,EAAAgC,OAAyB,CAC7ClL,EAAG,CAAC,GACJlC,EAAG,CAAC,EAAG,GACPG,EAAG,CAAC,EAAG,GACPW,EAAG,CAAC,EAAG,GACPG,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,GAChBI,EAAG,CAAC,GACJT,EAAG,CAAC,IAEgBwK,EAAAiC,QAA0B,CAC9CnL,EAAG,CAAC,IACJlC,EAAG,CAAC,EAAG,IACPG,EAAG,CAAC,EAAG,IACPW,EAAG,CAAC,EAAG,IACPG,EAAG,CAAC,EAAG,EAAG,EAAG,GAAI,IACjBI,EAAG,CAAC,IACJT,EAAG,CAAC,KAEgBwK,EAAAkC,OAAyB,CAC7CpL,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,GAChBlC,EAAG,CAAC,GACJG,EAAG,CAAC,EAAG,EAAG,EAAG,GACbW,EAAG,CAAC,GACJG,EAAG,CAAC,GACJI,EAAG,CAAC,EAAG,GACPT,EAAG,CAAC,EAAG,EAAG,IAEUwK,EAAAmC,QAA0B,CAC9CrL,EAAG,CAAC,EAAG,EAAG,EAAG,GAAI,IACjBlC,EAAG,CAAC,GACJG,EAAG,CAAC,EAAG,EAAG,EAAG,IACbW,EAAG,CAAC,IACJG,EAAG,CAAC,IACJI,EAAG,CAAC,EAAG,IACPT,EAAG,CAAC,EAAG,EAAG,KAEUwK,EAAAoC,QAA0B,CAC9CtL,EAAG,CAAC,EAAG,IACPlC,EAAG,CAAC,GACJG,EAAG,CAAC,GACJW,EAAG,CAAC,EAAG,EAAG,EAAG,IACbG,EAAG,CAAC,EAAG,IACPI,EAAG,CAAC,EAAG,IACPT,EAAG,CAAC,EAAG,EAAG,KAEUwK,EAAAqC,QAA0B,CAC9CvL,EAAG,CAAC,EAAG,EAAG,EAAG,GAAI,IACjBlC,EAAG,CAAC,IACJG,EAAG,CAAC,IACJW,EAAG,CAAC,GACJG,EAAG,CAAC,GACJI,EAAG,CAAC,GACJT,EAAG,CAAC,IAEgBwK,EAAAsC,QAA0B,CAC9CxL,EAAG,CAAC,EAAG,EAAG,IACVlC,EAAG,CAAC,EAAG,IACPG,EAAG,CAAC,EAAG,IACPW,EAAG,CAAC,EAAG,EAAG,IACVG,EAAG,CAAC,EAAG,IACPI,EAAG,CAAC,EAAG,IACPT,EAAG,CAAC,EAAG,EAAG,KAEUwK,EAAAuC,QAA0B,CAC9CzL,EAAG,CAAC,EAAG,EAAG,IACVlC,EAAG,CAAC,EAAG,IACPG,EAAG,CAAC,EAAG,IACPW,EAAG,CAAC,EAAG,EAAG,GAAI,IACdG,EAAG,CAAC,IACJI,EAAG,CAAC,IACJT,EAAG,CAAC,EAAG,IAEawK,EAAAM,QAA0B,CAC9ChI,EAAK,CAAC0H,EAAyBwB,OAAQxB,EAAyByB,SAChExM,EAAK,CAAC+K,EAAyBwB,OAAQxB,EAAyB2B,SAChExM,EAAK,CAAC6K,EAAyBwB,OAAQxB,EAAyB6B,SAChE/K,EAAK,CAACkJ,EAAyBwB,OAAQxB,EAAyB+B,SAChEnN,EAAK,CAACoL,EAAyBwB,OAAQxB,EAAyBiC,SAChElN,EAAK,CAACiL,EAAyBwB,OAAQxB,EAAyBmC,SAChEzM,EAAK,CAACsK,EAAyBwB,OAAQxB,EAAyBoC,SAChEvM,EAAK,CAACmK,EAAyBwB,OAAQxB,EAAyBqC,SAChEpM,EAAK,CAAC+J,EAAyBwB,OAAQxB,EAAyBsC,SAChE9M,EAAK,CAACwK,EAAyBwB,OAAQxB,EAAyBuC,SAChElM,GAAM,CAAC2J,EAAyB0B,OAAQ1B,EAAyByB,SACjEe,GAAM,CAACxC,EAAyB0B,OAAQ1B,EAAyB2B,SACjE7G,GAAM,CAACkF,EAAyB0B,OAAQ1B,EAAyB6B,SACjEY,GAAM,CAACzC,EAAyB0B,OAAQ1B,EAAyB+B,SACjEW,GAAM,CAAC1C,EAAyB0B,OAAQ1B,EAAyBiC,SACjEU,GAAM,CAAC3C,EAAyB0B,OAAQ1B,EAAyBmC,SACjES,GAAM,CAAC5C,EAAyB0B,OAAQ1B,EAAyBoC,SACjES,GAAM,CAAC7C,EAAyB0B,OAAQ1B,EAAyBqC,SACjES,GAAM,CAAC9C,EAAyB0B,OAAQ1B,EAAyBsC,SACjES,GAAM,CAAC/C,EAAyB0B,OAAQ1B,EAAyBuC,SACjES,GAAM,CAAChD,EAAyB4B,OAAQ5B,EAAyByB,SACjEwB,GAAM,CAACjD,EAAyB4B,OAAQ5B,EAAyB2B,SACjEuB,GAAM,CAAClD,EAAyB4B,OAAQ5B,EAAyB6B,SACjEsB,GAAM,CAACnD,EAAyB4B,OAAQ5B,EAAyB+B,SACjEqB,GAAM,CAACpD,EAAyB4B,OAAQ5B,EAAyBiC,SACjEoB,GAAM,CAACrD,EAAyB4B,OAAQ5B,EAAyBmC,SACjEmB,GAAM,CAACtD,EAAyB4B,OAAQ5B,EAAyBoC,SACjEmB,GAAM,CAACvD,EAAyB4B,OAAQ5B,EAAyBqC,SACjEmB,GAAM,CAACxD,EAAyB4B,OAAQ5B,EAAyBsC,SACjEmB,GAAM,CAACzD,EAAyB4B,OAAQ5B,EAAyBuC,SACjEmB,GAAM,CAAC1D,EAAyB8B,OAAQ9B,EAAyByB,SACjEkC,GAAM,CAAC3D,EAAyB8B,OAAQ9B,EAAyB2B,SACjEiC,GAAM,CAAC5D,EAAyB8B,OAAQ9B,EAAyB6B,SACjEgC,GAAM,CAAC7D,EAAyB8B,OAAQ9B,EAAyB+B,SACjE+B,GAAM,CAAC9D,EAAyB8B,OAAQ9B,EAAyBiC,SACjE8B,GAAM,CAAC/D,EAAyB8B,OAAQ9B,EAAyBmC,SACjE6B,GAAM,CAAChE,EAAyB8B,OAAQ9B,EAAyBoC,SACjE6B,GAAM,CAACjE,EAAyB8B,OAAQ9B,EAAyBqC,SACjE6B,GAAM,CAAClE,EAAyB8B,OAAQ9B,EAAyBsC,SACjE6B,GAAM,CAACnE,EAAyB8B,OAAQ9B,EAAyBuC,SACjE6B,GAAM,CAACpE,EAAyBgC,OAAQhC,EAAyByB,SACjE4C,GAAM,CAACrE,EAAyBgC,OAAQhC,EAAyB2B,SACjE2C,GAAM,CAACtE,EAAyBgC,OAAQhC,EAAyB6B,SACjE0C,GAAM,CAACvE,EAAyBgC,OAAQhC,EAAyB+B,SACjEyC,GAAM,CAACxE,EAAyBgC,OAAQhC,EAAyBiC,SACjEwC,GAAM,CAACzE,EAAyBgC,OAAQhC,EAAyBmC,SACjEuC,GAAM,CAAC1E,EAAyBgC,OAAQhC,EAAyBoC,SACjEuC,GAAM,CAAC3E,EAAyBgC,OAAQhC,EAAyBqC,SACjEuC,GAAM,CAAC5E,EAAyBgC,OAAQhC,EAAyBsC,SACjEuC,GAAM,CAAC7E,EAAyBgC,OAAQhC,EAAyBuC,SACjEuC,GAAM,CAAC9E,EAAyBkC,OAAQlC,EAAyByB,SACjEsD,GAAM,CAAC/E,EAAyBkC,OAAQlC,EAAyB2B,SACjEqD,GAAM,CAAChF,EAAyBkC,OAAQlC,EAAyB6B,SACjEoD,GAAM,CAACjF,EAAyBkC,OAAQlC,EAAyB+B,SACjEmD,GAAM,CAAClF,EAAyBkC,OAAQlC,EAAyBiC,SACjEkD,GAAM,CAACnF,EAAyBkC,OAAQlC,EAAyBmC,SACjEiD,GAAM,CAACpF,EAAyBkC,OAAQlC,EAAyBoC,SACjEiD,GAAM,CAACrF,EAAyBkC,OAAQlC,EAAyBqC,SACjEiD,GAAM,CAACtF,EAAyBkC,OAAQlC,EAAyBsC,SACjEiD,GAAM,CAACvF,EAAyBkC,OAAQlC,EAAyBuC,UAyDzEvC,EAtQA,GA6QAwF,EAAA,WACI,SAAAA,EAAoClI,EAAiCmI,GAAjClH,KAAAjB,SAAiCiB,KAAAkH,aAiCzE,OA9BWD,EAAArR,UAAAuR,OAAP,SAAcC,GAAd,IAAA7E,EAAAvC,KACI,QAA2BqH,IAAvBrH,KAAKjB,OAAOuI,OAAsB,CAClC,GAA4B,IAAxBtH,KAAKjB,OAAO7F,QAUZ,YADAkF,QAAQC,KAAK,4BAA4B2B,KAAKjB,OAAO7F,QAAO,oBAR5D,IACMqO,EADqC,IAAI/F,EAAyBxB,KAAKjB,QACnC2C,QAC1ChN,OAAOC,eAAeqL,KAAKjB,OAAQ,SAAU,CACzC9J,MAAOsS,EACPC,UAAU,EACVC,cAAc,IAO1B,IAAMxP,EAAsB+H,KAAKjB,OAAOuI,OACxCtH,KAAKkH,WAAWQ,QAAQ,OAAQ,WAC5BnF,EAAK2E,WAAWS,QAChB1P,EAAQ0J,QAAQ,SAACE,EAAMjD,EAAOgJ,GAC1B/F,EAAKF,QAAQ,SAACkG,GAAgC,OAAAtF,EAAK2E,WAAWY,OAAOD,EAAOtG,cACxE3C,EAAQgJ,EAAMpJ,OAAS,GACvB+D,EAAK2E,WAAWY,OAAO,WAG3BV,GACAA,IAEJ7E,EAAK2E,WAAWa,OAAO,WAGnCd,EAlCA,GCvQAe,EAAA,WAGI,SAAAC,EACqB5O,EACA6O,EACAjH,EACAkH,GAHAnI,KAAA3G,MACA2G,KAAAkI,WACAlI,KAAAiB,UACAjB,KAAAmI,KAEjBnI,KAAKoI,cAAgB,IAAIxI,EAAcuI,EAAIlH,EAAQlB,YAiL3D,OA9KWkI,EAAArS,UAAAuR,OAAP,WACInH,KAAKqI,YACLrI,KAAKsI,qBAGFL,EAAArS,UAAA2S,SAAP,SAAgBC,GACZxI,KAAKkI,SAASO,IAAI,QAASD,GAC3B,IAAME,EAAoB1I,KAAKkI,SAASM,QACxCxI,KAAKkI,SAASM,MAAME,GACpB1I,KAAKkI,SAASS,OAAOD,GACrB1I,KAAKkI,SAASO,IAAI,YAAcC,EAAY,GAAM,OAG9CT,EAAArS,UAAAyS,UAAR,eAAA9F,EAAAvC,KAaI,GAXAA,KAAKkI,SAASU,SAAS,OAClBjB,QACAG,OAAO,uCACPA,OAAO,uCACPA,OAAO,uCACPA,OAAO,uCACPA,OAAO,kCACPA,OAAO,kCAEZ9H,KAAKuI,SAASvI,KAAKiB,QAAQuH,OAEvBxI,KAAKiB,QAAQ4H,SAAU,CACvB,IAAMC,EAAe3P,EAAE,qDAAqD6G,KAAKmI,GAAE,YAC7EY,EAAU5P,EAAE,+BAClB2P,EAAahB,OAAOiB,GAEpB,IAAMC,EAAe7P,EAAE,+CAA+C6G,KAAKmI,GAAE,YAC7Ea,EAAalB,OAAO,mFAAmF9H,KAAKmI,GAAE,0BAC9Ga,EAAalB,OAAO,iEAAiE9H,KAAKmI,GAAE,yFAC5FY,EAAQjB,OAAOkB,GAGf,IAAMC,EAAa9P,EAAE,8CAA8C6G,KAAKmI,GAAE,YAK1E,GAJAc,EAAWnB,OAAO,kFAAkF9H,KAAKmI,GAAE,0BAC3Gc,EAAWnB,OAAO,gEAAgE9H,KAAKmI,GAAE,wFACzFY,EAAQjB,OAAOmB,GAEXlL,EAAQyB,qBAAsB,CAC9B,IAAM0J,EAAkB/P,EAAE,kCAAkC6G,KAAKmI,GAAE,eACnEpK,EAAQ2B,aAAaiC,QAAQ,SAAC5C,GAC1BmK,EAAgBpB,OAAO,kBAAkB/I,EAAOjI,KAAI,KAAKiI,EAAO9F,WAAU,eAE9E8P,EAAQjB,OAAOoB,GAInB,GAAInL,EAAQU,oBAAqB,CAC7B,IAAM0K,EAAehQ,EAAE,+BAA+B6G,KAAKmI,GAAE,eAC7DpK,EAAQc,YAAY8C,QAAQ,SAACd,GACzBsI,EAAarB,OAAO,kBAAkBjH,EAAM5C,WAAU,KAAK4C,EAAMtM,KAAI,eAEzEwU,EAAQjB,OAAOqB,GAEnB,IAAMC,EAAmCjQ,EAAE,6DAA6D6G,KAAKmI,GAAE,UAC/GiB,EAAYC,GAAG,CAACC,MAAO,WAA2B,OAAAnQ,EAAE,oBAAoBoJ,EAAK4F,IAAMoB,KAAK,WACxFR,EAAQjB,OAAOsB,GACfpJ,KAAKkI,SAASsB,MAAMV,GACpBA,EAAaS,OACb,IAAME,EAAkCtQ,EAAE,+CAA+C6G,KAAKmI,GAAE,UAChGsB,EAAWJ,GAAG,CAACC,MAAO,WAAY,OAAA/G,EAAKmH,wBACvC1J,KAAKkI,SAASsB,MAAMC,KAIpBxB,EAAArS,UAAA0S,kBAAR,eAAA/F,EAAAvC,KAEUgJ,EAAoC7P,EAAE,4BAA4B6G,KAAKmI,IAC7Ea,EAAaK,GAAG,CAACC,MAAO,WAAY,OAAA/G,EAAKlJ,IAAIsQ,YAC7C,IAAIhJ,EAASX,KAAKoI,cAAc3H,kBACjB4G,IAAX1G,GAAwBX,KAAKiB,QAAQ2I,SACrCjJ,EAASX,KAAKiB,QAAQN,QAE1BqI,EAAaa,KAAK,UAAsB,OAAXlJ,GACd,OAAXA,EACAX,KAAK3G,IAAIyQ,QAET9J,KAAK3G,IAAI0Q,OAIb,IAAMd,EAAkC9P,EAAE,2BAA2B6G,KAAKmI,IAC1Ec,EAAWI,GAAG,CACVC,MAAO,WACuB,YAAtB/G,EAAKtB,QAAQ9L,KACboN,EAAKlJ,IAAImH,QAAQ,UAEjB+B,EAAKlJ,IAAImH,QAAQ,cAK7B,IAAIrL,EAAO6K,KAAKoI,cAAc7H,gBACjB8G,IAATlS,GAAsB6K,KAAKiB,QAAQ2I,SACnCzU,EAAO6K,KAAKiB,QAAQ9L,MAExB8T,EAAWY,KAAK,UAAoB,YAAT1U,GACd,YAATA,EACA6K,KAAK3G,IAAImH,QAAQ,WAEjBR,KAAK3G,IAAImH,QAAQ,UAIrB,IAAMwJ,EAAuC7Q,EAAE,uBAAuB6G,KAAKmI,IAC3E6B,EAAgBX,GAAG,CACfY,OAAQ,WACJ,IAAMC,EAAc/Q,EAAE,uBAAuBoJ,EAAK4F,IAAMgC,MACxD5H,EAAKlJ,IAAIgH,UAAU6J,MAG3B,IAAIE,EAAiBpK,KAAKoI,cAAcnI,kBACjBoH,IAAnB+C,GAAgCpK,KAAKiB,QAAQ2I,SAC7CQ,EAAiBpK,KAAKiB,QAAQoJ,UAElC,IAAIC,EAAQvM,EAAQ2B,aAAavB,KAAK,SAACuE,GAA0B,OAAA0H,IAAmB1H,EAAK5L,OACzF,IAAKwT,EAAO,CACR,IAAIC,OAAgB,EAEhBA,EADAxM,EAAQwB,aACWxB,EAAQ0B,iBAAiB3I,KAEzB,GAEvBsH,QAAQC,KAAK,aAAa+L,EAAc,gCAAgCG,EAAgB,MACxFH,EAAiBG,EAErBP,EAAgBG,IAAIC,GACpBpK,KAAKiB,QAAQoJ,SAAW,GACxBrK,KAAK3G,IAAIgH,UAAU+J,GAGnB,IAAMI,EAAoCrR,EAAE,oBAAoB6G,KAAKmI,IACrEqC,EAAanB,GAAG,CACZY,OAAQ,WACJ,IAAMQ,EAAWtR,EAAE,oBAAoBoJ,EAAK4F,IAAMgC,MAClD5H,EAAKlJ,IAAIuH,SAAS6J,MAG1B,IAAIC,EAAgB1K,KAAKoI,cAAczJ,WAKvC,SAJsB0I,IAAlBqD,GAA+B1K,KAAKiB,QAAQ2I,SAC5Cc,EAAgB1K,KAAKiB,QAAQJ,SAEjCyJ,EAAQvM,EAAQc,YAAYV,KAAK,SAACuE,GAAyB,OAAAgI,IAAkBhI,EAAKzE,cACtE,CACR,IAAM0M,EAAgB5M,EAAQW,gBAAgBT,WAC9CG,QAAQC,KAAK,UAAUqM,EAAa,gCAAgCC,EAAa,MACjFD,EAAgBC,EAEpBH,EAAaL,IAAIO,GACjB1K,KAAKiB,QAAQJ,MAAQ,GACrBb,KAAK3G,IAAIuH,SAAS8J,GACd1K,KAAKiB,QAAQ2J,YACbzR,EAAE0R,QAAQxB,GAAG,CACTyB,OAAQ,WACJ,IAAMC,EAA+BxI,EAAK2F,SAAS8C,SAC7CC,EAA0B9R,EAAE0R,QAC5BK,EAAsBH,EAAQvC,QAC9B2C,EAAuBJ,EAAQpC,SAC/ByC,EAAsBH,EAAQzC,QAC9B6C,EAAuBJ,EAAQtC,SAC/B2C,EAAkBC,KAAKC,IAAIN,EAAaC,EAAcC,EAAaC,GAAa,KACtF9I,EAAKgG,SAAS+C,OAMtBrD,EAAArS,UAAA8T,mBAAR,WACIvQ,EAAE,oBAAoB6G,KAAKmI,IAAMwB,OAAO,SAEhD1B,EA1LA,GCEAwD,EAAA,WAOI,SAAAC,EAAoCC,GAAA3L,KAAA2L,iBAL5B3L,KAAA4L,MAAgB,KAChB5L,KAAA6L,cAAwB,KAK5B,IAAMC,EAAW9L,KAAK2L,eAAe1K,QAAQhG,UACJoM,IAArCrH,KAAK2L,eAAe1K,QAAQhG,OAC5B+E,KAAK2L,eAAe1K,QAAQhG,KAAO,IAAI8Q,MAE3C/L,KAAKoI,cAAgB,IAAIxI,EAAcI,KAAK2L,eAAeK,KAAMhM,KAAK2L,eAAe1K,QAAQlB,YAC7FC,KAAKiM,YACLjM,KAAKkM,SAAW,IAAIlE,EAAYhI,KAAMA,KAAK2L,eAAe1M,QAASe,KAAK2L,eAAe1K,QAASjB,KAAK2L,eAAeK,MACpHhM,KAAKkM,SAAS/E,cACGE,IAAbyE,GACA9L,KAAKmM,QAAQL,GAqNzB,OAjNWJ,EAAA9V,UAAAwW,QAAP,WACQpM,KAAK4L,QACLf,OAAOwB,cAAcrM,KAAK4L,OAC1B5L,KAAK4L,MAAQ,MAEjB5L,KAAK2L,eAAe1M,QACfqN,WAAW,SACXA,WAAW,SACX3E,QACLxO,EAAE,kBAAkB6G,KAAK2L,eAAeK,MAAQO,SAChDpT,EAAE,oBAAoB6G,KAAK2L,eAAeK,MAAQO,UAG/Cb,EAAA9V,UAAAkU,MAAP,eAAAvH,EAAAvC,KACSA,KAAKwM,SACNxM,KAAK4L,MAAQf,OAAO4B,YAAY,WAC5BlK,EAAKoJ,eAAe1K,QAAQhG,KAAO,IAAI8Q,KACvCxJ,EAAKmK,UACN,KACH1M,KAAK0M,SACL1M,KAAKoI,cAAc1H,UAAU,QAI9BgL,EAAA9V,UAAAmU,KAAP,WACQ/J,KAAKwM,SACL3B,OAAOwB,cAAcrM,KAAK4L,OAC1B5L,KAAK4L,MAAQ,KACb5L,KAAK0M,SACL1M,KAAKoI,cAAc1H,UAAU,SAI9BgL,EAAA9V,UAAA+T,OAAP,WACQ3J,KAAKwM,OACLxM,KAAK+J,OAEL/J,KAAK8J,SAIN4B,EAAA9V,UAAAyK,UAAP,SAAiB9K,GAAjB,IAAAgN,EAAAvC,KACQzK,IAAQyK,KAAK2L,eAAe1K,QAAQoJ,WACpCrK,KAAK2L,eAAe1K,QAAQoJ,SAAW9U,EACtB,IAAI0R,EAAejH,KAAK2M,mBAAoB3M,KAAK2L,eAAe1M,QAAQ2N,KAAK,gBACrFzF,OAAO,WACZ5E,EAAKsJ,eAAiB,EACtBtJ,EAAKmK,WAET1M,KAAKoI,cAAc/H,UAAU9K,GAC7ByK,KAAK0M,WAINhB,EAAA9V,UAAAgL,SAAP,SAAgB3C,GACRA,IAAe+B,KAAK2L,eAAe1K,QAAQJ,QAC3Cb,KAAK2L,eAAe1M,QAAQ4N,YAAY7M,KAAK2L,eAAe1K,QAAQJ,OAAO+H,SAAS3K,GACpF9E,EAAE,mBAAmB6G,KAAK2L,eAAeK,MAAQa,YAAY7M,KAAK2L,eAAe1K,QAAQJ,OAAO+H,SAAS3K,GACzG+B,KAAK2L,eAAe1K,QAAQJ,MAAQ5C,EACpC+B,KAAKoI,cAAcxH,SAAS3C,KAI7ByN,EAAA9V,UAAAuW,QAAP,SAAelR,GACX+E,KAAK6L,cAAgB,KACR,OAAT5Q,EACA+E,KAAK2L,eAAe1K,QAAQhG,KAAO,IAAI8Q,MAEpB,OAAf/L,KAAK4L,OACLf,OAAOwB,cAAcrM,KAAK4L,OAE9B5L,KAAK2L,eAAe1K,QAAQhG,KAAOA,GAEvC+E,KAAK0M,UAGFhB,EAAA9V,UAAA4K,QAAP,SAAerL,GACX6K,KAAK2L,eAAe1K,QAAQ9L,KAAOA,EACnC6K,KAAK6L,cAAgB,KACrB7L,KAAK0M,SACL1M,KAAKoI,cAAc5H,QAAQrL,IAGxBuW,EAAA9V,UAAA2S,SAAP,SAAgBC,GACZxI,KAAKkM,SAAS3D,SAASC,IAGnBkD,EAAA9V,UAAA4W,KAAR,WACI,OAAsB,OAAfxM,KAAK4L,OAGRF,EAAA9V,UAAA8W,OAAR,WACI,GAAI1M,KAAKwM,OAAQ,CACb,IAAMvR,EAAO+E,KAAK2L,eAAe1K,QAAQhG,KACzC,IAAK+E,KAAK2M,mBAAmB9W,eAAe,YAAmD,YAArCmK,KAAK2L,eAAe1K,QAAQ9L,KAAoB,CACtG,GAAI8F,EAAKG,eAAiB4E,KAAK6L,cAC3B,OAEJ7L,KAAK6L,cAAgB5Q,EAAKG,aAE9B4E,KAAK8M,KAAK7R,QAEV+E,KAAK+M,QACL/M,KAAK6L,eAAiB,GAItBH,EAAA9V,UAAAkX,KAAR,SAAa7R,GACT,IAAM+R,EAAShN,KAAKiN,UAAUhS,GACxBiS,EAAYlN,KAAKmN,aAAalS,GAC9BC,EAAO8E,KAAKhF,QAAQC,GACpBmS,EAAepN,KAAKqN,gBAAgBpS,GAE1C,GADA+E,KAAK+M,QACoC,YAArC/M,KAAK2L,eAAe1K,QAAQ9L,KAC5B6K,KAAKsN,UAAU,SAASN,OACrB,CACHhN,KAAKsN,UAAU,MACf,IAAK,IAAItZ,EAAI,EAAGA,GAAKkZ,EAAWlZ,IAC5BgM,KAAKsN,UAAU,MAAMtZ,GAEzBgM,KAAKsN,UAAU,SAASF,GACxBpN,KAAKsN,UAAU,OAAOpS,KAItBwQ,EAAA9V,UAAAmX,MAAR,WACI/M,KAAK2L,eAAe1M,QAAQ2N,KAAK,SAASC,YAAY,WAGlDnB,EAAA9V,UAAA0X,UAAR,SAAkBC,GACdvN,KAAK2L,eAAe1M,QAAQ2N,KAAK,SAASW,GAAa3E,SAAS,WAG5D8C,EAAA9V,UAAAqX,UAAR,SAAkBhS,GACd,MAAkD,mBAAvC+E,KAAK2M,mBAAmBa,WACxBxN,KAAK2M,mBAAmBa,WAAWvS,GAEvCA,EAAKuS,cAGR9B,EAAA9V,UAAAuX,aAAR,SAAqBM,GACjB,MAAoD,mBAAzCzN,KAAK2M,mBAAmBQ,aACxBnN,KAAK2M,mBAAmBQ,aAAaM,GAEzCA,EAAKrS,aAAe,GAGvBsQ,EAAA9V,UAAAyX,gBAAR,SAAwBI,GACpB,MAAuD,mBAA5CzN,KAAK2M,mBAAmBU,gBACxBrN,KAAK2M,mBAAmBU,gBAAgBI,GAE5CA,EAAKrS,cAGRsQ,EAAA9V,UAAAoF,QAAR,SAAgByS,GACZ,GAA+C,mBAApCzN,KAAK2M,mBAAmB3R,QAC/B,OAAOgF,KAAK2M,mBAAmB3R,QAAQyS,GAE3C,IAAMvS,EAAOuS,EAAKtS,WAClB,OAAIsS,EAAKrS,cAAgB,IACbF,EAAO,GAAK,GAEjBA,GAGHwQ,EAAA9V,UAAAqW,UAAR,eAAA1J,EAAAvC,KACQ0N,EAAe7C,OAAO8C,SAASD,UACtBrG,IAATqG,GAAyC,MAAnBA,EAAKE,OAAO,KAClCF,EAAOA,EAAKG,UAAU,IACtBH,EAAOI,mBAAmBJ,IACI5K,MAAM,KAC7BnB,QAAQ,SAAC1C,GACZ,IAAM8O,EAAiB9O,EAAQ6D,MAAM,KAC/BvN,EAAMwY,EAAK,GACX9Y,EAAQ8Y,EAAK,GACnB,OAAQxY,GACJ,IAAK,IACL,IAAK,WACDgN,EAAKoJ,eAAe1K,QAAQoJ,SAAWpV,EACvCsN,EAAKoJ,eAAe1K,QAAQ2I,OAAQ,EACpC,MACJ,IAAK,IACL,IAAK,QACDrH,EAAKoJ,eAAe1K,QAAQJ,MAAQ5L,EACpCsN,EAAKoJ,eAAe1K,QAAQ2I,OAAQ,EACpC,MACJ,IAAK,IACL,IAAK,OACDrH,EAAKoJ,eAAe1K,QAAQ9L,KAAOF,EACnCsN,EAAKoJ,eAAe1K,QAAQ2I,OAAQ,EACpC,MACJ,IAAK,IACL,IAAK,SACDrH,EAAKoJ,eAAe1K,QAAQN,OAAS1L,EACrCsN,EAAKoJ,eAAe1K,QAAQ2I,OAAQ,OAOhD8B,EAAA9V,UAAA+W,iBAAR,eAAApK,EAAAvC,KACUgO,EAA8BjQ,EAAQ2B,aAAauO,OAAO,SAAChP,GAA6B,OAAAA,EAAQnI,OAASyL,EAAKoJ,eAAe1K,QAAQoJ,UAAUrK,MACrJ,OAAIgO,EAAkBxP,OAAS,EACpBwP,EAAkB,GAGtBrO,GAEf+L,EAtOA,UCPIwC,EAAE,wBAAwBC,KAAK,SAACvP,EAAO8D,GACnC,IAAM0L,EAAaF,EAAExL,GACfzE,EAAqBmQ,EAAWC,KAAK,cAC3C,QAAmBhH,IAAfpJ,EAA0B,CAC1B,IAAIqQ,EAAeF,EAAWC,KAAK,kBACtBhH,IAATiH,IACAA,EAAOrQ,GAEXF,EAAQC,cAAcsQ,EAAMrQ,MAK/BF,EAAQQ,aACTR,EAAQC,cAAc,GAAI,ICKlC,IAAMuQ,EAAmC,CACrCtN,QAAS,CACLuH,MAAO,OACP7H,OAAQ,KACR0J,SAAU,QACVxJ,MAAO9C,EAAQW,gBAAgBT,WAC/B2L,OAAO,EACPf,UAAU,EACV9I,gBAAYsH,EACZuD,YAAY,EACZzV,KAAM,UAEV2U,MAAO,WACH9J,KAAKwO,qBAAqB1E,SAE9BC,KAAM,WACF/J,KAAKwO,qBAAqBzE,QAE9BJ,OAAQ,WACJ3J,KAAKwO,qBAAqB7E,UAE9BU,SAAU,SAAU9U,GAChByK,KAAKwO,qBAAqBnO,UAAU9K,IAExCsL,MAAO,SAAU5C,GACb+B,KAAKwO,qBAAqB5N,SAAS3C,IAEvChD,KAAM,SAAUA,GACZ+E,KAAKwO,qBAAqBrC,QAAQlR,IAEtC9F,KAAM,SAAUA,GACZ6K,KAAKwO,qBAAqBhO,QAAQrL,IAEtCqT,MAAO,SAAUA,GACbxI,KAAKwO,qBAAqBjG,SAASC,IAGvCiG,QAAS,WACLzO,KAAKwO,qBAAuB,IAAI/C,EAAIzL,OAGxC0O,SAAU,WACN1O,KAAKwO,qBAAqBpC,WAE9BoC,qBAAsB,MAE1BrV,EAAEwV,OAAO,eAAgBJ,GAEzBpV,EAAEC,SAASC,IAAIC,SAAWyE,EAAQe,6CCtFlClL,EAAAkB,EAAAoB,GAAAtC,EAAA,QAAAgb,EAAAhb,EAAA,GAAAib,EAAAjb,EAAA,GAAAkb,EAAAlb,EAAA,GAAAmb,EAAAnb,EAAA,GAAAob,EAAApb,EAAA,GAAAqb,EAAArb,EAAA,GAAAsb,EAAAtb,EAAA,GAAAub,EAAAvb,EAAA,GAAAwb,EAAAxb,EAAA,IAAAyb,EAAAzb,EAAA,IAkCIib,EAAA,WACAC,EAAA,gBACAF,EAAA,SACAG,EAAA,SACAC,EAAA,SACAC,EAAA,SACAC,EAAA,SACAC,EAAA,SACAC,EAAA,SACAC,EAAA","file":"lib/uhr.bundle.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 13);\n","module.exports = Cookies;","module.exports = jQuery;","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst esIst: WordDefinition = {1: [1, 2, 4, 5, 6]};\nconst uhr: WordDefinition = {10: [9, 10, 11]};\nconst nach: WordDefinition = {4: [8, 9, 10, 11]};\nconst vor: WordDefinition = {4: [1, 2, 3]};\nconst halb: WordDefinition = {5: [1, 2, 3, 4]};\nconst fuenf: WordDefinition = {1: [8, 9, 10, 11]};\nconst zehn: WordDefinition = {2: [1, 2, 3, 4]};\nconst viertel: WordDefinition = {3: [5, 6, 7, 8, 9, 10, 11]};\nconst zwanzig: WordDefinition = {2: [5, 6, 7, 8, 9, 10, 11]};\nconst dreiviertel: WordDefinition = {3: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]};\n\nexport const LayoutDe: Layout = {\n code: 'de',\n hours: {\n '0,12': {9: [7, 8, 9, 10, 11]},\n '1,13': {6: [1, 2, 3, 4]},\n '2,14': {6: [8, 9, 10, 11]},\n '3,15': {7: [1, 2, 3, 4]},\n '4,16': {7: [8, 9, 10, 11]},\n '5,17': {5: [8, 9, 10, 11]},\n '6,18': {8: [1, 2, 3, 4, 5]},\n '7,19': {9: [1, 2, 3, 4, 5, 6]},\n '8,20': {8: [8, 9, 10, 11]},\n '9,21': {10: [4, 5, 6, 7]},\n '10,22': {10: [1, 2, 3, 4]},\n '11,23': {5: [6, 7, 8]}\n },\n letters: [\n 'ESKISTAFÜNF',\n 'ZEHNZWANZIG',\n 'DREIVIERTEL',\n 'VORFUNKNACH',\n 'HALBAELFÜNF',\n 'EINSXAMZWEI',\n 'DREIPMJVIER',\n 'SECHSNLACHT',\n 'SIEBENZWÖLF',\n 'ZEHNEUNKUHR'\n ],\n minutes: {\n '0,1,2,3,4': uhr,\n '5,6,7,8,9': [fuenf, nach],\n '10,11,12,13,14': [zehn, nach],\n '15,16,17,18,19': [viertel, nach],\n '20,21,22,23,24': [zwanzig, nach],\n '25,26,27,28,29': [fuenf, vor, halb],\n '30,31,32,33,34': halb,\n '35,36,37,38,39': [fuenf, nach, halb],\n '40,41,42,43,44': [zwanzig, vor],\n '45,46,47,48,49': dreiviertel,\n '50,51,52,53,54': [zehn, vor],\n '55,56,57,58,59': [fuenf, vor]\n },\n permanent: esIst,\n prettyName: 'Deutsch',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutDe);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst esIsch: WordDefinition = {1: [1, 2, 4, 5, 6, 7]};\nconst ab: WordDefinition = {4: [1, 2]};\nconst vor: WordDefinition = {3: [9, 10, 11]};\nconst haubi: WordDefinition = {4: [4, 5, 6, 7, 8]};\nconst fuef: WordDefinition = {1: [9, 10, 11]};\nconst zae: WordDefinition = {2: [9, 10, 11]};\nconst viertu: WordDefinition = {2: [1, 2, 3, 4, 5, 6]};\nconst zwaenzg: WordDefinition = {3: [1, 2, 3, 4, 5, 6]};\n\nexport const LayoutDeCh: Layout = {\n code: 'de_CH',\n hours: {\n '0,12': {10: [1, 2, 3, 4, 5, 6]},\n '1,13': {5: [1, 2, 3]},\n '2,14': {5: [4, 5, 6, 7]},\n '3,15': {5: [9, 10, 11]},\n '4,16': {6: [1, 2, 3, 4, 5]},\n '5,17': {6: [6, 7, 8, 9]},\n '6,18': {7: [1, 2, 3, 4, 5, 6]},\n '7,19': {7: [7, 8, 9, 10, 11]},\n '8,20': {8: [1, 2, 3, 4, 5]},\n '9,21': {8: [6, 7, 8, 9]},\n '10,22': {9: [1, 2, 3, 4]},\n '11,23': {9: [8, 9, 10, 11]}\n },\n letters: [\n 'ESKISCHAFÜF',\n 'VIERTUBFZÄÄ',\n 'ZWÄNZGSIVOR',\n 'ABOHAUBIEGE',\n 'EISZWÖISDRÜ',\n 'VIERIFÜFIQT',\n 'SÄCHSISIBNI',\n 'ACHTINÜNIEL',\n 'ZÄNIERBEUFI',\n 'ZWÖUFINAUHR'\n ],\n minutes: {\n '5,6,7,8,9': [fuef, ab],\n '10,11,12,13,14': [zae, ab],\n '15,16,17,18,19': [viertu, ab],\n '20,21,22,23,24': [zwaenzg, ab],\n '25,26,27,28,29': [fuef, vor, haubi],\n '30,31,32,33,34': haubi,\n '35,36,37,38,39': [fuef, ab, haubi],\n '40,41,42,43,44': [zwaenzg, vor],\n '45,46,47,48,49': [viertu, vor],\n '50,51,52,53,54': [zae, vor],\n '55,56,57,58,59': [fuef, vor]\n },\n permanent: esIsch,\n prettyName: 'Bärndütsch',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutDeCh);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst esIsch: WordDefinition = {1: [1, 2, 4, 5, 6, 7]};\nconst genau: WordDefinition = {3: [7, 8, 9, 10, 11]};\nconst ab: WordDefinition = {4: [4, 5]};\nconst vor: WordDefinition = {4: [1, 2, 3]};\nconst haubi: WordDefinition = {4: [7, 8, 9, 10, 11]};\nconst fuef: WordDefinition = {1: [9, 10, 11]};\nconst zae: WordDefinition = {2: [9, 10, 11]};\nconst viertu: WordDefinition = {2: [1, 2, 3, 4, 5, 6]};\nconst zwaenzg: WordDefinition = {3: [1, 2, 3, 4, 5, 6]};\n\nexport const LayoutDeChGenau: Layout = {\n code: 'de_CH_genau',\n hours: {\n '0,12': {10: [1, 2, 3, 4, 5, 6]},\n '1,13': {5: [1, 2, 3]},\n '2,14': {5: [4, 5, 6, 7]},\n '3,15': {5: [9, 10, 11]},\n '4,16': {6: [1, 2, 3, 4, 5]},\n '5,17': {6: [6, 7, 8, 9]},\n '6,18': {7: [1, 2, 3, 4, 5, 6]},\n '7,19': {7: [7, 8, 9, 10, 11]},\n '8,20': {8: [1, 2, 3, 4, 5]},\n '9,21': {8: [6, 7, 8, 9]},\n '10,22': {9: [1, 2, 3, 4]},\n '11,23': {9: [8, 9, 10, 11]}\n },\n letters: [\n 'ESKISCHAFÜF',\n 'VIERTUBFZÄÄ',\n 'ZWÄNZGGENAU',\n 'VORABOHAUBI',\n 'EISZWÖISDRÜ',\n 'VIERIFÜFIQT',\n 'SÄCHSISIBNI',\n 'ACHTINÜNIEL',\n 'ZÄNIERBEUFI',\n 'ZWÖUFINAUHR'\n ],\n minutes: {\n '0': genau,\n '5,6,7,8,9': [fuef, ab],\n '10,11,12,13,14': [zae, ab],\n '15,16,17,18,19': [viertu, ab],\n '20,21,22,23,24': [zwaenzg, ab],\n '25,26,27,28,29': [fuef, vor, haubi],\n '30,31,32,33,34': haubi,\n '35,36,37,38,39': [fuef, ab, haubi],\n '40,41,42,43,44': [zwaenzg, vor],\n '45,46,47,48,49': [viertu, vor],\n '50,51,52,53,54': [zae, vor],\n '55,56,57,58,59': [fuef, vor]\n },\n permanent: esIsch,\n prettyName: 'Bärndütsch (genau)',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutDeChGenau);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst klokkenEr: WordDefinition = {1: [1, 2, 3, 4, 5, 6, 7, 9, 10]};\nconst minutter: WordDefinition = {4: [4, 5, 6, 7, 8, 9, 10, 11]};\nconst i: WordDefinition = {5: [8]};\nconst over: WordDefinition = {5: [4, 5, 6, 7]};\nconst fem: WordDefinition = {2: [1, 2, 3]};\nconst ti: WordDefinition = {4: [1, 2]};\nconst kvart: WordDefinition = {3: [4, 5, 6, 7, 8]};\nconst tyve: WordDefinition = {2: [4, 5, 6, 7]};\nconst halv: WordDefinition = {6: [8, 9, 10, 11]};\n\nexport const LayoutDk: Layout = {\n code: 'dk',\n hours: {\n '0,12': {10: [8, 9, 10, 11]},\n '1,13': {7: [1, 2]},\n '2,14': {7: [3, 4]},\n '3,15': {7: [5, 6, 7]},\n '4,16': {7: [8, 9, 10, 11]},\n '5,17': {8: [1, 2, 3]},\n '6,18': {8: [4, 5, 6, 7]},\n '7,19': {8: [9, 10, 11]},\n '8,20': {9: [1, 2, 3, 4]},\n '9,21': {9: [6, 7]},\n '10,22': {9: [10, 11]},\n '11,23': {10: [1, 2, 3, 4, 5, 6]}\n },\n letters: [\n 'KLOKKENVERO',\n 'FEMTYVESKLA',\n 'OJEKVARTVAT',\n 'TIAMINUTTER',\n 'VEMOVERILMF',\n 'MONALISHALV',\n 'ETTOTREFIRE',\n 'FEMSEKSRSYV',\n 'OTTERNIMETI',\n 'ELLEVEATOLV'\n ],\n minutes: {\n '5,6,7,8,9': [fem, minutter, over],\n '10,11,12,13,14': [ti, minutter, over],\n '15,16,17,18,19': [kvart, over],\n '20,21,22,23,24': [tyve, minutter, over],\n '25,26,27,28,29': [fem, minutter, i, halv],\n '30,31,32,33,34': [halv],\n '35,36,37,38,39': [fem, minutter, over, halv],\n '40,41,42,43,44': [tyve, minutter, i],\n '45,46,47,48,49': [kvart, i],\n '50,51,52,53,54': [ti, minutter, i],\n '55,56,57,58,59': [fem, minutter, i]\n },\n permanent: klokkenEr,\n prettyName: 'Dansk',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutDk);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst itIs: WordDefinition = {1: [1, 2, 4, 5]};\nconst half: WordDefinition = {4: [1, 2, 3, 4]};\nconst to: WordDefinition = {4: [10, 11]};\nconst past: WordDefinition = {5: [1, 2, 3, 4]};\nconst oClock: WordDefinition = {10: [5, 6, 7, 8, 9, 10, 11]};\nconst five: WordDefinition = {3: [7, 8, 9, 10]};\nconst ten: WordDefinition = {4: [6, 7, 8]};\nconst aQuarter: WordDefinition = {2: [1, 3, 4, 5, 6, 7, 8, 9]};\nconst twenty: WordDefinition = {3: [1, 2, 3, 4, 5, 6]};\nconst twentyfive: WordDefinition = {3: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]};\n\nexport const LayoutEn: Layout = {\n code: 'en',\n getHour: (time: Date): number => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n\n hours: {\n '0,12': {9: [6, 7, 8, 9, 10, 11]},\n '1,13': {6: [1, 2, 3]},\n '2,14': {7: [9, 10, 11]},\n '3,15': {6: [7, 8, 9, 10, 11]},\n '4,16': {7: [1, 2, 3, 4]},\n '5,17': {7: [5, 6, 7, 8]},\n '6,18': {6: [4, 5, 6]},\n '7,19': {9: [1, 2, 3, 4, 5]},\n '8,20': {8: [1, 2, 3, 4, 5]},\n '9,21': {5: [8, 9, 10, 11]},\n '10,22': {10: [1, 2, 3]},\n '11,23': {8: [6, 7, 8, 9, 10, 11]}\n },\n letters: [\n 'ITLISBFAMPM',\n 'ACQUARTERDC',\n 'TWENTYFIVEX',\n 'HALFBTENFTO',\n 'PASTERUNINE',\n 'ONESIXTHREE',\n 'FOURFIVETWO',\n 'EIGHTELEVEN',\n 'SEVENTWELVE',\n 'TENSO\\'CLOCK'\n ],\n minutes: {\n '0,1,2,3,4': oClock,\n '5,6,7,8,9': [five, past],\n '10,11,12,13,14': [ten, past],\n '15,16,17,18,19': [aQuarter, past],\n '20,21,22,23,24': [twenty, past],\n '25,26,27,28,29': [twentyfive, past],\n '30,31,32,33,34': [half, past],\n '35,36,37,38,39': [twentyfive, to],\n '40,41,42,43,44': [twenty, to],\n '45,46,47,48,49': [aQuarter, to],\n '50,51,52,53,54': [ten, to],\n '55,56,57,58,59': [five, to]\n },\n permanent: itIs,\n prettyName: 'English',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutEn);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst esLa: WordDefinition = {1: [1, 2, 6, 7]};\nconst sonLas: WordDefinition = {1: [2, 3, 4, 6, 7, 8]};\nconst y: WordDefinition = {7: [6]};\nconst menos: WordDefinition = {7: [7, 8, 9, 10, 11]};\nconst media: WordDefinition = {10: [1, 2, 3, 4, 5]};\nconst cinco: WordDefinition = {9: [7, 8, 9, 10, 11]};\nconst diez: WordDefinition = {8: [8, 9, 10, 11]};\nconst cuarto: WordDefinition = {10: [6, 7, 8, 9, 10, 11]};\nconst veinte: WordDefinition = {8: [2, 3, 4, 5, 6, 7]};\nconst veinticinco: WordDefinition = {9: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]};\n\nexport const LayoutEs: Layout = {\n code: 'es',\n getHour: (time: Date): number => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n\n hours: {\n '0,12': [sonLas, {7: [1, 2, 3, 4]}],\n '1,13': [esLa, {1: [9, 10, 11]}],\n '2,14': [sonLas, {2: [1, 2, 3]}],\n '3,15': [sonLas, {2: [5, 6, 7, 8]}],\n '4,16': [sonLas, {3: [1, 2, 3, 4, 5, 6]}],\n '5,17': [sonLas, {3: [7, 8, 9, 10, 11]}],\n '6,18': [sonLas, {4: [1, 2, 3, 4]}],\n '7,19': [sonLas, {4: [6, 7, 8, 9, 10]}],\n '8,20': [sonLas, {5: [1, 2, 3, 4]}],\n '9,21': [sonLas, {5: [5, 6, 7, 8, 9]}],\n '10,22': [sonLas, {6: [3, 4, 5, 6]}],\n '11,23': [sonLas, {6: [8, 9, 10, 11]}]\n },\n letters: [\n 'ESONELASUNA',\n 'DOSITRESORE',\n 'CUATROCINCO',\n 'SEISASIETEN',\n 'OCHONUEVEYO',\n 'LADIEZSONCE',\n 'DOCELYMENOS',\n 'OVEINTEDIEZ',\n 'VEINTICINCO',\n 'MEDIACUARTO'\n ],\n minutes: {\n '5,6,7,8,9': [y, cinco],\n '10,11,12,13,14': [y, diez],\n '15,16,17,18,19': [y, cuarto],\n '20,21,22,23,24': [y, veinte],\n '25,26,27,28,29': [y, veinticinco],\n '30,31,32,33,34': [y, media],\n '35,36,37,38,39': [menos, veinticinco],\n '40,41,42,43,44': [menos, veinte],\n '45,46,47,48,49': [menos, cuarto],\n '50,51,52,53,54': [menos, diez],\n '55,56,57,58,59': [menos, cinco]\n },\n permanent: null,\n prettyName: 'Español',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutEs);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst ilEst: WordDefinition = {1: [1, 2, 4, 5, 6]};\nconst et: WordDefinition = {8: [1, 2]};\nconst moins: WordDefinition = {7: [1, 2, 3, 4, 5]};\nconst demie: WordDefinition = {10: [4, 5, 6, 7, 8]};\nconst heures: WordDefinition = {6: [6, 7, 8, 9, 10, 11]};\nconst le: WordDefinition = {7: [7, 8]};\nconst cinq: WordDefinition = {9: [7, 8, 9, 10]};\nconst dix: WordDefinition = {7: [9, 10, 11]};\nconst quart: WordDefinition = {8: [4, 5, 6, 7, 8]};\nconst vingt: WordDefinition = {9: [1, 2, 3, 4, 5]};\nconst vingtcinq: WordDefinition = {9: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]};\n\nexport const LayoutFr: Layout = {\n code: 'fr',\n getHour: (time: Date): number => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n hours: {\n '0': {5: [6, 7, 8, 9, 10, 11]},\n '1,13': [\n {3: [5, 6, 7]},\n heures\n ],\n '2,14': [\n {1: [8, 9, 10, 11]},\n heures\n ],\n '3,15': [\n {2: [7, 8, 9, 10, 11]},\n heures\n ],\n '4,16': [\n {2: [1, 2, 3, 4, 5, 6]},\n heures\n ],\n '5,17': [\n {4: [8, 9, 10, 11]},\n heures\n ],\n '6,18': [\n {4: [5, 6, 7]},\n heures\n ],\n '7,19': [\n {3: [8, 9, 10, 11]},\n heures\n ],\n '8,20': [\n {4: [1, 2, 3, 4]},\n heures\n ],\n '9,21': [\n {3: [1, 2, 3, 4]},\n heures\n ],\n '10,22': [\n {5: [3, 4, 5]},\n heures\n ],\n '11,23': [\n {6: [1, 2, 3, 4]},\n heures\n ],\n '12': {5: [1, 2, 3, 4]}\n },\n letters: [\n 'ILNESTODEUX',\n 'QUATRETROIS',\n 'NEUFUNESEPT',\n 'HUITSIXCINQ',\n 'MIDIXMINUIT',\n 'ONZERHEURES',\n 'MOINSOLEDIX',\n 'ETRQUARTPMD',\n 'VINGT-CINQU',\n 'ETSDEMIEPAM'\n ],\n minutes: {\n '5,6,7,8,9': cinq,\n '10,11,12,13,14': dix,\n '15,16,17,18,19': [et, quart],\n '20,21,22,23,24': vingt,\n '25,26,27,28,29': vingtcinq,\n '30,31,32,33,34': [et, demie],\n '35,36,37,38,39': [moins, vingtcinq],\n '40,41,42,43,44': [moins, vingt],\n '45,46,47,48,49': [moins, le, quart],\n '50,51,52,53,54': [moins, dix],\n '55,56,57,58,59': [moins, cinq]\n },\n permanent: ilEst,\n prettyName: 'Français',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutFr);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst sonoLe: WordDefinition = {1: [1, 2, 3, 4, 6, 7]};\nconst eL: WordDefinition = {2: [1, 3, 4]};\nconst e: WordDefinition = {8: [1]};\nconst meno: WordDefinition = {7: [8, 9, 10, 11]};\nconst mezza: WordDefinition = {10: [7, 8, 9, 10, 11]};\nconst cinque: WordDefinition = {9: [6, 7, 8, 9, 10, 11]};\nconst dieci: WordDefinition = {10: [1, 2, 3, 4, 5]};\nconst unQuarto: WordDefinition = {8: [3, 4, 6, 7, 8, 9, 10, 11]};\nconst venti: WordDefinition = {9: [1, 2, 3, 4, 5]};\nconst venticinque: WordDefinition = {9: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]};\n\nexport const LayoutIt: Layout = {\n code: 'it',\n getHour: (time: Date): number => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n hours: {\n '0,12': [sonoLe, {5: [1, 2, 3, 4, 5, 6]}],\n '1,13': [eL, {2: [5, 6, 7]}],\n '2,14': [sonoLe, {2: [9, 10, 11]}],\n '3,15': [sonoLe, {3: [1, 2, 3]}],\n '4,16': [sonoLe, {6: [1, 2, 3, 4, 5, 6, 7]}],\n '5,17': [sonoLe, {7: [1, 2, 3, 4, 5, 6]}],\n '6,18': [sonoLe, {6: [9, 10, 11]}],\n '7,19': [sonoLe, {5: [7, 8, 9, 10, 11]}],\n '8,20': [sonoLe, {3: [4, 5, 6, 7]}],\n '9,21': [sonoLe, {3: [8, 9, 10, 11]}],\n '10,22': [sonoLe, {4: [1, 2, 3, 4, 5]}],\n '11,23': [sonoLe, {4: [6, 7, 8, 9, 10, 11]}]\n },\n letters: [\n 'SONORLEBORE',\n 'ÈRL\\'UNASDUE',\n 'TREOTTONOVE',\n 'DIECIUNDICI',\n 'DODICISETTE',\n 'QUATTROCSEI',\n 'CINQUEAMENO',\n 'ECUNOQUARTO',\n 'VENTICINQUE',\n 'DIECIPMEZZA'\n ],\n minutes: {\n '5,6,7,8,9': [e, cinque],\n '10,11,12,13,14': [e, dieci],\n '15,16,17,18,19': [e, unQuarto],\n '20,21,22,23,24': [e, venti],\n '25,26,27,28,29': [e, venticinque],\n '30,31,32,33,34': [e, mezza],\n '35,36,37,38,39': [meno, venticinque],\n '40,41,42,43,44': [meno, venti],\n '45,46,47,48,49': [meno, unQuarto],\n '50,51,52,53,54': [meno, dieci],\n '55,56,57,58,59': [meno, cinque]\n },\n permanent: null,\n prettyName: 'Italiano',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutIt);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst hetIs: WordDefinition = {1: [1, 2, 3, 5, 6]};\nconst over1: WordDefinition = {3: [1, 2, 3, 4]};\nconst voor1: WordDefinition = {2: [8, 9, 10, 11]};\nconst over2: WordDefinition = {4: [8, 9, 10, 11]};\nconst voor2: WordDefinition = {5: [1, 2, 3, 4]};\nconst half: WordDefinition = {4: [1, 2, 3, 4]};\nconst vijf: WordDefinition = {1: [8, 9, 10, 11]};\nconst tien: WordDefinition = {2: [1, 2, 3, 4]};\nconst kwart: WordDefinition = {3: [7, 8, 9, 10, 11]};\nconst uur: WordDefinition = {10: [9, 10, 11]};\n\nexport const LayoutNl: Layout = {\n code: 'nl',\n getHour: (time: Date): number => {\n const hour = time.getHours();\n if (time.getMinutes() >= 20) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n hours: {\n '0,12': {10: [1, 2, 3, 4, 5, 6]},\n '1,13': {5: [8, 9, 10]},\n '2,14': {6: [1, 2, 3, 4]},\n '3,15': {6: [8, 9, 10, 11]},\n '4,16': {7: [1, 2, 3, 4]},\n '5,17': {7: [5, 6, 7, 8]},\n '6,18': {7: [9, 10, 11]},\n '7,19': {8: [1, 2, 3, 4, 5]},\n '8,20': {9: [1, 2, 3, 4]},\n '9,21': {8: [7, 8, 9, 10, 11]},\n '10,22': {9: [5, 6, 7, 8]},\n '11,23': {9: [9, 10, 11]}\n },\n letters: [\n 'HETKISAVIJF',\n 'TIENBTZVOOR',\n 'OVERMEKWART',\n 'HALFSPWOVER',\n 'VOORTHGEENS',\n 'TWEEPVCDRIE',\n 'VIERVIJFZES',\n 'ZEVENONEGEN',\n 'ACHTTIENELF',\n 'TWAALFBFUUR'\n ],\n minutes: {\n '0,1,2,3,4': uur,\n '5,6,7,8,9': [vijf, over1],\n '10,11,12,13,14': [tien, over1],\n '15,16,17,18,19': [kwart, over2],\n '20,21,22,23,24': [tien, voor1, half],\n '25,26,27,28,29': [vijf, voor1, half],\n '30,31,32,33,34': half,\n '35,36,37,38,39': [vijf, over1, half],\n '40,41,42,43,44': [tien, over1, half],\n '45,46,47,48,49': [kwart, voor2],\n '50,51,52,53,54': [tien, voor1],\n '55,56,57,58,59': [vijf, voor1]\n },\n permanent: hetIs,\n prettyName: 'Nederlands',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutNl);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst e: WordDefinition = {1: [1]};\nconst sao: WordDefinition = {1: [2, 3, 4]};\nconst e1: WordDefinition = {7: [8]};\nconst e2: WordDefinition = {10: [5]};\nconst menos: WordDefinition = {7: [7, 8, 9, 10, 11]};\nconst meia: WordDefinition = {8: [8, 9, 10, 11]};\nconst cinco: WordDefinition = {10: [7, 8, 9, 10, 11]};\nconst dez: WordDefinition = {10: [1, 2, 3]};\nconst umQuarto: WordDefinition = {9: [1, 2, 4, 5, 6, 7, 8, 9]};\nconst vinte: WordDefinition = {8: [1, 2, 3, 4, 5]};\n\nexport const LayoutPt: Layout = {\n code: 'pt',\n getHour: (time: Date): number => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n hours: {\n '0': [e, {'6': [2, 3, 4, 5, 7, 8, 9, 10, 11]}],\n '12': [e, {'2': [1, 2, 3, 4, 6, 7, 8]}],\n '1,13': [e, {'1': [5, 6, 7]}],\n '2,14': [sao, {'3': [1, 2, 3, 4]}],\n '3,15': [sao, {'1': [8, 9, 10, 11]}],\n '4,16': [sao, {'4': [1, 2, 3, 4, 5, 6]}],\n '5,17': [sao, {'5': [1, 2, 3, 4, 5]}],\n '6,18': [sao, {'3': [4, 5, 6, 7]}],\n '7,19': [sao, {'3': [7, 8, 9, 10]}],\n '8,20': [sao, {'5': [5, 6, 7, 8]}],\n '9,21': [sao, {'4': [8, 9, 10, 11]}],\n '10,22': [sao, {'2': [9, 10, 11]}],\n '11,23': [sao, {'5': [8, 9, 10, 11]}]\n },\n letters: [\n 'ÉSÃOUMATRÊS',\n 'MEIOLDIADEZ',\n 'DUASEISETEY',\n 'QUATROHNOVE',\n 'CINCOITONZE',\n 'ZMEIALNOITE',\n 'HORASYMENOS',\n 'VINTECAMEIA',\n 'UMVQUARTOPM',\n 'DEZOEYCINCO'\n ],\n minutes: {\n '5,6,7,8,9': [e1, cinco],\n '10,11,12,13,14': [e1, dez],\n '15,16,17,18,19': [e1, umQuarto],\n '20,21,22,23,24': [e1, vinte],\n '25,26,27,28,29': [e1, vinte, e2, cinco],\n '30,31,32,33,34': [e1, meia],\n '35,36,37,38,39': [menos, vinte, e2, cinco],\n '40,41,42,43,44': [menos, vinte],\n '45,46,47,48,49': [menos, umQuarto],\n '50,51,52,53,54': [menos, dez],\n '55,56,57,58,59': [menos, cinco]\n },\n permanent: null,\n prettyName: 'Português',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutPt);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout} from './layout';\nimport {Theme} from './theme';\n\nexport class Globals {\n private static layouts: Layout[] = [];\n private static themes: Theme[] = [];\n\n public static registerTheme(name: string, styleClass: string): void {\n if (Globals.themes.some((value): boolean => value.name === name)) {\n console.warn(`Theme with name '${name}' already registered; ignoring register request for styleClass '${styleClass}'.`);\n } else {\n Globals.themes.push({\n name,\n styleClass\n });\n }\n }\n\n public static hasThemes(): boolean {\n return Globals.themes.length > 0;\n }\n\n public static hasMultipleThemes(): boolean {\n return Globals.themes.length > 1;\n }\n\n public static getFirstTheme(): Theme {\n return Globals.getTheme(0);\n }\n\n public static getTheme(index: number): Theme {\n return Globals.themes[index];\n }\n\n public static getThemes(): Theme[] {\n return Globals.themes;\n }\n\n public static registerLayout(layout: Layout): void {\n const available = !Globals.layouts.some((element): boolean => {\n if (layout.code === element.code) {\n if (layout.prettyName !== element.prettyName) {\n console.error(\n `Error: Language code '${layout.code}' cannot be registered for layout '${layout.prettyName}' because it is already registered for layout '${element.prettyName}'!`\n );\n }\n return true;\n }\n return false;\n });\n if (available) {\n Globals.layouts.push(layout);\n Globals.layouts.sort((a, b): number => a.prettyName.localeCompare(b.prettyName));\n }\n }\n\n public static hasLayouts(): boolean {\n return Globals.layouts.length > 0;\n }\n\n public static hasMultipleLayouts(): boolean {\n return Globals.layouts.length > 1;\n }\n\n public static getFirstLayout(): Layout {\n return Globals.layouts[0];\n }\n\n public static getLayouts(): Layout[] {\n return Globals.layouts;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Letter} from './letter';\n\nexport interface Layout {\n readonly code: string;\n getCoarseMinute?: (time: Date) => number;\n getDotMinute?: (time: Date) => number;\n getHour?: (time: Date) => number;\n getSeconds?: (time: Date) => number;\n readonly hours: TimeDefinition;\n readonly letters: string[];\n readonly minutes: TimeDefinition;\n parsed?: Letter[][];\n readonly permanent: WordDefinition | WordDefinition[];\n readonly prettyName: string;\n seconds?: TimeDefinition;\n readonly version: number;\n}\n\nexport interface WordDefinition {\n [line: number]: number[];\n}\n\nexport interface TimeDefinition {\n [values: string]: WordDefinition | WordDefinition[];\n}\n\nexport const EMPTY_LAYOUT: Layout = {\n code: null,\n hours: null,\n letters: [],\n minutes: null,\n permanent: [],\n prettyName: null,\n version: 2\n};\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport * as Cookies from 'js-cookie';\n\nexport class CookieHandler {\n public constructor(private readonly widgetId: string, private readonly cookiePath?: string) {\n }\n\n public getLayout(): string {\n const oldCookie = this.getCookie('uhr-language');\n if (oldCookie) {\n // aha, old cookie is set. migrate to new one!\n this.removeCookie('uhr-language');\n this.setLayout(oldCookie);\n }\n return this.getCookie('uhr-layout');\n }\n\n public setLayout(layout: string): void {\n this.setCookie('uhr-layout', layout);\n }\n\n public getMode(): string {\n return this.getCookie('uhr-mode');\n }\n\n public setMode(mode: string): void {\n this.setCookie('uhr-mode', mode);\n }\n\n public getStatus(): string {\n return this.getCookie('uhr-status');\n }\n\n public setStatus(status: string): void {\n this.setCookie('uhr-status', status);\n }\n\n public getTheme(): string {\n return this.getCookie('uhr-theme');\n }\n\n public setTheme(theme: string): void {\n this.setCookie('uhr-theme', theme);\n }\n\n private getCookie(cookieName: string): string {\n return Cookies.get(cookieName + this.widgetId);\n }\n\n private setCookie(cookieName: string, cookieValue: string): void {\n let options;\n if (this.cookiePath) {\n options = {expires: 365, path: this.cookiePath};\n } else {\n options = {expires: 365};\n }\n Cookies.set(cookieName + this.widgetId, cookieValue, options);\n }\n\n private removeCookie(cookieName: string): void {\n if (this.cookiePath) {\n Cookies.remove(cookieName + this.widgetId, {path: this.cookiePath});\n } else {\n Cookies.remove(cookieName + this.widgetId);\n }\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\n/**\n * Ein Buchstabe. Hilfsklasse für den Renderer und Inhalt der Layout-Arrays.\n * @param value Der Buchstabe, der Dargestellt werden soll.\n * @param style Die CSS-Styleklassen des Buchstabens.\n */\nexport class Letter {\n // private readonly value: string;\n private style: string;\n\n public constructor(private readonly value: string, style: string = '') {\n this.value = value;\n this.style = style;\n // if (style) {\n // this.style = style;\n // }\n }\n\n public addStyle(style: string): void {\n if (this.style === '') {\n this.style = style;\n } else {\n this.style += ` ${style}`;\n }\n }\n\n public toString(): string {\n return `${this.value}`;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, TimeDefinition, WordDefinition} from './domain/layout';\nimport {Letter} from './domain/letter';\n\nclass LayoutRendererV2Delegate {\n private static readonly vorne0: WordDefinition = {\n 3: [2, 3, 4],\n 4: [1, 5],\n 5: [1, 4, 5],\n 6: [1, 3, 5],\n 7: [1, 2, 5],\n 8: [1, 5],\n 9: [2, 3, 4]\n };\n private static readonly hinten0: WordDefinition = {\n 3: [8, 9, 10],\n 4: [7, 11],\n 5: [7, 10, 11],\n 6: [7, 9, 11],\n 7: [7, 8, 11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly vorne1: WordDefinition = {\n 3: [3],\n 4: [2, 3],\n 5: [3],\n 6: [3],\n 7: [3],\n 8: [3],\n 9: [2, 3, 4]\n };\n private static readonly hinten1: WordDefinition = {\n 3: [9],\n 4: [8, 9],\n 5: [9],\n 6: [9],\n 7: [9],\n 8: [9],\n 9: [8, 9, 10]\n };\n private static readonly vorne2: WordDefinition = {\n 3: [2, 3, 4],\n 4: [1, 5],\n 5: [5],\n 6: [4],\n 7: [3],\n 8: [2],\n 9: [1, 2, 3, 4, 5]\n };\n private static readonly hinten2: WordDefinition = {\n 3: [8, 9, 10],\n 4: [7, 11],\n 5: [11],\n 6: [10],\n 7: [9],\n 8: [8],\n 9: [7, 8, 9, 10, 11]\n };\n private static readonly vorne3: WordDefinition = {\n 3: [1, 2, 3, 4, 5],\n 4: [4],\n 5: [3],\n 6: [4],\n 7: [5],\n 8: [1, 5],\n 9: [2, 3, 4]\n };\n private static readonly hinten3: WordDefinition = {\n 3: [7, 8, 9, 10, 11],\n 4: [10],\n 5: [9],\n 6: [10],\n 7: [11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly vorne4: WordDefinition = {\n 3: [4],\n 4: [3, 4],\n 5: [2, 4],\n 6: [1, 4],\n 7: [1, 2, 3, 4, 5],\n 8: [4],\n 9: [4]\n };\n private static readonly hinten4: WordDefinition = {\n 3: [10],\n 4: [9, 10],\n 5: [8, 10],\n 6: [7, 10],\n 7: [7, 8, 9, 10, 11],\n 8: [10],\n 9: [10]\n };\n private static readonly vorne5: WordDefinition = {\n 3: [1, 2, 3, 4, 5],\n 4: [1],\n 5: [1, 2, 3, 4],\n 6: [5],\n 7: [5],\n 8: [1, 5],\n 9: [2, 3, 4]\n };\n private static readonly hinten5: WordDefinition = {\n 3: [7, 8, 9, 10, 11],\n 4: [7],\n 5: [7, 8, 9, 10],\n 6: [11],\n 7: [11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly hinten6: WordDefinition = {\n 3: [9, 10],\n 4: [8],\n 5: [7],\n 6: [7, 8, 9, 10],\n 7: [7, 11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly hinten7: WordDefinition = {\n 3: [7, 8, 9, 10, 11],\n 4: [11],\n 5: [10],\n 6: [9],\n 7: [8],\n 8: [8],\n 9: [8]\n };\n private static readonly hinten8: WordDefinition = {\n 3: [8, 9, 10],\n 4: [7, 11],\n 5: [7, 11],\n 6: [8, 9, 10],\n 7: [7, 11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly hinten9: WordDefinition = {\n 3: [8, 9, 10],\n 4: [7, 11],\n 5: [7, 11],\n 6: [8, 9, 10, 11],\n 7: [11],\n 8: [10],\n 9: [8, 9]\n };\n private static readonly seconds: TimeDefinition = {\n '0': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten0],\n '1': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten1],\n '2': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten2],\n '3': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten3],\n '4': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten4],\n '5': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten5],\n '6': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten6],\n '7': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten7],\n '8': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten8],\n '9': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten9],\n '10': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten0],\n '11': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten1],\n '12': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten2],\n '13': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten3],\n '14': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten4],\n '15': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten5],\n '16': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten6],\n '17': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten7],\n '18': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten8],\n '19': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten9],\n '20': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten0],\n '21': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten1],\n '22': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten2],\n '23': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten3],\n '24': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten4],\n '25': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten5],\n '26': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten6],\n '27': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten7],\n '28': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten8],\n '29': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten9],\n '30': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten0],\n '31': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten1],\n '32': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten2],\n '33': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten3],\n '34': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten4],\n '35': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten5],\n '36': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten6],\n '37': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten7],\n '38': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten8],\n '39': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten9],\n '40': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten0],\n '41': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten1],\n '42': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten2],\n '43': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten3],\n '44': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten4],\n '45': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten5],\n '46': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten6],\n '47': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten7],\n '48': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten8],\n '49': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten9],\n '50': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten0],\n '51': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten1],\n '52': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten2],\n '53': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten3],\n '54': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten4],\n '55': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten5],\n '56': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten6],\n '57': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten7],\n '58': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten8],\n '59': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten9]\n };\n\n public constructor(private readonly layout: Layout) {\n }\n\n public parse(): Letter[][] {\n const letters: Letter[][] = [];\n this.layout.letters.forEach((lineString: string): void => {\n const line: Letter[] = [];\n for (let c = 0; c < lineString.length; c++) {\n line.push(new Letter(lineString[c]));\n }\n letters.push(line);\n });\n this.parseArrayOrObject(letters, 'on', this.layout.permanent);\n if (typeof this.layout.seconds !== 'undefined' && this.layout.seconds !== null) {\n this.parseTimeDefinition(letters, 'second', this.layout.seconds);\n } else {\n this.parseTimeDefinition(letters, 'second', LayoutRendererV2Delegate.seconds);\n }\n this.parseTimeDefinition(letters, 'minute', this.layout.minutes);\n this.parseTimeDefinition(letters, 'hour', this.layout.hours);\n return letters;\n }\n\n private parseObject(letters: Letter[][], styleClass: string, object: WordDefinition): void {\n if (typeof object !== 'undefined' && object !== null) {\n Object.keys(object)\n .map((key: string): number => Number(key))\n .forEach(\n (y: number): void => object[y].forEach(\n (x: number): void => letters[y - 1][x - 1].addStyle(styleClass)\n )\n );\n }\n }\n\n private parseArrayOrObject(letters: Letter[][], styleClass: string, input: WordDefinition | WordDefinition[]): void {\n if (typeof input !== 'undefined' && input !== null) {\n if (Array.isArray(input)) {\n input.forEach((item: WordDefinition): void => this.parseObject(letters, styleClass, item));\n } else {\n this.parseObject(letters, styleClass, input);\n }\n }\n }\n\n private parseTimeDefinition(letters: Letter[][], styleClass: string, definition: TimeDefinition): void {\n if (typeof definition !== 'undefined' && definition !== null) {\n Object.keys(definition).forEach((listString: string): void => {\n const timeValues: string[] = listString.split(',');\n const highlightLetters: WordDefinition | WordDefinition[] = definition[listString];\n timeValues.forEach((timeValue: string): void => this.parseArrayOrObject(letters, styleClass + timeValue, highlightLetters));\n });\n }\n }\n}\n\n/**\n * Hilfsklasse zum Rendern der Buchstaben der Uhr.\n * @param layout Layout-Objekt, das gerendert werden soll.\n * @param renderarea Das jQuery-gewrappte HTML-Element, auf dem gerendert werden soll.\n */\nexport class LayoutRenderer {\n public constructor(private readonly layout: Layout, private readonly renderarea: JQuery) {\n }\n\n public render(beforeshow?: () => void): void {\n if (this.layout.parsed === undefined) {\n if (this.layout.version === 2) {\n const delegate: LayoutRendererV2Delegate = new LayoutRendererV2Delegate(this.layout);\n const parsedLayout: Letter[][] = delegate.parse();\n Object.defineProperty(this.layout, 'parsed', {\n value: parsedLayout,\n writable: false,\n configurable: false\n });\n } else {\n console.warn(`Unknown layout version: '${this.layout.version}', expecting '2'`);\n return;\n }\n }\n const letters: Letter[][] = this.layout.parsed;\n this.renderarea.fadeOut('fast', (): void => {\n this.renderarea.empty();\n letters.forEach((line, index, array): void => {\n line.forEach((letter): JQuery => this.renderarea.append(letter.toString()));\n if (index < array.length - 1) {\n this.renderarea.append('
');\n }\n });\n if (beforeshow) {\n beforeshow();\n }\n this.renderarea.fadeIn('fast');\n });\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {CookieHandler} from './cookie-handler';\nimport {Globals} from './domain/globals';\nimport {Layout} from './domain/layout';\nimport {Options} from './widget/options';\nimport {Theme} from './domain/theme';\nimport {Uhr} from './uhr';\n\ndeclare var $: JQueryStatic;\n\nexport class UhrRenderer {\n private cookieHandler: CookieHandler;\n\n public constructor(\n private readonly uhr: Uhr,\n private readonly $element: JQuery,\n private readonly options: Options,\n private readonly id: string\n ) {\n this.cookieHandler = new CookieHandler(id, options.cookiePath);\n }\n\n public render(): void {\n this.setupHTML();\n this.wireFunctionality();\n }\n\n public setWidth(width: string): void {\n this.$element.css('width', width);\n const realWidth: number = this.$element.width();\n this.$element.width(realWidth);\n this.$element.height(realWidth);\n this.$element.css('font-size', (realWidth / 40) + 'px');\n }\n\n private setupHTML(): void {\n // Base clock area\n this.$element.addClass('uhr')\n .empty()\n .append('')\n .append('')\n .append('')\n .append('')\n .append('
')\n .append('
');\n\n this.setWidth(this.options.width);\n\n if (this.options.controls) {\n const controlpanel = $(`
`);\n const content = $('
');\n controlpanel.append(content);\n // on/off switch\n const toggleSwitch = $(`
`);\n toggleSwitch.append(``);\n toggleSwitch.append(``);\n content.append(toggleSwitch);\n\n // time mode switch\n const modeSwitch = $(`
`);\n modeSwitch.append(``);\n modeSwitch.append(``);\n content.append(modeSwitch);\n // language chooser\n if (Globals.hasMultipleLayouts()) {\n const languageChooser = $(``);\n Globals.getLayouts().forEach((layout: Layout): void => {\n languageChooser.append(``);\n });\n content.append(languageChooser);\n }\n\n // theme chooser\n if (Globals.hasMultipleThemes()) {\n const themeChooser = $(``);\n Globals.getThemes().forEach((theme: Theme): void => {\n themeChooser.append(``);\n });\n content.append(themeChooser);\n }\n const closebutton: JQuery = $(``);\n closebutton.on({click: (): JQuery => $(`#uhr-controlpanel${this.id}`).hide('fast')});\n content.append(closebutton);\n this.$element.after(controlpanel);\n controlpanel.hide();\n const configlink: JQuery = $(``);\n configlink.on({click: (): void => this.toggleConfigScreen()});\n this.$element.after(configlink);\n }\n }\n\n private wireFunctionality(): void {\n // on/off switch\n const toggleSwitch: JQuery = $(`#uhr-onoffswitch-checkbox${this.id}`);\n toggleSwitch.on({click: (): void => this.uhr.toggle()});\n let status = this.cookieHandler.getStatus();\n if (status === undefined || this.options.force) {\n status = this.options.status;\n }\n toggleSwitch.prop('checked', status === 'on');\n if (status === 'on') {\n this.uhr.start();\n } else {\n this.uhr.stop();\n }\n\n // time mode switch\n const modeSwitch: JQuery = $(`#uhr-modeswitch-checkbox${this.id}`);\n modeSwitch.on({\n click: (): void => {\n if (this.options.mode === 'seconds') {\n this.uhr.setMode('normal');\n } else {\n this.uhr.setMode('seconds');\n }\n }\n });\n\n let mode = this.cookieHandler.getMode();\n if (mode === undefined || this.options.force) {\n mode = this.options.mode;\n }\n modeSwitch.prop('checked', mode !== 'seconds');\n if (mode === 'seconds') {\n this.uhr.setMode('seconds');\n } else {\n this.uhr.setMode('normal');\n }\n\n // language chooser\n const languageChooser: JQuery = $(`#uhr-languagechooser${this.id}`);\n languageChooser.on({\n change: (): void => {\n const languageKey = $(`#uhr-languagechooser${this.id}`).val() as string;\n this.uhr.setLayout(languageKey);\n }\n });\n let selectedLayout = this.cookieHandler.getLayout();\n if (selectedLayout === undefined || this.options.force) {\n selectedLayout = this.options.language;\n }\n let found = Globals.getLayouts().some((item: Layout): boolean => selectedLayout === item.code);\n if (!found) {\n let fallbackLanguage;\n if (Globals.hasLayouts()) {\n fallbackLanguage = Globals.getFirstLayout().code;\n } else {\n fallbackLanguage = '';\n }\n console.warn(`Language '${selectedLayout}' not found! Using fallback '${fallbackLanguage}'.`);\n selectedLayout = fallbackLanguage;\n }\n languageChooser.val(selectedLayout);\n this.options.language = '';\n this.uhr.setLayout(selectedLayout);\n\n // theme chooser\n const themeChooser: JQuery = $(`#uhr-themechooser${this.id}`);\n themeChooser.on({\n change: (): void => {\n const themeKey = $(`#uhr-themechooser${this.id}`).val() as string;\n this.uhr.setTheme(themeKey);\n }\n });\n let selectedTheme = this.cookieHandler.getTheme();\n if (selectedTheme === undefined || this.options.force) {\n selectedTheme = this.options.theme;\n }\n found = Globals.getThemes().some((item: Theme): boolean => selectedTheme === item.styleClass);\n if (!found) {\n const fallbackTheme = Globals.getFirstTheme().styleClass;\n console.warn(`Theme '${selectedTheme}' not found! Using fallback '${fallbackTheme}'.`);\n selectedTheme = fallbackTheme;\n }\n themeChooser.val(selectedTheme);\n this.options.theme = '';\n this.uhr.setTheme(selectedTheme);\n if (this.options.autoresize) {\n $(window).on({\n resize: (): void => {\n const $parent: JQuery = this.$element.parent();\n const $window: JQuery = $(window);\n const parentWidth: number = $parent.width();\n const parentHeight: number = $parent.height();\n const windowWidth: number = $window.width();\n const windowHeight: number = $window.height();\n const size: string = `${Math.min(parentWidth, parentHeight, windowWidth, windowHeight)}px`;\n this.setWidth(size);\n }\n });\n }\n }\n\n private toggleConfigScreen(): void {\n $(`#uhr-controlpanel${this.id}`).toggle('fast');\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\n/*eslint no-undef: \"warn\"*/\nimport WidgetCommonProperties = JQueryUI.WidgetCommonProperties;\nimport {EMPTY_LAYOUT, Layout} from './domain/layout';\nimport {CookieHandler} from './cookie-handler';\nimport {Globals} from './domain/globals';\nimport {LayoutRenderer} from './layout-renderer';\nimport {UhrRenderer} from './uhr-renderer';\nimport {WidgetPrototype} from './widget/widget-prototype';\n\ndeclare var $: JQueryStatic;\n\nexport class Uhr {\n\n private timer: number = null;\n private currentMinute: number = null;\n private renderer: UhrRenderer;\n private cookieHandler: CookieHandler;\n\n public constructor(private readonly widgetInstance: WidgetPrototype & WidgetCommonProperties) {\n const userTime = this.widgetInstance.options.time;\n if (this.widgetInstance.options.time === undefined) {\n this.widgetInstance.options.time = new Date();\n }\n this.cookieHandler = new CookieHandler(this.widgetInstance.uuid, this.widgetInstance.options.cookiePath);\n this.parseHash();\n this.renderer = new UhrRenderer(this, this.widgetInstance.element, this.widgetInstance.options, this.widgetInstance.uuid);\n this.renderer.render();\n if (userTime !== undefined) {\n this.setTime(userTime);\n }\n }\n\n public destroy(): void {\n if (this.timer) {\n window.clearInterval(this.timer);\n this.timer = null;\n }\n this.widgetInstance.element\n .removeAttr('style')\n .removeAttr('class')\n .empty();\n $(`#uhr-configlink${this.widgetInstance.uuid}`).remove();\n $(`#uhr-controlpanel${this.widgetInstance.uuid}`).remove();\n }\n\n public start(): void {\n if (!this.isOn()) {\n this.timer = window.setInterval((): void => {\n this.widgetInstance.options.time = new Date();\n this.update();\n }, 1000);\n this.update();\n this.cookieHandler.setStatus('on');\n }\n }\n\n public stop(): void {\n if (this.isOn()) {\n window.clearInterval(this.timer);\n this.timer = null;\n this.update();\n this.cookieHandler.setStatus('off');\n }\n }\n\n public toggle(): void {\n if (this.isOn()) {\n this.stop();\n } else {\n this.start();\n }\n }\n\n public setLayout(key: string): void {\n if (key !== this.widgetInstance.options.language) {\n this.widgetInstance.options.language = key;\n const renderer = new LayoutRenderer(this.getCurrentLayout(), this.widgetInstance.element.find('.letterarea'));\n renderer.render((): void => {\n this.currentMinute = -1;\n this.update();\n });\n this.cookieHandler.setLayout(key);\n this.update();\n }\n }\n\n public setTheme(styleClass: string): void {\n if (styleClass !== this.widgetInstance.options.theme) {\n this.widgetInstance.element.removeClass(this.widgetInstance.options.theme).addClass(styleClass);\n $(`#uhr-onoffswitch${this.widgetInstance.uuid}`).removeClass(this.widgetInstance.options.theme).addClass(styleClass);\n this.widgetInstance.options.theme = styleClass;\n this.cookieHandler.setTheme(styleClass);\n }\n }\n\n public setTime(time: Date): void {\n this.currentMinute = null;\n if (time === null) {\n this.widgetInstance.options.time = new Date();\n } else {\n if (this.timer !== null) {\n window.clearInterval(this.timer);\n }\n this.widgetInstance.options.time = time;\n }\n this.update();\n }\n\n public setMode(mode: string): void {\n this.widgetInstance.options.mode = mode;\n this.currentMinute = null;\n this.update();\n this.cookieHandler.setMode(mode);\n }\n\n public setWidth(width: string): void {\n this.renderer.setWidth(width);\n }\n\n private isOn(): boolean {\n return this.timer !== null;\n }\n\n private update(): void {\n if (this.isOn()) {\n const time = this.widgetInstance.options.time;\n if (!this.getCurrentLayout().hasOwnProperty('seconds') && this.widgetInstance.options.mode !== 'seconds') {\n if (time.getMinutes() === this.currentMinute) {\n return;\n }\n this.currentMinute = time.getMinutes();\n }\n this.show(time);\n } else {\n this.clear();\n this.currentMinute = -1;\n }\n }\n\n private show(time: Date): void {\n const second = this.getSecond(time);\n const dotMinute = this.getDotMinute(time);\n const hour = this.getHour(time);\n const coarseMinute = this.getCoarseMinute(time);\n this.clear();\n if (this.widgetInstance.options.mode === 'seconds') {\n this.highlight(`second${second}`);\n } else {\n this.highlight('on');\n for (let i = 1; i <= dotMinute; i++) {\n this.highlight(`dot${i}`);\n }\n this.highlight(`minute${coarseMinute}`);\n this.highlight(`hour${hour}`);\n }\n }\n\n private clear(): void {\n this.widgetInstance.element.find('.item').removeClass('active');\n }\n\n private highlight(itemClass: string): void {\n this.widgetInstance.element.find(`.item.${itemClass}`).addClass('active');\n }\n\n private getSecond(time: Date): number {\n if (typeof this.getCurrentLayout().getSeconds === 'function') {\n return this.getCurrentLayout().getSeconds(time);\n }\n return time.getSeconds();\n }\n\n private getDotMinute(date: Date): number {\n if (typeof this.getCurrentLayout().getDotMinute === 'function') {\n return this.getCurrentLayout().getDotMinute(date);\n }\n return date.getMinutes() % 5;\n }\n\n private getCoarseMinute(date: Date): number {\n if (typeof this.getCurrentLayout().getCoarseMinute === 'function') {\n return this.getCurrentLayout().getCoarseMinute(date);\n }\n return date.getMinutes();\n }\n\n private getHour(date: Date): number {\n if (typeof this.getCurrentLayout().getHour === 'function') {\n return this.getCurrentLayout().getHour(date);\n }\n const hour = date.getHours();\n if (date.getMinutes() >= 25) {\n return (hour + 1) % 24;\n }\n return hour;\n }\n\n private parseHash(): void {\n let hash: string = window.location.hash;\n if (hash !== undefined && hash.charAt(0) === '#') {\n hash = hash.substring(1);\n hash = decodeURIComponent(hash);\n const params: string[] = hash.split('&');\n params.forEach((element: string): void => {\n const pair: string[] = element.split('=');\n const key = pair[0];\n const value = pair[1];\n switch (key) {\n case 'l':\n case 'language':\n this.widgetInstance.options.language = value;\n this.widgetInstance.options.force = true;\n break;\n case 't':\n case 'theme':\n this.widgetInstance.options.theme = value;\n this.widgetInstance.options.force = true;\n break;\n case 'm':\n case 'mode':\n this.widgetInstance.options.mode = value;\n this.widgetInstance.options.force = true;\n break;\n case 's':\n case 'status':\n this.widgetInstance.options.status = value;\n this.widgetInstance.options.force = true;\n break;\n }\n });\n }\n }\n\n private getCurrentLayout(): Layout {\n const matchingLanguages: Layout[] = Globals.getLayouts().filter((element: Layout): boolean => element.code === this.widgetInstance.options.language, this);\n if (matchingLanguages.length > 0) {\n return matchingLanguages[0];\n }\n // fallback: return empty object\n return EMPTY_LAYOUT;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport * as $ from 'jquery';\nimport {Globals} from './domain/globals';\n\nexport function autodetectThemes(): void {\n $('link[rel=stylesheet]').each((index, item): void => {\n const styleSheet = $(item);\n const styleClass: string = styleSheet.attr('data-class');\n if (styleClass !== undefined) {\n let name: string = styleSheet.attr('data-name');\n if (name === undefined) {\n name = styleClass;\n }\n Globals.registerTheme(name, styleClass);\n }\n });\n\n // fall-back if no theme was included\n if (!Globals.hasThemes()) {\n Globals.registerTheme('', '');\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Globals} from './domain/globals';\nimport {Layout} from './domain/layout';\nimport {Uhr} from './uhr';\nimport {WidgetPrototype} from './widget/widget-prototype';\nimport {autodetectThemes} from './theme-autodetector';\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n const widget: JQueryUI.Widget;\n}\n\n// First things first: discover included themes and register them\nautodetectThemes();\n\nconst widgetPrototype: WidgetPrototype = {\n options: {\n width: '100%',\n status: 'on',\n language: 'de_CH',\n theme: Globals.getFirstTheme().styleClass,\n force: false,\n controls: true,\n cookiePath: undefined,\n autoresize: true,\n mode: 'normal'\n },\n start: function (): void {\n this._fritteliUhrInstance.start();\n },\n stop: function (): void {\n this._fritteliUhrInstance.stop();\n },\n toggle: function (): void {\n this._fritteliUhrInstance.toggle();\n },\n language: function (key: string): void {\n this._fritteliUhrInstance.setLayout(key);\n },\n theme: function (styleClass: string): void {\n this._fritteliUhrInstance.setTheme(styleClass);\n },\n time: function (time: Date): void {\n this._fritteliUhrInstance.setTime(time);\n },\n mode: function (mode: string): void {\n this._fritteliUhrInstance.setMode(mode);\n },\n width: function (width: string): void {\n this._fritteliUhrInstance.setWidth(width);\n },\n // constructor method\n _create: function (): void {\n this._fritteliUhrInstance = new Uhr(this);\n },\n // destructor method\n _destroy: function (): void {\n this._fritteliUhrInstance.destroy();\n },\n _fritteliUhrInstance: null\n};\n$.widget('fritteli.uhr', widgetPrototype);\n\n$.fritteli.uhr.register = Globals.registerLayout;\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\n\n// We just need to reference all required files at least once, so that the tree-shaker won't remove them from\n// the bundle.\nimport * as uhr from './index';\nimport {LayoutDe} from './layout/layout-de';\nimport {LayoutDeCh} from './layout/layout-de_ch';\nimport {LayoutDeChGenau} from './layout/layout-de_ch_genau';\nimport {LayoutDk} from './layout/layout-dk';\nimport {LayoutEn} from './layout/layout-en';\nimport {LayoutEs} from './layout/layout-es';\nimport {LayoutFr} from './layout/layout-fr';\nimport {LayoutIt} from './layout/layout-it';\nimport {LayoutNl} from './layout/layout-nl';\nimport {LayoutPt} from './layout/layout-pt';\n\n/*eslint no-unused-vars: \"warn\"*/\n/*eslint @typescript-eslint/no-unused-vars: \"warn\"*/\n\nlet a = uhr;\na = LayoutDeCh;\na = LayoutDeChGenau;\na = LayoutDe;\na = LayoutDk;\na = LayoutEn;\na = LayoutEs;\na = LayoutFr;\na = LayoutIt;\na = LayoutNl;\na = LayoutPt;\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///external \"Cookies\"","webpack:///external \"jQuery\"","webpack:///./src/layout/layout-de.ts","webpack:///./src/layout/layout-de_ch.ts","webpack:///./src/layout/layout-de_ch_genau.ts","webpack:///./src/layout/layout-dk.ts","webpack:///./src/layout/layout-en.ts","webpack:///./src/layout/layout-es.ts","webpack:///./src/layout/layout-fr.ts","webpack:///./src/layout/layout-it.ts","webpack:///./src/layout/layout-nl.ts","webpack:///./src/layout/layout-pt.ts","webpack:///./src/domain/globals.ts","webpack:///./src/domain/layout.ts","webpack:///./src/cookie-handler.ts","webpack:///./src/domain/letter.ts","webpack:///./src/layout-renderer.ts","webpack:///./src/uhr-renderer.ts","webpack:///./src/uhr.ts","webpack:///./src/theme-autodetector.ts","webpack:///./src/index.ts","webpack:///./src/bundle.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","Cookies","jQuery","__webpack_exports__","LayoutDe","nach","4","vor","halb","5","fuenf","1","zehn","2","zwanzig","code","hours","0,12","9","1,13","6","2,14","3,15","7","4,16","5,17","6,18","8","7,19","8,20","9,21","10","10,22","11,23","letters","minutes","0,1,2,3,4","5,6,7,8,9","10,11,12,13,14","15,16,17,18,19","3","20,21,22,23,24","25,26,27,28,29","30,31,32,33,34","35,36,37,38,39","40,41,42,43,44","45,46,47,48,49","50,51,52,53,54","55,56,57,58,59","permanent","prettyName","version","$","fritteli","uhr","register","LayoutDeCh","ab","haubi","fuef","zae","viertu","zwaenzg","LayoutDeChGenau","0","LayoutDk","minutter","over","fem","ti","kvart","tyve","halv","LayoutEn","to","past","five","ten","aQuarter","twenty","twentyfive","getHour","time","hour","getHours","getMinutes","LayoutEs","sonLas","y","menos","cinco","diez","cuarto","veinte","veinticinco","LayoutFr","et","moins","heures","cinq","dix","quart","vingt","vingtcinq","12","LayoutIt","sonoLe","e","meno","cinque","dieci","unQuarto","venti","venticinque","LayoutNl","over1","voor1","half","vijf","tien","kwart","LayoutPt","sao","e1","e2","dez","umQuarto","vinte","Globals","registerTheme","styleClass","themes","some","console","warn","push","hasThemes","length","hasMultipleThemes","getFirstTheme","getTheme","index","getThemes","registerLayout","layout","layouts","element","error","sort","a","b","localeCompare","hasLayouts","hasMultipleLayouts","getFirstLayout","getLayouts","EMPTY_LAYOUT","cookie_handler_CookieHandler","CookieHandler","widgetId","cookiePath","this","getLayout","oldCookie","getCookie","removeCookie","setLayout","setCookie","getMode","setMode","getStatus","setStatus","status","setTheme","theme","cookieName","external_Cookies_","cookieValue","options","expires","path","Letter","style","addStyle","toString","layout_renderer_LayoutRendererV2Delegate","LayoutRendererV2Delegate","parse","forEach","lineString","line","parseArrayOrObject","seconds","parseTimeDefinition","parseObject","keys","map","Number","x","input","_this","Array","isArray","item","definition","listString","timeValues","split","highlightLetters","timeValue","vorne0","hinten0","vorne1","hinten1","vorne2","hinten2","vorne3","hinten3","vorne4","hinten4","vorne5","hinten5","hinten6","hinten7","hinten8","hinten9","11","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59","LayoutRenderer","renderarea","render","beforeshow","undefined","parsed","parsedLayout","writable","configurable","fadeOut","empty","array","letter","append","fadeIn","uhr_renderer_UhrRenderer","UhrRenderer","$element","id","cookieHandler","setupHTML","wireFunctionality","setWidth","width","css","realWidth","height","addClass","controls","controlpanel","content","toggleSwitch","modeSwitch","languageChooser_1","themeChooser_1","closebutton","on","click","hide","after","configlink","toggleConfigScreen","toggle","force","prop","start","stop","languageChooser","change","languageKey","val","selectedLayout","language","found","fallbackLanguage","themeChooser","themeKey","selectedTheme","fallbackTheme","autoresize","window","resize","$parent","parent","$window","parentWidth","parentHeight","windowWidth","windowHeight","size","Math","min","uhr_Uhr","Uhr","widgetInstance","timer","currentMinute","userTime","Date","uuid","parseHash","renderer","setTime","destroy","clearInterval","removeAttr","remove","isOn","setInterval","update","getCurrentLayout","find","removeClass","show","clear","second","getSecond","dotMinute","getDotMinute","coarseMinute","getCoarseMinute","highlight","itemClass","getSeconds","date","hash","location","charAt","substring","decodeURIComponent","pair","matchingLanguages","filter","external_jQuery_","each","styleSheet","attr","name_1","widgetPrototype","_fritteliUhrInstance","_create","_destroy","widget","_layout_layout_de__WEBPACK_IMPORTED_MODULE_1__","_layout_layout_de_ch__WEBPACK_IMPORTED_MODULE_2__","_layout_layout_de_ch_genau__WEBPACK_IMPORTED_MODULE_3__","_layout_layout_dk__WEBPACK_IMPORTED_MODULE_4__","_layout_layout_en__WEBPACK_IMPORTED_MODULE_5__","_layout_layout_es__WEBPACK_IMPORTED_MODULE_6__","_layout_layout_fr__WEBPACK_IMPORTED_MODULE_7__","_layout_layout_it__WEBPACK_IMPORTED_MODULE_8__","_layout_layout_nl__WEBPACK_IMPORTED_MODULE_9__","_layout_layout_pt__WEBPACK_IMPORTED_MODULE_10__"],"mappings":"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","file":"lib/uhr.bundle.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 13);\n","module.exports = Cookies;","module.exports = jQuery;","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst esIst: WordDefinition = {1: [1, 2, 4, 5, 6]};\nconst uhr: WordDefinition = {10: [9, 10, 11]};\nconst nach: WordDefinition = {4: [8, 9, 10, 11]};\nconst vor: WordDefinition = {4: [1, 2, 3]};\nconst halb: WordDefinition = {5: [1, 2, 3, 4]};\nconst fuenf: WordDefinition = {1: [8, 9, 10, 11]};\nconst zehn: WordDefinition = {2: [1, 2, 3, 4]};\nconst viertel: WordDefinition = {3: [5, 6, 7, 8, 9, 10, 11]};\nconst zwanzig: WordDefinition = {2: [5, 6, 7, 8, 9, 10, 11]};\nconst dreiviertel: WordDefinition = {3: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]};\n\nexport const LayoutDe: Layout = {\n code: 'de',\n hours: {\n '0,12': {9: [7, 8, 9, 10, 11]},\n '1,13': {6: [1, 2, 3, 4]},\n '2,14': {6: [8, 9, 10, 11]},\n '3,15': {7: [1, 2, 3, 4]},\n '4,16': {7: [8, 9, 10, 11]},\n '5,17': {5: [8, 9, 10, 11]},\n '6,18': {8: [1, 2, 3, 4, 5]},\n '7,19': {9: [1, 2, 3, 4, 5, 6]},\n '8,20': {8: [8, 9, 10, 11]},\n '9,21': {10: [4, 5, 6, 7]},\n '10,22': {10: [1, 2, 3, 4]},\n '11,23': {5: [6, 7, 8]}\n },\n letters: [\n 'ESKISTAFÜNF',\n 'ZEHNZWANZIG',\n 'DREIVIERTEL',\n 'VORFUNKNACH',\n 'HALBAELFÜNF',\n 'EINSXAMZWEI',\n 'DREIPMJVIER',\n 'SECHSNLACHT',\n 'SIEBENZWÖLF',\n 'ZEHNEUNKUHR'\n ],\n minutes: {\n '0,1,2,3,4': uhr,\n '5,6,7,8,9': [fuenf, nach],\n '10,11,12,13,14': [zehn, nach],\n '15,16,17,18,19': [viertel, nach],\n '20,21,22,23,24': [zwanzig, nach],\n '25,26,27,28,29': [fuenf, vor, halb],\n '30,31,32,33,34': halb,\n '35,36,37,38,39': [fuenf, nach, halb],\n '40,41,42,43,44': [zwanzig, vor],\n '45,46,47,48,49': dreiviertel,\n '50,51,52,53,54': [zehn, vor],\n '55,56,57,58,59': [fuenf, vor]\n },\n permanent: esIst,\n prettyName: 'Deutsch',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutDe);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst esIsch: WordDefinition = {1: [1, 2, 4, 5, 6, 7]};\nconst ab: WordDefinition = {4: [1, 2]};\nconst vor: WordDefinition = {3: [9, 10, 11]};\nconst haubi: WordDefinition = {4: [4, 5, 6, 7, 8]};\nconst fuef: WordDefinition = {1: [9, 10, 11]};\nconst zae: WordDefinition = {2: [9, 10, 11]};\nconst viertu: WordDefinition = {2: [1, 2, 3, 4, 5, 6]};\nconst zwaenzg: WordDefinition = {3: [1, 2, 3, 4, 5, 6]};\n\nexport const LayoutDeCh: Layout = {\n code: 'de_CH',\n hours: {\n '0,12': {10: [1, 2, 3, 4, 5, 6]},\n '1,13': {5: [1, 2, 3]},\n '2,14': {5: [4, 5, 6, 7]},\n '3,15': {5: [9, 10, 11]},\n '4,16': {6: [1, 2, 3, 4, 5]},\n '5,17': {6: [6, 7, 8, 9]},\n '6,18': {7: [1, 2, 3, 4, 5, 6]},\n '7,19': {7: [7, 8, 9, 10, 11]},\n '8,20': {8: [1, 2, 3, 4, 5]},\n '9,21': {8: [6, 7, 8, 9]},\n '10,22': {9: [1, 2, 3, 4]},\n '11,23': {9: [8, 9, 10, 11]}\n },\n letters: [\n 'ESKISCHAFÜF',\n 'VIERTUBFZÄÄ',\n 'ZWÄNZGSIVOR',\n 'ABOHAUBIEGE',\n 'EISZWÖISDRÜ',\n 'VIERIFÜFIQT',\n 'SÄCHSISIBNI',\n 'ACHTINÜNIEL',\n 'ZÄNIERBEUFI',\n 'ZWÖUFINAUHR'\n ],\n minutes: {\n '5,6,7,8,9': [fuef, ab],\n '10,11,12,13,14': [zae, ab],\n '15,16,17,18,19': [viertu, ab],\n '20,21,22,23,24': [zwaenzg, ab],\n '25,26,27,28,29': [fuef, vor, haubi],\n '30,31,32,33,34': haubi,\n '35,36,37,38,39': [fuef, ab, haubi],\n '40,41,42,43,44': [zwaenzg, vor],\n '45,46,47,48,49': [viertu, vor],\n '50,51,52,53,54': [zae, vor],\n '55,56,57,58,59': [fuef, vor]\n },\n permanent: esIsch,\n prettyName: 'Bärndütsch',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutDeCh);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst esIsch: WordDefinition = {1: [1, 2, 4, 5, 6, 7]};\nconst genau: WordDefinition = {3: [7, 8, 9, 10, 11]};\nconst ab: WordDefinition = {4: [4, 5]};\nconst vor: WordDefinition = {4: [1, 2, 3]};\nconst haubi: WordDefinition = {4: [7, 8, 9, 10, 11]};\nconst fuef: WordDefinition = {1: [9, 10, 11]};\nconst zae: WordDefinition = {2: [9, 10, 11]};\nconst viertu: WordDefinition = {2: [1, 2, 3, 4, 5, 6]};\nconst zwaenzg: WordDefinition = {3: [1, 2, 3, 4, 5, 6]};\n\nexport const LayoutDeChGenau: Layout = {\n code: 'de_CH_genau',\n hours: {\n '0,12': {10: [1, 2, 3, 4, 5, 6]},\n '1,13': {5: [1, 2, 3]},\n '2,14': {5: [4, 5, 6, 7]},\n '3,15': {5: [9, 10, 11]},\n '4,16': {6: [1, 2, 3, 4, 5]},\n '5,17': {6: [6, 7, 8, 9]},\n '6,18': {7: [1, 2, 3, 4, 5, 6]},\n '7,19': {7: [7, 8, 9, 10, 11]},\n '8,20': {8: [1, 2, 3, 4, 5]},\n '9,21': {8: [6, 7, 8, 9]},\n '10,22': {9: [1, 2, 3, 4]},\n '11,23': {9: [8, 9, 10, 11]}\n },\n letters: [\n 'ESKISCHAFÜF',\n 'VIERTUBFZÄÄ',\n 'ZWÄNZGGENAU',\n 'VORABOHAUBI',\n 'EISZWÖISDRÜ',\n 'VIERIFÜFIQT',\n 'SÄCHSISIBNI',\n 'ACHTINÜNIEL',\n 'ZÄNIERBEUFI',\n 'ZWÖUFINAUHR'\n ],\n minutes: {\n '0': genau,\n '5,6,7,8,9': [fuef, ab],\n '10,11,12,13,14': [zae, ab],\n '15,16,17,18,19': [viertu, ab],\n '20,21,22,23,24': [zwaenzg, ab],\n '25,26,27,28,29': [fuef, vor, haubi],\n '30,31,32,33,34': haubi,\n '35,36,37,38,39': [fuef, ab, haubi],\n '40,41,42,43,44': [zwaenzg, vor],\n '45,46,47,48,49': [viertu, vor],\n '50,51,52,53,54': [zae, vor],\n '55,56,57,58,59': [fuef, vor]\n },\n permanent: esIsch,\n prettyName: 'Bärndütsch (genau)',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutDeChGenau);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst klokkenEr: WordDefinition = {1: [1, 2, 3, 4, 5, 6, 7, 9, 10]};\nconst minutter: WordDefinition = {4: [4, 5, 6, 7, 8, 9, 10, 11]};\nconst i: WordDefinition = {5: [8]};\nconst over: WordDefinition = {5: [4, 5, 6, 7]};\nconst fem: WordDefinition = {2: [1, 2, 3]};\nconst ti: WordDefinition = {4: [1, 2]};\nconst kvart: WordDefinition = {3: [4, 5, 6, 7, 8]};\nconst tyve: WordDefinition = {2: [4, 5, 6, 7]};\nconst halv: WordDefinition = {6: [8, 9, 10, 11]};\n\nexport const LayoutDk: Layout = {\n code: 'dk',\n hours: {\n '0,12': {10: [8, 9, 10, 11]},\n '1,13': {7: [1, 2]},\n '2,14': {7: [3, 4]},\n '3,15': {7: [5, 6, 7]},\n '4,16': {7: [8, 9, 10, 11]},\n '5,17': {8: [1, 2, 3]},\n '6,18': {8: [4, 5, 6, 7]},\n '7,19': {8: [9, 10, 11]},\n '8,20': {9: [1, 2, 3, 4]},\n '9,21': {9: [6, 7]},\n '10,22': {9: [10, 11]},\n '11,23': {10: [1, 2, 3, 4, 5, 6]}\n },\n letters: [\n 'KLOKKENVERO',\n 'FEMTYVESKLA',\n 'OJEKVARTVAT',\n 'TIAMINUTTER',\n 'VEMOVERILMF',\n 'MONALISHALV',\n 'ETTOTREFIRE',\n 'FEMSEKSRSYV',\n 'OTTERNIMETI',\n 'ELLEVEATOLV'\n ],\n minutes: {\n '5,6,7,8,9': [fem, minutter, over],\n '10,11,12,13,14': [ti, minutter, over],\n '15,16,17,18,19': [kvart, over],\n '20,21,22,23,24': [tyve, minutter, over],\n '25,26,27,28,29': [fem, minutter, i, halv],\n '30,31,32,33,34': [halv],\n '35,36,37,38,39': [fem, minutter, over, halv],\n '40,41,42,43,44': [tyve, minutter, i],\n '45,46,47,48,49': [kvart, i],\n '50,51,52,53,54': [ti, minutter, i],\n '55,56,57,58,59': [fem, minutter, i]\n },\n permanent: klokkenEr,\n prettyName: 'Dansk',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutDk);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst itIs: WordDefinition = {1: [1, 2, 4, 5]};\nconst half: WordDefinition = {4: [1, 2, 3, 4]};\nconst to: WordDefinition = {4: [10, 11]};\nconst past: WordDefinition = {5: [1, 2, 3, 4]};\nconst oClock: WordDefinition = {10: [5, 6, 7, 8, 9, 10, 11]};\nconst five: WordDefinition = {3: [7, 8, 9, 10]};\nconst ten: WordDefinition = {4: [6, 7, 8]};\nconst aQuarter: WordDefinition = {2: [1, 3, 4, 5, 6, 7, 8, 9]};\nconst twenty: WordDefinition = {3: [1, 2, 3, 4, 5, 6]};\nconst twentyfive: WordDefinition = {3: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]};\n\nexport const LayoutEn: Layout = {\n code: 'en',\n getHour: (time: Date): number => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n\n hours: {\n '0,12': {9: [6, 7, 8, 9, 10, 11]},\n '1,13': {6: [1, 2, 3]},\n '2,14': {7: [9, 10, 11]},\n '3,15': {6: [7, 8, 9, 10, 11]},\n '4,16': {7: [1, 2, 3, 4]},\n '5,17': {7: [5, 6, 7, 8]},\n '6,18': {6: [4, 5, 6]},\n '7,19': {9: [1, 2, 3, 4, 5]},\n '8,20': {8: [1, 2, 3, 4, 5]},\n '9,21': {5: [8, 9, 10, 11]},\n '10,22': {10: [1, 2, 3]},\n '11,23': {8: [6, 7, 8, 9, 10, 11]}\n },\n letters: [\n 'ITLISBFAMPM',\n 'ACQUARTERDC',\n 'TWENTYFIVEX',\n 'HALFBTENFTO',\n 'PASTERUNINE',\n 'ONESIXTHREE',\n 'FOURFIVETWO',\n 'EIGHTELEVEN',\n 'SEVENTWELVE',\n 'TENSO\\'CLOCK'\n ],\n minutes: {\n '0,1,2,3,4': oClock,\n '5,6,7,8,9': [five, past],\n '10,11,12,13,14': [ten, past],\n '15,16,17,18,19': [aQuarter, past],\n '20,21,22,23,24': [twenty, past],\n '25,26,27,28,29': [twentyfive, past],\n '30,31,32,33,34': [half, past],\n '35,36,37,38,39': [twentyfive, to],\n '40,41,42,43,44': [twenty, to],\n '45,46,47,48,49': [aQuarter, to],\n '50,51,52,53,54': [ten, to],\n '55,56,57,58,59': [five, to]\n },\n permanent: itIs,\n prettyName: 'English',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutEn);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst esLa: WordDefinition = {1: [1, 2, 6, 7]};\nconst sonLas: WordDefinition = {1: [2, 3, 4, 6, 7, 8]};\nconst y: WordDefinition = {7: [6]};\nconst menos: WordDefinition = {7: [7, 8, 9, 10, 11]};\nconst media: WordDefinition = {10: [1, 2, 3, 4, 5]};\nconst cinco: WordDefinition = {9: [7, 8, 9, 10, 11]};\nconst diez: WordDefinition = {8: [8, 9, 10, 11]};\nconst cuarto: WordDefinition = {10: [6, 7, 8, 9, 10, 11]};\nconst veinte: WordDefinition = {8: [2, 3, 4, 5, 6, 7]};\nconst veinticinco: WordDefinition = {9: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]};\n\nexport const LayoutEs: Layout = {\n code: 'es',\n getHour: (time: Date): number => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n\n hours: {\n '0,12': [sonLas, {7: [1, 2, 3, 4]}],\n '1,13': [esLa, {1: [9, 10, 11]}],\n '2,14': [sonLas, {2: [1, 2, 3]}],\n '3,15': [sonLas, {2: [5, 6, 7, 8]}],\n '4,16': [sonLas, {3: [1, 2, 3, 4, 5, 6]}],\n '5,17': [sonLas, {3: [7, 8, 9, 10, 11]}],\n '6,18': [sonLas, {4: [1, 2, 3, 4]}],\n '7,19': [sonLas, {4: [6, 7, 8, 9, 10]}],\n '8,20': [sonLas, {5: [1, 2, 3, 4]}],\n '9,21': [sonLas, {5: [5, 6, 7, 8, 9]}],\n '10,22': [sonLas, {6: [3, 4, 5, 6]}],\n '11,23': [sonLas, {6: [8, 9, 10, 11]}]\n },\n letters: [\n 'ESONELASUNA',\n 'DOSITRESORE',\n 'CUATROCINCO',\n 'SEISASIETEN',\n 'OCHONUEVEYO',\n 'LADIEZSONCE',\n 'DOCELYMENOS',\n 'OVEINTEDIEZ',\n 'VEINTICINCO',\n 'MEDIACUARTO'\n ],\n minutes: {\n '5,6,7,8,9': [y, cinco],\n '10,11,12,13,14': [y, diez],\n '15,16,17,18,19': [y, cuarto],\n '20,21,22,23,24': [y, veinte],\n '25,26,27,28,29': [y, veinticinco],\n '30,31,32,33,34': [y, media],\n '35,36,37,38,39': [menos, veinticinco],\n '40,41,42,43,44': [menos, veinte],\n '45,46,47,48,49': [menos, cuarto],\n '50,51,52,53,54': [menos, diez],\n '55,56,57,58,59': [menos, cinco]\n },\n permanent: null,\n prettyName: 'Español',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutEs);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst ilEst: WordDefinition = {1: [1, 2, 4, 5, 6]};\nconst et: WordDefinition = {8: [1, 2]};\nconst moins: WordDefinition = {7: [1, 2, 3, 4, 5]};\nconst demie: WordDefinition = {10: [4, 5, 6, 7, 8]};\nconst heures: WordDefinition = {6: [6, 7, 8, 9, 10, 11]};\nconst le: WordDefinition = {7: [7, 8]};\nconst cinq: WordDefinition = {9: [7, 8, 9, 10]};\nconst dix: WordDefinition = {7: [9, 10, 11]};\nconst quart: WordDefinition = {8: [4, 5, 6, 7, 8]};\nconst vingt: WordDefinition = {9: [1, 2, 3, 4, 5]};\nconst vingtcinq: WordDefinition = {9: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]};\n\nexport const LayoutFr: Layout = {\n code: 'fr',\n getHour: (time: Date): number => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n hours: {\n '0': {5: [6, 7, 8, 9, 10, 11]},\n '1,13': [\n {3: [5, 6, 7]},\n heures\n ],\n '2,14': [\n {1: [8, 9, 10, 11]},\n heures\n ],\n '3,15': [\n {2: [7, 8, 9, 10, 11]},\n heures\n ],\n '4,16': [\n {2: [1, 2, 3, 4, 5, 6]},\n heures\n ],\n '5,17': [\n {4: [8, 9, 10, 11]},\n heures\n ],\n '6,18': [\n {4: [5, 6, 7]},\n heures\n ],\n '7,19': [\n {3: [8, 9, 10, 11]},\n heures\n ],\n '8,20': [\n {4: [1, 2, 3, 4]},\n heures\n ],\n '9,21': [\n {3: [1, 2, 3, 4]},\n heures\n ],\n '10,22': [\n {5: [3, 4, 5]},\n heures\n ],\n '11,23': [\n {6: [1, 2, 3, 4]},\n heures\n ],\n '12': {5: [1, 2, 3, 4]}\n },\n letters: [\n 'ILNESTODEUX',\n 'QUATRETROIS',\n 'NEUFUNESEPT',\n 'HUITSIXCINQ',\n 'MIDIXMINUIT',\n 'ONZERHEURES',\n 'MOINSOLEDIX',\n 'ETRQUARTPMD',\n 'VINGT-CINQU',\n 'ETSDEMIEPAM'\n ],\n minutes: {\n '5,6,7,8,9': cinq,\n '10,11,12,13,14': dix,\n '15,16,17,18,19': [et, quart],\n '20,21,22,23,24': vingt,\n '25,26,27,28,29': vingtcinq,\n '30,31,32,33,34': [et, demie],\n '35,36,37,38,39': [moins, vingtcinq],\n '40,41,42,43,44': [moins, vingt],\n '45,46,47,48,49': [moins, le, quart],\n '50,51,52,53,54': [moins, dix],\n '55,56,57,58,59': [moins, cinq]\n },\n permanent: ilEst,\n prettyName: 'Français',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutFr);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst sonoLe: WordDefinition = {1: [1, 2, 3, 4, 6, 7]};\nconst eL: WordDefinition = {2: [1, 3, 4]};\nconst e: WordDefinition = {8: [1]};\nconst meno: WordDefinition = {7: [8, 9, 10, 11]};\nconst mezza: WordDefinition = {10: [7, 8, 9, 10, 11]};\nconst cinque: WordDefinition = {9: [6, 7, 8, 9, 10, 11]};\nconst dieci: WordDefinition = {10: [1, 2, 3, 4, 5]};\nconst unQuarto: WordDefinition = {8: [3, 4, 6, 7, 8, 9, 10, 11]};\nconst venti: WordDefinition = {9: [1, 2, 3, 4, 5]};\nconst venticinque: WordDefinition = {9: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]};\n\nexport const LayoutIt: Layout = {\n code: 'it',\n getHour: (time: Date): number => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n hours: {\n '0,12': [sonoLe, {5: [1, 2, 3, 4, 5, 6]}],\n '1,13': [eL, {2: [5, 6, 7]}],\n '2,14': [sonoLe, {2: [9, 10, 11]}],\n '3,15': [sonoLe, {3: [1, 2, 3]}],\n '4,16': [sonoLe, {6: [1, 2, 3, 4, 5, 6, 7]}],\n '5,17': [sonoLe, {7: [1, 2, 3, 4, 5, 6]}],\n '6,18': [sonoLe, {6: [9, 10, 11]}],\n '7,19': [sonoLe, {5: [7, 8, 9, 10, 11]}],\n '8,20': [sonoLe, {3: [4, 5, 6, 7]}],\n '9,21': [sonoLe, {3: [8, 9, 10, 11]}],\n '10,22': [sonoLe, {4: [1, 2, 3, 4, 5]}],\n '11,23': [sonoLe, {4: [6, 7, 8, 9, 10, 11]}]\n },\n letters: [\n 'SONORLEBORE',\n 'ÈRL\\'UNASDUE',\n 'TREOTTONOVE',\n 'DIECIUNDICI',\n 'DODICISETTE',\n 'QUATTROCSEI',\n 'CINQUEAMENO',\n 'ECUNOQUARTO',\n 'VENTICINQUE',\n 'DIECIPMEZZA'\n ],\n minutes: {\n '5,6,7,8,9': [e, cinque],\n '10,11,12,13,14': [e, dieci],\n '15,16,17,18,19': [e, unQuarto],\n '20,21,22,23,24': [e, venti],\n '25,26,27,28,29': [e, venticinque],\n '30,31,32,33,34': [e, mezza],\n '35,36,37,38,39': [meno, venticinque],\n '40,41,42,43,44': [meno, venti],\n '45,46,47,48,49': [meno, unQuarto],\n '50,51,52,53,54': [meno, dieci],\n '55,56,57,58,59': [meno, cinque]\n },\n permanent: null,\n prettyName: 'Italiano',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutIt);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst hetIs: WordDefinition = {1: [1, 2, 3, 5, 6]};\nconst over1: WordDefinition = {3: [1, 2, 3, 4]};\nconst voor1: WordDefinition = {2: [8, 9, 10, 11]};\nconst over2: WordDefinition = {4: [8, 9, 10, 11]};\nconst voor2: WordDefinition = {5: [1, 2, 3, 4]};\nconst half: WordDefinition = {4: [1, 2, 3, 4]};\nconst vijf: WordDefinition = {1: [8, 9, 10, 11]};\nconst tien: WordDefinition = {2: [1, 2, 3, 4]};\nconst kwart: WordDefinition = {3: [7, 8, 9, 10, 11]};\nconst uur: WordDefinition = {10: [9, 10, 11]};\n\nexport const LayoutNl: Layout = {\n code: 'nl',\n getHour: (time: Date): number => {\n const hour = time.getHours();\n if (time.getMinutes() >= 20) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n hours: {\n '0,12': {10: [1, 2, 3, 4, 5, 6]},\n '1,13': {5: [8, 9, 10]},\n '2,14': {6: [1, 2, 3, 4]},\n '3,15': {6: [8, 9, 10, 11]},\n '4,16': {7: [1, 2, 3, 4]},\n '5,17': {7: [5, 6, 7, 8]},\n '6,18': {7: [9, 10, 11]},\n '7,19': {8: [1, 2, 3, 4, 5]},\n '8,20': {9: [1, 2, 3, 4]},\n '9,21': {8: [7, 8, 9, 10, 11]},\n '10,22': {9: [5, 6, 7, 8]},\n '11,23': {9: [9, 10, 11]}\n },\n letters: [\n 'HETKISAVIJF',\n 'TIENBTZVOOR',\n 'OVERMEKWART',\n 'HALFSPWOVER',\n 'VOORTHGEENS',\n 'TWEEPVCDRIE',\n 'VIERVIJFZES',\n 'ZEVENONEGEN',\n 'ACHTTIENELF',\n 'TWAALFBFUUR'\n ],\n minutes: {\n '0,1,2,3,4': uur,\n '5,6,7,8,9': [vijf, over1],\n '10,11,12,13,14': [tien, over1],\n '15,16,17,18,19': [kwart, over2],\n '20,21,22,23,24': [tien, voor1, half],\n '25,26,27,28,29': [vijf, voor1, half],\n '30,31,32,33,34': half,\n '35,36,37,38,39': [vijf, over1, half],\n '40,41,42,43,44': [tien, over1, half],\n '45,46,47,48,49': [kwart, voor2],\n '50,51,52,53,54': [tien, voor1],\n '55,56,57,58,59': [vijf, voor1]\n },\n permanent: hetIs,\n prettyName: 'Nederlands',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutNl);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, WordDefinition} from '../domain/layout';\n\nconst e: WordDefinition = {1: [1]};\nconst sao: WordDefinition = {1: [2, 3, 4]};\nconst e1: WordDefinition = {7: [8]};\nconst e2: WordDefinition = {10: [5]};\nconst menos: WordDefinition = {7: [7, 8, 9, 10, 11]};\nconst meia: WordDefinition = {8: [8, 9, 10, 11]};\nconst cinco: WordDefinition = {10: [7, 8, 9, 10, 11]};\nconst dez: WordDefinition = {10: [1, 2, 3]};\nconst umQuarto: WordDefinition = {9: [1, 2, 4, 5, 6, 7, 8, 9]};\nconst vinte: WordDefinition = {8: [1, 2, 3, 4, 5]};\n\nexport const LayoutPt: Layout = {\n code: 'pt',\n getHour: (time: Date): number => {\n const hour = time.getHours();\n if (time.getMinutes() >= 35) {\n return (hour + 1) % 24;\n }\n return hour;\n },\n hours: {\n '0': [e, {'6': [2, 3, 4, 5, 7, 8, 9, 10, 11]}],\n '12': [e, {'2': [1, 2, 3, 4, 6, 7, 8]}],\n '1,13': [e, {'1': [5, 6, 7]}],\n '2,14': [sao, {'3': [1, 2, 3, 4]}],\n '3,15': [sao, {'1': [8, 9, 10, 11]}],\n '4,16': [sao, {'4': [1, 2, 3, 4, 5, 6]}],\n '5,17': [sao, {'5': [1, 2, 3, 4, 5]}],\n '6,18': [sao, {'3': [4, 5, 6, 7]}],\n '7,19': [sao, {'3': [7, 8, 9, 10]}],\n '8,20': [sao, {'5': [5, 6, 7, 8]}],\n '9,21': [sao, {'4': [8, 9, 10, 11]}],\n '10,22': [sao, {'2': [9, 10, 11]}],\n '11,23': [sao, {'5': [8, 9, 10, 11]}]\n },\n letters: [\n 'ÉSÃOUMATRÊS',\n 'MEIOLDIADEZ',\n 'DUASEISETEY',\n 'QUATROHNOVE',\n 'CINCOITONZE',\n 'ZMEIALNOITE',\n 'HORASYMENOS',\n 'VINTECAMEIA',\n 'UMVQUARTOPM',\n 'DEZOEYCINCO'\n ],\n minutes: {\n '5,6,7,8,9': [e1, cinco],\n '10,11,12,13,14': [e1, dez],\n '15,16,17,18,19': [e1, umQuarto],\n '20,21,22,23,24': [e1, vinte],\n '25,26,27,28,29': [e1, vinte, e2, cinco],\n '30,31,32,33,34': [e1, meia],\n '35,36,37,38,39': [menos, vinte, e2, cinco],\n '40,41,42,43,44': [menos, vinte],\n '45,46,47,48,49': [menos, umQuarto],\n '50,51,52,53,54': [menos, dez],\n '55,56,57,58,59': [menos, cinco]\n },\n permanent: null,\n prettyName: 'Português',\n version: 2\n};\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n}\n\n$.fritteli.uhr.register(LayoutPt);\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout} from './layout';\nimport {Theme} from './theme';\n\nexport class Globals {\n private static layouts: Layout[] = [];\n private static themes: Theme[] = [];\n\n public static registerTheme(name: string, styleClass: string): void {\n if (Globals.themes.some((value): boolean => value.name === name)) {\n console.warn(`Theme with name '${name}' already registered; ignoring register request for styleClass '${styleClass}'.`);\n } else {\n Globals.themes.push({\n name,\n styleClass\n });\n }\n }\n\n public static hasThemes(): boolean {\n return Globals.themes.length > 0;\n }\n\n public static hasMultipleThemes(): boolean {\n return Globals.themes.length > 1;\n }\n\n public static getFirstTheme(): Theme {\n return Globals.getTheme(0);\n }\n\n public static getTheme(index: number): Theme {\n return Globals.themes[index];\n }\n\n public static getThemes(): Theme[] {\n return Globals.themes;\n }\n\n public static registerLayout(layout: Layout): void {\n const available = !Globals.layouts.some((element): boolean => {\n if (layout.code === element.code) {\n if (layout.prettyName !== element.prettyName) {\n console.error(\n `Error: Language code '${layout.code}' cannot be registered for layout '${layout.prettyName}' because it is already registered for layout '${element.prettyName}'!`\n );\n }\n return true;\n }\n return false;\n });\n if (available) {\n Globals.layouts.push(layout);\n Globals.layouts.sort((a, b): number => a.prettyName.localeCompare(b.prettyName));\n }\n }\n\n public static hasLayouts(): boolean {\n return Globals.layouts.length > 0;\n }\n\n public static hasMultipleLayouts(): boolean {\n return Globals.layouts.length > 1;\n }\n\n public static getFirstLayout(): Layout {\n return Globals.layouts[0];\n }\n\n public static getLayouts(): Layout[] {\n return Globals.layouts;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Letter} from './letter';\n\nexport interface Layout {\n readonly code: string;\n getCoarseMinute?: (time: Date) => number;\n getDotMinute?: (time: Date) => number;\n getHour?: (time: Date) => number;\n getSeconds?: (time: Date) => number;\n readonly hours: TimeDefinition;\n readonly letters: string[];\n readonly minutes: TimeDefinition;\n parsed?: Letter[][];\n readonly permanent: WordDefinition | WordDefinition[];\n readonly prettyName: string;\n seconds?: TimeDefinition;\n readonly version: number;\n}\n\nexport interface WordDefinition {\n [line: number]: number[];\n}\n\nexport interface TimeDefinition {\n [values: string]: WordDefinition | WordDefinition[];\n}\n\nexport const EMPTY_LAYOUT: Layout = {\n code: null,\n hours: null,\n letters: [],\n minutes: null,\n permanent: [],\n prettyName: null,\n version: 2\n};\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport * as Cookies from 'js-cookie';\n\nexport class CookieHandler {\n public constructor(private readonly widgetId: string, private readonly cookiePath?: string) {\n }\n\n public getLayout(): string {\n const oldCookie = this.getCookie('uhr-language');\n if (oldCookie) {\n // aha, old cookie is set. migrate to new one!\n this.removeCookie('uhr-language');\n this.setLayout(oldCookie);\n }\n return this.getCookie('uhr-layout');\n }\n\n public setLayout(layout: string): void {\n this.setCookie('uhr-layout', layout);\n }\n\n public getMode(): string {\n return this.getCookie('uhr-mode');\n }\n\n public setMode(mode: string): void {\n this.setCookie('uhr-mode', mode);\n }\n\n public getStatus(): string {\n return this.getCookie('uhr-status');\n }\n\n public setStatus(status: string): void {\n this.setCookie('uhr-status', status);\n }\n\n public getTheme(): string {\n return this.getCookie('uhr-theme');\n }\n\n public setTheme(theme: string): void {\n this.setCookie('uhr-theme', theme);\n }\n\n private getCookie(cookieName: string): string {\n return Cookies.get(cookieName + this.widgetId);\n }\n\n private setCookie(cookieName: string, cookieValue: string): void {\n let options;\n if (this.cookiePath) {\n options = {expires: 365, path: this.cookiePath};\n } else {\n options = {expires: 365};\n }\n Cookies.set(cookieName + this.widgetId, cookieValue, options);\n }\n\n private removeCookie(cookieName: string): void {\n if (this.cookiePath) {\n Cookies.remove(cookieName + this.widgetId, {path: this.cookiePath});\n } else {\n Cookies.remove(cookieName + this.widgetId);\n }\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\n/**\n * Ein Buchstabe. Hilfsklasse für den Renderer und Inhalt der Layout-Arrays.\n * @param value Der Buchstabe, der Dargestellt werden soll.\n * @param style Die CSS-Styleklassen des Buchstabens.\n */\nexport class Letter {\n // private readonly value: string;\n private style: string;\n\n public constructor(private readonly value: string, style: string = '') {\n this.value = value;\n this.style = style;\n // if (style) {\n // this.style = style;\n // }\n }\n\n public addStyle(style: string): void {\n if (this.style === '') {\n this.style = style;\n } else {\n this.style += ` ${style}`;\n }\n }\n\n public toString(): string {\n return `${this.value}`;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, TimeDefinition, WordDefinition} from './domain/layout';\nimport {Letter} from './domain/letter';\n\nclass LayoutRendererV2Delegate {\n private static readonly vorne0: WordDefinition = {\n 3: [2, 3, 4],\n 4: [1, 5],\n 5: [1, 4, 5],\n 6: [1, 3, 5],\n 7: [1, 2, 5],\n 8: [1, 5],\n 9: [2, 3, 4]\n };\n private static readonly hinten0: WordDefinition = {\n 3: [8, 9, 10],\n 4: [7, 11],\n 5: [7, 10, 11],\n 6: [7, 9, 11],\n 7: [7, 8, 11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly vorne1: WordDefinition = {\n 3: [3],\n 4: [2, 3],\n 5: [3],\n 6: [3],\n 7: [3],\n 8: [3],\n 9: [2, 3, 4]\n };\n private static readonly hinten1: WordDefinition = {\n 3: [9],\n 4: [8, 9],\n 5: [9],\n 6: [9],\n 7: [9],\n 8: [9],\n 9: [8, 9, 10]\n };\n private static readonly vorne2: WordDefinition = {\n 3: [2, 3, 4],\n 4: [1, 5],\n 5: [5],\n 6: [4],\n 7: [3],\n 8: [2],\n 9: [1, 2, 3, 4, 5]\n };\n private static readonly hinten2: WordDefinition = {\n 3: [8, 9, 10],\n 4: [7, 11],\n 5: [11],\n 6: [10],\n 7: [9],\n 8: [8],\n 9: [7, 8, 9, 10, 11]\n };\n private static readonly vorne3: WordDefinition = {\n 3: [1, 2, 3, 4, 5],\n 4: [4],\n 5: [3],\n 6: [4],\n 7: [5],\n 8: [1, 5],\n 9: [2, 3, 4]\n };\n private static readonly hinten3: WordDefinition = {\n 3: [7, 8, 9, 10, 11],\n 4: [10],\n 5: [9],\n 6: [10],\n 7: [11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly vorne4: WordDefinition = {\n 3: [4],\n 4: [3, 4],\n 5: [2, 4],\n 6: [1, 4],\n 7: [1, 2, 3, 4, 5],\n 8: [4],\n 9: [4]\n };\n private static readonly hinten4: WordDefinition = {\n 3: [10],\n 4: [9, 10],\n 5: [8, 10],\n 6: [7, 10],\n 7: [7, 8, 9, 10, 11],\n 8: [10],\n 9: [10]\n };\n private static readonly vorne5: WordDefinition = {\n 3: [1, 2, 3, 4, 5],\n 4: [1],\n 5: [1, 2, 3, 4],\n 6: [5],\n 7: [5],\n 8: [1, 5],\n 9: [2, 3, 4]\n };\n private static readonly hinten5: WordDefinition = {\n 3: [7, 8, 9, 10, 11],\n 4: [7],\n 5: [7, 8, 9, 10],\n 6: [11],\n 7: [11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly hinten6: WordDefinition = {\n 3: [9, 10],\n 4: [8],\n 5: [7],\n 6: [7, 8, 9, 10],\n 7: [7, 11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly hinten7: WordDefinition = {\n 3: [7, 8, 9, 10, 11],\n 4: [11],\n 5: [10],\n 6: [9],\n 7: [8],\n 8: [8],\n 9: [8]\n };\n private static readonly hinten8: WordDefinition = {\n 3: [8, 9, 10],\n 4: [7, 11],\n 5: [7, 11],\n 6: [8, 9, 10],\n 7: [7, 11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly hinten9: WordDefinition = {\n 3: [8, 9, 10],\n 4: [7, 11],\n 5: [7, 11],\n 6: [8, 9, 10, 11],\n 7: [11],\n 8: [10],\n 9: [8, 9]\n };\n private static readonly seconds: TimeDefinition = {\n '0': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten0],\n '1': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten1],\n '2': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten2],\n '3': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten3],\n '4': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten4],\n '5': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten5],\n '6': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten6],\n '7': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten7],\n '8': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten8],\n '9': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten9],\n '10': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten0],\n '11': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten1],\n '12': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten2],\n '13': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten3],\n '14': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten4],\n '15': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten5],\n '16': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten6],\n '17': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten7],\n '18': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten8],\n '19': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten9],\n '20': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten0],\n '21': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten1],\n '22': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten2],\n '23': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten3],\n '24': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten4],\n '25': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten5],\n '26': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten6],\n '27': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten7],\n '28': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten8],\n '29': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten9],\n '30': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten0],\n '31': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten1],\n '32': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten2],\n '33': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten3],\n '34': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten4],\n '35': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten5],\n '36': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten6],\n '37': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten7],\n '38': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten8],\n '39': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten9],\n '40': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten0],\n '41': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten1],\n '42': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten2],\n '43': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten3],\n '44': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten4],\n '45': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten5],\n '46': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten6],\n '47': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten7],\n '48': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten8],\n '49': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten9],\n '50': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten0],\n '51': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten1],\n '52': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten2],\n '53': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten3],\n '54': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten4],\n '55': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten5],\n '56': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten6],\n '57': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten7],\n '58': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten8],\n '59': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten9]\n };\n\n public constructor(private readonly layout: Layout) {\n }\n\n public parse(): Letter[][] {\n const letters: Letter[][] = [];\n this.layout.letters.forEach((lineString: string): void => {\n const line: Letter[] = [];\n for (let c = 0; c < lineString.length; c++) {\n line.push(new Letter(lineString[c]));\n }\n letters.push(line);\n });\n this.parseArrayOrObject(letters, 'on', this.layout.permanent);\n if (typeof this.layout.seconds !== 'undefined' && this.layout.seconds !== null) {\n this.parseTimeDefinition(letters, 'second', this.layout.seconds);\n } else {\n this.parseTimeDefinition(letters, 'second', LayoutRendererV2Delegate.seconds);\n }\n this.parseTimeDefinition(letters, 'minute', this.layout.minutes);\n this.parseTimeDefinition(letters, 'hour', this.layout.hours);\n return letters;\n }\n\n private parseObject(letters: Letter[][], styleClass: string, object: WordDefinition): void {\n if (typeof object !== 'undefined' && object !== null) {\n Object.keys(object)\n .map((key: string): number => Number(key))\n .forEach(\n (y: number): void => object[y].forEach(\n (x: number): void => letters[y - 1][x - 1].addStyle(styleClass)\n )\n );\n }\n }\n\n private parseArrayOrObject(letters: Letter[][], styleClass: string, input: WordDefinition | WordDefinition[]): void {\n if (typeof input !== 'undefined' && input !== null) {\n if (Array.isArray(input)) {\n input.forEach((item: WordDefinition): void => this.parseObject(letters, styleClass, item));\n } else {\n this.parseObject(letters, styleClass, input);\n }\n }\n }\n\n private parseTimeDefinition(letters: Letter[][], styleClass: string, definition: TimeDefinition): void {\n if (typeof definition !== 'undefined' && definition !== null) {\n Object.keys(definition).forEach((listString: string): void => {\n const timeValues: string[] = listString.split(',');\n const highlightLetters: WordDefinition | WordDefinition[] = definition[listString];\n timeValues.forEach((timeValue: string): void => this.parseArrayOrObject(letters, styleClass + timeValue, highlightLetters));\n });\n }\n }\n}\n\n/**\n * Hilfsklasse zum Rendern der Buchstaben der Uhr.\n * @param layout Layout-Objekt, das gerendert werden soll.\n * @param renderarea Das jQuery-gewrappte HTML-Element, auf dem gerendert werden soll.\n */\nexport class LayoutRenderer {\n public constructor(private readonly layout: Layout, private readonly renderarea: JQuery) {\n }\n\n public render(beforeshow?: () => void): void {\n if (this.layout.parsed === undefined) {\n if (this.layout.version === 2) {\n const delegate: LayoutRendererV2Delegate = new LayoutRendererV2Delegate(this.layout);\n const parsedLayout: Letter[][] = delegate.parse();\n Object.defineProperty(this.layout, 'parsed', {\n value: parsedLayout,\n writable: false,\n configurable: false\n });\n } else {\n console.warn(`Unknown layout version: '${this.layout.version}', expecting '2'`);\n return;\n }\n }\n const letters: Letter[][] = this.layout.parsed;\n this.renderarea.fadeOut('fast', (): void => {\n this.renderarea.empty();\n letters.forEach((line, index, array): void => {\n line.forEach((letter): JQuery => this.renderarea.append(letter.toString()));\n if (index < array.length - 1) {\n this.renderarea.append('
');\n }\n });\n if (beforeshow) {\n beforeshow();\n }\n this.renderarea.fadeIn('fast');\n });\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {CookieHandler} from './cookie-handler';\nimport {Globals} from './domain/globals';\nimport {Layout} from './domain/layout';\nimport {Options} from './widget/options';\nimport {Theme} from './domain/theme';\nimport {Uhr} from './uhr';\n\ndeclare var $: JQueryStatic;\n\nexport class UhrRenderer {\n private cookieHandler: CookieHandler;\n\n public constructor(\n private readonly uhr: Uhr,\n private readonly $element: JQuery,\n private readonly options: Options,\n private readonly id: string\n ) {\n this.cookieHandler = new CookieHandler(id, options.cookiePath);\n }\n\n public render(): void {\n this.setupHTML();\n this.wireFunctionality();\n }\n\n public setWidth(width: string): void {\n this.$element.css('width', width);\n const realWidth: number = this.$element.width();\n this.$element.width(realWidth);\n this.$element.height(realWidth);\n this.$element.css('font-size', (realWidth / 40) + 'px');\n }\n\n private setupHTML(): void {\n // Base clock area\n this.$element.addClass('uhr')\n .empty()\n .append('')\n .append('')\n .append('')\n .append('')\n .append('
')\n .append('
');\n\n this.setWidth(this.options.width);\n\n if (this.options.controls) {\n const controlpanel = $(`
`);\n const content = $('
');\n controlpanel.append(content);\n // on/off switch\n const toggleSwitch = $(`
`);\n toggleSwitch.append(``);\n toggleSwitch.append(``);\n content.append(toggleSwitch);\n\n // time mode switch\n const modeSwitch = $(`
`);\n modeSwitch.append(``);\n modeSwitch.append(``);\n content.append(modeSwitch);\n // language chooser\n if (Globals.hasMultipleLayouts()) {\n const languageChooser = $(``);\n Globals.getLayouts().forEach((layout: Layout): void => {\n languageChooser.append(``);\n });\n content.append(languageChooser);\n }\n\n // theme chooser\n if (Globals.hasMultipleThemes()) {\n const themeChooser = $(``);\n Globals.getThemes().forEach((theme: Theme): void => {\n themeChooser.append(``);\n });\n content.append(themeChooser);\n }\n const closebutton: JQuery = $(``);\n closebutton.on({click: (): JQuery => $(`#uhr-controlpanel${this.id}`).hide('fast')});\n content.append(closebutton);\n this.$element.after(controlpanel);\n controlpanel.hide();\n const configlink: JQuery = $(``);\n configlink.on({click: (): void => this.toggleConfigScreen()});\n this.$element.after(configlink);\n }\n }\n\n private wireFunctionality(): void {\n // on/off switch\n const toggleSwitch: JQuery = $(`#uhr-onoffswitch-checkbox${this.id}`);\n toggleSwitch.on({click: (): void => this.uhr.toggle()});\n let status = this.cookieHandler.getStatus();\n if (status === undefined || this.options.force) {\n status = this.options.status;\n }\n toggleSwitch.prop('checked', status === 'on');\n if (status === 'on') {\n this.uhr.start();\n } else {\n this.uhr.stop();\n }\n\n // time mode switch\n const modeSwitch: JQuery = $(`#uhr-modeswitch-checkbox${this.id}`);\n modeSwitch.on({\n click: (): void => {\n if (this.options.mode === 'seconds') {\n this.uhr.setMode('normal');\n } else {\n this.uhr.setMode('seconds');\n }\n }\n });\n\n let mode = this.cookieHandler.getMode();\n if (mode === undefined || this.options.force) {\n mode = this.options.mode;\n }\n modeSwitch.prop('checked', mode !== 'seconds');\n if (mode === 'seconds') {\n this.uhr.setMode('seconds');\n } else {\n this.uhr.setMode('normal');\n }\n\n // language chooser\n const languageChooser: JQuery = $(`#uhr-languagechooser${this.id}`);\n languageChooser.on({\n change: (): void => {\n const languageKey = $(`#uhr-languagechooser${this.id}`).val() as string;\n this.uhr.setLayout(languageKey);\n }\n });\n let selectedLayout = this.cookieHandler.getLayout();\n if (selectedLayout === undefined || this.options.force) {\n selectedLayout = this.options.language;\n }\n let found = Globals.getLayouts().some((item: Layout): boolean => selectedLayout === item.code);\n if (!found) {\n let fallbackLanguage;\n if (Globals.hasLayouts()) {\n fallbackLanguage = Globals.getFirstLayout().code;\n } else {\n fallbackLanguage = '';\n }\n console.warn(`Language '${selectedLayout}' not found! Using fallback '${fallbackLanguage}'.`);\n selectedLayout = fallbackLanguage;\n }\n languageChooser.val(selectedLayout);\n this.options.language = '';\n this.uhr.setLayout(selectedLayout);\n\n // theme chooser\n const themeChooser: JQuery = $(`#uhr-themechooser${this.id}`);\n themeChooser.on({\n change: (): void => {\n const themeKey = $(`#uhr-themechooser${this.id}`).val() as string;\n this.uhr.setTheme(themeKey);\n }\n });\n let selectedTheme = this.cookieHandler.getTheme();\n if (selectedTheme === undefined || this.options.force) {\n selectedTheme = this.options.theme;\n }\n found = Globals.getThemes().some((item: Theme): boolean => selectedTheme === item.styleClass);\n if (!found) {\n const fallbackTheme = Globals.getFirstTheme().styleClass;\n console.warn(`Theme '${selectedTheme}' not found! Using fallback '${fallbackTheme}'.`);\n selectedTheme = fallbackTheme;\n }\n themeChooser.val(selectedTheme);\n this.options.theme = '';\n this.uhr.setTheme(selectedTheme);\n if (this.options.autoresize) {\n $(window).on({\n resize: (): void => {\n const $parent: JQuery = this.$element.parent();\n const $window: JQuery = $(window);\n const parentWidth: number = $parent.width();\n const parentHeight: number = $parent.height();\n const windowWidth: number = $window.width();\n const windowHeight: number = $window.height();\n const size: string = `${Math.min(parentWidth, parentHeight, windowWidth, windowHeight)}px`;\n this.setWidth(size);\n }\n });\n }\n }\n\n private toggleConfigScreen(): void {\n $(`#uhr-controlpanel${this.id}`).toggle('fast');\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\n/*eslint no-undef: \"warn\"*/\nimport WidgetCommonProperties = JQueryUI.WidgetCommonProperties;\nimport {EMPTY_LAYOUT, Layout} from './domain/layout';\nimport {CookieHandler} from './cookie-handler';\nimport {Globals} from './domain/globals';\nimport {LayoutRenderer} from './layout-renderer';\nimport {UhrRenderer} from './uhr-renderer';\nimport {WidgetPrototype} from './widget/widget-prototype';\n\ndeclare var $: JQueryStatic;\n\nexport class Uhr {\n private timer: number = null;\n private currentMinute: number = null;\n private renderer: UhrRenderer;\n private cookieHandler: CookieHandler;\n\n public constructor(private readonly widgetInstance: WidgetPrototype & WidgetCommonProperties) {\n const userTime = this.widgetInstance.options.time;\n if (this.widgetInstance.options.time === undefined) {\n this.widgetInstance.options.time = new Date();\n }\n this.cookieHandler = new CookieHandler(this.widgetInstance.uuid, this.widgetInstance.options.cookiePath);\n this.parseHash();\n this.renderer = new UhrRenderer(this, this.widgetInstance.element, this.widgetInstance.options, this.widgetInstance.uuid);\n this.renderer.render();\n if (userTime !== undefined) {\n this.setTime(userTime);\n }\n }\n\n public destroy(): void {\n if (this.timer) {\n window.clearInterval(this.timer);\n this.timer = null;\n }\n this.widgetInstance.element\n .removeAttr('style')\n .removeAttr('class')\n .empty();\n $(`#uhr-configlink${this.widgetInstance.uuid}`).remove();\n $(`#uhr-controlpanel${this.widgetInstance.uuid}`).remove();\n }\n\n public start(): void {\n if (!this.isOn()) {\n this.timer = window.setInterval((): void => {\n this.widgetInstance.options.time = new Date();\n this.update();\n }, 1000);\n this.update();\n this.cookieHandler.setStatus('on');\n }\n }\n\n public stop(): void {\n if (this.isOn()) {\n window.clearInterval(this.timer);\n this.timer = null;\n this.update();\n this.cookieHandler.setStatus('off');\n }\n }\n\n public toggle(): void {\n if (this.isOn()) {\n this.stop();\n } else {\n this.start();\n }\n }\n\n public setLayout(key: string): void {\n if (key !== this.widgetInstance.options.language) {\n this.widgetInstance.options.language = key;\n const renderer = new LayoutRenderer(this.getCurrentLayout(), this.widgetInstance.element.find('.letterarea'));\n renderer.render((): void => {\n this.currentMinute = -1;\n this.update();\n });\n this.cookieHandler.setLayout(key);\n this.update();\n }\n }\n\n public setTheme(styleClass: string): void {\n if (styleClass !== this.widgetInstance.options.theme) {\n this.widgetInstance.element.removeClass(this.widgetInstance.options.theme).addClass(styleClass);\n $(`#uhr-onoffswitch${this.widgetInstance.uuid}`).removeClass(this.widgetInstance.options.theme).addClass(styleClass);\n this.widgetInstance.options.theme = styleClass;\n this.cookieHandler.setTheme(styleClass);\n }\n }\n\n public setTime(time: Date): void {\n this.currentMinute = null;\n if (time === null) {\n this.widgetInstance.options.time = new Date();\n } else {\n if (this.timer !== null) {\n window.clearInterval(this.timer);\n }\n this.widgetInstance.options.time = time;\n }\n this.update();\n }\n\n public setMode(mode: string): void {\n this.widgetInstance.options.mode = mode;\n this.currentMinute = null;\n this.update();\n this.cookieHandler.setMode(mode);\n }\n\n public setWidth(width: string): void {\n this.renderer.setWidth(width);\n }\n\n private isOn(): boolean {\n return this.timer !== null;\n }\n\n private update(): void {\n if (this.isOn()) {\n const time = this.widgetInstance.options.time;\n if (!this.getCurrentLayout().hasOwnProperty('seconds') && this.widgetInstance.options.mode !== 'seconds') {\n if (time.getMinutes() === this.currentMinute) {\n return;\n }\n this.currentMinute = time.getMinutes();\n }\n this.show(time);\n } else {\n this.clear();\n this.currentMinute = -1;\n }\n }\n\n private show(time: Date): void {\n const second = this.getSecond(time);\n const dotMinute = this.getDotMinute(time);\n const hour = this.getHour(time);\n const coarseMinute = this.getCoarseMinute(time);\n this.clear();\n if (this.widgetInstance.options.mode === 'seconds') {\n this.highlight(`second${second}`);\n } else {\n this.highlight('on');\n for (let i = 1; i <= dotMinute; i++) {\n this.highlight(`dot${i}`);\n }\n this.highlight(`minute${coarseMinute}`);\n this.highlight(`hour${hour}`);\n }\n }\n\n private clear(): void {\n this.widgetInstance.element.find('.item').removeClass('active');\n }\n\n private highlight(itemClass: string): void {\n this.widgetInstance.element.find(`.item.${itemClass}`).addClass('active');\n }\n\n private getSecond(time: Date): number {\n if (typeof this.getCurrentLayout().getSeconds === 'function') {\n return this.getCurrentLayout().getSeconds(time);\n }\n return time.getSeconds();\n }\n\n private getDotMinute(date: Date): number {\n if (typeof this.getCurrentLayout().getDotMinute === 'function') {\n return this.getCurrentLayout().getDotMinute(date);\n }\n return date.getMinutes() % 5;\n }\n\n private getCoarseMinute(date: Date): number {\n if (typeof this.getCurrentLayout().getCoarseMinute === 'function') {\n return this.getCurrentLayout().getCoarseMinute(date);\n }\n return date.getMinutes();\n }\n\n private getHour(date: Date): number {\n if (typeof this.getCurrentLayout().getHour === 'function') {\n return this.getCurrentLayout().getHour(date);\n }\n const hour = date.getHours();\n if (date.getMinutes() >= 25) {\n return (hour + 1) % 24;\n }\n return hour;\n }\n\n private parseHash(): void {\n let hash: string = window.location.hash;\n if (hash !== undefined && hash.charAt(0) === '#') {\n hash = hash.substring(1);\n hash = decodeURIComponent(hash);\n const params: string[] = hash.split('&');\n params.forEach((element: string): void => {\n const pair: string[] = element.split('=');\n const key = pair[0];\n const value = pair[1];\n switch (key) {\n case 'l':\n case 'language':\n this.widgetInstance.options.language = value;\n this.widgetInstance.options.force = true;\n break;\n case 't':\n case 'theme':\n this.widgetInstance.options.theme = value;\n this.widgetInstance.options.force = true;\n break;\n case 'm':\n case 'mode':\n this.widgetInstance.options.mode = value;\n this.widgetInstance.options.force = true;\n break;\n case 's':\n case 'status':\n this.widgetInstance.options.status = value;\n this.widgetInstance.options.force = true;\n break;\n }\n });\n }\n }\n\n private getCurrentLayout(): Layout {\n const matchingLanguages: Layout[] = Globals.getLayouts().filter((element: Layout): boolean => element.code === this.widgetInstance.options.language, this);\n if (matchingLanguages.length > 0) {\n return matchingLanguages[0];\n }\n // fallback: return empty object\n return EMPTY_LAYOUT;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport * as $ from 'jquery';\nimport {Globals} from './domain/globals';\n\nexport function autodetectThemes(): void {\n $('link[rel=stylesheet]').each((index, item): void => {\n const styleSheet = $(item);\n const styleClass: string = styleSheet.attr('data-class');\n if (styleClass !== undefined) {\n let name: string = styleSheet.attr('data-name');\n if (name === undefined) {\n name = styleClass;\n }\n Globals.registerTheme(name, styleClass);\n }\n });\n\n // fall-back if no theme was included\n if (!Globals.hasThemes()) {\n Globals.registerTheme('', '');\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Globals} from './domain/globals';\nimport {Layout} from './domain/layout';\nimport {Uhr} from './uhr';\nimport {WidgetPrototype} from './widget/widget-prototype';\nimport {autodetectThemes} from './theme-autodetector';\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n const widget: JQueryUI.Widget;\n}\n\n// First things first: discover included themes and register them\nautodetectThemes();\n\nconst widgetPrototype: WidgetPrototype = {\n options: {\n width: '100%',\n status: 'on',\n language: 'de_CH',\n theme: Globals.getFirstTheme().styleClass,\n force: false,\n controls: true,\n cookiePath: undefined,\n autoresize: true,\n mode: 'normal'\n },\n start: function (): void {\n this._fritteliUhrInstance.start();\n },\n stop: function (): void {\n this._fritteliUhrInstance.stop();\n },\n toggle: function (): void {\n this._fritteliUhrInstance.toggle();\n },\n language: function (key: string): void {\n this._fritteliUhrInstance.setLayout(key);\n },\n theme: function (styleClass: string): void {\n this._fritteliUhrInstance.setTheme(styleClass);\n },\n time: function (time: Date): void {\n this._fritteliUhrInstance.setTime(time);\n },\n mode: function (mode: string): void {\n this._fritteliUhrInstance.setMode(mode);\n },\n width: function (width: string): void {\n this._fritteliUhrInstance.setWidth(width);\n },\n // constructor method\n _create: function (): void {\n this._fritteliUhrInstance = new Uhr(this);\n },\n // destructor method\n _destroy: function (): void {\n this._fritteliUhrInstance.destroy();\n },\n _fritteliUhrInstance: null\n};\n$.widget('fritteli.uhr', widgetPrototype);\n\n$.fritteli.uhr.register = Globals.registerLayout;\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\n\n// We just need to reference all required files at least once, so that the tree-shaker won't remove them from\n// the bundle.\nimport * as uhr from './index';\nimport {LayoutDe} from './layout/layout-de';\nimport {LayoutDeCh} from './layout/layout-de_ch';\nimport {LayoutDeChGenau} from './layout/layout-de_ch_genau';\nimport {LayoutDk} from './layout/layout-dk';\nimport {LayoutEn} from './layout/layout-en';\nimport {LayoutEs} from './layout/layout-es';\nimport {LayoutFr} from './layout/layout-fr';\nimport {LayoutIt} from './layout/layout-it';\nimport {LayoutNl} from './layout/layout-nl';\nimport {LayoutPt} from './layout/layout-pt';\n\n/*eslint @typescript-eslint/no-unused-vars: \"warn\"*/\n\nlet a = uhr;\na = LayoutDeCh;\na = LayoutDeChGenau;\na = LayoutDe;\na = LayoutDk;\na = LayoutEn;\na = LayoutEs;\na = LayoutFr;\na = LayoutIt;\na = LayoutNl;\na = LayoutPt;\n"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/lib/uhr.js.map b/dist/lib/uhr.js.map index c47a6eb..eed2927 100644 --- a/dist/lib/uhr.js.map +++ b/dist/lib/uhr.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///external \"Cookies\"","webpack:///external \"jQuery\"","webpack:///./src/domain/globals.ts","webpack:///./src/domain/layout.ts","webpack:///./src/cookie-handler.ts","webpack:///./src/domain/letter.ts","webpack:///./src/layout-renderer.ts","webpack:///./src/uhr-renderer.ts","webpack:///./src/uhr.ts","webpack:///./src/theme-autodetector.ts","webpack:///./src/index.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","Cookies","jQuery","Globals","registerTheme","styleClass","themes","some","console","warn","push","hasThemes","length","hasMultipleThemes","getFirstTheme","getTheme","index","getThemes","registerLayout","layout","layouts","element","code","prettyName","error","sort","a","b","localeCompare","hasLayouts","hasMultipleLayouts","getFirstLayout","getLayouts","EMPTY_LAYOUT","hours","letters","minutes","permanent","version","cookie_handler_CookieHandler","CookieHandler","widgetId","cookiePath","this","getLayout","oldCookie","getCookie","removeCookie","setLayout","setCookie","getMode","setMode","getStatus","setStatus","status","setTheme","theme","cookieName","external_Cookies_","cookieValue","options","expires","path","Letter","style","addStyle","toString","layout_renderer_LayoutRendererV2Delegate","LayoutRendererV2Delegate","parse","forEach","lineString","line","parseArrayOrObject","seconds","parseTimeDefinition","parseObject","keys","map","Number","y","x","input","_this","Array","isArray","item","definition","listString","timeValues","split","highlightLetters","timeValue","vorne0","3","4","5","6","7","8","9","hinten0","vorne1","hinten1","vorne2","hinten2","vorne3","hinten3","vorne4","hinten4","vorne5","hinten5","hinten6","hinten7","hinten8","hinten9","0","1","2","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59","LayoutRenderer","renderarea","render","beforeshow","undefined","parsed","parsedLayout","writable","configurable","fadeOut","empty","array","letter","append","fadeIn","uhr_renderer_UhrRenderer","UhrRenderer","uhr","$element","id","cookieHandler","setupHTML","wireFunctionality","setWidth","width","css","realWidth","height","addClass","controls","controlpanel","$","content","toggleSwitch","modeSwitch","languageChooser_1","themeChooser_1","closebutton","on","click","hide","after","configlink","toggleConfigScreen","toggle","force","prop","start","stop","languageChooser","change","languageKey","val","selectedLayout","language","found","fallbackLanguage","themeChooser","themeKey","selectedTheme","fallbackTheme","autoresize","window","resize","$parent","parent","$window","parentWidth","parentHeight","windowWidth","windowHeight","size","Math","min","uhr_Uhr","Uhr","widgetInstance","timer","currentMinute","userTime","time","Date","uuid","parseHash","renderer","setTime","destroy","clearInterval","removeAttr","remove","isOn","setInterval","update","getCurrentLayout","find","removeClass","getMinutes","show","clear","second","getSecond","dotMinute","getDotMinute","hour","getHour","coarseMinute","getCoarseMinute","highlight","itemClass","getSeconds","date","getHours","hash","location","charAt","substring","decodeURIComponent","pair","matchingLanguages","filter","external_jQuery_","each","styleSheet","attr","name_1","widgetPrototype","_fritteliUhrInstance","_create","_destroy","widget","fritteli","register"],"mappings":"aACA,IAAAA,EAAA,GAGA,SAAAC,EAAAC,GAGA,GAAAF,EAAAE,GACA,OAAAF,EAAAE,GAAAC,QAGA,IAAAC,EAAAJ,EAAAE,GAAA,CACAG,EAAAH,EACAI,GAAA,EACAH,QAAA,IAUA,OANAI,EAAAL,GAAAM,KAAAJ,EAAAD,QAAAC,IAAAD,QAAAF,GAGAG,EAAAE,GAAA,EAGAF,EAAAD,QAKAF,EAAAQ,EAAAF,EAGAN,EAAAS,EAAAV,EAGAC,EAAAU,EAAA,SAAAR,EAAAS,EAAAC,GACAZ,EAAAa,EAAAX,EAAAS,IACAG,OAAAC,eAAAb,EAAAS,EAAA,CAA0CK,YAAA,EAAAC,IAAAL,KAK1CZ,EAAAkB,EAAA,SAAAhB,GACA,oBAAAiB,eAAAC,aACAN,OAAAC,eAAAb,EAAAiB,OAAAC,YAAA,CAAwDC,MAAA,WAExDP,OAAAC,eAAAb,EAAA,cAAiDmB,OAAA,KAQjDrB,EAAAsB,EAAA,SAAAD,EAAAE,GAEA,GADA,EAAAA,IAAAF,EAAArB,EAAAqB,IACA,EAAAE,EAAA,OAAAF,EACA,KAAAE,GAAA,iBAAAF,QAAAG,WAAA,OAAAH,EACA,IAAAI,EAAAX,OAAAY,OAAA,MAGA,GAFA1B,EAAAkB,EAAAO,GACAX,OAAAC,eAAAU,EAAA,WAAyCT,YAAA,EAAAK,UACzC,EAAAE,GAAA,iBAAAF,EAAA,QAAAM,KAAAN,EAAArB,EAAAU,EAAAe,EAAAE,EAAA,SAAAA,GAAgH,OAAAN,EAAAM,IAAqBC,KAAA,KAAAD,IACrI,OAAAF,GAIAzB,EAAA6B,EAAA,SAAA1B,GACA,IAAAS,EAAAT,KAAAqB,WACA,WAA2B,OAAArB,EAAA,SAC3B,WAAiC,OAAAA,GAEjC,OADAH,EAAAU,EAAAE,EAAA,IAAAA,GACAA,GAIAZ,EAAAa,EAAA,SAAAiB,EAAAC,GAAsD,OAAAjB,OAAAkB,UAAAC,eAAA1B,KAAAuB,EAAAC,IAGtD/B,EAAAkC,EAAA,GAIAlC,IAAAmC,EAAA,sBClFAhC,EAAAD,QAAAkC,yBCAAjC,EAAAD,QAAAmC,+CCkBA,IAAAC,EAAA,oBAAAA,KAoEA,OAhEkBA,EAAAC,cAAd,SAA4B5B,EAAc6B,GAClCF,EAAQG,OAAOC,KAAK,SAACrB,GAAmB,OAAAA,EAAMV,OAASA,IACvDgC,QAAQC,KAAK,oBAAoBjC,EAAI,mEAAmE6B,EAAU,MAElHF,EAAQG,OAAOI,KAAK,CAChBlC,KAAIA,EACJ6B,WAAUA,KAKRF,EAAAQ,UAAd,WACI,OAAOR,EAAQG,OAAOM,OAAS,GAGrBT,EAAAU,kBAAd,WACI,OAAOV,EAAQG,OAAOM,OAAS,GAGrBT,EAAAW,cAAd,WACI,OAAOX,EAAQY,SAAS,IAGdZ,EAAAY,SAAd,SAAuBC,GACnB,OAAOb,EAAQG,OAAOU,IAGZb,EAAAc,UAAd,WACI,OAAOd,EAAQG,QAGLH,EAAAe,eAAd,SAA6BC,IACNhB,EAAQiB,QAAQb,KAAK,SAACc,GACrC,OAAIF,EAAOG,OAASD,EAAQC,OACpBH,EAAOI,aAAeF,EAAQE,YAC9Bf,QAAQgB,MACJ,yBAAyBL,EAAOG,KAAI,sCAAsCH,EAAOI,WAAU,kDAAkDF,EAAQE,WAAU,OAGhK,OAKXpB,EAAQiB,QAAQV,KAAKS,GACrBhB,EAAQiB,QAAQK,KAAK,SAACC,EAAGC,GAAc,OAAAD,EAAEH,WAAWK,cAAcD,EAAEJ,gBAI9DpB,EAAA0B,WAAd,WACI,OAAO1B,EAAQiB,QAAQR,OAAS,GAGtBT,EAAA2B,mBAAd,WACI,OAAO3B,EAAQiB,QAAQR,OAAS,GAGtBT,EAAA4B,eAAd,WACI,OAAO5B,EAAQiB,QAAQ,IAGbjB,EAAA6B,WAAd,WACI,OAAO7B,EAAQiB,SAjEJjB,EAAAiB,QAAoB,GACpBjB,EAAAG,OAAkB,GAkErCH,EApEA,GCuBa8B,EAAuB,CAChCX,KAAM,KACNY,MAAO,KACPC,QAAS,GACTC,QAAS,KACTC,UAAW,GACXd,WAAY,KACZe,QAAS,UC/BbC,EAAA,WACI,SAAAC,EAAoCC,EAAmCC,GAAnCC,KAAAF,WAAmCE,KAAAD,aA8D3E,OA3DWF,EAAA3C,UAAA+C,UAAP,WACI,IAAMC,EAAYF,KAAKG,UAAU,gBAMjC,OALID,IAEAF,KAAKI,aAAa,gBAClBJ,KAAKK,UAAUH,IAEZF,KAAKG,UAAU,eAGnBN,EAAA3C,UAAAmD,UAAP,SAAiB7B,GACbwB,KAAKM,UAAU,aAAc9B,IAG1BqB,EAAA3C,UAAAqD,QAAP,WACI,OAAOP,KAAKG,UAAU,aAGnBN,EAAA3C,UAAAsD,QAAP,SAAe/D,GACXuD,KAAKM,UAAU,WAAY7D,IAGxBoD,EAAA3C,UAAAuD,UAAP,WACI,OAAOT,KAAKG,UAAU,eAGnBN,EAAA3C,UAAAwD,UAAP,SAAiBC,GACbX,KAAKM,UAAU,aAAcK,IAG1Bd,EAAA3C,UAAAkB,SAAP,WACI,OAAO4B,KAAKG,UAAU,cAGnBN,EAAA3C,UAAA0D,SAAP,SAAgBC,GACZb,KAAKM,UAAU,YAAaO,IAGxBhB,EAAA3C,UAAAiD,UAAR,SAAkBW,GACd,OAAOC,EAAA,IAAYD,EAAad,KAAKF,WAGjCD,EAAA3C,UAAAoD,UAAR,SAAkBQ,EAAoBE,GAClC,IAAIC,EAEAA,EADAjB,KAAKD,WACK,CAACmB,QAAS,IAAKC,KAAMnB,KAAKD,YAE1B,CAACmB,QAAS,KAExBH,EAAA,IAAYD,EAAad,KAAKF,SAAUkB,EAAaC,IAGjDpB,EAAA3C,UAAAkD,aAAR,SAAqBU,GACbd,KAAKD,WACLgB,EAAA,OAAeD,EAAad,KAAKF,SAAU,CAACqB,KAAMnB,KAAKD,aAEvDgB,EAAA,OAAeD,EAAad,KAAKF,WAG7CD,EA/DA,GCGAuB,EAAA,WAII,SAAAA,EAAoC7E,EAAe8E,QAAA,IAAAA,MAAA,IAAfrB,KAAAzD,QAChCyD,KAAKzD,MAAQA,EACbyD,KAAKqB,MAAQA,EAiBrB,OAXWD,EAAAlE,UAAAoE,SAAP,SAAgBD,GACO,KAAfrB,KAAKqB,MACLrB,KAAKqB,MAAQA,EAEbrB,KAAKqB,OAAS,IAAIA,GAInBD,EAAAlE,UAAAqE,SAAP,WACI,MAAO,4BAA4BvB,KAAKqB,MAAK,KAAKrB,KAAKzD,MAAK,WAEpE6E,EAvBA,GCFAI,EAAA,WAgNI,SAAAC,EAAoCjD,GAAAwB,KAAAxB,SAsDxC,OAnDWiD,EAAAvE,UAAAwE,MAAP,WACI,IAAMlC,EAAsB,GAgB5B,OAfAQ,KAAKxB,OAAOgB,QAAQmC,QAAQ,SAACC,GAEzB,IADA,IAAMC,EAAiB,GACdlG,EAAI,EAAGA,EAAIiG,EAAW3D,OAAQtC,IACnCkG,EAAK9D,KAAK,IAAIqD,EAAOQ,EAAWjG,KAEpC6D,EAAQzB,KAAK8D,KAEjB7B,KAAK8B,mBAAmBtC,EAAS,KAAMQ,KAAKxB,OAAOkB,gBAChB,IAAxBM,KAAKxB,OAAOuD,SAAmD,OAAxB/B,KAAKxB,OAAOuD,QAC1D/B,KAAKgC,oBAAoBxC,EAAS,SAAUQ,KAAKxB,OAAOuD,SAExD/B,KAAKgC,oBAAoBxC,EAAS,SAAUiC,EAAyBM,SAEzE/B,KAAKgC,oBAAoBxC,EAAS,SAAUQ,KAAKxB,OAAOiB,SACxDO,KAAKgC,oBAAoBxC,EAAS,OAAQQ,KAAKxB,OAAOe,OAC/CC,GAGHiC,EAAAvE,UAAA+E,YAAR,SAAoBzC,EAAqB9B,EAAoBV,GACrD,MAAOA,GACPhB,OAAOkG,KAAKlF,GACPmF,IAAI,SAACtF,GAAwB,OAAAuF,OAAOvF,KACpC8E,QACG,SAACU,GAAoB,OAAArF,EAAOqF,GAAGV,QAC3B,SAACW,GAAoB,OAAA9C,EAAQ6C,EAAI,GAAGC,EAAI,GAAGhB,SAAS5D,QAMhE+D,EAAAvE,UAAA4E,mBAAR,SAA2BtC,EAAqB9B,EAAoB6E,GAApE,IAAAC,EAAAxC,KACQ,MAAOuC,IACHE,MAAMC,QAAQH,GACdA,EAAMZ,QAAQ,SAACgB,GAA+B,OAAAH,EAAKP,YAAYzC,EAAS9B,EAAYiF,KAEpF3C,KAAKiC,YAAYzC,EAAS9B,EAAY6E,KAK1Cd,EAAAvE,UAAA8E,oBAAR,SAA4BxC,EAAqB9B,EAAoBkF,GAArE,IAAAJ,EAAAxC,KACQ,MAAO4C,GACP5G,OAAOkG,KAAKU,GAAYjB,QAAQ,SAACkB,GAC7B,IAAMC,EAAuBD,EAAWE,MAAM,KACxCC,EAAsDJ,EAAWC,GACvEC,EAAWnB,QAAQ,SAACsB,GAA4B,OAAAT,EAAKV,mBAAmBtC,EAAS9B,EAAauF,EAAWD,QAjQ7FvB,EAAAyB,OAAyB,CAC7CC,EAAG,CAAC,EAAG,EAAG,GACVC,EAAG,CAAC,EAAG,GACPC,EAAG,CAAC,EAAG,EAAG,GACVC,EAAG,CAAC,EAAG,EAAG,GACVC,EAAG,CAAC,EAAG,EAAG,GACVC,EAAG,CAAC,EAAG,GACPC,EAAG,CAAC,EAAG,EAAG,IAEUhC,EAAAiC,QAA0B,CAC9CP,EAAG,CAAC,EAAG,EAAG,IACVC,EAAG,CAAC,EAAG,IACPC,EAAG,CAAC,EAAG,GAAI,IACXC,EAAG,CAAC,EAAG,EAAG,IACVC,EAAG,CAAC,EAAG,EAAG,IACVC,EAAG,CAAC,EAAG,IACPC,EAAG,CAAC,EAAG,EAAG,KAEUhC,EAAAkC,OAAyB,CAC7CR,EAAG,CAAC,GACJC,EAAG,CAAC,EAAG,GACPC,EAAG,CAAC,GACJC,EAAG,CAAC,GACJC,EAAG,CAAC,GACJC,EAAG,CAAC,GACJC,EAAG,CAAC,EAAG,EAAG,IAEUhC,EAAAmC,QAA0B,CAC9CT,EAAG,CAAC,GACJC,EAAG,CAAC,EAAG,GACPC,EAAG,CAAC,GACJC,EAAG,CAAC,GACJC,EAAG,CAAC,GACJC,EAAG,CAAC,GACJC,EAAG,CAAC,EAAG,EAAG,KAEUhC,EAAAoC,OAAyB,CAC7CV,EAAG,CAAC,EAAG,EAAG,GACVC,EAAG,CAAC,EAAG,GACPC,EAAG,CAAC,GACJC,EAAG,CAAC,GACJC,EAAG,CAAC,GACJC,EAAG,CAAC,GACJC,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,IAEIhC,EAAAqC,QAA0B,CAC9CX,EAAG,CAAC,EAAG,EAAG,IACVC,EAAG,CAAC,EAAG,IACPC,EAAG,CAAC,IACJC,EAAG,CAAC,IACJC,EAAG,CAAC,GACJC,EAAG,CAAC,GACJC,EAAG,CAAC,EAAG,EAAG,EAAG,GAAI,KAEGhC,EAAAsC,OAAyB,CAC7CZ,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,GAChBC,EAAG,CAAC,GACJC,EAAG,CAAC,GACJC,EAAG,CAAC,GACJC,EAAG,CAAC,GACJC,EAAG,CAAC,EAAG,GACPC,EAAG,CAAC,EAAG,EAAG,IAEUhC,EAAAuC,QAA0B,CAC9Cb,EAAG,CAAC,EAAG,EAAG,EAAG,GAAI,IACjBC,EAAG,CAAC,IACJC,EAAG,CAAC,GACJC,EAAG,CAAC,IACJC,EAAG,CAAC,IACJC,EAAG,CAAC,EAAG,IACPC,EAAG,CAAC,EAAG,EAAG,KAEUhC,EAAAwC,OAAyB,CAC7Cd,EAAG,CAAC,GACJC,EAAG,CAAC,EAAG,GACPC,EAAG,CAAC,EAAG,GACPC,EAAG,CAAC,EAAG,GACPC,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,GAChBC,EAAG,CAAC,GACJC,EAAG,CAAC,IAEgBhC,EAAAyC,QAA0B,CAC9Cf,EAAG,CAAC,IACJC,EAAG,CAAC,EAAG,IACPC,EAAG,CAAC,EAAG,IACPC,EAAG,CAAC,EAAG,IACPC,EAAG,CAAC,EAAG,EAAG,EAAG,GAAI,IACjBC,EAAG,CAAC,IACJC,EAAG,CAAC,KAEgBhC,EAAA0C,OAAyB,CAC7ChB,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,GAChBC,EAAG,CAAC,GACJC,EAAG,CAAC,EAAG,EAAG,EAAG,GACbC,EAAG,CAAC,GACJC,EAAG,CAAC,GACJC,EAAG,CAAC,EAAG,GACPC,EAAG,CAAC,EAAG,EAAG,IAEUhC,EAAA2C,QAA0B,CAC9CjB,EAAG,CAAC,EAAG,EAAG,EAAG,GAAI,IACjBC,EAAG,CAAC,GACJC,EAAG,CAAC,EAAG,EAAG,EAAG,IACbC,EAAG,CAAC,IACJC,EAAG,CAAC,IACJC,EAAG,CAAC,EAAG,IACPC,EAAG,CAAC,EAAG,EAAG,KAEUhC,EAAA4C,QAA0B,CAC9ClB,EAAG,CAAC,EAAG,IACPC,EAAG,CAAC,GACJC,EAAG,CAAC,GACJC,EAAG,CAAC,EAAG,EAAG,EAAG,IACbC,EAAG,CAAC,EAAG,IACPC,EAAG,CAAC,EAAG,IACPC,EAAG,CAAC,EAAG,EAAG,KAEUhC,EAAA6C,QAA0B,CAC9CnB,EAAG,CAAC,EAAG,EAAG,EAAG,GAAI,IACjBC,EAAG,CAAC,IACJC,EAAG,CAAC,IACJC,EAAG,CAAC,GACJC,EAAG,CAAC,GACJC,EAAG,CAAC,GACJC,EAAG,CAAC,IAEgBhC,EAAA8C,QAA0B,CAC9CpB,EAAG,CAAC,EAAG,EAAG,IACVC,EAAG,CAAC,EAAG,IACPC,EAAG,CAAC,EAAG,IACPC,EAAG,CAAC,EAAG,EAAG,IACVC,EAAG,CAAC,EAAG,IACPC,EAAG,CAAC,EAAG,IACPC,EAAG,CAAC,EAAG,EAAG,KAEUhC,EAAA+C,QAA0B,CAC9CrB,EAAG,CAAC,EAAG,EAAG,IACVC,EAAG,CAAC,EAAG,IACPC,EAAG,CAAC,EAAG,IACPC,EAAG,CAAC,EAAG,EAAG,GAAI,IACdC,EAAG,CAAC,IACJC,EAAG,CAAC,IACJC,EAAG,CAAC,EAAG,IAEahC,EAAAM,QAA0B,CAC9C0C,EAAK,CAAChD,EAAyByB,OAAQzB,EAAyBiC,SAChEgB,EAAK,CAACjD,EAAyByB,OAAQzB,EAAyBmC,SAChEe,EAAK,CAAClD,EAAyByB,OAAQzB,EAAyBqC,SAChEX,EAAK,CAAC1B,EAAyByB,OAAQzB,EAAyBuC,SAChEZ,EAAK,CAAC3B,EAAyByB,OAAQzB,EAAyByC,SAChEb,EAAK,CAAC5B,EAAyByB,OAAQzB,EAAyB2C,SAChEd,EAAK,CAAC7B,EAAyByB,OAAQzB,EAAyB4C,SAChEd,EAAK,CAAC9B,EAAyByB,OAAQzB,EAAyB6C,SAChEd,EAAK,CAAC/B,EAAyByB,OAAQzB,EAAyB8C,SAChEd,EAAK,CAAChC,EAAyByB,OAAQzB,EAAyB+C,SAChEI,GAAM,CAACnD,EAAyBkC,OAAQlC,EAAyBiC,SACjEmB,GAAM,CAACpD,EAAyBkC,OAAQlC,EAAyBmC,SACjEkB,GAAM,CAACrD,EAAyBkC,OAAQlC,EAAyBqC,SACjEiB,GAAM,CAACtD,EAAyBkC,OAAQlC,EAAyBuC,SACjEgB,GAAM,CAACvD,EAAyBkC,OAAQlC,EAAyByC,SACjEe,GAAM,CAACxD,EAAyBkC,OAAQlC,EAAyB2C,SACjEc,GAAM,CAACzD,EAAyBkC,OAAQlC,EAAyB4C,SACjEc,GAAM,CAAC1D,EAAyBkC,OAAQlC,EAAyB6C,SACjEc,GAAM,CAAC3D,EAAyBkC,OAAQlC,EAAyB8C,SACjEc,GAAM,CAAC5D,EAAyBkC,OAAQlC,EAAyB+C,SACjEc,GAAM,CAAC7D,EAAyBoC,OAAQpC,EAAyBiC,SACjE6B,GAAM,CAAC9D,EAAyBoC,OAAQpC,EAAyBmC,SACjE4B,GAAM,CAAC/D,EAAyBoC,OAAQpC,EAAyBqC,SACjE2B,GAAM,CAAChE,EAAyBoC,OAAQpC,EAAyBuC,SACjE0B,GAAM,CAACjE,EAAyBoC,OAAQpC,EAAyByC,SACjEyB,GAAM,CAAClE,EAAyBoC,OAAQpC,EAAyB2C,SACjEwB,GAAM,CAACnE,EAAyBoC,OAAQpC,EAAyB4C,SACjEwB,GAAM,CAACpE,EAAyBoC,OAAQpC,EAAyB6C,SACjEwB,GAAM,CAACrE,EAAyBoC,OAAQpC,EAAyB8C,SACjEwB,GAAM,CAACtE,EAAyBoC,OAAQpC,EAAyB+C,SACjEwB,GAAM,CAACvE,EAAyBsC,OAAQtC,EAAyBiC,SACjEuC,GAAM,CAACxE,EAAyBsC,OAAQtC,EAAyBmC,SACjEsC,GAAM,CAACzE,EAAyBsC,OAAQtC,EAAyBqC,SACjEqC,GAAM,CAAC1E,EAAyBsC,OAAQtC,EAAyBuC,SACjEoC,GAAM,CAAC3E,EAAyBsC,OAAQtC,EAAyByC,SACjEmC,GAAM,CAAC5E,EAAyBsC,OAAQtC,EAAyB2C,SACjEkC,GAAM,CAAC7E,EAAyBsC,OAAQtC,EAAyB4C,SACjEkC,GAAM,CAAC9E,EAAyBsC,OAAQtC,EAAyB6C,SACjEkC,GAAM,CAAC/E,EAAyBsC,OAAQtC,EAAyB8C,SACjEkC,GAAM,CAAChF,EAAyBsC,OAAQtC,EAAyB+C,SACjEkC,GAAM,CAACjF,EAAyBwC,OAAQxC,EAAyBiC,SACjEiD,GAAM,CAAClF,EAAyBwC,OAAQxC,EAAyBmC,SACjEgD,GAAM,CAACnF,EAAyBwC,OAAQxC,EAAyBqC,SACjE+C,GAAM,CAACpF,EAAyBwC,OAAQxC,EAAyBuC,SACjE8C,GAAM,CAACrF,EAAyBwC,OAAQxC,EAAyByC,SACjE6C,GAAM,CAACtF,EAAyBwC,OAAQxC,EAAyB2C,SACjE4C,GAAM,CAACvF,EAAyBwC,OAAQxC,EAAyB4C,SACjE4C,GAAM,CAACxF,EAAyBwC,OAAQxC,EAAyB6C,SACjE4C,GAAM,CAACzF,EAAyBwC,OAAQxC,EAAyB8C,SACjE4C,GAAM,CAAC1F,EAAyBwC,OAAQxC,EAAyB+C,SACjE4C,GAAM,CAAC3F,EAAyB0C,OAAQ1C,EAAyBiC,SACjE2D,GAAM,CAAC5F,EAAyB0C,OAAQ1C,EAAyBmC,SACjE0D,GAAM,CAAC7F,EAAyB0C,OAAQ1C,EAAyBqC,SACjEyD,GAAM,CAAC9F,EAAyB0C,OAAQ1C,EAAyBuC,SACjEwD,GAAM,CAAC/F,EAAyB0C,OAAQ1C,EAAyByC,SACjEuD,GAAM,CAAChG,EAAyB0C,OAAQ1C,EAAyB2C,SACjEsD,GAAM,CAACjG,EAAyB0C,OAAQ1C,EAAyB4C,SACjEsD,GAAM,CAAClG,EAAyB0C,OAAQ1C,EAAyB6C,SACjEsD,GAAM,CAACnG,EAAyB0C,OAAQ1C,EAAyB8C,SACjEsD,GAAM,CAACpG,EAAyB0C,OAAQ1C,EAAyB+C,UAyDzE/C,EAtQA,GA6QAqG,EAAA,WACI,SAAAA,EAAoCtJ,EAAiCuJ,GAAjC/H,KAAAxB,SAAiCwB,KAAA+H,aAiCzE,OA9BWD,EAAA5K,UAAA8K,OAAP,SAAcC,GAAd,IAAAzF,EAAAxC,KACI,QAA2BkI,IAAvBlI,KAAKxB,OAAO2J,OAAsB,CAClC,GAA4B,IAAxBnI,KAAKxB,OAAOmB,QAUZ,YADA9B,QAAQC,KAAK,4BAA4BkC,KAAKxB,OAAOmB,QAAO,oBAR5D,IACMyI,EADqC,IAAI5G,EAAyBxB,KAAKxB,QACnCkD,QAC1C1F,OAAOC,eAAe+D,KAAKxB,OAAQ,SAAU,CACzCjC,MAAO6L,EACPC,UAAU,EACVC,cAAc,IAO1B,IAAM9I,EAAsBQ,KAAKxB,OAAO2J,OACxCnI,KAAK+H,WAAWQ,QAAQ,OAAQ,WAC5B/F,EAAKuF,WAAWS,QAChBhJ,EAAQmC,QAAQ,SAACE,EAAMxD,EAAOoK,GAC1B5G,EAAKF,QAAQ,SAAC+G,GAAgC,OAAAlG,EAAKuF,WAAWY,OAAOD,EAAOnH,cACxElD,EAAQoK,EAAMxK,OAAS,GACvBuE,EAAKuF,WAAWY,OAAO,WAG3BV,GACAA,IAEJzF,EAAKuF,WAAWa,OAAO,WAGnCd,EAlCA,GCvQAe,EAAA,WAGI,SAAAC,EACqBC,EACAC,EACA/H,EACAgI,GAHAjJ,KAAA+I,MACA/I,KAAAgJ,WACAhJ,KAAAiB,UACAjB,KAAAiJ,KAEjBjJ,KAAKkJ,cAAgB,IAAItJ,EAAcqJ,EAAIhI,EAAQlB,YAiL3D,OA9KW+I,EAAA5L,UAAA8K,OAAP,WACIhI,KAAKmJ,YACLnJ,KAAKoJ,qBAGFN,EAAA5L,UAAAmM,SAAP,SAAgBC,GACZtJ,KAAKgJ,SAASO,IAAI,QAASD,GAC3B,IAAME,EAAoBxJ,KAAKgJ,SAASM,QACxCtJ,KAAKgJ,SAASM,MAAME,GACpBxJ,KAAKgJ,SAASS,OAAOD,GACrBxJ,KAAKgJ,SAASO,IAAI,YAAcC,EAAY,GAAM,OAG9CV,EAAA5L,UAAAiM,UAAR,eAAA3G,EAAAxC,KAaI,GAXAA,KAAKgJ,SAASU,SAAS,OAClBlB,QACAG,OAAO,uCACPA,OAAO,uCACPA,OAAO,uCACPA,OAAO,uCACPA,OAAO,kCACPA,OAAO,kCAEZ3I,KAAKqJ,SAASrJ,KAAKiB,QAAQqI,OAEvBtJ,KAAKiB,QAAQ0I,SAAU,CACvB,IAAMC,EAAeC,EAAE,qDAAqD7J,KAAKiJ,GAAE,YAC7Ea,EAAUD,EAAE,+BAClBD,EAAajB,OAAOmB,GAEpB,IAAMC,EAAeF,EAAE,+CAA+C7J,KAAKiJ,GAAE,YAC7Ec,EAAapB,OAAO,mFAAmF3I,KAAKiJ,GAAE,0BAC9Gc,EAAapB,OAAO,iEAAiE3I,KAAKiJ,GAAE,yFAC5Fa,EAAQnB,OAAOoB,GAGf,IAAMC,EAAaH,EAAE,8CAA8C7J,KAAKiJ,GAAE,YAK1E,GAJAe,EAAWrB,OAAO,kFAAkF3I,KAAKiJ,GAAE,0BAC3Ge,EAAWrB,OAAO,gEAAgE3I,KAAKiJ,GAAE,wFACzFa,EAAQnB,OAAOqB,GAEXxM,EAAQ2B,qBAAsB,CAC9B,IAAM8K,EAAkBJ,EAAE,kCAAkC7J,KAAKiJ,GAAE,eACnEzL,EAAQ6B,aAAasC,QAAQ,SAACnD,GAC1ByL,EAAgBtB,OAAO,kBAAkBnK,EAAOG,KAAI,KAAKH,EAAOI,WAAU,eAE9EkL,EAAQnB,OAAOsB,GAInB,GAAIzM,EAAQU,oBAAqB,CAC7B,IAAMgM,EAAeL,EAAE,+BAA+B7J,KAAKiJ,GAAE,eAC7DzL,EAAQc,YAAYqD,QAAQ,SAACd,GACzBqJ,EAAavB,OAAO,kBAAkB9H,EAAMnD,WAAU,KAAKmD,EAAMhF,KAAI,eAEzEiO,EAAQnB,OAAOuB,GAEnB,IAAMC,EAAmCN,EAAE,6DAA6D7J,KAAKiJ,GAAE,UAC/GkB,EAAYC,GAAG,CAACC,MAAO,WAA2B,OAAAR,EAAE,oBAAoBrH,EAAKyG,IAAMqB,KAAK,WACxFR,EAAQnB,OAAOwB,GACfnK,KAAKgJ,SAASuB,MAAMX,GACpBA,EAAaU,OACb,IAAME,EAAkCX,EAAE,+CAA+C7J,KAAKiJ,GAAE,UAChGuB,EAAWJ,GAAG,CAACC,MAAO,WAAY,OAAA7H,EAAKiI,wBACvCzK,KAAKgJ,SAASuB,MAAMC,KAIpB1B,EAAA5L,UAAAkM,kBAAR,eAAA5G,EAAAxC,KAEU+J,EAAoCF,EAAE,4BAA4B7J,KAAKiJ,IAC7Ec,EAAaK,GAAG,CAACC,MAAO,WAAY,OAAA7H,EAAKuG,IAAI2B,YAC7C,IAAI/J,EAASX,KAAKkJ,cAAczI,kBACjByH,IAAXvH,GAAwBX,KAAKiB,QAAQ0J,SACrChK,EAASX,KAAKiB,QAAQN,QAE1BoJ,EAAaa,KAAK,UAAsB,OAAXjK,GACd,OAAXA,EACAX,KAAK+I,IAAI8B,QAET7K,KAAK+I,IAAI+B,OAIb,IAAMd,EAAkCH,EAAE,2BAA2B7J,KAAKiJ,IAC1Ee,EAAWI,GAAG,CACVC,MAAO,WACuB,YAAtB7H,EAAKvB,QAAQxE,KACb+F,EAAKuG,IAAIvI,QAAQ,UAEjBgC,EAAKuG,IAAIvI,QAAQ,cAK7B,IAAI/D,EAAOuD,KAAKkJ,cAAc3I,gBACjB2H,IAATzL,GAAsBuD,KAAKiB,QAAQ0J,SACnClO,EAAOuD,KAAKiB,QAAQxE,MAExBuN,EAAWY,KAAK,UAAoB,YAATnO,GACd,YAATA,EACAuD,KAAK+I,IAAIvI,QAAQ,WAEjBR,KAAK+I,IAAIvI,QAAQ,UAIrB,IAAMuK,EAAuClB,EAAE,uBAAuB7J,KAAKiJ,IAC3E8B,EAAgBX,GAAG,CACfY,OAAQ,WACJ,IAAMC,EAAcpB,EAAE,uBAAuBrH,EAAKyG,IAAMiC,MACxD1I,EAAKuG,IAAI1I,UAAU4K,MAG3B,IAAIE,EAAiBnL,KAAKkJ,cAAcjJ,kBACjBiI,IAAnBiD,GAAgCnL,KAAKiB,QAAQ0J,SAC7CQ,EAAiBnL,KAAKiB,QAAQmK,UAElC,IAAIC,EAAQ7N,EAAQ6B,aAAazB,KAAK,SAAC+E,GAA0B,OAAAwI,IAAmBxI,EAAKhE,OACzF,IAAK0M,EAAO,CACR,IAAIC,OAAgB,EAEhBA,EADA9N,EAAQ0B,aACW1B,EAAQ4B,iBAAiBT,KAEzB,GAEvBd,QAAQC,KAAK,aAAaqN,EAAc,gCAAgCG,EAAgB,MACxFH,EAAiBG,EAErBP,EAAgBG,IAAIC,GACpBnL,KAAKiB,QAAQmK,SAAW,GACxBpL,KAAK+I,IAAI1I,UAAU8K,GAGnB,IAAMI,EAAoC1B,EAAE,oBAAoB7J,KAAKiJ,IACrEsC,EAAanB,GAAG,CACZY,OAAQ,WACJ,IAAMQ,EAAW3B,EAAE,oBAAoBrH,EAAKyG,IAAMiC,MAClD1I,EAAKuG,IAAInI,SAAS4K,MAG1B,IAAIC,EAAgBzL,KAAKkJ,cAAc9K,WAKvC,SAJsB8J,IAAlBuD,GAA+BzL,KAAKiB,QAAQ0J,SAC5Cc,EAAgBzL,KAAKiB,QAAQJ,SAEjCwK,EAAQ7N,EAAQc,YAAYV,KAAK,SAAC+E,GAAyB,OAAA8I,IAAkB9I,EAAKjF,cACtE,CACR,IAAMgO,EAAgBlO,EAAQW,gBAAgBT,WAC9CG,QAAQC,KAAK,UAAU2N,EAAa,gCAAgCC,EAAa,MACjFD,EAAgBC,EAEpBH,EAAaL,IAAIO,GACjBzL,KAAKiB,QAAQJ,MAAQ,GACrBb,KAAK+I,IAAInI,SAAS6K,GACdzL,KAAKiB,QAAQ0K,YACb9B,EAAE+B,QAAQxB,GAAG,CACTyB,OAAQ,WACJ,IAAMC,EAA+BtJ,EAAKwG,SAAS+C,SAC7CC,EAA0BnC,EAAE+B,QAC5BK,EAAsBH,EAAQxC,QAC9B4C,EAAuBJ,EAAQrC,SAC/B0C,EAAsBH,EAAQ1C,QAC9B8C,EAAuBJ,EAAQvC,SAC/B4C,EAAkBC,KAAKC,IAAIN,EAAaC,EAAcC,EAAaC,GAAa,KACtF5J,EAAK6G,SAASgD,OAMtBvD,EAAA5L,UAAAuN,mBAAR,WACIZ,EAAE,oBAAoB7J,KAAKiJ,IAAMyB,OAAO,SAEhD5B,EA1LA,GCCA0D,EAAA,WAOI,SAAAC,EAAoCC,GAAA1M,KAAA0M,iBAL5B1M,KAAA2M,MAAgB,KAChB3M,KAAA4M,cAAwB,KAK5B,IAAMC,EAAW7M,KAAK0M,eAAezL,QAAQ6L,UACJ5E,IAArClI,KAAK0M,eAAezL,QAAQ6L,OAC5B9M,KAAK0M,eAAezL,QAAQ6L,KAAO,IAAIC,MAE3C/M,KAAKkJ,cAAgB,IAAItJ,EAAcI,KAAK0M,eAAeM,KAAMhN,KAAK0M,eAAezL,QAAQlB,YAC7FC,KAAKiN,YACLjN,KAAKkN,SAAW,IAAIrE,EAAY7I,KAAMA,KAAK0M,eAAehO,QAASsB,KAAK0M,eAAezL,QAASjB,KAAK0M,eAAeM,MACpHhN,KAAKkN,SAASlF,cACGE,IAAb2E,GACA7M,KAAKmN,QAAQN,GAqNzB,OAjNWJ,EAAAvP,UAAAkQ,QAAP,WACQpN,KAAK2M,QACLf,OAAOyB,cAAcrN,KAAK2M,OAC1B3M,KAAK2M,MAAQ,MAEjB3M,KAAK0M,eAAehO,QACf4O,WAAW,SACXA,WAAW,SACX9E,QACLqB,EAAE,kBAAkB7J,KAAK0M,eAAeM,MAAQO,SAChD1D,EAAE,oBAAoB7J,KAAK0M,eAAeM,MAAQO,UAG/Cd,EAAAvP,UAAA2N,MAAP,eAAArI,EAAAxC,KACSA,KAAKwN,SACNxN,KAAK2M,MAAQf,OAAO6B,YAAY,WAC5BjL,EAAKkK,eAAezL,QAAQ6L,KAAO,IAAIC,KACvCvK,EAAKkL,UACN,KACH1N,KAAK0N,SACL1N,KAAKkJ,cAAcxI,UAAU,QAI9B+L,EAAAvP,UAAA4N,KAAP,WACQ9K,KAAKwN,SACL5B,OAAOyB,cAAcrN,KAAK2M,OAC1B3M,KAAK2M,MAAQ,KACb3M,KAAK0N,SACL1N,KAAKkJ,cAAcxI,UAAU,SAI9B+L,EAAAvP,UAAAwN,OAAP,WACQ1K,KAAKwN,OACLxN,KAAK8K,OAEL9K,KAAK6K,SAIN4B,EAAAvP,UAAAmD,UAAP,SAAiBxD,GAAjB,IAAA2F,EAAAxC,KACQnD,IAAQmD,KAAK0M,eAAezL,QAAQmK,WACpCpL,KAAK0M,eAAezL,QAAQmK,SAAWvO,EACtB,IAAIiL,EAAe9H,KAAK2N,mBAAoB3N,KAAK0M,eAAehO,QAAQkP,KAAK,gBACrF5F,OAAO,WACZxF,EAAKoK,eAAiB,EACtBpK,EAAKkL,WAET1N,KAAKkJ,cAAc7I,UAAUxD,GAC7BmD,KAAK0N,WAINjB,EAAAvP,UAAA0D,SAAP,SAAgBlD,GACRA,IAAesC,KAAK0M,eAAezL,QAAQJ,QAC3Cb,KAAK0M,eAAehO,QAAQmP,YAAY7N,KAAK0M,eAAezL,QAAQJ,OAAO6I,SAAShM,GACpFmM,EAAE,mBAAmB7J,KAAK0M,eAAeM,MAAQa,YAAY7N,KAAK0M,eAAezL,QAAQJ,OAAO6I,SAAShM,GACzGsC,KAAK0M,eAAezL,QAAQJ,MAAQnD,EACpCsC,KAAKkJ,cAActI,SAASlD,KAI7B+O,EAAAvP,UAAAiQ,QAAP,SAAeL,GACX9M,KAAK4M,cAAgB,KACR,OAATE,EACA9M,KAAK0M,eAAezL,QAAQ6L,KAAO,IAAIC,MAEpB,OAAf/M,KAAK2M,OACLf,OAAOyB,cAAcrN,KAAK2M,OAE9B3M,KAAK0M,eAAezL,QAAQ6L,KAAOA,GAEvC9M,KAAK0N,UAGFjB,EAAAvP,UAAAsD,QAAP,SAAe/D,GACXuD,KAAK0M,eAAezL,QAAQxE,KAAOA,EACnCuD,KAAK4M,cAAgB,KACrB5M,KAAK0N,SACL1N,KAAKkJ,cAAc1I,QAAQ/D,IAGxBgQ,EAAAvP,UAAAmM,SAAP,SAAgBC,GACZtJ,KAAKkN,SAAS7D,SAASC,IAGnBmD,EAAAvP,UAAAsQ,KAAR,WACI,OAAsB,OAAfxN,KAAK2M,OAGRF,EAAAvP,UAAAwQ,OAAR,WACI,GAAI1N,KAAKwN,OAAQ,CACb,IAAMV,EAAO9M,KAAK0M,eAAezL,QAAQ6L,KACzC,IAAK9M,KAAK2N,mBAAmBxQ,eAAe,YAAmD,YAArC6C,KAAK0M,eAAezL,QAAQxE,KAAoB,CACtG,GAAIqQ,EAAKgB,eAAiB9N,KAAK4M,cAC3B,OAEJ5M,KAAK4M,cAAgBE,EAAKgB,aAE9B9N,KAAK+N,KAAKjB,QAEV9M,KAAKgO,QACLhO,KAAK4M,eAAiB,GAItBH,EAAAvP,UAAA6Q,KAAR,SAAajB,GACT,IAAMmB,EAASjO,KAAKkO,UAAUpB,GACxBqB,EAAYnO,KAAKoO,aAAatB,GAC9BuB,EAAOrO,KAAKsO,QAAQxB,GACpByB,EAAevO,KAAKwO,gBAAgB1B,GAE1C,GADA9M,KAAKgO,QACoC,YAArChO,KAAK0M,eAAezL,QAAQxE,KAC5BuD,KAAKyO,UAAU,SAASR,OACrB,CACHjO,KAAKyO,UAAU,MACf,IAAK,IAAInT,EAAI,EAAGA,GAAK6S,EAAW7S,IAC5B0E,KAAKyO,UAAU,MAAMnT,GAEzB0E,KAAKyO,UAAU,SAASF,GACxBvO,KAAKyO,UAAU,OAAOJ,KAItB5B,EAAAvP,UAAA8Q,MAAR,WACIhO,KAAK0M,eAAehO,QAAQkP,KAAK,SAASC,YAAY,WAGlDpB,EAAAvP,UAAAuR,UAAR,SAAkBC,GACd1O,KAAK0M,eAAehO,QAAQkP,KAAK,SAASc,GAAahF,SAAS,WAG5D+C,EAAAvP,UAAAgR,UAAR,SAAkBpB,GACd,MAAkD,mBAAvC9M,KAAK2N,mBAAmBgB,WACxB3O,KAAK2N,mBAAmBgB,WAAW7B,GAEvCA,EAAK6B,cAGRlC,EAAAvP,UAAAkR,aAAR,SAAqBQ,GACjB,MAAoD,mBAAzC5O,KAAK2N,mBAAmBS,aACxBpO,KAAK2N,mBAAmBS,aAAaQ,GAEzCA,EAAKd,aAAe,GAGvBrB,EAAAvP,UAAAsR,gBAAR,SAAwBI,GACpB,MAAuD,mBAA5C5O,KAAK2N,mBAAmBa,gBACxBxO,KAAK2N,mBAAmBa,gBAAgBI,GAE5CA,EAAKd,cAGRrB,EAAAvP,UAAAoR,QAAR,SAAgBM,GACZ,GAA+C,mBAApC5O,KAAK2N,mBAAmBW,QAC/B,OAAOtO,KAAK2N,mBAAmBW,QAAQM,GAE3C,IAAMP,EAAOO,EAAKC,WAClB,OAAID,EAAKd,cAAgB,IACbO,EAAO,GAAK,GAEjBA,GAGH5B,EAAAvP,UAAA+P,UAAR,eAAAzK,EAAAxC,KACQ8O,EAAelD,OAAOmD,SAASD,UACtB5G,IAAT4G,GAAyC,MAAnBA,EAAKE,OAAO,KAClCF,EAAOA,EAAKG,UAAU,IACtBH,EAAOI,mBAAmBJ,IACI/L,MAAM,KAC7BpB,QAAQ,SAACjD,GACZ,IAAMyQ,EAAiBzQ,EAAQqE,MAAM,KAC/BlG,EAAMsS,EAAK,GACX5S,EAAQ4S,EAAK,GACnB,OAAQtS,GACJ,IAAK,IACL,IAAK,WACD2F,EAAKkK,eAAezL,QAAQmK,SAAW7O,EACvCiG,EAAKkK,eAAezL,QAAQ0J,OAAQ,EACpC,MACJ,IAAK,IACL,IAAK,QACDnI,EAAKkK,eAAezL,QAAQJ,MAAQtE,EACpCiG,EAAKkK,eAAezL,QAAQ0J,OAAQ,EACpC,MACJ,IAAK,IACL,IAAK,OACDnI,EAAKkK,eAAezL,QAAQxE,KAAOF,EACnCiG,EAAKkK,eAAezL,QAAQ0J,OAAQ,EACpC,MACJ,IAAK,IACL,IAAK,SACDnI,EAAKkK,eAAezL,QAAQN,OAASpE,EACrCiG,EAAKkK,eAAezL,QAAQ0J,OAAQ,OAOhD8B,EAAAvP,UAAAyQ,iBAAR,eAAAnL,EAAAxC,KACUoP,EAA8B5R,EAAQ6B,aAAagQ,OAAO,SAAC3Q,GAA6B,OAAAA,EAAQC,OAAS6D,EAAKkK,eAAezL,QAAQmK,UAAUpL,MACrJ,OAAIoP,EAAkBnR,OAAS,EACpBmR,EAAkB,GAGtB9P,GAEfmN,EAtOA,UCNI6C,EAAE,wBAAwBC,KAAK,SAAClR,EAAOsE,GACnC,IAAM6M,EAAaF,EAAE3M,GACfjF,EAAqB8R,EAAWC,KAAK,cAC3C,QAAmBvH,IAAfxK,EAA0B,CAC1B,IAAIgS,EAAeF,EAAWC,KAAK,kBACtBvH,IAATwH,IACAA,EAAOhS,GAEXF,EAAQC,cAAciS,EAAMhS,MAK/BF,EAAQQ,aACTR,EAAQC,cAAc,GAAI,ICKlC,IAAMkS,EAAmC,CACrC1O,QAAS,CACLqI,MAAO,OACP3I,OAAQ,KACRyK,SAAU,QACVvK,MAAOrD,EAAQW,gBAAgBT,WAC/BiN,OAAO,EACPhB,UAAU,EACV5J,gBAAYmI,EACZyD,YAAY,EACZlP,KAAM,UAEVoO,MAAO,WACH7K,KAAK4P,qBAAqB/E,SAE9BC,KAAM,WACF9K,KAAK4P,qBAAqB9E,QAE9BJ,OAAQ,WACJ1K,KAAK4P,qBAAqBlF,UAE9BU,SAAU,SAAUvO,GAChBmD,KAAK4P,qBAAqBvP,UAAUxD,IAExCgE,MAAO,SAAUnD,GACbsC,KAAK4P,qBAAqBhP,SAASlD,IAEvCoP,KAAM,SAAUA,GACZ9M,KAAK4P,qBAAqBzC,QAAQL,IAEtCrQ,KAAM,SAAUA,GACZuD,KAAK4P,qBAAqBpP,QAAQ/D,IAEtC6M,MAAO,SAAUA,GACbtJ,KAAK4P,qBAAqBvG,SAASC,IAGvCuG,QAAS,WACL7P,KAAK4P,qBAAuB,IAAIpD,EAAIxM,OAGxC8P,SAAU,WACN9P,KAAK4P,qBAAqBxC,WAE9BwC,qBAAsB,MAE1B/F,EAAEkG,OAAO,eAAgBJ,GAEzB9F,EAAEmG,SAASjH,IAAIkH,SAAWzS,EAAQe","file":"lib/uhr.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 12);\n","module.exports = Cookies;","module.exports = jQuery;","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout} from './layout';\nimport {Theme} from './theme';\n\nexport class Globals {\n private static layouts: Layout[] = [];\n private static themes: Theme[] = [];\n\n public static registerTheme(name: string, styleClass: string): void {\n if (Globals.themes.some((value): boolean => value.name === name)) {\n console.warn(`Theme with name '${name}' already registered; ignoring register request for styleClass '${styleClass}'.`);\n } else {\n Globals.themes.push({\n name,\n styleClass\n });\n }\n }\n\n public static hasThemes(): boolean {\n return Globals.themes.length > 0;\n }\n\n public static hasMultipleThemes(): boolean {\n return Globals.themes.length > 1;\n }\n\n public static getFirstTheme(): Theme {\n return Globals.getTheme(0);\n }\n\n public static getTheme(index: number): Theme {\n return Globals.themes[index];\n }\n\n public static getThemes(): Theme[] {\n return Globals.themes;\n }\n\n public static registerLayout(layout: Layout): void {\n const available = !Globals.layouts.some((element): boolean => {\n if (layout.code === element.code) {\n if (layout.prettyName !== element.prettyName) {\n console.error(\n `Error: Language code '${layout.code}' cannot be registered for layout '${layout.prettyName}' because it is already registered for layout '${element.prettyName}'!`\n );\n }\n return true;\n }\n return false;\n });\n if (available) {\n Globals.layouts.push(layout);\n Globals.layouts.sort((a, b): number => a.prettyName.localeCompare(b.prettyName));\n }\n }\n\n public static hasLayouts(): boolean {\n return Globals.layouts.length > 0;\n }\n\n public static hasMultipleLayouts(): boolean {\n return Globals.layouts.length > 1;\n }\n\n public static getFirstLayout(): Layout {\n return Globals.layouts[0];\n }\n\n public static getLayouts(): Layout[] {\n return Globals.layouts;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Letter} from './letter';\n\nexport interface Layout {\n readonly code: string;\n getCoarseMinute?: (time: Date) => number;\n getDotMinute?: (time: Date) => number;\n getHour?: (time: Date) => number;\n getSeconds?: (time: Date) => number;\n readonly hours: TimeDefinition;\n readonly letters: string[];\n readonly minutes: TimeDefinition;\n parsed?: Letter[][];\n readonly permanent: WordDefinition | WordDefinition[];\n readonly prettyName: string;\n seconds?: TimeDefinition;\n readonly version: number;\n}\n\nexport interface WordDefinition {\n [line: number]: number[];\n}\n\nexport interface TimeDefinition {\n [values: string]: WordDefinition | WordDefinition[];\n}\n\nexport const EMPTY_LAYOUT: Layout = {\n code: null,\n hours: null,\n letters: [],\n minutes: null,\n permanent: [],\n prettyName: null,\n version: 2\n};\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport * as Cookies from 'js-cookie';\n\nexport class CookieHandler {\n public constructor(private readonly widgetId: string, private readonly cookiePath?: string) {\n }\n\n public getLayout(): string {\n const oldCookie = this.getCookie('uhr-language');\n if (oldCookie) {\n // aha, old cookie is set. migrate to new one!\n this.removeCookie('uhr-language');\n this.setLayout(oldCookie);\n }\n return this.getCookie('uhr-layout');\n }\n\n public setLayout(layout: string): void {\n this.setCookie('uhr-layout', layout);\n }\n\n public getMode(): string {\n return this.getCookie('uhr-mode');\n }\n\n public setMode(mode: string): void {\n this.setCookie('uhr-mode', mode);\n }\n\n public getStatus(): string {\n return this.getCookie('uhr-status');\n }\n\n public setStatus(status: string): void {\n this.setCookie('uhr-status', status);\n }\n\n public getTheme(): string {\n return this.getCookie('uhr-theme');\n }\n\n public setTheme(theme: string): void {\n this.setCookie('uhr-theme', theme);\n }\n\n private getCookie(cookieName: string): string {\n return Cookies.get(cookieName + this.widgetId);\n }\n\n private setCookie(cookieName: string, cookieValue: string): void {\n let options;\n if (this.cookiePath) {\n options = {expires: 365, path: this.cookiePath};\n } else {\n options = {expires: 365};\n }\n Cookies.set(cookieName + this.widgetId, cookieValue, options);\n }\n\n private removeCookie(cookieName: string): void {\n if (this.cookiePath) {\n Cookies.remove(cookieName + this.widgetId, {path: this.cookiePath});\n } else {\n Cookies.remove(cookieName + this.widgetId);\n }\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\n/**\n * Ein Buchstabe. Hilfsklasse für den Renderer und Inhalt der Layout-Arrays.\n * @param value Der Buchstabe, der Dargestellt werden soll.\n * @param style Die CSS-Styleklassen des Buchstabens.\n */\nexport class Letter {\n // private readonly value: string;\n private style: string;\n\n public constructor(private readonly value: string, style: string = '') {\n this.value = value;\n this.style = style;\n // if (style) {\n // this.style = style;\n // }\n }\n\n public addStyle(style: string): void {\n if (this.style === '') {\n this.style = style;\n } else {\n this.style += ` ${style}`;\n }\n }\n\n public toString(): string {\n return `${this.value}`;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, TimeDefinition, WordDefinition} from './domain/layout';\nimport {Letter} from './domain/letter';\n\nclass LayoutRendererV2Delegate {\n private static readonly vorne0: WordDefinition = {\n 3: [2, 3, 4],\n 4: [1, 5],\n 5: [1, 4, 5],\n 6: [1, 3, 5],\n 7: [1, 2, 5],\n 8: [1, 5],\n 9: [2, 3, 4]\n };\n private static readonly hinten0: WordDefinition = {\n 3: [8, 9, 10],\n 4: [7, 11],\n 5: [7, 10, 11],\n 6: [7, 9, 11],\n 7: [7, 8, 11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly vorne1: WordDefinition = {\n 3: [3],\n 4: [2, 3],\n 5: [3],\n 6: [3],\n 7: [3],\n 8: [3],\n 9: [2, 3, 4]\n };\n private static readonly hinten1: WordDefinition = {\n 3: [9],\n 4: [8, 9],\n 5: [9],\n 6: [9],\n 7: [9],\n 8: [9],\n 9: [8, 9, 10]\n };\n private static readonly vorne2: WordDefinition = {\n 3: [2, 3, 4],\n 4: [1, 5],\n 5: [5],\n 6: [4],\n 7: [3],\n 8: [2],\n 9: [1, 2, 3, 4, 5]\n };\n private static readonly hinten2: WordDefinition = {\n 3: [8, 9, 10],\n 4: [7, 11],\n 5: [11],\n 6: [10],\n 7: [9],\n 8: [8],\n 9: [7, 8, 9, 10, 11]\n };\n private static readonly vorne3: WordDefinition = {\n 3: [1, 2, 3, 4, 5],\n 4: [4],\n 5: [3],\n 6: [4],\n 7: [5],\n 8: [1, 5],\n 9: [2, 3, 4]\n };\n private static readonly hinten3: WordDefinition = {\n 3: [7, 8, 9, 10, 11],\n 4: [10],\n 5: [9],\n 6: [10],\n 7: [11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly vorne4: WordDefinition = {\n 3: [4],\n 4: [3, 4],\n 5: [2, 4],\n 6: [1, 4],\n 7: [1, 2, 3, 4, 5],\n 8: [4],\n 9: [4]\n };\n private static readonly hinten4: WordDefinition = {\n 3: [10],\n 4: [9, 10],\n 5: [8, 10],\n 6: [7, 10],\n 7: [7, 8, 9, 10, 11],\n 8: [10],\n 9: [10]\n };\n private static readonly vorne5: WordDefinition = {\n 3: [1, 2, 3, 4, 5],\n 4: [1],\n 5: [1, 2, 3, 4],\n 6: [5],\n 7: [5],\n 8: [1, 5],\n 9: [2, 3, 4]\n };\n private static readonly hinten5: WordDefinition = {\n 3: [7, 8, 9, 10, 11],\n 4: [7],\n 5: [7, 8, 9, 10],\n 6: [11],\n 7: [11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly hinten6: WordDefinition = {\n 3: [9, 10],\n 4: [8],\n 5: [7],\n 6: [7, 8, 9, 10],\n 7: [7, 11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly hinten7: WordDefinition = {\n 3: [7, 8, 9, 10, 11],\n 4: [11],\n 5: [10],\n 6: [9],\n 7: [8],\n 8: [8],\n 9: [8]\n };\n private static readonly hinten8: WordDefinition = {\n 3: [8, 9, 10],\n 4: [7, 11],\n 5: [7, 11],\n 6: [8, 9, 10],\n 7: [7, 11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly hinten9: WordDefinition = {\n 3: [8, 9, 10],\n 4: [7, 11],\n 5: [7, 11],\n 6: [8, 9, 10, 11],\n 7: [11],\n 8: [10],\n 9: [8, 9]\n };\n private static readonly seconds: TimeDefinition = {\n '0': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten0],\n '1': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten1],\n '2': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten2],\n '3': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten3],\n '4': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten4],\n '5': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten5],\n '6': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten6],\n '7': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten7],\n '8': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten8],\n '9': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten9],\n '10': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten0],\n '11': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten1],\n '12': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten2],\n '13': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten3],\n '14': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten4],\n '15': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten5],\n '16': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten6],\n '17': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten7],\n '18': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten8],\n '19': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten9],\n '20': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten0],\n '21': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten1],\n '22': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten2],\n '23': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten3],\n '24': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten4],\n '25': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten5],\n '26': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten6],\n '27': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten7],\n '28': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten8],\n '29': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten9],\n '30': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten0],\n '31': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten1],\n '32': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten2],\n '33': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten3],\n '34': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten4],\n '35': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten5],\n '36': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten6],\n '37': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten7],\n '38': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten8],\n '39': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten9],\n '40': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten0],\n '41': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten1],\n '42': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten2],\n '43': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten3],\n '44': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten4],\n '45': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten5],\n '46': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten6],\n '47': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten7],\n '48': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten8],\n '49': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten9],\n '50': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten0],\n '51': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten1],\n '52': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten2],\n '53': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten3],\n '54': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten4],\n '55': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten5],\n '56': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten6],\n '57': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten7],\n '58': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten8],\n '59': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten9]\n };\n\n public constructor(private readonly layout: Layout) {\n }\n\n public parse(): Letter[][] {\n const letters: Letter[][] = [];\n this.layout.letters.forEach((lineString: string): void => {\n const line: Letter[] = [];\n for (let c = 0; c < lineString.length; c++) {\n line.push(new Letter(lineString[c]));\n }\n letters.push(line);\n });\n this.parseArrayOrObject(letters, 'on', this.layout.permanent);\n if (typeof this.layout.seconds !== 'undefined' && this.layout.seconds !== null) {\n this.parseTimeDefinition(letters, 'second', this.layout.seconds);\n } else {\n this.parseTimeDefinition(letters, 'second', LayoutRendererV2Delegate.seconds);\n }\n this.parseTimeDefinition(letters, 'minute', this.layout.minutes);\n this.parseTimeDefinition(letters, 'hour', this.layout.hours);\n return letters;\n }\n\n private parseObject(letters: Letter[][], styleClass: string, object: WordDefinition): void {\n if (typeof object !== 'undefined' && object !== null) {\n Object.keys(object)\n .map((key: string): number => Number(key))\n .forEach(\n (y: number): void => object[y].forEach(\n (x: number): void => letters[y - 1][x - 1].addStyle(styleClass)\n )\n );\n }\n }\n\n private parseArrayOrObject(letters: Letter[][], styleClass: string, input: WordDefinition | WordDefinition[]): void {\n if (typeof input !== 'undefined' && input !== null) {\n if (Array.isArray(input)) {\n input.forEach((item: WordDefinition): void => this.parseObject(letters, styleClass, item));\n } else {\n this.parseObject(letters, styleClass, input);\n }\n }\n }\n\n private parseTimeDefinition(letters: Letter[][], styleClass: string, definition: TimeDefinition): void {\n if (typeof definition !== 'undefined' && definition !== null) {\n Object.keys(definition).forEach((listString: string): void => {\n const timeValues: string[] = listString.split(',');\n const highlightLetters: WordDefinition | WordDefinition[] = definition[listString];\n timeValues.forEach((timeValue: string): void => this.parseArrayOrObject(letters, styleClass + timeValue, highlightLetters));\n });\n }\n }\n}\n\n/**\n * Hilfsklasse zum Rendern der Buchstaben der Uhr.\n * @param layout Layout-Objekt, das gerendert werden soll.\n * @param renderarea Das jQuery-gewrappte HTML-Element, auf dem gerendert werden soll.\n */\nexport class LayoutRenderer {\n public constructor(private readonly layout: Layout, private readonly renderarea: JQuery) {\n }\n\n public render(beforeshow?: () => void): void {\n if (this.layout.parsed === undefined) {\n if (this.layout.version === 2) {\n const delegate: LayoutRendererV2Delegate = new LayoutRendererV2Delegate(this.layout);\n const parsedLayout: Letter[][] = delegate.parse();\n Object.defineProperty(this.layout, 'parsed', {\n value: parsedLayout,\n writable: false,\n configurable: false\n });\n } else {\n console.warn(`Unknown layout version: '${this.layout.version}', expecting '2'`);\n return;\n }\n }\n const letters: Letter[][] = this.layout.parsed;\n this.renderarea.fadeOut('fast', (): void => {\n this.renderarea.empty();\n letters.forEach((line, index, array): void => {\n line.forEach((letter): JQuery => this.renderarea.append(letter.toString()));\n if (index < array.length - 1) {\n this.renderarea.append('
');\n }\n });\n if (beforeshow) {\n beforeshow();\n }\n this.renderarea.fadeIn('fast');\n });\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {CookieHandler} from './cookie-handler';\nimport {Globals} from './domain/globals';\nimport {Layout} from './domain/layout';\nimport {Options} from './widget/options';\nimport {Theme} from './domain/theme';\nimport {Uhr} from './uhr';\n\ndeclare var $: JQueryStatic;\n\nexport class UhrRenderer {\n private cookieHandler: CookieHandler;\n\n public constructor(\n private readonly uhr: Uhr,\n private readonly $element: JQuery,\n private readonly options: Options,\n private readonly id: string\n ) {\n this.cookieHandler = new CookieHandler(id, options.cookiePath);\n }\n\n public render(): void {\n this.setupHTML();\n this.wireFunctionality();\n }\n\n public setWidth(width: string): void {\n this.$element.css('width', width);\n const realWidth: number = this.$element.width();\n this.$element.width(realWidth);\n this.$element.height(realWidth);\n this.$element.css('font-size', (realWidth / 40) + 'px');\n }\n\n private setupHTML(): void {\n // Base clock area\n this.$element.addClass('uhr')\n .empty()\n .append('')\n .append('')\n .append('')\n .append('')\n .append('
')\n .append('
');\n\n this.setWidth(this.options.width);\n\n if (this.options.controls) {\n const controlpanel = $(`
`);\n const content = $('
');\n controlpanel.append(content);\n // on/off switch\n const toggleSwitch = $(`
`);\n toggleSwitch.append(``);\n toggleSwitch.append(``);\n content.append(toggleSwitch);\n\n // time mode switch\n const modeSwitch = $(`
`);\n modeSwitch.append(``);\n modeSwitch.append(``);\n content.append(modeSwitch);\n // language chooser\n if (Globals.hasMultipleLayouts()) {\n const languageChooser = $(``);\n Globals.getLayouts().forEach((layout: Layout): void => {\n languageChooser.append(``);\n });\n content.append(languageChooser);\n }\n\n // theme chooser\n if (Globals.hasMultipleThemes()) {\n const themeChooser = $(``);\n Globals.getThemes().forEach((theme: Theme): void => {\n themeChooser.append(``);\n });\n content.append(themeChooser);\n }\n const closebutton: JQuery = $(``);\n closebutton.on({click: (): JQuery => $(`#uhr-controlpanel${this.id}`).hide('fast')});\n content.append(closebutton);\n this.$element.after(controlpanel);\n controlpanel.hide();\n const configlink: JQuery = $(``);\n configlink.on({click: (): void => this.toggleConfigScreen()});\n this.$element.after(configlink);\n }\n }\n\n private wireFunctionality(): void {\n // on/off switch\n const toggleSwitch: JQuery = $(`#uhr-onoffswitch-checkbox${this.id}`);\n toggleSwitch.on({click: (): void => this.uhr.toggle()});\n let status = this.cookieHandler.getStatus();\n if (status === undefined || this.options.force) {\n status = this.options.status;\n }\n toggleSwitch.prop('checked', status === 'on');\n if (status === 'on') {\n this.uhr.start();\n } else {\n this.uhr.stop();\n }\n\n // time mode switch\n const modeSwitch: JQuery = $(`#uhr-modeswitch-checkbox${this.id}`);\n modeSwitch.on({\n click: (): void => {\n if (this.options.mode === 'seconds') {\n this.uhr.setMode('normal');\n } else {\n this.uhr.setMode('seconds');\n }\n }\n });\n\n let mode = this.cookieHandler.getMode();\n if (mode === undefined || this.options.force) {\n mode = this.options.mode;\n }\n modeSwitch.prop('checked', mode !== 'seconds');\n if (mode === 'seconds') {\n this.uhr.setMode('seconds');\n } else {\n this.uhr.setMode('normal');\n }\n\n // language chooser\n const languageChooser: JQuery = $(`#uhr-languagechooser${this.id}`);\n languageChooser.on({\n change: (): void => {\n const languageKey = $(`#uhr-languagechooser${this.id}`).val() as string;\n this.uhr.setLayout(languageKey);\n }\n });\n let selectedLayout = this.cookieHandler.getLayout();\n if (selectedLayout === undefined || this.options.force) {\n selectedLayout = this.options.language;\n }\n let found = Globals.getLayouts().some((item: Layout): boolean => selectedLayout === item.code);\n if (!found) {\n let fallbackLanguage;\n if (Globals.hasLayouts()) {\n fallbackLanguage = Globals.getFirstLayout().code;\n } else {\n fallbackLanguage = '';\n }\n console.warn(`Language '${selectedLayout}' not found! Using fallback '${fallbackLanguage}'.`);\n selectedLayout = fallbackLanguage;\n }\n languageChooser.val(selectedLayout);\n this.options.language = '';\n this.uhr.setLayout(selectedLayout);\n\n // theme chooser\n const themeChooser: JQuery = $(`#uhr-themechooser${this.id}`);\n themeChooser.on({\n change: (): void => {\n const themeKey = $(`#uhr-themechooser${this.id}`).val() as string;\n this.uhr.setTheme(themeKey);\n }\n });\n let selectedTheme = this.cookieHandler.getTheme();\n if (selectedTheme === undefined || this.options.force) {\n selectedTheme = this.options.theme;\n }\n found = Globals.getThemes().some((item: Theme): boolean => selectedTheme === item.styleClass);\n if (!found) {\n const fallbackTheme = Globals.getFirstTheme().styleClass;\n console.warn(`Theme '${selectedTheme}' not found! Using fallback '${fallbackTheme}'.`);\n selectedTheme = fallbackTheme;\n }\n themeChooser.val(selectedTheme);\n this.options.theme = '';\n this.uhr.setTheme(selectedTheme);\n if (this.options.autoresize) {\n $(window).on({\n resize: (): void => {\n const $parent: JQuery = this.$element.parent();\n const $window: JQuery = $(window);\n const parentWidth: number = $parent.width();\n const parentHeight: number = $parent.height();\n const windowWidth: number = $window.width();\n const windowHeight: number = $window.height();\n const size: string = `${Math.min(parentWidth, parentHeight, windowWidth, windowHeight)}px`;\n this.setWidth(size);\n }\n });\n }\n }\n\n private toggleConfigScreen(): void {\n $(`#uhr-controlpanel${this.id}`).toggle('fast');\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\n/*eslint no-undef: \"warn\"*/\nimport WidgetCommonProperties = JQueryUI.WidgetCommonProperties;\nimport {EMPTY_LAYOUT, Layout} from './domain/layout';\nimport {CookieHandler} from './cookie-handler';\nimport {Globals} from './domain/globals';\nimport {LayoutRenderer} from './layout-renderer';\nimport {UhrRenderer} from './uhr-renderer';\nimport {WidgetPrototype} from './widget/widget-prototype';\n\ndeclare var $: JQueryStatic;\n\nexport class Uhr {\n\n private timer: number = null;\n private currentMinute: number = null;\n private renderer: UhrRenderer;\n private cookieHandler: CookieHandler;\n\n public constructor(private readonly widgetInstance: WidgetPrototype & WidgetCommonProperties) {\n const userTime = this.widgetInstance.options.time;\n if (this.widgetInstance.options.time === undefined) {\n this.widgetInstance.options.time = new Date();\n }\n this.cookieHandler = new CookieHandler(this.widgetInstance.uuid, this.widgetInstance.options.cookiePath);\n this.parseHash();\n this.renderer = new UhrRenderer(this, this.widgetInstance.element, this.widgetInstance.options, this.widgetInstance.uuid);\n this.renderer.render();\n if (userTime !== undefined) {\n this.setTime(userTime);\n }\n }\n\n public destroy(): void {\n if (this.timer) {\n window.clearInterval(this.timer);\n this.timer = null;\n }\n this.widgetInstance.element\n .removeAttr('style')\n .removeAttr('class')\n .empty();\n $(`#uhr-configlink${this.widgetInstance.uuid}`).remove();\n $(`#uhr-controlpanel${this.widgetInstance.uuid}`).remove();\n }\n\n public start(): void {\n if (!this.isOn()) {\n this.timer = window.setInterval((): void => {\n this.widgetInstance.options.time = new Date();\n this.update();\n }, 1000);\n this.update();\n this.cookieHandler.setStatus('on');\n }\n }\n\n public stop(): void {\n if (this.isOn()) {\n window.clearInterval(this.timer);\n this.timer = null;\n this.update();\n this.cookieHandler.setStatus('off');\n }\n }\n\n public toggle(): void {\n if (this.isOn()) {\n this.stop();\n } else {\n this.start();\n }\n }\n\n public setLayout(key: string): void {\n if (key !== this.widgetInstance.options.language) {\n this.widgetInstance.options.language = key;\n const renderer = new LayoutRenderer(this.getCurrentLayout(), this.widgetInstance.element.find('.letterarea'));\n renderer.render((): void => {\n this.currentMinute = -1;\n this.update();\n });\n this.cookieHandler.setLayout(key);\n this.update();\n }\n }\n\n public setTheme(styleClass: string): void {\n if (styleClass !== this.widgetInstance.options.theme) {\n this.widgetInstance.element.removeClass(this.widgetInstance.options.theme).addClass(styleClass);\n $(`#uhr-onoffswitch${this.widgetInstance.uuid}`).removeClass(this.widgetInstance.options.theme).addClass(styleClass);\n this.widgetInstance.options.theme = styleClass;\n this.cookieHandler.setTheme(styleClass);\n }\n }\n\n public setTime(time: Date): void {\n this.currentMinute = null;\n if (time === null) {\n this.widgetInstance.options.time = new Date();\n } else {\n if (this.timer !== null) {\n window.clearInterval(this.timer);\n }\n this.widgetInstance.options.time = time;\n }\n this.update();\n }\n\n public setMode(mode: string): void {\n this.widgetInstance.options.mode = mode;\n this.currentMinute = null;\n this.update();\n this.cookieHandler.setMode(mode);\n }\n\n public setWidth(width: string): void {\n this.renderer.setWidth(width);\n }\n\n private isOn(): boolean {\n return this.timer !== null;\n }\n\n private update(): void {\n if (this.isOn()) {\n const time = this.widgetInstance.options.time;\n if (!this.getCurrentLayout().hasOwnProperty('seconds') && this.widgetInstance.options.mode !== 'seconds') {\n if (time.getMinutes() === this.currentMinute) {\n return;\n }\n this.currentMinute = time.getMinutes();\n }\n this.show(time);\n } else {\n this.clear();\n this.currentMinute = -1;\n }\n }\n\n private show(time: Date): void {\n const second = this.getSecond(time);\n const dotMinute = this.getDotMinute(time);\n const hour = this.getHour(time);\n const coarseMinute = this.getCoarseMinute(time);\n this.clear();\n if (this.widgetInstance.options.mode === 'seconds') {\n this.highlight(`second${second}`);\n } else {\n this.highlight('on');\n for (let i = 1; i <= dotMinute; i++) {\n this.highlight(`dot${i}`);\n }\n this.highlight(`minute${coarseMinute}`);\n this.highlight(`hour${hour}`);\n }\n }\n\n private clear(): void {\n this.widgetInstance.element.find('.item').removeClass('active');\n }\n\n private highlight(itemClass: string): void {\n this.widgetInstance.element.find(`.item.${itemClass}`).addClass('active');\n }\n\n private getSecond(time: Date): number {\n if (typeof this.getCurrentLayout().getSeconds === 'function') {\n return this.getCurrentLayout().getSeconds(time);\n }\n return time.getSeconds();\n }\n\n private getDotMinute(date: Date): number {\n if (typeof this.getCurrentLayout().getDotMinute === 'function') {\n return this.getCurrentLayout().getDotMinute(date);\n }\n return date.getMinutes() % 5;\n }\n\n private getCoarseMinute(date: Date): number {\n if (typeof this.getCurrentLayout().getCoarseMinute === 'function') {\n return this.getCurrentLayout().getCoarseMinute(date);\n }\n return date.getMinutes();\n }\n\n private getHour(date: Date): number {\n if (typeof this.getCurrentLayout().getHour === 'function') {\n return this.getCurrentLayout().getHour(date);\n }\n const hour = date.getHours();\n if (date.getMinutes() >= 25) {\n return (hour + 1) % 24;\n }\n return hour;\n }\n\n private parseHash(): void {\n let hash: string = window.location.hash;\n if (hash !== undefined && hash.charAt(0) === '#') {\n hash = hash.substring(1);\n hash = decodeURIComponent(hash);\n const params: string[] = hash.split('&');\n params.forEach((element: string): void => {\n const pair: string[] = element.split('=');\n const key = pair[0];\n const value = pair[1];\n switch (key) {\n case 'l':\n case 'language':\n this.widgetInstance.options.language = value;\n this.widgetInstance.options.force = true;\n break;\n case 't':\n case 'theme':\n this.widgetInstance.options.theme = value;\n this.widgetInstance.options.force = true;\n break;\n case 'm':\n case 'mode':\n this.widgetInstance.options.mode = value;\n this.widgetInstance.options.force = true;\n break;\n case 's':\n case 'status':\n this.widgetInstance.options.status = value;\n this.widgetInstance.options.force = true;\n break;\n }\n });\n }\n }\n\n private getCurrentLayout(): Layout {\n const matchingLanguages: Layout[] = Globals.getLayouts().filter((element: Layout): boolean => element.code === this.widgetInstance.options.language, this);\n if (matchingLanguages.length > 0) {\n return matchingLanguages[0];\n }\n // fallback: return empty object\n return EMPTY_LAYOUT;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport * as $ from 'jquery';\nimport {Globals} from './domain/globals';\n\nexport function autodetectThemes(): void {\n $('link[rel=stylesheet]').each((index, item): void => {\n const styleSheet = $(item);\n const styleClass: string = styleSheet.attr('data-class');\n if (styleClass !== undefined) {\n let name: string = styleSheet.attr('data-name');\n if (name === undefined) {\n name = styleClass;\n }\n Globals.registerTheme(name, styleClass);\n }\n });\n\n // fall-back if no theme was included\n if (!Globals.hasThemes()) {\n Globals.registerTheme('', '');\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Globals} from './domain/globals';\nimport {Layout} from './domain/layout';\nimport {Uhr} from './uhr';\nimport {WidgetPrototype} from './widget/widget-prototype';\nimport {autodetectThemes} from './theme-autodetector';\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n const widget: JQueryUI.Widget;\n}\n\n// First things first: discover included themes and register them\nautodetectThemes();\n\nconst widgetPrototype: WidgetPrototype = {\n options: {\n width: '100%',\n status: 'on',\n language: 'de_CH',\n theme: Globals.getFirstTheme().styleClass,\n force: false,\n controls: true,\n cookiePath: undefined,\n autoresize: true,\n mode: 'normal'\n },\n start: function (): void {\n this._fritteliUhrInstance.start();\n },\n stop: function (): void {\n this._fritteliUhrInstance.stop();\n },\n toggle: function (): void {\n this._fritteliUhrInstance.toggle();\n },\n language: function (key: string): void {\n this._fritteliUhrInstance.setLayout(key);\n },\n theme: function (styleClass: string): void {\n this._fritteliUhrInstance.setTheme(styleClass);\n },\n time: function (time: Date): void {\n this._fritteliUhrInstance.setTime(time);\n },\n mode: function (mode: string): void {\n this._fritteliUhrInstance.setMode(mode);\n },\n width: function (width: string): void {\n this._fritteliUhrInstance.setWidth(width);\n },\n // constructor method\n _create: function (): void {\n this._fritteliUhrInstance = new Uhr(this);\n },\n // destructor method\n _destroy: function (): void {\n this._fritteliUhrInstance.destroy();\n },\n _fritteliUhrInstance: null\n};\n$.widget('fritteli.uhr', widgetPrototype);\n\n$.fritteli.uhr.register = Globals.registerLayout;\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///external \"Cookies\"","webpack:///external \"jQuery\"","webpack:///./src/domain/globals.ts","webpack:///./src/domain/layout.ts","webpack:///./src/cookie-handler.ts","webpack:///./src/domain/letter.ts","webpack:///./src/layout-renderer.ts","webpack:///./src/uhr-renderer.ts","webpack:///./src/uhr.ts","webpack:///./src/theme-autodetector.ts","webpack:///./src/index.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","Cookies","jQuery","Globals","registerTheme","styleClass","themes","some","console","warn","push","hasThemes","length","hasMultipleThemes","getFirstTheme","getTheme","index","getThemes","registerLayout","layout","layouts","element","code","prettyName","error","sort","a","b","localeCompare","hasLayouts","hasMultipleLayouts","getFirstLayout","getLayouts","EMPTY_LAYOUT","hours","letters","minutes","permanent","version","cookie_handler_CookieHandler","CookieHandler","widgetId","cookiePath","this","getLayout","oldCookie","getCookie","removeCookie","setLayout","setCookie","getMode","setMode","getStatus","setStatus","status","setTheme","theme","cookieName","external_Cookies_","cookieValue","options","expires","path","Letter","style","addStyle","toString","layout_renderer_LayoutRendererV2Delegate","LayoutRendererV2Delegate","parse","forEach","lineString","line","parseArrayOrObject","seconds","parseTimeDefinition","parseObject","keys","map","Number","y","x","input","_this","Array","isArray","item","definition","listString","timeValues","split","highlightLetters","timeValue","vorne0","3","4","5","6","7","8","9","hinten0","vorne1","hinten1","vorne2","hinten2","vorne3","hinten3","vorne4","hinten4","vorne5","hinten5","hinten6","hinten7","hinten8","hinten9","0","1","2","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59","LayoutRenderer","renderarea","render","beforeshow","undefined","parsed","parsedLayout","writable","configurable","fadeOut","empty","array","letter","append","fadeIn","uhr_renderer_UhrRenderer","UhrRenderer","uhr","$element","id","cookieHandler","setupHTML","wireFunctionality","setWidth","width","css","realWidth","height","addClass","controls","controlpanel","$","content","toggleSwitch","modeSwitch","languageChooser_1","themeChooser_1","closebutton","on","click","hide","after","configlink","toggleConfigScreen","toggle","force","prop","start","stop","languageChooser","change","languageKey","val","selectedLayout","language","found","fallbackLanguage","themeChooser","themeKey","selectedTheme","fallbackTheme","autoresize","window","resize","$parent","parent","$window","parentWidth","parentHeight","windowWidth","windowHeight","size","Math","min","uhr_Uhr","Uhr","widgetInstance","timer","currentMinute","userTime","time","Date","uuid","parseHash","renderer","setTime","destroy","clearInterval","removeAttr","remove","isOn","setInterval","update","getCurrentLayout","find","removeClass","getMinutes","show","clear","second","getSecond","dotMinute","getDotMinute","hour","getHour","coarseMinute","getCoarseMinute","highlight","itemClass","getSeconds","date","getHours","hash","location","charAt","substring","decodeURIComponent","pair","matchingLanguages","filter","external_jQuery_","each","styleSheet","attr","name_1","widgetPrototype","_fritteliUhrInstance","_create","_destroy","widget","fritteli","register"],"mappings":"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","file":"lib/uhr.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 12);\n","module.exports = Cookies;","module.exports = jQuery;","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout} from './layout';\nimport {Theme} from './theme';\n\nexport class Globals {\n private static layouts: Layout[] = [];\n private static themes: Theme[] = [];\n\n public static registerTheme(name: string, styleClass: string): void {\n if (Globals.themes.some((value): boolean => value.name === name)) {\n console.warn(`Theme with name '${name}' already registered; ignoring register request for styleClass '${styleClass}'.`);\n } else {\n Globals.themes.push({\n name,\n styleClass\n });\n }\n }\n\n public static hasThemes(): boolean {\n return Globals.themes.length > 0;\n }\n\n public static hasMultipleThemes(): boolean {\n return Globals.themes.length > 1;\n }\n\n public static getFirstTheme(): Theme {\n return Globals.getTheme(0);\n }\n\n public static getTheme(index: number): Theme {\n return Globals.themes[index];\n }\n\n public static getThemes(): Theme[] {\n return Globals.themes;\n }\n\n public static registerLayout(layout: Layout): void {\n const available = !Globals.layouts.some((element): boolean => {\n if (layout.code === element.code) {\n if (layout.prettyName !== element.prettyName) {\n console.error(\n `Error: Language code '${layout.code}' cannot be registered for layout '${layout.prettyName}' because it is already registered for layout '${element.prettyName}'!`\n );\n }\n return true;\n }\n return false;\n });\n if (available) {\n Globals.layouts.push(layout);\n Globals.layouts.sort((a, b): number => a.prettyName.localeCompare(b.prettyName));\n }\n }\n\n public static hasLayouts(): boolean {\n return Globals.layouts.length > 0;\n }\n\n public static hasMultipleLayouts(): boolean {\n return Globals.layouts.length > 1;\n }\n\n public static getFirstLayout(): Layout {\n return Globals.layouts[0];\n }\n\n public static getLayouts(): Layout[] {\n return Globals.layouts;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Letter} from './letter';\n\nexport interface Layout {\n readonly code: string;\n getCoarseMinute?: (time: Date) => number;\n getDotMinute?: (time: Date) => number;\n getHour?: (time: Date) => number;\n getSeconds?: (time: Date) => number;\n readonly hours: TimeDefinition;\n readonly letters: string[];\n readonly minutes: TimeDefinition;\n parsed?: Letter[][];\n readonly permanent: WordDefinition | WordDefinition[];\n readonly prettyName: string;\n seconds?: TimeDefinition;\n readonly version: number;\n}\n\nexport interface WordDefinition {\n [line: number]: number[];\n}\n\nexport interface TimeDefinition {\n [values: string]: WordDefinition | WordDefinition[];\n}\n\nexport const EMPTY_LAYOUT: Layout = {\n code: null,\n hours: null,\n letters: [],\n minutes: null,\n permanent: [],\n prettyName: null,\n version: 2\n};\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport * as Cookies from 'js-cookie';\n\nexport class CookieHandler {\n public constructor(private readonly widgetId: string, private readonly cookiePath?: string) {\n }\n\n public getLayout(): string {\n const oldCookie = this.getCookie('uhr-language');\n if (oldCookie) {\n // aha, old cookie is set. migrate to new one!\n this.removeCookie('uhr-language');\n this.setLayout(oldCookie);\n }\n return this.getCookie('uhr-layout');\n }\n\n public setLayout(layout: string): void {\n this.setCookie('uhr-layout', layout);\n }\n\n public getMode(): string {\n return this.getCookie('uhr-mode');\n }\n\n public setMode(mode: string): void {\n this.setCookie('uhr-mode', mode);\n }\n\n public getStatus(): string {\n return this.getCookie('uhr-status');\n }\n\n public setStatus(status: string): void {\n this.setCookie('uhr-status', status);\n }\n\n public getTheme(): string {\n return this.getCookie('uhr-theme');\n }\n\n public setTheme(theme: string): void {\n this.setCookie('uhr-theme', theme);\n }\n\n private getCookie(cookieName: string): string {\n return Cookies.get(cookieName + this.widgetId);\n }\n\n private setCookie(cookieName: string, cookieValue: string): void {\n let options;\n if (this.cookiePath) {\n options = {expires: 365, path: this.cookiePath};\n } else {\n options = {expires: 365};\n }\n Cookies.set(cookieName + this.widgetId, cookieValue, options);\n }\n\n private removeCookie(cookieName: string): void {\n if (this.cookiePath) {\n Cookies.remove(cookieName + this.widgetId, {path: this.cookiePath});\n } else {\n Cookies.remove(cookieName + this.widgetId);\n }\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\n/**\n * Ein Buchstabe. Hilfsklasse für den Renderer und Inhalt der Layout-Arrays.\n * @param value Der Buchstabe, der Dargestellt werden soll.\n * @param style Die CSS-Styleklassen des Buchstabens.\n */\nexport class Letter {\n // private readonly value: string;\n private style: string;\n\n public constructor(private readonly value: string, style: string = '') {\n this.value = value;\n this.style = style;\n // if (style) {\n // this.style = style;\n // }\n }\n\n public addStyle(style: string): void {\n if (this.style === '') {\n this.style = style;\n } else {\n this.style += ` ${style}`;\n }\n }\n\n public toString(): string {\n return `${this.value}`;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Layout, TimeDefinition, WordDefinition} from './domain/layout';\nimport {Letter} from './domain/letter';\n\nclass LayoutRendererV2Delegate {\n private static readonly vorne0: WordDefinition = {\n 3: [2, 3, 4],\n 4: [1, 5],\n 5: [1, 4, 5],\n 6: [1, 3, 5],\n 7: [1, 2, 5],\n 8: [1, 5],\n 9: [2, 3, 4]\n };\n private static readonly hinten0: WordDefinition = {\n 3: [8, 9, 10],\n 4: [7, 11],\n 5: [7, 10, 11],\n 6: [7, 9, 11],\n 7: [7, 8, 11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly vorne1: WordDefinition = {\n 3: [3],\n 4: [2, 3],\n 5: [3],\n 6: [3],\n 7: [3],\n 8: [3],\n 9: [2, 3, 4]\n };\n private static readonly hinten1: WordDefinition = {\n 3: [9],\n 4: [8, 9],\n 5: [9],\n 6: [9],\n 7: [9],\n 8: [9],\n 9: [8, 9, 10]\n };\n private static readonly vorne2: WordDefinition = {\n 3: [2, 3, 4],\n 4: [1, 5],\n 5: [5],\n 6: [4],\n 7: [3],\n 8: [2],\n 9: [1, 2, 3, 4, 5]\n };\n private static readonly hinten2: WordDefinition = {\n 3: [8, 9, 10],\n 4: [7, 11],\n 5: [11],\n 6: [10],\n 7: [9],\n 8: [8],\n 9: [7, 8, 9, 10, 11]\n };\n private static readonly vorne3: WordDefinition = {\n 3: [1, 2, 3, 4, 5],\n 4: [4],\n 5: [3],\n 6: [4],\n 7: [5],\n 8: [1, 5],\n 9: [2, 3, 4]\n };\n private static readonly hinten3: WordDefinition = {\n 3: [7, 8, 9, 10, 11],\n 4: [10],\n 5: [9],\n 6: [10],\n 7: [11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly vorne4: WordDefinition = {\n 3: [4],\n 4: [3, 4],\n 5: [2, 4],\n 6: [1, 4],\n 7: [1, 2, 3, 4, 5],\n 8: [4],\n 9: [4]\n };\n private static readonly hinten4: WordDefinition = {\n 3: [10],\n 4: [9, 10],\n 5: [8, 10],\n 6: [7, 10],\n 7: [7, 8, 9, 10, 11],\n 8: [10],\n 9: [10]\n };\n private static readonly vorne5: WordDefinition = {\n 3: [1, 2, 3, 4, 5],\n 4: [1],\n 5: [1, 2, 3, 4],\n 6: [5],\n 7: [5],\n 8: [1, 5],\n 9: [2, 3, 4]\n };\n private static readonly hinten5: WordDefinition = {\n 3: [7, 8, 9, 10, 11],\n 4: [7],\n 5: [7, 8, 9, 10],\n 6: [11],\n 7: [11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly hinten6: WordDefinition = {\n 3: [9, 10],\n 4: [8],\n 5: [7],\n 6: [7, 8, 9, 10],\n 7: [7, 11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly hinten7: WordDefinition = {\n 3: [7, 8, 9, 10, 11],\n 4: [11],\n 5: [10],\n 6: [9],\n 7: [8],\n 8: [8],\n 9: [8]\n };\n private static readonly hinten8: WordDefinition = {\n 3: [8, 9, 10],\n 4: [7, 11],\n 5: [7, 11],\n 6: [8, 9, 10],\n 7: [7, 11],\n 8: [7, 11],\n 9: [8, 9, 10]\n };\n private static readonly hinten9: WordDefinition = {\n 3: [8, 9, 10],\n 4: [7, 11],\n 5: [7, 11],\n 6: [8, 9, 10, 11],\n 7: [11],\n 8: [10],\n 9: [8, 9]\n };\n private static readonly seconds: TimeDefinition = {\n '0': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten0],\n '1': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten1],\n '2': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten2],\n '3': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten3],\n '4': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten4],\n '5': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten5],\n '6': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten6],\n '7': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten7],\n '8': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten8],\n '9': [LayoutRendererV2Delegate.vorne0, LayoutRendererV2Delegate.hinten9],\n '10': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten0],\n '11': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten1],\n '12': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten2],\n '13': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten3],\n '14': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten4],\n '15': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten5],\n '16': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten6],\n '17': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten7],\n '18': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten8],\n '19': [LayoutRendererV2Delegate.vorne1, LayoutRendererV2Delegate.hinten9],\n '20': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten0],\n '21': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten1],\n '22': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten2],\n '23': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten3],\n '24': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten4],\n '25': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten5],\n '26': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten6],\n '27': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten7],\n '28': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten8],\n '29': [LayoutRendererV2Delegate.vorne2, LayoutRendererV2Delegate.hinten9],\n '30': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten0],\n '31': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten1],\n '32': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten2],\n '33': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten3],\n '34': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten4],\n '35': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten5],\n '36': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten6],\n '37': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten7],\n '38': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten8],\n '39': [LayoutRendererV2Delegate.vorne3, LayoutRendererV2Delegate.hinten9],\n '40': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten0],\n '41': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten1],\n '42': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten2],\n '43': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten3],\n '44': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten4],\n '45': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten5],\n '46': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten6],\n '47': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten7],\n '48': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten8],\n '49': [LayoutRendererV2Delegate.vorne4, LayoutRendererV2Delegate.hinten9],\n '50': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten0],\n '51': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten1],\n '52': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten2],\n '53': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten3],\n '54': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten4],\n '55': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten5],\n '56': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten6],\n '57': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten7],\n '58': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten8],\n '59': [LayoutRendererV2Delegate.vorne5, LayoutRendererV2Delegate.hinten9]\n };\n\n public constructor(private readonly layout: Layout) {\n }\n\n public parse(): Letter[][] {\n const letters: Letter[][] = [];\n this.layout.letters.forEach((lineString: string): void => {\n const line: Letter[] = [];\n for (let c = 0; c < lineString.length; c++) {\n line.push(new Letter(lineString[c]));\n }\n letters.push(line);\n });\n this.parseArrayOrObject(letters, 'on', this.layout.permanent);\n if (typeof this.layout.seconds !== 'undefined' && this.layout.seconds !== null) {\n this.parseTimeDefinition(letters, 'second', this.layout.seconds);\n } else {\n this.parseTimeDefinition(letters, 'second', LayoutRendererV2Delegate.seconds);\n }\n this.parseTimeDefinition(letters, 'minute', this.layout.minutes);\n this.parseTimeDefinition(letters, 'hour', this.layout.hours);\n return letters;\n }\n\n private parseObject(letters: Letter[][], styleClass: string, object: WordDefinition): void {\n if (typeof object !== 'undefined' && object !== null) {\n Object.keys(object)\n .map((key: string): number => Number(key))\n .forEach(\n (y: number): void => object[y].forEach(\n (x: number): void => letters[y - 1][x - 1].addStyle(styleClass)\n )\n );\n }\n }\n\n private parseArrayOrObject(letters: Letter[][], styleClass: string, input: WordDefinition | WordDefinition[]): void {\n if (typeof input !== 'undefined' && input !== null) {\n if (Array.isArray(input)) {\n input.forEach((item: WordDefinition): void => this.parseObject(letters, styleClass, item));\n } else {\n this.parseObject(letters, styleClass, input);\n }\n }\n }\n\n private parseTimeDefinition(letters: Letter[][], styleClass: string, definition: TimeDefinition): void {\n if (typeof definition !== 'undefined' && definition !== null) {\n Object.keys(definition).forEach((listString: string): void => {\n const timeValues: string[] = listString.split(',');\n const highlightLetters: WordDefinition | WordDefinition[] = definition[listString];\n timeValues.forEach((timeValue: string): void => this.parseArrayOrObject(letters, styleClass + timeValue, highlightLetters));\n });\n }\n }\n}\n\n/**\n * Hilfsklasse zum Rendern der Buchstaben der Uhr.\n * @param layout Layout-Objekt, das gerendert werden soll.\n * @param renderarea Das jQuery-gewrappte HTML-Element, auf dem gerendert werden soll.\n */\nexport class LayoutRenderer {\n public constructor(private readonly layout: Layout, private readonly renderarea: JQuery) {\n }\n\n public render(beforeshow?: () => void): void {\n if (this.layout.parsed === undefined) {\n if (this.layout.version === 2) {\n const delegate: LayoutRendererV2Delegate = new LayoutRendererV2Delegate(this.layout);\n const parsedLayout: Letter[][] = delegate.parse();\n Object.defineProperty(this.layout, 'parsed', {\n value: parsedLayout,\n writable: false,\n configurable: false\n });\n } else {\n console.warn(`Unknown layout version: '${this.layout.version}', expecting '2'`);\n return;\n }\n }\n const letters: Letter[][] = this.layout.parsed;\n this.renderarea.fadeOut('fast', (): void => {\n this.renderarea.empty();\n letters.forEach((line, index, array): void => {\n line.forEach((letter): JQuery => this.renderarea.append(letter.toString()));\n if (index < array.length - 1) {\n this.renderarea.append('
');\n }\n });\n if (beforeshow) {\n beforeshow();\n }\n this.renderarea.fadeIn('fast');\n });\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {CookieHandler} from './cookie-handler';\nimport {Globals} from './domain/globals';\nimport {Layout} from './domain/layout';\nimport {Options} from './widget/options';\nimport {Theme} from './domain/theme';\nimport {Uhr} from './uhr';\n\ndeclare var $: JQueryStatic;\n\nexport class UhrRenderer {\n private cookieHandler: CookieHandler;\n\n public constructor(\n private readonly uhr: Uhr,\n private readonly $element: JQuery,\n private readonly options: Options,\n private readonly id: string\n ) {\n this.cookieHandler = new CookieHandler(id, options.cookiePath);\n }\n\n public render(): void {\n this.setupHTML();\n this.wireFunctionality();\n }\n\n public setWidth(width: string): void {\n this.$element.css('width', width);\n const realWidth: number = this.$element.width();\n this.$element.width(realWidth);\n this.$element.height(realWidth);\n this.$element.css('font-size', (realWidth / 40) + 'px');\n }\n\n private setupHTML(): void {\n // Base clock area\n this.$element.addClass('uhr')\n .empty()\n .append('')\n .append('')\n .append('')\n .append('')\n .append('
')\n .append('
');\n\n this.setWidth(this.options.width);\n\n if (this.options.controls) {\n const controlpanel = $(`
`);\n const content = $('
');\n controlpanel.append(content);\n // on/off switch\n const toggleSwitch = $(`
`);\n toggleSwitch.append(``);\n toggleSwitch.append(``);\n content.append(toggleSwitch);\n\n // time mode switch\n const modeSwitch = $(`
`);\n modeSwitch.append(``);\n modeSwitch.append(``);\n content.append(modeSwitch);\n // language chooser\n if (Globals.hasMultipleLayouts()) {\n const languageChooser = $(``);\n Globals.getLayouts().forEach((layout: Layout): void => {\n languageChooser.append(``);\n });\n content.append(languageChooser);\n }\n\n // theme chooser\n if (Globals.hasMultipleThemes()) {\n const themeChooser = $(``);\n Globals.getThemes().forEach((theme: Theme): void => {\n themeChooser.append(``);\n });\n content.append(themeChooser);\n }\n const closebutton: JQuery = $(``);\n closebutton.on({click: (): JQuery => $(`#uhr-controlpanel${this.id}`).hide('fast')});\n content.append(closebutton);\n this.$element.after(controlpanel);\n controlpanel.hide();\n const configlink: JQuery = $(``);\n configlink.on({click: (): void => this.toggleConfigScreen()});\n this.$element.after(configlink);\n }\n }\n\n private wireFunctionality(): void {\n // on/off switch\n const toggleSwitch: JQuery = $(`#uhr-onoffswitch-checkbox${this.id}`);\n toggleSwitch.on({click: (): void => this.uhr.toggle()});\n let status = this.cookieHandler.getStatus();\n if (status === undefined || this.options.force) {\n status = this.options.status;\n }\n toggleSwitch.prop('checked', status === 'on');\n if (status === 'on') {\n this.uhr.start();\n } else {\n this.uhr.stop();\n }\n\n // time mode switch\n const modeSwitch: JQuery = $(`#uhr-modeswitch-checkbox${this.id}`);\n modeSwitch.on({\n click: (): void => {\n if (this.options.mode === 'seconds') {\n this.uhr.setMode('normal');\n } else {\n this.uhr.setMode('seconds');\n }\n }\n });\n\n let mode = this.cookieHandler.getMode();\n if (mode === undefined || this.options.force) {\n mode = this.options.mode;\n }\n modeSwitch.prop('checked', mode !== 'seconds');\n if (mode === 'seconds') {\n this.uhr.setMode('seconds');\n } else {\n this.uhr.setMode('normal');\n }\n\n // language chooser\n const languageChooser: JQuery = $(`#uhr-languagechooser${this.id}`);\n languageChooser.on({\n change: (): void => {\n const languageKey = $(`#uhr-languagechooser${this.id}`).val() as string;\n this.uhr.setLayout(languageKey);\n }\n });\n let selectedLayout = this.cookieHandler.getLayout();\n if (selectedLayout === undefined || this.options.force) {\n selectedLayout = this.options.language;\n }\n let found = Globals.getLayouts().some((item: Layout): boolean => selectedLayout === item.code);\n if (!found) {\n let fallbackLanguage;\n if (Globals.hasLayouts()) {\n fallbackLanguage = Globals.getFirstLayout().code;\n } else {\n fallbackLanguage = '';\n }\n console.warn(`Language '${selectedLayout}' not found! Using fallback '${fallbackLanguage}'.`);\n selectedLayout = fallbackLanguage;\n }\n languageChooser.val(selectedLayout);\n this.options.language = '';\n this.uhr.setLayout(selectedLayout);\n\n // theme chooser\n const themeChooser: JQuery = $(`#uhr-themechooser${this.id}`);\n themeChooser.on({\n change: (): void => {\n const themeKey = $(`#uhr-themechooser${this.id}`).val() as string;\n this.uhr.setTheme(themeKey);\n }\n });\n let selectedTheme = this.cookieHandler.getTheme();\n if (selectedTheme === undefined || this.options.force) {\n selectedTheme = this.options.theme;\n }\n found = Globals.getThemes().some((item: Theme): boolean => selectedTheme === item.styleClass);\n if (!found) {\n const fallbackTheme = Globals.getFirstTheme().styleClass;\n console.warn(`Theme '${selectedTheme}' not found! Using fallback '${fallbackTheme}'.`);\n selectedTheme = fallbackTheme;\n }\n themeChooser.val(selectedTheme);\n this.options.theme = '';\n this.uhr.setTheme(selectedTheme);\n if (this.options.autoresize) {\n $(window).on({\n resize: (): void => {\n const $parent: JQuery = this.$element.parent();\n const $window: JQuery = $(window);\n const parentWidth: number = $parent.width();\n const parentHeight: number = $parent.height();\n const windowWidth: number = $window.width();\n const windowHeight: number = $window.height();\n const size: string = `${Math.min(parentWidth, parentHeight, windowWidth, windowHeight)}px`;\n this.setWidth(size);\n }\n });\n }\n }\n\n private toggleConfigScreen(): void {\n $(`#uhr-controlpanel${this.id}`).toggle('fast');\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\n/*eslint no-undef: \"warn\"*/\nimport WidgetCommonProperties = JQueryUI.WidgetCommonProperties;\nimport {EMPTY_LAYOUT, Layout} from './domain/layout';\nimport {CookieHandler} from './cookie-handler';\nimport {Globals} from './domain/globals';\nimport {LayoutRenderer} from './layout-renderer';\nimport {UhrRenderer} from './uhr-renderer';\nimport {WidgetPrototype} from './widget/widget-prototype';\n\ndeclare var $: JQueryStatic;\n\nexport class Uhr {\n private timer: number = null;\n private currentMinute: number = null;\n private renderer: UhrRenderer;\n private cookieHandler: CookieHandler;\n\n public constructor(private readonly widgetInstance: WidgetPrototype & WidgetCommonProperties) {\n const userTime = this.widgetInstance.options.time;\n if (this.widgetInstance.options.time === undefined) {\n this.widgetInstance.options.time = new Date();\n }\n this.cookieHandler = new CookieHandler(this.widgetInstance.uuid, this.widgetInstance.options.cookiePath);\n this.parseHash();\n this.renderer = new UhrRenderer(this, this.widgetInstance.element, this.widgetInstance.options, this.widgetInstance.uuid);\n this.renderer.render();\n if (userTime !== undefined) {\n this.setTime(userTime);\n }\n }\n\n public destroy(): void {\n if (this.timer) {\n window.clearInterval(this.timer);\n this.timer = null;\n }\n this.widgetInstance.element\n .removeAttr('style')\n .removeAttr('class')\n .empty();\n $(`#uhr-configlink${this.widgetInstance.uuid}`).remove();\n $(`#uhr-controlpanel${this.widgetInstance.uuid}`).remove();\n }\n\n public start(): void {\n if (!this.isOn()) {\n this.timer = window.setInterval((): void => {\n this.widgetInstance.options.time = new Date();\n this.update();\n }, 1000);\n this.update();\n this.cookieHandler.setStatus('on');\n }\n }\n\n public stop(): void {\n if (this.isOn()) {\n window.clearInterval(this.timer);\n this.timer = null;\n this.update();\n this.cookieHandler.setStatus('off');\n }\n }\n\n public toggle(): void {\n if (this.isOn()) {\n this.stop();\n } else {\n this.start();\n }\n }\n\n public setLayout(key: string): void {\n if (key !== this.widgetInstance.options.language) {\n this.widgetInstance.options.language = key;\n const renderer = new LayoutRenderer(this.getCurrentLayout(), this.widgetInstance.element.find('.letterarea'));\n renderer.render((): void => {\n this.currentMinute = -1;\n this.update();\n });\n this.cookieHandler.setLayout(key);\n this.update();\n }\n }\n\n public setTheme(styleClass: string): void {\n if (styleClass !== this.widgetInstance.options.theme) {\n this.widgetInstance.element.removeClass(this.widgetInstance.options.theme).addClass(styleClass);\n $(`#uhr-onoffswitch${this.widgetInstance.uuid}`).removeClass(this.widgetInstance.options.theme).addClass(styleClass);\n this.widgetInstance.options.theme = styleClass;\n this.cookieHandler.setTheme(styleClass);\n }\n }\n\n public setTime(time: Date): void {\n this.currentMinute = null;\n if (time === null) {\n this.widgetInstance.options.time = new Date();\n } else {\n if (this.timer !== null) {\n window.clearInterval(this.timer);\n }\n this.widgetInstance.options.time = time;\n }\n this.update();\n }\n\n public setMode(mode: string): void {\n this.widgetInstance.options.mode = mode;\n this.currentMinute = null;\n this.update();\n this.cookieHandler.setMode(mode);\n }\n\n public setWidth(width: string): void {\n this.renderer.setWidth(width);\n }\n\n private isOn(): boolean {\n return this.timer !== null;\n }\n\n private update(): void {\n if (this.isOn()) {\n const time = this.widgetInstance.options.time;\n if (!this.getCurrentLayout().hasOwnProperty('seconds') && this.widgetInstance.options.mode !== 'seconds') {\n if (time.getMinutes() === this.currentMinute) {\n return;\n }\n this.currentMinute = time.getMinutes();\n }\n this.show(time);\n } else {\n this.clear();\n this.currentMinute = -1;\n }\n }\n\n private show(time: Date): void {\n const second = this.getSecond(time);\n const dotMinute = this.getDotMinute(time);\n const hour = this.getHour(time);\n const coarseMinute = this.getCoarseMinute(time);\n this.clear();\n if (this.widgetInstance.options.mode === 'seconds') {\n this.highlight(`second${second}`);\n } else {\n this.highlight('on');\n for (let i = 1; i <= dotMinute; i++) {\n this.highlight(`dot${i}`);\n }\n this.highlight(`minute${coarseMinute}`);\n this.highlight(`hour${hour}`);\n }\n }\n\n private clear(): void {\n this.widgetInstance.element.find('.item').removeClass('active');\n }\n\n private highlight(itemClass: string): void {\n this.widgetInstance.element.find(`.item.${itemClass}`).addClass('active');\n }\n\n private getSecond(time: Date): number {\n if (typeof this.getCurrentLayout().getSeconds === 'function') {\n return this.getCurrentLayout().getSeconds(time);\n }\n return time.getSeconds();\n }\n\n private getDotMinute(date: Date): number {\n if (typeof this.getCurrentLayout().getDotMinute === 'function') {\n return this.getCurrentLayout().getDotMinute(date);\n }\n return date.getMinutes() % 5;\n }\n\n private getCoarseMinute(date: Date): number {\n if (typeof this.getCurrentLayout().getCoarseMinute === 'function') {\n return this.getCurrentLayout().getCoarseMinute(date);\n }\n return date.getMinutes();\n }\n\n private getHour(date: Date): number {\n if (typeof this.getCurrentLayout().getHour === 'function') {\n return this.getCurrentLayout().getHour(date);\n }\n const hour = date.getHours();\n if (date.getMinutes() >= 25) {\n return (hour + 1) % 24;\n }\n return hour;\n }\n\n private parseHash(): void {\n let hash: string = window.location.hash;\n if (hash !== undefined && hash.charAt(0) === '#') {\n hash = hash.substring(1);\n hash = decodeURIComponent(hash);\n const params: string[] = hash.split('&');\n params.forEach((element: string): void => {\n const pair: string[] = element.split('=');\n const key = pair[0];\n const value = pair[1];\n switch (key) {\n case 'l':\n case 'language':\n this.widgetInstance.options.language = value;\n this.widgetInstance.options.force = true;\n break;\n case 't':\n case 'theme':\n this.widgetInstance.options.theme = value;\n this.widgetInstance.options.force = true;\n break;\n case 'm':\n case 'mode':\n this.widgetInstance.options.mode = value;\n this.widgetInstance.options.force = true;\n break;\n case 's':\n case 'status':\n this.widgetInstance.options.status = value;\n this.widgetInstance.options.force = true;\n break;\n }\n });\n }\n }\n\n private getCurrentLayout(): Layout {\n const matchingLanguages: Layout[] = Globals.getLayouts().filter((element: Layout): boolean => element.code === this.widgetInstance.options.language, this);\n if (matchingLanguages.length > 0) {\n return matchingLanguages[0];\n }\n // fallback: return empty object\n return EMPTY_LAYOUT;\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport * as $ from 'jquery';\nimport {Globals} from './domain/globals';\n\nexport function autodetectThemes(): void {\n $('link[rel=stylesheet]').each((index, item): void => {\n const styleSheet = $(item);\n const styleClass: string = styleSheet.attr('data-class');\n if (styleClass !== undefined) {\n let name: string = styleSheet.attr('data-name');\n if (name === undefined) {\n name = styleClass;\n }\n Globals.registerTheme(name, styleClass);\n }\n });\n\n // fall-back if no theme was included\n if (!Globals.hasThemes()) {\n Globals.registerTheme('', '');\n }\n}\n","/*\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n */\n\nimport {Globals} from './domain/globals';\nimport {Layout} from './domain/layout';\nimport {Uhr} from './uhr';\nimport {WidgetPrototype} from './widget/widget-prototype';\nimport {autodetectThemes} from './theme-autodetector';\n\ndeclare namespace Fritteli {\n interface Fritteli {\n uhr: Uhr;\n }\n\n interface Uhr {\n register: (layout: Layout) => void;\n }\n}\ndeclare namespace $ {\n const fritteli: Fritteli.Fritteli;\n const widget: JQueryUI.Widget;\n}\n\n// First things first: discover included themes and register them\nautodetectThemes();\n\nconst widgetPrototype: WidgetPrototype = {\n options: {\n width: '100%',\n status: 'on',\n language: 'de_CH',\n theme: Globals.getFirstTheme().styleClass,\n force: false,\n controls: true,\n cookiePath: undefined,\n autoresize: true,\n mode: 'normal'\n },\n start: function (): void {\n this._fritteliUhrInstance.start();\n },\n stop: function (): void {\n this._fritteliUhrInstance.stop();\n },\n toggle: function (): void {\n this._fritteliUhrInstance.toggle();\n },\n language: function (key: string): void {\n this._fritteliUhrInstance.setLayout(key);\n },\n theme: function (styleClass: string): void {\n this._fritteliUhrInstance.setTheme(styleClass);\n },\n time: function (time: Date): void {\n this._fritteliUhrInstance.setTime(time);\n },\n mode: function (mode: string): void {\n this._fritteliUhrInstance.setMode(mode);\n },\n width: function (width: string): void {\n this._fritteliUhrInstance.setWidth(width);\n },\n // constructor method\n _create: function (): void {\n this._fritteliUhrInstance = new Uhr(this);\n },\n // destructor method\n _destroy: function (): void {\n this._fritteliUhrInstance.destroy();\n },\n _fritteliUhrInstance: null\n};\n$.widget('fritteli.uhr', widgetPrototype);\n\n$.fritteli.uhr.register = Globals.registerLayout;\n"],"sourceRoot":""} \ No newline at end of file From e5b18cc268f7b6755f42f92742926e43d6ff1ce0 Mon Sep 17 00:00:00 2001 From: Manuel Friedli Date: Sat, 11 May 2019 00:06:24 +0200 Subject: [PATCH 34/44] 9.0.0-dev.1 --- VERSION | 2 +- package-lock.json | 2 +- package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/VERSION b/VERSION index 2b1a7b3..85b581a 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -9.0.0-dev.0 +$npm_package_version diff --git a/package-lock.json b/package-lock.json index 8573d84..04aa30d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "uhr", - "version": "9.0.0-dev.0", + "version": "9.0.0-dev.1", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index d2ec0af..39bf715 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "uhr", - "version": "9.0.0-dev.0", + "version": "9.0.0-dev.1", "description": "jQuery QLOCKTWO plugin", "keywords": [ "jquery-plugin", From 4979cb23718bcc7beac2c763a1230020d4bbd1cb Mon Sep 17 00:00:00 2001 From: Manuel Friedli Date: Wed, 24 Feb 2021 09:39:23 +0100 Subject: [PATCH 35/44] Run npm audit fix --- dist/jquery.uhr.base.js | 6 +- dist/jquery.uhr.base.min.js | 6 +- dist/jquery.uhr.baselangs.js | 188 ++--- dist/jquery.uhr.baselangs.min.js | 6 +- dist/jquery.uhr.complete.js | 188 ++--- dist/jquery.uhr.complete.min.js | 6 +- dist/jquery.uhr.langs.js | 188 ++--- dist/jquery.uhr.langs.min.js | 6 +- dist/jquery.uhr.main.js | 4 +- dist/jquery.uhr.main.min.js | 6 +- dist/libs.js | 1244 ++++++++++++++++++------------ dist/libs.min.js | 6 +- package-lock.json | 610 +++++---------- package.json | 10 +- 14 files changed, 1245 insertions(+), 1229 deletions(-) diff --git a/dist/jquery.uhr.base.js b/dist/jquery.uhr.base.js index 12cba0e..c8bc8e4 100644 --- a/dist/jquery.uhr.base.js +++ b/dist/jquery.uhr.base.js @@ -1,6 +1,6 @@ -/*! uhr - v9.0.0-dev.0 - 2019-05-03 +/*! uhr - v9.0.0-dev.0 - 2021-02-24 * http://bärneruhr.ch/ -* Copyright (c) 2019 Manuel Friedli; Licensed GPL-3.0 */ +* Copyright (c) 2021 Manuel Friedli; Licensed GPL-3.0 */ (function ($) { 'use strict'; var uhrGlobals = { @@ -886,4 +886,4 @@ }; // Das Layout bei der Uhr unter dem Code "de_CH" registrieren. $.fritteli.uhr.register('de_CH', layout); -}(jQuery)); +}(jQuery)); \ No newline at end of file diff --git a/dist/jquery.uhr.base.min.js b/dist/jquery.uhr.base.min.js index 1515a36..da394ee 100644 --- a/dist/jquery.uhr.base.min.js +++ b/dist/jquery.uhr.base.min.js @@ -1,5 +1,5 @@ -/*! uhr - v9.0.0-dev.0 - 2019-05-03 +/*! uhr - v9.0.0-dev.0 - 2021-02-24 * http://bärneruhr.ch/ -* Copyright (c) 2019 Manuel Friedli; Licensed GPL-3.0 */ +* Copyright (c) 2021 Manuel Friedli; Licensed GPL-3.0 */ -!function(u){"use strict";var i,e,n,l={id:0,languages:[],themes:[],registerLanguage:function(i,e){l.languages.some(function(t){return i===t.code&&(console.error("Error: Language code '"+i+"' cannot be registered for language '"+e.language+"' because it is already registered for language '"+t.language+"'!"),!0)})||(e.code=i,l.languages.push(e))}};u("link[rel=stylesheet]").each(function(t,i){var e=u(i),n=e.attr("data-class");if(void 0!==n){var s=e.attr("data-name");void 0===s&&(s=n),l.themes.push({styleClass:n,name:s})}}),0===l.themes.length&&l.themes.push({});var s;function y(t,i){var e=t,n=i||"";this.addStyle=function(t){""===n?n=t:n+=" "+t},this.toString=function(){return''+e+""}}function o(t){var i={3:[2,3,4],4:[1,5],5:[1,4,5],6:[1,3,5],7:[1,2,5],8:[1,5],9:[2,3,4]},e={3:[8,9,10],4:[7,11],5:[7,10,11],6:[7,9,11],7:[7,8,11],8:[7,11],9:[8,9,10]},n={3:[3],4:[2,3],5:[3],6:[3],7:[3],8:[3],9:[2,3,4]},s={3:[9],4:[8,9],5:[9],6:[9],7:[9],8:[9],9:[8,9,10]},o={3:[2,3,4],4:[1,5],5:[5],6:[4],7:[3],8:[2],9:[1,2,3,4,5]},h={3:[8,9,10],4:[7,11],5:[11],6:[10],7:[9],8:[8],9:[7,8,9,10,11]},a={3:[1,2,3,4,5],4:[4],5:[3],6:[4],7:[5],8:[1,5],9:[2,3,4]},r={3:[7,8,9,10,11],4:[10],5:[9],6:[10],7:[11],8:[7,11],9:[8,9,10]},c={3:[4],4:[3,4],5:[2,4],6:[1,4],7:[1,2,3,4,5],8:[4],9:[4]},d={3:[10],4:[9,10],5:[8,10],6:[7,10],7:[7,8,9,10,11],8:[10],9:[10]},u={3:[1,2,3,4,5],4:[1],5:[1,2,3,4],6:[5],7:[5],8:[1,5],9:[2,3,4]},l={3:[7,8,9,10,11],4:[7],5:[7,8,9,10],6:[11],7:[11],8:[7,11],9:[8,9,10]},f={3:[9,10],4:[8],5:[7],6:[7,8,9,10],7:[7,11],8:[7,11],9:[8,9,10]},p={3:[7,8,9,10,11],4:[11],5:[10],6:[9],7:[8],8:[8],9:[8]},g={3:[8,9,10],4:[7,11],5:[7,11],6:[8,9,10],7:[7,11],8:[7,11],9:[8,9,10]},m={3:[8,9,10],4:[7,11],5:[7,11],6:[8,9,10,11],7:[11],8:[10],9:[8,9]},v={0:[i,e],1:[i,s],2:[i,h],3:[i,r],4:[i,d],5:[i,l],6:[i,f],7:[i,p],8:[i,g],9:[i,m],10:[n,e],11:[n,s],12:[n,h],13:[n,r],14:[n,d],15:[n,l],16:[n,f],17:[n,p],18:[n,g],19:[n,m],20:[o,e],21:[o,s],22:[o,h],23:[o,r],24:[o,d],25:[o,l],26:[o,f],27:[o,p],28:[o,g],29:[o,m],30:[a,e],31:[a,s],32:[a,h],33:[a,r],34:[a,d],35:[a,l],36:[a,f],37:[a,p],38:[a,g],39:[a,m],40:[c,e],41:[c,s],42:[c,h],43:[c,r],44:[c,d],45:[c,l],46:[c,f],47:[c,p],48:[c,g],49:[c,m],50:[u,e],51:[u,s],52:[u,h],53:[u,r],54:[u,d],55:[u,l],56:[u,f],57:[u,p],58:[u,g],59:[u,m]};function b(e,n,t){null!=t&&Object.keys(t).forEach(function(i){t[i].forEach(function(t){e[i-1][t-1].addStyle(n)})})}function w(i,e,t){null!=t&&(Array.isArray(t)?t.forEach(function(t){b(i,e,t)}):b(i,e,t))}function k(n,s,o){null!=o&&Object.keys(o).forEach(function(t){var i=t.split(","),e=o[t];i.forEach(function(t){w(n,s+t,e)})})}this.parse=function(){var s=[];return t.letters.forEach(function(t){for(var i=[],e=0;e")}),"function"==typeof t&&t(),s.fadeIn("fast")})}}function f(t){this.options.mode=t,this.currentMinute=-1,n.bind(this)(),i.bind(this)("uhr-mode",t)}function p(t){var i=this.element;i.css("width",t);var e=i.width();i.width(e),i.height(e),i.css("font-size",e/40+"px")}var a,r;a=function(){var t=this.element;if(t.addClass("uhr"),t.empty(),t.append(''),t.append(''),t.append(''),t.append(''),t.append('
'),t.append('
'),p.bind(this)(this.options.width),this.options.controls){var i=u('
'),e=u('
');i.append(e);var n=u('
');n.append(''),n.append(''),e.append(n);var s=u('
');if(s.append(''),s.append(''),e.append(s),1');l.languages.forEach(function(t){o.append('")}),e.append(o)}if(1');l.themes.forEach(function(t){h.append('")}),e.append(h)}var a=u('');a.on("click",function(){u("#uhr-controlpanel"+this.id).hide("fast")}.bind(this)),e.append(a),t.after(i),i.hide();var r=u('');r.on("click",function(){(function(){u("#uhr-controlpanel"+this.id).toggle("fast")}).bind(this)()}.bind(this)),t.after(r)}},r=function(){var t=u("#uhr-onoffswitch-checkbox"+this.id);t.on("click",function(){this.toggle()}.bind(this));var i=u.cookie("uhr-status"+this.id);void 0!==i&&!this.options.force||(i=this.options.status),t.prop("checked","on"===i),"on"===i?this.start():this.stop();var e=u("#uhr-modeswitch-checkbox"+this.id);e.on("click",function(){"seconds"===this.options.mode?f.bind(this)("normal"):f.bind(this)("seconds")}.bind(this));var n=u.cookie("uhr-mode"+this.id);void 0!==n&&!this.options.force||(n=this.options.mode),e.prop("checked","seconds"!==n),"seconds"===n?f.bind(this)("seconds"):f.bind(this)("normal");var s=u("#uhr-languagechooser"+this.id);s.on("change",function(){var t=u("#uhr-languagechooser"+this.id).val();this.language(t)}.bind(this));var o=u.cookie("uhr-language"+this.id);void 0!==o&&!this.options.force||(o=this.options.language);var h,a=l.languages.some(function(t){return o===t.code});a||(h=0'+e+""}}function o(t){var i={3:[2,3,4],4:[1,5],5:[1,4,5],6:[1,3,5],7:[1,2,5],8:[1,5],9:[2,3,4]},e={3:[8,9,10],4:[7,11],5:[7,10,11],6:[7,9,11],7:[7,8,11],8:[7,11],9:[8,9,10]},n={3:[3],4:[2,3],5:[3],6:[3],7:[3],8:[3],9:[2,3,4]},s={3:[9],4:[8,9],5:[9],6:[9],7:[9],8:[9],9:[8,9,10]},o={3:[2,3,4],4:[1,5],5:[5],6:[4],7:[3],8:[2],9:[1,2,3,4,5]},h={3:[8,9,10],4:[7,11],5:[11],6:[10],7:[9],8:[8],9:[7,8,9,10,11]},a={3:[1,2,3,4,5],4:[4],5:[3],6:[4],7:[5],8:[1,5],9:[2,3,4]},r={3:[7,8,9,10,11],4:[10],5:[9],6:[10],7:[11],8:[7,11],9:[8,9,10]},c={3:[4],4:[3,4],5:[2,4],6:[1,4],7:[1,2,3,4,5],8:[4],9:[4]},d={3:[10],4:[9,10],5:[8,10],6:[7,10],7:[7,8,9,10,11],8:[10],9:[10]},u={3:[1,2,3,4,5],4:[1],5:[1,2,3,4],6:[5],7:[5],8:[1,5],9:[2,3,4]},l={3:[7,8,9,10,11],4:[7],5:[7,8,9,10],6:[11],7:[11],8:[7,11],9:[8,9,10]},f={3:[9,10],4:[8],5:[7],6:[7,8,9,10],7:[7,11],8:[7,11],9:[8,9,10]},p={3:[7,8,9,10,11],4:[11],5:[10],6:[9],7:[8],8:[8],9:[8]},g={3:[8,9,10],4:[7,11],5:[7,11],6:[8,9,10],7:[7,11],8:[7,11],9:[8,9,10]},m={3:[8,9,10],4:[7,11],5:[7,11],6:[8,9,10,11],7:[11],8:[10],9:[8,9]},v={0:[i,e],1:[i,s],2:[i,h],3:[i,r],4:[i,d],5:[i,l],6:[i,f],7:[i,p],8:[i,g],9:[i,m],10:[n,e],11:[n,s],12:[n,h],13:[n,r],14:[n,d],15:[n,l],16:[n,f],17:[n,p],18:[n,g],19:[n,m],20:[o,e],21:[o,s],22:[o,h],23:[o,r],24:[o,d],25:[o,l],26:[o,f],27:[o,p],28:[o,g],29:[o,m],30:[a,e],31:[a,s],32:[a,h],33:[a,r],34:[a,d],35:[a,l],36:[a,f],37:[a,p],38:[a,g],39:[a,m],40:[c,e],41:[c,s],42:[c,h],43:[c,r],44:[c,d],45:[c,l],46:[c,f],47:[c,p],48:[c,g],49:[c,m],50:[u,e],51:[u,s],52:[u,h],53:[u,r],54:[u,d],55:[u,l],56:[u,f],57:[u,p],58:[u,g],59:[u,m]};function b(e,n,t){null!=t&&Object.keys(t).forEach(function(i){t[i].forEach(function(t){e[i-1][t-1].addStyle(n)})})}function w(i,e,t){null!=t&&(Array.isArray(t)?t.forEach(function(t){b(i,e,t)}):b(i,e,t))}function k(n,s,o){null!=o&&Object.keys(o).forEach(function(t){var i=t.split(","),e=o[t];i.forEach(function(t){w(n,s+t,e)})})}this.parse=function(){var s=[];return t.letters.forEach(function(t){for(var i=[],e=0;e")}),"function"==typeof t&&t(),s.fadeIn("fast")})}}function f(t){this.options.mode=t,this.currentMinute=-1,n.bind(this)(),i.bind(this)("uhr-mode",t)}function p(t){var i=this.element;i.css("width",t);var e=i.width();i.width(e),i.height(e),i.css("font-size",e/40+"px")}var a,r;a=function(){var t=this.element;if(t.addClass("uhr"),t.empty(),t.append(''),t.append(''),t.append(''),t.append(''),t.append('
'),t.append('
'),p.bind(this)(this.options.width),this.options.controls){var i=u('
'),e=u('
');i.append(e);var n=u('
');n.append(''),n.append(''),e.append(n);var s=u('
');if(s.append(''),s.append(''),e.append(s),1');l.languages.forEach(function(t){o.append('")}),e.append(o)}if(1');l.themes.forEach(function(t){h.append('")}),e.append(h)}var a=u('');a.on("click",function(){u("#uhr-controlpanel"+this.id).hide("fast")}.bind(this)),e.append(a),t.after(i),i.hide();var r=u('');r.on("click",function(){(function(){u("#uhr-controlpanel"+this.id).toggle("fast")}).bind(this)()}.bind(this)),t.after(r)}},r=function(){var t=u("#uhr-onoffswitch-checkbox"+this.id);t.on("click",function(){this.toggle()}.bind(this));var i=u.cookie("uhr-status"+this.id);void 0!==i&&!this.options.force||(i=this.options.status),t.prop("checked","on"===i),"on"===i?this.start():this.stop();var e=u("#uhr-modeswitch-checkbox"+this.id);e.on("click",function(){"seconds"===this.options.mode?f.bind(this)("normal"):f.bind(this)("seconds")}.bind(this));var n=u.cookie("uhr-mode"+this.id);void 0!==n&&!this.options.force||(n=this.options.mode),e.prop("checked","seconds"!==n),"seconds"===n?f.bind(this)("seconds"):f.bind(this)("normal");var s=u("#uhr-languagechooser"+this.id);s.on("change",function(){var t=u("#uhr-languagechooser"+this.id).val();this.language(t)}.bind(this));var o=u.cookie("uhr-language"+this.id);void 0!==o&&!this.options.force||(o=this.options.language);var h,a=l.languages.some(function(t){return o===t.code});a||(h=0'+i+""}}function o(t){var e={3:[2,3,4],4:[1,5],5:[1,4,5],6:[1,3,5],7:[1,2,5],8:[1,5],9:[2,3,4]},i={3:[8,9,10],4:[7,11],5:[7,10,11],6:[7,9,11],7:[7,8,11],8:[7,11],9:[8,9,10]},n={3:[3],4:[2,3],5:[3],6:[3],7:[3],8:[3],9:[2,3,4]},s={3:[9],4:[8,9],5:[9],6:[9],7:[9],8:[9],9:[8,9,10]},o={3:[2,3,4],4:[1,5],5:[5],6:[4],7:[3],8:[2],9:[1,2,3,4,5]},r={3:[8,9,10],4:[7,11],5:[11],6:[10],7:[9],8:[8],9:[7,8,9,10,11]},a={3:[1,2,3,4,5],4:[4],5:[3],6:[4],7:[5],8:[1,5],9:[2,3,4]},h={3:[7,8,9,10,11],4:[10],5:[9],6:[10],7:[11],8:[7,11],9:[8,9,10]},u={3:[4],4:[3,4],5:[2,4],6:[1,4],7:[1,2,3,4,5],8:[4],9:[4]},c={3:[10],4:[9,10],5:[8,10],6:[7,10],7:[7,8,9,10,11],8:[10],9:[10]},d={3:[1,2,3,4,5],4:[1],5:[1,2,3,4],6:[5],7:[5],8:[1,5],9:[2,3,4]},l={3:[7,8,9,10,11],4:[7],5:[7,8,9,10],6:[11],7:[11],8:[7,11],9:[8,9,10]},f={3:[9,10],4:[8],5:[7],6:[7,8,9,10],7:[7,11],8:[7,11],9:[8,9,10]},g={3:[7,8,9,10,11],4:[11],5:[10],6:[9],7:[8],8:[8],9:[8]},E={3:[8,9,10],4:[7,11],5:[7,11],6:[8,9,10],7:[7,11],8:[7,11],9:[8,9,10]},p={3:[8,9,10],4:[7,11],5:[7,11],6:[8,9,10,11],7:[11],8:[10],9:[8,9]},v={0:[e,i],1:[e,s],2:[e,r],3:[e,h],4:[e,c],5:[e,l],6:[e,f],7:[e,g],8:[e,E],9:[e,p],10:[n,i],11:[n,s],12:[n,r],13:[n,h],14:[n,c],15:[n,l],16:[n,f],17:[n,g],18:[n,E],19:[n,p],20:[o,i],21:[o,s],22:[o,r],23:[o,h],24:[o,c],25:[o,l],26:[o,f],27:[o,g],28:[o,E],29:[o,p],30:[a,i],31:[a,s],32:[a,r],33:[a,h],34:[a,c],35:[a,l],36:[a,f],37:[a,g],38:[a,E],39:[a,p],40:[u,i],41:[u,s],42:[u,r],43:[u,h],44:[u,c],45:[u,l],46:[u,f],47:[u,g],48:[u,E],49:[u,p],50:[d,i],51:[d,s],52:[d,r],53:[d,h],54:[d,c],55:[d,l],56:[d,f],57:[d,g],58:[d,E],59:[d,p]};function m(i,n,t){null!=t&&Object.keys(t).forEach(function(e){t[e].forEach(function(t){i[e-1][t-1].addStyle(n)})})}function I(e,i,t){null!=t&&(Array.isArray(t)?t.forEach(function(t){m(e,i,t)}):m(e,i,t))}function b(n,s,o){null!=o&&Object.keys(o).forEach(function(t){var e=t.split(","),i=o[t];e.forEach(function(t){I(n,s+t,i)})})}this.parse=function(){var s=[];return t.letters.forEach(function(t){for(var e=[],i=0;i")}),"function"==typeof t&&t(),s.fadeIn("fast")})}}function f(t){this.options.mode=t,this.currentMinute=-1,n.bind(this)(),e.bind(this)("uhr-mode",t)}function g(t){var e=this.element;e.css("width",t);var i=e.width();e.width(i),e.height(i),e.css("font-size",i/40+"px")}var a,h;a=function(){var t=this.element;if(t.addClass("uhr"),t.empty(),t.append(''),t.append(''),t.append(''),t.append(''),t.append('
'),t.append('
'),g.bind(this)(this.options.width),this.options.controls){var e=d('
'),i=d('
');e.append(i);var n=d('
');n.append(''),n.append(''),i.append(n);var s=d('
');if(s.append(''),s.append(''),i.append(s),1');l.languages.forEach(function(t){o.append('")}),i.append(o)}if(1');l.themes.forEach(function(t){r.append('")}),i.append(r)}var a=d('');a.on("click",function(){d("#uhr-controlpanel"+this.id).hide("fast")}.bind(this)),i.append(a),t.after(e),e.hide();var h=d('');h.on("click",function(){(function(){d("#uhr-controlpanel"+this.id).toggle("fast")}).bind(this)()}.bind(this)),t.after(h)}},h=function(){var t=d("#uhr-onoffswitch-checkbox"+this.id);t.on("click",function(){this.toggle()}.bind(this));var e=d.cookie("uhr-status"+this.id);void 0!==e&&!this.options.force||(e=this.options.status),t.prop("checked","on"===e),"on"===e?this.start():this.stop();var i=d("#uhr-modeswitch-checkbox"+this.id);i.on("click",function(){"seconds"===this.options.mode?f.bind(this)("normal"):f.bind(this)("seconds")}.bind(this));var n=d.cookie("uhr-mode"+this.id);void 0!==n&&!this.options.force||(n=this.options.mode),i.prop("checked","seconds"!==n),"seconds"===n?f.bind(this)("seconds"):f.bind(this)("normal");var s=d("#uhr-languagechooser"+this.id);s.on("change",function(){var t=d("#uhr-languagechooser"+this.id).val();this.language(t)}.bind(this));var o=d.cookie("uhr-language"+this.id);void 0!==o&&!this.options.force||(o=this.options.language);var r,a=l.languages.some(function(t){return o===t.code});a||(r=0'+i+""}}function o(t){var e={3:[2,3,4],4:[1,5],5:[1,4,5],6:[1,3,5],7:[1,2,5],8:[1,5],9:[2,3,4]},i={3:[8,9,10],4:[7,11],5:[7,10,11],6:[7,9,11],7:[7,8,11],8:[7,11],9:[8,9,10]},n={3:[3],4:[2,3],5:[3],6:[3],7:[3],8:[3],9:[2,3,4]},s={3:[9],4:[8,9],5:[9],6:[9],7:[9],8:[9],9:[8,9,10]},o={3:[2,3,4],4:[1,5],5:[5],6:[4],7:[3],8:[2],9:[1,2,3,4,5]},r={3:[8,9,10],4:[7,11],5:[11],6:[10],7:[9],8:[8],9:[7,8,9,10,11]},a={3:[1,2,3,4,5],4:[4],5:[3],6:[4],7:[5],8:[1,5],9:[2,3,4]},h={3:[7,8,9,10,11],4:[10],5:[9],6:[10],7:[11],8:[7,11],9:[8,9,10]},u={3:[4],4:[3,4],5:[2,4],6:[1,4],7:[1,2,3,4,5],8:[4],9:[4]},c={3:[10],4:[9,10],5:[8,10],6:[7,10],7:[7,8,9,10,11],8:[10],9:[10]},d={3:[1,2,3,4,5],4:[1],5:[1,2,3,4],6:[5],7:[5],8:[1,5],9:[2,3,4]},l={3:[7,8,9,10,11],4:[7],5:[7,8,9,10],6:[11],7:[11],8:[7,11],9:[8,9,10]},f={3:[9,10],4:[8],5:[7],6:[7,8,9,10],7:[7,11],8:[7,11],9:[8,9,10]},g={3:[7,8,9,10,11],4:[11],5:[10],6:[9],7:[8],8:[8],9:[8]},E={3:[8,9,10],4:[7,11],5:[7,11],6:[8,9,10],7:[7,11],8:[7,11],9:[8,9,10]},p={3:[8,9,10],4:[7,11],5:[7,11],6:[8,9,10,11],7:[11],8:[10],9:[8,9]},v={0:[e,i],1:[e,s],2:[e,r],3:[e,h],4:[e,c],5:[e,l],6:[e,f],7:[e,g],8:[e,E],9:[e,p],10:[n,i],11:[n,s],12:[n,r],13:[n,h],14:[n,c],15:[n,l],16:[n,f],17:[n,g],18:[n,E],19:[n,p],20:[o,i],21:[o,s],22:[o,r],23:[o,h],24:[o,c],25:[o,l],26:[o,f],27:[o,g],28:[o,E],29:[o,p],30:[a,i],31:[a,s],32:[a,r],33:[a,h],34:[a,c],35:[a,l],36:[a,f],37:[a,g],38:[a,E],39:[a,p],40:[u,i],41:[u,s],42:[u,r],43:[u,h],44:[u,c],45:[u,l],46:[u,f],47:[u,g],48:[u,E],49:[u,p],50:[d,i],51:[d,s],52:[d,r],53:[d,h],54:[d,c],55:[d,l],56:[d,f],57:[d,g],58:[d,E],59:[d,p]};function m(i,n,t){null!=t&&Object.keys(t).forEach(function(e){t[e].forEach(function(t){i[e-1][t-1].addStyle(n)})})}function I(e,i,t){null!=t&&(Array.isArray(t)?t.forEach(function(t){m(e,i,t)}):m(e,i,t))}function b(n,s,o){null!=o&&Object.keys(o).forEach(function(t){var e=t.split(","),i=o[t];e.forEach(function(t){I(n,s+t,i)})})}this.parse=function(){var s=[];return t.letters.forEach(function(t){for(var e=[],i=0;i")}),"function"==typeof t&&t(),s.fadeIn("fast")})}}function f(t){this.options.mode=t,this.currentMinute=-1,n.bind(this)(),e.bind(this)("uhr-mode",t)}function g(t){var e=this.element;e.css("width",t);var i=e.width();e.width(i),e.height(i),e.css("font-size",i/40+"px")}var a,h;a=function(){var t=this.element;if(t.addClass("uhr"),t.empty(),t.append(''),t.append(''),t.append(''),t.append(''),t.append('
'),t.append('
'),g.bind(this)(this.options.width),this.options.controls){var e=d('
'),i=d('
');e.append(i);var n=d('
');n.append(''),n.append(''),i.append(n);var s=d('
');if(s.append(''),s.append(''),i.append(s),1');l.languages.forEach(function(t){o.append('")}),i.append(o)}if(1');l.themes.forEach(function(t){r.append('")}),i.append(r)}var a=d('');a.on("click",function(){d("#uhr-controlpanel"+this.id).hide("fast")}.bind(this)),i.append(a),t.after(e),e.hide();var h=d('');h.on("click",function(){(function(){d("#uhr-controlpanel"+this.id).toggle("fast")}).bind(this)()}.bind(this)),t.after(h)}},h=function(){var t=d("#uhr-onoffswitch-checkbox"+this.id);t.on("click",function(){this.toggle()}.bind(this));var e=d.cookie("uhr-status"+this.id);void 0!==e&&!this.options.force||(e=this.options.status),t.prop("checked","on"===e),"on"===e?this.start():this.stop();var i=d("#uhr-modeswitch-checkbox"+this.id);i.on("click",function(){"seconds"===this.options.mode?f.bind(this)("normal"):f.bind(this)("seconds")}.bind(this));var n=d.cookie("uhr-mode"+this.id);void 0!==n&&!this.options.force||(n=this.options.mode),i.prop("checked","seconds"!==n),"seconds"===n?f.bind(this)("seconds"):f.bind(this)("normal");var s=d("#uhr-languagechooser"+this.id);s.on("change",function(){var t=d("#uhr-languagechooser"+this.id).val();this.language(t)}.bind(this));var o=d.cookie("uhr-language"+this.id);void 0!==o&&!this.options.force||(o=this.options.language);var r,a=l.languages.some(function(t){return o===t.code});a||(r=0'+e+""}}function o(t){var i={3:[2,3,4],4:[1,5],5:[1,4,5],6:[1,3,5],7:[1,2,5],8:[1,5],9:[2,3,4]},e={3:[8,9,10],4:[7,11],5:[7,10,11],6:[7,9,11],7:[7,8,11],8:[7,11],9:[8,9,10]},n={3:[3],4:[2,3],5:[3],6:[3],7:[3],8:[3],9:[2,3,4]},s={3:[9],4:[8,9],5:[9],6:[9],7:[9],8:[9],9:[8,9,10]},o={3:[2,3,4],4:[1,5],5:[5],6:[4],7:[3],8:[2],9:[1,2,3,4,5]},h={3:[8,9,10],4:[7,11],5:[11],6:[10],7:[9],8:[8],9:[7,8,9,10,11]},a={3:[1,2,3,4,5],4:[4],5:[3],6:[4],7:[5],8:[1,5],9:[2,3,4]},r={3:[7,8,9,10,11],4:[10],5:[9],6:[10],7:[11],8:[7,11],9:[8,9,10]},c={3:[4],4:[3,4],5:[2,4],6:[1,4],7:[1,2,3,4,5],8:[4],9:[4]},d={3:[10],4:[9,10],5:[8,10],6:[7,10],7:[7,8,9,10,11],8:[10],9:[10]},u={3:[1,2,3,4,5],4:[1],5:[1,2,3,4],6:[5],7:[5],8:[1,5],9:[2,3,4]},l={3:[7,8,9,10,11],4:[7],5:[7,8,9,10],6:[11],7:[11],8:[7,11],9:[8,9,10]},f={3:[9,10],4:[8],5:[7],6:[7,8,9,10],7:[7,11],8:[7,11],9:[8,9,10]},p={3:[7,8,9,10,11],4:[11],5:[10],6:[9],7:[8],8:[8],9:[8]},g={3:[8,9,10],4:[7,11],5:[7,11],6:[8,9,10],7:[7,11],8:[7,11],9:[8,9,10]},m={3:[8,9,10],4:[7,11],5:[7,11],6:[8,9,10,11],7:[11],8:[10],9:[8,9]},v={0:[i,e],1:[i,s],2:[i,h],3:[i,r],4:[i,d],5:[i,l],6:[i,f],7:[i,p],8:[i,g],9:[i,m],10:[n,e],11:[n,s],12:[n,h],13:[n,r],14:[n,d],15:[n,l],16:[n,f],17:[n,p],18:[n,g],19:[n,m],20:[o,e],21:[o,s],22:[o,h],23:[o,r],24:[o,d],25:[o,l],26:[o,f],27:[o,p],28:[o,g],29:[o,m],30:[a,e],31:[a,s],32:[a,h],33:[a,r],34:[a,d],35:[a,l],36:[a,f],37:[a,p],38:[a,g],39:[a,m],40:[c,e],41:[c,s],42:[c,h],43:[c,r],44:[c,d],45:[c,l],46:[c,f],47:[c,p],48:[c,g],49:[c,m],50:[u,e],51:[u,s],52:[u,h],53:[u,r],54:[u,d],55:[u,l],56:[u,f],57:[u,p],58:[u,g],59:[u,m]};function b(e,n,t){null!=t&&Object.keys(t).forEach(function(i){t[i].forEach(function(t){e[i-1][t-1].addStyle(n)})})}function w(i,e,t){null!=t&&(Array.isArray(t)?t.forEach(function(t){b(i,e,t)}):b(i,e,t))}function k(n,s,o){null!=o&&Object.keys(o).forEach(function(t){var i=t.split(","),e=o[t];i.forEach(function(t){w(n,s+t,e)})})}this.parse=function(){var s=[];return t.letters.forEach(function(t){for(var i=[],e=0;e")}),"function"==typeof t&&t(),s.fadeIn("fast")})}}function f(t){this.options.mode=t,this.currentMinute=-1,n.bind(this)(),i.bind(this)("uhr-mode",t)}function p(t){var i=this.element;i.css("width",t);var e=i.width();i.width(e),i.height(e),i.css("font-size",e/40+"px")}var a,r;a=function(){var t=this.element;if(t.addClass("uhr"),t.empty(),t.append(''),t.append(''),t.append(''),t.append(''),t.append('
'),t.append('
'),p.bind(this)(this.options.width),this.options.controls){var i=u('
'),e=u('
');i.append(e);var n=u('
');n.append(''),n.append(''),e.append(n);var s=u('
');if(s.append(''),s.append(''),e.append(s),1');l.languages.forEach(function(t){o.append('")}),e.append(o)}if(1');l.themes.forEach(function(t){h.append('")}),e.append(h)}var a=u('');a.on("click",function(){u("#uhr-controlpanel"+this.id).hide("fast")}.bind(this)),e.append(a),t.after(i),i.hide();var r=u('');r.on("click",function(){(function(){u("#uhr-controlpanel"+this.id).toggle("fast")}).bind(this)()}.bind(this)),t.after(r)}},r=function(){var t=u("#uhr-onoffswitch-checkbox"+this.id);t.on("click",function(){this.toggle()}.bind(this));var i=u.cookie("uhr-status"+this.id);void 0!==i&&!this.options.force||(i=this.options.status),t.prop("checked","on"===i),"on"===i?this.start():this.stop();var e=u("#uhr-modeswitch-checkbox"+this.id);e.on("click",function(){"seconds"===this.options.mode?f.bind(this)("normal"):f.bind(this)("seconds")}.bind(this));var n=u.cookie("uhr-mode"+this.id);void 0!==n&&!this.options.force||(n=this.options.mode),e.prop("checked","seconds"!==n),"seconds"===n?f.bind(this)("seconds"):f.bind(this)("normal");var s=u("#uhr-languagechooser"+this.id);s.on("change",function(){var t=u("#uhr-languagechooser"+this.id).val();this.language(t)}.bind(this));var o=u.cookie("uhr-language"+this.id);void 0!==o&&!this.options.force||(o=this.options.language);var h,a=l.languages.some(function(t){return o===t.code});a||(h=0'+e+""}}function o(t){var i={3:[2,3,4],4:[1,5],5:[1,4,5],6:[1,3,5],7:[1,2,5],8:[1,5],9:[2,3,4]},e={3:[8,9,10],4:[7,11],5:[7,10,11],6:[7,9,11],7:[7,8,11],8:[7,11],9:[8,9,10]},n={3:[3],4:[2,3],5:[3],6:[3],7:[3],8:[3],9:[2,3,4]},s={3:[9],4:[8,9],5:[9],6:[9],7:[9],8:[9],9:[8,9,10]},o={3:[2,3,4],4:[1,5],5:[5],6:[4],7:[3],8:[2],9:[1,2,3,4,5]},h={3:[8,9,10],4:[7,11],5:[11],6:[10],7:[9],8:[8],9:[7,8,9,10,11]},a={3:[1,2,3,4,5],4:[4],5:[3],6:[4],7:[5],8:[1,5],9:[2,3,4]},r={3:[7,8,9,10,11],4:[10],5:[9],6:[10],7:[11],8:[7,11],9:[8,9,10]},c={3:[4],4:[3,4],5:[2,4],6:[1,4],7:[1,2,3,4,5],8:[4],9:[4]},d={3:[10],4:[9,10],5:[8,10],6:[7,10],7:[7,8,9,10,11],8:[10],9:[10]},u={3:[1,2,3,4,5],4:[1],5:[1,2,3,4],6:[5],7:[5],8:[1,5],9:[2,3,4]},l={3:[7,8,9,10,11],4:[7],5:[7,8,9,10],6:[11],7:[11],8:[7,11],9:[8,9,10]},f={3:[9,10],4:[8],5:[7],6:[7,8,9,10],7:[7,11],8:[7,11],9:[8,9,10]},p={3:[7,8,9,10,11],4:[11],5:[10],6:[9],7:[8],8:[8],9:[8]},g={3:[8,9,10],4:[7,11],5:[7,11],6:[8,9,10],7:[7,11],8:[7,11],9:[8,9,10]},m={3:[8,9,10],4:[7,11],5:[7,11],6:[8,9,10,11],7:[11],8:[10],9:[8,9]},v={0:[i,e],1:[i,s],2:[i,h],3:[i,r],4:[i,d],5:[i,l],6:[i,f],7:[i,p],8:[i,g],9:[i,m],10:[n,e],11:[n,s],12:[n,h],13:[n,r],14:[n,d],15:[n,l],16:[n,f],17:[n,p],18:[n,g],19:[n,m],20:[o,e],21:[o,s],22:[o,h],23:[o,r],24:[o,d],25:[o,l],26:[o,f],27:[o,p],28:[o,g],29:[o,m],30:[a,e],31:[a,s],32:[a,h],33:[a,r],34:[a,d],35:[a,l],36:[a,f],37:[a,p],38:[a,g],39:[a,m],40:[c,e],41:[c,s],42:[c,h],43:[c,r],44:[c,d],45:[c,l],46:[c,f],47:[c,p],48:[c,g],49:[c,m],50:[u,e],51:[u,s],52:[u,h],53:[u,r],54:[u,d],55:[u,l],56:[u,f],57:[u,p],58:[u,g],59:[u,m]};function b(e,n,t){null!=t&&Object.keys(t).forEach(function(i){t[i].forEach(function(t){e[i-1][t-1].addStyle(n)})})}function w(i,e,t){null!=t&&(Array.isArray(t)?t.forEach(function(t){b(i,e,t)}):b(i,e,t))}function k(n,s,o){null!=o&&Object.keys(o).forEach(function(t){var i=t.split(","),e=o[t];i.forEach(function(t){w(n,s+t,e)})})}this.parse=function(){var s=[];return t.letters.forEach(function(t){for(var i=[],e=0;e")}),"function"==typeof t&&t(),s.fadeIn("fast")})}}function f(t){this.options.mode=t,this.currentMinute=-1,n.bind(this)(),i.bind(this)("uhr-mode",t)}function p(t){var i=this.element;i.css("width",t);var e=i.width();i.width(e),i.height(e),i.css("font-size",e/40+"px")}var a,r;a=function(){var t=this.element;if(t.addClass("uhr"),t.empty(),t.append(''),t.append(''),t.append(''),t.append(''),t.append('
'),t.append('
'),p.bind(this)(this.options.width),this.options.controls){var i=u('
'),e=u('
');i.append(e);var n=u('
');n.append(''),n.append(''),e.append(n);var s=u('
');if(s.append(''),s.append(''),e.append(s),1');l.languages.forEach(function(t){o.append('")}),e.append(o)}if(1');l.themes.forEach(function(t){h.append('")}),e.append(h)}var a=u('');a.on("click",function(){u("#uhr-controlpanel"+this.id).hide("fast")}.bind(this)),e.append(a),t.after(i),i.hide();var r=u('');r.on("click",function(){(function(){u("#uhr-controlpanel"+this.id).toggle("fast")}).bind(this)()}.bind(this)),t.after(r)}},r=function(){var t=u("#uhr-onoffswitch-checkbox"+this.id);t.on("click",function(){this.toggle()}.bind(this));var i=u.cookie("uhr-status"+this.id);void 0!==i&&!this.options.force||(i=this.options.status),t.prop("checked","on"===i),"on"===i?this.start():this.stop();var e=u("#uhr-modeswitch-checkbox"+this.id);e.on("click",function(){"seconds"===this.options.mode?f.bind(this)("normal"):f.bind(this)("seconds")}.bind(this));var n=u.cookie("uhr-mode"+this.id);void 0!==n&&!this.options.force||(n=this.options.mode),e.prop("checked","seconds"!==n),"seconds"===n?f.bind(this)("seconds"):f.bind(this)("normal");var s=u("#uhr-languagechooser"+this.id);s.on("change",function(){var t=u("#uhr-languagechooser"+this.id).val();this.language(t)}.bind(this));var o=u.cookie("uhr-language"+this.id);void 0!==o&&!this.options.force||(o=this.options.language);var h,a=l.languages.some(function(t){return o===t.code});a||(h=0+~]|" + whitespace + ")" + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + + "*" ), rdescend = new RegExp( whitespace + "|>" ), rpseudo = new RegExp( pseudos ), @@ -628,14 +645,16 @@ var i, "TAG": new RegExp( "^(" + identifier + "|[*])" ), "ATTR": new RegExp( "^" + attributes ), "PSEUDO": new RegExp( "^" + pseudos ), - "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + - "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + - "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + + whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + + whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + // For use in libraries implementing .is() // We use this for POS matching in `select` - "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + - whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + "needsContext": new RegExp( "^" + whitespace + + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) }, rhtml = /HTML$/i, @@ -651,18 +670,21 @@ var i, // CSS escapes // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters - runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), - funescape = function( _, escaped, escapedWhitespace ) { - var high = "0x" + escaped - 0x10000; - // NaN means non-codepoint - // Support: Firefox<24 - // Workaround erroneous numeric interpretation of +"0x" - return high !== high || escapedWhitespace ? - escaped : + runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g" ), + funescape = function( escape, nonHex ) { + var high = "0x" + escape.slice( 1 ) - 0x10000; + + return nonHex ? + + // Strip the backslash prefix from a non-hex escape sequence + nonHex : + + // Replace a hexadecimal escape sequence with the encoded Unicode code point + // Support: IE <=11+ + // For values outside the Basic Multilingual Plane (BMP), manually construct a + // surrogate pair high < 0 ? - // BMP codepoint String.fromCharCode( high + 0x10000 ) : - // Supplemental Plane codepoint (surrogate pair) String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); }, @@ -678,7 +700,8 @@ var i, } // Control characters and (dependent upon position) numbers get escaped as code points - return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; + return ch.slice( 0, -1 ) + "\\" + + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; } // Other potentially-special ASCII characters get backslash-escaped @@ -703,18 +726,20 @@ var i, // Optimize for push.apply( _, NodeList ) try { push.apply( - (arr = slice.call( preferredDoc.childNodes )), + ( arr = slice.call( preferredDoc.childNodes ) ), preferredDoc.childNodes ); + // Support: Android<4.0 // Detect silently failing push.apply + // eslint-disable-next-line no-unused-expressions arr[ preferredDoc.childNodes.length ].nodeType; } catch ( e ) { push = { apply: arr.length ? // Leverage slice if possible function( target, els ) { - push_native.apply( target, slice.call(els) ); + pushNative.apply( target, slice.call( els ) ); } : // Support: IE<9 @@ -722,8 +747,9 @@ try { function( target, els ) { var j = target.length, i = 0; + // Can't trust NodeList.length - while ( (target[j++] = els[i++]) ) {} + while ( ( target[ j++ ] = els[ i++ ] ) ) {} target.length = j - 1; } }; @@ -747,24 +773,21 @@ function Sizzle( selector, context, results, seed ) { // Try to shortcut find operations (as opposed to filters) in HTML documents if ( !seed ) { - - if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { - setDocument( context ); - } + setDocument( context ); context = context || document; if ( documentIsHTML ) { // If the selector is sufficiently simple, try using a "get*By*" DOM method // (excepting DocumentFragment context, where the methods don't exist) - if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { + if ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) { // ID selector - if ( (m = match[1]) ) { + if ( ( m = match[ 1 ] ) ) { // Document context if ( nodeType === 9 ) { - if ( (elem = context.getElementById( m )) ) { + if ( ( elem = context.getElementById( m ) ) ) { // Support: IE, Opera, Webkit // TODO: identify versions @@ -783,7 +806,7 @@ function Sizzle( selector, context, results, seed ) { // Support: IE, Opera, Webkit // TODO: identify versions // getElementById can match elements by name instead of ID - if ( newContext && (elem = newContext.getElementById( m )) && + if ( newContext && ( elem = newContext.getElementById( m ) ) && contains( context, elem ) && elem.id === m ) { @@ -793,12 +816,12 @@ function Sizzle( selector, context, results, seed ) { } // Type selector - } else if ( match[2] ) { + } else if ( match[ 2 ] ) { push.apply( results, context.getElementsByTagName( selector ) ); return results; // Class selector - } else if ( (m = match[3]) && support.getElementsByClassName && + } else if ( ( m = match[ 3 ] ) && support.getElementsByClassName && context.getElementsByClassName ) { push.apply( results, context.getElementsByClassName( m ) ); @@ -809,11 +832,11 @@ function Sizzle( selector, context, results, seed ) { // Take advantage of querySelectorAll if ( support.qsa && !nonnativeSelectorCache[ selector + " " ] && - (!rbuggyQSA || !rbuggyQSA.test( selector )) && + ( !rbuggyQSA || !rbuggyQSA.test( selector ) ) && // Support: IE 8 only // Exclude object elements - (nodeType !== 1 || context.nodeName.toLowerCase() !== "object") ) { + ( nodeType !== 1 || context.nodeName.toLowerCase() !== "object" ) ) { newSelector = selector; newContext = context; @@ -822,27 +845,36 @@ function Sizzle( selector, context, results, seed ) { // descendant combinators, which is not what we want. // In such cases, we work around the behavior by prefixing every selector in the // list with an ID selector referencing the scope context. + // The technique has to be used as well when a leading combinator is used + // as such selectors are not recognized by querySelectorAll. // Thanks to Andrew Dupont for this technique. - if ( nodeType === 1 && rdescend.test( selector ) ) { + if ( nodeType === 1 && + ( rdescend.test( selector ) || rcombinators.test( selector ) ) ) { - // Capture the context ID, setting it first if necessary - if ( (nid = context.getAttribute( "id" )) ) { - nid = nid.replace( rcssescape, fcssescape ); - } else { - context.setAttribute( "id", (nid = expando) ); + // Expand context for sibling selectors + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || + context; + + // We can use :scope instead of the ID hack if the browser + // supports it & if we're not changing the context. + if ( newContext !== context || !support.scope ) { + + // Capture the context ID, setting it first if necessary + if ( ( nid = context.getAttribute( "id" ) ) ) { + nid = nid.replace( rcssescape, fcssescape ); + } else { + context.setAttribute( "id", ( nid = expando ) ); + } } // Prefix every selector in the list groups = tokenize( selector ); i = groups.length; while ( i-- ) { - groups[i] = "#" + nid + " " + toSelector( groups[i] ); + groups[ i ] = ( nid ? "#" + nid : ":scope" ) + " " + + toSelector( groups[ i ] ); } newSelector = groups.join( "," ); - - // Expand context for sibling selectors - newContext = rsibling.test( selector ) && testContext( context.parentNode ) || - context; } try { @@ -875,12 +907,14 @@ function createCache() { var keys = []; function cache( key, value ) { + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) if ( keys.push( key + " " ) > Expr.cacheLength ) { + // Only keep the most recent entries delete cache[ keys.shift() ]; } - return (cache[ key + " " ] = value); + return ( cache[ key + " " ] = value ); } return cache; } @@ -899,17 +933,19 @@ function markFunction( fn ) { * @param {Function} fn Passed the created element and returns a boolean result */ function assert( fn ) { - var el = document.createElement("fieldset"); + var el = document.createElement( "fieldset" ); try { return !!fn( el ); - } catch (e) { + } catch ( e ) { return false; } finally { + // Remove from its parent by default if ( el.parentNode ) { el.parentNode.removeChild( el ); } + // release memory in IE el = null; } @@ -921,11 +957,11 @@ function assert( fn ) { * @param {Function} handler The method that will be applied */ function addHandle( attrs, handler ) { - var arr = attrs.split("|"), + var arr = attrs.split( "|" ), i = arr.length; while ( i-- ) { - Expr.attrHandle[ arr[i] ] = handler; + Expr.attrHandle[ arr[ i ] ] = handler; } } @@ -947,7 +983,7 @@ function siblingCheck( a, b ) { // Check if b follows a if ( cur ) { - while ( (cur = cur.nextSibling) ) { + while ( ( cur = cur.nextSibling ) ) { if ( cur === b ) { return -1; } @@ -975,7 +1011,7 @@ function createInputPseudo( type ) { function createButtonPseudo( type ) { return function( elem ) { var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && elem.type === type; + return ( name === "input" || name === "button" ) && elem.type === type; }; } @@ -1018,7 +1054,7 @@ function createDisabledPseudo( disabled ) { // Where there is no isDisabled, check manually /* jshint -W018 */ elem.isDisabled !== !disabled && - inDisabledFieldset( elem ) === disabled; + inDisabledFieldset( elem ) === disabled; } return elem.disabled === disabled; @@ -1040,21 +1076,21 @@ function createDisabledPseudo( disabled ) { * @param {Function} fn */ function createPositionalPseudo( fn ) { - return markFunction(function( argument ) { + return markFunction( function( argument ) { argument = +argument; - return markFunction(function( seed, matches ) { + return markFunction( function( seed, matches ) { var j, matchIndexes = fn( [], seed.length, argument ), i = matchIndexes.length; // Match elements found at the specified indexes while ( i-- ) { - if ( seed[ (j = matchIndexes[i]) ] ) { - seed[j] = !(matches[j] = seed[j]); + if ( seed[ ( j = matchIndexes[ i ] ) ] ) { + seed[ j ] = !( matches[ j ] = seed[ j ] ); } } - }); - }); + } ); + } ); } /** @@ -1076,7 +1112,7 @@ support = Sizzle.support = {}; */ isXML = Sizzle.isXML = function( elem ) { var namespace = elem.namespaceURI, - docElem = (elem.ownerDocument || elem).documentElement; + docElem = ( elem.ownerDocument || elem ).documentElement; // Support: IE <=8 // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes @@ -1094,7 +1130,11 @@ setDocument = Sizzle.setDocument = function( node ) { doc = node ? node.ownerDocument || node : preferredDoc; // Return early if doc is invalid or already selected - if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) { return document; } @@ -1103,10 +1143,14 @@ setDocument = Sizzle.setDocument = function( node ) { docElem = document.documentElement; documentIsHTML = !isXML( document ); - // Support: IE 9-11, Edge + // Support: IE 9 - 11+, Edge 12 - 18+ // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) - if ( preferredDoc !== document && - (subWindow = document.defaultView) && subWindow.top !== subWindow ) { + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( preferredDoc != document && + ( subWindow = document.defaultView ) && subWindow.top !== subWindow ) { // Support: IE 11, Edge if ( subWindow.addEventListener ) { @@ -1118,25 +1162,36 @@ setDocument = Sizzle.setDocument = function( node ) { } } + // Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only, + // Safari 4 - 5 only, Opera <=11.6 - 12.x only + // IE/Edge & older browsers don't support the :scope pseudo-class. + // Support: Safari 6.0 only + // Safari 6.0 supports :scope but it's an alias of :root there. + support.scope = assert( function( el ) { + docElem.appendChild( el ).appendChild( document.createElement( "div" ) ); + return typeof el.querySelectorAll !== "undefined" && + !el.querySelectorAll( ":scope fieldset div" ).length; + } ); + /* Attributes ---------------------------------------------------------------------- */ // Support: IE<8 // Verify that getAttribute really returns attributes and not properties // (excepting IE8 booleans) - support.attributes = assert(function( el ) { + support.attributes = assert( function( el ) { el.className = "i"; - return !el.getAttribute("className"); - }); + return !el.getAttribute( "className" ); + } ); /* getElement(s)By* ---------------------------------------------------------------------- */ // Check if getElementsByTagName("*") returns only elements - support.getElementsByTagName = assert(function( el ) { - el.appendChild( document.createComment("") ); - return !el.getElementsByTagName("*").length; - }); + support.getElementsByTagName = assert( function( el ) { + el.appendChild( document.createComment( "" ) ); + return !el.getElementsByTagName( "*" ).length; + } ); // Support: IE<9 support.getElementsByClassName = rnative.test( document.getElementsByClassName ); @@ -1145,38 +1200,38 @@ setDocument = Sizzle.setDocument = function( node ) { // Check if getElementById returns elements by name // The broken getElementById methods don't pick up programmatically-set names, // so use a roundabout getElementsByName test - support.getById = assert(function( el ) { + support.getById = assert( function( el ) { docElem.appendChild( el ).id = expando; return !document.getElementsByName || !document.getElementsByName( expando ).length; - }); + } ); // ID filter and find if ( support.getById ) { - Expr.filter["ID"] = function( id ) { + Expr.filter[ "ID" ] = function( id ) { var attrId = id.replace( runescape, funescape ); return function( elem ) { - return elem.getAttribute("id") === attrId; + return elem.getAttribute( "id" ) === attrId; }; }; - Expr.find["ID"] = function( id, context ) { + Expr.find[ "ID" ] = function( id, context ) { if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { var elem = context.getElementById( id ); return elem ? [ elem ] : []; } }; } else { - Expr.filter["ID"] = function( id ) { + Expr.filter[ "ID" ] = function( id ) { var attrId = id.replace( runescape, funescape ); return function( elem ) { var node = typeof elem.getAttributeNode !== "undefined" && - elem.getAttributeNode("id"); + elem.getAttributeNode( "id" ); return node && node.value === attrId; }; }; // Support: IE 6 - 7 only // getElementById is not reliable as a find shortcut - Expr.find["ID"] = function( id, context ) { + Expr.find[ "ID" ] = function( id, context ) { if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { var node, i, elems, elem = context.getElementById( id ); @@ -1184,7 +1239,7 @@ setDocument = Sizzle.setDocument = function( node ) { if ( elem ) { // Verify the id attribute - node = elem.getAttributeNode("id"); + node = elem.getAttributeNode( "id" ); if ( node && node.value === id ) { return [ elem ]; } @@ -1192,8 +1247,8 @@ setDocument = Sizzle.setDocument = function( node ) { // Fall back on getElementsByName elems = context.getElementsByName( id ); i = 0; - while ( (elem = elems[i++]) ) { - node = elem.getAttributeNode("id"); + while ( ( elem = elems[ i++ ] ) ) { + node = elem.getAttributeNode( "id" ); if ( node && node.value === id ) { return [ elem ]; } @@ -1206,7 +1261,7 @@ setDocument = Sizzle.setDocument = function( node ) { } // Tag - Expr.find["TAG"] = support.getElementsByTagName ? + Expr.find[ "TAG" ] = support.getElementsByTagName ? function( tag, context ) { if ( typeof context.getElementsByTagName !== "undefined" ) { return context.getElementsByTagName( tag ); @@ -1221,12 +1276,13 @@ setDocument = Sizzle.setDocument = function( node ) { var elem, tmp = [], i = 0, + // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too results = context.getElementsByTagName( tag ); // Filter out possible comments if ( tag === "*" ) { - while ( (elem = results[i++]) ) { + while ( ( elem = results[ i++ ] ) ) { if ( elem.nodeType === 1 ) { tmp.push( elem ); } @@ -1238,7 +1294,7 @@ setDocument = Sizzle.setDocument = function( node ) { }; // Class - Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { + Expr.find[ "CLASS" ] = support.getElementsByClassName && function( className, context ) { if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { return context.getElementsByClassName( className ); } @@ -1259,10 +1315,14 @@ setDocument = Sizzle.setDocument = function( node ) { // See https://bugs.jquery.com/ticket/13378 rbuggyQSA = []; - if ( (support.qsa = rnative.test( document.querySelectorAll )) ) { + if ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) { + // Build QSA regex // Regex strategy adopted from Diego Perini - assert(function( el ) { + assert( function( el ) { + + var input; + // Select is set to empty string on purpose // This is to test IE's treatment of not explicitly // setting a boolean content attribute, @@ -1276,78 +1336,98 @@ setDocument = Sizzle.setDocument = function( node ) { // Nothing should be selected when empty strings follow ^= or $= or *= // The test attribute must be unknown in Opera but "safe" for WinRT // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section - if ( el.querySelectorAll("[msallowcapture^='']").length ) { + if ( el.querySelectorAll( "[msallowcapture^='']" ).length ) { rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); } // Support: IE8 // Boolean attributes and "value" are not treated correctly - if ( !el.querySelectorAll("[selected]").length ) { + if ( !el.querySelectorAll( "[selected]" ).length ) { rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); } // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { - rbuggyQSA.push("~="); + rbuggyQSA.push( "~=" ); + } + + // Support: IE 11+, Edge 15 - 18+ + // IE 11/Edge don't find elements on a `[name='']` query in some cases. + // Adding a temporary attribute to the document before the selection works + // around the issue. + // Interestingly, IE 10 & older don't seem to have the issue. + input = document.createElement( "input" ); + input.setAttribute( "name", "" ); + el.appendChild( input ); + if ( !el.querySelectorAll( "[name='']" ).length ) { + rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" + + whitespace + "*(?:''|\"\")" ); } // Webkit/Opera - :checked should return selected option elements // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked // IE8 throws error here and will not see later tests - if ( !el.querySelectorAll(":checked").length ) { - rbuggyQSA.push(":checked"); + if ( !el.querySelectorAll( ":checked" ).length ) { + rbuggyQSA.push( ":checked" ); } // Support: Safari 8+, iOS 8+ // https://bugs.webkit.org/show_bug.cgi?id=136851 // In-page `selector#id sibling-combinator selector` fails if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { - rbuggyQSA.push(".#.+[+~]"); + rbuggyQSA.push( ".#.+[+~]" ); } - }); - assert(function( el ) { + // Support: Firefox <=3.6 - 5 only + // Old Firefox doesn't throw on a badly-escaped identifier. + el.querySelectorAll( "\\\f" ); + rbuggyQSA.push( "[\\r\\n\\f]" ); + } ); + + assert( function( el ) { el.innerHTML = "" + ""; // Support: Windows 8 Native Apps // The type and name attributes are restricted during .innerHTML assignment - var input = document.createElement("input"); + var input = document.createElement( "input" ); input.setAttribute( "type", "hidden" ); el.appendChild( input ).setAttribute( "name", "D" ); // Support: IE8 // Enforce case-sensitivity of name attribute - if ( el.querySelectorAll("[name=d]").length ) { + if ( el.querySelectorAll( "[name=d]" ).length ) { rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); } // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) // IE8 throws error here and will not see later tests - if ( el.querySelectorAll(":enabled").length !== 2 ) { + if ( el.querySelectorAll( ":enabled" ).length !== 2 ) { rbuggyQSA.push( ":enabled", ":disabled" ); } // Support: IE9-11+ // IE's :disabled selector does not pick up the children of disabled fieldsets docElem.appendChild( el ).disabled = true; - if ( el.querySelectorAll(":disabled").length !== 2 ) { + if ( el.querySelectorAll( ":disabled" ).length !== 2 ) { rbuggyQSA.push( ":enabled", ":disabled" ); } + // Support: Opera 10 - 11 only // Opera 10-11 does not throw on post-comma invalid pseudos - el.querySelectorAll("*,:x"); - rbuggyQSA.push(",.*:"); - }); + el.querySelectorAll( "*,:x" ); + rbuggyQSA.push( ",.*:" ); + } ); } - if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || + if ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches || docElem.webkitMatchesSelector || docElem.mozMatchesSelector || docElem.oMatchesSelector || - docElem.msMatchesSelector) )) ) { + docElem.msMatchesSelector ) ) ) ) { + + assert( function( el ) { - assert(function( el ) { // Check to see if it's possible to do matchesSelector // on a disconnected node (IE 9) support.disconnectedMatch = matches.call( el, "*" ); @@ -1356,11 +1436,11 @@ setDocument = Sizzle.setDocument = function( node ) { // Gecko does not error, returns false instead matches.call( el, "[s!='']:x" ); rbuggyMatches.push( "!=", pseudos ); - }); + } ); } - rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); - rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( "|" ) ); /* Contains ---------------------------------------------------------------------- */ @@ -1377,11 +1457,11 @@ setDocument = Sizzle.setDocument = function( node ) { adown.contains ? adown.contains( bup ) : a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 - )); + ) ); } : function( a, b ) { if ( b ) { - while ( (b = b.parentNode) ) { + while ( ( b = b.parentNode ) ) { if ( b === a ) { return true; } @@ -1410,7 +1490,11 @@ setDocument = Sizzle.setDocument = function( node ) { } // Calculate position if both inputs belong to the same document - compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + compare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ? a.compareDocumentPosition( b ) : // Otherwise we know they are disconnected @@ -1418,13 +1502,24 @@ setDocument = Sizzle.setDocument = function( node ) { // Disconnected nodes if ( compare & 1 || - (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { + ( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) { // Choose the first element that is related to our preferred document - if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( a == document || a.ownerDocument == preferredDoc && + contains( preferredDoc, a ) ) { return -1; } - if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( b == document || b.ownerDocument == preferredDoc && + contains( preferredDoc, b ) ) { return 1; } @@ -1437,6 +1532,7 @@ setDocument = Sizzle.setDocument = function( node ) { return compare & 4 ? -1 : 1; } : function( a, b ) { + // Exit early if the nodes are identical if ( a === b ) { hasDuplicate = true; @@ -1452,8 +1548,14 @@ setDocument = Sizzle.setDocument = function( node ) { // Parentless nodes are either documents or disconnected if ( !aup || !bup ) { - return a === document ? -1 : - b === document ? 1 : + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + /* eslint-disable eqeqeq */ + return a == document ? -1 : + b == document ? 1 : + /* eslint-enable eqeqeq */ aup ? -1 : bup ? 1 : sortInput ? @@ -1467,26 +1569,32 @@ setDocument = Sizzle.setDocument = function( node ) { // Otherwise we need full lists of their ancestors for comparison cur = a; - while ( (cur = cur.parentNode) ) { + while ( ( cur = cur.parentNode ) ) { ap.unshift( cur ); } cur = b; - while ( (cur = cur.parentNode) ) { + while ( ( cur = cur.parentNode ) ) { bp.unshift( cur ); } // Walk down the tree looking for a discrepancy - while ( ap[i] === bp[i] ) { + while ( ap[ i ] === bp[ i ] ) { i++; } return i ? + // Do a sibling check if the nodes have a common ancestor - siblingCheck( ap[i], bp[i] ) : + siblingCheck( ap[ i ], bp[ i ] ) : // Otherwise nodes in our document sort first - ap[i] === preferredDoc ? -1 : - bp[i] === preferredDoc ? 1 : + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + /* eslint-disable eqeqeq */ + ap[ i ] == preferredDoc ? -1 : + bp[ i ] == preferredDoc ? 1 : + /* eslint-enable eqeqeq */ 0; }; @@ -1498,10 +1606,7 @@ Sizzle.matches = function( expr, elements ) { }; Sizzle.matchesSelector = function( elem, expr ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } + setDocument( elem ); if ( support.matchesSelector && documentIsHTML && !nonnativeSelectorCache[ expr + " " ] && @@ -1513,12 +1618,13 @@ Sizzle.matchesSelector = function( elem, expr ) { // IE 9's matchesSelector returns false on disconnected nodes if ( ret || support.disconnectedMatch || - // As well, disconnected nodes are said to be in a document - // fragment in IE 9 - elem.document && elem.document.nodeType !== 11 ) { + + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { return ret; } - } catch (e) { + } catch ( e ) { nonnativeSelectorCache( expr, true ); } } @@ -1527,20 +1633,31 @@ Sizzle.matchesSelector = function( elem, expr ) { }; Sizzle.contains = function( context, elem ) { + // Set document vars if needed - if ( ( context.ownerDocument || context ) !== document ) { + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( ( context.ownerDocument || context ) != document ) { setDocument( context ); } return contains( context, elem ); }; Sizzle.attr = function( elem, name ) { + // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( ( elem.ownerDocument || elem ) != document ) { setDocument( elem ); } var fn = Expr.attrHandle[ name.toLowerCase() ], + // Don't get fooled by Object.prototype properties (jQuery #13807) val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? fn( elem, name, !documentIsHTML ) : @@ -1550,13 +1667,13 @@ Sizzle.attr = function( elem, name ) { val : support.attributes || !documentIsHTML ? elem.getAttribute( name ) : - (val = elem.getAttributeNode(name)) && val.specified ? + ( val = elem.getAttributeNode( name ) ) && val.specified ? val.value : null; }; Sizzle.escape = function( sel ) { - return (sel + "").replace( rcssescape, fcssescape ); + return ( sel + "" ).replace( rcssescape, fcssescape ); }; Sizzle.error = function( msg ) { @@ -1579,7 +1696,7 @@ Sizzle.uniqueSort = function( results ) { results.sort( sortOrder ); if ( hasDuplicate ) { - while ( (elem = results[i++]) ) { + while ( ( elem = results[ i++ ] ) ) { if ( elem === results[ i ] ) { j = duplicates.push( i ); } @@ -1607,17 +1724,21 @@ getText = Sizzle.getText = function( elem ) { nodeType = elem.nodeType; if ( !nodeType ) { + // If no nodeType, this is expected to be an array - while ( (node = elem[i++]) ) { + while ( ( node = elem[ i++ ] ) ) { + // Do not traverse comment nodes ret += getText( node ); } } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + // Use textContent for elements // innerText usage removed for consistency of new lines (jQuery #11153) if ( typeof elem.textContent === "string" ) { return elem.textContent; } else { + // Traverse its children for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { ret += getText( elem ); @@ -1626,6 +1747,7 @@ getText = Sizzle.getText = function( elem ) { } else if ( nodeType === 3 || nodeType === 4 ) { return elem.nodeValue; } + // Do not include comment or processing instruction nodes return ret; @@ -1653,19 +1775,21 @@ Expr = Sizzle.selectors = { preFilter: { "ATTR": function( match ) { - match[1] = match[1].replace( runescape, funescape ); + match[ 1 ] = match[ 1 ].replace( runescape, funescape ); // Move the given value to match[3] whether quoted or unquoted - match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); + match[ 3 ] = ( match[ 3 ] || match[ 4 ] || + match[ 5 ] || "" ).replace( runescape, funescape ); - if ( match[2] === "~=" ) { - match[3] = " " + match[3] + " "; + if ( match[ 2 ] === "~=" ) { + match[ 3 ] = " " + match[ 3 ] + " "; } return match.slice( 0, 4 ); }, "CHILD": function( match ) { + /* matches from matchExpr["CHILD"] 1 type (only|nth|...) 2 what (child|of-type) @@ -1676,22 +1800,25 @@ Expr = Sizzle.selectors = { 7 sign of y-component 8 y of y-component */ - match[1] = match[1].toLowerCase(); + match[ 1 ] = match[ 1 ].toLowerCase(); + + if ( match[ 1 ].slice( 0, 3 ) === "nth" ) { - if ( match[1].slice( 0, 3 ) === "nth" ) { // nth-* requires argument - if ( !match[3] ) { - Sizzle.error( match[0] ); + if ( !match[ 3 ] ) { + Sizzle.error( match[ 0 ] ); } // numeric x and y parameters for Expr.filter.CHILD // remember that false/true cast respectively to 0/1 - match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); - match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); + match[ 4 ] = +( match[ 4 ] ? + match[ 5 ] + ( match[ 6 ] || 1 ) : + 2 * ( match[ 3 ] === "even" || match[ 3 ] === "odd" ) ); + match[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === "odd" ); - // other types prohibit arguments - } else if ( match[3] ) { - Sizzle.error( match[0] ); + // other types prohibit arguments + } else if ( match[ 3 ] ) { + Sizzle.error( match[ 0 ] ); } return match; @@ -1699,26 +1826,28 @@ Expr = Sizzle.selectors = { "PSEUDO": function( match ) { var excess, - unquoted = !match[6] && match[2]; + unquoted = !match[ 6 ] && match[ 2 ]; - if ( matchExpr["CHILD"].test( match[0] ) ) { + if ( matchExpr[ "CHILD" ].test( match[ 0 ] ) ) { return null; } // Accept quoted arguments as-is - if ( match[3] ) { - match[2] = match[4] || match[5] || ""; + if ( match[ 3 ] ) { + match[ 2 ] = match[ 4 ] || match[ 5 ] || ""; // Strip excess characters from unquoted arguments } else if ( unquoted && rpseudo.test( unquoted ) && + // Get excess from tokenize (recursively) - (excess = tokenize( unquoted, true )) && + ( excess = tokenize( unquoted, true ) ) && + // advance to the next closing parenthesis - (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { + ( excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length ) ) { // excess is a negative index - match[0] = match[0].slice( 0, excess ); - match[2] = unquoted.slice( 0, excess ); + match[ 0 ] = match[ 0 ].slice( 0, excess ); + match[ 2 ] = unquoted.slice( 0, excess ); } // Return only captures needed by the pseudo filter method (type and argument) @@ -1731,7 +1860,9 @@ Expr = Sizzle.selectors = { "TAG": function( nodeNameSelector ) { var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); return nodeNameSelector === "*" ? - function() { return true; } : + function() { + return true; + } : function( elem ) { return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; }; @@ -1741,10 +1872,16 @@ Expr = Sizzle.selectors = { var pattern = classCache[ className + " " ]; return pattern || - (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && - classCache( className, function( elem ) { - return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); - }); + ( pattern = new RegExp( "(^|" + whitespace + + ")" + className + "(" + whitespace + "|$)" ) ) && classCache( + className, function( elem ) { + return pattern.test( + typeof elem.className === "string" && elem.className || + typeof elem.getAttribute !== "undefined" && + elem.getAttribute( "class" ) || + "" + ); + } ); }, "ATTR": function( name, operator, check ) { @@ -1760,6 +1897,8 @@ Expr = Sizzle.selectors = { result += ""; + /* eslint-disable max-len */ + return operator === "=" ? result === check : operator === "!=" ? result !== check : operator === "^=" ? check && result.indexOf( check ) === 0 : @@ -1768,10 +1907,12 @@ Expr = Sizzle.selectors = { operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : false; + /* eslint-enable max-len */ + }; }, - "CHILD": function( type, what, argument, first, last ) { + "CHILD": function( type, what, _argument, first, last ) { var simple = type.slice( 0, 3 ) !== "nth", forward = type.slice( -4 ) !== "last", ofType = what === "of-type"; @@ -1783,7 +1924,7 @@ Expr = Sizzle.selectors = { return !!elem.parentNode; } : - function( elem, context, xml ) { + function( elem, _context, xml ) { var cache, uniqueCache, outerCache, node, nodeIndex, start, dir = simple !== forward ? "nextSibling" : "previousSibling", parent = elem.parentNode, @@ -1797,7 +1938,7 @@ Expr = Sizzle.selectors = { if ( simple ) { while ( dir ) { node = elem; - while ( (node = node[ dir ]) ) { + while ( ( node = node[ dir ] ) ) { if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) { @@ -1805,6 +1946,7 @@ Expr = Sizzle.selectors = { return false; } } + // Reverse direction for :only-* (if we haven't yet done so) start = dir = type === "only" && !start && "nextSibling"; } @@ -1820,22 +1962,22 @@ Expr = Sizzle.selectors = { // ...in a gzip-friendly way node = parent; - outerCache = node[ expando ] || (node[ expando ] = {}); + outerCache = node[ expando ] || ( node[ expando ] = {} ); // Support: IE <9 only // Defend against cloned attroperties (jQuery gh-1709) uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); + ( outerCache[ node.uniqueID ] = {} ); cache = uniqueCache[ type ] || []; nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; diff = nodeIndex && cache[ 2 ]; node = nodeIndex && parent.childNodes[ nodeIndex ]; - while ( (node = ++nodeIndex && node && node[ dir ] || + while ( ( node = ++nodeIndex && node && node[ dir ] || // Fallback to seeking `elem` from the start - (diff = nodeIndex = 0) || start.pop()) ) { + ( diff = nodeIndex = 0 ) || start.pop() ) ) { // When found, cache indexes on `parent` and break if ( node.nodeType === 1 && ++diff && node === elem ) { @@ -1845,16 +1987,18 @@ Expr = Sizzle.selectors = { } } else { + // Use previously-cached element index if available if ( useCache ) { + // ...in a gzip-friendly way node = elem; - outerCache = node[ expando ] || (node[ expando ] = {}); + outerCache = node[ expando ] || ( node[ expando ] = {} ); // Support: IE <9 only // Defend against cloned attroperties (jQuery gh-1709) uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); + ( outerCache[ node.uniqueID ] = {} ); cache = uniqueCache[ type ] || []; nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; @@ -1864,9 +2008,10 @@ Expr = Sizzle.selectors = { // xml :nth-child(...) // or :nth-last-child(...) or :nth(-last)?-of-type(...) if ( diff === false ) { + // Use the same loop as above to seek `elem` from the start - while ( (node = ++nodeIndex && node && node[ dir ] || - (diff = nodeIndex = 0) || start.pop()) ) { + while ( ( node = ++nodeIndex && node && node[ dir ] || + ( diff = nodeIndex = 0 ) || start.pop() ) ) { if ( ( ofType ? node.nodeName.toLowerCase() === name : @@ -1875,12 +2020,13 @@ Expr = Sizzle.selectors = { // Cache the index of each encountered element if ( useCache ) { - outerCache = node[ expando ] || (node[ expando ] = {}); + outerCache = node[ expando ] || + ( node[ expando ] = {} ); // Support: IE <9 only // Defend against cloned attroperties (jQuery gh-1709) uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); + ( outerCache[ node.uniqueID ] = {} ); uniqueCache[ type ] = [ dirruns, diff ]; } @@ -1901,6 +2047,7 @@ Expr = Sizzle.selectors = { }, "PSEUDO": function( pseudo, argument ) { + // pseudo-class names are case-insensitive // http://www.w3.org/TR/selectors/#pseudo-classes // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters @@ -1920,15 +2067,15 @@ Expr = Sizzle.selectors = { if ( fn.length > 1 ) { args = [ pseudo, pseudo, "", argument ]; return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? - markFunction(function( seed, matches ) { + markFunction( function( seed, matches ) { var idx, matched = fn( seed, argument ), i = matched.length; while ( i-- ) { - idx = indexOf( seed, matched[i] ); - seed[ idx ] = !( matches[ idx ] = matched[i] ); + idx = indexOf( seed, matched[ i ] ); + seed[ idx ] = !( matches[ idx ] = matched[ i ] ); } - }) : + } ) : function( elem ) { return fn( elem, 0, args ); }; @@ -1939,8 +2086,10 @@ Expr = Sizzle.selectors = { }, pseudos: { + // Potentially complex pseudos - "not": markFunction(function( selector ) { + "not": markFunction( function( selector ) { + // Trim the selector passed to compile // to avoid treating leading and trailing // spaces as combinators @@ -1949,39 +2098,40 @@ Expr = Sizzle.selectors = { matcher = compile( selector.replace( rtrim, "$1" ) ); return matcher[ expando ] ? - markFunction(function( seed, matches, context, xml ) { + markFunction( function( seed, matches, _context, xml ) { var elem, unmatched = matcher( seed, null, xml, [] ), i = seed.length; // Match elements unmatched by `matcher` while ( i-- ) { - if ( (elem = unmatched[i]) ) { - seed[i] = !(matches[i] = elem); + if ( ( elem = unmatched[ i ] ) ) { + seed[ i ] = !( matches[ i ] = elem ); } } - }) : - function( elem, context, xml ) { - input[0] = elem; + } ) : + function( elem, _context, xml ) { + input[ 0 ] = elem; matcher( input, null, xml, results ); + // Don't keep the element (issue #299) - input[0] = null; + input[ 0 ] = null; return !results.pop(); }; - }), + } ), - "has": markFunction(function( selector ) { + "has": markFunction( function( selector ) { return function( elem ) { return Sizzle( selector, elem ).length > 0; }; - }), + } ), - "contains": markFunction(function( text ) { + "contains": markFunction( function( text ) { text = text.replace( runescape, funescape ); return function( elem ) { return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1; }; - }), + } ), // "Whether an element is represented by a :lang() selector // is based solely on the element's language value @@ -1991,25 +2141,26 @@ Expr = Sizzle.selectors = { // The identifier C does not have to be a valid language name." // http://www.w3.org/TR/selectors/#lang-pseudo "lang": markFunction( function( lang ) { + // lang value must be a valid identifier - if ( !ridentifier.test(lang || "") ) { + if ( !ridentifier.test( lang || "" ) ) { Sizzle.error( "unsupported lang: " + lang ); } lang = lang.replace( runescape, funescape ).toLowerCase(); return function( elem ) { var elemLang; do { - if ( (elemLang = documentIsHTML ? + if ( ( elemLang = documentIsHTML ? elem.lang : - elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { + elem.getAttribute( "xml:lang" ) || elem.getAttribute( "lang" ) ) ) { elemLang = elemLang.toLowerCase(); return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; } - } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); + } while ( ( elem = elem.parentNode ) && elem.nodeType === 1 ); return false; }; - }), + } ), // Miscellaneous "target": function( elem ) { @@ -2022,7 +2173,9 @@ Expr = Sizzle.selectors = { }, "focus": function( elem ) { - return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + return elem === document.activeElement && + ( !document.hasFocus || document.hasFocus() ) && + !!( elem.type || elem.href || ~elem.tabIndex ); }, // Boolean properties @@ -2030,16 +2183,20 @@ Expr = Sizzle.selectors = { "disabled": createDisabledPseudo( true ), "checked": function( elem ) { + // In CSS3, :checked should return both checked and selected elements // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked var nodeName = elem.nodeName.toLowerCase(); - return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); + return ( nodeName === "input" && !!elem.checked ) || + ( nodeName === "option" && !!elem.selected ); }, "selected": function( elem ) { + // Accessing this property makes selected-by-default // options in Safari work properly if ( elem.parentNode ) { + // eslint-disable-next-line no-unused-expressions elem.parentNode.selectedIndex; } @@ -2048,6 +2205,7 @@ Expr = Sizzle.selectors = { // Contents "empty": function( elem ) { + // http://www.w3.org/TR/selectors/#empty-pseudo // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), // but not by others (comment: 8; processing instruction: 7; etc.) @@ -2061,7 +2219,7 @@ Expr = Sizzle.selectors = { }, "parent": function( elem ) { - return !Expr.pseudos["empty"]( elem ); + return !Expr.pseudos[ "empty" ]( elem ); }, // Element/input types @@ -2085,39 +2243,40 @@ Expr = Sizzle.selectors = { // Support: IE<8 // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" - ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); + ( ( attr = elem.getAttribute( "type" ) ) == null || + attr.toLowerCase() === "text" ); }, // Position-in-collection - "first": createPositionalPseudo(function() { + "first": createPositionalPseudo( function() { return [ 0 ]; - }), + } ), - "last": createPositionalPseudo(function( matchIndexes, length ) { + "last": createPositionalPseudo( function( _matchIndexes, length ) { return [ length - 1 ]; - }), + } ), - "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { + "eq": createPositionalPseudo( function( _matchIndexes, length, argument ) { return [ argument < 0 ? argument + length : argument ]; - }), + } ), - "even": createPositionalPseudo(function( matchIndexes, length ) { + "even": createPositionalPseudo( function( matchIndexes, length ) { var i = 0; for ( ; i < length; i += 2 ) { matchIndexes.push( i ); } return matchIndexes; - }), + } ), - "odd": createPositionalPseudo(function( matchIndexes, length ) { + "odd": createPositionalPseudo( function( matchIndexes, length ) { var i = 1; for ( ; i < length; i += 2 ) { matchIndexes.push( i ); } return matchIndexes; - }), + } ), - "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { + "lt": createPositionalPseudo( function( matchIndexes, length, argument ) { var i = argument < 0 ? argument + length : argument > length ? @@ -2127,19 +2286,19 @@ Expr = Sizzle.selectors = { matchIndexes.push( i ); } return matchIndexes; - }), + } ), - "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { + "gt": createPositionalPseudo( function( matchIndexes, length, argument ) { var i = argument < 0 ? argument + length : argument; for ( ; ++i < length; ) { matchIndexes.push( i ); } return matchIndexes; - }) + } ) } }; -Expr.pseudos["nth"] = Expr.pseudos["eq"]; +Expr.pseudos[ "nth" ] = Expr.pseudos[ "eq" ]; // Add button/input type pseudos for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { @@ -2170,37 +2329,39 @@ tokenize = Sizzle.tokenize = function( selector, parseOnly ) { while ( soFar ) { // Comma and first run - if ( !matched || (match = rcomma.exec( soFar )) ) { + if ( !matched || ( match = rcomma.exec( soFar ) ) ) { if ( match ) { + // Don't consume trailing commas as valid - soFar = soFar.slice( match[0].length ) || soFar; + soFar = soFar.slice( match[ 0 ].length ) || soFar; } - groups.push( (tokens = []) ); + groups.push( ( tokens = [] ) ); } matched = false; // Combinators - if ( (match = rcombinators.exec( soFar )) ) { + if ( ( match = rcombinators.exec( soFar ) ) ) { matched = match.shift(); - tokens.push({ + tokens.push( { value: matched, + // Cast descendant combinators to space - type: match[0].replace( rtrim, " " ) - }); + type: match[ 0 ].replace( rtrim, " " ) + } ); soFar = soFar.slice( matched.length ); } // Filters for ( type in Expr.filter ) { - if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || - (match = preFilters[ type ]( match ))) ) { + if ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] || + ( match = preFilters[ type ]( match ) ) ) ) { matched = match.shift(); - tokens.push({ + tokens.push( { value: matched, type: type, matches: match - }); + } ); soFar = soFar.slice( matched.length ); } } @@ -2217,6 +2378,7 @@ tokenize = Sizzle.tokenize = function( selector, parseOnly ) { soFar.length : soFar ? Sizzle.error( selector ) : + // Cache the tokens tokenCache( selector, groups ).slice( 0 ); }; @@ -2226,7 +2388,7 @@ function toSelector( tokens ) { len = tokens.length, selector = ""; for ( ; i < len; i++ ) { - selector += tokens[i].value; + selector += tokens[ i ].value; } return selector; } @@ -2239,9 +2401,10 @@ function addCombinator( matcher, combinator, base ) { doneName = done++; return combinator.first ? + // Check against closest ancestor/preceding element function( elem, context, xml ) { - while ( (elem = elem[ dir ]) ) { + while ( ( elem = elem[ dir ] ) ) { if ( elem.nodeType === 1 || checkNonElements ) { return matcher( elem, context, xml ); } @@ -2256,7 +2419,7 @@ function addCombinator( matcher, combinator, base ) { // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching if ( xml ) { - while ( (elem = elem[ dir ]) ) { + while ( ( elem = elem[ dir ] ) ) { if ( elem.nodeType === 1 || checkNonElements ) { if ( matcher( elem, context, xml ) ) { return true; @@ -2264,27 +2427,29 @@ function addCombinator( matcher, combinator, base ) { } } } else { - while ( (elem = elem[ dir ]) ) { + while ( ( elem = elem[ dir ] ) ) { if ( elem.nodeType === 1 || checkNonElements ) { - outerCache = elem[ expando ] || (elem[ expando ] = {}); + outerCache = elem[ expando ] || ( elem[ expando ] = {} ); // Support: IE <9 only // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {}); + uniqueCache = outerCache[ elem.uniqueID ] || + ( outerCache[ elem.uniqueID ] = {} ); if ( skip && skip === elem.nodeName.toLowerCase() ) { elem = elem[ dir ] || elem; - } else if ( (oldCache = uniqueCache[ key ]) && + } else if ( ( oldCache = uniqueCache[ key ] ) && oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { // Assign to newCache so results back-propagate to previous elements - return (newCache[ 2 ] = oldCache[ 2 ]); + return ( newCache[ 2 ] = oldCache[ 2 ] ); } else { + // Reuse newcache so results back-propagate to previous elements uniqueCache[ key ] = newCache; // A match means we're done; a fail means we have to keep checking - if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { + if ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) { return true; } } @@ -2300,20 +2465,20 @@ function elementMatcher( matchers ) { function( elem, context, xml ) { var i = matchers.length; while ( i-- ) { - if ( !matchers[i]( elem, context, xml ) ) { + if ( !matchers[ i ]( elem, context, xml ) ) { return false; } } return true; } : - matchers[0]; + matchers[ 0 ]; } function multipleContexts( selector, contexts, results ) { var i = 0, len = contexts.length; for ( ; i < len; i++ ) { - Sizzle( selector, contexts[i], results ); + Sizzle( selector, contexts[ i ], results ); } return results; } @@ -2326,7 +2491,7 @@ function condense( unmatched, map, filter, context, xml ) { mapped = map != null; for ( ; i < len; i++ ) { - if ( (elem = unmatched[i]) ) { + if ( ( elem = unmatched[ i ] ) ) { if ( !filter || filter( elem, context, xml ) ) { newUnmatched.push( elem ); if ( mapped ) { @@ -2346,14 +2511,18 @@ function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postS if ( postFinder && !postFinder[ expando ] ) { postFinder = setMatcher( postFinder, postSelector ); } - return markFunction(function( seed, results, context, xml ) { + return markFunction( function( seed, results, context, xml ) { var temp, i, elem, preMap = [], postMap = [], preexisting = results.length, // Get initial elements from seed or context - elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), + elems = seed || multipleContexts( + selector || "*", + context.nodeType ? [ context ] : context, + [] + ), // Prefilter to get matcher input, preserving a map for seed-results synchronization matcherIn = preFilter && ( seed || !selector ) ? @@ -2361,6 +2530,7 @@ function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postS elems, matcherOut = matcher ? + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, postFinder || ( seed ? preFilter : preexisting || postFilter ) ? @@ -2384,8 +2554,8 @@ function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postS // Un-match failing elements by moving them back to matcherIn i = temp.length; while ( i-- ) { - if ( (elem = temp[i]) ) { - matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); + if ( ( elem = temp[ i ] ) ) { + matcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem ); } } } @@ -2393,25 +2563,27 @@ function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postS if ( seed ) { if ( postFinder || preFilter ) { if ( postFinder ) { + // Get the final matcherOut by condensing this intermediate into postFinder contexts temp = []; i = matcherOut.length; while ( i-- ) { - if ( (elem = matcherOut[i]) ) { + if ( ( elem = matcherOut[ i ] ) ) { + // Restore matcherIn since elem is not yet a final match - temp.push( (matcherIn[i] = elem) ); + temp.push( ( matcherIn[ i ] = elem ) ); } } - postFinder( null, (matcherOut = []), temp, xml ); + postFinder( null, ( matcherOut = [] ), temp, xml ); } // Move matched elements from seed to results to keep them synchronized i = matcherOut.length; while ( i-- ) { - if ( (elem = matcherOut[i]) && - (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { + if ( ( elem = matcherOut[ i ] ) && + ( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) { - seed[temp] = !(results[temp] = elem); + seed[ temp ] = !( results[ temp ] = elem ); } } } @@ -2429,14 +2601,14 @@ function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postS push.apply( results, matcherOut ); } } - }); + } ); } function matcherFromTokens( tokens ) { var checkContext, matcher, j, len = tokens.length, - leadingRelative = Expr.relative[ tokens[0].type ], - implicitRelative = leadingRelative || Expr.relative[" "], + leadingRelative = Expr.relative[ tokens[ 0 ].type ], + implicitRelative = leadingRelative || Expr.relative[ " " ], i = leadingRelative ? 1 : 0, // The foundational matcher ensures that elements are reachable from top-level context(s) @@ -2448,38 +2620,43 @@ function matcherFromTokens( tokens ) { }, implicitRelative, true ), matchers = [ function( elem, context, xml ) { var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( - (checkContext = context).nodeType ? + ( checkContext = context ).nodeType ? matchContext( elem, context, xml ) : matchAnyContext( elem, context, xml ) ); + // Avoid hanging onto element (issue #299) checkContext = null; return ret; } ]; for ( ; i < len; i++ ) { - if ( (matcher = Expr.relative[ tokens[i].type ]) ) { - matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; + if ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) { + matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ]; } else { - matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); + matcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches ); // Return special upon seeing a positional matcher if ( matcher[ expando ] ) { + // Find the next relative operator (if any) for proper handling j = ++i; for ( ; j < len; j++ ) { - if ( Expr.relative[ tokens[j].type ] ) { + if ( Expr.relative[ tokens[ j ].type ] ) { break; } } return setMatcher( i > 1 && elementMatcher( matchers ), i > 1 && toSelector( - // If the preceding token was a descendant combinator, insert an implicit any-element `*` - tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) + + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens + .slice( 0, i - 1 ) + .concat( { value: tokens[ i - 2 ].type === " " ? "*" : "" } ) ).replace( rtrim, "$1" ), matcher, i < j && matcherFromTokens( tokens.slice( i, j ) ), - j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), + j < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ), j < len && toSelector( tokens ) ); } @@ -2500,28 +2677,40 @@ function matcherFromGroupMatchers( elementMatchers, setMatchers ) { unmatched = seed && [], setMatched = [], contextBackup = outermostContext, + // We must always have either seed elements or outermost context - elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), + elems = seed || byElement && Expr.find[ "TAG" ]( "*", outermost ), + // Use integer dirruns iff this is the outermost matcher - dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), + dirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ), len = elems.length; if ( outermost ) { - outermostContext = context === document || context || outermost; + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + outermostContext = context == document || context || outermost; } // Add elements passing elementMatchers directly to results // Support: IE<9, Safari // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id - for ( ; i !== len && (elem = elems[i]) != null; i++ ) { + for ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) { if ( byElement && elem ) { j = 0; - if ( !context && elem.ownerDocument !== document ) { + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( !context && elem.ownerDocument != document ) { setDocument( elem ); xml = !documentIsHTML; } - while ( (matcher = elementMatchers[j++]) ) { - if ( matcher( elem, context || document, xml) ) { + while ( ( matcher = elementMatchers[ j++ ] ) ) { + if ( matcher( elem, context || document, xml ) ) { results.push( elem ); break; } @@ -2533,8 +2722,9 @@ function matcherFromGroupMatchers( elementMatchers, setMatchers ) { // Track unmatched elements for set filters if ( bySet ) { + // They will have gone through all possible matchers - if ( (elem = !matcher && elem) ) { + if ( ( elem = !matcher && elem ) ) { matchedCount--; } @@ -2558,16 +2748,17 @@ function matcherFromGroupMatchers( elementMatchers, setMatchers ) { // numerically zero. if ( bySet && i !== matchedCount ) { j = 0; - while ( (matcher = setMatchers[j++]) ) { + while ( ( matcher = setMatchers[ j++ ] ) ) { matcher( unmatched, setMatched, context, xml ); } if ( seed ) { + // Reintegrate element matches to eliminate the need for sorting if ( matchedCount > 0 ) { while ( i-- ) { - if ( !(unmatched[i] || setMatched[i]) ) { - setMatched[i] = pop.call( results ); + if ( !( unmatched[ i ] || setMatched[ i ] ) ) { + setMatched[ i ] = pop.call( results ); } } } @@ -2608,13 +2799,14 @@ compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { cached = compilerCache[ selector + " " ]; if ( !cached ) { + // Generate a function of recursive functions that can be used to check each element if ( !match ) { match = tokenize( selector ); } i = match.length; while ( i-- ) { - cached = matcherFromTokens( match[i] ); + cached = matcherFromTokens( match[ i ] ); if ( cached[ expando ] ) { setMatchers.push( cached ); } else { @@ -2623,7 +2815,10 @@ compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { } // Cache the compiled function - cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + cached = compilerCache( + selector, + matcherFromGroupMatchers( elementMatchers, setMatchers ) + ); // Save selector and tokenization cached.selector = selector; @@ -2643,7 +2838,7 @@ compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { select = Sizzle.select = function( selector, context, results, seed ) { var i, tokens, token, type, find, compiled = typeof selector === "function" && selector, - match = !seed && tokenize( (selector = compiled.selector || selector) ); + match = !seed && tokenize( ( selector = compiled.selector || selector ) ); results = results || []; @@ -2652,11 +2847,12 @@ select = Sizzle.select = function( selector, context, results, seed ) { if ( match.length === 1 ) { // Reduce context if the leading compound selector is an ID - tokens = match[0] = match[0].slice( 0 ); - if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && - context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) { + tokens = match[ 0 ] = match[ 0 ].slice( 0 ); + if ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === "ID" && + context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) { - context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; + context = ( Expr.find[ "ID" ]( token.matches[ 0 ] + .replace( runescape, funescape ), context ) || [] )[ 0 ]; if ( !context ) { return results; @@ -2669,20 +2865,22 @@ select = Sizzle.select = function( selector, context, results, seed ) { } // Fetch a seed set for right-to-left matching - i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; + i = matchExpr[ "needsContext" ].test( selector ) ? 0 : tokens.length; while ( i-- ) { - token = tokens[i]; + token = tokens[ i ]; // Abort if we hit a combinator - if ( Expr.relative[ (type = token.type) ] ) { + if ( Expr.relative[ ( type = token.type ) ] ) { break; } - if ( (find = Expr.find[ type ]) ) { + if ( ( find = Expr.find[ type ] ) ) { + // Search, expanding context for leading sibling combinators - if ( (seed = find( - token.matches[0].replace( runescape, funescape ), - rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context - )) ) { + if ( ( seed = find( + token.matches[ 0 ].replace( runescape, funescape ), + rsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) || + context + ) ) ) { // If seed is empty or no tokens remain, we can return early tokens.splice( i, 1 ); @@ -2713,7 +2911,7 @@ select = Sizzle.select = function( selector, context, results, seed ) { // One-time assignments // Sort stability -support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; +support.sortStable = expando.split( "" ).sort( sortOrder ).join( "" ) === expando; // Support: Chrome 14-35+ // Always assume duplicates if they aren't passed to the comparison function @@ -2724,58 +2922,59 @@ setDocument(); // Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) // Detached nodes confoundingly follow *each other* -support.sortDetached = assert(function( el ) { +support.sortDetached = assert( function( el ) { + // Should return 1, but returns 4 (following) - return el.compareDocumentPosition( document.createElement("fieldset") ) & 1; -}); + return el.compareDocumentPosition( document.createElement( "fieldset" ) ) & 1; +} ); // Support: IE<8 // Prevent attribute/property "interpolation" // https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx -if ( !assert(function( el ) { +if ( !assert( function( el ) { el.innerHTML = ""; - return el.firstChild.getAttribute("href") === "#" ; -}) ) { + return el.firstChild.getAttribute( "href" ) === "#"; +} ) ) { addHandle( "type|href|height|width", function( elem, name, isXML ) { if ( !isXML ) { return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); } - }); + } ); } // Support: IE<9 // Use defaultValue in place of getAttribute("value") -if ( !support.attributes || !assert(function( el ) { +if ( !support.attributes || !assert( function( el ) { el.innerHTML = ""; el.firstChild.setAttribute( "value", "" ); return el.firstChild.getAttribute( "value" ) === ""; -}) ) { - addHandle( "value", function( elem, name, isXML ) { +} ) ) { + addHandle( "value", function( elem, _name, isXML ) { if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { return elem.defaultValue; } - }); + } ); } // Support: IE<9 // Use getAttributeNode to fetch booleans when getAttribute lies -if ( !assert(function( el ) { - return el.getAttribute("disabled") == null; -}) ) { +if ( !assert( function( el ) { + return el.getAttribute( "disabled" ) == null; +} ) ) { addHandle( booleans, function( elem, name, isXML ) { var val; if ( !isXML ) { return elem[ name ] === true ? name.toLowerCase() : - (val = elem.getAttributeNode( name )) && val.specified ? + ( val = elem.getAttributeNode( name ) ) && val.specified ? val.value : - null; + null; } - }); + } ); } return Sizzle; -})( window ); +} )( window ); @@ -3144,7 +3343,7 @@ jQuery.each( { parents: function( elem ) { return dir( elem, "parentNode" ); }, - parentsUntil: function( elem, i, until ) { + parentsUntil: function( elem, _i, until ) { return dir( elem, "parentNode", until ); }, next: function( elem ) { @@ -3159,10 +3358,10 @@ jQuery.each( { prevAll: function( elem ) { return dir( elem, "previousSibling" ); }, - nextUntil: function( elem, i, until ) { + nextUntil: function( elem, _i, until ) { return dir( elem, "nextSibling", until ); }, - prevUntil: function( elem, i, until ) { + prevUntil: function( elem, _i, until ) { return dir( elem, "previousSibling", until ); }, siblings: function( elem ) { @@ -3172,7 +3371,13 @@ jQuery.each( { return siblings( elem.firstChild ); }, contents: function( elem ) { - if ( typeof elem.contentDocument !== "undefined" ) { + if ( elem.contentDocument != null && + + // Support: IE 11+ + // elements with no `data` attribute has an object + // `contentDocument` with a `null` prototype. + getProto( elem.contentDocument ) ) { + return elem.contentDocument; } @@ -3515,7 +3720,7 @@ jQuery.extend( { var fns = arguments; return jQuery.Deferred( function( newDefer ) { - jQuery.each( tuples, function( i, tuple ) { + jQuery.each( tuples, function( _i, tuple ) { // Map tuples (progress, done, fail) to arguments (done, fail, progress) var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; @@ -3968,7 +4173,7 @@ var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { // ...except when executing function values } else { bulk = fn; - fn = function( elem, key, value ) { + fn = function( elem, _key, value ) { return bulk.call( jQuery( elem ), value ); }; } @@ -4003,7 +4208,7 @@ var rmsPrefix = /^-ms-/, rdashAlpha = /-([a-z])/g; // Used by camelCase as callback to replace() -function fcamelCase( all, letter ) { +function fcamelCase( _all, letter ) { return letter.toUpperCase(); } @@ -4042,7 +4247,7 @@ Data.prototype = { // If not, create one if ( !value ) { - value = {}; + value = Object.create( null ); // We can accept data for non-element nodes in modern browsers, // but we should not, see #8335. @@ -4531,27 +4736,6 @@ var isHiddenWithinTree = function( elem, el ) { jQuery.css( elem, "display" ) === "none"; }; -var swap = function( elem, options, callback, args ) { - var ret, name, - old = {}; - - // Remember the old values, and insert the new ones - for ( name in options ) { - old[ name ] = elem.style[ name ]; - elem.style[ name ] = options[ name ]; - } - - ret = callback.apply( elem, args || [] ); - - // Revert the old values - for ( name in options ) { - elem.style[ name ] = old[ name ]; - } - - return ret; -}; - - function adjustCSS( elem, prop, valueParts, tween ) { @@ -4722,11 +4906,40 @@ var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i ); -// We have to close these tags to support XHTML (#13200) -var wrapMap = { +( function() { + var fragment = document.createDocumentFragment(), + div = fragment.appendChild( document.createElement( "div" ) ), + input = document.createElement( "input" ); + + // Support: Android 4.0 - 4.3 only + // Check state lost if the name is set (#11217) + // Support: Windows Web Apps (WWA) + // `name` and `type` must use .setAttribute for WWA (#14901) + input.setAttribute( "type", "radio" ); + input.setAttribute( "checked", "checked" ); + input.setAttribute( "name", "t" ); + + div.appendChild( input ); + + // Support: Android <=4.1 only + // Older WebKit doesn't clone checked state correctly in fragments + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE <=11 only + // Make sure textarea (and checkbox) defaultValue is properly cloned + div.innerHTML = ""; + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; // Support: IE <=9 only - option: [ 1, "" ], + // IE <=9 replaces "; + support.option = !!div.lastChild; +} )(); + + +// We have to close these tags to support XHTML (#13200) +var wrapMap = { // XHTML parsers do not magically insert elements in the // same way that tag soup parsers do. So we cannot shorten @@ -4739,12 +4952,14 @@ var wrapMap = { _default: [ 0, "", "" ] }; -// Support: IE <=9 only -wrapMap.optgroup = wrapMap.option; - wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; wrapMap.th = wrapMap.td; +// Support: IE <=9 only +if ( !support.option ) { + wrapMap.optgroup = wrapMap.option = [ 1, "" ]; +} + function getAll( context, tag ) { @@ -4877,32 +5092,6 @@ function buildFragment( elems, context, scripts, selection, ignored ) { } -( function() { - var fragment = document.createDocumentFragment(), - div = fragment.appendChild( document.createElement( "div" ) ), - input = document.createElement( "input" ); - - // Support: Android 4.0 - 4.3 only - // Check state lost if the name is set (#11217) - // Support: Windows Web Apps (WWA) - // `name` and `type` must use .setAttribute for WWA (#14901) - input.setAttribute( "type", "radio" ); - input.setAttribute( "checked", "checked" ); - input.setAttribute( "name", "t" ); - - div.appendChild( input ); - - // Support: Android <=4.1 only - // Older WebKit doesn't clone checked state correctly in fragments - support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; - - // Support: IE <=11 only - // Make sure textarea (and checkbox) defaultValue is properly cloned - div.innerHTML = ""; - support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; -} )(); - - var rkeyEvent = /^key/, rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, @@ -5011,8 +5200,8 @@ jQuery.event = { special, handlers, type, namespaces, origType, elemData = dataPriv.get( elem ); - // Don't attach events to noData or text/comment nodes (but allow plain objects) - if ( !elemData ) { + // Only attach events to objects that accept data + if ( !acceptData( elem ) ) { return; } @@ -5036,7 +5225,7 @@ jQuery.event = { // Init the element's event structure and main handler, if this is the first if ( !( events = elemData.events ) ) { - events = elemData.events = {}; + events = elemData.events = Object.create( null ); } if ( !( eventHandle = elemData.handle ) ) { eventHandle = elemData.handle = function( e ) { @@ -5194,12 +5383,15 @@ jQuery.event = { dispatch: function( nativeEvent ) { - // Make a writable jQuery.Event from the native event object - var event = jQuery.event.fix( nativeEvent ); - var i, j, ret, matched, handleObj, handlerQueue, args = new Array( arguments.length ), - handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [], + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( nativeEvent ), + + handlers = ( + dataPriv.get( this, "events" ) || Object.create( null ) + )[ event.type ] || [], special = jQuery.event.special[ event.type ] || {}; // Use the fix-ed jQuery.Event rather than the (read-only) native event @@ -5774,13 +5966,6 @@ jQuery.fn.extend( { var - /* eslint-disable max-len */ - - // See https://github.com/eslint/eslint/issues/3229 - rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi, - - /* eslint-enable */ - // Support: IE <=10 - 11, Edge 12 - 13 only // In IE/Edge using regex groups here causes severe slowdowns. // See https://connect.microsoft.com/IE/feedback/details/1736512/ @@ -5817,7 +6002,7 @@ function restoreScript( elem ) { } function cloneCopyEvent( src, dest ) { - var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; + var i, l, type, pdataOld, udataOld, udataCur, events; if ( dest.nodeType !== 1 ) { return; @@ -5825,13 +6010,11 @@ function cloneCopyEvent( src, dest ) { // 1. Copy private data: events, handlers, etc. if ( dataPriv.hasData( src ) ) { - pdataOld = dataPriv.access( src ); - pdataCur = dataPriv.set( dest, pdataOld ); + pdataOld = dataPriv.get( src ); events = pdataOld.events; if ( events ) { - delete pdataCur.handle; - pdataCur.events = {}; + dataPriv.remove( dest, "handle events" ); for ( type in events ) { for ( i = 0, l = events[ type ].length; i < l; i++ ) { @@ -5867,7 +6050,7 @@ function fixInput( src, dest ) { function domManip( collection, args, callback, ignored ) { // Flatten any nested arrays - args = concat.apply( [], args ); + args = flat( args ); var fragment, first, scripts, hasScripts, node, doc, i = 0, @@ -5942,7 +6125,7 @@ function domManip( collection, args, callback, ignored ) { if ( jQuery._evalUrl && !node.noModule ) { jQuery._evalUrl( node.src, { nonce: node.nonce || node.getAttribute( "nonce" ) - } ); + }, doc ); } } else { DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc ); @@ -5979,7 +6162,7 @@ function remove( elem, selector, keepData ) { jQuery.extend( { htmlPrefilter: function( html ) { - return html.replace( rxhtmlTag, "<$1>" ); + return html; }, clone: function( elem, dataAndEvents, deepDataAndEvents ) { @@ -6241,6 +6424,27 @@ var getStyles = function( elem ) { return view.getComputedStyle( elem ); }; +var swap = function( elem, options, callback ) { + var ret, name, + old = {}; + + // Remember the old values, and insert the new ones + for ( name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + ret = callback.call( elem ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; +}; + + var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); @@ -6298,7 +6502,7 @@ var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); } var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, - reliableMarginLeftVal, + reliableTrDimensionsVal, reliableMarginLeftVal, container = document.createElement( "div" ), div = document.createElement( "div" ); @@ -6333,6 +6537,35 @@ var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); scrollboxSize: function() { computeStyleTests(); return scrollboxSizeVal; + }, + + // Support: IE 9 - 11+, Edge 15 - 18+ + // IE/Edge misreport `getComputedStyle` of table rows with width/height + // set in CSS while `offset*` properties report correct values. + // Behavior in IE 9 is more subtle than in newer versions & it passes + // some versions of this test; make sure not to make it pass there! + reliableTrDimensions: function() { + var table, tr, trChild, trStyle; + if ( reliableTrDimensionsVal == null ) { + table = document.createElement( "table" ); + tr = document.createElement( "tr" ); + trChild = document.createElement( "div" ); + + table.style.cssText = "position:absolute;left:-11111px"; + tr.style.height = "1px"; + trChild.style.height = "9px"; + + documentElement + .appendChild( table ) + .appendChild( tr ) + .appendChild( trChild ); + + trStyle = window.getComputedStyle( tr ); + reliableTrDimensionsVal = parseInt( trStyle.height ) > 3; + + documentElement.removeChild( table ); + } + return reliableTrDimensionsVal; } } ); } )(); @@ -6457,7 +6690,7 @@ var fontWeight: "400" }; -function setPositiveNumber( elem, value, subtract ) { +function setPositiveNumber( _elem, value, subtract ) { // Any relative (+/-) values have already been // normalized at this point @@ -6562,17 +6795,26 @@ function getWidthOrHeight( elem, dimension, extra ) { } - // Fall back to offsetWidth/offsetHeight when value is "auto" - // This happens for inline elements with no explicit setting (gh-3571) - // Support: Android <=4.1 - 4.3 only - // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) - // Support: IE 9-11 only - // Also use offsetWidth/offsetHeight for when box sizing is unreliable - // We use getClientRects() to check for hidden/disconnected. - // In those cases, the computed value can be trusted to be border-box + // Support: IE 9 - 11 only + // Use offsetWidth/offsetHeight for when box sizing is unreliable. + // In those cases, the computed value can be trusted to be border-box. if ( ( !support.boxSizingReliable() && isBorderBox || + + // Support: IE 10 - 11+, Edge 15 - 18+ + // IE/Edge misreport `getComputedStyle` of table rows with width/height + // set in CSS while `offset*` properties report correct values. + // Interestingly, in some cases IE 9 doesn't suffer from this issue. + !support.reliableTrDimensions() && nodeName( elem, "tr" ) || + + // Fall back to offsetWidth/offsetHeight when value is "auto" + // This happens for inline elements with no explicit setting (gh-3571) val === "auto" || + + // Support: Android <=4.1 - 4.3 only + // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) && + + // Make sure the element is visible & connected elem.getClientRects().length ) { isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; @@ -6767,7 +7009,7 @@ jQuery.extend( { } } ); -jQuery.each( [ "height", "width" ], function( i, dimension ) { +jQuery.each( [ "height", "width" ], function( _i, dimension ) { jQuery.cssHooks[ dimension ] = { get: function( elem, computed, extra ) { if ( computed ) { @@ -7540,7 +7782,7 @@ jQuery.fn.extend( { clearQueue = type; type = undefined; } - if ( clearQueue && type !== false ) { + if ( clearQueue ) { this.queue( type || "fx", [] ); } @@ -7623,7 +7865,7 @@ jQuery.fn.extend( { } } ); -jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) { +jQuery.each( [ "toggle", "show", "hide" ], function( _i, name ) { var cssFn = jQuery.fn[ name ]; jQuery.fn[ name ] = function( speed, easing, callback ) { return speed == null || typeof speed === "boolean" ? @@ -7844,7 +8086,7 @@ boolHook = { } }; -jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) { +jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( _i, name ) { var getter = attrHandle[ name ] || jQuery.find.attr; attrHandle[ name ] = function( elem, name, isXML ) { @@ -8468,7 +8710,9 @@ jQuery.extend( jQuery.event, { special.bindType || type; // jQuery handler - handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] && + handle = ( + dataPriv.get( cur, "events" ) || Object.create( null ) + )[ event.type ] && dataPriv.get( cur, "handle" ); if ( handle ) { handle.apply( cur, data ); @@ -8579,7 +8823,10 @@ if ( !support.focusin ) { jQuery.event.special[ fix ] = { setup: function() { - var doc = this.ownerDocument || this, + + // Handle: regular nodes (via `this.ownerDocument`), window + // (via `this.document`) & document (via `this`). + var doc = this.ownerDocument || this.document || this, attaches = dataPriv.access( doc, fix ); if ( !attaches ) { @@ -8588,7 +8835,7 @@ if ( !support.focusin ) { dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); }, teardown: function() { - var doc = this.ownerDocument || this, + var doc = this.ownerDocument || this.document || this, attaches = dataPriv.access( doc, fix ) - 1; if ( !attaches ) { @@ -8604,7 +8851,7 @@ if ( !support.focusin ) { } var location = window.location; -var nonce = Date.now(); +var nonce = { guid: Date.now() }; var rquery = ( /\?/ ); @@ -8736,7 +8983,7 @@ jQuery.fn.extend( { rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && ( this.checked || !rcheckableType.test( type ) ); } ) - .map( function( i, elem ) { + .map( function( _i, elem ) { var val = jQuery( this ).val(); if ( val == null ) { @@ -9349,7 +9596,8 @@ jQuery.extend( { // Add or update anti-cache param if needed if ( s.cache === false ) { cacheURL = cacheURL.replace( rantiCache, "$1" ); - uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) + uncached; + uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce.guid++ ) + + uncached; } // Put hash and anti-cache on the URL that will be requested (gh-1732) @@ -9482,6 +9730,11 @@ jQuery.extend( { response = ajaxHandleResponses( s, jqXHR, responses ); } + // Use a noop converter for missing script + if ( !isSuccess && jQuery.inArray( "script", s.dataTypes ) > -1 ) { + s.converters[ "text script" ] = function() {}; + } + // Convert no matter what (that way responseXXX fields are always set) response = ajaxConvert( s, response, jqXHR, isSuccess ); @@ -9572,7 +9825,7 @@ jQuery.extend( { } } ); -jQuery.each( [ "get", "post" ], function( i, method ) { +jQuery.each( [ "get", "post" ], function( _i, method ) { jQuery[ method ] = function( url, data, callback, type ) { // Shift arguments if data argument was omitted @@ -9593,8 +9846,17 @@ jQuery.each( [ "get", "post" ], function( i, method ) { }; } ); +jQuery.ajaxPrefilter( function( s ) { + var i; + for ( i in s.headers ) { + if ( i.toLowerCase() === "content-type" ) { + s.contentType = s.headers[ i ] || ""; + } + } +} ); -jQuery._evalUrl = function( url, options ) { + +jQuery._evalUrl = function( url, options, doc ) { return jQuery.ajax( { url: url, @@ -9612,7 +9874,7 @@ jQuery._evalUrl = function( url, options ) { "text script": function() {} }, dataFilter: function( response ) { - jQuery.globalEval( response, options ); + jQuery.globalEval( response, options, doc ); } } ); }; @@ -9934,7 +10196,7 @@ var oldCallbacks = [], jQuery.ajaxSetup( { jsonp: "callback", jsonpCallback: function() { - var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) ); + var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce.guid++ ) ); this[ callback ] = true; return callback; } @@ -10151,23 +10413,6 @@ jQuery.fn.load = function( url, params, callback ) { -// Attach a bunch of functions for handling common AJAX events -jQuery.each( [ - "ajaxStart", - "ajaxStop", - "ajaxComplete", - "ajaxError", - "ajaxSuccess", - "ajaxSend" -], function( i, type ) { - jQuery.fn[ type ] = function( fn ) { - return this.on( type, fn ); - }; -} ); - - - - jQuery.expr.pseudos.animated = function( elem ) { return jQuery.grep( jQuery.timers, function( fn ) { return elem === fn.elem; @@ -10224,6 +10469,12 @@ jQuery.offset = { options.using.call( elem, props ); } else { + if ( typeof props.top === "number" ) { + props.top += "px"; + } + if ( typeof props.left === "number" ) { + props.left += "px"; + } curElem.css( props ); } } @@ -10374,7 +10625,7 @@ jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( // Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347 // getComputedStyle returns percent when specified for top/left/bottom/right; // rather than make the css module depend on the offset module, just check for it here -jQuery.each( [ "top", "left" ], function( i, prop ) { +jQuery.each( [ "top", "left" ], function( _i, prop ) { jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition, function( elem, computed ) { if ( computed ) { @@ -10437,25 +10688,19 @@ jQuery.each( { Height: "height", Width: "width" }, function( name, type ) { } ); -jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " + - "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + - "change select submit keydown keypress keyup contextmenu" ).split( " " ), - function( i, name ) { - - // Handle event binding - jQuery.fn[ name ] = function( data, fn ) { - return arguments.length > 0 ? - this.on( name, null, data, fn ) : - this.trigger( name ); +jQuery.each( [ + "ajaxStart", + "ajaxStop", + "ajaxComplete", + "ajaxError", + "ajaxSuccess", + "ajaxSend" +], function( _i, type ) { + jQuery.fn[ type ] = function( fn ) { + return this.on( type, fn ); }; } ); -jQuery.fn.extend( { - hover: function( fnOver, fnOut ) { - return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); - } -} ); - @@ -10477,9 +10722,33 @@ jQuery.fn.extend( { return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn ); + }, + + hover: function( fnOver, fnOut ) { + return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); } } ); +jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " + + "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + + "change select submit keydown keypress keyup contextmenu" ).split( " " ), + function( _i, name ) { + + // Handle event binding + jQuery.fn[ name ] = function( data, fn ) { + return arguments.length > 0 ? + this.on( name, null, data, fn ) : + this.trigger( name ); + }; + } ); + + + + +// Support: Android <=4.0 only +// Make sure we trim BOM and NBSP +var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g; + // Bind a function to a context, optionally partially applying any // arguments. // jQuery.proxy is deprecated to promote standards (specifically Function#bind) @@ -10542,6 +10811,11 @@ jQuery.isNumeric = function( obj ) { !isNaN( obj - parseFloat( obj ) ); }; +jQuery.trim = function( text ) { + return text == null ? + "" : + ( text + "" ).replace( rtrim, "" ); +}; @@ -10590,7 +10864,7 @@ jQuery.noConflict = function( deep ) { // Expose jQuery and $ identifiers, even in AMD // (#7102#comment:10, https://github.com/jquery/jquery/pull/557) // and CommonJS for browser emulators (#13566) -if ( !noGlobal ) { +if ( typeof noGlobal === "undefined" ) { window.jQuery = window.$ = jQuery; } diff --git a/dist/libs.min.js b/dist/libs.min.js index a0a6f3e..bbebbcd 100644 --- a/dist/libs.min.js +++ b/dist/libs.min.js @@ -1,5 +1,5 @@ -/*! uhr - v9.0.0-dev.0 - 2019-05-03 +/*! uhr - v9.0.0-dev.0 - 2021-02-24 * http://bärneruhr.ch/ -* Copyright (c) 2019 Manuel Friedli; Licensed GPL-3.0 */ +* Copyright (c) 2021 Manuel Friedli; Licensed GPL-3.0 */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(T,e){"use strict";function g(e){return null!=e&&e===e.window}var t=[],E=T.document,r=Object.getPrototypeOf,a=t.slice,v=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,m=n.hasOwnProperty,s=m.toString,l=s.call(Object),y={},x=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!x(e)&&!g(e)&&("array"===n||0===t||"number"==typeof t&&0>10|55296,1023&r|56320)}function i(){C()}var e,d,b,o,s,h,p,g,w,u,l,C,T,a,E,v,c,m,y,k="sizzle"+1*new Date,x=n.document,N=0,r=0,S=ue(),j=ue(),D=ue(),A=ue(),L=function(e,t){return e===t&&(l=!0),0},q={}.hasOwnProperty,t=[],_=t.pop,O=t.push,H=t.push,P=t.slice,R=function(e,t){for(var n=0,r=e.length;n+~]|"+I+")"+I+"*"),V=new RegExp(I+"|>"),G=new RegExp($),Q=new RegExp("^"+W+"$"),Y={ID:new RegExp("^#("+W+")"),CLASS:new RegExp("^\\.("+W+")"),TAG:new RegExp("^("+W+"|[*])"),ATTR:new RegExp("^"+F),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+I+"*(even|odd|(([+-]|)(\\d*)n|)"+I+"*(?:([+-]|)"+I+"*(\\d+)|))"+I+"*\\)|)","i"),bool:new RegExp("^(?:"+M+")$","i"),needsContext:new RegExp("^"+I+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+I+"*((?:-\\d)?\\d*)"+I+"*\\)|)(?=[^-]|$)","i")},J=/HTML$/i,K=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,ee=/^[^{]+\{\s*\[native \w/,te=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ne=/[+~]/,re=new RegExp("\\\\([\\da-f]{1,6}"+I+"?|("+I+")|.)","ig"),ie=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,oe=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},se=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=P.call(x.childNodes),x.childNodes),t[x.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){O.apply(e,P.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}function ae(t,e,n,r){var i,o,s,a,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:x)!==T&&C(e),e=e||T,E)){if(11!==p&&(u=te.exec(t)))if(i=u[1]){if(9===p){if(!(s=e.getElementById(i)))return n;if(s.id===i)return n.push(s),n}else if(f&&(s=f.getElementById(i))&&y(e,s)&&s.id===i)return n.push(s),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&V.test(t)){for((a=e.getAttribute("id"))?a=a.replace(ie,oe):e.setAttribute("id",a=k),o=(l=h(t)).length;o--;)l[o]="#"+a+" "+xe(l[o]);c=l.join(","),f=ne.test(t)&&me(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{a===k&&e.removeAttribute("id")}}}return g(t.replace(z,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){for(var n=e.split("|"),r=n.length;r--;)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&se(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(s){return le(function(o){return o=+o,le(function(e,t){for(var n,r=s([],e.length,o),i=r.length;i--;)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function me(e){return e&&void 0!==e.getElementsByTagName&&e}for(e in d=ae.support={},s=ae.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!J.test(t||n&&n.nodeName||"HTML")},C=ae.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:x;return r!==T&&9===r.nodeType&&r.documentElement&&(a=(T=r).documentElement,E=!s(T),x!==T&&(n=T.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",i,!1):n.attachEvent&&n.attachEvent("onunload",i)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(T.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=ee.test(T.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!T.getElementsByName||!T.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(re,f);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if(void 0!==t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(re,f);return function(e){var t=void 0!==e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if(void 0!==t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];for(i=t.getElementsByName(e),r=0;o=i[r++];)if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"!==e)return o;for(;n=o[i++];)1===n.nodeType&&r.push(n);return r},b.find.CLASS=d.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&E)return t.getElementsByClassName(e)},c=[],v=[],(d.qsa=ee.test(T.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+I+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+I+"*(?:value|"+M+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=T.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+I+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=ee.test(m=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=m.call(e,"*"),m.call(e,"[s!='']:x"),c.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),c=c.length&&new RegExp(c.join("|")),t=ee.test(a.compareDocumentPosition),y=t||ee.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},L=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===T||e.ownerDocument===x&&y(x,e)?-1:t===T||t.ownerDocument===x&&y(x,t)?1:u?R(u,e)-R(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,s=[e],a=[t];if(!i||!o)return e===T?-1:t===T?1:i?-1:o?1:u?R(u,e)-R(u,t):0;if(i===o)return pe(e,t);for(n=e;n=n.parentNode;)s.unshift(n);for(n=t;n=n.parentNode;)a.unshift(n);for(;s[r]===a[r];)r++;return r?pe(s[r],a[r]):s[r]===x?-1:a[r]===x?1:0}),T},ae.matches=function(e,t){return ae(e,null,null,t)},ae.matchesSelector=function(e,t){if((e.ownerDocument||e)!==T&&C(e),d.matchesSelector&&E&&!A[t+" "]&&(!c||!c.test(t))&&(!v||!v.test(t)))try{var n=m.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(re,f),e[3]=(e[3]||e[4]||e[5]||"").replace(re,f),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||ae.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&ae.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return Y.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&G.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(re,f).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=S[e+" "];return t||(t=new RegExp("(^|"+I+")"+e+"("+I+"|$)"))&&S(e,function(e){return t.test("string"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=ae.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function A(e,n,r){return x(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||L,"string"!=typeof e)return e.nodeType?(this[0]=e,this.length=1,this):x(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this);if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)x(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}).prototype=k.fn,L=k(E);var _=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function H(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||"*"):void 0!==e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&j(e,t)?k.merge([e],n):n}function me(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!ye.cloneNode(!0).lastChild.defaultValue;var Ce=/^key/,Te=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Ne(){return!1}function Se(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function je(e,t,n,r,i,o){var s,a;if("object"==typeof t){for(a in"string"!=typeof n&&(r=r||n,n=void 0),t)je(e,a,n,r,t[a],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Ne;else if(!i)return e;return 1===o&&(s=i,(i=function(e){return k().off(e),s.apply(this,arguments)}).guid=s.guid||(s.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Y.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Y.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=a.call(arguments),Y.set(this,i,r),t=o(this,i),this[i](),r!==(n=Y.get(this,i))||t?Y.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Y.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Y.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,s,a,u,l,c,f,p,d,h,g,v=Y.get(t);if(v)for(n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(s=v.handle)||(s=v.handle=function(e){return void 0!==k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(P)||[""]).length;l--;)d=g=(a=Ee.exec(e[l])||[])[1],h=(a[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,s)||t.addEventListener&&t.addEventListener(d,s)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)},remove:function(e,t,n,r,i){var o,s,a,u,l,c,f,p,d,h,g,v=Y.hasData(e)&&Y.get(e);if(v&&(u=v.events)){for(l=(t=(t||"").match(P)||[""]).length;l--;)if(d=g=(a=Ee.exec(t[l])||[])[1],h=(a[2]||"").split(".").sort(),d){for(f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],a=a[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),s=o=p.length;o--;)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||a&&!a.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));s&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Y.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,s,a=k.event.fix(e),u=new Array(arguments.length),l=(Y.get(this,"events")||{})[a.type]||[],c=k.event.special[a.type]||{};for(u[0]=a,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,Le=/\s*$/g;function Oe(e,t){return j(e,"table")&&j(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function He(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Pe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Re(e,t){var n,r,i,o,s,a,u,l;if(1===t.nodeType){if(Y.hasData(e)&&(o=Y.access(e),s=Y.set(t,o),l=o.events))for(i in delete s.handle,s.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,s,a,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(s=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var nn,rn=[],on=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=rn.pop()||k.expando+"_"+Ot++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,s=!1!==e.jsonp&&(on.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&on.test(e.data)&&"data");if(s||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=x(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,s?e[s]=e[s].replace(on,"$1"+r):!1!==e.jsonp&&(e.url+=(Ht.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=T[r],T[r]=function(){o=arguments},n.always(function(){void 0===i?k(T).removeProp(r):T[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,rn.push(r)),o&&x(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((nn=E.implementation.createHTMLDocument("").body).innerHTML="
",2===nn.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,s=this,a=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){s.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,s,a,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),a=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),i=("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(s=(r=c.position()).top,r.left):(s=parseFloat(o)||0,parseFloat(u)||0),x(t)&&(t=t.call(e,n,k.extend({},a))),null!=t.top&&(f.top=t.top-a.top+s),null!=t.left&&(f.left=t.left-a.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{for(t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position");)e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent;e&&"static"===k.css(e,"position");)e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return B(this,function(e,t,n){var r;if(g(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=Ze(y.pixelPosition,function(e,t){if(t)return t=Ke(e,n),Ve.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(s,a){k.each({padding:"inner"+s,content:a,"":"outer"+s},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return B(this,function(e,t,n){var r;return g(e)?0===o.indexOf("outer")?e["inner"+s]:e.document.documentElement["client"+s]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+s],r["scroll"+s],e.body["offset"+s],r["offset"+s],r["client"+s])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},a,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,t){t=c(t||this.defaultElement||this)[0],this.element=c(t),this.uuid=n++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=c(),this.hoverable=c(),this.focusable=c(),this.classesElementLookup={},t!==this&&(c.data(t,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===t&&this.destroy()}}),this.document=c(t.style?t.ownerDocument:t.document||t),this.window=c(this.document[0].defaultView||this.document[0].parentWindow)),this.options=c.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:c.noop,_create:c.noop,_init:c.noop,destroy:function(){var n=this;this._destroy(),c.each(this.classesElementLookup,function(e,t){n._removeClass(t,e)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:c.noop,widget:function(){return this.element},option:function(e,t){var n,r,i,o=e;if(0===arguments.length)return c.widget.extend({},this.options);if("string"==typeof e)if(o={},e=(n=e.split(".")).shift(),n.length){for(r=o[e]=c.widget.extend({},this.options[e]),i=0;i>10|55296,1023&n|56320))}function i(){C()}var e,d,b,o,s,h,p,g,w,u,l,C,T,a,E,v,c,m,y,k="sizzle"+1*new Date,x=n.document,S=0,r=0,N=ue(),A=ue(),j=ue(),D=ue(),q=function(e,t){return e===t&&(l=!0),0},L={}.hasOwnProperty,t=[],_=t.pop,O=t.push,H=t.push,P=t.slice,R=function(e,t){for(var n=0,r=e.length;n+~]|"+I+")"+I+"*"),V=new RegExp(I+"|>"),G=new RegExp($),Q=new RegExp("^"+W+"$"),Y={ID:new RegExp("^#("+W+")"),CLASS:new RegExp("^\\.("+W+")"),TAG:new RegExp("^("+W+"|[*])"),ATTR:new RegExp("^"+F),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+I+"*(even|odd|(([+-]|)(\\d*)n|)"+I+"*(?:([+-]|)"+I+"*(\\d+)|))"+I+"*\\)|)","i"),bool:new RegExp("^(?:"+M+")$","i"),needsContext:new RegExp("^"+I+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+I+"*((?:-\\d)?\\d*)"+I+"*\\)|)(?=[^-]|$)","i")},J=/HTML$/i,K=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,ee=/^[^{]+\{\s*\[native \w/,te=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ne=/[+~]/,re=new RegExp("\\\\[\\da-fA-F]{1,6}"+I+"?|\\\\([^\\r\\n\\f])","g"),ie=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,oe=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},se=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=P.call(x.childNodes),x.childNodes),t[x.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){O.apply(e,P.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}function ae(t,e,n,r){var i,o,s,a,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(C(e),e=e||T,E)){if(11!==p&&(u=te.exec(t)))if(i=u[1]){if(9===p){if(!(s=e.getElementById(i)))return n;if(s.id===i)return n.push(s),n}else if(f&&(s=f.getElementById(i))&&y(e,s)&&s.id===i)return n.push(s),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!D[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(V.test(t)||X.test(t))){for((f=ne.test(t)&&me(e.parentNode)||e)===e&&d.scope||((a=e.getAttribute("id"))?a=a.replace(ie,oe):e.setAttribute("id",a=k)),o=(l=h(t)).length;o--;)l[o]=(a?"#"+a:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){D(t,!0)}finally{a===k&&e.removeAttribute("id")}}}return g(t.replace(z,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){for(var n=e.split("|"),r=n.length;r--;)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&se(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(s){return le(function(o){return o=+o,le(function(e,t){for(var n,r=s([],e.length,o),i=r.length;i--;)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function me(e){return e&&void 0!==e.getElementsByTagName&&e}for(e in d=ae.support={},s=ae.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!J.test(t||n&&n.nodeName||"HTML")},C=ae.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:x;return r!=T&&9===r.nodeType&&r.documentElement&&(a=(T=r).documentElement,E=!s(T),x!=T&&(n=T.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",i,!1):n.attachEvent&&n.attachEvent("onunload",i)),d.scope=ce(function(e){return a.appendChild(e).appendChild(T.createElement("div")),void 0!==e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(T.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=ee.test(T.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!T.getElementsByName||!T.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(re,f);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if(void 0!==t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(re,f);return function(e){var t=void 0!==e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if(void 0!==t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];for(i=t.getElementsByName(e),r=0;o=i[r++];)if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"!==e)return o;for(;n=o[i++];)1===n.nodeType&&r.push(n);return r},b.find.CLASS=d.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&E)return t.getElementsByClassName(e)},c=[],v=[],(d.qsa=ee.test(T.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+I+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+I+"*(?:value|"+M+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),(t=T.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+I+"*name"+I+"*="+I+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=T.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+I+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=ee.test(m=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=m.call(e,"*"),m.call(e,"[s!='']:x"),c.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),c=c.length&&new RegExp(c.join("|")),t=ee.test(a.compareDocumentPosition),y=t||ee.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},q=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==T||e.ownerDocument==x&&y(x,e)?-1:t==T||t.ownerDocument==x&&y(x,t)?1:u?R(u,e)-R(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,s=[e],a=[t];if(!i||!o)return e==T?-1:t==T?1:i?-1:o?1:u?R(u,e)-R(u,t):0;if(i===o)return pe(e,t);for(n=e;n=n.parentNode;)s.unshift(n);for(n=t;n=n.parentNode;)a.unshift(n);for(;s[r]===a[r];)r++;return r?pe(s[r],a[r]):s[r]==x?-1:a[r]==x?1:0}),T},ae.matches=function(e,t){return ae(e,null,null,t)},ae.matchesSelector=function(e,t){if(C(e),d.matchesSelector&&E&&!D[t+" "]&&(!c||!c.test(t))&&(!v||!v.test(t)))try{var n=m.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){D(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(re,f),e[3]=(e[3]||e[4]||e[5]||"").replace(re,f),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||ae.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&ae.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return Y.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&G.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(re,f).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=N[e+" "];return t||(t=new RegExp("(^|"+I+")"+e+"("+I+"|$)"))&&N(e,function(e){return t.test("string"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=ae.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return x(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"!=typeof e)return e.nodeType?(this[0]=e,this.length=1,this):x(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this);if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),A.test(r[1])&&k.isPlainObject(t))for(r in t)x(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}).prototype=k.fn,D=k(E);var L=/^(?:parents|prev(?:Until|All))/,_={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||"*"):void 0!==e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&N(e,t)?k.merge([e],n):n}function me(e,t){for(var n=0,r=e.length;n",""]);var ye=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,s,a,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function qe(e,t){return N(e,"table")&&N(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function _e(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,s,a;if(1===t.nodeType){if(Q.hasData(e)&&(a=Q.get(e).events))for(i in Q.remove(t,"handle events"),a)for(n=0,r=a[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var tn,nn=[],rn=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=nn.pop()||k.expando+"_"+_t.guid++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,s=!1!==e.jsonp&&(rn.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&rn.test(e.data)&&"data");if(s||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=x(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,s?e[s]=e[s].replace(rn,"$1"+r):!1!==e.jsonp&&(e.url+=(Ot.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=T[r],T[r]=function(){o=arguments},n.always(function(){void 0===i?k(T).removeProp(r):T[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,nn.push(r)),o&&x(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((tn=E.implementation.createHTMLDocument("").body).innerHTML="
",2===tn.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=A.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,s=this,a=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){s.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,s,a,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),a=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),i=("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(s=(r=c.position()).top,r.left):(s=parseFloat(o)||0,parseFloat(u)||0),x(t)&&(t=t.call(e,n,k.extend({},a))),null!=t.top&&(f.top=t.top-a.top+s),null!=t.left&&(f.left=t.left-a.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{for(t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position");)e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent;e&&"static"===k.css(e,"position");)e=e.offsetParent;return e||re})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return $(this,function(e,t,n){var r;if(g(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=Ke(y.pixelPosition,function(e,t){if(t)return t=Je(e,n),Xe.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(s,a){k.each({padding:"inner"+s,content:a,"":"outer"+s},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return g(e)?0===o.indexOf("outer")?e["inner"+s]:e.document.documentElement["client"+s]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+s],r["scroll"+s],e.body["offset"+s],r["offset"+s],r["client"+s])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},a,n?e:void 0,n)}})}),k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,t){t=c(t||this.defaultElement||this)[0],this.element=c(t),this.uuid=n++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=c(),this.hoverable=c(),this.focusable=c(),this.classesElementLookup={},t!==this&&(c.data(t,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===t&&this.destroy()}}),this.document=c(t.style?t.ownerDocument:t.document||t),this.window=c(this.document[0].defaultView||this.document[0].parentWindow)),this.options=c.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:c.noop,_create:c.noop,_init:c.noop,destroy:function(){var n=this;this._destroy(),c.each(this.classesElementLookup,function(e,t){n._removeClass(t,e)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:c.noop,widget:function(){return this.element},option:function(e,t){var n,r,i,o=e;if(0===arguments.length)return c.widget.extend({},this.options);if("string"==typeof e)if(o={},e=(n=e.split(".")).shift(),n.length){for(r=o[e]=c.widget.extend({},this.options[e]),i=0;i= 2.1.2 < 3" } }, - "indent-string": { - "version": "2.1.0", - "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "dev": true, - "requires": { - "repeating": "^2.0.0" - } - }, "inflight": { "version": "1.0.6", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/inflight/-/inflight-1.0.6.tgz", @@ -2136,9 +2117,9 @@ "dev": true }, "ini": { - "version": "1.3.5", - "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/ini/-/ini-1.3.5.tgz", - "integrity": "sha1-7uJfVtscnsYIXgwid4CD9Zar+Sc=", + "version": "1.3.8", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/ini/-/ini-1.3.8.tgz", + "integrity": "sha1-op2kJbSIBvNHZ6Tvzjlyaa8oQyw=", "dev": true }, "interpret": { @@ -2189,12 +2170,6 @@ } } }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, "is-buffer": { "version": "1.1.6", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/is-buffer/-/is-buffer-1.1.6.tgz", @@ -2374,12 +2349,6 @@ "unc-path-regex": "^0.1.2" } }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, "is-windows": { "version": "1.0.2", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/is-windows/-/is-windows-1.0.2.tgz", @@ -2417,9 +2386,9 @@ "dev": true }, "jquery": { - "version": "3.4.1", - "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/jquery/-/jquery-3.4.1.tgz", - "integrity": "sha1-cU8fjZ3eS9+lV2S6N+8hRjDYDvI=" + "version": "3.5.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/jquery/-/jquery-3.5.0.tgz", + "integrity": "sha1-mYC5fZ5BlGEcNlMOfcRqWNc0D8k=" }, "jquery-ui": { "version": "1.12.1", @@ -2550,9 +2519,9 @@ "dev": true }, "kind-of": { - "version": "6.0.2", - "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=", + "version": "6.0.3", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha1-B8BQNKbDSfoG4k+jWqdttFgM5N0=", "dev": true }, "klaw": { @@ -2621,19 +2590,6 @@ "resolve-pkg": "^1.0.0" } }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, "locate-path": { "version": "2.0.0", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/locate-path/-/locate-path-2.0.0.tgz", @@ -2653,9 +2609,9 @@ } }, "lodash": { - "version": "4.17.11", - "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha1-s56mIp72B+zYniyN8SU2iRysm40=", + "version": "4.17.21", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha1-Z5WRxWTDv/quhFTPCz3zcMPWkRw=", "dev": true }, "lodash.isfinite": { @@ -2700,16 +2656,6 @@ } } }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", - "dev": true, - "requires": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" - } - }, "make-iterator": { "version": "1.0.1", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/make-iterator/-/make-iterator-1.0.1.tgz", @@ -2734,12 +2680,6 @@ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", "dev": true }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "dev": true - }, "map-visit": { "version": "1.0.0", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/map-visit/-/map-visit-1.0.0.tgz", @@ -2799,24 +2739,6 @@ "p-is-promise": "^2.0.0" } }, - "meow": { - "version": "3.7.0", - "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", - "dev": true, - "requires": { - "camelcase-keys": "^2.0.0", - "decamelize": "^1.1.2", - "loud-rejection": "^1.0.0", - "map-obj": "^1.0.1", - "minimist": "^1.1.3", - "normalize-package-data": "^2.3.4", - "object-assign": "^4.0.1", - "read-pkg-up": "^1.0.1", - "redent": "^1.0.0", - "trim-newlines": "^1.0.0" - } - }, "micromatch": { "version": "3.1.10", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/micromatch/-/micromatch-3.1.10.tgz", @@ -2874,16 +2796,10 @@ "brace-expansion": "^1.1.7" } }, - "minimist": { - "version": "1.2.0", - "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, "mixin-deep": { - "version": "1.3.1", - "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha1-pJ5yaNzhoNlpjkUybFYm3zVD0P4=", + "version": "1.3.2", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha1-ESC0PcNZp4Xc5ltVuC4lfM9HlWY=", "dev": true, "requires": { "for-in": "^1.0.2", @@ -3050,6 +2966,16 @@ "requires": { "has-flag": "^3.0.0" } + }, + "yargs-parser": { + "version": "13.0.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/yargs-parser/-/yargs-parser-13.0.0.tgz", + "integrity": "sha1-P8RPPnaovbHMNgLoYBCGAuXM3os=", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } } } }, @@ -3156,18 +3082,6 @@ "abbrev": "1" } }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha1-5m2xg4sgDB38IzIl0SyzZSDiNKg=", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, "npm-run-path": { "version": "2.0.2", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/npm-run-path/-/npm-run-path-2.0.2.tgz", @@ -3428,15 +3342,6 @@ "path-root": "^0.1.1" } }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } - }, "parse-ms": { "version": "1.0.1", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/parse-ms/-/parse-ms-1.0.1.tgz", @@ -3461,15 +3366,6 @@ "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", "dev": true }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -3503,17 +3399,6 @@ "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", "dev": true }, - "path-type": { - "version": "1.1.0", - "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, "pathval": { "version": "1.1.0", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/pathval/-/pathval-1.1.0.tgz", @@ -3557,12 +3442,6 @@ } } }, - "pify": { - "version": "2.3.0", - "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, "pinkie": { "version": "2.0.4", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/pinkie/-/pinkie-2.0.4.tgz", @@ -3703,9 +3582,9 @@ "dev": true }, "puppeteer": { - "version": "1.15.0", - "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/puppeteer/-/puppeteer-1.15.0.tgz", - "integrity": "sha1-FoD6wT5R9gkUMUmlt/qZ7sOSs08=", + "version": "1.20.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/puppeteer/-/puppeteer-1.20.0.tgz", + "integrity": "sha1-49JneG904dh88tFazFkXf0cbvjg=", "dev": true, "requires": { "debug": "^4.1.0", @@ -3719,24 +3598,24 @@ }, "dependencies": { "debug": { - "version": "4.1.1", - "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/debug/-/debug-4.1.1.tgz", - "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", + "version": "4.3.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/debug/-/debug-4.3.1.tgz", + "integrity": "sha1-8NIpxQXgxtjEmsVT0bE9wYP2su4=", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, "mime": { - "version": "2.4.2", - "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/mime/-/mime-2.4.2.tgz", - "integrity": "sha1-zlIppemf/DE6usgGtILBDnumrHg=", + "version": "2.5.2", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/mime/-/mime-2.5.2.tgz", + "integrity": "sha1-bj3GzCuVEGQ4MOXxnVy3U9pe6r4=", "dev": true }, "ms": { - "version": "2.1.1", - "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/ms/-/ms-2.1.1.tgz", - "integrity": "sha1-MKWGTrPrsKZvLr5tcnrwagnYbgo=", + "version": "2.1.2", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/ms/-/ms-2.1.2.tgz", + "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=", "dev": true }, "ws": { @@ -3786,27 +3665,6 @@ } } }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - } - }, "readable-stream": { "version": "2.3.6", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/readable-stream/-/readable-stream-2.3.6.tgz", @@ -3831,16 +3689,6 @@ "resolve": "^1.1.6" } }, - "redent": { - "version": "1.0.0", - "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/redent/-/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", - "dev": true, - "requires": { - "indent-string": "^2.1.0", - "strip-indent": "^1.0.1" - } - }, "regex-not": { "version": "1.0.2", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/regex-not/-/regex-not-1.0.2.tgz", @@ -3863,15 +3711,6 @@ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", "dev": true }, - "repeating": { - "version": "2.0.1", - "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true, - "requires": { - "is-finite": "^1.0.0" - } - }, "request": { "version": "2.88.0", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/request/-/request-2.88.0.tgz", @@ -4096,9 +3935,9 @@ "dev": true }, "set-value": { - "version": "2.0.0", - "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha1-ca5KiPD+77v1LR6mBPP7MV67YnQ=", + "version": "2.0.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha1-oY1AUw5vB95CKMfe/kInr4ytAFs=", "dev": true, "requires": { "extend-shallow": "^2.0.1", @@ -4289,38 +4128,6 @@ "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", "dev": true }, - "spdx-correct": { - "version": "3.1.0", - "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/spdx-correct/-/spdx-correct-3.1.0.tgz", - "integrity": "sha1-+4PlBERSaPFUsHTiGMh8ADzTHfQ=", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.2.0", - "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha1-LqRQrudPKom/uUUZwH/Nb0EyKXc=", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha1-meEZt6XaAOBUkcn6M4t5BII7QdA=", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.4", - "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz", - "integrity": "sha1-dezRqI3owYTvAV6vtRtbSL/RG7E=", - "dev": true - }, "split-string": { "version": "3.1.0", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/split-string/-/split-string-3.1.0.tgz", @@ -4456,30 +4263,12 @@ "ansi-regex": "^2.0.0" } }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } - }, "strip-eof": { "version": "1.0.0", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/strip-eof/-/strip-eof-1.0.0.tgz", "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", "dev": true }, - "strip-indent": { - "version": "1.0.1", - "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", - "dev": true, - "requires": { - "get-stdin": "^4.0.1" - } - }, "strip-json-comments": { "version": "1.0.4", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/strip-json-comments/-/strip-json-comments-1.0.4.tgz", @@ -4655,12 +4444,6 @@ } } }, - "trim-newlines": { - "version": "1.0.0", - "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", - "dev": true - }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -4729,38 +4512,15 @@ } }, "union-value": { - "version": "1.0.0", - "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "version": "1.0.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha1-C2/nuDWuzaYcbqTU8CwUIh4QmEc=", "dev": true, "requires": { "arr-union": "^3.1.0", "get-value": "^2.0.6", "is-extendable": "^0.1.1", - "set-value": "^0.4.3" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "set-value": { - "version": "0.4.3", - "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" - } - } + "set-value": "^2.0.1" } }, "unpipe": { @@ -4898,16 +4658,6 @@ "homedir-polyfill": "^1.0.1" } }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha1-/JH2uce6FchX9MssXe/uw51PQQo=", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, "verror": { "version": "1.10.0", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/verror/-/verror-1.10.0.tgz", @@ -5131,21 +4881,13 @@ } }, "yargs-parser": { - "version": "13.0.0", - "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/yargs-parser/-/yargs-parser-13.0.0.tgz", - "integrity": "sha1-P8RPPnaovbHMNgLoYBCGAuXM3os=", + "version": "13.1.2", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha1-Ew8JcC667vJlDVTObj5XBvek+zg=", "dev": true, "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" - }, - "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA=", - "dev": true - } } }, "yargs-unparser": { diff --git a/package.json b/package.json index 210103f..7e522aa 100644 --- a/package.json +++ b/package.json @@ -23,12 +23,13 @@ ], "license": "GPL-3.0", "dependencies": { - "jquery": "3.4.1", + "jquery": "^3.5.0", "jquery-ui": "1.12.1", "jquery.cookie": "1.4.1" }, "devDependencies": { - "grunt": "1.0.4", + "chai": "4.2.0", + "grunt": "^1.3.0", "grunt-cli": "1.3.2", "grunt-contrib-clean": "2.0.0", "grunt-contrib-concat": "1.0.1", @@ -42,9 +43,8 @@ "grunt-version": "1.3.0", "jshint-stylish": "2.2.1", "load-grunt-tasks": "4.0.0", - "phantomjs-prebuilt": "2.1.16", - "time-grunt": "2.0.0", "mocha": "6.1.4", - "chai": "4.2.0" + "phantomjs-prebuilt": "2.1.16", + "time-grunt": "2.0.0" } } From b6a368040c15e1665bdca9153d74dc6f8249f1cb Mon Sep 17 00:00:00 2001 From: Manuel Friedli Date: Wed, 24 Feb 2021 10:25:08 +0100 Subject: [PATCH 36/44] Don't call grunt directly, thus decoupling it from the build process. --- .drone.yml | 4 +--- package.json | 3 +++ 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.drone.yml b/.drone.yml index e3b8ad5..c7bc3dc 100644 --- a/.drone.yml +++ b/.drone.yml @@ -8,7 +8,5 @@ steps: - npm install - name: build image: node:12 - environment: - NPMPATH: "node_modules/.bin" commands: - - $NPMPATH/grunt + - npm run build diff --git a/package.json b/package.json index 7e522aa..ead9e9e 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,9 @@ "jquery-plugin", "qlocktwo" ], + "scripts": { + "build": "grunt" + }, "homepage": "http://bärneruhr.ch/", "author": { "name": "Manuel Friedli", From 621468b27f090502d58bf9b2751231f94561c347 Mon Sep 17 00:00:00 2001 From: Manuel Friedli Date: Wed, 24 Feb 2021 13:19:33 +0100 Subject: [PATCH 37/44] Build JS assets with rollup instead of grunt. --- .drone.yml | 1 + Gruntfile.js | 83 +- README.md | 8 +- dist/jquery.uhr.base.js | 37 +- dist/jquery.uhr.base.min.js | 6 +- dist/jquery.uhr.baselangs.js | 330 ++++--- dist/jquery.uhr.baselangs.min.js | 6 +- dist/jquery.uhr.complete.js | 370 ++++--- dist/jquery.uhr.complete.min.js | 6 +- dist/jquery.uhr.langs.js | 355 ++++--- dist/jquery.uhr.langs.min.js | 6 +- dist/jquery.uhr.main.js | 1567 +++++++++++++++--------------- dist/jquery.uhr.main.min.js | 6 +- dist/libs.js | 16 +- dist/libs.min.js | 47 +- package-lock.json | 611 +++++++++++- package.json | 109 ++- rollup.config-app.js | 23 + rollup.config-base.js | 25 + rollup.config-baselangs.js | 25 + rollup.config-complete.js | 25 + rollup.config-langs.js | 25 + rollup.config-libs.js | 23 + src/main-app.js | 1 + src/main-base.js | 2 + src/main-baselangs.js | 9 + src/main-complete.js | 11 + src/main-langs.js | 10 + src/main-libs.js | 4 + src/uhr-dk.js | 6 +- 30 files changed, 2395 insertions(+), 1358 deletions(-) create mode 100644 rollup.config-app.js create mode 100644 rollup.config-base.js create mode 100644 rollup.config-baselangs.js create mode 100644 rollup.config-complete.js create mode 100644 rollup.config-langs.js create mode 100644 rollup.config-libs.js create mode 100644 src/main-app.js create mode 100644 src/main-base.js create mode 100644 src/main-baselangs.js create mode 100644 src/main-complete.js create mode 100644 src/main-langs.js create mode 100644 src/main-libs.js diff --git a/.drone.yml b/.drone.yml index c7bc3dc..ca87879 100644 --- a/.drone.yml +++ b/.drone.yml @@ -1,4 +1,5 @@ kind: pipeline +type: docker name: default steps: diff --git a/Gruntfile.js b/Gruntfile.js index ae194d4..153b7ee 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -10,78 +10,11 @@ module.exports = function (grunt) { // Metadata. pkg: grunt.file.readJSON('package.json'), banner: '/*! <%= pkg.name %> - v<%= pkg.version %> - ' + - '<%= grunt.template.today("yyyy-mm-dd") %>\n' + - '<%= pkg.homepage ? "* " + pkg.homepage + "\\n" : "" %>' + - '* Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author.name %>;' + - ' Licensed <%= pkg.licenses[0].type %> */\n', + '<%= grunt.template.today("yyyy-mm-dd") %>\n' + + '<%= pkg.homepage ? "* " + pkg.homepage + "\\n" : "" %>' + + '* Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author.name %>;' + + ' Licensed <%= pkg.licenses[0].type %> */\n', // Task configuration. - clean: { - files: ['dist'] - }, - concat: { - options: { - banner: '<%= banner %>', - stripBanners: true - }, - libs: { - src: [ - 'node_modules/jquery/dist/jquery.js', - 'node_modules/jquery-ui/ui/widget.js', - 'node_modules/jquery.cookie/jquery.cookie.js' - ], - dest: 'dist/libs.js' - }, - dist: { - src: ['src/uhr.js', 'src/uhr-*.js'], - dest: 'dist/jquery.<%= pkg.name %>.complete.js' - }, - main: { - src: ['src/uhr.js'], - dest: 'dist/jquery.<%= pkg.name %>.main.js' - }, - base: { - src: ['src/uhr.js', 'src/uhr-de_CH.js'], - dest: 'dist/jquery.<%= pkg.name %>.base.js' - }, - baselangs: { - src: ['src/uhr-*.js'], - exclude: ['src/uhr-de_CH.js'], - dest: 'dist/jquery.<%= pkg.name %>.baselangs.js' - }, - langs: { - src: ['src/uhr-*.js'], - dest: 'dist/jquery.<%= pkg.name %>.langs.js' - } - }, - uglify: { - options: { - banner: '<%= banner %>' - }, - libs: { - src: '<%= concat.libs.dest %>', - dest: 'dist/libs.min.js' - }, - dist: { - src: '<%= concat.dist.dest %>', - dest: 'dist/jquery.<%= pkg.name %>.complete.min.js' - }, - main: { - src: '<%= concat.main.dest %>', - dest: 'dist/jquery.<%= pkg.name %>.main.min.js' - }, - base: { - src: '<%= concat.base.dest %>', - dest: 'dist/jquery.<%= pkg.name %>.base.min.js' - }, - baselangs: { - src: '<%= concat.baselangs.dest %>', - dest: 'dist/jquery.<%= pkg.name %>.baselangs.min.js' - }, - langs: { - src: '<%= concat.langs.dest %>', - dest: 'dist/jquery.<%= pkg.name %>.langs.min.js' - } - }, cssmin: { allcss: { files: [{ @@ -114,7 +47,7 @@ module.exports = function (grunt) { options: { jshintrc: '.jshintrc' }, - src: ['src/**/*.js'] + src: ['src/**/uhr-*.js'] }, test: { options: { @@ -152,9 +85,6 @@ module.exports = function (grunt) { }, src: ['VERSION'] }, - bower: { - src: ['bower.json'] - }, manifest: { options: { prefix: 'Version\\s+' @@ -169,8 +99,7 @@ module.exports = function (grunt) { grunt.loadNpmTasks('grunt-version'); // Default task. - grunt.registerTask('default', ['jshint', 'clean', 'version', 'concat', 'connect', 'mocha_phantomjs', 'uglify', 'cssmin']); - grunt.registerTask('buildonly', ['clean', 'version', 'concat', 'uglify', 'cssmin']); + grunt.registerTask('default', ['cssmin']); grunt.registerTask('server', function () { grunt.log.warn('The `server` task has been deprecated. Use `grunt serve` to start a server.'); grunt.task.run(['serve']); diff --git a/README.md b/README.md index 22eb1a9..d518c88 100644 --- a/README.md +++ b/README.md @@ -22,10 +22,10 @@ Beim Einbinden muss das attribut `data-class` angegeben werden, welches die CSS- * Binde nach den CSS-Dateien (wichtig!) folgende Javascript-Dateien im HTML-Dokument ein: * dist/libs.min.js: Dies enthält die minifizierten Versionen von jQuery, jQuery-UI (mit den Komponenten `code` und `widget`) und jQuery-Cookie. Alternativ kannst Du auch direkt die benötigten Bibliotheken einbinden: - * jquery (getestet mit Version 3.4.1) - * jquery-ui (getestet mit Version 1.12.1) - * Von jquery-ui wird die Komponente 'widget' benötigt. - * jquery-cookie (getestet mit Version 1.4.1) + * jquery (getestet mit Version 3.4.1) + * jquery-ui (getestet mit Version 1.12.1) + * Von jquery-ui wird die Komponente 'widget' benötigt. + * jquery-cookie (getestet mit Version 1.4.1) Je nach dem, in welchen Sprachen du die Uhr verwenden willst, noch eine der folgenden Dateien: * dist/jquery.uhr.complete.min.js: Enthält die Hauptdatei sowie alle unterstützten Sprachdateien * dist/jquery.uhr.base.min.js: Enthält die Hauptdatei sowie Bärndütsch (de_CH) diff --git a/dist/jquery.uhr.base.js b/dist/jquery.uhr.base.js index c8bc8e4..0356c71 100644 --- a/dist/jquery.uhr.base.js +++ b/dist/jquery.uhr.base.js @@ -1,8 +1,20 @@ -/*! uhr - v9.0.0-dev.0 - 2021-02-24 -* http://bärneruhr.ch/ -* Copyright (c) 2021 Manuel Friedli; Licensed GPL-3.0 */ +'use strict'; + +/* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ (function ($) { - 'use strict'; var uhrGlobals = { "id": 0, "languages": [], @@ -804,8 +816,21 @@ $.fritteli.uhr.register = uhrGlobals.registerLanguage; })(jQuery); +/* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ (function($) { - 'use strict'; // hilfsvariablen var es_isch = {1: [1, 2, 4, 5, 6, 7]}; var ab = {4: [1, 2]}; @@ -886,4 +911,4 @@ }; // Das Layout bei der Uhr unter dem Code "de_CH" registrieren. $.fritteli.uhr.register('de_CH', layout); -}(jQuery)); \ No newline at end of file +}(jQuery)); diff --git a/dist/jquery.uhr.base.min.js b/dist/jquery.uhr.base.min.js index da394ee..0025b56 100644 --- a/dist/jquery.uhr.base.min.js +++ b/dist/jquery.uhr.base.min.js @@ -1,5 +1 @@ -/*! uhr - v9.0.0-dev.0 - 2021-02-24 -* http://bärneruhr.ch/ -* Copyright (c) 2021 Manuel Friedli; Licensed GPL-3.0 */ - -!function(u){"use strict";var i,e,n,l={id:0,languages:[],themes:[],registerLanguage:function(i,e){l.languages.some(function(t){return i===t.code&&(console.error("Error: Language code '"+i+"' cannot be registered for language '"+e.language+"' because it is already registered for language '"+t.language+"'!"),!0)})||(e.code=i,l.languages.push(e))}};u("link[rel=stylesheet]").each(function(t,i){var e=u(i),n=e.attr("data-class");if(void 0!==n){var s=e.attr("data-name");void 0===s&&(s=n),l.themes.push({styleClass:n,name:s})}}),0===l.themes.length&&l.themes.push({});var s;function y(t,i){var e=t,n=i||"";this.addStyle=function(t){""===n?n=t:n+=" "+t},this.toString=function(){return''+e+""}}function o(t){var i={3:[2,3,4],4:[1,5],5:[1,4,5],6:[1,3,5],7:[1,2,5],8:[1,5],9:[2,3,4]},e={3:[8,9,10],4:[7,11],5:[7,10,11],6:[7,9,11],7:[7,8,11],8:[7,11],9:[8,9,10]},n={3:[3],4:[2,3],5:[3],6:[3],7:[3],8:[3],9:[2,3,4]},s={3:[9],4:[8,9],5:[9],6:[9],7:[9],8:[9],9:[8,9,10]},o={3:[2,3,4],4:[1,5],5:[5],6:[4],7:[3],8:[2],9:[1,2,3,4,5]},h={3:[8,9,10],4:[7,11],5:[11],6:[10],7:[9],8:[8],9:[7,8,9,10,11]},a={3:[1,2,3,4,5],4:[4],5:[3],6:[4],7:[5],8:[1,5],9:[2,3,4]},r={3:[7,8,9,10,11],4:[10],5:[9],6:[10],7:[11],8:[7,11],9:[8,9,10]},c={3:[4],4:[3,4],5:[2,4],6:[1,4],7:[1,2,3,4,5],8:[4],9:[4]},d={3:[10],4:[9,10],5:[8,10],6:[7,10],7:[7,8,9,10,11],8:[10],9:[10]},u={3:[1,2,3,4,5],4:[1],5:[1,2,3,4],6:[5],7:[5],8:[1,5],9:[2,3,4]},l={3:[7,8,9,10,11],4:[7],5:[7,8,9,10],6:[11],7:[11],8:[7,11],9:[8,9,10]},f={3:[9,10],4:[8],5:[7],6:[7,8,9,10],7:[7,11],8:[7,11],9:[8,9,10]},p={3:[7,8,9,10,11],4:[11],5:[10],6:[9],7:[8],8:[8],9:[8]},g={3:[8,9,10],4:[7,11],5:[7,11],6:[8,9,10],7:[7,11],8:[7,11],9:[8,9,10]},m={3:[8,9,10],4:[7,11],5:[7,11],6:[8,9,10,11],7:[11],8:[10],9:[8,9]},v={0:[i,e],1:[i,s],2:[i,h],3:[i,r],4:[i,d],5:[i,l],6:[i,f],7:[i,p],8:[i,g],9:[i,m],10:[n,e],11:[n,s],12:[n,h],13:[n,r],14:[n,d],15:[n,l],16:[n,f],17:[n,p],18:[n,g],19:[n,m],20:[o,e],21:[o,s],22:[o,h],23:[o,r],24:[o,d],25:[o,l],26:[o,f],27:[o,p],28:[o,g],29:[o,m],30:[a,e],31:[a,s],32:[a,h],33:[a,r],34:[a,d],35:[a,l],36:[a,f],37:[a,p],38:[a,g],39:[a,m],40:[c,e],41:[c,s],42:[c,h],43:[c,r],44:[c,d],45:[c,l],46:[c,f],47:[c,p],48:[c,g],49:[c,m],50:[u,e],51:[u,s],52:[u,h],53:[u,r],54:[u,d],55:[u,l],56:[u,f],57:[u,p],58:[u,g],59:[u,m]};function b(e,n,t){null!=t&&Object.keys(t).forEach(function(i){t[i].forEach(function(t){e[i-1][t-1].addStyle(n)})})}function w(i,e,t){null!=t&&(Array.isArray(t)?t.forEach(function(t){b(i,e,t)}):b(i,e,t))}function k(n,s,o){null!=o&&Object.keys(o).forEach(function(t){var i=t.split(","),e=o[t];i.forEach(function(t){w(n,s+t,e)})})}this.parse=function(){var s=[];return t.letters.forEach(function(t){for(var i=[],e=0;e")}),"function"==typeof t&&t(),s.fadeIn("fast")})}}function f(t){this.options.mode=t,this.currentMinute=-1,n.bind(this)(),i.bind(this)("uhr-mode",t)}function p(t){var i=this.element;i.css("width",t);var e=i.width();i.width(e),i.height(e),i.css("font-size",e/40+"px")}var a,r;a=function(){var t=this.element;if(t.addClass("uhr"),t.empty(),t.append(''),t.append(''),t.append(''),t.append(''),t.append('
'),t.append('
'),p.bind(this)(this.options.width),this.options.controls){var i=u('
'),e=u('
');i.append(e);var n=u('
');n.append(''),n.append(''),e.append(n);var s=u('
');if(s.append(''),s.append(''),e.append(s),1');l.languages.forEach(function(t){o.append('")}),e.append(o)}if(1');l.themes.forEach(function(t){h.append('")}),e.append(h)}var a=u('');a.on("click",function(){u("#uhr-controlpanel"+this.id).hide("fast")}.bind(this)),e.append(a),t.after(i),i.hide();var r=u('');r.on("click",function(){(function(){u("#uhr-controlpanel"+this.id).toggle("fast")}).bind(this)()}.bind(this)),t.after(r)}},r=function(){var t=u("#uhr-onoffswitch-checkbox"+this.id);t.on("click",function(){this.toggle()}.bind(this));var i=u.cookie("uhr-status"+this.id);void 0!==i&&!this.options.force||(i=this.options.status),t.prop("checked","on"===i),"on"===i?this.start():this.stop();var e=u("#uhr-modeswitch-checkbox"+this.id);e.on("click",function(){"seconds"===this.options.mode?f.bind(this)("normal"):f.bind(this)("seconds")}.bind(this));var n=u.cookie("uhr-mode"+this.id);void 0!==n&&!this.options.force||(n=this.options.mode),e.prop("checked","seconds"!==n),"seconds"===n?f.bind(this)("seconds"):f.bind(this)("normal");var s=u("#uhr-languagechooser"+this.id);s.on("change",function(){var t=u("#uhr-languagechooser"+this.id).val();this.language(t)}.bind(this));var o=u.cookie("uhr-language"+this.id);void 0!==o&&!this.options.force||(o=this.options.language);var h,a=l.languages.some(function(t){return o===t.code});a||(h=0'+e+""}}function a(t){var i={3:[2,3,4],4:[1,5],5:[1,4,5],6:[1,3,5],7:[1,2,5],8:[1,5],9:[2,3,4]},e={3:[8,9,10],4:[7,11],5:[7,10,11],6:[7,9,11],7:[7,8,11],8:[7,11],9:[8,9,10]},n={3:[3],4:[2,3],5:[3],6:[3],7:[3],8:[3],9:[2,3,4]},s={3:[9],4:[8,9],5:[9],6:[9],7:[9],8:[9],9:[8,9,10]},o={3:[2,3,4],4:[1,5],5:[5],6:[4],7:[3],8:[2],9:[1,2,3,4,5]},a={3:[8,9,10],4:[7,11],5:[11],6:[10],7:[9],8:[8],9:[7,8,9,10,11]},r={3:[1,2,3,4,5],4:[4],5:[3],6:[4],7:[5],8:[1,5],9:[2,3,4]},c={3:[7,8,9,10,11],4:[10],5:[9],6:[10],7:[11],8:[7,11],9:[8,9,10]},d={3:[4],4:[3,4],5:[2,4],6:[1,4],7:[1,2,3,4,5],8:[4],9:[4]},u={3:[10],4:[9,10],5:[8,10],6:[7,10],7:[7,8,9,10,11],8:[10],9:[10]},l={3:[1,2,3,4,5],4:[1],5:[1,2,3,4],6:[5],7:[5],8:[1,5],9:[2,3,4]},f={3:[7,8,9,10,11],4:[7],5:[7,8,9,10],6:[11],7:[11],8:[7,11],9:[8,9,10]},p={3:[9,10],4:[8],5:[7],6:[7,8,9,10],7:[7,11],8:[7,11],9:[8,9,10]},g={3:[7,8,9,10,11],4:[11],5:[10],6:[9],7:[8],8:[8],9:[8]},m={3:[8,9,10],4:[7,11],5:[7,11],6:[8,9,10],7:[7,11],8:[7,11],9:[8,9,10]},v={3:[8,9,10],4:[7,11],5:[7,11],6:[8,9,10,11],7:[11],8:[10],9:[8,9]},b={0:[i,e],1:[i,s],2:[i,a],3:[i,c],4:[i,u],5:[i,f],6:[i,p],7:[i,g],8:[i,m],9:[i,v],10:[n,e],11:[n,s],12:[n,a],13:[n,c],14:[n,u],15:[n,f],16:[n,p],17:[n,g],18:[n,m],19:[n,v],20:[o,e],21:[o,s],22:[o,a],23:[o,c],24:[o,u],25:[o,f],26:[o,p],27:[o,g],28:[o,m],29:[o,v],30:[r,e],31:[r,s],32:[r,a],33:[r,c],34:[r,u],35:[r,f],36:[r,p],37:[r,g],38:[r,m],39:[r,v],40:[d,e],41:[d,s],42:[d,a],43:[d,c],44:[d,u],45:[d,f],46:[d,p],47:[d,g],48:[d,m],49:[d,v],50:[l,e],51:[l,s],52:[l,a],53:[l,c],54:[l,u],55:[l,f],56:[l,p],57:[l,g],58:[l,m],59:[l,v]};function w(t,i,e){null!=e&&Object.keys(e).forEach((function(n){e[n].forEach((function(e){t[n-1][e-1].addStyle(i)}))}))}function k(t,i,e){null!=e&&(Array.isArray(e)?e.forEach((function(e){w(t,i,e)})):w(t,i,e))}function y(t,i,e){null!=e&&Object.keys(e).forEach((function(n){var s=n.split(","),o=e[n];s.forEach((function(e){k(t,i+e,o)}))}))}this.parse=function(){var i=[];return t.letters.forEach((function(t){for(var e=[],n=0;n")})),"function"==typeof e&&e(),i.fadeIn("fast")}))}}var c,d,u=function(t){this.options.mode=t,this.currentMinute=-1,n.bind(this)(),i.bind(this)("uhr-mode",t)},l=function(t){var i=this.element;i.css("width",t);var e=i.width();i.width(e),i.height(e),i.css("font-size",e/40+"px")},f=function(){t("#uhr-controlpanel"+this.id).toggle("fast")};c=function(){var i=this.element;if(i.addClass("uhr"),i.empty(),i.append(''),i.append(''),i.append(''),i.append(''),i.append('
'),i.append('
'),l.bind(this)(this.options.width),this.options.controls){var e=t('
'),n=t('
');e.append(n);var o=t('
');o.append(''),o.append(''),n.append(o);var h=t('
');if(h.append(''),h.append(''),n.append(h),s.languages.length>1){var a=t('');s.languages.forEach((function(t){a.append('")})),n.append(a)}if(s.themes.length>1){var r=t('');s.themes.forEach((function(t){r.append('")})),n.append(r)}var c=t('');c.on("click",function(){t("#uhr-controlpanel"+this.id).hide("fast")}.bind(this)),n.append(c),i.after(e),e.hide();var d=t('');d.on("click",function(){f.bind(this)()}.bind(this)),i.after(d)}},d=function(){var i=t("#uhr-onoffswitch-checkbox"+this.id);i.on("click",function(){this.toggle()}.bind(this));var e=t.cookie("uhr-status"+this.id);(void 0===e||this.options.force)&&(e=this.options.status),i.prop("checked","on"===e),"on"===e?this.start():this.stop();var n=t("#uhr-modeswitch-checkbox"+this.id);n.on("click",function(){"seconds"===this.options.mode?u.bind(this)("normal"):u.bind(this)("seconds")}.bind(this));var o=t.cookie("uhr-mode"+this.id);(void 0===o||this.options.force)&&(o=this.options.mode),n.prop("checked","seconds"!==o),"seconds"===o?u.bind(this)("seconds"):u.bind(this)("normal");var h=t("#uhr-languagechooser"+this.id);h.on("change",function(){var i=t("#uhr-languagechooser"+this.id).val();this.language(i)}.bind(this));var a=t.cookie("uhr-language"+this.id);(void 0===a||this.options.force)&&(a=this.options.language);var r,c=s.languages.some((function(t){return a===t.code}));c||(r=s.languages.length>0?s.languages[0].code:"",console.warn("Language '"+a+"' not found! Using fallback '"+r+"'"),a=r);h.val(a),this.options.language="",this.language(a);var d=t("#uhr-themechooser"+this.id);d.on("change",function(){var i=t("#uhr-themechooser"+this.id).val();this.theme(i)}.bind(this));var f=t.cookie("uhr-theme"+this.id);if((void 0===f||this.options.force)&&(f=this.options.theme),!(c=s.themes.some((function(t){return f===t.styleClass})))){var p=s.themes[0].styleClass;console.warn("Theme '"+f+"' not found! Using fallback '"+p+"'"),f=p}d.val(f),this.options.theme="",this.theme(f),this.options.autoresize&&t(window).on("resize",function(){var i=this.element.parent(),e=t(window),n=i.width(),s=i.height(),o=e.width(),h=e.height(),a=Math.min(n,s,o,h)+"px";l.bind(this)(a)}.bind(this))};var p,g,m,v,b,w,k;i=function(i,e){var n={};n=void 0!==this.options.cookiePath?{expires:365,path:this.options.cookiePath}:{expires:365},t.cookie(i+this.id,e,n)},e=function(){return null!==this.timer},n=function(){if(e.bind(this)()){var t=this.options.time;if(!o.bind(this)().hasOwnProperty("seconds")&&"seconds"!==this.options.mode){if(t.getMinutes()===this.currentMinute)return;this.currentMinute=t.getMinutes()}p.bind(this)(t)}else g.bind(this)(),this.currentMinute=-1},p=function(t){var i=v.bind(this)(t),e=b.bind(this)(t),n=k.bind(this)(t),s=w.bind(this)(t);if(g.bind(this)(),"seconds"===this.options.mode)m.bind(this)("second"+i);else{m.bind(this)("on");for(var o=1;o<=e;o++)m.bind(this)("dot"+o);m.bind(this)("minute"+s),m.bind(this)("hour"+n)}},m=function(t){this.element.find(".item."+t).addClass("active")},g=function(){this.element.find(".item").removeClass("active")},v=function(t){return"function"==typeof o.bind(this)().getSeconds?o.bind(this)().getSeconds(t):t.getSeconds()},b=function(t){return"function"==typeof o.bind(this)().getDotMinute?o.bind(this)().getDotMinute(t):t.getMinutes()%5},w=function(t){return"function"==typeof o.bind(this)().getCoarseMinute?o.bind(this)().getCoarseMinute(t):t.getMinutes()},k=function(t){if("function"==typeof o.bind(this)().getHour)return o.bind(this)().getHour(t);var i=t.getHours();return t.getMinutes()>=25?(i+1)%24:i},o=function(){var t=s.languages.filter((function(t){return t.code===this.options.language}),this);return t.length>0?t[0]:{}},t.widget("fritteli.uhr",{options:{width:"100%",status:"on",language:"de_CH",theme:s.themes[0].styleClass,force:!1,controls:!0,cookiePath:void 0,autoresize:!0,mode:"normal"},start:function(){e.bind(this)()||(this.timer=window.setInterval(function(){this.options.time=new Date,n.bind(this)()}.bind(this),1e3),n.bind(this)(),i.bind(this)("uhr-status","on"))},stop:function(){e.bind(this)()&&(window.clearInterval(this.timer),this.timer=null,n.bind(this)(),i.bind(this)("uhr-status","off"))},toggle:function(){e.bind(this)()?this.stop():this.start()},language:function(t){t!==this.options.language&&(this.options.language=t,new r(o.bind(this)(),this.element.find(".letterarea")).render.bind(this)(function(){this.currentMinute=-1,n.bind(this)()}.bind(this)),i.bind(this)("uhr-language",t),n.bind(this)())},theme:function(e){e!==this.options.theme&&(this.element.removeClass(this.options.theme).addClass(e),t("#uhr-onoffswitch"+this.id).removeClass(this.options.theme).addClass(e),this.options.theme=e,i.bind(this)("uhr-theme",e))},time:function(t){this.currentMinute=-1,null===t?this.options.time=new Date:(null!==this.timer&&window.clearInterval(this.timer),this.options.time=t),n.bind(this)()},mode:u,width:l,_create:function(){this.id=s.id++,this.timer=null,this.currentMinute=-1;var t,i=this.options.time;void 0===this.options.time&&(this.options.time=new Date),void 0!==(t=window.location.hash)&&"string"==typeof t&&"#"===t.charAt(0)&&(t=t.substring(1),(t=decodeURIComponent(t)).split("&").forEach(function(t){var i=t.split("="),e=i[0],n=i[1];switch(e){case"l":case"language":this.options.language=n,this.options.force=!0;break;case"t":case"theme":this.options.theme=n,this.options.force=!0;break;case"m":case"mode":this.options.mode=n,this.options.force=!0;break;case"s":case"status":this.options.status=n,this.options.force=!0}}.bind(this))),c.bind(this)(),d.bind(this)(),void 0!==i&&this.time(i)},_destroy:function(){this.timer=null,t(this.element).removeAttr("style").removeAttr("class").empty(),t("#uhr-configlink"+this.id).remove(),t("#uhr-controlpanel"+this.id).remove()}}),t.fritteli.uhr.register=s.registerLanguage}(jQuery),a={version:2,language:"Bärndütsch",letters:["ESKISCHAFÜF","VIERTUBFZÄÄ","ZWÄNZGSIVOR","ABOHAUBIEGE","EISZWÖISDRÜ","VIERIFÜFIQT","SÄCHSISIBNI","ACHTINÜNIEL","ZÄNIERBEUFI","ZWÖUFINAUHR"],permanent:{1:[1,2,4,5,6,7]},minutes:{"5,6,7,8,9":[n={1:[9,10,11]},t={4:[1,2]}],"10,11,12,13,14":[s={2:[9,10,11]},t],"15,16,17,18,19":[o={2:[1,2,3,4,5,6]},t],"20,21,22,23,24":[h={3:[1,2,3,4,5,6]},t],"25,26,27,28,29":[n,i={3:[9,10,11]},e={4:[4,5,6,7,8]}],"30,31,32,33,34":e,"35,36,37,38,39":[n,t,e],"40,41,42,43,44":[h,i],"45,46,47,48,49":[o,i],"50,51,52,53,54":[s,i],"55,56,57,58,59":[n,i]},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]}}},jQuery.fritteli.uhr.register("de_CH",a); diff --git a/dist/jquery.uhr.baselangs.js b/dist/jquery.uhr.baselangs.js index 968a3f6..10d70de 100644 --- a/dist/jquery.uhr.baselangs.js +++ b/dist/jquery.uhr.baselangs.js @@ -1,149 +1,20 @@ -/*! uhr - v9.0.0-dev.0 - 2021-02-24 -* http://bärneruhr.ch/ -* Copyright (c) 2021 Manuel Friedli; Licensed GPL-3.0 */ +'use strict'; + +/* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ (function($) { - 'use strict'; - var es_isch = {1: [1, 2, 4, 5, 6, 7]}; - var genau = {3: [7, 8, 9, 10, 11]}; - var ab = {4: [4, 5]}; - var vor = {4: [1, 2, 3]}; - var haubi = {4: [7, 8, 9, 10, 11]}; - var fuef = {1: [9, 10, 11]}; - var zae = {2: [9, 10, 11]}; - var viertu = {2: [1, 2, 3, 4, 5, 6]}; - var zwaenzg = {3: [1, 2, 3, 4, 5, 6]}; - var layout = { - "version": 2, - "language": 'Bärndütsch (genau)', - "letters": [ - 'ESKISCHAFÜF', - 'VIERTUBFZÄÄ', - 'ZWÄNZGGENAU', - 'VORABOHAUBI', - 'EISZWÖISDRÜ', - 'VIERIFÜFIQT', - 'SÄCHSISIBNI', - 'ACHTINÜNIEL', - 'ZÄNIERBEUFI', - 'ZWÖUFINAUHR' - ], - "permanent": es_isch, - "minutes": { - "0": genau, - "5,6,7,8,9": [fuef, ab], - "10,11,12,13,14": [zae, ab], - "15,16,17,18,19": [viertu, ab], - "20,21,22,23,24": [zwaenzg, ab], - "25,26,27,28,29": [fuef, vor, haubi], - "30,31,32,33,34": haubi, - "35,36,37,38,39": [fuef, ab, haubi], - "40,41,42,43,44": [zwaenzg, vor], - "45,46,47,48,49": [viertu, vor], - "50,51,52,53,54": [zae, vor], - "55,56,57,58,59": [fuef, vor] - }, - "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]} - } - }; - $.fritteli.uhr.register('de_CH_genau', layout); -}(jQuery)); -(function($) { - 'use strict'; -// hilfsvariablen - var es_isch = {1: [1, 2, 4, 5, 6, 7]}; - var ab = {4: [1, 2]}; - var vor = {3: [9, 10, 11]}; - var haubi = {4: [4, 5, 6, 7, 8]}; - var fuef = {1: [9, 10, 11]}; - var zae = {2: [9, 10, 11]}; - var viertu = {2: [1, 2, 3, 4, 5, 6]}; - var zwaenzg = {3: [1, 2, 3, 4, 5, 6]}; - var layout = { - // version: zur Zeit immer 2 (Pflichtattribut) - "version": 2, - // Sprechender Name der Sprache - "language": 'Bärndütsch', - // Buchstabenfeld als Array von Strings. - "letters": [ - 'ESKISCHAFÜF', - 'VIERTUBFZÄÄ', - 'ZWÄNZGSIVOR', - 'ABOHAUBIEGE', - 'EISZWÖISDRÜ', - 'VIERIFÜFIQT', - 'SÄCHSISIBNI', - 'ACHTINÜNIEL', - 'ZÄNIERBEUFI', - 'ZWÖUFINAUHR' - ], - // Permanent aktive Buchstaben. , vgl. ausführliche Beschreibung bei "minutes". - "permanent": es_isch, - /* - * Minuten: Objekt im folgenden Format: - * { - * : , - * ... - * } - * : String von Komma-separierten Minutenwerten, zu welchem die in angegebenen Buchstaben aktiv sein sollen - * : [ , ...] | - * : { : [ , ... ] } - * : Die Zeile, in welcher die Buchstaben liegen; von oben gezählt, oben ist 1. - * : Die Spalte, in der ein einzelner Buchstabe liegt; von links gezählt, links ist 1. - * Beispiel: - * "minutes": { - * "0,1": {1: [6, 7, 9]}, - * "5": [ {3: [1, 2]}, {4: [10, 11]} ] - * } - * Erklärung: - * Bei Minuten 0 und 1 sind die Buchstaben 6, 7 und 9 der ersten Zeile aktiv. - * Bei Minute 5 sind die Buchstaben 1 und 2 der Zeile 3 sowie die Buchstaben 10 und 11 der Zeile 4 aktiv. - */ - "minutes": { - "5,6,7,8,9": [fuef, ab], - "10,11,12,13,14": [zae, ab], - "15,16,17,18,19": [viertu, ab], - "20,21,22,23,24": [zwaenzg, ab], - "25,26,27,28,29": [fuef, vor, haubi], - "30,31,32,33,34": haubi, - "35,36,37,38,39": [fuef, ab, haubi], - "40,41,42,43,44": [zwaenzg, vor], - "45,46,47,48,49": [viertu, vor], - "50,51,52,53,54": [zae, vor], - "55,56,57,58,59": [fuef, vor] - }, - // Die Stunden; gleiches Format wie bei den Minuten - "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]} - } - }; -// Das Layout bei der Uhr unter dem Code "de_CH" registrieren. - $.fritteli.uhr.register('de_CH', layout); -}(jQuery)); -(function($) { - 'use strict'; var es_ist = {1: [1, 2, 4, 5, 6]}; var uhr = {10: [9, 10, 11]}; var nach = {4: [8, 9, 10, 11]}; @@ -202,6 +73,79 @@ }; $.fritteli.uhr.register('de', layout); }(jQuery)); + +/* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ +(function($) { + var es_isch = {1: [1, 2, 4, 5, 6, 7]}; + var genau = {3: [7, 8, 9, 10, 11]}; + var ab = {4: [4, 5]}; + var vor = {4: [1, 2, 3]}; + var haubi = {4: [7, 8, 9, 10, 11]}; + var fuef = {1: [9, 10, 11]}; + var zae = {2: [9, 10, 11]}; + var viertu = {2: [1, 2, 3, 4, 5, 6]}; + var zwaenzg = {3: [1, 2, 3, 4, 5, 6]}; + var layout = { + "version": 2, + "language": 'Bärndütsch (genau)', + "letters": [ + 'ESKISCHAFÜF', + 'VIERTUBFZÄÄ', + 'ZWÄNZGGENAU', + 'VORABOHAUBI', + 'EISZWÖISDRÜ', + 'VIERIFÜFIQT', + 'SÄCHSISIBNI', + 'ACHTINÜNIEL', + 'ZÄNIERBEUFI', + 'ZWÖUFINAUHR' + ], + "permanent": es_isch, + "minutes": { + "0": genau, + "5,6,7,8,9": [fuef, ab], + "10,11,12,13,14": [zae, ab], + "15,16,17,18,19": [viertu, ab], + "20,21,22,23,24": [zwaenzg, ab], + "25,26,27,28,29": [fuef, vor, haubi], + "30,31,32,33,34": haubi, + "35,36,37,38,39": [fuef, ab, haubi], + "40,41,42,43,44": [zwaenzg, vor], + "45,46,47,48,49": [viertu, vor], + "50,51,52,53,54": [zae, vor], + "55,56,57,58,59": [fuef, vor] + }, + "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]} + } + }; + $.fritteli.uhr.register('de_CH_genau', layout); +}(jQuery)); + /* This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -217,7 +161,6 @@ along with this program. If not, see . */ (function($) { - 'use strict'; var klokken_er = {1: [1, 2, 3, 4, 5, 6, 7, 9, 10]}; var minutter = {4: [4, 5, 6, 7, 8, 9, 10, 11]}; @@ -282,8 +225,22 @@ }; $.fritteli.uhr.register('dk', layout); }(jQuery)); + +/* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ (function($) { - 'use strict'; var it_is = {1: [1, 2, 4, 5]}; var half = {4: [1, 2, 3, 4]}; var to = {4: [10, 11]}; @@ -349,8 +306,22 @@ }; $.fritteli.uhr.register('en', layout); }(jQuery)); + +/* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ (function($) { - 'use strict'; var es_la = {1: [1, 2, 6, 7]}; var son_las = {1: [2, 3, 4, 6, 7, 8]}; var y = {7: [6]}; @@ -416,8 +387,21 @@ $.fritteli.uhr.register('es', layout); }(jQuery)); +/* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ (function($) { - 'use strict'; var il_est = {1: [1, 2, 4, 5, 6]}; var et = {8: [1, 2]}; var moins = {7: [1, 2, 3, 4, 5]}; @@ -517,8 +501,22 @@ }; $.fritteli.uhr.register('fr', layout); }(jQuery)); + +/* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ (function($) { - 'use strict'; var sono_le = {1: [1, 2, 3, 4, 6, 7]}; var e_l = {2: [1, 3, 4]}; var e = {8: [1]}; @@ -583,8 +581,22 @@ }; $.fritteli.uhr.register('it', layout); }(jQuery)); + +/* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ (function($) { - 'use strict'; var het_is = {1: [1, 2, 3, 5, 6]}; var over1 = {3: [1, 2, 3, 4]}; var voor1 = {2: [8, 9, 10, 11]}; @@ -650,8 +662,22 @@ }; $.fritteli.uhr.register('nl', layout); }(jQuery)); + +/* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ (function ($) { - 'use strict'; var e_ = {1: [1]}; var sao = {1: [2, 3, 4]}; var e1 = {7: [8]}; diff --git a/dist/jquery.uhr.baselangs.min.js b/dist/jquery.uhr.baselangs.min.js index c837928..448074e 100644 --- a/dist/jquery.uhr.baselangs.min.js +++ b/dist/jquery.uhr.baselangs.min.js @@ -1,5 +1 @@ -/*! uhr - v9.0.0-dev.0 - 2021-02-24 -* http://bärneruhr.ch/ -* Copyright (c) 2021 Manuel Friedli; Licensed GPL-3.0 */ - -!function(e){"use strict";var E={4:[4,5]},r={4:[1,2,3]},t={4:[7,8,9,10,11]},I={1:[9,10,11]},u={2:[9,10,11]},n={2:[1,2,3,4,5,6]},s={3:[1,2,3,4,5,6]},i={version:2,language:"Bärndütsch (genau)",letters:["ESKISCHAFÜF","VIERTUBFZÄÄ","ZWÄNZGGENAU","VORABOHAUBI","EISZWÖISDRÜ","VIERIFÜFIQT","SÄCHSISIBNI","ACHTINÜNIEL","ZÄNIERBEUFI","ZWÖUFINAUHR"],permanent:{1:[1,2,4,5,6,7]},minutes:{0:{3:[7,8,9,10,11]},"5,6,7,8,9":[I,E],"10,11,12,13,14":[u,E],"15,16,17,18,19":[n,E],"20,21,22,23,24":[s,E],"25,26,27,28,29":[I,r,t],"30,31,32,33,34":t,"35,36,37,38,39":[I,E,t],"40,41,42,43,44":[s,r],"45,46,47,48,49":[n,r],"50,51,52,53,54":[u,r],"55,56,57,58,59":[I,r]},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]}}};jQuery.fritteli.uhr.register("de_CH_genau",i)}(),function(e){"use strict";var E={4:[1,2]},r={3:[9,10,11]},t={4:[4,5,6,7,8]},I={1:[9,10,11]},u={2:[9,10,11]},n={2:[1,2,3,4,5,6]},s={3:[1,2,3,4,5,6]},i={version:2,language:"Bärndütsch",letters:["ESKISCHAFÜF","VIERTUBFZÄÄ","ZWÄNZGSIVOR","ABOHAUBIEGE","EISZWÖISDRÜ","VIERIFÜFIQT","SÄCHSISIBNI","ACHTINÜNIEL","ZÄNIERBEUFI","ZWÖUFINAUHR"],permanent:{1:[1,2,4,5,6,7]},minutes:{"5,6,7,8,9":[I,E],"10,11,12,13,14":[u,E],"15,16,17,18,19":[n,E],"20,21,22,23,24":[s,E],"25,26,27,28,29":[I,r,t],"30,31,32,33,34":t,"35,36,37,38,39":[I,E,t],"40,41,42,43,44":[s,r],"45,46,47,48,49":[n,r],"50,51,52,53,54":[u,r],"55,56,57,58,59":[I,r]},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]}}};jQuery.fritteli.uhr.register("de_CH",i)}(),function(e){"use strict";var E={4:[8,9,10,11]},r={4:[1,2,3]},t={5:[1,2,3,4]},I={1:[8,9,10,11]},u={2:[1,2,3,4]},n={2:[5,6,7,8,9,10,11]},s={version:2,language:"Deutsch",letters:["ESKISTAFÜNF","ZEHNZWANZIG","DREIVIERTEL","VORFUNKNACH","HALBAELFÜNF","EINSXAMZWEI","DREIPMJVIER","SECHSNLACHT","SIEBENZWÖLF","ZEHNEUNKUHR"],permanent:{1:[1,2,4,5,6]},minutes:{"0,1,2,3,4":{10:[9,10,11]},"5,6,7,8,9":[I,E],"10,11,12,13,14":[u,E],"15,16,17,18,19":[{3:[5,6,7,8,9,10,11]},E],"20,21,22,23,24":[n,E],"25,26,27,28,29":[I,r,t],"30,31,32,33,34":t,"35,36,37,38,39":[I,E,t],"40,41,42,43,44":[n,r],"45,46,47,48,49":{3:[1,2,3,4,5,6,7,8,9,10,11]},"50,51,52,53,54":[u,r],"55,56,57,58,59":[I,r]},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]}}};jQuery.fritteli.uhr.register("de",s)}(),function(e){"use strict";var E={4:[4,5,6,7,8,9,10,11]},r={5:[8]},t={5:[4,5,6,7]},I={2:[1,2,3]},u={4:[1,2]},n={3:[4,5,6,7,8]},s={2:[4,5,6,7]},i={6:[8,9,10,11]},N={version:2,language:"Dansk",letters:["KLOKKENVERO","FEMTYVESKLA","OJEKVARTVAT","TIAMINUTTER","VEMOVERILMF","MONALISHALV","ETTOTREFIRE","FEMSEKSRSYV","OTTERNIMETI","ELLEVEATOLV"],permanent:{1:[1,2,3,4,5,6,7,9,10]},minutes:{"5,6,7,8,9":[I,E,t],"10,11,12,13,14":[u,E,t],"15,16,17,18,19":[n,t],"20,21,22,23,24":[s,E,t],"25,26,27,28,29":[I,E,r,i],"30,31,32,33,34":[i],"35,36,37,38,39":[I,E,t,i],"40,41,42,43,44":[s,E,r],"45,46,47,48,49":[n,r],"50,51,52,53,54":[u,E,r],"55,56,57,58,59":[I,E,r]},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]}},getHour:function(e){var E=e.getHours();return 25<=e.getMinutes()?(E+1)%24:E}};jQuery.fritteli.uhr.register("dk",N)}(),function(e){"use strict";var E={4:[10,11]},r={5:[1,2,3,4]},t={3:[7,8,9,10]},I={4:[6,7,8]},u={2:[1,3,4,5,6,7,8,9]},n={3:[1,2,3,4,5,6]},s={3:[1,2,3,4,5,6,7,8,9,10]},i={version:2,language:"English",letters:["ITLISBFAMPM","ACQUARTERDC","TWENTYFIVEX","HALFBTENFTO","PASTERUNINE","ONESIXTHREE","FOURFIVETWO","EIGHTELEVEN","SEVENTWELVE","TENSO'CLOCK"],permanent:{1:[1,2,4,5]},minutes:{"0,1,2,3,4":{10:[5,6,7,8,9,10,11]},"5,6,7,8,9":[t,r],"10,11,12,13,14":[I,r],"15,16,17,18,19":[u,r],"20,21,22,23,24":[n,r],"25,26,27,28,29":[s,r],"30,31,32,33,34":[{4:[1,2,3,4]},r],"35,36,37,38,39":[s,E],"40,41,42,43,44":[n,E],"45,46,47,48,49":[u,E],"50,51,52,53,54":[I,E],"55,56,57,58,59":[t,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]}},getHour:function(e){var E=e.getHours();return 35<=e.getMinutes()?(E+1)%24:E}};jQuery.fritteli.uhr.register("en",i)}(),function(e){"use strict";var E={1:[2,3,4,6,7,8]},r={7:[6]},t={7:[7,8,9,10,11]},I={9:[7,8,9,10,11]},u={8:[8,9,10,11]},n={10:[6,7,8,9,10,11]},s={8:[2,3,4,5,6,7]},i={9:[1,2,3,4,5,6,7,8,9,10,11]},N={version:2,language:"Español",letters:["ESONELASUNA","DOSITRESORE","CUATROCINCO","SEISASIETEN","OCHONUEVEYO","LADIEZSONCE","DOCELYMENOS","OVEINTEDIEZ","VEINTICINCO","MEDIACUARTO"],permanent:[],minutes:{"5,6,7,8,9":[r,I],"10,11,12,13,14":[r,u],"15,16,17,18,19":[r,n],"20,21,22,23,24":[r,s],"25,26,27,28,29":[r,i],"30,31,32,33,34":[r,{10:[1,2,3,4,5]}],"35,36,37,38,39":[t,i],"40,41,42,43,44":[t,s],"45,46,47,48,49":[t,n],"50,51,52,53,54":[t,u],"55,56,57,58,59":[t,I]},hours:{"0,12":[E,{7:[1,2,3,4]}],"1,13":[{1:[1,2,6,7]},{1:[9,10,11]}],"2,14":[E,{2:[1,2,3]}],"3,15":[E,{2:[5,6,7,8]}],"4,16":[E,{3:[1,2,3,4,5,6]}],"5,17":[E,{3:[7,8,9,10,11]}],"6,18":[E,{4:[1,2,3,4]}],"7,19":[E,{4:[6,7,8,9,10]}],"8,20":[E,{5:[1,2,3,4]}],"9,21":[E,{5:[5,6,7,8,9]}],"10,22":[E,{6:[3,4,5,6]}],"11,23":[E,{6:[8,9,10,11]}]},getHour:function(e){var E=e.getHours();return 35<=e.getMinutes()?(E+1)%24:E}};jQuery.fritteli.uhr.register("es",N)}(),function(e){"use strict";var E={8:[1,2]},r={7:[1,2,3,4,5]},t={6:[6,7,8,9,10,11]},I={9:[7,8,9,10]},u={7:[9,10,11]},n={8:[4,5,6,7,8]},s={9:[1,2,3,4,5]},i={9:[1,2,3,4,5,6,7,8,9,10]},N={version:2,language:"Français",letters:["ILNESTODEUX","QUATRETROIS","NEUFUNESEPT","HUITSIXCINQ","MIDIXMINUIT","ONZERHEURES","MOINSOLEDIX","ETRQUARTPMD","VINGT-CINQU","ETSDEMIEPAM"],permanent:{1:[1,2,4,5,6]},minutes:{"5,6,7,8,9":I,"10,11,12,13,14":u,"15,16,17,18,19":[E,n],"20,21,22,23,24":s,"25,26,27,28,29":i,"30,31,32,33,34":[E,{10:[4,5,6,7,8]}],"35,36,37,38,39":[r,i],"40,41,42,43,44":[r,s],"45,46,47,48,49":[r,{7:[7,8]},n],"50,51,52,53,54":[r,u],"55,56,57,58,59":[r,I]},hours:{0:{5:[6,7,8,9,10,11]},"1,13":[{3:[5,6,7]},t],"2,14":[{1:[8,9,10,11]},t],"3,15":[{2:[7,8,9,10,11]},t],"4,16":[{2:[1,2,3,4,5,6]},t],"5,17":[{4:[8,9,10,11]},t],"6,18":[{4:[5,6,7]},t],"7,19":[{3:[8,9,10,11]},t],"8,20":[{4:[1,2,3,4]},t],"9,21":[{3:[1,2,3,4]},t],"10,22":[{5:[3,4,5]},t],"11,23":[{6:[1,2,3,4]},t],12:{5:[1,2,3,4]}},getHour:function(e){var E=e.getHours();return 35<=e.getMinutes()?(E+1)%24:E}};jQuery.fritteli.uhr.register("fr",N)}(),function(e){"use strict";var E={1:[1,2,3,4,6,7]},r={8:[1]},t={7:[8,9,10,11]},I={9:[6,7,8,9,10,11]},u={10:[1,2,3,4,5]},n={8:[3,4,6,7,8,9,10,11]},s={9:[1,2,3,4,5]},i={9:[1,2,3,4,5,6,7,8,9,10,11]},N={version:2,language:"Italiano",letters:["SONORLEBORE","ÈRL'UNASDUE","TREOTTONOVE","DIECIUNDICI","DODICISETTE","QUATTROCSEI","CINQUEAMENO","ECUNOQUARTO","VENTICINQUE","DIECIPMEZZA"],permanent:[],minutes:{"5,6,7,8,9":[r,I],"10,11,12,13,14":[r,u],"15,16,17,18,19":[r,n],"20,21,22,23,24":[r,s],"25,26,27,28,29":[r,i],"30,31,32,33,34":[r,{10:[7,8,9,10,11]}],"35,36,37,38,39":[t,i],"40,41,42,43,44":[t,s],"45,46,47,48,49":[t,n],"50,51,52,53,54":[t,u],"55,56,57,58,59":[t,I]},hours:{"0,12":[E,{5:[1,2,3,4,5,6]}],"1,13":[{2:[1,3,4]},{2:[5,6,7]}],"2,14":[E,{2:[9,10,11]}],"3,15":[E,{3:[1,2,3]}],"4,16":[E,{6:[1,2,3,4,5,6,7]}],"5,17":[E,{7:[1,2,3,4,5,6]}],"6,18":[E,{6:[9,10,11]}],"7,19":[E,{5:[7,8,9,10,11]}],"8,20":[E,{3:[4,5,6,7]}],"9,21":[E,{3:[8,9,10,11]}],"10,22":[E,{4:[1,2,3,4,5]}],"11,23":[E,{4:[6,7,8,9,10,11]}]},getHour:function(e){var E=e.getHours();return 35<=e.getMinutes()?(E+1)%24:E}};jQuery.fritteli.uhr.register("it",N)}(),function(e){"use strict";var E={3:[1,2,3,4]},r={2:[8,9,10,11]},t={4:[1,2,3,4]},I={1:[8,9,10,11]},u={2:[1,2,3,4]},n={3:[7,8,9,10,11]},s={version:2,language:"Nederlands",letters:["HETKISAVIJF","TIENBTZVOOR","OVERMEKWART","HALFSPWOVER","VOORTHGEENS","TWEEPVCDRIE","VIERVIJFZES","ZEVENONEGEN","ACHTTIENELF","TWAALFBFUUR"],permanent:{1:[1,2,3,5,6]},minutes:{"0,1,2,3,4":{10:[9,10,11]},"5,6,7,8,9":[I,E],"10,11,12,13,14":[u,E],"15,16,17,18,19":[n,{4:[8,9,10,11]}],"20,21,22,23,24":[u,r,t],"25,26,27,28,29":[I,r,t],"30,31,32,33,34":t,"35,36,37,38,39":[I,E,t],"40,41,42,43,44":[u,E,t],"45,46,47,48,49":[n,{5:[1,2,3,4]}],"50,51,52,53,54":[u,r],"55,56,57,58,59":[I,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]}},getHour:function(e){var E=e.getHours();return 20<=e.getMinutes()?(E+1)%24:E}};jQuery.fritteli.uhr.register("nl",s)}(),function(e){"use strict";var E={1:[1]},r={1:[2,3,4]},t={7:[8]},I={10:[5]},u={7:[7,8,9,10,11]},n={10:[7,8,9,10,11]},s={10:[1,2,3]},i={9:[1,2,4,5,6,7,8,9]},N={8:[1,2,3,4,5]},T={version:2,language:"Português",letters:["ÉSÃOUMATRÊS","MEIOLDIADEZ","DUASEISETEY","QUATROHNOVE","CINCOITONZE","ZMEIALNOITE","HORASYMENOS","VINTECAMEIA","UMVQUARTOPM","DEZOEYCINCO"],minutes:{"5,6,7,8,9":[t,n],"10,11,12,13,14":[t,s],"15,16,17,18,19":[t,i],"20,21,22,23,24":[t,N],"25,26,27,28,29":[t,N,I,n],"30,31,32,33,34":[t,{8:[8,9,10,11]}],"35,36,37,38,39":[u,N,I,n],"40,41,42,43,44":[u,N],"45,46,47,48,49":[u,i],"50,51,52,53,54":[u,s],"55,56,57,58,59":[u,n]},hours:{0:[E,{6:[2,3,4,5,7,8,9,10,11]}],12:[E,{2:[1,2,3,4,6,7,8]}],"1,13":[E,{1:[5,6,7]}],"2,14":[r,{3:[1,2,3,4]}],"3,15":[r,{1:[8,9,10,11]}],"4,16":[r,{4:[1,2,3,4,5,6]}],"5,17":[r,{5:[1,2,3,4,5]}],"6,18":[r,{3:[4,5,6,7]}],"7,19":[r,{3:[7,8,9,10]}],"8,20":[r,{5:[5,6,7,8]}],"9,21":[r,{4:[8,9,10,11]}],"10,22":[r,{2:[9,10,11]}],"11,23":[r,{5:[8,9,10,11]}]},getHour:function(e){var E=e.getHours();return 35<=e.getMinutes()?(E+1)%24:E}};jQuery.fritteli.uhr.register("pt",T)}(); \ No newline at end of file +"use strict";var e,E,r,t,n,u,I;I={version:2,language:"Deutsch",letters:["ESKISTAFÜNF","ZEHNZWANZIG","DREIVIERTEL","VORFUNKNACH","HALBAELFÜNF","EINSXAMZWEI","DREIPMJVIER","SECHSNLACHT","SIEBENZWÖLF","ZEHNEUNKUHR"],permanent:{1:[1,2,4,5,6]},minutes:{"0,1,2,3,4":{10:[9,10,11]},"5,6,7,8,9":[t={1:[8,9,10,11]},e={4:[8,9,10,11]}],"10,11,12,13,14":[n={2:[1,2,3,4]},e],"15,16,17,18,19":[{3:[5,6,7,8,9,10,11]},e],"20,21,22,23,24":[u={2:[5,6,7,8,9,10,11]},e],"25,26,27,28,29":[t,E={4:[1,2,3]},r={5:[1,2,3,4]}],"30,31,32,33,34":r,"35,36,37,38,39":[t,e,r],"40,41,42,43,44":[u,E],"45,46,47,48,49":{3:[1,2,3,4,5,6,7,8,9,10,11]},"50,51,52,53,54":[n,E],"55,56,57,58,59":[t,E]},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]}}},jQuery.fritteli.uhr.register("de",I),function(e){var E={4:[4,5]},r={4:[1,2,3]},t={4:[7,8,9,10,11]},n={1:[9,10,11]},u={2:[9,10,11]},I={2:[1,2,3,4,5,6]},i={3:[1,2,3,4,5,6]},N={version:2,language:"Bärndütsch (genau)",letters:["ESKISCHAFÜF","VIERTUBFZÄÄ","ZWÄNZGGENAU","VORABOHAUBI","EISZWÖISDRÜ","VIERIFÜFIQT","SÄCHSISIBNI","ACHTINÜNIEL","ZÄNIERBEUFI","ZWÖUFINAUHR"],permanent:{1:[1,2,4,5,6,7]},minutes:{0:{3:[7,8,9,10,11]},"5,6,7,8,9":[n,E],"10,11,12,13,14":[u,E],"15,16,17,18,19":[I,E],"20,21,22,23,24":[i,E],"25,26,27,28,29":[n,r,t],"30,31,32,33,34":t,"35,36,37,38,39":[n,E,t],"40,41,42,43,44":[i,r],"45,46,47,48,49":[I,r],"50,51,52,53,54":[u,r],"55,56,57,58,59":[n,r]},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]}}};jQuery.fritteli.uhr.register("de_CH_genau",N)}(),function(e){var E={4:[4,5,6,7,8,9,10,11]},r={5:[8]},t={5:[4,5,6,7]},n={2:[1,2,3]},u={4:[1,2]},I={3:[4,5,6,7,8]},i={2:[4,5,6,7]},N={6:[8,9,10,11]},T={version:2,language:"Dansk",letters:["KLOKKENVERO","FEMTYVESKLA","OJEKVARTVAT","TIAMINUTTER","VEMOVERILMF","MONALISHALV","ETTOTREFIRE","FEMSEKSRSYV","OTTERNIMETI","ELLEVEATOLV"],permanent:{1:[1,2,3,4,5,6,7,9,10]},minutes:{"5,6,7,8,9":[n,E,t],"10,11,12,13,14":[u,E,t],"15,16,17,18,19":[I,t],"20,21,22,23,24":[i,E,t],"25,26,27,28,29":[n,E,r,N],"30,31,32,33,34":[N],"35,36,37,38,39":[n,E,t,N],"40,41,42,43,44":[i,E,r],"45,46,47,48,49":[I,r],"50,51,52,53,54":[u,E,r],"55,56,57,58,59":[n,E,r]},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]}},getHour:function(e){var E=e.getHours();return e.getMinutes()>=25?(E+1)%24:E}};jQuery.fritteli.uhr.register("dk",T)}(),function(e){var E={4:[10,11]},r={5:[1,2,3,4]},t={3:[7,8,9,10]},n={4:[6,7,8]},u={2:[1,3,4,5,6,7,8,9]},I={3:[1,2,3,4,5,6]},i={3:[1,2,3,4,5,6,7,8,9,10]},N={version:2,language:"English",letters:["ITLISBFAMPM","ACQUARTERDC","TWENTYFIVEX","HALFBTENFTO","PASTERUNINE","ONESIXTHREE","FOURFIVETWO","EIGHTELEVEN","SEVENTWELVE","TENSO'CLOCK"],permanent:{1:[1,2,4,5]},minutes:{"0,1,2,3,4":{10:[5,6,7,8,9,10,11]},"5,6,7,8,9":[t,r],"10,11,12,13,14":[n,r],"15,16,17,18,19":[u,r],"20,21,22,23,24":[I,r],"25,26,27,28,29":[i,r],"30,31,32,33,34":[{4:[1,2,3,4]},r],"35,36,37,38,39":[i,E],"40,41,42,43,44":[I,E],"45,46,47,48,49":[u,E],"50,51,52,53,54":[n,E],"55,56,57,58,59":[t,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]}},getHour:function(e){var E=e.getHours();return e.getMinutes()>=35?(E+1)%24:E}};jQuery.fritteli.uhr.register("en",N)}(),function(e){var E={1:[2,3,4,6,7,8]},r={7:[6]},t={7:[7,8,9,10,11]},n={9:[7,8,9,10,11]},u={8:[8,9,10,11]},I={10:[6,7,8,9,10,11]},i={8:[2,3,4,5,6,7]},N={9:[1,2,3,4,5,6,7,8,9,10,11]},T={version:2,language:"Español",letters:["ESONELASUNA","DOSITRESORE","CUATROCINCO","SEISASIETEN","OCHONUEVEYO","LADIEZSONCE","DOCELYMENOS","OVEINTEDIEZ","VEINTICINCO","MEDIACUARTO"],permanent:[],minutes:{"5,6,7,8,9":[r,n],"10,11,12,13,14":[r,u],"15,16,17,18,19":[r,I],"20,21,22,23,24":[r,i],"25,26,27,28,29":[r,N],"30,31,32,33,34":[r,{10:[1,2,3,4,5]}],"35,36,37,38,39":[t,N],"40,41,42,43,44":[t,i],"45,46,47,48,49":[t,I],"50,51,52,53,54":[t,u],"55,56,57,58,59":[t,n]},hours:{"0,12":[E,{7:[1,2,3,4]}],"1,13":[{1:[1,2,6,7]},{1:[9,10,11]}],"2,14":[E,{2:[1,2,3]}],"3,15":[E,{2:[5,6,7,8]}],"4,16":[E,{3:[1,2,3,4,5,6]}],"5,17":[E,{3:[7,8,9,10,11]}],"6,18":[E,{4:[1,2,3,4]}],"7,19":[E,{4:[6,7,8,9,10]}],"8,20":[E,{5:[1,2,3,4]}],"9,21":[E,{5:[5,6,7,8,9]}],"10,22":[E,{6:[3,4,5,6]}],"11,23":[E,{6:[8,9,10,11]}]},getHour:function(e){var E=e.getHours();return e.getMinutes()>=35?(E+1)%24:E}};jQuery.fritteli.uhr.register("es",T)}(),function(e){var E={8:[1,2]},r={7:[1,2,3,4,5]},t={6:[6,7,8,9,10,11]},n={9:[7,8,9,10]},u={7:[9,10,11]},I={8:[4,5,6,7,8]},i={9:[1,2,3,4,5]},N={9:[1,2,3,4,5,6,7,8,9,10]},T={version:2,language:"Français",letters:["ILNESTODEUX","QUATRETROIS","NEUFUNESEPT","HUITSIXCINQ","MIDIXMINUIT","ONZERHEURES","MOINSOLEDIX","ETRQUARTPMD","VINGT-CINQU","ETSDEMIEPAM"],permanent:{1:[1,2,4,5,6]},minutes:{"5,6,7,8,9":n,"10,11,12,13,14":u,"15,16,17,18,19":[E,I],"20,21,22,23,24":i,"25,26,27,28,29":N,"30,31,32,33,34":[E,{10:[4,5,6,7,8]}],"35,36,37,38,39":[r,N],"40,41,42,43,44":[r,i],"45,46,47,48,49":[r,{7:[7,8]},I],"50,51,52,53,54":[r,u],"55,56,57,58,59":[r,n]},hours:{0:{5:[6,7,8,9,10,11]},"1,13":[{3:[5,6,7]},t],"2,14":[{1:[8,9,10,11]},t],"3,15":[{2:[7,8,9,10,11]},t],"4,16":[{2:[1,2,3,4,5,6]},t],"5,17":[{4:[8,9,10,11]},t],"6,18":[{4:[5,6,7]},t],"7,19":[{3:[8,9,10,11]},t],"8,20":[{4:[1,2,3,4]},t],"9,21":[{3:[1,2,3,4]},t],"10,22":[{5:[3,4,5]},t],"11,23":[{6:[1,2,3,4]},t],12:{5:[1,2,3,4]}},getHour:function(e){var E=e.getHours();return e.getMinutes()>=35?(E+1)%24:E}};jQuery.fritteli.uhr.register("fr",T)}(),function(e){var E={1:[1,2,3,4,6,7]},r={8:[1]},t={7:[8,9,10,11]},n={9:[6,7,8,9,10,11]},u={10:[1,2,3,4,5]},I={8:[3,4,6,7,8,9,10,11]},i={9:[1,2,3,4,5]},N={9:[1,2,3,4,5,6,7,8,9,10,11]},T={version:2,language:"Italiano",letters:["SONORLEBORE","ÈRL'UNASDUE","TREOTTONOVE","DIECIUNDICI","DODICISETTE","QUATTROCSEI","CINQUEAMENO","ECUNOQUARTO","VENTICINQUE","DIECIPMEZZA"],permanent:[],minutes:{"5,6,7,8,9":[r,n],"10,11,12,13,14":[r,u],"15,16,17,18,19":[r,I],"20,21,22,23,24":[r,i],"25,26,27,28,29":[r,N],"30,31,32,33,34":[r,{10:[7,8,9,10,11]}],"35,36,37,38,39":[t,N],"40,41,42,43,44":[t,i],"45,46,47,48,49":[t,I],"50,51,52,53,54":[t,u],"55,56,57,58,59":[t,n]},hours:{"0,12":[E,{5:[1,2,3,4,5,6]}],"1,13":[{2:[1,3,4]},{2:[5,6,7]}],"2,14":[E,{2:[9,10,11]}],"3,15":[E,{3:[1,2,3]}],"4,16":[E,{6:[1,2,3,4,5,6,7]}],"5,17":[E,{7:[1,2,3,4,5,6]}],"6,18":[E,{6:[9,10,11]}],"7,19":[E,{5:[7,8,9,10,11]}],"8,20":[E,{3:[4,5,6,7]}],"9,21":[E,{3:[8,9,10,11]}],"10,22":[E,{4:[1,2,3,4,5]}],"11,23":[E,{4:[6,7,8,9,10,11]}]},getHour:function(e){var E=e.getHours();return e.getMinutes()>=35?(E+1)%24:E}};jQuery.fritteli.uhr.register("it",T)}(),function(e){var E={3:[1,2,3,4]},r={2:[8,9,10,11]},t={4:[1,2,3,4]},n={1:[8,9,10,11]},u={2:[1,2,3,4]},I={3:[7,8,9,10,11]},i={version:2,language:"Nederlands",letters:["HETKISAVIJF","TIENBTZVOOR","OVERMEKWART","HALFSPWOVER","VOORTHGEENS","TWEEPVCDRIE","VIERVIJFZES","ZEVENONEGEN","ACHTTIENELF","TWAALFBFUUR"],permanent:{1:[1,2,3,5,6]},minutes:{"0,1,2,3,4":{10:[9,10,11]},"5,6,7,8,9":[n,E],"10,11,12,13,14":[u,E],"15,16,17,18,19":[I,{4:[8,9,10,11]}],"20,21,22,23,24":[u,r,t],"25,26,27,28,29":[n,r,t],"30,31,32,33,34":t,"35,36,37,38,39":[n,E,t],"40,41,42,43,44":[u,E,t],"45,46,47,48,49":[I,{5:[1,2,3,4]}],"50,51,52,53,54":[u,r],"55,56,57,58,59":[n,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]}},getHour:function(e){var E=e.getHours();return e.getMinutes()>=20?(E+1)%24:E}};jQuery.fritteli.uhr.register("nl",i)}(),function(e){var E={1:[1]},r={1:[2,3,4]},t={7:[8]},n={10:[5]},u={7:[7,8,9,10,11]},I={10:[7,8,9,10,11]},i={10:[1,2,3]},N={9:[1,2,4,5,6,7,8,9]},T={8:[1,2,3,4,5]},s={version:2,language:"Português",letters:["ÉSÃOUMATRÊS","MEIOLDIADEZ","DUASEISETEY","QUATROHNOVE","CINCOITONZE","ZMEIALNOITE","HORASYMENOS","VINTECAMEIA","UMVQUARTOPM","DEZOEYCINCO"],minutes:{"5,6,7,8,9":[t,I],"10,11,12,13,14":[t,i],"15,16,17,18,19":[t,N],"20,21,22,23,24":[t,T],"25,26,27,28,29":[t,T,n,I],"30,31,32,33,34":[t,{8:[8,9,10,11]}],"35,36,37,38,39":[u,T,n,I],"40,41,42,43,44":[u,T],"45,46,47,48,49":[u,N],"50,51,52,53,54":[u,i],"55,56,57,58,59":[u,I]},hours:{0:[E,{6:[2,3,4,5,7,8,9,10,11]}],12:[E,{2:[1,2,3,4,6,7,8]}],"1,13":[E,{1:[5,6,7]}],"2,14":[r,{3:[1,2,3,4]}],"3,15":[r,{1:[8,9,10,11]}],"4,16":[r,{4:[1,2,3,4,5,6]}],"5,17":[r,{5:[1,2,3,4,5]}],"6,18":[r,{3:[4,5,6,7]}],"7,19":[r,{3:[7,8,9,10]}],"8,20":[r,{5:[5,6,7,8]}],"9,21":[r,{4:[8,9,10,11]}],"10,22":[r,{2:[9,10,11]}],"11,23":[r,{5:[8,9,10,11]}]},getHour:function(e){var E=e.getHours();return e.getMinutes()>=35?(E+1)%24:E}};jQuery.fritteli.uhr.register("pt",s)}(); diff --git a/dist/jquery.uhr.complete.js b/dist/jquery.uhr.complete.js index f98d780..4f0d333 100644 --- a/dist/jquery.uhr.complete.js +++ b/dist/jquery.uhr.complete.js @@ -1,8 +1,20 @@ -/*! uhr - v9.0.0-dev.0 - 2021-02-24 -* http://bärneruhr.ch/ -* Copyright (c) 2021 Manuel Friedli; Licensed GPL-3.0 */ +'use strict'; + +/* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ (function ($) { - 'use strict'; var uhrGlobals = { "id": 0, "languages": [], @@ -804,66 +816,95 @@ $.fritteli.uhr.register = uhrGlobals.registerLanguage; })(jQuery); +/* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ (function($) { - 'use strict'; - var es_isch = {1: [1, 2, 4, 5, 6, 7]}; - var genau = {3: [7, 8, 9, 10, 11]}; - var ab = {4: [4, 5]}; + var es_ist = {1: [1, 2, 4, 5, 6]}; + var uhr = {10: [9, 10, 11]}; + var nach = {4: [8, 9, 10, 11]}; var vor = {4: [1, 2, 3]}; - var haubi = {4: [7, 8, 9, 10, 11]}; - var fuef = {1: [9, 10, 11]}; - var zae = {2: [9, 10, 11]}; - var viertu = {2: [1, 2, 3, 4, 5, 6]}; - var zwaenzg = {3: [1, 2, 3, 4, 5, 6]}; + var halb = {5: [1, 2, 3, 4]}; + var fuenf = {1: [8, 9, 10, 11]}; + var zehn = {2: [1, 2, 3, 4]}; + var viertel = {3: [5, 6, 7, 8, 9, 10, 11]}; + var zwanzig = {2: [5, 6, 7, 8, 9, 10, 11]}; + var dreiviertel = {3: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]}; + var layout = { "version": 2, - "language": 'Bärndütsch (genau)', + "language": 'Deutsch', "letters": [ - 'ESKISCHAFÜF', - 'VIERTUBFZÄÄ', - 'ZWÄNZGGENAU', - 'VORABOHAUBI', - 'EISZWÖISDRÜ', - 'VIERIFÜFIQT', - 'SÄCHSISIBNI', - 'ACHTINÜNIEL', - 'ZÄNIERBEUFI', - 'ZWÖUFINAUHR' + 'ESKISTAFÜNF', + 'ZEHNZWANZIG', + 'DREIVIERTEL', + 'VORFUNKNACH', + 'HALBAELFÜNF', + 'EINSXAMZWEI', + 'DREIPMJVIER', + 'SECHSNLACHT', + 'SIEBENZWÖLF', + 'ZEHNEUNKUHR' ], - "permanent": es_isch, + "permanent": es_ist, "minutes": { - "0": genau, - "5,6,7,8,9": [fuef, ab], - "10,11,12,13,14": [zae, ab], - "15,16,17,18,19": [viertu, ab], - "20,21,22,23,24": [zwaenzg, ab], - "25,26,27,28,29": [fuef, vor, haubi], - "30,31,32,33,34": haubi, - "35,36,37,38,39": [fuef, ab, haubi], - "40,41,42,43,44": [zwaenzg, vor], - "45,46,47,48,49": [viertu, vor], - "50,51,52,53,54": [zae, vor], - "55,56,57,58,59": [fuef, vor] + "0,1,2,3,4": uhr, + "5,6,7,8,9": [fuenf, nach], + "10,11,12,13,14": [zehn, nach], + "15,16,17,18,19": [viertel, nach], + "20,21,22,23,24": [zwanzig, nach], + "25,26,27,28,29": [fuenf, vor, halb], + "30,31,32,33,34": halb, + "35,36,37,38,39": [fuenf, nach, halb], + "40,41,42,43,44": [zwanzig, vor], + "45,46,47,48,49": dreiviertel, + "50,51,52,53,54": [zehn, vor], + "55,56,57,58,59": [fuenf, vor] }, "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]} + "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]} } }; - $.fritteli.uhr.register('de_CH_genau', layout); + $.fritteli.uhr.register('de', layout); }(jQuery)); + +/* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ (function($) { - 'use strict'; // hilfsvariablen var es_isch = {1: [1, 2, 4, 5, 6, 7]}; var ab = {4: [1, 2]}; @@ -945,66 +986,7 @@ // Das Layout bei der Uhr unter dem Code "de_CH" registrieren. $.fritteli.uhr.register('de_CH', layout); }(jQuery)); -(function($) { - 'use strict'; - var es_ist = {1: [1, 2, 4, 5, 6]}; - var uhr = {10: [9, 10, 11]}; - var nach = {4: [8, 9, 10, 11]}; - var vor = {4: [1, 2, 3]}; - var halb = {5: [1, 2, 3, 4]}; - var fuenf = {1: [8, 9, 10, 11]}; - var zehn = {2: [1, 2, 3, 4]}; - var viertel = {3: [5, 6, 7, 8, 9, 10, 11]}; - var zwanzig = {2: [5, 6, 7, 8, 9, 10, 11]}; - var dreiviertel = {3: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]}; - var layout = { - "version": 2, - "language": 'Deutsch', - "letters": [ - 'ESKISTAFÜNF', - 'ZEHNZWANZIG', - 'DREIVIERTEL', - 'VORFUNKNACH', - 'HALBAELFÜNF', - 'EINSXAMZWEI', - 'DREIPMJVIER', - 'SECHSNLACHT', - 'SIEBENZWÖLF', - 'ZEHNEUNKUHR' - ], - "permanent": es_ist, - "minutes": { - "0,1,2,3,4": uhr, - "5,6,7,8,9": [fuenf, nach], - "10,11,12,13,14": [zehn, nach], - "15,16,17,18,19": [viertel, nach], - "20,21,22,23,24": [zwanzig, nach], - "25,26,27,28,29": [fuenf, vor, halb], - "30,31,32,33,34": halb, - "35,36,37,38,39": [fuenf, nach, halb], - "40,41,42,43,44": [zwanzig, vor], - "45,46,47,48,49": dreiviertel, - "50,51,52,53,54": [zehn, vor], - "55,56,57,58,59": [fuenf, vor] - }, - "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]} - } - }; - $.fritteli.uhr.register('de', layout); -}(jQuery)); /* This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -1020,7 +1002,78 @@ along with this program. If not, see . */ (function($) { - 'use strict'; + var es_isch = {1: [1, 2, 4, 5, 6, 7]}; + var genau = {3: [7, 8, 9, 10, 11]}; + var ab = {4: [4, 5]}; + var vor = {4: [1, 2, 3]}; + var haubi = {4: [7, 8, 9, 10, 11]}; + var fuef = {1: [9, 10, 11]}; + var zae = {2: [9, 10, 11]}; + var viertu = {2: [1, 2, 3, 4, 5, 6]}; + var zwaenzg = {3: [1, 2, 3, 4, 5, 6]}; + var layout = { + "version": 2, + "language": 'Bärndütsch (genau)', + "letters": [ + 'ESKISCHAFÜF', + 'VIERTUBFZÄÄ', + 'ZWÄNZGGENAU', + 'VORABOHAUBI', + 'EISZWÖISDRÜ', + 'VIERIFÜFIQT', + 'SÄCHSISIBNI', + 'ACHTINÜNIEL', + 'ZÄNIERBEUFI', + 'ZWÖUFINAUHR' + ], + "permanent": es_isch, + "minutes": { + "0": genau, + "5,6,7,8,9": [fuef, ab], + "10,11,12,13,14": [zae, ab], + "15,16,17,18,19": [viertu, ab], + "20,21,22,23,24": [zwaenzg, ab], + "25,26,27,28,29": [fuef, vor, haubi], + "30,31,32,33,34": haubi, + "35,36,37,38,39": [fuef, ab, haubi], + "40,41,42,43,44": [zwaenzg, vor], + "45,46,47,48,49": [viertu, vor], + "50,51,52,53,54": [zae, vor], + "55,56,57,58,59": [fuef, vor] + }, + "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]} + } + }; + $.fritteli.uhr.register('de_CH_genau', layout); +}(jQuery)); + +/* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ +(function($) { var klokken_er = {1: [1, 2, 3, 4, 5, 6, 7, 9, 10]}; var minutter = {4: [4, 5, 6, 7, 8, 9, 10, 11]}; @@ -1085,8 +1138,22 @@ }; $.fritteli.uhr.register('dk', layout); }(jQuery)); + +/* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ (function($) { - 'use strict'; var it_is = {1: [1, 2, 4, 5]}; var half = {4: [1, 2, 3, 4]}; var to = {4: [10, 11]}; @@ -1152,8 +1219,22 @@ }; $.fritteli.uhr.register('en', layout); }(jQuery)); + +/* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ (function($) { - 'use strict'; var es_la = {1: [1, 2, 6, 7]}; var son_las = {1: [2, 3, 4, 6, 7, 8]}; var y = {7: [6]}; @@ -1219,8 +1300,21 @@ $.fritteli.uhr.register('es', layout); }(jQuery)); +/* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ (function($) { - 'use strict'; var il_est = {1: [1, 2, 4, 5, 6]}; var et = {8: [1, 2]}; var moins = {7: [1, 2, 3, 4, 5]}; @@ -1320,8 +1414,22 @@ }; $.fritteli.uhr.register('fr', layout); }(jQuery)); + +/* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ (function($) { - 'use strict'; var sono_le = {1: [1, 2, 3, 4, 6, 7]}; var e_l = {2: [1, 3, 4]}; var e = {8: [1]}; @@ -1386,8 +1494,22 @@ }; $.fritteli.uhr.register('it', layout); }(jQuery)); + +/* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ (function($) { - 'use strict'; var het_is = {1: [1, 2, 3, 5, 6]}; var over1 = {3: [1, 2, 3, 4]}; var voor1 = {2: [8, 9, 10, 11]}; @@ -1453,8 +1575,22 @@ }; $.fritteli.uhr.register('nl', layout); }(jQuery)); + +/* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ (function ($) { - 'use strict'; var e_ = {1: [1]}; var sao = {1: [2, 3, 4]}; var e1 = {7: [8]}; diff --git a/dist/jquery.uhr.complete.min.js b/dist/jquery.uhr.complete.min.js index ac92f1d..9cb751b 100644 --- a/dist/jquery.uhr.complete.min.js +++ b/dist/jquery.uhr.complete.min.js @@ -1,5 +1 @@ -/*! uhr - v9.0.0-dev.0 - 2021-02-24 -* http://bärneruhr.ch/ -* Copyright (c) 2021 Manuel Friedli; Licensed GPL-3.0 */ - -!function(d){"use strict";var e,i,n,l={id:0,languages:[],themes:[],registerLanguage:function(e,i){l.languages.some(function(t){return e===t.code&&(console.error("Error: Language code '"+e+"' cannot be registered for language '"+i.language+"' because it is already registered for language '"+t.language+"'!"),!0)})||(i.code=e,l.languages.push(i))}};d("link[rel=stylesheet]").each(function(t,e){var i=d(e),n=i.attr("data-class");if(void 0!==n){var s=i.attr("data-name");void 0===s&&(s=n),l.themes.push({styleClass:n,name:s})}}),0===l.themes.length&&l.themes.push({});var s;function N(t,e){var i=t,n=e||"";this.addStyle=function(t){""===n?n=t:n+=" "+t},this.toString=function(){return''+i+""}}function o(t){var e={3:[2,3,4],4:[1,5],5:[1,4,5],6:[1,3,5],7:[1,2,5],8:[1,5],9:[2,3,4]},i={3:[8,9,10],4:[7,11],5:[7,10,11],6:[7,9,11],7:[7,8,11],8:[7,11],9:[8,9,10]},n={3:[3],4:[2,3],5:[3],6:[3],7:[3],8:[3],9:[2,3,4]},s={3:[9],4:[8,9],5:[9],6:[9],7:[9],8:[9],9:[8,9,10]},o={3:[2,3,4],4:[1,5],5:[5],6:[4],7:[3],8:[2],9:[1,2,3,4,5]},r={3:[8,9,10],4:[7,11],5:[11],6:[10],7:[9],8:[8],9:[7,8,9,10,11]},a={3:[1,2,3,4,5],4:[4],5:[3],6:[4],7:[5],8:[1,5],9:[2,3,4]},h={3:[7,8,9,10,11],4:[10],5:[9],6:[10],7:[11],8:[7,11],9:[8,9,10]},u={3:[4],4:[3,4],5:[2,4],6:[1,4],7:[1,2,3,4,5],8:[4],9:[4]},c={3:[10],4:[9,10],5:[8,10],6:[7,10],7:[7,8,9,10,11],8:[10],9:[10]},d={3:[1,2,3,4,5],4:[1],5:[1,2,3,4],6:[5],7:[5],8:[1,5],9:[2,3,4]},l={3:[7,8,9,10,11],4:[7],5:[7,8,9,10],6:[11],7:[11],8:[7,11],9:[8,9,10]},f={3:[9,10],4:[8],5:[7],6:[7,8,9,10],7:[7,11],8:[7,11],9:[8,9,10]},g={3:[7,8,9,10,11],4:[11],5:[10],6:[9],7:[8],8:[8],9:[8]},E={3:[8,9,10],4:[7,11],5:[7,11],6:[8,9,10],7:[7,11],8:[7,11],9:[8,9,10]},p={3:[8,9,10],4:[7,11],5:[7,11],6:[8,9,10,11],7:[11],8:[10],9:[8,9]},v={0:[e,i],1:[e,s],2:[e,r],3:[e,h],4:[e,c],5:[e,l],6:[e,f],7:[e,g],8:[e,E],9:[e,p],10:[n,i],11:[n,s],12:[n,r],13:[n,h],14:[n,c],15:[n,l],16:[n,f],17:[n,g],18:[n,E],19:[n,p],20:[o,i],21:[o,s],22:[o,r],23:[o,h],24:[o,c],25:[o,l],26:[o,f],27:[o,g],28:[o,E],29:[o,p],30:[a,i],31:[a,s],32:[a,r],33:[a,h],34:[a,c],35:[a,l],36:[a,f],37:[a,g],38:[a,E],39:[a,p],40:[u,i],41:[u,s],42:[u,r],43:[u,h],44:[u,c],45:[u,l],46:[u,f],47:[u,g],48:[u,E],49:[u,p],50:[d,i],51:[d,s],52:[d,r],53:[d,h],54:[d,c],55:[d,l],56:[d,f],57:[d,g],58:[d,E],59:[d,p]};function m(i,n,t){null!=t&&Object.keys(t).forEach(function(e){t[e].forEach(function(t){i[e-1][t-1].addStyle(n)})})}function I(e,i,t){null!=t&&(Array.isArray(t)?t.forEach(function(t){m(e,i,t)}):m(e,i,t))}function b(n,s,o){null!=o&&Object.keys(o).forEach(function(t){var e=t.split(","),i=o[t];e.forEach(function(t){I(n,s+t,i)})})}this.parse=function(){var s=[];return t.letters.forEach(function(t){for(var e=[],i=0;i")}),"function"==typeof t&&t(),s.fadeIn("fast")})}}function f(t){this.options.mode=t,this.currentMinute=-1,n.bind(this)(),e.bind(this)("uhr-mode",t)}function g(t){var e=this.element;e.css("width",t);var i=e.width();e.width(i),e.height(i),e.css("font-size",i/40+"px")}var a,h;a=function(){var t=this.element;if(t.addClass("uhr"),t.empty(),t.append(''),t.append(''),t.append(''),t.append(''),t.append('
'),t.append('
'),g.bind(this)(this.options.width),this.options.controls){var e=d('
'),i=d('
');e.append(i);var n=d('
');n.append(''),n.append(''),i.append(n);var s=d('
');if(s.append(''),s.append(''),i.append(s),1');l.languages.forEach(function(t){o.append('")}),i.append(o)}if(1');l.themes.forEach(function(t){r.append('")}),i.append(r)}var a=d('');a.on("click",function(){d("#uhr-controlpanel"+this.id).hide("fast")}.bind(this)),i.append(a),t.after(e),e.hide();var h=d('');h.on("click",function(){(function(){d("#uhr-controlpanel"+this.id).toggle("fast")}).bind(this)()}.bind(this)),t.after(h)}},h=function(){var t=d("#uhr-onoffswitch-checkbox"+this.id);t.on("click",function(){this.toggle()}.bind(this));var e=d.cookie("uhr-status"+this.id);void 0!==e&&!this.options.force||(e=this.options.status),t.prop("checked","on"===e),"on"===e?this.start():this.stop();var i=d("#uhr-modeswitch-checkbox"+this.id);i.on("click",function(){"seconds"===this.options.mode?f.bind(this)("normal"):f.bind(this)("seconds")}.bind(this));var n=d.cookie("uhr-mode"+this.id);void 0!==n&&!this.options.force||(n=this.options.mode),i.prop("checked","seconds"!==n),"seconds"===n?f.bind(this)("seconds"):f.bind(this)("normal");var s=d("#uhr-languagechooser"+this.id);s.on("change",function(){var t=d("#uhr-languagechooser"+this.id).val();this.language(t)}.bind(this));var o=d.cookie("uhr-language"+this.id);void 0!==o&&!this.options.force||(o=this.options.language);var r,a=l.languages.some(function(t){return o===t.code});a||(r=0'+i+""}}function a(t){var e={3:[2,3,4],4:[1,5],5:[1,4,5],6:[1,3,5],7:[1,2,5],8:[1,5],9:[2,3,4]},i={3:[8,9,10],4:[7,11],5:[7,10,11],6:[7,9,11],7:[7,8,11],8:[7,11],9:[8,9,10]},n={3:[3],4:[2,3],5:[3],6:[3],7:[3],8:[3],9:[2,3,4]},s={3:[9],4:[8,9],5:[9],6:[9],7:[9],8:[9],9:[8,9,10]},o={3:[2,3,4],4:[1,5],5:[5],6:[4],7:[3],8:[2],9:[1,2,3,4,5]},a={3:[8,9,10],4:[7,11],5:[11],6:[10],7:[9],8:[8],9:[7,8,9,10,11]},h={3:[1,2,3,4,5],4:[4],5:[3],6:[4],7:[5],8:[1,5],9:[2,3,4]},u={3:[7,8,9,10,11],4:[10],5:[9],6:[10],7:[11],8:[7,11],9:[8,9,10]},c={3:[4],4:[3,4],5:[2,4],6:[1,4],7:[1,2,3,4,5],8:[4],9:[4]},d={3:[10],4:[9,10],5:[8,10],6:[7,10],7:[7,8,9,10,11],8:[10],9:[10]},l={3:[1,2,3,4,5],4:[1],5:[1,2,3,4],6:[5],7:[5],8:[1,5],9:[2,3,4]},f={3:[7,8,9,10,11],4:[7],5:[7,8,9,10],6:[11],7:[11],8:[7,11],9:[8,9,10]},g={3:[9,10],4:[8],5:[7],6:[7,8,9,10],7:[7,11],8:[7,11],9:[8,9,10]},E={3:[7,8,9,10,11],4:[11],5:[10],6:[9],7:[8],8:[8],9:[8]},p={3:[8,9,10],4:[7,11],5:[7,11],6:[8,9,10],7:[7,11],8:[7,11],9:[8,9,10]},v={3:[8,9,10],4:[7,11],5:[7,11],6:[8,9,10,11],7:[11],8:[10],9:[8,9]},m={0:[e,i],1:[e,s],2:[e,a],3:[e,u],4:[e,d],5:[e,f],6:[e,g],7:[e,E],8:[e,p],9:[e,v],10:[n,i],11:[n,s],12:[n,a],13:[n,u],14:[n,d],15:[n,f],16:[n,g],17:[n,E],18:[n,p],19:[n,v],20:[o,i],21:[o,s],22:[o,a],23:[o,u],24:[o,d],25:[o,f],26:[o,g],27:[o,E],28:[o,p],29:[o,v],30:[h,i],31:[h,s],32:[h,a],33:[h,u],34:[h,d],35:[h,f],36:[h,g],37:[h,E],38:[h,p],39:[h,v],40:[c,i],41:[c,s],42:[c,a],43:[c,u],44:[c,d],45:[c,f],46:[c,g],47:[c,E],48:[c,p],49:[c,v],50:[l,i],51:[l,s],52:[l,a],53:[l,u],54:[l,d],55:[l,f],56:[l,g],57:[l,E],58:[l,p],59:[l,v]};function I(t,e,i){null!=i&&Object.keys(i).forEach((function(n){i[n].forEach((function(i){t[n-1][i-1].addStyle(e)}))}))}function b(t,e,i){null!=i&&(Array.isArray(i)?i.forEach((function(i){I(t,e,i)})):I(t,e,i))}function N(t,e,i){null!=i&&Object.keys(i).forEach((function(n){var s=n.split(","),o=i[n];s.forEach((function(i){b(t,e+i,o)}))}))}this.parse=function(){var e=[];return t.letters.forEach((function(t){for(var i=[],n=0;n")})),"function"==typeof i&&i(),e.fadeIn("fast")}))}}var u,c,d=function(t){this.options.mode=t,this.currentMinute=-1,n.bind(this)(),e.bind(this)("uhr-mode",t)},l=function(t){var e=this.element;e.css("width",t);var i=e.width();e.width(i),e.height(i),e.css("font-size",i/40+"px")},f=function(){t("#uhr-controlpanel"+this.id).toggle("fast")};u=function(){var e=this.element;if(e.addClass("uhr"),e.empty(),e.append(''),e.append(''),e.append(''),e.append(''),e.append('
'),e.append('
'),l.bind(this)(this.options.width),this.options.controls){var i=t('
'),n=t('
');i.append(n);var o=t('
');o.append(''),o.append(''),n.append(o);var r=t('
');if(r.append(''),r.append(''),n.append(r),s.languages.length>1){var a=t('');s.languages.forEach((function(t){a.append('")})),n.append(a)}if(s.themes.length>1){var h=t('');s.themes.forEach((function(t){h.append('")})),n.append(h)}var u=t('');u.on("click",function(){t("#uhr-controlpanel"+this.id).hide("fast")}.bind(this)),n.append(u),e.after(i),i.hide();var c=t('');c.on("click",function(){f.bind(this)()}.bind(this)),e.after(c)}},c=function(){var e=t("#uhr-onoffswitch-checkbox"+this.id);e.on("click",function(){this.toggle()}.bind(this));var i=t.cookie("uhr-status"+this.id);(void 0===i||this.options.force)&&(i=this.options.status),e.prop("checked","on"===i),"on"===i?this.start():this.stop();var n=t("#uhr-modeswitch-checkbox"+this.id);n.on("click",function(){"seconds"===this.options.mode?d.bind(this)("normal"):d.bind(this)("seconds")}.bind(this));var o=t.cookie("uhr-mode"+this.id);(void 0===o||this.options.force)&&(o=this.options.mode),n.prop("checked","seconds"!==o),"seconds"===o?d.bind(this)("seconds"):d.bind(this)("normal");var r=t("#uhr-languagechooser"+this.id);r.on("change",function(){var e=t("#uhr-languagechooser"+this.id).val();this.language(e)}.bind(this));var a=t.cookie("uhr-language"+this.id);(void 0===a||this.options.force)&&(a=this.options.language);var h,u=s.languages.some((function(t){return a===t.code}));u||(h=s.languages.length>0?s.languages[0].code:"",console.warn("Language '"+a+"' not found! Using fallback '"+h+"'"),a=h);r.val(a),this.options.language="",this.language(a);var c=t("#uhr-themechooser"+this.id);c.on("change",function(){var e=t("#uhr-themechooser"+this.id).val();this.theme(e)}.bind(this));var f=t.cookie("uhr-theme"+this.id);if((void 0===f||this.options.force)&&(f=this.options.theme),!(u=s.themes.some((function(t){return f===t.styleClass})))){var g=s.themes[0].styleClass;console.warn("Theme '"+f+"' not found! Using fallback '"+g+"'"),f=g}c.val(f),this.options.theme="",this.theme(f),this.options.autoresize&&t(window).on("resize",function(){var e=this.element.parent(),i=t(window),n=e.width(),s=e.height(),o=i.width(),r=i.height(),a=Math.min(n,s,o,r)+"px";l.bind(this)(a)}.bind(this))};var g,E,p,v,m,I,b;e=function(e,i){var n={};n=void 0!==this.options.cookiePath?{expires:365,path:this.options.cookiePath}:{expires:365},t.cookie(e+this.id,i,n)},i=function(){return null!==this.timer},n=function(){if(i.bind(this)()){var t=this.options.time;if(!o.bind(this)().hasOwnProperty("seconds")&&"seconds"!==this.options.mode){if(t.getMinutes()===this.currentMinute)return;this.currentMinute=t.getMinutes()}g.bind(this)(t)}else E.bind(this)(),this.currentMinute=-1},g=function(t){var e=v.bind(this)(t),i=m.bind(this)(t),n=b.bind(this)(t),s=I.bind(this)(t);if(E.bind(this)(),"seconds"===this.options.mode)p.bind(this)("second"+e);else{p.bind(this)("on");for(var o=1;o<=i;o++)p.bind(this)("dot"+o);p.bind(this)("minute"+s),p.bind(this)("hour"+n)}},p=function(t){this.element.find(".item."+t).addClass("active")},E=function(){this.element.find(".item").removeClass("active")},v=function(t){return"function"==typeof o.bind(this)().getSeconds?o.bind(this)().getSeconds(t):t.getSeconds()},m=function(t){return"function"==typeof o.bind(this)().getDotMinute?o.bind(this)().getDotMinute(t):t.getMinutes()%5},I=function(t){return"function"==typeof o.bind(this)().getCoarseMinute?o.bind(this)().getCoarseMinute(t):t.getMinutes()},b=function(t){if("function"==typeof o.bind(this)().getHour)return o.bind(this)().getHour(t);var e=t.getHours();return t.getMinutes()>=25?(e+1)%24:e},o=function(){var t=s.languages.filter((function(t){return t.code===this.options.language}),this);return t.length>0?t[0]:{}},t.widget("fritteli.uhr",{options:{width:"100%",status:"on",language:"de_CH",theme:s.themes[0].styleClass,force:!1,controls:!0,cookiePath:void 0,autoresize:!0,mode:"normal"},start:function(){i.bind(this)()||(this.timer=window.setInterval(function(){this.options.time=new Date,n.bind(this)()}.bind(this),1e3),n.bind(this)(),e.bind(this)("uhr-status","on"))},stop:function(){i.bind(this)()&&(window.clearInterval(this.timer),this.timer=null,n.bind(this)(),e.bind(this)("uhr-status","off"))},toggle:function(){i.bind(this)()?this.stop():this.start()},language:function(t){t!==this.options.language&&(this.options.language=t,new h(o.bind(this)(),this.element.find(".letterarea")).render.bind(this)(function(){this.currentMinute=-1,n.bind(this)()}.bind(this)),e.bind(this)("uhr-language",t),n.bind(this)())},theme:function(i){i!==this.options.theme&&(this.element.removeClass(this.options.theme).addClass(i),t("#uhr-onoffswitch"+this.id).removeClass(this.options.theme).addClass(i),this.options.theme=i,e.bind(this)("uhr-theme",i))},time:function(t){this.currentMinute=-1,null===t?this.options.time=new Date:(null!==this.timer&&window.clearInterval(this.timer),this.options.time=t),n.bind(this)()},mode:d,width:l,_create:function(){this.id=s.id++,this.timer=null,this.currentMinute=-1;var t,e=this.options.time;void 0===this.options.time&&(this.options.time=new Date),void 0!==(t=window.location.hash)&&"string"==typeof t&&"#"===t.charAt(0)&&(t=t.substring(1),(t=decodeURIComponent(t)).split("&").forEach(function(t){var e=t.split("="),i=e[0],n=e[1];switch(i){case"l":case"language":this.options.language=n,this.options.force=!0;break;case"t":case"theme":this.options.theme=n,this.options.force=!0;break;case"m":case"mode":this.options.mode=n,this.options.force=!0;break;case"s":case"status":this.options.status=n,this.options.force=!0}}.bind(this))),u.bind(this)(),c.bind(this)(),void 0!==e&&this.time(e)},_destroy:function(){this.timer=null,t(this.element).removeAttr("style").removeAttr("class").empty(),t("#uhr-configlink"+this.id).remove(),t("#uhr-controlpanel"+this.id).remove()}}),t.fritteli.uhr.register=s.registerLanguage}(jQuery),r={version:2,language:"Deutsch",letters:["ESKISTAFÜNF","ZEHNZWANZIG","DREIVIERTEL","VORFUNKNACH","HALBAELFÜNF","EINSXAMZWEI","DREIPMJVIER","SECHSNLACHT","SIEBENZWÖLF","ZEHNEUNKUHR"],permanent:{1:[1,2,4,5,6]},minutes:{"0,1,2,3,4":{10:[9,10,11]},"5,6,7,8,9":[n={1:[8,9,10,11]},t={4:[8,9,10,11]}],"10,11,12,13,14":[s={2:[1,2,3,4]},t],"15,16,17,18,19":[{3:[5,6,7,8,9,10,11]},t],"20,21,22,23,24":[o={2:[5,6,7,8,9,10,11]},t],"25,26,27,28,29":[n,e={4:[1,2,3]},i={5:[1,2,3,4]}],"30,31,32,33,34":i,"35,36,37,38,39":[n,t,i],"40,41,42,43,44":[o,e],"45,46,47,48,49":{3:[1,2,3,4,5,6,7,8,9,10,11]},"50,51,52,53,54":[s,e],"55,56,57,58,59":[n,e]},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]}}},jQuery.fritteli.uhr.register("de",r),function(t){var e={4:[1,2]},i={3:[9,10,11]},n={4:[4,5,6,7,8]},s={1:[9,10,11]},o={2:[9,10,11]},r={2:[1,2,3,4,5,6]},a={3:[1,2,3,4,5,6]},h={version:2,language:"Bärndütsch",letters:["ESKISCHAFÜF","VIERTUBFZÄÄ","ZWÄNZGSIVOR","ABOHAUBIEGE","EISZWÖISDRÜ","VIERIFÜFIQT","SÄCHSISIBNI","ACHTINÜNIEL","ZÄNIERBEUFI","ZWÖUFINAUHR"],permanent:{1:[1,2,4,5,6,7]},minutes:{"5,6,7,8,9":[s,e],"10,11,12,13,14":[o,e],"15,16,17,18,19":[r,e],"20,21,22,23,24":[a,e],"25,26,27,28,29":[s,i,n],"30,31,32,33,34":n,"35,36,37,38,39":[s,e,n],"40,41,42,43,44":[a,i],"45,46,47,48,49":[r,i],"50,51,52,53,54":[o,i],"55,56,57,58,59":[s,i]},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]}}};jQuery.fritteli.uhr.register("de_CH",h)}(),function(t){var e={4:[4,5]},i={4:[1,2,3]},n={4:[7,8,9,10,11]},s={1:[9,10,11]},o={2:[9,10,11]},r={2:[1,2,3,4,5,6]},a={3:[1,2,3,4,5,6]},h={version:2,language:"Bärndütsch (genau)",letters:["ESKISCHAFÜF","VIERTUBFZÄÄ","ZWÄNZGGENAU","VORABOHAUBI","EISZWÖISDRÜ","VIERIFÜFIQT","SÄCHSISIBNI","ACHTINÜNIEL","ZÄNIERBEUFI","ZWÖUFINAUHR"],permanent:{1:[1,2,4,5,6,7]},minutes:{0:{3:[7,8,9,10,11]},"5,6,7,8,9":[s,e],"10,11,12,13,14":[o,e],"15,16,17,18,19":[r,e],"20,21,22,23,24":[a,e],"25,26,27,28,29":[s,i,n],"30,31,32,33,34":n,"35,36,37,38,39":[s,e,n],"40,41,42,43,44":[a,i],"45,46,47,48,49":[r,i],"50,51,52,53,54":[o,i],"55,56,57,58,59":[s,i]},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]}}};jQuery.fritteli.uhr.register("de_CH_genau",h)}(),function(t){var e={4:[4,5,6,7,8,9,10,11]},i={5:[8]},n={5:[4,5,6,7]},s={2:[1,2,3]},o={4:[1,2]},r={3:[4,5,6,7,8]},a={2:[4,5,6,7]},h={6:[8,9,10,11]},u={version:2,language:"Dansk",letters:["KLOKKENVERO","FEMTYVESKLA","OJEKVARTVAT","TIAMINUTTER","VEMOVERILMF","MONALISHALV","ETTOTREFIRE","FEMSEKSRSYV","OTTERNIMETI","ELLEVEATOLV"],permanent:{1:[1,2,3,4,5,6,7,9,10]},minutes:{"5,6,7,8,9":[s,e,n],"10,11,12,13,14":[o,e,n],"15,16,17,18,19":[r,n],"20,21,22,23,24":[a,e,n],"25,26,27,28,29":[s,e,i,h],"30,31,32,33,34":[h],"35,36,37,38,39":[s,e,n,h],"40,41,42,43,44":[a,e,i],"45,46,47,48,49":[r,i],"50,51,52,53,54":[o,e,i],"55,56,57,58,59":[s,e,i]},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]}},getHour:function(t){var e=t.getHours();return t.getMinutes()>=25?(e+1)%24:e}};jQuery.fritteli.uhr.register("dk",u)}(),function(t){var e={4:[10,11]},i={5:[1,2,3,4]},n={3:[7,8,9,10]},s={4:[6,7,8]},o={2:[1,3,4,5,6,7,8,9]},r={3:[1,2,3,4,5,6]},a={3:[1,2,3,4,5,6,7,8,9,10]},h={version:2,language:"English",letters:["ITLISBFAMPM","ACQUARTERDC","TWENTYFIVEX","HALFBTENFTO","PASTERUNINE","ONESIXTHREE","FOURFIVETWO","EIGHTELEVEN","SEVENTWELVE","TENSO'CLOCK"],permanent:{1:[1,2,4,5]},minutes:{"0,1,2,3,4":{10:[5,6,7,8,9,10,11]},"5,6,7,8,9":[n,i],"10,11,12,13,14":[s,i],"15,16,17,18,19":[o,i],"20,21,22,23,24":[r,i],"25,26,27,28,29":[a,i],"30,31,32,33,34":[{4:[1,2,3,4]},i],"35,36,37,38,39":[a,e],"40,41,42,43,44":[r,e],"45,46,47,48,49":[o,e],"50,51,52,53,54":[s,e],"55,56,57,58,59":[n,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]}},getHour:function(t){var e=t.getHours();return t.getMinutes()>=35?(e+1)%24:e}};jQuery.fritteli.uhr.register("en",h)}(),function(t){var e={1:[2,3,4,6,7,8]},i={7:[6]},n={7:[7,8,9,10,11]},s={9:[7,8,9,10,11]},o={8:[8,9,10,11]},r={10:[6,7,8,9,10,11]},a={8:[2,3,4,5,6,7]},h={9:[1,2,3,4,5,6,7,8,9,10,11]},u={version:2,language:"Español",letters:["ESONELASUNA","DOSITRESORE","CUATROCINCO","SEISASIETEN","OCHONUEVEYO","LADIEZSONCE","DOCELYMENOS","OVEINTEDIEZ","VEINTICINCO","MEDIACUARTO"],permanent:[],minutes:{"5,6,7,8,9":[i,s],"10,11,12,13,14":[i,o],"15,16,17,18,19":[i,r],"20,21,22,23,24":[i,a],"25,26,27,28,29":[i,h],"30,31,32,33,34":[i,{10:[1,2,3,4,5]}],"35,36,37,38,39":[n,h],"40,41,42,43,44":[n,a],"45,46,47,48,49":[n,r],"50,51,52,53,54":[n,o],"55,56,57,58,59":[n,s]},hours:{"0,12":[e,{7:[1,2,3,4]}],"1,13":[{1:[1,2,6,7]},{1:[9,10,11]}],"2,14":[e,{2:[1,2,3]}],"3,15":[e,{2:[5,6,7,8]}],"4,16":[e,{3:[1,2,3,4,5,6]}],"5,17":[e,{3:[7,8,9,10,11]}],"6,18":[e,{4:[1,2,3,4]}],"7,19":[e,{4:[6,7,8,9,10]}],"8,20":[e,{5:[1,2,3,4]}],"9,21":[e,{5:[5,6,7,8,9]}],"10,22":[e,{6:[3,4,5,6]}],"11,23":[e,{6:[8,9,10,11]}]},getHour:function(t){var e=t.getHours();return t.getMinutes()>=35?(e+1)%24:e}};jQuery.fritteli.uhr.register("es",u)}(),function(t){var e={8:[1,2]},i={7:[1,2,3,4,5]},n={6:[6,7,8,9,10,11]},s={9:[7,8,9,10]},o={7:[9,10,11]},r={8:[4,5,6,7,8]},a={9:[1,2,3,4,5]},h={9:[1,2,3,4,5,6,7,8,9,10]},u={version:2,language:"Français",letters:["ILNESTODEUX","QUATRETROIS","NEUFUNESEPT","HUITSIXCINQ","MIDIXMINUIT","ONZERHEURES","MOINSOLEDIX","ETRQUARTPMD","VINGT-CINQU","ETSDEMIEPAM"],permanent:{1:[1,2,4,5,6]},minutes:{"5,6,7,8,9":s,"10,11,12,13,14":o,"15,16,17,18,19":[e,r],"20,21,22,23,24":a,"25,26,27,28,29":h,"30,31,32,33,34":[e,{10:[4,5,6,7,8]}],"35,36,37,38,39":[i,h],"40,41,42,43,44":[i,a],"45,46,47,48,49":[i,{7:[7,8]},r],"50,51,52,53,54":[i,o],"55,56,57,58,59":[i,s]},hours:{0:{5:[6,7,8,9,10,11]},"1,13":[{3:[5,6,7]},n],"2,14":[{1:[8,9,10,11]},n],"3,15":[{2:[7,8,9,10,11]},n],"4,16":[{2:[1,2,3,4,5,6]},n],"5,17":[{4:[8,9,10,11]},n],"6,18":[{4:[5,6,7]},n],"7,19":[{3:[8,9,10,11]},n],"8,20":[{4:[1,2,3,4]},n],"9,21":[{3:[1,2,3,4]},n],"10,22":[{5:[3,4,5]},n],"11,23":[{6:[1,2,3,4]},n],12:{5:[1,2,3,4]}},getHour:function(t){var e=t.getHours();return t.getMinutes()>=35?(e+1)%24:e}};jQuery.fritteli.uhr.register("fr",u)}(),function(t){var e={1:[1,2,3,4,6,7]},i={8:[1]},n={7:[8,9,10,11]},s={9:[6,7,8,9,10,11]},o={10:[1,2,3,4,5]},r={8:[3,4,6,7,8,9,10,11]},a={9:[1,2,3,4,5]},h={9:[1,2,3,4,5,6,7,8,9,10,11]},u={version:2,language:"Italiano",letters:["SONORLEBORE","ÈRL'UNASDUE","TREOTTONOVE","DIECIUNDICI","DODICISETTE","QUATTROCSEI","CINQUEAMENO","ECUNOQUARTO","VENTICINQUE","DIECIPMEZZA"],permanent:[],minutes:{"5,6,7,8,9":[i,s],"10,11,12,13,14":[i,o],"15,16,17,18,19":[i,r],"20,21,22,23,24":[i,a],"25,26,27,28,29":[i,h],"30,31,32,33,34":[i,{10:[7,8,9,10,11]}],"35,36,37,38,39":[n,h],"40,41,42,43,44":[n,a],"45,46,47,48,49":[n,r],"50,51,52,53,54":[n,o],"55,56,57,58,59":[n,s]},hours:{"0,12":[e,{5:[1,2,3,4,5,6]}],"1,13":[{2:[1,3,4]},{2:[5,6,7]}],"2,14":[e,{2:[9,10,11]}],"3,15":[e,{3:[1,2,3]}],"4,16":[e,{6:[1,2,3,4,5,6,7]}],"5,17":[e,{7:[1,2,3,4,5,6]}],"6,18":[e,{6:[9,10,11]}],"7,19":[e,{5:[7,8,9,10,11]}],"8,20":[e,{3:[4,5,6,7]}],"9,21":[e,{3:[8,9,10,11]}],"10,22":[e,{4:[1,2,3,4,5]}],"11,23":[e,{4:[6,7,8,9,10,11]}]},getHour:function(t){var e=t.getHours();return t.getMinutes()>=35?(e+1)%24:e}};jQuery.fritteli.uhr.register("it",u)}(),function(t){var e={3:[1,2,3,4]},i={2:[8,9,10,11]},n={4:[1,2,3,4]},s={1:[8,9,10,11]},o={2:[1,2,3,4]},r={3:[7,8,9,10,11]},a={version:2,language:"Nederlands",letters:["HETKISAVIJF","TIENBTZVOOR","OVERMEKWART","HALFSPWOVER","VOORTHGEENS","TWEEPVCDRIE","VIERVIJFZES","ZEVENONEGEN","ACHTTIENELF","TWAALFBFUUR"],permanent:{1:[1,2,3,5,6]},minutes:{"0,1,2,3,4":{10:[9,10,11]},"5,6,7,8,9":[s,e],"10,11,12,13,14":[o,e],"15,16,17,18,19":[r,{4:[8,9,10,11]}],"20,21,22,23,24":[o,i,n],"25,26,27,28,29":[s,i,n],"30,31,32,33,34":n,"35,36,37,38,39":[s,e,n],"40,41,42,43,44":[o,e,n],"45,46,47,48,49":[r,{5:[1,2,3,4]}],"50,51,52,53,54":[o,i],"55,56,57,58,59":[s,i]},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]}},getHour:function(t){var e=t.getHours();return t.getMinutes()>=20?(e+1)%24:e}};jQuery.fritteli.uhr.register("nl",a)}(),function(t){var e={1:[1]},i={1:[2,3,4]},n={7:[8]},s={10:[5]},o={7:[7,8,9,10,11]},r={10:[7,8,9,10,11]},a={10:[1,2,3]},h={9:[1,2,4,5,6,7,8,9]},u={8:[1,2,3,4,5]},c={version:2,language:"Português",letters:["ÉSÃOUMATRÊS","MEIOLDIADEZ","DUASEISETEY","QUATROHNOVE","CINCOITONZE","ZMEIALNOITE","HORASYMENOS","VINTECAMEIA","UMVQUARTOPM","DEZOEYCINCO"],minutes:{"5,6,7,8,9":[n,r],"10,11,12,13,14":[n,a],"15,16,17,18,19":[n,h],"20,21,22,23,24":[n,u],"25,26,27,28,29":[n,u,s,r],"30,31,32,33,34":[n,{8:[8,9,10,11]}],"35,36,37,38,39":[o,u,s,r],"40,41,42,43,44":[o,u],"45,46,47,48,49":[o,h],"50,51,52,53,54":[o,a],"55,56,57,58,59":[o,r]},hours:{0:[e,{6:[2,3,4,5,7,8,9,10,11]}],12:[e,{2:[1,2,3,4,6,7,8]}],"1,13":[e,{1:[5,6,7]}],"2,14":[i,{3:[1,2,3,4]}],"3,15":[i,{1:[8,9,10,11]}],"4,16":[i,{4:[1,2,3,4,5,6]}],"5,17":[i,{5:[1,2,3,4,5]}],"6,18":[i,{3:[4,5,6,7]}],"7,19":[i,{3:[7,8,9,10]}],"8,20":[i,{5:[5,6,7,8]}],"9,21":[i,{4:[8,9,10,11]}],"10,22":[i,{2:[9,10,11]}],"11,23":[i,{5:[8,9,10,11]}]},getHour:function(t){var e=t.getHours();return t.getMinutes()>=35?(e+1)%24:e}};jQuery.fritteli.uhr.register("pt",c)}(); diff --git a/dist/jquery.uhr.langs.js b/dist/jquery.uhr.langs.js index 968a3f6..8c857a4 100644 --- a/dist/jquery.uhr.langs.js +++ b/dist/jquery.uhr.langs.js @@ -1,66 +1,94 @@ -/*! uhr - v9.0.0-dev.0 - 2021-02-24 -* http://bärneruhr.ch/ -* Copyright (c) 2021 Manuel Friedli; Licensed GPL-3.0 */ +'use strict'; + +/* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ (function($) { - 'use strict'; - var es_isch = {1: [1, 2, 4, 5, 6, 7]}; - var genau = {3: [7, 8, 9, 10, 11]}; - var ab = {4: [4, 5]}; + var es_ist = {1: [1, 2, 4, 5, 6]}; + var uhr = {10: [9, 10, 11]}; + var nach = {4: [8, 9, 10, 11]}; var vor = {4: [1, 2, 3]}; - var haubi = {4: [7, 8, 9, 10, 11]}; - var fuef = {1: [9, 10, 11]}; - var zae = {2: [9, 10, 11]}; - var viertu = {2: [1, 2, 3, 4, 5, 6]}; - var zwaenzg = {3: [1, 2, 3, 4, 5, 6]}; + var halb = {5: [1, 2, 3, 4]}; + var fuenf = {1: [8, 9, 10, 11]}; + var zehn = {2: [1, 2, 3, 4]}; + var viertel = {3: [5, 6, 7, 8, 9, 10, 11]}; + var zwanzig = {2: [5, 6, 7, 8, 9, 10, 11]}; + var dreiviertel = {3: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]}; + var layout = { "version": 2, - "language": 'Bärndütsch (genau)', + "language": 'Deutsch', "letters": [ - 'ESKISCHAFÜF', - 'VIERTUBFZÄÄ', - 'ZWÄNZGGENAU', - 'VORABOHAUBI', - 'EISZWÖISDRÜ', - 'VIERIFÜFIQT', - 'SÄCHSISIBNI', - 'ACHTINÜNIEL', - 'ZÄNIERBEUFI', - 'ZWÖUFINAUHR' + 'ESKISTAFÜNF', + 'ZEHNZWANZIG', + 'DREIVIERTEL', + 'VORFUNKNACH', + 'HALBAELFÜNF', + 'EINSXAMZWEI', + 'DREIPMJVIER', + 'SECHSNLACHT', + 'SIEBENZWÖLF', + 'ZEHNEUNKUHR' ], - "permanent": es_isch, + "permanent": es_ist, "minutes": { - "0": genau, - "5,6,7,8,9": [fuef, ab], - "10,11,12,13,14": [zae, ab], - "15,16,17,18,19": [viertu, ab], - "20,21,22,23,24": [zwaenzg, ab], - "25,26,27,28,29": [fuef, vor, haubi], - "30,31,32,33,34": haubi, - "35,36,37,38,39": [fuef, ab, haubi], - "40,41,42,43,44": [zwaenzg, vor], - "45,46,47,48,49": [viertu, vor], - "50,51,52,53,54": [zae, vor], - "55,56,57,58,59": [fuef, vor] + "0,1,2,3,4": uhr, + "5,6,7,8,9": [fuenf, nach], + "10,11,12,13,14": [zehn, nach], + "15,16,17,18,19": [viertel, nach], + "20,21,22,23,24": [zwanzig, nach], + "25,26,27,28,29": [fuenf, vor, halb], + "30,31,32,33,34": halb, + "35,36,37,38,39": [fuenf, nach, halb], + "40,41,42,43,44": [zwanzig, vor], + "45,46,47,48,49": dreiviertel, + "50,51,52,53,54": [zehn, vor], + "55,56,57,58,59": [fuenf, vor] }, "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]} + "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]} } }; - $.fritteli.uhr.register('de_CH_genau', layout); + $.fritteli.uhr.register('de', layout); }(jQuery)); + +/* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ (function($) { - 'use strict'; // hilfsvariablen var es_isch = {1: [1, 2, 4, 5, 6, 7]}; var ab = {4: [1, 2]}; @@ -142,66 +170,7 @@ // Das Layout bei der Uhr unter dem Code "de_CH" registrieren. $.fritteli.uhr.register('de_CH', layout); }(jQuery)); -(function($) { - 'use strict'; - var es_ist = {1: [1, 2, 4, 5, 6]}; - var uhr = {10: [9, 10, 11]}; - var nach = {4: [8, 9, 10, 11]}; - var vor = {4: [1, 2, 3]}; - var halb = {5: [1, 2, 3, 4]}; - var fuenf = {1: [8, 9, 10, 11]}; - var zehn = {2: [1, 2, 3, 4]}; - var viertel = {3: [5, 6, 7, 8, 9, 10, 11]}; - var zwanzig = {2: [5, 6, 7, 8, 9, 10, 11]}; - var dreiviertel = {3: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]}; - var layout = { - "version": 2, - "language": 'Deutsch', - "letters": [ - 'ESKISTAFÜNF', - 'ZEHNZWANZIG', - 'DREIVIERTEL', - 'VORFUNKNACH', - 'HALBAELFÜNF', - 'EINSXAMZWEI', - 'DREIPMJVIER', - 'SECHSNLACHT', - 'SIEBENZWÖLF', - 'ZEHNEUNKUHR' - ], - "permanent": es_ist, - "minutes": { - "0,1,2,3,4": uhr, - "5,6,7,8,9": [fuenf, nach], - "10,11,12,13,14": [zehn, nach], - "15,16,17,18,19": [viertel, nach], - "20,21,22,23,24": [zwanzig, nach], - "25,26,27,28,29": [fuenf, vor, halb], - "30,31,32,33,34": halb, - "35,36,37,38,39": [fuenf, nach, halb], - "40,41,42,43,44": [zwanzig, vor], - "45,46,47,48,49": dreiviertel, - "50,51,52,53,54": [zehn, vor], - "55,56,57,58,59": [fuenf, vor] - }, - "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]} - } - }; - $.fritteli.uhr.register('de', layout); -}(jQuery)); /* This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -217,7 +186,78 @@ along with this program. If not, see . */ (function($) { - 'use strict'; + var es_isch = {1: [1, 2, 4, 5, 6, 7]}; + var genau = {3: [7, 8, 9, 10, 11]}; + var ab = {4: [4, 5]}; + var vor = {4: [1, 2, 3]}; + var haubi = {4: [7, 8, 9, 10, 11]}; + var fuef = {1: [9, 10, 11]}; + var zae = {2: [9, 10, 11]}; + var viertu = {2: [1, 2, 3, 4, 5, 6]}; + var zwaenzg = {3: [1, 2, 3, 4, 5, 6]}; + var layout = { + "version": 2, + "language": 'Bärndütsch (genau)', + "letters": [ + 'ESKISCHAFÜF', + 'VIERTUBFZÄÄ', + 'ZWÄNZGGENAU', + 'VORABOHAUBI', + 'EISZWÖISDRÜ', + 'VIERIFÜFIQT', + 'SÄCHSISIBNI', + 'ACHTINÜNIEL', + 'ZÄNIERBEUFI', + 'ZWÖUFINAUHR' + ], + "permanent": es_isch, + "minutes": { + "0": genau, + "5,6,7,8,9": [fuef, ab], + "10,11,12,13,14": [zae, ab], + "15,16,17,18,19": [viertu, ab], + "20,21,22,23,24": [zwaenzg, ab], + "25,26,27,28,29": [fuef, vor, haubi], + "30,31,32,33,34": haubi, + "35,36,37,38,39": [fuef, ab, haubi], + "40,41,42,43,44": [zwaenzg, vor], + "45,46,47,48,49": [viertu, vor], + "50,51,52,53,54": [zae, vor], + "55,56,57,58,59": [fuef, vor] + }, + "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]} + } + }; + $.fritteli.uhr.register('de_CH_genau', layout); +}(jQuery)); + +/* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ +(function($) { var klokken_er = {1: [1, 2, 3, 4, 5, 6, 7, 9, 10]}; var minutter = {4: [4, 5, 6, 7, 8, 9, 10, 11]}; @@ -282,8 +322,22 @@ }; $.fritteli.uhr.register('dk', layout); }(jQuery)); + +/* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ (function($) { - 'use strict'; var it_is = {1: [1, 2, 4, 5]}; var half = {4: [1, 2, 3, 4]}; var to = {4: [10, 11]}; @@ -349,8 +403,22 @@ }; $.fritteli.uhr.register('en', layout); }(jQuery)); + +/* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ (function($) { - 'use strict'; var es_la = {1: [1, 2, 6, 7]}; var son_las = {1: [2, 3, 4, 6, 7, 8]}; var y = {7: [6]}; @@ -416,8 +484,21 @@ $.fritteli.uhr.register('es', layout); }(jQuery)); +/* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ (function($) { - 'use strict'; var il_est = {1: [1, 2, 4, 5, 6]}; var et = {8: [1, 2]}; var moins = {7: [1, 2, 3, 4, 5]}; @@ -517,8 +598,22 @@ }; $.fritteli.uhr.register('fr', layout); }(jQuery)); + +/* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ (function($) { - 'use strict'; var sono_le = {1: [1, 2, 3, 4, 6, 7]}; var e_l = {2: [1, 3, 4]}; var e = {8: [1]}; @@ -583,8 +678,22 @@ }; $.fritteli.uhr.register('it', layout); }(jQuery)); + +/* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ (function($) { - 'use strict'; var het_is = {1: [1, 2, 3, 5, 6]}; var over1 = {3: [1, 2, 3, 4]}; var voor1 = {2: [8, 9, 10, 11]}; @@ -650,8 +759,22 @@ }; $.fritteli.uhr.register('nl', layout); }(jQuery)); + +/* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ (function ($) { - 'use strict'; var e_ = {1: [1]}; var sao = {1: [2, 3, 4]}; var e1 = {7: [8]}; diff --git a/dist/jquery.uhr.langs.min.js b/dist/jquery.uhr.langs.min.js index c837928..4841912 100644 --- a/dist/jquery.uhr.langs.min.js +++ b/dist/jquery.uhr.langs.min.js @@ -1,5 +1 @@ -/*! uhr - v9.0.0-dev.0 - 2021-02-24 -* http://bärneruhr.ch/ -* Copyright (c) 2021 Manuel Friedli; Licensed GPL-3.0 */ - -!function(e){"use strict";var E={4:[4,5]},r={4:[1,2,3]},t={4:[7,8,9,10,11]},I={1:[9,10,11]},u={2:[9,10,11]},n={2:[1,2,3,4,5,6]},s={3:[1,2,3,4,5,6]},i={version:2,language:"Bärndütsch (genau)",letters:["ESKISCHAFÜF","VIERTUBFZÄÄ","ZWÄNZGGENAU","VORABOHAUBI","EISZWÖISDRÜ","VIERIFÜFIQT","SÄCHSISIBNI","ACHTINÜNIEL","ZÄNIERBEUFI","ZWÖUFINAUHR"],permanent:{1:[1,2,4,5,6,7]},minutes:{0:{3:[7,8,9,10,11]},"5,6,7,8,9":[I,E],"10,11,12,13,14":[u,E],"15,16,17,18,19":[n,E],"20,21,22,23,24":[s,E],"25,26,27,28,29":[I,r,t],"30,31,32,33,34":t,"35,36,37,38,39":[I,E,t],"40,41,42,43,44":[s,r],"45,46,47,48,49":[n,r],"50,51,52,53,54":[u,r],"55,56,57,58,59":[I,r]},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]}}};jQuery.fritteli.uhr.register("de_CH_genau",i)}(),function(e){"use strict";var E={4:[1,2]},r={3:[9,10,11]},t={4:[4,5,6,7,8]},I={1:[9,10,11]},u={2:[9,10,11]},n={2:[1,2,3,4,5,6]},s={3:[1,2,3,4,5,6]},i={version:2,language:"Bärndütsch",letters:["ESKISCHAFÜF","VIERTUBFZÄÄ","ZWÄNZGSIVOR","ABOHAUBIEGE","EISZWÖISDRÜ","VIERIFÜFIQT","SÄCHSISIBNI","ACHTINÜNIEL","ZÄNIERBEUFI","ZWÖUFINAUHR"],permanent:{1:[1,2,4,5,6,7]},minutes:{"5,6,7,8,9":[I,E],"10,11,12,13,14":[u,E],"15,16,17,18,19":[n,E],"20,21,22,23,24":[s,E],"25,26,27,28,29":[I,r,t],"30,31,32,33,34":t,"35,36,37,38,39":[I,E,t],"40,41,42,43,44":[s,r],"45,46,47,48,49":[n,r],"50,51,52,53,54":[u,r],"55,56,57,58,59":[I,r]},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]}}};jQuery.fritteli.uhr.register("de_CH",i)}(),function(e){"use strict";var E={4:[8,9,10,11]},r={4:[1,2,3]},t={5:[1,2,3,4]},I={1:[8,9,10,11]},u={2:[1,2,3,4]},n={2:[5,6,7,8,9,10,11]},s={version:2,language:"Deutsch",letters:["ESKISTAFÜNF","ZEHNZWANZIG","DREIVIERTEL","VORFUNKNACH","HALBAELFÜNF","EINSXAMZWEI","DREIPMJVIER","SECHSNLACHT","SIEBENZWÖLF","ZEHNEUNKUHR"],permanent:{1:[1,2,4,5,6]},minutes:{"0,1,2,3,4":{10:[9,10,11]},"5,6,7,8,9":[I,E],"10,11,12,13,14":[u,E],"15,16,17,18,19":[{3:[5,6,7,8,9,10,11]},E],"20,21,22,23,24":[n,E],"25,26,27,28,29":[I,r,t],"30,31,32,33,34":t,"35,36,37,38,39":[I,E,t],"40,41,42,43,44":[n,r],"45,46,47,48,49":{3:[1,2,3,4,5,6,7,8,9,10,11]},"50,51,52,53,54":[u,r],"55,56,57,58,59":[I,r]},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]}}};jQuery.fritteli.uhr.register("de",s)}(),function(e){"use strict";var E={4:[4,5,6,7,8,9,10,11]},r={5:[8]},t={5:[4,5,6,7]},I={2:[1,2,3]},u={4:[1,2]},n={3:[4,5,6,7,8]},s={2:[4,5,6,7]},i={6:[8,9,10,11]},N={version:2,language:"Dansk",letters:["KLOKKENVERO","FEMTYVESKLA","OJEKVARTVAT","TIAMINUTTER","VEMOVERILMF","MONALISHALV","ETTOTREFIRE","FEMSEKSRSYV","OTTERNIMETI","ELLEVEATOLV"],permanent:{1:[1,2,3,4,5,6,7,9,10]},minutes:{"5,6,7,8,9":[I,E,t],"10,11,12,13,14":[u,E,t],"15,16,17,18,19":[n,t],"20,21,22,23,24":[s,E,t],"25,26,27,28,29":[I,E,r,i],"30,31,32,33,34":[i],"35,36,37,38,39":[I,E,t,i],"40,41,42,43,44":[s,E,r],"45,46,47,48,49":[n,r],"50,51,52,53,54":[u,E,r],"55,56,57,58,59":[I,E,r]},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]}},getHour:function(e){var E=e.getHours();return 25<=e.getMinutes()?(E+1)%24:E}};jQuery.fritteli.uhr.register("dk",N)}(),function(e){"use strict";var E={4:[10,11]},r={5:[1,2,3,4]},t={3:[7,8,9,10]},I={4:[6,7,8]},u={2:[1,3,4,5,6,7,8,9]},n={3:[1,2,3,4,5,6]},s={3:[1,2,3,4,5,6,7,8,9,10]},i={version:2,language:"English",letters:["ITLISBFAMPM","ACQUARTERDC","TWENTYFIVEX","HALFBTENFTO","PASTERUNINE","ONESIXTHREE","FOURFIVETWO","EIGHTELEVEN","SEVENTWELVE","TENSO'CLOCK"],permanent:{1:[1,2,4,5]},minutes:{"0,1,2,3,4":{10:[5,6,7,8,9,10,11]},"5,6,7,8,9":[t,r],"10,11,12,13,14":[I,r],"15,16,17,18,19":[u,r],"20,21,22,23,24":[n,r],"25,26,27,28,29":[s,r],"30,31,32,33,34":[{4:[1,2,3,4]},r],"35,36,37,38,39":[s,E],"40,41,42,43,44":[n,E],"45,46,47,48,49":[u,E],"50,51,52,53,54":[I,E],"55,56,57,58,59":[t,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]}},getHour:function(e){var E=e.getHours();return 35<=e.getMinutes()?(E+1)%24:E}};jQuery.fritteli.uhr.register("en",i)}(),function(e){"use strict";var E={1:[2,3,4,6,7,8]},r={7:[6]},t={7:[7,8,9,10,11]},I={9:[7,8,9,10,11]},u={8:[8,9,10,11]},n={10:[6,7,8,9,10,11]},s={8:[2,3,4,5,6,7]},i={9:[1,2,3,4,5,6,7,8,9,10,11]},N={version:2,language:"Español",letters:["ESONELASUNA","DOSITRESORE","CUATROCINCO","SEISASIETEN","OCHONUEVEYO","LADIEZSONCE","DOCELYMENOS","OVEINTEDIEZ","VEINTICINCO","MEDIACUARTO"],permanent:[],minutes:{"5,6,7,8,9":[r,I],"10,11,12,13,14":[r,u],"15,16,17,18,19":[r,n],"20,21,22,23,24":[r,s],"25,26,27,28,29":[r,i],"30,31,32,33,34":[r,{10:[1,2,3,4,5]}],"35,36,37,38,39":[t,i],"40,41,42,43,44":[t,s],"45,46,47,48,49":[t,n],"50,51,52,53,54":[t,u],"55,56,57,58,59":[t,I]},hours:{"0,12":[E,{7:[1,2,3,4]}],"1,13":[{1:[1,2,6,7]},{1:[9,10,11]}],"2,14":[E,{2:[1,2,3]}],"3,15":[E,{2:[5,6,7,8]}],"4,16":[E,{3:[1,2,3,4,5,6]}],"5,17":[E,{3:[7,8,9,10,11]}],"6,18":[E,{4:[1,2,3,4]}],"7,19":[E,{4:[6,7,8,9,10]}],"8,20":[E,{5:[1,2,3,4]}],"9,21":[E,{5:[5,6,7,8,9]}],"10,22":[E,{6:[3,4,5,6]}],"11,23":[E,{6:[8,9,10,11]}]},getHour:function(e){var E=e.getHours();return 35<=e.getMinutes()?(E+1)%24:E}};jQuery.fritteli.uhr.register("es",N)}(),function(e){"use strict";var E={8:[1,2]},r={7:[1,2,3,4,5]},t={6:[6,7,8,9,10,11]},I={9:[7,8,9,10]},u={7:[9,10,11]},n={8:[4,5,6,7,8]},s={9:[1,2,3,4,5]},i={9:[1,2,3,4,5,6,7,8,9,10]},N={version:2,language:"Français",letters:["ILNESTODEUX","QUATRETROIS","NEUFUNESEPT","HUITSIXCINQ","MIDIXMINUIT","ONZERHEURES","MOINSOLEDIX","ETRQUARTPMD","VINGT-CINQU","ETSDEMIEPAM"],permanent:{1:[1,2,4,5,6]},minutes:{"5,6,7,8,9":I,"10,11,12,13,14":u,"15,16,17,18,19":[E,n],"20,21,22,23,24":s,"25,26,27,28,29":i,"30,31,32,33,34":[E,{10:[4,5,6,7,8]}],"35,36,37,38,39":[r,i],"40,41,42,43,44":[r,s],"45,46,47,48,49":[r,{7:[7,8]},n],"50,51,52,53,54":[r,u],"55,56,57,58,59":[r,I]},hours:{0:{5:[6,7,8,9,10,11]},"1,13":[{3:[5,6,7]},t],"2,14":[{1:[8,9,10,11]},t],"3,15":[{2:[7,8,9,10,11]},t],"4,16":[{2:[1,2,3,4,5,6]},t],"5,17":[{4:[8,9,10,11]},t],"6,18":[{4:[5,6,7]},t],"7,19":[{3:[8,9,10,11]},t],"8,20":[{4:[1,2,3,4]},t],"9,21":[{3:[1,2,3,4]},t],"10,22":[{5:[3,4,5]},t],"11,23":[{6:[1,2,3,4]},t],12:{5:[1,2,3,4]}},getHour:function(e){var E=e.getHours();return 35<=e.getMinutes()?(E+1)%24:E}};jQuery.fritteli.uhr.register("fr",N)}(),function(e){"use strict";var E={1:[1,2,3,4,6,7]},r={8:[1]},t={7:[8,9,10,11]},I={9:[6,7,8,9,10,11]},u={10:[1,2,3,4,5]},n={8:[3,4,6,7,8,9,10,11]},s={9:[1,2,3,4,5]},i={9:[1,2,3,4,5,6,7,8,9,10,11]},N={version:2,language:"Italiano",letters:["SONORLEBORE","ÈRL'UNASDUE","TREOTTONOVE","DIECIUNDICI","DODICISETTE","QUATTROCSEI","CINQUEAMENO","ECUNOQUARTO","VENTICINQUE","DIECIPMEZZA"],permanent:[],minutes:{"5,6,7,8,9":[r,I],"10,11,12,13,14":[r,u],"15,16,17,18,19":[r,n],"20,21,22,23,24":[r,s],"25,26,27,28,29":[r,i],"30,31,32,33,34":[r,{10:[7,8,9,10,11]}],"35,36,37,38,39":[t,i],"40,41,42,43,44":[t,s],"45,46,47,48,49":[t,n],"50,51,52,53,54":[t,u],"55,56,57,58,59":[t,I]},hours:{"0,12":[E,{5:[1,2,3,4,5,6]}],"1,13":[{2:[1,3,4]},{2:[5,6,7]}],"2,14":[E,{2:[9,10,11]}],"3,15":[E,{3:[1,2,3]}],"4,16":[E,{6:[1,2,3,4,5,6,7]}],"5,17":[E,{7:[1,2,3,4,5,6]}],"6,18":[E,{6:[9,10,11]}],"7,19":[E,{5:[7,8,9,10,11]}],"8,20":[E,{3:[4,5,6,7]}],"9,21":[E,{3:[8,9,10,11]}],"10,22":[E,{4:[1,2,3,4,5]}],"11,23":[E,{4:[6,7,8,9,10,11]}]},getHour:function(e){var E=e.getHours();return 35<=e.getMinutes()?(E+1)%24:E}};jQuery.fritteli.uhr.register("it",N)}(),function(e){"use strict";var E={3:[1,2,3,4]},r={2:[8,9,10,11]},t={4:[1,2,3,4]},I={1:[8,9,10,11]},u={2:[1,2,3,4]},n={3:[7,8,9,10,11]},s={version:2,language:"Nederlands",letters:["HETKISAVIJF","TIENBTZVOOR","OVERMEKWART","HALFSPWOVER","VOORTHGEENS","TWEEPVCDRIE","VIERVIJFZES","ZEVENONEGEN","ACHTTIENELF","TWAALFBFUUR"],permanent:{1:[1,2,3,5,6]},minutes:{"0,1,2,3,4":{10:[9,10,11]},"5,6,7,8,9":[I,E],"10,11,12,13,14":[u,E],"15,16,17,18,19":[n,{4:[8,9,10,11]}],"20,21,22,23,24":[u,r,t],"25,26,27,28,29":[I,r,t],"30,31,32,33,34":t,"35,36,37,38,39":[I,E,t],"40,41,42,43,44":[u,E,t],"45,46,47,48,49":[n,{5:[1,2,3,4]}],"50,51,52,53,54":[u,r],"55,56,57,58,59":[I,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]}},getHour:function(e){var E=e.getHours();return 20<=e.getMinutes()?(E+1)%24:E}};jQuery.fritteli.uhr.register("nl",s)}(),function(e){"use strict";var E={1:[1]},r={1:[2,3,4]},t={7:[8]},I={10:[5]},u={7:[7,8,9,10,11]},n={10:[7,8,9,10,11]},s={10:[1,2,3]},i={9:[1,2,4,5,6,7,8,9]},N={8:[1,2,3,4,5]},T={version:2,language:"Português",letters:["ÉSÃOUMATRÊS","MEIOLDIADEZ","DUASEISETEY","QUATROHNOVE","CINCOITONZE","ZMEIALNOITE","HORASYMENOS","VINTECAMEIA","UMVQUARTOPM","DEZOEYCINCO"],minutes:{"5,6,7,8,9":[t,n],"10,11,12,13,14":[t,s],"15,16,17,18,19":[t,i],"20,21,22,23,24":[t,N],"25,26,27,28,29":[t,N,I,n],"30,31,32,33,34":[t,{8:[8,9,10,11]}],"35,36,37,38,39":[u,N,I,n],"40,41,42,43,44":[u,N],"45,46,47,48,49":[u,i],"50,51,52,53,54":[u,s],"55,56,57,58,59":[u,n]},hours:{0:[E,{6:[2,3,4,5,7,8,9,10,11]}],12:[E,{2:[1,2,3,4,6,7,8]}],"1,13":[E,{1:[5,6,7]}],"2,14":[r,{3:[1,2,3,4]}],"3,15":[r,{1:[8,9,10,11]}],"4,16":[r,{4:[1,2,3,4,5,6]}],"5,17":[r,{5:[1,2,3,4,5]}],"6,18":[r,{3:[4,5,6,7]}],"7,19":[r,{3:[7,8,9,10]}],"8,20":[r,{5:[5,6,7,8]}],"9,21":[r,{4:[8,9,10,11]}],"10,22":[r,{2:[9,10,11]}],"11,23":[r,{5:[8,9,10,11]}]},getHour:function(e){var E=e.getHours();return 35<=e.getMinutes()?(E+1)%24:E}};jQuery.fritteli.uhr.register("pt",T)}(); \ No newline at end of file +"use strict";var e,E,r,t,I,n,u;u={version:2,language:"Deutsch",letters:["ESKISTAFÜNF","ZEHNZWANZIG","DREIVIERTEL","VORFUNKNACH","HALBAELFÜNF","EINSXAMZWEI","DREIPMJVIER","SECHSNLACHT","SIEBENZWÖLF","ZEHNEUNKUHR"],permanent:{1:[1,2,4,5,6]},minutes:{"0,1,2,3,4":{10:[9,10,11]},"5,6,7,8,9":[t={1:[8,9,10,11]},e={4:[8,9,10,11]}],"10,11,12,13,14":[I={2:[1,2,3,4]},e],"15,16,17,18,19":[{3:[5,6,7,8,9,10,11]},e],"20,21,22,23,24":[n={2:[5,6,7,8,9,10,11]},e],"25,26,27,28,29":[t,E={4:[1,2,3]},r={5:[1,2,3,4]}],"30,31,32,33,34":r,"35,36,37,38,39":[t,e,r],"40,41,42,43,44":[n,E],"45,46,47,48,49":{3:[1,2,3,4,5,6,7,8,9,10,11]},"50,51,52,53,54":[I,E],"55,56,57,58,59":[t,E]},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]}}},jQuery.fritteli.uhr.register("de",u),function(e){var E={4:[1,2]},r={3:[9,10,11]},t={4:[4,5,6,7,8]},I={1:[9,10,11]},n={2:[9,10,11]},u={2:[1,2,3,4,5,6]},i={3:[1,2,3,4,5,6]},N={version:2,language:"Bärndütsch",letters:["ESKISCHAFÜF","VIERTUBFZÄÄ","ZWÄNZGSIVOR","ABOHAUBIEGE","EISZWÖISDRÜ","VIERIFÜFIQT","SÄCHSISIBNI","ACHTINÜNIEL","ZÄNIERBEUFI","ZWÖUFINAUHR"],permanent:{1:[1,2,4,5,6,7]},minutes:{"5,6,7,8,9":[I,E],"10,11,12,13,14":[n,E],"15,16,17,18,19":[u,E],"20,21,22,23,24":[i,E],"25,26,27,28,29":[I,r,t],"30,31,32,33,34":t,"35,36,37,38,39":[I,E,t],"40,41,42,43,44":[i,r],"45,46,47,48,49":[u,r],"50,51,52,53,54":[n,r],"55,56,57,58,59":[I,r]},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]}}};jQuery.fritteli.uhr.register("de_CH",N)}(),function(e){var E={4:[4,5]},r={4:[1,2,3]},t={4:[7,8,9,10,11]},I={1:[9,10,11]},n={2:[9,10,11]},u={2:[1,2,3,4,5,6]},i={3:[1,2,3,4,5,6]},N={version:2,language:"Bärndütsch (genau)",letters:["ESKISCHAFÜF","VIERTUBFZÄÄ","ZWÄNZGGENAU","VORABOHAUBI","EISZWÖISDRÜ","VIERIFÜFIQT","SÄCHSISIBNI","ACHTINÜNIEL","ZÄNIERBEUFI","ZWÖUFINAUHR"],permanent:{1:[1,2,4,5,6,7]},minutes:{0:{3:[7,8,9,10,11]},"5,6,7,8,9":[I,E],"10,11,12,13,14":[n,E],"15,16,17,18,19":[u,E],"20,21,22,23,24":[i,E],"25,26,27,28,29":[I,r,t],"30,31,32,33,34":t,"35,36,37,38,39":[I,E,t],"40,41,42,43,44":[i,r],"45,46,47,48,49":[u,r],"50,51,52,53,54":[n,r],"55,56,57,58,59":[I,r]},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]}}};jQuery.fritteli.uhr.register("de_CH_genau",N)}(),function(e){var E={4:[4,5,6,7,8,9,10,11]},r={5:[8]},t={5:[4,5,6,7]},I={2:[1,2,3]},n={4:[1,2]},u={3:[4,5,6,7,8]},i={2:[4,5,6,7]},N={6:[8,9,10,11]},s={version:2,language:"Dansk",letters:["KLOKKENVERO","FEMTYVESKLA","OJEKVARTVAT","TIAMINUTTER","VEMOVERILMF","MONALISHALV","ETTOTREFIRE","FEMSEKSRSYV","OTTERNIMETI","ELLEVEATOLV"],permanent:{1:[1,2,3,4,5,6,7,9,10]},minutes:{"5,6,7,8,9":[I,E,t],"10,11,12,13,14":[n,E,t],"15,16,17,18,19":[u,t],"20,21,22,23,24":[i,E,t],"25,26,27,28,29":[I,E,r,N],"30,31,32,33,34":[N],"35,36,37,38,39":[I,E,t,N],"40,41,42,43,44":[i,E,r],"45,46,47,48,49":[u,r],"50,51,52,53,54":[n,E,r],"55,56,57,58,59":[I,E,r]},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]}},getHour:function(e){var E=e.getHours();return e.getMinutes()>=25?(E+1)%24:E}};jQuery.fritteli.uhr.register("dk",s)}(),function(e){var E={4:[10,11]},r={5:[1,2,3,4]},t={3:[7,8,9,10]},I={4:[6,7,8]},n={2:[1,3,4,5,6,7,8,9]},u={3:[1,2,3,4,5,6]},i={3:[1,2,3,4,5,6,7,8,9,10]},N={version:2,language:"English",letters:["ITLISBFAMPM","ACQUARTERDC","TWENTYFIVEX","HALFBTENFTO","PASTERUNINE","ONESIXTHREE","FOURFIVETWO","EIGHTELEVEN","SEVENTWELVE","TENSO'CLOCK"],permanent:{1:[1,2,4,5]},minutes:{"0,1,2,3,4":{10:[5,6,7,8,9,10,11]},"5,6,7,8,9":[t,r],"10,11,12,13,14":[I,r],"15,16,17,18,19":[n,r],"20,21,22,23,24":[u,r],"25,26,27,28,29":[i,r],"30,31,32,33,34":[{4:[1,2,3,4]},r],"35,36,37,38,39":[i,E],"40,41,42,43,44":[u,E],"45,46,47,48,49":[n,E],"50,51,52,53,54":[I,E],"55,56,57,58,59":[t,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]}},getHour:function(e){var E=e.getHours();return e.getMinutes()>=35?(E+1)%24:E}};jQuery.fritteli.uhr.register("en",N)}(),function(e){var E={1:[2,3,4,6,7,8]},r={7:[6]},t={7:[7,8,9,10,11]},I={9:[7,8,9,10,11]},n={8:[8,9,10,11]},u={10:[6,7,8,9,10,11]},i={8:[2,3,4,5,6,7]},N={9:[1,2,3,4,5,6,7,8,9,10,11]},s={version:2,language:"Español",letters:["ESONELASUNA","DOSITRESORE","CUATROCINCO","SEISASIETEN","OCHONUEVEYO","LADIEZSONCE","DOCELYMENOS","OVEINTEDIEZ","VEINTICINCO","MEDIACUARTO"],permanent:[],minutes:{"5,6,7,8,9":[r,I],"10,11,12,13,14":[r,n],"15,16,17,18,19":[r,u],"20,21,22,23,24":[r,i],"25,26,27,28,29":[r,N],"30,31,32,33,34":[r,{10:[1,2,3,4,5]}],"35,36,37,38,39":[t,N],"40,41,42,43,44":[t,i],"45,46,47,48,49":[t,u],"50,51,52,53,54":[t,n],"55,56,57,58,59":[t,I]},hours:{"0,12":[E,{7:[1,2,3,4]}],"1,13":[{1:[1,2,6,7]},{1:[9,10,11]}],"2,14":[E,{2:[1,2,3]}],"3,15":[E,{2:[5,6,7,8]}],"4,16":[E,{3:[1,2,3,4,5,6]}],"5,17":[E,{3:[7,8,9,10,11]}],"6,18":[E,{4:[1,2,3,4]}],"7,19":[E,{4:[6,7,8,9,10]}],"8,20":[E,{5:[1,2,3,4]}],"9,21":[E,{5:[5,6,7,8,9]}],"10,22":[E,{6:[3,4,5,6]}],"11,23":[E,{6:[8,9,10,11]}]},getHour:function(e){var E=e.getHours();return e.getMinutes()>=35?(E+1)%24:E}};jQuery.fritteli.uhr.register("es",s)}(),function(e){var E={8:[1,2]},r={7:[1,2,3,4,5]},t={6:[6,7,8,9,10,11]},I={9:[7,8,9,10]},n={7:[9,10,11]},u={8:[4,5,6,7,8]},i={9:[1,2,3,4,5]},N={9:[1,2,3,4,5,6,7,8,9,10]},s={version:2,language:"Français",letters:["ILNESTODEUX","QUATRETROIS","NEUFUNESEPT","HUITSIXCINQ","MIDIXMINUIT","ONZERHEURES","MOINSOLEDIX","ETRQUARTPMD","VINGT-CINQU","ETSDEMIEPAM"],permanent:{1:[1,2,4,5,6]},minutes:{"5,6,7,8,9":I,"10,11,12,13,14":n,"15,16,17,18,19":[E,u],"20,21,22,23,24":i,"25,26,27,28,29":N,"30,31,32,33,34":[E,{10:[4,5,6,7,8]}],"35,36,37,38,39":[r,N],"40,41,42,43,44":[r,i],"45,46,47,48,49":[r,{7:[7,8]},u],"50,51,52,53,54":[r,n],"55,56,57,58,59":[r,I]},hours:{0:{5:[6,7,8,9,10,11]},"1,13":[{3:[5,6,7]},t],"2,14":[{1:[8,9,10,11]},t],"3,15":[{2:[7,8,9,10,11]},t],"4,16":[{2:[1,2,3,4,5,6]},t],"5,17":[{4:[8,9,10,11]},t],"6,18":[{4:[5,6,7]},t],"7,19":[{3:[8,9,10,11]},t],"8,20":[{4:[1,2,3,4]},t],"9,21":[{3:[1,2,3,4]},t],"10,22":[{5:[3,4,5]},t],"11,23":[{6:[1,2,3,4]},t],12:{5:[1,2,3,4]}},getHour:function(e){var E=e.getHours();return e.getMinutes()>=35?(E+1)%24:E}};jQuery.fritteli.uhr.register("fr",s)}(),function(e){var E={1:[1,2,3,4,6,7]},r={8:[1]},t={7:[8,9,10,11]},I={9:[6,7,8,9,10,11]},n={10:[1,2,3,4,5]},u={8:[3,4,6,7,8,9,10,11]},i={9:[1,2,3,4,5]},N={9:[1,2,3,4,5,6,7,8,9,10,11]},s={version:2,language:"Italiano",letters:["SONORLEBORE","ÈRL'UNASDUE","TREOTTONOVE","DIECIUNDICI","DODICISETTE","QUATTROCSEI","CINQUEAMENO","ECUNOQUARTO","VENTICINQUE","DIECIPMEZZA"],permanent:[],minutes:{"5,6,7,8,9":[r,I],"10,11,12,13,14":[r,n],"15,16,17,18,19":[r,u],"20,21,22,23,24":[r,i],"25,26,27,28,29":[r,N],"30,31,32,33,34":[r,{10:[7,8,9,10,11]}],"35,36,37,38,39":[t,N],"40,41,42,43,44":[t,i],"45,46,47,48,49":[t,u],"50,51,52,53,54":[t,n],"55,56,57,58,59":[t,I]},hours:{"0,12":[E,{5:[1,2,3,4,5,6]}],"1,13":[{2:[1,3,4]},{2:[5,6,7]}],"2,14":[E,{2:[9,10,11]}],"3,15":[E,{3:[1,2,3]}],"4,16":[E,{6:[1,2,3,4,5,6,7]}],"5,17":[E,{7:[1,2,3,4,5,6]}],"6,18":[E,{6:[9,10,11]}],"7,19":[E,{5:[7,8,9,10,11]}],"8,20":[E,{3:[4,5,6,7]}],"9,21":[E,{3:[8,9,10,11]}],"10,22":[E,{4:[1,2,3,4,5]}],"11,23":[E,{4:[6,7,8,9,10,11]}]},getHour:function(e){var E=e.getHours();return e.getMinutes()>=35?(E+1)%24:E}};jQuery.fritteli.uhr.register("it",s)}(),function(e){var E={3:[1,2,3,4]},r={2:[8,9,10,11]},t={4:[1,2,3,4]},I={1:[8,9,10,11]},n={2:[1,2,3,4]},u={3:[7,8,9,10,11]},i={version:2,language:"Nederlands",letters:["HETKISAVIJF","TIENBTZVOOR","OVERMEKWART","HALFSPWOVER","VOORTHGEENS","TWEEPVCDRIE","VIERVIJFZES","ZEVENONEGEN","ACHTTIENELF","TWAALFBFUUR"],permanent:{1:[1,2,3,5,6]},minutes:{"0,1,2,3,4":{10:[9,10,11]},"5,6,7,8,9":[I,E],"10,11,12,13,14":[n,E],"15,16,17,18,19":[u,{4:[8,9,10,11]}],"20,21,22,23,24":[n,r,t],"25,26,27,28,29":[I,r,t],"30,31,32,33,34":t,"35,36,37,38,39":[I,E,t],"40,41,42,43,44":[n,E,t],"45,46,47,48,49":[u,{5:[1,2,3,4]}],"50,51,52,53,54":[n,r],"55,56,57,58,59":[I,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]}},getHour:function(e){var E=e.getHours();return e.getMinutes()>=20?(E+1)%24:E}};jQuery.fritteli.uhr.register("nl",i)}(),function(e){var E={1:[1]},r={1:[2,3,4]},t={7:[8]},I={10:[5]},n={7:[7,8,9,10,11]},u={10:[7,8,9,10,11]},i={10:[1,2,3]},N={9:[1,2,4,5,6,7,8,9]},s={8:[1,2,3,4,5]},T={version:2,language:"Português",letters:["ÉSÃOUMATRÊS","MEIOLDIADEZ","DUASEISETEY","QUATROHNOVE","CINCOITONZE","ZMEIALNOITE","HORASYMENOS","VINTECAMEIA","UMVQUARTOPM","DEZOEYCINCO"],minutes:{"5,6,7,8,9":[t,u],"10,11,12,13,14":[t,i],"15,16,17,18,19":[t,N],"20,21,22,23,24":[t,s],"25,26,27,28,29":[t,s,I,u],"30,31,32,33,34":[t,{8:[8,9,10,11]}],"35,36,37,38,39":[n,s,I,u],"40,41,42,43,44":[n,s],"45,46,47,48,49":[n,N],"50,51,52,53,54":[n,i],"55,56,57,58,59":[n,u]},hours:{0:[E,{6:[2,3,4,5,7,8,9,10,11]}],12:[E,{2:[1,2,3,4,6,7,8]}],"1,13":[E,{1:[5,6,7]}],"2,14":[r,{3:[1,2,3,4]}],"3,15":[r,{1:[8,9,10,11]}],"4,16":[r,{4:[1,2,3,4,5,6]}],"5,17":[r,{5:[1,2,3,4,5]}],"6,18":[r,{3:[4,5,6,7]}],"7,19":[r,{3:[7,8,9,10]}],"8,20":[r,{5:[5,6,7,8]}],"9,21":[r,{4:[8,9,10,11]}],"10,22":[r,{2:[9,10,11]}],"11,23":[r,{5:[8,9,10,11]}]},getHour:function(e){var E=e.getHours();return e.getMinutes()>=35?(E+1)%24:E}};jQuery.fritteli.uhr.register("pt",T)}(); diff --git a/dist/jquery.uhr.main.js b/dist/jquery.uhr.main.js index bf059ec..5936457 100644 --- a/dist/jquery.uhr.main.js +++ b/dist/jquery.uhr.main.js @@ -1,805 +1,820 @@ -/*! uhr - v9.0.0-dev.0 - 2021-02-24 -* http://bärneruhr.ch/ -* Copyright (c) 2021 Manuel Friedli; Licensed GPL-3.0 */ -(function ($) { +(function () { 'use strict'; - var uhrGlobals = { - "id": 0, - "languages": [], - "themes": [], - registerLanguage: function registerLanguage(code, language) { - var alreadyExists = uhrGlobals.languages.some(function (element) { - if (code === element.code) { - console.error("Error: Language code '" + code + "' cannot be registered for language '" + language.language + - "' because it is already registered for language '" + element.language + "'!"); - return true; - } - return false; - }); - if (!alreadyExists) { - language.code = code; - uhrGlobals.languages.push(language); - } - } - }; - // auto-detect themes - $('link[rel=stylesheet]').each(function (index, item) { - var styleSheet = $(item); - var styleClass = styleSheet.attr('data-class'); - if (styleClass !== undefined) { - var name = styleSheet.attr('data-name'); - if (name === undefined) { - name = styleClass; - } - uhrGlobals.themes.push({'styleClass': styleClass, 'name': name}); - } - }); - // fall-back if no theme was included - if (uhrGlobals.themes.length === 0) { - uhrGlobals.themes.push({}); - } + /* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - // public interface methods (exported later) - var setCookie; - var isOn; - var update; - var start = function start() { - if (!isOn.bind(this)()) { - this.timer = window.setInterval(function () { - this.options.time = new Date(); - update.bind(this)(); - }.bind(this), 1000); - update.bind(this)(); - setCookie.bind(this)('uhr-status', 'on'); - } - }; - var stop = function stop() { - if (isOn.bind(this)()) { - window.clearInterval(this.timer); - this.timer = null; - update.bind(this)(); - setCookie.bind(this)('uhr-status', 'off'); - } - }; - var toggle = function toggle() { - if (isOn.bind(this)()) { - this.stop(); - } else { - this.start(); - } - }; - var language; + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - /** - * Ein Buchstabe. Hilfsklasse für den Renderer und Inhalt der Layout-Arrays. - * @param value Der Buchstabe, der Dargestellt werden soll. - * @param style Die CSS-Styleklassen des Buchstabens. + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ - function Letter(value, style) { - var myValue = value; - var myStyle = style || ''; - this.addStyle = function (style) { - if (myStyle === '') { - myStyle = style; - } else { - myStyle += ' ' + style; - } - }; - this.toString = function () { - return '' + myValue + ''; - }; - } - - function UhrRendererV2Delegate(layout) { - var vorne0 = { - 3: [2, 3, 4], - 4: [1, 5], - 5: [1, 4, 5], - 6: [1, 3, 5], - 7: [1, 2, 5], - 8: [1, 5], - 9: [2, 3, 4] - }; - var hinten0 = { - 3: [8, 9, 10], - 4: [7, 11], - 5: [7, 10, 11], - 6: [7, 9, 11], - 7: [7, 8, 11], - 8: [7, 11], - 9: [8, 9, 10] - }; - var vorne1 = { - 3: [3], - 4: [2, 3], - 5: [3], - 6: [3], - 7: [3], - 8: [3], - 9: [2, 3, 4] - }; - var hinten1 = { - 3: [9], - 4: [8, 9], - 5: [9], - 6: [9], - 7: [9], - 8: [9], - 9: [8, 9, 10] - }; - var vorne2 = { - 3: [2, 3, 4], - 4: [1, 5], - 5: [5], - 6: [4], - 7: [3], - 8: [2], - 9: [1, 2, 3, 4, 5] - }; - var hinten2 = { - 3: [8, 9, 10], - 4: [7, 11], - 5: [11], - 6: [10], - 7: [9], - 8: [8], - 9: [7, 8, 9, 10, 11] - }; - var vorne3 = { - 3: [1, 2, 3, 4, 5], - 4: [4], - 5: [3], - 6: [4], - 7: [5], - 8: [1, 5], - 9: [2, 3, 4] - }; - var hinten3 = { - 3: [7, 8, 9, 10, 11], - 4: [10], - 5: [9], - 6: [10], - 7: [11], - 8: [7, 11], - 9: [8, 9, 10] - }; - var vorne4 = { - 3: [4], - 4: [3, 4], - 5: [2, 4], - 6: [1, 4], - 7: [1, 2, 3, 4, 5], - 8: [4], - 9: [4] - }; - var hinten4 = { - 3: [10], - 4: [9, 10], - 5: [8, 10], - 6: [7, 10], - 7: [7, 8, 9, 10, 11], - 8: [10], - 9: [10] - }; - var vorne5 = { - 3: [1, 2, 3, 4, 5], - 4: [1], - 5: [1, 2, 3, 4], - 6: [5], - 7: [5], - 8: [1, 5], - 9: [2, 3, 4] - }; - var hinten5 = { - 3: [7, 8, 9, 10, 11], - 4: [7], - 5: [7, 8, 9, 10], - 6: [11], - 7: [11], - 8: [7, 11], - 9: [8, 9, 10] - }; - var hinten6 = { - 3: [9, 10], - 4: [8], - 5: [7], - 6: [7, 8, 9, 10], - 7: [7, 11], - 8: [7, 11], - 9: [8, 9, 10] - }; - var hinten7 = { - 3: [7, 8, 9, 10, 11], - 4: [11], - 5: [10], - 6: [9], - 7: [8], - 8: [8], - 9: [8] - }; - var hinten8 = { - 3: [8, 9, 10], - 4: [7, 11], - 5: [7, 11], - 6: [8, 9, 10], - 7: [7, 11], - 8: [7, 11], - 9: [8, 9, 10] - }; - var hinten9 = { - 3: [8, 9, 10], - 4: [7, 11], - 5: [7, 11], - 6: [8, 9, 10, 11], - 7: [11], - 8: [10], - 9: [8, 9] - }; - var seconds = { - "0": [vorne0, hinten0], - "1": [vorne0, hinten1], - "2": [vorne0, hinten2], - "3": [vorne0, hinten3], - "4": [vorne0, hinten4], - "5": [vorne0, hinten5], - "6": [vorne0, hinten6], - "7": [vorne0, hinten7], - "8": [vorne0, hinten8], - "9": [vorne0, hinten9], - "10": [vorne1, hinten0], - "11": [vorne1, hinten1], - "12": [vorne1, hinten2], - "13": [vorne1, hinten3], - "14": [vorne1, hinten4], - "15": [vorne1, hinten5], - "16": [vorne1, hinten6], - "17": [vorne1, hinten7], - "18": [vorne1, hinten8], - "19": [vorne1, hinten9], - "20": [vorne2, hinten0], - "21": [vorne2, hinten1], - "22": [vorne2, hinten2], - "23": [vorne2, hinten3], - "24": [vorne2, hinten4], - "25": [vorne2, hinten5], - "26": [vorne2, hinten6], - "27": [vorne2, hinten7], - "28": [vorne2, hinten8], - "29": [vorne2, hinten9], - "30": [vorne3, hinten0], - "31": [vorne3, hinten1], - "32": [vorne3, hinten2], - "33": [vorne3, hinten3], - "34": [vorne3, hinten4], - "35": [vorne3, hinten5], - "36": [vorne3, hinten6], - "37": [vorne3, hinten7], - "38": [vorne3, hinten8], - "39": [vorne3, hinten9], - "40": [vorne4, hinten0], - "41": [vorne4, hinten1], - "42": [vorne4, hinten2], - "43": [vorne4, hinten3], - "44": [vorne4, hinten4], - "45": [vorne4, hinten5], - "46": [vorne4, hinten6], - "47": [vorne4, hinten7], - "48": [vorne4, hinten8], - "49": [vorne4, hinten9], - "50": [vorne5, hinten0], - "51": [vorne5, hinten1], - "52": [vorne5, hinten2], - "53": [vorne5, hinten3], - "54": [vorne5, hinten4], - "55": [vorne5, hinten5], - "56": [vorne5, hinten6], - "57": [vorne5, hinten7], - "58": [vorne5, hinten8], - "59": [vorne5, hinten9] - }; - - function parseObject(letters, styleClass, object) { - if (typeof object !== 'undefined' && object !== null) { - Object.keys(object).forEach(function (y) { - var highlightLetters = object[y]; - highlightLetters.forEach(function (x) { - letters[y - 1][x - 1].addStyle(styleClass); - }); - }); - } - } - - function parseArrayOrObject(letters, styleClass, input) { - if (typeof input !== 'undefined' && input !== null) { - if (Array.isArray(input)) { - input.forEach(function (item) { - parseObject(letters, styleClass, item); - }); - } else { - parseObject(letters, styleClass, input); - } - } - } - - function parseTimeDefinition(letters, styleClass, definition) { - if (typeof definition !== 'undefined' && definition !== null) { - Object.keys(definition).forEach(function (listString) { - var array = listString.split(','); - var highlightLetters = definition[listString]; - array.forEach(function (item) { - parseArrayOrObject(letters, styleClass + item, highlightLetters); - }); - }); - } - } - - this.parse = function parse() { - var letters = []; - layout.letters.forEach(function (string) { - var line = []; - for (var c = 0; c < string.length; c++) { - var character = new Letter(string[c]); - line.push(character); - } - letters.push(line); - }); - parseArrayOrObject(letters, 'on', layout.permanent); - if (typeof layout.seconds !== 'undefined' && layout.seconds !== null) { - parseTimeDefinition(letters, 'second', layout.seconds); - } else { - parseTimeDefinition(letters, 'second', seconds); - } - parseTimeDefinition(letters, 'minute', layout.minutes); - parseTimeDefinition(letters, 'hour', layout.hours); - return letters; - }; - } - - /** - * Hilfsklasse zum Rendern der Uhr. - * @param layout Layout-Objekt, das gerendert werden soll. - * @param renderarea Das jQuery-gewrappte HTML-Element, auf dem gerendert werden soll. - */ - function UhrRenderer(layout, renderarea) { - this.render = function render(beforeshow) { - if (layout.parsed === undefined) { - switch (layout.version) { - case 2: - var delegate = new UhrRendererV2Delegate(layout); - var parsedLayout = delegate.parse(); - Object.defineProperty(layout, "parsed", { - "value": parsedLayout, - "writable": false, - "configurable": false - }); - break; - default: - console.warn("Unknown layout version: '" + layout.version + "'"); - return; - } - } - var letters = layout.parsed; - renderarea.fadeOut('fast', function () { - renderarea.empty(); - letters.forEach(function (line, index, array) { - line.forEach(function (letter) { - renderarea.append(letter.toString()); - }); - if (index < array.length - 1) { - renderarea.append('
'); + (function ($) { + var uhrGlobals = { + "id": 0, + "languages": [], + "themes": [], + registerLanguage: function registerLanguage(code, language) { + var alreadyExists = uhrGlobals.languages.some(function (element) { + if (code === element.code) { + console.error("Error: Language code '" + code + "' cannot be registered for language '" + language.language + + "' because it is already registered for language '" + element.language + "'!"); + return true; } + return false; }); - if (typeof beforeshow === 'function') { - beforeshow(); + if (!alreadyExists) { + language.code = code; + uhrGlobals.languages.push(language); } - renderarea.fadeIn('fast'); - }); - }; - } - - var setLanguage = function setLanguage(languageKey) { - if (languageKey !== this.options.language) { - this.options.language = languageKey; - var renderer = new UhrRenderer(language.bind(this)(), this.element.find('.letterarea')); - renderer.render.bind(this)(function () { - this.currentMinute = -1; - update.bind(this)(); - }.bind(this)); - setCookie.bind(this)('uhr-language', languageKey); - update.bind(this)(); - } - }; - var setTheme = function setTheme(theme) { - if (theme !== this.options.theme) { - this.element.removeClass(this.options.theme).addClass(theme); - $('#uhr-onoffswitch' + this.id).removeClass(this.options.theme).addClass(theme); - this.options.theme = theme; - setCookie.bind(this)('uhr-theme', theme); - } - }; - var setTime = function setTime(time) { - this.currentMinute = -1; - if (time === null) { - this.options.time = new Date(); - } else { - if (this.timer !== null) { - window.clearInterval(this.timer); } - this.options.time = time; - } - update.bind(this)(); - }; - var setMode = function (mode) { - this.options.mode = mode; - this.currentMinute = -1; - update.bind(this)(); - setCookie.bind(this)('uhr-mode', mode); - }; - var setWidth = function setWidth(width) { - var e = this.element; - e.css('width', width); - var realWidth = e.width(); - e.width(realWidth); - e.height(realWidth); - e.css('font-size', (realWidth / 40) + 'px'); - }; + }; - // private interface methods - var setupHTML; - var wireFunctionality; - var create = function create() { - this.id = uhrGlobals.id++; - this.timer = null; - this.currentMinute = -1; - var userTime = this.options.time; - var hash, params; - if (this.options.time === undefined) { - this.options.time = new Date(); - } - // parse the URL params - hash = window.location.hash; - if (hash !== undefined && typeof hash === 'string' && hash.charAt(0) === '#') { - hash = hash.substring(1); - hash = decodeURIComponent(hash); - params = hash.split('&'); - params.forEach(function (element) { - var pair = element.split('='); - var key = pair[0]; - var value = pair[1]; - switch (key) { - case 'l': - case 'language': - this.options.language = value; - this.options.force = true; - break; - case 't': - case 'theme': - this.options.theme = value; - this.options.force = true; - break; - case 'm': - case 'mode': - this.options.mode = value; - this.options.force = true; - break; - case 's': - case 'status': - this.options.status = value; - this.options.force = true; - break; + // auto-detect themes + $('link[rel=stylesheet]').each(function (index, item) { + var styleSheet = $(item); + var styleClass = styleSheet.attr('data-class'); + if (styleClass !== undefined) { + var name = styleSheet.attr('data-name'); + if (name === undefined) { + name = styleClass; } - }.bind(this)); + uhrGlobals.themes.push({'styleClass': styleClass, 'name': name}); + } + }); + // fall-back if no theme was included + if (uhrGlobals.themes.length === 0) { + uhrGlobals.themes.push({}); } - // end parse the URL params - setupHTML.bind(this)(); - wireFunctionality.bind(this)(); - if (userTime !== undefined) { - this.time(userTime); - } - }; - // private helper methods (not exported) - var toggleConfigScreen = function toggleConfigScreen() { - $('#uhr-controlpanel' + this.id).toggle('fast'); - }; - // set up - setupHTML = function setupHTML() { - var e = this.element; - // Base clock area - e.addClass('uhr'); - e.empty(); - e.append(''); - e.append(''); - e.append(''); - e.append(''); - e.append('
'); - e.append('
'); - setWidth.bind(this)(this.options.width); - if (this.options.controls) { - var controlpanel = $('
'); - var content = $('
'); - controlpanel.append(content); + // public interface methods (exported later) + var setCookie; + var isOn; + var update; + var start = function start() { + if (!isOn.bind(this)()) { + this.timer = window.setInterval(function () { + this.options.time = new Date(); + update.bind(this)(); + }.bind(this), 1000); + update.bind(this)(); + setCookie.bind(this)('uhr-status', 'on'); + } + }; + var stop = function stop() { + if (isOn.bind(this)()) { + window.clearInterval(this.timer); + this.timer = null; + update.bind(this)(); + setCookie.bind(this)('uhr-status', 'off'); + } + }; + var toggle = function toggle() { + if (isOn.bind(this)()) { + this.stop(); + } else { + this.start(); + } + }; + var language; + + /** + * Ein Buchstabe. Hilfsklasse für den Renderer und Inhalt der Layout-Arrays. + * @param value Der Buchstabe, der Dargestellt werden soll. + * @param style Die CSS-Styleklassen des Buchstabens. + */ + function Letter(value, style) { + var myValue = value; + var myStyle = style || ''; + this.addStyle = function (style) { + if (myStyle === '') { + myStyle = style; + } else { + myStyle += ' ' + style; + } + }; + this.toString = function () { + return '' + myValue + ''; + }; + } + + function UhrRendererV2Delegate(layout) { + var vorne0 = { + 3: [2, 3, 4], + 4: [1, 5], + 5: [1, 4, 5], + 6: [1, 3, 5], + 7: [1, 2, 5], + 8: [1, 5], + 9: [2, 3, 4] + }; + var hinten0 = { + 3: [8, 9, 10], + 4: [7, 11], + 5: [7, 10, 11], + 6: [7, 9, 11], + 7: [7, 8, 11], + 8: [7, 11], + 9: [8, 9, 10] + }; + var vorne1 = { + 3: [3], + 4: [2, 3], + 5: [3], + 6: [3], + 7: [3], + 8: [3], + 9: [2, 3, 4] + }; + var hinten1 = { + 3: [9], + 4: [8, 9], + 5: [9], + 6: [9], + 7: [9], + 8: [9], + 9: [8, 9, 10] + }; + var vorne2 = { + 3: [2, 3, 4], + 4: [1, 5], + 5: [5], + 6: [4], + 7: [3], + 8: [2], + 9: [1, 2, 3, 4, 5] + }; + var hinten2 = { + 3: [8, 9, 10], + 4: [7, 11], + 5: [11], + 6: [10], + 7: [9], + 8: [8], + 9: [7, 8, 9, 10, 11] + }; + var vorne3 = { + 3: [1, 2, 3, 4, 5], + 4: [4], + 5: [3], + 6: [4], + 7: [5], + 8: [1, 5], + 9: [2, 3, 4] + }; + var hinten3 = { + 3: [7, 8, 9, 10, 11], + 4: [10], + 5: [9], + 6: [10], + 7: [11], + 8: [7, 11], + 9: [8, 9, 10] + }; + var vorne4 = { + 3: [4], + 4: [3, 4], + 5: [2, 4], + 6: [1, 4], + 7: [1, 2, 3, 4, 5], + 8: [4], + 9: [4] + }; + var hinten4 = { + 3: [10], + 4: [9, 10], + 5: [8, 10], + 6: [7, 10], + 7: [7, 8, 9, 10, 11], + 8: [10], + 9: [10] + }; + var vorne5 = { + 3: [1, 2, 3, 4, 5], + 4: [1], + 5: [1, 2, 3, 4], + 6: [5], + 7: [5], + 8: [1, 5], + 9: [2, 3, 4] + }; + var hinten5 = { + 3: [7, 8, 9, 10, 11], + 4: [7], + 5: [7, 8, 9, 10], + 6: [11], + 7: [11], + 8: [7, 11], + 9: [8, 9, 10] + }; + var hinten6 = { + 3: [9, 10], + 4: [8], + 5: [7], + 6: [7, 8, 9, 10], + 7: [7, 11], + 8: [7, 11], + 9: [8, 9, 10] + }; + var hinten7 = { + 3: [7, 8, 9, 10, 11], + 4: [11], + 5: [10], + 6: [9], + 7: [8], + 8: [8], + 9: [8] + }; + var hinten8 = { + 3: [8, 9, 10], + 4: [7, 11], + 5: [7, 11], + 6: [8, 9, 10], + 7: [7, 11], + 8: [7, 11], + 9: [8, 9, 10] + }; + var hinten9 = { + 3: [8, 9, 10], + 4: [7, 11], + 5: [7, 11], + 6: [8, 9, 10, 11], + 7: [11], + 8: [10], + 9: [8, 9] + }; + var seconds = { + "0": [vorne0, hinten0], + "1": [vorne0, hinten1], + "2": [vorne0, hinten2], + "3": [vorne0, hinten3], + "4": [vorne0, hinten4], + "5": [vorne0, hinten5], + "6": [vorne0, hinten6], + "7": [vorne0, hinten7], + "8": [vorne0, hinten8], + "9": [vorne0, hinten9], + "10": [vorne1, hinten0], + "11": [vorne1, hinten1], + "12": [vorne1, hinten2], + "13": [vorne1, hinten3], + "14": [vorne1, hinten4], + "15": [vorne1, hinten5], + "16": [vorne1, hinten6], + "17": [vorne1, hinten7], + "18": [vorne1, hinten8], + "19": [vorne1, hinten9], + "20": [vorne2, hinten0], + "21": [vorne2, hinten1], + "22": [vorne2, hinten2], + "23": [vorne2, hinten3], + "24": [vorne2, hinten4], + "25": [vorne2, hinten5], + "26": [vorne2, hinten6], + "27": [vorne2, hinten7], + "28": [vorne2, hinten8], + "29": [vorne2, hinten9], + "30": [vorne3, hinten0], + "31": [vorne3, hinten1], + "32": [vorne3, hinten2], + "33": [vorne3, hinten3], + "34": [vorne3, hinten4], + "35": [vorne3, hinten5], + "36": [vorne3, hinten6], + "37": [vorne3, hinten7], + "38": [vorne3, hinten8], + "39": [vorne3, hinten9], + "40": [vorne4, hinten0], + "41": [vorne4, hinten1], + "42": [vorne4, hinten2], + "43": [vorne4, hinten3], + "44": [vorne4, hinten4], + "45": [vorne4, hinten5], + "46": [vorne4, hinten6], + "47": [vorne4, hinten7], + "48": [vorne4, hinten8], + "49": [vorne4, hinten9], + "50": [vorne5, hinten0], + "51": [vorne5, hinten1], + "52": [vorne5, hinten2], + "53": [vorne5, hinten3], + "54": [vorne5, hinten4], + "55": [vorne5, hinten5], + "56": [vorne5, hinten6], + "57": [vorne5, hinten7], + "58": [vorne5, hinten8], + "59": [vorne5, hinten9] + }; + + function parseObject(letters, styleClass, object) { + if (typeof object !== 'undefined' && object !== null) { + Object.keys(object).forEach(function (y) { + var highlightLetters = object[y]; + highlightLetters.forEach(function (x) { + letters[y - 1][x - 1].addStyle(styleClass); + }); + }); + } + } + + function parseArrayOrObject(letters, styleClass, input) { + if (typeof input !== 'undefined' && input !== null) { + if (Array.isArray(input)) { + input.forEach(function (item) { + parseObject(letters, styleClass, item); + }); + } else { + parseObject(letters, styleClass, input); + } + } + } + + function parseTimeDefinition(letters, styleClass, definition) { + if (typeof definition !== 'undefined' && definition !== null) { + Object.keys(definition).forEach(function (listString) { + var array = listString.split(','); + var highlightLetters = definition[listString]; + array.forEach(function (item) { + parseArrayOrObject(letters, styleClass + item, highlightLetters); + }); + }); + } + } + + this.parse = function parse() { + var letters = []; + layout.letters.forEach(function (string) { + var line = []; + for (var c = 0; c < string.length; c++) { + var character = new Letter(string[c]); + line.push(character); + } + letters.push(line); + }); + parseArrayOrObject(letters, 'on', layout.permanent); + if (typeof layout.seconds !== 'undefined' && layout.seconds !== null) { + parseTimeDefinition(letters, 'second', layout.seconds); + } else { + parseTimeDefinition(letters, 'second', seconds); + } + parseTimeDefinition(letters, 'minute', layout.minutes); + parseTimeDefinition(letters, 'hour', layout.hours); + return letters; + }; + } + + /** + * Hilfsklasse zum Rendern der Uhr. + * @param layout Layout-Objekt, das gerendert werden soll. + * @param renderarea Das jQuery-gewrappte HTML-Element, auf dem gerendert werden soll. + */ + function UhrRenderer(layout, renderarea) { + this.render = function render(beforeshow) { + if (layout.parsed === undefined) { + switch (layout.version) { + case 2: + var delegate = new UhrRendererV2Delegate(layout); + var parsedLayout = delegate.parse(); + Object.defineProperty(layout, "parsed", { + "value": parsedLayout, + "writable": false, + "configurable": false + }); + break; + default: + console.warn("Unknown layout version: '" + layout.version + "'"); + return; + } + } + var letters = layout.parsed; + renderarea.fadeOut('fast', function () { + renderarea.empty(); + letters.forEach(function (line, index, array) { + line.forEach(function (letter) { + renderarea.append(letter.toString()); + }); + if (index < array.length - 1) { + renderarea.append('
'); + } + }); + if (typeof beforeshow === 'function') { + beforeshow(); + } + renderarea.fadeIn('fast'); + }); + }; + } + + var setLanguage = function setLanguage(languageKey) { + if (languageKey !== this.options.language) { + this.options.language = languageKey; + var renderer = new UhrRenderer(language.bind(this)(), this.element.find('.letterarea')); + renderer.render.bind(this)(function () { + this.currentMinute = -1; + update.bind(this)(); + }.bind(this)); + setCookie.bind(this)('uhr-language', languageKey); + update.bind(this)(); + } + }; + var setTheme = function setTheme(theme) { + if (theme !== this.options.theme) { + this.element.removeClass(this.options.theme).addClass(theme); + $('#uhr-onoffswitch' + this.id).removeClass(this.options.theme).addClass(theme); + this.options.theme = theme; + setCookie.bind(this)('uhr-theme', theme); + } + }; + var setTime = function setTime(time) { + this.currentMinute = -1; + if (time === null) { + this.options.time = new Date(); + } else { + if (this.timer !== null) { + window.clearInterval(this.timer); + } + this.options.time = time; + } + update.bind(this)(); + }; + var setMode = function (mode) { + this.options.mode = mode; + this.currentMinute = -1; + update.bind(this)(); + setCookie.bind(this)('uhr-mode', mode); + }; + var setWidth = function setWidth(width) { + var e = this.element; + e.css('width', width); + var realWidth = e.width(); + e.width(realWidth); + e.height(realWidth); + e.css('font-size', (realWidth / 40) + 'px'); + }; + + // private interface methods + var setupHTML; + var wireFunctionality; + var create = function create() { + this.id = uhrGlobals.id++; + this.timer = null; + this.currentMinute = -1; + var userTime = this.options.time; + var hash, params; + if (this.options.time === undefined) { + this.options.time = new Date(); + } + // parse the URL params + hash = window.location.hash; + if (hash !== undefined && typeof hash === 'string' && hash.charAt(0) === '#') { + hash = hash.substring(1); + hash = decodeURIComponent(hash); + params = hash.split('&'); + params.forEach(function (element) { + var pair = element.split('='); + var key = pair[0]; + var value = pair[1]; + switch (key) { + case 'l': + case 'language': + this.options.language = value; + this.options.force = true; + break; + case 't': + case 'theme': + this.options.theme = value; + this.options.force = true; + break; + case 'm': + case 'mode': + this.options.mode = value; + this.options.force = true; + break; + case 's': + case 'status': + this.options.status = value; + this.options.force = true; + break; + } + }.bind(this)); + } + // end parse the URL params + setupHTML.bind(this)(); + wireFunctionality.bind(this)(); + if (userTime !== undefined) { + this.time(userTime); + } + }; + // private helper methods (not exported) + var toggleConfigScreen = function toggleConfigScreen() { + $('#uhr-controlpanel' + this.id).toggle('fast'); + }; + // set up + setupHTML = function setupHTML() { + var e = this.element; + // Base clock area + e.addClass('uhr'); + e.empty(); + e.append(''); + e.append(''); + e.append(''); + e.append(''); + e.append('
'); + e.append('
'); + setWidth.bind(this)(this.options.width); + + if (this.options.controls) { + var controlpanel = $('
'); + var content = $('
'); + controlpanel.append(content); + // on/off switch + var toggleSwitch = $('
'); + toggleSwitch.append(''); + toggleSwitch.append(''); + content.append(toggleSwitch); + + // time mode switch + var modeSwitch = $('
'); + modeSwitch.append(''); + modeSwitch.append(''); + content.append(modeSwitch); + // language chooser + if (uhrGlobals.languages.length > 1) { + var languageChooser = $(''); + uhrGlobals.languages.forEach(function (item) { + languageChooser.append(''); + }); + content.append(languageChooser); + } + + // theme chooser + if (uhrGlobals.themes.length > 1) { + var themeChooser = $(''); + uhrGlobals.themes.forEach(function (item) { + themeChooser.append(''); + }); + content.append(themeChooser); + } + var closebutton = $(''); + closebutton.on('click', function () { + $('#uhr-controlpanel' + this.id).hide('fast'); + }.bind(this)); + content.append(closebutton); + e.after(controlpanel); + controlpanel.hide(); + var configlink = $(''); + configlink.on('click', function () { + toggleConfigScreen.bind(this)(); + }.bind(this)); + e.after(configlink); + } + }; + wireFunctionality = function wireFunctionality() { // on/off switch - var toggleSwitch = $('
'); - toggleSwitch.append(''); - toggleSwitch.append(''); - content.append(toggleSwitch); + var toggleSwitch = $('#uhr-onoffswitch-checkbox' + this.id); + toggleSwitch.on('click', function () { + this.toggle(); + }.bind(this)); + var status = $.cookie('uhr-status' + this.id); + if (status === undefined || this.options.force) { + status = this.options.status; + } + toggleSwitch.prop('checked', status === 'on'); + if (status === 'on') { + this.start(); + } else { + this.stop(); + } // time mode switch - var modeSwitch = $('
'); - modeSwitch.append(''); - modeSwitch.append(''); - content.append(modeSwitch); - // language chooser - if (uhrGlobals.languages.length > 1) { - var languageChooser = $(''); - uhrGlobals.languages.forEach(function (item) { - languageChooser.append(''); - }); - content.append(languageChooser); + var modeSwitch = $('#uhr-modeswitch-checkbox' + this.id); + modeSwitch.on('click', function () { + if (this.options.mode === 'seconds') { + setMode.bind(this)('normal'); + } else { + setMode.bind(this)('seconds'); + } + }.bind(this)); + + var mode = $.cookie('uhr-mode' + this.id); + if (mode === undefined || this.options.force) { + mode = this.options.mode; } + modeSwitch.prop('checked', mode !== 'seconds'); + if (mode === 'seconds') { + setMode.bind(this)('seconds'); + } else { + setMode.bind(this)('normal'); + } + + // language chooser + var languageChooser = $('#uhr-languagechooser' + this.id); + languageChooser.on('change', function () { + var languageKey = $('#uhr-languagechooser' + this.id).val(); + this.language(languageKey); + }.bind(this)); + var selectedLanguage = $.cookie('uhr-language' + this.id); + if (selectedLanguage === undefined || this.options.force) { + selectedLanguage = this.options.language; + } + var found = uhrGlobals.languages.some(function (item) { + return selectedLanguage === item.code; + }); + if (!found) { + var fallbackLanguage; + if (uhrGlobals.languages.length > 0) { + fallbackLanguage = uhrGlobals.languages[0].code; + } else { + fallbackLanguage = ''; + } + console.warn("Language '" + selectedLanguage + "' not found! Using fallback '" + fallbackLanguage + "'"); + selectedLanguage = fallbackLanguage; + } + languageChooser.val(selectedLanguage); + this.options.language = ""; + this.language(selectedLanguage); // theme chooser - if (uhrGlobals.themes.length > 1) { - var themeChooser = $(''); - uhrGlobals.themes.forEach(function (item) { - themeChooser.append(''); - }); - content.append(themeChooser); + var themeChooser = $('#uhr-themechooser' + this.id); + themeChooser.on('change', function () { + var themeKey = $('#uhr-themechooser' + this.id).val(); + this.theme(themeKey); + }.bind(this)); + var selectedTheme = $.cookie('uhr-theme' + this.id); + if (selectedTheme === undefined || this.options.force) { + selectedTheme = this.options.theme; } - var closebutton = $(''); - closebutton.on('click', function () { - $('#uhr-controlpanel' + this.id).hide('fast'); - }.bind(this)); - content.append(closebutton); - e.after(controlpanel); - controlpanel.hide(); - var configlink = $(''); - configlink.on('click', function () { - toggleConfigScreen.bind(this)(); - }.bind(this)); - e.after(configlink); - } - }; - wireFunctionality = function wireFunctionality() { - // on/off switch - var toggleSwitch = $('#uhr-onoffswitch-checkbox' + this.id); - toggleSwitch.on('click', function () { - this.toggle(); - }.bind(this)); - var status = $.cookie('uhr-status' + this.id); - if (status === undefined || this.options.force) { - status = this.options.status; - } - toggleSwitch.prop('checked', status === 'on'); - if (status === 'on') { - this.start(); - } else { - this.stop(); - } + found = uhrGlobals.themes.some(function (item) { + return selectedTheme === item.styleClass; + }); + if (!found) { + var fallbackTheme = uhrGlobals.themes[0].styleClass; + console.warn("Theme '" + selectedTheme + "' not found! Using fallback '" + fallbackTheme + "'"); + selectedTheme = fallbackTheme; + } + themeChooser.val(selectedTheme); + this.options.theme = ""; + this.theme(selectedTheme); + if (this.options.autoresize) { + $(window).on('resize', function () { + var $e = this.element; + var $parent = $e.parent(); + var $window = $(window); + var parentWidth = $parent.width(); + var parentHeight = $parent.height(); + var windowWidth = $window.width(); + var windowHeight = $window.height(); + var size = Math.min(parentWidth, parentHeight, windowWidth, windowHeight) + 'px'; + setWidth.bind(this)(size); + }.bind(this)); + } + }; + var destroy = function destroy() { + this.timer = null; + $(this.element) + .removeAttr('style') + .removeAttr('class') + .empty(); + $('#uhr-configlink' + this.id).remove(); + $('#uhr-controlpanel' + this.id).remove(); - // time mode switch - var modeSwitch = $('#uhr-modeswitch-checkbox' + this.id); - modeSwitch.on('click', function () { - if (this.options.mode === 'seconds') { - setMode.bind(this)('normal'); + }; + setCookie = function setCookie(cookieName, cookieValue) { + var options = {}; + if (this.options.cookiePath !== undefined) { + options = {expires: 365, path: this.options.cookiePath}; } else { - setMode.bind(this)('seconds'); + options = {expires: 365}; } - }.bind(this)); + $.cookie(cookieName + this.id, cookieValue, options); + }; - var mode = $.cookie('uhr-mode' + this.id); - if (mode === undefined || this.options.force) { - mode = this.options.mode; - } - modeSwitch.prop('checked', mode !== 'seconds'); - if (mode === 'seconds') { - setMode.bind(this)('seconds'); - } else { - setMode.bind(this)('normal'); - } - - // language chooser - var languageChooser = $('#uhr-languagechooser' + this.id); - languageChooser.on('change', function () { - var languageKey = $('#uhr-languagechooser' + this.id).val(); - this.language(languageKey); - }.bind(this)); - var selectedLanguage = $.cookie('uhr-language' + this.id); - if (selectedLanguage === undefined || this.options.force) { - selectedLanguage = this.options.language; - } - var found = uhrGlobals.languages.some(function (item) { - return selectedLanguage === item.code; - }); - if (!found) { - var fallbackLanguage; - if (uhrGlobals.languages.length > 0) { - fallbackLanguage = uhrGlobals.languages[0].code; - } else { - fallbackLanguage = ''; - } - console.warn("Language '" + selectedLanguage + "' not found! Using fallback '" + fallbackLanguage + "'"); - selectedLanguage = fallbackLanguage; - } - languageChooser.val(selectedLanguage); - this.options.language = ""; - this.language(selectedLanguage); - - // theme chooser - var themeChooser = $('#uhr-themechooser' + this.id); - themeChooser.on('change', function () { - var themeKey = $('#uhr-themechooser' + this.id).val(); - this.theme(themeKey); - }.bind(this)); - var selectedTheme = $.cookie('uhr-theme' + this.id); - if (selectedTheme === undefined || this.options.force) { - selectedTheme = this.options.theme; - } - found = uhrGlobals.themes.some(function (item) { - return selectedTheme === item.styleClass; - }); - if (!found) { - var fallbackTheme = uhrGlobals.themes[0].styleClass; - console.warn("Theme '" + selectedTheme + "' not found! Using fallback '" + fallbackTheme + "'"); - selectedTheme = fallbackTheme; - } - themeChooser.val(selectedTheme); - this.options.theme = ""; - this.theme(selectedTheme); - if (this.options.autoresize) { - $(window).on('resize', function () { - var $e = this.element; - var $parent = $e.parent(); - var $window = $(window); - var parentWidth = $parent.width(); - var parentHeight = $parent.height(); - var windowWidth = $window.width(); - var windowHeight = $window.height(); - var size = Math.min(parentWidth, parentHeight, windowWidth, windowHeight) + 'px'; - setWidth.bind(this)(size); - }.bind(this)); - } - }; - var destroy = function destroy() { - this.timer = null; - $(this.element) - .removeAttr('style') - .removeAttr('class') - .empty(); - $('#uhr-configlink' + this.id).remove(); - $('#uhr-controlpanel' + this.id).remove(); - - }; - setCookie = function setCookie(cookieName, cookieValue) { - var options = {}; - if (this.options.cookiePath !== undefined) { - options = {expires: 365, path: this.options.cookiePath}; - } else { - options = {expires: 365}; - } - $.cookie(cookieName + this.id, cookieValue, options); - }; - - // business logic - isOn = function isOn() { - return this.timer !== null; - }; - var show; - var clear; - update = function update() { - if (isOn.bind(this)()) { - var time = this.options.time; - if (!language.bind(this)().hasOwnProperty('seconds') && this.options.mode !== 'seconds') { - if (time.getMinutes() === this.currentMinute) { - return; + // business logic + isOn = function isOn() { + return this.timer !== null; + }; + var show; + var clear; + update = function update() { + if (isOn.bind(this)()) { + var time = this.options.time; + if (!language.bind(this)().hasOwnProperty('seconds') && this.options.mode !== 'seconds') { + if (time.getMinutes() === this.currentMinute) { + return; + } + this.currentMinute = time.getMinutes(); } - this.currentMinute = time.getMinutes(); + show.bind(this)(time); + } else { + clear.bind(this)(); + this.currentMinute = -1; } - show.bind(this)(time); - } else { + }; + var highlight; + var getSecond; + var getDotMinute; + var getCoarseMinute; + var getHour; + show = function show(time) { + var second = getSecond.bind(this)(time); + var dotMinute = getDotMinute.bind(this)(time); + var hour = getHour.bind(this)(time); + var coarseMinute = getCoarseMinute.bind(this)(time); clear.bind(this)(); - this.currentMinute = -1; - } - }; - var highlight; - var getSecond; - var getDotMinute; - var getCoarseMinute; - var getHour; - show = function show(time) { - var second = getSecond.bind(this)(time); - var dotMinute = getDotMinute.bind(this)(time); - var hour = getHour.bind(this)(time); - var coarseMinute = getCoarseMinute.bind(this)(time); - clear.bind(this)(); - if (this.options.mode === 'seconds') { - highlight.bind(this)('second' + second); - } else { - highlight.bind(this)('on'); - for (var i = 1; i <= dotMinute; i++) { - highlight.bind(this)('dot' + i); + if (this.options.mode === 'seconds') { + highlight.bind(this)('second' + second); + } else { + highlight.bind(this)('on'); + for (var i = 1; i <= dotMinute; i++) { + highlight.bind(this)('dot' + i); + } + highlight.bind(this)('minute' + coarseMinute); + highlight.bind(this)('hour' + hour); } - highlight.bind(this)('minute' + coarseMinute); - highlight.bind(this)('hour' + hour); - } - }; - highlight = function highlight(itemClass) { - this.element.find('.item.' + itemClass).addClass('active'); - }; - clear = function clear() { - this.element.find('.item').removeClass('active'); - }; - getSecond = function getSecond(date) { - if (typeof language.bind(this)().getSeconds === 'function') { - return language.bind(this)().getSeconds(date); - } - return date.getSeconds(); - }; - getDotMinute = function getDotMinute(date) { - if (typeof language.bind(this)().getDotMinute === 'function') { - return language.bind(this)().getDotMinute(date); - } - var minutes = date.getMinutes(); - return minutes % 5; - }; - getCoarseMinute = function getCoarseMinute(date) { - if (typeof language.bind(this)().getCoarseMinute === 'function') { - return language.bind(this)().getCoarseMinute(date); - } - return date.getMinutes(); - }; - getHour = function getHour(date) { - if (typeof language.bind(this)().getHour === 'function') { - return language.bind(this)().getHour(date); - } - var hour = date.getHours(); - if (date.getMinutes() >= 25) { - return (hour + 1) % 24; - } - return hour; - }; - language = function language() { - var matchingLanguages = uhrGlobals.languages.filter(function (element) { - return (element.code === this.options.language); - }, this); - if (matchingLanguages.length > 0) { - return matchingLanguages[0]; - } - // fallback: return empty object - return {}; - }; + }; + highlight = function highlight(itemClass) { + this.element.find('.item.' + itemClass).addClass('active'); + }; + clear = function clear() { + this.element.find('.item').removeClass('active'); + }; + getSecond = function getSecond(date) { + if (typeof language.bind(this)().getSeconds === 'function') { + return language.bind(this)().getSeconds(date); + } + return date.getSeconds(); + }; + getDotMinute = function getDotMinute(date) { + if (typeof language.bind(this)().getDotMinute === 'function') { + return language.bind(this)().getDotMinute(date); + } + var minutes = date.getMinutes(); + return minutes % 5; + }; + getCoarseMinute = function getCoarseMinute(date) { + if (typeof language.bind(this)().getCoarseMinute === 'function') { + return language.bind(this)().getCoarseMinute(date); + } + return date.getMinutes(); + }; + getHour = function getHour(date) { + if (typeof language.bind(this)().getHour === 'function') { + return language.bind(this)().getHour(date); + } + var hour = date.getHours(); + if (date.getMinutes() >= 25) { + return (hour + 1) % 24; + } + return hour; + }; + language = function language() { + var matchingLanguages = uhrGlobals.languages.filter(function (element) { + return (element.code === this.options.language); + }, this); + if (matchingLanguages.length > 0) { + return matchingLanguages[0]; + } + // fallback: return empty object + return {}; + }; - $.widget("fritteli.uhr", { - "options": { - width: '100%', - status: 'on', - language: 'de_CH', - theme: uhrGlobals.themes[0].styleClass, - force: false, - controls: true, - cookiePath: undefined, - autoresize: true, - mode: 'normal' - }, - "start": start, - "stop": stop, - "toggle": toggle, - "language": setLanguage, - "theme": setTheme, - "time": setTime, - "mode": setMode, - "width": setWidth, - // constructor method - "_create": create, - // destructor method - "_destroy": destroy - }); - $.fritteli.uhr.register = uhrGlobals.registerLanguage; -})(jQuery); + $.widget("fritteli.uhr", { + "options": { + width: '100%', + status: 'on', + language: 'de_CH', + theme: uhrGlobals.themes[0].styleClass, + force: false, + controls: true, + cookiePath: undefined, + autoresize: true, + mode: 'normal' + }, + "start": start, + "stop": stop, + "toggle": toggle, + "language": setLanguage, + "theme": setTheme, + "time": setTime, + "mode": setMode, + "width": setWidth, + // constructor method + "_create": create, + // destructor method + "_destroy": destroy + }); + $.fritteli.uhr.register = uhrGlobals.registerLanguage; + })(jQuery); + +}()); diff --git a/dist/jquery.uhr.main.min.js b/dist/jquery.uhr.main.min.js index f143ab2..c415152 100644 --- a/dist/jquery.uhr.main.min.js +++ b/dist/jquery.uhr.main.min.js @@ -1,5 +1 @@ -/*! uhr - v9.0.0-dev.0 - 2021-02-24 -* http://bärneruhr.ch/ -* Copyright (c) 2021 Manuel Friedli; Licensed GPL-3.0 */ - -!function(u){"use strict";var i,e,n,l={id:0,languages:[],themes:[],registerLanguage:function(i,e){l.languages.some(function(t){return i===t.code&&(console.error("Error: Language code '"+i+"' cannot be registered for language '"+e.language+"' because it is already registered for language '"+t.language+"'!"),!0)})||(e.code=i,l.languages.push(e))}};u("link[rel=stylesheet]").each(function(t,i){var e=u(i),n=e.attr("data-class");if(void 0!==n){var s=e.attr("data-name");void 0===s&&(s=n),l.themes.push({styleClass:n,name:s})}}),0===l.themes.length&&l.themes.push({});var s;function y(t,i){var e=t,n=i||"";this.addStyle=function(t){""===n?n=t:n+=" "+t},this.toString=function(){return''+e+""}}function o(t){var i={3:[2,3,4],4:[1,5],5:[1,4,5],6:[1,3,5],7:[1,2,5],8:[1,5],9:[2,3,4]},e={3:[8,9,10],4:[7,11],5:[7,10,11],6:[7,9,11],7:[7,8,11],8:[7,11],9:[8,9,10]},n={3:[3],4:[2,3],5:[3],6:[3],7:[3],8:[3],9:[2,3,4]},s={3:[9],4:[8,9],5:[9],6:[9],7:[9],8:[9],9:[8,9,10]},o={3:[2,3,4],4:[1,5],5:[5],6:[4],7:[3],8:[2],9:[1,2,3,4,5]},h={3:[8,9,10],4:[7,11],5:[11],6:[10],7:[9],8:[8],9:[7,8,9,10,11]},a={3:[1,2,3,4,5],4:[4],5:[3],6:[4],7:[5],8:[1,5],9:[2,3,4]},r={3:[7,8,9,10,11],4:[10],5:[9],6:[10],7:[11],8:[7,11],9:[8,9,10]},c={3:[4],4:[3,4],5:[2,4],6:[1,4],7:[1,2,3,4,5],8:[4],9:[4]},d={3:[10],4:[9,10],5:[8,10],6:[7,10],7:[7,8,9,10,11],8:[10],9:[10]},u={3:[1,2,3,4,5],4:[1],5:[1,2,3,4],6:[5],7:[5],8:[1,5],9:[2,3,4]},l={3:[7,8,9,10,11],4:[7],5:[7,8,9,10],6:[11],7:[11],8:[7,11],9:[8,9,10]},f={3:[9,10],4:[8],5:[7],6:[7,8,9,10],7:[7,11],8:[7,11],9:[8,9,10]},p={3:[7,8,9,10,11],4:[11],5:[10],6:[9],7:[8],8:[8],9:[8]},g={3:[8,9,10],4:[7,11],5:[7,11],6:[8,9,10],7:[7,11],8:[7,11],9:[8,9,10]},m={3:[8,9,10],4:[7,11],5:[7,11],6:[8,9,10,11],7:[11],8:[10],9:[8,9]},v={0:[i,e],1:[i,s],2:[i,h],3:[i,r],4:[i,d],5:[i,l],6:[i,f],7:[i,p],8:[i,g],9:[i,m],10:[n,e],11:[n,s],12:[n,h],13:[n,r],14:[n,d],15:[n,l],16:[n,f],17:[n,p],18:[n,g],19:[n,m],20:[o,e],21:[o,s],22:[o,h],23:[o,r],24:[o,d],25:[o,l],26:[o,f],27:[o,p],28:[o,g],29:[o,m],30:[a,e],31:[a,s],32:[a,h],33:[a,r],34:[a,d],35:[a,l],36:[a,f],37:[a,p],38:[a,g],39:[a,m],40:[c,e],41:[c,s],42:[c,h],43:[c,r],44:[c,d],45:[c,l],46:[c,f],47:[c,p],48:[c,g],49:[c,m],50:[u,e],51:[u,s],52:[u,h],53:[u,r],54:[u,d],55:[u,l],56:[u,f],57:[u,p],58:[u,g],59:[u,m]};function b(e,n,t){null!=t&&Object.keys(t).forEach(function(i){t[i].forEach(function(t){e[i-1][t-1].addStyle(n)})})}function w(i,e,t){null!=t&&(Array.isArray(t)?t.forEach(function(t){b(i,e,t)}):b(i,e,t))}function k(n,s,o){null!=o&&Object.keys(o).forEach(function(t){var i=t.split(","),e=o[t];i.forEach(function(t){w(n,s+t,e)})})}this.parse=function(){var s=[];return t.letters.forEach(function(t){for(var i=[],e=0;e")}),"function"==typeof t&&t(),s.fadeIn("fast")})}}function f(t){this.options.mode=t,this.currentMinute=-1,n.bind(this)(),i.bind(this)("uhr-mode",t)}function p(t){var i=this.element;i.css("width",t);var e=i.width();i.width(e),i.height(e),i.css("font-size",e/40+"px")}var a,r;a=function(){var t=this.element;if(t.addClass("uhr"),t.empty(),t.append(''),t.append(''),t.append(''),t.append(''),t.append('
'),t.append('
'),p.bind(this)(this.options.width),this.options.controls){var i=u('
'),e=u('
');i.append(e);var n=u('
');n.append(''),n.append(''),e.append(n);var s=u('
');if(s.append(''),s.append(''),e.append(s),1');l.languages.forEach(function(t){o.append('")}),e.append(o)}if(1');l.themes.forEach(function(t){h.append('")}),e.append(h)}var a=u('');a.on("click",function(){u("#uhr-controlpanel"+this.id).hide("fast")}.bind(this)),e.append(a),t.after(i),i.hide();var r=u('');r.on("click",function(){(function(){u("#uhr-controlpanel"+this.id).toggle("fast")}).bind(this)()}.bind(this)),t.after(r)}},r=function(){var t=u("#uhr-onoffswitch-checkbox"+this.id);t.on("click",function(){this.toggle()}.bind(this));var i=u.cookie("uhr-status"+this.id);void 0!==i&&!this.options.force||(i=this.options.status),t.prop("checked","on"===i),"on"===i?this.start():this.stop();var e=u("#uhr-modeswitch-checkbox"+this.id);e.on("click",function(){"seconds"===this.options.mode?f.bind(this)("normal"):f.bind(this)("seconds")}.bind(this));var n=u.cookie("uhr-mode"+this.id);void 0!==n&&!this.options.force||(n=this.options.mode),e.prop("checked","seconds"!==n),"seconds"===n?f.bind(this)("seconds"):f.bind(this)("normal");var s=u("#uhr-languagechooser"+this.id);s.on("change",function(){var t=u("#uhr-languagechooser"+this.id).val();this.language(t)}.bind(this));var o=u.cookie("uhr-language"+this.id);void 0!==o&&!this.options.force||(o=this.options.language);var h,a=l.languages.some(function(t){return o===t.code});a||(h=0'+e+""}}function a(t){var i={3:[2,3,4],4:[1,5],5:[1,4,5],6:[1,3,5],7:[1,2,5],8:[1,5],9:[2,3,4]},e={3:[8,9,10],4:[7,11],5:[7,10,11],6:[7,9,11],7:[7,8,11],8:[7,11],9:[8,9,10]},n={3:[3],4:[2,3],5:[3],6:[3],7:[3],8:[3],9:[2,3,4]},s={3:[9],4:[8,9],5:[9],6:[9],7:[9],8:[9],9:[8,9,10]},o={3:[2,3,4],4:[1,5],5:[5],6:[4],7:[3],8:[2],9:[1,2,3,4,5]},a={3:[8,9,10],4:[7,11],5:[11],6:[10],7:[9],8:[8],9:[7,8,9,10,11]},r={3:[1,2,3,4,5],4:[4],5:[3],6:[4],7:[5],8:[1,5],9:[2,3,4]},c={3:[7,8,9,10,11],4:[10],5:[9],6:[10],7:[11],8:[7,11],9:[8,9,10]},d={3:[4],4:[3,4],5:[2,4],6:[1,4],7:[1,2,3,4,5],8:[4],9:[4]},u={3:[10],4:[9,10],5:[8,10],6:[7,10],7:[7,8,9,10,11],8:[10],9:[10]},l={3:[1,2,3,4,5],4:[1],5:[1,2,3,4],6:[5],7:[5],8:[1,5],9:[2,3,4]},f={3:[7,8,9,10,11],4:[7],5:[7,8,9,10],6:[11],7:[11],8:[7,11],9:[8,9,10]},p={3:[9,10],4:[8],5:[7],6:[7,8,9,10],7:[7,11],8:[7,11],9:[8,9,10]},g={3:[7,8,9,10,11],4:[11],5:[10],6:[9],7:[8],8:[8],9:[8]},m={3:[8,9,10],4:[7,11],5:[7,11],6:[8,9,10],7:[7,11],8:[7,11],9:[8,9,10]},v={3:[8,9,10],4:[7,11],5:[7,11],6:[8,9,10,11],7:[11],8:[10],9:[8,9]},b={0:[i,e],1:[i,s],2:[i,a],3:[i,c],4:[i,u],5:[i,f],6:[i,p],7:[i,g],8:[i,m],9:[i,v],10:[n,e],11:[n,s],12:[n,a],13:[n,c],14:[n,u],15:[n,f],16:[n,p],17:[n,g],18:[n,m],19:[n,v],20:[o,e],21:[o,s],22:[o,a],23:[o,c],24:[o,u],25:[o,f],26:[o,p],27:[o,g],28:[o,m],29:[o,v],30:[r,e],31:[r,s],32:[r,a],33:[r,c],34:[r,u],35:[r,f],36:[r,p],37:[r,g],38:[r,m],39:[r,v],40:[d,e],41:[d,s],42:[d,a],43:[d,c],44:[d,u],45:[d,f],46:[d,p],47:[d,g],48:[d,m],49:[d,v],50:[l,e],51:[l,s],52:[l,a],53:[l,c],54:[l,u],55:[l,f],56:[l,p],57:[l,g],58:[l,m],59:[l,v]};function w(t,i,e){null!=e&&Object.keys(e).forEach((function(n){e[n].forEach((function(e){t[n-1][e-1].addStyle(i)}))}))}function k(t,i,e){null!=e&&(Array.isArray(e)?e.forEach((function(e){w(t,i,e)})):w(t,i,e))}function y(t,i,e){null!=e&&Object.keys(e).forEach((function(n){var s=n.split(","),o=e[n];s.forEach((function(e){k(t,i+e,o)}))}))}this.parse=function(){var i=[];return t.letters.forEach((function(t){for(var e=[],n=0;n")})),"function"==typeof e&&e(),i.fadeIn("fast")}))}}var c,d,u=function(t){this.options.mode=t,this.currentMinute=-1,n.bind(this)(),i.bind(this)("uhr-mode",t)},l=function(t){var i=this.element;i.css("width",t);var e=i.width();i.width(e),i.height(e),i.css("font-size",e/40+"px")},f=function(){t("#uhr-controlpanel"+this.id).toggle("fast")};c=function(){var i=this.element;if(i.addClass("uhr"),i.empty(),i.append(''),i.append(''),i.append(''),i.append(''),i.append('
'),i.append('
'),l.bind(this)(this.options.width),this.options.controls){var e=t('
'),n=t('
');e.append(n);var o=t('
');o.append(''),o.append(''),n.append(o);var h=t('
');if(h.append(''),h.append(''),n.append(h),s.languages.length>1){var a=t('');s.languages.forEach((function(t){a.append('")})),n.append(a)}if(s.themes.length>1){var r=t('');s.themes.forEach((function(t){r.append('")})),n.append(r)}var c=t('');c.on("click",function(){t("#uhr-controlpanel"+this.id).hide("fast")}.bind(this)),n.append(c),i.after(e),e.hide();var d=t('');d.on("click",function(){f.bind(this)()}.bind(this)),i.after(d)}},d=function(){var i=t("#uhr-onoffswitch-checkbox"+this.id);i.on("click",function(){this.toggle()}.bind(this));var e=t.cookie("uhr-status"+this.id);(void 0===e||this.options.force)&&(e=this.options.status),i.prop("checked","on"===e),"on"===e?this.start():this.stop();var n=t("#uhr-modeswitch-checkbox"+this.id);n.on("click",function(){"seconds"===this.options.mode?u.bind(this)("normal"):u.bind(this)("seconds")}.bind(this));var o=t.cookie("uhr-mode"+this.id);(void 0===o||this.options.force)&&(o=this.options.mode),n.prop("checked","seconds"!==o),"seconds"===o?u.bind(this)("seconds"):u.bind(this)("normal");var h=t("#uhr-languagechooser"+this.id);h.on("change",function(){var i=t("#uhr-languagechooser"+this.id).val();this.language(i)}.bind(this));var a=t.cookie("uhr-language"+this.id);(void 0===a||this.options.force)&&(a=this.options.language);var r,c=s.languages.some((function(t){return a===t.code}));c||(r=s.languages.length>0?s.languages[0].code:"",console.warn("Language '"+a+"' not found! Using fallback '"+r+"'"),a=r);h.val(a),this.options.language="",this.language(a);var d=t("#uhr-themechooser"+this.id);d.on("change",function(){var i=t("#uhr-themechooser"+this.id).val();this.theme(i)}.bind(this));var f=t.cookie("uhr-theme"+this.id);if((void 0===f||this.options.force)&&(f=this.options.theme),!(c=s.themes.some((function(t){return f===t.styleClass})))){var p=s.themes[0].styleClass;console.warn("Theme '"+f+"' not found! Using fallback '"+p+"'"),f=p}d.val(f),this.options.theme="",this.theme(f),this.options.autoresize&&t(window).on("resize",function(){var i=this.element.parent(),e=t(window),n=i.width(),s=i.height(),o=e.width(),h=e.height(),a=Math.min(n,s,o,h)+"px";l.bind(this)(a)}.bind(this))};var p,g,m,v,b,w,k;i=function(i,e){var n={};n=void 0!==this.options.cookiePath?{expires:365,path:this.options.cookiePath}:{expires:365},t.cookie(i+this.id,e,n)},e=function(){return null!==this.timer},n=function(){if(e.bind(this)()){var t=this.options.time;if(!o.bind(this)().hasOwnProperty("seconds")&&"seconds"!==this.options.mode){if(t.getMinutes()===this.currentMinute)return;this.currentMinute=t.getMinutes()}p.bind(this)(t)}else g.bind(this)(),this.currentMinute=-1},p=function(t){var i=v.bind(this)(t),e=b.bind(this)(t),n=k.bind(this)(t),s=w.bind(this)(t);if(g.bind(this)(),"seconds"===this.options.mode)m.bind(this)("second"+i);else{m.bind(this)("on");for(var o=1;o<=e;o++)m.bind(this)("dot"+o);m.bind(this)("minute"+s),m.bind(this)("hour"+n)}},m=function(t){this.element.find(".item."+t).addClass("active")},g=function(){this.element.find(".item").removeClass("active")},v=function(t){return"function"==typeof o.bind(this)().getSeconds?o.bind(this)().getSeconds(t):t.getSeconds()},b=function(t){return"function"==typeof o.bind(this)().getDotMinute?o.bind(this)().getDotMinute(t):t.getMinutes()%5},w=function(t){return"function"==typeof o.bind(this)().getCoarseMinute?o.bind(this)().getCoarseMinute(t):t.getMinutes()},k=function(t){if("function"==typeof o.bind(this)().getHour)return o.bind(this)().getHour(t);var i=t.getHours();return t.getMinutes()>=25?(i+1)%24:i},o=function(){var t=s.languages.filter((function(t){return t.code===this.options.language}),this);return t.length>0?t[0]:{}},t.widget("fritteli.uhr",{options:{width:"100%",status:"on",language:"de_CH",theme:s.themes[0].styleClass,force:!1,controls:!0,cookiePath:void 0,autoresize:!0,mode:"normal"},start:function(){e.bind(this)()||(this.timer=window.setInterval(function(){this.options.time=new Date,n.bind(this)()}.bind(this),1e3),n.bind(this)(),i.bind(this)("uhr-status","on"))},stop:function(){e.bind(this)()&&(window.clearInterval(this.timer),this.timer=null,n.bind(this)(),i.bind(this)("uhr-status","off"))},toggle:function(){e.bind(this)()?this.stop():this.start()},language:function(t){t!==this.options.language&&(this.options.language=t,new r(o.bind(this)(),this.element.find(".letterarea")).render.bind(this)(function(){this.currentMinute=-1,n.bind(this)()}.bind(this)),i.bind(this)("uhr-language",t),n.bind(this)())},theme:function(e){e!==this.options.theme&&(this.element.removeClass(this.options.theme).addClass(e),t("#uhr-onoffswitch"+this.id).removeClass(this.options.theme).addClass(e),this.options.theme=e,i.bind(this)("uhr-theme",e))},time:function(t){this.currentMinute=-1,null===t?this.options.time=new Date:(null!==this.timer&&window.clearInterval(this.timer),this.options.time=t),n.bind(this)()},mode:u,width:l,_create:function(){this.id=s.id++,this.timer=null,this.currentMinute=-1;var t,i=this.options.time;void 0===this.options.time&&(this.options.time=new Date),void 0!==(t=window.location.hash)&&"string"==typeof t&&"#"===t.charAt(0)&&(t=t.substring(1),(t=decodeURIComponent(t)).split("&").forEach(function(t){var i=t.split("="),e=i[0],n=i[1];switch(e){case"l":case"language":this.options.language=n,this.options.force=!0;break;case"t":case"theme":this.options.theme=n,this.options.force=!0;break;case"m":case"mode":this.options.mode=n,this.options.force=!0;break;case"s":case"status":this.options.status=n,this.options.force=!0}}.bind(this))),c.bind(this)(),d.bind(this)(),void 0!==i&&this.time(i)},_destroy:function(){this.timer=null,t(this.element).removeAttr("style").removeAttr("class").empty(),t("#uhr-configlink"+this.id).remove(),t("#uhr-controlpanel"+this.id).remove()}}),t.fritteli.uhr.register=s.registerLanguage}(jQuery)}(); diff --git a/dist/libs.js b/dist/libs.js index b68eeca..6cfab28 100644 --- a/dist/libs.js +++ b/dist/libs.js @@ -1,6 +1,5 @@ -/*! uhr - v9.0.0-dev.0 - 2021-02-24 -* http://bärneruhr.ch/ -* Copyright (c) 2021 Manuel Friedli; Licensed GPL-3.0 */ +'use strict'; + /*! * jQuery JavaScript Library v3.5.0 * https://jquery.com/ @@ -16,8 +15,6 @@ */ ( function( global, factory ) { - "use strict"; - if ( typeof module === "object" && typeof module.exports === "object" ) { // For CommonJS and CommonJS-like environments where a proper `window` @@ -42,12 +39,6 @@ // Pass this if window is not defined yet } )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { -// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 -// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode -// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common -// enough that all such attempts are guarded in a try block. -"use strict"; - var arr = []; var getProto = Object.getPrototypeOf; @@ -3029,8 +3020,7 @@ function nodeName( elem, name ) { return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); -}; -var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); +}var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); diff --git a/dist/libs.min.js b/dist/libs.min.js index bbebbcd..443218b 100644 --- a/dist/libs.min.js +++ b/dist/libs.min.js @@ -1,5 +1,42 @@ -/*! uhr - v9.0.0-dev.0 - 2021-02-24 -* http://bärneruhr.ch/ -* Copyright (c) 2021 Manuel Friedli; Licensed GPL-3.0 */ - -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(T,e){"use strict";function g(e){return null!=e&&e===e.window}var t=[],r=Object.getPrototypeOf,a=t.slice,v=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,m=n.hasOwnProperty,s=m.toString,l=s.call(Object),y={},x=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},E=T.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.0",k=function(e,t){return new k.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!x(e)&&!g(e)&&("array"===n||0===t||"number"==typeof t&&0>10|55296,1023&n|56320))}function i(){C()}var e,d,b,o,s,h,p,g,w,u,l,C,T,a,E,v,c,m,y,k="sizzle"+1*new Date,x=n.document,S=0,r=0,N=ue(),A=ue(),j=ue(),D=ue(),q=function(e,t){return e===t&&(l=!0),0},L={}.hasOwnProperty,t=[],_=t.pop,O=t.push,H=t.push,P=t.slice,R=function(e,t){for(var n=0,r=e.length;n+~]|"+I+")"+I+"*"),V=new RegExp(I+"|>"),G=new RegExp($),Q=new RegExp("^"+W+"$"),Y={ID:new RegExp("^#("+W+")"),CLASS:new RegExp("^\\.("+W+")"),TAG:new RegExp("^("+W+"|[*])"),ATTR:new RegExp("^"+F),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+I+"*(even|odd|(([+-]|)(\\d*)n|)"+I+"*(?:([+-]|)"+I+"*(\\d+)|))"+I+"*\\)|)","i"),bool:new RegExp("^(?:"+M+")$","i"),needsContext:new RegExp("^"+I+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+I+"*((?:-\\d)?\\d*)"+I+"*\\)|)(?=[^-]|$)","i")},J=/HTML$/i,K=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,ee=/^[^{]+\{\s*\[native \w/,te=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ne=/[+~]/,re=new RegExp("\\\\[\\da-fA-F]{1,6}"+I+"?|\\\\([^\\r\\n\\f])","g"),ie=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,oe=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},se=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=P.call(x.childNodes),x.childNodes),t[x.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){O.apply(e,P.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}function ae(t,e,n,r){var i,o,s,a,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(C(e),e=e||T,E)){if(11!==p&&(u=te.exec(t)))if(i=u[1]){if(9===p){if(!(s=e.getElementById(i)))return n;if(s.id===i)return n.push(s),n}else if(f&&(s=f.getElementById(i))&&y(e,s)&&s.id===i)return n.push(s),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!D[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(V.test(t)||X.test(t))){for((f=ne.test(t)&&me(e.parentNode)||e)===e&&d.scope||((a=e.getAttribute("id"))?a=a.replace(ie,oe):e.setAttribute("id",a=k)),o=(l=h(t)).length;o--;)l[o]=(a?"#"+a:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){D(t,!0)}finally{a===k&&e.removeAttribute("id")}}}return g(t.replace(z,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){for(var n=e.split("|"),r=n.length;r--;)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&se(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(s){return le(function(o){return o=+o,le(function(e,t){for(var n,r=s([],e.length,o),i=r.length;i--;)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function me(e){return e&&void 0!==e.getElementsByTagName&&e}for(e in d=ae.support={},s=ae.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!J.test(t||n&&n.nodeName||"HTML")},C=ae.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:x;return r!=T&&9===r.nodeType&&r.documentElement&&(a=(T=r).documentElement,E=!s(T),x!=T&&(n=T.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",i,!1):n.attachEvent&&n.attachEvent("onunload",i)),d.scope=ce(function(e){return a.appendChild(e).appendChild(T.createElement("div")),void 0!==e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(T.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=ee.test(T.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!T.getElementsByName||!T.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(re,f);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if(void 0!==t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(re,f);return function(e){var t=void 0!==e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if(void 0!==t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];for(i=t.getElementsByName(e),r=0;o=i[r++];)if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"!==e)return o;for(;n=o[i++];)1===n.nodeType&&r.push(n);return r},b.find.CLASS=d.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&E)return t.getElementsByClassName(e)},c=[],v=[],(d.qsa=ee.test(T.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+I+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+I+"*(?:value|"+M+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),(t=T.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+I+"*name"+I+"*="+I+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=T.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+I+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=ee.test(m=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=m.call(e,"*"),m.call(e,"[s!='']:x"),c.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),c=c.length&&new RegExp(c.join("|")),t=ee.test(a.compareDocumentPosition),y=t||ee.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},q=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==T||e.ownerDocument==x&&y(x,e)?-1:t==T||t.ownerDocument==x&&y(x,t)?1:u?R(u,e)-R(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,s=[e],a=[t];if(!i||!o)return e==T?-1:t==T?1:i?-1:o?1:u?R(u,e)-R(u,t):0;if(i===o)return pe(e,t);for(n=e;n=n.parentNode;)s.unshift(n);for(n=t;n=n.parentNode;)a.unshift(n);for(;s[r]===a[r];)r++;return r?pe(s[r],a[r]):s[r]==x?-1:a[r]==x?1:0}),T},ae.matches=function(e,t){return ae(e,null,null,t)},ae.matchesSelector=function(e,t){if(C(e),d.matchesSelector&&E&&!D[t+" "]&&(!c||!c.test(t))&&(!v||!v.test(t)))try{var n=m.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){D(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(re,f),e[3]=(e[3]||e[4]||e[5]||"").replace(re,f),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||ae.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&ae.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return Y.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&G.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(re,f).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=N[e+" "];return t||(t=new RegExp("(^|"+I+")"+e+"("+I+"|$)"))&&N(e,function(e){return t.test("string"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=ae.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return x(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"!=typeof e)return e.nodeType?(this[0]=e,this.length=1,this):x(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this);if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),A.test(r[1])&&k.isPlainObject(t))for(r in t)x(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}).prototype=k.fn,D=k(E);var L=/^(?:parents|prev(?:Until|All))/,_={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||"*"):void 0!==e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&N(e,t)?k.merge([e],n):n}function me(e,t){for(var n=0,r=e.length;n",""]);var ye=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,s,a,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function qe(e,t){return N(e,"table")&&N(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function _e(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,s,a;if(1===t.nodeType){if(Q.hasData(e)&&(a=Q.get(e).events))for(i in Q.remove(t,"handle events"),a)for(n=0,r=a[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var tn,nn=[],rn=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=nn.pop()||k.expando+"_"+_t.guid++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,s=!1!==e.jsonp&&(rn.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&rn.test(e.data)&&"data");if(s||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=x(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,s?e[s]=e[s].replace(rn,"$1"+r):!1!==e.jsonp&&(e.url+=(Ot.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=T[r],T[r]=function(){o=arguments},n.always(function(){void 0===i?k(T).removeProp(r):T[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,nn.push(r)),o&&x(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((tn=E.implementation.createHTMLDocument("").body).innerHTML="
",2===tn.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=A.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,s=this,a=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){s.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,s,a,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),a=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),i=("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(s=(r=c.position()).top,r.left):(s=parseFloat(o)||0,parseFloat(u)||0),x(t)&&(t=t.call(e,n,k.extend({},a))),null!=t.top&&(f.top=t.top-a.top+s),null!=t.left&&(f.left=t.left-a.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{for(t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position");)e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent;e&&"static"===k.css(e,"position");)e=e.offsetParent;return e||re})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return $(this,function(e,t,n){var r;if(g(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=Ke(y.pixelPosition,function(e,t){if(t)return t=Je(e,n),Xe.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(s,a){k.each({padding:"inner"+s,content:a,"":"outer"+s},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return g(e)?0===o.indexOf("outer")?e["inner"+s]:e.document.documentElement["client"+s]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+s],r["scroll"+s],e.body["offset"+s],r["offset"+s],r["client"+s])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},a,n?e:void 0,n)}})}),k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,t){t=c(t||this.defaultElement||this)[0],this.element=c(t),this.uuid=n++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=c(),this.hoverable=c(),this.focusable=c(),this.classesElementLookup={},t!==this&&(c.data(t,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===t&&this.destroy()}}),this.document=c(t.style?t.ownerDocument:t.document||t),this.window=c(this.document[0].defaultView||this.document[0].parentWindow)),this.options=c.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:c.noop,_create:c.noop,_init:c.noop,destroy:function(){var n=this;this._destroy(),c.each(this.classesElementLookup,function(e,t){n._removeClass(t,e)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:c.noop,widget:function(){return this.element},option:function(e,t){var n,r,i,o=e;if(0===arguments.length)return c.widget.extend({},this.options);if("string"==typeof e)if(o={},e=(n=e.split(".")).shift(),n.length){for(r=o[e]=c.widget.extend({},this.options[e]),i=0;i0&&t-1 in e)}w.fn=w.prototype={jquery:b,constructor:w,length:0,toArray:function(){return i.call(this)},get:function(e){return null==e?i.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=w.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return w.each(this,e)},map:function(e){return this.pushStack(w.map(this,(function(t,n){return e.call(t,n,t)})))},slice:function(){return this.pushStack(i.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(w.grep(this,(function(e,t){return(t+1)%2})))},odd:function(){return this.pushStack(w.grep(this,(function(e,t){return t%2})))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n+~]|[\\x20\\t\\r\\n\\f])[\\x20\\t\\r\\n\\f]*"),U=new RegExp(R+"|>"),X=new RegExp(W),V=new RegExp("^"+M+"$"),G={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M+"|[*])"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+W),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\([\\x20\\t\\r\\n\\f]*(even|odd|(([+-]|)(\\d*)n|)[\\x20\\t\\r\\n\\f]*(?:([+-]|)[\\x20\\t\\r\\n\\f]*(\\d+)|))[\\x20\\t\\r\\n\\f]*\\)|)","i"),bool:new RegExp("^(?:"+P+")$","i"),needsContext:new RegExp("^[\\x20\\t\\r\\n\\f]*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\([\\x20\\t\\r\\n\\f]*((?:-\\d)?\\d*)[\\x20\\t\\r\\n\\f]*\\)|)(?=[^-]|$)","i")},Q=/HTML$/i,Y=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}[\\x20\\t\\r\\n\\f]?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){p()},se=be((function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()}),{dir:"parentNode",next:"legend"});try{_.apply(D=O.call(w.childNodes),w.childNodes),D[w.childNodes.length].nodeType}catch(e){_={apply:D.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}function ae(e,t,r,i){var o,a,l,c,f,h,m,y=t&&t.ownerDocument,w=t?t.nodeType:9;if(r=r||[],"string"!=typeof e||!e||1!==w&&9!==w&&11!==w)return r;if(!i&&(p(t),t=t||d,g)){if(11!==w&&(f=Z.exec(e)))if(o=f[1]){if(9===w){if(!(l=t.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(y&&(l=y.getElementById(o))&&x(t,l)&&l.id===o)return r.push(l),r}else{if(f[2])return _.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return _.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!N[e+" "]&&(!v||!v.test(e))&&(1!==w||"object"!==t.nodeName.toLowerCase())){if(m=e,y=t,1===w&&(U.test(e)||z.test(e))){for((y=ee.test(e)&&me(t.parentNode)||t)===t&&n.scope||((c=t.getAttribute("id"))?c=c.replace(re,ie):t.setAttribute("id",c=b)),a=(h=s(e)).length;a--;)h[a]=(c?"#"+c:":scope")+" "+xe(h[a]);m=h.join(",")}try{return _.apply(r,y.querySelectorAll(m)),r}catch(t){N(e,!0)}finally{c===b&&t.removeAttribute("id")}}}return u(e.replace($,"$1"),t,r,i)}function ue(){var e=[];return function t(n,i){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=i}}function le(e){return e[b]=!0,e}function ce(e){var t=d.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){for(var n=e.split("|"),i=n.length;i--;)r.attrHandle[n[i]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function de(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function he(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function ge(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&se(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function ve(e){return le((function(t){return t=+t,le((function(n,r){for(var i,o=e([],n.length,t),s=o.length;s--;)n[i=o[s]]&&(n[i]=!(r[i]=n[i]))}))}))}function me(e){return e&&void 0!==e.getElementsByTagName&&e}for(t in n=ae.support={},o=ae.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Q.test(t||n&&n.nodeName||"HTML")},p=ae.setDocument=function(e){var t,i,s=e?e.ownerDocument||e:w;return s!=d&&9===s.nodeType&&s.documentElement?(h=(d=s).documentElement,g=!o(d),w!=d&&(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",oe,!1):i.attachEvent&&i.attachEvent("onunload",oe)),n.scope=ce((function(e){return h.appendChild(e).appendChild(d.createElement("div")),void 0!==e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length})),n.attributes=ce((function(e){return e.className="i",!e.getAttribute("className")})),n.getElementsByTagName=ce((function(e){return e.appendChild(d.createComment("")),!e.getElementsByTagName("*").length})),n.getElementsByClassName=K.test(d.getElementsByClassName),n.getById=ce((function(e){return h.appendChild(e).id=b,!d.getElementsByName||!d.getElementsByName(b).length})),n.getById?(r.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},r.find.ID=function(e,t){if(void 0!==t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(te,ne);return function(e){var n=void 0!==e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},r.find.ID=function(e,t){if(void 0!==t.getElementById&&g){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];for(i=t.getElementsByName(e),r=0;o=i[r++];)if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&g)return t.getElementsByClassName(e)},m=[],v=[],(n.qsa=K.test(d.querySelectorAll))&&(ce((function(e){var t;h.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]=[\\x20\\t\\r\\n\\f]*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\[[\\x20\\t\\r\\n\\f]*(?:value|"+P+")"),e.querySelectorAll("[id~="+b+"-]").length||v.push("~="),(t=d.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\[[\\x20\\t\\r\\n\\f]*name[\\x20\\t\\r\\n\\f]*=[\\x20\\t\\r\\n\\f]*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+b+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")})),ce((function(e){e.innerHTML="";var t=d.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name[\\x20\\t\\r\\n\\f]*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")}))),(n.matchesSelector=K.test(y=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ce((function(e){n.disconnectedMatch=y.call(e,"*"),y.call(e,"[s!='']:x"),m.push("!=",W)})),v=v.length&&new RegExp(v.join("|")),m=m.length&&new RegExp(m.join("|")),t=K.test(h.compareDocumentPosition),x=t||K.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},A=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e==d||e.ownerDocument==w&&x(w,e)?-1:t==d||t.ownerDocument==w&&x(w,t)?1:c?H(c,e)-H(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,s=[e],a=[t];if(!i||!o)return e==d?-1:t==d?1:i?-1:o?1:c?H(c,e)-H(c,t):0;if(i===o)return pe(e,t);for(n=e;n=n.parentNode;)s.unshift(n);for(n=t;n=n.parentNode;)a.unshift(n);for(;s[r]===a[r];)r++;return r?pe(s[r],a[r]):s[r]==w?-1:a[r]==w?1:0},d):d},ae.matches=function(e,t){return ae(e,null,null,t)},ae.matchesSelector=function(e,t){if(p(e),n.matchesSelector&&g&&!N[t+" "]&&(!m||!m.test(t))&&(!v||!v.test(t)))try{var r=y.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){N(t,!0)}return ae(t,d,null,[e]).length>0},ae.contains=function(e,t){return(e.ownerDocument||e)!=d&&p(e),x(e,t)},ae.attr=function(e,t){(e.ownerDocument||e)!=d&&p(e);var i=r.attrHandle[t.toLowerCase()],o=i&&j.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},ae.escape=function(e){return(e+"").replace(re,ie)},ae.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},ae.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(A),f){for(;t=e[o++];)t===e[o]&&(i=r.push(o));for(;i--;)e.splice(r[i],1)}return c=null,e},i=ae.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else for(;t=e[r++];)n+=i(t);return n},(r=ae.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||ae.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&ae.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=s(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+" "];return t||(t=new RegExp("(^|[\\x20\\t\\r\\n\\f])"+e+"("+R+"|$)"))&&E(e,(function(e){return t.test("string"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute("class")||"")}))},ATTR:function(e,t,n){return function(r){var i=ae.attr(r,e);return null==i?"!="===t:!t||(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i.replace(F," ")+" ").indexOf(n)>-1:"|="===t&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),s="last"!==e.slice(-4),a="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h,g=o!==s?"nextSibling":"previousSibling",v=t.parentNode,m=a&&t.nodeName.toLowerCase(),y=!u&&!a,x=!1;if(v){if(o){for(;g;){for(p=t;p=p[g];)if(a?p.nodeName.toLowerCase()===m:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[s?v.firstChild:v.lastChild],s&&y){for(x=(d=(l=(c=(f=(p=v)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===C&&l[1])&&l[2],p=d&&v.childNodes[d];p=++d&&p&&p[g]||(x=d=0)||h.pop();)if(1===p.nodeType&&++x&&p===t){c[e]=[C,d,x];break}}else if(y&&(x=d=(l=(c=(f=(p=t)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===C&&l[1]),!1===x)for(;(p=++d&&p&&p[g]||(x=d=0)||h.pop())&&((a?p.nodeName.toLowerCase()!==m:1!==p.nodeType)||!++x||(y&&((c=(f=p[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]=[C,x]),p!==t)););return(x-=i)===r||x%r==0&&x/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||ae.error("unsupported pseudo: "+e);return i[b]?i(t):i.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?le((function(e,n){for(var r,o=i(e,t),s=o.length;s--;)e[r=H(e,o[s])]=!(n[r]=o[s])})):function(e){return i(e,0,n)}):i}},pseudos:{not:le((function(e){var t=[],n=[],r=a(e.replace($,"$1"));return r[b]?le((function(e,t,n,i){for(var o,s=r(e,null,i,[]),a=e.length;a--;)(o=s[a])&&(e[a]=!(t[a]=o))})):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}})),has:le((function(e){return function(t){return ae(e,t).length>0}})),contains:le((function(e){return e=e.replace(te,ne),function(t){return(t.textContent||i(t)).indexOf(e)>-1}})),lang:le((function(e){return V.test(e||"")||ae.error("unsupported lang: "+e),e=e.replace(te,ne).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}})),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Y.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve((function(){return[0]})),last:ve((function(e,t){return[t-1]})),eq:ve((function(e,t,n){return[n<0?n+t:n]})),even:ve((function(e,t){for(var n=0;nt?t:n;--r>=0;)e.push(r);return e})),gt:ve((function(e,t,n){for(var r=n<0?n+t:n;++r1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function Ce(e,t,n,r,i){for(var o,s=[],a=0,u=e.length,l=null!=t;a-1&&(o[l]=!(s[l]=f))}}else m=Ce(m===s?m.splice(h,m.length):m),i?i(null,s,m,u):_.apply(s,m)}))}function Ee(e){for(var t,n,i,o=e.length,s=r.relative[e[0].type],a=s||r.relative[" "],u=s?1:0,c=be((function(e){return e===t}),a,!0),f=be((function(e){return H(t,e)>-1}),a,!0),p=[function(e,n,r){var i=!s&&(r||n!==l)||((t=n).nodeType?c(e,n,r):f(e,n,r));return t=null,i}];u1&&we(p),u>1&&xe(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace($,"$1"),n,u0,i=e.length>0,o=function(o,s,a,u,c){var f,h,v,m=0,y="0",x=o&&[],b=[],w=l,T=o||i&&r.find.TAG("*",c),E=C+=null==w?1:Math.random()||.1,k=T.length;for(c&&(l=s==d||s||c);y!==k&&null!=(f=T[y]);y++){if(i&&f){for(h=0,s||f.ownerDocument==d||(p(f),a=!g);v=e[h++];)if(v(f,s||d,a)){u.push(f);break}c&&(C=E)}n&&((f=!v&&f)&&m--,o&&x.push(f))}if(m+=y,n&&y!==m){for(h=0;v=t[h++];)v(x,b,s,a);if(o){if(m>0)for(;y--;)x[y]||b[y]||(b[y]=q.call(u));b=Ce(b)}_.apply(u,b),c&&!o&&b.length>0&&m+t.length>1&&ae.uniqueSort(u)}return c&&(C=E,l=w),x};return n?le(o):o}(o,i))).selector=e}return a},u=ae.select=function(e,t,n,i){var o,u,l,c,f,p="function"==typeof e&&e,d=!i&&s(e=p.selector||e);if(n=n||[],1===d.length){if((u=d[0]=d[0].slice(0)).length>2&&"ID"===(l=u[0]).type&&9===t.nodeType&&g&&r.relative[u[1].type]){if(!(t=(r.find.ID(l.matches[0].replace(te,ne),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(u.shift().value.length)}for(o=G.needsContext.test(e)?0:u.length;o--&&(l=u[o],!r.relative[c=l.type]);)if((f=r.find[c])&&(i=f(l.matches[0].replace(te,ne),ee.test(u[0].type)&&me(t.parentNode)||t))){if(u.splice(o,1),!(e=i.length&&xe(u)))return _.apply(n,i),n;break}}return(p||a(e,d))(i,t,!g,n,!t||ee.test(e)&&me(t.parentNode)||t),n},n.sortStable=b.split("").sort(A).join("")===b,n.detectDuplicates=!!f,p(),n.sortDetached=ce((function(e){return 1&e.compareDocumentPosition(d.createElement("fieldset"))})),ce((function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")}))||fe("type|href|height|width",(function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)})),n.attributes&&ce((function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")}))||fe("value",(function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue})),ce((function(e){return null==e.getAttribute("disabled")}))||fe(P,(function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null})),ae}(e);w.find=T,w.expr=T.selectors,w.expr[":"]=w.expr.pseudos,w.uniqueSort=w.unique=T.uniqueSort,w.text=T.getText,w.isXMLDoc=T.isXML,w.contains=T.contains,w.escapeSelector=T.escape;var E=function(e,t,n){for(var r=[],i=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(i&&w(e).is(n))break;r.push(e)}return r},k=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},S=w.expr.match.needsContext;function N(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var A=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,t,n){return h(t)?w.grep(e,(function(e,r){return!!t.call(e,r,e)!==n})):t.nodeType?w.grep(e,(function(e){return e===t!==n})):"string"!=typeof t?w.grep(e,(function(e){return a.call(t,e)>-1!==n})):w.filter(t,e,n)}w.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?w.find.matchesSelector(r,e)?[r]:[]:w.find.matches(e,w.grep(t,(function(e){return 1===e.nodeType})))},w.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(w(e).filter((function(){for(t=0;t1?w.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&S.test(e)?w(e):e||[],!1).length}});var D,q=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(w.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof w?t[0]:t,w.merge(this,w.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:v,!0)),A.test(r[1])&&w.isPlainObject(t))for(r in t)h(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=v.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):h(e)?void 0!==n.ready?n.ready(e):e(w):w.makeArray(e,this)}).prototype=w.fn,D=w(v);var L=/^(?:parents|prev(?:Until|All))/,_={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}w.fn.extend({has:function(e){var t=w(e,this),n=t.length;return this.filter((function(){for(var e=0;e-1:1===n.nodeType&&w.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?w.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?a.call(w(e),this[0]):a.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(w.uniqueSort(w.merge(this.get(),w(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),w.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return E(e,"parentNode")},parentsUntil:function(e,t,n){return E(e,"parentNode",n)},next:function(e){return O(e,"nextSibling")},prev:function(e){return O(e,"previousSibling")},nextAll:function(e){return E(e,"nextSibling")},prevAll:function(e){return E(e,"previousSibling")},nextUntil:function(e,t,n){return E(e,"nextSibling",n)},prevUntil:function(e,t,n){return E(e,"previousSibling",n)},siblings:function(e){return k((e.parentNode||{}).firstChild,e)},children:function(e){return k(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(N(e,"template")&&(e=e.content||e),w.merge([],e.childNodes))}},(function(e,t){w.fn[e]=function(n,r){var i=w.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=w.filter(r,i)),this.length>1&&(_[e]||w.uniqueSort(i),L.test(e)&&i.reverse()),this.pushStack(i)}}));var H=/[^\x20\t\r\n\f]+/g;function P(e){return e}function R(e){throw e}function M(e,t,n,r){var i;try{e&&h(i=e.promise)?i.call(e).done(t).fail(n):e&&h(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}w.Callbacks=function(e){e="string"==typeof e?function(e){var t={};return w.each(e.match(H)||[],(function(e,n){t[n]=!0})),t}(e):w.extend({},e);var t,n,r,i,o=[],s=[],a=-1,u=function(){for(i=i||e.once,r=t=!0;s.length;a=-1)for(n=s.shift();++a-1;)o.splice(n,1),n<=a&&a--})),this},has:function(e){return e?w.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=s=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=s=[],n||t||(o=n=""),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],s.push(n),t||u()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l},w.extend({Deferred:function(t){var n=[["notify","progress",w.Callbacks("memory"),w.Callbacks("memory"),2],["resolve","done",w.Callbacks("once memory"),w.Callbacks("once memory"),0,"resolved"],["reject","fail",w.Callbacks("once memory"),w.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},catch:function(e){return i.then(null,e)},pipe:function(){var e=arguments;return w.Deferred((function(t){w.each(n,(function(n,r){var i=h(e[r[4]])&&e[r[4]];o[r[1]]((function(){var e=i&&i.apply(this,arguments);e&&h(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+"With"](this,i?[e]:arguments)}))})),e=null})).promise()},then:function(t,r,i){var o=0;function s(t,n,r,i){return function(){var a=this,u=arguments,l=function(){var e,l;if(!(t=o&&(r!==R&&(a=void 0,u=[e]),n.rejectWith(a,u))}};t?c():(w.Deferred.getStackHook&&(c.stackTrace=w.Deferred.getStackHook()),e.setTimeout(c))}}return w.Deferred((function(e){n[0][3].add(s(0,e,h(i)?i:P,e.notifyWith)),n[1][3].add(s(0,e,h(t)?t:P)),n[2][3].add(s(0,e,h(r)?r:R))})).promise()},promise:function(e){return null!=e?w.extend(e,i):i}},o={};return w.each(n,(function(e,t){var s=t[2],a=t[5];i[t[1]]=s.add,a&&s.add((function(){r=a}),n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),s.add(t[3].fire),o[t[0]]=function(){return o[t[0]+"With"](this===o?void 0:this,arguments),this},o[t[0]+"With"]=s.fireWith})),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),o=i.call(arguments),s=w.Deferred(),a=function(e){return function(n){r[e]=this,o[e]=arguments.length>1?i.call(arguments):n,--t||s.resolveWith(r,o)}};if(t<=1&&(M(e,s.done(a(n)).resolve,s.reject,!t),"pending"===s.state()||h(o[n]&&o[n].then)))return s.then();for(;n--;)M(o[n],a(n),s.reject);return s.promise()}});var I=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;w.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&I.test(t.name)&&e.console.warn("jQuery.Deferred exception: "+t.message,t.stack,n)},w.readyException=function(t){e.setTimeout((function(){throw t}))};var W=w.Deferred();function F(){v.removeEventListener("DOMContentLoaded",F),e.removeEventListener("load",F),w.ready()}w.fn.ready=function(e){return W.then(e).catch((function(e){w.readyException(e)})),this},w.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--w.readyWait:w.isReady)||(w.isReady=!0,!0!==e&&--w.readyWait>0||W.resolveWith(v,[w]))}}),w.ready.then=W.then,"complete"===v.readyState||"loading"!==v.readyState&&!v.documentElement.doScroll?e.setTimeout(w.ready):(v.addEventListener("DOMContentLoaded",F),e.addEventListener("load",F));var $=function(e,t,n,r,i,o,s){var a=0,u=e.length,l=null==n;if("object"===x(n))for(a in i=!0,n)$(e,t,a,n[a],!0,o,s);else if(void 0!==r&&(i=!0,h(r)||(s=!0),l&&(s?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(w(e),n)})),t))for(;a1,null,!0)},removeData:function(e){return this.each((function(){Y.remove(this,e)}))}}),w.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Q.get(e,t),n&&(!r||Array.isArray(n)?r=Q.access(e,t,w.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=w.queue(e,t),r=n.length,i=n.shift(),o=w._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,(function(){w.dequeue(e,t)}),o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Q.get(e,n)||Q.access(e,n,{empty:w.Callbacks("once memory").add((function(){Q.remove(e,[t+"queue",n])}))})}}),w.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length\x20\t\r\n\f]*)/i,ge=/^$|^module$|\/(?:java|ecma)script/i;fe=v.createDocumentFragment().appendChild(v.createElement("div")),(pe=v.createElement("input")).setAttribute("type","radio"),pe.setAttribute("checked","checked"),pe.setAttribute("name","t"),fe.appendChild(pe),d.checkClone=fe.cloneNode(!0).cloneNode(!0).lastChild.checked,fe.innerHTML="",d.noCloneChecked=!!fe.cloneNode(!0).lastChild.defaultValue,fe.innerHTML="",d.option=!!fe.lastChild;var ve={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function me(e,t){var n;return n=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||"*"):void 0!==e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&N(e,t)?w.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var xe=/<|&#?\w+;/;function be(e,t,n,r,i){for(var o,s,a,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d-1)i&&i.push(o);else if(l=ie(o),s=me(f.appendChild(o),"script"),l&&ye(s),n)for(c=0;o=s[c++];)ge.test(o.type||"")&&n.push(o);return f}var we=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Te=/^([^.]*)(?:\.(.+)|)/;function Ee(){return!0}function ke(){return!1}function Se(e,t){return e===function(){try{return v.activeElement}catch(e){}}()==("focus"===t)}function Ne(e,t,n,r,i,o){var s,a;if("object"==typeof t){for(a in"string"!=typeof n&&(r=r||n,n=void 0),t)Ne(e,a,n,r,t[a],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=ke;else if(!i)return e;return 1===o&&(s=i,(i=function(e){return w().off(e),s.apply(this,arguments)}).guid=s.guid||(s.guid=w.guid++)),e.each((function(){w.event.add(this,t,i,r,n)}))}function Ae(e,t,n){n?(Q.set(e,t,!1),w.event.add(e,t,{namespace:!1,handler:function(e){var r,o,s=Q.get(this,t);if(1&e.isTrigger&&this[t]){if(s.length)(w.event.special[t]||{}).delegateType&&e.stopPropagation();else if(s=i.call(arguments),Q.set(this,t,s),r=n(this,t),this[t](),s!==(o=Q.get(this,t))||r?Q.set(this,t,!1):o={},s!==o)return e.stopImmediatePropagation(),e.preventDefault(),o.value}else s.length&&(Q.set(this,t,{value:w.event.trigger(w.extend(s[0],w.Event.prototype),s.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,t)&&w.event.add(e,t,Ee)}w.event={global:{},add:function(e,t,n,r,i){var o,s,a,u,l,c,f,p,d,h,g,v=Q.get(e);if(V(e))for(n.handler&&(n=(o=n).handler,i=o.selector),i&&w.find.matchesSelector(re,i),n.guid||(n.guid=w.guid++),(u=v.events)||(u=v.events=Object.create(null)),(s=v.handle)||(s=v.handle=function(t){return void 0!==w&&w.event.triggered!==t.type?w.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||"").match(H)||[""]).length;l--;)d=g=(a=Te.exec(t[l])||[])[1],h=(a[2]||"").split(".").sort(),d&&(f=w.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=w.event.special[d]||{},c=w.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&w.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,s)||e.addEventListener&&e.addEventListener(d,s)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),w.event.global[d]=!0)},remove:function(e,t,n,r,i){var o,s,a,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){for(l=(t=(t||"").match(H)||[""]).length;l--;)if(d=g=(a=Te.exec(t[l])||[])[1],h=(a[2]||"").split(".").sort(),d){for(f=w.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],a=a[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),s=o=p.length;o--;)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||a&&!a.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));s&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||w.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)w.event.remove(e,d+t[l],n,r,!0);w.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,s,a=new Array(arguments.length),u=w.event.fix(e),l=(Q.get(this,"events")||Object.create(null))[u.type]||[],c=w.event.special[u.type]||{};for(a[0]=u,t=1;t=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],s={},n=0;n-1:w.find(i,this,null,[l]).length),s[i]&&o.push(r);o.length&&a.push({elem:l,handlers:o})}return l=this,u\s*$/g;function Le(e,t){return N(e,"table")&&N(11!==t.nodeType?t:t.firstChild,"tr")&&w(e).children("tbody")[0]||e}function _e(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Oe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function He(e,t){var n,r,i,o,s,a;if(1===t.nodeType){if(Q.hasData(e)&&(a=Q.get(e).events))for(i in Q.remove(t,"handle events"),a)for(n=0,r=a[i].length;n1&&"string"==typeof v&&!d.checkClone&&De.test(v))return e.each((function(i){var o=e.eq(i);m&&(t[0]=v.call(this,i,o.html())),Re(o,t,n,r)}));if(p&&(s=(i=be(t,e[0].ownerDocument,!1,e,r)).firstChild,1===i.childNodes.length&&(i=s),s||r)){for(u=(a=w.map(me(i,"script"),_e)).length;f0&&ye(s,!u&&me(e,"script")),a},cleanData:function(e){for(var t,n,r,i=w.event.special,o=0;void 0!==(n=e[o]);o++)if(V(n)){if(t=n[Q.expando]){if(t.events)for(r in t.events)i[r]?w.event.remove(n,r):w.removeEvent(n,r,t.handle);n[Q.expando]=void 0}n[Y.expando]&&(n[Y.expando]=void 0)}}}),w.fn.extend({detach:function(e){return Me(this,e,!0)},remove:function(e){return Me(this,e)},text:function(e){return $(this,(function(e){return void 0===e?w.text(this):this.empty().each((function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)}))}),null,e,arguments.length)},append:function(){return Re(this,arguments,(function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Le(this,e).appendChild(e)}))},prepend:function(){return Re(this,arguments,(function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Le(this,e);t.insertBefore(e,t.firstChild)}}))},before:function(){return Re(this,arguments,(function(e){this.parentNode&&this.parentNode.insertBefore(e,this)}))},after:function(){return Re(this,arguments,(function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)}))},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(w.cleanData(me(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map((function(){return w.clone(this,e,t)}))},html:function(e){return $(this,(function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!je.test(e)&&!ve[(he.exec(e)||["",""])[1].toLowerCase()]){e=w.htmlPrefilter(e);try{for(;n3,re.removeChild(t)),a}}))}();var Ue=["Webkit","Moz","ms"],Xe=v.createElement("div").style,Ve={};function Ge(e){var t=w.cssProps[e]||Ve[e];return t||(e in Xe?e:Ve[e]=function(e){for(var t=e[0].toUpperCase()+e.slice(1),n=Ue.length;n--;)if((e=Ue[n]+t)in Xe)return e}(e)||e)}var Qe=/^(none|table(?!-c[ea]).+)/,Ye=/^--/,Je={position:"absolute",visibility:"hidden",display:"block"},Ke={letterSpacing:"0",fontWeight:"400"};function Ze(e,t,n){var r=te.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function et(e,t,n,r,i,o){var s="width"===t?1:0,a=0,u=0;if(n===(r?"border":"content"))return 0;for(;s<4;s+=2)"margin"===n&&(u+=w.css(e,n+ne[s],!0,i)),r?("content"===n&&(u-=w.css(e,"padding"+ne[s],!0,i)),"margin"!==n&&(u-=w.css(e,"border"+ne[s]+"Width",!0,i))):(u+=w.css(e,"padding"+ne[s],!0,i),"padding"!==n?u+=w.css(e,"border"+ne[s]+"Width",!0,i):a+=w.css(e,"border"+ne[s]+"Width",!0,i));return!r&&o>=0&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-a-.5))||0),u}function tt(e,t,n){var r=We(e),i=(!d.boxSizingReliable()||n)&&"border-box"===w.css(e,"boxSizing",!1,r),o=i,s=Be(e,t,r),a="offset"+t[0].toUpperCase()+t.slice(1);if(Ie.test(s)){if(!n)return s;s="auto"}return(!d.boxSizingReliable()&&i||!d.reliableTrDimensions()&&N(e,"tr")||"auto"===s||!parseFloat(s)&&"inline"===w.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===w.css(e,"boxSizing",!1,r),(o=a in e)&&(s=e[a])),(s=parseFloat(s)||0)+et(e,t,n||(i?"border":"content"),o,r,s)+"px"}function nt(e,t,n,r,i){return new nt.prototype.init(e,t,n,r,i)}w.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Be(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,s,a=X(t),u=Ye.test(t),l=e.style;if(u||(t=Ge(a)),s=w.cssHooks[t]||w.cssHooks[a],void 0===n)return s&&"get"in s&&void 0!==(i=s.get(e,!1,r))?i:l[t];"string"==(o=typeof n)&&(i=te.exec(n))&&i[1]&&(n=ae(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(w.cssNumber[a]?"":"px")),d.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),s&&"set"in s&&void 0===(n=s.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,s,a=X(t);return Ye.test(t)||(t=Ge(a)),(s=w.cssHooks[t]||w.cssHooks[a])&&"get"in s&&(i=s.get(e,!0,n)),void 0===i&&(i=Be(e,t,r)),"normal"===i&&t in Ke&&(i=Ke[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),w.each(["height","width"],(function(e,t){w.cssHooks[t]={get:function(e,n,r){if(n)return!Qe.test(w.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?tt(e,t,r):Fe(e,Je,(function(){return tt(e,t,r)}))},set:function(e,n,r){var i,o=We(e),s=!d.scrollboxSize()&&"absolute"===o.position,a=(s||r)&&"border-box"===w.css(e,"boxSizing",!1,o),u=r?et(e,t,r,a,o):0;return a&&s&&(u-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-et(e,t,"border",!1,o)-.5)),u&&(i=te.exec(n))&&"px"!==(i[3]||"px")&&(e.style[t]=n,n=w.css(e,t)),Ze(0,n,u)}}})),w.cssHooks.marginLeft=ze(d.reliableMarginLeft,(function(e,t){if(t)return(parseFloat(Be(e,"marginLeft"))||e.getBoundingClientRect().left-Fe(e,{marginLeft:0},(function(){return e.getBoundingClientRect().left})))+"px"})),w.each({margin:"",padding:"",border:"Width"},(function(e,t){w.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[e+ne[r]+t]=o[r]||o[r-2]||o[0];return i}},"margin"!==e&&(w.cssHooks[e+t].set=Ze)})),w.fn.extend({css:function(e,t){return $(this,(function(e,t,n){var r,i,o={},s=0;if(Array.isArray(t)){for(r=We(e),i=t.length;s1)}}),w.Tween=nt,nt.prototype={constructor:nt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||w.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(w.cssNumber[n]?"":"px")},cur:function(){var e=nt.propHooks[this.prop];return e&&e.get?e.get(this):nt.propHooks._default.get(this)},run:function(e){var t,n=nt.propHooks[this.prop];return this.options.duration?this.pos=t=w.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):nt.propHooks._default.set(this),this}},nt.prototype.init.prototype=nt.prototype,nt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=w.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){w.fx.step[e.prop]?w.fx.step[e.prop](e):1!==e.elem.nodeType||!w.cssHooks[e.prop]&&null==e.elem.style[Ge(e.prop)]?e.elem[e.prop]=e.now:w.style(e.elem,e.prop,e.now+e.unit)}}},nt.propHooks.scrollTop=nt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},w.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},w.fx=nt.prototype.init,w.fx.step={};var rt,it,ot=/^(?:toggle|show|hide)$/,st=/queueHooks$/;function at(){it&&(!1===v.hidden&&e.requestAnimationFrame?e.requestAnimationFrame(at):e.setTimeout(at,w.fx.interval),w.fx.tick())}function ut(){return e.setTimeout((function(){rt=void 0})),rt=Date.now()}function lt(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=ne[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function ct(e,t,n){for(var r,i=(ft.tweeners[t]||[]).concat(ft.tweeners["*"]),o=0,s=i.length;o1)},removeAttr:function(e){return this.each((function(){w.removeAttr(this,e)}))}}),w.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return void 0===e.getAttribute?w.prop(e,t,n):(1===o&&w.isXMLDoc(e)||(i=w.attrHooks[t.toLowerCase()]||(w.expr.match.bool.test(t)?pt:void 0)),void 0!==n?null===n?void w.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=w.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!d.radioValue&&"radio"===t&&N(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(H);if(i&&1===e.nodeType)for(;n=i[r++];)e.removeAttribute(n)}}),pt={set:function(e,t,n){return!1===t?w.removeAttr(e,n):e.setAttribute(n,n),n}},w.each(w.expr.match.bool.source.match(/\w+/g),(function(e,t){var n=dt[t]||w.find.attr;dt[t]=function(e,t,r){var i,o,s=t.toLowerCase();return r||(o=dt[s],dt[s]=i,i=null!=n(e,t,r)?s:null,dt[s]=o),i}}));var ht=/^(?:input|select|textarea|button)$/i,gt=/^(?:a|area)$/i;function vt(e){return(e.match(H)||[]).join(" ")}function mt(e){return e.getAttribute&&e.getAttribute("class")||""}function yt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(H)||[]}w.fn.extend({prop:function(e,t){return $(this,w.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each((function(){delete this[w.propFix[e]||e]}))}}),w.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&w.isXMLDoc(e)||(t=w.propFix[t]||t,i=w.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=w.find.attr(e,"tabindex");return t?parseInt(t,10):ht.test(e.nodeName)||gt.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),d.optSelected||(w.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),w.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],(function(){w.propFix[this.toLowerCase()]=this})),w.fn.extend({addClass:function(e){var t,n,r,i,o,s,a,u=0;if(h(e))return this.each((function(t){w(this).addClass(e.call(this,t,mt(this)))}));if((t=yt(e)).length)for(;n=this[u++];)if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){for(s=0;o=t[s++];)r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(a=vt(r))&&n.setAttribute("class",a)}return this},removeClass:function(e){var t,n,r,i,o,s,a,u=0;if(h(e))return this.each((function(t){w(this).removeClass(e.call(this,t,mt(this)))}));if(!arguments.length)return this.attr("class","");if((t=yt(e)).length)for(;n=this[u++];)if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){for(s=0;o=t[s++];)for(;r.indexOf(" "+o+" ")>-1;)r=r.replace(" "+o+" "," ");i!==(a=vt(r))&&n.setAttribute("class",a)}return this},toggleClass:function(e,t){var n=typeof e,r="string"===n||Array.isArray(e);return"boolean"==typeof t&&r?t?this.addClass(e):this.removeClass(e):h(e)?this.each((function(n){w(this).toggleClass(e.call(this,n,mt(this),t),t)})):this.each((function(){var t,i,o,s;if(r)for(i=0,o=w(this),s=yt(e);t=s[i++];)o.hasClass(t)?o.removeClass(t):o.addClass(t);else void 0!==e&&"boolean"!==n||((t=mt(this))&&Q.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":Q.get(this,"__className__")||""))}))},hasClass:function(e){var t,n,r=0;for(t=" "+e+" ";n=this[r++];)if(1===n.nodeType&&(" "+vt(mt(n))+" ").indexOf(t)>-1)return!0;return!1}});var xt=/\r/g;w.fn.extend({val:function(e){var t,n,r,i=this[0];return arguments.length?(r=h(e),this.each((function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,w(this).val()):e)?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=w.map(i,(function(e){return null==e?"":e+""}))),(t=w.valHooks[this.type]||w.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))}))):i?(t=w.valHooks[i.type]||w.valHooks[i.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:"string"==typeof(n=i.value)?n.replace(xt,""):null==n?"":n:void 0}}),w.extend({valHooks:{option:{get:function(e){var t=w.find.attr(e,"value");return null!=t?t:vt(w.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,s="select-one"===e.type,a=s?null:[],u=s?o+1:i.length;for(r=o<0?u:s?o:0;r-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),w.each(["radio","checkbox"],(function(){w.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=w.inArray(w(e).val(),t)>-1}},d.checkOn||(w.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})})),d.focusin="onfocusin"in e;var bt=/^(?:focusinfocus|focusoutblur)$/,wt=function(e){e.stopPropagation()};w.extend(w.event,{trigger:function(t,n,r,i){var o,s,a,u,l,f,p,d,m=[r||v],y=c.call(t,"type")?t.type:t,x=c.call(t,"namespace")?t.namespace.split("."):[];if(s=d=a=r=r||v,3!==r.nodeType&&8!==r.nodeType&&!bt.test(y+w.event.triggered)&&(y.indexOf(".")>-1&&(x=y.split("."),y=x.shift(),x.sort()),l=y.indexOf(":")<0&&"on"+y,(t=t[w.expando]?t:new w.Event(y,"object"==typeof t&&t)).isTrigger=i?2:3,t.namespace=x.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+x.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=r),n=null==n?[t]:w.makeArray(n,[t]),p=w.event.special[y]||{},i||!p.trigger||!1!==p.trigger.apply(r,n))){if(!i&&!p.noBubble&&!g(r)){for(u=p.delegateType||y,bt.test(u+y)||(s=s.parentNode);s;s=s.parentNode)m.push(s),a=s;a===(r.ownerDocument||v)&&m.push(a.defaultView||a.parentWindow||e)}for(o=0;(s=m[o++])&&!t.isPropagationStopped();)d=s,t.type=o>1?u:p.bindType||y,(f=(Q.get(s,"events")||Object.create(null))[t.type]&&Q.get(s,"handle"))&&f.apply(s,n),(f=l&&s[l])&&f.apply&&V(s)&&(t.result=f.apply(s,n),!1===t.result&&t.preventDefault());return t.type=y,i||t.isDefaultPrevented()||p._default&&!1!==p._default.apply(m.pop(),n)||!V(r)||l&&h(r[y])&&!g(r)&&((a=r[l])&&(r[l]=null),w.event.triggered=y,t.isPropagationStopped()&&d.addEventListener(y,wt),r[y](),t.isPropagationStopped()&&d.removeEventListener(y,wt),w.event.triggered=void 0,a&&(r[l]=a)),t.result}},simulate:function(e,t,n){var r=w.extend(new w.Event,n,{type:e,isSimulated:!0});w.event.trigger(r,null,t)}}),w.fn.extend({trigger:function(e,t){return this.each((function(){w.event.trigger(e,t,this)}))},triggerHandler:function(e,t){var n=this[0];if(n)return w.event.trigger(e,t,n,!0)}}),d.focusin||w.each({focus:"focusin",blur:"focusout"},(function(e,t){var n=function(e){w.event.simulate(t,e.target,w.event.fix(e))};w.event.special[t]={setup:function(){var r=this.ownerDocument||this.document||this,i=Q.access(r,t);i||r.addEventListener(e,n,!0),Q.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this.document||this,i=Q.access(r,t)-1;i?Q.access(r,t,i):(r.removeEventListener(e,n,!0),Q.remove(r,t))}}}));var Ct=e.location,Tt={guid:Date.now()},Et=/\?/;w.parseXML=function(t){var n;if(!t||"string"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,"text/xml")}catch(e){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||w.error("Invalid XML: "+t),n};var kt=/\[\]$/,St=/\r?\n/g,Nt=/^(?:submit|button|image|reset|file)$/i,At=/^(?:input|select|textarea|keygen)/i;function jt(e,t,n,r){var i;if(Array.isArray(t))w.each(t,(function(t,i){n||kt.test(e)?r(e,i):jt(e+"["+("object"==typeof i&&null!=i?t:"")+"]",i,n,r)}));else if(n||"object"!==x(t))r(e,t);else for(i in t)jt(e+"["+i+"]",t[i],n,r)}w.param=function(e,t){var n,r=[],i=function(e,t){var n=h(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!w.isPlainObject(e))w.each(e,(function(){i(this.name,this.value)}));else for(n in e)jt(n,e[n],t,i);return r.join("&")},w.fn.extend({serialize:function(){return w.param(this.serializeArray())},serializeArray:function(){return this.map((function(){var e=w.prop(this,"elements");return e?w.makeArray(e):this})).filter((function(){var e=this.type;return this.name&&!w(this).is(":disabled")&&At.test(this.nodeName)&&!Nt.test(e)&&(this.checked||!de.test(e))})).map((function(e,t){var n=w(this).val();return null==n?null:Array.isArray(n)?w.map(n,(function(e){return{name:t.name,value:e.replace(St,"\r\n")}})):{name:t.name,value:n.replace(St,"\r\n")}})).get()}});var Dt=/%20/g,qt=/#.*$/,Lt=/([?&])_=[^&]*/,_t=/^(.*?):[ \t]*([^\r\n]*)$/gm,Ot=/^(?:GET|HEAD)$/,Ht=/^\/\//,Pt={},Rt={},Mt="*/".concat("*"),It=v.createElement("a");function Wt(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(H)||[];if(h(n))for(;r=o[i++];)"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function Ft(e,t,n,r){var i={},o=e===Rt;function s(a){var u;return i[a]=!0,w.each(e[a]||[],(function(e,a){var l=a(t,n,r);return"string"!=typeof l||o||i[l]?o?!(u=l):void 0:(t.dataTypes.unshift(l),s(l),!1)})),u}return s(t.dataTypes[0])||!i["*"]&&s("*")}function $t(e,t){var n,r,i=w.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&w.extend(!0,e,r),e}It.href=Ct.href,w.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ct.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Ct.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Mt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":w.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?$t($t(e,w.ajaxSettings),t):$t(w.ajaxSettings,e)},ajaxPrefilter:Wt(Pt),ajaxTransport:Wt(Rt),ajax:function(t,n){"object"==typeof t&&(n=t,t=void 0),n=n||{};var r,i,o,s,a,u,l,c,f,p,d=w.ajaxSetup({},n),h=d.context||d,g=d.context&&(h.nodeType||h.jquery)?w(h):w.event,m=w.Deferred(),y=w.Callbacks("once memory"),x=d.statusCode||{},b={},C={},T="canceled",E={readyState:0,getResponseHeader:function(e){var t;if(l){if(!s)for(s={};t=_t.exec(o);)s[t[1].toLowerCase()+" "]=(s[t[1].toLowerCase()+" "]||[]).concat(t[2]);t=s[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return l?o:null},setRequestHeader:function(e,t){return null==l&&(e=C[e.toLowerCase()]=C[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==l&&(d.mimeType=e),this},statusCode:function(e){var t;if(e)if(l)E.always(e[E.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||T;return r&&r.abort(t),k(0,t),this}};if(m.promise(E),d.url=((t||d.url||Ct.href)+"").replace(Ht,Ct.protocol+"//"),d.type=n.method||n.type||d.method||d.type,d.dataTypes=(d.dataType||"*").toLowerCase().match(H)||[""],null==d.crossDomain){u=v.createElement("a");try{u.href=d.url,u.href=u.href,d.crossDomain=It.protocol+"//"+It.host!=u.protocol+"//"+u.host}catch(e){d.crossDomain=!0}}if(d.data&&d.processData&&"string"!=typeof d.data&&(d.data=w.param(d.data,d.traditional)),Ft(Pt,d,n,E),l)return E;for(f in(c=w.event&&d.global)&&0==w.active++&&w.event.trigger("ajaxStart"),d.type=d.type.toUpperCase(),d.hasContent=!Ot.test(d.type),i=d.url.replace(qt,""),d.hasContent?d.data&&d.processData&&0===(d.contentType||"").indexOf("application/x-www-form-urlencoded")&&(d.data=d.data.replace(Dt,"+")):(p=d.url.slice(i.length),d.data&&(d.processData||"string"==typeof d.data)&&(i+=(Et.test(i)?"&":"?")+d.data,delete d.data),!1===d.cache&&(i=i.replace(Lt,"$1"),p=(Et.test(i)?"&":"?")+"_="+Tt.guid+++p),d.url=i+p),d.ifModified&&(w.lastModified[i]&&E.setRequestHeader("If-Modified-Since",w.lastModified[i]),w.etag[i]&&E.setRequestHeader("If-None-Match",w.etag[i])),(d.data&&d.hasContent&&!1!==d.contentType||n.contentType)&&E.setRequestHeader("Content-Type",d.contentType),E.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+("*"!==d.dataTypes[0]?", "+Mt+"; q=0.01":""):d.accepts["*"]),d.headers)E.setRequestHeader(f,d.headers[f]);if(d.beforeSend&&(!1===d.beforeSend.call(h,E,d)||l))return E.abort();if(T="abort",y.add(d.complete),E.done(d.success),E.fail(d.error),r=Ft(Rt,d,n,E)){if(E.readyState=1,c&&g.trigger("ajaxSend",[E,d]),l)return E;d.async&&d.timeout>0&&(a=e.setTimeout((function(){E.abort("timeout")}),d.timeout));try{l=!1,r.send(b,k)}catch(e){if(l)throw e;k(-1,e)}}else k(-1,"No Transport");function k(t,n,s,u){var f,p,v,b,C,T=n;l||(l=!0,a&&e.clearTimeout(a),r=void 0,o=u||"",E.readyState=t>0?4:0,f=t>=200&&t<300||304===t,s&&(b=function(e,t,n){for(var r,i,o,s,a=e.contents,u=e.dataTypes;"*"===u[0];)u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in a)if(a[i]&&a[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}s||(s=i)}o=o||s}if(o)return o!==u[0]&&u.unshift(o),n[o]}(d,E,s)),!f&&w.inArray("script",d.dataTypes)>-1&&(d.converters["text script"]=function(){}),b=function(e,t,n,r){var i,o,s,a,u,l={},c=e.dataTypes.slice();if(c[1])for(s in e.converters)l[s.toLowerCase()]=e.converters[s];for(o=c.shift();o;)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(s=l[u+" "+o]||l["* "+o]))for(i in l)if((a=i.split(" "))[1]===o&&(s=l[u+" "+a[0]]||l["* "+a[0]])){!0===s?s=l[i]:!0!==l[i]&&(o=a[0],c.unshift(a[1]));break}if(!0!==s)if(s&&e.throws)t=s(t);else try{t=s(t)}catch(e){return{state:"parsererror",error:s?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(d,b,E,f),f?(d.ifModified&&((C=E.getResponseHeader("Last-Modified"))&&(w.lastModified[i]=C),(C=E.getResponseHeader("etag"))&&(w.etag[i]=C)),204===t||"HEAD"===d.type?T="nocontent":304===t?T="notmodified":(T=b.state,p=b.data,f=!(v=b.error))):(v=T,!t&&T||(T="error",t<0&&(t=0))),E.status=t,E.statusText=(n||T)+"",f?m.resolveWith(h,[p,T,E]):m.rejectWith(h,[E,T,v]),E.statusCode(x),x=void 0,c&&g.trigger(f?"ajaxSuccess":"ajaxError",[E,d,f?p:v]),y.fireWith(h,[E,T]),c&&(g.trigger("ajaxComplete",[E,d]),--w.active||w.event.trigger("ajaxStop")))}return E},getJSON:function(e,t,n){return w.get(e,t,n,"json")},getScript:function(e,t){return w.get(e,void 0,t,"script")}}),w.each(["get","post"],(function(e,t){w[t]=function(e,n,r,i){return h(n)&&(i=i||r,r=n,n=void 0),w.ajax(w.extend({url:e,type:t,dataType:i,data:n,success:r},w.isPlainObject(e)&&e))}})),w.ajaxPrefilter((function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")})),w._evalUrl=function(e,t,n){return w.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){w.globalEval(e,t,n)}})},w.fn.extend({wrapAll:function(e){var t;return this[0]&&(h(e)&&(e=e.call(this[0])),t=w(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map((function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e})).append(this)),this},wrapInner:function(e){return h(e)?this.each((function(t){w(this).wrapInner(e.call(this,t))})):this.each((function(){var t=w(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)}))},wrap:function(e){var t=h(e);return this.each((function(n){w(this).wrapAll(t?e.call(this,n):e)}))},unwrap:function(e){return this.parent(e).not("body").each((function(){w(this).replaceWith(this.childNodes)})),this}}),w.expr.pseudos.hidden=function(e){return!w.expr.pseudos.visible(e)},w.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},w.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var Bt={0:200,1223:204},zt=w.ajaxSettings.xhr();d.cors=!!zt&&"withCredentials"in zt,d.ajax=zt=!!zt,w.ajaxTransport((function(t){var n,r;if(d.cors||zt&&!t.crossDomain)return{send:function(i,o){var s,a=t.xhr();if(a.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(s in t.xhrFields)a[s]=t.xhrFields[s];for(s in t.mimeType&&a.overrideMimeType&&a.overrideMimeType(t.mimeType),t.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest"),i)a.setRequestHeader(s,i[s]);n=function(e){return function(){n&&(n=r=a.onload=a.onerror=a.onabort=a.ontimeout=a.onreadystatechange=null,"abort"===e?a.abort():"error"===e?"number"!=typeof a.status?o(0,"error"):o(a.status,a.statusText):o(Bt[a.status]||a.status,a.statusText,"text"!==(a.responseType||"text")||"string"!=typeof a.responseText?{binary:a.response}:{text:a.responseText},a.getAllResponseHeaders()))}},a.onload=n(),r=a.onerror=a.ontimeout=n("error"),void 0!==a.onabort?a.onabort=r:a.onreadystatechange=function(){4===a.readyState&&e.setTimeout((function(){n&&r()}))},n=n("abort");try{a.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}})),w.ajaxPrefilter((function(e){e.crossDomain&&(e.contents.script=!1)})),w.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return w.globalEval(e),e}}}),w.ajaxPrefilter("script",(function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")})),w.ajaxTransport("script",(function(e){var t,n;if(e.crossDomain||e.scriptAttrs)return{send:function(r,i){t=w("